v20230303 master
authorKilian <ksaffran@dks.lu>
Sat, 4 Mar 2023 07:47:25 +0000 (08:47 +0100)
committerKilian <ksaffran@dks.lu>
Sat, 4 Mar 2023 07:47:25 +0000 (08:47 +0100)
493 files changed:
.gitignore
.vscode/settings.json
.vscode/sftp.json [new file with mode: 0644]
app/.htaccess [deleted file]
app/app.cgi [deleted file]
app/db.cgi [deleted file]
app/file.cgi [deleted file]
app/index.cgi [deleted file]
app/lib/dksconfig.pm [deleted file]
app/lib/dksdb.pm [deleted file]
app/lib/dkssavefile.pm [deleted file]
app/lib/parsexlsx.pm [deleted file]
app/lib/sendemail.pm [deleted file]
app/lib/session.pm [deleted file]
app/sendEmail [deleted file]
app/static/css/fonts/fld.svg [deleted file]
app/static/css/fonts/fld.ttf [deleted file]
app/static/css/fonts/fld.woff [deleted file]
app/static/css/icons.css [deleted file]
app/static/css/theme.css [deleted file]
app/static/css/theme.old.css [deleted file]
app/static/css/w3pro.css [deleted file]
app/static/img/bg1.jpg [deleted file]
app/static/img/dartsxx.jpg [deleted file]
app/static/img/favicon/android-icon-144x144.png [deleted file]
app/static/img/favicon/android-icon-192x192.png [deleted file]
app/static/img/favicon/android-icon-36x36.png [deleted file]
app/static/img/favicon/android-icon-48x48.png [deleted file]
app/static/img/favicon/android-icon-72x72.png [deleted file]
app/static/img/favicon/android-icon-96x96.png [deleted file]
app/static/img/favicon/apple-icon-114x114.png [deleted file]
app/static/img/favicon/apple-icon-120x120.png [deleted file]
app/static/img/favicon/apple-icon-144x144.png [deleted file]
app/static/img/favicon/apple-icon-152x152.png [deleted file]
app/static/img/favicon/apple-icon-180x180.png [deleted file]
app/static/img/favicon/apple-icon-57x57.png [deleted file]
app/static/img/favicon/apple-icon-60x60.png [deleted file]
app/static/img/favicon/apple-icon-72x72.png [deleted file]
app/static/img/favicon/apple-icon-76x76.png [deleted file]
app/static/img/favicon/apple-icon-precomposed.png [deleted file]
app/static/img/favicon/apple-icon.png [deleted file]
app/static/img/favicon/browserconfig.xml [deleted file]
app/static/img/favicon/favicon-16x16.png [deleted file]
app/static/img/favicon/favicon-32x32.png [deleted file]
app/static/img/favicon/favicon-96x96.png [deleted file]
app/static/img/favicon/favicon.ico [deleted file]
app/static/img/favicon/manifest.json [deleted file]
app/static/img/favicon/ms-icon-144x144.png [deleted file]
app/static/img/favicon/ms-icon-150x150.png [deleted file]
app/static/img/favicon/ms-icon-310x310.png [deleted file]
app/static/img/favicon/ms-icon-70x70.png [deleted file]
app/static/img/fldicon.png [deleted file]
app/static/img/fldicon.svg [deleted file]
app/static/img/hiclipart.com.png [deleted file]
app/static/img/logo.png [deleted file]
app/static/img/no-image-icon.png [deleted file]
app/static/img/no-news-img.png [deleted file]
app/static/img/toplogo.svg [deleted file]
app/static/js/app.js [deleted file]
app/static/js/fieldsave.js [deleted file]
app/static/js/form.js [deleted file]
app/static/js/formsave.js [deleted file]
app/static/js/module_global.js [deleted file]
app/static/js/record.js [deleted file]
app/static/js/request.js [deleted file]
app/static/vendors/flatpickr/flatpickr.css [deleted file]
app/static/vendors/flatpickr/flatpickr.js [deleted file]
app/static/vendors/flatpickr/flatpickr.min.css [deleted file]
app/static/vendors/flatpickr/flatpickr.min.js [deleted file]
app/static/vendors/flatpickr/ie.css [deleted file]
app/static/vendors/flatpickr/index.d.ts [deleted file]
app/static/vendors/flatpickr/l10n/de.d.ts [deleted file]
app/static/vendors/flatpickr/l10n/de.js [deleted file]
app/static/vendors/flatpickr/l10n/default.d.ts [deleted file]
app/static/vendors/flatpickr/l10n/default.js [deleted file]
app/static/vendors/flatpickr/l10n/fr.d.ts [deleted file]
app/static/vendors/flatpickr/l10n/fr.js [deleted file]
app/static/vendors/flatpickr/l10n/lu.d.ts [deleted file]
app/static/vendors/flatpickr/l10n/lu.js [deleted file]
app/static/vendors/flatpickr/plugins/confirmDate/confirmDate.css [deleted file]
app/static/vendors/flatpickr/plugins/confirmDate/confirmDate.d.ts [deleted file]
app/static/vendors/flatpickr/plugins/confirmDate/confirmDate.js [deleted file]
app/static/vendors/flatpickr/plugins/labelPlugin/labelPlugin.d.ts [deleted file]
app/static/vendors/flatpickr/plugins/labelPlugin/labelPlugin.js [deleted file]
app/static/vendors/flatpickr/plugins/minMaxTimePlugin.d.ts [deleted file]
app/static/vendors/flatpickr/plugins/minMaxTimePlugin.js [deleted file]
app/static/vendors/flatpickr/plugins/monthSelect/index.d.ts [deleted file]
app/static/vendors/flatpickr/plugins/monthSelect/index.js [deleted file]
app/static/vendors/flatpickr/plugins/monthSelect/style.css [deleted file]
app/static/vendors/flatpickr/plugins/monthSelect/tests.spec.d.ts [deleted file]
app/static/vendors/flatpickr/plugins/rangePlugin.d.ts [deleted file]
app/static/vendors/flatpickr/plugins/rangePlugin.js [deleted file]
app/static/vendors/flatpickr/plugins/scrollPlugin.d.ts [deleted file]
app/static/vendors/flatpickr/plugins/scrollPlugin.js [deleted file]
app/static/vendors/flatpickr/plugins/weekSelect/weekSelect.d.ts [deleted file]
app/static/vendors/flatpickr/plugins/weekSelect/weekSelect.js [deleted file]
app/static/vendors/flatpickr/themes/airbnb.css [deleted file]
app/static/vendors/flatpickr/themes/confetti.css [deleted file]
app/static/vendors/flatpickr/themes/dark.css [deleted file]
app/static/vendors/flatpickr/themes/light.css [deleted file]
app/static/vendors/flatpickr/themes/material_blue.css [deleted file]
app/static/vendors/flatpickr/themes/material_green.css [deleted file]
app/static/vendors/flatpickr/themes/material_orange.css [deleted file]
app/static/vendors/flatpickr/themes/material_red.css [deleted file]
app/static/vendors/flatpickr/types/globals.d.ts [deleted file]
app/static/vendors/flatpickr/types/instance.d.ts [deleted file]
app/static/vendors/flatpickr/types/locale.d.ts [deleted file]
app/static/vendors/flatpickr/types/options.d.ts [deleted file]
app/static/vendors/flatpickr/typings.d.ts [deleted file]
app/static/vendors/flatpickr/utils/dates.d.ts [deleted file]
app/static/vendors/flatpickr/utils/dom.d.ts [deleted file]
app/static/vendors/flatpickr/utils/formatting.d.ts [deleted file]
app/static/vendors/flatpickr/utils/index.d.ts [deleted file]
app/static/vendors/flatpickr/utils/polyfills.d.ts [deleted file]
app/static/vendors/moment/moment-with-locales.min.js [deleted file]
app/static/vendors/moment/moment.min.js [deleted file]
app/static/vendors/slimselect/slimselect.css [deleted file]
app/static/vendors/slimselect/slimselect.js [deleted file]
app/static/vendors/slimselect/slimselect.min.css [deleted file]
app/static/vendors/slimselect/slimselect.min.js [deleted file]
app/static/vendors/slimselect/slimselect.scss [deleted file]
app/static/vendors/tabulator/css.old/tabulator.css [deleted file]
app/static/vendors/tabulator/css.old/tabulator.min.css [deleted file]
app/static/vendors/tabulator/css.old/tabulator.min.css.map [deleted file]
app/static/vendors/tabulator/css/tabulator_midnight.css [deleted file]
app/static/vendors/tabulator/css/tabulator_midnight.min.css [deleted file]
app/static/vendors/tabulator/css/tabulator_midnight.min.css.map [deleted file]
app/static/vendors/tabulator/css/tabulator_modern.css [deleted file]
app/static/vendors/tabulator/css/tabulator_modern.min.css [deleted file]
app/static/vendors/tabulator/css/tabulator_modern.min.css.map [deleted file]
app/static/vendors/tabulator/css/tabulator_simple.css [deleted file]
app/static/vendors/tabulator/css/tabulator_simple.min.css [deleted file]
app/static/vendors/tabulator/css/tabulator_simple.min.css.map [deleted file]
app/static/vendors/tabulator/css/tabulator_site.css [deleted file]
app/static/vendors/tabulator/css/tabulator_site.min.css [deleted file]
app/static/vendors/tabulator/css/tabulator_site.min.css.map [deleted file]
app/static/vendors/tabulator/js.old/modules/accessor.js [deleted file]
app/static/vendors/tabulator/js.old/modules/accessor.min.js [deleted file]
app/static/vendors/tabulator/js.old/modules/ajax.js [deleted file]
app/static/vendors/tabulator/js.old/modules/ajax.min.js [deleted file]
app/static/vendors/tabulator/js.old/modules/calculation_colums.js [deleted file]
app/static/vendors/tabulator/js.old/modules/calculation_colums.min.js [deleted file]
app/static/vendors/tabulator/js.old/modules/clipboard.js [deleted file]
app/static/vendors/tabulator/js.old/modules/clipboard.min.js [deleted file]
app/static/vendors/tabulator/js.old/modules/data_tree.js [deleted file]
app/static/vendors/tabulator/js.old/modules/data_tree.min.js [deleted file]
app/static/vendors/tabulator/js.old/modules/download.js [deleted file]
app/static/vendors/tabulator/js.old/modules/download.min.js [deleted file]
app/static/vendors/tabulator/js.old/modules/edit.js [deleted file]
app/static/vendors/tabulator/js.old/modules/edit.min.js [deleted file]
app/static/vendors/tabulator/js.old/modules/export.js [deleted file]
app/static/vendors/tabulator/js.old/modules/export.min.js [deleted file]
app/static/vendors/tabulator/js.old/modules/filter.js [deleted file]
app/static/vendors/tabulator/js.old/modules/filter.min.js [deleted file]
app/static/vendors/tabulator/js.old/modules/format.js [deleted file]
app/static/vendors/tabulator/js.old/modules/format.min.js [deleted file]
app/static/vendors/tabulator/js.old/modules/frozen_columns.js [deleted file]
app/static/vendors/tabulator/js.old/modules/frozen_columns.min.js [deleted file]
app/static/vendors/tabulator/js.old/modules/frozen_rows.js [deleted file]
app/static/vendors/tabulator/js.old/modules/frozen_rows.min.js [deleted file]
app/static/vendors/tabulator/js.old/modules/group_rows.js [deleted file]
app/static/vendors/tabulator/js.old/modules/group_rows.min.js [deleted file]
app/static/vendors/tabulator/js.old/modules/history.js [deleted file]
app/static/vendors/tabulator/js.old/modules/history.min.js [deleted file]
app/static/vendors/tabulator/js.old/modules/html_table_import.js [deleted file]
app/static/vendors/tabulator/js.old/modules/html_table_import.min.js [deleted file]
app/static/vendors/tabulator/js.old/modules/keybindings.js [deleted file]
app/static/vendors/tabulator/js.old/modules/keybindings.min.js [deleted file]
app/static/vendors/tabulator/js.old/modules/menu.js [deleted file]
app/static/vendors/tabulator/js.old/modules/menu.min.js [deleted file]
app/static/vendors/tabulator/js.old/modules/moveable_columns.js [deleted file]
app/static/vendors/tabulator/js.old/modules/moveable_columns.min.js [deleted file]
app/static/vendors/tabulator/js.old/modules/moveable_rows.js [deleted file]
app/static/vendors/tabulator/js.old/modules/moveable_rows.min.js [deleted file]
app/static/vendors/tabulator/js.old/modules/mutator.js [deleted file]
app/static/vendors/tabulator/js.old/modules/mutator.min.js [deleted file]
app/static/vendors/tabulator/js.old/modules/page.js [deleted file]
app/static/vendors/tabulator/js.old/modules/page.min.js [deleted file]
app/static/vendors/tabulator/js.old/modules/persistence.js [deleted file]
app/static/vendors/tabulator/js.old/modules/persistence.min.js [deleted file]
app/static/vendors/tabulator/js.old/modules/print.js [deleted file]
app/static/vendors/tabulator/js.old/modules/print.min.js [deleted file]
app/static/vendors/tabulator/js.old/modules/reactive_data.js [deleted file]
app/static/vendors/tabulator/js.old/modules/reactive_data.min.js [deleted file]
app/static/vendors/tabulator/js.old/modules/resize_columns.js [deleted file]
app/static/vendors/tabulator/js.old/modules/resize_columns.min.js [deleted file]
app/static/vendors/tabulator/js.old/modules/resize_rows.js [deleted file]
app/static/vendors/tabulator/js.old/modules/resize_rows.min.js [deleted file]
app/static/vendors/tabulator/js.old/modules/resize_table.js [deleted file]
app/static/vendors/tabulator/js.old/modules/resize_table.min.js [deleted file]
app/static/vendors/tabulator/js.old/modules/responsive_layout.js [deleted file]
app/static/vendors/tabulator/js.old/modules/responsive_layout.min.js [deleted file]
app/static/vendors/tabulator/js.old/modules/select_row.js [deleted file]
app/static/vendors/tabulator/js.old/modules/select_row.min.js [deleted file]
app/static/vendors/tabulator/js.old/modules/sort.js [deleted file]
app/static/vendors/tabulator/js.old/modules/sort.min.js [deleted file]
app/static/vendors/tabulator/js.old/modules/validate.js [deleted file]
app/static/vendors/tabulator/js.old/modules/validate.min.js [deleted file]
app/static/vendors/tabulator/js.old/tabulator.js [deleted file]
app/static/vendors/tabulator/js.old/tabulator.min.js [deleted file]
app/static/vendors/tabulator/js.old/tabulator_core.js [deleted file]
app/static/vendors/tabulator/js.old/tabulator_core.min.js [deleted file]
app/static/vendors/tabulator/js/modules/accessor.js [deleted file]
app/static/vendors/tabulator/js/modules/accessor.min.js [deleted file]
app/static/vendors/tabulator/js/modules/ajax.js [deleted file]
app/static/vendors/tabulator/js/modules/ajax.min.js [deleted file]
app/static/vendors/tabulator/js/modules/calculation_colums.js [deleted file]
app/static/vendors/tabulator/js/modules/calculation_colums.min.js [deleted file]
app/static/vendors/tabulator/js/modules/clipboard.js [deleted file]
app/static/vendors/tabulator/js/modules/clipboard.min.js [deleted file]
app/static/vendors/tabulator/js/modules/data_tree.js [deleted file]
app/static/vendors/tabulator/js/modules/data_tree.min.js [deleted file]
app/static/vendors/tabulator/js/modules/download.js [deleted file]
app/static/vendors/tabulator/js/modules/download.min.js [deleted file]
app/static/vendors/tabulator/js/modules/edit.js [deleted file]
app/static/vendors/tabulator/js/modules/edit.min.js [deleted file]
app/static/vendors/tabulator/js/modules/export.js [deleted file]
app/static/vendors/tabulator/js/modules/export.min.js [deleted file]
app/static/vendors/tabulator/js/modules/filter.js [deleted file]
app/static/vendors/tabulator/js/modules/filter.min.js [deleted file]
app/static/vendors/tabulator/js/modules/format.js [deleted file]
app/static/vendors/tabulator/js/modules/format.min.js [deleted file]
app/static/vendors/tabulator/js/modules/frozen_columns.js [deleted file]
app/static/vendors/tabulator/js/modules/frozen_columns.min.js [deleted file]
app/static/vendors/tabulator/js/modules/frozen_rows.js [deleted file]
app/static/vendors/tabulator/js/modules/frozen_rows.min.js [deleted file]
app/static/vendors/tabulator/js/modules/group_rows.js [deleted file]
app/static/vendors/tabulator/js/modules/group_rows.min.js [deleted file]
app/static/vendors/tabulator/js/modules/history.js [deleted file]
app/static/vendors/tabulator/js/modules/history.min.js [deleted file]
app/static/vendors/tabulator/js/modules/html_table_import.js [deleted file]
app/static/vendors/tabulator/js/modules/html_table_import.min.js [deleted file]
app/static/vendors/tabulator/js/modules/keybindings.js [deleted file]
app/static/vendors/tabulator/js/modules/keybindings.min.js [deleted file]
app/static/vendors/tabulator/js/modules/menu.js [deleted file]
app/static/vendors/tabulator/js/modules/menu.min.js [deleted file]
app/static/vendors/tabulator/js/modules/moveable_columns.js [deleted file]
app/static/vendors/tabulator/js/modules/moveable_columns.min.js [deleted file]
app/static/vendors/tabulator/js/modules/moveable_rows.js [deleted file]
app/static/vendors/tabulator/js/modules/moveable_rows.min.js [deleted file]
app/static/vendors/tabulator/js/modules/mutator.js [deleted file]
app/static/vendors/tabulator/js/modules/mutator.min.js [deleted file]
app/static/vendors/tabulator/js/modules/page.js [deleted file]
app/static/vendors/tabulator/js/modules/page.min.js [deleted file]
app/static/vendors/tabulator/js/modules/persistence.js [deleted file]
app/static/vendors/tabulator/js/modules/persistence.min.js [deleted file]
app/static/vendors/tabulator/js/modules/print.js [deleted file]
app/static/vendors/tabulator/js/modules/print.min.js [deleted file]
app/static/vendors/tabulator/js/modules/reactive_data.js [deleted file]
app/static/vendors/tabulator/js/modules/reactive_data.min.js [deleted file]
app/static/vendors/tabulator/js/modules/resize_columns.js [deleted file]
app/static/vendors/tabulator/js/modules/resize_columns.min.js [deleted file]
app/static/vendors/tabulator/js/modules/resize_rows.js [deleted file]
app/static/vendors/tabulator/js/modules/resize_rows.min.js [deleted file]
app/static/vendors/tabulator/js/modules/resize_table.js [deleted file]
app/static/vendors/tabulator/js/modules/resize_table.min.js [deleted file]
app/static/vendors/tabulator/js/modules/responsive_layout.js [deleted file]
app/static/vendors/tabulator/js/modules/responsive_layout.min.js [deleted file]
app/static/vendors/tabulator/js/modules/select_row.js [deleted file]
app/static/vendors/tabulator/js/modules/select_row.min.js [deleted file]
app/static/vendors/tabulator/js/modules/sort.js [deleted file]
app/static/vendors/tabulator/js/modules/sort.min.js [deleted file]
app/static/vendors/tabulator/js/modules/validate.js [deleted file]
app/static/vendors/tabulator/js/modules/validate.min.js [deleted file]
app/static/vendors/tabulator/js/tabulator.js [deleted file]
app/static/vendors/tabulator/js/tabulator.min.js [deleted file]
app/static/vendors/tabulator/js/tabulator_core.js [deleted file]
app/static/vendors/tabulator/js/tabulator_core.min.js [deleted file]
app/static/vendors/tinymce/changelog.txt [deleted file]
app/static/vendors/tinymce/js/tinymce/jquery.tinymce.min.js [deleted file]
app/static/vendors/tinymce/js/tinymce/langs/de.js [deleted file]
app/static/vendors/tinymce/js/tinymce/langs/fr_FR.js [deleted file]
app/static/vendors/tinymce/js/tinymce/langs/readme.md [deleted file]
app/static/vendors/tinymce/js/tinymce/license.txt [deleted file]
app/static/vendors/tinymce/js/tinymce/plugins/advlist/plugin.min.js [deleted file]
app/static/vendors/tinymce/js/tinymce/plugins/anchor/plugin.min.js [deleted file]
app/static/vendors/tinymce/js/tinymce/plugins/autolink/plugin.min.js [deleted file]
app/static/vendors/tinymce/js/tinymce/plugins/autoresize/plugin.min.js [deleted file]
app/static/vendors/tinymce/js/tinymce/plugins/autosave/plugin.min.js [deleted file]
app/static/vendors/tinymce/js/tinymce/plugins/bbcode/plugin.min.js [deleted file]
app/static/vendors/tinymce/js/tinymce/plugins/charmap/plugin.min.js [deleted file]
app/static/vendors/tinymce/js/tinymce/plugins/code/plugin.min.js [deleted file]
app/static/vendors/tinymce/js/tinymce/plugins/codesample/plugin.min.js [deleted file]
app/static/vendors/tinymce/js/tinymce/plugins/colorpicker/plugin.min.js [deleted file]
app/static/vendors/tinymce/js/tinymce/plugins/contextmenu/plugin.min.js [deleted file]
app/static/vendors/tinymce/js/tinymce/plugins/directionality/plugin.min.js [deleted file]
app/static/vendors/tinymce/js/tinymce/plugins/emoticons/js/emojis.js [deleted file]
app/static/vendors/tinymce/js/tinymce/plugins/emoticons/js/emojis.min.js [deleted file]
app/static/vendors/tinymce/js/tinymce/plugins/emoticons/plugin.min.js [deleted file]
app/static/vendors/tinymce/js/tinymce/plugins/fullpage/plugin.min.js [deleted file]
app/static/vendors/tinymce/js/tinymce/plugins/fullscreen/plugin.min.js [deleted file]
app/static/vendors/tinymce/js/tinymce/plugins/help/plugin.min.js [deleted file]
app/static/vendors/tinymce/js/tinymce/plugins/hr/plugin.min.js [deleted file]
app/static/vendors/tinymce/js/tinymce/plugins/image/plugin.min.js [deleted file]
app/static/vendors/tinymce/js/tinymce/plugins/imagetools/plugin.min.js [deleted file]
app/static/vendors/tinymce/js/tinymce/plugins/importcss/plugin.min.js [deleted file]
app/static/vendors/tinymce/js/tinymce/plugins/insertdatetime/plugin.min.js [deleted file]
app/static/vendors/tinymce/js/tinymce/plugins/legacyoutput/plugin.min.js [deleted file]
app/static/vendors/tinymce/js/tinymce/plugins/link/plugin.min.js [deleted file]
app/static/vendors/tinymce/js/tinymce/plugins/lists/plugin.min.js [deleted file]
app/static/vendors/tinymce/js/tinymce/plugins/media/plugin.min.js [deleted file]
app/static/vendors/tinymce/js/tinymce/plugins/nonbreaking/plugin.min.js [deleted file]
app/static/vendors/tinymce/js/tinymce/plugins/noneditable/plugin.min.js [deleted file]
app/static/vendors/tinymce/js/tinymce/plugins/pagebreak/plugin.min.js [deleted file]
app/static/vendors/tinymce/js/tinymce/plugins/paste/plugin.min.js [deleted file]
app/static/vendors/tinymce/js/tinymce/plugins/preview/plugin.min.js [deleted file]
app/static/vendors/tinymce/js/tinymce/plugins/print/plugin.min.js [deleted file]
app/static/vendors/tinymce/js/tinymce/plugins/quickbars/plugin.min.js [deleted file]
app/static/vendors/tinymce/js/tinymce/plugins/save/plugin.min.js [deleted file]
app/static/vendors/tinymce/js/tinymce/plugins/searchreplace/plugin.min.js [deleted file]
app/static/vendors/tinymce/js/tinymce/plugins/spellchecker/plugin.min.js [deleted file]
app/static/vendors/tinymce/js/tinymce/plugins/tabfocus/plugin.min.js [deleted file]
app/static/vendors/tinymce/js/tinymce/plugins/table/plugin.min.js [deleted file]
app/static/vendors/tinymce/js/tinymce/plugins/template/plugin.min.js [deleted file]
app/static/vendors/tinymce/js/tinymce/plugins/textcolor/plugin.min.js [deleted file]
app/static/vendors/tinymce/js/tinymce/plugins/textpattern/plugin.min.js [deleted file]
app/static/vendors/tinymce/js/tinymce/plugins/toc/plugin.min.js [deleted file]
app/static/vendors/tinymce/js/tinymce/plugins/visualblocks/plugin.min.js [deleted file]
app/static/vendors/tinymce/js/tinymce/plugins/visualchars/plugin.min.js [deleted file]
app/static/vendors/tinymce/js/tinymce/plugins/wordcount/plugin.min.js [deleted file]
app/static/vendors/tinymce/js/tinymce/skins/content/dark/content.min.css [deleted file]
app/static/vendors/tinymce/js/tinymce/skins/content/default/content.min.css [deleted file]
app/static/vendors/tinymce/js/tinymce/skins/content/document/content.min.css [deleted file]
app/static/vendors/tinymce/js/tinymce/skins/content/writer/content.min.css [deleted file]
app/static/vendors/tinymce/js/tinymce/skins/ui/oxide-dark/content.inline.min.css [deleted file]
app/static/vendors/tinymce/js/tinymce/skins/ui/oxide-dark/content.min.css [deleted file]
app/static/vendors/tinymce/js/tinymce/skins/ui/oxide-dark/content.mobile.min.css [deleted file]
app/static/vendors/tinymce/js/tinymce/skins/ui/oxide-dark/fonts/tinymce-mobile.woff [deleted file]
app/static/vendors/tinymce/js/tinymce/skins/ui/oxide-dark/skin.min.css [deleted file]
app/static/vendors/tinymce/js/tinymce/skins/ui/oxide-dark/skin.mobile.min.css [deleted file]
app/static/vendors/tinymce/js/tinymce/skins/ui/oxide/content.inline.min.css [deleted file]
app/static/vendors/tinymce/js/tinymce/skins/ui/oxide/content.min.css [deleted file]
app/static/vendors/tinymce/js/tinymce/skins/ui/oxide/content.mobile.min.css [deleted file]
app/static/vendors/tinymce/js/tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff [deleted file]
app/static/vendors/tinymce/js/tinymce/skins/ui/oxide/skin.min.css [deleted file]
app/static/vendors/tinymce/js/tinymce/skins/ui/oxide/skin.mobile.min.css [deleted file]
app/static/vendors/tinymce/js/tinymce/themes/mobile/theme.min.js [deleted file]
app/static/vendors/tinymce/js/tinymce/themes/silver/theme.min.js [deleted file]
app/static/vendors/tinymce/js/tinymce/tinymce.min.js [deleted file]
app/tmpl/block/cgu.tt [deleted file]
app/tmpl/block/dlgcropper.tt [deleted file]
app/tmpl/block/dlgpassword.tt [deleted file]
app/tmpl/block/dlguploadfile.tt [deleted file]
app/tmpl/block/dlgusername.tt [deleted file]
app/tmpl/block/head.tt [deleted file]
app/tmpl/block/snackbar.tt [deleted file]
app/tmpl/block/toolbars.tt [deleted file]
app/tmpl/file.tt [deleted file]
app/tmpl/index.tt [deleted file]
app/tmpl/lang/fr.tt [deleted file]
app/tmpl/login.tt [deleted file]
app/tmpl/macro/fields.tt [deleted file]
app/tmpl/module/championship/divisions.js [deleted file]
app/tmpl/module/championship/divisions.tt [deleted file]
app/tmpl/module/championship/games.js [deleted file]
app/tmpl/module/championship/games.tt [deleted file]
app/tmpl/module/championship/highscores.js [deleted file]
app/tmpl/module/championship/highscores.tt [deleted file]
app/tmpl/module/championship/index.js [deleted file]
app/tmpl/module/championship/index.tt [deleted file]
app/tmpl/module/championship/ranking.js [deleted file]
app/tmpl/module/championship/ranking.tt [deleted file]
app/tmpl/module/championship/seasons.js [deleted file]
app/tmpl/module/championship/seasons.tt [deleted file]
app/tmpl/module/championship/teams.js [deleted file]
app/tmpl/module/championship/teams.tt [deleted file]
app/tmpl/module/championship/toolbar.tt [deleted file]
app/tmpl/module/clubs/club.js [deleted file]
app/tmpl/module/clubs/club.tt [deleted file]
app/tmpl/module/clubs/clubmembers.js [deleted file]
app/tmpl/module/clubs/clubmembers.tt [deleted file]
app/tmpl/module/clubs/clubs.js [deleted file]
app/tmpl/module/clubs/clubs.tt [deleted file]
app/tmpl/module/clubs/cupreg.js [deleted file]
app/tmpl/module/clubs/cupreg.tt [deleted file]
app/tmpl/module/clubs/fldmembers.js [deleted file]
app/tmpl/module/clubs/fldmembers.tt [deleted file]
app/tmpl/module/clubs/seasonclubreg.js [deleted file]
app/tmpl/module/clubs/seasonclubreg.tt [deleted file]
app/tmpl/module/documents.tt [deleted file]
app/tmpl/module/documents/documents.js [deleted file]
app/tmpl/module/documents/index.js [deleted file]
app/tmpl/module/events.tt [deleted file]
app/tmpl/module/events/events.js [deleted file]
app/tmpl/module/events/vacancies.js [deleted file]
app/tmpl/module/forms.tt [deleted file]
app/tmpl/module/forms/forms.js [deleted file]
app/tmpl/module/index.tt [deleted file]
app/tmpl/module/index/index.js [deleted file]
app/tmpl/module/licenses/index.js [deleted file]
app/tmpl/module/licenses/index.tt [deleted file]
app/tmpl/module/licenses/licenserequests.js [deleted file]
app/tmpl/module/licenses/licenserequests.tt [deleted file]
app/tmpl/module/licenses/licenses.js [deleted file]
app/tmpl/module/licenses/licenses.tt [deleted file]
app/tmpl/module/licenses/members.js [deleted file]
app/tmpl/module/licenses/members.tt [deleted file]
app/tmpl/module/licenses/newlicense.js [deleted file]
app/tmpl/module/licenses/newlicense.tt [deleted file]
app/tmpl/module/licenses/toolbar.tt [deleted file]
app/tmpl/module/licenses/transfer.js [deleted file]
app/tmpl/module/licenses/transfer.tt [deleted file]
app/tmpl/module/login/forgotpassword.tt [deleted file]
app/tmpl/module/login/login.tt [deleted file]
app/tmpl/module/login/message.tt [deleted file]
app/tmpl/module/login/register.tt [deleted file]
app/tmpl/module/login/validationcode.tt [deleted file]
app/tmpl/module/medialibrary/dlgeditdocument.tt [deleted file]
app/tmpl/module/medialibrary/index.js [deleted file]
app/tmpl/module/medialibrary/index.tt [deleted file]
app/tmpl/module/members/club.tt [deleted file]
app/tmpl/module/members/clubmembers.tt [deleted file]
app/tmpl/module/members/index.js [deleted file]
app/tmpl/module/members/index.tt [deleted file]
app/tmpl/module/newsletter/index.js [deleted file]
app/tmpl/module/newsletter/index.tt [deleted file]
app/tmpl/module/newsletter/tbltoolbar.tt [deleted file]
app/tmpl/module/profile.tt [deleted file]
app/tmpl/module/profile/profile.js [deleted file]
app/tmpl/module/ranking/index.js [deleted file]
app/tmpl/module/ranking/index.tt [deleted file]
app/tmpl/module/ranking/tbltoolbar.tt [deleted file]
app/tmpl/module/users.tt [deleted file]
app/tmpl/module/users/users.js [deleted file]
app/tmpl/module/webnews.tt [deleted file]
app/tmpl/module/webnews/webnews.js [deleted file]
app/tmpl/module/websites.tt [deleted file]
app/tmpl/module/websites/websites.js [deleted file]
app/upload.cgi [deleted file]
test.pl [deleted file]
website/.htaccess [deleted file]
website/css/fonts/ledf.svg [deleted file]
website/css/fonts/ledf.ttf [deleted file]
website/css/fonts/ledf.woff [deleted file]
website/css/icons.css [deleted file]
website/css/theme.css [deleted file]
website/img/bg.png [deleted file]
website/img/club.png [deleted file]
website/img/favicon/android-icon-144x144.png [deleted file]
website/img/favicon/android-icon-192x192.png [deleted file]
website/img/favicon/android-icon-36x36.png [deleted file]
website/img/favicon/android-icon-48x48.png [deleted file]
website/img/favicon/android-icon-72x72.png [deleted file]
website/img/favicon/android-icon-96x96.png [deleted file]
website/img/favicon/apple-icon-114x114.png [deleted file]
website/img/favicon/apple-icon-120x120.png [deleted file]
website/img/favicon/apple-icon-144x144.png [deleted file]
website/img/favicon/apple-icon-152x152.png [deleted file]
website/img/favicon/apple-icon-180x180.png [deleted file]
website/img/favicon/apple-icon-57x57.png [deleted file]
website/img/favicon/apple-icon-60x60.png [deleted file]
website/img/favicon/apple-icon-72x72.png [deleted file]
website/img/favicon/apple-icon-76x76.png [deleted file]
website/img/favicon/apple-icon-precomposed.png [deleted file]
website/img/favicon/apple-icon.png [deleted file]
website/img/favicon/browserconfig.xml [deleted file]
website/img/favicon/favicon-16x16.png [deleted file]
website/img/favicon/favicon-32x32.png [deleted file]
website/img/favicon/favicon-96x96.png [deleted file]
website/img/favicon/favicon.ico [deleted file]
website/img/favicon/manifest.json [deleted file]
website/img/favicon/ms-icon-144x144.png [deleted file]
website/img/favicon/ms-icon-150x150.png [deleted file]
website/img/favicon/ms-icon-310x310.png [deleted file]
website/img/favicon/ms-icon-70x70.png [deleted file]
website/img/logo.png [deleted file]
website/img/news.png [deleted file]
website/img/person.jpg [deleted file]
website/index.cgi [deleted file]
website/index.php [deleted file]
website/js/site.js [deleted file]
website/lib/composer.json [deleted file]
website/lib/composer.lock [deleted file]
website/lib/config.php [deleted file]
website/lib/database.php [deleted file]
website/lib/dksconfig.pm [deleted file]
website/tmpl/commingsoon.tt [deleted file]
website/tmpl/index.html.mustache [deleted file]
website/tmpl/lists/labels.tt [deleted file]
website/tmpl/pages/calendrier.html.json [deleted file]
website/tmpl/pages/calendrier.html.mustache [deleted file]
website/tmpl/pages/championnat.html.mustache [deleted file]
website/tmpl/pages/clubs.html.mustache [deleted file]
website/tmpl/pages/coupe.html.mustache [deleted file]
website/tmpl/pages/documents.html.mustache [deleted file]
website/tmpl/pages/error.html.mustache [deleted file]
website/tmpl/pages/federation.html.mustache [deleted file]
website/tmpl/pages/home.html.mustache [deleted file]
website/tmpl/pages/impressum.html.mustache [deleted file]
website/tmpl/pages/listederang.html.mustache [deleted file]
website/tmpl/pages/news.html.mustache [deleted file]
website/tmpl/pages/privacy.html.mustache [deleted file]
website/tmpl/pages/terms.html.mustache [deleted file]

index b41cef1..839b836 100644 (file)
@@ -1,2 +1 @@
-app/lib/perl5/*
-website/lib/vendor/*
\ No newline at end of file
+OLD/
index 5eff6b1..65841a6 100644 (file)
@@ -1,3 +1,16 @@
 {
-  "intelephense.environment.includePaths":  ["D:/Workspace/ledf_lu/website/lib/vendor"]
+"es6-css-minify.minifyOnSave": "no",
+"git.ignoreLimitWarning": true,
+"tidyHtml.formatOnSave": false,
+"tidyHtml.optionsTidy": {
+  "indent-attributes": falss,
+  "tab-size":2,
+  "indent":true,
+  "show-body-only":false,
+  "fix-uri": false,
+  "newline":"LF",
+  "drop-empty-elements": false,
+  "hide-comments": false,
+}
+
 }
\ No newline at end of file
diff --git a/.vscode/sftp.json b/.vscode/sftp.json
new file mode 100644 (file)
index 0000000..c8d37af
--- /dev/null
@@ -0,0 +1,14 @@
+
+[
+  {
+  "name": "ledf-sftp",
+  "protocol": "sftp",
+  "port": 22,
+  "secure": true,
+  "context": "public_html/",
+  "host": "dedi1781.your-server.de",
+  "username": "ledfxg",
+  "password": "3H0HTd8B88iKZ2WU",
+  "remotePath": "/public_html/"
+}
+]
diff --git a/app/.htaccess b/app/.htaccess
deleted file mode 100644 (file)
index c5a9e14..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-RewriteEngine on
-
-DirectoryIndex index.cgi index.html 
-AddHandler cgi-script .cgi
-#RewriteBase /
-RewriteCond %{REQUEST_FILENAME} !-f
-RewriteCond %{REQUEST_FILENAME} !-d
-
-RewriteRule "^(.*)$" "index.cgi"  [NC,L,QSA]
\ No newline at end of file
diff --git a/app/app.cgi b/app/app.cgi
deleted file mode 100644 (file)
index 2941e4d..0000000
+++ /dev/null
@@ -1,159 +0,0 @@
-#!/usr/local/bin/perl
-
-use strict;
-use FindBin qw/$Bin $RealBin/;
-use lib ($RealBin.'/lib/perl5');
-use lib ($RealBin.'/lib');
-use lib ($RealBin.'/backoffice/lib/perl5');
-use lib ($RealBin.'/backoffice/lib');
-use CGI;
-use CGI::Cookie;
-#use CGI::Carp qw/fatalsToBrowser/;
-use File::Basename;
-use JSON::PP;
-
-use dksconfig qw/$sitecfg/;
-use dksdb;
-
-use session;
-use sendemail;
-my $cgi = new CGI();
-my $scriptpath = $cgi->url(-absolute => 1); 
-my $p = ();
-my @params = $cgi->param();
-foreach my $pe (@params){
-  $p->{$pe} = $cgi->param($pe);
-}
-my $html->{result} = ();
-$p->{sid} = $cgi->cookie($sitecfg->{cookiename});
-my $se = session->new();
-my $sess = $se->getsession($p->{sid});
-print $cgi->header(-type=>"application/json", -charset => "utf-8");
-if ($sess == undef){
-  $html->{error} = "No Authorisation";
-  print JSON::PP::encode_json($html);
-  exit(0);
-}
-# $html->{p} = $p;
-# $html->{sess} =$sess;
-#my $datapath = $ENV{"DOCUMENT_ROOT"}.dirname(dirname($scriptpath)).'/data/';
-if (($cgi->request_method() eq "GET") || ($cgi->request_method() eq "POST")){
-  
-  my @params = $cgi->param();
-  foreach my $pp (@params){
-         $p->{$pp} = $cgi->param($pp);
-  }
-  
-  if (exists($p->{fn})){
-
-    my $db = dksdb->new();
-    if ($p->{fn} eq "savefield"){
-      # $html->{p} = $p;
-      $html->{result}->{ident} = $p->{ident};
-      delete $p->{ident};
-      delete $p->{fn};
-      delete $p->{sid};
-      my $dd = ();
-      my $retid=undef;
-      my $type = "upd";
-      foreach my $px (keys(%{$p})){
-        $html->{result}->{datafield} = $px;
-      
-        if (($px =~ /\_id$/) && ($p->{$px} eq "")){
-          $type = "ins";
-        }
-      }
-      my @sql = ();
-      if ($type eq "ins"){
-        @sql = $db->create_ddl_insert($p);
-      } 
-      else {
-        @sql = $db->create_ddl_update($p);
-      } 
-      #$html->{result}->{sql} = \@sql;
-      foreach my $s (@sql){
-          $retid= $db->dbquerysorted($s);
-      }
-      $html->{result}->{id} = $retid->{0};
-      #$p->{table},#$p->{field},$p->{value},$p->{id},$p->{type}
-    }
-    elsif ($p->{fn} eq "saveform"){
-      # 
-      $html->{p} = $p;
-      $html->{result}->{ident} = $p->{ident};
-      delete $p->{ident};
-      delete $p->{fn};
-      delete $p->{sid};
-      my $retid=undef;
-      my $type = "upd";
-      foreach my $px (keys(%{$p})){
-        $html->{result}->{datafield} = $px;
-        if (($px =~ /\_id$/) && ($p->{$px} eq "")){
-          $type = "ins";      
-          delete $p->{$px};
-        }
-
-      }
-      my @sql = ();
-      if ($type eq "ins"){
-        @sql = $db->create_ddl_insert($p);
-      } 
-      else {
-        @sql = $db->create_ddl_update($p);
-      } 
-      #$html->{sql} = \@sql;
-      foreach my $s (@sql){
-        #if ($type eq "ins"){
-          $retid= $db->dbquerysorted($s);
-        #}else {
-          
-        #}
-        
-      }
-      $html->{result} = $retid->{0};
-      #$p->{table},#$p->{field},$p->{value},$p->{id},$p->{type}
-    }
-    elsif($p->{fn} eq "deleterow"){
-      delete $p->{fn};
-      delete $p->{sid};
-      my $retid = undef;
-      my @sql = $db->create_ddl_delete($p);
-      foreach my $s (@sql){
-          $retid= $db->dbexec($s);
-      }
-      $html->{result}->{id} = $retid->{0};
-    }
-    elsif($p->{fn} eq "savepassword"){
-      if ((length($p->{pwd}) > 7) && ($p->{pwd} =~ /\d/) && ($p->{pwd} =~ /[a-z]/) && ($p->{pwd} =~ /[A-Z]/) ){
-        $se->savepassword($sess->{id},$p->{pwd});
-        $html->{result} = "OK";
-      }else {
-        $html->{result} = "NOT OK";
-      }
-      
-    }
-    elsif ($p->{fn} eq "sendmailvcode"){
-      my $vcode = $se->randomstring(6);
-      $vcode = lc($vcode);
-      $db->dbexec("UPDATE users set vcode='".$vcode."' where id=".$sess->{id}.";");
-      my $eml = sendemail->new();
-      my $mret = $eml->sendemail('user_verification',$sess->{id},$p->{mail},{vcode => $vcode},undef);
-      if ($mret == 0){
-        $html->{result}->{vcode} = $vcode;
-      } else {
-        $html->{result}->{vcode} = $vcode;
-        $html->{result}->{error} = $mret;
-      }
-    }
-    elsif ($p->{fn} eq "savenewemail"){
-      $db->dbexec("update users set username='".$p->{email}."' where id=".$sess->{id}." and vcode='".$p->{vcode}."';");
-      $html->{result} = "OK";
-    } 
-    elsif($p->{fn} eq "getsitemedia"){
-      my $path = dirname(dirname($0)).'/img';
-    }
-  }
-  
-}
-print JSON::PP::encode_json($html);
diff --git a/app/db.cgi b/app/db.cgi
deleted file mode 100644 (file)
index c6599f6..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-#!/usr/local/bin/perl
-
-use strict;
-use FindBin qw/$Bin $RealBin/;
-use lib ($RealBin.'/lib/perl5');
-use lib ($RealBin.'/lib');
-use lib ($RealBin.'/backoffice/lib/perl5');
-use lib ($RealBin.'/backoffice/lib');
-use CGI;
-use CGI::Cookie;
-# use CGI::Carp qw/fatalsToBrowser/;
-use File::Basename;
-use JSON::PP;
-
-use dksconfig qw/$sitecfg/;
-use dksdb;
-
-use session;
-#use sendemail;
-my $cgi = new CGI();
-my $scriptpath = $cgi->url(-absolute => 1); 
-my $p = ();
-my @params = $cgi->param();
-foreach my $pe (@params){
-  $p->{$pe} = $cgi->param($pe);
-}
-my $html->{result} = ();
-$p->{sid} = $cgi->cookie($sitecfg->{cookiename});
-my $se = session->new();
-my $sess = $se->getsession($p->{sid});
-print $cgi->header(-type=>"application/json", -charset => "utf-8");
-if ($sess == undef){
-  $html->{error} = "No Authorisation";
-  print JSON::PP::encode_json($html);
-  exit(0);
-}
-# $html->{p} = $p;
-# $html->{sess} =$sess;
-#my $datapath = $ENV{"DOCUMENT_ROOT"}.dirname(dirname($scriptpath)).'/data/';
-if (($cgi->request_method() eq "GET") || ($cgi->request_method() eq "POST")){
-  
-  my @params = $cgi->param();
-  foreach my $pp (@params){
-         $p->{$pp} = $cgi->param($pp);
-  }
-  my $db = dksdb->new();
-  if (exists($p->{get})){
-    my $sql = "select * from vw_".$p->{get};
-    if (exists($p->{fields}) ){
-      $sql = "select ".$p->{fields}." from vw_".$p->{get};
-    }
-    if (exists($p->{filter})){
-      $sql .= " WHERE ".$p->{filter}.";";
-    }
-    $html->{result}->{sqldata} = $db->dbqueryarray($sql);
-  }
-  elsif (exists($p->{set})){
-    my $type = "ins";
-    foreach my $x (keys(%{$p})){
-      if (($x =~ /^ident_/) && ($p->{$x} ne "")){
-        $type = "upd";
-        last;
-      }
-    }
-    my $x = $p;
-    delete $x->{sid};
-    delete $x->{set};
-    my @sql = ();
-    #$html->{result}->{params} = $x;
-    if ($type eq "ins"){
-      @sql = $db->create_ddl_insert($x);
-    }else {
-      @sql = $db->create_ddl_update($x);
-    }
-    if (scalar(@sql) > 0 ){
-      my $rid = $db->dbquerysorted($sql[0]);
-      if (keys(%{$rid}) > 0 ){
-        $html->{result} = $rid->{0};
-      }
-    }
-    #$html->{result}->{sql} = $sql[0];
-  }
-  elsif (exists($p->{fn})){
-    my $x = $p;
-    my $fn = $p->{fn};
-    my $sql = "select * from ".$p->{fn}.'('.$p->{params}.');';
-    # open FILE,">>tmp/sql.log";
-    # print FILE "\n=db.cgi fn=\n$sql\n==\n";
-    # close FILE;
-    $html->{result} = $db->dbquerysorted($sql);
-    # $html->{result}->{sql} = $sql;
-  }
-  elsif (exists($p->{del})){
-    my $x = $p;
-    delete $x->{sid};
-    delete $x->{del};
-    my  @sql = $db->create_ddl_delete($x);
-    if (scalar(@sql) > 0 ){
-      my $rid = $db->dbexec($sql[0]);
-      if (keys(%{$rid}) > 0 ){
-        $html->{result} = $rid->{0};
-      }
-    }
-  }
-}
-print JSON::PP::encode_json($html);
-# for my $e ( keys %ENV ) {
-#     print "$e: $ENV{$e}<br/>";
-# }
\ No newline at end of file
diff --git a/app/file.cgi b/app/file.cgi
deleted file mode 100644 (file)
index af305f0..0000000
+++ /dev/null
@@ -1,164 +0,0 @@
-#!/usr/local/bin/perl
-
-use strict;
-use FindBin qw/$Bin $RealBin/;
-use lib ($RealBin.'/lib/perl5');
-use lib ($RealBin.'/lib');
-use lib ($RealBin.'/backoffice/lib/perl5');
-use lib ($RealBin.'/backoffice/lib');
-use CGI;
-use CGI::Cookie;
-# use CGI::Carp qw/fatalsToBrowser/;
-use File::Basename;
-use File::Path qw/make_path/;
-use JSON::PP;
-use Image::Size;
-use dksconfig qw/$sitecfg/;
-use dksdb;
-
-use session;
-#use sendemail;
-my $cgi = new CGI();
-my $scriptpath = $cgi->url(-absolute => 1); 
-my $p = ();
-my @params = $cgi->param();
-foreach my $pe (@params){
-  $p->{$pe} = $cgi->param($pe);
-}
-# if ($sitecfg->{basepath} ne "/"){
-#$sitecfg->{docroot} = $sitecfg->{docroot}.substr($sitecfg->{basepath},0,index($sitecfg->{basepath},'backoffice')-1);
-# }
-my $html->{result} = ();
-$p->{sid} = $cgi->cookie($sitecfg->{cookiename});
-my $se = session->new();
-my $sess = $se->getsession($p->{sid});
-
-if ($sess == undef){
-  print $cgi->header(-status => 404, -type=>"text/html", -charset => "utf-8");
-  print "<h1>Du bass nët Authentifizéiert</h1>";
-  exit(0);
-}
-#$html->{docroot} = $sitecfg->{docroot};
-# $html->{basepath} = $sitecfg->{basepath};
-if (($cgi->request_method() eq "GET") || ($cgi->request_method() eq "POST")){
-  if (exists($p->{file}) && $p->{file} ne ""){
-    my $db = dksdb->new();
-    my $filedata = $db->dbquerysorted("select * from documents where id='".$p->{file}."';");
-    if (keys(%{$filedata}) > 0){
-      if ($filedata->{0}->{filedata} ne ""){
-        print $cgi->header(  
-        -type => $filedata->{0}->{mimetype},
-        -target => $filedata->{0}->{filename},
-        -attachment => $filedata->{0}->{filename}
-      );
-        my $rawdata = MIME::Base64::decode_base64($filedata->{0}->{filedata});
-        print $rawdata;
-      }
-      else {
-        print $cgi->header(-status => 404, -type=>"text/html", -charset => "utf-8");
-        print "<h1>Deen gefroten Fichier existéiert nët!</h1>";
-      }
-    
-      exit(0);
-    }
-  } else {
-    print $cgi->header(-status => 404, -type=>"text/html", -charset => "utf-8");
-    print "<h1>Deen gefroten Fichier existéiert nët!</h1>";
-    exit(0)
-  }
-  # if (exists($p->{list}) && -d ){
-  #   if (exists($p->{folder})){
-        
-  #     $p->{folder} =~ s/\.\.\///g;
-  #     my $cpath = $sitecfg->{docroot}.'/'.$p->{folder};
-  #     my @items = ();
-  #     my $up = ();
-  #     # if (index($p->{folder},'/') > 0){
-  #     #   $up->{type} = "dir";
-  #     #     $up->{name} = "..";
-  #     #     $up->{sitepath} = $p->{folder};
-  #     #     $up->{path} = $p->{folder};
-  #     #     $up->{mimtype} = 'directory';
-  #     #     $up->{size} = '';
-  #     #     $up->{dimension};
-  #     #     $up->{thumb} = '<img src="../../img/icons/file/dir.png" style="height:48px;"/>';
-  #     #     push (@items,$up);
-  #     # }
-  #     opendir(DIR,$cpath);
-      
-  #     while (my $d = readdir(DIR)){
-  #       if ($d =~ /^\./){ next; }
-  #       if ($d eq "thb"){ next; }
-  #       my $e = ();
-  #       if (-d $cpath.'/'.$d){
-  #         $e->{type} = "dir";
-  #         $e->{name} = $d;
-  #         $e->{sitepath} = $p->{folder}.'/'.$d;
-  #         $e->{path} = $p->{folder}.'/'.$d;
-  #         $e->{mimtype} = 'directory';
-  #         $e->{size} = '';
-          
-  #         my $cmd = 'find "'.$cpath.'/'.$d.'" -type f | grep -v \'/thb/\' | wc -l';
-  #         my $dim = `$cmd`;
-  #         chomp($dim);
-  #         $e->{dimension} = $dim;
-          
-  #         $e->{thumb} = '<img src="../../img/icons/file/dir.png" style="height:48px;"/>';
-  #       }
-  #       if (-f $cpath.'/'.$d){
-  #         my $cmd = 'file -i "'.$cpath.'/'.$d.'" | awk -F": " \'{ print $2 }\' | awk -F";" \'{ print $1 }\'';
-  #         my $mt = `$cmd`;
-  #         chomp($mt);
-  #         #if (($mt !~ /^image/ ) || ($mt !~ /^application\/pdf/ )) { next; }
-  #         if (($mt =~ /^image/ ) || ($mt !~ /^application\/pdf/ )) {
-  #           if (! -f $cpath.'/thb/'.$d.'.thb.png'){
-  #             if (! -d $cpath.'/thb'){
-  #               make_path($cpath.'/thb');
-  #             }
-  #             system('convert -thumbnail x96 -background white -alpha remove "'.$cpath.'/'.$d.'" "'.$cpath.'/thb/'.$d.'.thb.png"');
-  #           }
-  #           if ($mt =~ /^image/ ){
-  #             my ($ix, $iy) = imgsize($cpath.'/'.$d);
-  #             $e->{dimension} = $ix."x".$iy;
-  #           }
-  #         }
-  #         my @st = stat($cpath.'/'.$d);
-  #         $e->{type} = "file";
-  #         $e->{mimetype} = $mt;
-  #         my $s = $st[7];
-  #         my $hrs ="";
-  #         if ($s > 1000000024){
-  #           $s = $s/1024;
-  #           $s = $s/1024;
-  #           $s = $s/1024;
-  #           ($hrs) = $s =~ m/^(\d+\.\d\d).*/; 
-  #           $hrs = $hrs." GB";
-  #         } elsif ($s > 1000024){
-  #           $s = $s/1024;
-  #           $s = $s/1024;
-  #           ($hrs) = $s =~ m/^(\d+\.\d\d).*/; 
-  #           $hrs = $hrs." MB";
-  #         } elsif ($s > 1024){
-  #           $s = $s/1024;
-  #           ($hrs) = $s =~ m/^(\d+\.\d\d).*/; 
-  #           $hrs = $hrs." KB";
-  #         } else {
-  #           $hrs = $s." B"; 
-  #         }
-  #         $e->{hrsize} = $hrs;
-  #         $e->{size} = $st[7];
-  #         $e->{name} = $d;
-  #         $e->{sitepath} = $p->{folder}.'/'.$d;
-  #         $e->{thumb} = '<img src="../../../'.$p->{folder}.'/thb/'.$d.'.thb.png" style="height: 48px;" />';
-  #         $e->{path} = '../../../'.$p->{folder}.'/'.$d;
-  #       }
-  #       push (@items,$e);
-  #     } 
-  #     closedir(DIR);
-  #     $html->{result} = \@items;
-      
-  #   }
-  # }
-  
-}
-
diff --git a/app/index.cgi b/app/index.cgi
deleted file mode 100644 (file)
index b735fcd..0000000
+++ /dev/null
@@ -1,186 +0,0 @@
-#!/usr/local/bin/perl
-
-use strict;
-use FindBin qw/$Bin $RealBin/;
-use lib ($RealBin.'/lib/perl5');
-use lib ($RealBin.'/lib');
-use lib ($RealBin.'/backoffice/lib/perl5');
-use lib ($RealBin.'/backoffice/lib');
-use File::Basename qw/dirname basename/;
-use Template;
-# use Template::Constants qw( :debug );
-use CGI;
-#use CGI::Carp qw(fatalsToBrowser);
-use CGI::Cookie;
-use Data::Dumper;
-use JSON::PP;
-
-use dksconfig qw/$sitecfg/; 
-use session;
-
-my $skl = "index.tt";
-my $cgi = new CGI();
-my $p=();
-my $cookie;
-my $vars = $sitecfg;
-$vars->{page} = "index.html";
-$vars->{filepath} = substr($cgi->url({-absolute=>1}),length($vars->{basepath})+1); 
-# $vars->{baseurl} = $cgi->url({-base=>1}).$vars->{basepath};
-if ($vars->{filepath}  eq ""){
-  $vars->{filepath} = "index.html";
-}
-if ($vars->{basepath} eq "/"){
-  $vars->{siteurl} = $cgi->url({-base=>1}); 
-}else {
-  $vars->{siteurl} = $cgi->url({-base=>1}).dirname($vars->{basepath});
-  #$vars->{docroot} = $vars->{docroot}.dirname($vars->{basepath});
-  #$vars->{sitepath} = dirname($vars->{basepath});
-}
-
-
-if ($vars->{filepath} ne ""){
-  $vars->{suffix} = substr($vars->{filepath},rindex($vars->{filepath},'.')); 
-  $vars->{page} = $vars->{filepath};
-  $vars->{page} =~ s/html$/tt/;
-}
-$vars->{abspath} = "";
-
-my $sess = ();
-my $se = session->new();
-$p->{sid} = $cgi->cookie($vars->{cookiename});
-# if ($cgi->request_method() eq "GET"){
-#   my @params = $cgi->param();
-#   foreach my $pp (@params){
-#        $p->{$pp} = $cgi->param($pp);
-#   }
-
-# }
-
-if ($cgi->request_method() eq "POST"){
-  
-  my @params = $cgi->param();
-  foreach my $pp (@params){
-         $p->{$pp} = $cgi->param($pp);
-  }
-  $vars->{hasposts} = $p;
-  if (exists($p->{'btnlogin'})){
-    my $ret = $se->checklogin($p->{login},$p->{password});
-    if ($ret->{sid} ne ""){
-      $p->{sid} = $ret->{sid};
-      $cookie = CGI::Cookie->new(-name=>$vars->{cookiename},-value=>$p->{sid},-httponly => 1);
-    }else {
-      $vars->{message} = $ret->{message};
-      $vars->{messagetype} = $ret->{messagetype};
-      $vars->{page} = "message.tt";
-    }
-  }
-  if (exists($p->{'btnregister'})){
-    
-    my $ret = $se->registeruser($p);
-    
-    $vars->{message} = $ret->{message};
-    $vars->{messagetype} = $ret->{messagetype};
-    $vars->{page} = $ret->{page};
-  }
-  if (exists($p->{'btnforgotpassword'})){
-    my $ret = $se->passwordforgotten($p->{email});
-    $vars->{message} = $ret->{message};
-    $vars->{messagetype} = $ret->{messagetype};
-    $vars->{page} = "message.tt";
-  }
-  if (exists($p->{'btnvalidateemail'})){
-    my $ret = $se->validateaccount($p);
-    $vars->{message} = $ret->{message};
-    $vars->{messagetype} = $ret->{messagetype};
-    $vars->{page} = "message.tt";
-  }
-  if (exists($p->{'btnresendcode'})){
-    my $ret = $se->resendcode($p->{email});
-    $vars->{message} = $ret->{message};
-    $vars->{messagetype} = $ret->{messagetype};
-    $vars->{page} = "message.tt";
-  }
-
-  if (exists($p->{logout})){ 
-    $se->deletesession($p->{sid});
-    $p->{sid} = "";
-    $cookie = CGI::Cookie->new(-name=>$vars->{cookiename},-value=>"",-httponly => 1);
-  }
-  # if (exists($p->{btndeleteprofile})){ 
-  #   my $ret = $se->deleteprofile($p->{deleteprofile});
-  #   $vars->{message} = $ret->{message};
-  #   $vars->{messagetype} = $ret->{messagetype};
-  #   $vars->{page} = "message.tt";
-  #   if (exists($ret->{sid})){
-  #     $p->{sid} = "";
-  #   }
-  #   $cookie = CGI::Cookie->new(-name=>$vars->{cookiename},-value=>"",-httponly => 1);
-  # }
-}
-
-if ($p->{sid} ne ""){
-  $sess = $se->getsession($p->{sid});
-}
-
-
-#$vars->{beforex} = $vars->{page};
-if (!exists($sess->{id}) || (!exists($p->{sid})) || $p->{sid} eq ""){
-  $skl = "login.tt";
-} 
-# if ($vars->{page} eq "deleteprofile.tt") {
-#   $skl = "skeleton/login.tt";
-# }
-# my ($appname) = $ENV{REQUEST_URI} =~ /.*\/module\/(\w+)\/.*/;
-if ($p->{sid} ne ""){
-  $vars->{session} = $sess;
-}
-#SESSION - End
-# #BEGIN - Browser Blocking 
-# if (($ENV{HTTP_USER_AGENT} !~ /Chrome/) || ($ENV{HTTP_USER_AGENT} =~ /Edge/) || ($ENV{HTTP_USER_AGENT} =~ /Firefox/)){
-#   $skl = "skeleton/browser.tt";
-# } 
-# #END - Browser Blocking
-my $ctype = 'text/html';
-if ($vars->{suffix} eq ".js"){
-  $ctype= "text/javascript";
-} elsif ($vars->{suffix} eq ".css"){
-  $ctype = "text/css";
-}
-print $cgi->header(-type=>$ctype, -charset=>"utf-8",-cookie => $cookie);
-# print dirname($ENV{"SCRIPT_FILENAME"});
-
-my $template = Template->new({INCLUDE_PATH => [$sitecfg->{tmplpath}]});
-#}
-
-my @lv = split(/\//,$vars->{filepath});
-my $absnum = scalar(@lv)-1;
-
-for (my $i=0;$i<$absnum;$i++){
-  $vars->{abspath} .= "../";
-}
-if (($skl eq "index.tt") && ($vars->{page} eq "login.tt")){
-  $vars->{page} = "index.tt";
-}
-# $vars->{page} = $vars->{page};
-if (-e $sitecfg->{tmplpath}.'/module/'.$vars->{page}){
-  $vars->{page} = 'module/'.$vars->{page};
-}
-$vars->{pagename} = basename($vars->{page});
-$vars->{pagename} =~ s/\.tt$//;
-# my ($appname) = $ENV{REQUEST_URI} =~ /.*\/apps\/(\w+)\/.*/;
-#$vars->{requri} = $ENV{REQUEST_URI};
-
-if ($vars->{suffix} ne ".html"){
-  $skl = "file.tt";
-}
-$vars->{params}= $p;
-$vars->{skl} = $skl;
-$vars->{lang} = "fr";
-
- $template->process($skl,$vars) || die "Template process failed: ", $template->error(), "\n";
-
- if ($vars->{page} =~ /\.tt/){
-   print '<pre style="display: none;" >'.Dumper($vars)."<pre>";
- } 
-
-
diff --git a/app/lib/dksconfig.pm b/app/lib/dksconfig.pm
deleted file mode 100644 (file)
index ea67c2a..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-package dksconfig;
-
-use strict;
-use lib ('./lib/perl5');
-use lib ('./lib');
-use lib ('./');
-use File::Basename;
-use Exporter 'import';
-our @EXPORT_OK = qw($sitecfg);
-
-our $sitecfg ={
-  cookiename => 'ledf',
-  dbtype => 'PgPP',
-  #dsn => 'DBI:PgPP:dbname=leedflu_db;host=DKS-LAPTOP.fritz.box',
-  dsn => 'DBI:PgPP:dbname=ledf_db;host=sql12.your-server.de',
-  dbuser => 'ledf_user',
-  dbpassword => 'znWA9s3cgjEsRsWZ',
-  page => 'index.tt',
-  pagename => 'index',
-  basepath => substr(dirname($0),length($ENV{"DOCUMENT_ROOT"})),
-  datapath => dirname($0).'/data/',
-  # docroot => $ENV{"DOCUMENT_ROOT"},
-  registration_enabled => '0',
-  default_group => 'users',
-  sitename => 'LEDF',
-  season => '2020-2021',
-  season_id => 2,
-  staticpath => 'static/',
-  tmplpath => dirname($0).'/tmpl'
-};
-
-1;
\ No newline at end of file
diff --git a/app/lib/dksdb.pm b/app/lib/dksdb.pm
deleted file mode 100644 (file)
index 2234a01..0000000
+++ /dev/null
@@ -1,409 +0,0 @@
-package dksdb;
-
-use strict;
-use lib ('./lib/perl5');
-use lib ('./lib');
-use lib ('./');
-BEGIN { $ENV{DBI_PUREPERL} = 2 }
-use DBI;
-use File::Basename;
-
-use Digest::SHA::PurePerl qw(sha256_hex);
-use DBD::PgPP;
-use URI::Encode qw(uri_encode uri_decode);
-use Encode;
-use dksconfig qw($sitecfg);
-use Text::Unidecode;
-
-
-sub new {
-    my $class = shift;
-    my $p = shift;
-    my $self = bless {}, $class;
-    return $self;
-}
-
-sub securetext(){
-       my $self = shift;
-       my $text = shift;
-       $text =~ s/'/''/g;
-       return $text;
-}
-
-sub dbquery(){
-       my $self = shift;
-    my $stat = shift;
-    # my $vw_info = shift;
-    my $retdata = undef;
-    my $dbh = DBI->connect($sitecfg->{dsn},$sitecfg->{dbuser},$sitecfg->{dbpassword},{PrintError=>0,RaiseError=>0,AutoCommit=>1})  or return $retdata->{error} = "dbquery Connection Error!".$!;
-    $stat = encode("utf8", $stat);
-    # open FILE,">>tmp/sql.log";
-    #  print FILE "$stat\n";
-    #  close FILE;
-    my $sth = $dbh->prepare($stat) or return $retdata->{error} = "dbquery".$dbh->errstr. "- SQL: ".$stat;;
-
-               
-   $sth->execute() or return $retdata->{error} = "dbquery: ".$sth->errstr;
-   
-   my $data = $sth->fetchrow_hashref();
-   foreach my $k (keys %{$data}){
-      $retdata->{$k} = decode("utf-8",$data->{$k});
-   }
-   
-   $sth->finish();
-   $dbh->disconnect();
-        
-   return $retdata;
-}
-
-sub dbquerybykey(){
-    my $self = shift;
-    my $key = shift;
-    my $stat = shift;
-    #my $retempty = shift;
-    my $retdata =();
-    my $dbh = DBI->connect($sitecfg->{dsn},$sitecfg->{dbuser},$sitecfg->{dbpassword},{PrintError=>0,RaiseError=>0,AutoCommit=>1})  or return $retdata->{error} = "dbquery Connection Error!".$!;
-    # $stat = encode("utf8", $stat);
-
-    # open FILE,">>sql.log";
-    # print FILE "$stat\n";
-    # close FILE;
-    my $sth = $dbh->prepare($stat) or return $retdata->{error} = "dbquery: ".$stat;
-   $sth->execute() or return $retdata->{error} = "dbquery: ".$stat;
-   while(my $data = $sth->fetchrow_hashref())
-   {
-     if (exists $data->{$key}){
-        foreach my $k (keys %{$data}){
-            #if ($k ne $key){
-
-                $retdata->{$data->{$key}}{$k} =decode("utf-8",$data->{$k});
-            #}
-        }
-     }
-   }
-   if (keys(%{$retdata}) == 0){
-    $retdata =();
-   }
-   $sth->finish();
-   $dbh->disconnect();
-   return $retdata;
-}
-
-sub dbquerysorted(){
-    my $self = shift;
-    my $stat = shift;
-    # my $vw_info = shift;
-    my $retdata;
-    my $dbh = DBI->connect($sitecfg->{dsn},$sitecfg->{dbuser},$sitecfg->{dbpassword},{PrintError=>0,RaiseError=>0,AutoCommit=>1})  or return $retdata->{error} = "dbquery Connection Error!".$!;
-    #  $stat = encode("utf8", $stat);
-    # open FILE,">>tmp/sql.log";
-    # print FILE "\n==\n$stat\n==\n";
-    # close FILE;
-    my $sth = $dbh->prepare($stat) or return $retdata->{error} = "dbquerysorted ".$dbh->errstr. "- SQL: ".$stat;;
-
-               
-   $sth->execute() or return $retdata->{error} = "dbquerysorted: ".$sth->errstr;
-   my $count = 0;
-
-   while(my $data = $sth->fetchrow_hashref())
-   {
-        #$retdata->{$count} = $data;
-                               foreach my $k (keys %{$data}){
-          $retdata->{$count}->{$k} = decode("utf-8",$data->{$k});
-        }
-     $count++;
-   }
-        
-#    my $qstruct = ();
-#    my $num_fields = $sth->{NUM_OF_FIELDS};
-
-#     for ( my $i=0; $i< $num_fields; $i++ ) {
-#         $qstruct->{$i}->{name} = $sth->{NAME}->[$i]; 
-#         #$qstruct->{$i}->{type} = $sth->{COMMENT}->[$i];
-#              #$qstruct->{$i}->{precision} = $sth->{PRECISION}->[$i];
-#     }
-   
-   $sth->finish();
-   $dbh->disconnect();
-        
-   return $retdata;
-}
-
-sub dbexec(){
-    my $self = shift;
-    my $stat = shift;
-    my $retdata;
-    my $dbh = DBI->connect($sitecfg->{dsn},$sitecfg->{dbuser},$sitecfg->{dbpassword},{PrintError=>0,RaiseError=>0,AutoCommit=>1})  or return $retdata->{error} =  "dbquery Connection Error!".$!;
-    #  $stat = decode("UTF-8", $stat);
-    # open FILE,">>tmp/sql.log";
-    # print FILE "\n==\n$stat\n==\n";
-    # close FILE;
-    my $sth = $dbh->prepare($stat) or return $retdata->{error} = "dbexec ".$dbh->errstr. "- SQL: ".$stat;;
-   $retdata->{success}  = $dbh->do($stat) or return $retdata->{error} = "dbexec ".$dbh->errstr. "- SQL: ".$stat;
-   $dbh->disconnect();
-   return $retdata;
-}
-
-sub dbqueryarray(){
-   my $self = shift;
-   my $stat = shift;
-   my @retdata = ();
-    my $dbh = DBI->connect($sitecfg->{dsn},$sitecfg->{dbuser},$sitecfg->{dbpassword},{PrintError=>0,RaiseError=>0,AutoCommit=>1})  or return ({"error" => "dbqueryarray Connection Error!".$!});
-   #$stat = encode("utf8", $stat);
-   #open FILE,">>/tmp/sql.log";
-   #print  "$stat\n";
-   # close FILE;
-   my $sth = $dbh->prepare($stat);
-
-  $sth->execute() or print "dbqueryarray: ".$sth->errstr;
-  my $count = 0;
-  
-  while(my $data = $sth->fetchrow_hashref())
-  {
-       my $row = ();
-               foreach my $k (keys %{$data}){
-      $row->{$k} = decode("utf-8",$data->{$k});
-    }
-               push @retdata,$row;
-  }
-
-  $sth->finish();
-  $dbh->disconnect();
-  #%retdata = sort {$a <=> $b} keys %retdata;
-  return \@retdata;
-}
-
-
-sub create_ddl_insert(){
-       my $self = shift;
-       my $data = shift;
-       my $fields = ();
-       my @ddl = ();
-
-       foreach my $f (keys(%{$data})){
-                       if (($f =~ /\_/) && ($f !~ /^ident_/)){
-                               my $t = substr($f,0,index($f,"_"));
-                               my $c = substr($f,length($t)+1);
-                               #my ($t,$c) = $f =~ m/(.+)\_(.+)/;
-                               $fields->{$t}->{$c} = $data->{$f};
-                       } elsif ($f =~ /^ident_/){
-        my $f2 = $f; 
-        $f2 =~ s/^ident_//;
-
-        my $t = substr($f2,0,index($f2,"_"));
-                               my $c = substr($f2,length($t)+1);
-                               $fields->{$t}->{$c} = $data->{$f};     
-      }
-
-                }
-
-       foreach my $tb (keys(%{$fields})){
-               my @sqlcol = ();
-               my @sqlval = ();
-               foreach my $c (keys(%{$fields->{$tb}})){
-                       my $v = $fields->{$tb}->{$c};
-                       $v =~ s/'/''/g;
-                       push (@sqlcol,$c);
-                       if ($v eq ''){
-                               $v = 'null';
-                       } else {
-                               $v = "'".$v."'";
-                       }
-                       push (@sqlval,$v);
-               }
-               push(@ddl,"INSERT INTO public.".$tb." (".join(",",@sqlcol).") VALUES (".join(",",@sqlval).") returning id;");
-       }
-       return @ddl;
-}
-
-sub create_ddl_insert_json(){
-       my $self = shift;
-       my $schema = shift;
-       my $table = shift;
-       my $columns = shift;
-       my $data = shift;
-       my @ddl = ();
-       my @sqlcol = ();
-       my @sqlval = ();
-       foreach my $c (keys(%{$data})){
-               #if (exists($columns->{$c})){
-                       push (@sqlcol,'"'.$c.'"');
-                       my $v = $data->{$c};
-                       
-                       if ($v eq ''){
-                               $v = 'null';
-                       }elsif ($v =~ /^data:.+;base64,/){
-                               $v =~ s/'/''/g;
-                               $v = "'".$v."'";
-                       } 
-                       else {
-                               $v= uri_decode($v);
-                               $v =~ s/'/''/g;
-                               if ($columns->{$c}->{data_type} eq "ARRAY"){
-                                       if (ref($data->{$c}) eq "ARRAY"){
-                                               $v = "{\"".join("\",\"",@{$data->{$c}})."\"}";  
-                                       }
-                                       else {
-                                               $v = 'null';    
-                                       }
-                                       $v =~ s/""/null/g;      
-                               }elsif ($columns->{$c}->{data_type} =~ /^timestamp/ ){
-                                       
-                               }elsif($columns->{$c}->{data_type} eq "date"){
-                                       
-                               }elsif($columns->{$c}->{data_type} eq "time"){
-                                       
-                               }
-                               $v = "'".$v."'";
-                       }                       
-               push (@sqlval,$v);
-               #}                      
-       }
-       return "INSERT INTO public.".$schema.".\"".$table."\" (".join(",",@sqlcol).") VALUES (".join(",",@sqlval).");";
-}
-
-sub create_ddl_update(){
-       my $self = shift;
-       my $data = shift;
-       my $fields = ();
-       my @ddl = ();
-       foreach my $f (keys(%{$data})){
-                       if ($f =~ /^ident_/){
-                               my $fx = substr($f,6);
-                               my $t = substr($fx,0,index($fx,"_"));
-                               my $c = substr($fx,length($t)+1);
-                               #my ($t,$c) = $f =~ m/^ident_(.+)\_([a-z0-9|\_]+)/;
-                               $fields->{$t}->{cond}->{$c} = $data->{$f};
-                       } elsif ( ($f !~ /^ident/) && ($f =~ /.+\_.+/) ){
-                               my $t = substr($f,0,index($f,"_"));
-                               my $c = substr($f,length($t)+1);
-                               #my ($t,$c) = $f =~ m/^(.+)\_([a-z0-9|\_]+)/;
-                               $fields->{$t}->{fields}->{$c} = $data->{$f};
-                       }
-                }
-       foreach my $tb (keys(%{$fields})){
-               my @sqlupd = ();
-               my @sqlcond = ();
-                       foreach my $c (keys(%{$fields->{$tb}->{fields}})){
-                               
-                               my $v = $fields->{$tb}->{fields}->{$c};
-                               $v =~ s/'/''/g;
-                               
-        if ($c =~ /-/){
-          my @jp = split('-',$c);
-          if ($v eq ''){
-                                         $v = 'null';
-                                 } else {
-                                         $v = '"'.$v.'"';
-                                 }
-          $c = 'jsonb_set(to_jsonb('.$jp[0].'),\'{"'.$jp[1].'"}\',\''.$v.'\')::json';
-          push (@sqlupd,$jp[0]."=".$c);  
-        }else {
-          if ($v eq ''){
-                                         $v = 'null';
-                                 } else {
-                                         $v = "'".$v."'";
-                                 }
-          push (@sqlupd,$c."=".$v);
-        }
-                               
-                       }
-                       foreach my $c (keys(%{$fields->{$tb}->{cond}})){
-                               my $v = $fields->{$tb}->{cond}->{$c};
-                               $v =~ s/'/''/g;
-                               if ($v eq ''){
-                                       $v = 'null';
-                               } else {
-                                       $v = "'".$v."'";
-                               }
-                               push (@sqlcond,$c."=".$v);
-                       }
-               push(@ddl,"UPDATE public.".$tb." SET ".join(",",@sqlupd)." WHERE ".join(" AND ",@sqlcond).";");
-       } 
-       
-       return @ddl; 
-}
-
-sub create_cnt_statement(){
-       my $self = shift;
-       my $data = shift;
-       my $fields = ();
-       my @ddl = ();
-       foreach my $f (keys(%{$data})){
-                       if ($f =~ /^ident_/){
-                               my $fx = substr($f,6);
-                               my $t = substr($fx,0,index($fx,"_"));
-                               my $c = substr($fx,length($t)+1);
-                               #my ($t,$c) = $f =~ m/^ident_(.+)\_([a-z0-9|\_]+)/;
-                               $fields->{$t}->{cond}->{$c} = $data->{$f};
-                       } 
-                }
-       foreach my $tb (keys(%{$fields})){
-               my @sqlcond = ();
-                       foreach my $c (keys(%{$fields->{$tb}->{cond}})){
-                               my $v = $fields->{$tb}->{cond}->{$c};
-                               $v =~ s/'/''/g;
-                               if ($v eq ''){
-                                       $v = 'null';
-                               } else {
-                                       $v = "'".$v."'";
-                               }
-                               push (@sqlcond,$c."=".$v);
-                       }
-               push(@ddl,"SELECT count(*) as cnt from ".$tb." WHERE ".join(" AND ",@sqlcond).";");
-       } 
-       # open FILE,">>tmp/sql.log";
-  #   print FILE "\n==\n".join("\n",@ddl)."\n==\n";
-  #   close FILE;
-       return @ddl; 
-}
-
-sub create_ddl_delete(){
-       my $self = shift;
-       my $data = shift;
-       my $fields = ();
-       my @ddl = ();
-       my @refcols = ();
-       my $refdata = ();
-       foreach my $f (keys(%{$data})){
-                       if ($f =~ /^ident_/){
-                               my ($t,$c) = $f =~ m/ident_(.+)\_(.+)/;
-                               
-                               $fields->{$t}->{cond}->{$c} = $data->{$f};
-                               push(@refcols,"'".$c.'_'.$t."'");
-                               $refdata->{$c.'_'.$t} = $data->{$f};
-                       } 
-                }
-       
-#      my $ref = $self->dbquerysorted("select TABLE_NAME,COLUMN_NAME from information_schema.KEY_COLUMN_USAGE where COLUMN_NAME in (".join(",",@refcols).") and CONSTRAINT_SCHEMA='".$self->{dbname}."';");
-#      foreach my $r (keys(%{$ref})){
-#              my $refv = $refdata->{$ref->{$r}->{COLUMN_NAME}};
-#              if ($refv eq ''){
-#                      $refv = ' is null';
-#              } else {
-#                      $refv =~ s/'/''/g;
-#                      $refv = "='".$refv."'";
-#              }
-#              push(@ddl,"DELETE from ".$ref->{$r}->{TABLE_NAME}." where ".$ref->{$r}->{COLUMN_NAME}.$refv.";");
-#      }
-       foreach my $tb (keys(%{$fields})){
-               my @sqlcond = ();
-               foreach my $c (keys(%{$fields->{$tb}->{cond}})){
-                       my $v = $fields->{$tb}->{cond}->{$c};
-                       $v =~ s/'/''/g;
-                       push (@sqlcond,$c."='".$v."'");
-               }
-               push(@ddl,"DELETE FROM public.".$tb." WHERE ".join(" AND ",@sqlcond).";");
-       } 
-       return @ddl;
-}
-
-sub textunidecode(){
-  my $self = shift;
-  my $text = shift;
-  $text = lc(unidecode(decode("utf-8",$text)));
-  $text =~ s/^[a-z0-9]//g;
-  return $text;
-} 
-
-1;
diff --git a/app/lib/dkssavefile.pm b/app/lib/dkssavefile.pm
deleted file mode 100644 (file)
index 55c260f..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-package dkssavefile;
-
-
-use strict;
-use lib ('./lib/perl5');
-use lib ('./lib');
-use lib ('./');
-use MIME::Base64;
-use MIME::Types;
-use URI;
-use Data::Dumper;
-use File::Path qw(make_path);
-
-sub new {
-    my $class = shift;
-    my $self = bless {}, $class;
-    return $self;
-}
-
-sub saveb64toFile(){
-  my $self = shift;
-  # my $fd = shift;
-  my $filename = shift;
-  my $sitepath = shift;
-  my $filepath = shift;
-  my $data = shift;
-  my $ds = URI->new($data);
-  my $mimetype= $ds->media_type();
-  my $mt = MIME::Types->new();
-  my $sfx = $mt->type($mimetype);
-  my $ext = $sfx->{MT_extensions};
-  my $nfsfx = "";
-  if (scalar(@$ext) > 0){
-     $nfsfx = @$ext[0];
-  }
-  if (! -d $sitepath.'/'.$filepath){
-    make_path($sitepath.'/'.$filepath);
-  }
-  open (NF,">".$sitepath.'/'.$filepath.'/'.$filename.'.'.$nfsfx);
-  binmode(1);
-  print NF $ds->data();
-  close(NF);
-  if (-e $sitepath.'/'.$filepath.'/'.$filename.'.'.$nfsfx){
-    return $filepath.'/'.$filename.'.'.$nfsfx;
-  } 
-  return "";
-}
-
-1;
\ No newline at end of file
diff --git a/app/lib/parsexlsx.pm b/app/lib/parsexlsx.pm
deleted file mode 100644 (file)
index e5fab2d..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-package parsexlsx;
-
-use strict;
-use lib ('./lib/perl5');
-use lib ('./lib');
-use lib ('./');
-use Data::Dumper;
-use File::Basename qw/dirname basename/;
-use Spreadsheet::XLSX;
-use Encode;
-use dksdb;
-
-sub new {
-    my $class = shift;
-    my $self = bless {}, $class;
-
-    return $self;
-}
-
-sub sheetdata(){
-  my $self = shift;
-  my $xlsxfile = shift;
-  my $sheetname = shift;
-  my @sheetdata = ();
-  my $excel = Spreadsheet::XLSX -> new ($xlsxfile);
-  foreach my $sheet (@{$excel -> {Worksheet}}) {
-    #print $sheet->{Name}."\n";
-    if (lc($sheet->{Name}) eq lc($sheetname)){
-      $sheet -> {MaxRow} ||= $sheet -> {MinRow};
-      foreach my $row ($sheet -> {MinRow} .. $sheet -> {MaxRow}) {
-        $sheet -> {MaxCol} ||= $sheet -> {MinCol};
-        my $rowdata = ();       
-        foreach my $col ($sheet -> {MinCol} ..  $sheet -> {MaxCol}) {
-          my $cell = $sheet -> {Cells} [$row] [$col];
-          
-          if ($cell) {
-            
-            $rowdata->{$col} = decode("utf-8",$cell->{Val});
-          }
-        }
-        #print Dumper($rowdata);
-        push @sheetdata,$rowdata;
-      }
-    }
-  }
-  return @sheetdata;
-}
-
-sub sheets(){
-  my $self = shift;
-  my $xlsxfile = shift;
-  my @sheetnames = ();
-  my $excel = Spreadsheet::XLSX -> new ($xlsxfile);
-  foreach my $sheet (@{$excel -> {Worksheet}}) {
-    push(@sheetnames,$sheet->{Name});
-  }
-  return @sheetnames;
-}
-
-1;
\ No newline at end of file
diff --git a/app/lib/sendemail.pm b/app/lib/sendemail.pm
deleted file mode 100644 (file)
index 0ea951f..0000000
+++ /dev/null
@@ -1,130 +0,0 @@
-package sendemail;
-
-use strict;
-use lib ('./lib/perl5');
-use lib ('./lib');
-use lib ('./');
-use Data::Dumper;
-use File::Basename qw/dirname basename/;
-use dksdb;
-
-sub new {
-    my $class = shift;
-    my $self = bless {}, $class;
-    $self->{server} = "mail.your-server.de";
-    $self->{port} = "587";
-    $self->{user} = 'kilian.saffran@fld.lu';
-    $self->{password} = "Y6cWvXR6D2";
-    $self->{from} = 'webmaster@fld.lu';
-    return $self;
-}
-
-sub sendemail(){
-  my $self = shift;
-  my $template = shift;
-  my $iduser = shift;
-  my $sendto = shift;
-  my $data = shift;
-  my $attach = shift;
-  my $body = "";
-  my $subject = "";
-  my $maildata = ();
-  my $db = dksdb->new();
-  my $send = -1;
-  my $tmpl = $db->dbquerysorted("select *,ml.mailtemplate from mailtemplates mt join maillayouts ml on (mt.id_maillayout=ml.id) where templatename='".$template."';");
-  if (keys(%{$tmpl}) > 0){
-    $tmpl = $tmpl->{0};
-  }
-  # open (LOG,">>tmp/sendmail.log");
-  # print LOG $ENV{SCRIPT_FILENAME};
-  # print LOG "SEND EMAIL:".Dumper($data)."\n";
-  # close(LOG);
-  my $datasql = $tmpl->{'emaildatasql'};
-  $data->{id} = $iduser;
-  foreach my $key (keys(%{$data})){
-    my $srch = '%%'.lc($key).'%%';
-    my $repl = $data->{$key};
-    $datasql =~ s/$srch/$repl/g;
-  }
-  # open (LOG,">>tmp/sendmail.log");
-  # print LOG "TEMPLATE DATA:".$datasql."\n";
-  # close(LOG);
-  $maildata = $db->dbquerysorted($datasql);
-  
-  $body = $tmpl->{'emailtext'};
-  $subject = $tmpl->{'mailsubject'};
-  foreach my $key (keys(%{$maildata->{0}})){
-    $data->{$key} = $maildata->{0}->{$key};   
-  }
-  foreach my $key (keys(%{$data})){
-    my $srch = '%%'.lc($key).'%%';
-    my $repl = $data->{$key};
-    $body =~ s/$srch/$repl/g;
-    $subject =~ s/$srch/$repl/g;
-  }
-  my $bodytmpl = $tmpl->{mailtemplate};
-  $bodytmpl =~ s/%%BODYCONTENT%%/$body/;
-  my $siteurl = $ENV{'REQUEST_SCHEME'}.'://'.$ENV{"HTTP_HOST"};
-  $bodytmpl =~ s/%%siteurl%%/$siteurl/g;
-  $bodytmpl =~ s/%%SITEURL%%/$siteurl/g;
-  $bodytmpl =~ s/\r//g;
-  #$bodytmpl =~ s/"/\\\"/g;
-  #PROD REPLACE all not replaced DATA       
-  #$bodytmpl =~ s/%%\w+%%//g;
-  #$sendto = 'ksaffran@dks.lu';
-  # open (LOG,">>tmp/sendmail.log");
-  # print LOG "SUBJECT:".$subject."\n";
-  # print LOG "BODY TEXT:".$bodytmpl."\n";
-  # close(LOG);
-  if (($bodytmpl ne "") && ($subject ne "") && ($sendto =~ /.+\@.+\..+/)){
-
-    
-    my $binsemail = dirname($ENV{'SCRIPT_FILENAME'}).'/sendEmail';
-    my $f = dirname($ENV{SCRIPT_FILENAME}).'/tmp/mailbody_'.$sendto.'.txt';
-    $f =~ s/\@/_/g;
-    if (! -e  $binsemail){
-      $binsemail = dirname($ENV{'SCRIPT_FILENAME'}).'/api/sendEmail';
-      $f = dirname($ENV{SCRIPT_FILENAME}).'/api/tmp/mailbody_'.$sendto.'.txt';
-    $f =~ s/\@/_/g;
-      if (! -e $binsemail){
-        return 256;
-      }
-    }
-    
-    my $cmd= 'perl "'.$binsemail.'" -f '.$tmpl->{mailfrom}.' ';
-    $cmd .= ' -s "'.$self->{server}.':'.$self->{port}.'" -xu "'.$self->{user}.'" -xp "'.$self->{password}.'" -q ';
-    $cmd .= '-o tls=auto ';
-    $cmd .= '-o message-content-type=html ';
-    $cmd .= '-o message-charset=ISO-8859-1 ';
-    $cmd .= '-o message-file='.$f.' ';
-    $cmd .= '-t "'.$sendto.'" ';
-    $cmd .= '-u "'.$subject.'" ';
-  #    open (LOG,">>sendmail.log");
-  #  print LOG $cmd."\n";
-  # # print LOG "BODY TEXT:".$bodytmpl."\n";
-  #  close(LOG);
-    open(EML,">".$f);
-    print EML $bodytmpl;
-    close(EML);
-    # $cmd .= '-m "'.$bodytmpl.'" ';
-    if ($attach != undef){
-      $cmd .= " -a";
-      
-      foreach my $a (@{$attach}){
-        $cmd .= " ".$a." ";
-      }
-    }
-    # open (LOG,">>tmp/sendmail.log");
-    # print LOG "SEND EMAIL CMD:".$cmd."\n";
-    # close(LOG);
-    # $cmd =~ s/'/''/g; 
-    $send = system($cmd);
-    # open (LOG,">>tmp/sendmail.log");
-    # print LOG "CMD RETURN NUM:".$send."\n";
-    # close(LOG);
-    unlink($f);
-  }    
-  return $send;
-}
-
-1;
\ No newline at end of file
diff --git a/app/lib/session.pm b/app/lib/session.pm
deleted file mode 100644 (file)
index 9392753..0000000
+++ /dev/null
@@ -1,237 +0,0 @@
-package session;
-
-use strict;
-use FindBin qw($RealBin);
-use lib ($RealBin.'/backoffice/');
-use lib ($RealBin.'/backoffice/lib/');
-use lib ('./lib/perl5');
-use lib ('./lib');
-
-use lib ('./');
-use File::Basename;
-use Digest::SHA qw(sha256_hex);
-
-use dksdb;
-use sendemail;
-# use Data::Dumper;
-
-sub new {
-    my $class = shift;
-    my $self = bless {}, $class;
-    $self->{db} = dksdb->new();
-    return $self;
-}
-
-sub checklogin(){
-  my $self = shift;
-  my $login = shift;
-  my $password = shift;
-  # open FILE,">>tmp/sql.log";
-  # print FILE "pwd: $password\n";
-  # close(FILE);
-  my $pwd = sha256_hex($password);
-  my $ret->{messagetype} ='red';
-  # my $newsid = undef;
-  $login = lc($login);
-  $login =~ s/^\s+//;
-  $login =~ s/\s+$//;
-
-  $ret->{message} = "Passwuert oder Login onbekannt!";
-  $ret->{messagetype} = "red";
-  $ret->{sid} = undef;
-  $ret->{sid} = undef;
-  my $siddata = $self->{db}->querysorted("select * from checklogin('".$self->{db}->securetext($login)."','".$pwd."','".$ENV{REMOTE_ADDR}."','".$ENV{HTTP_USER_AGENT}."');");
-  if (keys(%{$siddata}) > 0){
-  #    open FILE,">>tmp/sql.log";
-  #  print FILE Dumper($siddata);
-  #  close(FILE);
-    $ret->{sid} = $siddata->{0}->{checklogin};
-  }
-  return $ret;
-}
-
-sub savepassword(){
-  my $self = shift;
-  my $iduser = shift;
-  my $newpwd = shift;
-  my $pwd = sha256_hex($newpwd);
-  $self->{db}->dbexec("UPDATE users SET userpassword = '".$pwd."' WHERE id=".$iduser.";");
-  return 1;
-}
-
-sub passwordforgotten(){
-  my $self = shift;
-  my $email = shift;
-  $email =~ s/^\s+//;
-  $email =~ s/\s+$//;
-  my $ret->{messagetype} ='red';
-  $ret->{message} = "Onbekannt E-mail!";
-  my $sql = "select id,userpassword from users where username='".$self->{db}->securetext($email)."';";
-  my $ex = $self->{db}->dbquerysorted($sql);
-  if (keys(%{$ex}) > 0){
-    my $newpwd = $self->randomstring(12);
-    my $pwd = sha256_hex($newpwd);
-    $self->{db}->dbexec("UPDATE users SET userpassword = '".$pwd."' WHERE id=".$ex->{0}->{id}.";");
-    my $data->{newpassword} = $newpwd; 
-    my $eml = sendemail->new();
-    my $mret = $eml->sendemail('user_forgotpasswd',$ex->{0}->{id},$email,$data,undef);
-    if ($mret != 0){
-      $ret->{messagetype} ='red';
-      $ret->{message} = "Den Moment ass et leider nët méglech d'Passwuert autmatesch zreckzesetzen, <br/> wend dech w.e.g. via E-Mail un <a href=\"mailto:webmaster\@fld.lu\">webmaster\@fld.lu</a>!";
-      return $ret;
-    }
-    $ret->{message} = "Mir hun dir eng E-Mail, matt engem neien Passwuert gescheckt!";
-    $ret->{messagetype} = "green";
-  }
-  return $ret;
-}
-
-# sub registeruser(){
-#   my $self = shift;
-#   my $data = shift;
-#   my $ret->{messagetype} ='red';
-#   $ret->{message} = "Een Fehler ass passéiert, probéier et spéier nach eemol!";
-#   $ret->{page} = "message.tt";
-#   if (!exists($data->{license}) || !exists($data->{regcode}) || !exists($data->{email}) || !exists($data->{terms})){
-#     $ret->{message} = "W.e.g. All Felder ausfëllen!";
-#     $ret->{page} =  "register.tt";
-#     return $ret;
-#   }
-#   foreach my $d (%{$data}){
-#     $data->{$d} = $self->{db}->securetext($data->{$d});
-#   }
-  
-#   my $user = $self->{db}->dbquerysorted("select id from users where username='".$data->{email}."';");
-#   if (keys(%{$user}) > 0){
-#     $ret->{page} = "register.tt";
-#     $ret->{message} = "Een Benotzer matt der selwechter E-Mail existéiert schon!";
-#     return $ret; 
-#   }
-#   my $license = $self->{db}->dbquerysorted("select us.id as id_user,lic.license,mb.id as id_member,us.username,us.vcode,us.regcode from members mb join licenses lic on (lic.id_member=mb.id) join users us on (mb.id_user=us.id) where us.regcode='".$data->{regcode}."' and lic.license='".$data->{license}."' limit 1");
-#   if (keys(%{$license}) == 0){
-#     $ret->{message} = "Falsch Lizenz-Nummer oder falschen Régistréierungs-Code!";
-#     return $ret; 
-#   }
-#   my $regcode = $license->{0}->{regcode};
-#   my $newcode = $self->randomstring(6);
-#   #my $usergroup = $self->{db}->dbquerysorted("select id from usergroups where usergroup ='avocat';");
-#   my $newuserid = $self->{db}->dbquerysorted("UPDATE users set username='".$data->{email}."',vcode='".$newcode."' where id=".$license->{0}->{id_user}." ;");
-#   my $maildata->{vcode} = $newcode;
-#   my $eml = sendemail->new();
-#   my $mret = $eml->sendemail('user_verification',$license->{0}->{id_user},$data->{email},$maildata,undef);
-#   if ($mret == 0){
-#     $ret->{message} = "Merci,<br/>Mir hun dir elo eng E-Mail gescheckt, matt engem Code fir deng E-Mail ze verifizéieren!<br/>Gëff desen Code w.e.g. an daat Feld hei drënner an!<br/>Bei Problemer wend dech w.e.g. via E-Mail un <a href=\"mailto:webmaster\@fld.lu\">webmaster\@fld.lu</a>";
-#     $ret->{messagetype} = "green";
-#     $ret->{page} = "validationcode.tt";
-#   } else {
-#     $self->{db}->dbexec("UPDATE users set username='".$data->{email}."',vcode=null where id=".$license->{0}->{id_user}." ;");
-#     $ret->{message} = "Aus iergend engem Grond konnten mir dir keng E-Mail un '".$data->{email}."' schecken! Falls dess E-Mail-Address net existéiert, versich et nach eng Kéier matt enger E-Mail-Address, déi existéiert!<br>Bei Problemer wend dech w.e.g. via E-Mail un <a href=\"mailto:webmaster\@fld.lu\">webmaster\@fld.lu</a>";
-#     $ret->{messagetype} = "red";
-#     $ret->{page} = "register.tt";
-#   }
-#      #$self->{db}->dbexec("insert into appaccess (id_user) values (".$newuserid->{0}->{id}.");");
-#   # $ret->{messagetype} =  "green";
-  
-#   return $ret;
-# }
-
-# sub validateaccount(){
-#   my $self = shift;
-#   my $data = shift;
-#   foreach my $d (%{$data}){
-#     $data->{$d} = $self->{db}->securetext($data->{$d});
-#   }
-  
-#   my $ret->{messagetype} ='red';
-#   my $vcodedata = $self->{db}->dbquerysorted("select id,vcode,username from users where vcode='".$data->{vcode}."';");
-#   if (keys(%{$vcodedata}) == 0){
-#     $ret->{message} = "Benotzer onbekannt oder Code falsch!";
-#     $ret->{page} = "validationcode.tt";
-#   }
-#   my $newpwd = $self->randomstring(12);
-#   my $pwd = sha256_hex($newpwd);
-#   my $maildata->{password} = $newpwd;
-#   my $eml = sendemail->new();
-#   my $newuserid = $self->{db}->dbquerysorted("UPDATE users set userpassword='".$pwd."',vcode=null,regcode=null where id=".$vcodedata->{0}->{id}." returning id,username;");
-#   my $mret = $eml->sendemail('user_registration',$vcodedata->{0}->{id},$vcodedata->{0}->{username},$maildata,undef);
-#   if ($mret == 0){
-#     $ret->{message} = "Merci,<br/>Mir hun dir elo eng E-Mail gescheckt, matt all deenen néidegen Donnéeen fir dech anzeloggen!<br/>Bei Problemer wend dech w.e.g. via E-Mail un <a href=\"mailto:webmaster\@fld.lu\">webmaster\@fld.lu</a>";
-#     $ret->{messagetype} = "green";
-#     $ret->{page} = "message.tt";
-#   } else {
-#     $ret->{message} = "Aus iergend engem Grond konnten mir dir keng E-Mail un '".$newuserid->{0}->{username}."' schecken! Falls dess E-Mail-Address net existéiert, versich et nach eng Kéier matt enger E-Mail-Address, déi existéiert!<br>Bei Problemer wend dech w.e.g. via E-Mail un <a href=\"mailto:webmaster\@fld.lu\">webmaster\@fld.lu</a>";
-#     $ret->{page} = "message.tt";
-#   }
-#   return $ret;
-# }
-
-sub getsession($){
-  my $self = shift;
-  my $sid = shift;
-  my $sql ="select * from public.getsession('".$self->{db}->securetext($sid)."','".$ENV{REMOTE_ADDR}."','".$ENV{HTTP_USER_AGENT}."');";
-  my $res= $self->{db}->querysorted($sql);
-  my $ret = undef;
-  # open FILE,">>tmp/sql.log";
-  # print FILE "GET DB Session\n";
-  # print FILE Dumper($res->{0});
-  # close(FILE);
-  if (keys(%{$res}) > 0){
-    return $res->{0};
-  }
-  return $ret;
-}
-
-sub deletesession(){
-       my $self = shift;
-       my $sid = shift;
-       $self->{db}->dbexec("UPDATE sessions set idsession= 'LO-' || idsession where idsession='".$self->{db}->securetext($sid)."';");
-}
-
-# sub randomstring(){
-#      my $self = shift;
-#   my $num = shift;
-#      my @alphanumeric = ('a'..'z', 'A'..'Z', 0..9);
-#      my $randstring = join '', map $alphanumeric[rand @alphanumeric], 0..$num;
-#      return $randstring;
-# }
-
-
-# sub deleteprofile(){
-#   my $self = shift;
-#   my $data = shift;
-#   my $ret->{message} = "mot de passe ou profile inconnue!";
-#   $ret->{messagetype} = "danger";
-#   if ($data->{id_user} eq ''){
-#     $ret->{sid} = undef;
-#     return $ret;
-#   }
-#   my $pwd = sha256_hex($data->{password});
-#   my $user = $self->{db}->dbquerysorted("select id from users where id= '".$data->{id_user}."' and userpassword = '".$pwd."';");
-#   if (keys(%{$user}) > 0){
-#     $self->admindeleteuser($data->{id_user});
-#     my $ret->{'message'} = "Votre profile a été supprimé!";
-#     $ret->{'messagetype'} = "info"; 
-#     $ret->{sid} = undef;
-#   }
-#   return $ret;
-  
-# }
-
-# sub admindeleteuser(){
-#   my $self = shift;
-#   my $id_user = shift;
-#   my @dl = ("DELETE FROM public.useringroups WHERE id_uset=".$id_user.";",
-# "DELETE FROM public.userclients WHERE id_user=".$id_user.";",
-# "DELETE FROM public.appaccess WHERE id_user=".$id_user.";",
-# "DELETE FROM public.modulepreferences WHERE id_user=".$id_user.";",,
-# "DELETE FROM public.sessions WHERE id_user=".$id_user.";",
-# "delete from users where id=".$id_user.";");
-# foreach my $s (@dl){
-#   $self->{db}->dbexec($s);
-# }
-#   return 1;
-# }
-
-1;
\ No newline at end of file
diff --git a/app/sendEmail b/app/sendEmail
deleted file mode 100644 (file)
index c639439..0000000
+++ /dev/null
@@ -1,2235 +0,0 @@
-#!/usr/bin/perl -w
-##############################################################################
-## sendEmail
-## Written by: Brandon Zehm <caspian@dotconf.net>
-##
-## License:
-##  sendEmail (hereafter referred to as "program") is free software;
-##  you can redistribute it and/or modify it under the terms of the GNU General
-##  Public License as published by the Free Software Foundation; either version
-##  2 of the License, or (at your option) any later version.
-##  When redistributing modified versions of this source code it is recommended
-##  that that this disclaimer and the above coder's names are included in the
-##  modified code.
-##
-## Disclaimer:
-##  This program is provided with no warranty of any kind, either expressed or
-##  implied.  It is the responsibility of the user (you) to fully research and
-##  comprehend the usage of this program.  As with any tool, it can be misused,
-##  either intentionally (you're a vandal) or unintentionally (you're a moron).
-##  THE AUTHOR(S) IS(ARE) NOT RESPONSIBLE FOR ANYTHING YOU DO WITH THIS PROGRAM
-##  or anything that happens because of your use (or misuse) of this program,
-##  including but not limited to anything you, your lawyers, or anyone else
-##  can dream up.  And now, a relevant quote directly from the GPL:
-##
-## NO WARRANTY
-##
-##  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-##  FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-##  OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-##  PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-##  OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-##  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-##  TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-##  PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-##  REPAIR OR CORRECTION.
-##
-##############################################################################
-use strict;
-use IO::Socket;
-
-
-########################
-##  Global Variables  ##
-########################
-
-my %conf = (
-    ## General
-    "programName"          => $0,                                  ## The name of this program
-    "version"              => '1.56',                              ## The version of this program
-    "authorName"           => 'Brandon Zehm',                      ## Author's Name
-    "authorEmail"          => 'caspian@dotconf.net',               ## Author's Email Address
-    "timezone"             => '+0000',                             ## We always use +0000 for the time zone
-    "hostname"             => 'changeme',                          ## Used in printmsg() for all output (is updated later in the script).
-    "debug"                => 0,                                   ## Default debug level
-    "error"                => '',                                  ## Error messages will often be stored here
-    
-    ## Logging
-    "stdout"               => 1,
-    "logging"              => 0,                                   ## If this is true the printmsg function prints to the log file
-    "logFile"              => '',                                  ## If this is specified (form the command line via -l) this file will be used for logging.
-    
-    ## Network
-    "server"               => 'localhost',                         ## Default SMTP server
-    "port"                 => 25,                                  ## Default port
-    "bindaddr"             => '',                                  ## Default local bind address
-    "alarm"                => '',                                  ## Default timeout for connects and reads, this gets set from $opt{'timeout'}
-    "tls_client"           => 0,                                   ## If TLS is supported by the client (us)
-    "tls_server"           => 0,                                   ## If TLS is supported by the remote SMTP server
-    
-    ## Email
-    "delimiter"            => "----MIME delimiter for sendEmail-"  ## MIME Delimiter
-                              . rand(1000000),                     ## Add some randomness to the delimiter
-    "Message-ID"           => rand(1000000) . "-sendEmail",        ## Message-ID for email header
-    
-);
-
-
-## This hash stores the options passed on the command line via the -o option.
-my %opt = (
-    ## Addressing
-    "reply-to"             => '',                                  ## Reply-To field
-    
-    ## Message
-    "message-file"         => '',                                  ## File to read message body from
-    "message-header"       => '',                                  ## Additional email header line(s)
-    "message-format"       => 'normal',                            ## If "raw" is specified the message is sent unmodified
-    "message-charset"      => 'iso-8859-1',                        ## Message character-set
-    "message-content-type" => 'auto',                              ## auto, text, html or an actual string to put into the content-type header.
-    
-    ## Network
-    "timeout"              => 60,                                  ## Default timeout for connects and reads, this is copied to $conf{'alarm'} later.
-    "fqdn"                 => 'changeme',                          ## FQDN of this machine, used during SMTP communication (is updated later in the script).
-    
-    ## eSMTP
-    "username"             => '',                                  ## Username used in SMTP Auth
-    "password"             => '',                                  ## Password used in SMTP Auth
-    "tls"                  => 'auto',                              ## Enable or disable TLS support.  Options: auto, yes, no
-    
-);
-
-## More variables used later in the program
-my $SERVER;
-my $CRLF        = "\015\012";
-my $subject     = '';
-my $header      = '';
-my $message     = '';
-my $from        = '';
-my @to          = ();
-my @cc          = ();
-my @bcc         = ();
-my @attachments = ();
-my @attachments_names = ();
-
-## For printing colors to the console
-my ${colorRed}    = "\033[31;1m";
-my ${colorGreen}  = "\033[32;1m";
-my ${colorCyan}   = "\033[36;1m";
-my ${colorWhite}  = "\033[37;1m";
-my ${colorNormal} = "\033[m";
-my ${colorBold}   = "\033[1m";
-my ${colorNoBold} = "\033[0m";
-
-## Don't use shell escape codes on Windows systems
-if ($^O =~ /win/i) {
-    ${colorRed} = ${colorGreen} = ${colorCyan} = ${colorWhite} = ${colorNormal} = ${colorBold} = ${colorNoBold} = "";
-}
-
-## Load IO::Socket::SSL if it's available
-eval    { require IO::Socket::SSL; };
-if ($@) { $conf{'tls_client'} = 0; }
-else    { $conf{'tls_client'} = 1; }
-
-
-
-
-
-
-#############################
-##                          ##
-##      FUNCTIONS            ##
-##                          ##
-#############################
-
-
-
-
-
-###############################################################################################
-##  Function: initialize ()
-##  
-##  Does all the script startup jibberish.
-##  
-###############################################################################################
-sub initialize {
-
-    ## Set STDOUT to flush immediatly after each print  
-    $| = 1;
-    
-    ## Intercept signals
-    $SIG{'QUIT'}  = sub { quit("EXITING: Received SIG$_[0]", 1); };
-    $SIG{'INT'}   = sub { quit("EXITING: Received SIG$_[0]", 1); };
-    $SIG{'KILL'}  = sub { quit("EXITING: Received SIG$_[0]", 1); };
-    $SIG{'TERM'}  = sub { quit("EXITING: Received SIG$_[0]", 1); };
-  
-    ## ALARM and HUP signals are not supported in Win32
-    unless ($^O =~ /win/i) {
-        $SIG{'HUP'}   = sub { quit("EXITING: Received SIG$_[0]", 1); };
-        $SIG{'ALRM'}  = sub { quit("EXITING: Received SIG$_[0]", 1); };
-    }
-    
-    ## Fixup $conf{'programName'}
-    $conf{'programName'} =~ s/(.)*[\/,\\]//;
-    $0 = $conf{'programName'} . " " . join(" ", @ARGV);
-    
-    ## Fixup $conf{'hostname'} and $opt{'fqdn'}
-    if ($opt{'fqdn'} eq 'changeme') { $opt{'fqdn'} = get_hostname(1); }
-    if ($conf{'hostname'} eq 'changeme') { $conf{'hostname'} = $opt{'fqdn'}; $conf{'hostname'} =~ s/\..*//; }
-    
-    return(1);
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-###############################################################################################
-##  Function: processCommandLine ()
-##  
-##  Processes command line storing important data in global vars (usually %conf)
-##  
-###############################################################################################
-sub processCommandLine {
-    
-    
-    ############################
-    ##  Process command line  ##
-    ############################
-    
-    my @ARGS = @ARGV;  ## This is so later we can re-parse the command line args later if we need to
-    my $numargv = @ARGS;
-    help() unless ($numargv);
-    my $counter = 0;
-    
-    for ($counter = 0; $counter < $numargv; $counter++) {
-  
-        if ($ARGS[$counter] =~ /^-h$/i) {                    ## Help ##
-            help();
-        }
-        
-        elsif ($ARGS[$counter] eq "") {                      ## Ignore null arguments
-            ## Do nothing
-        }
-        
-        elsif ($ARGS[$counter] =~ /^--help/) {               ## Topical Help ##
-            $counter++;
-            if ($ARGS[$counter] && $ARGS[$counter] !~ /^-/) {
-                helpTopic($ARGS[$counter]);
-            }
-            else {
-                help();
-            }
-        }
-        
-        elsif ($ARGS[$counter] =~ /^-o$/i) {                 ## Options specified with -o ##
-            $counter++;
-            ## Loop through each option passed after the -o
-            while ($ARGS[$counter] && $ARGS[$counter] !~ /^-/) {
-                
-                if ($ARGS[$counter] !~ /(\S+)=(\S.*)/) {
-                    printmsg("WARNING => Name/Value pair [$ARGS[$counter]] is not properly formatted", 0);
-                    printmsg("WARNING => Arguments proceeding -o should be in the form of \"name=value\"", 0);
-                }
-                else {
-                    if (exists($opt{$1})) {
-                        if ($1 eq 'message-header') {
-                            $opt{$1} .= $2 . $CRLF;
-                        }
-                        else {
-                            $opt{$1} = $2;
-                        }
-                        printmsg("DEBUG => Assigned \$opt{} key/value: $1 => $2", 3);
-                    }
-                    else {
-                        printmsg("WARNING => Name/Value pair [$ARGS[$counter]] will be ignored: unknown key [$1]", 0);
-                        printmsg("HINT => Try the --help option to find valid command line arguments", 1);
-                    }
-                }
-                $counter++;
-            }   $counter--;
-        }
-        
-        elsif ($ARGS[$counter] =~ /^-f$/) {                  ## From ##
-            $counter++;
-            if ($ARGS[$counter] && $ARGS[$counter] !~ /^-/) { $from = $ARGS[$counter]; }
-            else { printmsg("WARNING => The argument after -f was not an email address!", 0); $counter--; }
-        }
-        
-        elsif ($ARGS[$counter] =~ /^-t$/) {                  ## To ##
-            $counter++;
-            while ($ARGS[$counter] && ($ARGS[$counter] !~ /^-/)) {
-                if ($ARGS[$counter] =~ /[;,]/) {
-                    push (@to, split(/[;,]/, $ARGS[$counter]));
-                }
-                else {
-                    push (@to,$ARGS[$counter]);
-                }
-                $counter++;
-            }   $counter--;
-        }
-        
-        elsif ($ARGS[$counter] =~ /^-cc$/) {                 ## Cc ##
-            $counter++;
-            while ($ARGS[$counter] && ($ARGS[$counter] !~ /^-/)) {
-                if ($ARGS[$counter] =~ /[;,]/) {
-                    push (@cc, split(/[;,]/, $ARGS[$counter]));
-                }
-                else {
-                    push (@cc,$ARGS[$counter]);
-                }
-                $counter++;
-            }   $counter--;
-        }
-        
-        elsif ($ARGS[$counter] =~ /^-bcc$/) {                ## Bcc ##
-            $counter++;
-            while ($ARGS[$counter] && ($ARGS[$counter] !~ /^-/)) {
-                if ($ARGS[$counter] =~ /[;,]/) {
-                    push (@bcc, split(/[;,]/, $ARGS[$counter]));
-                }
-                else {
-                    push (@bcc,$ARGS[$counter]);
-                }
-                $counter++;
-            }   $counter--;
-        }
-        
-        elsif ($ARGS[$counter] =~ /^-m$/) {                  ## Message ##
-            $counter++;
-            $message = "";
-            while ($ARGS[$counter] && $ARGS[$counter] !~ /^-/) {
-                if ($message) { $message .= " "; }
-                $message .= $ARGS[$counter];
-                $counter++;
-            }   $counter--;
-            
-            ## Replace '\n' with $CRLF.
-            ## This allows newlines with messages sent on the command line
-            $message =~ s/\\n/$CRLF/g;
-        }
-        
-        elsif ($ARGS[$counter] =~ /^-u$/) {                  ## Subject ##
-            $counter++;
-            $subject = "";
-            while ($ARGS[$counter] && $ARGS[$counter] !~ /^-/) {
-                if ($subject) { $subject .= " "; }
-                $subject .= $ARGS[$counter];
-                $counter++;
-            }   $counter--;
-        }
-        
-        elsif ($ARGS[$counter] =~ /^-s$/) {                  ## Server ##
-            $counter++;
-            if ($ARGS[$counter] && $ARGS[$counter] !~ /^-/) {
-                $conf{'server'} = $ARGS[$counter];
-                if ($conf{'server'} =~ /:/) {                ## Port ##
-                    ($conf{'server'},$conf{'port'}) = split(":",$conf{'server'});
-                }
-            }
-            else { printmsg("WARNING - The argument after -s was not the server!", 0); $counter--; }
-        }
-
-        elsif ($ARGS[$counter] =~ /^-b$/) {                  ## Bind Address ##
-            $counter++;
-            if ($ARGS[$counter] && $ARGS[$counter] !~ /^-/) {
-                $conf{'bindaddr'} = $ARGS[$counter];
-            }
-            else { printmsg("WARNING - The argument after -b was not the bindaddr!", 0); $counter--; }
-        }
-        
-        elsif ($ARGS[$counter] =~ /^-a$/) {                  ## Attachments ##
-            $counter++;
-            while ($ARGS[$counter] && ($ARGS[$counter] !~ /^-/)) {
-                push (@attachments,$ARGS[$counter]);
-                $counter++;
-            }   $counter--;
-        }
-        
-        elsif ($ARGS[$counter] =~ /^-xu$/) {                  ## AuthSMTP Username ##
-            $counter++;
-            if ($ARGS[$counter] && $ARGS[$counter] !~ /^-/) {
-               $opt{'username'} = $ARGS[$counter];
-            }
-            else {
-                printmsg("WARNING => The argument after -xu was not valid username!", 0);
-                $counter--;
-            }
-        }
-        
-        elsif ($ARGS[$counter] =~ /^-xp$/) {                  ## AuthSMTP Password ##
-            $counter++;
-            if ($ARGS[$counter] && $ARGS[$counter] !~ /^-/) {
-               $opt{'password'} = $ARGS[$counter];
-            }
-            else {
-                printmsg("WARNING => The argument after -xp was not valid password!", 0);
-                $counter--;
-            }
-        }
-        
-        elsif ($ARGS[$counter] =~ /^-l$/) {                  ## Logging ##
-            $counter++;
-            $conf{'logging'} = 1;
-            if ($ARGS[$counter] && $ARGS[$counter] !~ /^-/) { $conf{'logFile'} = $ARGS[$counter]; }
-            else { printmsg("WARNING - The argument after -l was not the log file!", 0); $counter--; }
-        }
-        
-        elsif ($ARGS[$counter] =~ s/^-v+//i) {               ## Verbosity ##
-            my $tmp = (length($&) - 1);
-            $conf{'debug'} += $tmp;
-        }
-        
-        elsif ($ARGS[$counter] =~ /^-q$/) {                  ## Quiet ##
-            $conf{'stdout'} = 0;
-        }
-        
-        else {
-            printmsg("Error: \"$ARGS[$counter]\" is not a recognized option!", 0);
-            help();
-        }
-        
-    }
-
-
-
-
-
-
-    
-    
-    ###################################################
-    ##  Verify required variables are set correctly  ##
-    ###################################################
-    
-    ## Make sure we have something in $conf{hostname} and $opt{fqdn}
-    if ($opt{'fqdn'} =~ /\./) {
-        $conf{'hostname'} = $opt{'fqdn'};
-        $conf{'hostname'} =~ s/\..*//;
-    }
-    
-    if (!$conf{'server'}) { $conf{'server'} = 'localhost'; }
-    if (!$conf{'port'})   { $conf{'port'} = 25; }
-    if (!$from) {
-        quit("ERROR => You must specify a 'from' field!  Try --help.", 1);
-    }
-    if ( ((scalar(@to)) + (scalar(@cc)) + (scalar(@bcc))) <= 0) {
-        quit("ERROR => You must specify at least one recipient via -t, -cc, or -bcc", 1);
-    }
-    
-    ## Make sure email addresses look OK.
-    foreach my $addr (@to, @cc, @bcc, $from, $opt{'reply-to'}) {
-        if ($addr) {
-            if (!returnAddressParts($addr)) {
-                printmsg("ERROR => Can't use improperly formatted email address: $addr", 0);
-                printmsg("HINT => Try viewing the extended help on addressing with \"--help addressing\"", 1);
-                quit("", 1);
-            }
-        }
-    }
-    
-    ## Make sure all attachments exist.
-    foreach my $file (@attachments) {
-        if ( (! -f $file) or (! -r $file) ) {
-            printmsg("ERROR => The attachment [$file] doesn't exist!", 0);
-            printmsg("HINT => Try specifying the full path to the file or reading extended help with \"--help message\"", 1);
-            quit("", 1);
-        }
-    }
-    
-    if ($conf{'logging'} and (!$conf{'logFile'})) {
-        quit("ERROR => You used -l to enable logging but didn't specify a log file!", 1);
-    }    
-    
-    if ( $opt{'username'} ) {
-        if (!$opt{'password'}) {
-            ## Prompt for a password since one wasn't specified with the -xp option.
-            $SIG{'ALRM'} = sub { quit("ERROR => Timeout waiting for password inpupt", 1); };
-            alarm(60) if ($^O !~ /win/i);  ## alarm() doesn't work in win32
-            print "Password: ";
-            $opt{'password'} = <STDIN>; chomp $opt{'password'};
-            if (!$opt{'password'}) {
-                quit("ERROR => A username for SMTP authentication was specified, but no password!", 1);
-            }
-        }
-    }
-    
-    ## Validate the TLS setting
-    $opt{'tls'} = lc($opt{'tls'});
-    if ($opt{'tls'} !~ /^(auto|yes|no)$/) {
-        quit("ERROR => Invalid TLS setting ($opt{'tls'}). Must be one of auto, yes, or no.", 1);
-    }
-    
-    ## If TLS is set to "yes", make sure sendEmail loaded the libraries needed.
-    if ($opt{'tls'} eq 'yes' and $conf{'tls_client'} == 0) {
-        quit("ERROR => No TLS support!  SendEmail can't load required libraries. (try installing Net::SSLeay and IO::Socket::SSL)", 1);
-    }
-    
-    ## Return 0 errors
-    return(0);
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-## getline($socketRef)
-sub getline {
-    my ($socketRef) = @_;
-    local ($/) = "\r\n";
-    return $$socketRef->getline;
-}
-
-
-
-
-## Receive a (multiline?) SMTP response from ($socketRef)
-sub getResponse {
-    my ($socketRef) = @_;
-    my ($tmp, $reply);
-    local ($/) = "\r\n";
-    return undef unless defined($tmp = getline($socketRef));
-    return("getResponse() socket is not open") unless ($$socketRef->opened);
-    ## Keep reading lines if it's a multi-line response
-    while ($tmp =~ /^\d{3}-/o) {
-        $reply .= $tmp;
-        return undef unless defined($tmp = getline($socketRef));
-    }
-    $reply .= $tmp;
-    $reply =~ s/\r?\n$//o;
-    return $reply;
-}
-
-
-
-
-###############################################################################################
-##  Function:    SMTPchat ( [string $command] )
-##
-##  Description: Sends $command to the SMTP server (on SERVER) and awaits a successful
-##               reply form the server.  If the server returns an error, or does not reply
-##               within $conf{'alarm'} seconds an error is generated.
-##               NOTE: $command is optional, if no command is specified then nothing will
-##               be sent to the server, but a valid response is still required from the server.
-##
-##  Input:       [$command]          A (optional) valid SMTP command (ex. "HELO")
-##  
-##  
-##  Output:      Returns zero on success, or non-zero on error.  
-##               Error messages will be stored in $conf{'error'}
-##               A copy of the last SMTP response is stored in the global variable
-##               $conf{'SMTPchat_response'}
-##               
-##  
-##  Example:     SMTPchat ("HELO mail.isp.net");
-###############################################################################################
-sub SMTPchat {
-    my ($command) = @_;
-    
-    printmsg("INFO => Sending: \t$command", 1) if ($command);
-    
-    ## Send our command
-    print $SERVER "$command$CRLF" if ($command);
-    
-    ## Read a response from the server
-    $SIG{'ALRM'} = sub { $conf{'error'} = "alarm"; $SERVER->close(); };
-    alarm($conf{'alarm'}) if ($^O !~ /win/i);  ## alarm() doesn't work in win32;
-    my $result = $conf{'SMTPchat_response'} = getResponse(\$SERVER); 
-    alarm(0) if ($^O !~ /win/i);  ## alarm() doesn't work in win32;
-    
-    ## Generate an alert if we timed out
-    if ($conf{'error'} eq "alarm") {
-        $conf{'error'} = "ERROR => Timeout while reading from $conf{'server'}:$conf{'port'} There was no response after $conf{'alarm'} seconds.";
-        return(1);
-    }
-    
-    ## Make sure the server actually responded
-    if (!$result) {
-        $conf{'error'} = "ERROR => $conf{'server'}:$conf{'port'} returned a zero byte response to our query.";
-        return(2);
-    }
-    
-    ## Validate the response
-    if (evalSMTPresponse($result)) {
-        ## conf{'error'} will already be set here
-        return(2);
-    }
-    
-    ## Print the success messsage
-    printmsg($conf{'error'}, 1);
-    
-    ## Return Success
-    return(0);
-}
-
-
-
-
-
-
-
-
-
-
-
-
-###############################################################################################
-##  Function:    evalSMTPresponse (string $message )
-##
-##  Description: Searches $message for either an  SMTP success or error code, and returns
-##               0 on success, and the actual error code on error.
-##               
-##
-##  Input:       $message          Data received from a SMTP server (ex. "220 
-##                                
-##  
-##  Output:      Returns zero on success, or non-zero on error.  
-##               Error messages will be stored in $conf{'error'}
-##               
-##  
-##  Example:     SMTPchat ("HELO mail.isp.net");
-###############################################################################################
-sub evalSMTPresponse {
-    my ($message) = @_;
-    
-    ## Validate input
-    if (!$message) { 
-        $conf{'error'} = "ERROR => No message was passed to evalSMTPresponse().  What happened?";
-        return(1)
-    }
-    
-    printmsg("DEBUG => evalSMTPresponse() - Checking for SMTP success or error status in the message: $message ", 3);
-    
-    ## Look for a SMTP success code
-    if ($message =~ /^([23]\d\d)/) {
-        printmsg("DEBUG => evalSMTPresponse() - Found SMTP success code: $1", 2);
-        $conf{'error'} = "SUCCESS => Received: \t$message";
-        return(0);
-    }
-    
-    ## Look for a SMTP error code
-    if ($message =~ /^([45]\d\d)/) {
-        printmsg("DEBUG => evalSMTPresponse() - Found SMTP error code: $1", 2);
-        $conf{'error'} = "ERROR => Received: \t$message";
-        return($1);
-    }
-    
-    ## If no SMTP codes were found return an error of 1
-    $conf{'error'} = "ERROR => Received a message with no success or error code. The message received was: $message";
-    return(2);
-    
-}
-
-
-
-
-
-
-
-
-
-
-#########################################################
-# SUB: &return_month(0,1,etc)
-#  returns the name of the month that corrosponds
-#  with the number.  returns 0 on error.
-#########################################################
-sub return_month {
-    my $x = $_[0];
-    if ($x == 0)  { return 'Jan'; }
-    if ($x == 1)  { return 'Feb'; }
-    if ($x == 2)  { return 'Mar'; }
-    if ($x == 3)  { return 'Apr'; }
-    if ($x == 4)  { return 'May'; }
-    if ($x == 5)  { return 'Jun'; }
-    if ($x == 6)  { return 'Jul'; }
-    if ($x == 7)  { return 'Aug'; }
-    if ($x == 8)  { return 'Sep'; }
-    if ($x == 9)  { return 'Oct'; }
-    if ($x == 10) { return 'Nov'; }
-    if ($x == 11) { return 'Dec'; }
-    return (0);
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-#########################################################
-# SUB: &return_day(0,1,etc)
-#  returns the name of the day that corrosponds
-#  with the number.  returns 0 on error.
-#########################################################
-sub return_day {
-    my $x = $_[0];
-    if ($x == 0)  { return 'Sun'; }
-    if ($x == 1)  { return 'Mon'; }
-    if ($x == 2)  { return 'Tue'; }
-    if ($x == 3)  { return 'Wed'; }
-    if ($x == 4)  { return 'Thu'; }
-    if ($x == 5)  { return 'Fri'; }
-    if ($x == 6)  { return 'Sat'; }
-    return (0);
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-###############################################################################################
-##  Function:    returnAddressParts(string $address)
-##
-##  Description: Returns a two element array containing the "Name" and "Address" parts of 
-##               an email address.
-##  
-## Example:      "Brandon Zehm <caspian@dotconf.net>"
-##               would return: ("Brandon Zehm", "caspian@dotconf.net");
-## 
-##               "caspian@dotconf.net"
-##               would return: ("caspian@dotconf.net", "caspian@dotconf.net")
-###############################################################################################
-sub returnAddressParts {
-    my $input = $_[0];
-    my $name = "";
-    my $address = "";
-    
-    ## Make sure to fail if it looks totally invalid
-    if ($input !~ /(\S+\@\S+)/) {
-        $conf{'error'} = "ERROR => The address [$input] doesn't look like a valid email address, ignoring it";
-        return(undef());
-    }
-    
-    ## Check 1, should find addresses like: "Brandon Zehm <caspian@dotconf.net>"
-    elsif ($input =~ /^\s*(\S(.*\S)?)\s*<(\S+\@\S+)>/o) {
-        ($name, $address) = ($1, $3);
-    }
-    
-    ## Otherwise if that failed, just get the address: <caspian@dotconf.net>
-    elsif ($input =~ /<(\S+\@\S+)>/o) {
-        $name = $address = $1;
-    }
-    
-    ## Or maybe it was formatted this way: caspian@dotconf.net
-    elsif ($input =~ /(\S+\@\S+)/o) {
-        $name = $address = $1;
-    }
-    
-    ## Something stupid happened, just return an error.
-    unless ($name and $address) {
-        printmsg("ERROR => Couldn't parse the address: $input", 0);
-        printmsg("HINT => If you think this should work, consider reporting this as a bug to $conf{'authorEmail'}", 1);
-        return(undef());
-    }
-    
-    ## Make sure there aren't invalid characters in the address, and return it.
-    my $ctrl        = '\000-\037';
-    my $nonASCII    = '\x80-\xff';
-    if ($address =~ /[<> ,;:"'\[\]\\$ctrl$nonASCII]/) {
-        printmsg("WARNING => The address [$address] seems to contain invalid characters: continuing anyway", 0);
-    }
-    return($name, $address);
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-###############################################################################################
-##  Function:    base64_encode(string $data, bool $chunk)
-##
-##  Description: Returns $data as a base64 encoded string.
-##               If $chunk is true, the encoded data is returned in 76 character long lines
-##               with the final \CR\LF removed.
-##
-##  Note: This is only used from the smtp auth section of code.
-##        At some point it would be nice to merge the code that encodes attachments and this.
-###############################################################################################
-sub base64_encode {
-    my $data = $_[0];
-    my $chunk = $_[1];
-    my $tmp = '';
-    my $base64 = '';
-    my $CRLF = "\r\n";
-    
-    ###################################
-    ## Convert binary data to base64 ##
-    ###################################
-    while ($data =~ s/(.{45})//s) {        ## Get 45 bytes from the binary string
-        $tmp = substr(pack('u', $&), 1);   ## Convert the binary to uuencoded text
-        chop($tmp);
-        $tmp =~ tr|` -_|AA-Za-z0-9+/|;     ## Translate from uuencode to base64
-        $base64 .= $tmp;
-    }
-    
-    ##########################
-    ## Encode the leftovers ##
-    ##########################
-    my $padding = "";
-    if ( ($data) and (length($data) > 0) ) {
-        $padding = (3 - length($data) % 3) % 3;    ## Set flag if binary data isn't divisible by 3
-        $tmp = substr(pack('u', $data), 1);        ## Convert the binary to uuencoded text
-        chop($tmp);
-        $tmp =~ tr|` -_|AA-Za-z0-9+/|;             ## Translate from uuencode to base64
-        $base64 .= $tmp;
-    }
-    
-    ############################
-    ## Fix padding at the end ##
-    ############################
-    $data = '';
-    $base64 =~ s/.{$padding}$/'=' x $padding/e if $padding; ## Fix the end padding if flag (from above) is set
-    if ($chunk) {
-        while ($base64 =~ s/(.{1,76})//s) {                     ## Put $CRLF after each 76 characters
-            $data .= "$1$CRLF";
-        }
-    }
-    else {
-        $data = $base64;
-    }
-    
-    ## Remove any trailing CRLF's
-    $data =~ s/(\r|\n)*$//s;
-    return($data);
-}
-
-
-
-
-
-
-
-
-
-#########################################################
-# SUB: send_attachment("/path/filename")
-# Sends the mime headers and base64 encoded file
-# to the email server.
-#########################################################
-sub send_attachment {
-    my ($filename) = @_;                             ## Get filename passed
-    my (@fields, $y, $filename_name, $encoding,      ## Local variables
-        @attachlines, $content_type);
-    my $bin = 1;
-    
-    @fields = split(/\/|\\/, $filename);             ## Get the actual filename without the path  
-    $filename_name = pop(@fields);       
-    push @attachments_names, $filename_name;         ## FIXME: This is only used later for putting in the log file
-    
-    ##########################
-    ## Autodetect Mime Type ##
-    ##########################
-    
-    @fields = split(/\./, $filename_name);
-    $encoding = $fields[$#fields];
-    
-    if ($encoding =~ /txt|text|log|conf|^c$|cpp|^h$|inc|m3u/i) {   $content_type = 'text/plain';                      }
-    elsif ($encoding =~ /html|htm|shtml|shtm|asp|php|cfm/i) {      $content_type = 'text/html';                       }
-    elsif ($encoding =~ /sh$/i) {                                  $content_type = 'application/x-sh';                }
-    elsif ($encoding =~ /tcl/i) {                                  $content_type = 'application/x-tcl';               }
-    elsif ($encoding =~ /pl$/i) {                                  $content_type = 'application/x-perl';              }
-    elsif ($encoding =~ /js$/i) {                                  $content_type = 'application/x-javascript';        }
-    elsif ($encoding =~ /man/i) {                                  $content_type = 'application/x-troff-man';         }
-    elsif ($encoding =~ /gif/i) {                                  $content_type = 'image/gif';                       }
-    elsif ($encoding =~ /jpg|jpeg|jpe|jfif|pjpeg|pjp/i) {          $content_type = 'image/jpeg';                      }
-    elsif ($encoding =~ /tif|tiff/i) {                             $content_type = 'image/tiff';                      }
-    elsif ($encoding =~ /xpm/i) {                                  $content_type = 'image/x-xpixmap';                 }
-    elsif ($encoding =~ /bmp/i) {                                  $content_type = 'image/x-MS-bmp';                  }
-    elsif ($encoding =~ /pcd/i) {                                  $content_type = 'image/x-photo-cd';                }
-    elsif ($encoding =~ /png/i) {                                  $content_type = 'image/png';                       }
-    elsif ($encoding =~ /aif|aiff/i) {                             $content_type = 'audio/x-aiff';                    }
-    elsif ($encoding =~ /wav/i) {                                  $content_type = 'audio/x-wav';                     }
-    elsif ($encoding =~ /mp2|mp3|mpa/i) {                          $content_type = 'audio/x-mpeg';                    }
-    elsif ($encoding =~ /ra$|ram/i) {                              $content_type = 'audio/x-pn-realaudio';            }
-    elsif ($encoding =~ /mpeg|mpg/i) {                             $content_type = 'video/mpeg';                      }
-    elsif ($encoding =~ /mov|qt$/i) {                              $content_type = 'video/quicktime';                 }
-    elsif ($encoding =~ /avi/i) {                                  $content_type = 'video/x-msvideo';                 }
-    elsif ($encoding =~ /zip/i) {                                  $content_type = 'application/x-zip-compressed';    }
-    elsif ($encoding =~ /tar/i) {                                  $content_type = 'application/x-tar';               }
-    elsif ($encoding =~ /jar/i) {                                  $content_type = 'application/java-archive';        }
-    elsif ($encoding =~ /exe|bin/i) {                              $content_type = 'application/octet-stream';        }
-    elsif ($encoding =~ /ppt|pot|ppa|pps|pwz/i) {                  $content_type = 'application/vnd.ms-powerpoint';   }
-    elsif ($encoding =~ /mdb|mda|mde/i) {                          $content_type = 'application/vnd.ms-access';       }
-    elsif ($encoding =~ /xls|xlt|xlm|xld|xla|xlc|xlw|xll/i) {      $content_type = 'application/vnd.ms-excel';        }
-    elsif ($encoding =~ /doc|dot/i) {                              $content_type = 'application/msword';              }
-    elsif ($encoding =~ /rtf/i) {                                  $content_type = 'application/rtf';                 }
-    elsif ($encoding =~ /pdf/i) {                                  $content_type = 'application/pdf';                 }
-    elsif ($encoding =~ /tex/i) {                                  $content_type = 'application/x-tex';               }
-    elsif ($encoding =~ /latex/i) {                                $content_type = 'application/x-latex';             }
-    elsif ($encoding =~ /vcf/i) {                                  $content_type = 'application/x-vcard';             }
-    else { $content_type = 'application/octet-stream';  }
-  
-  
-  ############################
-  ## Process the attachment ##
-  ############################
-    
-    #####################################
-    ## Generate and print MIME headers ##
-    #####################################
-    
-    $y  = "$CRLF--$conf{'delimiter'}$CRLF";
-    $y .= "Content-Type: $content_type;$CRLF";
-    $y .= "        name=\"$filename_name\"$CRLF";
-    $y .= "Content-Transfer-Encoding: base64$CRLF";
-    $y .= "Content-Disposition: attachment; filename=\"$filename_name\"$CRLF";
-    $y .= "$CRLF";
-    print $SERVER $y;
-    
-    
-    ###########################################################
-    ## Convert the file to base64 and print it to the server ##
-    ###########################################################
-    
-    open (FILETOATTACH, $filename) || do {
-        printmsg("ERROR => Opening the file [$filename] for attachment failed with the error: $!", 0);
-        return(1);
-    };
-    binmode(FILETOATTACH);                 ## Hack to make Win32 work
-    
-    my $res = "";
-    my $tmp = "";
-    my $base64 = "";
-    while (<FILETOATTACH>) {               ## Read a line from the (binary) file
-        $res .= $_;
-        
-        ###################################
-        ## Convert binary data to base64 ##
-        ###################################
-        while ($res =~ s/(.{45})//s) {         ## Get 45 bytes from the binary string
-            $tmp = substr(pack('u', $&), 1);   ## Convert the binary to uuencoded text
-            chop($tmp);
-            $tmp =~ tr|` -_|AA-Za-z0-9+/|;     ## Translate from uuencode to base64
-            $base64 .= $tmp;
-        }
-        
-        ################################
-        ## Print chunks to the server ##
-        ################################
-        while ($base64 =~ s/(.{76})//s) {
-            print $SERVER "$1$CRLF";
-        }
-      
-    }
-    
-    ###################################
-    ## Encode and send the leftovers ##
-    ###################################
-    my $padding = "";
-    if ( ($res) and (length($res) >= 1) ) {
-        $padding = (3 - length($res) % 3) % 3;  ## Set flag if binary data isn't divisible by 3
-        $res = substr(pack('u', $res), 1);      ## Convert the binary to uuencoded text
-        chop($res);
-        $res =~ tr|` -_|AA-Za-z0-9+/|;          ## Translate from uuencode to base64
-    }
-    
-    ############################
-    ## Fix padding at the end ##
-    ############################
-    $res = $base64 . $res;                               ## Get left overs from above
-    $res =~ s/.{$padding}$/'=' x $padding/e if $padding; ## Fix the end padding if flag (from above) is set
-    if ($res) {
-        while ($res =~ s/(.{1,76})//s) {                 ## Send it to the email server.
-            print $SERVER "$1$CRLF";
-        }
-    }
-    
-    close (FILETOATTACH) || do {
-        printmsg("ERROR - Closing the filehandle for file [$filename] failed with the error: $!", 0);
-        return(2);
-    };
-    
-    ## Return 0 errors
-    return(0);
-
-}
-
-
-
-
-
-
-
-
-
-###############################################################################################
-##  Function:    $string = get_hostname (boot $fqdn)
-##  
-##  Description: Tries really hard to returns the short (or FQDN) hostname of the current
-##               system.  Uses techniques and code from the  Sys-Hostname module.
-##  
-##  Input:       $fqdn     A true value (1) will cause this function to return a FQDN hostname
-##                         rather than a short hostname.
-##  
-##  Output:      Returns a string
-###############################################################################################
-sub get_hostname {
-    ## Assign incoming parameters to variables
-    my ( $fqdn ) = @_;
-    my $hostname = "";
-    
-    ## STEP 1: Get short hostname
-    
-    ## Load Sys::Hostname if it's available
-    eval { require Sys::Hostname; };
-    unless ($@) {
-        $hostname = Sys::Hostname::hostname(); 
-    }
-    
-    ## If that didn't get us a hostname, try a few other things
-    else {
-        ## Windows systems
-        if ($^O !~ /win/i) {
-            if ($ENV{'COMPUTERNAME'}) { $hostname = $ENV{'COMPUTERNAME'}; }
-            if (!$hostname) { $hostname = gethostbyname('localhost'); }
-            if (!$hostname) { chomp($hostname = `hostname 2> NUL`) };
-        }
-        
-        ## Unix systems
-        else {
-            local $ENV{PATH} = '/usr/bin:/bin:/usr/sbin:/sbin';  ## Paranoia
-            
-            ## Try the environment first (Help!  What other variables could/should I be checking here?)
-            if ($ENV{'HOSTNAME'}) { $hostname = $ENV{'HOSTNAME'}; }
-            
-            ## Try the hostname command
-            eval { local $SIG{__DIE__}; local $SIG{CHLD}; $hostname = `hostname 2>/dev/null`; chomp($hostname); } ||
-            
-            ## Try POSIX::uname(), which strictly can't be expected to be correct
-            eval { local $SIG{__DIE__}; require POSIX; $hostname = (POSIX::uname())[1]; } ||
-            
-            ## Try the uname command
-            eval { local $SIG{__DIE__}; $hostname = `uname -n 2>/dev/null`; chomp($hostname); };
-            
-        }
-        
-        ## If we can't find anything else, return ""
-        if (!$hostname) {
-            print "WARNING => No hostname could be determined, please specify one with -o fqdn=FQDN option!\n";
-            return("unknown");
-        }
-    }
-    
-    ## Return the short hostname
-    unless ($fqdn) {
-        $hostname =~ s/\..*//;
-        return(lc($hostname));
-    }
-    
-    ## STEP 2: Determine the FQDN
-    
-    ## First, if we already have one return it.
-    if ($hostname =~ /\w\.\w/) { return(lc($hostname)); }
-    
-    ## Next try using 
-    eval { $fqdn = (gethostbyname($hostname))[0]; };
-    if ($fqdn) { return(lc($fqdn)); }
-    return(lc($hostname));
-}
-
-
-
-
-
-
-
-
-###############################################################################################
-##  Function:    printmsg (string $message, int $level)
-##
-##  Description: Handles all messages - printing them to the screen only if the messages
-##               $level is >= the global debug level.  If $conf{'logFile'} is defined it
-##               will also log the message to that file.
-##
-##  Input:       $message          A message to be printed, logged, etc.
-##               $level            The debug level of the message. If
-##                                 not defined 0 will be assumed.  0 is
-##                                 considered a normal message, 1 and 
-##                                 higher is considered a debug message.
-##  
-##  Output:      Prints to STDOUT
-##
-##  Assumptions: $conf{'hostname'} should be the name of the computer we're running on.
-##               $conf{'stdout'} should be set to 1 if you want to print to stdout
-##               $conf{'logFile'} should be a full path to a log file if you want that
-##               $conf{'debug'} should be an integer between 0 and 10.
-##
-##  Example:     printmsg("WARNING: We believe in generic error messages... NOT!", 0);
-###############################################################################################
-sub printmsg {
-    ## Assign incoming parameters to variables
-    my ( $message, $level ) = @_;
-    
-    ## Make sure input is sane
-    $level = 0 if (!defined($level));
-    $message =~ s/\s+$//sgo;
-    $message =~ s/\r?\n/, /sgo;
-    
-    ## Continue only if the debug level of the program is >= message debug level.
-    if ($conf{'debug'} >= $level) {
-        
-        ## Get the date in the format: Dec  3 11:14:04
-        my ($sec, $min, $hour, $mday, $mon) = localtime();
-        $mon = ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec')[$mon];
-        my $date = sprintf("%s %02d %02d:%02d:%02d", $mon, $mday, $hour, $min, $sec);
-        
-        ## Print to STDOUT always if debugging is enabled, or if conf{stdout} is true.
-        if ( ($conf{'debug'} >= 1) or ($conf{'stdout'} == 1) ) {
-            print "$date $conf{'hostname'} $conf{'programName'}\[$$\]: $message\n";
-        }
-        
-        ## Print to the log file if $conf{'logging'} is true
-        if ($conf{'logFile'}) {
-            if (openLogFile($conf{'logFile'})) { $conf{'logFile'} = ""; printmsg("ERROR => Opening the file [$conf{'logFile'}] for appending returned the error: $!", 1); }
-            print LOGFILE "$date $conf{'hostname'} $conf{'programName'}\[$$\]: $message\n";
-        }
-        
-    }
-    
-    ## Return 0 errors
-    return(0);
-}
-
-
-
-
-
-
-
-
-
-
-
-
-###############################################################################################
-## FUNCTION:
-##   openLogFile ( $filename )
-## 
-## 
-## DESCRIPTION: 
-##   Opens the file $filename and attaches it to the filehandle "LOGFILE".  Returns 0 on success
-##   and non-zero on failure.  Error codes are listed below, and the error message gets set in
-##   global variable $!.
-##   
-##   
-## Example:
-##   openFile ("/var/log/sendEmail.log");
-##
-###############################################################################################
-sub openLogFile {
-    ## Get the incoming filename
-    my $filename = $_[0];
-    
-    ## Make sure our file exists, and if the file doesn't exist then create it
-    if ( ! -f $filename ) {
-        print STDERR "NOTICE: The log file [$filename] does not exist.  Creating it now with mode [0600].\n" if ($conf{'stdout'});
-        open (LOGFILE, ">>$filename");
-        close LOGFILE;
-        chmod (0600, $filename);
-    }
-    
-    ## Now open the file and attach it to a filehandle
-    open (LOGFILE,">>$filename") or return (1);
-    
-    ## Put the file into non-buffering mode
-    select LOGFILE;
-    $| = 1;
-    select STDOUT;
-    
-    ## Return success
-    return(0);
-}
-
-
-
-
-
-
-
-
-###############################################################################################
-##  Function:    read_file (string $filename)
-##  
-##  Description: Reads the contents of a file and returns a two part array:
-##               ($status, $file-contents)
-##               $status is 0 on success, non-zero on error.
-##               
-##  Example:     ($status, $file) = read_file("/etc/passwd");
-###############################################################################################
-sub read_file {
-    my ( $filename ) = @_;
-    
-    ## If the value specified is a file, load the file's contents
-    if ( (-e $filename and -r $filename) ) {
-        my $FILE;
-        if(!open($FILE, ' ' . $filename)) {
-            return((1, ""));
-        }
-        my $file = '';
-        while (<$FILE>) {
-            $file .= $_;
-        }
-        ## Strip an ending \r\n
-        $file =~ s/\r?\n$//os;
-    }
-    return((1, ""));
-}
-
-
-
-
-
-
-
-
-
-###############################################################################################
-##  Function:    quit (string $message, int $errorLevel)
-##  
-##  Description: Exits the program, optionally printing $message.  It 
-##               returns an exit error level of $errorLevel to the 
-##               system  (0 means no errors, and is assumed if empty.)
-##
-##  Example:     quit("Exiting program normally", 0);
-###############################################################################################
-sub quit {
-    my ( $message, $errorLevel ) = @_;
-    $errorLevel = 0 if (!defined($errorLevel));
-    
-    ## Print exit message
-    if ($message) { 
-        printmsg($message, 0);
-    }
-    
-    ## Exit
-    exit($errorLevel);
-}
-
-
-
-
-
-
-
-
-
-
-
-
-###############################################################################################
-## Function:    help ()
-##
-## Description: For all those newbies ;)
-##              Prints a help message and exits the program.
-##
-###############################################################################################
-sub help {
-exit(1) if (!$conf{'stdout'});
-print <<EOM;
-
-${colorBold}$conf{'programName'}-$conf{'version'} by $conf{'authorName'} <$conf{'authorEmail'}>${colorNoBold}
-
-Synopsis:  $conf{'programName'} -f ADDRESS [options]
-
-  ${colorRed}Required:${colorNormal}
-    -f ADDRESS                from (sender) email address
-    * At least one recipient required via -t, -cc, or -bcc
-    * Message body required via -m, STDIN, or -o message-file=FILE
-
-  ${colorGreen}Common:${colorNormal}
-    -t ADDRESS [ADDR ...]     to email address(es)
-    -u SUBJECT                message subject
-    -m MESSAGE                message body
-    -s SERVER[:PORT]          smtp mail relay, default is $conf{'server'}:$conf{'port'}
-
-  ${colorGreen}Optional:${colorNormal}
-    -a   FILE [FILE ...]      file attachment(s)
-    -cc  ADDRESS [ADDR ...]   cc  email address(es)
-    -bcc ADDRESS [ADDR ...]   bcc email address(es)
-    -xu  USERNAME             username for SMTP authentication
-    -xp  PASSWORD             password for SMTP authentication
-
-  ${colorGreen}Paranormal:${colorNormal}
-    -b BINDADDR[:PORT]        local host bind address
-    -l LOGFILE                log to the specified file
-    -v                        verbosity, use multiple times for greater effect
-    -q                        be quiet (i.e. no STDOUT output)
-    -o NAME=VALUE             advanced options, for details try: --help misc
-        -o message-content-type=<auto|text|html>
-        -o message-file=FILE         -o message-format=raw
-        -o message-header=HEADER     -o message-charset=CHARSET
-        -o reply-to=ADDRESS          -o timeout=SECONDS
-        -o username=USERNAME         -o password=PASSWORD
-        -o tls=<auto|yes|no>         -o fqdn=FQDN
-
-
-  ${colorGreen}Help:${colorNormal}
-    --help                    the helpful overview you're reading now
-    --help addressing         explain addressing and related options
-    --help message            explain message body input and related options
-    --help networking         explain -s, -b, etc
-    --help output             explain logging and other output options
-    --help misc               explain -o options, TLS, SMTP auth, and more
-
-EOM
-exit(1);
-}
-
-
-
-
-
-
-
-
-
-###############################################################################################
-## Function:    helpTopic ($topic)
-##
-## Description: For all those newbies ;) 
-##              Prints a help message and exits the program.
-## 
-###############################################################################################
-sub helpTopic {
-    exit(1) if (!$conf{'stdout'});
-    my ($topic) = @_;
-
-    CASE: {
-
-
-
-
-## ADDRESSING
-        ($topic eq 'addressing') && do {
-            print <<EOM;
-
-${colorBold}ADDRESSING DOCUMENTATION${colorNormal}
-
-${colorGreen}Addressing Options${colorNormal}
-Options related to addressing:
-    -f   ADDRESS
-    -t   ADDRESS [ADDRESS ...]
-    -cc  ADDRESS [ADDRESS ...]
-    -bcc ADDRESS [ADDRESS ...]
-    -o   reply-to=ADDRESS
-    
--f ADDRESS
-    This required option specifies who the email is from, I.E. the sender's
-    email address.
-    
--t ADDRESS [ADDRESS ...]
-    This option specifies the primary recipient(s).  At least one recipient
-    address must be specified via the -t, -cc. or -bcc options.
-
--cc ADDRESS [ADDRESS ...]
-    This option specifies the "carbon copy" recipient(s).  At least one 
-    recipient address must be specified via the -t, -cc. or -bcc options.
-
--bcc ADDRESS [ADDRESS ...]
-    This option specifies the "blind carbon copy" recipient(s).  At least
-    one recipient address must be specified via the -t, -cc. or -bcc options.
-
--o reply-to=ADDRESS
-    This option specifies that an optional "Reply-To" address should be
-    written in the email's headers.
-    
-
-${colorGreen}Email Address Syntax${colorNormal}
-Email addresses may be specified in one of two ways:
-    Full Name:     "John Doe <john.doe\@gmail.com>"
-    Just Address:  "john.doe\@gmail.com"
-
-The "Full Name" method is useful if you want a name, rather than a plain
-email address, to be displayed in the recipient's From, To, or Cc fields
-when they view the message.
-    
-
-${colorGreen}Multiple Recipients${colorNormal}
-The -t, -cc, and -bcc options each accept multiple addresses.  They may be
-specified by separating them by either a white space, comma, or semi-colon
-separated list.  You may also specify the -t, -cc, and -bcc options multiple
-times, each occurance will append the new recipients to the respective list.
-
-Examples:
-(I used "-t" in these examples, but it can be "-cc" or "-bcc" as well)
-
-  * Space separated list:
-    -t jane.doe\@yahoo.com "John Doe <john.doe\@gmail.com>"
-    
-  * Semi-colon separated list:
-    -t "jane.doe\@yahoo.com; John Doe <john.doe\@gmail.com>"
-  * Comma separated list:
-    -t "jane.doe\@yahoo.com, John Doe <john.doe\@gmail.com>"
-  
-  * Multiple -t, -cc, or -bcc options:
-    -t "jane.doe\@yahoo.com" -t "John Doe <john.doe\@gmail.com>"
-  
-
-EOM
-            last CASE;
-        };
-
-
-
-
-
-
-## MESSAGE
-        ($topic eq 'message') && do {
-            print <<EOM;
-
-${colorBold}MESSAGE DOCUMENTATION${colorNormal}
-
-${colorGreen}Message Options${colorNormal}
-Options related to the email message body:
-    -u  SUBJECT
-    -m  MESSAGE
-    -o  message-file=FILE
-    -o  message-content-type=<auto|text|html>
-    -o  message-header=EMAIL HEADER
-    -o  message-charset=CHARSET
-    -o  message-format=raw
-    
--u SUBJECT
-    This option allows you to specify the subject for your email message.
-    It is not required (anymore) that the subject be quoted, although it 
-    is recommended.  The subject will be read until an argument starting
-    with a hyphen (-) is found.  
-    Examples:
-      -u "Contact information while on vacation"
-      -u New Microsoft vulnerability discovered
-
--m MESSAGE
-    This option is one of three methods that allow you to specify the message
-    body for your email.  The message may be specified on the command line
-    with this -m option, read from a file with the -o message-file=FILE
-    option, or read from STDIN if neither of these options are present.
-    
-    It is not required (anymore) that the message be quoted, although it is
-    recommended.  The message will be read until an argument starting with a
-    hyphen (-) is found.
-    Examples:
-      -m "See you in South Beach, Hawaii.  -Todd"
-      -m Please ensure that you upgrade your systems right away
-    
-    Multi-line message bodies may be specified with the -m option by putting
-    a "\\n" into the message.  Example:
-      -m "This is line 1.\\nAnd this is line 2."
-    
-    HTML messages are supported, simply begin your message with "<html>" and
-    sendEmail will properly label the mime header so MUAs properly render
-    the message.  It is currently not possible without "-o message-format=raw"
-    to send a message with both text and html parts with sendEmail.
-
--o message-file=FILE
-    This option is one of three methods that allow you to specify the message
-    body for your email.  To use this option simply specify a text file
-    containing the body of your email message. Examples:
-      -o message-file=/root/message.txt
-      -o message-file="C:\\Program Files\\output.txt"
-
--o message-content-type=<auto|text|html>
-    This option allows you to specify the content-type of the email. If your
-    email message is an html message but is being displayed as a text message
-    just add "-o message-content-type=html" to the command line to force it
-    to display as an html message. This actually just changes the Content-Type:
-    header. Advanced users will be happy to know that if you specify anything
-    other than the three options listed above it will use that as the vaule
-    for the Content-Type header.
-
--o message-header=EMAIL HEADER
-    This option allows you to specify additional email headers to be included.
-    To add more than one message header simply use this option on the command
-    line more than once.  If you specify a message header that sendEmail would
-    normally generate the one you specified will be used in it's place.
-    Do not use this unless you know what you are doing!
-    Example:
-      To scare a Microsoft Outlook user you may want to try this:
-      -o message-header="X-Message-Flag: Message contains illegal content"
-    Example:
-      To request a read-receipt try this:
-      -o message-header="Disposition-Notification-To: <user\@domain.com>"
-    Example:
-      To set the message priority try this:
-      -o message-header="X-Priority: 1"
-      Priority reference: 1=highest, 2=high, 3=normal, 4=low, 5=lowest
-
--o message-charset=CHARSET
-    This option allows you to specify the character-set for the message body.
-    The default is iso-8859-1.
-
--o message-format=raw
-    This option instructs sendEmail to assume the message (specified with -m,
-    read from STDIN, or read from the file specified in -o message-file=FILE)
-    is already a *complete* email message.  SendEmail will not generate any
-    headers and will transmit the message as-is to the remote SMTP server.
-    Due to the nature of this option the following command line options will
-    be ignored when this one is used:
-      -u SUBJECT
-      -o message-header=EMAIL HEADER
-      -o message-charset=CHARSET
-      -a ATTACHMENT
-      
-
-${colorGreen}The Message Body${colorNormal}
-The email message body may be specified in one of three ways:
- 1) Via the -m MESSAGE command line option.
-    Example:
-      -m "This is the message body"
-      
- 2) By putting the message body in a file and using the -o message-file=FILE
-    command line option.
-    Example:
-      -o message-file=/root/message.txt
-      
- 3) By piping the message body to sendEmail when nither of the above command
-    line options were specified.
-    Example:
-      grep "ERROR" /var/log/messages | sendEmail -t you\@domain.com ...
-
-If the message body begins with "<html>" then the message will be treated as
-an HTML message and the MIME headers will be written so that a HTML capable
-email client will display the message in it's HTML form.
-Any of the above methods may be used with the -o message-format=raw option 
-to deliver an already complete email message.
-
-
-EOM
-            last CASE;
-        };
-
-
-
-
-
-
-## MISC
-        ($topic eq 'misc') && do {
-            print <<EOM;
-
-${colorBold}MISC DOCUMENTATION${colorNormal}
-
-${colorGreen}Misc Options${colorNormal}
-Options that don't fit anywhere else:
-    -a   ATTACHMENT [ATTACHMENT ...]
-    -xu  USERNAME
-    -xp  PASSWORD
-    -o   username=USERNAME
-    -o   password=PASSWORD
-    -o   tls=<auto|yes|no>
-    -o   timeout=SECONDS
-    -o   fqdn=FQDN
-
--a   ATTACHMENT [ATTACHMENT ...]
-    This option allows you to attach any number of files to your email message.
-    To specify more than one attachment, simply separate each filename with a
-    space.  Example: -a file1.txt file2.txt file3.txt
-
--xu  USERNAME
-    Alias for -o username=USERNAME
-
--xp  PASSWORD
-    Alias for -o password=PASSWORD
-
--o   username=USERNAME (synonym for -xu)
-    These options allow specification of a username to be used with SMTP
-    servers that require authentication.  If a username is specified but a
-    password is not, you will be prompted to enter one at runtime.
-
--o   password=PASSWORD (synonym for -xp)
-    These options allow specification of a password to be used with SMTP
-    servers that require authentication.  If a username is specified but a
-    password is not, you will be prompted to enter one at runtime. 
-
--o   tls=<auto|yes|no>
-    This option allows you to specify if TLS (SSL for SMTP) should be enabled
-    or disabled.  The default, auto, will use TLS automatically if your perl
-    installation has the IO::Socket::SSL and Net::SSLeay modules available,
-    and if the remote SMTP server supports TLS.  To require TLS for message
-    delivery set this to yes.  To disable TLS support set this to no.  A debug
-    level of one or higher will reveal details about the status of TLS.
-
--o   timeout=SECONDS
-    This option sets the timeout value in seconds used for all network reads,
-    writes, and a few other things.
-
--o   fqdn=FQDN
-    This option sets the Fully Qualified Domain Name used during the initial
-    SMTP greeting.  Normally this is automatically detected, but in case you
-    need to manually set it for some reason or get a warning about detection
-    failing, you can use this to override the default.
-
-
-EOM
-            last CASE;
-        };
-
-
-
-
-
-
-## NETWORKING
-        ($topic eq 'networking') && do {
-            print <<EOM;
-
-${colorBold}NETWORKING DOCUMENTATION${colorNormal}
-
-${colorGreen}Networking Options${colorNormal}
-Options related to networking:
-    -s   SERVER[:PORT]
-    -b   BINDADDR[:PORT]
-    -o   tls=<auto|yes|no>
-    -o   timeout=SECONDS
-
--s SERVER[:PORT]
-    This option allows you to specify the SMTP server sendEmail should
-    connect to to deliver your email message to.  If this option is not
-    specified sendEmail will try to connect to localhost:25 to deliver
-    the message.  THIS IS MOST LIKELY NOT WHAT YOU WANT, AND WILL LIKELY
-    FAIL unless you have a email server (commonly known as an MTA) running
-    on your computer!
-    Typically you will need to specify your company or ISP's email server.
-    For example, if you use CableOne you will need to specify:
-       -s mail.cableone.net
-    If you have your own email server running on port 300 you would
-    probably use an option like this:
-       -s myserver.mydomain.com:300
-    If you're a GMail user try:
-       -s smtp.gmail.com:587 -xu me\@gmail.com -xp PASSWD
-
--b BINDADDR[:PORT]
-    This option allows you to specify the local IP address (and optional
-    tcp port number) for sendEmail to bind to when connecting to the remote
-    SMTP server.  This useful for people who need to send an email from a
-    specific network interface or source address and are running sendEmail on
-    a firewall or other host with several network interfaces.
-
--o   tls=<auto|yes|no>
-    This option allows you to specify if TLS (SSL for SMTP) should be enabled
-    or disabled.  The default, auto, will use TLS automatically if your perl
-    installation has the IO::Socket::SSL and Net::SSLeay modules available,
-    and if the remote SMTP server supports TLS.  To require TLS for message
-    delivery set this to yes.  To disable TLS support set this to no.  A debug
-    level of one or higher will reveal details about the status of TLS.
-
--o timeout=SECONDS
-    This option sets the timeout value in seconds used for all network reads,
-    writes, and a few other things.
-
-    
-EOM
-            last CASE;
-        };
-
-
-
-
-
-
-## OUTPUT
-        ($topic eq 'output') && do {
-            print <<EOM;
-
-${colorBold}OUTPUT DOCUMENTATION${colorNormal}
-
-${colorGreen}Output Options${colorNormal}
-Options related to output:
-    -l LOGFILE
-    -v
-    -q
-
--l LOGFILE
-    This option allows you to specify a log file to append to.  Every message
-    that is displayed to STDOUT is also written to the log file.  This may be
-    used in conjunction with -q and -v.
-
--q
-    This option tells sendEmail to disable printing to STDOUT.  In other
-    words nothing will be printed to the console.  This does not affect the
-    behavior of the -l or -v options.
-
--v
-    This option allows you to increase the debug level of sendEmail.  You may
-    either use this option more than once, or specify more than one v at a
-    time to obtain a debug level higher than one.  Examples:
-        Specifies a debug level of 1:  -v
-        Specifies a debug level of 2:  -vv
-        Specifies a debug level of 2:  -v -v
-    A debug level of one is recommended when doing any sort of debugging.  
-    At that level you will see the entire SMTP transaction (except the
-    body of the email message), and hints will be displayed for most
-    warnings and errors.  The highest debug level is three.
-
-
-EOM
-            last CASE;
-        };
-
-        ## Unknown option selected!
-        quit("ERROR => The help topic specified is not valid!", 1);
-    };
-
-exit(1);
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-#############################
-##                          ##
-##      MAIN PROGRAM         ##
-##                          ##
-#############################
-
-
-## Initialize
-initialize();
-
-## Process Command Line
-processCommandLine();
-$conf{'alarm'} = $opt{'timeout'};
-
-## Abort program after $conf{'alarm'} seconds to avoid infinite hangs
-alarm($conf{'alarm'}) if ($^O !~ /win/i);  ## alarm() doesn't work in win32
-
-
-
-
-###################################################
-##  Read $message from STDIN if -m was not used  ##
-###################################################
-
-if (!($message)) {
-    ## Read message body from a file specified with -o message-file=
-    if ($opt{'message-file'}) {
-        if (! -e $opt{'message-file'}) {
-            printmsg("ERROR => Message body file specified [$opt{'message-file'}] does not exist!", 0);
-            printmsg("HINT => 1) check spelling of your file; 2) fully qualify the path; 3) doubble quote it", 1);
-            quit("", 1);
-        }
-        if (! -r $opt{'message-file'}) {
-            printmsg("ERROR => Message body file specified can not be read due to restricted permissions!", 0);
-            printmsg("HINT => Check permissions on file specified to ensure it can be read", 1);
-            quit("", 1);
-        }
-        if (!open(MFILE, "< " . $opt{'message-file'})) {
-            printmsg("ERROR => Error opening message body file [$opt{'message-file'}]: $!", 0);
-            quit("", 1);
-        }
-        while (<MFILE>) {
-            $message .= $_;
-        }
-        close(MFILE);
-    }
-    
-    ## Read message body from STDIN
-    else {
-        alarm($conf{'alarm'}) if ($^O !~ /win/i);  ## alarm() doesn't work in win32
-        if ($conf{'stdout'}) {
-            print "Reading message body from STDIN because the '-m' option was not used.\n";
-            print "If you are manually typing in a message:\n";
-            print "  - First line must be received within $conf{'alarm'} seconds.\n" if ($^O !~ /win/i);
-            print "  - End manual input with a CTRL-D on its own line.\n\n" if ($^O !~ /win/i);
-            print "  - End manual input with a CTRL-Z on its own line.\n\n" if ($^O =~ /win/i);
-        }
-        while (<STDIN>) {                 ## Read STDIN into $message
-            $message .= $_;
-            alarm(0) if ($^O !~ /win/i);  ## Disable the alarm since at least one line was received
-        }
-        printmsg("Message input complete.", 0);
-    }
-}
-
-## Replace bare LF's with CRLF's (\012 should always have \015 with it)
-$message =~ s/(\015)?(\012|$)/\015\012/g;
-
-## Replace bare CR's with CRLF's (\015 should always have \012 with it)
-$message =~ s/(\015)(\012|$)?/\015\012/g;
-
-## Check message for bare periods and encode them
-$message =~ s/(^|$CRLF)(\.{1})($CRLF|$)/$1.$2$3/g;
-
-## Get the current date for the email header
-my ($sec,$min,$hour,$mday,$mon,$year,$day) = gmtime();
-$year += 1900; $mon = return_month($mon); $day = return_day($day);
-my $date = sprintf("%s, %s %s %d %.2d:%.2d:%.2d %s",$day, $mday, $mon, $year, $hour, $min, $sec, $conf{'timezone'});
-
-
-
-
-##################################
-##  Connect to the SMTP server  ##
-##################################
-printmsg("DEBUG => Connecting to $conf{'server'}:$conf{'port'}", 1);
-$SIG{'ALRM'} = sub { 
-    printmsg("ERROR => Timeout while connecting to $conf{'server'}:$conf{'port'}  There was no response after $conf{'alarm'} seconds.", 0); 
-    printmsg("HINT => Try specifying a different mail relay with the -s option.", 1);
-    quit("", 1);
-};
-alarm($conf{'alarm'}) if ($^O !~ /win/i);  ## alarm() doesn't work in win32;
-$SERVER = IO::Socket::INET->new( PeerAddr  => $conf{'server'},
-                                 PeerPort  => $conf{'port'},
-                                 LocalAddr => $conf{'bindaddr'},
-                                 Proto     => 'tcp',
-                                 Autoflush => 1,
-                                 timeout   => $conf{'alarm'},
-);
-alarm(0) if ($^O !~ /win/i);  ## alarm() doesn't work in win32;
-
-## Make sure we got connected
-if ( (!$SERVER) or (!$SERVER->opened()) ) {
-    printmsg("ERROR => Connection attempt to $conf{'server'}:$conf{'port'} failed: $@", 0);
-    printmsg("HINT => Try specifying a different mail relay with the -s option.", 1);
-    quit("", 1);
-}
-
-## Save our IP address for later
-$conf{'ip'} = $SERVER->sockhost();
-printmsg("DEBUG => My IP address is: $conf{'ip'}", 1);
-
-
-
-
-
-
-
-#########################
-##  Do the SMTP Dance  ##
-#########################
-
-## Read initial greeting to make sure we're talking to a live SMTP server
-if (SMTPchat()) { quit($conf{'error'}, 1); }
-
-## We're about to use $opt{'fqdn'}, make sure it isn't empty
-if (!$opt{'fqdn'}) {
-    ## Ok, that means we couldn't get a hostname, how about using the IP address for the HELO instead
-    $opt{'fqdn'} = "[" . $conf{'ip'} . "]";
-}
-
-## EHLO
-if (SMTPchat('EHLO ' . $opt{'fqdn'}))   {
-    printmsg($conf{'error'}, 0);
-    printmsg("NOTICE => EHLO command failed, attempting HELO instead");
-    if (SMTPchat('HELO ' . $opt{'fqdn'})) { quit($conf{'error'}, 1); }
-    if ( $opt{'username'} and $opt{'password'} ) {
-        printmsg("WARNING => The mail server does not support SMTP authentication!", 0);
-    }
-}
-else {
-    
-    ## Determin if the server supports TLS
-    if ($conf{'SMTPchat_response'} =~ /STARTTLS/) {
-        $conf{'tls_server'} = 1;
-        printmsg("DEBUG => The remote SMTP server supports TLS :)", 2);
-    }
-    else {
-        $conf{'tls_server'} = 0;
-        printmsg("DEBUG => The remote SMTP server does NOT support TLS :(", 2);
-    }
-    
-    ## Start TLS if possible
-    if ($conf{'tls_server'} == 1 and $conf{'tls_client'} == 1 and $opt{'tls'} =~ /^(yes|auto)$/) {
-        printmsg("DEBUG => Starting TLS", 2);
-        if (SMTPchat('STARTTLS')) { quit($conf{'error'}, 1); }
-        if (! IO::Socket::SSL->start_SSL($SERVER, SSL_version => 'SSLv23:!SSLv3:!SSLv2', , SSL_verify_mode => 0)) {
-            quit("ERROR => TLS setup failed: " . IO::Socket::SSL::errstr(), 1);
-        }
-        printmsg("DEBUG => TLS: Using cipher: ". $SERVER->get_cipher(), 3);
-        printmsg("DEBUG => TLS session initialized :)", 1);
-        
-        ## Restart our SMTP session
-        if (SMTPchat('EHLO ' . $opt{'fqdn'})) { quit($conf{'error'}, 1); }
-    }
-    elsif ($opt{'tls'} eq 'yes' and $conf{'tls_server'} == 0) {
-        quit("ERROR => TLS not possible! Remote SMTP server, $conf{'server'},  does not support it.", 1);
-    }
-    
-    
-    ## Do SMTP Auth if required
-    if ( $opt{'username'} and $opt{'password'} ) {
-        if ($conf{'SMTPchat_response'} !~ /AUTH\s/) {
-            printmsg("NOTICE => Authentication not supported by the remote SMTP server!", 0);
-        }
-        else {
-            my $auth_succeeded = 0;
-            my $mutual_method = 0;
-            
-            # ## SASL CRAM-MD5 authentication method
-            # if ($conf{'SMTPchat_response'} =~ /\bCRAM-MD5\b/i) {
-            #     printmsg("DEBUG => SMTP-AUTH: Using CRAM-MD5 authentication method", 1);
-            #     if (SMTPchat('AUTH CRAM-MD5')) { quit($conf{'error'}, 1); }
-            #     
-            #     ## FIXME!!
-            #     
-            #     printmsg("DEBUG => User authentication was successful", 1);
-            # }
-            
-            ## SASL LOGIN authentication method
-            if ($auth_succeeded == 0 and $conf{'SMTPchat_response'} =~ /\bLOGIN\b/i) {
-                $mutual_method = 1;
-                printmsg("DEBUG => SMTP-AUTH: Using LOGIN authentication method", 1);
-                if (!SMTPchat('AUTH LOGIN')) {
-                    if (!SMTPchat(base64_encode($opt{'username'}))) {
-                        if (!SMTPchat(base64_encode($opt{'password'}))) {
-                            $auth_succeeded = 1;
-                            printmsg("DEBUG => User authentication was successful (Method: LOGIN)", 1);
-                        }
-                    }
-                }
-                if ($auth_succeeded == 0) {
-                    printmsg("DEBUG => SMTP-AUTH: LOGIN authenticaion failed.", 1);
-                }
-            }
-            
-            ## SASL PLAIN authentication method
-            if ($auth_succeeded == 0 and $conf{'SMTPchat_response'} =~ /\bPLAIN\b/i) {
-                $mutual_method = 1;
-                printmsg("DEBUG => SMTP-AUTH: Using PLAIN authentication method", 1);
-                if (SMTPchat('AUTH PLAIN ' . base64_encode("$opt{'username'}\0$opt{'username'}\0$opt{'password'}"))) {
-                    printmsg("DEBUG => SMTP-AUTH: PLAIN authenticaion failed.", 1);
-                }
-                else {
-                    $auth_succeeded = 1;
-                    printmsg("DEBUG => User authentication was successful (Method: PLAIN)", 1);
-                }
-            }
-            
-            ## If none of the authentication methods supported by sendEmail were supported by the server, let the user know
-            if ($mutual_method == 0) {
-                printmsg("WARNING => SMTP-AUTH: No mutually supported authentication methods available", 0);
-            }
-            
-            ## If we didn't get authenticated, log an error message and exit
-            if ($auth_succeeded == 0) {
-                quit("ERROR => ERROR => SMTP-AUTH: Authentication to $conf{'server'}:$conf{'port'} failed.", 1);
-            }
-        }
-    }
-}
-
-## MAIL FROM
-if (SMTPchat('MAIL FROM:<' .(returnAddressParts($from))[1]. '>')) { quit($conf{'error'}, 1); }
-
-## RCPT TO
-my $oneRcptAccepted = 0;
-foreach my $rcpt (@to, @cc, @bcc) {
-    my ($name, $address) = returnAddressParts($rcpt);
-    if (SMTPchat('RCPT TO:<' . $address . '>')) {
-        printmsg("WARNING => The recipient <$address> was rejected by the mail server, error follows:", 0);
-        $conf{'error'} =~ s/^ERROR/WARNING/o;
-        printmsg($conf{'error'}, 0);
-    }
-    elsif ($oneRcptAccepted == 0) {
-        $oneRcptAccepted = 1;
-    }
-}
-## If no recipients were accepted we need to exit with an error.
-if ($oneRcptAccepted == 0) {
-    quit("ERROR => Exiting. No recipients were accepted for delivery by the mail server.", 1);
-}
-
-## DATA
-if (SMTPchat('DATA')) { quit($conf{'error'}, 1); }
-
-
-###############################
-##  Build and send the body  ##
-###############################
-printmsg("INFO => Sending message body",1);
-
-## If the message-format is raw just send the message as-is.
-if ($opt{'message-format'} =~ /^raw$/i) {
-    print $SERVER $message;
-}
-
-## If the message-format isn't raw, then build and send the message,
-else {
-    
-    ## Message-ID: <MessageID>
-    if ($opt{'message-header'} !~ /^Message-ID:/iom) {
-        $header .= 'Message-ID: <' . $conf{'Message-ID'} . '@' . $conf{'hostname'} . '>' . $CRLF;
-    }
-    
-    ## From: "Name" <address@domain.com> (the pointless test below is just to keep scoping correct)
-    if ($from and $opt{'message-header'} !~ /^From:/iom) {
-        my ($name, $address) = returnAddressParts($from);
-        $header .= 'From: "' . $name . '" <' . $address . '>' . $CRLF;
-    }
-    
-    ## Reply-To: 
-    if ($opt{'reply-to'} and $opt{'message-header'} !~ /^Reply-To:/iom) {
-        my ($name, $address) = returnAddressParts($opt{'reply-to'});
-        $header .= 'Reply-To: "' . $name . '" <' . $address . '>' . $CRLF;
-    }
-    
-    ## To: "Name" <address@domain.com>
-    if ($opt{'message-header'} =~ /^To:/iom) {
-        ## The user put the To: header in via -o message-header - dont do anything
-    }
-    elsif (scalar(@to) > 0) {
-        $header .= "To:";
-        for (my $a = 0; $a < scalar(@to); $a++) {
-            my $msg = "";
-            
-            my ($name, $address) = returnAddressParts($to[$a]);
-            $msg = " \"$name\" <$address>";
-            
-            ## If we're not on the last address add a comma to the end of the line.
-            if (($a + 1) != scalar(@to)) {
-                $msg .= ",";
-            }
-            
-            $header .= $msg . $CRLF;
-        }
-    }
-    ## We always want a To: line so if the only recipients were bcc'd they don't see who it was sent to
-    else {
-        $header .= "To: \"Undisclosed Recipients\" <>$CRLF";
-    }
-    
-    if (scalar(@cc) > 0 and $opt{'message-header'} !~ /^Cc:/iom) {
-        $header .= "Cc:";
-        for (my $a = 0; $a < scalar(@cc); $a++) {
-            my $msg = "";
-            
-            my ($name, $address) = returnAddressParts($cc[$a]);
-            $msg = " \"$name\" <$address>";
-            
-            ## If we're not on the last address add a comma to the end of the line.
-            if (($a + 1) != scalar(@cc)) {
-                $msg .= ",";
-            }
-            
-            $header .= $msg . $CRLF;
-        }
-    }
-    
-    if ($opt{'message-header'} !~ /^Subject:/iom) {
-        $header .= 'Subject: ' . $subject . $CRLF;                   ## Subject
-    }
-    if ($opt{'message-header'} !~ /^Date:/iom) {
-        $header .= 'Date: ' . $date . $CRLF;                         ## Date
-    }
-    if ($opt{'message-header'} !~ /^X-Mailer:/iom) {
-        $header .= 'X-Mailer: sendEmail-'.$conf{'version'}.$CRLF;    ## X-Mailer
-    }
-    ## I wonder if I should put this in by default?
-    # if ($opt{'message-header'} !~ /^X-Originating-IP:/iom) {
-    #     $header .= 'X-Originating-IP: ['.$conf{'ip'}.']'.$CRLF;      ## X-Originating-IP
-    # }
-    
-    ## Encode all messages with MIME.
-    if ($opt{'message-header'} !~ /^MIME-Version:/iom) {
-        $header .=  "MIME-Version: 1.0$CRLF";
-    }
-    if ($opt{'message-header'} !~ /^Content-Type:/iom) {
-        my $content_type = 'multipart/mixed';
-        if (scalar(@attachments) == 0) { $content_type = 'multipart/related'; }
-        $header .= "Content-Type: $content_type; boundary=\"$conf{'delimiter'}\"$CRLF";
-    }
-    
-    ## Send additional message header line(s) if specified
-    if ($opt{'message-header'}) {
-        $header .= $opt{'message-header'};
-    }
-    
-    ## Send the message header to the server
-    print $SERVER $header . $CRLF;
-    
-    ## Start sending the message body to the server
-    print $SERVER "This is a multi-part message in MIME format. To properly display this message you need a MIME-Version 1.0 compliant Email program.$CRLF";
-    print $SERVER "$CRLF";
-    
-    
-    ## Send message body
-    print $SERVER "--$conf{'delimiter'}$CRLF";
-    ## Send a message content-type header:
-    ## If the message contains HTML...
-    if ($opt{'message-content-type'} eq 'html' or ($opt{'message-content-type'} eq 'auto' and $message =~ /^\s*(<HTML|<!DOCTYPE)/i) ) {
-        printmsg("Setting content-type: text/html", 1);
-        print $SERVER "Content-Type: text/html;$CRLF";
-    }
-    ## Otherwise assume it's plain text...
-    elsif ($opt{'message-content-type'} eq 'text' or $opt{'message-content-type'} eq 'auto') {
-        printmsg("Setting content-type: text/plain", 1);
-        print $SERVER "Content-Type: text/plain;$CRLF";
-    }
-    ## If they've specified their own content-type string...
-    else {
-        printmsg("Setting custom content-type: ".$opt{'message-content-type'}, 1);
-        print $SERVER "Content-Type: ".$opt{'message-content-type'}.";$CRLF";
-    }
-    print $SERVER "        charset=\"" . $opt{'message-charset'} . "\"$CRLF";
-    print $SERVER "Content-Transfer-Encoding: 7bit$CRLF";
-    print $SERVER $CRLF . $message;
-    
-    
-    
-    ## Send Attachemnts
-    if (scalar(@attachments) > 0) {
-        ## Disable the alarm so people on modems can send big attachments
-        alarm(0) if ($^O !~ /win/i);  ## alarm() doesn't work in win32
-        
-        ## Send the attachments
-        foreach my $filename (@attachments) {
-            ## This is check 2, we already checked this above, but just in case...
-            if ( ! -f $filename ) {
-                printmsg("ERROR => The file [$filename] doesn't exist!  Email will be sent, but without that attachment.", 0);
-            }
-            elsif ( ! -r $filename ) {
-                printmsg("ERROR => Couldn't open the file [$filename] for reading: $!   Email will be sent, but without that attachment.", 0);
-            }
-            else {
-                printmsg("DEBUG => Sending the attachment [$filename]", 1);
-                send_attachment($filename);
-            }
-        }
-    }
-    
-    
-    ## End the mime encoded message
-    print $SERVER "$CRLF--$conf{'delimiter'}--$CRLF";  
-}
-
-
-## Tell the server we are done sending the email
-print $SERVER "$CRLF.$CRLF";
-if (SMTPchat()) { quit($conf{'error'}, 1); }
-
-
-
-####################
-#  We are done!!!  #
-####################
-
-## Disconnect from the server (don't SMTPchat(), it breaks when using TLS)
-print $SERVER "QUIT$CRLF";
-close $SERVER;
-
-
-
-
-
-
-#######################################
-##  Generate exit message/log entry  ##
-#######################################
-
-if ($conf{'debug'} or $conf{'logging'}) {
-    printmsg("Generating a detailed exit message", 3);
-    
-    ## Put the message together
-    my $output = "Email was sent successfully!  From: <" . (returnAddressParts($from))[1] . "> ";
-    
-    if (scalar(@to) > 0) {
-        $output .= "To: ";
-        for ($a = 0; $a < scalar(@to); $a++) {
-            $output .= "<" . (returnAddressParts($to[$a]))[1] . "> ";
-        }
-    }
-    if (scalar(@cc) > 0) {
-        $output .= "Cc: ";
-        for ($a = 0; $a < scalar(@cc); $a++) {
-            $output .= "<" . (returnAddressParts($cc[$a]))[1] . "> ";
-        }
-    }
-    if (scalar(@bcc) > 0) {
-        $output .= "Bcc: ";
-        for ($a = 0; $a < scalar(@bcc); $a++) {
-            $output .= "<" . (returnAddressParts($bcc[$a]))[1] . "> ";
-        }
-    }
-    $output .= "Subject: [$subject] " if ($subject);
-    if (scalar(@attachments_names) > 0) { 
-        $output .= "Attachment(s): ";
-        foreach(@attachments_names) {
-            $output .= "[$_] ";
-        }
-    }
-    $output .= "Server: [$conf{'server'}:$conf{'port'}]";
-    
-    
-######################
-#  Exit the program  #
-######################
-    
-    ## Print / Log the detailed message
-    quit($output, 0);
-}
-else {
-    ## Or the standard message
-    quit("Email was sent successfully!", 0);
-}
-
diff --git a/app/static/css/fonts/fld.svg b/app/static/css/fonts/fld.svg
deleted file mode 100644 (file)
index 3cfec0d..0000000
+++ /dev/null
@@ -1,134 +0,0 @@
-<?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="fld" horiz-adv-x="1024">
-<font-face units-per-em="1024" ascent="960" descent="-64" />
-<missing-glyph horiz-adv-x="1024" />
-<glyph unicode="&#x20;" horiz-adv-x="512" d="" />
-<glyph unicode="&#xe900;" glyph-name="season" d="M74.256 571.392v-526.224h860.448v526.224zM0 795.808h204.832v-166.48h170.672v166.48h290.080v-166.48h170.704v166.48h187.712v-819.264h-1024zM708.256 919.52h85.376v-247.52h-85.376zM247.504 919.52h85.328v-247.52h-85.328zM345.109 491.774v-125.272h318.976v125.272l134.141-178.244-134.141-178.259v125.287h-318.976v-125.287l-134.141 178.259z" />
-<glyph unicode="&#xe901;" glyph-name="address" d="M800 832h-480c-0.001 0-0.002 0-0.003 0-70.691 0-127.997-57.306-127.997-127.997 0-0.001 0-0.002 0-0.003v0-512c0-70.692 57.308-128 128-128v0h480c17.673 0 32 14.327 32 32v0 64h-512c-17.673 0-32 14.327-32 32s14.327 32 32 32v0h512v576c0 17.673-14.327 32-32 32v0zM642.012 368.25c0-0.001 0-0.001 0-0.002 0-8.974-7.274-16.248-16.248-16.248-0.001 0-0.003 0-0.004 0h-227.52c-0.001 0-0.003 0-0.004 0-8.974 0-16.248 7.274-16.248 16.248 0 0.001 0 0.001 0 0.002v0 30.918c0.002 11.475 5.947 21.561 14.924 27.348l0.128 0.077 49.947 31.773-4.711 37.672c-11.313 5.176-20.058 14.331-24.579 25.633l-0.113 0.319-3.48 10.437c-0.96 2.477-1.516 5.344-1.516 8.341 0 4.42 1.21 8.558 3.316 12.1l-0.060-0.109v58.58c0 53.105 43.050 96.154 96.154 96.154s96.154-43.050 96.154-96.154v-58.578c2.046-3.433 3.256-7.571 3.256-11.991 0-2.997-0.556-5.864-1.571-8.503l0.055 0.162-3.48-10.437c-4.633-11.621-13.379-20.776-24.396-25.831l-0.295-0.121-4.71-37.672 49.947-31.773c9.106-5.864 15.051-15.95 15.053-27.425v0zM992 320v-96c0-17.673-14.327-32-32-32v0h-64v160h64c17.673 0 32-14.327 32-32v0zM992 544v-96c0-17.673-14.327-32-32-32v0h-64v160h64c17.673 0 32-14.327 32-32v0zM992 768v-96c0-17.673-14.327-32-32-32v0h-64v160h64c17.673 0 32-14.327 32-32v0z" />
-<glyph unicode="&#xe902;" glyph-name="code" d="M684.251 763.073l339.893-251.789v-131.2l-339.893-250.662v136.459l222.52 178.772v2.121l-222.52 178.783zM339.941 763.073v-136.519l-222.478-178.771v-2.063l222.478-178.84v-137.458l-339.941 251.719v131.21zM543.108 906.232l92.079-15.94-155.219-900.571-92.020 15.881z" />
-<glyph unicode="&#xe903;" glyph-name="documents" d="M301.347 410.718v-155.408h72.277v82.877h267.51v-82.877h72.62v155.408zM74.104 686.18v-82.471h866.943v82.471l30.484-30.67c30.546-30.641 52.389-38.879 40.118-103.597-12.236-64.501-71.375-418.254-80.171-466.116-9.667-52.479-63.044-51.798-63.044-51.798h-721.747c0 0-53.375-0.68-63.009 51.798-8.796 47.863-67.967 401.616-80.204 466.116-12.266 64.717 9.571 72.956 40.115 103.597zM146.677 759.102h721.749v-103.59h-721.749zM249.767 862.691h515.569v-51.795h-515.569z" />
-<glyph unicode="&#xe904;" glyph-name="find" d="M1024 73.984l-275.499 275.499c89.685 152.917 67.328 355.541-66.731 489.6-158.336 158.464-413.056 161.536-567.765 6.827-154.624-154.624-151.595-409.344 6.827-567.808 137.984-137.899 348.8-157.909 503.083-58.88l271.829-273.493 128.256 128.256zM205.525 362.752c-110.507 110.677-112.683 288.469-4.736 396.416 107.904 107.989 285.824 105.813 396.373-4.736 110.507-110.507 112.683-288.384 4.651-396.288-107.947-108.032-285.653-105.856-396.288 4.608z" />
-<glyph unicode="&#xe905;" glyph-name="excel" d="M789.441 241.11v-102.216h168.092v102.216zM789.441 373.99v-102.216h168.092v102.216zM789.441 506.871v-102.216h168.092v102.216zM345.376 635.776l-51.108-127.204-43.156 115.844h-69.282l70.42-166.952-78.365-165.819h68.144l51.108 118.12 51.108-129.471h74.959l-86.318 182.848 80.635 172.633zM789.441 639.751v-102.216h168.092v102.216zM789.441 772.631v-102.216h168.092v102.216zM608.293 830.554h402.053c7.527 0 13.629-6.102 13.629-13.629v-729.139c0-7.533-6.102-13.625-13.629-13.625h-402.053v64.733h149.918v102.216h-149.918v30.665h149.918v102.216h-149.918v30.665h149.918v102.216h-149.918v30.663h149.918v102.216h-149.918v30.665h149.918v102.216h-149.918zM589.444 943.748v-991.49l-589.444 102.216v787.058z" />
-<glyph unicode="&#xe906;" glyph-name="image" d="M0 871.168v-834.389h1024v834.389h-1024zM296.96 745.771c70.571 0 127.701-57.173 127.701-127.701s-57.131-127.744-127.701-127.744c-70.443 0-127.659 57.173-127.659 127.744s57.216 127.701 127.659 127.701zM100.437 147.669l241.024 226.987 82.133-16.896 120.533 98.261 82.091-111.872 153.344 213.419 153.6-409.941h-832.725z" />
-<glyph unicode="&#xe907;" glyph-name="library" d="M576 832h-160c-17.673 0-32-14.327-32-32v0-704c0-17.673 14.327-32 32-32v0h160c17.673 0 32 14.327 32 32v0 704c0 17.673-14.327 32-32 32v0zM544 144c0-8.837-7.163-16-16-16v0h-64c-8.837 0-16 7.163-16 16v0 32c0 8.837 7.163 16 16 16v0h64c8.837 0 16-7.163 16-16v0zM544 720c0-8.837-7.163-16-16-16v0h-64c-8.837 0-16 7.163-16 16v0 32c0 8.837 7.163 16 16 16v0h64c8.837 0 16-7.163 16-16v0zM865.174 814.101c-2.739 15.123-15.804 26.443-31.514 26.443-1.964 0-3.886-0.177-5.752-0.516l0.195 0.029-157.568-27.783c-15.123-2.739-26.443-15.804-26.443-31.514 0-1.964 0.177-3.886 0.516-5.752l-0.029 0.195 122.248-693.305c2.737-15.123 15.802-26.444 31.512-26.444 1.964 0 3.888 0.177 5.754 0.516l-0.195-0.029 157.568 27.783c15.123 2.737 26.443 15.802 26.443 31.511 0 1.964-0.177 3.888-0.516 5.754l0.029-0.195zM903.082 138.418l-63.029-11.113c-0.835-0.154-1.795-0.243-2.776-0.243-7.855 0-14.388 5.66-15.745 13.123l-0.015 0.098-5.556 31.514c-0.155 0.835-0.243 1.797-0.243 2.778 0 7.855 5.66 14.387 13.124 15.742l0.098 0.015 63.029 11.115c0.835 0.154 1.795 0.243 2.776 0.243 7.855 0 14.388-5.66 15.745-13.123l0.015-0.098 5.556-31.516c0.154-0.835 0.243-1.795 0.243-2.776 0-7.855-5.66-14.388-13.124-15.744l-0.098-0.015zM288 832h-160c-17.673 0-32-14.327-32-32v0-704c0-17.673 14.327-32 32-32v0h160c17.673 0 32 14.327 32 32v0 704c0 17.673-14.327 32-32 32v0zM256 144c0-8.837-7.163-16-16-16v0h-64c-8.837 0-16 7.163-16 16v0 32c0 8.837 7.163 16 16 16v0h64c8.837 0 16-7.163 16-16v0zM256 720c0-8.837-7.163-16-16-16v0h-64c-8.837 0-16 7.163-16 16v0 32c0 8.837 7.163 16 16 16v0h64c8.837 0 16-7.163 16-16v0z" />
-<glyph unicode="&#xe908;" glyph-name="star" d="M875.125 506.258l-204.547-148.578 77.998-240.192c0.65-1.932 1.025-4.157 1.025-6.47 0-11.561-9.372-20.932-20.932-20.932-0.003 0-0.006 0-0.009 0v0c-4.595 0.025-8.829 1.553-12.24 4.116l0.053-0.038-204.342 148.426-204.344-148.426c-3.358-2.525-7.592-4.053-12.182-4.078h-0.006c-0.002 0-0.004 0-0.006 0-11.562 0-20.934 9.373-20.934 20.934 0 2.312 0.375 4.536 1.067 6.616l-0.043-0.148 77.998 240.192-204.547 148.578c-5.239 3.837-8.603 9.966-8.603 16.88 0 11.522 9.34 20.862 20.862 20.862 0 0 0 0 0 0h252.793l78.1 240.5c2.803 8.438 10.625 14.417 19.843 14.417s17.040-5.978 19.8-14.27l0.042-0.147 78.099-240.5h252.793c11.521-0.003 20.859-9.343 20.859-20.864 0-6.913-3.362-13.041-8.54-16.837l-0.058-0.041z" />
-<glyph unicode="&#xe909;" glyph-name="log" d="M484.605 523.186c-29.216 0-46.245-27.795-46.245-64.947 0-37.435 17.56-63.807 46.528-63.807 29.216 0 45.967 27.778 45.967 64.933 0 34.325-16.468 63.821-46.25 63.821zM264.531 554.432h43.398v-154.911h76.017v-36.306h-119.415zM708.043 556.399c24.685 0 43.682-4.829 53.027-9.343l-9.062-34.624c-10.53 4.514-23.562 8.203-44.529 8.203-36.031 0-63.308-20.39-63.308-61.828 0-39.451 24.721-62.687 60.152-62.687 9.969 0 17.908 1.111 21.279 2.846v40h-29.465v33.734h71.179v-100.705c-13.341-4.546-38.556-10.797-63.804-10.797-34.906 0-60.152 8.813-77.745 25.86-17.593 16.421-27.216 41.407-26.936 69.469 0.281 63.561 46.528 99.872 109.211 99.872zM485.733 557.527c58.746 0 90.774-43.996 90.774-96.728 0-62.681-37.999-100.729-93.901-100.729-56.716 0-89.901 42.842-89.901 97.306 0 57.313 36.562 100.15 93.028 100.15zM192.874 899.427v-898.747h449.428l-0.689 224.562 185.203-0.187v674.372zM132.35 960h759.397v-807.847l-193.105-216.081h-566.292z" />
-<glyph unicode="&#xe90a;" glyph-name="logout" d="M802.658 802.445l-320 26.668c-0.736 0.061-1.594 0.096-2.459 0.096-16.632 0-30.273-12.806-31.6-29.096l-0.007-0.113h-0.592v-672h0.592c1.335-16.401 14.974-29.205 31.604-29.205 0.867 0 1.725 0.035 2.575 0.103l-0.112-0.007 320 26.664c16.491 1.418 29.341 15.154 29.342 31.891v0 613.109c0 0 0 0.001 0 0.001 0 16.737-12.85 30.474-29.223 31.881l-0.119 0.008zM544 416c-17.673 0-32 14.327-32 32s14.327 32 32 32c17.673 0 32-14.327 32-32v0c0-17.673-14.327-32-32-32v0zM256 800h128v-64h-128v-544h128v-64h-128c-35.327 0.047-63.953 28.673-64 63.995v544.005c0.047 35.327 28.673 63.953 63.995 64h0.005z" />
-<glyph unicode="&#xe90b;" glyph-name="date" d="M882.176 786.688v81.067c0 50.859-41.344 92.245-92.16 92.245s-92.245-41.387-92.245-92.245v-81.067h-365.952v81.067c0 50.859-41.387 92.245-92.245 92.245-50.816 0-92.203-41.387-92.203-92.245v-81.067h-147.371v-850.688h1024v850.688h-141.824zM735.488 854.955c0 18.688 7.339 35.243 18.688 46.677 0.768 0.811 1.579 1.493 2.432 2.261 4.096 3.669 8.491 6.827 13.397 9.088 0.768 0.299 1.493 0.512 2.176 0.768 5.76 2.304 11.733 3.797 18.176 3.797 30.336 0 54.912-28.032 54.912-62.592v-152.96c0-34.56-24.576-62.592-54.912-62.592-30.251 0-54.827 28.032-54.827 62.592v152.96zM793.771 534.656v-154.069h-156.544v154.069h156.544zM438.016 337.92h156.544v-158.293h-156.544v158.293zM395.349 179.627h-156.544v158.293h156.544v-158.293zM438.016 380.587v154.069h156.544v-154.069h-156.544zM637.227 337.92h156.544v-158.293h-156.544v158.293zM395.349 534.656v-154.069h-156.544v154.069h156.544zM184.747 857.6c0 34.56 24.576 62.592 54.827 62.592 30.293 0 54.869-28.032 54.869-62.592v-152.96c0-34.56-24.576-62.592-54.869-62.592-30.251 0-54.827 28.032-54.827 62.592v152.96zM196.139 534.656v-154.069h-153.472v154.069h153.472zM42.667 337.92h153.472v-158.293h-153.472v158.293zM42.667-21.333v158.293h153.472v-158.293h-153.472zM238.805-21.333v158.293h156.544v-158.293h-156.544zM438.016-21.333v158.293h156.544v-158.293h-156.544zM637.227-21.333v158.293h156.544v-158.293h-156.544zM981.333-21.333h-144.896v158.293h144.896v-158.293zM981.333 179.627h-144.896v158.293h144.896v-158.293zM836.437 380.587v154.069h144.896v-154.069h-144.896z" />
-<glyph unicode="&#xe90c;" glyph-name="numberlist" d="M448 544v32c0 17.673 14.327 32 32 32v0h256c17.673 0 32-14.327 32-32v0-32c0-17.673-14.327-32-32-32v0h-256c-17.673 0-32 14.327-32 32v0zM736 224h-256c-17.673 0-32-14.327-32-32v0-32c0-17.673 14.327-32 32-32v0h256c17.673 0 32 14.327 32 32v0 32c0 17.673-14.327 32-32 32v0zM864 416h-384c-17.673 0-32-14.327-32-32v0-32c0-17.673 14.327-32 32-32v0h384c17.673 0 32 14.327 32 32v0 32c0 17.673-14.327 32-32 32v0zM864 800h-384c-17.673 0-32-14.327-32-32v0-32c0-17.673 14.327-32 32-32v0h384c17.673 0 32 14.327 32 32v0 32c0 17.673-14.327 32-32 32v0zM320 224h-78.375c5.243 9.382 13.594 16.497 23.633 20.032l0.305 0.093c18.844 6.72 76.156 27.094 76.156 85.031-0.068 47.946-38.926 86.794-86.87 86.844h-0.005c-32.111-0.153-60.674-15.208-79.15-38.599l-0.163-0.214c-4.685-5.53-7.533-12.745-7.533-20.626 0-17.674 14.328-32.002 32.002-32.002 9.794 0 18.56 4.399 24.43 11.33l0.039 0.047c6.893 9.542 17.877 15.76 30.328 16.063l0.047 0.001c12.621-0.003 22.854-10.225 22.875-22.842v-0.002c0-3.812 0-12.781-33.625-24.719-43.636-17.22-73.949-59.019-73.949-107.899 0-2.19 0.061-4.366 0.181-6.526l-0.013 0.3c0.935-16.931 14.889-30.307 31.968-30.313h117.719c17.673 0 32 14.327 32 32s-14.327 32-32 32v0zM214.624 681.376l9.376 9.374v-114.75c0-17.673 14.327-32 32-32s32 14.327 32 32v0 192c0 0 0 0 0 0 0 17.672-14.326 31.997-31.997 31.997-8.837 0-16.836-3.582-22.627-9.373l-64-64c-5.668-5.769-9.168-13.685-9.168-22.419 0-17.671 14.325-31.996 31.996-31.996 8.734 0 16.65 3.499 22.424 9.172l-0.005-0.005z" />
-<glyph unicode="&#xe90d;" glyph-name="package" d="M734.549 503.648l-380.418 258.141 126.775 76.055 383.994-255.984zM293.65 725.5l-132.754-79.641 384.006-256 129.17 77.5zM128 334.875l384-255.992v255.992l-384 256zM768 449.078v-86.93c0-0.002 0-0.003 0-0.005 0-5.797-3.082-10.875-7.697-13.683l-0.071-0.040-32-19.195c-2.35-1.432-5.192-2.28-8.232-2.28-8.836 0-15.999 7.163-16 15.999v0 67.744l-128-76.804v-255.984l320 191.976v256.007z" />
-<glyph unicode="&#xe90e;" glyph-name="pdf1" d="M200.571 163.069c-65.7-20.885-113.75-73.848-130.451-94.215 0.202 3.96-6.842-8.705-6.842-8.705s2.706 3.609 6.842 8.705c-0.062-1.554-1.135-5.38-4.261-13.7-11.29-29.974 23.636-29.205 23.636-29.205 99.024 16.106 111.076 137.121 111.076 137.121zM767.851 265.049c-18.402 0.001-29.754-1.181-29.754-1.181 105.384-92.26 203.398-70.757 203.398-70.757 40.12 5.38-21.102 42.521-21.102 42.521-56.586 25.098-117.411 29.415-152.542 29.417zM407.732 514.149c0 0-38.052-198.070-85.604-256.815l263.733 42.154c0 0-131.431 126.545-178.128 214.661zM413.841 879.988c-0.327 0.031-0.655 0.025-0.984-0.018-2.95-0.391-5.989-3.865-8.935-12.118 0 0-14.213-73.113 21.382-194.629 0 0 30.308 96.404 7.495 170.219 0 0-8.827 35.592-18.958 36.546zM380.637 959.983c28.069 1.161 53.374-56.91 53.374-56.91 78.685-180.728 4.276-296.195 4.276-296.195 77.907-197.402 234.047-302.811 234.047-302.811 151.708 8.755 262.38-32.43 262.38-32.43 87.066-49.221 57.909-95.201 57.909-95.201-91.233-109.402-359.227 61.184-359.227 61.184l-345.434-62.554c-49.916-183.551-216.724-226.674-216.724-226.674-79.509-12.464-68.639 76.672-68.639 76.672 62.061 146.761 218.123 180.527 218.123 180.527 61.47 70.59 161.941 402.39 161.941 402.39-101.512 245.186-30.183 326.754-30.183 326.754 9.136 17.894 18.799 24.862 28.156 25.249z" />
-<glyph unicode="&#xe90f;" glyph-name="pdfexport" d="M186.878 198.357c-61.858-18.302-107.102-64.709-122.827-82.566 0.191 3.469-6.445-7.624-6.445-7.624s2.548 3.151 6.445 7.624c-0.066-1.354-1.068-4.711-4.028-12.017-10.629-26.259 22.267-25.589 22.267-25.589 93.244 14.117 104.589 120.172 104.589 120.172zM721.065 287.733c-17.328 0.001-28.016-1.035-28.016-1.035 99.242-80.847 191.531-62.003 191.531-62.003 37.782 4.708-19.861 37.254-19.861 37.254-53.296 21.995-110.573 25.78-143.653 25.783zM381.96 506.055c0 0-35.839-173.585-80.605-225.069l248.329 36.937c0 0-123.752 110.91-167.724 188.132zM845.111 705.497c4.827 0.315 10.331-1.799 16.15-6.633l38.243-31.943c18.558-15.55 48.954-40.949 67.525-56.433l38.272-31.99c18.607-15.533 18.321-40.666-0.508-55.8l-38.832-31.256c-18.859-15.249-49.683-40.059-68.539-55.228l-38.835-31.239c-18.822-15.249-34.021-2.515-33.753 28.201l0.526 59.012h-225.156c-15.85 0-28.705 12.878-28.705 28.729v62.246c0 15.834 12.855 28.694 28.705 28.694h226.241l0.506 59.362c0.198 21.13 7.54 33.585 18.16 34.279zM386.788 826.673c-2.777-0.341-5.637-3.384-8.408-10.615 0 0-13.398-64.091 20.135-170.59 0 0 28.535 84.507 7.050 149.183 0 0-8.859 33.241-18.777 32.022zM356.447 896.795c26.43 1.014 50.261-49.878 50.261-49.878 74.083-158.383 4.029-259.586 4.029-259.586 73.367-173.011 220.388-265.396 220.388-265.396 142.849 7.671 247.075-28.422 247.075-28.422 81.976-43.129 54.534-83.444 54.534-83.444-85.921-95.871-338.276 53.635-338.276 53.635l-325.281-54.828c-46.998-160.866-204.075-198.666-204.075-198.666-74.88-10.915-64.627 67.21-64.627 67.21 58.439 128.623 205.395 158.211 205.395 158.211 57.879 61.876 152.495 352.67 152.495 352.67-95.602 214.882-28.427 286.37-28.427 286.37 8.602 15.68 17.701 21.786 26.511 22.124z" />
-<glyph unicode="&#xe910;" glyph-name="add" d="M896.896 564.352h-271.317v271.275h-225.365v-271.275h-271.317v-225.408h271.317v-271.275h225.365v271.275h271.317z" />
-<glyph unicode="&#xe911;" glyph-name="plus" d="M388.095 960h247.889v-388.114h388.095v-247.869h-388.095v-388.075h-247.889v388.075h-388.095v247.869h388.095z" />
-<glyph unicode="&#xe912;" glyph-name="projects" d="M738.064 471.472l-206.048-117.081 0.648-237.415 205.4 118.386zM296.816 471.472v-236.11l205.402-118.386 0.646 237.415zM517.439 619.312l-204.671-118.352 204.671-117.696 205.313 117.696zM92.872 910.64h327.139c51.335 0 92.917-41.604 92.917-92.904v-44.536h418.154c51.314 0 92.918-41.615 92.918-92.907v-602.031c0-51.325-41.605-92.918-92.918-92.918h-838.208c-51.27 0-92.873 41.594-92.873 92.918v602.031c0 1.603 0.041 3.196 0.121 4.779l0.078 1.030-0.078 1.030c-0.080 1.584-0.121 3.178-0.121 4.782v125.822c0 51.299 41.603 92.904 92.872 92.904z" />
-<glyph unicode="&#xe913;" glyph-name="remove" d="M824.447 960l199.553-199.586-312.445-312.431 312.445-312.443-199.552-199.541-312.448 312.437-312.451-312.437-199.533 199.539 312.432 312.443-312.448 312.438 199.552 199.564 312.446-312.444z" />
-<glyph unicode="&#xe914;" glyph-name="rename" d="M292.64 960h438.752v-27.918h-37c-41.803 0-72.25-12.332-91.376-37-12.592-16.125-18.875-54.875-18.875-116.292v-487.75h90.1v-64h-90.1v-109.79c0-51.834 3.261-86.083 9.813-102.709 5.030-12.584 15.595-23.374 31.709-32.459 21.647-12.082 44.562-18.114 68.73-18.114h37v-27.968h-438.752v27.968h36.249c42.292 0 72.99 12.323 92.126 36.989 12.083 16.125 18.125 54.875 18.125 116.293v109.79h-93.157v64h93.157v487.75c0 51.835-3.282 86.085-9.813 102.667-5.042 12.584-15.365 23.418-30.97 32.5-22.155 12.084-45.302 18.125-69.469 18.125h-36.249z" />
-<glyph unicode="&#xe915;" glyph-name="table" d="M0 147.354h1023.919v-129.997h-1023.919zM0 391.18h1023.919v-130.079h-1023.919zM0 635.007h1023.919v-130.079h-1023.919zM0 878.752h1023.919v-130.079h-1023.919z" />
-<glyph unicode="&#xe916;" glyph-name="uploadfile" d="M511.975 447.953l-242.846-242.843h161.146v-184.088h163.402v184.088h161.146zM646.038 924.618l311.664-313.105h-311.664zM66.25 960h514.016v-388.045h377.436v-636.099h-891.451z" />
-<glyph unicode="&#xe917;" glyph-name="apps" d="M730.912 530.112h125.376v-125.392h-125.376zM542 530.112h125.376v-125.392h-125.376zM349.584 530.112h125.376v-125.392h-125.376zM160.672 530.112h125.376v-125.392h-125.376zM730.912 717.264h125.376v-125.376h-125.376zM542 717.264h125.376v-125.376h-125.376zM349.584 717.264h125.376v-125.376h-125.376zM160.672 717.264h125.376v-125.376h-125.376zM63.563 812.597v-504.938h893.354v504.938zM0 879.68h1024v-639.104h-449.328v-113.245l4.865-0.082c285.499-6.523 230.831-110.897 230.831-110.897-37.079 5.291-180.079 10.602-180.079 10.602v21.186h-243.641l-5.312-31.788h-174.768c-63.301 84.409 149.173 104.915 238.102 109.762l2.866 0.151v114.311h-447.536z" />
-<glyph unicode="&#xe918;" glyph-name="back" d="M725.077-64l-517.717 512.043 517.717 511.957 135.083-133.547-382.677-378.411 382.677-378.453-135.083-133.589z" />
-<glyph unicode="&#xe919;" glyph-name="backup" d="M158.756 459.232c2.36-0.222 4.628-1.137 6.44-2.635 2.465-2.038 4.027-5.035 4.266-8.199 3.173-40.213 14.414-80.383 34.695-118.14 28.963-53.866 71.965-95.243 122.116-122.093l19.951 77.261c1.184 4.576 4.973 7.992 9.626 8.699 4.692 0.708 9.29-1.415 11.8-5.411l140.4-226.038c1.945-3.581 2.228-7.033 1.093-10.24-1.228-3.413-3.934-5.994-7.347-7.16l-259.049-86.835c-4.549-1.541-9.533-0.166-12.657 3.454-3.173 3.664-3.796 8.784-1.571 13.072l37.267 73.013c-87.221 41.503-162.493 110.146-211.654 201.728-30.908 57.487-48.59 118.638-54.085 179.872-0.573 6.368 4.026 12.029 10.386 12.778l145.945 16.859c0.793 0.084 1.59 0.086 2.377 0.012zM807.027 714.090c2.642-0.123 5.187-1.153 7.248-2.932l204.777-180.834c3.601-3.207 4.923-8.202 3.309-12.697-1.562-4.58-5.683-7.66-10.521-7.91l-81.808-4.289c7.679-96.244-14.081-195.777-68.781-284.155-34.323-55.533-78.458-101.448-128.702-136.833-5.214-3.664-12.416-2.538-16.257 2.622l-87.605 117.892c-1.894 2.582-2.652 5.83-2.175 8.952 0.572 3.162 2.375 5.994 4.975 7.783 33.23 22.854 62.38 52.702 84.953 89.168 32.178 52.037 46.446 109.942 44.645 166.807l-76.928-21.356c-4.556-1.29-9.386 0.251-12.331 3.956-2.986 3.704-3.456 8.741-1.228 12.945l125.425 234.66c2.132 3.456 5.024 5.454 8.346 6.036 0.888 0.167 1.779 0.227 2.659 0.186zM478.859 939.139c65.312 0.043 127.56-13.319 184.057-37.421 5.924-2.541 8.722-9.241 6.349-15.235l-54.179-136.536c-1.188-2.954-3.549-5.328-6.493-6.535-2.935-1.208-6.308-1.165-9.19 0.125-36.935 16.234-77.646 25.308-120.544 25.308-61.151 0-117.892-18.315-165.297-49.786l58.591-54.156c3.509-3.205 4.738-8.159 3.124-12.613-1.56-4.453-5.64-7.534-10.333-7.824l-265.546-16.777c-4.079-0.040-7.295 1.375-9.522 3.871-2.466 2.706-3.466 6.287-2.852 9.866l19.014 111.394 26.963 157.891c0.855 4.745 4.415 8.492 9.108 9.532s9.48-0.833 12.228-4.786l46.696-67.353c77.784 57.195 173.873 91.080 277.828 91.037z" />
-<glyph unicode="&#xe91a;" glyph-name="close" d="M704.768 802.859l-191.872-191.872-191.829 191.829-159.317-159.317 191.829-191.872-191.872-191.829 159.36-159.36 191.872 191.829 191.829-191.829 159.36 159.36-191.787 191.787 191.829 191.872z" />
-<glyph unicode="&#xe91b;" glyph-name="agreement" d="M167.399 282.158h323.415c0 0 5.916-31.909 7.353-37.842h-330.768c-8.671 0-15.672 7.017-15.672 15.688v6.483c0 8.652 7.001 15.67 15.672 15.67zM166.669 403.101h286.113c0.132-1.774 0.017-3.559-0.635-5.28l-12.548-32.574h-272.93c-8.657 0-15.674 7.020-15.674 15.692v6.469c0 8.674 7.018 15.694 15.674 15.694zM164.498 521.836h277.904l3.993-8.972c1.888-4.295 0.969-9.356-2.323-12.716l-16.156-16.154h-263.419c-8.654 0-15.671 7.016-15.671 15.687v6.482c0 8.653 7.018 15.672 15.671 15.672zM742.87 626.071c-99.615 0-180.35-80.744-180.35-180.355 0-99.603 80.734-180.406 180.35-180.406 99.632 0 180.386 80.803 180.386 180.406 0 99.611-80.754 180.355-180.386 180.355zM163.987 639.365h326.827v-33.951c0-1.354-0.266-2.641-0.701-3.878h-326.127c-8.672 0-15.674 7.018-15.674 15.674v6.483c0 8.672 7.001 15.672 15.674 15.672zM742.875 723.684c3.759 0 7.519-1.433 10.393-4.299l28.972-28.939c3.14-3.158 7.869-4.042 11.913-2.239l37.526 16.592c7.435 3.325 16.073-0.082 19.366-7.485l19.533-44.028c1.802-4.042 5.862-6.7 10.325-6.7h48.152c8.106 0 14.672-6.549 14.672-14.686v-41.002c0-4.444 2.755-8.405 6.865-9.992l38.264-14.768c7.585-2.91 11.36-11.448 8.437-18.999l-17.345-44.912c-1.619-4.176-0.617-8.922 2.541-12.079l34.069-34.019c5.747-5.749 5.747-15.071 0-20.819l-29.005-28.972c-3.109-3.108-4.010-7.853-2.206-11.897l16.592-37.477c3.291-7.47-0.050-16.124-7.486-19.415l-43.993-19.515c-4.077-1.805-6.732-5.884-6.732-10.343v-48.088c0-8.152-6.566-14.753-14.672-14.753h-1.653l94.603-227.368c2.038-4.911-2.941-9.792-7.803-7.617l-110.426 48.72c-3.726 1.637-8.021-0.099-9.523-3.827l-45.115-109.69c-2.054-5.047-9.154-5.047-11.261-0.050l-91.812 220.185c-0.382 0.984-0.484 2.036-0.717 3.005-1.989-0.284-3.96-0.25-5.933 0.235l-91.844-220.601c-2.089-4.981-9.207-4.981-11.245 0.032l-45.129 109.69c-1.537 3.71-5.833 5.514-9.557 3.845l-110.424-48.722c-4.88-2.155-9.843 2.723-7.822 7.6l93.452 224.563h-0.135c-8.103 0-14.687 6.601-14.687 14.753v40.97c0 4.428-2.738 8.422-6.866 9.974l-38.228 14.786c-7.602 2.909-11.363 11.43-8.454 18.981l17.327 44.947c1.586 4.159 0.583 8.871-2.559 12.029l-34.051 34.019c-5.714 5.747-5.714 15.070 0 20.819l29.040 29.006c3.090 3.125 3.959 7.903 2.188 11.913l-16.624 37.493c-3.276 7.403 0.049 16.108 7.467 19.415l44.060 19.465c4.078 1.805 6.7 5.848 6.7 10.311v48.17c0 8.137 6.584 14.686 14.687 14.686h41.002c4.396 0 8.39 2.742 9.96 6.884l14.767 38.246c2.924 7.552 11.447 11.328 19.031 8.42l44.93-17.309c4.178-1.654 8.922-0.62 12.080 2.522l34.002 34.036c2.874 2.866 6.633 4.299 10.392 4.299zM163.837 771.753h206.951c8.672 0 15.689-6.999 15.689-15.672v-6.483c0-8.673-7.017-15.674-15.689-15.674h-206.951c-8.672 0-15.691 7.002-15.691 15.674v6.483c0 8.673 7.019 15.672 15.691 15.672zM26.215 955.958h721.289c14.469 0 26.233-11.762 26.233-26.214v-178.013l-15.84 15.805c-3.942 3.927-9.156 6.099-14.72 6.099s-10.778-2.172-14.72-6.081l-22.858-22.891v122.357c0 11.462-9.34 20.785-20.819 20.785h-595.842c-11.462 0-20.784-9.323-20.784-20.785v-752.636c0-11.478 9.322-20.801 20.784-20.801h353.1l-28.353-68.155h-387.471c-14.452 0-26.215 11.765-26.215 26.233v878.084c0 14.452 11.763 26.214 26.215 26.214z" />
-<glyph unicode="&#xe91c;" glyph-name="apps1" d="M608 256v-128c0-17.673-14.327-32-32-32v0h-128c-17.673 0-32 14.327-32 32v0 128c0 17.673 14.327 32 32 32v0h128c17.673 0 32-14.327 32-32v0zM320 288h-128c-17.673 0-32-14.327-32-32v0-128c0-17.673 14.327-32 32-32v0h128c17.673 0 32 14.327 32 32v0 128c0 17.673-14.327 32-32 32v0zM320 544h-128c-17.673 0-32-14.327-32-32v0-128c0-17.673 14.327-32 32-32v0h128c17.673 0 32 14.327 32 32v0 128c0 17.673-14.327 32-32 32v0zM576 544h-128c-17.673 0-32-14.327-32-32v0-128c0-17.673 14.327-32 32-32v0h128c17.673 0 32 14.327 32 32v0 128c0 17.673-14.327 32-32 32v0zM320 800h-128c-17.673 0-32-14.327-32-32v0-128c0-17.673 14.327-32 32-32v0h128c17.673 0 32 14.327 32 32v0 128c0 17.673-14.327 32-32 32v0zM832 800h-128c-17.673 0-32-14.327-32-32v0-128c0-17.673 14.327-32 32-32v0h128c17.673 0 32 14.327 32 32v0 128c0 17.673-14.327 32-32 32v0zM832 544h-128c-17.673 0-32-14.327-32-32v0-128c0-17.673 14.327-32 32-32v0h128c17.673 0 32 14.327 32 32v0 128c0 17.673-14.327 32-32 32v0zM832 288h-128c-17.673 0-32-14.327-32-32v0-128c0-17.673 14.327-32 32-32v0h128c17.673 0 32 14.327 32 32v0 128c0 17.673-14.327 32-32 32v0zM576 800h-128c-17.673 0-32-14.327-32-32v0-128c0-17.673 14.327-32 32-32v0h128c17.673 0 32 14.327 32 32v0 128c0 17.673-14.327 32-32 32v0z" />
-<glyph unicode="&#xe91d;" glyph-name="archive" d="M192 96c0-17.673 14.327-32 32-32v0h576c17.673 0 32 14.327 32 32v0 448h-640zM384 416c0 17.673 14.327 32 32 32v0h192c17.673 0 32-14.327 32-32v0-32c0-17.673-14.327-32-32-32v0h-192c-17.673 0-32 14.327-32 32v0zM896 736v-128h-768v128c0 17.673 14.327 32 32 32v0h704c17.673 0 32-14.327 32-32v0z" />
-<glyph unicode="&#xe91e;" glyph-name="bill" d="M678.867 244.823h18.202v-20.667c13.994-0.431 23.544-3.758 30.648-7.322l-5.988-20.434c-5.324 2.428-15.109 7.555-30.198 7.555-15.54 0-21.079-7.985-21.079-15.542 0-9.12 7.986-14.207 26.853-21.763 24.855-9.317 35.972-21.296 35.972-41.064 0-18.868-13.113-35.545-37.538-39.537v-22.86h-18.201v21.529c-13.974 0.431-27.968 4.463-35.973 9.787l6.009 20.864c8.67-5.127 21.079-9.787 34.622-9.787 13.994 0 23.544 6.891 23.544 17.538 0 10.022-7.769 16.44-24.21 22.431-23.29 8.457-38.399 19.104-38.399 39.734 0 19.103 13.31 33.781 35.737 37.777zM420.46 294.449c-16.753-25.445-32.606-51.595-47.854-77.686h47.854zM272.885 364.344v-147.582h90.404c-24.171 33.432-46.288 68.956-72.084 100.764 4.658 7.319 10.647 13.329 17.967 18.007 12.76-10.335 23.643-19.769 39.065-30.849 2.193-1.544 16.832-11.587 18.045-11.509 2.818 0.234 10.258 13.389 14.836 19.065 11.627 14.387 25.073 29.419 39.341 44.038v8.065zM565.034 372.057h186.1v-40.091h-186.1zM502.86 426.549c7.711 0 15.501 0 23.252 0 1.408-2.975-5.637-6.695-9.513-10.61-27.44-27.402-52.589-58.836-76.097-92.15v-127.069h-187.659v187.668h187.659v-8.359c20.768 19.575 42.375 37.426 62.358 50.52zM420.46 563.84c-16.735-25.445-32.606-51.575-47.835-77.668h47.835zM565.034 564.125h186.1v-40.076h-186.1zM272.885 633.717v-147.545h90.385c-24.172 33.432-46.269 68.941-72.064 100.767 4.658 7.319 10.647 13.308 17.967 17.986 12.76-10.315 23.643-19.769 39.065-30.866 2.193-1.527 16.832-11.569 18.045-11.471 2.818 0.197 10.258 13.388 14.836 19.064 11.627 14.388 25.073 29.401 39.341 44.023v8.042zM502.86 695.943c7.711 0 15.501 0 23.252 0 1.408-2.954-5.637-6.694-9.513-10.59-27.44-27.421-52.589-58.857-76.097-92.17v-127.053h-187.659v187.633h187.659v-8.339c20.768 19.574 42.375 37.405 62.358 50.52zM194.508 882.608v-869.323h634.916v674.609h-201.173v194.713zM121.461 960h548.128l232.92-228.046v-795.984h-781.048z" />
-<glyph unicode="&#xe91f;" glyph-name="calendar" d="M800 832h-544c-52.995-0.060-95.94-43.005-96-95.994v-608.006c0.042-35.329 28.671-63.958 63.996-64h608.004c35.329 0.042 63.958 28.671 64 63.996v608.004c-0.060 52.995-43.005 95.94-95.994 96h-0.006zM384 144c0-8.837-7.163-16-16-16v0h-128c-8.837 0-16 7.163-16 16v0 96c0 8.837 7.163 16 16 16v0h128c8.837 0 16-7.163 16-16v0zM384 336c0-8.837-7.163-16-16-16v0h-128c-8.837 0-16 7.163-16 16v0 96c0 8.837 7.163 16 16 16v0h128c8.837 0 16-7.163 16-16v0zM384 528c0-8.837-7.163-16-16-16v0h-128c-8.837 0-16 7.163-16 16v0 96c0 8.837 7.163 16 16 16v0h128c8.837 0 16-7.163 16-16v0zM608 144c0-8.837-7.163-16-16-16v0h-128c-8.837 0-16 7.163-16 16v0 96c0 8.837 7.163 16 16 16v0h128c8.837 0 16-7.163 16-16v0zM608 336c0-8.837-7.163-16-16-16v0h-128c-8.837 0-16 7.163-16 16v0 96c0 8.837 7.163 16 16 16v0h128c8.837 0 16-7.163 16-16v0zM608 528c0-8.837-7.163-16-16-16v0h-128c-8.837 0-16 7.163-16 16v0 96c0 8.837 7.163 16 16 16v0h128c8.837 0 16-7.163 16-16v0zM832 144c0-8.837-7.163-16-16-16v0h-128c-8.837 0-16 7.163-16 16v0 96c0 8.837 7.163 16 16 16v0h128c8.837 0 16-7.163 16-16v0zM832 336c0-8.837-7.163-16-16-16v0h-128c-8.837 0-16 7.163-16 16v0 96c0 8.837 7.163 16 16 16v0h128c8.837 0 16-7.163 16-16v0zM832 528c0-8.837-7.163-16-16-16v0h-128c-8.837 0-16 7.163-16 16v0 96c0 8.837 7.163 16 16 16v0h128c8.837 0 16-7.163 16-16v0z" />
-<glyph unicode="&#xe920;" glyph-name="copy" d="M736 464v144l160-160h-144c-8.837 0-16 7.163-16 16v0zM352 640v176c0 8.837-7.163 16-16 16v0h-144c-17.673 0-32-14.327-32-32v0-480c0-17.673 14.327-32 32-32v0h224v288c0.116 11.518 2.262 22.501 6.096 32.655l-0.217-0.655h-37.879c-17.673 0-32 14.327-32 32v0zM672 416v176c0 8.837-7.163 16-16 16v0h-144c-17.673 0-32-14.327-32-32v0-480c0-17.673 14.327-32 32-32v0h352c17.673 0 32 14.327 32 32v0 272c0 8.837-7.163 16-16 16v0h-176c-17.673 0-32 14.327-32 32v0zM416 832v-144c0-8.837 7.163-16 16-16v0h144z" />
-<glyph unicode="&#xe921;" glyph-name="download4" d="M1024-63.915l-1024-0.085v428.672l153.6 0.171v-275.243l718.421-0.768v275.84l151.979 0.085zM411.989 680.491v279.509h192.512v-279.509h211.456l-303.957-385.067-303.915 385.067z" />
-<glyph unicode="&#xe922;" glyph-name="duplicate" d="M169.813 790.272l598.997-0.811-1.408 170.539h-767.403v-767.403h169.813zM224.64 735.36v-799.36h799.36v799.36h-799.36zM928.896 289.749h-258.645v-258.603h-85.333v258.603h-258.603v85.333h258.603v258.645h85.333v-258.645h258.645v-85.333z" />
-<glyph unicode="&#xe923;" glyph-name="cube" d="M160 621.883l320-192.008v-351.992l-304.469 182.68c-9.368 5.696-15.53 15.847-15.531 27.437v0zM528.469 859.437c-4.703 2.857-10.388 4.547-16.469 4.547s-11.766-1.691-16.612-4.628l0.143 0.080-303.527-182.117 319.996-192 319.996 192zM544 429.875v-351.992l304.469 182.68c9.368 5.696 15.53 15.847 15.531 27.437v0 333.883z" />
-<glyph unicode="&#xe924;" glyph-name="cubelight" d="M862.891 648.313c-0.42 1.193-0.819 2.148-1.264 3.077l0.080-0.186c-0.606 1.84-1.273 3.397-2.054 4.885l0.084-0.175c-2.136 2.898-3.775 5.032-5.443 7.141l0.447-0.586c-0.89 0.795-1.858 1.567-2.869 2.283l-0.102 0.069c-0.991 0.903-2.067 1.762-3.198 2.549l-0.103 0.068-320 192c-4.703 2.857-10.388 4.547-16.469 4.547s-11.766-1.691-16.612-4.628l0.143 0.080-320-192c-1.226-0.854-2.295-1.709-3.306-2.626l0.027 0.024c-1.121-0.791-2.097-1.571-3.025-2.402l0.031 0.027c-0.962-1.071-1.874-2.241-2.701-3.472l-0.072-0.114c-0.744-0.875-1.474-1.84-2.148-2.846l-0.072-0.115c-0.675-1.276-1.326-2.795-1.858-4.368l-0.066-0.226c-0.389-1.024-0.947-1.961-1.232-3.016-0.699-2.49-1.103-5.349-1.107-8.302v-352.002c0.001-11.591 6.163-21.742 15.39-27.357l0.141-0.080 320.688-192.406c1.479-0.783 3.216-1.505 5.024-2.066l0.221-0.059c0.76-0.266 1.461-0.704 2.232-0.906 2.489-0.714 5.349-1.125 8.304-1.125s5.815 0.411 8.524 1.178l-0.22-0.053c0.772 0.203 1.472 0.64 2.232 0.906 2.028 0.62 3.765 1.342 5.415 2.207l-0.171-0.082 0.34 0.258 0.348 0.148 320 192c9.368 5.695 15.531 15.847 15.532 27.437v0 352c-0.004 2.958-0.408 5.821-1.163 8.538l0.053-0.225zM480 152.531l-256 153.594v277.344l256-153.594zM512 485.32l-257.807 154.68 257.807 154.688 257.807-154.688zM800 306.125l-256-153.594v277.344l256 153.594z" />
-<glyph unicode="&#xe925;" glyph-name="dashboard1" d="M797.156 159.875c-8.529-10.218-21.271-16.672-35.519-16.672-14.515 0-27.465 6.697-35.93 17.171l-0.068 0.087c-3.873 1.648-7.184 3.885-9.987 6.638l-67.901 67.901c-5.79 5.79-9.372 13.789-9.372 22.625 0 17.671 14.325 31.997 31.997 31.997 8.836 0 16.835-3.581 22.625-9.372v0l43.26-43.258c32.994 40.283 55.204 90.578 61.549 145.7l0.122 1.308h-61.932c-17.673 0-32 14.327-32 32s14.327 32 32 32v0h61.98c-0.262 2.437-0.252 4.84-0.574 7.281-7.523 53.851-29.185 101.615-61.077 140.704l0.405-0.512-43.703-43.723c-5.79-5.79-13.789-9.372-22.625-9.372-17.671 0-31.997 14.325-31.997 31.997 0 8.836 3.581 16.835 9.372 22.625l43.729 43.75c-40.045 32.607-89.888 54.662-144.495 61.243l-1.359 0.133c-0.555 0.064-1.102 0.043-1.656 0.101v-62.228c0-17.673-14.327-32-32-32s-32 14.327-32 32v0 62.14c-56.57-6.349-107.037-28.47-148.016-61.804l0.52 0.41 43.746-43.746c5.754-5.74 9.32-13.67 9.342-22.433v-0.004l165.252-120.793c13.687-10.088 22.469-26.147 22.469-44.256 0-30.276-24.544-54.82-54.82-54.82-18.11 0-34.169 8.782-44.151 22.32l-0.106 0.151-120.787 165.242c-8.77 0.028-16.703 3.594-22.449 9.344l-43.724 43.726c-32.699-40.559-54.775-90.956-61.278-146.12l-0.13-1.357h62.133c17.673 0 32-14.327 32-32s-14.327-32-32-32v0h-61.984c6.676-56.414 28.847-106.679 62.085-147.591l-0.416 0.528 43.313 43.312c5.79 5.79 13.789 9.372 22.625 9.372 17.671 0 31.997-14.325 31.997-31.997 0-8.836-3.581-16.835-9.372-22.625v0l-67.905-67.906c-2.759-2.694-6.015-4.893-9.616-6.445l-0.206-0.079c-8.543-10.61-21.531-17.341-36.092-17.341-14.245 0-26.985 6.443-35.465 16.573l-0.059 0.072c-61.126 67.675-98.527 157.799-98.527 256.658 0 211.831 171.723 383.555 383.555 383.555 15.672 0 31.124-0.94 46.303-2.766l-1.83 0.179c192.044-22.638 339.606-184.452 339.606-380.731 0-98.991-37.534-189.216-99.146-257.219l0.29 0.325z" />
-<glyph unicode="&#xe926;" glyph-name="documentsave" d="M345.584 354.72v-202.88h345.36v202.88zM533.952 557.568h56.752v-130.416h-56.752zM286.432 586.544h114.104v-186.55h231.83v186.55h35.629l82.102-82.093v-381.571h-463.664zM194.583 882.635v-869.291h634.898v674.562h-201.145v194.729zM121.52 960h548.147l232.877-227.99v-796.010h-781.024z" />
-<glyph unicode="&#xe927;" glyph-name="edit" d="M107.093 248.875l214.827-199.979 512.683 520.96-214.699 199.893-512.811-520.875zM994.603 858.411l-81.664 75.947c-38.059 35.413-98.091 33.963-134.229-3.029l-102.357-104.875 219.136-203.819 102.229 104.704c36.224 37.12 34.816 95.787-3.115 131.072zM0.299-64l268.459 58.24-210.133 195.584-58.325-253.824z" />
-<glyph unicode="&#xe928;" glyph-name="email" d="M1024 141.056l-359.893 278.741 359.893 352.896zM0 788.011l375.211-363.136-375.211-308.907zM580.267 326.656c-21.333-21.035-69.12-21.035-98.603 6.997l-70.997 55.765-378.667-301.568 992 1.067-380.16 290.389-63.573-52.651zM1005.227 812.757l-422.229-413.227c-28.075-24.149-73.771-24.149-102.101 0l-448.896 412.459 973.227 0.768z" />
-<glyph unicode="&#xe929;" glyph-name="exit" d="M826.547 713.055l174.681-174.731-174.681-174.856v116.127h-324.501v117.521h324.501zM22.578 960h748.846v-322.493h-85.415v233.478h-527.32l143.325-93.695v-571.717h383.995v233.478h85.415v-322.493h-469.41v-180.559l-279.436 180.559z" />
-<glyph unicode="&#xe92a;" glyph-name="file" d="M941.653 599.979h-360.021v360.021zM515.157 534.059v425.6h-428.245v-1023.659h861.995l0.427 599.083-434.176-1.024z" />
-<glyph unicode="&#xe92b;" glyph-name="save" d="M109.804 141.178c-10.916 0-19.935-8.978-19.935-19.968v-65.146c0-10.907 9.020-19.97 19.935-19.97h65.315c10.978 0 19.894 9.062 19.894 19.97v65.146c0 10.99-8.917 19.968-19.894 19.968zM589.312 869.072h146.912v-222.912h-146.912zM213.307 919.544v-250.771c0-43.802 35.811-79.718 79.687-79.718h427.524c43.875 0 79.77 35.917 79.77 79.718v250.771zM138.578 960h733.023l144.751-144.697v-793.092l-21.958-31.824c-23.251-35.272-63.021-54.387-109-54.387h-746.815c-72.023 0-130.898 58.958-130.898 130.898v762.168c0 72.112 58.875 130.935 130.898 130.935z" />
-<glyph unicode="&#xe92c;" glyph-name="folder" d="M193.912 591.524l-65.912-263.649v408.125c0.001 35.346 28.654 63.999 64 64h133.49c0 0 0.001 0 0.001 0 17.673 0 33.673-7.164 45.255-18.746l45.254-45.254h416c35.346-0.001 63.999-28.654 64-64v0-32h-640c-0.001 0-0.001 0-0.002 0-29.833 0-54.898-20.413-61.99-48.033l-0.097-0.444zM942.031 576h-636.063c-0.001 0-0.001 0-0.002 0-29.833 0-54.897-20.413-61.989-48.033l-0.097-0.444-115.881-463.524h768l108.119 432.476c1.214 4.66 1.911 10.011 1.911 15.524 0 35.346-28.653 63.999-63.999 64v0z" />
-<glyph unicode="&#xe92d;" glyph-name="folderadd" d="M785.553 312.399v-95.808h-95.774v-57.011h95.774v-95.791h57.045v95.791h95.774v57.011h-95.774v95.808zM809.218 404.602c118.6 0 214.747-96.162 214.747-214.765s-96.148-214.765-214.747-214.765c-118.603 0-214.749 96.162-214.749 214.765s96.146 214.765 214.749 214.765zM81.172 920.86h285.817c44.839 0 81.184-36.345 81.184-81.163v-38.919h365.342c44.838 0 81.184-36.366 81.184-81.182v-253.204l-6.333 1.888c-25.165 7.163-51.718 10.999-79.149 10.999-159.599 0-289.459-129.845-289.459-289.441 0-24.937 3.17-49.147 9.129-72.249l1.406-5.182h-449.12c-44.828 0-81.174 36.346-81.174 81.185v526.004c0 1.401 0.035 2.793 0.106 4.176l0.068 0.898-0.068 0.899c-0.070 1.384-0.106 2.777-0.106 4.178v109.951c0 44.817 36.345 81.163 81.172 81.163z" />
-<glyph unicode="&#xe92e;" glyph-name="foldercube" d="M738.064 471.472l-206.048-117.081 0.648-237.415 205.4 118.386zM296.816 471.472v-236.11l205.402-118.386 0.646 237.415zM517.439 619.312l-204.671-118.352 204.671-117.696 205.313 117.696zM92.872 910.64h327.139c51.335 0 92.917-41.604 92.917-92.904v-44.536h418.154c51.314 0 92.918-41.615 92.918-92.907v-602.031c0-51.325-41.605-92.918-92.918-92.918h-838.208c-51.27 0-92.873 41.594-92.873 92.918v602.031c0 1.603 0.041 3.196 0.121 4.779l0.078 1.030-0.078 1.030c-0.080 1.584-0.121 3.178-0.121 4.782v125.822c0 51.299 41.603 92.904 92.872 92.904z" />
-<glyph unicode="&#xe92f;" glyph-name="folderdelete" d="M688.355 220.883v-67.036h248.593v67.036zM809.218 404.602c118.6 0 214.747-96.162 214.747-214.765s-96.148-214.765-214.747-214.765c-118.6 0-214.749 96.162-214.749 214.765s96.149 214.765 214.749 214.765zM81.172 920.86h285.819c44.837 0 81.182-36.345 81.182-81.163v-38.919h365.342c44.838 0 81.184-36.366 81.184-81.182v-253.204l-6.333 1.888c-25.165 7.163-51.718 10.999-79.149 10.999-159.599 0-289.459-129.845-289.459-289.441 0-24.937 3.17-49.147 9.129-72.249l1.406-5.182h-449.12c-44.828 0-81.174 36.346-81.174 81.185v526.004c0 1.401 0.035 2.793 0.106 4.176l0.068 0.898-0.068 0.899c-0.070 1.384-0.106 2.777-0.106 4.178v109.951c0 44.817 36.345 81.163 81.172 81.163z" />
-<glyph unicode="&#xe930;" glyph-name="folderfind" d="M494.046 553.696c90.647 0 164.146-73.457 164.146-164.1 0-90.632-73.498-164.108-164.146-164.108-90.646 0-164.126 73.476-164.126 164.108 0 90.643 73.481 164.1 164.126 164.1zM494.046 602.144c-117.376 0-212.542-95.145-212.542-212.548 0-117.391 95.165-212.556 212.542-212.556 34.851 0 67.744 8.387 96.769 23.254l4.077 2.151 54.362-69.117h93.29l-89.772 114.911 2.001 2.255c32.294 37.28 51.834 85.909 51.834 139.102 0 117.403-95.168 212.548-212.562 212.548zM92.896 910.64h327.164c51.312 0 92.916-41.604 92.916-92.904v-44.536h418.106c51.315 0 92.918-41.615 92.918-92.907v-602.031c0-51.325-41.603-92.918-92.918-92.918h-838.185c-51.293 0-92.896 41.594-92.896 92.918v602.031c0 1.603 0.041 3.196 0.121 4.779l0.078 1.030-0.078 1.030c-0.080 1.584-0.121 3.178-0.121 4.782v125.822c0 51.299 41.603 92.904 92.896 92.904z" />
-<glyph unicode="&#xe931;" glyph-name="access" d="M693.774 863.021c-45.312-0.577-87.755-19.509-123.675-55.463-36.789-36.832-55.471-79.106-55.471-125.554 0-56.312 27.912-115.225 78.547-165.932 44.947-44.957 97.637-72.486 148.258-77.689 52.641-5.354 102.212 13.492 143.303 54.572 36.75 36.831 55.442 79.105 55.442 125.563 0 56.313-27.914 115.299-78.628 165.934-44.877 44.958-97.556 72.476-148.192 77.689-6.579 0.671-13.111 0.963-19.584 0.88zM690.651 946.774c9.527 0.094 19.153-0.354 28.862-1.348 69.916-7.104 141.013-43.623 200.161-102.85 67.194-67.113 104.264-147.483 104.264-226.102 0-67.749-27.528-131.089-79.579-183.141-59.075-59.144-131.388-86.2-209.076-78.308-56.764 5.832-114.405 31.033-165.765 72.041l-2.442 2.027-292.9-292.898 52.973-53.012c25.95-25.868 4.332-46.224-21.537-72.092l-26.020-25.951c-25.829-25.938-46.212-47.467-72.081-21.609l-52.999 53-41.482-41.481c-25.859-25.868-67.78-25.868-93.69 0-25.787 25.871-25.787 67.821 0 93.7l459.395 459.312-1.999 3.18c-29.943 48.862-45.869 101.211-45.869 152.82 0 67.738 27.52 131.065 79.581 183.117 51.682 51.755 113.516 78.937 180.203 79.594z" />
-<glyph unicode="&#xe932;" glyph-name="group" d="M823.502 288h-47.004c-2.992 0.083-5.847 0.358-8.641 0.815l0.368-0.050c-13.662 11.227-29.91 24.652-48.35 39.953l-4.238 3.531c-1.115 3.304-2.023 7.215-2.557 11.244l-0.035 0.326c0.527 2.031 1.156 4.008 1.612 6.070l16.094 73.688c19.613 16.339 34.884 37.23 44.269 61.083l0.356 1.026 8.906 24c5.094 12.059 8.054 26.079 8.054 40.791 0 25.917-9.187 49.689-24.482 68.236l0.147-0.183v48.945c10.060 2.878 21.614 4.533 33.555 4.533 69.839 0 126.455-56.616 126.455-126.455 0-0.547-0.003-1.092-0.010-1.637l0.001 0.083v-69.961c4.573-3.984 7.447-9.817 7.447-16.322 0-2.91-0.575-5.686-1.618-8.22l0.052 0.144-11.762-35.281c-5.295-13.384-16.081-23.612-29.505-28.040l-0.337-0.096-5.269-42.16c-4.084-31.766-30.958-56.062-63.506-56.062 0 0 0 0 0 0v0zM287.012 288.695c15.744 12.945 33.188 27.312 49.082 40.414l4.424 3.641c1.037 3.152 1.89 6.897 2.402 10.751l0.036 0.327c-0.527 2.020-1.162 4-1.612 6.048l-16.094 73.703c-19.595 16.329-34.856 37.204-44.238 61.037l-0.356 1.026-8.969 24.109c-5.079 12.041-8.030 26.039-8.030 40.727 0 25.918 9.19 49.69 24.489 68.235l-0.146-0.183v48.945c-10.060 2.878-21.614 4.533-33.555 4.533-69.839 0-126.455-56.616-126.455-126.455 0-0.547 0.003-1.092 0.010-1.637l-0.001 0.083v-69.961c-4.573-3.984-7.447-9.817-7.447-16.322 0-2.91 0.575-5.686 1.618-8.22l-0.052 0.144 11.762-35.281c5.295-13.384 16.081-23.612 29.505-28.040l0.337-0.096 5.269-42.16c4.084-31.766 30.958-56.062 63.506-56.062 0 0 0 0 0 0h47.004c2.735 0.090 5.326 0.34 7.866 0.742l-0.356-0.046zM1010.352 249.555l-70.819 49.571c-18.173-39.272-54.546-67.41-97.992-73.753l-0.693-0.083c14.011-17.84 22.585-40.532 22.921-65.213l0.001-0.076h144.23c8.837 0 16 7.163 16 16v0 47.34c-0.001 10.801-5.352 20.352-13.548 26.147l-0.1 0.067zM116.467 299.125l-70.819-49.571c-8.296-5.862-13.648-15.413-13.648-26.215v0-47.34c0-8.837 7.163-16 16-16v0h144.824c1.185 24.746 9.937 47.241 23.973 65.456l-0.201-0.272c-44.747 5.947-81.747 34.258-99.8 73.151l-0.329 0.791zM773.455 202.297c-13.924 10.547-58.512 47.348-94.453 77.188-29.443-33.897-72.541-55.268-120.636-55.484h-60.694c-48.237 0.222-91.415 21.695-120.684 55.531l-0.172 0.203c-36.762-30.304-82.34-67.828-94.272-77.437-16.096-10.821-26.545-28.963-26.545-49.546 0-0.114 0-0.228 0.001-0.343v0.018-40.426c0-8.837 7.163-16 16-16v0h512c8.837 0 16 7.163 16 16v0 40.426c0.088 1.147 0.139 2.484 0.139 3.833 0 19.598-10.626 36.714-26.43 45.902l-0.253 0.136zM340.633 507.977c8.558-20.091 23.145-36.239 41.462-46.535l0.481-0.249 21.307-97.656c9.736-43.507 48.024-75.536 93.792-75.536 0 0 0.001 0 0.001 0h60.648c0 0 0 0 0 0 45.768 0 84.055 32.028 93.671 74.895l0.121 0.64 21.307 97.656c18.799 10.544 33.386 26.693 41.706 46.16l0.237 0.624 8.96 24.047c2.746 5.341 4.356 11.654 4.356 18.343 0 16.707-10.042 31.068-24.42 37.377l-0.262 0.102v84.156c0 96-64 160-176 160s-176-64-176-160v-84.156c-14.639-6.411-24.682-20.772-24.682-37.479 0-6.689 1.61-13.001 4.463-18.572l-0.107 0.23z" />
-<glyph unicode="&#xe933;" glyph-name="adobepdf" d="M200.571 163.069c-65.7-20.885-113.75-73.848-130.451-94.215 0.202 3.96-6.842-8.705-6.842-8.705s2.706 3.609 6.842 8.705c-0.062-1.554-1.135-5.38-4.261-13.7-11.29-29.974 23.636-29.205 23.636-29.205 99.024 16.106 111.076 137.121 111.076 137.121zM767.851 265.049c-18.402 0.001-29.754-1.181-29.754-1.181 105.384-92.26 203.398-70.757 203.398-70.757 40.12 5.38-21.102 42.521-21.102 42.521-56.586 25.098-117.411 29.415-152.542 29.417zM407.732 514.149c0 0-38.052-198.070-85.604-256.815l263.733 42.154c0 0-131.431 126.545-178.128 214.661zM413.841 879.988c-0.327 0.031-0.655 0.025-0.984-0.018-2.95-0.391-5.989-3.865-8.935-12.118 0 0-14.213-73.113 21.382-194.629 0 0 30.308 96.404 7.495 170.219 0 0-8.827 35.592-18.958 36.546zM380.637 959.983c28.069 1.161 53.374-56.91 53.374-56.91 78.685-180.728 4.276-296.195 4.276-296.195 77.907-197.402 234.047-302.811 234.047-302.811 151.708 8.755 262.38-32.43 262.38-32.43 87.066-49.221 57.909-95.201 57.909-95.201-91.233-109.402-359.227 61.184-359.227 61.184l-345.434-62.554c-49.916-183.551-216.724-226.674-216.724-226.674-79.509-12.464-68.639 76.672-68.639 76.672 62.061 146.761 218.123 180.527 218.123 180.527 61.47 70.59 161.941 402.39 161.941 402.39-101.512 245.186-30.183 326.754-30.183 326.754 9.136 17.894 18.799 24.862 28.156 25.249z" />
-<glyph unicode="&#xe934;" glyph-name="contract" d="M167.399 282.158h323.415c0 0 5.916-31.909 7.353-37.842h-330.768c-8.671 0-15.672 7.017-15.672 15.688v6.483c0 8.652 7.001 15.67 15.672 15.67zM166.669 403.101h286.113c0.132-1.774 0.017-3.559-0.635-5.28l-12.548-32.574h-272.93c-8.657 0-15.674 7.020-15.674 15.692v6.469c0 8.674 7.018 15.694 15.674 15.694zM164.498 521.836h277.904l3.993-8.972c1.888-4.295 0.969-9.356-2.323-12.716l-16.156-16.154h-263.419c-8.654 0-15.671 7.016-15.671 15.687v6.482c0 8.653 7.018 15.672 15.671 15.672zM742.87 626.071c-99.615 0-180.35-80.744-180.35-180.355 0-99.603 80.734-180.406 180.35-180.406 99.632 0 180.386 80.803 180.386 180.406 0 99.611-80.754 180.355-180.386 180.355zM163.987 639.365h326.827v-33.951c0-1.354-0.266-2.641-0.701-3.878h-326.127c-8.672 0-15.674 7.018-15.674 15.674v6.483c0 8.672 7.001 15.672 15.674 15.672zM742.875 723.684c3.759 0 7.519-1.433 10.393-4.299l28.972-28.939c3.14-3.158 7.869-4.042 11.913-2.239l37.526 16.592c7.435 3.325 16.073-0.082 19.366-7.485l19.533-44.028c1.802-4.042 5.862-6.7 10.325-6.7h48.152c8.106 0 14.672-6.549 14.672-14.686v-41.002c0-4.444 2.755-8.405 6.865-9.992l38.264-14.768c7.585-2.91 11.36-11.448 8.437-18.999l-17.345-44.912c-1.619-4.176-0.617-8.922 2.541-12.079l34.069-34.019c5.747-5.749 5.747-15.071 0-20.819l-29.005-28.972c-3.109-3.108-4.010-7.853-2.206-11.897l16.592-37.477c3.291-7.47-0.050-16.124-7.486-19.415l-43.993-19.515c-4.077-1.805-6.732-5.884-6.732-10.343v-48.088c0-8.152-6.566-14.753-14.672-14.753h-1.653l94.603-227.368c2.038-4.911-2.941-9.792-7.803-7.617l-110.426 48.72c-3.726 1.637-8.021-0.099-9.523-3.827l-45.115-109.69c-2.054-5.047-9.154-5.047-11.261-0.050l-91.812 220.185c-0.382 0.984-0.484 2.036-0.717 3.005-1.989-0.284-3.96-0.25-5.933 0.235l-91.844-220.601c-2.089-4.981-9.207-4.981-11.245 0.032l-45.129 109.69c-1.537 3.71-5.833 5.514-9.557 3.845l-110.424-48.722c-4.88-2.155-9.843 2.723-7.822 7.6l93.452 224.563h-0.135c-8.103 0-14.687 6.601-14.687 14.753v40.97c0 4.428-2.738 8.422-6.866 9.974l-38.228 14.786c-7.602 2.909-11.363 11.43-8.454 18.981l17.327 44.947c1.586 4.159 0.583 8.871-2.559 12.029l-34.051 34.019c-5.714 5.747-5.714 15.070 0 20.819l29.040 29.006c3.090 3.125 3.959 7.903 2.188 11.913l-16.624 37.493c-3.276 7.403 0.049 16.108 7.467 19.415l44.060 19.465c4.078 1.805 6.7 5.848 6.7 10.311v48.17c0 8.137 6.584 14.686 14.687 14.686h41.002c4.396 0 8.39 2.742 9.96 6.884l14.767 38.246c2.924 7.552 11.447 11.328 19.031 8.42l44.93-17.309c4.178-1.654 8.922-0.62 12.080 2.522l34.002 34.036c2.874 2.866 6.633 4.299 10.392 4.299zM163.837 771.753h206.951c8.672 0 15.689-6.999 15.689-15.672v-6.483c0-8.673-7.017-15.674-15.689-15.674h-206.951c-8.672 0-15.691 7.002-15.691 15.674v6.483c0 8.673 7.019 15.672 15.691 15.672zM26.215 955.958h721.289c14.469 0 26.233-11.762 26.233-26.214v-178.013l-15.84 15.805c-3.942 3.927-9.156 6.099-14.72 6.099s-10.778-2.172-14.72-6.081l-22.858-22.891v122.357c0 11.462-9.34 20.785-20.819 20.785h-595.842c-11.462 0-20.784-9.323-20.784-20.785v-752.636c0-11.478 9.322-20.801 20.784-20.801h353.1l-28.353-68.155h-387.471c-14.452 0-26.215 11.765-26.215 26.233v878.084c0 14.452 11.763 26.214 26.215 26.214z" />
-<glyph unicode="&#xe935;" glyph-name="star2" d="M875.125 506.258l-204.547-148.578 77.998-240.192c0.65-1.932 1.025-4.157 1.025-6.47 0-11.561-9.372-20.932-20.932-20.932-0.003 0-0.006 0-0.009 0v0c-4.595 0.025-8.829 1.553-12.24 4.116l0.053-0.038-204.342 148.426-204.344-148.426c-3.358-2.525-7.592-4.053-12.182-4.078h-0.006c-0.002 0-0.004 0-0.006 0-11.562 0-20.934 9.373-20.934 20.934 0 2.312 0.375 4.536 1.067 6.616l-0.043-0.148 77.998 240.192-204.547 148.578c-5.239 3.837-8.603 9.966-8.603 16.88 0 11.522 9.34 20.862 20.862 20.862 0 0 0 0 0 0h252.793l78.1 240.5c2.803 8.438 10.625 14.417 19.843 14.417s17.040-5.978 19.8-14.27l0.042-0.147 78.099-240.5h252.793c11.521-0.003 20.859-9.343 20.859-20.864 0-6.913-3.362-13.041-8.54-16.837l-0.058-0.041z" />
-<glyph unicode="&#xe936;" glyph-name="list" d="M352 512v-128c0-17.673-14.327-32-32-32v0h-128c-17.673 0-32 14.327-32 32v0 128c0 17.673 14.327 32 32 32v0h128c17.673 0 32-14.327 32-32v0zM320 288h-128c-17.673 0-32-14.327-32-32v0-128c0-17.673 14.327-32 32-32v0h128c17.673 0 32 14.327 32 32v0 128c0 17.673-14.327 32-32 32v0zM320 800h-128c-17.673 0-32-14.327-32-32v0-128c0-17.673 14.327-32 32-32v0h128c17.673 0 32 14.327 32 32v0 128c0 17.673-14.327 32-32 32v0zM864 608h-416c-17.673 0-32-14.327-32-32v0-32c0-17.673 14.327-32 32-32v0h416c17.673 0 32 14.327 32 32v0 32c0 17.673-14.327 32-32 32v0zM864 800h-416c-17.673 0-32-14.327-32-32v0-32c0-17.673 14.327-32 32-32v0h416c17.673 0 32 14.327 32 32v0 32c0 17.673-14.327 32-32 32v0zM864 224h-416c-17.673 0-32-14.327-32-32v0-32c0-17.673 14.327-32 32-32v0h416c17.673 0 32 14.327 32 32v0 32c0 17.673-14.327 32-32 32v0zM864 416h-416c-17.673 0-32-14.327-32-32v0-32c0-17.673 14.327-32 32-32v0h416c17.673 0 32 14.327 32 32v0 32c0 17.673-14.327 32-32 32v0z" />
-<glyph unicode="&#xe937;" glyph-name="club" d="M817.469 804.797c-86.583 37.493-187.411 59.301-293.332 59.301-4.267 0-8.526-0.035-12.777-0.106l0.641 0.008c-3.61 0.062-7.869 0.098-12.136 0.098-105.922 0-206.75-21.808-298.239-61.179l4.907 1.879c-27.667-13.023-46.485-40.652-46.531-72.681v-236.115c0-250.109 316.188-419.392 329.656-426.469 6.476-3.484 14.171-5.531 22.344-5.531s15.868 2.047 22.6 5.657l-0.256-0.126c13.469 7.077 329.656 176.359 329.656 426.469v236.109c-0.046 32.035-18.864 59.664-46.042 72.48l-0.489 0.207zM713.506 551.148l-111.426-80.937 42.484-130.82c0.426-1.267 0.672-2.727 0.672-4.244 0-7.587-6.151-13.738-13.738-13.738-3.034 0-5.838 0.983-8.111 2.649l0.039-0.027-111.295 80.841-111.297-80.841c-2.235-1.639-5.039-2.622-8.073-2.622-7.587 0-13.738 6.151-13.738 13.738 0 1.517 0.246 2.977 0.7 4.341l-0.028-0.097 42.484 130.82-111.426 80.936c-3.448 2.527-5.662 6.562-5.662 11.114 0 7.587 6.15 13.737 13.736 13.738h137.703l42.533 130.969c1.844 5.558 6.995 9.495 13.065 9.495s11.221-3.938 13.037-9.398l0.028-0.097 42.533-130.969h137.703c7.587-0.001 13.736-6.151 13.736-13.738 0-4.552-2.214-8.587-5.624-11.087l-0.038-0.027z" />
-<glyph unicode="&#xe938;" glyph-name="clubs" d="M817.469 804.797c-86.583 37.493-187.411 59.301-293.332 59.301-4.267 0-8.526-0.035-12.777-0.106l0.641 0.008c-3.61 0.062-7.869 0.098-12.136 0.098-105.922 0-206.75-21.808-298.239-61.179l4.907 1.879c-27.667-13.023-46.485-40.652-46.531-72.681v-236.115c0-250.109 316.188-419.392 329.656-426.469 6.476-3.484 14.171-5.531 22.344-5.531s15.868 2.047 22.6 5.657l-0.256-0.126c13.469 7.077 329.656 176.359 329.656 426.469v236.109c-0.046 32.035-18.864 59.664-46.042 72.48l-0.489 0.207zM768 496c0-143.25-149.75-260.719-239.031-318l-17.344-11.109-17.28 11.156c-71.657 46.235-238.345 169.781-238.345 317.953v226.234l21.219 7.594c68.053 24.21 146.55 38.202 228.314 38.202 2.274 0 4.545-0.011 6.814-0.032l-0.346 0.003c1.582 0.013 3.452 0.020 5.324 0.020 82.158 0 161.049-13.986 234.422-39.708l-4.966 1.516 21.219-7.594zM713.506 551.148l-111.426-80.937 42.484-130.82c0.426-1.267 0.672-2.727 0.672-4.244 0-7.587-6.151-13.738-13.738-13.738-3.034 0-5.838 0.983-8.111 2.649l0.039-0.027-111.295 80.841-111.297-80.841c-2.235-1.639-5.039-2.622-8.073-2.622-7.587 0-13.738 6.151-13.738 13.738 0 1.517 0.246 2.977 0.7 4.341l-0.028-0.097 42.484 130.82-111.426 80.936c-3.448 2.527-5.662 6.562-5.662 11.114 0 7.587 6.15 13.737 13.736 13.738h137.703l42.533 130.969c1.844 5.558 6.995 9.495 13.065 9.495s11.221-3.938 13.037-9.398l0.028-0.097 42.533-130.969h137.703c7.587-0.001 13.736-6.151 13.736-13.738 0-4.552-2.214-8.587-5.624-11.087l-0.038-0.027z" />
-<glyph unicode="&#xe939;" glyph-name="filter" d="M938.112 731.733h-937.6l333.184-523.819v-271.915h245.376v273.067zM0 960h938.667v-183.424h-938.667v183.424z" />
-<glyph unicode="&#xe93a;" glyph-name="help" d="M512.085 960c-282.752 0-511.915-229.163-511.915-512.043 0-282.581 229.163-511.957 511.915-511.957s511.915 229.376 511.915 511.957c0 282.88-229.163 512.043-511.915 512.043zM585.429 100.309h-139.648v134.955h139.648v-134.955zM718.635 493.568c-11.776-16.811-34.517-38.272-68.053-64.469l-32.981-25.685c-18.048-13.995-29.952-30.379-35.925-49.024-3.755-11.819-5.76-30.208-6.059-55.125h-126.592c1.835 52.608 6.869 88.917 14.848 109.013 8.107 20.096 28.885 43.264 62.421 69.419l34.005 26.624c11.179 8.405 20.224 17.621 27.051 27.563 12.331 17.109 18.603 35.968 18.603 56.533 0 23.68-6.912 45.184-20.651 64.64-13.867 19.456-39.125 29.269-75.733 29.269-36.053 0-61.568-11.989-76.672-35.968-15.061-23.979-22.613-48.896-22.613-74.709h-134.997c3.755 88.661 34.731 151.552 92.928 188.629 36.736 23.68 81.92 35.499 135.509 35.499 70.357 0 128.853-16.853 175.36-50.432 46.549-33.664 69.845-83.499 69.845-149.461 0-40.491-10.155-74.581-30.293-102.315z" />
-<glyph unicode="&#xe93b;" glyph-name="history" d="M508.715 556.501h515.328v-515.285h-515.328v515.285zM446.379 624.555h324.693v86.101h-515.371v-515.328h190.677zM190.635 775.637h324.651v86.144h-515.285v-515.328h190.635z" />
-<glyph unicode="&#xe93c;" glyph-name="home" d="M876.885 390.997v-408.491h-249.515v308.139h-236.757v-308.139h-252.416v408.491l369.707 397.312zM1024 407.552l-512.981 552.448-194.048-208.299v72.192c0 4.523-3.413 8.149-7.595 8.149h-106.411c-4.224 0-7.595-3.584-7.595-8.149l0.299-202.581-195.669-210.176 33.024-35.499 477.952 513.365 480.085-516.821 32.939 35.371z" />
-<glyph unicode="&#xe93d;" glyph-name="globe" d="M388.544 743.172c-28.448-28.809-51.452-63.073-67.291-101.070l-0.777-2.102h-63.865c33.945 44.926 78.421 80.17 129.848 102.371l2.085 0.801zM218.906 576h81.85c-6.347-28.27-10.618-61.247-11.874-94.995l-0.030-1.005h-95.229c3.656 35.474 12.605 67.979 26.088 98.006l-0.805-2.006zM218.906 320c-12.678 28.021-21.627 60.526-25.169 94.637l-0.115 1.363h95.228c1.286-34.754 5.557-67.731 12.582-99.676l-0.678 3.676zM256.611 256h63.865c16.616-40.099 39.619-74.362 68.1-103.205l-0.033 0.033c-53.511 23.002-97.988 58.245-131.347 102.364l-0.586 0.808zM480 158.068c-37.056 25.495-67.243 58.29-89.018 96.499l-0.752 1.432h89.77zM480 320h-114.076c-7.272 28.429-12.009 61.37-13.155 95.221l-0.021 0.779h127.252zM480 480h-127.252c1.166 34.63 5.904 67.571 13.864 99.232l-0.688-3.232h114.076zM480 640h-89.77c22.527 39.642 52.714 72.436 88.791 97.294l0.978 0.637zM767.389 640h-63.872c-16.622 40.103-39.631 74.369-68.118 103.214l0.032-0.033c53.521-23.001 98.007-58.249 131.372-102.374l0.586-0.808zM544 737.926c37.050-25.497 67.233-58.289 89.008-96.493l0.752-1.432h-89.76zM544 576h114.072c7.273-28.428 12.012-61.369 13.159-95.221l0.021-0.779h-127.252zM544 416h127.252c-1.168-34.631-5.906-67.572-13.868-99.232l0.688 3.232h-114.072zM544 158.074v97.926h89.76c-22.527-39.637-52.71-72.429-88.782-97.288l-0.978-0.637zM635.432 152.818c28.454 28.812 51.464 63.079 67.309 101.080l0.777 2.101h63.872c-33.951-44.933-78.436-80.181-129.873-102.381l-2.085-0.801zM805.096 320h-81.853c6.349 28.27 10.621 61.246 11.877 94.995l0.030 1.005h95.228c-3.655-35.474-12.603-67.979-26.086-98.006l0.805 2.006zM735.148 480c-1.285 34.754-5.558 67.73-12.585 99.674l0.678-3.674h81.853c12.678-28.021 21.625-60.526 25.165-94.638l0.115-1.362zM896 448c0 212.077-171.923 384-384 384s-384-171.923-384-384c0-212.077 171.923-384 384-384v0c212.077 0 384 171.923 384 384v0z" />
-<glyph unicode="&#xe93e;" glyph-name="info" d="M512.043 960c-282.795 0-512.043-229.248-512.043-512s229.248-512 512.043-512c282.709 0 511.957 229.248 511.957 512s-229.248 512-511.957 512zM504.277 787.2c38.613 0 68.523-28.971 68.523-67.541 0-36.693-29.909-67.584-69.504-67.584-35.712 0-67.584 30.891-67.584 67.584 0.043 38.571 31.915 67.541 68.565 67.541zM635.563 152.917h-247.125v30.933c55.979 6.741 61.781 10.667 61.781 79.147v191.147c0 63.744-6.741 66.603-53.12 74.325v27.989c57.899 6.784 121.643 19.328 175.701 34.731v-328.235c0-66.645 4.779-71.424 62.763-79.147v-30.891z" />
-<glyph unicode="&#xe93f;" glyph-name="inbox" d="M816 800h-608c-44.164-0.048-79.952-35.836-80-79.995v-576.005c0.048-44.164 35.836-79.952 79.995-80h608.005c44.164 0.048 79.952 35.836 80 79.995v576.005c-0.048 44.164-35.836 79.952-79.995 80h-0.005zM800 384h-130.883c0 0 0 0-0.001 0-7.725 0-14.172-5.475-15.671-12.756l-0.018-0.103-26.856-134.281c-1.517-7.385-7.964-12.86-15.689-12.86 0 0 0 0-0.001 0h-197.766c0 0 0 0-0.001 0-7.725 0-14.172 5.475-15.671 12.756l-0.018 0.103-26.856 134.281c-1.517 7.385-7.964 12.86-15.689 12.86 0 0 0 0-0.001 0h-130.883v320h576z" />
-<glyph unicode="&#xe940;" glyph-name="save2" d="M178.857 170.418v-103.511h664.66v103.511zM270.958 958.932h127.786v-260.744h-127.786zM5.556 960h168.819v-312.888h669.074v312.888h175.017v-1023.936h-1012.91z" />
-<glyph unicode="&#xe941;" glyph-name="location" d="M507.349 960c-206.592 0-374.016-167.424-374.016-374.016 0-206.549 374.016-649.984 374.016-649.984s374.016 443.435 374.016 649.984c0 206.592-167.424 374.016-374.016 374.016zM510.635 394.752c-102.827 0-186.112 83.413-186.112 186.24s83.285 186.155 186.112 186.155c102.869 0 186.24-83.371 186.24-186.155 0-102.827-83.371-186.24-186.24-186.24z" />
-<glyph unicode="&#xe942;" glyph-name="menu" d="M870.4 755.2v-51.2c0-28.277-22.923-51.2-51.2-51.2v0h-614.4c-28.277 0-51.2 22.923-51.2 51.2v0 51.2c0 28.277 22.923 51.2 51.2 51.2v0h614.4c28.277 0 51.2-22.923 51.2-51.2v0zM819.2 550.4h-614.4c-28.277 0-51.2-22.923-51.2-51.2v0-51.2c0-28.277 22.923-51.2 51.2-51.2v0h614.4c28.277 0 51.2 22.923 51.2 51.2v0 51.2c0 28.277-22.923 51.2-51.2 51.2v0zM819.2 294.4h-614.4c-28.277 0-51.2-22.923-51.2-51.2v0-51.2c0-28.277 22.923-51.2 51.2-51.2v0h614.4c28.277 0 51.2 22.923 51.2 51.2v0 51.2c0 28.277-22.923 51.2-51.2 51.2v0z" />
-<glyph unicode="&#xe943;" glyph-name="newspaper" d="M400 512h352c8.837 0 16 7.163 16 16v0 128c0 8.837-7.163 16-16 16v0h-352c-8.837 0-16-7.163-16-16v0-128c0-8.837 7.163-16 16-16v0zM751.998 448h-128c-8.837 0-16-7.163-16-16v0-32c0-8.837 7.163-16 16-16v0h128c8.837 0 16 7.163 16 16v0 32c0 8.837-7.163 16-16 16v0zM751.998 320h-128c-8.837 0-16-7.163-16-16v0-32c0-8.837 7.163-16 16-16v0h128c8.837 0 16 7.163 16 16v0 32c0 8.837-7.163 16-16 16v0zM399.998 256h128c8.837 0 16 7.163 16 16v0 32c0 8.837-7.163 16-16 16v0h-128c-8.837 0-16-7.163-16-16v0-32c0-8.837 7.163-16 16-16v0zM864 800h-576c-0.005 0-0.012 0-0.018 0-17.663 0-31.982-14.319-31.982-31.982 0-0.006 0-0.013 0-0.019v0.001-544c0-17.673-14.327-32-32-32s-32 14.327-32 32v0 544c-35.327-0.047-63.953-28.673-64-63.995v-480.005c0.064-52.972 42.971-95.901 95.928-96h576.071c52.995 0.060 95.94 43.005 96 95.994v544.006c0 0.005 0 0.012 0 0.018 0 17.663-14.319 31.982-31.982 31.982-0.006 0-0.013 0-0.019 0h0.001zM832 224c-0.012-17.668-14.332-31.988-31.999-32h-485.47c3.465 9.51 5.469 20.489 5.469 31.935 0 0.023 0 0.045 0 0.068v-0.004 512h512zM399.998 384h128c8.837 0 16 7.163 16 16v0 32c0 8.837-7.163 16-16 16v0h-128c-8.837 0-16-7.163-16-16v0-32c0-8.837 7.163-16 16-16v0z" />
-<glyph unicode="&#xe944;" glyph-name="next" d="M342.4-64l-135.040 133.589 382.635 378.453-382.635 378.411 135.040 133.547 517.717-512-517.717-512z" />
-<glyph unicode="&#xe945;" glyph-name="pdf" d="M940.459 611.499h-344.96v344.917zM496.555 313.515c-13.995 0-22.997-1.237-28.331-2.432v-180.907c5.333-1.28 13.952-1.28 21.717-1.28 56.661-0.384 93.525 30.805 93.525 96.853 0.512 57.429-33.152 87.765-86.912 87.765zM254.805 314.325c-12.715 0-21.376-1.195-25.899-2.432v-81.707c5.333-1.152 11.904-1.621 20.949-1.621 33.237 0 53.717 16.853 53.717 45.184-0.043 25.429-17.664 40.576-48.768 40.576zM506.624 534.229v425.771h-428.416v-1024h862.251l1.408 598.229h-435.243zM340.096 209.749c-21.333-20.139-52.907-29.141-89.813-29.141-8.192 0-15.616 0.384-21.376 1.237v-98.859h-61.909v272.811c19.328 3.285 46.336 5.76 84.48 5.76 38.528 0 66.091-7.424 84.48-22.229 17.707-13.909 29.525-36.864 29.525-63.957s-8.96-50.048-25.387-65.621zM604.075 115.797c-29.227-24.192-73.515-35.712-127.659-35.712-32.384 0-55.381 2.048-70.955 4.139v271.573c22.912 3.712 52.864 5.76 84.437 5.76 52.48 0 86.656-9.472 113.28-29.568 28.715-21.291 46.763-55.339 46.763-104.192 0-52.949-19.328-89.429-45.867-112zM860.245 308.267h-106.24v-63.189h99.243v-50.901h-99.243v-111.104h-62.763v276.48h169.003v-51.285z" />
-<glyph unicode="&#xe946;" glyph-name="phone" d="M1024 221.397l-259.072 127.061c0 0-95.317-141.696-117.291-136.875-12.245 2.731-13.909 3.072-24.491 7.339-38.016 15.232-132.395 58.581-221.227 138.923l-0.725-0.853c-87.765 79.701-140.032 168.107-158.848 204.075-5.291 9.941-5.888 11.691-9.856 23.552-7.125 21.376 124.117 130.688 124.117 130.688l-152.96 244.693c0 0-202.795-15.744-203.648-217.515-1.109-275.328 239.403-501.589 239.403-501.589 130.816-119.979 325.803-272.683 589.056-244.48 200.661 21.504 195.541 224.981 195.541 224.981z" />
-<glyph unicode="&#xe947;" glyph-name="pictures" d="M490.078 477.525c115.421-29.010 218.49-140.465 249.026-175.898v112.194h74.003v-130.009h48.004v-60.007h-440.037v60.007h69.004zM146.397 671.379l-74.038-7.249 70.472-612.97 63.542 6.188zM778.103 777.091c45.819 0 83.007-37.202 83.007-83.032 0-45.824-37.188-83.026-83.007-83.026-45.814 0-83.003 37.202-83.003 83.026 0 45.83 37.188 83.032 83.003 83.032zM270.261 791.335l-68.169-6.625 68.169-698.111v596.849h-0.031c0 25.314 0 47.128 0 64.443h0.031zM336.703 851.095v-725.174h621.029v725.174h-71.381zM270.261 915.353h753.883v-853.631h-102.797l-708.662-69.13-0.089 0.931-129.677-12.684-82.919 740.739 140.175 13.684-10.439 106.832 140.525 13.751z" />
-<glyph unicode="&#xe948;" glyph-name="preview" d="M536.547 517.926c-30.9 0.726-62.232-8.88-88.437-29.489-59.822-47.104-70.185-133.811-23.081-193.667 47.081-59.864 133.78-70.206 193.644-23.114 59.865 47.082 70.206 133.781 23.093 193.645-26.478 33.675-65.49 51.691-105.219 52.625zM538.726 613.216c67.184-1.571 133.166-32.023 177.966-88.966 65.688-83.518 65.148-197.824 6.125-280.044l181.343-230.475-98.801-77.731-180.695 229.626c-94.572-40.282-207.937-14.438-274.56 70.206-79.646 101.242-62.158 247.856 39.081 327.512 44.306 34.845 97.287 51.093 149.541 49.871zM401.39 960h293.395c48.093 0 87.102-39.020 87.102-87.094v-310.935l-1.026 1.139c-18.362 19.89-39.475 37.484-62.783 52.259l-5.886 3.635v253.901c0 9.582-7.835 17.418-17.406 17.418h-288.834l-4.688-151.962c0 0-6.062-100.469-116.792-88.332l-94.904 2.562v-431.702c0-9.613 7.831-17.395 17.457-17.395h66.443l2.227-3.174c17.178-23.856 37.929-45.261 61.534-63.539l3.935-2.973h-134.139c-48.116 0-87.104 38.987-87.104 87.082v442.14l34.5 36.386 0.033 0.978 180.748 189.93h-0.501l-48.323-50.992 50.626 53.657h0.731l1.592 1.68h0.157z" />
-<glyph unicode="&#xe949;" glyph-name="print" d="M973.397 797.269h-922.837c-27.947 0-50.56-22.699-50.56-50.603v-455.083c0-27.904 22.613-50.603 50.56-50.603h108.885v-245.675h700.032v245.675h113.963c27.861 0 50.56 22.656 50.56 50.603v455.083c-0.043 27.904-22.699 50.603-50.603 50.603zM816.811 38.016h-614.699v467.925h614.699v-467.925zM263.125 960h497.664v-105.643h-497.664v105.643z" />
-<glyph unicode="&#xe94a;" glyph-name="refresh" d="M765.525 413.483v-21.419c0-170.667-138.88-309.461-309.504-309.461s-309.376 138.795-309.376 309.461c0 164.309 128.853 298.752 290.731 308.523v-127.104l330.539 193.237-330.539 193.28v-112.768c-242.773-9.899-437.376-209.963-437.376-455.168 0-251.435 204.629-456.064 456.021-456.064 251.563 0 456.107 204.629 456.107 456.064v21.419h-146.603z" />
-<glyph unicode="&#xe94b;" glyph-name="refresh1" d="M52.792 372.94l305.626-142.043-82.934-58.161c66.040-57.201 150.125-92.904 239.010-92.904 170.667 0 320.024 111.523 355.348 274.105l5.567 12.477h148.59l-6.911-25.146c-42.619-239.362-253.984-399.833-502.594-399.833-139.375 0-268.575 55.282-363.219 150.489l-69.687-47.028zM509.495 954.625c139.562 0 268.569-52.99 363.21-148.217l69.686 51.26 28.796-319.666-305.619 123.067 82.931 56.255c-66.040 57.213-150.121 88.892-239.005 88.892-170.664 0-320.019-118.844-355.341-281.652l-5.568-27.456h-148.586l6.911 41.279c42.617 239.413 253.979 416.239 502.585 416.239z" />
-<glyph unicode="&#xe94c;" glyph-name="settings" d="M827.952 118.091l-19.911-19.927v-28.218l19.911-19.93h28.252l19.943 19.93v28.218l-19.943 19.927zM668.408 424.953l241.775-241.732c46.182-46.214 46.182-121.061 0-167.241-46.182-46.162-121.064-46.162-167.246 0l-268.686 268.676 66.22 66.168 59.574-59.586 72.931 72.974-5.4 10.615c-8.245 16.152-7.543 34.816 0.832 50.124zM871.565 890.932l152.509-152.479-276.639-276.67c-26.398 13.517-59.509 9.266-81.624-12.835-22.085-22.083-26.334-55.209-12.815-81.575l-52.958-52.955-59.605 59.59-251.618-251.667 2.432-2.413-4.283-25.536-107.576-75.725-25.986 25.983 74.117 109.187 25.563 4.251 2.4-2.43 251.679 251.635-59.604 59.6 52.926 52.943c26.43-13.505 59.541-9.253 81.626 12.832 22.083 22.1 26.332 55.24 12.815 81.621zM222.013 926.127c56.278-0.222 112.475-21.793 155.409-64.723 55.579-55.576 75.203-133.3 59.255-204.709l121.417-121.445c-7.766-4.219-16.428-6.745-25.537-6.745-8.532 0-17.003 2.064-24.546 5.93l-10.643 5.464-72.964-73.007 59.638-59.557-66.256-66.203-148.361 148.335c-71.398-15.929-149.126 3.677-204.705 59.237-57.241 57.237-76.513 138.076-57.816 211.215l154.337-154.378 108.666 50.701 50.684 108.645-154.395 154.344c18.289 4.67 37.058 6.969 55.817 6.895z" />
-<glyph unicode="&#xe94d;" glyph-name="sort" d="M0 404.096h170.667v-468.096h-170.667v468.096zM426.667 667.435h170.667v-731.435h-170.667v731.435zM853.333 960h170.667v-1024h-170.667v1024z" />
-<glyph unicode="&#xe94e;" glyph-name="squares" d="M928 752v-416c-0.171-56.042-41.533-102.371-95.391-110.309l-0.609-0.074v526.383c-0.114 8.79-7.21 15.886-15.989 16h-526.394c8.012 54.467 54.341 95.829 110.365 96h416.018c61.825-0.077 111.923-50.175 112-111.993v-0.007zM768 592v-416c-0.077-61.825-50.175-111.923-111.993-112h-416.007c-61.825 0.077-111.923 50.175-112 111.993v416.007c0.077 61.825 50.175 111.923 111.993 112h416.007c61.825-0.077 111.923-50.175 112-111.993v-0.007zM672 592c-0.114 8.79-7.21 15.886-15.989 16h-416.011c-8.79-0.114-15.886-7.21-16-15.989v-416.011c0.114-8.79 7.21-15.886 15.989-16h416.011c8.79 0.114 15.886 7.21 16 15.989v0.011z" />
-<glyph unicode="&#xe94f;" glyph-name="sync" d="M1024 306.56l-108.971 210.859-206.208-106.581 120.277-38.869c-37.803-144.64-169.088-251.861-325.419-251.861-101.248 0-196.139 44.971-260.437 123.307l-69.376-56.96c81.408-99.243 201.643-156.117 329.813-156.117 191.019 0 356.309 132.608 410.453 306.048l109.867-29.824zM194.859 518.528c37.717 144.597 169.045 251.819 325.376 251.819 101.205 0 196.139-44.928 260.437-123.307l69.419 56.96c-81.408 99.243-201.643 156.117-329.813 156.117-190.976 0-352.725-135.296-406.912-308.651l-113.365 32.427 108.971-210.859 206.165 106.581-120.277 38.912z" />
-<glyph unicode="&#xe950;" glyph-name="target" d="M867.883 704c8.836 0 16.836 3.582 22.627 9.373l59.314 59.314c2.895 2.895 4.685 6.895 4.685 11.313 0 8.836-7.163 16-15.999 16h-74.51v74.514c0 0.001 0 0.001 0 0.002 0 8.837-7.163 16-16 16-4.419 0-8.419-1.791-11.315-4.687l-59.312-59.315c-5.791-5.791-9.373-13.79-9.373-22.627v0-54.637l-8.682-8.682c-66.1 55.804-152.254 89.721-246.331 89.721-211.532 0-383.013-171.481-383.013-383.013s171.481-383.013 383.013-383.013c211.532 0 383.013 171.481 383.013 383.013 0 72.509-20.149 140.312-55.153 198.116l0.96-1.709-46.795-46.795c23.581-43.637 37.44-95.518 37.44-150.635 0-177.696-144.051-321.748-321.748-321.748s-321.748 144.051-321.748 321.748c0 177.696 144.051 321.748 321.748 321.748 77.466 0 148.538-27.377 204.069-72.983l-0.561 0.447-45.632-45.632c-42.666 33.743-97.239 54.138-156.575 54.167h-0.007c-0.073 0-0.159 0-0.245 0-141.52 0-256.245-114.725-256.245-256.245s114.725-256.245 256.245-256.245c141.52 0 256.245 114.725 256.245 256.245 0 36.602-7.674 71.412-21.501 102.908l0.644-1.645-50.189-50.189c4.507-15.547 7.099-33.406 7.099-51.87 0-106.616-86.429-193.044-193.044-193.044s-193.044 86.429-193.044 193.044c0 106.616 86.429 193.044 193.044 193.044 41.993 0 80.855-13.408 112.537-36.178l-0.576 0.393-46.351-46.352c-18.44 11.276-40.73 18.003-64.582 18.133h-0.036c-70.692 0-128-57.308-128-128s57.308-128 128-128c70.692 0 128 57.308 128 128v0c-0.13 23.888-6.857 46.178-18.449 65.174l0.316-0.557 191.383 191.383zM512 384c-35.346 0-64 28.654-64 64s28.654 64 64 64v0c5.857-0.082 11.479-0.948 16.81-2.498l-0.446 0.111-21.457-21.457c-5.79-5.79-9.372-13.789-9.372-22.625 0-17.671 14.325-31.997 31.997-31.997 8.836 0 16.835 3.581 22.625 9.372v0l21.457 21.457c1.438-4.884 2.304-10.506 2.386-16.318l0.001-0.046c-0.047-35.327-28.673-63.953-63.995-64h-0.005z" />
-<glyph unicode="&#xe951;" glyph-name="time" d="M512 960c-282.752 0-512-229.248-512-512s229.248-512 512-512c282.752 0 512 229.248 512 512s-229.248 512-512 512zM861.824 418.816h-390.869v403.371h42.667v-360.704h348.203v-42.667z" />
-<glyph unicode="&#xe952;" glyph-name="transfer" d="M972.787 322.202l51.141-51.136-295.574-294.437-138.072 136.86 51.107 51.119c0 0 81.652-86.835 86.997-86.835 5.34 0 244.402 244.429 244.402 244.429zM433.081 793.707l-192.599-230.97h111.931v-323.461h161.302v323.461h111.991zM433.047 919.323c239.186 0 433.093-193.895 433.093-433.081 0-81.083-23.718-156.114-62.494-221.015-27.965-28.28-54.138-54.651-74.932-75.415-9.547 9.983-85.636 90.649-85.636 90.649l-167.019-167.223 49.948-49.499c-30.010-6.592-60.961-10.557-92.96-10.557-239.186 0-433.047 193.873-433.047 433.059s193.862 433.081 433.047 433.081z" />
-<glyph unicode="&#xe953;" glyph-name="trash" d="M979.499 870.955h-267.179c0 27.051 5.205 89.045-51.925 89.045h-252.032c-56.789 0-52.139-61.995-52.139-89.045h-267.093c-29.355 0-44.501-61.995-44.501-89.003h979.371c0 26.965-15.147 89.003-44.501 89.003zM133.632 737.408l-2.347-745.387c0-30.933 27.179-56.021 60.715-56.021h683.989c33.579 0 60.757 25.088 60.757 55.979l-1.792 745.387h-801.323zM311.723 25.173h-89.045v623.189h89.045v-623.189zM489.771 25.173h-89.045v623.189h89.003v-623.189zM667.819 25.173h-89.045v623.189h89.045v-623.189zM845.909 25.173h-89.003v623.189h89.003v-623.189z" />
-<glyph unicode="&#xe954;" glyph-name="upload5" d="M1024-63.915l-1024-0.085v428.672l153.6 0.171v-275.243l718.421-0.768v275.84l151.979 0.085zM411.989 574.933v-279.509h192.512v279.509h211.456l-303.957 385.067-303.915-385.067z" />
-<glyph unicode="&#xe955;" glyph-name="user2" d="M784 832h-544c-61.825-0.077-111.923-50.175-112-111.993v-544.007c0.077-61.825 50.175-111.923 111.993-112h544.007c61.825 0.077 111.923 50.175 112 111.993v544.007c-0.077 61.825-50.175 111.923-111.993 112h-0.007zM384 506.039v69.961c0 70.692 57.308 128 128 128s128-57.308 128-128v0-69.961c4.573-3.984 7.447-9.818 7.447-16.322 0-2.91-0.575-5.686-1.618-8.22l0.052 0.144-11.762-35.281c-5.297-13.384-16.083-23.612-29.504-28.044l-0.337-0.096-5.269-42.156c-4.083-31.765-30.956-56.062-63.504-56.062-0.001 0-0.002 0-0.002 0h-47.004c-0.001 0-0.001 0-0.002 0-32.548 0-59.421 24.298-63.47 55.744l-0.034 0.32-5.27 42.156c-13.759 4.528-24.544 14.757-29.729 27.818l-0.113 0.323-11.762 35.281c-0.99 2.39-1.565 5.165-1.565 8.075 0 6.504 2.873 12.338 7.42 16.3l0.026 0.022zM736 176c0-8.837-7.163-16-16-16v0h-416c-8.837 0-16 7.163-16 16v0 62.68c0.001 21.603 10.705 40.706 27.098 52.295l0.201 0.135 57.17 40.016c20.522-44.54 64.704-74.939 116.007-75.125h47.024c51.327 0.185 95.509 30.585 115.704 74.332l0.328 0.793 57.17-40.016c16.594-11.724 27.298-30.827 27.298-52.43v0z" />
-<glyph unicode="&#xe956;" glyph-name="usergroup" d="M785.038 462.096h101.5c75.938 0 137.461-61.541 137.461-137.487v-180.049h-235.36v175.248c0 50.831-17.644 97.528-46.896 134.653 13.706 4.552 28.042 7.635 43.294 7.635zM137.483 462.096h101.522c10.666 0 20.915-1.499 30.915-3.802-31.125-37.687-49.792-85.934-49.792-138.487v-175.248h-220.128v180.049c0 75.946 61.606 137.487 137.483 137.487zM438.126 499.344h132.521c99.144 0 179.497-80.365 179.497-179.531v-235.093h-491.536v235.093c0 99.166 80.354 179.531 179.518 179.531zM839.089 701.056c61.432 0 111.263-49.845 111.263-111.291 0-61.491-49.831-111.333-111.263-111.333-61.479 0-111.329 49.843-111.329 111.333 0 61.446 49.85 111.291 111.329 111.291zM191.524 701.056c61.442 0 111.276-49.845 111.276-111.291 0-61.491-49.834-111.333-111.276-111.333-61.482 0-111.316 49.843-111.316 111.333 0 61.446 49.834 111.291 111.316 111.291zM508.642 811.36c2.509 0 5.002-0.064 7.48-0.189s4.938-0.313 7.381-0.561c2.443-0.248 4.868-0.557 7.274-0.924s4.792-0.794 7.158-1.278c2.366-0.484 4.71-1.025 7.032-1.623s4.622-1.251 6.898-1.958c2.276-0.708 4.527-1.47 6.754-2.285s4.427-1.683 6.601-2.602c2.174-0.919 4.321-1.89 6.439-2.91s4.208-2.091 6.267-3.209c2.060-1.119 4.089-2.286 6.087-3.499s3.964-2.474 5.898-3.78c1.933-1.306 3.833-2.657 5.699-4.052s3.696-2.834 5.491-4.315c1.795-1.481 3.553-3.004 5.274-4.568s3.404-3.169 5.048-4.812c1.644-1.644 3.249-3.327 4.813-5.047s3.088-3.479 4.569-5.274c1.481-1.795 2.92-3.625 4.315-5.491s2.747-3.765 4.053-5.698c1.306-1.933 2.567-3.899 3.781-5.897s2.381-4.027 3.5-6.087c1.119-2.059 2.19-4.149 3.21-6.267s1.992-4.265 2.911-6.438c0.92-2.174 1.788-4.374 2.603-6.601s1.578-4.478 2.285-6.754c0.708-2.276 1.361-4.575 1.959-6.898s1.139-4.667 1.623-7.032c0.484-2.366 0.911-4.752 1.278-7.158s0.676-4.831 0.924-7.275c0.248-2.443 0.436-4.904 0.561-7.382s0.189-4.972 0.189-7.48c0-2.508-0.064-5.001-0.189-7.477s-0.313-4.937-0.561-7.379c-0.248-2.442-0.557-4.867-0.924-7.272s-0.794-4.791-1.278-7.156c-0.484-2.365-1.026-4.709-1.623-7.030s-1.251-4.62-1.959-6.895c-0.708-2.275-1.47-4.526-2.285-6.752s-1.683-4.426-2.603-6.599c-0.919-2.173-1.89-4.319-2.911-6.437s-2.091-4.207-3.21-6.266c-1.119-2.059-2.286-4.088-3.5-6.085s-2.475-3.963-3.781-5.896c-1.306-1.933-2.658-3.832-4.053-5.697s-2.834-3.695-4.315-5.489c-1.481-1.794-3.005-3.552-4.569-5.273s-3.169-3.403-4.813-5.047c-1.644-1.644-3.327-3.248-5.048-4.812s-3.48-3.087-5.274-4.567c-1.795-1.481-3.626-2.919-5.491-4.314s-3.766-2.746-5.699-4.051c-1.933-1.306-3.9-2.566-5.898-3.78s-4.028-2.381-6.087-3.499c-2.060-1.119-4.149-2.189-6.267-3.209s-4.265-1.991-6.439-2.91c-2.174-0.919-4.375-1.787-6.601-2.602s-4.478-1.577-6.754-2.285c-2.276-0.708-4.575-1.361-6.898-1.958s-4.667-1.139-7.032-1.623c-2.366-0.484-4.752-0.91-7.158-1.278s-4.831-0.676-7.274-0.924c-2.443-0.248-4.904-0.436-7.381-0.561s-4.971-0.189-7.48-0.189c-2.508 0-5.001 0.064-7.478 0.189s-4.937 0.313-7.379 0.561c-2.442 0.248-4.867 0.557-7.272 0.924s-4.791 0.794-7.156 1.278c-2.365 0.484-4.709 1.025-7.030 1.623s-4.621 1.251-6.896 1.958c-2.275 0.708-4.526 1.47-6.752 2.285s-4.426 1.683-6.599 2.602c-2.173 0.919-4.319 1.89-6.437 2.91s-4.207 2.091-6.266 3.209c-2.059 1.119-4.088 2.285-6.085 3.499s-3.963 2.474-5.896 3.78c-1.933 1.306-3.832 2.657-5.697 4.051s-3.695 2.833-5.49 4.314c-1.794 1.481-3.552 3.004-5.273 4.567s-3.403 3.168-5.047 4.812c-1.644 1.644-3.248 3.326-4.812 5.047s-3.087 3.478-4.567 5.273c-1.481 1.794-2.919 3.625-4.314 5.489s-2.746 3.765-4.052 5.697c-1.306 1.933-2.566 3.898-3.78 5.896s-2.381 4.026-3.499 6.085c-1.119 2.059-2.189 4.148-3.209 6.266s-1.991 4.264-2.91 6.437c-0.919 2.173-1.787 4.373-2.602 6.599s-1.577 4.477-2.285 6.752c-0.708 2.275-1.361 4.574-1.958 6.895s-1.139 4.665-1.623 7.030c-0.484 2.365-0.91 4.75-1.278 7.156s-0.676 4.83-0.924 7.272c-0.248 2.442-0.436 4.903-0.561 7.379s-0.189 4.97-0.189 7.477c0 2.509 0.064 5.003 0.189 7.48s0.313 4.939 0.561 7.382c0.248 2.443 0.557 4.869 0.924 7.275s0.794 4.792 1.278 7.158c0.484 2.366 1.025 4.71 1.623 7.032s1.251 4.622 1.958 6.898c0.708 2.276 1.47 4.527 2.285 6.754s1.683 4.427 2.602 6.601c0.919 2.174 1.89 4.32 2.91 6.438s2.091 4.208 3.209 6.267c1.119 2.059 2.285 4.089 3.499 6.087s2.474 3.964 3.78 5.897c1.306 1.933 2.657 3.833 4.052 5.698s2.833 3.696 4.314 5.491c1.481 1.795 3.004 3.553 4.567 5.274s3.168 3.404 4.812 5.047c1.644 1.644 3.326 3.248 5.047 4.812s3.479 3.087 5.273 4.568c1.794 1.481 3.625 2.92 5.49 4.315s3.765 2.746 5.697 4.052c1.933 1.306 3.898 2.566 5.896 3.78s4.026 2.381 6.085 3.499c2.059 1.119 4.148 2.189 6.266 3.209s4.264 1.991 6.437 2.91c2.173 0.919 4.373 1.787 6.599 2.602s4.477 1.577 6.752 2.285c2.275 0.708 4.574 1.361 6.896 1.958s4.665 1.139 7.030 1.623c2.365 0.484 4.751 0.91 7.156 1.278s4.83 0.676 7.272 0.924c2.442 0.248 4.903 0.436 7.379 0.561s4.97 0.189 7.478 0.189z" />
-<glyph unicode="&#xe957;" glyph-name="viewpdf" d="M186.878 198.357c-61.858-18.302-107.102-64.709-122.827-82.566 0.191 3.469-6.445-7.624-6.445-7.624s2.548 3.151 6.445 7.624c-0.066-1.354-1.068-4.711-4.028-12.017-10.629-26.259 22.267-25.589 22.267-25.589 93.244 14.117 104.589 120.172 104.589 120.172zM721.065 287.733c-17.328 0.001-28.016-1.035-28.016-1.035 99.242-80.847 191.531-62.003 191.531-62.003 37.782 4.708-19.861 37.254-19.861 37.254-53.296 21.995-110.573 25.78-143.653 25.783zM381.96 506.055c0 0-35.839-173.585-80.605-225.069l248.329 36.937c0 0-123.752 110.91-167.724 188.132zM845.111 705.497c4.827 0.315 10.331-1.799 16.15-6.633l38.243-31.943c18.558-15.55 48.954-40.949 67.525-56.433l38.272-31.99c18.607-15.533 18.321-40.666-0.508-55.8l-38.832-31.256c-18.859-15.249-49.683-40.059-68.539-55.228l-38.835-31.239c-18.822-15.249-34.021-2.515-33.753 28.201l0.526 59.012h-225.156c-15.85 0-28.705 12.878-28.705 28.729v62.246c0 15.834 12.855 28.694 28.705 28.694h226.241l0.506 59.362c0.198 21.13 7.54 33.585 18.16 34.279zM386.788 826.673c-2.777-0.341-5.637-3.384-8.408-10.615 0 0-13.398-64.091 20.135-170.59 0 0 28.535 84.507 7.050 149.183 0 0-8.859 33.241-18.777 32.022zM356.447 896.795c26.43 1.014 50.261-49.878 50.261-49.878 74.083-158.383 4.029-259.586 4.029-259.586 73.367-173.011 220.388-265.396 220.388-265.396 142.849 7.671 247.075-28.422 247.075-28.422 81.976-43.129 54.534-83.444 54.534-83.444-85.921-95.871-338.276 53.635-338.276 53.635l-325.281-54.828c-46.998-160.866-204.075-198.666-204.075-198.666-74.88-10.915-64.627 67.21-64.627 67.21 58.439 128.623 205.395 158.211 205.395 158.211 57.879 61.876 152.495 352.67 152.495 352.67-95.602 214.882-28.427 286.37-28.427 286.37 8.602 15.68 17.701 21.786 26.511 22.124z" />
-<glyph unicode="&#xe958;" glyph-name="warning" d="M1001.173 174.123l-384.981 666.88c-26.709 46.293-63.659 71.808-104.021 71.808s-77.312-25.472-104.064-71.765l-385.024-666.923c-26.709-46.293-30.336-91.051-10.155-125.952 20.181-34.944 60.715-54.229 114.176-54.229h770.048c53.461 0 93.995 19.243 114.176 54.187 20.139 34.944 16.555 79.701-10.155 125.995zM514.645 79.403c-35.797 0-64.768 28.971-64.768 64.811 0 35.669 28.971 64.683 64.768 64.683 35.755 0 64.768-29.013 64.768-64.683-0.043-35.84-29.056-64.811-64.768-64.811zM604.459 648.533c0 0-35.712-354.901-35.712-355.456l-0.043-0.555h-0.043c-1.28-26.155-25.557-47.061-55.424-47.061-30.848 0-55.765 22.101-55.765 49.195 0 0.811-33.536 353.92-33.536 353.92v0.128c0 49.835 40.363 90.283 90.24 90.283 49.792 0 90.24-40.448 90.24-90.283 0.043-0.085 0.043-0.128 0.043-0.171z" />
-<glyph unicode="&#xe959;" glyph-name="website" d="M512.043 960c-282.709 0-512.043-229.248-512.043-512s229.291-512 512-512c282.709 0 512 229.248 512 512s-229.248 512-511.957 512zM470.229 375.808c0 0-158.677 36.693-189.568 98.603-62.208 124.715-69.589 100.608-77.227 139.221-7.893 38.656 3.797 117.973 3.797 117.973s-1.92-15.488 75.307 84.992c54.997 71.296 183.509 45.909 228.181 30.891 18.517-6.101-79.189 0-83.2-52.224-3.797-52.096 7.893-44.501 52.309-56.021 44.587-11.52 42.581 90.965 42.581 90.965l67.627-40.619 25.216-25.216c0 0 6.997-62.635-15.616-90.88-25.771-32.384-60.416-32.085-65.579-88.875-3.84-41.515 3.797-110.208 3.797-110.208s-8.789-11.392-21.291-1.877c-17.707 13.397-36.608 36.48-50.219 63.744-23.168 46.464-90.88 13.525-92.8 7.765-37.376-112.256 98.603-135.296 98.603-135.296l-1.92-32.939zM530.048-10.923c7.808 30.933 85.205 100.608 69.589 131.499-15.36 30.933-46.293 30.933-77.227 54.187-31.019 23.168-33.579 95.317 15.403 139.179 46.507 41.6 100.608 46.379 100.608 46.379s100.48-30.891 131.371-38.571c31.019-7.808 100.608 15.36 100.608-38.699 0.043-201.259-347.989-324.949-340.352-293.973z" />
-<glyph unicode="&#xe95a;" glyph-name="map" d="M672 768l-320 128-352-128v-768l352 128 320-128 352 128v768l-352-128zM384 814.27l256-102.4v-630.138l-256 102.398v630.14zM64 723.172l256 93.090v-631.8l-256-93.088v631.798zM960 172.828l-256-93.092v631.8l256 93.090v-631.798z" />
-<glyph unicode="&#xe95b;" glyph-name="profile" d="M864 960h-768c-52.8 0-96-43.2-96-96v-832c0-52.8 43.2-96 96-96h768c52.8 0 96 43.2 96 96v832c0 52.8-43.2 96-96 96zM832 64h-704v768h704v-768zM256 384h448v-64h-448zM256 256h448v-64h-448zM320 672c0 53.019 42.981 96 96 96s96-42.981 96-96c0-53.019-42.981-96-96-96s-96 42.981-96 96zM480 576h-128c-52.8 0-96-28.8-96-64v-64h320v64c0 35.2-43.2 64-96 64z" />
-<glyph unicode="&#xe95c;" glyph-name="drawer" d="M1016.988 307.99l-256 320c-6.074 7.592-15.266 12.010-24.988 12.010h-448c-9.72 0-18.916-4.418-24.988-12.010l-256-320c-4.538-5.674-7.012-12.724-7.012-19.99v-288c0-35.346 28.654-64 64-64h896c35.348 0 64 28.654 64 64v288c0 7.266-2.472 14.316-7.012 19.99zM960 256h-224l-128-128h-192l-128 128h-224v20.776l239.38 299.224h417.24l239.38-299.224v-20.776zM736 448h-448c-17.672 0-32 14.328-32 32s14.328 32 32 32h448c17.674 0 32-14.328 32-32s-14.326-32-32-32zM800 320h-576c-17.672 0-32 14.326-32 32s14.328 32 32 32h576c17.674 0 32-14.326 32-32s-14.326-32-32-32z" />
-<glyph unicode="&#xe95d;" glyph-name="licenses" d="M474.069 231.66h366.727v-43.762h-366.727zM281.015 307.571c61.647-15.992 110.586-63.489 128.634-124.244h-348.516c17.567 59.114 64.317 105.482 123.551 122.699 4.828-30.41 24.485-53.289 48.071-53.289 23.967 0 43.886 23.589 48.26 54.834zM622.678 358.968h216.735v-43.787h-216.735zM233.593 441.402c34.812 0 63.031-28.213 63.031-63.054 0-34.81-28.219-62.994-63.031-62.994-34.782 0-62.967 28.184-62.967 62.994 0 34.84 28.185 63.054 62.967 63.054zM0 656.655h639.506c2.54-3.345 5.503-6.497 9.041-9.073l36.645-26.608h-650.605v-505.121h831.009v374.039l38.706-28.091v-383.593h-904.303zM842.342 817.792c5.468 0 10.294-3.507 11.935-8.719l36.842-113.291h119.14c5.468 0 10.294-3.538 11.967-8.721 1.675-5.179-0.161-10.841-4.569-14.060l-96.36-70.015 36.807-113.323c1.673-5.145-0.163-10.841-4.569-14.026-2.189-1.611-4.828-2.382-7.433-2.382-2.575 0-5.147 0.771-7.368 2.382l-96.392 70.046-96.363-70.046c-2.221-1.611-4.794-2.382-7.401-2.382-2.604 0-5.243 0.771-7.43 2.382-4.379 3.185-6.242 8.881-4.537 14.026l36.805 113.323-96.36 70.015c-4.438 3.219-6.242 8.881-4.633 14.060 1.772 5.182 6.563 8.721 12.034 8.721h119.11l36.837 113.291c1.673 5.212 6.466 8.719 11.937 8.719z" />
-<glyph unicode="&#xe95e;" glyph-name="lictransfer" d="M474.754 237.548h372.127v-44.437h-372.127zM278.856 314.562c62.557-16.197 112.206-64.399 130.542-126.070h-353.681c17.843 59.995 65.287 107.046 125.42 124.493 4.861-30.851 24.838-54.081 48.727-54.081 24.346 0 44.554 23.952 48.993 55.658zM625.553 366.746h219.966v-44.463h-219.966zM230.763 450.397c35.322 0 63.971-28.657 63.971-63.981 0-35.327-28.649-63.981-63.971-63.981s-63.941 28.654-63.941 63.981c0 35.324 28.619 63.981 63.941 63.981zM0 668.824h647.807c-0.82-7.656-1.315-15.411-1.315-23.263 0-4.371 0.394-8.642 0.656-12.947h-612.059v-512.565h843.277v311.284c13.503 1.052 26.612 3.386 39.297 6.836v-356.367h-917.664zM858.262 737.688v-55.265h-102.348v-84.542h102.348v-51.288l110.264 95.613zM855.272 814.147c93.115 0 168.652-75.474 168.652-168.59 0-93.118-75.537-168.689-168.652-168.689-93.148 0-168.652 75.572-168.652 168.689s75.504 168.59 168.652 168.59z" />
-<glyph unicode="&#xe95f;" glyph-name="licplus" d="M467.277 235.934h361.519v-43.145h-361.519zM277.027 310.748c60.773-15.757 108.99-62.572 126.785-122.469h-343.53c17.308 58.266 63.434 103.971 121.812 120.968 4.747-30.013 24.109-52.523 47.369-52.523 23.616 0 43.256 23.229 47.563 54.024zM613.774 361.41h213.669v-43.17h-213.669zM230.287 442.688c34.302 0 62.131-27.828 62.131-62.184 0-34.291-27.829-62.089-62.131-62.089-34.289 0-62.117 27.798-62.117 62.089 0 34.356 27.828 62.184 62.117 62.184zM0 654.854h651.548c-0.080-2.413-0.356-4.762-0.356-7.209 0-9.527 0.864-18.825 2.105-27.992h-619.171v-497.843h819.122v317.235c2.3-0.098 4.535-0.358 6.85-0.358 10.668 0 21.061 1.042 31.286 2.608v-356.645h-891.384zM844.025 740.893v-79.599h-79.59v-39.702h79.59v-79.598h39.723v79.598h79.608v39.702h-79.608v79.599zM860.094 811.424c90.49 0 163.831-73.303 163.831-163.765 0-90.494-73.341-163.83-163.831-163.83-90.47 0-163.814 73.336-163.814 163.83 0 90.462 73.344 163.765 163.814 163.765z" />
-<glyph unicode="&#xe960;" glyph-name="licinfo" d="M488.251 233.836h377.743v-45.062h-377.743zM289.445 312.011c63.48-16.443 113.882-65.384 132.481-127.956h-358.94c18.076 60.872 66.258 108.701 127.251 126.42 4.937-31.351 25.205-54.889 49.521-54.889 24.645 0 45.208 24.259 49.686 56.426zM641.337 364.955h223.227v-45.112h-223.227zM240.585 449.883c35.896 0 64.958-29.061 64.958-64.918 0-35.892-29.062-64.921-64.958-64.921-35.827 0-64.856 29.029-64.856 64.921 0 35.857 29.028 64.918 64.856 64.918zM0 671.553h635.675c-0.751-7.387-1.142-14.905-1.142-22.488 0-4.805 0.424-9.512 0.718-14.251h-599.62v-520.176h855.892v319.807c13.792 2.45 27.097 6.243 39.843 11.211v-369.85h-931.366zM821.309 682.089v-133.663h50.115v133.663zM846.514 756.815c-6.801 0-12.683-2.419-17.621-7.159-4.966-4.773-7.419-10.461-7.419-16.933 0-7.029 2.322-12.748 7.029-17.227 4.672-4.445 10.685-6.701 18.010-6.701 7.321 0 13.371 2.256 18.043 6.701 4.707 4.479 7.029 10.199 7.029 17.227 0 6.472-2.483 12.16-7.421 16.933-4.968 4.739-10.853 7.159-17.651 7.159zM852.821 820.295c94.541 0 171.129-76.655 171.129-171.222 0-94.534-76.588-171.124-171.129-171.124-94.536 0-171.192 76.59-171.192 171.124 0 94.567 76.656 171.222 171.192 171.222z" />
-<glyph unicode="&#xe961;" glyph-name="liclock" d="M486.095 194.057h376.065v-44.855h-376.065zM288.158 271.873c63.209-16.36 113.386-65.086 131.889-127.383h-357.365c18.002 60.609 65.971 108.136 126.717 125.795 4.916-31.165 25.080-54.635 49.265-54.635 24.575 0 45.014 24.184 49.494 56.223zM638.485 324.606h222.278v-44.929h-222.278zM239.529 409.154c35.712 0 64.654-28.96 64.654-64.673 0-35.68-28.942-64.605-64.654-64.605-35.681 0-64.574 28.925-64.574 64.605 0 35.712 28.892 64.673 64.574 64.673zM788.959 625.455v-39.868h141.37v39.868zM0 629.887h657.887v-36.59h-622.402v-517.953h852.126v361.212h39.674v-399.876h-927.285zM858.514 815.798c-44.802 0-81.227-37.237-81.227-83.013v-13.667h162.374v13.667c0 45.776-36.41 83.013-81.147 83.013zM858.514 859.271c68.274 0 123.693-56.653 123.693-126.485v-13.667h41.768v-241.672h-326.224v241.672h36.993v13.667c0 69.833 55.401 126.485 123.77 126.485z" />
-<glyph unicode="&#xe962;" glyph-name="licrenew" d="M489.696 237.128h378.821v-45.252h-378.821zM290.292 315.539c63.683-16.53 114.251-65.574 132.889-128.372h-360.036c18.151 61.088 66.474 108.967 127.657 126.761 4.969-31.399 25.269-55.066 49.649-55.066 24.734 0 45.341 24.41 49.842 56.677zM643.222 368.647h223.932v-45.277h-223.932zM241.302 453.799c35.98 0 65.105-29.168 65.105-65.142 0-35.977-29.126-65.113-65.105-65.113-35.95 0-65.075 29.136-65.075 65.113 0 35.975 29.126 65.142 65.075 65.142zM695.928 641.41l24.247-118.977 27.077 23.202c25.588-24.235 60.905-37.947 98.787-33.848 31.979 3.549 59.762 19.003 79.528 41.399l-27.283 10.263c-14.798-13.521-33.771-22.847-55.23-25.172-28.688-3.063-55.582 6.875-75.526 24.783l42.355 36.304zM0 676.145h624.008c-2.451-11.94-3.71-24.298-4.129-36.85h-584.14v-521.783h858.422v302.809c13.925 3.678 27.283 8.679 39.979 14.874v-356.599h-934.14zM834.539 759.811c-5.139 0.085-10.342-0.147-15.587-0.716-32.98-3.582-61.475-19.909-81.333-43.403l27.072-10.262c15.055 14.684 34.737 24.686 57.165 27.14 32.802 3.615 63.551-9.714 83.927-32.785l-39.3-33.689 14.954-5.518h11.536v-4.26l87.432-32.237-24.2 118.976-30.252-25.881c-22.589 25.836-55.442 42.036-91.415 42.634zM838.394 817.502c102.598 0 185.705-83.127 185.705-185.71 0-102.552-83.107-185.676-185.705-185.676-102.566 0-185.705 83.124-185.705 185.676 0 102.582 83.139 185.71 185.705 185.71z" />
-<glyph unicode="&#xe963;" glyph-name="darts2" d="M600.769 94.652h84.617v-139.525h-84.617zM905.431 176.821l109.617-174.194-71.619-45.053-109.615 174.189zM385.355 179.149l71.618-45.056-109.614-174.238-71.62 45.059zM639.64 618.419c-12.729 0-24.891-2.418-36.053-6.821l-0.453-0.191 97.803-56.3-54.932-95.395-104.666 60.26 0.125-4.952c2.632-51.984 45.564-93.307 98.176-93.307 54.369 0 98.364 44.033 98.364 98.37 0 54.311-43.995 98.337-98.364 98.337zM639.641 809.785l-8.162-0.123-2.613-0.099-5.528-0.25-3.018-0.191-5.138-0.387-3.040-0.27-5.251-0.554-2.76-0.316-7.899-1.080-7.814-1.301-2.156-0.413-5.61-1.107-2.802-0.61-4.943-1.129-2.906-0.709-4.89-1.271-2.746-0.743-5.426-1.582-2.071-0.616-7.384-2.392-1.432-0.505-5.875-2.095-2.515-0.956-4.741-1.849-2.712-1.108-3.294-1.397-11.117-5.028-1.401-0.693-10.406-5.331-1.374-0.729-10.515-6.048-2.080-1.262-10.129-6.495-1.512-1.040-9.531-6.779-0.946-0.691-9.556-7.512-1.844-1.515-9.027-7.821-1.501-1.383-8.634-8.234-0.482-0.47-8.458-8.874-1.562-1.706-1.289-1.489 88.699-51.060 0.328 0.304c33.4 29.287 77.16 47.041 125.058 47.041 104.863 0 189.855-84.993 189.855-189.834 0-104.838-84.993-189.865-189.855-189.865-104.803 0-189.795 85.027-189.795 189.865 0 16.381 2.075 32.278 5.976 47.442l0.411 1.446-86.777 49.961-1.366-3.879c-9.764-28.86-15.058-59.779-15.058-91.934 0-2.474 0.031-4.941 0.094-7.4 0.125-4.918 0.373-9.805 0.742-14.658 0.185-2.427 0.399-4.845 0.644-7.254s0.519-4.81 0.823-7.201c0.304-2.391 0.637-4.774 1-7.146s0.754-4.736 1.174-7.089c0.42-2.353 0.869-4.696 1.346-7.029s0.983-4.655 1.516-6.967c0.533-2.312 1.095-4.613 1.684-6.903s1.206-4.569 1.849-6.836c0.644-2.267 1.315-4.523 2.013-6.768s1.422-4.477 2.173-6.697c0.751-2.22 1.529-4.428 2.332-6.624s1.633-4.378 2.489-6.548c0.855-2.17 1.736-4.327 2.643-6.47 1.813-4.287 3.727-8.521 5.739-12.699s4.123-8.299 6.329-12.361c2.206-4.062 4.507-8.065 6.901-12.005s4.879-7.818 7.455-11.631c2.575-3.813 5.24-7.56 7.99-11.239s5.588-7.29 8.508-10.83c2.92-3.54 5.924-7.008 9.008-10.402s6.248-6.714 9.49-9.956c3.242-3.242 6.56-6.407 9.954-9.492s6.861-6.089 10.399-9.010c3.539-2.921 7.149-5.759 10.827-8.51s7.425-5.417 11.237-7.992c3.812-2.576 7.689-5.062 11.629-7.456s7.941-4.696 12.002-6.902c4.061-2.207 8.182-4.318 12.358-6.331s8.41-3.927 12.696-5.741c2.143-0.907 4.3-1.788 6.469-2.644s4.352-1.685 6.547-2.489c2.195-0.804 4.402-1.581 6.622-2.333s4.452-1.476 6.695-2.174c2.244-0.698 4.499-1.369 6.766-2.013s4.545-1.261 6.835-1.85c2.29-0.589 4.59-1.151 6.901-1.684s4.633-1.039 6.966-1.517c2.332-0.477 4.675-0.926 7.028-1.347s4.715-0.812 7.087-1.174c2.372-0.363 4.754-0.696 7.145-1s4.791-0.578 7.2-0.823c2.409-0.245 4.827-0.459 7.253-0.644s4.861-0.339 7.304-0.463c2.443-0.124 4.893-0.217 7.352-0.279s4.925-0.094 7.398-0.094c2.474 0 4.942 0.031 7.401 0.094s4.911 0.156 7.355 0.279c2.444 0.124 4.879 0.278 7.306 0.463s4.846 0.399 7.255 0.644c2.41 0.245 4.811 0.519 7.202 0.823s4.774 0.637 7.147 1c2.373 0.362 4.736 0.754 7.090 1.174s4.697 0.869 7.030 1.347c2.333 0.477 4.656 0.983 6.968 1.517s4.613 1.095 6.903 1.684c2.29 0.589 4.569 1.206 6.837 1.85s4.524 1.315 6.768 2.013c2.244 0.698 4.477 1.423 6.697 2.174s4.428 1.529 6.624 2.333c2.195 0.804 4.378 1.634 6.548 2.489s4.327 1.737 6.471 2.644c4.287 1.813 8.521 3.728 12.699 5.741s8.299 4.124 12.361 6.331c4.062 2.207 8.065 4.508 12.005 6.902s7.818 4.881 11.631 7.456c3.813 2.576 7.56 5.241 11.239 7.992s7.29 5.589 10.829 8.51c3.539 2.921 7.007 5.925 10.401 9.010s6.713 6.25 9.955 9.492c3.242 3.242 6.407 6.562 9.491 9.956s6.088 6.862 9.009 10.402c2.921 3.54 5.758 7.15 8.509 10.83s5.416 7.427 7.991 11.239c2.575 3.813 5.062 7.691 7.455 11.631s4.695 7.943 6.901 12.005c2.206 4.062 4.317 8.183 6.329 12.361s3.927 8.412 5.74 12.699c0.906 2.144 1.788 4.301 2.643 6.47s1.685 4.353 2.489 6.548c0.804 2.195 1.581 4.403 2.332 6.624s1.476 4.453 2.174 6.697c0.698 2.244 1.369 4.5 2.013 6.768s1.26 4.546 1.849 6.836c0.589 2.29 1.15 4.591 1.684 6.903s1.039 4.634 1.516 6.967c0.477 2.333 0.926 4.676 1.346 7.029s0.812 4.716 1.174 7.089c0.362 2.373 0.696 4.755 1 7.146s0.578 4.792 0.823 7.201c0.245 2.409 0.459 4.828 0.644 7.254s0.339 4.862 0.463 7.305c0.248 4.886 0.373 9.805 0.373 14.753 0 9.894-0.501 19.671-1.48 29.306-1.712 16.863-4.886 33.294-9.392 49.165-1.288 4.534-2.684 9.023-4.186 13.463-12.769 37.74-33.182 71.957-59.399 100.806-3.084 3.394-6.249 6.714-9.491 9.956s-6.561 6.408-9.955 9.492c-3.394 3.085-6.862 6.089-10.401 9.011-10.618 8.764-21.878 16.778-33.699 23.961-3.94 2.394-7.943 4.696-12.005 6.903-8.124 4.414-16.485 8.446-25.060 12.073-4.287 1.813-8.628 3.526-13.019 5.133-2.196 0.804-4.404 1.582-6.624 2.333-4.441 1.503-8.93 2.9-13.465 4.188-2.268 0.644-4.547 1.261-6.837 1.85-4.58 1.178-9.205 2.247-13.871 3.201-2.333 0.477-4.676 0.926-7.030 1.347s-4.717 0.812-7.090 1.175c-2.373 0.363-4.755 0.696-7.147 1-4.783 0.608-9.604 1.098-14.458 1.468-2.427 0.185-4.863 0.339-7.306 0.463s-4.895 0.217-7.355 0.279c-2.459 0.062-4.926 0.094-7.401 0.094zM124.301 940.921l115.864-70.145 15.856-84.493 10.777 18.736 72.802-41.909 0.668 0.83 1.429 1.808 0.636 0.757 0.827 1.027c3.915 4.745 7.943 9.393 12.077 13.943l0.897 0.964 0.658 0.737 1.587 1.674 3.14 3.373 1.932 1.979 1.268 1.338 1.308 1.3 1.932 1.979 3.298 3.22 1.635 1.625 0.721 0.675 0.942 0.92c4.449 4.242 8.999 8.377 13.646 12.404l1.006 0.851 0.741 0.654 1.773 1.473 3.523 2.979 2.155 1.736 1.421 1.18 1.454 1.136 2.157 1.737 3.662 2.808 1.821 1.422 0.797 0.585 1.048 0.803c4.931 3.688 9.954 7.261 15.065 10.714l1.103 0.726 0.818 0.563 1.943 1.254 3.867 2.546 2.355 1.471 1.558 1.006 1.585 0.957 2.36 1.474 3.989 2.358 1.988 1.2 0.865 0.487 1.142 0.675c5.364 3.085 10.809 6.043 16.332 8.873l1.19 0.591 0.885 0.463 2.092 1.016 4.175 2.075 2.532 1.183 1.681 0.816 1.701 0.763 2.54 1.186 4.277 1.871 2.137 0.958 0.926 0.382 1.226 0.536c5.746 2.431 11.563 4.726 17.448 6.881l1.265 0.446 0.945 0.356 2.223 0.76 4.444 1.565 2.687 0.873 1.788 0.611 1.802 0.554 2.697 0.876 4.528 1.347 2.266 0.697 0.978 0.268 1.299 0.386c6.078 1.726 12.217 3.307 18.413 4.738l1.331 0.29 0.996 0.24 2.334 0.485 4.677 1.018 2.819 0.54 1.88 0.391 1.888 0.331 2.833 0.543 4.742 0.786 2.376 0.417 1.021 0.146 1.361 0.226 9.576 1.34 9.651 1.104 1.385 0.123 1.039 0.115 2.427 0.192 4.87 0.433 2.929 0.186 1.957 0.155 1.958 0.093 2.945 0.187 4.918 0.187 2.467 0.117 1.057 0.017 1.412 0.054c3.295 0.083 6.601 0.126 9.916 0.126s6.623-0.042 9.919-0.126c3.296-0.084 6.582-0.209 9.857-0.375s6.539-0.373 9.792-0.621c3.253-0.248 6.494-0.536 9.724-0.863s6.447-0.696 9.653-1.103c3.206-0.407 6.399-0.854 9.579-1.34s6.348-1.011 9.502-1.574c3.154-0.563 6.295-1.165 9.422-1.805s6.24-1.318 9.339-2.033c3.099-0.715 6.183-1.468 9.253-2.258s6.125-1.617 9.164-2.48c3.039-0.863 6.064-1.763 9.072-2.699s6.001-1.907 8.977-2.914c2.976-1.007 5.936-2.050 8.879-3.127s5.869-2.19 8.778-3.337c2.909-1.147 5.8-2.328 8.673-3.544s5.729-2.465 8.566-3.747c2.837-1.283 5.656-2.599 8.456-3.948s5.581-2.731 8.343-4.146c2.762-1.415 5.504-2.862 8.227-4.34s5.425-2.99 8.107-4.532c2.682-1.542 5.344-3.116 7.985-4.721s5.261-3.24 7.86-4.906c5.198-3.332 10.31-6.786 15.332-10.357 2.511-1.786 5-3.601 7.466-5.445s4.909-3.717 7.329-5.619c2.42-1.901 4.816-3.831 7.188-5.789s4.721-3.943 7.045-5.957c2.324-2.013 4.624-4.054 6.899-6.121 11.374-10.337 22.126-21.347 32.192-32.967 4.026-4.648 7.943-9.393 11.746-14.232s7.492-9.772 11.064-14.794c1.786-2.511 3.542-5.045 5.269-7.6s3.423-5.133 5.089-7.731c3.332-5.197 6.543-10.48 9.627-15.844 1.542-2.682 3.053-5.385 4.532-8.107s2.926-5.464 4.341-8.226c2.829-5.523 5.529-11.124 8.094-16.798 21.807-48.228 33.947-101.762 33.947-158.128 0-3.316-0.042-6.622-0.126-9.917s-0.209-6.581-0.375-9.855c-0.166-3.274-0.373-6.538-0.62-9.791s-0.536-6.493-0.864-9.723c-0.328-3.229-0.696-6.447-1.103-9.652s-0.854-6.398-1.34-9.578c-0.486-3.18-1.011-6.347-1.574-9.501s-1.165-6.294-1.805-9.421c-0.64-3.127-1.318-6.24-2.033-9.338s-1.468-6.183-2.258-9.252c-0.79-3.069-1.617-6.124-2.48-9.163s-1.763-6.063-2.699-9.071c-0.936-3.008-1.907-6-2.914-8.976s-2.050-5.935-3.127-8.878c-1.077-2.943-2.19-5.868-3.337-8.777s-2.328-5.8-3.544-8.673c-1.215-2.873-2.465-5.729-3.747-8.566s-2.599-5.656-3.948-8.455c-1.349-2.8-2.731-5.581-4.146-8.342s-2.862-5.504-4.341-8.226c-1.479-2.722-2.99-5.425-4.532-8.107s-3.116-5.344-4.721-7.985c-1.605-2.641-3.24-5.261-4.907-7.86s-3.363-5.176-5.089-7.731c-1.726-2.555-3.483-5.089-5.269-7.6s-3.601-5-5.445-7.466c-1.844-2.466-3.717-4.909-5.619-7.328s-3.832-4.816-5.789-7.188c-1.958-2.372-3.944-4.721-5.957-7.045s-4.054-4.624-6.121-6.898c-2.068-2.275-4.162-4.525-6.283-6.749s-4.268-4.423-6.441-6.597c-2.173-2.173-4.372-4.32-6.597-6.441s-4.474-4.215-6.749-6.283c-2.275-2.067-4.575-4.108-6.899-6.121s-4.673-3.999-7.045-5.957c-2.372-1.958-4.769-3.888-7.188-5.789s-4.863-3.775-7.329-5.619c-2.466-1.844-4.955-3.659-7.466-5.445s-5.045-3.542-7.6-5.269c-2.555-1.726-5.133-3.423-7.732-5.089s-5.219-3.302-7.86-4.906c-2.641-1.605-5.303-3.179-7.985-4.721s-5.385-3.053-8.107-4.532c-2.723-1.479-5.465-2.926-8.227-4.341s-5.543-2.797-8.343-4.146c-2.8-1.349-5.619-2.665-8.456-3.948s-5.693-2.532-8.566-3.747c-2.873-1.215-5.765-2.397-8.673-3.544s-5.835-2.259-8.778-3.337c-2.943-1.077-5.903-2.12-8.879-3.127s-5.969-1.979-8.977-2.914c-3.008-0.936-6.032-1.835-9.072-2.699s-6.094-1.69-9.164-2.48c-3.070-0.79-6.154-1.543-9.253-2.258s-6.212-1.393-9.339-2.033c-3.127-0.64-6.268-1.242-9.422-1.805s-6.322-1.088-9.502-1.574c-3.18-0.486-6.373-0.933-9.579-1.34s-6.423-0.775-9.653-1.103c-3.23-0.328-6.471-0.616-9.724-0.863s-6.517-0.455-9.792-0.621c-3.275-0.166-6.561-0.291-9.857-0.375s-6.602-0.126-9.919-0.126c-3.315 0-6.621 0.042-9.916 0.126s-6.58 0.209-9.854 0.375c-3.274 0.166-6.537 0.373-9.789 0.621s-6.493 0.535-9.721 0.863c-3.229 0.328-6.446 0.696-9.651 1.103s-6.397 0.854-9.577 1.34c-3.18 0.486-6.346 1.011-9.5 1.574s-6.294 1.165-9.42 1.805c-3.126 0.64-6.239 1.318-9.337 2.033s-6.182 1.468-9.251 2.258c-3.069 0.79-6.123 1.617-9.162 2.48s-6.062 1.763-9.070 2.699c-3.008 0.936-6 1.907-8.975 2.914s-5.935 2.050-8.877 3.127c-2.942 1.078-5.868 2.19-8.776 3.337s-5.799 2.328-8.672 3.544c-2.873 1.215-5.728 2.465-8.565 3.747s-5.655 2.599-8.455 3.948c-2.8 1.349-5.58 2.731-8.342 4.146s-5.503 2.862-8.225 4.341c-2.722 1.479-5.424 2.99-8.106 4.532s-5.343 3.116-7.984 4.721c-2.641 1.605-5.26 3.24-7.859 4.906s-5.175 3.363-7.731 5.089c-2.555 1.726-5.088 3.483-7.599 5.269s-4.999 3.601-7.465 5.445c-2.466 1.844-4.908 3.717-7.328 5.619s-4.815 3.831-7.188 5.789c-2.372 1.958-4.72 3.944-7.044 5.957-4.648 4.026-9.198 8.162-13.646 12.404-2.224 2.121-4.423 4.268-6.596 6.441s-4.32 4.372-6.441 6.597c-2.121 2.224-4.215 4.474-6.282 6.749s-4.108 4.574-6.121 6.898c-2.013 2.324-3.999 4.672-5.956 7.045s-3.888 4.769-5.789 7.188c-1.901 2.42-3.774 4.863-5.618 7.328s-3.659 4.955-5.445 7.466c-1.786 2.511-3.542 5.045-5.268 7.6s-3.423 5.133-5.089 7.731c-1.666 2.599-3.302 5.219-4.906 7.86s-3.178 5.303-4.721 7.985c-1.542 2.682-3.053 5.385-4.532 8.107s-2.926 5.465-4.34 8.226c-1.415 2.762-2.797 5.543-4.146 8.342s-2.665 5.618-3.948 8.455c-1.283 2.837-2.532 5.692-3.747 8.566s-2.397 5.764-3.544 8.673c-1.147 2.908-2.259 5.834-3.337 8.777s-2.12 5.902-3.127 8.878c-1.007 2.976-1.979 5.968-2.914 8.976s-1.835 6.032-2.699 9.071c-0.863 3.039-1.69 6.094-2.48 9.163s-1.543 6.154-2.258 9.252c-0.715 3.099-1.393 6.211-2.033 9.338s-1.242 6.267-1.805 9.421c-0.563 3.154-1.088 6.321-1.574 9.501s-0.933 6.373-1.34 9.578c-0.407 3.205-0.775 6.423-1.103 9.652s-0.616 6.47-0.863 9.723c-0.248 3.252-0.455 6.516-0.621 9.791s-0.291 6.56-0.375 9.855c-0.084 3.296-0.126 6.602-0.126 9.917s0.042 6.622 0.126 9.917l0.025 0.66 0.008 0.576 0.123 2.881 0.218 5.739 0.084 1.322 0.048 1.132 0.21 2.941 0.279 4.396 0.177 1.995 0.118 1.659 0.26 2.604 0.308 3.464 0.307 2.688 0.215 2.146 0.276 2.142 0.306 2.674 0.48 3.428 0.33 2.567 0.257 1.63 0.273 1.953 0.71 4.283 0.449 2.85 0.204 1.092 0.211 1.275 1.054 5.503 0.513 2.745 0.118 0.547 0.12 0.626c1.28 6.253 2.711 12.451 4.291 18.59l0.166 0.612 0.132 0.538 0.737 2.675 1.445 5.338 0.364 1.224 0.29 1.052 0.832 2.718 1.213 4.076 0.598 1.84 0.47 1.537 0.808 2.399 1.039 3.2 0.87 2.471 0.667 1.981 0.723 1.965 0.867 2.462 1.194 3.14 0.867 2.358 0.595 1.488 0.681 1.791 1.596 3.907 0.133 0.332-71.869 41.377 10.876 18.909-77.191-34.614-128.051 67.086 62.868 51.839-80.43 71.305 21.373 21.309 83.055-46.868z" />
-<glyph unicode="&#xe964;" glyph-name="calweek" d="M528.871 122.241c-5.104 0-9.357-4.98-9.357-11.12v-101.089c0-6.14 4.253-11.12 9.357-11.12h95.404c5.245 0 9.497 4.98 9.497 11.12v101.089c0 6.14-4.252 11.12-9.497 11.12zM404.547 122.241c-5.245 0-9.499-4.98-9.499-11.12v-101.089c0-6.14 4.253-11.12 9.499-11.12h95.404c5.103 0 9.357 4.98 9.357 11.12v101.089c0 6.14-4.255 11.12-9.357 11.12zM280.080 122.241c-5.245 0-9.499-4.98-9.499-11.12v-101.089c0-6.14 4.253-11.12 9.499-11.12h95.404c5.245 0 9.499 4.98 9.499 11.12v101.089c0 6.14-4.253 11.12-9.499 11.12zM155.614 122.241c-5.103 0-9.355-4.98-9.355-11.12v-101.089c0-6.14 4.252-11.12 9.355-11.12h95.405c5.247 0 9.499 4.98 9.499 11.12v101.089c0 6.14-4.252 11.12-9.499 11.12zM777.801 258.021c-5.245 0-9.497-4.98-9.497-11.12v-101.089c0-6.14 4.252-11.121 9.497-11.121h95.404c5.245 0 9.499 4.981 9.499 11.121v101.089c0 6.14-4.253 11.12-9.499 11.12zM653.335 258.021c-5.245 0-9.497-4.98-9.497-11.12v-101.089c0-6.14 4.252-11.121 9.497-11.121h95.407c5.245 0 9.496 4.981 9.496 11.121v101.089c0 6.14-4.251 11.12-9.496 11.12zM528.871 258.021c-5.104 0-9.357-4.98-9.357-11.12v-101.089c0-6.14 4.253-11.121 9.357-11.121h95.404c5.245 0 9.497 4.981 9.497 11.121v101.089c0 6.14-4.252 11.12-9.497 11.12zM404.547 258.021c-5.245 0-9.499-4.98-9.499-11.12v-101.089c0-6.14 4.253-11.121 9.499-11.121h95.404c5.103 0 9.357 4.981 9.357 11.121v101.089c0 6.14-4.255 11.12-9.357 11.12zM280.080 258.021c-5.245 0-9.499-4.98-9.499-11.12v-101.089c0-6.14 4.253-11.121 9.499-11.121h95.404c5.245 0 9.499 4.981 9.499 11.121v101.089c0 6.14-4.253 11.12-9.499 11.12zM155.614 258.021c-5.103 0-9.355-4.98-9.355-11.12v-101.089c0-6.14 4.252-11.121 9.355-11.121h95.405c5.247 0 9.499 4.981 9.499 11.121v101.089c0 6.14-4.252 11.12-9.499 11.12zM777.801 393.972c-5.245 0-9.497-4.981-9.497-10.959v-101.252c0-6.144 4.252-11.124 9.497-11.124h95.404c5.245 0 9.499 4.98 9.499 11.124v101.252c0 5.977-4.253 10.959-9.499 10.959zM653.335 393.972c-5.245 0-9.497-4.981-9.497-10.959v-101.252c0-6.144 4.252-11.124 9.497-11.124h95.407c5.245 0 9.496 4.98 9.496 11.124v101.252c0 5.977-4.251 10.959-9.496 10.959zM528.871 393.972c-5.104 0-9.357-4.981-9.357-10.959v-101.252c0-6.144 4.253-11.124 9.357-11.124h95.404c5.245 0 9.497 4.98 9.497 11.124v101.252c0 5.977-4.252 10.959-9.497 10.959zM404.547 393.972c-5.245 0-9.499-4.981-9.499-10.959v-101.252c0-6.144 4.253-11.124 9.499-11.124h95.404c5.103 0 9.357 4.98 9.357 11.124v101.252c0 5.977-4.255 10.959-9.357 10.959zM280.080 393.972c-5.245 0-9.499-4.981-9.499-10.959v-101.252c0-6.144 4.253-11.124 9.499-11.124h95.404c5.245 0 9.499 4.98 9.499 11.124v101.252c0 5.977-4.253 10.959-9.499 10.959zM155.614 393.972c-5.103 0-9.355-4.981-9.355-10.959v-101.252c0-6.144 4.252-11.124 9.355-11.124h95.405c5.247 0 9.499 4.98 9.499 11.124v101.252c0 5.977-4.252 10.959-9.499 10.959zM777.801 527.093c-5.245 0-9.497-4.977-9.497-11.12v-101.252c0-5.979 4.252-10.959 9.497-10.959h95.404c5.245 0 9.499 4.98 9.499 10.959v101.252c0 6.143-4.253 11.12-9.499 11.12zM653.335 527.093c-5.245 0-9.497-4.977-9.497-11.12v-101.252c0-5.979 4.252-10.959 9.497-10.959h95.407c5.245 0 9.496 4.98 9.496 10.959v101.252c0 6.143-4.251 11.12-9.496 11.12zM528.871 527.093c-5.104 0-9.357-4.977-9.357-11.12v-101.252c0-5.979 4.253-10.959 9.357-10.959h95.404c5.245 0 9.497 4.98 9.497 10.959v101.252c0 6.143-4.252 11.12-9.497 11.12zM404.547 527.093c-5.245 0-9.499-4.977-9.499-11.12v-101.252c0-5.979 4.253-10.959 9.499-10.959h95.404c5.103 0 9.357 4.98 9.357 10.959v101.252c0 6.143-4.255 11.12-9.357 11.12zM103.731 908.379v-308.082h804.773v308.082zM67.865 960h888.271c5.245 0 9.497-4.981 9.497-11.12v-975.365c0-6.144-1.701-15.603-3.828-21.248l-9.496-11.619c-4.68-2.492-12.76-4.648-18.004-4.648h-844.608c-5.247 0-13.326 2.156-18.004 4.648l-9.64 11.619c-1.985 5.645-3.686 15.104-3.686 21.248v975.365c0 6.14 4.254 11.12 9.499 11.12z" />
-<glyph unicode="&#xe965;" glyph-name="addcard" d="M173.826 361.613c-16.769 0-30.421-13.702-30.421-30.622v-61.395h-61.948c-17.397 0-31.552-14.28-31.552-31.853 0-17.624 14.155-31.904 31.552-31.904h61.948v-68.435c0-16.919 13.652-30.596 30.421-30.596s30.371 13.677 30.371 30.596v68.435h64.311c17.448 0 31.602 14.28 31.602 31.904 0 17.573-14.154 31.853-31.602 31.853h-64.311v61.395c0 16.921-13.602 30.622-30.371 30.622zM178.703 421.072c98.653 0 178.729-80.779 178.729-180.337 0-99.71-80.075-180.414-178.729-180.414s-178.703 80.704-178.703 180.414c0 99.558 80.049 180.337 178.703 180.337zM768.993 561.587c-12.395 0-31.904-4.123-43.268-9.277 0 0-54.833-24.764-54.833-66.574 0-42.112 54.833-66.8 54.833-66.8 11.364-5.129 30.873-9.327 43.268-9.327h50.006c12.42 0 31.929 4.199 43.268 9.327 0 0 54.632 24.689 54.632 66.8 0 41.81-54.632 66.549-54.632 66.549-11.339 5.179-30.848 9.302-43.268 9.302zM273.083 613.303c-12.47 0-22.602-9.529-22.602-21.194s10.132-21.244 22.602-21.244h243.367c12.47 0 22.652 9.579 22.652 21.244s-10.182 21.194-22.652 21.194zM793.933 729.179c-37.511 0-67.982-30.723-67.982-68.46 0-37.888 30.471-68.636 67.982-68.636 37.435 0 67.806 30.748 67.806 68.636 0 37.737-30.371 68.46-67.806 68.46zM166.082 835.677h835.291c12.395 0 22.627-10.258 22.627-22.828v-511.146c0-12.545-10.232-22.828-22.627-22.828h-597.179c-9.604 62.501-44.073 116.504-93.098 151.476h205.353c12.47 0 22.652 9.554 22.652 21.194 0 11.666-10.182 21.194-22.652 21.194h-243.316c-9.151 0-16.719-5.255-20.188-12.571-22.728 7.693-46.989 12.068-72.256 12.068-12.747 0-25.116-1.282-37.234-3.344v343.957c0 12.571 10.157 22.828 22.627 22.828z" />
-<glyph unicode="&#xe966;" glyph-name="info1" d="M558.501 585.573l8.812-5.999c-3.401-40.465-5.090-91.863-5.090-154.179v-104.64c0-6.812 0.622-28.661 1.84-65.527 1.25-36.877 2.559-58.407 3.94-64.593 1.412-6.151 3.47-10.653 6.25-13.399 2.78-2.781 6.19-4.572 10.189-5.353 4.030-0.78 20.68-2.089 49.999-3.93l4.181-3.686v-43.189l-3.712-4.159c-38.598 2.468-75.786 3.689-111.566 3.689-35.528 0-72.556-1.221-111.145-3.689l-4.159 4.159v43.189l4.159 3.686c29.929 1.842 46.838 3.241 50.72 4.181 3.84 0.911 7.25 2.849 10.179 5.781 2.909 2.938 4.938 7.409 5.999 13.407 1.1 6.031 2.352 25.94 3.719 59.746 1.412 33.779 2.061 59.338 2.061 76.615v91.214c0 12.352-0.59 29.188-1.84 50.466-1.22 21.309-2.219 34.41-3 39.348-0.78 4.929-3.192 8.589-7.19 10.869-4 2.348-12.029 3.499-24.059 3.499l-38.908 0.439-4.15 3.723v19.896l3.691 3.72c58.957 7.102 108.644 18.658 149.081 34.717zM519.161 792.538c14.501 0 26.84-5.093 37.031-15.278 10.179-10.192 15.278-22.528 15.278-37.026 0-14.222-5.099-26.41-15.278-36.599-10.191-10.178-22.53-15.248-37.031-15.248-14.189 0-26.468 5.002-36.819 15.037-10.34 10.029-15.498 22.279-15.498 36.809 0 14.498 5.158 26.834 15.498 37.026 10.351 10.186 22.63 15.278 36.819 15.278zM109.277 878.064v-860.113h805.493v860.113zM109.277 960h805.493c45.249 0 81.937-36.688 81.937-81.936v-860.113c0-45.218-36.689-81.905-81.937-81.905h-805.493c-45.249 0-81.937 36.687-81.937 81.905v860.113c0 45.247 36.688 81.936 81.937 81.936z" />
-<glyph unicode="&#xe967;" glyph-name="print1" d="M320.045 384.063v-320.054h384.053v320.054zM882.808 628.478c-25.626 0-46.379-20.752-46.379-46.381 0-25.632 20.753-46.448 46.379-46.448 25.631 0 46.384 20.817 46.384 46.448 0 25.629-20.753 46.381-46.384 46.381zM64.011 704.12h896.121c35.194 0 64.012-28.817 64.012-64.010v-320.057c0-35.195-28.818-64.010-64.012-64.010h-192.026v-256.049h-512.069v256.049h-192.026c-35.193 0-64.011 28.815-64.011 64.010v320.057c0 35.193 28.817 64.010 64.011 64.010zM256.024 896.15h512.096v-128.036h-512.096z" />
-<glyph unicode="&#xe968;" glyph-name="phone1" d="M842.968 344.466c17.615-0.177 35.144-6.966 48.614-20.455l79.159-79.098c26.946-26.978 27.090-70.151 1.239-97.835l0.29-0.235-1.529-1.597-73.735-73.738-178.759 178.819 75.246 75.217 0.348-0.294c13.812 12.958 31.512 19.392 49.127 19.215zM63.493 823.813l182.336-182.329c-42.288-115.25 21.234-214.66 116.701-310.124 95.435-95.406 194.821-158.948 310.133-116.663l182.25-182.39c-176.795-96.224-400.833 2.768-594.804 196.7-193.878 193.873-292.879 417.954-196.616 594.806zM227.396 959.996c17.622-0.177 35.151-6.965 48.625-20.453l79.128-79.085c26.946-26.972 27.121-70.199 1.267-97.76l0.294-0.353-1.561-1.529-73.712-73.732-178.812 178.733 75.299 75.32 0.294-0.353c13.842 12.956 31.556 19.39 49.177 19.213z" />
-<glyph unicode="&#xe969;" glyph-name="register" d="M802.46 267.43l5.191-31.762-503.962-82.106-5.168 31.762zM437.953 297.697c10.746-34.323 57.986-51.517 57.986-51.517l-70.87-23.601zM440.948 407.369l1.941-32.17-193.22-20.477-3.397 31.997zM567.013 590.239l-27.902-33.897-338.508-19.788-1.857 32.175zM602.823 741.026l0.897-32.185-450.842-12.879-0.919 32.185zM797.489 809.419l0.535-1.452c16.107-41.754 54.321-95.318 123.701-106.706l3.484-0.522-317.675-390.148-72.965-6.429-51.527 47.249-4.311 70.831zM648.364 834.42l42.867-91.942-30.041-37.827-38.608 84.699-556.020-2.157 176.055-725.622 656.911 120.217-122.009 267.663 33.664 35.758 163.488-350.649-790.028-158.859-184.642 856.584zM888.792 920.3c135.233-10.745 128.828-111.653 128.828-111.653l-62.291-77.26c-109.492-4.316-133.077 107.336-133.077 107.336z" />
-<glyph unicode="&#xe96a;" glyph-name="sportresult" d="M406.062 750.981q0-46.237-17.828-89.832-17.828-42.274-48.832-88.511l-22.478-34.348q-3.1-5.284-24.029-35.669-20.153-30.384-32.555-60.769-13.177-30.384-13.177-66.053 0-30.384 8.526-68.695 1.55-5.284 3.876-15.853 3.1-10.568 3.1-17.174 0-15.853-6.201-25.1t-13.952-9.247q-13.952 0-22.478 34.347-15.502 64.732-15.502 101.721 0 34.347 12.402 71.337 9.301 27.742 25.579 54.163t41.081 62.090l27.904 40.953q22.478 36.99 34.88 67.374 12.402 31.705 12.402 66.053 0 62.090-44.957 62.090-29.454 0-69.76-23.779-39.531-22.458-75.186-56.805-34.88-34.347-50.382-62.090-7.751-11.89-15.502-21.137-6.976-9.247-11.627-9.247-9.301 0-20.153 13.211-10.076 13.211-10.076 31.705 0 6.605 4.651 13.211t10.076 11.89q6.201 6.605 11.627 13.211 51.157 58.127 114.717 108.327t117.042 50.2q39.531 0 62.784-31.705 24.029-30.384 24.029-85.869zM304.522 123.479q0-14.532-7.751-38.311-7.751-22.458-19.378-39.632-11.627-15.853-22.478-15.853-31.005 0-31.005 51.521 0 25.1 16.277 51.521 17.052 27.742 34.105 27.742 30.229 0 30.229-36.99zM557.245 496.017q0-19.816-25.579-19.816-17.052 0-27.129 42.274-10.076 43.595-10.076 80.584 0 14.532 7.751 27.742 8.526 13.211 17.052 13.211 15.502 0 26.354-50.2 11.627-50.2 11.627-93.795zM562.671 29.683q0-19.816-25.579-19.816-14.727 0-27.129 29.063-11.627 27.742-19.378 62.090-6.976 35.669-6.976 46.237 0 14.532 7.751 27.742 8.526 13.211 17.052 13.211 6.976 0 19.378-31.705 13.177-31.705 24.029-71.337 10.852-38.311 10.852-55.484zM957.119 750.981q0-46.237-17.828-89.832-17.828-42.274-48.832-88.511l-22.478-34.348q-3.1-5.284-24.029-35.669-20.153-30.384-32.555-60.769-13.177-30.384-13.177-66.053 0-30.384 8.526-68.695 1.55-5.284 3.876-15.853 3.1-10.568 3.1-17.174 0-15.853-6.201-25.1t-13.952-9.247q-13.952 0-22.478 34.347-15.502 64.732-15.502 101.721 0 34.347 12.402 71.337 9.301 27.742 25.579 54.163t41.081 62.090l27.904 40.953q22.478 36.99 34.88 67.374 12.402 31.705 12.402 66.053 0 62.090-44.957 62.090-29.454 0-69.76-23.779-39.531-22.458-75.186-56.805-34.88-34.347-50.382-62.090-7.751-11.89-15.502-21.137-6.976-9.247-11.627-9.247-9.301 0-20.153 13.211-10.076 13.211-10.076 31.705 0 6.605 4.651 13.211t10.076 11.89q6.201 6.605 11.627 13.211 51.157 58.127 114.717 108.327t117.042 50.2q39.531 0 62.784-31.705 24.029-30.384 24.029-85.869zM855.579 123.479q0-14.532-7.751-38.311-7.751-22.458-19.378-39.632-11.627-15.853-22.478-15.853-31.005 0-31.005 51.521 0 25.1 16.277 51.521 17.052 27.742 34.105 27.742 30.229 0 30.229-36.99z" />
-<glyph unicode="&#xe96b;" glyph-name="send" d="M789.725 527.903l234.302-205.289-234.302-205.288v129.787h-259.507v149.336h259.507zM0 722.466h0.466l365.883-358.74 365.921 358.74h1.578v-289.326h-240.328v-192.265h-493.521zM43.605 778.647h646.598l-323.28-324.358-161.604 162.196z" />
-<glyph unicode="&#xe971;" glyph-name="user" d="M576 253.388v52.78c70.498 39.728 128 138.772 128 237.832 0 159.058 0 288-192 288s-192-128.942-192-288c0-99.060 57.502-198.104 128-237.832v-52.78c-217.102-17.748-384-124.42-384-253.388h896c0 128.968-166.898 235.64-384 253.388z" />
-<glyph unicode="&#xe9c7;" glyph-name="download" d="M736 512l-256-256-256 256h160v384h192v-384zM480 256h-480v-256h960v256h-480zM896 128h-128v64h128v-64z" />
-<glyph unicode="&#xe9c8;" glyph-name="upload" d="M480 256h-480v-256h960v256h-480zM896 128h-128v64h128v-64zM224 640l256 256 256-256h-160v-320h-192v320z" />
-<glyph unicode="" glyph-name="upload" d="M480 256h-480v-256h960v256h-480zM896 128h-128v64h128v-64zM224 640l256 256 256-256h-160v-320h-192v320z" />
-<glyph unicode="user" glyph-name="user" d="M576 253.388v52.78c70.498 39.728 128 138.772 128 237.832 0 159.058 0 288-192 288s-192-128.942-192-288c0-99.060 57.502-198.104 128-237.832v-52.78c-217.102-17.748-384-124.42-384-253.388h896c0 128.968-166.898 235.64-384 253.388z" />
-<glyph unicode="upload3" glyph-name="upload" d="M480 256h-480v-256h960v256h-480zM896 128h-128v64h128v-64zM224 640l256 256 256-256h-160v-320h-192v320z" />
-<glyph unicode="save5" glyph-name="download" d="M736 512l-256-256-256 256h160v384h192v-384zM480 256h-480v-256h960v256h-480zM896 128h-128v64h128v-64z" />
-<glyph unicode="profile2" glyph-name="user" d="M576 253.388v52.78c70.498 39.728 128 138.772 128 237.832 0 159.058 0 288-192 288s-192-128.942-192-288c0-99.060 57.502-198.104 128-237.832v-52.78c-217.102-17.748-384-124.42-384-253.388h896c0 128.968-166.898 235.64-384 253.388z" />
-<glyph unicode="profile" glyph-name="profile" d="M864 960h-768c-52.8 0-96-43.2-96-96v-832c0-52.8 43.2-96 96-96h768c52.8 0 96 43.2 96 96v832c0 52.8-43.2 96-96 96zM832 64h-704v768h704v-768zM256 384h448v-64h-448zM256 256h448v-64h-448zM320 672c0 53.019 42.981 96 96 96s96-42.981 96-96c0-53.019-42.981-96-96-96s-96 42.981-96 96zM480 576h-128c-52.8 0-96-28.8-96-64v-64h320v64c0 35.2-43.2 64-96 64z" />
-<glyph unicode="map2" glyph-name="map" d="M672 768l-320 128-352-128v-768l352 128 320-128 352 128v768l-352-128zM384 814.27l256-102.4v-630.138l-256 102.398v630.14zM64 723.172l256 93.090v-631.8l-256-93.088v631.798zM960 172.828l-256-93.092v631.8l256 93.090v-631.798z" />
-<glyph unicode="load3" glyph-name="upload" d="M480 256h-480v-256h960v256h-480zM896 128h-128v64h128v-64zM224 640l256 256 256-256h-160v-320h-192v320z" />
-<glyph unicode="guide2" glyph-name="map" d="M672 768l-320 128-352-128v-768l352 128 320-128 352 128v768l-352-128zM384 814.27l256-102.4v-630.138l-256 102.398v630.14zM64 723.172l256 93.090v-631.8l-256-93.088v631.798zM960 172.828l-256-93.092v631.8l256 93.090v-631.798z" />
-<glyph unicode="file2" glyph-name="profile" d="M864 960h-768c-52.8 0-96-43.2-96-96v-832c0-52.8 43.2-96 96-96h768c52.8 0 96 43.2 96 96v832c0 52.8-43.2 96-96 96zM832 64h-704v768h704v-768zM256 384h448v-64h-448zM256 256h448v-64h-448zM320 672c0 53.019 42.981 96 96 96s96-42.981 96-96c0-53.019-42.981-96-96-96s-96 42.981-96 96zM480 576h-128c-52.8 0-96-28.8-96-64v-64h320v64c0 35.2-43.2 64-96 64z" />
-<glyph unicode="drawer" glyph-name="drawer" d="M1016.988 307.99l-256 320c-6.074 7.592-15.266 12.010-24.988 12.010h-448c-9.72 0-18.916-4.418-24.988-12.010l-256-320c-4.538-5.674-7.012-12.724-7.012-19.99v-288c0-35.346 28.654-64 64-64h896c35.348 0 64 28.654 64 64v288c0 7.266-2.472 14.316-7.012 19.99zM960 256h-224l-128-128h-192l-128 128h-224v20.776l239.38 299.224h417.24l239.38-299.224v-20.776zM736 448h-448c-17.672 0-32 14.328-32 32s14.328 32 32 32h448c17.674 0 32-14.328 32-32s-14.326-32-32-32zM800 320h-576c-17.672 0-32 14.326-32 32s14.328 32 32 32h576c17.674 0 32-14.326 32-32s-14.326-32-32-32z" />
-<glyph unicode="download3" glyph-name="download" d="M736 512l-256-256-256 256h160v384h192v-384zM480 256h-480v-256h960v256h-480zM896 128h-128v64h128v-64z" />
-<glyph unicode="box" glyph-name="drawer" d="M1016.988 307.99l-256 320c-6.074 7.592-15.266 12.010-24.988 12.010h-448c-9.72 0-18.916-4.418-24.988-12.010l-256-320c-4.538-5.674-7.012-12.724-7.012-19.99v-288c0-35.346 28.654-64 64-64h896c35.348 0 64 28.654 64 64v288c0 7.266-2.472 14.316-7.012 19.99zM960 256h-224l-128-128h-192l-128 128h-224v20.776l239.38 299.224h417.24l239.38-299.224v-20.776zM736 448h-448c-17.672 0-32 14.328-32 32s14.328 32 32 32h448c17.674 0 32-14.328 32-32s-14.326-32-32-32zM800 320h-576c-17.672 0-32 14.326-32 32s14.328 32 32 32h576c17.674 0 32-14.326 32-32s-14.326-32-32-32z" />
-</font></defs></svg>
\ No newline at end of file
diff --git a/app/static/css/fonts/fld.ttf b/app/static/css/fonts/fld.ttf
deleted file mode 100644 (file)
index 4821c6f..0000000
Binary files a/app/static/css/fonts/fld.ttf and /dev/null differ
diff --git a/app/static/css/fonts/fld.woff b/app/static/css/fonts/fld.woff
deleted file mode 100644 (file)
index ff7a282..0000000
Binary files a/app/static/css/fonts/fld.woff and /dev/null differ
diff --git a/app/static/css/icons.css b/app/static/css/icons.css
deleted file mode 100644 (file)
index d4e2b69..0000000
+++ /dev/null
@@ -1,423 +0,0 @@
-@font-face {
-  font-family: 'fld';
-  src:
-    url('fonts/fld.ttf?lwva39') format('truetype'),
-    url('fonts/fld.woff?lwva39') format('woff'),
-    url('fonts/fld.svg?lwva39#fld') format('svg');
-  font-weight: normal;
-  font-style: normal;
-  font-display: block;
-}
-
-[class^="icon-"], [class*=" icon-"] {
-  /* use !important to prevent issues with browser extensions that change fonts */
-  font-family: 'fld' !important;
-  speak: never;
-  font-style: normal;
-  font-weight: normal;
-  font-variant: normal;
-  text-transform: none;
-  line-height: 1;
-  
-  /* Enable Ligatures ================ */
-  letter-spacing: 0;
-  -webkit-font-feature-settings: "liga";
-  -moz-font-feature-settings: "liga=1";
-  -moz-font-feature-settings: "liga";
-  -ms-font-feature-settings: "liga" 1;
-  font-feature-settings: "liga";
-  -webkit-font-variant-ligatures: discretionary-ligatures;
-  font-variant-ligatures: discretionary-ligatures;
-
-  /* Better Font Rendering =========== */
-  -webkit-font-smoothing: antialiased;
-  -moz-osx-font-smoothing: grayscale;
-}
-
-<<<<<<< HEAD
-.icon-send:before {
-  content: "\e96b";
-}
-.icon-sportresult:before {
-  content: "\e96a";
-}
-.icon-lictransfer:before {
-  content: "\e95e";
-}
-.icon-licplus:before {
-  content: "\e95f";
-}
-.icon-licinfo:before {
-  content: "\e960";
-}
-.icon-liclock:before {
-  content: "\e961";
-}
-.icon-licrenew:before {
-  content: "\e962";
-}
-.icon-darts2:before {
-  content: "\e963";
-}
-.icon-calweek:before {
-  content: "\e964";
-}
-.icon-addcard:before {
-  content: "\e965";
-}
-.icon-info1:before {
-  content: "\e966";
-}
-.icon-print1:before {
-  content: "\e967";
-}
-.icon-phone1:before {
-  content: "\e968";
-}
-.icon-register:before {
-  content: "\e969";
-}
-.icon-licenses:before {
-  content: "\e95d";
-}
-.icon-folderfind:before {
-  content: "\e930";
-}
-=======
-.icon-folderfind:before {
-  content: "\e930";
-}
->>>>>>> 509afc930052596f387a5621613c8257684e5df4
-.icon-access:before {
-  content: "\e931";
-}
-.icon-add:before {
-  content: "\e910";
-}
-.icon-address:before {
-  content: "\e901";
-}
-.icon-adobepdf:before {
-  content: "\e933";
-}
-.icon-agreement:before {
-  content: "\e91b";
-}
-.icon-apps:before {
-  content: "\e917";
-}
-.icon-apps1:before {
-  content: "\e91c";
-}
-.icon-archive:before {
-  content: "\e91d";
-}
-.icon-back:before {
-  content: "\e918";
-}
-.icon-backup:before {
-  content: "\e919";
-}
-.icon-bill:before {
-  content: "\e91e";
-}
-.icon-calendar:before {
-  content: "\e91f";
-}
-.icon-close:before {
-  content: "\e91a";
-}
-.icon-club:before {
-  content: "\e937";
-}
-.icon-clubs:before {
-  content: "\e938";
-}
-.icon-code:before {
-  content: "\e902";
-}
-.icon-contract:before {
-  content: "\e934";
-}
-.icon-copy:before {
-  content: "\e920";
-}
-.icon-cube:before {
-  content: "\e923";
-}
-.icon-cubelight:before {
-  content: "\e924";
-}
-.icon-dashboard1:before {
-  content: "\e925";
-}
-.icon-date:before {
-  content: "\e90b";
-}
-.icon-documents:before {
-  content: "\e903";
-}
-.icon-documentsave:before {
-  content: "\e926";
-}
-.icon-download4:before {
-  content: "\e921";
-<<<<<<< HEAD
-}
-.icon-download:before {
-  content: "\e9c7";
-}
-.icon-drawer:before {
-  content: "\e95c";
-=======
->>>>>>> 509afc930052596f387a5621613c8257684e5df4
-}
-.icon-duplicate:before {
-  content: "\e922";
-}
-.icon-edit:before {
-  content: "\e927";
-}
-.icon-email:before {
-  content: "\e928";
-}
-.icon-excel:before {
-  content: "\e905";
-}
-.icon-exit:before {
-  content: "\e929";
-}
-.icon-file:before {
-  content: "\e92a";
-}
-.icon-filter:before {
-  content: "\e939";
-}
-.icon-find:before {
-  content: "\e904";
-}
-.icon-folder:before {
-  content: "\e92c";
-}
-.icon-folderadd:before {
-  content: "\e92d";
-}
-.icon-foldercube:before {
-  content: "\e92e";
-}
-.icon-folderdelete:before {
-  content: "\e92f";
-}
-.icon-globe:before {
-  content: "\e93d";
-}
-.icon-group:before {
-  content: "\e932";
-}
-.icon-help:before {
-  content: "\e93a";
-}
-.icon-history:before {
-  content: "\e93b";
-}
-.icon-home:before {
-  content: "\e93c";
-}
-.icon-image:before {
-  content: "\e906";
-}
-.icon-inbox:before {
-  content: "\e93f";
-}
-.icon-info:before {
-  content: "\e93e";
-}
-.icon-library:before {
-  content: "\e907";
-}
-.icon-star2:before {
-  content: "\e935";
-}
-.icon-list:before {
-  content: "\e936";
-}
-.icon-location:before {
-  content: "\e941";
-}
-.icon-log:before {
-  content: "\e909";
-}
-.icon-logout:before {
-  content: "\e90a";
-<<<<<<< HEAD
-}
-.icon-map:before {
-  content: "\e95a";
-=======
->>>>>>> 509afc930052596f387a5621613c8257684e5df4
-}
-.icon-menu:before {
-  content: "\e942";
-}
-.icon-newspaper:before {
-  content: "\e943";
-}
-.icon-next:before {
-  content: "\e944";
-}
-.icon-numberlist:before {
-  content: "\e90c";
-}
-.icon-package:before {
-  content: "\e90d";
-}
-.icon-pdf:before {
-  content: "\e945";
-}
-.icon-pdf1:before {
-  content: "\e90e";
-}
-.icon-pdfexport:before {
-  content: "\e90f";
-}
-.icon-phone:before {
-  content: "\e946";
-}
-.icon-pictures:before {
-  content: "\e947";
-}
-.icon-plus:before {
-  content: "\e911";
-}
-.icon-preview:before {
-  content: "\e948";
-}
-.icon-print:before {
-  content: "\e949";
-}
-<<<<<<< HEAD
-.icon-profile:before {
-  content: "\e95b";
-}
-=======
->>>>>>> 509afc930052596f387a5621613c8257684e5df4
-.icon-projects:before {
-  content: "\e912";
-}
-.icon-refresh:before {
-  content: "\e94a";
-}
-.icon-refresh1:before {
-  content: "\e94b";
-}
-.icon-remove:before {
-  content: "\e913";
-}
-.icon-rename:before {
-  content: "\e914";
-}
-.icon-save:before {
-  content: "\e92b";
-}
-.icon-save2:before {
-  content: "\e940";
-}
-.icon-season:before {
-  content: "\e900";
-}
-.icon-settings:before {
-  content: "\e94c";
-}
-.icon-sort:before {
-  content: "\e94d";
-}
-.icon-squares:before {
-  content: "\e94e";
-}
-.icon-star:before {
-  content: "\e908";
-}
-.icon-sync:before {
-  content: "\e94f";
-}
-.icon-table:before {
-  content: "\e915";
-}
-.icon-target:before {
-  content: "\e950";
-<<<<<<< HEAD
-}
-.icon-time:before {
-  content: "\e951";
-}
-.icon-transfer:before {
-  content: "\e952";
-}
-.icon-trash:before {
-  content: "\e953";
-}
-.icon-upload5:before {
-  content: "\e954";
-}
-.icon-uploadfile:before {
-  content: "\e916";
-}
-.icon-upload:before {
-  content: "\e9c8";
-}
-.icon-user:before {
-  content: "\e971";
-=======
-}
-.icon-time:before {
-  content: "\e951";
-}
-.icon-transfer:before {
-  content: "\e952";
-}
-.icon-trash:before {
-  content: "\e953";
-}
-.icon-upload5:before {
-  content: "\e954";
-}
-.icon-uploadfile:before {
-  content: "\e916";
->>>>>>> 509afc930052596f387a5621613c8257684e5df4
-}
-.icon-user2:before {
-  content: "\e955";
-}
-.icon-usergroup:before {
-  content: "\e956";
-}
-.icon-viewpdf:before {
-  content: "\e957";
-}
-.icon-warning:before {
-  content: "\e958";
-}
-.icon-website:before {
-  content: "\e959";
-<<<<<<< HEAD
-=======
-}
-.icon-download:before {
-  content: "\e9c7";
-}
-.icon-drawer:before {
-  content: "\e95c";
-}
-.icon-map:before {
-  content: "\e95a";
-}
-.icon-profile:before {
-  content: "\e95b";
-}
-.icon-upload:before {
-  content: "\e9c8";
-}
-.icon-user:before {
-  content: "\e971";
->>>>>>> 509afc930052596f387a5621613c8257684e5df4
-}
diff --git a/app/static/css/theme.css b/app/static/css/theme.css
deleted file mode 100644 (file)
index 3a5859a..0000000
+++ /dev/null
@@ -1,1015 +0,0 @@
-/* W3PRO.CSS 4.13 June 2019 by Jan Egil and Borge Refsnes */
-html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}
-/* Extract from normalize.css by Nicolas Gallagher and Jonathan Neal git.io/normalize */
-html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}
-html,body {-webkit-user-select: none;-ms-user-select: none;user-select: none;-moz-user-select:none;}
-article,aside,details,figcaption,figure,footer,header,main,menu,nav,section{display:block}summary{display:list-item}
-audio,canvas,progress,video{display:inline-block}progress{vertical-align:baseline}
-audio:not([controls]){display:none;height:0}[hidden],template{display:none}
-a{background-color:transparent}a:active,a:hover{outline-width:0}
-abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}
-b,strong{font-weight:bolder}dfn{font-style:italic}mark{background:#ff0;color:#000}
-small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
-sub{bottom:-0.25em}sup{top:-0.5em}figure{margin:1em 40px}img{border-style:none}
-code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}hr{box-sizing:content-box;height:0;overflow:visible}
-button,input,select,textarea,optgroup{font:inherit;margin:0}optgroup{font-weight:bold}
-button,input{overflow:visible}button,select{text-transform:none}
-button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}
-button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}
-button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}
-fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:.35em .625em .75em}
-legend{color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto}
-[type=checkbox],[type=radio]{padding:0}
-[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}
-[type=search]{-webkit-appearance:textfield;outline-offset:-2px}
-[type=search]::-webkit-search-decoration{-webkit-appearance:none}
-::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}
-/* End extract */
-/* html,body {
-       background-color: #52638e;
-} */
-html,body{font-family:Verdana,sans-serif;font-size:10pt;line-height:1.5}html{overflow-x:hidden}
-h1{font-size:36px}h2{font-size:30px}h3{font-size:24px}h4{font-size:20px}h5{font-size:18px}h6{font-size:16px}.serif{font-family:serif}
-h1,h2,h3,h4,h5,h6{font-family:"Segoe UI",Arial,sans-serif;font-weight:400;margin: 0}.wide{letter-spacing:4px}
-hr{border:0;border-top:1px solid #eee;margin:20px 0}
-.img{max-width:100%;height:auto; vertical-align:middle}a{color:inherit}
-.table,.table-all{border-collapse:collapse;border-spacing:0;width:100%;display:table}.table-all{border:1px solid #ccc}
-.bordered tr,.table-all tr{border-bottom:1px solid #ddd}.striped tbody tr:nth-child(even){background-color:#f1f1f1}
-.table-all tr:nth-child(odd){background-color:#fff}.table-all tr:nth-child(even){background-color:#f1f1f1}
-.hoverable tbody tr:hover,.ul.hoverable li:hover{background-color:#ccc}.centered tr th,.centered tr td{text-align:center}
-.table td,.table th,.table-all td,.table-all th{padding:8px 8px;display:table-cell;text-align:left;vertical-align:top}
-.table th:first-child,.table td:first-child,.table-all th:first-child,.table-all td:first-child{padding-left:16px}
-.btn,.button{border:none;display:inline-block;padding:8px 16px;vertical-align:middle;overflow:hidden;text-decoration:none;color:inherit;background-color:inherit;text-align:center;cursor:pointer;white-space:nowrap}
-.btn:hover{box-shadow:0 8px 16px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)}
-.btn,.button{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}   
-.disabled,.btn:disabled,.button:disabled{cursor:not-allowed;background-color: #e6e6e6}.disabled *,:disabled *{pointer-events:none}
-.btn.disabled:hover,.btn:disabled:hover{box-shadow:none}
-.badge,.tag{background-color:#000;color:#fff;display:inline-block;padding-left:8px;padding-right:8px;text-align:center}.badge{border-radius:50%}
-.ul{list-style-type:none;padding:0;margin:0}.ul li{padding:8px 16px;border-bottom:1px solid #ddd}.ul li:last-child{border-bottom:none}
-.tooltip,.display-container{position:relative}.tooltip .text{display:none}.tooltip:hover .text{display:inline-block}
-.ripple:active{opacity:0.5}.ripple{transition:opacity 0s}
-.input{padding:6px;display:block;border: 1px solid #ccc;width:100%;background-color: #fff; }/*#e8f0fe*/
-.select{padding:2px 0; display:block;width:100%;border:1px solid #ccc;background-color: #fff;}
-.dropdown-click,.dropdown-hover{position:relative;display:inline-block;cursor:pointer}
-.dropdown-hover:hover .dropdown-content{display:block; }
-.dropdown-hover:first-child,.dropdown-click:hover{background-color:#ccc;color:#000}
-.dropdown-hover:hover > .button:first-child,.dropdown-click:hover > .button:first-child{background-color:#ccc;color:#000}
-.dropdown-content{cursor:auto;color:#000;background-color:#fff;display:none;position:absolute;min-width:160px;margin:0;padding:0;z-index:1}
-.check,.radio{width:24px;height:24px;position:relative;top:6px}
-.sidebar{height:100%;width:160px;background-color:#fff;position:fixed!important;z-index:1;overflow:auto}
-.bar-block .dropdown-hover,.bar-block .dropdown-click{width:100%}
-.bar-block .dropdown-hover .dropdown-content,.bar-block .dropdown-click .dropdown-content{min-width:100%}
-.bar-block .dropdown-hover .button,.bar-block .dropdown-click .button{width:100%;text-align:left;padding:8px 16px}
-.main,#main{transition:margin-left .4s}
-.modal{z-index:3;display:none;padding-top:100px;position:fixed;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgb(0,0,0);background-color:rgba(0,0,0,0.4)}
-.modal-content{margin:auto;background-color:#fff;position:relative;padding:0;outline:0;width:600px}
-.bar{width:100%}.center .bar{display:inline-block;width:auto}
-.bar .bar-item{padding:8px 16px;float:left;width:auto;border:none;display:block;outline:0}
-.bar .dropdown-hover,.bar .dropdown-click{position:static;float:left}
-.bar .button{white-space:normal}
-.bar-block .bar-item{width:100%;display:block;padding:8px 16px;text-align:left;border:none;white-space:normal;float:none;outline:0}
-.bar-block.center .bar-item{text-align:center}.block{display:block;width:100%}
-.responsive{display:block;overflow-x:auto}
-.container:after,.container:before,.datapanel:after,.datapanel:before,.row:after,.row:before,.row-padding:after,.row-padding:before,
-.cell-row:before,.cell-row:after,.clear:after,.clear:before,.bar:before,.bar:after{content:"";display:table;clear:both}
-.col,.half,.third,.twothird,.threequarter,.quarter,.fifth,.twofifth,.threefifth,.fourfifth{float:left;width:100%}
-.col.s1{width:8.33333%}.col.s2{width:16.66666%}.col.s3{width:24.99999%}.col.s4{width:33.33333%}
-.col.s5{width:41.66666%}.col.s6{width:49.99999%}.col.s7{width:58.33333%}.col.s8{width:66.66666%}
-.col.s9{width:74.99999%}.col.s10{width:83.33333%}.col.s11{width:91.66666%}.col.s12{width:99.99999%}
-@media (min-width:601px){.col.m1{width:8.33333%}.col.m2{width:16.66666%}.col.m3,.quarter{width:24.99999%}.col.m4,.third{width:33.33333%}.fifth{width:20%;min-width:100px}
-.col.m5{width:41.66666%}.col.m6,.half{width:49.99999%}.col.m7{width:58.33333%}.col.m8,.twothird{width:66.66666%}
-.col.m9,.threequarter{width:74.99999%}.col.m10{width:83.33333%}.col.m11{width:91.66666%}.col.m12{width:99.99999%}.twofifth{width:40%}.threefifth{width:60%}.fourfifth{width:80%}}
-@media (min-width:993px){.col.l1{width:8.33333%}.col.l2{width:16.66666%}.col.l3{width:24.99999%}.col.l4{width:33.33333%}
-.col.l5{width:41.66666%}.col.l6{width:49.99999%}.col.l7{width:58.33333%}.col.l8{width:66.66666%}
-.col.l9{width:74.99999%}.col.l10{width:83.33333%}.col.l11{width:91.66666%}.col.l12{width:99.99999%}}
-.rest{overflow:hidden}.stretch{margin-left:-16px;margin-right:-16px}
-.content,.auto{margin-left:auto;margin-right:auto}.content{max-width:980px}.auto{max-width:1140px}
-.cell-row{display:table;width:100%}.cell{display:table-cell}
-.cell-top{vertical-align:top}.cell-middle{vertical-align:middle}.cell-bottom{vertical-align:bottom}
-.hide{display:none!important}.show-block,.show{display:block!important}.show-inline-block{display:inline-block!important}
-@media (max-width:1205px){.auto{max-width:95%}}
-@media (max-width:600px){.modal-content{margin:0 10px;width:auto!important}.modal{padding-top:30px}
-.dropdown-hover.mobile .dropdown-content,.dropdown-click.mobile .dropdown-content{position:relative}   
-.hide-small{display:none!important}.mobile{display:block;width:100%!important}.bar-item.mobile,.dropdown-hover.mobile,.dropdown-click.mobile{text-align:left}
-.dropdown-hover.mobile,.dropdown-hover.mobile .btn,.dropdown-hover.mobile .button,.dropdown-click.mobile,.dropdown-click.mobile .btn,.dropdown-click.mobile .button{width:100%}}
-@media (max-width:768px){.modal-content{width:500px}.modal{padding-top:50px}}
-@media (min-width:993px){.modal-content{width:900px}.hide-large{display:none!important}.sidebar.collapse{display:block!important}}
-@media (max-width:992px) and (min-width:601px){.hide-medium{display:none!important}}
-@media (max-width:992px){.sidebar.collapse{display:none}.main{margin-left:0!important;margin-right:0!important}.auto{max-width:100%}}
-.top,.bottom{position:fixed;width:100%;z-index:1}.top{top:0}.bottom{bottom:0}
-.overlay{position:fixed;display:none;width:100%;height:100%;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,0.5);z-index:2}
-.display-topleft{position:absolute;left:0;top:0}.display-topright{position:absolute;right:0;top:0}
-.display-bottomleft{position:absolute;left:0;bottom:0}.display-bottomright{position:absolute;right:0;bottom:0}
-.display-middle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%)}
-.display-left{position:absolute;top:50%;left:0%;transform:translate(0%,-50%);-ms-transform:translate(-0%,-50%)}
-.display-right{position:absolute;top:50%;right:0%;transform:translate(0%,-50%);-ms-transform:translate(0%,-50%)}
-.display-topmiddle{position:absolute;left:50%;top:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)}
-.display-bottommiddle{position:absolute;left:50%;bottom:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)}
-.display-container:hover .display-hover{display:block}.display-container:hover span.display-hover{display:inline-block}.display-hover{display:none}
-.display-position{position:absolute}
-.circle{border-radius:50%}
-.round-small{border-radius:2px}.round,.round-medium{border-radius:4px}.round-large{border-radius:8px}.round-xlarge{border-radius:16px}.round-xxlarge{border-radius:32px}
-.row-padding,.row-padding>.half,.row-padding>.third,.row-padding>.twothird,.row-padding>.threequarter,.row-padding>.quarter,.row-padding>.col{padding:0 8px}
-.container,.datapanel{padding:0.01em 8px}.datapanel{margin-top:8px;margin-bottom:8px}
-.code,.codespan{font-family:Consolas,"courier new";font-size:16px}
-.code{width:auto;background-color:#fff;padding:8px 12px;border-left:4px solid #4CAF50;word-wrap:break-word}
-.codespan{color:crimson;background-color:#f1f1f1;padding-left:4px;padding-right:4px;font-size:110%}
-.card,.card-2{box-shadow:0 2px 5px 0 rgba(0,0,0,0.16)}
-.card-4,.hover-shadow:hover{box-shadow:0 4px 10px 0 rgba(0,0,0,0.2),0 4px 20px 0 rgba(0,0,0,0.19)}
-.spin{animation:spin 2s infinite linear}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}
-.animate-fading{animation:fading 2s infinite}@keyframes fading{0%{opacity:0}50%{opacity:1}100%{opacity:0}}
-.animate-opacity{animation:opac 0.8s}@keyframes opac{from{opacity:0} to{opacity:1}}
-.animate-top{position:relative;animation:animatetop 1s}@keyframes animatetop{from{top:-300px;opacity:0} to{top:0;opacity:1}}
-.animate-left{position:relative;animation:animateleft 0.4s}@keyframes animateleft{from{left:-300px;opacity:0} to{left:0;opacity:1}}
-.animate-right{position:relative;animation:animateright 0.4s}@keyframes animateright{from{right:-300px;opacity:0} to{right:0;opacity:1}}
-.animate-bottom{position:relative;animation:animatebottom 1s}@keyframes animatebottom{from{bottom:-300px;opacity:0} to{bottom:0;opacity:1}}
-.animate-zoom {animation:animatezoom 0.6s}@keyframes animatezoom{from{transform:scale(0)} to{transform:scale(1)}}
-.animate-input{transition:width 0.4s ease-in-out}.animate-input:focus{width:100%!important}
-.opacity,.hover-opacity:hover{opacity:0.60}.opacity-off,.hover-opacity-off:hover{opacity:1}
-.opacity-max{opacity:0.25}.opacity-min{opacity:0.75}
-.greyscale-max,.grayscale-max,.hover-greyscale:hover,.hover-grayscale:hover{filter:grayscale(100%)}
-.greyscale,.grayscale{filter:grayscale(75%)}.greyscale-min,.grayscale-min{filter:grayscale(50%)}
-.sepia{filter:sepia(75%)}.sepia-max,.hover-sepia:hover{filter:sepia(100%)}.sepia-min{filter:sepia(50%)}
-.tiny{font-size:10px!important}.small{font-size:12px!important}.medium{font-size:15px!important}.large{font-size:18px!important}
-.xlarge{font-size:24px!important}.xxlarge{font-size:36px!important}.xxxlarge{font-size:48px!important}.jumbo{font-size:64px!important}
-.left-align{text-align:left!important}.right-align{text-align:right!important}.justify{text-align:justify!important}.center{text-align:center!important}
-.border-0{border:0!important}.border{border:1px solid #ccc!important}
-.border-top{border-top:1px solid #ccc!important}.border-bottom{border-bottom:1px solid #ccc!important}
-.border-left{border-left:1px solid #ccc!important}.border-right{border-right:1px solid #ccc!important}
-.topbar{border-top:6px solid #ccc!important}.bottombar{border-bottom:6px solid #ccc!important}
-.leftbar{border-left:6px solid #ccc!important}.rightbar{border-right:6px solid #ccc!important}
-.section,.code{margin-top:16px!important;margin-bottom:16px!important}
-.margin{margin:16px!important}.margin-top{margin-top:16px!important}.margin-bottom{margin-bottom:16px!important}
-.margin-left{margin-left:16px!important}.margin-right{margin-right:16px!important}
-.padding-small{padding:4px 8px!important}.padding{padding:8px 16px!important}.padding-large{padding:12px 24px!important}
-.padding-16{padding-top:16px!important;padding-bottom:16px!important}.padding-24{padding-top:24px!important;padding-bottom:24px!important}
-.padding-32{padding-top:32px!important;padding-bottom:32px!important}.padding-48{padding-top:48px!important;padding-bottom:48px!important}
-.padding-64{padding-top:64px!important;padding-bottom:64px!important}
-.left{float:left!important}.right{float:right!important}
-.button:hover{color:#fff!important;background-color:#343434!important}
-.transparent,.hover-none:hover{background-color:transparent!important}
-.hover-none:hover{box-shadow:none!important}
-/* DEFAULT COLORS */
-.amber,.hover-amber:hover{color:#000!important;background-color:#ffc107!important}
-.aqua,.hover-aqua:hover{color:#000!important;background-color:#00ffff!important}
-.blue,.hover-blue:hover{color:#fff!important;background-color:#2196F3!important}
-.light-blue,.hover-light-blue:hover{color:#000!important;background-color:#87CEEB!important}
-.brown,.hover-brown:hover{color:#fff!important;background-color:#795548!important}
-.cyan,.hover-cyan:hover{color:#000!important;background-color:#00bcd4!important}
-.blue-grey,.hover-blue-grey:hover{color:#fff!important;background-color:#607d8b!important}
-.green,.hover-green:hover{color:#fff!important;background-color:#4CAF50!important}
-.light-green,.hover-light-green:hover{color:#000!important;background-color:#8bc34a!important}
-.indigo,.hover-indigo:hover{color:#fff!important;background-color:#3f51b5!important}
-.khaki,.hover-khaki:hover{color:#000!important;background-color:#f0e68c!important}
-.lime,.hover-lime:hover{color:#000!important;background-color:#cddc39!important}
-.orange,.hover-orange:hover{color:#000!important;background-color:#ff9800!important}
-.deep-orange,.hover-deep-orange:hover{color:#fff!important;background-color:#ff5722!important}
-.pink,.hover-pink:hover{color:#fff!important;background-color:#e91e63!important}
-.purple,.hover-purple:hover{color:#fff!important;background-color:#9c27b0!important}
-.deep-purple,.hover-deep-purple:hover{color:#fff!important;background-color:#673ab7!important}
-.red,.hover-red:hover{color:#fff!important;background-color:#f44336!important}
-.sand,.hover-sand:hover{color:#000!important;background-color:#fdf5e6!important}
-.teal,.hover-teal:hover{color:#fff!important;background-color:#009688!important}
-.yellow,.hover-yellow:hover{color:#000!important;background-color:#ffeb3b!important}
-.white,.hover-white:hover{color:#000!important;background-color:#fff!important}
-.black,.hover-black:hover{color:#fff!important;background-color:#000!important}
-.grey,.hover-grey:hover{color:#000!important;background-color:#9e9e9e!important}
-.light-grey,.hover-light-grey:hover{color:#000!important;background-color:#f1f1f1!important}
-.dark-grey,.hover-dark-grey:hover{color:#fff!important;background-color:#616161!important}
-.pale-red,.hover-pale-red:hover{color:#000!important;background-color:#ffe7e7!important}.pale-green,.hover-pale-green:hover{color:#000!important;background-color:#e7ffe7!important}
-.pale-yellow,.hover-pale-yellow:hover{color:#000!important;background-color:#ffffd7!important}.pale-blue,.hover-pale-blue:hover{color:#000!important;background-color:#e7ffff!important}
-.text-align-right { text-align: right;}
-.text-amber,.hover-text-amber:hover{color:#ffc107!important}
-.text-aqua,.hover-text-aqua:hover{color:#00ffff!important}
-.text-blue,.hover-text-blue:hover{color:#2196F3!important}
-.text-light-blue,.hover-text-light-blue:hover{color:#87CEEB!important}
-.text-brown,.hover-text-brown:hover{color:#795548!important}
-.text-cyan,.hover-text-cyan:hover{color:#00bcd4!important}
-.text-blue-grey,.hover-text-blue-grey:hover{color:#607d8b!important}
-.text-green,.hover-text-green:hover{color:#4CAF50!important}
-.text-light-green,.hover-text-light-green:hover{color:#8bc34a!important}
-.text-indigo,.hover-text-indigo:hover{color:#3f51b5!important}
-.text-khaki,.hover-text-khaki:hover{color:#b4aa50!important}
-.text-lime,.hover-text-lime:hover{color:#cddc39!important}
-.text-orange,.hover-text-orange:hover{color:#ff9800!important}
-.text-deep-orange,.hover-text-deep-orange:hover{color:#ff5722!important}
-.text-pink,.hover-text-pink:hover{color:#e91e63!important}
-.text-purple,.hover-text-purple:hover{color:#9c27b0!important}
-.text-deep-purple,.hover-text-deep-purple:hover{color:#673ab7!important}
-.text-red,.hover-text-red:hover{color:#f44336!important}
-.text-sand,.hover-text-sand:hover{color:#fdf5e6!important}
-.text-teal,.hover-text-teal:hover{color:#009688!important}
-.text-yellow,.hover-text-yellow:hover{color:#d2be0e!important}
-.text-white,.hover-text-white:hover{color:#fff!important}
-.text-black,.hover-text-black:hover{color:#000!important}
-.text-grey,.hover-text-grey:hover{color:#757575!important}
-.text-light-grey,.hover-text-light-grey:hover{color:#f1f1f1!important}
-.text-dark-grey,.hover-text-dark-grey:hover{color:#3a3a3a!important}
-.border-amber,.hover-border-amber:hover{border-color:#ffc107!important}
-.border-aqua,.hover-border-aqua:hover{border-color:#00ffff!important}
-.border-blue,.hover-border-blue:hover{border-color:#2196F3!important}
-.border-light-blue,.hover-border-light-blue:hover{border-color:#87CEEB!important}
-.border-brown,.hover-border-brown:hover{border-color:#795548!important}
-.border-cyan,.hover-border-cyan:hover{border-color:#00bcd4!important}
-.border-blue-grey,.hover-blue-grey:hover{border-color:#607d8b!important}
-.border-green,.hover-border-green:hover{border-color:#4CAF50!important}
-.border-light-green,.hover-border-light-green:hover{border-color:#8bc34a!important}
-.border-indigo,.hover-border-indigo:hover{border-color:#3f51b5!important}
-.border-khaki,.hover-border-khaki:hover{border-color:#f0e68c!important}
-.border-lime,.hover-border-lime:hover{border-color:#cddc39!important}
-.border-orange,.hover-border-orange:hover{border-color:#ff9800!important}
-.border-deep-orange,.hover-border-deep-orange:hover{border-color:#ff5722!important}
-.border-pink,.hover-border-pink:hover{border-color:#e91e63!important}
-.border-purple,.hover-border-purple:hover{border-color:#9c27b0!important}
-.border-deep-purple,.hover-border-deep-purple:hover{border-color:#673ab7!important}
-.border-red,.hover-border-red:hover{border-color:#f44336!important}
-.border-sand,.hover-border-sand:hover{border-color:#fdf5e6!important}
-.border-teal,.hover-border-teal:hover{border-color:#009688!important}
-.border-yellow,.hover-border-yellow:hover{border-color:#ffeb3b!important}
-.border-white,.hover-border-white:hover{border-color:#fff!important}
-.border-black,.hover-border-black:hover{border-color:#000!important}
-.border-grey,.hover-border-grey:hover{border-color:#9e9e9e!important}
-.border-light-grey,.hover-border-light-grey:hover{border-color:#f1f1f1!important}
-.border-dark-grey,.hover-border-dark-grey:hover{border-color:#616161!important}
-.border-pale-red,.hover-border-pale-red:hover{border-color:#ffe7e7!important}.border-pale-green,.hover-border-pale-green:hover{border-color:#e7ffe7!important}
-.border-pale-yellow,.hover-border-pale-yellow:hover{border-color:#ffffd7!important}.border-pale-blue,.hover-border-pale-blue:hover{border-color:#e7ffff!important}
-/* DEFAULT THEME */
-.theme-l5 {color:#000 !important; background-color:#f6f8fc !important}
-.theme-l4 {color:#000 !important; background-color:#e1e9f6 !important}
-.theme-l3 {color:#000 !important; background-color:#c3d3ed !important}
-.theme-l2 {color:#000 !important; background-color:#a5bee4 !important}
-.theme-l1 {color:#fff !important; background-color:#88a8db !important}
-.theme-d1 {color:#fff !important; background-color:#5180cb !important}
-.theme-d2 {color:#fff !important; background-color:#3a6fc3 !important}
-.theme-d3 {color:#fff !important; background-color:#3361aa !important}
-.theme-d4 {color:#fff !important; background-color:#2c5392 !important}
-.theme-d5 {color:#fff !important; background-color:#24457a !important}
-
-.theme-light {color:#000 !important; background-color:#f6f8fc !important}
-.theme-dark {color:#fff !important; background-color:#24457a !important}
-.theme-action {color:#fff !important; background-color:#24457a !important}
-
-.theme {color:#fff !important; background-color:#6a92d3 !important}
-.text-theme {color:#6a92d3 !important}
-.border-theme {border-color:#6a92d3 !important}
-
-.hover-theme:hover {color:#fff !important; background-color:#6a92d3 !important}
-.hover-text-theme:hover {color:#6a92d3 !important}
-.hover-border-theme:hover {border-color:#6a92d3 !important}
-
-/* .label { color: #000; font-size: 8pt;} */
-/* #main {margin-left: 210px;} */
-/* @media (max-width:768px){
-  #sidebar { display: none;}
-  #main { margin-left: 0px;} 
-} */
-
-
-
-.table {
-  table-layout: fixed;
-}
-
-.text-line-through { text-decoration: line-through; }
-
-#snackbar {
-  visibility: hidden;
-  min-width: 250px;
-  margin-left: -125px;
-  background-color: #333;
-  color: #fff;
-  text-align: center;
-  
-  padding: 16px;
-  position: fixed;
-  z-index: 1;
-  left: 50%;
-  bottom: 30px;
-  font-size: 17px;
-}
-
-#snackbar.show {
-  visibility: visible;
-  -webkit-animation: fadein 0.5s, fadeout 0.5s 2.5s;
-  animation: fadein 0.5s, fadeout 0.5s 2.5s;
-}
-
-@-webkit-keyframes fadein {
-  from {bottom: 0; opacity: 0;} 
-  to {bottom: 30px; opacity: 1;}
-}
-
-@keyframes fadein {
-  from {bottom: 0; opacity: 0;}
-  to {bottom: 30px; opacity: 1;}
-}
-
-@-webkit-keyframes fadeout {
-  from {bottom: 30px; opacity: 1;} 
-  to {bottom: 0; opacity: 0;}
-}
-
-@keyframes fadeout {
-  from {bottom: 30px; opacity: 1;}
-  to {bottom: 0; opacity: 0;}
-}
-
-.tabulator-header-filter > input {
-  background-color: #fff;
-  border: 1px solid #ccc;
-  font-weight: normal;
-}
-
-.readonly {
-  pointer-events:none;
-  color: #000!important;
-  background-color: #d3d3d3!important;
-}
-
-
-
-.right-side-bg {
-  background: url("../img/bg1.jpg");
-  background-size: cover;
-  min-height: 100vh;
-}
-
-
-
-
-/* .mceContentBody { 
-  background: #fff;
-  color:#000;
-} */
-
-/* .tabulator-row-even {
-  background-color: #757575;
-} */
-
-
-button
-{
-       background-color: #f4f4f4;
-       border: 1pt solid #cccccc;
-       font-size: 10pt;
-       color: #000;
-       line-height: 1line;
-       text-align: center;
-}
-button:hover
-{
-       background-color: #343434;
-}
-button:pressed
-{
-       background-color: #343434;
-}
-button:focus
-{
-       background-color: #343434;
-}
-
-
-
-
-header
-{
-       background-color: #fff;
-       box-sizing: border-box;
-}
-
-.actionbtn {
-       background-color: #293146;
-       color: #fff;
-}
-
-::-webkit-input-placeholder
-{
-       color: rgba(60.3922%,60.3922%,60.3922%,1);
-}
-
-
-textarea
-{
-       background-color: #fff;
-       border-top-color: rgba(80%,80%,80%,1);
-       border-right-color: rgba(80%,80%,80%,1);
-       border-bottom-color: rgba(80%,80%,80%,1);
-       border-left-color: rgba(80%,80%,80%,1);
-       border-top-style: solid;
-       border-right-style: solid;
-       border-bottom-style: solid;
-       border-left-style: solid;
-       border-top-width: 1pt;
-       border-right-width: 1pt;
-       border-bottom-width: 1pt;
-       border-left-width: 1pt;
-       font-size: 11pt;
-       color: #000;
-       line-height: 1line;
-       text-align: left;
-       /* margin-top: 0.88em;
-       margin-right: 0.75em;
-       margin-bottom: 0.63em;
-       margin-left: 0.75em;
-       top: 0pt;
-       right: 30pt;
-       bottom: 0pt;
-       left: 0pt;
-       position: absolute;
-       box-sizing: border-box; */
-}
-textarea:focus
-{
-       border-top-color: rgba(0%,43.9216%,81.1765%,1);
-       border-right-color: rgba(0%,43.9216%,81.1765%,1);
-       border-bottom-color: rgba(0%,43.9216%,81.1765%,1);
-       border-left-color: rgba(0%,43.9216%,81.1765%,1);
-}
-textarea:placeholder
-{
-       color: rgba(80%,80%,80%,1);
-}
-/* textarea .text
-{
-       
-} */
-textarea .scrollbar_track
-{
-       width: 30pt;
-       top: 0pt;
-       right: 0pt;
-       bottom: 0pt;
-       position: absolute;
-       box-sizing: border-box;
-}
-
-
-footer
-{
-       background-color: #fff;
-       box-sizing: border-box;
-}
-
-
-div.group_container
-{
-       background-color: #e3e3e3;
-       border-top-color: rgba(80%,80%,80%,1);
-       border-right-color: rgba(80%,80%,80%,1);
-       border-bottom-color: rgba(80%,80%,80%,1);
-       border-left-color: rgba(80%,80%,80%,1);
-       border-top-style: solid;
-       border-right-style: solid;
-       border-bottom-style: solid;
-       border-left-style: solid;
-       border-top-width: 1pt;
-       border-right-width: 1pt;
-       border-bottom-width: 1pt;
-  border-left-width: 1pt;
-  padding-top: 4px;
-  padding-bottom: 8px;
-}
-
-/* Custom Styles */
-.ListView_Default
-{
-
-       background-color: rgba(0%,0%,0%,0);
-       border-top-style: none;
-       border-right-style: none;
-       border-bottom-style: none;
-       border-left-style: none;
-
-       color: #000;
-       text-align: left;
-       margin-top: 2pt;
-       margin-right: 2pt;
-       margin-bottom: 2pt;
-       margin-left: 2pt;
-}
-
-
-button.btnNavigation 
-{
-
-       background-color: rgba(0%,0%,0%,0);
-
-       font-family: -fm-font-family(Arial,Arial-BoldMT);
-       font-weight: bold;
-       font-size: 10pt;
-       color: #fff;
-       padding-top: 0pt;
-       padding-right: 0pt;
-       padding-bottom: 0pt;
-       padding-left: 0pt;
-}
-
-div.PageListHeader
-{
-       border-top-color: rgba(80%,80%,80%,1);
-       border-right-color: rgba(80%,80%,80%,1);
-       border-bottom-color: rgba(80%,80%,80%,1);
-       border-left-color: rgba(80%,80%,80%,1);
-       border-top-style: solid;
-       border-right-style: solid;
-       border-bottom-style: solid;
-       border-left-style: solid;
-       border-top-width: 1pt;
-       border-right-width: 1pt;
-       border-bottom-width: 1pt;
-       border-left-width: 1pt;
-       color: #fff;
-       -fm-text-vertical-align: center;
-}
-div.PageListHeader .inner_border
-{
-       padding-top: 5pt;
-       padding-right: 5pt;
-       padding-bottom: 5pt;
-       padding-left: 5pt;
-}
-
-.moduletoolbar
-{
-  background-color: #293146;
-  color: #fff;
-}
-
-div.BodySectionHeader
-{
-       font-family: -fm-font-family(Arial,Arial-BoldMT);
-       font-weight: bold;
-}
-
-
-div.PageHeadTitle
-{
-       font-size: 18pt;
-       color: #fff;
-}
-
-div.SubHeadTitle
-{
-       font-size: 13pt;
-       color: #fff;
-}
-
-<<<<<<< HEAD
-div.SectionHeader
-=======
-
-
-div.ListView_SectionHeader
->>>>>>> 509afc930052596f387a5621613c8257684e5df4
-{
-
-       background-color: rgba(22.3529%,26.6667%,38.4314%,1);
-
-}
-
-button.toolbarbtn
-{
-  border: 0.5px solid #c6c6c6;
-       background-color: rgba(0%,0%,0%,0);
-       color: #fff;
-}
-button.toolbarbtn:hover
-{
-
-       background-color: #343434;
-       color: #fff;
-}
-button.toolbarbtn:pressed
-{
-
-       background-color: rgba(20.3922%,20.3922%,20.3922%,1);
-       color: #fff;
-}
-button.toolbarbtn:focus
-{
-       border-top-color: rgba(80%,80%,80%,1);
-       border-right-color: rgba(80%,80%,80%,1);
-       border-bottom-color: rgba(80%,80%,80%,1);
-       border-left-color: rgba(80%,80%,80%,1);
-}
-
-
-a.toolbarbtn
-{
-  border: 0.5px solid #c6c6c6;
-       background-color: rgba(0%,0%,0%,0);
-       color: #fff;
-       text-align: center;
-       text-decoration: unset;
-}
-a.toolbarbtn:hover
-{
-
-       background-color: rgba(20.3922%,20.3922%,20.3922%,1);
-       color: #fff;
-}
-a.toolbarbtn:pressed
-{
-       background-color: rgba(20.3922%,20.3922%,20.3922%,1);
-       color: #fff;
-}
-a.toolbarbtn:focus
-{
-       border-top-color: rgba(80%,80%,80%,1);
-       border-right-color: rgba(80%,80%,80%,1);
-       border-bottom-color: rgba(80%,80%,80%,1);
-       border-left-color: rgba(80%,80%,80%,1);
-}
-
-button.bodybtn
-{
-  border: 0.5px solid #c6c6c6;
-
-       background-color: rgba(0%,0%,0%,0);
-
-       color: #000;
-}
-button.bodybtn:hover
-{
-
-       background-color: rgba(20.3922%,20.3922%,20.3922%,1);
-       color: #fff;
-}
-button.bodybtn:pressed
-{
-
-       background-color: rgba(20.3922%,20.3922%,20.3922%,1);
-       color: #fff;
-}
-button.bodybtn:focus
-{
-       border-top-color: rgba(80%,80%,80%,1);
-       border-right-color: rgba(80%,80%,80%,1);
-       border-bottom-color: rgba(80%,80%,80%,1);
-       border-left-color: rgba(80%,80%,80%,1);
-}
-
-
-a.bodybtn
-{
-  border: 0.5px solid #c6c6c6;
-
-       background-color: rgba(0%,0%,0%,0);
-
-       color: #000;
-       text-align: center;
-       text-decoration: unset;
-}
-a.bodybtn:hover
-{
-
-       background-color: rgba(20.3922%,20.3922%,20.3922%,1);
-       color: #fff;
-}
-a.bodybtn:pressed
-{
-       background-color: rgba(20.3922%,20.3922%,20.3922%,1);
-       color: #fff;
-}
-a.bodybtn:focus
-{
-       border-top-color: rgba(80%,80%,80%,1);
-       border-right-color: rgba(80%,80%,80%,1);
-       border-bottom-color: rgba(80%,80%,80%,1);
-       border-left-color: rgba(80%,80%,80%,1);
-}
-
-
-div.ListView_Header
-{
-       border-top-color: rgba(80%,80%,80%,1);
-       border-right-color: rgba(80%,80%,80%,1);
-       border-bottom-color: rgba(80%,80%,80%,1);
-       border-left-color: rgba(80%,80%,80%,1);
-       border-top-style: solid;
-       border-right-style: solid;
-       border-bottom-style: solid;
-       border-left-style: solid;
-       border-top-width: 1pt;
-       border-right-width: 1pt;
-       border-bottom-width: 1pt;
-       border-left-width: 1pt;
-       font-weight: normal;
-       color: #fff;
-       -fm-text-vertical-align: center;
-}
-div.ListView_Header .inner_border
-{
-       padding-top: 2pt;
-       padding-right: 2pt;
-       padding-bottom: 2pt;
-       padding-left: 2pt;
-}
-
-div.toolbar
-{
-
-       background-color: rgba(32.1569%,38.8235%,55.6863%,1);
-
-}
-
-div.sectiontoolbar
-{
-  margin-top: 8px;
-  margin-bottom: 8px;
-       background-color: rgb(97, 98, 100);
-
-}
-
-div.FooterLabel
-{
-       color: #fff;
-}
-
-button.Buttom_BodyNav:hover
-{
-
-       background-color: rgb(141, 141, 141);
-
-       /* color: #fff; */
-}
-
-
-::-webkit-scrollbar {
--webkit-appearance: none;
-width: 10px;
-}
-
-::-webkit-scrollbar-track {
-       background-color:  rgba(80%, 80%, 80%, .5);
-}
-
-::-webkit-scrollbar-thumb {
-border-radius: 0px;
-background-color: rgba(0, 0, 0, .5);
--webkit-box-shadow: 0 0 1px rgba(255, 255, 255, .5);
-}      
-
-div.portaltextheader {
-       padding: 2px;
-       border: 1px solid white;
-}
-
-
-
-
-
-select {
-  /* -webkit-appearance: none; */
-  display: block;
-  color: #000;
-  line-height: 1line;
-       text-align: left;
-  padding: 3.5px;
-  width: 100%;
-  max-width: 100%; 
-  box-sizing: border-box;
-  margin: 0;
-  border: 1px solid #cccccc;
-  /* box-shadow: 0 1px 0 1px rgba(0,0,0,.04); */
-  border-radius: 0px;
-  font-weight: normal;
-  font-size: 11pt;
-  background-color: #fff;
-  /* background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E'), 
-    linear-gradient(to bottom, #fff 0%,#fff 100%);
-  background-repeat: no-repeat, repeat;
-  background-position: right .7em top 50%, 0 0;
-  background-size: .65em auto, 100%; */
-}
-
-
-/* option {
-  appearance: none;
-  border: 1px solid 0070cf;
-  padding: 2px;
-} */
-select:focus
-{
-       border: 1px solid #3a6fc3;
-  border-radius: unset;
-}
-
-
-::-webkit-select-placeholder
-{
-       color: #9a9a9a;
-}
-
-div.DataFooter{
-       background: #384462;
-}
-.input-sum{padding:2px;display:block;border: 1px solid #ccc;width:100%;background-color: #4D4D4D; }  
-
-
-.currency-sum {padding:2px;display:block;border: 1px solid #ccc;width:100%;background-color: #4D4D4D;}
-
-.currency-sum,.currency-sum:read-only {
-  display: block;
-  color: #fff;
-  padding: 2px;
-  padding-right: 12px;
-  width: 100%;
-  max-width: 100%; 
-  box-sizing: border-box;
-  margin: 0;
-  border: 1px solid #ccc;
-  border-radius: unset;
-  -moz-appearance: none;
-  -webkit-appearance: none;
-  appearance: none;
-  background-color: #4D4D4D;
-  background-image: url('data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22225%22%20height=%22300%22%3E%3Cpath%20fill=%22white%22%20stroke=%22none%22%20d=%22m%20224.99996,16.22698%20-8.11342,36.41161%20q%20-24.14255,-19.78892%20-54.61741,-19.78892%20-41.3588,0%20-65.00658,23.74671%20-23.647774,23.7467%20-28.397115,53.23215%20l%20134.960355,0%20-5.14505,26.71508%20-132.981532,0%20-0.395848,7.71771%200.395848,18.20566%20127.242642,0%20-5.14505,26.71508%20-117.941954,0%20q%207.519719,40.17154%2032.552754,59.06997%2025.03303,18.89844%2056.49745,18.89844%2037.20302,0%2057.98149,-19.59107%20l%200,40.9631%20Q%20192.34828,300%20162.26913,300%2053.034301,300%2030.474864,189.18206%20l%20-30.474864,0%205.738751,-26.71508%2020.580475,0%20q%20-0.395708,-4.74934%20-0.395708,-17.80995%20l%200,-8.11342%20-25.923518,0%205.738751,-26.71508%2023.152999,0%20Q%2039.181988,55.21112%2076.583149,27.60556%20113.98417,0%20163.06069,0%20199.868,0%20224.99996,16.22698%20z%22%20/%3E%3C/svg%3E');
-  background-repeat: no-repeat, repeat;
-  background-position: right 2px top 50%, 0 0;
-  background-size: 9px auto, 100%;
-}
-
-
-
-
-/* input[type=date]::-webkit-inner-spin-button, 
-input[type=date]::-webkit-outer-spin-button { 
-  display: none;
-} */
-
-:focus {
-  outline: unset;
-}
-
-input
-{
-       background-color: #ffffff;
-       border: 1px solid #cccccc; 
-       font-weight: normal;
-       font-size: 11pt;
-       color: #000000;
-       line-height: 1line;
-  text-align: left;
-  width:100%;
-  padding:2px;
-  display:block;
-  border-radius: unset;
-}
-/* input:focus
-{
-       border: #0070cf;
-} */
-
-input:focus {
-  border: 1px solid #3a6fc3;
-  border-radius: unset;
-}
-
-input[readonly=true]{
-  color: #000!important;
-  background-color: #d3d3d3!important;
-}
-
-input[type=number]::-webkit-inner-spin-button, 
-input[type=number]::-webkit-outer-spin-button { 
-  -webkit-appearance: none; 
-  margin: 0; 
-}
-/* input[type=checkbox]{
-  appearance: none;
-  display:inline-block;
-  font-size: 24px!important;
-  border: 1px solid green;
-} */
-
-input[class=currency] {
-  padding: 2px;
-  padding-right: 12px;
-  text-align: right;
-  background-image: url('data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22225%22%20height=%22300%22%3E%3Cpath%20stroke=%22none%22%20d=%22m%20224.99996,16.22698%20-8.11342,36.41161%20q%20-24.14255,-19.78892%20-54.61741,-19.78892%20-41.3588,0%20-65.00658,23.74671%20-23.647774,23.7467%20-28.397115,53.23215%20l%20134.960355,0%20-5.14505,26.71508%20-132.981532,0%20-0.395848,7.71771%200.395848,18.20566%20127.242642,0%20-5.14505,26.71508%20-117.941954,0%20q%207.519719,40.17154%2032.552754,59.06997%2025.03303,18.89844%2056.49745,18.89844%2037.20302,0%2057.98149,-19.59107%20l%200,40.9631%20Q%20192.34828,300%20162.26913,300%2053.034301,300%2030.474864,189.18206%20l%20-30.474864,0%205.738751,-26.71508%2020.580475,0%20q%20-0.395708,-4.74934%20-0.395708,-17.80995%20l%200,-8.11342%20-25.923518,0%205.738751,-26.71508%2023.152999,0%20Q%2039.181988,55.21112%2076.583149,27.60556%20113.98417,0%20163.06069,0%20199.868,0%20224.99996,16.22698%20z%22%20/%3E%0A%3C/svg%3E'), 
-  linear-gradient(to bottom, #fff 0%,#fff 100%);
-  background-repeat: no-repeat, repeat;
-  background-position: right 2px top 50%, 0 0;
-  background-size: 9px auto, 100%;
-}
-
-input[class=currency]:read-only {
-  background-image: url('data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22225%22%20height=%22300%22%3E%3Cpath%20stroke=%22none%22%20d=%22m%20224.99996,16.22698%20-8.11342,36.41161%20q%20-24.14255,-19.78892%20-54.61741,-19.78892%20-41.3588,0%20-65.00658,23.74671%20-23.647774,23.7467%20-28.397115,53.23215%20l%20134.960355,0%20-5.14505,26.71508%20-132.981532,0%20-0.395848,7.71771%200.395848,18.20566%20127.242642,0%20-5.14505,26.71508%20-117.941954,0%20q%207.519719,40.17154%2032.552754,59.06997%2025.03303,18.89844%2056.49745,18.89844%2037.20302,0%2057.98149,-19.59107%20l%200,40.9631%20Q%20192.34828,300%20162.26913,300%2053.034301,300%2030.474864,189.18206%20l%20-30.474864,0%205.738751,-26.71508%2020.580475,0%20q%20-0.395708,-4.74934%20-0.395708,-17.80995%20l%200,-8.11342%20-25.923518,0%205.738751,-26.71508%2023.152999,0%20Q%2039.181988,55.21112%2076.583149,27.60556%20113.98417,0%20163.06069,0%20199.868,0%20224.99996,16.22698%20z%22%20/%3E%0A%3C/svg%3E'), 
-    linear-gradient(to bottom, #d3d3d3 0%,#d3d3d3 100%);
-}
-
-input[class=percent] {
-  padding: 2px;
-  padding-right: 12px;
-  text-align: right;
-  background-image: url('data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22256%22%20height=%22232%22%20version=%221.0%22%3E%3Cg%20transform=%22translate(-112.3674,-128.3649)%22%3E%3Cpath%20style=%22fill:black;fill-opacity:1;stroke:none%22%20d=%22M%20317.1674,257.53698%20C%20308.53463,257.53708%20301.73774,261.20839%20296.77671,268.55094%20C%20291.91449,275.89365%20289.48349,286.1138%20289.48368,299.2114%20C%20289.48349,312.11067%20291.91449,322.2812%20296.77671,329.72303%20C%20301.73774,337.06568%20308.53463,340.737%20317.1674,340.73698%20C%20325.60128,340.737%20332.24934,337.06568%20337.11159,329.72303%20C%20342.07258,322.2812%20344.5532,312.11067%20344.55345,299.2114%20C%20344.5532,286.21302%20342.07258,276.04249%20337.11159,268.69977%20C%20332.24934,261.25801%20325.60128,257.53708%20317.1674,257.53698%20M%20317.1674,238.63466%20C%20332.84469,238.63477%20345.29739,244.09213%20354.52554,255.00675%20C%20363.75318,265.92157%20368.36713,280.65644%20368.3674,299.2114%20C%20368.36713,317.76648%20363.70357,332.50135%20354.37671,343.41605%20C%20345.14855,354.23156%20332.74546,359.6393%20317.1674,359.63931%20C%20301.29123,359.6393%20288.7393,354.23156%20279.51159,343.41605%20C%20270.28351,332.50135%20265.66956,317.76648%20265.66973,299.2114%20C%20265.66956,280.55721%20270.28351,265.82234%20279.51159,255.00675%20C%20288.83853,244.09213%20301.39045,238.63477%20317.1674,238.63466%20M%20163.5674,147.9928%20C%20155.03401,147.993%20148.28673,151.71393%20143.32554,159.15559%20C%20138.46349,166.49841%20136.03248,176.61933%20136.03252,189.51838%20C%20136.03248,202.61621%20138.46349,212.83635%20143.32554,220.17884%20C%20148.18751,227.52161%20154.93479,231.19292%20163.5674,231.1928%20C%20172.19989,231.19292%20178.94717,227.52161%20183.80926,220.17884%20C%20188.77041,212.83635%20191.25103,202.61621%20191.25113,189.51838%20C%20191.25103,176.71856%20188.77041,166.59764%20183.80926,159.15559%20C%20178.84794,151.71393%20172.10066,147.993%20163.5674,147.9928%20M%20297.9674,129.09047%20L%20321.78136,129.09047%20L%20182.7674,359.63931%20L%20158.95345,359.63931%20L%20297.9674,129.09047%20M%20163.5674,129.09047%20C%20179.24484,129.0907%20191.74715,134.54806%20201.07438,145.46256%20C%20210.4014,156.27827%20215.06496,170.96352%20215.06508,189.51838%20C%20215.06496,208.27201%20210.4014,223.05649%20201.07438,233.87187%20C%20191.84638,244.68748%20179.34406,250.09523%20163.5674,250.09512%20C%20147.79061,250.09523%20135.28829,244.68748%20126.06043,233.87187%20C%20116.93172,222.95727%20112.36739,208.17279%20112.3674,189.51838%20C%20112.36739,171.06275%20116.98134,156.37749%20126.20926,145.46256%20C%20135.43713,134.54806%20147.88983,129.0907%20163.5674,129.09047%22%20/%3E%3C/g%3E%3C/svg%3E'), 
-    linear-gradient(to bottom, #fff 0%,#fff 100%);
-  background-repeat: no-repeat, repeat;
-  background-position: right 2px top 50%, 0 0;
-  background-size: 9px auto, 100%;
-}
-
-
-label {
-  height: 12.8px!important;
-  color: #000; 
-  font-size: 8pt;
-}
-
-
-
-input[type="checkbox"] {
-  display: block;
-  -webkit-appearance:none;/* Hides the default checkbox style */ 
-  height:29.66px;
-  width:29.66px;
-  cursor:pointer;
-  position:relative;
-  -webkit-transition: .15s;
-  border-radius: unset;
-  border: 1px solid #cccccc; 
-  background-color:#fff;
- }
- input[type="checkbox"]:checked {
-  background-color:#9ABCEA;
- }
- input[type="checkbox"]:before, input[type="checkbox"]:checked:before {
-  position:absolute;
-  top:0;
-  left:0;
-  width:100%;
-  height:100%;
-  line-height:2em;
-  text-align:center;
-  color:#000;
-  content: '';
- }
- input[type="checkbox"]:checked:before {
-  font-size: 11pt;
-  content: '✔';
- }
- input[type="checkbox"]:hover:before {
-  background:rgba(255,255,255,0.3);
- }
-
- body.mceContentBody { 
-  background:#e8f0fe;
-  color:#000;
-}
-
-/* .mceContentBody { 
-  background: #e8f0fe;
-  color:#000;
-} */
-
-/* .tabulator-row-even {
-  background-color: #757575;
-} */
-
-:focus {
-  outline: 1px solid #607d8b;
-}
-
-.modal-content > header {
-       background-color: #293146;
-       color: #fff;
-       padding:8px!important;
-       margin-bottom: 10px;
-}
-
-.modal-content > header > h2 {
-       font-size: 13pt;
-}
-
-.modal-content > footer {
-       
-       /* padding:0.01em 8px;  */
-       text-align:right!important;
-       color:#000!important;
-       background-color:#c6c6c6!important;
-       margin-top: 6px;
-       padding-top:8px!important;
-       padding-bottom:8px!important;
-}
-
-.modal-content > header:after,.modal-content > header:before,.modal-content > footer:after,.modal-content > footer:before {
-       content:"";display:table;clear:both
-}
-
-span[class^="icon"]::after {
-       content: "\A";
-       white-space: pre;
-}
-
-@media (max-width:600px){
-  div.PageHeadTitle{font-size: 12pt;}
-  button {font-size: 8pt;}
-}
diff --git a/app/static/css/theme.old.css b/app/static/css/theme.old.css
deleted file mode 100644 (file)
index e5378a2..0000000
+++ /dev/null
@@ -1,939 +0,0 @@
-/* W3PRO.CSS 4.13 June 2019 by Jan Egil and Borge Refsnes */
-html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}
-/* Extract from normalize.css by Nicolas Gallagher and Jonathan Neal git.io/normalize */
-html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}
-html,body {-webkit-user-select: none;-ms-user-select: none;user-select: none;-moz-user-select:none;}
-article,aside,details,figcaption,figure,footer,header,main,menu,nav,section{display:block}summary{display:list-item}
-audio,canvas,progress,video{display:inline-block}progress{vertical-align:baseline}
-audio:not([controls]){display:none;height:0}[hidden],template{display:none}
-a{background-color:transparent}a:active,a:hover{outline-width:0}
-abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}
-b,strong{font-weight:bolder}dfn{font-style:italic}mark{background:#ff0;color:#000}
-small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
-sub{bottom:-0.25em}sup{top:-0.5em}figure{margin:1em 40px}img{border-style:none}
-code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}hr{box-sizing:content-box;height:0;overflow:visible}
-button,input,select,textarea,optgroup{font:inherit;margin:0}optgroup{font-weight:bold}
-button,input{overflow:visible}button,select{text-transform:none}
-button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}
-button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}
-button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}
-fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:.35em .625em .75em}
-legend{color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto}
-[type=checkbox],[type=radio]{padding:0}
-[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}
-[type=search]{-webkit-appearance:textfield;outline-offset:-2px}
-[type=search]::-webkit-search-decoration{-webkit-appearance:none}
-::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}
-/* End extract */
-/* html,body {
-       background-color: #52638e;
-} */
-html,body{font-family:Verdana,sans-serif;font-size:9pt;line-height:1.5}html{overflow-x:hidden}
-h1{font-size:36px}h2{font-size:30px}h3{font-size:24px}h4{font-size:20px}h5{font-size:18px}h6{font-size:16px}.serif{font-family:serif}
-h1,h2,h3,h4,h5,h6{font-family:"Segoe UI",Arial,sans-serif;font-weight:400;margin: 0}.wide{letter-spacing:4px}
-hr{border:0;border-top:1px solid #eee;margin:20px 0}
-.img{max-width:100%;height:auto; vertical-align:middle}a{color:inherit}
-.table,.table-all{border-collapse:collapse;border-spacing:0;width:100%;display:table}.table-all{border:1px solid #ccc}
-.bordered tr,.table-all tr{border-bottom:1px solid #ddd}.striped tbody tr:nth-child(even){background-color:#f1f1f1}
-.table-all tr:nth-child(odd){background-color:#fff}.table-all tr:nth-child(even){background-color:#f1f1f1}
-.hoverable tbody tr:hover,.ul.hoverable li:hover{background-color:#ccc}.centered tr th,.centered tr td{text-align:center}
-.table td,.table th,.table-all td,.table-all th{padding:8px 8px;display:table-cell;text-align:left;vertical-align:top}
-.table th:first-child,.table td:first-child,.table-all th:first-child,.table-all td:first-child{padding-left:16px}
-.btn,.button{border:none;display:inline-block;padding:8px 16px;vertical-align:middle;overflow:hidden;text-decoration:none;color:inherit;background-color:inherit;text-align:center;cursor:pointer;white-space:nowrap}
-.btn:hover{box-shadow:0 8px 16px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)}
-.btn,.button{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}   
-.disabled,.btn:disabled,.button:disabled{cursor:not-allowed;opacity:0.3}.disabled *,:disabled *{pointer-events:none}
-.btn.disabled:hover,.btn:disabled:hover{box-shadow:none}
-.badge,.tag{background-color:#000;color:#fff;display:inline-block;padding-left:8px;padding-right:8px;text-align:center}.badge{border-radius:50%}
-.ul{list-style-type:none;padding:0;margin:0}.ul li{padding:8px 16px;border-bottom:1px solid #ddd}.ul li:last-child{border-bottom:none}
-.tooltip,.display-container{position:relative}.tooltip .text{display:none}.tooltip:hover .text{display:inline-block}
-.ripple:active{opacity:0.5}.ripple{transition:opacity 0s}
-.input{padding:6px;display:block;border: 1px solid #ccc;width:100%;background-color: #fff; }/*#e8f0fe*/
-.select{padding:2px 0; display:block;width:100%;border:1px solid #ccc;background-color: #fff;}
-.dropdown-click,.dropdown-hover{position:relative;display:inline-block;cursor:pointer}
-.dropdown-hover:hover .dropdown-content{display:block; }
-.dropdown-hover:first-child,.dropdown-click:hover{background-color:#ccc;color:#000}
-.dropdown-hover:hover > .button:first-child,.dropdown-click:hover > .button:first-child{background-color:#ccc;color:#000}
-.dropdown-content{cursor:auto;color:#000;background-color:#fff;display:none;position:absolute;min-width:160px;margin:0;padding:0;z-index:1}
-.check,.radio{width:24px;height:24px;position:relative;top:6px}
-.sidebar{height:100%;width:160px;background-color:#fff;position:fixed!important;z-index:1;overflow:auto}
-.bar-block .dropdown-hover,.bar-block .dropdown-click{width:100%}
-.bar-block .dropdown-hover .dropdown-content,.bar-block .dropdown-click .dropdown-content{min-width:100%}
-.bar-block .dropdown-hover .button,.bar-block .dropdown-click .button{width:100%;text-align:left;padding:8px 16px}
-.main,#main{transition:margin-left .4s}
-.modal{z-index:3;display:none;padding-top:100px;position:fixed;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgb(0,0,0);background-color:rgba(0,0,0,0.4)}
-.modal-content{margin:auto;background-color:#fff;position:relative;padding:0;outline:0;width:600px}
-.bar{width:100%;overflow:hidden}.center .bar{display:inline-block;width:auto}
-.bar .bar-item{padding:8px 16px;float:left;width:auto;border:none;display:block;outline:0}
-.bar .dropdown-hover,.bar .dropdown-click{position:static;float:left}
-.bar .button{white-space:normal}
-.bar-block .bar-item{width:100%;display:block;padding:8px 16px;text-align:left;border:none;white-space:normal;float:none;outline:0}
-.bar-block.center .bar-item{text-align:center}.block{display:block;width:100%}
-.responsive{display:block;overflow-x:auto}
-.container:after,.container:before,.datapanel:after,.datapanel:before,.row:after,.row:before,.row-padding:after,.row-padding:before,
-.cell-row:before,.cell-row:after,.clear:after,.clear:before,.bar:before,.bar:after{content:"";display:table;clear:both}
-.col,.half,.third,.twothird,.threequarter,.quarter,.fifth,.twofifth,.threefifth,.fourfifth{float:left;width:100%}
-.col.s1{width:8.33333%}.col.s2{width:16.66666%}.col.s3{width:24.99999%}.col.s4{width:33.33333%}
-.col.s5{width:41.66666%}.col.s6{width:49.99999%}.col.s7{width:58.33333%}.col.s8{width:66.66666%}
-.col.s9{width:74.99999%}.col.s10{width:83.33333%}.col.s11{width:91.66666%}.col.s12{width:99.99999%}
-@media (min-width:601px){.col.m1{width:8.33333%}.col.m2{width:16.66666%}.col.m3,.quarter{width:24.99999%}.col.m4,.third{width:33.33333%}.fifth{width:20%;min-width:100px}
-.col.m5{width:41.66666%}.col.m6,.half{width:49.99999%}.col.m7{width:58.33333%}.col.m8,.twothird{width:66.66666%}
-.col.m9,.threequarter{width:74.99999%}.col.m10{width:83.33333%}.col.m11{width:91.66666%}.col.m12{width:99.99999%}.twofifth{width:40%}.threefifth{width:60%}.fourfifth{width:80%}}
-@media (min-width:993px){.col.l1{width:8.33333%}.col.l2{width:16.66666%}.col.l3{width:24.99999%}.col.l4{width:33.33333%}
-.col.l5{width:41.66666%}.col.l6{width:49.99999%}.col.l7{width:58.33333%}.col.l8{width:66.66666%}
-.col.l9{width:74.99999%}.col.l10{width:83.33333%}.col.l11{width:91.66666%}.col.l12{width:99.99999%}}
-.rest{overflow:hidden}.stretch{margin-left:-16px;margin-right:-16px}
-.content,.auto{margin-left:auto;margin-right:auto}.content{max-width:980px}.auto{max-width:1140px}
-.cell-row{display:table;width:100%}.cell{display:table-cell}
-.cell-top{vertical-align:top}.cell-middle{vertical-align:middle}.cell-bottom{vertical-align:bottom}
-.hide{display:none!important}.show-block,.show{display:block!important}.show-inline-block{display:inline-block!important}
-@media (max-width:1205px){.auto{max-width:95%}}
-@media (max-width:600px){.modal-content{margin:0 10px;width:auto!important}.modal{padding-top:30px}
-.dropdown-hover.mobile .dropdown-content,.dropdown-click.mobile .dropdown-content{position:relative}   
-.hide-small{display:none!important}.mobile{display:block;width:100%!important}.bar-item.mobile,.dropdown-hover.mobile,.dropdown-click.mobile{text-align:center}
-.dropdown-hover.mobile,.dropdown-hover.mobile .btn,.dropdown-hover.mobile .button,.dropdown-click.mobile,.dropdown-click.mobile .btn,.dropdown-click.mobile .button{width:100%}}
-@media (max-width:768px){.modal-content{width:500px}.modal{padding-top:50px}}
-@media (min-width:993px){.modal-content{width:900px}.hide-large{display:none!important}.sidebar.collapse{display:block!important}}
-@media (max-width:992px) and (min-width:601px){.hide-medium{display:none!important}}
-@media (max-width:992px){.sidebar.collapse{display:none}.main{margin-left:0!important;margin-right:0!important}.auto{max-width:100%}}
-.top,.bottom{position:fixed;width:100%;z-index:1}.top{top:0}.bottom{bottom:0}
-.overlay{position:fixed;display:none;width:100%;height:100%;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,0.5);z-index:2}
-.display-topleft{position:absolute;left:0;top:0}.display-topright{position:absolute;right:0;top:0}
-.display-bottomleft{position:absolute;left:0;bottom:0}.display-bottomright{position:absolute;right:0;bottom:0}
-.display-middle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%)}
-.display-left{position:absolute;top:50%;left:0%;transform:translate(0%,-50%);-ms-transform:translate(-0%,-50%)}
-.display-right{position:absolute;top:50%;right:0%;transform:translate(0%,-50%);-ms-transform:translate(0%,-50%)}
-.display-topmiddle{position:absolute;left:50%;top:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)}
-.display-bottommiddle{position:absolute;left:50%;bottom:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)}
-.display-container:hover .display-hover{display:block}.display-container:hover span.display-hover{display:inline-block}.display-hover{display:none}
-.display-position{position:absolute}
-.circle{border-radius:50%}
-.round-small{border-radius:2px}.round,.round-medium{border-radius:4px}.round-large{border-radius:8px}.round-xlarge{border-radius:16px}.round-xxlarge{border-radius:32px}
-.row-padding,.row-padding>.half,.row-padding>.third,.row-padding>.twothird,.row-padding>.threequarter,.row-padding>.quarter,.row-padding>.col{padding:0 8px}
-.container,.datapanel{padding:0.01em 8px}.datapanel{margin-top:8px;margin-bottom:8px}
-.code,.codespan{font-family:Consolas,"courier new";font-size:16px}
-.code{width:auto;background-color:#fff;padding:8px 12px;border-left:4px solid #4CAF50;word-wrap:break-word}
-.codespan{color:crimson;background-color:#f1f1f1;padding-left:4px;padding-right:4px;font-size:110%}
-.card,.card-2{box-shadow:0 2px 5px 0 rgba(0,0,0,0.16)}
-.card-4,.hover-shadow:hover{box-shadow:0 4px 10px 0 rgba(0,0,0,0.2),0 4px 20px 0 rgba(0,0,0,0.19)}
-.spin{animation:spin 2s infinite linear}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}
-.animate-fading{animation:fading 2s infinite}@keyframes fading{0%{opacity:0}50%{opacity:1}100%{opacity:0}}
-.animate-opacity{animation:opac 0.8s}@keyframes opac{from{opacity:0} to{opacity:1}}
-.animate-top{position:relative;animation:animatetop 1s}@keyframes animatetop{from{top:-300px;opacity:0} to{top:0;opacity:1}}
-.animate-left{position:relative;animation:animateleft 0.4s}@keyframes animateleft{from{left:-300px;opacity:0} to{left:0;opacity:1}}
-.animate-right{position:relative;animation:animateright 0.4s}@keyframes animateright{from{right:-300px;opacity:0} to{right:0;opacity:1}}
-.animate-bottom{position:relative;animation:animatebottom 1s}@keyframes animatebottom{from{bottom:-300px;opacity:0} to{bottom:0;opacity:1}}
-.animate-zoom {animation:animatezoom 0.6s}@keyframes animatezoom{from{transform:scale(0)} to{transform:scale(1)}}
-.animate-input{transition:width 0.4s ease-in-out}.animate-input:focus{width:100%!important}
-.opacity,.hover-opacity:hover{opacity:0.60}.opacity-off,.hover-opacity-off:hover{opacity:1}
-.opacity-max{opacity:0.25}.opacity-min{opacity:0.75}
-.greyscale-max,.grayscale-max,.hover-greyscale:hover,.hover-grayscale:hover{filter:grayscale(100%)}
-.greyscale,.grayscale{filter:grayscale(75%)}.greyscale-min,.grayscale-min{filter:grayscale(50%)}
-.sepia{filter:sepia(75%)}.sepia-max,.hover-sepia:hover{filter:sepia(100%)}.sepia-min{filter:sepia(50%)}
-.tiny{font-size:10px!important}.small{font-size:12px!important}.medium{font-size:15px!important}.large{font-size:18px!important}
-.xlarge{font-size:24px!important}.xxlarge{font-size:36px!important}.xxxlarge{font-size:48px!important}.jumbo{font-size:64px!important}
-.left-align{text-align:left!important}.right-align{text-align:right!important}.justify{text-align:justify!important}.center{text-align:center!important}
-.border-0{border:0!important}.border{border:1px solid #ccc!important}
-.border-top{border-top:1px solid #ccc!important}.border-bottom{border-bottom:1px solid #ccc!important}
-.border-left{border-left:1px solid #ccc!important}.border-right{border-right:1px solid #ccc!important}
-.topbar{border-top:6px solid #ccc!important}.bottombar{border-bottom:6px solid #ccc!important}
-.leftbar{border-left:6px solid #ccc!important}.rightbar{border-right:6px solid #ccc!important}
-.section,.code{margin-top:16px!important;margin-bottom:16px!important}
-.margin{margin:16px!important}.margin-top{margin-top:16px!important}.margin-bottom{margin-bottom:16px!important}
-.margin-left{margin-left:16px!important}.margin-right{margin-right:16px!important}
-.padding-small{padding:4px 8px!important}.padding{padding:8px 16px!important}.padding-large{padding:12px 24px!important}
-.padding-16{padding-top:16px!important;padding-bottom:16px!important}.padding-24{padding-top:24px!important;padding-bottom:24px!important}
-.padding-32{padding-top:32px!important;padding-bottom:32px!important}.padding-48{padding-top:48px!important;padding-bottom:48px!important}
-.padding-64{padding-top:64px!important;padding-bottom:64px!important}
-.left{float:left!important}.right{float:right!important}
-.button:hover{color:#000!important;background-color:#ccc!important}
-.transparent,.hover-none:hover{background-color:transparent!important}
-.hover-none:hover{box-shadow:none!important}
-/* DEFAULT COLORS */
-.amber,.hover-amber:hover{color:#000!important;background-color:#ffc107!important}
-.aqua,.hover-aqua:hover{color:#000!important;background-color:#00ffff!important}
-.blue,.hover-blue:hover{color:#fff!important;background-color:#2196F3!important}
-.light-blue,.hover-light-blue:hover{color:#000!important;background-color:#87CEEB!important}
-.brown,.hover-brown:hover{color:#fff!important;background-color:#795548!important}
-.cyan,.hover-cyan:hover{color:#000!important;background-color:#00bcd4!important}
-.blue-grey,.hover-blue-grey:hover{color:#fff!important;background-color:#607d8b!important}
-.green,.hover-green:hover{color:#fff!important;background-color:#4CAF50!important}
-.light-green,.hover-light-green:hover{color:#000!important;background-color:#8bc34a!important}
-.indigo,.hover-indigo:hover{color:#fff!important;background-color:#3f51b5!important}
-.khaki,.hover-khaki:hover{color:#000!important;background-color:#f0e68c!important}
-.lime,.hover-lime:hover{color:#000!important;background-color:#cddc39!important}
-.orange,.hover-orange:hover{color:#000!important;background-color:#ff9800!important}
-.deep-orange,.hover-deep-orange:hover{color:#fff!important;background-color:#ff5722!important}
-.pink,.hover-pink:hover{color:#fff!important;background-color:#e91e63!important}
-.purple,.hover-purple:hover{color:#fff!important;background-color:#9c27b0!important}
-.deep-purple,.hover-deep-purple:hover{color:#fff!important;background-color:#673ab7!important}
-.red,.hover-red:hover{color:#fff!important;background-color:#f44336!important}
-.sand,.hover-sand:hover{color:#000!important;background-color:#fdf5e6!important}
-.teal,.hover-teal:hover{color:#fff!important;background-color:#009688!important}
-.yellow,.hover-yellow:hover{color:#000!important;background-color:#ffeb3b!important}
-.white,.hover-white:hover{color:#000!important;background-color:#fff!important}
-.black,.hover-black:hover{color:#fff!important;background-color:#000!important}
-.grey,.hover-grey:hover{color:#000!important;background-color:#9e9e9e!important}
-.light-grey,.hover-light-grey:hover{color:#000!important;background-color:#f1f1f1!important}
-.dark-grey,.hover-dark-grey:hover{color:#fff!important;background-color:#616161!important}
-.pale-red,.hover-pale-red:hover{color:#000!important;background-color:#ffe7e7!important}.pale-green,.hover-pale-green:hover{color:#000!important;background-color:#e7ffe7!important}
-.pale-yellow,.hover-pale-yellow:hover{color:#000!important;background-color:#ffffd7!important}.pale-blue,.hover-pale-blue:hover{color:#000!important;background-color:#e7ffff!important}
-.text-align-right { text-align: right;}
-.text-amber,.hover-text-amber:hover{color:#ffc107!important}
-.text-aqua,.hover-text-aqua:hover{color:#00ffff!important}
-.text-blue,.hover-text-blue:hover{color:#2196F3!important}
-.text-light-blue,.hover-text-light-blue:hover{color:#87CEEB!important}
-.text-brown,.hover-text-brown:hover{color:#795548!important}
-.text-cyan,.hover-text-cyan:hover{color:#00bcd4!important}
-.text-blue-grey,.hover-text-blue-grey:hover{color:#607d8b!important}
-.text-green,.hover-text-green:hover{color:#4CAF50!important}
-.text-light-green,.hover-text-light-green:hover{color:#8bc34a!important}
-.text-indigo,.hover-text-indigo:hover{color:#3f51b5!important}
-.text-khaki,.hover-text-khaki:hover{color:#b4aa50!important}
-.text-lime,.hover-text-lime:hover{color:#cddc39!important}
-.text-orange,.hover-text-orange:hover{color:#ff9800!important}
-.text-deep-orange,.hover-text-deep-orange:hover{color:#ff5722!important}
-.text-pink,.hover-text-pink:hover{color:#e91e63!important}
-.text-purple,.hover-text-purple:hover{color:#9c27b0!important}
-.text-deep-purple,.hover-text-deep-purple:hover{color:#673ab7!important}
-.text-red,.hover-text-red:hover{color:#f44336!important}
-.text-sand,.hover-text-sand:hover{color:#fdf5e6!important}
-.text-teal,.hover-text-teal:hover{color:#009688!important}
-.text-yellow,.hover-text-yellow:hover{color:#d2be0e!important}
-.text-white,.hover-text-white:hover{color:#fff!important}
-.text-black,.hover-text-black:hover{color:#000!important}
-.text-grey,.hover-text-grey:hover{color:#757575!important}
-.text-light-grey,.hover-text-light-grey:hover{color:#f1f1f1!important}
-.text-dark-grey,.hover-text-dark-grey:hover{color:#3a3a3a!important}
-.border-amber,.hover-border-amber:hover{border-color:#ffc107!important}
-.border-aqua,.hover-border-aqua:hover{border-color:#00ffff!important}
-.border-blue,.hover-border-blue:hover{border-color:#2196F3!important}
-.border-light-blue,.hover-border-light-blue:hover{border-color:#87CEEB!important}
-.border-brown,.hover-border-brown:hover{border-color:#795548!important}
-.border-cyan,.hover-border-cyan:hover{border-color:#00bcd4!important}
-.border-blue-grey,.hover-blue-grey:hover{border-color:#607d8b!important}
-.border-green,.hover-border-green:hover{border-color:#4CAF50!important}
-.border-light-green,.hover-border-light-green:hover{border-color:#8bc34a!important}
-.border-indigo,.hover-border-indigo:hover{border-color:#3f51b5!important}
-.border-khaki,.hover-border-khaki:hover{border-color:#f0e68c!important}
-.border-lime,.hover-border-lime:hover{border-color:#cddc39!important}
-.border-orange,.hover-border-orange:hover{border-color:#ff9800!important}
-.border-deep-orange,.hover-border-deep-orange:hover{border-color:#ff5722!important}
-.border-pink,.hover-border-pink:hover{border-color:#e91e63!important}
-.border-purple,.hover-border-purple:hover{border-color:#9c27b0!important}
-.border-deep-purple,.hover-border-deep-purple:hover{border-color:#673ab7!important}
-.border-red,.hover-border-red:hover{border-color:#f44336!important}
-.border-sand,.hover-border-sand:hover{border-color:#fdf5e6!important}
-.border-teal,.hover-border-teal:hover{border-color:#009688!important}
-.border-yellow,.hover-border-yellow:hover{border-color:#ffeb3b!important}
-.border-white,.hover-border-white:hover{border-color:#fff!important}
-.border-black,.hover-border-black:hover{border-color:#000!important}
-.border-grey,.hover-border-grey:hover{border-color:#9e9e9e!important}
-.border-light-grey,.hover-border-light-grey:hover{border-color:#f1f1f1!important}
-.border-dark-grey,.hover-border-dark-grey:hover{border-color:#616161!important}
-.border-pale-red,.hover-border-pale-red:hover{border-color:#ffe7e7!important}.border-pale-green,.hover-border-pale-green:hover{border-color:#e7ffe7!important}
-.border-pale-yellow,.hover-border-pale-yellow:hover{border-color:#ffffd7!important}.border-pale-blue,.hover-border-pale-blue:hover{border-color:#e7ffff!important}
-/* DEFAULT THEME */
-.theme-l5 {color:#000 !important; background-color:#f6f8fc !important}
-.theme-l4 {color:#000 !important; background-color:#e1e9f6 !important}
-.theme-l3 {color:#000 !important; background-color:#c3d3ed !important}
-.theme-l2 {color:#000 !important; background-color:#a5bee4 !important}
-.theme-l1 {color:#fff !important; background-color:#88a8db !important}
-.theme-d1 {color:#fff !important; background-color:#5180cb !important}
-.theme-d2 {color:#fff !important; background-color:#3a6fc3 !important}
-.theme-d3 {color:#fff !important; background-color:#3361aa !important}
-.theme-d4 {color:#fff !important; background-color:#2c5392 !important}
-.theme-d5 {color:#fff !important; background-color:#24457a !important}
-
-.theme-light {color:#000 !important; background-color:#f6f8fc !important}
-.theme-dark {color:#fff !important; background-color:#24457a !important}
-.theme-action {color:#fff !important; background-color:#24457a !important}
-
-.theme {color:#fff !important; background-color:#6a92d3 !important}
-.text-theme {color:#6a92d3 !important}
-.border-theme {border-color:#6a92d3 !important}
-
-.hover-theme:hover {color:#fff !important; background-color:#6a92d3 !important}
-.hover-text-theme:hover {color:#6a92d3 !important}
-.hover-border-theme:hover {border-color:#6a92d3 !important}
-
-/* .label { color: #000; font-size: 8pt;} */
-/* #main {margin-left: 210px;} */
-/* @media (max-width:768px){
-  #sidebar { display: none;}
-  #main { margin-left: 0px;} 
-} */
-
-
-
-.table {
-  table-layout: fixed;
-}
-
-.text-line-through { text-decoration: line-through; }
-
-#snackbar {
-  visibility: hidden;
-  min-width: 250px;
-  margin-left: -125px;
-  background-color: #333;
-  color: #fff;
-  text-align: center;
-  
-  padding: 16px;
-  position: fixed;
-  z-index: 1;
-  left: 50%;
-  bottom: 30px;
-  font-size: 17px;
-}
-
-#snackbar.show {
-  visibility: visible;
-  -webkit-animation: fadein 0.5s, fadeout 0.5s 2.5s;
-  animation: fadein 0.5s, fadeout 0.5s 2.5s;
-}
-
-@-webkit-keyframes fadein {
-  from {bottom: 0; opacity: 0;} 
-  to {bottom: 30px; opacity: 1;}
-}
-
-@keyframes fadein {
-  from {bottom: 0; opacity: 0;}
-  to {bottom: 30px; opacity: 1;}
-}
-
-@-webkit-keyframes fadeout {
-  from {bottom: 30px; opacity: 1;} 
-  to {bottom: 0; opacity: 0;}
-}
-
-@keyframes fadeout {
-  from {bottom: 30px; opacity: 1;}
-  to {bottom: 0; opacity: 0;}
-}
-
-.tabulator-header-filter > input {
-  background-color: #fff;
-  border: 1px solid #ccc;
-  font-weight: normal;
-}
-
-.readonly {
-  pointer-events:none;
-  color: #000!important;
-  background-color: #d3d3d3!important;
-}
-
-
-
-.right-side-bg {
-  background: url("../img/bg1.jpg");
-  background-size: cover;
-  min-height: 100vh;
-}
-
-
-
-
-/* .mceContentBody { 
-  background: #fff;
-  color:#000;
-} */
-
-/* .tabulator-row-even {
-  background-color: #757575;
-} */
-
-
-button
-{
-       background-color: #f4f4f4;
-       border: 1pt solid #cccccc;
-       font-size: 10pt;
-       color: #000;
-       line-height: 1line;
-       text-align: center;
-}
-button:hover
-{
-       background-color: #343434;
-}
-button:pressed
-{
-       background-color: #343434;
-}
-button:focus
-{
-       background-color: #343434;
-}
-
-
-
-
-header
-{
-       background-color: #fff;
-       box-sizing: border-box;
-}
-
-
-
-::-webkit-input-placeholder
-{
-       color: rgba(60.3922%,60.3922%,60.3922%,1);
-}
-
-
-textarea
-{
-       background-color: #fff;
-       border-top-color: rgba(80%,80%,80%,1);
-       border-right-color: rgba(80%,80%,80%,1);
-       border-bottom-color: rgba(80%,80%,80%,1);
-       border-left-color: rgba(80%,80%,80%,1);
-       border-top-style: solid;
-       border-right-style: solid;
-       border-bottom-style: solid;
-       border-left-style: solid;
-       border-top-width: 1pt;
-       border-right-width: 1pt;
-       border-bottom-width: 1pt;
-       border-left-width: 1pt;
-       font-size: 11pt;
-       color: #000;
-       line-height: 1line;
-       text-align: left;
-       /* margin-top: 0.88em;
-       margin-right: 0.75em;
-       margin-bottom: 0.63em;
-       margin-left: 0.75em;
-       top: 0pt;
-       right: 30pt;
-       bottom: 0pt;
-       left: 0pt;
-       position: absolute;
-       box-sizing: border-box; */
-}
-textarea:focus
-{
-       border-top-color: rgba(0%,43.9216%,81.1765%,1);
-       border-right-color: rgba(0%,43.9216%,81.1765%,1);
-       border-bottom-color: rgba(0%,43.9216%,81.1765%,1);
-       border-left-color: rgba(0%,43.9216%,81.1765%,1);
-}
-textarea:placeholder
-{
-       color: rgba(80%,80%,80%,1);
-}
-/* textarea .text
-{
-       
-} */
-textarea .scrollbar_track
-{
-       width: 30pt;
-       top: 0pt;
-       right: 0pt;
-       bottom: 0pt;
-       position: absolute;
-       box-sizing: border-box;
-}
-
-
-footer
-{
-       background-color: #fff;
-       box-sizing: border-box;
-}
-
-
-div.group_container
-{
-       background-color: #e3e3e3;
-       border-top-color: rgba(80%,80%,80%,1);
-       border-right-color: rgba(80%,80%,80%,1);
-       border-bottom-color: rgba(80%,80%,80%,1);
-       border-left-color: rgba(80%,80%,80%,1);
-       border-top-style: solid;
-       border-right-style: solid;
-       border-bottom-style: solid;
-       border-left-style: solid;
-       border-top-width: 1pt;
-       border-right-width: 1pt;
-       border-bottom-width: 1pt;
-  border-left-width: 1pt;
-  padding-top: 4px;
-  padding-bottom: 8px;
-}
-
-/* Custom Styles */
-.ListView_Default
-{
-
-       background-color: rgba(0%,0%,0%,0);
-       border-top-style: none;
-       border-right-style: none;
-       border-bottom-style: none;
-       border-left-style: none;
-
-       color: #000;
-       text-align: left;
-       margin-top: 2pt;
-       margin-right: 2pt;
-       margin-bottom: 2pt;
-       margin-left: 2pt;
-}
-
-
-button.btnNavigation 
-{
-
-       background-color: rgba(0%,0%,0%,0);
-
-       font-family: -fm-font-family(Arial,Arial-BoldMT);
-       font-weight: bold;
-       font-size: 10pt;
-       color: #fff;
-       padding-top: 0pt;
-       padding-right: 0pt;
-       padding-bottom: 0pt;
-       padding-left: 0pt;
-}
-
-div.PageListHeader
-{
-       border-top-color: rgba(80%,80%,80%,1);
-       border-right-color: rgba(80%,80%,80%,1);
-       border-bottom-color: rgba(80%,80%,80%,1);
-       border-left-color: rgba(80%,80%,80%,1);
-       border-top-style: solid;
-       border-right-style: solid;
-       border-bottom-style: solid;
-       border-left-style: solid;
-       border-top-width: 1pt;
-       border-right-width: 1pt;
-       border-bottom-width: 1pt;
-       border-left-width: 1pt;
-       color: #fff;
-       -fm-text-vertical-align: center;
-}
-div.PageListHeader .inner_border
-{
-       padding-top: 5pt;
-       padding-right: 5pt;
-       padding-bottom: 5pt;
-       padding-left: 5pt;
-}
-
-.moduletoolbar
-{
-  background-color: #293146;
-  color: #fff;
-}
-
-div.BodySectionHeader
-{
-       font-family: -fm-font-family(Arial,Arial-BoldMT);
-       font-weight: bold;
-}
-
-button.Button_ImgPlacer
-{
-
-       background-color: rgba(0%,0%,0%,0);
-       border-top-style: none;
-       border-right-style: none;
-       border-bottom-style: none;
-       border-left-style: none;
-
-       font-family: -fm-font-family(Arial,Arial-BoldMT);
-       font-weight: bold;
-       font-size: 10pt;
-       color: #fff;
-}
-button.Button_ImgPlacer .inner_border
-{
-       padding-top: 0pt;
-       padding-right: 0pt;
-       padding-bottom: 0pt;
-       padding-left: 0pt;
-}
-
-
-div.PageHeadTitle
-{
-       font-size: 18pt;
-       color: #fff;
-}
-
-div.SectionHeadTitle
-{
-       font-size: 13pt;
-       color: #fff;
-}
-
-div.SectionHeader
-{
-
-       background-color: rgba(22.3529%,26.6667%,38.4314%,1);
-
-}
-
-button.toolbarbtn
-{
-  border: 0.5px solid #c6c6c6;
-
-       background-color: rgba(0%,0%,0%,0);
-
-       color: #fff;
-}
-button.toolbarbtn:hover
-{
-
-       background-color: rgba(20.3922%,20.3922%,20.3922%,1);
-
-}
-button.toolbarbtn:pressed
-{
-
-       background-color: rgba(20.3922%,20.3922%,20.3922%,1);
-
-}
-button.toolbarbtn:focus
-{
-       border-top-color: rgba(80%,80%,80%,1);
-       border-right-color: rgba(80%,80%,80%,1);
-       border-bottom-color: rgba(80%,80%,80%,1);
-       border-left-color: rgba(80%,80%,80%,1);
-}
-
-
-a.toolbarbtn
-{
-  border: 0.5px solid #c6c6c6;
-
-       background-color: rgba(0%,0%,0%,0);
-
-       color: #fff;
-       text-align: center;
-       text-decoration: unset;
-}
-a.toolbarbtn:hover
-{
-
-       background-color: rgba(20.3922%,20.3922%,20.3922%,1);
-
-}
-a.toolbarbtn:pressed
-{
-
-       background-color: rgba(20.3922%,20.3922%,20.3922%,1);
-
-}
-butaton.toolbarbtn:focus
-{
-       border-top-color: rgba(80%,80%,80%,1);
-       border-right-color: rgba(80%,80%,80%,1);
-       border-bottom-color: rgba(80%,80%,80%,1);
-       border-left-color: rgba(80%,80%,80%,1);
-}
-
-
-div.ListView_Header
-{
-       border-top-color: rgba(80%,80%,80%,1);
-       border-right-color: rgba(80%,80%,80%,1);
-       border-bottom-color: rgba(80%,80%,80%,1);
-       border-left-color: rgba(80%,80%,80%,1);
-       border-top-style: solid;
-       border-right-style: solid;
-       border-bottom-style: solid;
-       border-left-style: solid;
-       border-top-width: 1pt;
-       border-right-width: 1pt;
-       border-bottom-width: 1pt;
-       border-left-width: 1pt;
-       font-weight: normal;
-       color: #fff;
-       -fm-text-vertical-align: center;
-}
-div.ListView_Header .inner_border
-{
-       padding-top: 2pt;
-       padding-right: 2pt;
-       padding-bottom: 2pt;
-       padding-left: 2pt;
-}
-
-div.toolbar
-{
-
-       background-color: rgba(32.1569%,38.8235%,55.6863%,1);
-
-}
-
-div.sectiontoolbar
-{
-  margin-top: 8px;
-  margin-bottom: 8px;
-       background-color: rgb(97, 98, 100);
-
-}
-
-div.FooterLabel
-{
-       color: #fff;
-}
-
-button.Buttom_BodyNav:hover
-{
-
-       background-color: rgb(141, 141, 141);
-
-       /* color: #fff; */
-}
-
-
-::-webkit-scrollbar {
--webkit-appearance: none;
-width: 10px;
-}
-
-::-webkit-scrollbar-track {
-       background-color:  rgba(80%, 80%, 80%, .5);
-}
-
-::-webkit-scrollbar-thumb {
-border-radius: 0px;
-background-color: rgba(0, 0, 0, .5);
--webkit-box-shadow: 0 0 1px rgba(255, 255, 255, .5);
-}      
-
-div.portaltextheader {
-       padding: 2px;
-       border: 1px solid white;
-}
-
-
-
-
-
-select {
-  /* -webkit-appearance: none; */
-  display: block;
-  color: #000;
-  line-height: 1line;
-       text-align: left;
-  padding: 3.5px;
-  width: 100%;
-  max-width: 100%; 
-  box-sizing: border-box;
-  margin: 0;
-  border: 1px solid #cccccc;
-  /* box-shadow: 0 1px 0 1px rgba(0,0,0,.04); */
-  border-radius: 0px;
-  font-weight: normal;
-  font-size: 11pt;
-  background-color: #fff;
-  /* background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E'), 
-    linear-gradient(to bottom, #fff 0%,#fff 100%);
-  background-repeat: no-repeat, repeat;
-  background-position: right .7em top 50%, 0 0;
-  background-size: .65em auto, 100%; */
-}
-
-
-/* option {
-  appearance: none;
-  border: 1px solid 0070cf;
-  padding: 2px;
-} */
-select:focus
-{
-       border: 1px solid #3a6fc3;
-  border-radius: unset;
-}
-
-
-::-webkit-select-placeholder
-{
-       color: #9a9a9a;
-}
-
-div.DataFooter{
-       background: #384462;
-}
-.input-sum{padding:2px;display:block;border: 1px solid #ccc;width:100%;background-color: #4D4D4D; }  
-
-
-.currency-sum {padding:2px;display:block;border: 1px solid #ccc;width:100%;background-color: #4D4D4D;}
-
-.currency-sum,.currency-sum:read-only {
-  display: block;
-  color: #fff;
-  padding: 2px;
-  padding-right: 12px;
-  width: 100%;
-  max-width: 100%; 
-  box-sizing: border-box;
-  margin: 0;
-  border: 1px solid #ccc;
-  border-radius: unset;
-  -moz-appearance: none;
-  -webkit-appearance: none;
-  appearance: none;
-  background-color: #4D4D4D;
-  background-image: url('data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22225%22%20height=%22300%22%3E%3Cpath%20fill=%22white%22%20stroke=%22none%22%20d=%22m%20224.99996,16.22698%20-8.11342,36.41161%20q%20-24.14255,-19.78892%20-54.61741,-19.78892%20-41.3588,0%20-65.00658,23.74671%20-23.647774,23.7467%20-28.397115,53.23215%20l%20134.960355,0%20-5.14505,26.71508%20-132.981532,0%20-0.395848,7.71771%200.395848,18.20566%20127.242642,0%20-5.14505,26.71508%20-117.941954,0%20q%207.519719,40.17154%2032.552754,59.06997%2025.03303,18.89844%2056.49745,18.89844%2037.20302,0%2057.98149,-19.59107%20l%200,40.9631%20Q%20192.34828,300%20162.26913,300%2053.034301,300%2030.474864,189.18206%20l%20-30.474864,0%205.738751,-26.71508%2020.580475,0%20q%20-0.395708,-4.74934%20-0.395708,-17.80995%20l%200,-8.11342%20-25.923518,0%205.738751,-26.71508%2023.152999,0%20Q%2039.181988,55.21112%2076.583149,27.60556%20113.98417,0%20163.06069,0%20199.868,0%20224.99996,16.22698%20z%22%20/%3E%3C/svg%3E');
-  background-repeat: no-repeat, repeat;
-  background-position: right 2px top 50%, 0 0;
-  background-size: 9px auto, 100%;
-}
-
-
-
-
-/* input[type=date]::-webkit-inner-spin-button, 
-input[type=date]::-webkit-outer-spin-button { 
-  display: none;
-} */
-
-:focus {
-  outline: unset;
-}
-
-input
-{
-       background-color: #ffffff;
-       border: 1px solid #cccccc; 
-       font-weight: normal;
-       font-size: 11pt;
-       color: #000000;
-       line-height: 1line;
-  text-align: left;
-  width:100%;
-  padding:2px;
-  display:block;
-  border-radius: unset;
-}
-/* input:focus
-{
-       border: #0070cf;
-} */
-
-input:focus {
-  border: 1px solid #3a6fc3;
-  border-radius: unset;
-}
-
-input[readonly=true]{
-  color: #000!important;
-  background-color: #d3d3d3!important;
-}
-
-input[type=number]::-webkit-inner-spin-button, 
-input[type=number]::-webkit-outer-spin-button { 
-  -webkit-appearance: none; 
-  margin: 0; 
-}
-/* input[type=checkbox]{
-  appearance: none;
-  display:inline-block;
-  font-size: 24px!important;
-  border: 1px solid green;
-} */
-
-input[class=currency] {
-  padding: 2px;
-  padding-right: 12px;
-  text-align: right;
-  background-image: url('data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22225%22%20height=%22300%22%3E%3Cpath%20stroke=%22none%22%20d=%22m%20224.99996,16.22698%20-8.11342,36.41161%20q%20-24.14255,-19.78892%20-54.61741,-19.78892%20-41.3588,0%20-65.00658,23.74671%20-23.647774,23.7467%20-28.397115,53.23215%20l%20134.960355,0%20-5.14505,26.71508%20-132.981532,0%20-0.395848,7.71771%200.395848,18.20566%20127.242642,0%20-5.14505,26.71508%20-117.941954,0%20q%207.519719,40.17154%2032.552754,59.06997%2025.03303,18.89844%2056.49745,18.89844%2037.20302,0%2057.98149,-19.59107%20l%200,40.9631%20Q%20192.34828,300%20162.26913,300%2053.034301,300%2030.474864,189.18206%20l%20-30.474864,0%205.738751,-26.71508%2020.580475,0%20q%20-0.395708,-4.74934%20-0.395708,-17.80995%20l%200,-8.11342%20-25.923518,0%205.738751,-26.71508%2023.152999,0%20Q%2039.181988,55.21112%2076.583149,27.60556%20113.98417,0%20163.06069,0%20199.868,0%20224.99996,16.22698%20z%22%20/%3E%0A%3C/svg%3E'), 
-  linear-gradient(to bottom, #fff 0%,#fff 100%);
-  background-repeat: no-repeat, repeat;
-  background-position: right 2px top 50%, 0 0;
-  background-size: 9px auto, 100%;
-}
-
-input[class=currency]:read-only {
-  background-image: url('data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22225%22%20height=%22300%22%3E%3Cpath%20stroke=%22none%22%20d=%22m%20224.99996,16.22698%20-8.11342,36.41161%20q%20-24.14255,-19.78892%20-54.61741,-19.78892%20-41.3588,0%20-65.00658,23.74671%20-23.647774,23.7467%20-28.397115,53.23215%20l%20134.960355,0%20-5.14505,26.71508%20-132.981532,0%20-0.395848,7.71771%200.395848,18.20566%20127.242642,0%20-5.14505,26.71508%20-117.941954,0%20q%207.519719,40.17154%2032.552754,59.06997%2025.03303,18.89844%2056.49745,18.89844%2037.20302,0%2057.98149,-19.59107%20l%200,40.9631%20Q%20192.34828,300%20162.26913,300%2053.034301,300%2030.474864,189.18206%20l%20-30.474864,0%205.738751,-26.71508%2020.580475,0%20q%20-0.395708,-4.74934%20-0.395708,-17.80995%20l%200,-8.11342%20-25.923518,0%205.738751,-26.71508%2023.152999,0%20Q%2039.181988,55.21112%2076.583149,27.60556%20113.98417,0%20163.06069,0%20199.868,0%20224.99996,16.22698%20z%22%20/%3E%0A%3C/svg%3E'), 
-    linear-gradient(to bottom, #d3d3d3 0%,#d3d3d3 100%);
-}
-
-input[class=percent] {
-  padding: 2px;
-  padding-right: 12px;
-  text-align: right;
-  background-image: url('data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22256%22%20height=%22232%22%20version=%221.0%22%3E%3Cg%20transform=%22translate(-112.3674,-128.3649)%22%3E%3Cpath%20style=%22fill:black;fill-opacity:1;stroke:none%22%20d=%22M%20317.1674,257.53698%20C%20308.53463,257.53708%20301.73774,261.20839%20296.77671,268.55094%20C%20291.91449,275.89365%20289.48349,286.1138%20289.48368,299.2114%20C%20289.48349,312.11067%20291.91449,322.2812%20296.77671,329.72303%20C%20301.73774,337.06568%20308.53463,340.737%20317.1674,340.73698%20C%20325.60128,340.737%20332.24934,337.06568%20337.11159,329.72303%20C%20342.07258,322.2812%20344.5532,312.11067%20344.55345,299.2114%20C%20344.5532,286.21302%20342.07258,276.04249%20337.11159,268.69977%20C%20332.24934,261.25801%20325.60128,257.53708%20317.1674,257.53698%20M%20317.1674,238.63466%20C%20332.84469,238.63477%20345.29739,244.09213%20354.52554,255.00675%20C%20363.75318,265.92157%20368.36713,280.65644%20368.3674,299.2114%20C%20368.36713,317.76648%20363.70357,332.50135%20354.37671,343.41605%20C%20345.14855,354.23156%20332.74546,359.6393%20317.1674,359.63931%20C%20301.29123,359.6393%20288.7393,354.23156%20279.51159,343.41605%20C%20270.28351,332.50135%20265.66956,317.76648%20265.66973,299.2114%20C%20265.66956,280.55721%20270.28351,265.82234%20279.51159,255.00675%20C%20288.83853,244.09213%20301.39045,238.63477%20317.1674,238.63466%20M%20163.5674,147.9928%20C%20155.03401,147.993%20148.28673,151.71393%20143.32554,159.15559%20C%20138.46349,166.49841%20136.03248,176.61933%20136.03252,189.51838%20C%20136.03248,202.61621%20138.46349,212.83635%20143.32554,220.17884%20C%20148.18751,227.52161%20154.93479,231.19292%20163.5674,231.1928%20C%20172.19989,231.19292%20178.94717,227.52161%20183.80926,220.17884%20C%20188.77041,212.83635%20191.25103,202.61621%20191.25113,189.51838%20C%20191.25103,176.71856%20188.77041,166.59764%20183.80926,159.15559%20C%20178.84794,151.71393%20172.10066,147.993%20163.5674,147.9928%20M%20297.9674,129.09047%20L%20321.78136,129.09047%20L%20182.7674,359.63931%20L%20158.95345,359.63931%20L%20297.9674,129.09047%20M%20163.5674,129.09047%20C%20179.24484,129.0907%20191.74715,134.54806%20201.07438,145.46256%20C%20210.4014,156.27827%20215.06496,170.96352%20215.06508,189.51838%20C%20215.06496,208.27201%20210.4014,223.05649%20201.07438,233.87187%20C%20191.84638,244.68748%20179.34406,250.09523%20163.5674,250.09512%20C%20147.79061,250.09523%20135.28829,244.68748%20126.06043,233.87187%20C%20116.93172,222.95727%20112.36739,208.17279%20112.3674,189.51838%20C%20112.36739,171.06275%20116.98134,156.37749%20126.20926,145.46256%20C%20135.43713,134.54806%20147.88983,129.0907%20163.5674,129.09047%22%20/%3E%3C/g%3E%3C/svg%3E'), 
-    linear-gradient(to bottom, #fff 0%,#fff 100%);
-  background-repeat: no-repeat, repeat;
-  background-position: right 2px top 50%, 0 0;
-  background-size: 9px auto, 100%;
-}
-
-
-label {
-  height: 12.8px!important;
-  color: #000; 
-  font-size: 8pt;
-}
-
-
-
-input[type="checkbox"] {
-  display: block;
-  -webkit-appearance:none;/* Hides the default checkbox style */ 
-  height:29.66px;
-  width:29.66px;
-  cursor:pointer;
-  position:relative;
-  -webkit-transition: .15s;
-  border-radius: unset;
-  border: 1px solid #cccccc; 
-  background-color:#fff;
- }
- input[type="checkbox"]:checked {
-  background-color:green;
- }
- input[type="checkbox"]:before, input[type="checkbox"]:checked:before {
-  position:absolute;
-  top:0;
-  left:0;
-  width:100%;
-  height:100%;
-  line-height:2em;
-  text-align:center;
-  color:#fff;
-  content: '';
- }
- input[type="checkbox"]:checked:before {
-  font-size: 11pt;
-  content: '✔';
- }
- input[type="checkbox"]:hover:before {
-  background:rgba(255,255,255,0.3);
- }
-
- body.mceContentBody { 
-  background:#e8f0fe;
-  color:#000;
-}
-
-/* .mceContentBody { 
-  background: #e8f0fe;
-  color:#000;
-} */
-
-/* .tabulator-row-even {
-  background-color: #757575;
-} */
-
-:focus {
-  outline: 1px solid #607d8b;
-}
\ No newline at end of file
diff --git a/app/static/css/w3pro.css b/app/static/css/w3pro.css
deleted file mode 100644 (file)
index ce009b2..0000000
+++ /dev/null
@@ -1,386 +0,0 @@
-/* W3PRO.CSS 4.13 June 2019 by Jan Egil and Borge Refsnes */
-html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}
-/* Extract from normalize.css by Nicolas Gallagher and Jonathan Neal git.io/normalize */
-html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}
-article,aside,details,figcaption,figure,footer,header,main,menu,nav,section{display:block}summary{display:list-item}
-audio,canvas,progress,video{display:inline-block}progress{vertical-align:baseline}
-audio:not([controls]){display:none;height:0}[hidden],template{display:none}
-a{background-color:transparent}a:active,a:hover{outline-width:0}
-abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}
-b,strong{font-weight:bolder}dfn{font-style:italic}mark{background:#ff0;color:#000}
-small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
-sub{bottom:-0.25em}sup{top:-0.5em}figure{margin:1em 40px}img{border-style:none}
-code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}hr{box-sizing:content-box;height:0;overflow:visible}
-button,input,select,textarea,optgroup{font:inherit;margin:0}optgroup{font-weight:bold}
-button,input{overflow:visible}button,select{text-transform:none}
-button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}
-button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}
-button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}
-fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:.35em .625em .75em}
-legend{color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto}
-[type=checkbox],[type=radio]{padding:0}
-[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}
-[type=search]{-webkit-appearance:textfield;outline-offset:-2px}
-[type=search]::-webkit-search-decoration{-webkit-appearance:none}
-::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}
-/* End extract */
-html,body{font-family:Verdana,sans-serif;font-size:15px;line-height:1.5}html{overflow-x:hidden}
-h1{font-size:36px}h2{font-size:30px}h3{font-size:24px}h4{font-size:20px}h5{font-size:18px}h6{font-size:16px}.serif{font-family:serif}
-h1,h2,h3,h4,h5,h6{font-family:"Segoe UI",Arial,sans-serif;font-weight:400;margin: 0}.wide{letter-spacing:4px}
-hr{border:0;border-top:1px solid #eee;margin:20px 0}
-.image{max-width:100%;height:auto}img{vertical-align:middle}a{color:inherit}
-.table,.table-all{border-collapse:collapse;border-spacing:0;width:100%;display:table}.table-all{border:1px solid #ccc}
-.bordered tr,.table-all tr{border-bottom:1px solid #ddd}.striped tbody tr:nth-child(even){background-color:#f1f1f1}
-.table-all tr:nth-child(odd){background-color:#fff}.table-all tr:nth-child(even){background-color:#f1f1f1}
-.hoverable tbody tr:hover,.ul.hoverable li:hover{background-color:#ccc}.centered tr th,.centered tr td{text-align:center}
-.table td,.table th,.table-all td,.table-all th{padding:8px 8px;display:table-cell;text-align:left;vertical-align:top}
-.table th:first-child,.table td:first-child,.table-all th:first-child,.table-all td:first-child{padding-left:16px}
-.btn,.button{border:none;display:inline-block;padding:8px 16px;vertical-align:middle;overflow:hidden;text-decoration:none;color:inherit;background-color:inherit;text-align:center;cursor:pointer;white-space:nowrap}
-.btn:hover{box-shadow:0 8px 16px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)}
-.btn,.button{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}   
-.disabled,.btn:disabled,.button:disabled{cursor:not-allowed;opacity:0.3}.disabled *,:disabled *{pointer-events:none}
-.btn.disabled:hover,.btn:disabled:hover{box-shadow:none}
-.badge,.tag{background-color:#000;color:#fff;display:inline-block;padding-left:8px;padding-right:8px;text-align:center}.badge{border-radius:50%}
-.ul{list-style-type:none;padding:0;margin:0}.ul li{padding:8px 16px;border-bottom:1px solid #ddd}.ul li:last-child{border-bottom:none}
-.tooltip,.display-container{position:relative}.tooltip .text{display:none}.tooltip:hover .text{display:inline-block}
-.ripple:active{opacity:0.5}.ripple{transition:opacity 0s}
-.input{padding:8px;display:block;border:1px solid #ccc;width:100%;background-color: #e8f0fe; }
-.select{padding:9px 0; display:block;width:100%;border:1px solid #ccc;background-color: #e8f0fe;}
-.dropdown-click,.dropdown-hover{position:relative;display:inline-block;cursor:pointer}
-.dropdown-hover:hover .dropdown-content{display:block; }
-.dropdown-hover:first-child,.dropdown-click:hover{background-color:#ccc;color:#000}
-.dropdown-hover:hover > .button:first-child,.dropdown-click:hover > .button:first-child{background-color:#ccc;color:#000}
-.dropdown-content{cursor:auto;color:#000;background-color:#fff;display:none;position:absolute;min-width:160px;margin:0;padding:0;z-index:1}
-.check,.radio{width:24px;height:24px;position:relative;top:6px}
-.sidebar{height:100%;width:200px;background-color:#fff;position:fixed!important;z-index:1;overflow:auto}
-.bar-block .dropdown-hover,.bar-block .dropdown-click{width:100%}
-.bar-block .dropdown-hover .dropdown-content,.bar-block .dropdown-click .dropdown-content{min-width:100%}
-.bar-block .dropdown-hover .button,.bar-block .dropdown-click .button{width:100%;text-align:left;padding:8px 16px}
-.main,#main{transition:margin-left .4s}
-.modal{z-index:3;display:none;padding-top:100px;position:fixed;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgb(0,0,0);background-color:rgba(0,0,0,0.4)}
-.modal-content{margin:auto;background-color:#fff;position:relative;padding:0;outline:0;width:600px}
-.bar{width:100%;overflow:hidden}.center .bar{display:inline-block;width:auto}
-.bar .bar-item{padding:8px 16px;float:left;width:auto;border:none;display:block;outline:0}
-.bar .dropdown-hover,.bar .dropdown-click{position:static;float:left}
-.bar .button{white-space:normal}
-.bar-block .bar-item{width:100%;display:block;padding:8px 16px;text-align:left;border:none;white-space:normal;float:none;outline:0}
-.bar-block.center .bar-item{text-align:center}.block{display:block;width:100%}
-.responsive{display:block;overflow-x:auto}
-.container:after,.container:before,.panel:after,.panel:before,.row:after,.row:before,.row-padding:after,.row-padding:before,
-.cell-row:before,.cell-row:after,.clear:after,.clear:before,.bar:before,.bar:after{content:"";display:table;clear:both}
-.col,.half,.third,.twothird,.threequarter,.quarter{float:left;width:100%}
-.col.s1{width:8.33333%}.col.s2{width:16.66666%}.col.s3{width:24.99999%}.col.s4{width:33.33333%}
-.col.s5{width:41.66666%}.col.s6{width:49.99999%}.col.s7{width:58.33333%}.col.s8{width:66.66666%}
-.col.s9{width:74.99999%}.col.s10{width:83.33333%}.col.s11{width:91.66666%}.col.s12{width:99.99999%}
-@media (min-width:601px){.col.m1{width:8.33333%}.col.m2{width:16.66666%}.col.m3,.quarter{width:24.99999%}.col.m4,.third{width:33.33333%}
-.col.m5{width:41.66666%}.col.m6,.half{width:49.99999%}.col.m7{width:58.33333%}.col.m8,.twothird{width:66.66666%}
-.col.m9,.threequarter{width:74.99999%}.col.m10{width:83.33333%}.col.m11{width:91.66666%}.col.m12{width:99.99999%}}
-@media (min-width:993px){.col.l1{width:8.33333%}.col.l2{width:16.66666%}.col.l3{width:24.99999%}.col.l4{width:33.33333%}
-.col.l5{width:41.66666%}.col.l6{width:49.99999%}.col.l7{width:58.33333%}.col.l8{width:66.66666%}
-.col.l9{width:74.99999%}.col.l10{width:83.33333%}.col.l11{width:91.66666%}.col.l12{width:99.99999%}}
-.rest{overflow:hidden}.stretch{margin-left:-16px;margin-right:-16px}
-.content,.auto{margin-left:auto;margin-right:auto}.content{max-width:980px}.auto{max-width:1140px}
-.cell-row{display:table;width:100%}.cell{display:table-cell}
-.cell-top{vertical-align:top}.cell-middle{vertical-align:middle}.cell-bottom{vertical-align:bottom}
-.hide{display:none!important}.show-block,.show{display:block!important}.show-inline-block{display:inline-block!important}
-@media (max-width:1205px){.auto{max-width:95%}}
-@media (max-width:600px){.modal-content{margin:0 10px;width:auto!important}.modal{padding-top:30px}
-.dropdown-hover.mobile .dropdown-content,.dropdown-click.mobile .dropdown-content{position:relative}   
-.hide-small{display:none!important}.mobile{display:block;width:100%!important}.bar-item.mobile,.dropdown-hover.mobile,.dropdown-click.mobile{text-align:center}
-.dropdown-hover.mobile,.dropdown-hover.mobile .btn,.dropdown-hover.mobile .button,.dropdown-click.mobile,.dropdown-click.mobile .btn,.dropdown-click.mobile .button{width:100%}}
-@media (max-width:768px){.modal-content{width:500px}.modal{padding-top:50px}}
-@media (min-width:993px){.modal-content{width:900px}.hide-large{display:none!important}.sidebar.collapse{display:block!important}#main{margin:0px}#modulename{margin-left:0px}}
-@media (max-width:992px) and (min-width:601px){.hide-medium{display:none!important}}
-@media (max-width:992px){.sidebar.collapse{display:none}.main{margin-left:0!important;margin-right:0!important}.auto{max-width:100%}#main{margin:0px}#modulename{margin-left:0px}}
-.top,.bottom{position:fixed;width:100%;z-index:1}.top{top:0}.bottom{bottom:0}
-.overlay{position:fixed;display:none;width:100%;height:100%;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,0.5);z-index:2}
-.display-topleft{position:absolute;left:0;top:0}.display-topright{position:absolute;right:0;top:0}
-.display-bottomleft{position:absolute;left:0;bottom:0}.display-bottomright{position:absolute;right:0;bottom:0}
-.display-middle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%)}
-.display-left{position:absolute;top:50%;left:0%;transform:translate(0%,-50%);-ms-transform:translate(-0%,-50%)}
-.display-right{position:absolute;top:50%;right:0%;transform:translate(0%,-50%);-ms-transform:translate(0%,-50%)}
-.display-topmiddle{position:absolute;left:50%;top:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)}
-.display-bottommiddle{position:absolute;left:50%;bottom:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)}
-.display-container:hover .display-hover{display:block}.display-container:hover span.display-hover{display:inline-block}.display-hover{display:none}
-.display-position{position:absolute}
-.circle{border-radius:50%}
-.round-small{border-radius:2px}.round,.round-medium{border-radius:4px}.round-large{border-radius:8px}.round-xlarge{border-radius:16px}.round-xxlarge{border-radius:32px}
-.row-padding,.row-padding>.half,.row-padding>.third,.row-padding>.twothird,.row-padding>.threequarter,.row-padding>.quarter,.row-padding>.col{padding:0 8px}
-.container,.panel{padding:0.01em 16px}.panel{margin-top:16px;margin-bottom:16px}
-.code,.codespan{font-family:Consolas,"courier new";font-size:16px}
-.code{width:auto;background-color:#fff;padding:8px 12px;border-left:4px solid #4CAF50;word-wrap:break-word}
-.codespan{color:crimson;background-color:#f1f1f1;padding-left:4px;padding-right:4px;font-size:110%}
-.card,.card-2{box-shadow:0 2px 5px 0 rgba(0,0,0,0.16)}
-.card-4,.hover-shadow:hover{box-shadow:0 4px 10px 0 rgba(0,0,0,0.2),0 4px 20px 0 rgba(0,0,0,0.19)}
-.spin{animation:spin 2s infinite linear}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}
-.animate-fading{animation:fading 10s infinite}@keyframes fading{0%{opacity:0}50%{opacity:1}100%{opacity:0}}
-.animate-opacity{animation:opac 0.8s}@keyframes opac{from{opacity:0} to{opacity:1}}
-.animate-top{position:relative;animation:animatetop 0.4s}@keyframes animatetop{from{top:-300px;opacity:0} to{top:0;opacity:1}}
-.animate-left{position:relative;animation:animateleft 0.4s}@keyframes animateleft{from{left:-300px;opacity:0} to{left:0;opacity:1}}
-.animate-right{position:relative;animation:animateright 0.4s}@keyframes animateright{from{right:-300px;opacity:0} to{right:0;opacity:1}}
-.animate-bottom{position:relative;animation:animatebottom 0.4s}@keyframes animatebottom{from{bottom:-300px;opacity:0} to{bottom:0;opacity:1}}
-.animate-zoom {animation:animatezoom 0.6s}@keyframes animatezoom{from{transform:scale(0)} to{transform:scale(1)}}
-.animate-input{transition:width 0.4s ease-in-out}.animate-input:focus{width:100%!important}
-.opacity,.hover-opacity:hover{opacity:0.60}.opacity-off,.hover-opacity-off:hover{opacity:1}
-.opacity-max{opacity:0.25}.opacity-min{opacity:0.75}
-.greyscale-max,.grayscale-max,.hover-greyscale:hover,.hover-grayscale:hover{filter:grayscale(100%)}
-.greyscale,.grayscale{filter:grayscale(75%)}.greyscale-min,.grayscale-min{filter:grayscale(50%)}
-.sepia{filter:sepia(75%)}.sepia-max,.hover-sepia:hover{filter:sepia(100%)}.sepia-min{filter:sepia(50%)}
-.tiny{font-size:10px!important}.small{font-size:12px!important}.medium{font-size:15px!important}.large{font-size:18px!important}
-.xlarge{font-size:24px!important}.xxlarge{font-size:36px!important}.xxxlarge{font-size:48px!important}.jumbo{font-size:64px!important}
-.left-align{text-align:left!important}.right-align{text-align:right!important}.justify{text-align:justify!important}.center{text-align:center!important}
-.border-0{border:0!important}.border{border:1px solid #ccc!important}
-.border-top{border-top:1px solid #ccc!important}.border-bottom{border-bottom:1px solid #ccc!important}
-.border-left{border-left:1px solid #ccc!important}.border-right{border-right:1px solid #ccc!important}
-.topbar{border-top:6px solid #ccc!important}.bottombar{border-bottom:6px solid #ccc!important}
-.leftbar{border-left:6px solid #ccc!important}.rightbar{border-right:6px solid #ccc!important}
-.section,.code{margin-top:16px!important;margin-bottom:16px!important}
-.margin{margin:16px!important}.margin-top{margin-top:16px!important}.margin-bottom{margin-bottom:16px!important}
-.margin-left{margin-left:16px!important}.margin-right{margin-right:16px!important}
-.padding-small{padding:4px 8px!important}.padding{padding:8px 16px!important}.padding-large{padding:12px 24px!important}
-.padding-16{padding-top:16px!important;padding-bottom:16px!important}.padding-24{padding-top:24px!important;padding-bottom:24px!important}
-.padding-32{padding-top:32px!important;padding-bottom:32px!important}.padding-48{padding-top:48px!important;padding-bottom:48px!important}
-.padding-64{padding-top:64px!important;padding-bottom:64px!important}
-.left{float:left!important}.right{float:right!important}
-.button:hover{color:#000!important;background-color:#ccc!important}
-.transparent,.hover-none:hover{background-color:transparent!important}
-.hover-none:hover{box-shadow:none!important}
-/* DEFAULT COLORS */
-.amber,.hover-amber:hover{color:#000!important;background-color:#ffc107!important}
-.aqua,.hover-aqua:hover{color:#000!important;background-color:#00ffff!important}
-.blue,.hover-blue:hover{color:#fff!important;background-color:#2196F3!important}
-.light-blue,.hover-light-blue:hover{color:#000!important;background-color:#87CEEB!important}
-.brown,.hover-brown:hover{color:#fff!important;background-color:#795548!important}
-.cyan,.hover-cyan:hover{color:#000!important;background-color:#00bcd4!important}
-.blue-grey,.hover-blue-grey:hover{color:#fff!important;background-color:#607d8b!important}
-.green,.hover-green:hover{color:#fff!important;background-color:#4CAF50!important}
-.light-green,.hover-light-green:hover{color:#000!important;background-color:#8bc34a!important}
-.indigo,.hover-indigo:hover{color:#fff!important;background-color:#3f51b5!important}
-.khaki,.hover-khaki:hover{color:#000!important;background-color:#f0e68c!important}
-.lime,.hover-lime:hover{color:#000!important;background-color:#cddc39!important}
-.orange,.hover-orange:hover{color:#000!important;background-color:#ff9800!important}
-.deep-orange,.hover-deep-orange:hover{color:#fff!important;background-color:#ff5722!important}
-.pink,.hover-pink:hover{color:#fff!important;background-color:#e91e63!important}
-.purple,.hover-purple:hover{color:#fff!important;background-color:#9c27b0!important}
-.deep-purple,.hover-deep-purple:hover{color:#fff!important;background-color:#673ab7!important}
-.red,.hover-red:hover{color:#fff!important;background-color:#f44336!important}
-.sand,.hover-sand:hover{color:#000!important;background-color:#fdf5e6!important}
-.teal,.hover-teal:hover{color:#fff!important;background-color:#009688!important}
-.yellow,.hover-yellow:hover{color:#000!important;background-color:#ffeb3b!important}
-.white,.hover-white:hover{color:#000!important;background-color:#fff!important}
-.black,.hover-black:hover{color:#fff!important;background-color:#000!important}
-.grey,.hover-grey:hover{color:#000!important;background-color:#9e9e9e!important}
-.light-grey,.hover-light-grey:hover{color:#000!important;background-color:#f1f1f1!important}
-.dark-grey,.hover-dark-grey:hover{color:#fff!important;background-color:#616161!important}
-.pale-red,.hover-pale-red:hover{color:#000!important;background-color:#ffe7e7!important}.pale-green,.hover-pale-green:hover{color:#000!important;background-color:#e7ffe7!important}
-.pale-yellow,.hover-pale-yellow:hover{color:#000!important;background-color:#ffffd7!important}.pale-blue,.hover-pale-blue:hover{color:#000!important;background-color:#e7ffff!important}
-.text-amber,.hover-text-amber:hover{color:#ffc107!important}
-.text-aqua,.hover-text-aqua:hover{color:#00ffff!important}
-.text-blue,.hover-text-blue:hover{color:#2196F3!important}
-.text-light-blue,.hover-text-light-blue:hover{color:#87CEEB!important}
-.text-brown,.hover-text-brown:hover{color:#795548!important}
-.text-cyan,.hover-text-cyan:hover{color:#00bcd4!important}
-.text-blue-grey,.hover-text-blue-grey:hover{color:#607d8b!important}
-.text-green,.hover-text-green:hover{color:#4CAF50!important}
-.text-light-green,.hover-text-light-green:hover{color:#8bc34a!important}
-.text-indigo,.hover-text-indigo:hover{color:#3f51b5!important}
-.text-khaki,.hover-text-khaki:hover{color:#b4aa50!important}
-.text-lime,.hover-text-lime:hover{color:#cddc39!important}
-.text-orange,.hover-text-orange:hover{color:#ff9800!important}
-.text-deep-orange,.hover-text-deep-orange:hover{color:#ff5722!important}
-.text-pink,.hover-text-pink:hover{color:#e91e63!important}
-.text-purple,.hover-text-purple:hover{color:#9c27b0!important}
-.text-deep-purple,.hover-text-deep-purple:hover{color:#673ab7!important}
-.text-red,.hover-text-red:hover{color:#f44336!important}
-.text-sand,.hover-text-sand:hover{color:#fdf5e6!important}
-.text-teal,.hover-text-teal:hover{color:#009688!important}
-.text-yellow,.hover-text-yellow:hover{color:#d2be0e!important}
-.text-white,.hover-text-white:hover{color:#fff!important}
-.text-black,.hover-text-black:hover{color:#000!important}
-.text-grey,.hover-text-grey:hover{color:#757575!important}
-.text-light-grey,.hover-text-light-grey:hover{color:#f1f1f1!important}
-.text-dark-grey,.hover-text-dark-grey:hover{color:#3a3a3a!important}
-.border-amber,.hover-border-amber:hover{border-color:#ffc107!important}
-.border-aqua,.hover-border-aqua:hover{border-color:#00ffff!important}
-.border-blue,.hover-border-blue:hover{border-color:#2196F3!important}
-.border-light-blue,.hover-border-light-blue:hover{border-color:#87CEEB!important}
-.border-brown,.hover-border-brown:hover{border-color:#795548!important}
-.border-cyan,.hover-border-cyan:hover{border-color:#00bcd4!important}
-.border-blue-grey,.hover-blue-grey:hover{border-color:#607d8b!important}
-.border-green,.hover-border-green:hover{border-color:#4CAF50!important}
-.border-light-green,.hover-border-light-green:hover{border-color:#8bc34a!important}
-.border-indigo,.hover-border-indigo:hover{border-color:#3f51b5!important}
-.border-khaki,.hover-border-khaki:hover{border-color:#f0e68c!important}
-.border-lime,.hover-border-lime:hover{border-color:#cddc39!important}
-.border-orange,.hover-border-orange:hover{border-color:#ff9800!important}
-.border-deep-orange,.hover-border-deep-orange:hover{border-color:#ff5722!important}
-.border-pink,.hover-border-pink:hover{border-color:#e91e63!important}
-.border-purple,.hover-border-purple:hover{border-color:#9c27b0!important}
-.border-deep-purple,.hover-border-deep-purple:hover{border-color:#673ab7!important}
-.border-red,.hover-border-red:hover{border-color:#f44336!important}
-.border-sand,.hover-border-sand:hover{border-color:#fdf5e6!important}
-.border-teal,.hover-border-teal:hover{border-color:#009688!important}
-.border-yellow,.hover-border-yellow:hover{border-color:#ffeb3b!important}
-.border-white,.hover-border-white:hover{border-color:#fff!important}
-.border-black,.hover-border-black:hover{border-color:#000!important}
-.border-grey,.hover-border-grey:hover{border-color:#9e9e9e!important}
-.border-light-grey,.hover-border-light-grey:hover{border-color:#f1f1f1!important}
-.border-dark-grey,.hover-border-dark-grey:hover{border-color:#616161!important}
-.border-pale-red,.hover-border-pale-red:hover{border-color:#ffe7e7!important}.border-pale-green,.hover-border-pale-green:hover{border-color:#e7ffe7!important}
-.border-pale-yellow,.hover-border-pale-yellow:hover{border-color:#ffffd7!important}.border-pale-blue,.hover-border-pale-blue:hover{border-color:#e7ffff!important}
-/* DEFAULT THEME */
-.theme-l5 {color:#000 !important; background-color:#f6f8fc !important}
-.theme-l4 {color:#000 !important; background-color:#e1e9f6 !important}
-.theme-l3 {color:#000 !important; background-color:#c3d3ed !important}
-.theme-l2 {color:#000 !important; background-color:#a5bee4 !important}
-.theme-l1 {color:#fff !important; background-color:#88a8db !important}
-.theme-d1 {color:#fff !important; background-color:#5180cb !important}
-.theme-d2 {color:#fff !important; background-color:#3a6fc3 !important}
-.theme-d3 {color:#fff !important; background-color:#3361aa !important}
-.theme-d4 {color:#fff !important; background-color:#2c5392 !important}
-.theme-d5 {color:#fff !important; background-color:#24457a !important}
-
-.theme-light {color:#000 !important; background-color:#f6f8fc !important}
-.theme-dark {color:#fff !important; background-color:#24457a !important}
-.theme-action {color:#fff !important; background-color:#24457a !important}
-
-.theme {color:#fff !important; background-color:#6a92d3 !important}
-.text-theme {color:#6a92d3 !important}
-.border-theme {border-color:#6a92d3 !important}
-
-.hover-theme:hover {color:#fff !important; background-color:#6a92d3 !important}
-.hover-text-theme:hover {color:#6a92d3 !important}
-.hover-border-theme:hover {border-color:#6a92d3 !important}
-
-.label { color: rgb(153, 150, 150);}
-/* #main {margin-left: 210px;} */
-@media (max-width:768px){
-  /* #sidebar { display: none;}
-  #main { margin-left: 0px;}  */
-}
-
-.select {
-  display: block;
-  font-size: 16px;
-  font-family: sans-serif;
-  font-weight: normal;
-  color: #444;
-  line-height: 1.3;
-  padding: .6em 1.4em .5em .8em;
-  width: 100%;
-  max-width: 100%; 
-  box-sizing: border-box;
-  margin: 0;
-  border-bottom: 1px solid #aaa;
-  box-shadow: 0 1px 0 1px rgba(0,0,0,.04);
-  /* border-radius: .5em; */
-  -moz-appearance: none;
-  -webkit-appearance: none;
-  appearance: none;
-  background-color: #e8f0fe;
-  background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E'), 
-    linear-gradient(to bottom, #e8f0fe 0%,#e8f0fe 100%);
-  background-repeat: no-repeat, repeat;
-  background-position: right .7em top 50%, 0 0;
-  background-size: .65em auto, 100%;
-}
-.select::-ms-expand {
-  display: none;
-}
-.select:hover {
-  border-color: #888;
-}
-.select:focus {
-  border-color: #aaa;
-  box-shadow: 0 0 1px 1px #6a92d3;
-  box-shadow: 0 0 0 1px -moz-mac-focusring;
-  color: #222; 
-  outline: none;
-}
-
-
-.select option {
-  font-weight:normal;
-}
-
-.table {
-  table-layout: fixed;
-}
-
-.text-line-through { text-decoration: line-through; }
-
-#snackbar {
-  visibility: hidden;
-  min-width: 250px;
-  margin-left: -125px;
-  background-color: #333;
-  color: #fff;
-  text-align: center;
-  border-radius: 2px;
-  padding: 16px;
-  position: fixed;
-  z-index: 1;
-  left: 50%;
-  bottom: 30px;
-  font-size: 17px;
-}
-
-#snackbar.show {
-  visibility: visible;
-  -webkit-animation: fadein 0.5s, fadeout 0.5s 2.5s;
-  animation: fadein 0.5s, fadeout 0.5s 2.5s;
-}
-
-@-webkit-keyframes fadein {
-  from {bottom: 0; opacity: 0;} 
-  to {bottom: 30px; opacity: 1;}
-}
-
-@keyframes fadein {
-  from {bottom: 0; opacity: 0;}
-  to {bottom: 30px; opacity: 1;}
-}
-
-@-webkit-keyframes fadeout {
-  from {bottom: 30px; opacity: 1;} 
-  to {bottom: 0; opacity: 0;}
-}
-
-@keyframes fadeout {
-  from {bottom: 30px; opacity: 1;}
-  to {bottom: 0; opacity: 0;}
-}
-
-.tabulator-header-filter > input {
-  background-color: #e8f0fe;
-  border: 1px solid #ccc;
-  font-weight: normal;
-}
-
-.readonly {
-  pointer-events:none;
-  padding:8px;display:block;border:0px;width:100%;background-color: #fff;
-}
-
-.right-side-bg {
-  background: url("../img/bg1.jpg");
-  background-size: cover;
-  min-height: 100vh;
-}
-body.mceContentBody { 
-  background:#e8f0fe;
-  color:#000;
-}
-
-/* .mceContentBody { 
-  background: #e8f0fe;
-  color:#000;
-} */
-
-/* .tabulator-row-even {
-  background-color: #757575;
-} */
-
-:focus {
-  outline: 1px solid #607d8b;
-}
\ No newline at end of file
diff --git a/app/static/img/bg1.jpg b/app/static/img/bg1.jpg
deleted file mode 100644 (file)
index 3123259..0000000
Binary files a/app/static/img/bg1.jpg and /dev/null differ
diff --git a/app/static/img/dartsxx.jpg b/app/static/img/dartsxx.jpg
deleted file mode 100644 (file)
index 1c212bb..0000000
Binary files a/app/static/img/dartsxx.jpg and /dev/null differ
diff --git a/app/static/img/favicon/android-icon-144x144.png b/app/static/img/favicon/android-icon-144x144.png
deleted file mode 100644 (file)
index 86c76eb..0000000
Binary files a/app/static/img/favicon/android-icon-144x144.png and /dev/null differ
diff --git a/app/static/img/favicon/android-icon-192x192.png b/app/static/img/favicon/android-icon-192x192.png
deleted file mode 100644 (file)
index c156ad7..0000000
Binary files a/app/static/img/favicon/android-icon-192x192.png and /dev/null differ
diff --git a/app/static/img/favicon/android-icon-36x36.png b/app/static/img/favicon/android-icon-36x36.png
deleted file mode 100644 (file)
index 747aa84..0000000
Binary files a/app/static/img/favicon/android-icon-36x36.png and /dev/null differ
diff --git a/app/static/img/favicon/android-icon-48x48.png b/app/static/img/favicon/android-icon-48x48.png
deleted file mode 100644 (file)
index 8db5eec..0000000
Binary files a/app/static/img/favicon/android-icon-48x48.png and /dev/null differ
diff --git a/app/static/img/favicon/android-icon-72x72.png b/app/static/img/favicon/android-icon-72x72.png
deleted file mode 100644 (file)
index 15bcb2e..0000000
Binary files a/app/static/img/favicon/android-icon-72x72.png and /dev/null differ
diff --git a/app/static/img/favicon/android-icon-96x96.png b/app/static/img/favicon/android-icon-96x96.png
deleted file mode 100644 (file)
index f100597..0000000
Binary files a/app/static/img/favicon/android-icon-96x96.png and /dev/null differ
diff --git a/app/static/img/favicon/apple-icon-114x114.png b/app/static/img/favicon/apple-icon-114x114.png
deleted file mode 100644 (file)
index 0750044..0000000
Binary files a/app/static/img/favicon/apple-icon-114x114.png and /dev/null differ
diff --git a/app/static/img/favicon/apple-icon-120x120.png b/app/static/img/favicon/apple-icon-120x120.png
deleted file mode 100644 (file)
index 3877b6b..0000000
Binary files a/app/static/img/favicon/apple-icon-120x120.png and /dev/null differ
diff --git a/app/static/img/favicon/apple-icon-144x144.png b/app/static/img/favicon/apple-icon-144x144.png
deleted file mode 100644 (file)
index 86c76eb..0000000
Binary files a/app/static/img/favicon/apple-icon-144x144.png and /dev/null differ
diff --git a/app/static/img/favicon/apple-icon-152x152.png b/app/static/img/favicon/apple-icon-152x152.png
deleted file mode 100644 (file)
index 4a86c7a..0000000
Binary files a/app/static/img/favicon/apple-icon-152x152.png and /dev/null differ
diff --git a/app/static/img/favicon/apple-icon-180x180.png b/app/static/img/favicon/apple-icon-180x180.png
deleted file mode 100644 (file)
index dbb3bba..0000000
Binary files a/app/static/img/favicon/apple-icon-180x180.png and /dev/null differ
diff --git a/app/static/img/favicon/apple-icon-57x57.png b/app/static/img/favicon/apple-icon-57x57.png
deleted file mode 100644 (file)
index 951ada5..0000000
Binary files a/app/static/img/favicon/apple-icon-57x57.png and /dev/null differ
diff --git a/app/static/img/favicon/apple-icon-60x60.png b/app/static/img/favicon/apple-icon-60x60.png
deleted file mode 100644 (file)
index bcc7174..0000000
Binary files a/app/static/img/favicon/apple-icon-60x60.png and /dev/null differ
diff --git a/app/static/img/favicon/apple-icon-72x72.png b/app/static/img/favicon/apple-icon-72x72.png
deleted file mode 100644 (file)
index 15bcb2e..0000000
Binary files a/app/static/img/favicon/apple-icon-72x72.png and /dev/null differ
diff --git a/app/static/img/favicon/apple-icon-76x76.png b/app/static/img/favicon/apple-icon-76x76.png
deleted file mode 100644 (file)
index b9b0895..0000000
Binary files a/app/static/img/favicon/apple-icon-76x76.png and /dev/null differ
diff --git a/app/static/img/favicon/apple-icon-precomposed.png b/app/static/img/favicon/apple-icon-precomposed.png
deleted file mode 100644 (file)
index f64a9a7..0000000
Binary files a/app/static/img/favicon/apple-icon-precomposed.png and /dev/null differ
diff --git a/app/static/img/favicon/apple-icon.png b/app/static/img/favicon/apple-icon.png
deleted file mode 100644 (file)
index f64a9a7..0000000
Binary files a/app/static/img/favicon/apple-icon.png and /dev/null differ
diff --git a/app/static/img/favicon/browserconfig.xml b/app/static/img/favicon/browserconfig.xml
deleted file mode 100644 (file)
index c554148..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<browserconfig><msapplication><tile><square70x70logo src="/ms-icon-70x70.png"/><square150x150logo src="/ms-icon-150x150.png"/><square310x310logo src="/ms-icon-310x310.png"/><TileColor>#ffffff</TileColor></tile></msapplication></browserconfig>
\ No newline at end of file
diff --git a/app/static/img/favicon/favicon-16x16.png b/app/static/img/favicon/favicon-16x16.png
deleted file mode 100644 (file)
index 0281448..0000000
Binary files a/app/static/img/favicon/favicon-16x16.png and /dev/null differ
diff --git a/app/static/img/favicon/favicon-32x32.png b/app/static/img/favicon/favicon-32x32.png
deleted file mode 100644 (file)
index 9eb08e9..0000000
Binary files a/app/static/img/favicon/favicon-32x32.png and /dev/null differ
diff --git a/app/static/img/favicon/favicon-96x96.png b/app/static/img/favicon/favicon-96x96.png
deleted file mode 100644 (file)
index f100597..0000000
Binary files a/app/static/img/favicon/favicon-96x96.png and /dev/null differ
diff --git a/app/static/img/favicon/favicon.ico b/app/static/img/favicon/favicon.ico
deleted file mode 100644 (file)
index efacd69..0000000
Binary files a/app/static/img/favicon/favicon.ico and /dev/null differ
diff --git a/app/static/img/favicon/manifest.json b/app/static/img/favicon/manifest.json
deleted file mode 100644 (file)
index 013d4a6..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-{
- "name": "App",
- "icons": [
-  {
-   "src": "\/android-icon-36x36.png",
-   "sizes": "36x36",
-   "type": "image\/png",
-   "density": "0.75"
-  },
-  {
-   "src": "\/android-icon-48x48.png",
-   "sizes": "48x48",
-   "type": "image\/png",
-   "density": "1.0"
-  },
-  {
-   "src": "\/android-icon-72x72.png",
-   "sizes": "72x72",
-   "type": "image\/png",
-   "density": "1.5"
-  },
-  {
-   "src": "\/android-icon-96x96.png",
-   "sizes": "96x96",
-   "type": "image\/png",
-   "density": "2.0"
-  },
-  {
-   "src": "\/android-icon-144x144.png",
-   "sizes": "144x144",
-   "type": "image\/png",
-   "density": "3.0"
-  },
-  {
-   "src": "\/android-icon-192x192.png",
-   "sizes": "192x192",
-   "type": "image\/png",
-   "density": "4.0"
-  }
- ]
-}
\ No newline at end of file
diff --git a/app/static/img/favicon/ms-icon-144x144.png b/app/static/img/favicon/ms-icon-144x144.png
deleted file mode 100644 (file)
index 86c76eb..0000000
Binary files a/app/static/img/favicon/ms-icon-144x144.png and /dev/null differ
diff --git a/app/static/img/favicon/ms-icon-150x150.png b/app/static/img/favicon/ms-icon-150x150.png
deleted file mode 100644 (file)
index d81670d..0000000
Binary files a/app/static/img/favicon/ms-icon-150x150.png and /dev/null differ
diff --git a/app/static/img/favicon/ms-icon-310x310.png b/app/static/img/favicon/ms-icon-310x310.png
deleted file mode 100644 (file)
index 3693385..0000000
Binary files a/app/static/img/favicon/ms-icon-310x310.png and /dev/null differ
diff --git a/app/static/img/favicon/ms-icon-70x70.png b/app/static/img/favicon/ms-icon-70x70.png
deleted file mode 100644 (file)
index 54d9f3e..0000000
Binary files a/app/static/img/favicon/ms-icon-70x70.png and /dev/null differ
diff --git a/app/static/img/fldicon.png b/app/static/img/fldicon.png
deleted file mode 100644 (file)
index 68b6de2..0000000
Binary files a/app/static/img/fldicon.png and /dev/null differ
diff --git a/app/static/img/fldicon.svg b/app/static/img/fldicon.svg
deleted file mode 100644 (file)
index a49b4ae..0000000
+++ /dev/null
@@ -1,505 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
-   sodipodi:docname="fldicon.svg"
-   width="512"
-   height="512"
-   id="svg2"
-   version="1.1">
-  <sodipodi:namedview
-     inkscape:current-layer="svg2"
-     inkscape:window-maximized="1"
-     inkscape:window-y="18"
-     inkscape:window-x="-8"
-     inkscape:cy="163.23381"
-     inkscape:cx="116.0587"
-     inkscape:zoom="1.1609195"
-     showgrid="false"
-     id="namedview1035"
-     inkscape:window-height="1017"
-     inkscape:window-width="1920"
-     inkscape:pageshadow="2"
-     inkscape:pageopacity="0"
-     guidetolerance="10"
-     gridtolerance="10"
-     objecttolerance="10"
-     borderopacity="1"
-     bordercolor="#666666"
-     pagecolor="#ffffff" />
-  <defs
-     id="defs4">
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath3917">
-      <path
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.487137;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
-         id="path3919"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)" />
-    </clipPath>
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath3921">
-      <path
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.487137;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
-         id="path3923"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)" />
-    </clipPath>
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath3925">
-      <path
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.487137;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
-         id="path3927"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)" />
-    </clipPath>
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath3929">
-      <path
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.487137;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
-         id="path3931"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)" />
-    </clipPath>
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath3933">
-      <path
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.487137;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
-         id="path3935"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)" />
-    </clipPath>
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath3937">
-      <path
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.487137;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
-         id="path3939"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)" />
-    </clipPath>
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath3941">
-      <path
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.487137;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
-         id="path3943"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)" />
-    </clipPath>
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath3945">
-      <path
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.487137;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
-         id="path3947"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)" />
-    </clipPath>
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath3949">
-      <path
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.487137;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
-         id="path3951"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)" />
-    </clipPath>
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath3953">
-      <path
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.487137;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
-         id="path3955"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)" />
-    </clipPath>
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath3953-7">
-      <path
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.487137;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
-         id="path3955-4"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)" />
-    </clipPath>
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath3949-0">
-      <path
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.487137;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
-         id="path3951-9"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)" />
-    </clipPath>
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath3945-4">
-      <path
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.487137;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
-         id="path3947-8"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)" />
-    </clipPath>
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath3941-8">
-      <path
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.487137;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
-         id="path3943-2"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)" />
-    </clipPath>
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath3937-4">
-      <path
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.487137;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
-         id="path3939-5"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)" />
-    </clipPath>
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath3933-5">
-      <path
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.487137;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
-         id="path3935-1"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)" />
-    </clipPath>
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath3929-7">
-      <path
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.487137;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
-         id="path3931-1"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)" />
-    </clipPath>
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath3925-1">
-      <path
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.487137;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
-         id="path3927-5"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)" />
-    </clipPath>
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath3921-2">
-      <path
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.487137;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
-         id="path3923-7"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)" />
-    </clipPath>
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath3917-6">
-      <path
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.487137;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
-         id="path3919-1"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)" />
-    </clipPath>
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath4141">
-      <path
-         id="path4143"
-         d="m 341.83488,839.12618 v 20.80163 128.34254 20.82635 h 51.94788 0.73685 v -0.025 c 43.40797,-0.4243 78.47447,-38.28832 78.47447,-84.96065 0,-46.67241 -35.06639,-84.56112 -78.47447,-84.98527 h -0.73685 -51.94788 z"
-         style="opacity:0.343434;fill:#60aacf;fill-opacity:1;fill-rule:nonzero;stroke:none" />
-    </clipPath>
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath4145">
-      <path
-         id="path4147"
-         d="m 366.99998,837.375 v 26.3125 162.3437 26.3438 h 70.5 1 v -0.031 c 58.91022,-0.5367 106.5,-48.4318 106.5,-107.4688 0,-59.03711 -47.58963,-106.96348 -106.5,-107.5 h -1 -70.5 z"
-         style="opacity:0.343434;fill:#60aacf;fill-opacity:1;fill-rule:nonzero;stroke:none" />
-    </clipPath>
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath4149">
-      <path
-         id="path4151"
-         d="m 366.99998,837.375 v 26.3125 162.3437 26.3438 h 70.5 1 v -0.031 c 58.91022,-0.5367 106.5,-48.4318 106.5,-107.4688 0,-59.03711 -47.58963,-106.96348 -106.5,-107.5 h -1 -70.5 z"
-         style="opacity:0.343434;fill:#60aacf;fill-opacity:1;fill-rule:nonzero;stroke:none" />
-    </clipPath>
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath4153">
-      <path
-         id="path4155"
-         d="m 366.99998,837.375 v 26.3125 162.3437 26.3438 h 70.5 1 v -0.031 c 58.91022,-0.5367 106.5,-48.4318 106.5,-107.4688 0,-59.03711 -47.58963,-106.96348 -106.5,-107.5 h -1 -70.5 z"
-         style="opacity:0.343434;fill:#60aacf;fill-opacity:1;fill-rule:nonzero;stroke:none" />
-    </clipPath>
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath4157">
-      <path
-         id="path4159"
-         d="m 366.99998,837.375 v 26.3125 162.3437 26.3438 h 70.5 1 v -0.031 c 58.91022,-0.5367 106.5,-48.4318 106.5,-107.4688 0,-59.03711 -47.58963,-106.96348 -106.5,-107.5 h -1 -70.5 z"
-         style="opacity:0.343434;fill:#60aacf;fill-opacity:1;fill-rule:nonzero;stroke:none" />
-    </clipPath>
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath4161">
-      <path
-         id="path4163"
-         d="M 297.91853,936.78286 V 925.44762 855.5111 844.16238 h 38.38702 0.54449 v 0.0134 c 32.07642,0.2312 57.9889,20.86407 57.9889,46.2968 0,25.43277 -25.9124,46.07911 -57.9889,46.31024 h -0.54449 -38.38702 z"
-         style="opacity:0.343434;fill:#60aacf;fill-opacity:1;fill-rule:nonzero;stroke:none" />
-    </clipPath>
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath4161-2">
-      <path
-         id="path4163-2"
-         d="M 297.91853,936.78286 V 925.44762 855.5111 844.16238 h 38.38702 0.54449 v 0.0134 c 32.07642,0.2312 57.9889,20.86407 57.9889,46.2968 0,25.43277 -25.9124,46.07911 -57.9889,46.31024 h -0.54449 -38.38702 z"
-         style="opacity:0.343434;fill:#60aacf;fill-opacity:1;fill-rule:nonzero;stroke:none" />
-    </clipPath>
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath4157-7">
-      <path
-         id="path4159-0"
-         d="m 366.99998,837.375 v 26.3125 162.3437 26.3438 h 70.5 1 v -0.031 c 58.91022,-0.5367 106.5,-48.4318 106.5,-107.4688 0,-59.03711 -47.58963,-106.96348 -106.5,-107.5 h -1 -70.5 z"
-         style="opacity:0.343434;fill:#60aacf;fill-opacity:1;fill-rule:nonzero;stroke:none" />
-    </clipPath>
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath4153-5">
-      <path
-         id="path4155-7"
-         d="m 366.99998,837.375 v 26.3125 162.3437 26.3438 h 70.5 1 v -0.031 c 58.91022,-0.5367 106.5,-48.4318 106.5,-107.4688 0,-59.03711 -47.58963,-106.96348 -106.5,-107.5 h -1 -70.5 z"
-         style="opacity:0.343434;fill:#60aacf;fill-opacity:1;fill-rule:nonzero;stroke:none" />
-    </clipPath>
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath3945-4-3">
-      <path
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.487137;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
-         id="path3947-8-3"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)" />
-    </clipPath>
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath3941-8-5">
-      <path
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.487137;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
-         id="path3943-2-7"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)" />
-    </clipPath>
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath3937-4-2">
-      <path
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.487137;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
-         id="path3939-5-9"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)" />
-    </clipPath>
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath3933-5-1">
-      <path
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.487137;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
-         id="path3935-1-3"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)" />
-    </clipPath>
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath3929-7-8">
-      <path
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.487137;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
-         id="path3931-1-8"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)" />
-    </clipPath>
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath3925-1-1">
-      <path
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.487137;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
-         id="path3927-5-7"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)" />
-    </clipPath>
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath4149-5">
-      <path
-         id="path4151-9"
-         d="m 366.99998,837.375 v 26.3125 162.3437 26.3438 h 70.5 1 v -0.031 c 58.91022,-0.5367 106.5,-48.4318 106.5,-107.4688 0,-59.03711 -47.58963,-106.96348 -106.5,-107.5 h -1 -70.5 z"
-         style="opacity:0.343434;fill:#60aacf;fill-opacity:1;fill-rule:nonzero;stroke:none" />
-    </clipPath>
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath4145-7">
-      <path
-         id="path4147-7"
-         d="m 366.99998,837.375 v 26.3125 162.3437 26.3438 h 70.5 1 v -0.031 c 58.91022,-0.5367 106.5,-48.4318 106.5,-107.4688 0,-59.03711 -47.58963,-106.96348 -106.5,-107.5 h -1 -70.5 z"
-         style="opacity:0.343434;fill:#60aacf;fill-opacity:1;fill-rule:nonzero;stroke:none" />
-    </clipPath>
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath4141-3">
-      <path
-         id="path4143-0"
-         d="m 341.83488,839.12618 v 20.80163 128.34254 20.82635 h 51.94788 0.73685 v -0.025 c 43.40797,-0.4243 78.47447,-38.28832 78.47447,-84.96065 0,-46.67241 -35.06639,-84.56112 -78.47447,-84.98527 h -0.73685 -51.94788 z"
-         style="opacity:0.343434;fill:#60aacf;fill-opacity:1;fill-rule:nonzero;stroke:none" />
-    </clipPath>
-  </defs>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:export-ydpi="96"
-     inkscape:export-xdpi="96"
-     id="g1131">
-    <rect
-       style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:6.81895;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect1037"
-       width="505.18106"
-       height="505.18103"
-       x="3.4094784"
-       y="3.4094784"
-       ry="29.746988" />
-    <path
-       style="color:#000000;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:40px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial Bold';letter-spacing:0px;word-spacing:0px;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:6.7653;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
-       d="m 182.06172,161.67007 v 142.1396 40.30822 h 39.18747 88.06648 v -40.30822 h -88.06648 v -142.1396 z"
-       id="rect4165" />
-    <path
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:40px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial Bold';letter-spacing:0px;word-spacing:0px;display:inline;fill:#ed2939;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.67834;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       d="m 28.052756,252.89397 v -93.2513 h 65.68666 65.686664 v 15.39527 15.39525 H 112.7659 66.105721 v 22.87297 22.87296 h 40.318019 40.31802 v 15.3953 15.39525 H 106.42374 66.105721 v 39.58783 39.58783 H 47.079243 28.052756 Z"
-       id="path2996" />
-    <g
-       style="display:inline"
-       id="g3061"
-       transform="matrix(0.89381929,0,0,0.87981371,8.8265842,-578.40876)">
-      <path
-         id="path3051"
-         d="m 361.19707,837.375 v 26.3125 162.3437 26.3438 h 70.5 1 v -0.031 c 58.91022,-0.5367 106.5,-48.4318 106.5,-107.4688 0,-59.03711 -47.58963,-106.96348 -106.5,-107.5 h -1 -70.5 z"
-         style="fill:#00a1de;fill-opacity:1;fill-rule:nonzero;stroke:none" />
-      <path
-         clip-path="url(#clipPath4161-2)"
-         transform="matrix(1.8365585,0,0,-2.3213008,-185.94774,3011.9298)"
-         d="m 384.92697,890.29293 a 49.275364,38.985508 0 0 1 -49.03985,39.17028 49.275364,38.985508 0 0 1 -49.50976,-38.7985 49.275364,38.985508 0 0 1 49.03816,-39.17162 49.275364,38.985508 0 0 1 49.51143,38.79717"
-         id="path3786"
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#ffffff;stroke-width:0.968639;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
-      <path
-         transform="translate(-5.8029102)"
-         clip-path="url(#clipPath4157-7)"
-         mask="none"
-         id="path3860"
-         d="M 525.214,960.36762 308.39321,924.59958"
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
-      <path
-         transform="translate(-5.8029102)"
-         clip-path="url(#clipPath4153-5)"
-         id="path3860-4"
-         d="M 320.91397,1003.6525 516.94324,903.56469"
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
-      <path
-         transform="translate(-5.8029102)"
-         clip-path="url(#clipPath3945-4-3)"
-         id="path3860-0"
-         d="M 344.72988,1036.4323 527.87734,853.28489"
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
-      <path
-         transform="translate(-5.8029102)"
-         clip-path="url(#clipPath3941-8-5)"
-         id="path3860-9"
-         d="M 377.50965,1060.2482 495.09757,829.46899"
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
-      <path
-         transform="translate(-5.8029102)"
-         clip-path="url(#clipPath3937-4-2)"
-         id="path3860-48"
-         d="M 416.0446,1072.769 456.56262,816.94819"
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
-      <path
-         transform="translate(-5.8029102)"
-         clip-path="url(#clipPath3933-5-1)"
-         id="path3860-8"
-         d="M 456.56263,1072.769 416.04459,816.94819"
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
-      <path
-         transform="translate(-5.8029102)"
-         clip-path="url(#clipPath3929-7-8)"
-         id="path3860-2"
-         d="M 495.09756,1060.2482 377.50966,829.46899"
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
-      <path
-         transform="translate(-5.8029102)"
-         clip-path="url(#clipPath3925-1-1)"
-         id="path3860-45"
-         d="M 527.87734,1036.4323 344.72987,853.28489"
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
-      <path
-         transform="translate(-5.8029102)"
-         clip-path="url(#clipPath4149-5)"
-         id="path3860-5"
-         d="M 516.69324,986.4026 320.91397,886.06459"
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
-      <path
-         transform="translate(-5.8029102)"
-         clip-path="url(#clipPath4145-7)"
-         id="path3860-1"
-         d="m 269.64681,971.11403 255.8208,-40.51806"
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
-      <path
-         clip-path="url(#clipPath4141-3)"
-         transform="matrix(1.3571293,0,0,1.2649251,-102.71706,-224.05677)"
-         d="m 456.52174,924.06726 a 63.623188,68.260872 0 0 1 -63.59068,68.29492 63.623188,68.260872 0 0 1 -63.65568,-68.22518 63.623188,68.260872 0 0 1 63.58916,-68.29654 63.623188,68.260872 0 0 1 63.6572,68.22355"
-         id="path3784"
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#ffffff;stroke-width:1.52647;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
-      <path
-         transform="matrix(1.3102225,0,0,1.3058983,22.619124,-209.68422)"
-         d="m 355.0711,883.7544 a 43.768116,43.913044 0 0 1 -43.41714,44.25856 43.768116,43.913044 0 0 1 -44.1163,-43.55703 43.768116,43.913044 0 0 1 43.40942,-44.26619 43.768116,43.913044 0 0 1 44.1239,43.54927"
-         id="path3014"
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#ffffff;stroke-width:1.52898;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
-      <path
-         d="m 474.7826,943.52161 a 45.942028,27.10145 0 0 1 -45.94202,27.10145 45.942028,27.10145 0 0 1 -45.94203,-27.10145 45.942028,27.10145 0 0 1 45.94203,-27.10145 45.942028,27.10145 0 0 1 45.94202,27.10145"
-         transform="matrix(1.1589718,0,0,1.964674,-66.517043,-908.85019)"
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#ffffff;stroke-width:1.3254;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
-         id="path3982" />
-      <path
-         d="m 445.06734,946.8598 a 7.0710678,6.9685884 0 0 1 -7.07106,6.96859 7.0710678,6.9685884 0 0 1 -7.07107,-6.96859 7.0710678,6.9685884 0 0 1 7.07107,-6.96859 7.0710678,6.9685884 0 0 1 7.07106,6.96859"
-         transform="matrix(1.1923927,0,0,1.209928,-91.766473,-200.77)"
-         style="fill:#3da0d9;fill-opacity:1;stroke:#ffffff;stroke-width:1.6651;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         mask="none"
-         id="path3858" />
-      <path
-         d="m 441.37809,947.62842 a 3.2280962,3.1768565 0 0 1 -3.2281,3.17685 3.2280962,3.1768565 0 0 1 -3.22809,-3.17685 3.2280962,3.1768565 0 0 1 3.22809,-3.17686 3.2280962,3.1768565 0 0 1 3.2281,3.17686"
-         transform="matrix(1.2353218,0,0,1.2552464,-110.75915,-244.64498)"
-         style="fill:#3da0d9;fill-opacity:1;stroke:#ffffff;stroke-width:1.60611;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         id="path3854" />
-    </g>
-  </g>
-</svg>
diff --git a/app/static/img/hiclipart.com.png b/app/static/img/hiclipart.com.png
deleted file mode 100644 (file)
index 99370af..0000000
Binary files a/app/static/img/hiclipart.com.png and /dev/null differ
diff --git a/app/static/img/logo.png b/app/static/img/logo.png
deleted file mode 100644 (file)
index 605f989..0000000
Binary files a/app/static/img/logo.png and /dev/null differ
diff --git a/app/static/img/no-image-icon.png b/app/static/img/no-image-icon.png
deleted file mode 100644 (file)
index 1849ae7..0000000
Binary files a/app/static/img/no-image-icon.png and /dev/null differ
diff --git a/app/static/img/no-news-img.png b/app/static/img/no-news-img.png
deleted file mode 100644 (file)
index 3411fda..0000000
Binary files a/app/static/img/no-news-img.png and /dev/null differ
diff --git a/app/static/img/toplogo.svg b/app/static/img/toplogo.svg
deleted file mode 100644 (file)
index 9e2ec89..0000000
+++ /dev/null
@@ -1,482 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   version="1.1"
-   id="svg2"
-   height="220"
-   width="522">
-  <defs
-     id="defs4">
-    <clipPath
-       id="clipPath3917"
-       clipPathUnits="userSpaceOnUse">
-      <path
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         id="path3919"
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.48713735;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
-    </clipPath>
-    <clipPath
-       id="clipPath3921"
-       clipPathUnits="userSpaceOnUse">
-      <path
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         id="path3923"
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.48713735;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
-    </clipPath>
-    <clipPath
-       id="clipPath3925"
-       clipPathUnits="userSpaceOnUse">
-      <path
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         id="path3927"
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.48713735;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
-    </clipPath>
-    <clipPath
-       id="clipPath3929"
-       clipPathUnits="userSpaceOnUse">
-      <path
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         id="path3931"
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.48713735;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
-    </clipPath>
-    <clipPath
-       id="clipPath3933"
-       clipPathUnits="userSpaceOnUse">
-      <path
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         id="path3935"
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.48713735;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
-    </clipPath>
-    <clipPath
-       id="clipPath3937"
-       clipPathUnits="userSpaceOnUse">
-      <path
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         id="path3939"
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.48713735;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
-    </clipPath>
-    <clipPath
-       id="clipPath3941"
-       clipPathUnits="userSpaceOnUse">
-      <path
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         id="path3943"
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.48713735;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
-    </clipPath>
-    <clipPath
-       id="clipPath3945"
-       clipPathUnits="userSpaceOnUse">
-      <path
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         id="path3947"
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.48713735;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
-    </clipPath>
-    <clipPath
-       id="clipPath3949"
-       clipPathUnits="userSpaceOnUse">
-      <path
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         id="path3951"
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.48713735;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
-    </clipPath>
-    <clipPath
-       id="clipPath3953"
-       clipPathUnits="userSpaceOnUse">
-      <path
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         id="path3955"
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.48713735;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
-    </clipPath>
-    <clipPath
-       id="clipPath3953-7"
-       clipPathUnits="userSpaceOnUse">
-      <path
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         id="path3955-4"
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.48713735;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
-    </clipPath>
-    <clipPath
-       id="clipPath3949-0"
-       clipPathUnits="userSpaceOnUse">
-      <path
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         id="path3951-9"
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.48713735;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
-    </clipPath>
-    <clipPath
-       id="clipPath3945-4"
-       clipPathUnits="userSpaceOnUse">
-      <path
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         id="path3947-8"
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.48713735;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
-    </clipPath>
-    <clipPath
-       id="clipPath3941-8"
-       clipPathUnits="userSpaceOnUse">
-      <path
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         id="path3943-2"
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.48713735;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
-    </clipPath>
-    <clipPath
-       id="clipPath3937-4"
-       clipPathUnits="userSpaceOnUse">
-      <path
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         id="path3939-5"
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.48713735;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
-    </clipPath>
-    <clipPath
-       id="clipPath3933-5"
-       clipPathUnits="userSpaceOnUse">
-      <path
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         id="path3935-1"
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.48713735;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
-    </clipPath>
-    <clipPath
-       id="clipPath3929-7"
-       clipPathUnits="userSpaceOnUse">
-      <path
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         id="path3931-1"
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.48713735;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
-    </clipPath>
-    <clipPath
-       id="clipPath3925-1"
-       clipPathUnits="userSpaceOnUse">
-      <path
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         id="path3927-5"
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.48713735;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
-    </clipPath>
-    <clipPath
-       id="clipPath3921-2"
-       clipPathUnits="userSpaceOnUse">
-      <path
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         id="path3923-7"
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.48713735;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
-    </clipPath>
-    <clipPath
-       id="clipPath3917-6"
-       clipPathUnits="userSpaceOnUse">
-      <path
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         id="path3919-1"
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.48713735;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
-    </clipPath>
-    <clipPath
-       id="clipPath4141"
-       clipPathUnits="userSpaceOnUse">
-      <path
-         style="opacity:0.34343435;fill:#60aacf;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 341.83488,839.12618 v 20.80163 128.34254 20.82635 h 51.94788 0.73685 v -0.025 c 43.40797,-0.4243 78.47447,-38.28832 78.47447,-84.96065 0,-46.67241 -35.06639,-84.56112 -78.47447,-84.98527 h -0.73685 -51.94788 z"
-         id="path4143" />
-    </clipPath>
-    <clipPath
-       id="clipPath4145"
-       clipPathUnits="userSpaceOnUse">
-      <path
-         style="opacity:0.34343435;fill:#60aacf;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 366.99998,837.375 v 26.3125 162.3437 26.3438 h 70.5 1 v -0.031 c 58.91022,-0.5367 106.5,-48.4318 106.5,-107.4688 0,-59.03711 -47.58963,-106.96348 -106.5,-107.5 h -1 -70.5 z"
-         id="path4147" />
-    </clipPath>
-    <clipPath
-       id="clipPath4149"
-       clipPathUnits="userSpaceOnUse">
-      <path
-         style="opacity:0.34343435;fill:#60aacf;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 366.99998,837.375 v 26.3125 162.3437 26.3438 h 70.5 1 v -0.031 c 58.91022,-0.5367 106.5,-48.4318 106.5,-107.4688 0,-59.03711 -47.58963,-106.96348 -106.5,-107.5 h -1 -70.5 z"
-         id="path4151" />
-    </clipPath>
-    <clipPath
-       id="clipPath4153"
-       clipPathUnits="userSpaceOnUse">
-      <path
-         style="opacity:0.34343435;fill:#60aacf;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 366.99998,837.375 v 26.3125 162.3437 26.3438 h 70.5 1 v -0.031 c 58.91022,-0.5367 106.5,-48.4318 106.5,-107.4688 0,-59.03711 -47.58963,-106.96348 -106.5,-107.5 h -1 -70.5 z"
-         id="path4155" />
-    </clipPath>
-    <clipPath
-       id="clipPath4157"
-       clipPathUnits="userSpaceOnUse">
-      <path
-         style="opacity:0.34343435;fill:#60aacf;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 366.99998,837.375 v 26.3125 162.3437 26.3438 h 70.5 1 v -0.031 c 58.91022,-0.5367 106.5,-48.4318 106.5,-107.4688 0,-59.03711 -47.58963,-106.96348 -106.5,-107.5 h -1 -70.5 z"
-         id="path4159" />
-    </clipPath>
-    <clipPath
-       id="clipPath4161"
-       clipPathUnits="userSpaceOnUse">
-      <path
-         style="opacity:0.34343435;fill:#60aacf;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="M 297.91853,936.78286 V 925.44762 855.5111 844.16238 h 38.38702 0.54449 v 0.0134 c 32.07642,0.2312 57.9889,20.86407 57.9889,46.2968 0,25.43277 -25.9124,46.07911 -57.9889,46.31024 h -0.54449 -38.38702 z"
-         id="path4163" />
-    </clipPath>
-    <clipPath
-       id="clipPath4161-2"
-       clipPathUnits="userSpaceOnUse">
-      <path
-         style="opacity:0.34343435;fill:#60aacf;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="M 297.91853,936.78286 V 925.44762 855.5111 844.16238 h 38.38702 0.54449 v 0.0134 c 32.07642,0.2312 57.9889,20.86407 57.9889,46.2968 0,25.43277 -25.9124,46.07911 -57.9889,46.31024 h -0.54449 -38.38702 z"
-         id="path4163-2" />
-    </clipPath>
-    <clipPath
-       id="clipPath4157-7"
-       clipPathUnits="userSpaceOnUse">
-      <path
-         style="opacity:0.34343435;fill:#60aacf;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 366.99998,837.375 v 26.3125 162.3437 26.3438 h 70.5 1 v -0.031 c 58.91022,-0.5367 106.5,-48.4318 106.5,-107.4688 0,-59.03711 -47.58963,-106.96348 -106.5,-107.5 h -1 -70.5 z"
-         id="path4159-0" />
-    </clipPath>
-    <clipPath
-       id="clipPath4153-5"
-       clipPathUnits="userSpaceOnUse">
-      <path
-         style="opacity:0.34343435;fill:#60aacf;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 366.99998,837.375 v 26.3125 162.3437 26.3438 h 70.5 1 v -0.031 c 58.91022,-0.5367 106.5,-48.4318 106.5,-107.4688 0,-59.03711 -47.58963,-106.96348 -106.5,-107.5 h -1 -70.5 z"
-         id="path4155-7" />
-    </clipPath>
-    <clipPath
-       id="clipPath3945-4-3"
-       clipPathUnits="userSpaceOnUse">
-      <path
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         id="path3947-8-3"
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.48713735;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
-    </clipPath>
-    <clipPath
-       id="clipPath3941-8-5"
-       clipPathUnits="userSpaceOnUse">
-      <path
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         id="path3943-2-7"
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.48713735;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
-    </clipPath>
-    <clipPath
-       id="clipPath3937-4-2"
-       clipPathUnits="userSpaceOnUse">
-      <path
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         id="path3939-5-9"
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.48713735;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
-    </clipPath>
-    <clipPath
-       id="clipPath3933-5-1"
-       clipPathUnits="userSpaceOnUse">
-      <path
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         id="path3935-1-3"
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.48713735;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
-    </clipPath>
-    <clipPath
-       id="clipPath3929-7-8"
-       clipPathUnits="userSpaceOnUse">
-      <path
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         id="path3931-1-8"
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.48713735;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
-    </clipPath>
-    <clipPath
-       id="clipPath3925-1-1"
-       clipPathUnits="userSpaceOnUse">
-      <path
-         transform="matrix(1.8365585,0,0,-2.3213008,-180.14483,3011.9298)"
-         d="m 384.92752,890.47815 a 49.275364,38.985508 0 0 1 -49.21598,38.98548 49.275364,38.985508 0 0 1 -49.3346,-38.89152 49.275364,38.985508 0 0 1 49.09709,-39.07921 49.275364,38.985508 0 0 1 49.45292,38.79734"
-         id="path3927-5-7"
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#000400;stroke-width:0.48713735;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
-    </clipPath>
-    <clipPath
-       id="clipPath4149-5"
-       clipPathUnits="userSpaceOnUse">
-      <path
-         style="opacity:0.34343435;fill:#60aacf;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 366.99998,837.375 v 26.3125 162.3437 26.3438 h 70.5 1 v -0.031 c 58.91022,-0.5367 106.5,-48.4318 106.5,-107.4688 0,-59.03711 -47.58963,-106.96348 -106.5,-107.5 h -1 -70.5 z"
-         id="path4151-9" />
-    </clipPath>
-    <clipPath
-       id="clipPath4145-7"
-       clipPathUnits="userSpaceOnUse">
-      <path
-         style="opacity:0.34343435;fill:#60aacf;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 366.99998,837.375 v 26.3125 162.3437 26.3438 h 70.5 1 v -0.031 c 58.91022,-0.5367 106.5,-48.4318 106.5,-107.4688 0,-59.03711 -47.58963,-106.96348 -106.5,-107.5 h -1 -70.5 z"
-         id="path4147-7" />
-    </clipPath>
-    <clipPath
-       id="clipPath4141-3"
-       clipPathUnits="userSpaceOnUse">
-      <path
-         style="opacity:0.34343435;fill:#60aacf;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 341.83488,839.12618 v 20.80163 128.34254 20.82635 h 51.94788 0.73685 v -0.025 c 43.40797,-0.4243 78.47447,-38.28832 78.47447,-84.96065 0,-46.67241 -35.06639,-84.56112 -78.47447,-84.98527 h -0.73685 -51.94788 z"
-         id="path4143-0" />
-    </clipPath>
-  </defs>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     transform="translate(0,-902.51965)"
-     style="display:inline"
-     id="layer5">
-    <path
-       id="rect4165"
-       d="m 173.8145,911.32143 v 161.55647 45.8145 h 43.84272 98.52828 v -45.8145 H 217.65722 V 911.32143 Z"
-       style="color:#000000;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:40px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial Bold';letter-spacing:0px;word-spacing:0px;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:7.62899017;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
-    <path
-       id="path2996"
-       d="M 1.5101329,1015.0069 V 909.01708 H 74.999999 148.48987 v 17.49833 17.49831 H 96.286722 44.083576 v 25.99751 25.99751 h 45.107573 45.107571 v 17.49836 17.4983 H 89.191149 44.083576 v 44.9957 44.9957 H 22.79686 1.5101329 Z"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:40px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial Bold';letter-spacing:0px;word-spacing:0px;display:inline;fill:#ed2939;fill-opacity:1;fill-rule:nonzero;stroke:#ed2939;stroke-width:3.02026582;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-    <g
-       transform="translate(-20,70.144685)"
-       id="g3061"
-       style="display:inline">
-      <path
-         style="fill:#00a1de;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m 361.19707,837.375 v 26.3125 162.3437 26.3438 h 70.5 1 v -0.031 c 58.91022,-0.5367 106.5,-48.4318 106.5,-107.4688 0,-59.03711 -47.58963,-106.96348 -106.5,-107.5 h -1 -70.5 z"
-         id="path3051" />
-      <path
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#ffffff;stroke-width:0.9686389;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
-         id="path3786"
-         d="m 384.92697,890.29293 a 49.275364,38.985508 0 0 1 -49.03985,39.17028 49.275364,38.985508 0 0 1 -49.50976,-38.7985 49.275364,38.985508 0 0 1 49.03816,-39.17162 49.275364,38.985508 0 0 1 49.51143,38.79717"
-         transform="matrix(1.8365585,0,0,-2.3213008,-185.94774,3011.9298)"
-         clip-path="url(#clipPath4161-2)" />
-      <path
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
-         d="M 525.214,960.36762 308.39321,924.59958"
-         id="path3860"
-         mask="none"
-         clip-path="url(#clipPath4157-7)"
-         transform="translate(-5.8029102,1.2637754e-6)" />
-      <path
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
-         d="M 320.91397,1003.6525 516.94324,903.56469"
-         id="path3860-4"
-         clip-path="url(#clipPath4153-5)"
-         transform="translate(-5.8029102,1.2637754e-6)" />
-      <path
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
-         d="M 344.72988,1036.4323 527.87734,853.28489"
-         id="path3860-0"
-         clip-path="url(#clipPath3945-4-3)"
-         transform="translate(-5.8029102,1.2637754e-6)" />
-      <path
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
-         d="M 377.50965,1060.2482 495.09757,829.46899"
-         id="path3860-9"
-         clip-path="url(#clipPath3941-8-5)"
-         transform="translate(-5.8029102,1.2637754e-6)" />
-      <path
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
-         d="M 416.0446,1072.769 456.56262,816.94819"
-         id="path3860-48"
-         clip-path="url(#clipPath3937-4-2)"
-         transform="translate(-5.8029102,1.2637754e-6)" />
-      <path
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
-         d="M 456.56263,1072.769 416.04459,816.94819"
-         id="path3860-8"
-         clip-path="url(#clipPath3933-5-1)"
-         transform="translate(-5.8029102,1.2637754e-6)" />
-      <path
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
-         d="M 495.09756,1060.2482 377.50966,829.46899"
-         id="path3860-2"
-         clip-path="url(#clipPath3929-7-8)"
-         transform="translate(-5.8029102,1.2637754e-6)" />
-      <path
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
-         d="M 527.87734,1036.4323 344.72987,853.28489"
-         id="path3860-45"
-         clip-path="url(#clipPath3925-1-1)"
-         transform="translate(-5.8029102,1.2637754e-6)" />
-      <path
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
-         d="M 516.69324,986.4026 320.91397,886.06459"
-         id="path3860-5"
-         clip-path="url(#clipPath4149-5)"
-         transform="translate(-5.8029102,1.2637754e-6)" />
-      <path
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
-         d="m 269.64681,971.11403 255.8208,-40.51806"
-         id="path3860-1"
-         clip-path="url(#clipPath4145-7)"
-         transform="translate(-5.8029102,1.2637754e-6)" />
-      <path
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#ffffff;stroke-width:1.52646542;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
-         id="path3784"
-         d="m 456.52174,924.06726 a 63.623188,68.260872 0 0 1 -63.59068,68.29492 63.623188,68.260872 0 0 1 -63.65568,-68.22518 63.623188,68.260872 0 0 1 63.58916,-68.29654 63.623188,68.260872 0 0 1 63.6572,68.22355"
-         transform="matrix(1.3571293,0,0,1.2649251,-102.71706,-224.05677)"
-         clip-path="url(#clipPath4141-3)" />
-      <path
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#ffffff;stroke-width:1.52898347;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
-         id="path3014"
-         d="m 355.0711,883.7544 a 43.768116,43.913044 0 0 1 -43.41714,44.25856 43.768116,43.913044 0 0 1 -44.1163,-43.55703 43.768116,43.913044 0 0 1 43.40942,-44.26619 43.768116,43.913044 0 0 1 44.1239,43.54927"
-         transform="matrix(1.3102225,0,0,1.3058983,22.619124,-209.68422)" />
-      <ellipse
-         ry="27.10145"
-         rx="45.942028"
-         cy="943.52161"
-         cx="428.84058"
-         style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#ffffff;stroke-width:1.32540417;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate"
-         id="path3982"
-         transform="matrix(1.1589718,0,0,1.964674,-66.517043,-908.85019)" />
-      <ellipse
-         ry="6.9685884"
-         rx="7.0710678"
-         cy="946.8598"
-         cx="437.99628"
-         style="fill:#3da0d9;fill-opacity:1;stroke:#ffffff;stroke-width:1.66510093;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         id="path3858"
-         transform="matrix(1.1923927,0,0,1.209928,-91.766473,-200.77)"
-         mask="none" />
-      <ellipse
-         ry="3.1768565"
-         rx="3.2280962"
-         cy="947.62842"
-         cx="438.14999"
-         style="fill:#3da0d9;fill-opacity:1;stroke:#ffffff;stroke-width:1.60611057;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         id="path3854"
-         transform="matrix(1.2353218,0,0,1.2552464,-110.75915,-244.64498)" />
-    </g>
-  </g>
-</svg>
diff --git a/app/static/js/app.js b/app/static/js/app.js
deleted file mode 100644 (file)
index 0ab6635..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-var app = {
-  loadpage: function(modulepage,modulename){
-    location.href=modulepage;
-    //console.log(modulename);
-    //console.log("Load module:" + modulepage);
-    // if (modulename){
-    //   document.getElementById("modulename").innerHTML = modulename;
-    // }
-    // document.getElementById("moduleframe").setAttribute('src',modulepage);
-    
-    // if (document.getElementById("sidebar").style.display == 'none'){
-    //   document.getElementById("main").style.margin = "0 0 0 0";
-    //   document.getElementById("modulename").style.setProperty("margin-left","0px");
-    // }
-    // else {
-    //   document.getElementById("main").style.setProperty("margin-left","210px");
-    //   document.getElementById("modulename").style.setProperty("margin-left","150px");
-    // }
-  },
-  // sidebarclick: function(modulepage,modulename){
-  //   app.loadpage(modulepage,modulename);
-  // },
-  logout: function(){
-    req.reqdata("POST",location.href,{"logout":"1"},app.reloadpage);
-
-  },
-
-  reloadpage(page){
-    location.href=location.href;
-
-  },
-  viewpanel: function(pnlname){
-    let panels = document.getElementsByClassName("panel");
-    //let toolbars = document.getElementsByClassName("paneltoolbar");
-    currentview = pnlname;
-    for (let p=0;p<panels.length;p++){
-      panels[p].style.display = 'none';
-    }
-    // for (let p=0;p<toolbars.length;p++){
-    //    toolbars[p].style.display = 'none';
-    // }
-    if (document.getElementById('pnl_' + pnlname)){
-      document.getElementById('pnl_' + pnlname).style.display = 'block';
-    }
-    // if (document.getElementById('tlb_' +pnlname)){
-    //    document.getElementById('tlb_' +pnlname).style.display = 'block';
-    // }
-    return false;
-  },
-  viewdialog: function(dlgname){
-    if (document.getElementById('dlg_' +dlgname)){
-      document.getElementById('dlg_' +dlgname).style.display = 'block';
-    } else {
-      console.log('dlg_' +dlgname + ' does not exist!');
-    }
-  }
-}
-
-function reload_page(){
-  location.href=location.href;
-}
-
-document.addEventListener("DOMContentLoaded", function() {
-  initpage();
-  //console.log( "Iframe "+ location.pathname.substring(location.pathname.lastIndexOf("/")) +" ready!" );
-  //initpage();
-});
-// function closeSidebar(){
-//   document.getElementById("sidebar").style.display = "none";
-//   document.getElementById("main").style.margin = "0 0 0 0";
-//   document.getElementById("modulename").style.setProperty("margin-left","0px");
-// }
-
-// function openSidebar(){
-//   //reload_page();
-//   document.getElementById("sidebar").style.display = "block";
-//   document.getElementById("main").style.setProperty("margin-left","210px");
-//   document.getElementById("modulename").style.setProperty("margin-left","150px");
-// }
\ No newline at end of file
diff --git a/app/static/js/fieldsave.js b/app/static/js/fieldsave.js
deleted file mode 100644 (file)
index 8baea57..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-var fsaveelements = document.querySelectorAll("input.fieldsave");
-for (var i = 0; i < fsaveelements.length; i++) {
-       fsaveelements[i].addEventListener('blur', function (event) {
-               savefield(event.currentTarget.id);
-       }, false);
-}
-
-function savefield(obj){
-  // console.log("save");
-  var field = {"ident":obj.id};
-  //var obj = document.getElementById(objid);
-  var fieldname = obj.getAttribute('name');
-  var xsp = fieldname.split("_");
-  // console.log(xsp);
-  // console.log(xsp[0] + "_id");
-  var identfield = document.getElementById("id");
-  field["ident_" + xsp[0] + "_id"] = identfield.value; 
-  if (obj.tagName == 'TEXTAREA'){
-    field[obj.getAttribute('name')] = obj.innerHTML;
-  } else if (obj.tagName == "SELECT"){
-    field[obj.getAttribute('name')] = obj.value;
-  } else if ((obj.getAttribute('type') == "checkbox")){
-    if ($("#" +objid).prop('checked')){
-      field[obj.getAttribute('name')] = obj.value;
-    } else {
-      field[obj.getAttribute('name')] = "";
-    }
-    
-  } else if (obj.getAttribute('type') == "file") {
-    if (obj.value != ""){
-      alert("file save TODO!")
-      return false;
-    }
-  } else {
-    field[obj.getAttribute('name')] = obj.value;
-  }
-
-  field["fn"] = "savefield";
-  // console.log(field);
-  
-  req.reqdata("POST","index.cgi",field,fieldsaved);
-  return false;
-}
-
-function fieldsaved(data){
-  console.log("field saved");
-  // console.log(data);
-}
\ No newline at end of file
diff --git a/app/static/js/form.js b/app/static/js/form.js
deleted file mode 100644 (file)
index 6415089..0000000
+++ /dev/null
@@ -1,279 +0,0 @@
-let form = {
-saveform: function(frmid,aftercallback,clientschema){
-  var flds=form.getformcontent(frmid,null);
-  flds["fn"] ="saveform";
-  flds["schemata"]=clientschema;
-  if (clientschema == null){
-    flds["schemata"]=schemata;
-  }
-  delete flds["null"]; 
-  if (aftercallback){
-    req.reqdata("POST","index.cgi",flds,aftercallback);
-    form.formsaved({});
-  }
-  else {
-    req.reqdata("POST","index.cgi",flds,formsaved);
-  }
-  return false;
-},
-saveformdata: function(flds,aftercallback,clientschema){
-  flds["fn"] ="saveform";
-  flds["schemata"]=clientschema;
-  if (clientschema == null){
-    flds["schemata"]=schemata;
-  }
-  delete flds["null"];
-  if (aftercallback){
-    req.reqdata("POST","db.cgi",flds,aftercallback);
-    form.formsaved({});
-  }
-  else {
-    req.reqdata("POST","db.cgi",flds,formsaved);
-  }
-  return false;
-},
-formsaved: function(data){
-  var sb = document.getElementById("snackbar");
-  sb.className="show green";
-  sb.innerHTML = 'Les données ont été sauvegardées!';
-  setTimeout(function(){ sb.className = sb.className.replace("show green", ""); }, 3000);
-  return false;
-},
-// showsnackbar: function(xclass,xmessage){
-//   var sb = document.getElementById("snackbar");
-//   sb.className="show " + xclass;
-//   sb.innerHTML = xmessage;
-//   setTimeout(function(){ sb.className = sb.className.replace(sb.className, ""); }, 3000);
-//   return false;
-// },
-getformcontent: function(frmid,dataflds){
-  var frm = document.getElementById("frm_" + frmid);
-  var flds = [];
-  if (dataflds){
-    flds = dataflds;
-  } 
-  for (var i = 0; i < frm.elements.length; i++) {
-    var field = frm.elements[i];
-    if ((field.getAttribute("name") != 'null') && (field.tagName == "INPUT" || field.tagName == "SELECT" || field.tagName == "TEXTAREA")){
-      if (field.classList.contains("tagedit")){
-        var fvalue=field.value.trim();
-        var ndata = null;
-        if (fvalue != ""){
-          ndata =  fvalue.split(",");  
-        }
-        flds[field.getAttribute("name")] = ndata;
-      }else if (field.tagName == "TEXTAREA" ){
-        if (field.classList.contains("richeditarea")){
-          flds[field.getAttribute("name")] = tinymce.get(field.id).getContent();
-        } else {
-          flds[field.getAttribute("name")] = field.innerHTML;
-        }
-      }else if (field.type == "checkbox" ){
-        if (field.checked){
-          flds[field.getAttribute("name")] = "1";
-        } else {
-          flds[field.getAttribute("name")] = "";
-        }
-      }
-      else if (field.tagName == "SELECT" && field.multiple == true){
-          var opts = field.selectedOptions;
-          var vals = [];
-          for (var o in opts){
-            if (opts[o].value){
-              vals.push(opts[o].value);
-            }
-          }
-          if (vals.length > 0) {
-            flds[field.getAttribute("name")] = vals;
-          } else {
-            flds[field.getAttribute("name")] = "";
-          }    
-      } 
-      else {
-        flds[field.getAttribute("name")] = field.value;
-      }
-    }
-  }
-  return flds;
-},
-cleanform: function(frmname){
-  var frm = document.getElementById("frm_" + frmname);
-  for (var f in frm){
-    if (frm[f] && frm[f].id){
-    if (frm[f].tagName == 'INPUT'){
-      if (frm[f].type == "checkbox"){
-        frm[f].checked = false;
-      } else if (frm[f].classList.contains("datefield")){
-          if (frm[f]._flatpickr){ frm[f]._flatpickr.clear(); }
-      } else if (frm[f].classList.contains("choices__input")){
-        if (choice[frmname][frm[f].id]){
-          choice[frmname][frm[f].id].removeActiveItems();
-        }
-      } else {
-        frm[f].value = "";
-      }
-    }
-    if (frm[f].tagName == 'SELECT'){
-      if (frm[f].multiple == true){
-        if (frm[f].classList.contains("choices__input")){
-          choice[frmname][frm[f].id].removeActiveItems();
-        }
-      } else {
-        frm[f].value = "";
-      }
-      
-    }
-    if (frm[f].tagName == 'TEXTAREA'){
-      if (frm[f].classList.contains("richeditarea")){
-        tinymce.get(frm[f].id).setContent("");
-      } else {
-        frm[f].innerHTML = "";
-      } 
-    }
-  }
-  }
-  return false;
-},
-cleanform2: function(frmname,choices){
-  var frm = document.getElementById("frm_" + frmname);
-  for (var f in frm){
-    if (frm[f] && frm[f].id){
-    if (frm[f].tagName == 'INPUT'){
-      if (frm[f].type == "checkbox"){
-        frm[f].checked = false;
-      } else if (frm[f].classList.contains("datefield")){
-          if (frm[f]._flatpickr){ frm[f]._flatpickr.clear(); }
-      } else if (frm[f].classList.contains("choices__input")){
-        if (choices[frm[f].id]){
-          choices[frm[f].id].removeActiveItems();
-        }
-      } else {
-        frm[f].value = "";
-      }
-    }
-    if (frm[f].tagName == 'SELECT'){
-      if (frm[f].multiple == true){
-        if (frm[f].classList.contains("choices__input")){
-          choices[frm[f].id].removeActiveItems();
-        }
-      } else {
-        frm[f].value = "";
-      }
-      
-    }
-    if (frm[f].tagName == 'TEXTAREA'){
-      if (frm[f].classList.contains("richeditarea")){
-        tinymce.get(frm[f].id).setContent("");
-      } else {
-        frm[f].innerHTML = "";
-      } 
-    }
-  }
-  }
-  return false;
-},
-fillformbydataclass2: function(dataclass,choices,data,onblur){
-  var frm = document.querySelectorAll('.data_'+ dataclass);
-  //console.log("Data to fill");
-  //console.log(data);
-  if (data){
-    for (var f in frm){
-      //console.log(frm[f].id);
-      if (frm[f].id){
-        frm[f].dataset.id=data['id'];
-      }
-      if (data[frm[f].id]){
-        //console.log("=>");
-        //console.log(data[frm[f].id]);
-        // if (onblur){
-        //   frm[f].addEventListener('blur',onblur);
-        // }
-        
-        //frm[f].dataset.id=data['id'];
-        if (frm[f].tagName == 'INPUT'){
-          if (frm[f].type == "checkbox"){
-            if (data[frm[f].id] == "1"){
-              frm[f].checked = true;
-            } else {
-              frm[f].checked = false;
-            }
-          } 
-          else if (frm[f].classList.contains("datefield")){ 
-            frm[f]._flatpickr.setDate(data[frm[f].id]);
-          } else if (frm[f].classList.contains("timefield")){
-            frm[f]._flatpickr.setDate(data[frm[f].id]);
-          }
-          else if (frm[f].classList.contains("choices__input")){ 
-            if ((data[frm[f].id] != null) && (data[frm[f].id] != '[""]')){
-              if (data[frm[f].id].startsWith('["')){
-                choices[frm[f].id].setValue(JSON.parse(data[frm[f].id]));
-              }
-              else {
-                choices[frm[f].id].setChoiceByValue(data[frm[f].id]);
-              } 
-            }
-          } else {
-            frm[f].value=data[frm[f].id];
-          }
-        }
-        if (frm[f].tagName == 'SELECT'){
-          if (frm[f].classList.contains("choices__input")){
-            if (frm[f].multiple == true){
-              choices[frm[f].id].setChoiceByValue(JSON.parse(data[frm[f].id]));
-            }else {
-              choices[frm[f].id].setChoiceByValue(data[frm[f].id]);
-            }
-          } else {
-            frm[f].value=data[frm[f].id];
-          }
-        }
-      } 
-    }
-  }
-},
-fillselectlist: function(obj,data,vidcol,vvalcol,defval){
-  var sellist = [];
-  //obj.clearStore();
-  if (data){
-    for (var i in data){
-      sellist.push({value:data[i][vidcol],text:data[i][vvalcol]});
-    }
-  }
-  
-  obj.setData(sellist);
-  if (defval){
-    obj.set(defval);
-  }
-  return false;
-},
-// fillsimpleselectlist: function(objid,data,vidcol,vvalcol){
-//   var sellist =  document.getElementById(objid);
-//   sellist.innerHTML = '';
-//   if (data){
-//     for (var i in data){
-//       sellist.append('<option value="'+ data[i][vidcol] +'">'+ data[i][vvalcol]+'</option>');
-//     }
-//   }
-//   //obj.setChoices(sellist, 'value', 'label', true);
-//   return false;
-// },
-savefield: function(obj){
-  fdata = obj.dataset;
-  fdata["save"] = "field";
-  
-  if (obj.tagName == 'INPUT' || obj.tagName == 'SELECT' || obj.tagName == 'TEXTAREA'){
-    if (obj.type == 'checkbox' || obj.type == 'radio'){
-      if (obj.checked == true){
-        fdata["value"] = obj.value;
-      } else {
-        fdata["value"] = null;
-      }
-    }else {
-      fdata["value"] = obj.value;
-    }
-  }
-  console.log(fdata);
-  //req.reqdata("POST","db.cgi",fdata,record.saveresult);
-}
-
-}
\ No newline at end of file
diff --git a/app/static/js/formsave.js b/app/static/js/formsave.js
deleted file mode 100644 (file)
index 648fc1f..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-function saveform(frmid,aftercallback){
-  var flds=getformcontent(frmid,null);
-  flds["fn"] ="saveform";
-  
-  //console.log(flds);
-  if (aftercallback){
-    req.reqdata("POST","index.cgi",flds,aftercallback);
-    formsaved({});
-  }
-  else {
-    req.reqdata("POST","index.cgi",flds,formsaved);
-  }
-  return false;
-}
-
-function formsaved(data){
-  var sb = document.getElementById("snackbar");
-  sb.className="show green";
-  sb.innerHTML = 'Donnéen goufen gespaichert!';
-  setTimeout(function(){ sb.className = sb.className.replace("show green", ""); }, 3000);
-  return false;
-}
-
-function showsnackbar(xclass,xmessage){
-  var sb = document.getElementById("snackbar");
-  sb.className="show " + xclass;
-  sb.innerHTML = xmessage;
-  setTimeout(function(){ sb.className = sb.className.replace(sb.className, ""); }, 3000);
-  return false;
-}
-
-function getformcontent(frmid,dataflds){
-  var frm = document.getElementById("frm_" + frmid);
-  var flds = [];
-  if (dataflds){
-    flds = dataflds;
-  } 
-  for (var i = 0; i < frm.elements.length; i++) {
-    var field = frm.elements[i];
-    //console.log("field:" + field.id + " Name:" + field.getAttribute("name"));
-    if (field.tagName == "INPUT" || field.tagName == "SELECT" || field.tagName == "TEXTAREA"){
-      if (field.classList.contains("tagedit")){
-        var fvalue=field.value.trim();
-        var ndata = null;
-        if (fvalue != ""){
-          ndata =  fvalue.split(",");  
-        }
-       
-        flds[field.getAttribute("name")] = ndata;
-      }else if (field.tagName == "TEXTAREA" ){
-        if (field.classList.contains("richeditarea")){
-          flds[field.getAttribute("name")] = tinymce.get(field.id).getContent();
-        } else {
-          flds[field.getAttribute("name")] = field.innerHTML;
-        }
-        
-      }else if (field.type == "checkbox" ){
-        if (field.checked){
-          flds[field.getAttribute("name")] = "1";
-        } else {
-          flds[field.getAttribute("name")] = "";
-        }
-        
-      }
-      else {
-        if (field.tagName == "SELECT" && field.multiple == true){
-          var opts = field.selectedOptions;
-          var vals = [];
-          for (var o in opts){
-            if (opts[o].value){
-              vals.push(opts[o].value);
-            }
-          }
-          if (vals.length > 0) {
-            flds[field.getAttribute("name")] = vals;
-          } else {
-            flds[field.getAttribute("name")] = "";
-          }
-          
-        } else {
-          flds[field.getAttribute("name")] = field.value;
-        }
-        
-      }
-      
-    }
-  }
-  return flds;
-}
\ No newline at end of file
diff --git a/app/static/js/module_global.js b/app/static/js/module_global.js
deleted file mode 100644 (file)
index 1a13d38..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-// document.addEventListener("DOMContentLoaded", function() {
-//   //console.log( "Iframe "+ location.pathname.substring(location.pathname.lastIndexOf("/")) +" ready!" );
-//   initpage();
-// });
-
-
-function table_setbounds(tblmodule){
-  // var cols =  $("#tbl_"+tblmodule+" > tbody > tr:first-child").children();
-  //   var colnum = cols.length -1;
-  //   console.log("childnum:" + colnum);
-  //   for (var i=1;i<=colnum;i++){
-  //     wx = $("#tbl_"+tblmodule+" > tbody > tr:first-child > td:nth-child("+ i +")").width();
-  //     // wx = wx +3;
-  //     $("#tbl_"+tblmodule+"_head > thead > tr > th:nth-child("+ i +")").width(wx);
-  //   }
-}
-
-function sectionload(sectionid,callback){
-  var sec = document.querySelectorAll('section');
-  for (var i in sec){
-    sec[i].style.display = 'none';
-  }
-  if (callback){
-    callback;
-  }
-  document.getElementById(sectionid).style.display = 'block';
-}
-
-
-function emptyform(id){
-  // $("#" + id + "> input,select,textarea").each(
-    // function(){
-      // console.log("Set Empty Value On" + $(this).id);
-    // }
-
-  // );
-}
\ No newline at end of file
diff --git a/app/static/js/record.js b/app/static/js/record.js
deleted file mode 100644 (file)
index 0831ee5..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-var record = {
-  redirectpage:null,
-  table:null,
-  form: null,
-  dialog: null,
-  data: null,
-  parentid: null,
-  add: function(page,tbl,datafields,idparent){
-    if (datafields){
-      record.data = {};
-      var adf = datafields.split(',');
-      for (var df in adf){
-        //console.log("dfid:" + adf[df]);
-        var cdf = document.getElementById(adf[df]);
-        record.data[cdf.dataset.column + "_" + cdf.dataset.table] = cdf.value;
-      }
-    }
-    if (idparent){
-      record.parentid = idparent;
-    }
-    record.redirectpage = page;
-    //form.cleanform(tbl);
-    var dd = {"ins":tbl};
-    if (record.data){
-      dd["data"]= record.data;
-    }
-    req.reqdata("POST","db.cgi",dd,record.afterrequest);
-  },
-  confirmremove: function(page,tbl,idparent){
-    if (table.selection){
-      record.redirectpage = page;
-      record.table = tbl;
-      record.parentid = idparent;
-      document.getElementById("dlgdeleterow").style.display = 'block';
-    }
-  },
-  remove: function(page){
-    req.reqdata("POST","db.cgi",{"del":record.table,"id":table.selection},record.afterrequest);
-    table.selection = null,
-    document.getElementById("dlgdeleterow").style.display = 'none';
-  },
-  edit: function(page,tbl,reffield){
-    console.log(page);
-    if (table.selection){
-    //record.redirectpage = page;
-    if (page.startsWith("dlg")){
-      record.dialog= page;
-      record.form = tbl;
-      form.cleanform(tbl);
-      req.reqdata("POST","db.cgi",{"get":tbl,"id":table.selection},record.loaddialog);
-
-    } else {
-      var refid = table.selection;
-      if (reffield){
-        refid = document.getElementById(reffield).value;
-      } 
-      app.getpage(page,{"id":refid});
-    }
-    }
-    
-  },
-  duplicate: function(page,tbl,excl,idparent){
-    if (table.selection){
-      record.redirectpage = page;
-      record.parentid=idparent;
-      req.reqdata("POST","db.cgi",{"dupl":tbl,id:table.selection,"exclude":excl},record.afterrequest);
-    }
-  },
-  loaddialog(data){
-    fillform(record.form,data,table.selection);
-    document.getElementById(record.dialog).style.display = 'block';
-  },
-  afterrequest: function(data){
-    console.log("redirect:" + record.redirectpage + "Parent:" + record.parentid);
-    // if (record.redirectpage.startsWith("dlg")){
-
-    // }else {
-      
-      if (record.parentid){
-        data["id"] = record.parentid;
-        //record.idparent = null;
-      }
-      console.log("redirectpage:" + record.redirectpage + " -- " + JSON.stringify(data));
-      app.getpage(record.redirectpage,data);
-    // }
-    
-  },
-  setValue: function(obj,newvalue){
-    if (obj.tagName == 'INPUT' || obj.tagName == 'SELECT'){
-      if (obj.type == 'checkbox' || obj.type == 'radio'){
-        obj.checked = true;
-      }else {
-        obj.value=newvalue;
-      }
-    }
-    if (obj.tagName == 'TEXTAREA'){
-      obj.innerHTML = newvalue;
-    }
-    record.savefield(obj);
-  },
-  savefield: function(obj,callback){
-    
-    fdata = obj.dataset;
-    fdata["save"] = "field";
-    fdata["schemata"] = schemata;
-    if (obj.tagName == 'INPUT' || obj.tagName == 'SELECT' || obj.tagName == 'TEXTAREA'){
-      if (obj.type == 'checkbox' || obj.type == 'radio'){
-        if (obj.checked == true){
-          fdata["value"] = obj.value;
-        } else {
-          fdata["value"] = null;
-        }
-      }else {
-        fdata["value"] = obj.value;
-      }
-    }
-    req.reqdata("POST","db.cgi",fdata,callback);
-  },
-  
-  save: function(tbl){
-
-    console.log(data);
-  }
-  
-}
\ No newline at end of file
diff --git a/app/static/js/request.js b/app/static/js/request.js
deleted file mode 100644 (file)
index 8564efd..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-var api = location.origin + location.pathname.substring(0,location.pathname.lastIndexOf('/backoffice/')) + "/backoffice/";
-// if (location.pathname.indexOf('module') > 0){
-//   api = location.origin + location.pathname.substring(0, location.pathname.indexOf('module')) + 'api/';
-// }
-console.log("API:" + api);
-var req = {
-    multipartform: function(url,frmdata,callback=null){
-    var ret = null;
-    var rdata = null;
-    var async = false;
-    if (callback){
-      async=true;
-    }
-    
-    var request = new XMLHttpRequest();
-    
-    //console.log(frmdata);
-    var sendurl = api + url;
-    //console.log("sending URL: " + "POST" + " => " +sendurl);
-    request.open("POST", sendurl, true);
-    request.onload = function(){
-      if (request.status >= 200 && request.status <= 400){
-        //console.log("Status returned: " + request.status + "resp:" + request.getResponseHeader("Content-Type"));
-        if (request.getResponseHeader("Content-Type").indexOf('application/json') == 0){
-          var xparse = JSON.parse(request.responseText);
-          ret = xparse.result;
-          //console.log(ret);
-        }
-        else {
-          ret = request.responseText;
-        }
-        if (async){
-          callback(ret);
-        }
-      } else {
-        alert("ServerERROR:" + request.status + "\n" + request.responseText);
-      }
-    };
-    request.onerror = function(){
-      alert("Connection ERROR!\n" + url);
-    };
-  
-      request.setRequestHeader('Content-Type','multipart/form-data; charset=UTF-8');
-      request.send(frmdata);
-    return ret;
-  },
-  reqdata: function(method,url,data,callback=null){
-    
-    var ret = null;
-    var rdata = null;
-    //var async = true;
-    // if (callback){
-    //   async=true;
-    // }
-    if (!callback){
-      callback=req.asyncNoEvent;
-    }
-    var request = new XMLHttpRequest();
-    
-    if (typeof data == 'object'){
-      var xdata = [];
-      for (var i in data){
-         var value = '';
-         if (data[i] == null){
-           value='';
-         } else if (typeof(data[i]) == 'object'){
-           value = encodeURIComponent(JSON.stringify(data[i]));
-         } else {
-           value = encodeURIComponent(data[i]);
-         }
-         xdata.push(i + "=" + value);
-      }
-      rdata = xdata.join("&");
-    }else {
-      rdata = data;
-    }
-    //console.log("Data to send: " + decodeURIComponent(rdata));
-    var sendurl = api + url;
-    // if (method.toUpperCase() == 'GET'){
-    //   sendurl = sendurl + '?' + rdata;
-    // }
-    console.log("sending URL: " + method + " => " +sendurl + '?' + rdata);
-    request.open(method.toUpperCase(), sendurl, true);
-    request.onload = function(){
-      if (request.status >= 200 && request.status <= 400){
-        // console.log("Status returned: " + request.status + "resp:" + request.getResponseHeader("Content-Type"));
-        if (request.getResponseHeader("Content-Type").indexOf('application/json') == 0){
-          if (request.responseText){
-            var xparse = JSON.parse(request.responseText);
-            ret = xparse.result;
-          } else {
-            ret = null;  
-          }
-          
-        }else {
-          ret = request.responseText;
-          //console.log(ret);
-        }
-        ////console.log("data returned: " + request.responseText);
-        //if (async){
-          callback(ret);
-        //}
-        
-      } else {
-        //console.log("ServerERROR: " + request.status + "\n" + request.responseText);
-        alert("ServerERROR:" + request.status + "\n" + request.responseText);
-      }
-    };
-    request.onerror = function(){
-      //console.log("ERROR: connection ERROR\n" + url);
-      alert("Connection ERROR!\n" + url);
-    };
-    // if (method.toUpperCase() == 'POST'){
-      request.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
-      request.send(rdata);
-    // } else {
-      //request.withCredentials = true;
-      // request.send();
-    // }
-    return ret;
-  },
-  asyncNoEvent: function(data){
-    //console.log("query done");
-    //console.log(data);
-    //console.log("done");
-  }
-  
-}
\ No newline at end of file
diff --git a/app/static/vendors/flatpickr/flatpickr.css b/app/static/vendors/flatpickr/flatpickr.css
deleted file mode 100644 (file)
index 64eb467..0000000
+++ /dev/null
@@ -1,784 +0,0 @@
-.flatpickr-calendar {
-  background: transparent;
-  opacity: 0;
-  display: none;
-  text-align: center;
-  visibility: hidden;
-  padding: 0;
-  -webkit-animation: none;
-          animation: none;
-  direction: ltr;
-  border: 0;
-  font-size: 14px;
-  line-height: 24px;
-  border-radius: 5px;
-  position: absolute;
-  width: 307.875px;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  -ms-touch-action: manipulation;
-      touch-action: manipulation;
-  background: #fff;
-  -webkit-box-shadow: 1px 0 0 #e6e6e6, -1px 0 0 #e6e6e6, 0 1px 0 #e6e6e6, 0 -1px 0 #e6e6e6, 0 3px 13px rgba(0,0,0,0.08);
-          box-shadow: 1px 0 0 #e6e6e6, -1px 0 0 #e6e6e6, 0 1px 0 #e6e6e6, 0 -1px 0 #e6e6e6, 0 3px 13px rgba(0,0,0,0.08);
-}
-.flatpickr-calendar.open,
-.flatpickr-calendar.inline {
-  opacity: 1;
-  max-height: 640px;
-  visibility: visible;
-}
-.flatpickr-calendar.open {
-  display: inline-block;
-  z-index: 99999;
-}
-.flatpickr-calendar.animate.open {
-  -webkit-animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);
-          animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);
-}
-.flatpickr-calendar.inline {
-  display: block;
-  position: relative;
-  top: 2px;
-}
-.flatpickr-calendar.static {
-  position: absolute;
-  top: calc(100% + 2px);
-}
-.flatpickr-calendar.static.open {
-  z-index: 999;
-  display: block;
-}
-.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7) {
-  -webkit-box-shadow: none !important;
-          box-shadow: none !important;
-}
-.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1) {
-  -webkit-box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
-          box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
-}
-.flatpickr-calendar .hasWeeks .dayContainer,
-.flatpickr-calendar .hasTime .dayContainer {
-  border-bottom: 0;
-  border-bottom-right-radius: 0;
-  border-bottom-left-radius: 0;
-}
-.flatpickr-calendar .hasWeeks .dayContainer {
-  border-left: 0;
-}
-.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time {
-  height: 40px;
-  border-top: 1px solid #e6e6e6;
-}
-.flatpickr-calendar.noCalendar.hasTime .flatpickr-time {
-  height: auto;
-}
-.flatpickr-calendar:before,
-.flatpickr-calendar:after {
-  position: absolute;
-  display: block;
-  pointer-events: none;
-  border: solid transparent;
-  content: '';
-  height: 0;
-  width: 0;
-  left: 22px;
-}
-.flatpickr-calendar.rightMost:before,
-.flatpickr-calendar.rightMost:after {
-  left: auto;
-  right: 22px;
-}
-.flatpickr-calendar:before {
-  border-width: 5px;
-  margin: 0 -5px;
-}
-.flatpickr-calendar:after {
-  border-width: 4px;
-  margin: 0 -4px;
-}
-.flatpickr-calendar.arrowTop:before,
-.flatpickr-calendar.arrowTop:after {
-  bottom: 100%;
-}
-.flatpickr-calendar.arrowTop:before {
-  border-bottom-color: #e6e6e6;
-}
-.flatpickr-calendar.arrowTop:after {
-  border-bottom-color: #fff;
-}
-.flatpickr-calendar.arrowBottom:before,
-.flatpickr-calendar.arrowBottom:after {
-  top: 100%;
-}
-.flatpickr-calendar.arrowBottom:before {
-  border-top-color: #e6e6e6;
-}
-.flatpickr-calendar.arrowBottom:after {
-  border-top-color: #fff;
-}
-.flatpickr-calendar:focus {
-  outline: 0;
-}
-.flatpickr-wrapper {
-  position: relative;
-  display: inline-block;
-}
-.flatpickr-months {
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-}
-.flatpickr-months .flatpickr-month {
-  background: transparent;
-  color: rgba(0,0,0,0.9);
-  fill: rgba(0,0,0,0.9);
-  height: 34px;
-  line-height: 1;
-  text-align: center;
-  position: relative;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  overflow: hidden;
-  -webkit-box-flex: 1;
-  -webkit-flex: 1;
-      -ms-flex: 1;
-          flex: 1;
-}
-.flatpickr-months .flatpickr-prev-month,
-.flatpickr-months .flatpickr-next-month {
-  text-decoration: none;
-  cursor: pointer;
-  position: absolute;
-  top: 0;
-  height: 34px;
-  padding: 10px;
-  z-index: 3;
-  color: rgba(0,0,0,0.9);
-  fill: rgba(0,0,0,0.9);
-}
-.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,
-.flatpickr-months .flatpickr-next-month.flatpickr-disabled {
-  display: none;
-}
-.flatpickr-months .flatpickr-prev-month i,
-.flatpickr-months .flatpickr-next-month i {
-  position: relative;
-}
-.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,
-.flatpickr-months .flatpickr-next-month.flatpickr-prev-month {
-/*
-      /*rtl:begin:ignore*/
-/*
-      */
-  left: 0;
-/*
-      /*rtl:end:ignore*/
-/*
-      */
-}
-/*
-      /*rtl:begin:ignore*/
-/*
-      /*rtl:end:ignore*/
-.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,
-.flatpickr-months .flatpickr-next-month.flatpickr-next-month {
-/*
-      /*rtl:begin:ignore*/
-/*
-      */
-  right: 0;
-/*
-      /*rtl:end:ignore*/
-/*
-      */
-}
-/*
-      /*rtl:begin:ignore*/
-/*
-      /*rtl:end:ignore*/
-.flatpickr-months .flatpickr-prev-month:hover,
-.flatpickr-months .flatpickr-next-month:hover {
-  color: #959ea9;
-}
-.flatpickr-months .flatpickr-prev-month:hover svg,
-.flatpickr-months .flatpickr-next-month:hover svg {
-  fill: #f64747;
-}
-.flatpickr-months .flatpickr-prev-month svg,
-.flatpickr-months .flatpickr-next-month svg {
-  width: 14px;
-  height: 14px;
-}
-.flatpickr-months .flatpickr-prev-month svg path,
-.flatpickr-months .flatpickr-next-month svg path {
-  -webkit-transition: fill 0.1s;
-  transition: fill 0.1s;
-  fill: inherit;
-}
-.numInputWrapper {
-  position: relative;
-  height: auto;
-}
-.numInputWrapper input,
-.numInputWrapper span {
-  display: inline-block;
-}
-.numInputWrapper input {
-  width: 100%;
-}
-.numInputWrapper input::-ms-clear {
-  display: none;
-}
-.numInputWrapper input::-webkit-outer-spin-button,
-.numInputWrapper input::-webkit-inner-spin-button {
-  margin: 0;
-  -webkit-appearance: none;
-}
-.numInputWrapper span {
-  position: absolute;
-  right: 0;
-  width: 14px;
-  padding: 0 4px 0 2px;
-  height: 50%;
-  line-height: 50%;
-  opacity: 0;
-  cursor: pointer;
-  border: 1px solid rgba(57,57,57,0.15);
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-}
-.numInputWrapper span:hover {
-  background: rgba(0,0,0,0.1);
-}
-.numInputWrapper span:active {
-  background: rgba(0,0,0,0.2);
-}
-.numInputWrapper span:after {
-  display: block;
-  content: "";
-  position: absolute;
-}
-.numInputWrapper span.arrowUp {
-  top: 0;
-  border-bottom: 0;
-}
-.numInputWrapper span.arrowUp:after {
-  border-left: 4px solid transparent;
-  border-right: 4px solid transparent;
-  border-bottom: 4px solid rgba(57,57,57,0.6);
-  top: 26%;
-}
-.numInputWrapper span.arrowDown {
-  top: 50%;
-}
-.numInputWrapper span.arrowDown:after {
-  border-left: 4px solid transparent;
-  border-right: 4px solid transparent;
-  border-top: 4px solid rgba(57,57,57,0.6);
-  top: 40%;
-}
-.numInputWrapper span svg {
-  width: inherit;
-  height: auto;
-}
-.numInputWrapper span svg path {
-  fill: rgba(0,0,0,0.5);
-}
-.numInputWrapper:hover {
-  background: rgba(0,0,0,0.05);
-}
-.numInputWrapper:hover span {
-  opacity: 1;
-}
-.flatpickr-current-month {
-  font-size: 135%;
-  line-height: inherit;
-  font-weight: 300;
-  color: inherit;
-  position: absolute;
-  width: 75%;
-  left: 12.5%;
-  padding: 7.48px 0 0 0;
-  line-height: 1;
-  height: 34px;
-  display: inline-block;
-  text-align: center;
-  -webkit-transform: translate3d(0px, 0px, 0px);
-          transform: translate3d(0px, 0px, 0px);
-}
-.flatpickr-current-month span.cur-month {
-  font-family: inherit;
-  font-weight: 700;
-  color: inherit;
-  display: inline-block;
-  margin-left: 0.5ch;
-  padding: 0;
-}
-.flatpickr-current-month span.cur-month:hover {
-  background: rgba(0,0,0,0.05);
-}
-.flatpickr-current-month .numInputWrapper {
-  width: 6ch;
-  width: 7ch\0;
-  display: inline-block;
-}
-.flatpickr-current-month .numInputWrapper span.arrowUp:after {
-  border-bottom-color: rgba(0,0,0,0.9);
-}
-.flatpickr-current-month .numInputWrapper span.arrowDown:after {
-  border-top-color: rgba(0,0,0,0.9);
-}
-.flatpickr-current-month input.cur-year {
-  background: transparent;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  color: inherit;
-  cursor: text;
-  padding: 0 0 0 0.5ch;
-  margin: 0;
-  display: inline-block;
-  font-size: inherit;
-  font-family: inherit;
-  font-weight: 300;
-  line-height: inherit;
-  height: auto;
-  border: 0;
-  border-radius: 0;
-  vertical-align: initial;
-  -webkit-appearance: textfield;
-  -moz-appearance: textfield;
-  appearance: textfield;
-}
-.flatpickr-current-month input.cur-year:focus {
-  outline: 0;
-}
-.flatpickr-current-month input.cur-year[disabled],
-.flatpickr-current-month input.cur-year[disabled]:hover {
-  font-size: 100%;
-  color: rgba(0,0,0,0.5);
-  background: transparent;
-  pointer-events: none;
-}
-.flatpickr-current-month .flatpickr-monthDropdown-months {
-  appearance: menulist;
-  background: transparent;
-  border: none;
-  border-radius: 0;
-  box-sizing: border-box;
-  color: inherit;
-  cursor: pointer;
-  font-size: inherit;
-  font-family: inherit;
-  font-weight: 300;
-  height: auto;
-  line-height: inherit;
-  margin: -1px 0 0 0;
-  outline: none;
-  padding: 0 0 0 0.5ch;
-  position: relative;
-  vertical-align: initial;
-  -webkit-box-sizing: border-box;
-  -webkit-appearance: menulist;
-  -moz-appearance: menulist;
-  width: auto;
-}
-.flatpickr-current-month .flatpickr-monthDropdown-months:focus,
-.flatpickr-current-month .flatpickr-monthDropdown-months:active {
-  outline: none;
-}
-.flatpickr-current-month .flatpickr-monthDropdown-months:hover {
-  background: rgba(0,0,0,0.05);
-}
-.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month {
-  background-color: transparent;
-  outline: none;
-  padding: 0;
-}
-.flatpickr-weekdays {
-  background: transparent;
-  text-align: center;
-  overflow: hidden;
-  width: 100%;
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-  -webkit-box-align: center;
-  -webkit-align-items: center;
-      -ms-flex-align: center;
-          align-items: center;
-  height: 28px;
-}
-.flatpickr-weekdays .flatpickr-weekdaycontainer {
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-  -webkit-box-flex: 1;
-  -webkit-flex: 1;
-      -ms-flex: 1;
-          flex: 1;
-}
-span.flatpickr-weekday {
-  cursor: default;
-  font-size: 90%;
-  background: transparent;
-  color: rgba(0,0,0,0.54);
-  line-height: 1;
-  margin: 0;
-  text-align: center;
-  display: block;
-  -webkit-box-flex: 1;
-  -webkit-flex: 1;
-      -ms-flex: 1;
-          flex: 1;
-  font-weight: bolder;
-}
-.dayContainer,
-.flatpickr-weeks {
-  padding: 1px 0 0 0;
-}
-.flatpickr-days {
-  position: relative;
-  overflow: hidden;
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-  -webkit-box-align: start;
-  -webkit-align-items: flex-start;
-      -ms-flex-align: start;
-          align-items: flex-start;
-  width: 307.875px;
-}
-.flatpickr-days:focus {
-  outline: 0;
-}
-.dayContainer {
-  padding: 0;
-  outline: 0;
-  text-align: left;
-  width: 307.875px;
-  min-width: 307.875px;
-  max-width: 307.875px;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  display: inline-block;
-  display: -ms-flexbox;
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: flex;
-  -webkit-flex-wrap: wrap;
-          flex-wrap: wrap;
-  -ms-flex-wrap: wrap;
-  -ms-flex-pack: justify;
-  -webkit-justify-content: space-around;
-          justify-content: space-around;
-  -webkit-transform: translate3d(0px, 0px, 0px);
-          transform: translate3d(0px, 0px, 0px);
-  opacity: 1;
-}
-.dayContainer + .dayContainer {
-  -webkit-box-shadow: -1px 0 0 #e6e6e6;
-          box-shadow: -1px 0 0 #e6e6e6;
-}
-.flatpickr-day {
-  background: none;
-  border: 1px solid transparent;
-  border-radius: 150px;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  color: #393939;
-  cursor: pointer;
-  font-weight: 400;
-  width: 14.2857143%;
-  -webkit-flex-basis: 14.2857143%;
-      -ms-flex-preferred-size: 14.2857143%;
-          flex-basis: 14.2857143%;
-  max-width: 39px;
-  height: 39px;
-  line-height: 39px;
-  margin: 0;
-  display: inline-block;
-  position: relative;
-  -webkit-box-pack: center;
-  -webkit-justify-content: center;
-      -ms-flex-pack: center;
-          justify-content: center;
-  text-align: center;
-}
-.flatpickr-day.inRange,
-.flatpickr-day.prevMonthDay.inRange,
-.flatpickr-day.nextMonthDay.inRange,
-.flatpickr-day.today.inRange,
-.flatpickr-day.prevMonthDay.today.inRange,
-.flatpickr-day.nextMonthDay.today.inRange,
-.flatpickr-day:hover,
-.flatpickr-day.prevMonthDay:hover,
-.flatpickr-day.nextMonthDay:hover,
-.flatpickr-day:focus,
-.flatpickr-day.prevMonthDay:focus,
-.flatpickr-day.nextMonthDay:focus {
-  cursor: pointer;
-  outline: 0;
-  background: #e6e6e6;
-  border-color: #e6e6e6;
-}
-.flatpickr-day.today {
-  border-color: #959ea9;
-}
-.flatpickr-day.today:hover,
-.flatpickr-day.today:focus {
-  border-color: #959ea9;
-  background: #959ea9;
-  color: #fff;
-}
-.flatpickr-day.selected,
-.flatpickr-day.startRange,
-.flatpickr-day.endRange,
-.flatpickr-day.selected.inRange,
-.flatpickr-day.startRange.inRange,
-.flatpickr-day.endRange.inRange,
-.flatpickr-day.selected:focus,
-.flatpickr-day.startRange:focus,
-.flatpickr-day.endRange:focus,
-.flatpickr-day.selected:hover,
-.flatpickr-day.startRange:hover,
-.flatpickr-day.endRange:hover,
-.flatpickr-day.selected.prevMonthDay,
-.flatpickr-day.startRange.prevMonthDay,
-.flatpickr-day.endRange.prevMonthDay,
-.flatpickr-day.selected.nextMonthDay,
-.flatpickr-day.startRange.nextMonthDay,
-.flatpickr-day.endRange.nextMonthDay {
-  background: #569ff7;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  color: #fff;
-  border-color: #569ff7;
-}
-.flatpickr-day.selected.startRange,
-.flatpickr-day.startRange.startRange,
-.flatpickr-day.endRange.startRange {
-  border-radius: 50px 0 0 50px;
-}
-.flatpickr-day.selected.endRange,
-.flatpickr-day.startRange.endRange,
-.flatpickr-day.endRange.endRange {
-  border-radius: 0 50px 50px 0;
-}
-.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),
-.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),
-.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)) {
-  -webkit-box-shadow: -10px 0 0 #569ff7;
-          box-shadow: -10px 0 0 #569ff7;
-}
-.flatpickr-day.selected.startRange.endRange,
-.flatpickr-day.startRange.startRange.endRange,
-.flatpickr-day.endRange.startRange.endRange {
-  border-radius: 50px;
-}
-.flatpickr-day.inRange {
-  border-radius: 0;
-  -webkit-box-shadow: -5px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
-          box-shadow: -5px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
-}
-.flatpickr-day.flatpickr-disabled,
-.flatpickr-day.flatpickr-disabled:hover,
-.flatpickr-day.prevMonthDay,
-.flatpickr-day.nextMonthDay,
-.flatpickr-day.notAllowed,
-.flatpickr-day.notAllowed.prevMonthDay,
-.flatpickr-day.notAllowed.nextMonthDay {
-  color: rgba(57,57,57,0.3);
-  background: transparent;
-  border-color: transparent;
-  cursor: default;
-}
-.flatpickr-day.flatpickr-disabled,
-.flatpickr-day.flatpickr-disabled:hover {
-  cursor: not-allowed;
-  color: rgba(57,57,57,0.1);
-}
-.flatpickr-day.week.selected {
-  border-radius: 0;
-  -webkit-box-shadow: -5px 0 0 #569ff7, 5px 0 0 #569ff7;
-          box-shadow: -5px 0 0 #569ff7, 5px 0 0 #569ff7;
-}
-.flatpickr-day.hidden {
-  visibility: hidden;
-}
-.rangeMode .flatpickr-day {
-  margin-top: 1px;
-}
-.flatpickr-weekwrapper {
-  float: left;
-}
-.flatpickr-weekwrapper .flatpickr-weeks {
-  padding: 0 12px;
-  -webkit-box-shadow: 1px 0 0 #e6e6e6;
-          box-shadow: 1px 0 0 #e6e6e6;
-}
-.flatpickr-weekwrapper .flatpickr-weekday {
-  float: none;
-  width: 100%;
-  line-height: 28px;
-}
-.flatpickr-weekwrapper span.flatpickr-day,
-.flatpickr-weekwrapper span.flatpickr-day:hover {
-  display: block;
-  width: 100%;
-  max-width: none;
-  color: rgba(57,57,57,0.3);
-  background: transparent;
-  cursor: default;
-  border: none;
-}
-.flatpickr-innerContainer {
-  display: block;
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  overflow: hidden;
-}
-.flatpickr-rContainer {
-  display: inline-block;
-  padding: 0;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-}
-.flatpickr-time {
-  text-align: center;
-  outline: 0;
-  display: block;
-  height: 0;
-  line-height: 40px;
-  max-height: 40px;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  overflow: hidden;
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-}
-.flatpickr-time:after {
-  content: "";
-  display: table;
-  clear: both;
-}
-.flatpickr-time .numInputWrapper {
-  -webkit-box-flex: 1;
-  -webkit-flex: 1;
-      -ms-flex: 1;
-          flex: 1;
-  width: 40%;
-  height: 40px;
-  float: left;
-}
-.flatpickr-time .numInputWrapper span.arrowUp:after {
-  border-bottom-color: #393939;
-}
-.flatpickr-time .numInputWrapper span.arrowDown:after {
-  border-top-color: #393939;
-}
-.flatpickr-time.hasSeconds .numInputWrapper {
-  width: 26%;
-}
-.flatpickr-time.time24hr .numInputWrapper {
-  width: 49%;
-}
-.flatpickr-time input {
-  background: transparent;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  border: 0;
-  border-radius: 0;
-  text-align: center;
-  margin: 0;
-  padding: 0;
-  height: inherit;
-  line-height: inherit;
-  color: #393939;
-  font-size: 14px;
-  position: relative;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  -webkit-appearance: textfield;
-  -moz-appearance: textfield;
-  appearance: textfield;
-}
-.flatpickr-time input.flatpickr-hour {
-  font-weight: bold;
-}
-.flatpickr-time input.flatpickr-minute,
-.flatpickr-time input.flatpickr-second {
-  font-weight: 400;
-}
-.flatpickr-time input:focus {
-  outline: 0;
-  border: 0;
-}
-.flatpickr-time .flatpickr-time-separator,
-.flatpickr-time .flatpickr-am-pm {
-  height: inherit;
-  float: left;
-  line-height: inherit;
-  color: #393939;
-  font-weight: bold;
-  width: 2%;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  -webkit-align-self: center;
-      -ms-flex-item-align: center;
-          align-self: center;
-}
-.flatpickr-time .flatpickr-am-pm {
-  outline: 0;
-  width: 18%;
-  cursor: pointer;
-  text-align: center;
-  font-weight: 400;
-}
-.flatpickr-time input:hover,
-.flatpickr-time .flatpickr-am-pm:hover,
-.flatpickr-time input:focus,
-.flatpickr-time .flatpickr-am-pm:focus {
-  background: #eee;
-}
-.flatpickr-input[readonly] {
-  cursor: pointer;
-}
-@-webkit-keyframes fpFadeInDown {
-  from {
-    opacity: 0;
-    -webkit-transform: translate3d(0, -20px, 0);
-            transform: translate3d(0, -20px, 0);
-  }
-  to {
-    opacity: 1;
-    -webkit-transform: translate3d(0, 0, 0);
-            transform: translate3d(0, 0, 0);
-  }
-}
-@keyframes fpFadeInDown {
-  from {
-    opacity: 0;
-    -webkit-transform: translate3d(0, -20px, 0);
-            transform: translate3d(0, -20px, 0);
-  }
-  to {
-    opacity: 1;
-    -webkit-transform: translate3d(0, 0, 0);
-            transform: translate3d(0, 0, 0);
-  }
-}
diff --git a/app/static/vendors/flatpickr/flatpickr.js b/app/static/vendors/flatpickr/flatpickr.js
deleted file mode 100644 (file)
index c989306..0000000
+++ /dev/null
@@ -1,2596 +0,0 @@
-/* flatpickr v4.6.2, @license MIT */
-(function (global, factory) {
-    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
-    typeof define === 'function' && define.amd ? define(factory) :
-    (global = global || self, global.flatpickr = factory());
-}(this, function () { 'use strict';
-
-    /*! *****************************************************************************
-    Copyright (c) Microsoft Corporation. All rights reserved.
-    Licensed under the Apache License, Version 2.0 (the "License"); you may not use
-    this file except in compliance with the License. You may obtain a copy of the
-    License at http://www.apache.org/licenses/LICENSE-2.0
-
-    THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-    KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
-    WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
-    MERCHANTABLITY OR NON-INFRINGEMENT.
-
-    See the Apache Version 2.0 License for specific language governing permissions
-    and limitations under the License.
-    ***************************************************************************** */
-
-    var __assign = function() {
-        __assign = Object.assign || function __assign(t) {
-            for (var s, i = 1, n = arguments.length; i < n; i++) {
-                s = arguments[i];
-                for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
-            }
-            return t;
-        };
-        return __assign.apply(this, arguments);
-    };
-
-    var HOOKS = [
-        "onChange",
-        "onClose",
-        "onDayCreate",
-        "onDestroy",
-        "onKeyDown",
-        "onMonthChange",
-        "onOpen",
-        "onParseConfig",
-        "onReady",
-        "onValueUpdate",
-        "onYearChange",
-        "onPreCalendarPosition",
-    ];
-    var defaults = {
-        _disable: [],
-        _enable: [],
-        allowInput: false,
-        altFormat: "F j, Y",
-        altInput: false,
-        altInputClass: "form-control input",
-        animate: typeof window === "object" &&
-            window.navigator.userAgent.indexOf("MSIE") === -1,
-        ariaDateFormat: "F j, Y",
-        clickOpens: true,
-        closeOnSelect: true,
-        conjunction: ", ",
-        dateFormat: "Y-m-d",
-        defaultHour: 12,
-        defaultMinute: 0,
-        defaultSeconds: 0,
-        disable: [],
-        disableMobile: false,
-        enable: [],
-        enableSeconds: false,
-        enableTime: false,
-        errorHandler: function (err) {
-            return typeof console !== "undefined" && console.warn(err);
-        },
-        getWeek: function (givenDate) {
-            var date = new Date(givenDate.getTime());
-            date.setHours(0, 0, 0, 0);
-            // Thursday in current week decides the year.
-            date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));
-            // January 4 is always in week 1.
-            var week1 = new Date(date.getFullYear(), 0, 4);
-            // Adjust to Thursday in week 1 and count number of weeks from date to week1.
-            return (1 +
-                Math.round(((date.getTime() - week1.getTime()) / 86400000 -
-                    3 +
-                    ((week1.getDay() + 6) % 7)) /
-                    7));
-        },
-        hourIncrement: 1,
-        ignoredFocusElements: [],
-        inline: false,
-        locale: "default",
-        minuteIncrement: 5,
-        mode: "single",
-        monthSelectorType: "dropdown",
-        nextArrow: "<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M13.207 8.472l-7.854 7.854-0.707-0.707 7.146-7.146-7.146-7.148 0.707-0.707 7.854 7.854z' /></svg>",
-        noCalendar: false,
-        now: new Date(),
-        onChange: [],
-        onClose: [],
-        onDayCreate: [],
-        onDestroy: [],
-        onKeyDown: [],
-        onMonthChange: [],
-        onOpen: [],
-        onParseConfig: [],
-        onReady: [],
-        onValueUpdate: [],
-        onYearChange: [],
-        onPreCalendarPosition: [],
-        plugins: [],
-        position: "auto",
-        positionElement: undefined,
-        prevArrow: "<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M5.207 8.471l7.146 7.147-0.707 0.707-7.853-7.854 7.854-7.853 0.707 0.707-7.147 7.146z' /></svg>",
-        shorthandCurrentMonth: false,
-        showMonths: 1,
-        static: false,
-        time_24hr: false,
-        weekNumbers: false,
-        wrap: false
-    };
-
-    var english = {
-        weekdays: {
-            shorthand: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
-            longhand: [
-                "Sunday",
-                "Monday",
-                "Tuesday",
-                "Wednesday",
-                "Thursday",
-                "Friday",
-                "Saturday",
-            ]
-        },
-        months: {
-            shorthand: [
-                "Jan",
-                "Feb",
-                "Mar",
-                "Apr",
-                "May",
-                "Jun",
-                "Jul",
-                "Aug",
-                "Sep",
-                "Oct",
-                "Nov",
-                "Dec",
-            ],
-            longhand: [
-                "January",
-                "February",
-                "March",
-                "April",
-                "May",
-                "June",
-                "July",
-                "August",
-                "September",
-                "October",
-                "November",
-                "December",
-            ]
-        },
-        daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
-        firstDayOfWeek: 0,
-        ordinal: function (nth) {
-            var s = nth % 100;
-            if (s > 3 && s < 21)
-                return "th";
-            switch (s % 10) {
-                case 1:
-                    return "st";
-                case 2:
-                    return "nd";
-                case 3:
-                    return "rd";
-                default:
-                    return "th";
-            }
-        },
-        rangeSeparator: " to ",
-        weekAbbreviation: "Wk",
-        scrollTitle: "Scroll to increment",
-        toggleTitle: "Click to toggle",
-        amPM: ["AM", "PM"],
-        yearAriaLabel: "Year",
-        hourAriaLabel: "Hour",
-        minuteAriaLabel: "Minute",
-        time_24hr: false
-    };
-
-    var pad = function (number) { return ("0" + number).slice(-2); };
-    var int = function (bool) { return (bool === true ? 1 : 0); };
-    /* istanbul ignore next */
-    function debounce(func, wait, immediate) {
-        if (immediate === void 0) { immediate = false; }
-        var timeout;
-        return function () {
-            var context = this, args = arguments;
-            timeout !== null && clearTimeout(timeout);
-            timeout = window.setTimeout(function () {
-                timeout = null;
-                if (!immediate)
-                    func.apply(context, args);
-            }, wait);
-            if (immediate && !timeout)
-                func.apply(context, args);
-        };
-    }
-    var arrayify = function (obj) {
-        return obj instanceof Array ? obj : [obj];
-    };
-
-    function toggleClass(elem, className, bool) {
-        if (bool === true)
-            return elem.classList.add(className);
-        elem.classList.remove(className);
-    }
-    function createElement(tag, className, content) {
-        var e = window.document.createElement(tag);
-        className = className || "";
-        content = content || "";
-        e.className = className;
-        if (content !== undefined)
-            e.textContent = content;
-        return e;
-    }
-    function clearNode(node) {
-        while (node.firstChild)
-            node.removeChild(node.firstChild);
-    }
-    function findParent(node, condition) {
-        if (condition(node))
-            return node;
-        else if (node.parentNode)
-            return findParent(node.parentNode, condition);
-        return undefined; // nothing found
-    }
-    function createNumberInput(inputClassName, opts) {
-        var wrapper = createElement("div", "numInputWrapper"), numInput = createElement("input", "numInput " + inputClassName), arrowUp = createElement("span", "arrowUp"), arrowDown = createElement("span", "arrowDown");
-        if (navigator.userAgent.indexOf("MSIE 9.0") === -1) {
-            numInput.type = "number";
-        }
-        else {
-            numInput.type = "text";
-            numInput.pattern = "\\d*";
-        }
-        if (opts !== undefined)
-            for (var key in opts)
-                numInput.setAttribute(key, opts[key]);
-        wrapper.appendChild(numInput);
-        wrapper.appendChild(arrowUp);
-        wrapper.appendChild(arrowDown);
-        return wrapper;
-    }
-    function getEventTarget(event) {
-        if (typeof event.composedPath === "function") {
-            var path = event.composedPath();
-            return path[0];
-        }
-        return event.target;
-    }
-
-    var doNothing = function () { return undefined; };
-    var monthToStr = function (monthNumber, shorthand, locale) { return locale.months[shorthand ? "shorthand" : "longhand"][monthNumber]; };
-    var revFormat = {
-        D: doNothing,
-        F: function (dateObj, monthName, locale) {
-            dateObj.setMonth(locale.months.longhand.indexOf(monthName));
-        },
-        G: function (dateObj, hour) {
-            dateObj.setHours(parseFloat(hour));
-        },
-        H: function (dateObj, hour) {
-            dateObj.setHours(parseFloat(hour));
-        },
-        J: function (dateObj, day) {
-            dateObj.setDate(parseFloat(day));
-        },
-        K: function (dateObj, amPM, locale) {
-            dateObj.setHours((dateObj.getHours() % 12) +
-                12 * int(new RegExp(locale.amPM[1], "i").test(amPM)));
-        },
-        M: function (dateObj, shortMonth, locale) {
-            dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));
-        },
-        S: function (dateObj, seconds) {
-            dateObj.setSeconds(parseFloat(seconds));
-        },
-        U: function (_, unixSeconds) { return new Date(parseFloat(unixSeconds) * 1000); },
-        W: function (dateObj, weekNum, locale) {
-            var weekNumber = parseInt(weekNum);
-            var date = new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);
-            date.setDate(date.getDate() - date.getDay() + locale.firstDayOfWeek);
-            return date;
-        },
-        Y: function (dateObj, year) {
-            dateObj.setFullYear(parseFloat(year));
-        },
-        Z: function (_, ISODate) { return new Date(ISODate); },
-        d: function (dateObj, day) {
-            dateObj.setDate(parseFloat(day));
-        },
-        h: function (dateObj, hour) {
-            dateObj.setHours(parseFloat(hour));
-        },
-        i: function (dateObj, minutes) {
-            dateObj.setMinutes(parseFloat(minutes));
-        },
-        j: function (dateObj, day) {
-            dateObj.setDate(parseFloat(day));
-        },
-        l: doNothing,
-        m: function (dateObj, month) {
-            dateObj.setMonth(parseFloat(month) - 1);
-        },
-        n: function (dateObj, month) {
-            dateObj.setMonth(parseFloat(month) - 1);
-        },
-        s: function (dateObj, seconds) {
-            dateObj.setSeconds(parseFloat(seconds));
-        },
-        u: function (_, unixMillSeconds) {
-            return new Date(parseFloat(unixMillSeconds));
-        },
-        w: doNothing,
-        y: function (dateObj, year) {
-            dateObj.setFullYear(2000 + parseFloat(year));
-        }
-    };
-    var tokenRegex = {
-        D: "(\\w+)",
-        F: "(\\w+)",
-        G: "(\\d\\d|\\d)",
-        H: "(\\d\\d|\\d)",
-        J: "(\\d\\d|\\d)\\w+",
-        K: "",
-        M: "(\\w+)",
-        S: "(\\d\\d|\\d)",
-        U: "(.+)",
-        W: "(\\d\\d|\\d)",
-        Y: "(\\d{4})",
-        Z: "(.+)",
-        d: "(\\d\\d|\\d)",
-        h: "(\\d\\d|\\d)",
-        i: "(\\d\\d|\\d)",
-        j: "(\\d\\d|\\d)",
-        l: "(\\w+)",
-        m: "(\\d\\d|\\d)",
-        n: "(\\d\\d|\\d)",
-        s: "(\\d\\d|\\d)",
-        u: "(.+)",
-        w: "(\\d\\d|\\d)",
-        y: "(\\d{2})"
-    };
-    var formats = {
-        // get the date in UTC
-        Z: function (date) { return date.toISOString(); },
-        // weekday name, short, e.g. Thu
-        D: function (date, locale, options) {
-            return locale.weekdays.shorthand[formats.w(date, locale, options)];
-        },
-        // full month name e.g. January
-        F: function (date, locale, options) {
-            return monthToStr(formats.n(date, locale, options) - 1, false, locale);
-        },
-        // padded hour 1-12
-        G: function (date, locale, options) {
-            return pad(formats.h(date, locale, options));
-        },
-        // hours with leading zero e.g. 03
-        H: function (date) { return pad(date.getHours()); },
-        // day (1-30) with ordinal suffix e.g. 1st, 2nd
-        J: function (date, locale) {
-            return locale.ordinal !== undefined
-                ? date.getDate() + locale.ordinal(date.getDate())
-                : date.getDate();
-        },
-        // AM/PM
-        K: function (date, locale) { return locale.amPM[int(date.getHours() > 11)]; },
-        // shorthand month e.g. Jan, Sep, Oct, etc
-        M: function (date, locale) {
-            return monthToStr(date.getMonth(), true, locale);
-        },
-        // seconds 00-59
-        S: function (date) { return pad(date.getSeconds()); },
-        // unix timestamp
-        U: function (date) { return date.getTime() / 1000; },
-        W: function (date, _, options) {
-            return options.getWeek(date);
-        },
-        // full year e.g. 2016
-        Y: function (date) { return date.getFullYear(); },
-        // day in month, padded (01-30)
-        d: function (date) { return pad(date.getDate()); },
-        // hour from 1-12 (am/pm)
-        h: function (date) { return (date.getHours() % 12 ? date.getHours() % 12 : 12); },
-        // minutes, padded with leading zero e.g. 09
-        i: function (date) { return pad(date.getMinutes()); },
-        // day in month (1-30)
-        j: function (date) { return date.getDate(); },
-        // weekday name, full, e.g. Thursday
-        l: function (date, locale) {
-            return locale.weekdays.longhand[date.getDay()];
-        },
-        // padded month number (01-12)
-        m: function (date) { return pad(date.getMonth() + 1); },
-        // the month number (1-12)
-        n: function (date) { return date.getMonth() + 1; },
-        // seconds 0-59
-        s: function (date) { return date.getSeconds(); },
-        // Unix Milliseconds
-        u: function (date) { return date.getTime(); },
-        // number of the day of the week
-        w: function (date) { return date.getDay(); },
-        // last two digits of year e.g. 16 for 2016
-        y: function (date) { return String(date.getFullYear()).substring(2); }
-    };
-
-    var createDateFormatter = function (_a) {
-        var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;
-        return function (dateObj, frmt, overrideLocale) {
-            var locale = overrideLocale || l10n;
-            if (config.formatDate !== undefined) {
-                return config.formatDate(dateObj, frmt, locale);
-            }
-            return frmt
-                .split("")
-                .map(function (c, i, arr) {
-                return formats[c] && arr[i - 1] !== "\\"
-                    ? formats[c](dateObj, locale, config)
-                    : c !== "\\"
-                        ? c
-                        : "";
-            })
-                .join("");
-        };
-    };
-    var createDateParser = function (_a) {
-        var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;
-        return function (date, givenFormat, timeless, customLocale) {
-            if (date !== 0 && !date)
-                return undefined;
-            var locale = customLocale || l10n;
-            var parsedDate;
-            var dateOrig = date;
-            if (date instanceof Date)
-                parsedDate = new Date(date.getTime());
-            else if (typeof date !== "string" &&
-                date.toFixed !== undefined // timestamp
-            )
-                // create a copy
-                parsedDate = new Date(date);
-            else if (typeof date === "string") {
-                // date string
-                var format = givenFormat || (config || defaults).dateFormat;
-                var datestr = String(date).trim();
-                if (datestr === "today") {
-                    parsedDate = new Date();
-                    timeless = true;
-                }
-                else if (/Z$/.test(datestr) ||
-                    /GMT$/.test(datestr) // datestrings w/ timezone
-                )
-                    parsedDate = new Date(date);
-                else if (config && config.parseDate)
-                    parsedDate = config.parseDate(date, format);
-                else {
-                    parsedDate =
-                        !config || !config.noCalendar
-                            ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0)
-                            : new Date(new Date().setHours(0, 0, 0, 0));
-                    var matched = void 0, ops = [];
-                    for (var i = 0, matchIndex = 0, regexStr = ""; i < format.length; i++) {
-                        var token_1 = format[i];
-                        var isBackSlash = token_1 === "\\";
-                        var escaped = format[i - 1] === "\\" || isBackSlash;
-                        if (tokenRegex[token_1] && !escaped) {
-                            regexStr += tokenRegex[token_1];
-                            var match = new RegExp(regexStr).exec(date);
-                            if (match && (matched = true)) {
-                                ops[token_1 !== "Y" ? "push" : "unshift"]({
-                                    fn: revFormat[token_1],
-                                    val: match[++matchIndex]
-                                });
-                            }
-                        }
-                        else if (!isBackSlash)
-                            regexStr += "."; // don't really care
-                        ops.forEach(function (_a) {
-                            var fn = _a.fn, val = _a.val;
-                            return (parsedDate = fn(parsedDate, val, locale) || parsedDate);
-                        });
-                    }
-                    parsedDate = matched ? parsedDate : undefined;
-                }
-            }
-            /* istanbul ignore next */
-            if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {
-                config.errorHandler(new Error("Invalid date provided: " + dateOrig));
-                return undefined;
-            }
-            if (timeless === true)
-                parsedDate.setHours(0, 0, 0, 0);
-            return parsedDate;
-        };
-    };
-    /**
-     * Compute the difference in dates, measured in ms
-     */
-    function compareDates(date1, date2, timeless) {
-        if (timeless === void 0) { timeless = true; }
-        if (timeless !== false) {
-            return (new Date(date1.getTime()).setHours(0, 0, 0, 0) -
-                new Date(date2.getTime()).setHours(0, 0, 0, 0));
-        }
-        return date1.getTime() - date2.getTime();
-    }
-    var isBetween = function (ts, ts1, ts2) {
-        return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);
-    };
-    var duration = {
-        DAY: 86400000
-    };
-
-    if (typeof Object.assign !== "function") {
-        Object.assign = function (target) {
-            var args = [];
-            for (var _i = 1; _i < arguments.length; _i++) {
-                args[_i - 1] = arguments[_i];
-            }
-            if (!target) {
-                throw TypeError("Cannot convert undefined or null to object");
-            }
-            var _loop_1 = function (source) {
-                if (source) {
-                    Object.keys(source).forEach(function (key) { return (target[key] = source[key]); });
-                }
-            };
-            for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {
-                var source = args_1[_a];
-                _loop_1(source);
-            }
-            return target;
-        };
-    }
-
-    var DEBOUNCED_CHANGE_MS = 300;
-    function FlatpickrInstance(element, instanceConfig) {
-        var self = {
-            config: __assign({}, defaults, flatpickr.defaultConfig),
-            l10n: english
-        };
-        self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });
-        self._handlers = [];
-        self.pluginElements = [];
-        self.loadedPlugins = [];
-        self._bind = bind;
-        self._setHoursFromDate = setHoursFromDate;
-        self._positionCalendar = positionCalendar;
-        self.changeMonth = changeMonth;
-        self.changeYear = changeYear;
-        self.clear = clear;
-        self.close = close;
-        self._createElement = createElement;
-        self.destroy = destroy;
-        self.isEnabled = isEnabled;
-        self.jumpToDate = jumpToDate;
-        self.open = open;
-        self.redraw = redraw;
-        self.set = set;
-        self.setDate = setDate;
-        self.toggle = toggle;
-        function setupHelperFunctions() {
-            self.utils = {
-                getDaysInMonth: function (month, yr) {
-                    if (month === void 0) { month = self.currentMonth; }
-                    if (yr === void 0) { yr = self.currentYear; }
-                    if (month === 1 && ((yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0))
-                        return 29;
-                    return self.l10n.daysInMonth[month];
-                }
-            };
-        }
-        function init() {
-            self.element = self.input = element;
-            self.isOpen = false;
-            parseConfig();
-            setupLocale();
-            setupInputs();
-            setupDates();
-            setupHelperFunctions();
-            if (!self.isMobile)
-                build();
-            bindEvents();
-            if (self.selectedDates.length || self.config.noCalendar) {
-                if (self.config.enableTime) {
-                    setHoursFromDate(self.config.noCalendar
-                        ? self.latestSelectedDateObj || self.config.minDate
-                        : undefined);
-                }
-                updateValue(false);
-            }
-            setCalendarWidth();
-            self.showTimeInput =
-                self.selectedDates.length > 0 || self.config.noCalendar;
-            var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
-            /* TODO: investigate this further
-        
-              Currently, there is weird positioning behavior in safari causing pages
-              to scroll up. https://github.com/chmln/flatpickr/issues/563
-        
-              However, most browsers are not Safari and positioning is expensive when used
-              in scale. https://github.com/chmln/flatpickr/issues/1096
-            */
-            if (!self.isMobile && isSafari) {
-                positionCalendar();
-            }
-            triggerEvent("onReady");
-        }
-        function bindToInstance(fn) {
-            return fn.bind(self);
-        }
-        function setCalendarWidth() {
-            var config = self.config;
-            if (config.weekNumbers === false && config.showMonths === 1)
-                return;
-            else if (config.noCalendar !== true) {
-                window.requestAnimationFrame(function () {
-                    if (self.calendarContainer !== undefined) {
-                        self.calendarContainer.style.visibility = "hidden";
-                        self.calendarContainer.style.display = "block";
-                    }
-                    if (self.daysContainer !== undefined) {
-                        var daysWidth = (self.days.offsetWidth + 1) * config.showMonths;
-                        self.daysContainer.style.width = daysWidth + "px";
-                        self.calendarContainer.style.width =
-                            daysWidth +
-                                (self.weekWrapper !== undefined
-                                    ? self.weekWrapper.offsetWidth
-                                    : 0) +
-                                "px";
-                        self.calendarContainer.style.removeProperty("visibility");
-                        self.calendarContainer.style.removeProperty("display");
-                    }
-                });
-            }
-        }
-        /**
-         * The handler for all events targeting the time inputs
-         */
-        function updateTime(e) {
-            if (self.selectedDates.length === 0) {
-                setDefaultTime();
-            }
-            if (e !== undefined && e.type !== "blur") {
-                timeWrapper(e);
-            }
-            var prevValue = self._input.value;
-            setHoursFromInputs();
-            updateValue();
-            if (self._input.value !== prevValue) {
-                self._debouncedChange();
-            }
-        }
-        function ampm2military(hour, amPM) {
-            return (hour % 12) + 12 * int(amPM === self.l10n.amPM[1]);
-        }
-        function military2ampm(hour) {
-            switch (hour % 24) {
-                case 0:
-                case 12:
-                    return 12;
-                default:
-                    return hour % 12;
-            }
-        }
-        /**
-         * Syncs the selected date object time with user's time input
-         */
-        function setHoursFromInputs() {
-            if (self.hourElement === undefined || self.minuteElement === undefined)
-                return;
-            var hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24, minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60, seconds = self.secondElement !== undefined
-                ? (parseInt(self.secondElement.value, 10) || 0) % 60
-                : 0;
-            if (self.amPM !== undefined) {
-                hours = ampm2military(hours, self.amPM.textContent);
-            }
-            var limitMinHours = self.config.minTime !== undefined ||
-                (self.config.minDate &&
-                    self.minDateHasTime &&
-                    self.latestSelectedDateObj &&
-                    compareDates(self.latestSelectedDateObj, self.config.minDate, true) ===
-                        0);
-            var limitMaxHours = self.config.maxTime !== undefined ||
-                (self.config.maxDate &&
-                    self.maxDateHasTime &&
-                    self.latestSelectedDateObj &&
-                    compareDates(self.latestSelectedDateObj, self.config.maxDate, true) ===
-                        0);
-            if (limitMaxHours) {
-                var maxTime = self.config.maxTime !== undefined
-                    ? self.config.maxTime
-                    : self.config.maxDate;
-                hours = Math.min(hours, maxTime.getHours());
-                if (hours === maxTime.getHours())
-                    minutes = Math.min(minutes, maxTime.getMinutes());
-                if (minutes === maxTime.getMinutes())
-                    seconds = Math.min(seconds, maxTime.getSeconds());
-            }
-            if (limitMinHours) {
-                var minTime = self.config.minTime !== undefined
-                    ? self.config.minTime
-                    : self.config.minDate;
-                hours = Math.max(hours, minTime.getHours());
-                if (hours === minTime.getHours())
-                    minutes = Math.max(minutes, minTime.getMinutes());
-                if (minutes === minTime.getMinutes())
-                    seconds = Math.max(seconds, minTime.getSeconds());
-            }
-            setHours(hours, minutes, seconds);
-        }
-        /**
-         * Syncs time input values with a date
-         */
-        function setHoursFromDate(dateObj) {
-            var date = dateObj || self.latestSelectedDateObj;
-            if (date)
-                setHours(date.getHours(), date.getMinutes(), date.getSeconds());
-        }
-        function setDefaultHours() {
-            var hours = self.config.defaultHour;
-            var minutes = self.config.defaultMinute;
-            var seconds = self.config.defaultSeconds;
-            if (self.config.minDate !== undefined) {
-                var minHr = self.config.minDate.getHours();
-                var minMinutes = self.config.minDate.getMinutes();
-                hours = Math.max(hours, minHr);
-                if (hours === minHr)
-                    minutes = Math.max(minMinutes, minutes);
-                if (hours === minHr && minutes === minMinutes)
-                    seconds = self.config.minDate.getSeconds();
-            }
-            if (self.config.maxDate !== undefined) {
-                var maxHr = self.config.maxDate.getHours();
-                var maxMinutes = self.config.maxDate.getMinutes();
-                hours = Math.min(hours, maxHr);
-                if (hours === maxHr)
-                    minutes = Math.min(maxMinutes, minutes);
-                if (hours === maxHr && minutes === maxMinutes)
-                    seconds = self.config.maxDate.getSeconds();
-            }
-            setHours(hours, minutes, seconds);
-        }
-        /**
-         * Sets the hours, minutes, and optionally seconds
-         * of the latest selected date object and the
-         * corresponding time inputs
-         * @param {Number} hours the hour. whether its military
-         *                 or am-pm gets inferred from config
-         * @param {Number} minutes the minutes
-         * @param {Number} seconds the seconds (optional)
-         */
-        function setHours(hours, minutes, seconds) {
-            if (self.latestSelectedDateObj !== undefined) {
-                self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);
-            }
-            if (!self.hourElement || !self.minuteElement || self.isMobile)
-                return;
-            self.hourElement.value = pad(!self.config.time_24hr
-                ? ((12 + hours) % 12) + 12 * int(hours % 12 === 0)
-                : hours);
-            self.minuteElement.value = pad(minutes);
-            if (self.amPM !== undefined)
-                self.amPM.textContent = self.l10n.amPM[int(hours >= 12)];
-            if (self.secondElement !== undefined)
-                self.secondElement.value = pad(seconds);
-        }
-        /**
-         * Handles the year input and incrementing events
-         * @param {Event} event the keyup or increment event
-         */
-        function onYearInput(event) {
-            var year = parseInt(event.target.value) + (event.delta || 0);
-            if (year / 1000 > 1 ||
-                (event.key === "Enter" && !/[^\d]/.test(year.toString()))) {
-                changeYear(year);
-            }
-        }
-        /**
-         * Essentially addEventListener + tracking
-         * @param {Element} element the element to addEventListener to
-         * @param {String} event the event name
-         * @param {Function} handler the event handler
-         */
-        function bind(element, event, handler, options) {
-            if (event instanceof Array)
-                return event.forEach(function (ev) { return bind(element, ev, handler, options); });
-            if (element instanceof Array)
-                return element.forEach(function (el) { return bind(el, event, handler, options); });
-            element.addEventListener(event, handler, options);
-            self._handlers.push({
-                element: element,
-                event: event,
-                handler: handler,
-                options: options
-            });
-        }
-        /**
-         * A mousedown handler which mimics click.
-         * Minimizes latency, since we don't need to wait for mouseup in most cases.
-         * Also, avoids handling right clicks.
-         *
-         * @param {Function} handler the event handler
-         */
-        function onClick(handler) {
-            return function (evt) {
-                evt.which === 1 && handler(evt);
-            };
-        }
-        function triggerChange() {
-            triggerEvent("onChange");
-        }
-        /**
-         * Adds all the necessary event listeners
-         */
-        function bindEvents() {
-            if (self.config.wrap) {
-                ["open", "close", "toggle", "clear"].forEach(function (evt) {
-                    Array.prototype.forEach.call(self.element.querySelectorAll("[data-" + evt + "]"), function (el) {
-                        return bind(el, "click", self[evt]);
-                    });
-                });
-            }
-            if (self.isMobile) {
-                setupMobile();
-                return;
-            }
-            var debouncedResize = debounce(onResize, 50);
-            self._debouncedChange = debounce(triggerChange, DEBOUNCED_CHANGE_MS);
-            if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent))
-                bind(self.daysContainer, "mouseover", function (e) {
-                    if (self.config.mode === "range")
-                        onMouseOver(e.target);
-                });
-            bind(window.document.body, "keydown", onKeyDown);
-            if (!self.config.inline && !self.config.static)
-                bind(window, "resize", debouncedResize);
-            if (window.ontouchstart !== undefined)
-                bind(window.document, "touchstart", documentClick);
-            else
-                bind(window.document, "mousedown", onClick(documentClick));
-            bind(window.document, "focus", documentClick, { capture: true });
-            if (self.config.clickOpens === true) {
-                bind(self._input, "focus", self.open);
-                bind(self._input, "mousedown", onClick(self.open));
-            }
-            if (self.daysContainer !== undefined) {
-                bind(self.monthNav, "mousedown", onClick(onMonthNavClick));
-                bind(self.monthNav, ["keyup", "increment"], onYearInput);
-                bind(self.daysContainer, "mousedown", onClick(selectDate));
-            }
-            if (self.timeContainer !== undefined &&
-                self.minuteElement !== undefined &&
-                self.hourElement !== undefined) {
-                var selText = function (e) {
-                    return e.target.select();
-                };
-                bind(self.timeContainer, ["increment"], updateTime);
-                bind(self.timeContainer, "blur", updateTime, { capture: true });
-                bind(self.timeContainer, "mousedown", onClick(timeIncrement));
-                bind([self.hourElement, self.minuteElement], ["focus", "click"], selText);
-                if (self.secondElement !== undefined)
-                    bind(self.secondElement, "focus", function () { return self.secondElement && self.secondElement.select(); });
-                if (self.amPM !== undefined) {
-                    bind(self.amPM, "mousedown", onClick(function (e) {
-                        updateTime(e);
-                        triggerChange();
-                    }));
-                }
-            }
-        }
-        /**
-         * Set the calendar view to a particular date.
-         * @param {Date} jumpDate the date to set the view to
-         * @param {boolean} triggerChange if change events should be triggered
-         */
-        function jumpToDate(jumpDate, triggerChange) {
-            var jumpTo = jumpDate !== undefined
-                ? self.parseDate(jumpDate)
-                : self.latestSelectedDateObj ||
-                    (self.config.minDate && self.config.minDate > self.now
-                        ? self.config.minDate
-                        : self.config.maxDate && self.config.maxDate < self.now
-                            ? self.config.maxDate
-                            : self.now);
-            var oldYear = self.currentYear;
-            var oldMonth = self.currentMonth;
-            try {
-                if (jumpTo !== undefined) {
-                    self.currentYear = jumpTo.getFullYear();
-                    self.currentMonth = jumpTo.getMonth();
-                }
-            }
-            catch (e) {
-                /* istanbul ignore next */
-                e.message = "Invalid date supplied: " + jumpTo;
-                self.config.errorHandler(e);
-            }
-            if (triggerChange && self.currentYear !== oldYear) {
-                triggerEvent("onYearChange");
-                buildMonthSwitch();
-            }
-            if (triggerChange &&
-                (self.currentYear !== oldYear || self.currentMonth !== oldMonth)) {
-                triggerEvent("onMonthChange");
-            }
-            self.redraw();
-        }
-        /**
-         * The up/down arrow handler for time inputs
-         * @param {Event} e the click event
-         */
-        function timeIncrement(e) {
-            if (~e.target.className.indexOf("arrow"))
-                incrementNumInput(e, e.target.classList.contains("arrowUp") ? 1 : -1);
-        }
-        /**
-         * Increments/decrements the value of input associ-
-         * ated with the up/down arrow by dispatching an
-         * "increment" event on the input.
-         *
-         * @param {Event} e the click event
-         * @param {Number} delta the diff (usually 1 or -1)
-         * @param {Element} inputElem the input element
-         */
-        function incrementNumInput(e, delta, inputElem) {
-            var target = e && e.target;
-            var input = inputElem ||
-                (target && target.parentNode && target.parentNode.firstChild);
-            var event = createEvent("increment");
-            event.delta = delta;
-            input && input.dispatchEvent(event);
-        }
-        function build() {
-            var fragment = window.document.createDocumentFragment();
-            self.calendarContainer = createElement("div", "flatpickr-calendar");
-            self.calendarContainer.tabIndex = -1;
-            if (!self.config.noCalendar) {
-                fragment.appendChild(buildMonthNav());
-                self.innerContainer = createElement("div", "flatpickr-innerContainer");
-                if (self.config.weekNumbers) {
-                    var _a = buildWeeks(), weekWrapper = _a.weekWrapper, weekNumbers = _a.weekNumbers;
-                    self.innerContainer.appendChild(weekWrapper);
-                    self.weekNumbers = weekNumbers;
-                    self.weekWrapper = weekWrapper;
-                }
-                self.rContainer = createElement("div", "flatpickr-rContainer");
-                self.rContainer.appendChild(buildWeekdays());
-                if (!self.daysContainer) {
-                    self.daysContainer = createElement("div", "flatpickr-days");
-                    self.daysContainer.tabIndex = -1;
-                }
-                buildDays();
-                self.rContainer.appendChild(self.daysContainer);
-                self.innerContainer.appendChild(self.rContainer);
-                fragment.appendChild(self.innerContainer);
-            }
-            if (self.config.enableTime) {
-                fragment.appendChild(buildTime());
-            }
-            toggleClass(self.calendarContainer, "rangeMode", self.config.mode === "range");
-            toggleClass(self.calendarContainer, "animate", self.config.animate === true);
-            toggleClass(self.calendarContainer, "multiMonth", self.config.showMonths > 1);
-            self.calendarContainer.appendChild(fragment);
-            var customAppend = self.config.appendTo !== undefined &&
-                self.config.appendTo.nodeType !== undefined;
-            if (self.config.inline || self.config.static) {
-                self.calendarContainer.classList.add(self.config.inline ? "inline" : "static");
-                if (self.config.inline) {
-                    if (!customAppend && self.element.parentNode)
-                        self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);
-                    else if (self.config.appendTo !== undefined)
-                        self.config.appendTo.appendChild(self.calendarContainer);
-                }
-                if (self.config.static) {
-                    var wrapper = createElement("div", "flatpickr-wrapper");
-                    if (self.element.parentNode)
-                        self.element.parentNode.insertBefore(wrapper, self.element);
-                    wrapper.appendChild(self.element);
-                    if (self.altInput)
-                        wrapper.appendChild(self.altInput);
-                    wrapper.appendChild(self.calendarContainer);
-                }
-            }
-            if (!self.config.static && !self.config.inline)
-                (self.config.appendTo !== undefined
-                    ? self.config.appendTo
-                    : window.document.body).appendChild(self.calendarContainer);
-        }
-        function createDay(className, date, dayNumber, i) {
-            var dateIsEnabled = isEnabled(date, true), dayElement = createElement("span", "flatpickr-day " + className, date.getDate().toString());
-            dayElement.dateObj = date;
-            dayElement.$i = i;
-            dayElement.setAttribute("aria-label", self.formatDate(date, self.config.ariaDateFormat));
-            if (className.indexOf("hidden") === -1 &&
-                compareDates(date, self.now) === 0) {
-                self.todayDateElem = dayElement;
-                dayElement.classList.add("today");
-                dayElement.setAttribute("aria-current", "date");
-            }
-            if (dateIsEnabled) {
-                dayElement.tabIndex = -1;
-                if (isDateSelected(date)) {
-                    dayElement.classList.add("selected");
-                    self.selectedDateElem = dayElement;
-                    if (self.config.mode === "range") {
-                        toggleClass(dayElement, "startRange", self.selectedDates[0] &&
-                            compareDates(date, self.selectedDates[0], true) === 0);
-                        toggleClass(dayElement, "endRange", self.selectedDates[1] &&
-                            compareDates(date, self.selectedDates[1], true) === 0);
-                        if (className === "nextMonthDay")
-                            dayElement.classList.add("inRange");
-                    }
-                }
-            }
-            else {
-                dayElement.classList.add("flatpickr-disabled");
-            }
-            if (self.config.mode === "range") {
-                if (isDateInRange(date) && !isDateSelected(date))
-                    dayElement.classList.add("inRange");
-            }
-            if (self.weekNumbers &&
-                self.config.showMonths === 1 &&
-                className !== "prevMonthDay" &&
-                dayNumber % 7 === 1) {
-                self.weekNumbers.insertAdjacentHTML("beforeend", "<span class='flatpickr-day'>" + self.config.getWeek(date) + "</span>");
-            }
-            triggerEvent("onDayCreate", dayElement);
-            return dayElement;
-        }
-        function focusOnDayElem(targetNode) {
-            targetNode.focus();
-            if (self.config.mode === "range")
-                onMouseOver(targetNode);
-        }
-        function getFirstAvailableDay(delta) {
-            var startMonth = delta > 0 ? 0 : self.config.showMonths - 1;
-            var endMonth = delta > 0 ? self.config.showMonths : -1;
-            for (var m = startMonth; m != endMonth; m += delta) {
-                var month = self.daysContainer.children[m];
-                var startIndex = delta > 0 ? 0 : month.children.length - 1;
-                var endIndex = delta > 0 ? month.children.length : -1;
-                for (var i = startIndex; i != endIndex; i += delta) {
-                    var c = month.children[i];
-                    if (c.className.indexOf("hidden") === -1 && isEnabled(c.dateObj))
-                        return c;
-                }
-            }
-            return undefined;
-        }
-        function getNextAvailableDay(current, delta) {
-            var givenMonth = current.className.indexOf("Month") === -1
-                ? current.dateObj.getMonth()
-                : self.currentMonth;
-            var endMonth = delta > 0 ? self.config.showMonths : -1;
-            var loopDelta = delta > 0 ? 1 : -1;
-            for (var m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {
-                var month = self.daysContainer.children[m];
-                var startIndex = givenMonth - self.currentMonth === m
-                    ? current.$i + delta
-                    : delta < 0
-                        ? month.children.length - 1
-                        : 0;
-                var numMonthDays = month.children.length;
-                for (var i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {
-                    var c = month.children[i];
-                    if (c.className.indexOf("hidden") === -1 &&
-                        isEnabled(c.dateObj) &&
-                        Math.abs(current.$i - i) >= Math.abs(delta))
-                        return focusOnDayElem(c);
-                }
-            }
-            self.changeMonth(loopDelta);
-            focusOnDay(getFirstAvailableDay(loopDelta), 0);
-            return undefined;
-        }
-        function focusOnDay(current, offset) {
-            var dayFocused = isInView(document.activeElement || document.body);
-            var startElem = current !== undefined
-                ? current
-                : dayFocused
-                    ? document.activeElement
-                    : self.selectedDateElem !== undefined && isInView(self.selectedDateElem)
-                        ? self.selectedDateElem
-                        : self.todayDateElem !== undefined && isInView(self.todayDateElem)
-                            ? self.todayDateElem
-                            : getFirstAvailableDay(offset > 0 ? 1 : -1);
-            if (startElem === undefined)
-                return self._input.focus();
-            if (!dayFocused)
-                return focusOnDayElem(startElem);
-            getNextAvailableDay(startElem, offset);
-        }
-        function buildMonthDays(year, month) {
-            var firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;
-            var prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12);
-            var daysInMonth = self.utils.getDaysInMonth(month), days = window.document.createDocumentFragment(), isMultiMonth = self.config.showMonths > 1, prevMonthDayClass = isMultiMonth ? "prevMonthDay hidden" : "prevMonthDay", nextMonthDayClass = isMultiMonth ? "nextMonthDay hidden" : "nextMonthDay";
-            var dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;
-            // prepend days from the ending of previous month
-            for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {
-                days.appendChild(createDay(prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));
-            }
-            // Start at 1 since there is no 0th day
-            for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {
-                days.appendChild(createDay("", new Date(year, month, dayNumber), dayNumber, dayIndex));
-            }
-            // append days from the next month
-            for (var dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&
-                (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {
-                days.appendChild(createDay(nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));
-            }
-            //updateNavigationCurrentMonth();
-            var dayContainer = createElement("div", "dayContainer");
-            dayContainer.appendChild(days);
-            return dayContainer;
-        }
-        function buildDays() {
-            if (self.daysContainer === undefined) {
-                return;
-            }
-            clearNode(self.daysContainer);
-            // TODO: week numbers for each month
-            if (self.weekNumbers)
-                clearNode(self.weekNumbers);
-            var frag = document.createDocumentFragment();
-            for (var i = 0; i < self.config.showMonths; i++) {
-                var d = new Date(self.currentYear, self.currentMonth, 1);
-                d.setMonth(self.currentMonth + i);
-                frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));
-            }
-            self.daysContainer.appendChild(frag);
-            self.days = self.daysContainer.firstChild;
-            if (self.config.mode === "range" && self.selectedDates.length === 1) {
-                onMouseOver();
-            }
-        }
-        function buildMonthSwitch() {
-            if (self.config.showMonths > 1 ||
-                self.config.monthSelectorType !== "dropdown")
-                return;
-            var shouldBuildMonth = function (month) {
-                if (self.config.minDate !== undefined &&
-                    self.currentYear === self.config.minDate.getFullYear() &&
-                    month < self.config.minDate.getMonth()) {
-                    return false;
-                }
-                return !(self.config.maxDate !== undefined &&
-                    self.currentYear === self.config.maxDate.getFullYear() &&
-                    month > self.config.maxDate.getMonth());
-            };
-            self.monthsDropdownContainer.tabIndex = -1;
-            self.monthsDropdownContainer.innerHTML = "";
-            for (var i = 0; i < 12; i++) {
-                if (!shouldBuildMonth(i))
-                    continue;
-                var month = createElement("option", "flatpickr-monthDropdown-month");
-                month.value = new Date(self.currentYear, i).getMonth().toString();
-                month.textContent = monthToStr(i, self.config.shorthandCurrentMonth, self.l10n);
-                month.tabIndex = -1;
-                if (self.currentMonth === i) {
-                    month.selected = true;
-                }
-                self.monthsDropdownContainer.appendChild(month);
-            }
-        }
-        function buildMonth() {
-            var container = createElement("div", "flatpickr-month");
-            var monthNavFragment = window.document.createDocumentFragment();
-            var monthElement;
-            if (self.config.showMonths > 1 ||
-                self.config.monthSelectorType === "static") {
-                monthElement = createElement("span", "cur-month");
-            }
-            else {
-                self.monthsDropdownContainer = createElement("select", "flatpickr-monthDropdown-months");
-                bind(self.monthsDropdownContainer, "change", function (e) {
-                    var target = e.target;
-                    var selectedMonth = parseInt(target.value, 10);
-                    self.changeMonth(selectedMonth - self.currentMonth);
-                    triggerEvent("onMonthChange");
-                });
-                buildMonthSwitch();
-                monthElement = self.monthsDropdownContainer;
-            }
-            var yearInput = createNumberInput("cur-year", { tabindex: "-1" });
-            var yearElement = yearInput.getElementsByTagName("input")[0];
-            yearElement.setAttribute("aria-label", self.l10n.yearAriaLabel);
-            if (self.config.minDate) {
-                yearElement.setAttribute("min", self.config.minDate.getFullYear().toString());
-            }
-            if (self.config.maxDate) {
-                yearElement.setAttribute("max", self.config.maxDate.getFullYear().toString());
-                yearElement.disabled =
-                    !!self.config.minDate &&
-                        self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();
-            }
-            var currentMonth = createElement("div", "flatpickr-current-month");
-            currentMonth.appendChild(monthElement);
-            currentMonth.appendChild(yearInput);
-            monthNavFragment.appendChild(currentMonth);
-            container.appendChild(monthNavFragment);
-            return {
-                container: container,
-                yearElement: yearElement,
-                monthElement: monthElement
-            };
-        }
-        function buildMonths() {
-            clearNode(self.monthNav);
-            self.monthNav.appendChild(self.prevMonthNav);
-            if (self.config.showMonths) {
-                self.yearElements = [];
-                self.monthElements = [];
-            }
-            for (var m = self.config.showMonths; m--;) {
-                var month = buildMonth();
-                self.yearElements.push(month.yearElement);
-                self.monthElements.push(month.monthElement);
-                self.monthNav.appendChild(month.container);
-            }
-            self.monthNav.appendChild(self.nextMonthNav);
-        }
-        function buildMonthNav() {
-            self.monthNav = createElement("div", "flatpickr-months");
-            self.yearElements = [];
-            self.monthElements = [];
-            self.prevMonthNav = createElement("span", "flatpickr-prev-month");
-            self.prevMonthNav.innerHTML = self.config.prevArrow;
-            self.nextMonthNav = createElement("span", "flatpickr-next-month");
-            self.nextMonthNav.innerHTML = self.config.nextArrow;
-            buildMonths();
-            Object.defineProperty(self, "_hidePrevMonthArrow", {
-                get: function () { return self.__hidePrevMonthArrow; },
-                set: function (bool) {
-                    if (self.__hidePrevMonthArrow !== bool) {
-                        toggleClass(self.prevMonthNav, "flatpickr-disabled", bool);
-                        self.__hidePrevMonthArrow = bool;
-                    }
-                }
-            });
-            Object.defineProperty(self, "_hideNextMonthArrow", {
-                get: function () { return self.__hideNextMonthArrow; },
-                set: function (bool) {
-                    if (self.__hideNextMonthArrow !== bool) {
-                        toggleClass(self.nextMonthNav, "flatpickr-disabled", bool);
-                        self.__hideNextMonthArrow = bool;
-                    }
-                }
-            });
-            self.currentYearElement = self.yearElements[0];
-            updateNavigationCurrentMonth();
-            return self.monthNav;
-        }
-        function buildTime() {
-            self.calendarContainer.classList.add("hasTime");
-            if (self.config.noCalendar)
-                self.calendarContainer.classList.add("noCalendar");
-            self.timeContainer = createElement("div", "flatpickr-time");
-            self.timeContainer.tabIndex = -1;
-            var separator = createElement("span", "flatpickr-time-separator", ":");
-            var hourInput = createNumberInput("flatpickr-hour", {
-                "aria-label": self.l10n.hourAriaLabel
-            });
-            self.hourElement = hourInput.getElementsByTagName("input")[0];
-            var minuteInput = createNumberInput("flatpickr-minute", {
-                "aria-label": self.l10n.minuteAriaLabel
-            });
-            self.minuteElement = minuteInput.getElementsByTagName("input")[0];
-            self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;
-            self.hourElement.value = pad(self.latestSelectedDateObj
-                ? self.latestSelectedDateObj.getHours()
-                : self.config.time_24hr
-                    ? self.config.defaultHour
-                    : military2ampm(self.config.defaultHour));
-            self.minuteElement.value = pad(self.latestSelectedDateObj
-                ? self.latestSelectedDateObj.getMinutes()
-                : self.config.defaultMinute);
-            self.hourElement.setAttribute("step", self.config.hourIncrement.toString());
-            self.minuteElement.setAttribute("step", self.config.minuteIncrement.toString());
-            self.hourElement.setAttribute("min", self.config.time_24hr ? "0" : "1");
-            self.hourElement.setAttribute("max", self.config.time_24hr ? "23" : "12");
-            self.minuteElement.setAttribute("min", "0");
-            self.minuteElement.setAttribute("max", "59");
-            self.timeContainer.appendChild(hourInput);
-            self.timeContainer.appendChild(separator);
-            self.timeContainer.appendChild(minuteInput);
-            if (self.config.time_24hr)
-                self.timeContainer.classList.add("time24hr");
-            if (self.config.enableSeconds) {
-                self.timeContainer.classList.add("hasSeconds");
-                var secondInput = createNumberInput("flatpickr-second");
-                self.secondElement = secondInput.getElementsByTagName("input")[0];
-                self.secondElement.value = pad(self.latestSelectedDateObj
-                    ? self.latestSelectedDateObj.getSeconds()
-                    : self.config.defaultSeconds);
-                self.secondElement.setAttribute("step", self.minuteElement.getAttribute("step"));
-                self.secondElement.setAttribute("min", "0");
-                self.secondElement.setAttribute("max", "59");
-                self.timeContainer.appendChild(createElement("span", "flatpickr-time-separator", ":"));
-                self.timeContainer.appendChild(secondInput);
-            }
-            if (!self.config.time_24hr) {
-                // add self.amPM if appropriate
-                self.amPM = createElement("span", "flatpickr-am-pm", self.l10n.amPM[int((self.latestSelectedDateObj
-                    ? self.hourElement.value
-                    : self.config.defaultHour) > 11)]);
-                self.amPM.title = self.l10n.toggleTitle;
-                self.amPM.tabIndex = -1;
-                self.timeContainer.appendChild(self.amPM);
-            }
-            return self.timeContainer;
-        }
-        function buildWeekdays() {
-            if (!self.weekdayContainer)
-                self.weekdayContainer = createElement("div", "flatpickr-weekdays");
-            else
-                clearNode(self.weekdayContainer);
-            for (var i = self.config.showMonths; i--;) {
-                var container = createElement("div", "flatpickr-weekdaycontainer");
-                self.weekdayContainer.appendChild(container);
-            }
-            updateWeekdays();
-            return self.weekdayContainer;
-        }
-        function updateWeekdays() {
-            var firstDayOfWeek = self.l10n.firstDayOfWeek;
-            var weekdays = self.l10n.weekdays.shorthand.slice();
-            if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {
-                weekdays = weekdays.splice(firstDayOfWeek, weekdays.length).concat(weekdays.splice(0, firstDayOfWeek));
-            }
-            for (var i = self.config.showMonths; i--;) {
-                self.weekdayContainer.children[i].innerHTML = "\n      <span class='flatpickr-weekday'>\n        " + weekdays.join("</span><span class='flatpickr-weekday'>") + "\n      </span>\n      ";
-            }
-        }
-        /* istanbul ignore next */
-        function buildWeeks() {
-            self.calendarContainer.classList.add("hasWeeks");
-            var weekWrapper = createElement("div", "flatpickr-weekwrapper");
-            weekWrapper.appendChild(createElement("span", "flatpickr-weekday", self.l10n.weekAbbreviation));
-            var weekNumbers = createElement("div", "flatpickr-weeks");
-            weekWrapper.appendChild(weekNumbers);
-            return {
-                weekWrapper: weekWrapper,
-                weekNumbers: weekNumbers
-            };
-        }
-        function changeMonth(value, isOffset) {
-            if (isOffset === void 0) { isOffset = true; }
-            var delta = isOffset ? value : value - self.currentMonth;
-            if ((delta < 0 && self._hidePrevMonthArrow === true) ||
-                (delta > 0 && self._hideNextMonthArrow === true))
-                return;
-            self.currentMonth += delta;
-            if (self.currentMonth < 0 || self.currentMonth > 11) {
-                self.currentYear += self.currentMonth > 11 ? 1 : -1;
-                self.currentMonth = (self.currentMonth + 12) % 12;
-                triggerEvent("onYearChange");
-                buildMonthSwitch();
-            }
-            buildDays();
-            triggerEvent("onMonthChange");
-            updateNavigationCurrentMonth();
-        }
-        function clear(triggerChangeEvent, toInitial) {
-            if (triggerChangeEvent === void 0) { triggerChangeEvent = true; }
-            if (toInitial === void 0) { toInitial = true; }
-            self.input.value = "";
-            if (self.altInput !== undefined)
-                self.altInput.value = "";
-            if (self.mobileInput !== undefined)
-                self.mobileInput.value = "";
-            self.selectedDates = [];
-            self.latestSelectedDateObj = undefined;
-            if (toInitial === true) {
-                self.currentYear = self._initialDate.getFullYear();
-                self.currentMonth = self._initialDate.getMonth();
-            }
-            self.showTimeInput = false;
-            if (self.config.enableTime === true) {
-                setDefaultHours();
-            }
-            self.redraw();
-            if (triggerChangeEvent)
-                // triggerChangeEvent is true (default) or an Event
-                triggerEvent("onChange");
-        }
-        function close() {
-            self.isOpen = false;
-            if (!self.isMobile) {
-                if (self.calendarContainer !== undefined) {
-                    self.calendarContainer.classList.remove("open");
-                }
-                if (self._input !== undefined) {
-                    self._input.classList.remove("active");
-                }
-            }
-            triggerEvent("onClose");
-        }
-        function destroy() {
-            if (self.config !== undefined)
-                triggerEvent("onDestroy");
-            for (var i = self._handlers.length; i--;) {
-                var h = self._handlers[i];
-                h.element.removeEventListener(h.event, h.handler, h.options);
-            }
-            self._handlers = [];
-            if (self.mobileInput) {
-                if (self.mobileInput.parentNode)
-                    self.mobileInput.parentNode.removeChild(self.mobileInput);
-                self.mobileInput = undefined;
-            }
-            else if (self.calendarContainer && self.calendarContainer.parentNode) {
-                if (self.config.static && self.calendarContainer.parentNode) {
-                    var wrapper = self.calendarContainer.parentNode;
-                    wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);
-                    if (wrapper.parentNode) {
-                        while (wrapper.firstChild)
-                            wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);
-                        wrapper.parentNode.removeChild(wrapper);
-                    }
-                }
-                else
-                    self.calendarContainer.parentNode.removeChild(self.calendarContainer);
-            }
-            if (self.altInput) {
-                self.input.type = "text";
-                if (self.altInput.parentNode)
-                    self.altInput.parentNode.removeChild(self.altInput);
-                delete self.altInput;
-            }
-            if (self.input) {
-                self.input.type = self.input._type;
-                self.input.classList.remove("flatpickr-input");
-                self.input.removeAttribute("readonly");
-                self.input.value = "";
-            }
-            [
-                "_showTimeInput",
-                "latestSelectedDateObj",
-                "_hideNextMonthArrow",
-                "_hidePrevMonthArrow",
-                "__hideNextMonthArrow",
-                "__hidePrevMonthArrow",
-                "isMobile",
-                "isOpen",
-                "selectedDateElem",
-                "minDateHasTime",
-                "maxDateHasTime",
-                "days",
-                "daysContainer",
-                "_input",
-                "_positionElement",
-                "innerContainer",
-                "rContainer",
-                "monthNav",
-                "todayDateElem",
-                "calendarContainer",
-                "weekdayContainer",
-                "prevMonthNav",
-                "nextMonthNav",
-                "monthsDropdownContainer",
-                "currentMonthElement",
-                "currentYearElement",
-                "navigationCurrentMonth",
-                "selectedDateElem",
-                "config",
-            ].forEach(function (k) {
-                try {
-                    delete self[k];
-                }
-                catch (_) { }
-            });
-        }
-        function isCalendarElem(elem) {
-            if (self.config.appendTo && self.config.appendTo.contains(elem))
-                return true;
-            return self.calendarContainer.contains(elem);
-        }
-        function documentClick(e) {
-            if (self.isOpen && !self.config.inline) {
-                var eventTarget_1 = getEventTarget(e);
-                var isCalendarElement = isCalendarElem(eventTarget_1);
-                var isInput = eventTarget_1 === self.input ||
-                    eventTarget_1 === self.altInput ||
-                    self.element.contains(eventTarget_1) ||
-                    // web components
-                    // e.path is not present in all browsers. circumventing typechecks
-                    (e.path &&
-                        e.path.indexOf &&
-                        (~e.path.indexOf(self.input) ||
-                            ~e.path.indexOf(self.altInput)));
-                var lostFocus = e.type === "blur"
-                    ? isInput &&
-                        e.relatedTarget &&
-                        !isCalendarElem(e.relatedTarget)
-                    : !isInput &&
-                        !isCalendarElement &&
-                        !isCalendarElem(e.relatedTarget);
-                var isIgnored = !self.config.ignoredFocusElements.some(function (elem) {
-                    return elem.contains(eventTarget_1);
-                });
-                if (lostFocus && isIgnored) {
-                    self.close();
-                    if (self.config.mode === "range" && self.selectedDates.length === 1) {
-                        self.clear(false);
-                        self.redraw();
-                    }
-                }
-            }
-        }
-        function changeYear(newYear) {
-            if (!newYear ||
-                (self.config.minDate && newYear < self.config.minDate.getFullYear()) ||
-                (self.config.maxDate && newYear > self.config.maxDate.getFullYear()))
-                return;
-            var newYearNum = newYear, isNewYear = self.currentYear !== newYearNum;
-            self.currentYear = newYearNum || self.currentYear;
-            if (self.config.maxDate &&
-                self.currentYear === self.config.maxDate.getFullYear()) {
-                self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);
-            }
-            else if (self.config.minDate &&
-                self.currentYear === self.config.minDate.getFullYear()) {
-                self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);
-            }
-            if (isNewYear) {
-                self.redraw();
-                triggerEvent("onYearChange");
-                buildMonthSwitch();
-            }
-        }
-        function isEnabled(date, timeless) {
-            if (timeless === void 0) { timeless = true; }
-            var dateToCheck = self.parseDate(date, undefined, timeless); // timeless
-            if ((self.config.minDate &&
-                dateToCheck &&
-                compareDates(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0) ||
-                (self.config.maxDate &&
-                    dateToCheck &&
-                    compareDates(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0))
-                return false;
-            if (self.config.enable.length === 0 && self.config.disable.length === 0)
-                return true;
-            if (dateToCheck === undefined)
-                return false;
-            var bool = self.config.enable.length > 0, array = bool ? self.config.enable : self.config.disable;
-            for (var i = 0, d = void 0; i < array.length; i++) {
-                d = array[i];
-                if (typeof d === "function" &&
-                    d(dateToCheck) // disabled by function
-                )
-                    return bool;
-                else if (d instanceof Date &&
-                    dateToCheck !== undefined &&
-                    d.getTime() === dateToCheck.getTime())
-                    // disabled by date
-                    return bool;
-                else if (typeof d === "string" && dateToCheck !== undefined) {
-                    // disabled by date string
-                    var parsed = self.parseDate(d, undefined, true);
-                    return parsed && parsed.getTime() === dateToCheck.getTime()
-                        ? bool
-                        : !bool;
-                }
-                else if (
-                // disabled by range
-                typeof d === "object" &&
-                    dateToCheck !== undefined &&
-                    d.from &&
-                    d.to &&
-                    dateToCheck.getTime() >= d.from.getTime() &&
-                    dateToCheck.getTime() <= d.to.getTime())
-                    return bool;
-            }
-            return !bool;
-        }
-        function isInView(elem) {
-            if (self.daysContainer !== undefined)
-                return (elem.className.indexOf("hidden") === -1 &&
-                    self.daysContainer.contains(elem));
-            return false;
-        }
-        function onKeyDown(e) {
-            // e.key                      e.keyCode
-            // "Backspace"                        8
-            // "Tab"                              9
-            // "Enter"                           13
-            // "Escape"     (IE "Esc")           27
-            // "ArrowLeft"  (IE "Left")          37
-            // "ArrowUp"    (IE "Up")            38
-            // "ArrowRight" (IE "Right")         39
-            // "ArrowDown"  (IE "Down")          40
-            // "Delete"     (IE "Del")           46
-            var isInput = e.target === self._input;
-            var allowInput = self.config.allowInput;
-            var allowKeydown = self.isOpen && (!allowInput || !isInput);
-            var allowInlineKeydown = self.config.inline && isInput && !allowInput;
-            if (e.keyCode === 13 && isInput) {
-                if (allowInput) {
-                    self.setDate(self._input.value, true, e.target === self.altInput
-                        ? self.config.altFormat
-                        : self.config.dateFormat);
-                    return e.target.blur();
-                }
-                else {
-                    self.open();
-                }
-            }
-            else if (isCalendarElem(e.target) ||
-                allowKeydown ||
-                allowInlineKeydown) {
-                var isTimeObj = !!self.timeContainer &&
-                    self.timeContainer.contains(e.target);
-                switch (e.keyCode) {
-                    case 13:
-                        if (isTimeObj) {
-                            e.preventDefault();
-                            updateTime();
-                            focusAndClose();
-                        }
-                        else
-                            selectDate(e);
-                        break;
-                    case 27: // escape
-                        e.preventDefault();
-                        focusAndClose();
-                        break;
-                    case 8:
-                    case 46:
-                        if (isInput && !self.config.allowInput) {
-                            e.preventDefault();
-                            self.clear();
-                        }
-                        break;
-                    case 37:
-                    case 39:
-                        if (!isTimeObj && !isInput) {
-                            e.preventDefault();
-                            if (self.daysContainer !== undefined &&
-                                (allowInput === false ||
-                                    (document.activeElement && isInView(document.activeElement)))) {
-                                var delta_1 = e.keyCode === 39 ? 1 : -1;
-                                if (!e.ctrlKey)
-                                    focusOnDay(undefined, delta_1);
-                                else {
-                                    e.stopPropagation();
-                                    changeMonth(delta_1);
-                                    focusOnDay(getFirstAvailableDay(1), 0);
-                                }
-                            }
-                        }
-                        else if (self.hourElement)
-                            self.hourElement.focus();
-                        break;
-                    case 38:
-                    case 40:
-                        e.preventDefault();
-                        var delta = e.keyCode === 40 ? 1 : -1;
-                        if ((self.daysContainer && e.target.$i !== undefined) ||
-                            e.target === self.input) {
-                            if (e.ctrlKey) {
-                                e.stopPropagation();
-                                changeYear(self.currentYear - delta);
-                                focusOnDay(getFirstAvailableDay(1), 0);
-                            }
-                            else if (!isTimeObj)
-                                focusOnDay(undefined, delta * 7);
-                        }
-                        else if (e.target === self.currentYearElement) {
-                            changeYear(self.currentYear - delta);
-                        }
-                        else if (self.config.enableTime) {
-                            if (!isTimeObj && self.hourElement)
-                                self.hourElement.focus();
-                            updateTime(e);
-                            self._debouncedChange();
-                        }
-                        break;
-                    case 9:
-                        if (isTimeObj) {
-                            var elems = [
-                                self.hourElement,
-                                self.minuteElement,
-                                self.secondElement,
-                                self.amPM,
-                            ]
-                                .concat(self.pluginElements)
-                                .filter(function (x) { return x; });
-                            var i = elems.indexOf(e.target);
-                            if (i !== -1) {
-                                var target = elems[i + (e.shiftKey ? -1 : 1)];
-                                e.preventDefault();
-                                (target || self._input).focus();
-                            }
-                        }
-                        else if (!self.config.noCalendar &&
-                            self.daysContainer &&
-                            self.daysContainer.contains(e.target) &&
-                            e.shiftKey) {
-                            e.preventDefault();
-                            self._input.focus();
-                        }
-                        break;
-                    default:
-                        break;
-                }
-            }
-            if (self.amPM !== undefined && e.target === self.amPM) {
-                switch (e.key) {
-                    case self.l10n.amPM[0].charAt(0):
-                    case self.l10n.amPM[0].charAt(0).toLowerCase():
-                        self.amPM.textContent = self.l10n.amPM[0];
-                        setHoursFromInputs();
-                        updateValue();
-                        break;
-                    case self.l10n.amPM[1].charAt(0):
-                    case self.l10n.amPM[1].charAt(0).toLowerCase():
-                        self.amPM.textContent = self.l10n.amPM[1];
-                        setHoursFromInputs();
-                        updateValue();
-                        break;
-                }
-            }
-            if (isInput || isCalendarElem(e.target)) {
-                triggerEvent("onKeyDown", e);
-            }
-        }
-        function onMouseOver(elem) {
-            if (self.selectedDates.length !== 1 ||
-                (elem &&
-                    (!elem.classList.contains("flatpickr-day") ||
-                        elem.classList.contains("flatpickr-disabled"))))
-                return;
-            var hoverDate = elem
-                ? elem.dateObj.getTime()
-                : self.days.firstElementChild.dateObj.getTime(), initialDate = self.parseDate(self.selectedDates[0], undefined, true).getTime(), rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()), rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime());
-            var containsDisabled = false;
-            var minRange = 0, maxRange = 0;
-            for (var t = rangeStartDate; t < rangeEndDate; t += duration.DAY) {
-                if (!isEnabled(new Date(t), true)) {
-                    containsDisabled =
-                        containsDisabled || (t > rangeStartDate && t < rangeEndDate);
-                    if (t < initialDate && (!minRange || t > minRange))
-                        minRange = t;
-                    else if (t > initialDate && (!maxRange || t < maxRange))
-                        maxRange = t;
-                }
-            }
-            for (var m = 0; m < self.config.showMonths; m++) {
-                var month = self.daysContainer.children[m];
-                var _loop_1 = function (i, l) {
-                    var dayElem = month.children[i], date = dayElem.dateObj;
-                    var timestamp = date.getTime();
-                    var outOfRange = (minRange > 0 && timestamp < minRange) ||
-                        (maxRange > 0 && timestamp > maxRange);
-                    if (outOfRange) {
-                        dayElem.classList.add("notAllowed");
-                        ["inRange", "startRange", "endRange"].forEach(function (c) {
-                            dayElem.classList.remove(c);
-                        });
-                        return "continue";
-                    }
-                    else if (containsDisabled && !outOfRange)
-                        return "continue";
-                    ["startRange", "inRange", "endRange", "notAllowed"].forEach(function (c) {
-                        dayElem.classList.remove(c);
-                    });
-                    if (elem !== undefined) {
-                        elem.classList.add(hoverDate <= self.selectedDates[0].getTime()
-                            ? "startRange"
-                            : "endRange");
-                        if (initialDate < hoverDate && timestamp === initialDate)
-                            dayElem.classList.add("startRange");
-                        else if (initialDate > hoverDate && timestamp === initialDate)
-                            dayElem.classList.add("endRange");
-                        if (timestamp >= minRange &&
-                            (maxRange === 0 || timestamp <= maxRange) &&
-                            isBetween(timestamp, initialDate, hoverDate))
-                            dayElem.classList.add("inRange");
-                    }
-                };
-                for (var i = 0, l = month.children.length; i < l; i++) {
-                    _loop_1(i, l);
-                }
-            }
-        }
-        function onResize() {
-            if (self.isOpen && !self.config.static && !self.config.inline)
-                positionCalendar();
-        }
-        function setDefaultTime() {
-            self.setDate(self.config.minDate !== undefined
-                ? new Date(self.config.minDate.getTime())
-                : new Date(), true);
-            setDefaultHours();
-            updateValue();
-        }
-        function open(e, positionElement) {
-            if (positionElement === void 0) { positionElement = self._positionElement; }
-            if (self.isMobile === true) {
-                if (e) {
-                    e.preventDefault();
-                    e.target && e.target.blur();
-                }
-                if (self.mobileInput !== undefined) {
-                    self.mobileInput.focus();
-                    self.mobileInput.click();
-                }
-                triggerEvent("onOpen");
-                return;
-            }
-            if (self._input.disabled || self.config.inline)
-                return;
-            var wasOpen = self.isOpen;
-            self.isOpen = true;
-            if (!wasOpen) {
-                self.calendarContainer.classList.add("open");
-                self._input.classList.add("active");
-                triggerEvent("onOpen");
-                positionCalendar(positionElement);
-            }
-            if (self.config.enableTime === true && self.config.noCalendar === true) {
-                if (self.selectedDates.length === 0) {
-                    setDefaultTime();
-                }
-                if (self.config.allowInput === false &&
-                    (e === undefined ||
-                        !self.timeContainer.contains(e.relatedTarget))) {
-                    setTimeout(function () { return self.hourElement.select(); }, 50);
-                }
-            }
-        }
-        function minMaxDateSetter(type) {
-            return function (date) {
-                var dateObj = (self.config["_" + type + "Date"] = self.parseDate(date, self.config.dateFormat));
-                var inverseDateObj = self.config["_" + (type === "min" ? "max" : "min") + "Date"];
-                if (dateObj !== undefined) {
-                    self[type === "min" ? "minDateHasTime" : "maxDateHasTime"] =
-                        dateObj.getHours() > 0 ||
-                            dateObj.getMinutes() > 0 ||
-                            dateObj.getSeconds() > 0;
-                }
-                if (self.selectedDates) {
-                    self.selectedDates = self.selectedDates.filter(function (d) { return isEnabled(d); });
-                    if (!self.selectedDates.length && type === "min")
-                        setHoursFromDate(dateObj);
-                    updateValue();
-                }
-                if (self.daysContainer) {
-                    redraw();
-                    if (dateObj !== undefined)
-                        self.currentYearElement[type] = dateObj.getFullYear().toString();
-                    else
-                        self.currentYearElement.removeAttribute(type);
-                    self.currentYearElement.disabled =
-                        !!inverseDateObj &&
-                            dateObj !== undefined &&
-                            inverseDateObj.getFullYear() === dateObj.getFullYear();
-                }
-            };
-        }
-        function parseConfig() {
-            var boolOpts = [
-                "wrap",
-                "weekNumbers",
-                "allowInput",
-                "clickOpens",
-                "time_24hr",
-                "enableTime",
-                "noCalendar",
-                "altInput",
-                "shorthandCurrentMonth",
-                "inline",
-                "static",
-                "enableSeconds",
-                "disableMobile",
-            ];
-            var userConfig = __assign({}, instanceConfig, JSON.parse(JSON.stringify(element.dataset || {})));
-            var formats = {};
-            self.config.parseDate = userConfig.parseDate;
-            self.config.formatDate = userConfig.formatDate;
-            Object.defineProperty(self.config, "enable", {
-                get: function () { return self.config._enable; },
-                set: function (dates) {
-                    self.config._enable = parseDateRules(dates);
-                }
-            });
-            Object.defineProperty(self.config, "disable", {
-                get: function () { return self.config._disable; },
-                set: function (dates) {
-                    self.config._disable = parseDateRules(dates);
-                }
-            });
-            var timeMode = userConfig.mode === "time";
-            if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {
-                var defaultDateFormat = flatpickr.defaultConfig.dateFormat || defaults.dateFormat;
-                formats.dateFormat =
-                    userConfig.noCalendar || timeMode
-                        ? "H:i" + (userConfig.enableSeconds ? ":S" : "")
-                        : defaultDateFormat + " H:i" + (userConfig.enableSeconds ? ":S" : "");
-            }
-            if (userConfig.altInput &&
-                (userConfig.enableTime || timeMode) &&
-                !userConfig.altFormat) {
-                var defaultAltFormat = flatpickr.defaultConfig.altFormat || defaults.altFormat;
-                formats.altFormat =
-                    userConfig.noCalendar || timeMode
-                        ? "h:i" + (userConfig.enableSeconds ? ":S K" : " K")
-                        : defaultAltFormat + (" h:i" + (userConfig.enableSeconds ? ":S" : "") + " K");
-            }
-            if (!userConfig.altInputClass) {
-                self.config.altInputClass =
-                    self.input.className + " " + self.config.altInputClass;
-            }
-            Object.defineProperty(self.config, "minDate", {
-                get: function () { return self.config._minDate; },
-                set: minMaxDateSetter("min")
-            });
-            Object.defineProperty(self.config, "maxDate", {
-                get: function () { return self.config._maxDate; },
-                set: minMaxDateSetter("max")
-            });
-            var minMaxTimeSetter = function (type) { return function (val) {
-                self.config[type === "min" ? "_minTime" : "_maxTime"] = self.parseDate(val, "H:i");
-            }; };
-            Object.defineProperty(self.config, "minTime", {
-                get: function () { return self.config._minTime; },
-                set: minMaxTimeSetter("min")
-            });
-            Object.defineProperty(self.config, "maxTime", {
-                get: function () { return self.config._maxTime; },
-                set: minMaxTimeSetter("max")
-            });
-            if (userConfig.mode === "time") {
-                self.config.noCalendar = true;
-                self.config.enableTime = true;
-            }
-            Object.assign(self.config, formats, userConfig);
-            for (var i = 0; i < boolOpts.length; i++)
-                self.config[boolOpts[i]] =
-                    self.config[boolOpts[i]] === true ||
-                        self.config[boolOpts[i]] === "true";
-            HOOKS.filter(function (hook) { return self.config[hook] !== undefined; }).forEach(function (hook) {
-                self.config[hook] = arrayify(self.config[hook] || []).map(bindToInstance);
-            });
-            self.isMobile =
-                !self.config.disableMobile &&
-                    !self.config.inline &&
-                    self.config.mode === "single" &&
-                    !self.config.disable.length &&
-                    !self.config.enable.length &&
-                    !self.config.weekNumbers &&
-                    /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
-            for (var i = 0; i < self.config.plugins.length; i++) {
-                var pluginConf = self.config.plugins[i](self) || {};
-                for (var key in pluginConf) {
-                    if (HOOKS.indexOf(key) > -1) {
-                        self.config[key] = arrayify(pluginConf[key])
-                            .map(bindToInstance)
-                            .concat(self.config[key]);
-                    }
-                    else if (typeof userConfig[key] === "undefined")
-                        self.config[key] = pluginConf[key];
-                }
-            }
-            triggerEvent("onParseConfig");
-        }
-        function setupLocale() {
-            if (typeof self.config.locale !== "object" &&
-                typeof flatpickr.l10ns[self.config.locale] === "undefined")
-                self.config.errorHandler(new Error("flatpickr: invalid locale " + self.config.locale));
-            self.l10n = __assign({}, flatpickr.l10ns["default"], (typeof self.config.locale === "object"
-                ? self.config.locale
-                : self.config.locale !== "default"
-                    ? flatpickr.l10ns[self.config.locale]
-                    : undefined));
-            tokenRegex.K = "(" + self.l10n.amPM[0] + "|" + self.l10n.amPM[1] + "|" + self.l10n.amPM[0].toLowerCase() + "|" + self.l10n.amPM[1].toLowerCase() + ")";
-            var userConfig = __assign({}, instanceConfig, JSON.parse(JSON.stringify(element.dataset || {})));
-            if (userConfig.time_24hr === undefined &&
-                flatpickr.defaultConfig.time_24hr === undefined) {
-                self.config.time_24hr = self.l10n.time_24hr;
-            }
-            self.formatDate = createDateFormatter(self);
-            self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });
-        }
-        function positionCalendar(customPositionElement) {
-            if (self.calendarContainer === undefined)
-                return;
-            triggerEvent("onPreCalendarPosition");
-            var positionElement = customPositionElement || self._positionElement;
-            var calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, (function (acc, child) { return acc + child.offsetHeight; }), 0), calendarWidth = self.calendarContainer.offsetWidth, configPos = self.config.position.split(" "), configPosVertical = configPos[0], configPosHorizontal = configPos.length > 1 ? configPos[1] : null, inputBounds = positionElement.getBoundingClientRect(), distanceFromBottom = window.innerHeight - inputBounds.bottom, showOnTop = configPosVertical === "above" ||
-                (configPosVertical !== "below" &&
-                    distanceFromBottom < calendarHeight &&
-                    inputBounds.top > calendarHeight);
-            var top = window.pageYOffset +
-                inputBounds.top +
-                (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);
-            toggleClass(self.calendarContainer, "arrowTop", !showOnTop);
-            toggleClass(self.calendarContainer, "arrowBottom", showOnTop);
-            if (self.config.inline)
-                return;
-            var left = window.pageXOffset +
-                inputBounds.left -
-                (configPosHorizontal != null && configPosHorizontal === "center"
-                    ? (calendarWidth - inputBounds.width) / 2
-                    : 0);
-            var right = window.document.body.offsetWidth - inputBounds.right;
-            var rightMost = left + calendarWidth > window.document.body.offsetWidth;
-            var centerMost = right + calendarWidth > window.document.body.offsetWidth;
-            toggleClass(self.calendarContainer, "rightMost", rightMost);
-            if (self.config.static)
-                return;
-            self.calendarContainer.style.top = top + "px";
-            if (!rightMost) {
-                self.calendarContainer.style.left = left + "px";
-                self.calendarContainer.style.right = "auto";
-            }
-            else if (!centerMost) {
-                self.calendarContainer.style.left = "auto";
-                self.calendarContainer.style.right = right + "px";
-            }
-            else {
-                var doc = document.styleSheets[0];
-                // some testing environments don't have css support
-                if (doc === undefined)
-                    return;
-                var bodyWidth = window.document.body.offsetWidth;
-                var centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);
-                var centerBefore = ".flatpickr-calendar.centerMost:before";
-                var centerAfter = ".flatpickr-calendar.centerMost:after";
-                var centerIndex = doc.cssRules.length;
-                var centerStyle = "{left:" + inputBounds.left + "px;right:auto;}";
-                toggleClass(self.calendarContainer, "rightMost", false);
-                toggleClass(self.calendarContainer, "centerMost", true);
-                doc.insertRule(centerBefore + "," + centerAfter + centerStyle, centerIndex);
-                self.calendarContainer.style.left = centerLeft + "px";
-                self.calendarContainer.style.right = "auto";
-            }
-        }
-        function redraw() {
-            if (self.config.noCalendar || self.isMobile)
-                return;
-            updateNavigationCurrentMonth();
-            buildDays();
-        }
-        function focusAndClose() {
-            self._input.focus();
-            if (window.navigator.userAgent.indexOf("MSIE") !== -1 ||
-                navigator.msMaxTouchPoints !== undefined) {
-                // hack - bugs in the way IE handles focus keeps the calendar open
-                setTimeout(self.close, 0);
-            }
-            else {
-                self.close();
-            }
-        }
-        function selectDate(e) {
-            e.preventDefault();
-            e.stopPropagation();
-            var isSelectable = function (day) {
-                return day.classList &&
-                    day.classList.contains("flatpickr-day") &&
-                    !day.classList.contains("flatpickr-disabled") &&
-                    !day.classList.contains("notAllowed");
-            };
-            var t = findParent(e.target, isSelectable);
-            if (t === undefined)
-                return;
-            var target = t;
-            var selectedDate = (self.latestSelectedDateObj = new Date(target.dateObj.getTime()));
-            var shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth ||
-                selectedDate.getMonth() >
-                    self.currentMonth + self.config.showMonths - 1) &&
-                self.config.mode !== "range";
-            self.selectedDateElem = target;
-            if (self.config.mode === "single")
-                self.selectedDates = [selectedDate];
-            else if (self.config.mode === "multiple") {
-                var selectedIndex = isDateSelected(selectedDate);
-                if (selectedIndex)
-                    self.selectedDates.splice(parseInt(selectedIndex), 1);
-                else
-                    self.selectedDates.push(selectedDate);
-            }
-            else if (self.config.mode === "range") {
-                if (self.selectedDates.length === 2) {
-                    self.clear(false, false);
-                }
-                self.latestSelectedDateObj = selectedDate;
-                self.selectedDates.push(selectedDate);
-                // unless selecting same date twice, sort ascendingly
-                if (compareDates(selectedDate, self.selectedDates[0], true) !== 0)
-                    self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });
-            }
-            setHoursFromInputs();
-            if (shouldChangeMonth) {
-                var isNewYear = self.currentYear !== selectedDate.getFullYear();
-                self.currentYear = selectedDate.getFullYear();
-                self.currentMonth = selectedDate.getMonth();
-                if (isNewYear) {
-                    triggerEvent("onYearChange");
-                    buildMonthSwitch();
-                }
-                triggerEvent("onMonthChange");
-            }
-            updateNavigationCurrentMonth();
-            buildDays();
-            updateValue();
-            if (self.config.enableTime)
-                setTimeout(function () { return (self.showTimeInput = true); }, 50);
-            // maintain focus
-            if (!shouldChangeMonth &&
-                self.config.mode !== "range" &&
-                self.config.showMonths === 1)
-                focusOnDayElem(target);
-            else if (self.selectedDateElem !== undefined &&
-                self.hourElement === undefined) {
-                self.selectedDateElem && self.selectedDateElem.focus();
-            }
-            if (self.hourElement !== undefined)
-                self.hourElement !== undefined && self.hourElement.focus();
-            if (self.config.closeOnSelect) {
-                var single = self.config.mode === "single" && !self.config.enableTime;
-                var range = self.config.mode === "range" &&
-                    self.selectedDates.length === 2 &&
-                    !self.config.enableTime;
-                if (single || range) {
-                    focusAndClose();
-                }
-            }
-            triggerChange();
-        }
-        var CALLBACKS = {
-            locale: [setupLocale, updateWeekdays],
-            showMonths: [buildMonths, setCalendarWidth, buildWeekdays],
-            minDate: [jumpToDate],
-            maxDate: [jumpToDate]
-        };
-        function set(option, value) {
-            if (option !== null && typeof option === "object") {
-                Object.assign(self.config, option);
-                for (var key in option) {
-                    if (CALLBACKS[key] !== undefined)
-                        CALLBACKS[key].forEach(function (x) { return x(); });
-                }
-            }
-            else {
-                self.config[option] = value;
-                if (CALLBACKS[option] !== undefined)
-                    CALLBACKS[option].forEach(function (x) { return x(); });
-                else if (HOOKS.indexOf(option) > -1)
-                    self.config[option] = arrayify(value);
-            }
-            self.redraw();
-            updateValue(false);
-        }
-        function setSelectedDate(inputDate, format) {
-            var dates = [];
-            if (inputDate instanceof Array)
-                dates = inputDate.map(function (d) { return self.parseDate(d, format); });
-            else if (inputDate instanceof Date || typeof inputDate === "number")
-                dates = [self.parseDate(inputDate, format)];
-            else if (typeof inputDate === "string") {
-                switch (self.config.mode) {
-                    case "single":
-                    case "time":
-                        dates = [self.parseDate(inputDate, format)];
-                        break;
-                    case "multiple":
-                        dates = inputDate
-                            .split(self.config.conjunction)
-                            .map(function (date) { return self.parseDate(date, format); });
-                        break;
-                    case "range":
-                        dates = inputDate
-                            .split(self.l10n.rangeSeparator)
-                            .map(function (date) { return self.parseDate(date, format); });
-                        break;
-                    default:
-                        break;
-                }
-            }
-            else
-                self.config.errorHandler(new Error("Invalid date supplied: " + JSON.stringify(inputDate)));
-            self.selectedDates = dates.filter(function (d) { return d instanceof Date && isEnabled(d, false); });
-            if (self.config.mode === "range")
-                self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });
-        }
-        function setDate(date, triggerChange, format) {
-            if (triggerChange === void 0) { triggerChange = false; }
-            if (format === void 0) { format = self.config.dateFormat; }
-            if ((date !== 0 && !date) || (date instanceof Array && date.length === 0))
-                return self.clear(triggerChange);
-            setSelectedDate(date, format);
-            self.showTimeInput = self.selectedDates.length > 0;
-            self.latestSelectedDateObj =
-                self.selectedDates[self.selectedDates.length - 1];
-            self.redraw();
-            jumpToDate();
-            setHoursFromDate();
-            if (self.selectedDates.length === 0) {
-                self.clear(false);
-            }
-            updateValue(triggerChange);
-            if (triggerChange)
-                triggerEvent("onChange");
-        }
-        function parseDateRules(arr) {
-            return arr
-                .slice()
-                .map(function (rule) {
-                if (typeof rule === "string" ||
-                    typeof rule === "number" ||
-                    rule instanceof Date) {
-                    return self.parseDate(rule, undefined, true);
-                }
-                else if (rule &&
-                    typeof rule === "object" &&
-                    rule.from &&
-                    rule.to)
-                    return {
-                        from: self.parseDate(rule.from, undefined),
-                        to: self.parseDate(rule.to, undefined)
-                    };
-                return rule;
-            })
-                .filter(function (x) { return x; }); // remove falsy values
-        }
-        function setupDates() {
-            self.selectedDates = [];
-            self.now = self.parseDate(self.config.now) || new Date();
-            // Workaround IE11 setting placeholder as the input's value
-            var preloadedDate = self.config.defaultDate ||
-                ((self.input.nodeName === "INPUT" ||
-                    self.input.nodeName === "TEXTAREA") &&
-                    self.input.placeholder &&
-                    self.input.value === self.input.placeholder
-                    ? null
-                    : self.input.value);
-            if (preloadedDate)
-                setSelectedDate(preloadedDate, self.config.dateFormat);
-            self._initialDate =
-                self.selectedDates.length > 0
-                    ? self.selectedDates[0]
-                    : self.config.minDate &&
-                        self.config.minDate.getTime() > self.now.getTime()
-                        ? self.config.minDate
-                        : self.config.maxDate &&
-                            self.config.maxDate.getTime() < self.now.getTime()
-                            ? self.config.maxDate
-                            : self.now;
-            self.currentYear = self._initialDate.getFullYear();
-            self.currentMonth = self._initialDate.getMonth();
-            if (self.selectedDates.length > 0)
-                self.latestSelectedDateObj = self.selectedDates[0];
-            if (self.config.minTime !== undefined)
-                self.config.minTime = self.parseDate(self.config.minTime, "H:i");
-            if (self.config.maxTime !== undefined)
-                self.config.maxTime = self.parseDate(self.config.maxTime, "H:i");
-            self.minDateHasTime =
-                !!self.config.minDate &&
-                    (self.config.minDate.getHours() > 0 ||
-                        self.config.minDate.getMinutes() > 0 ||
-                        self.config.minDate.getSeconds() > 0);
-            self.maxDateHasTime =
-                !!self.config.maxDate &&
-                    (self.config.maxDate.getHours() > 0 ||
-                        self.config.maxDate.getMinutes() > 0 ||
-                        self.config.maxDate.getSeconds() > 0);
-            Object.defineProperty(self, "showTimeInput", {
-                get: function () { return self._showTimeInput; },
-                set: function (bool) {
-                    self._showTimeInput = bool;
-                    if (self.calendarContainer)
-                        toggleClass(self.calendarContainer, "showTimeInput", bool);
-                    self.isOpen && positionCalendar();
-                }
-            });
-        }
-        function setupInputs() {
-            self.input = self.config.wrap
-                ? element.querySelector("[data-input]")
-                : element;
-            /* istanbul ignore next */
-            if (!self.input) {
-                self.config.errorHandler(new Error("Invalid input element specified"));
-                return;
-            }
-            // hack: store previous type to restore it after destroy()
-            self.input._type = self.input.type;
-            self.input.type = "text";
-            self.input.classList.add("flatpickr-input");
-            self._input = self.input;
-            if (self.config.altInput) {
-                // replicate self.element
-                self.altInput = createElement(self.input.nodeName, self.config.altInputClass);
-                self._input = self.altInput;
-                self.altInput.placeholder = self.input.placeholder;
-                self.altInput.disabled = self.input.disabled;
-                self.altInput.required = self.input.required;
-                self.altInput.tabIndex = self.input.tabIndex;
-                self.altInput.type = "text";
-                self.input.setAttribute("type", "hidden");
-                if (!self.config.static && self.input.parentNode)
-                    self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);
-            }
-            if (!self.config.allowInput)
-                self._input.setAttribute("readonly", "readonly");
-            self._positionElement = self.config.positionElement || self._input;
-        }
-        function setupMobile() {
-            var inputType = self.config.enableTime
-                ? self.config.noCalendar
-                    ? "time"
-                    : "datetime-local"
-                : "date";
-            self.mobileInput = createElement("input", self.input.className + " flatpickr-mobile");
-            self.mobileInput.step = self.input.getAttribute("step") || "any";
-            self.mobileInput.tabIndex = 1;
-            self.mobileInput.type = inputType;
-            self.mobileInput.disabled = self.input.disabled;
-            self.mobileInput.required = self.input.required;
-            self.mobileInput.placeholder = self.input.placeholder;
-            self.mobileFormatStr =
-                inputType === "datetime-local"
-                    ? "Y-m-d\\TH:i:S"
-                    : inputType === "date"
-                        ? "Y-m-d"
-                        : "H:i:S";
-            if (self.selectedDates.length > 0) {
-                self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);
-            }
-            if (self.config.minDate)
-                self.mobileInput.min = self.formatDate(self.config.minDate, "Y-m-d");
-            if (self.config.maxDate)
-                self.mobileInput.max = self.formatDate(self.config.maxDate, "Y-m-d");
-            self.input.type = "hidden";
-            if (self.altInput !== undefined)
-                self.altInput.type = "hidden";
-            try {
-                if (self.input.parentNode)
-                    self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);
-            }
-            catch (_a) { }
-            bind(self.mobileInput, "change", function (e) {
-                self.setDate(e.target.value, false, self.mobileFormatStr);
-                triggerEvent("onChange");
-                triggerEvent("onClose");
-            });
-        }
-        function toggle(e) {
-            if (self.isOpen === true)
-                return self.close();
-            self.open(e);
-        }
-        function triggerEvent(event, data) {
-            // If the instance has been destroyed already, all hooks have been removed
-            if (self.config === undefined)
-                return;
-            var hooks = self.config[event];
-            if (hooks !== undefined && hooks.length > 0) {
-                for (var i = 0; hooks[i] && i < hooks.length; i++)
-                    hooks[i](self.selectedDates, self.input.value, self, data);
-            }
-            if (event === "onChange") {
-                self.input.dispatchEvent(createEvent("change"));
-                // many front-end frameworks bind to the input event
-                self.input.dispatchEvent(createEvent("input"));
-            }
-        }
-        function createEvent(name) {
-            var e = document.createEvent("Event");
-            e.initEvent(name, true, true);
-            return e;
-        }
-        function isDateSelected(date) {
-            for (var i = 0; i < self.selectedDates.length; i++) {
-                if (compareDates(self.selectedDates[i], date) === 0)
-                    return "" + i;
-            }
-            return false;
-        }
-        function isDateInRange(date) {
-            if (self.config.mode !== "range" || self.selectedDates.length < 2)
-                return false;
-            return (compareDates(date, self.selectedDates[0]) >= 0 &&
-                compareDates(date, self.selectedDates[1]) <= 0);
-        }
-        function updateNavigationCurrentMonth() {
-            if (self.config.noCalendar || self.isMobile || !self.monthNav)
-                return;
-            self.yearElements.forEach(function (yearElement, i) {
-                var d = new Date(self.currentYear, self.currentMonth, 1);
-                d.setMonth(self.currentMonth + i);
-                if (self.config.showMonths > 1 ||
-                    self.config.monthSelectorType === "static") {
-                    self.monthElements[i].textContent =
-                        monthToStr(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) + " ";
-                }
-                else {
-                    self.monthsDropdownContainer.value = d.getMonth().toString();
-                }
-                yearElement.value = d.getFullYear().toString();
-            });
-            self._hidePrevMonthArrow =
-                self.config.minDate !== undefined &&
-                    (self.currentYear === self.config.minDate.getFullYear()
-                        ? self.currentMonth <= self.config.minDate.getMonth()
-                        : self.currentYear < self.config.minDate.getFullYear());
-            self._hideNextMonthArrow =
-                self.config.maxDate !== undefined &&
-                    (self.currentYear === self.config.maxDate.getFullYear()
-                        ? self.currentMonth + 1 > self.config.maxDate.getMonth()
-                        : self.currentYear > self.config.maxDate.getFullYear());
-        }
-        function getDateStr(format) {
-            return self.selectedDates
-                .map(function (dObj) { return self.formatDate(dObj, format); })
-                .filter(function (d, i, arr) {
-                return self.config.mode !== "range" ||
-                    self.config.enableTime ||
-                    arr.indexOf(d) === i;
-            })
-                .join(self.config.mode !== "range"
-                ? self.config.conjunction
-                : self.l10n.rangeSeparator);
-        }
-        /**
-         * Updates the values of inputs associated with the calendar
-         */
-        function updateValue(triggerChange) {
-            if (triggerChange === void 0) { triggerChange = true; }
-            if (self.mobileInput !== undefined && self.mobileFormatStr) {
-                self.mobileInput.value =
-                    self.latestSelectedDateObj !== undefined
-                        ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr)
-                        : "";
-            }
-            self.input.value = getDateStr(self.config.dateFormat);
-            if (self.altInput !== undefined) {
-                self.altInput.value = getDateStr(self.config.altFormat);
-            }
-            if (triggerChange !== false)
-                triggerEvent("onValueUpdate");
-        }
-        function onMonthNavClick(e) {
-            var isPrevMonth = self.prevMonthNav.contains(e.target);
-            var isNextMonth = self.nextMonthNav.contains(e.target);
-            if (isPrevMonth || isNextMonth) {
-                changeMonth(isPrevMonth ? -1 : 1);
-            }
-            else if (self.yearElements.indexOf(e.target) >= 0) {
-                e.target.select();
-            }
-            else if (e.target.classList.contains("arrowUp")) {
-                self.changeYear(self.currentYear + 1);
-            }
-            else if (e.target.classList.contains("arrowDown")) {
-                self.changeYear(self.currentYear - 1);
-            }
-        }
-        function timeWrapper(e) {
-            e.preventDefault();
-            var isKeyDown = e.type === "keydown", input = e.target;
-            if (self.amPM !== undefined && e.target === self.amPM) {
-                self.amPM.textContent =
-                    self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];
-            }
-            var min = parseFloat(input.getAttribute("min")), max = parseFloat(input.getAttribute("max")), step = parseFloat(input.getAttribute("step")), curValue = parseInt(input.value, 10), delta = e.delta ||
-                (isKeyDown ? (e.which === 38 ? 1 : -1) : 0);
-            var newValue = curValue + step * delta;
-            if (typeof input.value !== "undefined" && input.value.length === 2) {
-                var isHourElem = input === self.hourElement, isMinuteElem = input === self.minuteElement;
-                if (newValue < min) {
-                    newValue =
-                        max +
-                            newValue +
-                            int(!isHourElem) +
-                            (int(isHourElem) && int(!self.amPM));
-                    if (isMinuteElem)
-                        incrementNumInput(undefined, -1, self.hourElement);
-                }
-                else if (newValue > max) {
-                    newValue =
-                        input === self.hourElement ? newValue - max - int(!self.amPM) : min;
-                    if (isMinuteElem)
-                        incrementNumInput(undefined, 1, self.hourElement);
-                }
-                if (self.amPM &&
-                    isHourElem &&
-                    (step === 1
-                        ? newValue + curValue === 23
-                        : Math.abs(newValue - curValue) > step)) {
-                    self.amPM.textContent =
-                        self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];
-                }
-                input.value = pad(newValue);
-            }
-        }
-        init();
-        return self;
-    }
-    /* istanbul ignore next */
-    function _flatpickr(nodeList, config) {
-        // static list
-        var nodes = Array.prototype.slice
-            .call(nodeList)
-            .filter(function (x) { return x instanceof HTMLElement; });
-        var instances = [];
-        for (var i = 0; i < nodes.length; i++) {
-            var node = nodes[i];
-            try {
-                if (node.getAttribute("data-fp-omit") !== null)
-                    continue;
-                if (node._flatpickr !== undefined) {
-                    node._flatpickr.destroy();
-                    node._flatpickr = undefined;
-                }
-                node._flatpickr = FlatpickrInstance(node, config || {});
-                instances.push(node._flatpickr);
-            }
-            catch (e) {
-                console.error(e);
-            }
-        }
-        return instances.length === 1 ? instances[0] : instances;
-    }
-    /* istanbul ignore next */
-    if (typeof HTMLElement !== "undefined" &&
-        typeof HTMLCollection !== "undefined" &&
-        typeof NodeList !== "undefined") {
-        // browser env
-        HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {
-            return _flatpickr(this, config);
-        };
-        HTMLElement.prototype.flatpickr = function (config) {
-            return _flatpickr([this], config);
-        };
-    }
-    /* istanbul ignore next */
-    var flatpickr = function (selector, config) {
-        if (typeof selector === "string") {
-            return _flatpickr(window.document.querySelectorAll(selector), config);
-        }
-        else if (selector instanceof Node) {
-            return _flatpickr([selector], config);
-        }
-        else {
-            return _flatpickr(selector, config);
-        }
-    };
-    /* istanbul ignore next */
-    flatpickr.defaultConfig = {};
-    flatpickr.l10ns = {
-        en: __assign({}, english),
-        "default": __assign({}, english)
-    };
-    flatpickr.localize = function (l10n) {
-        flatpickr.l10ns["default"] = __assign({}, flatpickr.l10ns["default"], l10n);
-    };
-    flatpickr.setDefaults = function (config) {
-        flatpickr.defaultConfig = __assign({}, flatpickr.defaultConfig, config);
-    };
-    flatpickr.parseDate = createDateParser({});
-    flatpickr.formatDate = createDateFormatter({});
-    flatpickr.compareDates = compareDates;
-    /* istanbul ignore next */
-    if (typeof jQuery !== "undefined" && typeof jQuery.fn !== "undefined") {
-        jQuery.fn.flatpickr = function (config) {
-            return _flatpickr(this, config);
-        };
-    }
-    // eslint-disable-next-line @typescript-eslint/camelcase
-    Date.prototype.fp_incr = function (days) {
-        return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === "string" ? parseInt(days, 10) : days));
-    };
-    if (typeof window !== "undefined") {
-        window.flatpickr = flatpickr;
-    }
-
-    return flatpickr;
-
-}));
diff --git a/app/static/vendors/flatpickr/flatpickr.min.css b/app/static/vendors/flatpickr/flatpickr.min.css
deleted file mode 100644 (file)
index 46c57b7..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-.flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08);box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08);}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1);animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px);}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none !important;box-shadow:none !important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:'';height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.rightMost:after{left:auto;right:22px}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9);height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9);}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{/*
-      /*rtl:begin:ignore*/left:0;/*
-      /*rtl:end:ignore*/}/*
-      /*rtl:begin:ignore*/
-/*
-      /*rtl:end:ignore*/
-.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{/*
-      /*rtl:begin:ignore*/right:0;/*
-      /*rtl:end:ignore*/}/*
-      /*rtl:begin:ignore*/
-/*
-      /*rtl:end:ignore*/
-.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9;}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px;}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto;}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%;}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,0.15);-webkit-box-sizing:border-box;box-sizing:border-box;}.numInputWrapper span:hover{background:rgba(0,0,0,0.1)}.numInputWrapper span:active{background:rgba(0,0,0,0.2)}.numInputWrapper span:after{display:block;content:"";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0;}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,0.6);top:26%}.numInputWrapper span.arrowDown{top:50%;}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,0.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto;}.numInputWrapper span svg path{fill:rgba(0,0,0,0.5)}.numInputWrapper:hover{background:rgba(0,0,0,0.05);}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0;}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\0;display:inline-block;}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,0.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,0.9)}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield;}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,0.5);background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto;}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px;}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,0.54);line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px;}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1;}.dayContainer + .dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center;}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9;}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:rgba(57,57,57,0.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(57,57,57,0.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left;}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,0.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}.flatpickr-time:after{content:"";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left;}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield;}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}
\ No newline at end of file
diff --git a/app/static/vendors/flatpickr/flatpickr.min.js b/app/static/vendors/flatpickr/flatpickr.min.js
deleted file mode 100644 (file)
index 9418133..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* flatpickr v4.6.2,, @license MIT */
-!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).flatpickr=t()}(this,function(){"use strict";var e=function(){return(e=Object.assign||function(e){for(var t,n=1,a=arguments.length;n<a;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)},t=["onChange","onClose","onDayCreate","onDestroy","onKeyDown","onMonthChange","onOpen","onParseConfig","onReady","onValueUpdate","onYearChange","onPreCalendarPosition"],n={_disable:[],_enable:[],allowInput:!1,altFormat:"F j, Y",altInput:!1,altInputClass:"form-control input",animate:"object"==typeof window&&-1===window.navigator.userAgent.indexOf("MSIE"),ariaDateFormat:"F j, Y",clickOpens:!0,closeOnSelect:!0,conjunction:", ",dateFormat:"Y-m-d",defaultHour:12,defaultMinute:0,defaultSeconds:0,disable:[],disableMobile:!1,enable:[],enableSeconds:!1,enableTime:!1,errorHandler:function(e){return"undefined"!=typeof console&&console.warn(e)},getWeek:function(e){var t=new Date(e.getTime());t.setHours(0,0,0,0),t.setDate(t.getDate()+3-(t.getDay()+6)%7);var n=new Date(t.getFullYear(),0,4);return 1+Math.round(((t.getTime()-n.getTime())/864e5-3+(n.getDay()+6)%7)/7)},hourIncrement:1,ignoredFocusElements:[],inline:!1,locale:"default",minuteIncrement:5,mode:"single",monthSelectorType:"dropdown",nextArrow:"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M13.207 8.472l-7.854 7.854-0.707-0.707 7.146-7.146-7.146-7.148 0.707-0.707 7.854 7.854z' /></svg>",noCalendar:!1,now:new Date,onChange:[],onClose:[],onDayCreate:[],onDestroy:[],onKeyDown:[],onMonthChange:[],onOpen:[],onParseConfig:[],onReady:[],onValueUpdate:[],onYearChange:[],onPreCalendarPosition:[],plugins:[],position:"auto",positionElement:void 0,prevArrow:"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M5.207 8.471l7.146 7.147-0.707 0.707-7.853-7.854 7.854-7.853 0.707 0.707-7.147 7.146z' /></svg>",shorthandCurrentMonth:!1,showMonths:1,static:!1,time_24hr:!1,weekNumbers:!1,wrap:!1},a={weekdays:{shorthand:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],longhand:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},months:{shorthand:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],longhand:["January","February","March","April","May","June","July","August","September","October","November","December"]},daysInMonth:[31,28,31,30,31,30,31,31,30,31,30,31],firstDayOfWeek:0,ordinal:function(e){var t=e%100;if(t>3&&t<21)return"th";switch(t%10){case 1:return"st";case 2:return"nd";case 3:return"rd";default:return"th"}},rangeSeparator:" to ",weekAbbreviation:"Wk",scrollTitle:"Scroll to increment",toggleTitle:"Click to toggle",amPM:["AM","PM"],yearAriaLabel:"Year",hourAriaLabel:"Hour",minuteAriaLabel:"Minute",time_24hr:!1},i=function(e){return("0"+e).slice(-2)},o=function(e){return!0===e?1:0};function r(e,t,n){var a;return void 0===n&&(n=!1),function(){var i=this,o=arguments;null!==a&&clearTimeout(a),a=window.setTimeout(function(){a=null,n||e.apply(i,o)},t),n&&!a&&e.apply(i,o)}}var l=function(e){return e instanceof Array?e:[e]};function c(e,t,n){if(!0===n)return e.classList.add(t);e.classList.remove(t)}function d(e,t,n){var a=window.document.createElement(e);return t=t||"",n=n||"",a.className=t,void 0!==n&&(a.textContent=n),a}function s(e){for(;e.firstChild;)e.removeChild(e.firstChild)}function u(e,t){var n=d("div","numInputWrapper"),a=d("input","numInput "+e),i=d("span","arrowUp"),o=d("span","arrowDown");if(-1===navigator.userAgent.indexOf("MSIE 9.0")?a.type="number":(a.type="text",a.pattern="\\d*"),void 0!==t)for(var r in t)a.setAttribute(r,t[r]);return n.appendChild(a),n.appendChild(i),n.appendChild(o),n}var f=function(){},m=function(e,t,n){return n.months[t?"shorthand":"longhand"][e]},g={D:f,F:function(e,t,n){e.setMonth(n.months.longhand.indexOf(t))},G:function(e,t){e.setHours(parseFloat(t))},H:function(e,t){e.setHours(parseFloat(t))},J:function(e,t){e.setDate(parseFloat(t))},K:function(e,t,n){e.setHours(e.getHours()%12+12*o(new RegExp(n.amPM[1],"i").test(t)))},M:function(e,t,n){e.setMonth(n.months.shorthand.indexOf(t))},S:function(e,t){e.setSeconds(parseFloat(t))},U:function(e,t){return new Date(1e3*parseFloat(t))},W:function(e,t,n){var a=parseInt(t),i=new Date(e.getFullYear(),0,2+7*(a-1),0,0,0,0);return i.setDate(i.getDate()-i.getDay()+n.firstDayOfWeek),i},Y:function(e,t){e.setFullYear(parseFloat(t))},Z:function(e,t){return new Date(t)},d:function(e,t){e.setDate(parseFloat(t))},h:function(e,t){e.setHours(parseFloat(t))},i:function(e,t){e.setMinutes(parseFloat(t))},j:function(e,t){e.setDate(parseFloat(t))},l:f,m:function(e,t){e.setMonth(parseFloat(t)-1)},n:function(e,t){e.setMonth(parseFloat(t)-1)},s:function(e,t){e.setSeconds(parseFloat(t))},u:function(e,t){return new Date(parseFloat(t))},w:f,y:function(e,t){e.setFullYear(2e3+parseFloat(t))}},p={D:"(\\w+)",F:"(\\w+)",G:"(\\d\\d|\\d)",H:"(\\d\\d|\\d)",J:"(\\d\\d|\\d)\\w+",K:"",M:"(\\w+)",S:"(\\d\\d|\\d)",U:"(.+)",W:"(\\d\\d|\\d)",Y:"(\\d{4})",Z:"(.+)",d:"(\\d\\d|\\d)",h:"(\\d\\d|\\d)",i:"(\\d\\d|\\d)",j:"(\\d\\d|\\d)",l:"(\\w+)",m:"(\\d\\d|\\d)",n:"(\\d\\d|\\d)",s:"(\\d\\d|\\d)",u:"(.+)",w:"(\\d\\d|\\d)",y:"(\\d{2})"},h={Z:function(e){return e.toISOString()},D:function(e,t,n){return t.weekdays.shorthand[h.w(e,t,n)]},F:function(e,t,n){return m(h.n(e,t,n)-1,!1,t)},G:function(e,t,n){return i(h.h(e,t,n))},H:function(e){return i(e.getHours())},J:function(e,t){return void 0!==t.ordinal?e.getDate()+t.ordinal(e.getDate()):e.getDate()},K:function(e,t){return t.amPM[o(e.getHours()>11)]},M:function(e,t){return m(e.getMonth(),!0,t)},S:function(e){return i(e.getSeconds())},U:function(e){return e.getTime()/1e3},W:function(e,t,n){return n.getWeek(e)},Y:function(e){return e.getFullYear()},d:function(e){return i(e.getDate())},h:function(e){return e.getHours()%12?e.getHours()%12:12},i:function(e){return i(e.getMinutes())},j:function(e){return e.getDate()},l:function(e,t){return t.weekdays.longhand[e.getDay()]},m:function(e){return i(e.getMonth()+1)},n:function(e){return e.getMonth()+1},s:function(e){return e.getSeconds()},u:function(e){return e.getTime()},w:function(e){return e.getDay()},y:function(e){return String(e.getFullYear()).substring(2)}},v=function(e){var t=e.config,i=void 0===t?n:t,o=e.l10n,r=void 0===o?a:o;return function(e,t,n){var a=n||r;return void 0!==i.formatDate?i.formatDate(e,t,a):t.split("").map(function(t,n,o){return h[t]&&"\\"!==o[n-1]?h[t](e,a,i):"\\"!==t?t:""}).join("")}},D=function(e){var t=e.config,i=void 0===t?n:t,o=e.l10n,r=void 0===o?a:o;return function(e,t,a,o){if(0===e||e){var l,c=o||r,d=e;if(e instanceof Date)l=new Date(e.getTime());else if("string"!=typeof e&&void 0!==e.toFixed)l=new Date(e);else if("string"==typeof e){var s=t||(i||n).dateFormat,u=String(e).trim();if("today"===u)l=new Date,a=!0;else if(/Z$/.test(u)||/GMT$/.test(u))l=new Date(e);else if(i&&i.parseDate)l=i.parseDate(e,s);else{l=i&&i.noCalendar?new Date((new Date).setHours(0,0,0,0)):new Date((new Date).getFullYear(),0,1,0,0,0,0);for(var f=void 0,m=[],h=0,v=0,D="";h<s.length;h++){var w=s[h],b="\\"===w,C="\\"===s[h-1]||b;if(p[w]&&!C){D+=p[w];var M=new RegExp(D).exec(e);M&&(f=!0)&&m["Y"!==w?"push":"unshift"]({fn:g[w],val:M[++v]})}else b||(D+=".");m.forEach(function(e){var t=e.fn,n=e.val;return l=t(l,n,c)||l})}l=f?l:void 0}}if(l instanceof Date&&!isNaN(l.getTime()))return!0===a&&l.setHours(0,0,0,0),l;i.errorHandler(new Error("Invalid date provided: "+d))}}};function w(e,t,n){return void 0===n&&(n=!0),!1!==n?new Date(e.getTime()).setHours(0,0,0,0)-new Date(t.getTime()).setHours(0,0,0,0):e.getTime()-t.getTime()}var b=function(e,t,n){return e>Math.min(t,n)&&e<Math.max(t,n)},C={DAY:864e5};"function"!=typeof Object.assign&&(Object.assign=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];if(!e)throw TypeError("Cannot convert undefined or null to object");for(var a=function(t){t&&Object.keys(t).forEach(function(n){return e[n]=t[n]})},i=0,o=t;i<o.length;i++){a(o[i])}return e});var M=300;function y(f,g){var h={config:e({},n,E.defaultConfig),l10n:a};function y(e){return e.bind(h)}function x(){var e=h.config;!1===e.weekNumbers&&1===e.showMonths||!0!==e.noCalendar&&window.requestAnimationFrame(function(){if(void 0!==h.calendarContainer&&(h.calendarContainer.style.visibility="hidden",h.calendarContainer.style.display="block"),void 0!==h.daysContainer){var t=(h.days.offsetWidth+1)*e.showMonths;h.daysContainer.style.width=t+"px",h.calendarContainer.style.width=t+(void 0!==h.weekWrapper?h.weekWrapper.offsetWidth:0)+"px",h.calendarContainer.style.removeProperty("visibility"),h.calendarContainer.style.removeProperty("display")}})}function T(e){0===h.selectedDates.length&&ie(),void 0!==e&&"blur"!==e.type&&function(e){e.preventDefault();var t="keydown"===e.type,n=e.target;void 0!==h.amPM&&e.target===h.amPM&&(h.amPM.textContent=h.l10n.amPM[o(h.amPM.textContent===h.l10n.amPM[0])]);var a=parseFloat(n.getAttribute("min")),r=parseFloat(n.getAttribute("max")),l=parseFloat(n.getAttribute("step")),c=parseInt(n.value,10),d=e.delta||(t?38===e.which?1:-1:0),s=c+l*d;if(void 0!==n.value&&2===n.value.length){var u=n===h.hourElement,f=n===h.minuteElement;s<a?(s=r+s+o(!u)+(o(u)&&o(!h.amPM)),f&&j(void 0,-1,h.hourElement)):s>r&&(s=n===h.hourElement?s-r-o(!h.amPM):a,f&&j(void 0,1,h.hourElement)),h.amPM&&u&&(1===l?s+c===23:Math.abs(s-c)>l)&&(h.amPM.textContent=h.l10n.amPM[o(h.amPM.textContent===h.l10n.amPM[0])]),n.value=i(s)}}(e);var t=h._input.value;k(),we(),h._input.value!==t&&h._debouncedChange()}function k(){if(void 0!==h.hourElement&&void 0!==h.minuteElement){var e,t,n=(parseInt(h.hourElement.value.slice(-2),10)||0)%24,a=(parseInt(h.minuteElement.value,10)||0)%60,i=void 0!==h.secondElement?(parseInt(h.secondElement.value,10)||0)%60:0;void 0!==h.amPM&&(e=n,t=h.amPM.textContent,n=e%12+12*o(t===h.l10n.amPM[1]));var r=void 0!==h.config.minTime||h.config.minDate&&h.minDateHasTime&&h.latestSelectedDateObj&&0===w(h.latestSelectedDateObj,h.config.minDate,!0);if(void 0!==h.config.maxTime||h.config.maxDate&&h.maxDateHasTime&&h.latestSelectedDateObj&&0===w(h.latestSelectedDateObj,h.config.maxDate,!0)){var l=void 0!==h.config.maxTime?h.config.maxTime:h.config.maxDate;(n=Math.min(n,l.getHours()))===l.getHours()&&(a=Math.min(a,l.getMinutes())),a===l.getMinutes()&&(i=Math.min(i,l.getSeconds()))}if(r){var c=void 0!==h.config.minTime?h.config.minTime:h.config.minDate;(n=Math.max(n,c.getHours()))===c.getHours()&&(a=Math.max(a,c.getMinutes())),a===c.getMinutes()&&(i=Math.max(i,c.getSeconds()))}O(n,a,i)}}function I(e){var t=e||h.latestSelectedDateObj;t&&O(t.getHours(),t.getMinutes(),t.getSeconds())}function S(){var e=h.config.defaultHour,t=h.config.defaultMinute,n=h.config.defaultSeconds;if(void 0!==h.config.minDate){var a=h.config.minDate.getHours(),i=h.config.minDate.getMinutes();(e=Math.max(e,a))===a&&(t=Math.max(i,t)),e===a&&t===i&&(n=h.config.minDate.getSeconds())}if(void 0!==h.config.maxDate){var o=h.config.maxDate.getHours(),r=h.config.maxDate.getMinutes();(e=Math.min(e,o))===o&&(t=Math.min(r,t)),e===o&&t===r&&(n=h.config.maxDate.getSeconds())}O(e,t,n)}function O(e,t,n){void 0!==h.latestSelectedDateObj&&h.latestSelectedDateObj.setHours(e%24,t,n||0,0),h.hourElement&&h.minuteElement&&!h.isMobile&&(h.hourElement.value=i(h.config.time_24hr?e:(12+e)%12+12*o(e%12==0)),h.minuteElement.value=i(t),void 0!==h.amPM&&(h.amPM.textContent=h.l10n.amPM[o(e>=12)]),void 0!==h.secondElement&&(h.secondElement.value=i(n)))}function _(e){var t=parseInt(e.target.value)+(e.delta||0);(t/1e3>1||"Enter"===e.key&&!/[^\d]/.test(t.toString()))&&Q(t)}function F(e,t,n,a){return t instanceof Array?t.forEach(function(t){return F(e,t,n,a)}):e instanceof Array?e.forEach(function(e){return F(e,t,n,a)}):(e.addEventListener(t,n,a),void h._handlers.push({element:e,event:t,handler:n,options:a}))}function N(e){return function(t){1===t.which&&e(t)}}function Y(){ge("onChange")}function A(e,t){var n=void 0!==e?h.parseDate(e):h.latestSelectedDateObj||(h.config.minDate&&h.config.minDate>h.now?h.config.minDate:h.config.maxDate&&h.config.maxDate<h.now?h.config.maxDate:h.now),a=h.currentYear,i=h.currentMonth;try{void 0!==n&&(h.currentYear=n.getFullYear(),h.currentMonth=n.getMonth())}catch(e){e.message="Invalid date supplied: "+n,h.config.errorHandler(e)}t&&h.currentYear!==a&&(ge("onYearChange"),K()),!t||h.currentYear===a&&h.currentMonth===i||ge("onMonthChange"),h.redraw()}function P(e){~e.target.className.indexOf("arrow")&&j(e,e.target.classList.contains("arrowUp")?1:-1)}function j(e,t,n){var a=e&&e.target,i=n||a&&a.parentNode&&a.parentNode.firstChild,o=pe("increment");o.delta=t,i&&i.dispatchEvent(o)}function H(e,t,n,a){var i=X(t,!0),o=d("span","flatpickr-day "+e,t.getDate().toString());return o.dateObj=t,o.$i=a,o.setAttribute("aria-label",h.formatDate(t,h.config.ariaDateFormat)),-1===e.indexOf("hidden")&&0===w(t,h.now)&&(h.todayDateElem=o,o.classList.add("today"),o.setAttribute("aria-current","date")),i?(o.tabIndex=-1,he(t)&&(o.classList.add("selected"),h.selectedDateElem=o,"range"===h.config.mode&&(c(o,"startRange",h.selectedDates[0]&&0===w(t,h.selectedDates[0],!0)),c(o,"endRange",h.selectedDates[1]&&0===w(t,h.selectedDates[1],!0)),"nextMonthDay"===e&&o.classList.add("inRange")))):o.classList.add("flatpickr-disabled"),"range"===h.config.mode&&function(e){return!("range"!==h.config.mode||h.selectedDates.length<2)&&w(e,h.selectedDates[0])>=0&&w(e,h.selectedDates[1])<=0}(t)&&!he(t)&&o.classList.add("inRange"),h.weekNumbers&&1===h.config.showMonths&&"prevMonthDay"!==e&&n%7==1&&h.weekNumbers.insertAdjacentHTML("beforeend","<span class='flatpickr-day'>"+h.config.getWeek(t)+"</span>"),ge("onDayCreate",o),o}function L(e){e.focus(),"range"===h.config.mode&&ne(e)}function W(e){for(var t=e>0?0:h.config.showMonths-1,n=e>0?h.config.showMonths:-1,a=t;a!=n;a+=e)for(var i=h.daysContainer.children[a],o=e>0?0:i.children.length-1,r=e>0?i.children.length:-1,l=o;l!=r;l+=e){var c=i.children[l];if(-1===c.className.indexOf("hidden")&&X(c.dateObj))return c}}function R(e,t){var n=ee(document.activeElement||document.body),a=void 0!==e?e:n?document.activeElement:void 0!==h.selectedDateElem&&ee(h.selectedDateElem)?h.selectedDateElem:void 0!==h.todayDateElem&&ee(h.todayDateElem)?h.todayDateElem:W(t>0?1:-1);return void 0===a?h._input.focus():n?void function(e,t){for(var n=-1===e.className.indexOf("Month")?e.dateObj.getMonth():h.currentMonth,a=t>0?h.config.showMonths:-1,i=t>0?1:-1,o=n-h.currentMonth;o!=a;o+=i)for(var r=h.daysContainer.children[o],l=n-h.currentMonth===o?e.$i+t:t<0?r.children.length-1:0,c=r.children.length,d=l;d>=0&&d<c&&d!=(t>0?c:-1);d+=i){var s=r.children[d];if(-1===s.className.indexOf("hidden")&&X(s.dateObj)&&Math.abs(e.$i-d)>=Math.abs(t))return L(s)}h.changeMonth(i),R(W(i),0)}(a,t):L(a)}function B(e,t){for(var n=(new Date(e,t,1).getDay()-h.l10n.firstDayOfWeek+7)%7,a=h.utils.getDaysInMonth((t-1+12)%12),i=h.utils.getDaysInMonth(t),o=window.document.createDocumentFragment(),r=h.config.showMonths>1,l=r?"prevMonthDay hidden":"prevMonthDay",c=r?"nextMonthDay hidden":"nextMonthDay",s=a+1-n,u=0;s<=a;s++,u++)o.appendChild(H(l,new Date(e,t-1,s),s,u));for(s=1;s<=i;s++,u++)o.appendChild(H("",new Date(e,t,s),s,u));for(var f=i+1;f<=42-n&&(1===h.config.showMonths||u%7!=0);f++,u++)o.appendChild(H(c,new Date(e,t+1,f%i),f,u));var m=d("div","dayContainer");return m.appendChild(o),m}function J(){if(void 0!==h.daysContainer){s(h.daysContainer),h.weekNumbers&&s(h.weekNumbers);for(var e=document.createDocumentFragment(),t=0;t<h.config.showMonths;t++){var n=new Date(h.currentYear,h.currentMonth,1);n.setMonth(h.currentMonth+t),e.appendChild(B(n.getFullYear(),n.getMonth()))}h.daysContainer.appendChild(e),h.days=h.daysContainer.firstChild,"range"===h.config.mode&&1===h.selectedDates.length&&ne()}}function K(){if(!(h.config.showMonths>1||"dropdown"!==h.config.monthSelectorType)){var e=function(e){return!(void 0!==h.config.minDate&&h.currentYear===h.config.minDate.getFullYear()&&e<h.config.minDate.getMonth())&&!(void 0!==h.config.maxDate&&h.currentYear===h.config.maxDate.getFullYear()&&e>h.config.maxDate.getMonth())};h.monthsDropdownContainer.tabIndex=-1,h.monthsDropdownContainer.innerHTML="";for(var t=0;t<12;t++)if(e(t)){var n=d("option","flatpickr-monthDropdown-month");n.value=new Date(h.currentYear,t).getMonth().toString(),n.textContent=m(t,h.config.shorthandCurrentMonth,h.l10n),n.tabIndex=-1,h.currentMonth===t&&(n.selected=!0),h.monthsDropdownContainer.appendChild(n)}}}function U(){var e,t=d("div","flatpickr-month"),n=window.document.createDocumentFragment();h.config.showMonths>1||"static"===h.config.monthSelectorType?e=d("span","cur-month"):(h.monthsDropdownContainer=d("select","flatpickr-monthDropdown-months"),F(h.monthsDropdownContainer,"change",function(e){var t=e.target,n=parseInt(t.value,10);h.changeMonth(n-h.currentMonth),ge("onMonthChange")}),K(),e=h.monthsDropdownContainer);var a=u("cur-year",{tabindex:"-1"}),i=a.getElementsByTagName("input")[0];i.setAttribute("aria-label",h.l10n.yearAriaLabel),h.config.minDate&&i.setAttribute("min",h.config.minDate.getFullYear().toString()),h.config.maxDate&&(i.setAttribute("max",h.config.maxDate.getFullYear().toString()),i.disabled=!!h.config.minDate&&h.config.minDate.getFullYear()===h.config.maxDate.getFullYear());var o=d("div","flatpickr-current-month");return o.appendChild(e),o.appendChild(a),n.appendChild(o),t.appendChild(n),{container:t,yearElement:i,monthElement:e}}function q(){s(h.monthNav),h.monthNav.appendChild(h.prevMonthNav),h.config.showMonths&&(h.yearElements=[],h.monthElements=[]);for(var e=h.config.showMonths;e--;){var t=U();h.yearElements.push(t.yearElement),h.monthElements.push(t.monthElement),h.monthNav.appendChild(t.container)}h.monthNav.appendChild(h.nextMonthNav)}function $(){h.weekdayContainer?s(h.weekdayContainer):h.weekdayContainer=d("div","flatpickr-weekdays");for(var e=h.config.showMonths;e--;){var t=d("div","flatpickr-weekdaycontainer");h.weekdayContainer.appendChild(t)}return z(),h.weekdayContainer}function z(){var e=h.l10n.firstDayOfWeek,t=h.l10n.weekdays.shorthand.slice();e>0&&e<t.length&&(t=t.splice(e,t.length).concat(t.splice(0,e)));for(var n=h.config.showMonths;n--;)h.weekdayContainer.children[n].innerHTML="\n      <span class='flatpickr-weekday'>\n        "+t.join("</span><span class='flatpickr-weekday'>")+"\n      </span>\n      "}function G(e,t){void 0===t&&(t=!0);var n=t?e:e-h.currentMonth;n<0&&!0===h._hidePrevMonthArrow||n>0&&!0===h._hideNextMonthArrow||(h.currentMonth+=n,(h.currentMonth<0||h.currentMonth>11)&&(h.currentYear+=h.currentMonth>11?1:-1,h.currentMonth=(h.currentMonth+12)%12,ge("onYearChange"),K()),J(),ge("onMonthChange"),ve())}function V(e){return!(!h.config.appendTo||!h.config.appendTo.contains(e))||h.calendarContainer.contains(e)}function Z(e){if(h.isOpen&&!h.config.inline){var t="function"==typeof(r=e).composedPath?r.composedPath()[0]:r.target,n=V(t),a=t===h.input||t===h.altInput||h.element.contains(t)||e.path&&e.path.indexOf&&(~e.path.indexOf(h.input)||~e.path.indexOf(h.altInput)),i="blur"===e.type?a&&e.relatedTarget&&!V(e.relatedTarget):!a&&!n&&!V(e.relatedTarget),o=!h.config.ignoredFocusElements.some(function(e){return e.contains(t)});i&&o&&(h.close(),"range"===h.config.mode&&1===h.selectedDates.length&&(h.clear(!1),h.redraw()))}var r}function Q(e){if(!(!e||h.config.minDate&&e<h.config.minDate.getFullYear()||h.config.maxDate&&e>h.config.maxDate.getFullYear())){var t=e,n=h.currentYear!==t;h.currentYear=t||h.currentYear,h.config.maxDate&&h.currentYear===h.config.maxDate.getFullYear()?h.currentMonth=Math.min(h.config.maxDate.getMonth(),h.currentMonth):h.config.minDate&&h.currentYear===h.config.minDate.getFullYear()&&(h.currentMonth=Math.max(h.config.minDate.getMonth(),h.currentMonth)),n&&(h.redraw(),ge("onYearChange"),K())}}function X(e,t){void 0===t&&(t=!0);var n=h.parseDate(e,void 0,t);if(h.config.minDate&&n&&w(n,h.config.minDate,void 0!==t?t:!h.minDateHasTime)<0||h.config.maxDate&&n&&w(n,h.config.maxDate,void 0!==t?t:!h.maxDateHasTime)>0)return!1;if(0===h.config.enable.length&&0===h.config.disable.length)return!0;if(void 0===n)return!1;for(var a=h.config.enable.length>0,i=a?h.config.enable:h.config.disable,o=0,r=void 0;o<i.length;o++){if("function"==typeof(r=i[o])&&r(n))return a;if(r instanceof Date&&void 0!==n&&r.getTime()===n.getTime())return a;if("string"==typeof r&&void 0!==n){var l=h.parseDate(r,void 0,!0);return l&&l.getTime()===n.getTime()?a:!a}if("object"==typeof r&&void 0!==n&&r.from&&r.to&&n.getTime()>=r.from.getTime()&&n.getTime()<=r.to.getTime())return a}return!a}function ee(e){return void 0!==h.daysContainer&&(-1===e.className.indexOf("hidden")&&h.daysContainer.contains(e))}function te(e){var t=e.target===h._input,n=h.config.allowInput,a=h.isOpen&&(!n||!t),i=h.config.inline&&t&&!n;if(13===e.keyCode&&t){if(n)return h.setDate(h._input.value,!0,e.target===h.altInput?h.config.altFormat:h.config.dateFormat),e.target.blur();h.open()}else if(V(e.target)||a||i){var o=!!h.timeContainer&&h.timeContainer.contains(e.target);switch(e.keyCode){case 13:o?(e.preventDefault(),T(),de()):se(e);break;case 27:e.preventDefault(),de();break;case 8:case 46:t&&!h.config.allowInput&&(e.preventDefault(),h.clear());break;case 37:case 39:if(o||t)h.hourElement&&h.hourElement.focus();else if(e.preventDefault(),void 0!==h.daysContainer&&(!1===n||document.activeElement&&ee(document.activeElement))){var r=39===e.keyCode?1:-1;e.ctrlKey?(e.stopPropagation(),G(r),R(W(1),0)):R(void 0,r)}break;case 38:case 40:e.preventDefault();var l=40===e.keyCode?1:-1;h.daysContainer&&void 0!==e.target.$i||e.target===h.input?e.ctrlKey?(e.stopPropagation(),Q(h.currentYear-l),R(W(1),0)):o||R(void 0,7*l):e.target===h.currentYearElement?Q(h.currentYear-l):h.config.enableTime&&(!o&&h.hourElement&&h.hourElement.focus(),T(e),h._debouncedChange());break;case 9:if(o){var c=[h.hourElement,h.minuteElement,h.secondElement,h.amPM].concat(h.pluginElements).filter(function(e){return e}),d=c.indexOf(e.target);if(-1!==d){var s=c[d+(e.shiftKey?-1:1)];e.preventDefault(),(s||h._input).focus()}}else!h.config.noCalendar&&h.daysContainer&&h.daysContainer.contains(e.target)&&e.shiftKey&&(e.preventDefault(),h._input.focus())}}if(void 0!==h.amPM&&e.target===h.amPM)switch(e.key){case h.l10n.amPM[0].charAt(0):case h.l10n.amPM[0].charAt(0).toLowerCase():h.amPM.textContent=h.l10n.amPM[0],k(),we();break;case h.l10n.amPM[1].charAt(0):case h.l10n.amPM[1].charAt(0).toLowerCase():h.amPM.textContent=h.l10n.amPM[1],k(),we()}(t||V(e.target))&&ge("onKeyDown",e)}function ne(e){if(1===h.selectedDates.length&&(!e||e.classList.contains("flatpickr-day")&&!e.classList.contains("flatpickr-disabled"))){for(var t=e?e.dateObj.getTime():h.days.firstElementChild.dateObj.getTime(),n=h.parseDate(h.selectedDates[0],void 0,!0).getTime(),a=Math.min(t,h.selectedDates[0].getTime()),i=Math.max(t,h.selectedDates[0].getTime()),o=!1,r=0,l=0,c=a;c<i;c+=C.DAY)X(new Date(c),!0)||(o=o||c>a&&c<i,c<n&&(!r||c>r)?r=c:c>n&&(!l||c<l)&&(l=c));for(var d=0;d<h.config.showMonths;d++)for(var s=h.daysContainer.children[d],u=function(a,i){var c=s.children[a],d=c.dateObj.getTime(),u=r>0&&d<r||l>0&&d>l;return u?(c.classList.add("notAllowed"),["inRange","startRange","endRange"].forEach(function(e){c.classList.remove(e)}),"continue"):o&&!u?"continue":(["startRange","inRange","endRange","notAllowed"].forEach(function(e){c.classList.remove(e)}),void(void 0!==e&&(e.classList.add(t<=h.selectedDates[0].getTime()?"startRange":"endRange"),n<t&&d===n?c.classList.add("startRange"):n>t&&d===n&&c.classList.add("endRange"),d>=r&&(0===l||d<=l)&&b(d,n,t)&&c.classList.add("inRange"))))},f=0,m=s.children.length;f<m;f++)u(f)}}function ae(){!h.isOpen||h.config.static||h.config.inline||le()}function ie(){h.setDate(void 0!==h.config.minDate?new Date(h.config.minDate.getTime()):new Date,!0),S(),we()}function oe(e){return function(t){var n=h.config["_"+e+"Date"]=h.parseDate(t,h.config.dateFormat),a=h.config["_"+("min"===e?"max":"min")+"Date"];void 0!==n&&(h["min"===e?"minDateHasTime":"maxDateHasTime"]=n.getHours()>0||n.getMinutes()>0||n.getSeconds()>0),h.selectedDates&&(h.selectedDates=h.selectedDates.filter(function(e){return X(e)}),h.selectedDates.length||"min"!==e||I(n),we()),h.daysContainer&&(ce(),void 0!==n?h.currentYearElement[e]=n.getFullYear().toString():h.currentYearElement.removeAttribute(e),h.currentYearElement.disabled=!!a&&void 0!==n&&a.getFullYear()===n.getFullYear())}}function re(){"object"!=typeof h.config.locale&&void 0===E.l10ns[h.config.locale]&&h.config.errorHandler(new Error("flatpickr: invalid locale "+h.config.locale)),h.l10n=e({},E.l10ns.default,"object"==typeof h.config.locale?h.config.locale:"default"!==h.config.locale?E.l10ns[h.config.locale]:void 0),p.K="("+h.l10n.amPM[0]+"|"+h.l10n.amPM[1]+"|"+h.l10n.amPM[0].toLowerCase()+"|"+h.l10n.amPM[1].toLowerCase()+")",void 0===e({},g,JSON.parse(JSON.stringify(f.dataset||{}))).time_24hr&&void 0===E.defaultConfig.time_24hr&&(h.config.time_24hr=h.l10n.time_24hr),h.formatDate=v(h),h.parseDate=D({config:h.config,l10n:h.l10n})}function le(e){if(void 0!==h.calendarContainer){ge("onPreCalendarPosition");var t=e||h._positionElement,n=Array.prototype.reduce.call(h.calendarContainer.children,function(e,t){return e+t.offsetHeight},0),a=h.calendarContainer.offsetWidth,i=h.config.position.split(" "),o=i[0],r=i.length>1?i[1]:null,l=t.getBoundingClientRect(),d=window.innerHeight-l.bottom,s="above"===o||"below"!==o&&d<n&&l.top>n,u=window.pageYOffset+l.top+(s?-n-2:t.offsetHeight+2);if(c(h.calendarContainer,"arrowTop",!s),c(h.calendarContainer,"arrowBottom",s),!h.config.inline){var f=window.pageXOffset+l.left-(null!=r&&"center"===r?(a-l.width)/2:0),m=window.document.body.offsetWidth-l.right,g=f+a>window.document.body.offsetWidth,p=m+a>window.document.body.offsetWidth;if(c(h.calendarContainer,"rightMost",g),!h.config.static)if(h.calendarContainer.style.top=u+"px",g)if(p){var v=document.styleSheets[0];if(void 0===v)return;var D=window.document.body.offsetWidth,w=Math.max(0,D/2-a/2),b=v.cssRules.length,C="{left:"+l.left+"px;right:auto;}";c(h.calendarContainer,"rightMost",!1),c(h.calendarContainer,"centerMost",!0),v.insertRule(".flatpickr-calendar.centerMost:before,.flatpickr-calendar.centerMost:after"+C,b),h.calendarContainer.style.left=w+"px",h.calendarContainer.style.right="auto"}else h.calendarContainer.style.left="auto",h.calendarContainer.style.right=m+"px";else h.calendarContainer.style.left=f+"px",h.calendarContainer.style.right="auto"}}}function ce(){h.config.noCalendar||h.isMobile||(ve(),J())}function de(){h._input.focus(),-1!==window.navigator.userAgent.indexOf("MSIE")||void 0!==navigator.msMaxTouchPoints?setTimeout(h.close,0):h.close()}function se(e){e.preventDefault(),e.stopPropagation();var t=function e(t,n){return n(t)?t:t.parentNode?e(t.parentNode,n):void 0}(e.target,function(e){return e.classList&&e.classList.contains("flatpickr-day")&&!e.classList.contains("flatpickr-disabled")&&!e.classList.contains("notAllowed")});if(void 0!==t){var n=t,a=h.latestSelectedDateObj=new Date(n.dateObj.getTime()),i=(a.getMonth()<h.currentMonth||a.getMonth()>h.currentMonth+h.config.showMonths-1)&&"range"!==h.config.mode;if(h.selectedDateElem=n,"single"===h.config.mode)h.selectedDates=[a];else if("multiple"===h.config.mode){var o=he(a);o?h.selectedDates.splice(parseInt(o),1):h.selectedDates.push(a)}else"range"===h.config.mode&&(2===h.selectedDates.length&&h.clear(!1,!1),h.latestSelectedDateObj=a,h.selectedDates.push(a),0!==w(a,h.selectedDates[0],!0)&&h.selectedDates.sort(function(e,t){return e.getTime()-t.getTime()}));if(k(),i){var r=h.currentYear!==a.getFullYear();h.currentYear=a.getFullYear(),h.currentMonth=a.getMonth(),r&&(ge("onYearChange"),K()),ge("onMonthChange")}if(ve(),J(),we(),h.config.enableTime&&setTimeout(function(){return h.showTimeInput=!0},50),i||"range"===h.config.mode||1!==h.config.showMonths?void 0!==h.selectedDateElem&&void 0===h.hourElement&&h.selectedDateElem&&h.selectedDateElem.focus():L(n),void 0!==h.hourElement&&void 0!==h.hourElement&&h.hourElement.focus(),h.config.closeOnSelect){var l="single"===h.config.mode&&!h.config.enableTime,c="range"===h.config.mode&&2===h.selectedDates.length&&!h.config.enableTime;(l||c)&&de()}Y()}}h.parseDate=D({config:h.config,l10n:h.l10n}),h._handlers=[],h.pluginElements=[],h.loadedPlugins=[],h._bind=F,h._setHoursFromDate=I,h._positionCalendar=le,h.changeMonth=G,h.changeYear=Q,h.clear=function(e,t){void 0===e&&(e=!0);void 0===t&&(t=!0);h.input.value="",void 0!==h.altInput&&(h.altInput.value="");void 0!==h.mobileInput&&(h.mobileInput.value="");h.selectedDates=[],h.latestSelectedDateObj=void 0,!0===t&&(h.currentYear=h._initialDate.getFullYear(),h.currentMonth=h._initialDate.getMonth());h.showTimeInput=!1,!0===h.config.enableTime&&S();h.redraw(),e&&ge("onChange")},h.close=function(){h.isOpen=!1,h.isMobile||(void 0!==h.calendarContainer&&h.calendarContainer.classList.remove("open"),void 0!==h._input&&h._input.classList.remove("active"));ge("onClose")},h._createElement=d,h.destroy=function(){void 0!==h.config&&ge("onDestroy");for(var e=h._handlers.length;e--;){var t=h._handlers[e];t.element.removeEventListener(t.event,t.handler,t.options)}if(h._handlers=[],h.mobileInput)h.mobileInput.parentNode&&h.mobileInput.parentNode.removeChild(h.mobileInput),h.mobileInput=void 0;else if(h.calendarContainer&&h.calendarContainer.parentNode)if(h.config.static&&h.calendarContainer.parentNode){var n=h.calendarContainer.parentNode;if(n.lastChild&&n.removeChild(n.lastChild),n.parentNode){for(;n.firstChild;)n.parentNode.insertBefore(n.firstChild,n);n.parentNode.removeChild(n)}}else h.calendarContainer.parentNode.removeChild(h.calendarContainer);h.altInput&&(h.input.type="text",h.altInput.parentNode&&h.altInput.parentNode.removeChild(h.altInput),delete h.altInput);h.input&&(h.input.type=h.input._type,h.input.classList.remove("flatpickr-input"),h.input.removeAttribute("readonly"),h.input.value="");["_showTimeInput","latestSelectedDateObj","_hideNextMonthArrow","_hidePrevMonthArrow","__hideNextMonthArrow","__hidePrevMonthArrow","isMobile","isOpen","selectedDateElem","minDateHasTime","maxDateHasTime","days","daysContainer","_input","_positionElement","innerContainer","rContainer","monthNav","todayDateElem","calendarContainer","weekdayContainer","prevMonthNav","nextMonthNav","monthsDropdownContainer","currentMonthElement","currentYearElement","navigationCurrentMonth","selectedDateElem","config"].forEach(function(e){try{delete h[e]}catch(e){}})},h.isEnabled=X,h.jumpToDate=A,h.open=function(e,t){void 0===t&&(t=h._positionElement);if(!0===h.isMobile)return e&&(e.preventDefault(),e.target&&e.target.blur()),void 0!==h.mobileInput&&(h.mobileInput.focus(),h.mobileInput.click()),void ge("onOpen");if(h._input.disabled||h.config.inline)return;var n=h.isOpen;h.isOpen=!0,n||(h.calendarContainer.classList.add("open"),h._input.classList.add("active"),ge("onOpen"),le(t));!0===h.config.enableTime&&!0===h.config.noCalendar&&(0===h.selectedDates.length&&ie(),!1!==h.config.allowInput||void 0!==e&&h.timeContainer.contains(e.relatedTarget)||setTimeout(function(){return h.hourElement.select()},50))},h.redraw=ce,h.set=function(e,n){if(null!==e&&"object"==typeof e)for(var a in Object.assign(h.config,e),e)void 0!==ue[a]&&ue[a].forEach(function(e){return e()});else h.config[e]=n,void 0!==ue[e]?ue[e].forEach(function(e){return e()}):t.indexOf(e)>-1&&(h.config[e]=l(n));h.redraw(),we(!1)},h.setDate=function(e,t,n){void 0===t&&(t=!1);void 0===n&&(n=h.config.dateFormat);if(0!==e&&!e||e instanceof Array&&0===e.length)return h.clear(t);fe(e,n),h.showTimeInput=h.selectedDates.length>0,h.latestSelectedDateObj=h.selectedDates[h.selectedDates.length-1],h.redraw(),A(),I(),0===h.selectedDates.length&&h.clear(!1);we(t),t&&ge("onChange")},h.toggle=function(e){if(!0===h.isOpen)return h.close();h.open(e)};var ue={locale:[re,z],showMonths:[q,x,$],minDate:[A],maxDate:[A]};function fe(e,t){var n=[];if(e instanceof Array)n=e.map(function(e){return h.parseDate(e,t)});else if(e instanceof Date||"number"==typeof e)n=[h.parseDate(e,t)];else if("string"==typeof e)switch(h.config.mode){case"single":case"time":n=[h.parseDate(e,t)];break;case"multiple":n=e.split(h.config.conjunction).map(function(e){return h.parseDate(e,t)});break;case"range":n=e.split(h.l10n.rangeSeparator).map(function(e){return h.parseDate(e,t)})}else h.config.errorHandler(new Error("Invalid date supplied: "+JSON.stringify(e)));h.selectedDates=n.filter(function(e){return e instanceof Date&&X(e,!1)}),"range"===h.config.mode&&h.selectedDates.sort(function(e,t){return e.getTime()-t.getTime()})}function me(e){return e.slice().map(function(e){return"string"==typeof e||"number"==typeof e||e instanceof Date?h.parseDate(e,void 0,!0):e&&"object"==typeof e&&e.from&&e.to?{from:h.parseDate(e.from,void 0),to:h.parseDate(e.to,void 0)}:e}).filter(function(e){return e})}function ge(e,t){if(void 0!==h.config){var n=h.config[e];if(void 0!==n&&n.length>0)for(var a=0;n[a]&&a<n.length;a++)n[a](h.selectedDates,h.input.value,h,t);"onChange"===e&&(h.input.dispatchEvent(pe("change")),h.input.dispatchEvent(pe("input")))}}function pe(e){var t=document.createEvent("Event");return t.initEvent(e,!0,!0),t}function he(e){for(var t=0;t<h.selectedDates.length;t++)if(0===w(h.selectedDates[t],e))return""+t;return!1}function ve(){h.config.noCalendar||h.isMobile||!h.monthNav||(h.yearElements.forEach(function(e,t){var n=new Date(h.currentYear,h.currentMonth,1);n.setMonth(h.currentMonth+t),h.config.showMonths>1||"static"===h.config.monthSelectorType?h.monthElements[t].textContent=m(n.getMonth(),h.config.shorthandCurrentMonth,h.l10n)+" ":h.monthsDropdownContainer.value=n.getMonth().toString(),e.value=n.getFullYear().toString()}),h._hidePrevMonthArrow=void 0!==h.config.minDate&&(h.currentYear===h.config.minDate.getFullYear()?h.currentMonth<=h.config.minDate.getMonth():h.currentYear<h.config.minDate.getFullYear()),h._hideNextMonthArrow=void 0!==h.config.maxDate&&(h.currentYear===h.config.maxDate.getFullYear()?h.currentMonth+1>h.config.maxDate.getMonth():h.currentYear>h.config.maxDate.getFullYear()))}function De(e){return h.selectedDates.map(function(t){return h.formatDate(t,e)}).filter(function(e,t,n){return"range"!==h.config.mode||h.config.enableTime||n.indexOf(e)===t}).join("range"!==h.config.mode?h.config.conjunction:h.l10n.rangeSeparator)}function we(e){void 0===e&&(e=!0),void 0!==h.mobileInput&&h.mobileFormatStr&&(h.mobileInput.value=void 0!==h.latestSelectedDateObj?h.formatDate(h.latestSelectedDateObj,h.mobileFormatStr):""),h.input.value=De(h.config.dateFormat),void 0!==h.altInput&&(h.altInput.value=De(h.config.altFormat)),!1!==e&&ge("onValueUpdate")}function be(e){var t=h.prevMonthNav.contains(e.target),n=h.nextMonthNav.contains(e.target);t||n?G(t?-1:1):h.yearElements.indexOf(e.target)>=0?e.target.select():e.target.classList.contains("arrowUp")?h.changeYear(h.currentYear+1):e.target.classList.contains("arrowDown")&&h.changeYear(h.currentYear-1)}return function(){h.element=h.input=f,h.isOpen=!1,function(){var a=["wrap","weekNumbers","allowInput","clickOpens","time_24hr","enableTime","noCalendar","altInput","shorthandCurrentMonth","inline","static","enableSeconds","disableMobile"],i=e({},g,JSON.parse(JSON.stringify(f.dataset||{}))),o={};h.config.parseDate=i.parseDate,h.config.formatDate=i.formatDate,Object.defineProperty(h.config,"enable",{get:function(){return h.config._enable},set:function(e){h.config._enable=me(e)}}),Object.defineProperty(h.config,"disable",{get:function(){return h.config._disable},set:function(e){h.config._disable=me(e)}});var r="time"===i.mode;if(!i.dateFormat&&(i.enableTime||r)){var c=E.defaultConfig.dateFormat||n.dateFormat;o.dateFormat=i.noCalendar||r?"H:i"+(i.enableSeconds?":S":""):c+" H:i"+(i.enableSeconds?":S":"")}if(i.altInput&&(i.enableTime||r)&&!i.altFormat){var d=E.defaultConfig.altFormat||n.altFormat;o.altFormat=i.noCalendar||r?"h:i"+(i.enableSeconds?":S K":" K"):d+" h:i"+(i.enableSeconds?":S":"")+" K"}i.altInputClass||(h.config.altInputClass=h.input.className+" "+h.config.altInputClass),Object.defineProperty(h.config,"minDate",{get:function(){return h.config._minDate},set:oe("min")}),Object.defineProperty(h.config,"maxDate",{get:function(){return h.config._maxDate},set:oe("max")});var s=function(e){return function(t){h.config["min"===e?"_minTime":"_maxTime"]=h.parseDate(t,"H:i")}};Object.defineProperty(h.config,"minTime",{get:function(){return h.config._minTime},set:s("min")}),Object.defineProperty(h.config,"maxTime",{get:function(){return h.config._maxTime},set:s("max")}),"time"===i.mode&&(h.config.noCalendar=!0,h.config.enableTime=!0),Object.assign(h.config,o,i);for(var u=0;u<a.length;u++)h.config[a[u]]=!0===h.config[a[u]]||"true"===h.config[a[u]];t.filter(function(e){return void 0!==h.config[e]}).forEach(function(e){h.config[e]=l(h.config[e]||[]).map(y)}),h.isMobile=!h.config.disableMobile&&!h.config.inline&&"single"===h.config.mode&&!h.config.disable.length&&!h.config.enable.length&&!h.config.weekNumbers&&/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);for(var u=0;u<h.config.plugins.length;u++){var m=h.config.plugins[u](h)||{};for(var p in m)t.indexOf(p)>-1?h.config[p]=l(m[p]).map(y).concat(h.config[p]):void 0===i[p]&&(h.config[p]=m[p])}ge("onParseConfig")}(),re(),h.input=h.config.wrap?f.querySelector("[data-input]"):f,h.input?(h.input._type=h.input.type,h.input.type="text",h.input.classList.add("flatpickr-input"),h._input=h.input,h.config.altInput&&(h.altInput=d(h.input.nodeName,h.config.altInputClass),h._input=h.altInput,h.altInput.placeholder=h.input.placeholder,h.altInput.disabled=h.input.disabled,h.altInput.required=h.input.required,h.altInput.tabIndex=h.input.tabIndex,h.altInput.type="text",h.input.setAttribute("type","hidden"),!h.config.static&&h.input.parentNode&&h.input.parentNode.insertBefore(h.altInput,h.input.nextSibling)),h.config.allowInput||h._input.setAttribute("readonly","readonly"),h._positionElement=h.config.positionElement||h._input):h.config.errorHandler(new Error("Invalid input element specified")),function(){h.selectedDates=[],h.now=h.parseDate(h.config.now)||new Date;var e=h.config.defaultDate||("INPUT"!==h.input.nodeName&&"TEXTAREA"!==h.input.nodeName||!h.input.placeholder||h.input.value!==h.input.placeholder?h.input.value:null);e&&fe(e,h.config.dateFormat),h._initialDate=h.selectedDates.length>0?h.selectedDates[0]:h.config.minDate&&h.config.minDate.getTime()>h.now.getTime()?h.config.minDate:h.config.maxDate&&h.config.maxDate.getTime()<h.now.getTime()?h.config.maxDate:h.now,h.currentYear=h._initialDate.getFullYear(),h.currentMonth=h._initialDate.getMonth(),h.selectedDates.length>0&&(h.latestSelectedDateObj=h.selectedDates[0]),void 0!==h.config.minTime&&(h.config.minTime=h.parseDate(h.config.minTime,"H:i")),void 0!==h.config.maxTime&&(h.config.maxTime=h.parseDate(h.config.maxTime,"H:i")),h.minDateHasTime=!!h.config.minDate&&(h.config.minDate.getHours()>0||h.config.minDate.getMinutes()>0||h.config.minDate.getSeconds()>0),h.maxDateHasTime=!!h.config.maxDate&&(h.config.maxDate.getHours()>0||h.config.maxDate.getMinutes()>0||h.config.maxDate.getSeconds()>0),Object.defineProperty(h,"showTimeInput",{get:function(){return h._showTimeInput},set:function(e){h._showTimeInput=e,h.calendarContainer&&c(h.calendarContainer,"showTimeInput",e),h.isOpen&&le()}})}(),h.utils={getDaysInMonth:function(e,t){return void 0===e&&(e=h.currentMonth),void 0===t&&(t=h.currentYear),1===e&&(t%4==0&&t%100!=0||t%400==0)?29:h.l10n.daysInMonth[e]}},h.isMobile||function(){var e=window.document.createDocumentFragment();if(h.calendarContainer=d("div","flatpickr-calendar"),h.calendarContainer.tabIndex=-1,!h.config.noCalendar){if(e.appendChild((h.monthNav=d("div","flatpickr-months"),h.yearElements=[],h.monthElements=[],h.prevMonthNav=d("span","flatpickr-prev-month"),h.prevMonthNav.innerHTML=h.config.prevArrow,h.nextMonthNav=d("span","flatpickr-next-month"),h.nextMonthNav.innerHTML=h.config.nextArrow,q(),Object.defineProperty(h,"_hidePrevMonthArrow",{get:function(){return h.__hidePrevMonthArrow},set:function(e){h.__hidePrevMonthArrow!==e&&(c(h.prevMonthNav,"flatpickr-disabled",e),h.__hidePrevMonthArrow=e)}}),Object.defineProperty(h,"_hideNextMonthArrow",{get:function(){return h.__hideNextMonthArrow},set:function(e){h.__hideNextMonthArrow!==e&&(c(h.nextMonthNav,"flatpickr-disabled",e),h.__hideNextMonthArrow=e)}}),h.currentYearElement=h.yearElements[0],ve(),h.monthNav)),h.innerContainer=d("div","flatpickr-innerContainer"),h.config.weekNumbers){var t=function(){h.calendarContainer.classList.add("hasWeeks");var e=d("div","flatpickr-weekwrapper");e.appendChild(d("span","flatpickr-weekday",h.l10n.weekAbbreviation));var t=d("div","flatpickr-weeks");return e.appendChild(t),{weekWrapper:e,weekNumbers:t}}(),n=t.weekWrapper,a=t.weekNumbers;h.innerContainer.appendChild(n),h.weekNumbers=a,h.weekWrapper=n}h.rContainer=d("div","flatpickr-rContainer"),h.rContainer.appendChild($()),h.daysContainer||(h.daysContainer=d("div","flatpickr-days"),h.daysContainer.tabIndex=-1),J(),h.rContainer.appendChild(h.daysContainer),h.innerContainer.appendChild(h.rContainer),e.appendChild(h.innerContainer)}h.config.enableTime&&e.appendChild(function(){h.calendarContainer.classList.add("hasTime"),h.config.noCalendar&&h.calendarContainer.classList.add("noCalendar"),h.timeContainer=d("div","flatpickr-time"),h.timeContainer.tabIndex=-1;var e=d("span","flatpickr-time-separator",":"),t=u("flatpickr-hour",{"aria-label":h.l10n.hourAriaLabel});h.hourElement=t.getElementsByTagName("input")[0];var n=u("flatpickr-minute",{"aria-label":h.l10n.minuteAriaLabel});if(h.minuteElement=n.getElementsByTagName("input")[0],h.hourElement.tabIndex=h.minuteElement.tabIndex=-1,h.hourElement.value=i(h.latestSelectedDateObj?h.latestSelectedDateObj.getHours():h.config.time_24hr?h.config.defaultHour:function(e){switch(e%24){case 0:case 12:return 12;default:return e%12}}(h.config.defaultHour)),h.minuteElement.value=i(h.latestSelectedDateObj?h.latestSelectedDateObj.getMinutes():h.config.defaultMinute),h.hourElement.setAttribute("step",h.config.hourIncrement.toString()),h.minuteElement.setAttribute("step",h.config.minuteIncrement.toString()),h.hourElement.setAttribute("min",h.config.time_24hr?"0":"1"),h.hourElement.setAttribute("max",h.config.time_24hr?"23":"12"),h.minuteElement.setAttribute("min","0"),h.minuteElement.setAttribute("max","59"),h.timeContainer.appendChild(t),h.timeContainer.appendChild(e),h.timeContainer.appendChild(n),h.config.time_24hr&&h.timeContainer.classList.add("time24hr"),h.config.enableSeconds){h.timeContainer.classList.add("hasSeconds");var a=u("flatpickr-second");h.secondElement=a.getElementsByTagName("input")[0],h.secondElement.value=i(h.latestSelectedDateObj?h.latestSelectedDateObj.getSeconds():h.config.defaultSeconds),h.secondElement.setAttribute("step",h.minuteElement.getAttribute("step")),h.secondElement.setAttribute("min","0"),h.secondElement.setAttribute("max","59"),h.timeContainer.appendChild(d("span","flatpickr-time-separator",":")),h.timeContainer.appendChild(a)}return h.config.time_24hr||(h.amPM=d("span","flatpickr-am-pm",h.l10n.amPM[o((h.latestSelectedDateObj?h.hourElement.value:h.config.defaultHour)>11)]),h.amPM.title=h.l10n.toggleTitle,h.amPM.tabIndex=-1,h.timeContainer.appendChild(h.amPM)),h.timeContainer}()),c(h.calendarContainer,"rangeMode","range"===h.config.mode),c(h.calendarContainer,"animate",!0===h.config.animate),c(h.calendarContainer,"multiMonth",h.config.showMonths>1),h.calendarContainer.appendChild(e);var r=void 0!==h.config.appendTo&&void 0!==h.config.appendTo.nodeType;if((h.config.inline||h.config.static)&&(h.calendarContainer.classList.add(h.config.inline?"inline":"static"),h.config.inline&&(!r&&h.element.parentNode?h.element.parentNode.insertBefore(h.calendarContainer,h._input.nextSibling):void 0!==h.config.appendTo&&h.config.appendTo.appendChild(h.calendarContainer)),h.config.static)){var l=d("div","flatpickr-wrapper");h.element.parentNode&&h.element.parentNode.insertBefore(l,h.element),l.appendChild(h.element),h.altInput&&l.appendChild(h.altInput),l.appendChild(h.calendarContainer)}h.config.static||h.config.inline||(void 0!==h.config.appendTo?h.config.appendTo:window.document.body).appendChild(h.calendarContainer)}(),function(){if(h.config.wrap&&["open","close","toggle","clear"].forEach(function(e){Array.prototype.forEach.call(h.element.querySelectorAll("[data-"+e+"]"),function(t){return F(t,"click",h[e])})}),h.isMobile)!function(){var e=h.config.enableTime?h.config.noCalendar?"time":"datetime-local":"date";h.mobileInput=d("input",h.input.className+" flatpickr-mobile"),h.mobileInput.step=h.input.getAttribute("step")||"any",h.mobileInput.tabIndex=1,h.mobileInput.type=e,h.mobileInput.disabled=h.input.disabled,h.mobileInput.required=h.input.required,h.mobileInput.placeholder=h.input.placeholder,h.mobileFormatStr="datetime-local"===e?"Y-m-d\\TH:i:S":"date"===e?"Y-m-d":"H:i:S",h.selectedDates.length>0&&(h.mobileInput.defaultValue=h.mobileInput.value=h.formatDate(h.selectedDates[0],h.mobileFormatStr)),h.config.minDate&&(h.mobileInput.min=h.formatDate(h.config.minDate,"Y-m-d")),h.config.maxDate&&(h.mobileInput.max=h.formatDate(h.config.maxDate,"Y-m-d")),h.input.type="hidden",void 0!==h.altInput&&(h.altInput.type="hidden");try{h.input.parentNode&&h.input.parentNode.insertBefore(h.mobileInput,h.input.nextSibling)}catch(e){}F(h.mobileInput,"change",function(e){h.setDate(e.target.value,!1,h.mobileFormatStr),ge("onChange"),ge("onClose")})}();else{var e=r(ae,50);h._debouncedChange=r(Y,M),h.daysContainer&&!/iPhone|iPad|iPod/i.test(navigator.userAgent)&&F(h.daysContainer,"mouseover",function(e){"range"===h.config.mode&&ne(e.target)}),F(window.document.body,"keydown",te),h.config.inline||h.config.static||F(window,"resize",e),void 0!==window.ontouchstart?F(window.document,"touchstart",Z):F(window.document,"mousedown",N(Z)),F(window.document,"focus",Z,{capture:!0}),!0===h.config.clickOpens&&(F(h._input,"focus",h.open),F(h._input,"mousedown",N(h.open))),void 0!==h.daysContainer&&(F(h.monthNav,"mousedown",N(be)),F(h.monthNav,["keyup","increment"],_),F(h.daysContainer,"mousedown",N(se))),void 0!==h.timeContainer&&void 0!==h.minuteElement&&void 0!==h.hourElement&&(F(h.timeContainer,["increment"],T),F(h.timeContainer,"blur",T,{capture:!0}),F(h.timeContainer,"mousedown",N(P)),F([h.hourElement,h.minuteElement],["focus","click"],function(e){return e.target.select()}),void 0!==h.secondElement&&F(h.secondElement,"focus",function(){return h.secondElement&&h.secondElement.select()}),void 0!==h.amPM&&F(h.amPM,"mousedown",N(function(e){T(e),Y()})))}}(),(h.selectedDates.length||h.config.noCalendar)&&(h.config.enableTime&&I(h.config.noCalendar?h.latestSelectedDateObj||h.config.minDate:void 0),we(!1)),x(),h.showTimeInput=h.selectedDates.length>0||h.config.noCalendar;var a=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);!h.isMobile&&a&&le(),ge("onReady")}(),h}function x(e,t){for(var n=Array.prototype.slice.call(e).filter(function(e){return e instanceof HTMLElement}),a=[],i=0;i<n.length;i++){var o=n[i];try{if(null!==o.getAttribute("data-fp-omit"))continue;void 0!==o._flatpickr&&(o._flatpickr.destroy(),o._flatpickr=void 0),o._flatpickr=y(o,t||{}),a.push(o._flatpickr)}catch(e){console.error(e)}}return 1===a.length?a[0]:a}"undefined"!=typeof HTMLElement&&"undefined"!=typeof HTMLCollection&&"undefined"!=typeof NodeList&&(HTMLCollection.prototype.flatpickr=NodeList.prototype.flatpickr=function(e){return x(this,e)},HTMLElement.prototype.flatpickr=function(e){return x([this],e)});var E=function(e,t){return"string"==typeof e?x(window.document.querySelectorAll(e),t):e instanceof Node?x([e],t):x(e,t)};return E.defaultConfig={},E.l10ns={en:e({},a),default:e({},a)},E.localize=function(t){E.l10ns.default=e({},E.l10ns.default,t)},E.setDefaults=function(t){E.defaultConfig=e({},E.defaultConfig,t)},E.parseDate=D({}),E.formatDate=v({}),E.compareDates=w,"undefined"!=typeof jQuery&&void 0!==jQuery.fn&&(jQuery.fn.flatpickr=function(e){return x(this,e)}),Date.prototype.fp_incr=function(e){return new Date(this.getFullYear(),this.getMonth(),this.getDate()+("string"==typeof e?parseInt(e,10):e))},"undefined"!=typeof window&&(window.flatpickr=E),E});
\ No newline at end of file
diff --git a/app/static/vendors/flatpickr/ie.css b/app/static/vendors/flatpickr/ie.css
deleted file mode 100644 (file)
index 30d7f76..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-span.flatpickr-weekday {
-  display: inline-block;
-  width: 14.2857143%;
-}
-span.flatpickr-day {
-  width: 14.2857143%;
-  margin: 0 2.491071428571428px;
-}
-@media screen and (min-width: 0\0) {
-  div.flatpickr-current-month {
-    padding-top: 0px !important;
-  }
-}
diff --git a/app/static/vendors/flatpickr/index.d.ts b/app/static/vendors/flatpickr/index.d.ts
deleted file mode 100644 (file)
index a3893d5..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-import { FlatpickrFn } from "./types/instance";
-import "./utils/polyfills";
-declare var flatpickr: FlatpickrFn;
-export default flatpickr;
diff --git a/app/static/vendors/flatpickr/l10n/de.d.ts b/app/static/vendors/flatpickr/l10n/de.d.ts
deleted file mode 100644 (file)
index c7d46df..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-import { CustomLocale } from "../types/locale";
-export declare const German: CustomLocale;
-declare const _default: {
-    default?: CustomLocale | undefined;
-    hr?: CustomLocale | undefined;
-    th?: CustomLocale | undefined;
-    tr?: CustomLocale | undefined;
-    ar?: CustomLocale | undefined;
-    at?: CustomLocale | undefined;
-    az?: CustomLocale | undefined;
-    be?: CustomLocale | undefined;
-    bg?: CustomLocale | undefined;
-    bn?: CustomLocale | undefined;
-    bs?: CustomLocale | undefined;
-    cat?: CustomLocale | undefined;
-    cs?: CustomLocale | undefined;
-    cy?: CustomLocale | undefined;
-    da?: CustomLocale | undefined;
-    de?: CustomLocale | undefined;
-    en?: CustomLocale | undefined;
-    eo?: CustomLocale | undefined;
-    es?: CustomLocale | undefined;
-    et?: CustomLocale | undefined;
-    fa?: CustomLocale | undefined;
-    fi?: CustomLocale | undefined;
-    fo?: CustomLocale | undefined;
-    fr?: CustomLocale | undefined;
-    gr?: CustomLocale | undefined;
-    he?: CustomLocale | undefined;
-    hi?: CustomLocale | undefined;
-    hu?: CustomLocale | undefined;
-    id?: CustomLocale | undefined;
-    is?: CustomLocale | undefined;
-    it?: CustomLocale | undefined;
-    ja?: CustomLocale | undefined;
-    ka?: CustomLocale | undefined;
-    ko?: CustomLocale | undefined;
-    km?: CustomLocale | undefined;
-    kz?: CustomLocale | undefined;
-    lt?: CustomLocale | undefined;
-    lv?: CustomLocale | undefined;
-    mk?: CustomLocale | undefined;
-    mn?: CustomLocale | undefined;
-    ms?: CustomLocale | undefined;
-    my?: CustomLocale | undefined;
-    nl?: CustomLocale | undefined;
-    no?: CustomLocale | undefined;
-    pa?: CustomLocale | undefined;
-    pl?: CustomLocale | undefined;
-    pt?: CustomLocale | undefined;
-    ro?: CustomLocale | undefined;
-    ru?: CustomLocale | undefined;
-    si?: CustomLocale | undefined;
-    sk?: CustomLocale | undefined;
-    sl?: CustomLocale | undefined;
-    sq?: CustomLocale | undefined;
-    sr?: CustomLocale | undefined;
-    sv?: CustomLocale | undefined;
-    uk?: CustomLocale | undefined;
-    vn?: CustomLocale | undefined;
-    zh?: CustomLocale | undefined;
-    zh_tw?: CustomLocale | undefined;
-} & {
-    default: import("../types/locale").Locale;
-};
-export default _default;
diff --git a/app/static/vendors/flatpickr/l10n/de.js b/app/static/vendors/flatpickr/l10n/de.js
deleted file mode 100644 (file)
index c413375..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-(function (global, factory) {
-  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
-  typeof define === 'function' && define.amd ? define(['exports'], factory) :
-  (global = global || self, factory(global.de = {}));
-}(this, function (exports) { 'use strict';
-
-  var fp = typeof window !== "undefined" && window.flatpickr !== undefined
-      ? window.flatpickr
-      : {
-          l10ns: {}
-      };
-  var German = {
-      weekdays: {
-          shorthand: ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"],
-          longhand: [
-              "Sonntag",
-              "Montag",
-              "Dienstag",
-              "Mittwoch",
-              "Donnerstag",
-              "Freitag",
-              "Samstag",
-          ]
-      },
-      months: {
-          shorthand: [
-              "Jan",
-              "Feb",
-              "Mär",
-              "Apr",
-              "Mai",
-              "Jun",
-              "Jul",
-              "Aug",
-              "Sep",
-              "Okt",
-              "Nov",
-              "Dez",
-          ],
-          longhand: [
-              "Januar",
-              "Februar",
-              "März",
-              "April",
-              "Mai",
-              "Juni",
-              "Juli",
-              "August",
-              "September",
-              "Oktober",
-              "November",
-              "Dezember",
-          ]
-      },
-      firstDayOfWeek: 1,
-      weekAbbreviation: "KW",
-      rangeSeparator: " bis ",
-      scrollTitle: "Zum Ändern scrollen",
-      toggleTitle: "Zum Umschalten klicken",
-      time_24hr: true
-  };
-  fp.l10ns.de = German;
-  var de = fp.l10ns;
-
-  exports.German = German;
-  exports.default = de;
-
-  Object.defineProperty(exports, '__esModule', { value: true });
-
-}));
diff --git a/app/static/vendors/flatpickr/l10n/default.d.ts b/app/static/vendors/flatpickr/l10n/default.d.ts
deleted file mode 100644 (file)
index ba7d9bb..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-import { Locale } from "../types/locale";
-export declare const english: Locale;
-export default english;
diff --git a/app/static/vendors/flatpickr/l10n/default.js b/app/static/vendors/flatpickr/l10n/default.js
deleted file mode 100644 (file)
index 6b19324..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-(function (global, factory) {
-  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
-  typeof define === 'function' && define.amd ? define(['exports'], factory) :
-  (global = global || self, factory(global.default = {}));
-}(this, function (exports) { 'use strict';
-
-  var english = {
-      weekdays: {
-          shorthand: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
-          longhand: [
-              "Sunday",
-              "Monday",
-              "Tuesday",
-              "Wednesday",
-              "Thursday",
-              "Friday",
-              "Saturday",
-          ]
-      },
-      months: {
-          shorthand: [
-              "Jan",
-              "Feb",
-              "Mar",
-              "Apr",
-              "May",
-              "Jun",
-              "Jul",
-              "Aug",
-              "Sep",
-              "Oct",
-              "Nov",
-              "Dec",
-          ],
-          longhand: [
-              "January",
-              "February",
-              "March",
-              "April",
-              "May",
-              "June",
-              "July",
-              "August",
-              "September",
-              "October",
-              "November",
-              "December",
-          ]
-      },
-      daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
-      firstDayOfWeek: 0,
-      ordinal: function (nth) {
-          var s = nth % 100;
-          if (s > 3 && s < 21)
-              return "th";
-          switch (s % 10) {
-              case 1:
-                  return "st";
-              case 2:
-                  return "nd";
-              case 3:
-                  return "rd";
-              default:
-                  return "th";
-          }
-      },
-      rangeSeparator: " to ",
-      weekAbbreviation: "Wk",
-      scrollTitle: "Scroll to increment",
-      toggleTitle: "Click to toggle",
-      amPM: ["AM", "PM"],
-      yearAriaLabel: "Year",
-      hourAriaLabel: "Hour",
-      minuteAriaLabel: "Minute",
-      time_24hr: false
-  };
-
-  exports.default = english;
-  exports.english = english;
-
-  Object.defineProperty(exports, '__esModule', { value: true });
-
-}));
diff --git a/app/static/vendors/flatpickr/l10n/fr.d.ts b/app/static/vendors/flatpickr/l10n/fr.d.ts
deleted file mode 100644 (file)
index 7b51e27..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-import { CustomLocale } from "../types/locale";
-export declare const French: CustomLocale;
-declare const _default: {
-    default?: CustomLocale | undefined;
-    hr?: CustomLocale | undefined;
-    th?: CustomLocale | undefined;
-    tr?: CustomLocale | undefined;
-    ar?: CustomLocale | undefined;
-    at?: CustomLocale | undefined;
-    az?: CustomLocale | undefined;
-    be?: CustomLocale | undefined;
-    bg?: CustomLocale | undefined;
-    bn?: CustomLocale | undefined;
-    bs?: CustomLocale | undefined;
-    cat?: CustomLocale | undefined;
-    cs?: CustomLocale | undefined;
-    cy?: CustomLocale | undefined;
-    da?: CustomLocale | undefined;
-    de?: CustomLocale | undefined;
-    en?: CustomLocale | undefined;
-    eo?: CustomLocale | undefined;
-    es?: CustomLocale | undefined;
-    et?: CustomLocale | undefined;
-    fa?: CustomLocale | undefined;
-    fi?: CustomLocale | undefined;
-    fo?: CustomLocale | undefined;
-    fr?: CustomLocale | undefined;
-    gr?: CustomLocale | undefined;
-    he?: CustomLocale | undefined;
-    hi?: CustomLocale | undefined;
-    hu?: CustomLocale | undefined;
-    id?: CustomLocale | undefined;
-    is?: CustomLocale | undefined;
-    it?: CustomLocale | undefined;
-    ja?: CustomLocale | undefined;
-    ka?: CustomLocale | undefined;
-    ko?: CustomLocale | undefined;
-    km?: CustomLocale | undefined;
-    kz?: CustomLocale | undefined;
-    lt?: CustomLocale | undefined;
-    lv?: CustomLocale | undefined;
-    mk?: CustomLocale | undefined;
-    mn?: CustomLocale | undefined;
-    ms?: CustomLocale | undefined;
-    my?: CustomLocale | undefined;
-    nl?: CustomLocale | undefined;
-    no?: CustomLocale | undefined;
-    pa?: CustomLocale | undefined;
-    pl?: CustomLocale | undefined;
-    pt?: CustomLocale | undefined;
-    ro?: CustomLocale | undefined;
-    ru?: CustomLocale | undefined;
-    si?: CustomLocale | undefined;
-    sk?: CustomLocale | undefined;
-    sl?: CustomLocale | undefined;
-    sq?: CustomLocale | undefined;
-    sr?: CustomLocale | undefined;
-    sv?: CustomLocale | undefined;
-    uk?: CustomLocale | undefined;
-    vn?: CustomLocale | undefined;
-    zh?: CustomLocale | undefined;
-    zh_tw?: CustomLocale | undefined;
-} & {
-    default: import("../types/locale").Locale;
-};
-export default _default;
diff --git a/app/static/vendors/flatpickr/l10n/fr.js b/app/static/vendors/flatpickr/l10n/fr.js
deleted file mode 100644 (file)
index 5804a19..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-(function (global, factory) {
-  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
-  typeof define === 'function' && define.amd ? define(['exports'], factory) :
-  (global = global || self, factory(global.fr = {}));
-}(this, function (exports) { 'use strict';
-
-  var fp = typeof window !== "undefined" && window.flatpickr !== undefined
-      ? window.flatpickr
-      : {
-          l10ns: {}
-      };
-  var French = {
-      firstDayOfWeek: 1,
-      weekdays: {
-          shorthand: ["dim", "lun", "mar", "mer", "jeu", "ven", "sam"],
-          longhand: [
-              "dimanche",
-              "lundi",
-              "mardi",
-              "mercredi",
-              "jeudi",
-              "vendredi",
-              "samedi",
-          ]
-      },
-      months: {
-          shorthand: [
-              "janv",
-              "févr",
-              "mars",
-              "avr",
-              "mai",
-              "juin",
-              "juil",
-              "août",
-              "sept",
-              "oct",
-              "nov",
-              "déc",
-          ],
-          longhand: [
-              "janvier",
-              "février",
-              "mars",
-              "avril",
-              "mai",
-              "juin",
-              "juillet",
-              "août",
-              "septembre",
-              "octobre",
-              "novembre",
-              "décembre",
-          ]
-      },
-      ordinal: function (nth) {
-          if (nth > 1)
-              return "";
-          return "er";
-      },
-      rangeSeparator: " au ",
-      weekAbbreviation: "Sem",
-      scrollTitle: "Défiler pour augmenter la valeur",
-      toggleTitle: "Cliquer pour basculer",
-      time_24hr: true
-  };
-  fp.l10ns.fr = French;
-  var fr = fp.l10ns;
-
-  exports.French = French;
-  exports.default = fr;
-
-  Object.defineProperty(exports, '__esModule', { value: true });
-
-}));
diff --git a/app/static/vendors/flatpickr/l10n/lu.d.ts b/app/static/vendors/flatpickr/l10n/lu.d.ts
deleted file mode 100644 (file)
index 148e6d1..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-import { CustomLocale } from "../types/locale";
-export declare const Luxembourgish: CustomLocale;
-declare const _default: {
-    default?: CustomLocale | undefined;
-    hr?: CustomLocale | undefined;
-    th?: CustomLocale | undefined;
-    tr?: CustomLocale | undefined;
-    ar?: CustomLocale | undefined;
-    at?: CustomLocale | undefined;
-    az?: CustomLocale | undefined;
-    be?: CustomLocale | undefined;
-    bg?: CustomLocale | undefined;
-    bn?: CustomLocale | undefined;
-    bs?: CustomLocale | undefined;
-    cat?: CustomLocale | undefined;
-    cs?: CustomLocale | undefined;
-    cy?: CustomLocale | undefined;
-    da?: CustomLocale | undefined;
-    de?: CustomLocale | undefined;
-    en?: CustomLocale | undefined;
-    eo?: CustomLocale | undefined;
-    es?: CustomLocale | undefined;
-    et?: CustomLocale | undefined;
-    fa?: CustomLocale | undefined;
-    fi?: CustomLocale | undefined;
-    fo?: CustomLocale | undefined;
-    fr?: CustomLocale | undefined;
-    gr?: CustomLocale | undefined;
-    he?: CustomLocale | undefined;
-    hi?: CustomLocale | undefined;
-    hu?: CustomLocale | undefined;
-    id?: CustomLocale | undefined;
-    is?: CustomLocale | undefined;
-    it?: CustomLocale | undefined;
-    ja?: CustomLocale | undefined;
-    ka?: CustomLocale | undefined;
-    ko?: CustomLocale | undefined;
-    km?: CustomLocale | undefined;
-    kz?: CustomLocale | undefined;
-    lt?: CustomLocale | undefined;
-    lv?: CustomLocale | undefined;
-    lu?: CustomLocale | undefined;
-    mk?: CustomLocale | undefined;
-    mn?: CustomLocale | undefined;
-    ms?: CustomLocale | undefined;
-    my?: CustomLocale | undefined;
-    nl?: CustomLocale | undefined;
-    no?: CustomLocale | undefined;
-    pa?: CustomLocale | undefined;
-    pl?: CustomLocale | undefined;
-    pt?: CustomLocale | undefined;
-    ro?: CustomLocale | undefined;
-    ru?: CustomLocale | undefined;
-    si?: CustomLocale | undefined;
-    sk?: CustomLocale | undefined;
-    sl?: CustomLocale | undefined;
-    sq?: CustomLocale | undefined;
-    sr?: CustomLocale | undefined;
-    sv?: CustomLocale | undefined;
-    uk?: CustomLocale | undefined;
-    vn?: CustomLocale | undefined;
-    zh?: CustomLocale | undefined;
-    zh_tw?: CustomLocale | undefined;
-} & {
-    default: import("../types/locale").Locale;
-};
-export default _default;
diff --git a/app/static/vendors/flatpickr/l10n/lu.js b/app/static/vendors/flatpickr/l10n/lu.js
deleted file mode 100644 (file)
index c366ea8..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-(function (global, factory) {
-  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
-  typeof define === 'function' && define.amd ? define(['exports'], factory) :
-  (global = global || self, factory(global.lu = {}));
-}(this, function (exports) { 'use strict';
-
-  var fp = typeof window !== "undefined" && window.flatpickr !== undefined
-      ? window.flatpickr
-      : {
-          l10ns: {}
-      };
-  var Luxembourgish = {
-      firstDayOfWeek: 1,
-      weekdays: {
-          shorthand: ["So", "Me", "De", "Me", "Do", "Fr", "Sa"],
-          longhand: [
-              "Sonndeg",
-              "Méindeg",
-              "Dënsdeg",
-              "Mëttwoch",
-              "Donneschdeg",
-              "Freideg",
-              "Samsdeg",
-          ]
-      },
-      months: {
-          shorthand: [
-              "Jan",
-              "Feb",
-              "Mär",
-              "Abr",
-              "Mee",
-              "Jun",
-              "Jul",
-              "Aug",
-              "Sep",
-              "Okt",
-              "Nov",
-              "Dez",
-          ],
-          longhand: [
-              "Januar",
-              "Februar",
-              "März",
-              "Abrëll",
-              "Mee",
-              "Juni",
-              "Juli",
-              "August",
-              "September",
-              "Oktober",
-              "November",
-              "Dezember",
-          ]
-      },
-     
-      weekAbbreviation: "KW",
-      rangeSeparator: " bis ",
-      scrollTitle: "fir ze ännerne scrollen",
-      toggleTitle: "Zum Ëmschalten klicken",
-      time_24hr: true
-  };
-  fp.l10ns.lu = Luxembourgish;
-  var lu = fp.l10ns;
-
-  exports.Luxembourgish = Luxembourgish;
-  exports.default = lu;
-
-  Object.defineProperty(exports, '__esModule', { value: true });
-
-}));
diff --git a/app/static/vendors/flatpickr/plugins/confirmDate/confirmDate.css b/app/static/vendors/flatpickr/plugins/confirmDate/confirmDate.css
deleted file mode 100644 (file)
index 9508ea9..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-.flatpickr-confirm {
-       height: 40px;
-       max-height: 0px;
-       visibility: hidden;
-       display: flex;
-       justify-content: center;
-       align-items: center;
-       cursor: pointer;
-       background: rgba(0,0,0,0.06)
-}
-
-.flatpickr-confirm svg path {
-       fill: inherit;
-}
-
-.flatpickr-confirm.darkTheme {
-       color: white;
-       fill: white;
-}
-
-.flatpickr-confirm.visible {
-       max-height: 40px;
-       visibility: visible
-}
diff --git a/app/static/vendors/flatpickr/plugins/confirmDate/confirmDate.d.ts b/app/static/vendors/flatpickr/plugins/confirmDate/confirmDate.d.ts
deleted file mode 100644 (file)
index a4ddf39..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-import { Plugin } from "../../types/options";
-export interface Config {
-    confirmIcon?: string;
-    confirmText?: string;
-    showAlways?: boolean;
-    theme?: string;
-}
-declare function confirmDatePlugin(pluginConfig: Config): Plugin;
-export default confirmDatePlugin;
diff --git a/app/static/vendors/flatpickr/plugins/confirmDate/confirmDate.js b/app/static/vendors/flatpickr/plugins/confirmDate/confirmDate.js
deleted file mode 100644 (file)
index c1fc0ac..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-(function (global, factory) {
-    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
-    typeof define === 'function' && define.amd ? define(factory) :
-    (global = global || self, global.confirmDatePlugin = factory());
-}(this, function () { 'use strict';
-
-    /*! *****************************************************************************
-    Copyright (c) Microsoft Corporation. All rights reserved.
-    Licensed under the Apache License, Version 2.0 (the "License"); you may not use
-    this file except in compliance with the License. You may obtain a copy of the
-    License at http://www.apache.org/licenses/LICENSE-2.0
-
-    THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-    KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
-    WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
-    MERCHANTABLITY OR NON-INFRINGEMENT.
-
-    See the Apache Version 2.0 License for specific language governing permissions
-    and limitations under the License.
-    ***************************************************************************** */
-
-    var __assign = function() {
-        __assign = Object.assign || function __assign(t) {
-            for (var s, i = 1, n = arguments.length; i < n; i++) {
-                s = arguments[i];
-                for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
-            }
-            return t;
-        };
-        return __assign.apply(this, arguments);
-    };
-
-    var defaultConfig = {
-        confirmIcon: "<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='17' height='17' viewBox='0 0 17 17'> <g> </g> <path d='M15.418 1.774l-8.833 13.485-4.918-4.386 0.666-0.746 4.051 3.614 8.198-12.515 0.836 0.548z' fill='#000000' /> </svg>",
-        confirmText: "OK ",
-        showAlways: false,
-        theme: "light"
-    };
-    function confirmDatePlugin(pluginConfig) {
-        var config = __assign({}, defaultConfig, pluginConfig);
-        var confirmContainer;
-        var confirmButtonCSSClass = "flatpickr-confirm";
-        return function (fp) {
-            if (fp.config.noCalendar || fp.isMobile)
-                return {};
-            return __assign({ onKeyDown: function (_, __, ___, e) {
-                    if (fp.config.enableTime && e.key === "Tab" && e.target === fp.amPM) {
-                        e.preventDefault();
-                        confirmContainer.focus();
-                    }
-                    else if (e.key === "Enter" && e.target === confirmContainer)
-                        fp.close();
-                },
-                onReady: function () {
-                    confirmContainer = fp._createElement("div", confirmButtonCSSClass + " " + (config.showAlways ? "visible" : "") + " " + config.theme + "Theme", config.confirmText);
-                    confirmContainer.tabIndex = -1;
-                    confirmContainer.innerHTML += config.confirmIcon;
-                    confirmContainer.addEventListener("click", fp.close);
-                    fp.calendarContainer.appendChild(confirmContainer);
-                    fp.loadedPlugins.push("confirmDate");
-                } }, (!config.showAlways
-                ? {
-                    onChange: function (_, dateStr) {
-                        var showCondition = fp.config.enableTime ||
-                            fp.config.mode === "multiple" ||
-                            fp.loadedPlugins.indexOf("monthSelect") !== -1;
-                        var localConfirmContainer = fp.calendarContainer.querySelector("." + confirmButtonCSSClass);
-                        if (!localConfirmContainer)
-                            return;
-                        if (dateStr &&
-                            !fp.config.inline &&
-                            showCondition &&
-                            localConfirmContainer)
-                            return localConfirmContainer.classList.add("visible");
-                        localConfirmContainer.classList.remove("visible");
-                    }
-                }
-                : {}));
-        };
-    }
-
-    return confirmDatePlugin;
-
-}));
diff --git a/app/static/vendors/flatpickr/plugins/labelPlugin/labelPlugin.d.ts b/app/static/vendors/flatpickr/plugins/labelPlugin/labelPlugin.d.ts
deleted file mode 100644 (file)
index 1a9cbce..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-import { Plugin } from "../../types/options";
-declare function labelPlugin(): Plugin;
-export default labelPlugin;
diff --git a/app/static/vendors/flatpickr/plugins/labelPlugin/labelPlugin.js b/app/static/vendors/flatpickr/plugins/labelPlugin/labelPlugin.js
deleted file mode 100644 (file)
index ddad2bc..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-(function (global, factory) {
-  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
-  typeof define === 'function' && define.amd ? define(factory) :
-  (global = global || self, global.labelPlugin = factory());
-}(this, function () { 'use strict';
-
-  function labelPlugin() {
-      return function (fp) {
-          return {
-              onReady: function () {
-                  var id = fp.input.id;
-                  if (!id) {
-                      return;
-                  }
-                  if (fp.mobileInput) {
-                      fp.input.removeAttribute("id");
-                      fp.mobileInput.id = id;
-                  }
-                  else if (fp.altInput) {
-                      fp.input.removeAttribute("id");
-                      fp.altInput.id = id;
-                  }
-                  fp.loadedPlugins.push("labelPlugin");
-              }
-          };
-      };
-  }
-
-  return labelPlugin;
-
-}));
diff --git a/app/static/vendors/flatpickr/plugins/minMaxTimePlugin.d.ts b/app/static/vendors/flatpickr/plugins/minMaxTimePlugin.d.ts
deleted file mode 100644 (file)
index 4fe2e5c..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-import { Plugin } from "../types/options";
-export interface MinMaxTime {
-    minTime?: string;
-    maxTime?: string;
-}
-export interface Config {
-    table?: Record<string, MinMaxTime>;
-    getTimeLimits?: (date: Date) => MinMaxTime;
-    tableDateFormat?: string;
-}
-export interface State {
-    formatDate: (date: Date, f: string) => string;
-    tableDateFormat: string;
-    defaults: MinMaxTime;
-}
-declare function minMaxTimePlugin(config?: Config): Plugin;
-export default minMaxTimePlugin;
diff --git a/app/static/vendors/flatpickr/plugins/minMaxTimePlugin.js b/app/static/vendors/flatpickr/plugins/minMaxTimePlugin.js
deleted file mode 100644 (file)
index 291ac25..0000000
+++ /dev/null
@@ -1,326 +0,0 @@
-(function (global, factory) {
-  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
-  typeof define === 'function' && define.amd ? define(factory) :
-  (global = global || self, global.minMaxTimePlugin = factory());
-}(this, function () { 'use strict';
-
-  var pad = function (number) { return ("0" + number).slice(-2); };
-  var int = function (bool) { return (bool === true ? 1 : 0); };
-
-  var monthToStr = function (monthNumber, shorthand, locale) { return locale.months[shorthand ? "shorthand" : "longhand"][monthNumber]; };
-  var formats = {
-      // get the date in UTC
-      Z: function (date) { return date.toISOString(); },
-      // weekday name, short, e.g. Thu
-      D: function (date, locale, options) {
-          return locale.weekdays.shorthand[formats.w(date, locale, options)];
-      },
-      // full month name e.g. January
-      F: function (date, locale, options) {
-          return monthToStr(formats.n(date, locale, options) - 1, false, locale);
-      },
-      // padded hour 1-12
-      G: function (date, locale, options) {
-          return pad(formats.h(date, locale, options));
-      },
-      // hours with leading zero e.g. 03
-      H: function (date) { return pad(date.getHours()); },
-      // day (1-30) with ordinal suffix e.g. 1st, 2nd
-      J: function (date, locale) {
-          return locale.ordinal !== undefined
-              ? date.getDate() + locale.ordinal(date.getDate())
-              : date.getDate();
-      },
-      // AM/PM
-      K: function (date, locale) { return locale.amPM[int(date.getHours() > 11)]; },
-      // shorthand month e.g. Jan, Sep, Oct, etc
-      M: function (date, locale) {
-          return monthToStr(date.getMonth(), true, locale);
-      },
-      // seconds 00-59
-      S: function (date) { return pad(date.getSeconds()); },
-      // unix timestamp
-      U: function (date) { return date.getTime() / 1000; },
-      W: function (date, _, options) {
-          return options.getWeek(date);
-      },
-      // full year e.g. 2016
-      Y: function (date) { return date.getFullYear(); },
-      // day in month, padded (01-30)
-      d: function (date) { return pad(date.getDate()); },
-      // hour from 1-12 (am/pm)
-      h: function (date) { return (date.getHours() % 12 ? date.getHours() % 12 : 12); },
-      // minutes, padded with leading zero e.g. 09
-      i: function (date) { return pad(date.getMinutes()); },
-      // day in month (1-30)
-      j: function (date) { return date.getDate(); },
-      // weekday name, full, e.g. Thursday
-      l: function (date, locale) {
-          return locale.weekdays.longhand[date.getDay()];
-      },
-      // padded month number (01-12)
-      m: function (date) { return pad(date.getMonth() + 1); },
-      // the month number (1-12)
-      n: function (date) { return date.getMonth() + 1; },
-      // seconds 0-59
-      s: function (date) { return date.getSeconds(); },
-      // Unix Milliseconds
-      u: function (date) { return date.getTime(); },
-      // number of the day of the week
-      w: function (date) { return date.getDay(); },
-      // last two digits of year e.g. 16 for 2016
-      y: function (date) { return String(date.getFullYear()).substring(2); }
-  };
-
-  var defaults = {
-      _disable: [],
-      _enable: [],
-      allowInput: false,
-      altFormat: "F j, Y",
-      altInput: false,
-      altInputClass: "form-control input",
-      animate: typeof window === "object" &&
-          window.navigator.userAgent.indexOf("MSIE") === -1,
-      ariaDateFormat: "F j, Y",
-      clickOpens: true,
-      closeOnSelect: true,
-      conjunction: ", ",
-      dateFormat: "Y-m-d",
-      defaultHour: 12,
-      defaultMinute: 0,
-      defaultSeconds: 0,
-      disable: [],
-      disableMobile: false,
-      enable: [],
-      enableSeconds: false,
-      enableTime: false,
-      errorHandler: function (err) {
-          return typeof console !== "undefined" && console.warn(err);
-      },
-      getWeek: function (givenDate) {
-          var date = new Date(givenDate.getTime());
-          date.setHours(0, 0, 0, 0);
-          // Thursday in current week decides the year.
-          date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));
-          // January 4 is always in week 1.
-          var week1 = new Date(date.getFullYear(), 0, 4);
-          // Adjust to Thursday in week 1 and count number of weeks from date to week1.
-          return (1 +
-              Math.round(((date.getTime() - week1.getTime()) / 86400000 -
-                  3 +
-                  ((week1.getDay() + 6) % 7)) /
-                  7));
-      },
-      hourIncrement: 1,
-      ignoredFocusElements: [],
-      inline: false,
-      locale: "default",
-      minuteIncrement: 5,
-      mode: "single",
-      monthSelectorType: "dropdown",
-      nextArrow: "<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M13.207 8.472l-7.854 7.854-0.707-0.707 7.146-7.146-7.146-7.148 0.707-0.707 7.854 7.854z' /></svg>",
-      noCalendar: false,
-      now: new Date(),
-      onChange: [],
-      onClose: [],
-      onDayCreate: [],
-      onDestroy: [],
-      onKeyDown: [],
-      onMonthChange: [],
-      onOpen: [],
-      onParseConfig: [],
-      onReady: [],
-      onValueUpdate: [],
-      onYearChange: [],
-      onPreCalendarPosition: [],
-      plugins: [],
-      position: "auto",
-      positionElement: undefined,
-      prevArrow: "<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M5.207 8.471l7.146 7.147-0.707 0.707-7.853-7.854 7.854-7.853 0.707 0.707-7.147 7.146z' /></svg>",
-      shorthandCurrentMonth: false,
-      showMonths: 1,
-      static: false,
-      time_24hr: false,
-      weekNumbers: false,
-      wrap: false
-  };
-
-  var english = {
-      weekdays: {
-          shorthand: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
-          longhand: [
-              "Sunday",
-              "Monday",
-              "Tuesday",
-              "Wednesday",
-              "Thursday",
-              "Friday",
-              "Saturday",
-          ]
-      },
-      months: {
-          shorthand: [
-              "Jan",
-              "Feb",
-              "Mar",
-              "Apr",
-              "May",
-              "Jun",
-              "Jul",
-              "Aug",
-              "Sep",
-              "Oct",
-              "Nov",
-              "Dec",
-          ],
-          longhand: [
-              "January",
-              "February",
-              "March",
-              "April",
-              "May",
-              "June",
-              "July",
-              "August",
-              "September",
-              "October",
-              "November",
-              "December",
-          ]
-      },
-      daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
-      firstDayOfWeek: 0,
-      ordinal: function (nth) {
-          var s = nth % 100;
-          if (s > 3 && s < 21)
-              return "th";
-          switch (s % 10) {
-              case 1:
-                  return "st";
-              case 2:
-                  return "nd";
-              case 3:
-                  return "rd";
-              default:
-                  return "th";
-          }
-      },
-      rangeSeparator: " to ",
-      weekAbbreviation: "Wk",
-      scrollTitle: "Scroll to increment",
-      toggleTitle: "Click to toggle",
-      amPM: ["AM", "PM"],
-      yearAriaLabel: "Year",
-      hourAriaLabel: "Hour",
-      minuteAriaLabel: "Minute",
-      time_24hr: false
-  };
-
-  var createDateFormatter = function (_a) {
-      var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;
-      return function (dateObj, frmt, overrideLocale) {
-          var locale = overrideLocale || l10n;
-          if (config.formatDate !== undefined) {
-              return config.formatDate(dateObj, frmt, locale);
-          }
-          return frmt
-              .split("")
-              .map(function (c, i, arr) {
-              return formats[c] && arr[i - 1] !== "\\"
-                  ? formats[c](dateObj, locale, config)
-                  : c !== "\\"
-                      ? c
-                      : "";
-          })
-              .join("");
-      };
-  };
-  /**
-   * Compute the difference in dates, measured in ms
-   */
-  function compareDates(date1, date2, timeless) {
-      if (timeless === void 0) { timeless = true; }
-      if (timeless !== false) {
-          return (new Date(date1.getTime()).setHours(0, 0, 0, 0) -
-              new Date(date2.getTime()).setHours(0, 0, 0, 0));
-      }
-      return date1.getTime() - date2.getTime();
-  }
-  /**
-   * Compute the difference in times, measured in ms
-   */
-  function compareTimes(date1, date2) {
-      return (3600 * (date1.getHours() - date2.getHours()) +
-          60 * (date1.getMinutes() - date2.getMinutes()) +
-          date1.getSeconds() -
-          date2.getSeconds());
-  }
-
-  function minMaxTimePlugin(config) {
-      if (config === void 0) { config = {}; }
-      var state = {
-          formatDate: createDateFormatter({}),
-          tableDateFormat: config.tableDateFormat || "Y-m-d",
-          defaults: {
-              minTime: undefined,
-              maxTime: undefined
-          }
-      };
-      function findDateTimeLimit(date) {
-          if (config.table !== undefined) {
-              return config.table[state.formatDate(date, state.tableDateFormat)];
-          }
-          return config.getTimeLimits && config.getTimeLimits(date);
-      }
-      return function (fp) {
-          return {
-              onReady: function () {
-                  state.formatDate = this.formatDate;
-                  state.defaults = {
-                      minTime: this.config.minTime && state.formatDate(this.config.minTime, "H:i"),
-                      maxTime: this.config.maxTime && state.formatDate(this.config.maxTime, "H:i")
-                  };
-                  fp.loadedPlugins.push("minMaxTime");
-              },
-              onChange: function () {
-                  var latest = this.latestSelectedDateObj;
-                  var matchingTimeLimit = latest && findDateTimeLimit(latest);
-                  if (latest && matchingTimeLimit !== undefined) {
-                      this.set(matchingTimeLimit);
-                      fp.config.minTime.setFullYear(latest.getFullYear());
-                      fp.config.maxTime.setFullYear(latest.getFullYear());
-                      fp.config.minTime.setMonth(latest.getMonth());
-                      fp.config.maxTime.setMonth(latest.getMonth());
-                      fp.config.minTime.setDate(latest.getDate());
-                      fp.config.maxTime.setDate(latest.getDate());
-                      if (compareDates(latest, fp.config.maxTime, false) > 0) {
-                          fp.setDate(new Date(latest.getTime()).setHours(fp.config.maxTime.getHours(), fp.config.maxTime.getMinutes(), fp.config.maxTime.getSeconds(), fp.config.maxTime.getMilliseconds()), false);
-                      }
-                      else if (compareDates(latest, fp.config.minTime, false) < 0)
-                          fp.setDate(new Date(latest.getTime()).setHours(fp.config.minTime.getHours(), fp.config.minTime.getMinutes(), fp.config.minTime.getSeconds(), fp.config.minTime.getMilliseconds()), false);
-                  }
-                  else {
-                      var newMinMax = state.defaults || {
-                          minTime: undefined,
-                          maxTime: undefined
-                      };
-                      this.set(newMinMax);
-                      if (!latest)
-                          return;
-                      var _a = fp.config, minTime = _a.minTime, maxTime = _a.maxTime;
-                      if (minTime && compareTimes(latest, minTime) < 0) {
-                          fp.setDate(new Date(latest.getTime()).setHours(minTime.getHours(), minTime.getMinutes(), minTime.getSeconds(), minTime.getMilliseconds()), false);
-                      }
-                      else if (maxTime && compareTimes(latest, maxTime) > 0) {
-                          fp.setDate(new Date(latest.getTime()).setHours(maxTime.getHours(), maxTime.getMinutes(), maxTime.getSeconds(), maxTime.getMilliseconds()));
-                      }
-                      //
-                  }
-              }
-          };
-      };
-  }
-
-  return minMaxTimePlugin;
-
-}));
diff --git a/app/static/vendors/flatpickr/plugins/monthSelect/index.d.ts b/app/static/vendors/flatpickr/plugins/monthSelect/index.d.ts
deleted file mode 100644 (file)
index d3864fc..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-import { Plugin } from "../../types/options";
-export interface Config {
-    shorthand: boolean;
-    dateFormat: string;
-    altFormat: string;
-    theme: string;
-}
-export declare type MonthElement = HTMLSpanElement & {
-    dateObj: Date;
-    $i: number;
-};
-declare function monthSelectPlugin(pluginConfig?: Partial<Config>): Plugin;
-export default monthSelectPlugin;
diff --git a/app/static/vendors/flatpickr/plugins/monthSelect/index.js b/app/static/vendors/flatpickr/plugins/monthSelect/index.js
deleted file mode 100644 (file)
index 7fd66e7..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
-(function (global, factory) {
-    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
-    typeof define === 'function' && define.amd ? define(factory) :
-    (global = global || self, global.monthSelectPlugin = factory());
-}(this, function () { 'use strict';
-
-    /*! *****************************************************************************
-    Copyright (c) Microsoft Corporation. All rights reserved.
-    Licensed under the Apache License, Version 2.0 (the "License"); you may not use
-    this file except in compliance with the License. You may obtain a copy of the
-    License at http://www.apache.org/licenses/LICENSE-2.0
-
-    THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-    KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
-    WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
-    MERCHANTABLITY OR NON-INFRINGEMENT.
-
-    See the Apache Version 2.0 License for specific language governing permissions
-    and limitations under the License.
-    ***************************************************************************** */
-
-    var __assign = function() {
-        __assign = Object.assign || function __assign(t) {
-            for (var s, i = 1, n = arguments.length; i < n; i++) {
-                s = arguments[i];
-                for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
-            }
-            return t;
-        };
-        return __assign.apply(this, arguments);
-    };
-
-    var monthToStr = function (monthNumber, shorthand, locale) { return locale.months[shorthand ? "shorthand" : "longhand"][monthNumber]; };
-
-    var defaultConfig = {
-        shorthand: false,
-        dateFormat: "F Y",
-        altFormat: "F Y",
-        theme: "light"
-    };
-    function monthSelectPlugin(pluginConfig) {
-        var config = __assign({}, defaultConfig, pluginConfig);
-        return function (fp) {
-            fp.config.dateFormat = config.dateFormat;
-            fp.config.altFormat = config.altFormat;
-            var self = { monthsContainer: null };
-            function clearUnnecessaryDOMElements() {
-                if (!fp.rContainer || !fp.daysContainer || !fp.weekdayContainer)
-                    return;
-                fp.rContainer.removeChild(fp.daysContainer);
-                fp.rContainer.removeChild(fp.weekdayContainer);
-                for (var index = 0; index < fp.monthElements.length; index++) {
-                    var element = fp.monthElements[index];
-                    if (!element.parentNode)
-                        continue;
-                    element.parentNode.removeChild(element);
-                }
-            }
-            function addListeners() {
-                fp._bind(fp.prevMonthNav, "click", function () {
-                    fp.currentYear -= 1;
-                    selectYear();
-                });
-                fp._bind(fp.nextMonthNav, "mousedown", function () {
-                    fp.currentYear += 1;
-                    selectYear();
-                });
-            }
-            function addMonths() {
-                if (!fp.rContainer)
-                    return;
-                self.monthsContainer = fp._createElement("div", "flatpickr-monthSelect-months");
-                self.monthsContainer.tabIndex = -1;
-                fp.calendarContainer.classList.add("flatpickr-monthSelect-theme-" + config.theme);
-                for (var i = 0; i < 12; i++) {
-                    var month = fp._createElement("span", "flatpickr-monthSelect-month");
-                    month.dateObj = new Date(fp.currentYear, i);
-                    month.$i = i;
-                    month.textContent = monthToStr(i, config.shorthand, fp.l10n);
-                    month.tabIndex = -1;
-                    month.addEventListener("click", selectMonth);
-                    self.monthsContainer.appendChild(month);
-                }
-                fp.rContainer.appendChild(self.monthsContainer);
-            }
-            function setCurrentlySelected() {
-                if (!fp.rContainer)
-                    return;
-                var currentlySelected = fp.rContainer.querySelectorAll(".flatpickr-monthSelect-month.selected");
-                for (var index = 0; index < currentlySelected.length; index++) {
-                    currentlySelected[index].classList.remove("selected");
-                }
-                var month = fp.rContainer.querySelector(".flatpickr-monthSelect-month:nth-child(" + (fp.currentMonth + 1) + ")");
-                if (month) {
-                    month.classList.add("selected");
-                }
-            }
-            function selectYear() {
-                var selectedDate = fp.selectedDates[0];
-                selectedDate.setFullYear(fp.currentYear);
-                fp.setDate(selectedDate, true);
-            }
-            function selectMonth(e) {
-                e.preventDefault();
-                e.stopPropagation();
-                setMonth(e.target.dateObj);
-            }
-            function setMonth(date) {
-                var selectedDate = new Date(date);
-                selectedDate.setFullYear(fp.currentYear);
-                fp.currentMonth = selectedDate.getMonth();
-                fp.setDate(selectedDate, true);
-                setCurrentlySelected();
-            }
-            var shifts = {
-                37: -1,
-                39: 1,
-                40: 3,
-                38: -3
-            };
-            function onKeyDown(_, __, ___, e) {
-                var shouldMove = shifts[e.keyCode] !== undefined;
-                if (!shouldMove && e.keyCode !== 13) {
-                    return;
-                }
-                if (!fp.rContainer || !self.monthsContainer)
-                    return;
-                var currentlySelected = fp.rContainer.querySelector(".flatpickr-monthSelect-month.selected");
-                var index = Array.prototype.indexOf.call(self.monthsContainer.children, document.activeElement);
-                if (index === -1) {
-                    var target = currentlySelected || self.monthsContainer.firstElementChild;
-                    target.focus();
-                    index = target.$i;
-                }
-                if (shouldMove) {
-                    self.monthsContainer.children[(12 + index + shifts[e.keyCode]) % 12].focus();
-                }
-                else if (e.keyCode === 13 &&
-                    self.monthsContainer.contains(document.activeElement)) {
-                    setMonth(document.activeElement.dateObj);
-                }
-            }
-            function destroyPluginInstance() {
-                if (self.monthsContainer !== null) {
-                    var months = self.monthsContainer.querySelectorAll(".flatpickr-monthSelect-month");
-                    for (var index = 0; index < months.length; index++) {
-                        months[index].removeEventListener("click", selectMonth);
-                    }
-                }
-            }
-            return {
-                onParseConfig: function () {
-                    fp.config.mode = "single";
-                    fp.config.enableTime = false;
-                },
-                onValueUpdate: setCurrentlySelected,
-                onKeyDown: onKeyDown,
-                onReady: [
-                    clearUnnecessaryDOMElements,
-                    addListeners,
-                    addMonths,
-                    setCurrentlySelected,
-                    function () {
-                        fp.loadedPlugins.push("monthSelect");
-                    },
-                ],
-                onDestroy: destroyPluginInstance
-            };
-        };
-    }
-
-    return monthSelectPlugin;
-
-}));
diff --git a/app/static/vendors/flatpickr/plugins/monthSelect/style.css b/app/static/vendors/flatpickr/plugins/monthSelect/style.css
deleted file mode 100644 (file)
index cacbafc..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-.flatpickr-monthSelect-months {
-  margin: 10px 1px 3px 1px;
-  flex-wrap: wrap;
-}
-
-.flatpickr-monthSelect-month {
-  background: none;
-  border: 0;
-  border-radius: 2px;
-  -webkit-box-sizing: border-box;
-  box-sizing: border-box;
-  color: #393939;
-  cursor: pointer;
-  display: inline-block;
-  font-weight: 400;
-  margin: 0.5px;
-  justify-content: center;
-  padding: 10px;
-  position: relative;
-  -webkit-box-pack: center;
-  -webkit-justify-content: center;
-  -ms-flex-pack: center;
-  text-align: center;
-  width: 33%;
-}
-
-.flatpickr-monthSelect-theme-dark {
-  background: #3f4458;
-}
-
-.flatpickr-monthSelect-theme-dark .flatpickr-current-month input.cur-year {
-  color: #fff;
-}
-
-.flatpickr-monthSelect-theme-dark .flatpickr-months .flatpickr-prev-month,
-.flatpickr-monthSelect-theme-dark .flatpickr-months .flatpickr-next-month {
-  color: #fff;
-  fill: #fff;
-}
-
-.flatpickr-monthSelect-theme-dark .flatpickr-monthSelect-month {
-  color: rgba(255, 255, 255, 0.95);
-}
-
-.flatpickr-monthSelect-month:hover,
-.flatpickr-monthSelect-month:focus {
-  background: #e6e6e6;
-  cursor: pointer;
-  outline: 0;
-}
-
-.flatpickr-monthSelect-theme-dark .flatpickr-monthSelect-month:hover,
-.flatpickr-monthSelect-theme-dark .flatpickr-monthSelect-month:focus {
-  background: #646c8c;
-  border-color: #646c8c;
-}
-
-.flatpickr-monthSelect-month.selected {
-  background-color: #569ff7;
-  color: #fff;
-}
-
-.flatpickr-monthSelect-theme-dark .flatpickr-monthSelect-month.selected {
-  background: #80cbc4;
-  -webkit-box-shadow: none;
-  box-shadow: none;
-  color: #fff;
-  border-color: #80cbc4;
-}
diff --git a/app/static/vendors/flatpickr/plugins/monthSelect/tests.spec.d.ts b/app/static/vendors/flatpickr/plugins/monthSelect/tests.spec.d.ts
deleted file mode 100644 (file)
index cb0ff5c..0000000
+++ /dev/null
@@ -1 +0,0 @@
-export {};
diff --git a/app/static/vendors/flatpickr/plugins/rangePlugin.d.ts b/app/static/vendors/flatpickr/plugins/rangePlugin.d.ts
deleted file mode 100644 (file)
index 960a834..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-import { Plugin } from "../types/options";
-export interface Config {
-    input?: string | HTMLInputElement;
-    position?: "left";
-}
-declare global {
-    interface Window {
-        rangePlugin: (config?: Config) => void;
-    }
-}
-declare function rangePlugin(config?: Config): Plugin;
-export default rangePlugin;
diff --git a/app/static/vendors/flatpickr/plugins/rangePlugin.js b/app/static/vendors/flatpickr/plugins/rangePlugin.js
deleted file mode 100644 (file)
index 407e388..0000000
+++ /dev/null
@@ -1,146 +0,0 @@
-(function (global, factory) {
-  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
-  typeof define === 'function' && define.amd ? define(factory) :
-  (global = global || self, global.rangePlugin = factory());
-}(this, function () { 'use strict';
-
-  function rangePlugin(config) {
-      if (config === void 0) { config = {}; }
-      return function (fp) {
-          var dateFormat = "", secondInput, _secondInputFocused, _prevDates;
-          var createSecondInput = function () {
-              if (config.input) {
-                  secondInput =
-                      config.input instanceof Element
-                          ? config.input
-                          : window.document.querySelector(config.input);
-                  if (!secondInput) {
-                      fp.config.errorHandler(new Error("Invalid input element specified"));
-                      return;
-                  }
-                  if (fp.config.wrap) {
-                      secondInput = secondInput.querySelector("[data-input]");
-                  }
-              }
-              else {
-                  secondInput = fp._input.cloneNode();
-                  secondInput.removeAttribute("id");
-                  secondInput._flatpickr = undefined;
-              }
-              if (secondInput.value) {
-                  var parsedDate = fp.parseDate(secondInput.value);
-                  if (parsedDate)
-                      fp.selectedDates.push(parsedDate);
-              }
-              secondInput.setAttribute("data-fp-omit", "");
-              fp._bind(secondInput, ["focus", "click"], function () {
-                  if (fp.selectedDates[1]) {
-                      fp.latestSelectedDateObj = fp.selectedDates[1];
-                      fp._setHoursFromDate(fp.selectedDates[1]);
-                      fp.jumpToDate(fp.selectedDates[1]);
-                  }
-                  _secondInputFocused = true;
-                  fp.isOpen = false;
-                  fp.open(undefined, config.position === "left" ? fp._input : secondInput);
-              });
-              fp._bind(fp._input, ["focus", "click"], function (e) {
-                  e.preventDefault();
-                  fp.isOpen = false;
-                  fp.open();
-              });
-              if (fp.config.allowInput)
-                  fp._bind(secondInput, "keydown", function (e) {
-                      if (e.key === "Enter") {
-                          fp.setDate([fp.selectedDates[0], secondInput.value], true, dateFormat);
-                          secondInput.click();
-                      }
-                  });
-              if (!config.input)
-                  fp._input.parentNode &&
-                      fp._input.parentNode.insertBefore(secondInput, fp._input.nextSibling);
-          };
-          var plugin = {
-              onParseConfig: function () {
-                  fp.config.mode = "range";
-                  dateFormat = fp.config.altInput
-                      ? fp.config.altFormat
-                      : fp.config.dateFormat;
-              },
-              onReady: function () {
-                  createSecondInput();
-                  fp.config.ignoredFocusElements.push(secondInput);
-                  if (fp.config.allowInput) {
-                      fp._input.removeAttribute("readonly");
-                      secondInput.removeAttribute("readonly");
-                  }
-                  else {
-                      secondInput.setAttribute("readonly", "readonly");
-                  }
-                  fp._bind(fp._input, "focus", function () {
-                      fp.latestSelectedDateObj = fp.selectedDates[0];
-                      fp._setHoursFromDate(fp.selectedDates[0]);
-                      _secondInputFocused = false;
-                      fp.jumpToDate(fp.selectedDates[0]);
-                  });
-                  if (fp.config.allowInput)
-                      fp._bind(fp._input, "keydown", function (e) {
-                          if (e.key === "Enter")
-                              fp.setDate([fp._input.value, fp.selectedDates[1]], true, dateFormat);
-                      });
-                  fp.setDate(fp.selectedDates, false);
-                  plugin.onValueUpdate(fp.selectedDates);
-                  fp.loadedPlugins.push("range");
-              },
-              onPreCalendarPosition: function () {
-                  if (_secondInputFocused) {
-                      fp._positionElement = secondInput;
-                      setTimeout(function () {
-                          fp._positionElement = fp._input;
-                      }, 0);
-                  }
-              },
-              onChange: function () {
-                  if (!fp.selectedDates.length) {
-                      setTimeout(function () {
-                          if (fp.selectedDates.length)
-                              return;
-                          secondInput.value = "";
-                          _prevDates = [];
-                      }, 10);
-                  }
-                  if (_secondInputFocused) {
-                      setTimeout(function () {
-                          secondInput.focus();
-                      }, 0);
-                  }
-              },
-              onDestroy: function () {
-                  if (!config.input)
-                      secondInput.parentNode &&
-                          secondInput.parentNode.removeChild(secondInput);
-              },
-              onValueUpdate: function (selDates) {
-                  var _a, _b, _c;
-                  if (!secondInput)
-                      return;
-                  _prevDates =
-                      !_prevDates || selDates.length >= _prevDates.length
-                          ? selDates.slice() : _prevDates;
-                  if (_prevDates.length > selDates.length) {
-                      var newSelectedDate = selDates[0];
-                      var newDates = _secondInputFocused
-                          ? [_prevDates[0], newSelectedDate]
-                          : [newSelectedDate, _prevDates[1]];
-                      fp.setDate(newDates, false);
-                      _prevDates = newDates.slice();
-                  }
-                  _a = fp.selectedDates.map(function (d) { return fp.formatDate(d, dateFormat); }), _b = _a[0], fp._input.value = _b === void 0 ? "" : _b, _c = _a[1], secondInput.value = _c === void 0 ? "" : _c;
-              }
-          };
-          return plugin;
-      };
-  }
-
-  return rangePlugin;
-
-}));
diff --git a/app/static/vendors/flatpickr/plugins/scrollPlugin.d.ts b/app/static/vendors/flatpickr/plugins/scrollPlugin.d.ts
deleted file mode 100644 (file)
index a367428..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-import { Plugin } from "../types/options";
-declare function scrollPlugin(): Plugin;
-export default scrollPlugin;
diff --git a/app/static/vendors/flatpickr/plugins/scrollPlugin.js b/app/static/vendors/flatpickr/plugins/scrollPlugin.js
deleted file mode 100644 (file)
index 3a5ad99..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-(function (global, factory) {
-  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
-  typeof define === 'function' && define.amd ? define(factory) :
-  (global = global || self, global.scrollPlugin = factory());
-}(this, function () { 'use strict';
-
-  function delta(e) {
-      return Math.max(-1, Math.min(1, e.wheelDelta || -e.deltaY));
-  }
-  var scroll = function (e) {
-      e.preventDefault();
-      var ev = new CustomEvent("increment", {
-          bubbles: true
-      });
-      ev.delta = delta(e);
-      e.target.dispatchEvent(ev);
-  };
-  function scrollMonth(fp) {
-      return function (e) {
-          e.preventDefault();
-          var mDelta = delta(e);
-          fp.changeMonth(mDelta);
-      };
-  }
-  function scrollPlugin() {
-      return function (fp) {
-          var monthScroller = scrollMonth(fp);
-          return {
-              onReady: function () {
-                  if (fp.timeContainer) {
-                      fp.timeContainer.addEventListener("wheel", scroll);
-                  }
-                  fp.yearElements.forEach(function (yearElem) {
-                      return yearElem.addEventListener("wheel", scroll);
-                  });
-                  fp.monthElements.forEach(function (monthElem) {
-                      return monthElem.addEventListener("wheel", monthScroller);
-                  });
-                  fp.loadedPlugins.push("scroll");
-              },
-              onDestroy: function () {
-                  if (fp.timeContainer) {
-                      fp.timeContainer.removeEventListener("wheel", scroll);
-                  }
-                  fp.yearElements.forEach(function (yearElem) {
-                      return yearElem.removeEventListener("wheel", scroll);
-                  });
-                  fp.monthElements.forEach(function (monthElem) {
-                      return monthElem.removeEventListener("wheel", monthScroller);
-                  });
-              }
-          };
-      };
-  }
-
-  return scrollPlugin;
-
-}));
diff --git a/app/static/vendors/flatpickr/plugins/weekSelect/weekSelect.d.ts b/app/static/vendors/flatpickr/plugins/weekSelect/weekSelect.d.ts
deleted file mode 100644 (file)
index 88cc964..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-import { Plugin } from "../../types/options";
-export declare type PlusWeeks = {
-    weekStartDay: Date;
-    weekEndDay: Date;
-};
-declare function weekSelectPlugin(): Plugin<PlusWeeks>;
-export default weekSelectPlugin;
diff --git a/app/static/vendors/flatpickr/plugins/weekSelect/weekSelect.js b/app/static/vendors/flatpickr/plugins/weekSelect/weekSelect.js
deleted file mode 100644 (file)
index e8792ed..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-(function (global, factory) {
-  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
-  typeof define === 'function' && define.amd ? define(factory) :
-  (global = global || self, global.weekSelect = factory());
-}(this, function () { 'use strict';
-
-  function weekSelectPlugin() {
-      return function (fp) {
-          function onDayHover(event) {
-              var day = event.target;
-              if (!day.classList.contains("flatpickr-day"))
-                  return;
-              var days = fp.days.childNodes;
-              var dayIndex = day.$i;
-              var dayIndSeven = dayIndex / 7;
-              var weekStartDay = days[7 * Math.floor(dayIndSeven)]
-                  .dateObj;
-              var weekEndDay = days[7 * Math.ceil(dayIndSeven + 0.01) - 1].dateObj;
-              for (var i = days.length; i--;) {
-                  var day_1 = days[i];
-                  var date = day_1.dateObj;
-                  if (date > weekEndDay || date < weekStartDay)
-                      day_1.classList.remove("inRange");
-                  else
-                      day_1.classList.add("inRange");
-              }
-          }
-          function highlightWeek() {
-              var selDate = fp.latestSelectedDateObj;
-              if (selDate !== undefined &&
-                  selDate.getMonth() === fp.currentMonth &&
-                  selDate.getFullYear() === fp.currentYear) {
-                  fp.weekStartDay = fp.days.childNodes[7 * Math.floor(fp.selectedDateElem.$i / 7)].dateObj;
-                  fp.weekEndDay = fp.days.childNodes[7 * Math.ceil(fp.selectedDateElem.$i / 7 + 0.01) - 1].dateObj;
-              }
-              var days = fp.days.childNodes;
-              for (var i = days.length; i--;) {
-                  var date = days[i].dateObj;
-                  if (date >= fp.weekStartDay && date <= fp.weekEndDay)
-                      days[i].classList.add("week", "selected");
-              }
-          }
-          function clearHover() {
-              var days = fp.days.childNodes;
-              for (var i = days.length; i--;)
-                  days[i].classList.remove("inRange");
-          }
-          function onReady() {
-              if (fp.daysContainer !== undefined)
-                  fp.daysContainer.addEventListener("mouseover", onDayHover);
-          }
-          function onDestroy() {
-              if (fp.daysContainer !== undefined)
-                  fp.daysContainer.removeEventListener("mouseover", onDayHover);
-          }
-          return {
-              onValueUpdate: highlightWeek,
-              onMonthChange: highlightWeek,
-              onYearChange: highlightWeek,
-              onOpen: highlightWeek,
-              onClose: clearHover,
-              onParseConfig: function () {
-                  fp.config.mode = "single";
-                  fp.config.enableTime = false;
-                  fp.config.dateFormat = fp.config.dateFormat
-                      ? fp.config.dateFormat
-                      : "\\W\\e\\e\\k #W, Y";
-                  fp.config.altFormat = fp.config.altFormat
-                      ? fp.config.altFormat
-                      : "\\W\\e\\e\\k #W, Y";
-              },
-              onReady: [
-                  onReady,
-                  highlightWeek,
-                  function () {
-                      fp.loadedPlugins.push("weekSelect");
-                  },
-              ],
-              onDestroy: onDestroy
-          };
-      };
-  }
-
-  return weekSelectPlugin;
-
-}));
diff --git a/app/static/vendors/flatpickr/themes/airbnb.css b/app/static/vendors/flatpickr/themes/airbnb.css
deleted file mode 100644 (file)
index c47c711..0000000
+++ /dev/null
@@ -1,872 +0,0 @@
-.flatpickr-calendar {
-  background: transparent;
-  opacity: 0;
-  display: none;
-  text-align: center;
-  visibility: hidden;
-  padding: 0;
-  -webkit-animation: none;
-          animation: none;
-  direction: ltr;
-  border: 0;
-  font-size: 14px;
-  line-height: 24px;
-  border-radius: 5px;
-  position: absolute;
-  width: 307.875px;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  -ms-touch-action: manipulation;
-      touch-action: manipulation;
-  background: #fff;
-  -webkit-box-shadow: 1px 0 0 #eee, -1px 0 0 #eee, 0 1px 0 #eee, 0 -1px 0 #eee, 0 3px 13px rgba(0,0,0,0.08);
-          box-shadow: 1px 0 0 #eee, -1px 0 0 #eee, 0 1px 0 #eee, 0 -1px 0 #eee, 0 3px 13px rgba(0,0,0,0.08);
-}
-.flatpickr-calendar.open,
-.flatpickr-calendar.inline {
-  opacity: 1;
-  max-height: 640px;
-  visibility: visible;
-}
-.flatpickr-calendar.open {
-  display: inline-block;
-  z-index: 99999;
-}
-.flatpickr-calendar.animate.open {
-  -webkit-animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);
-          animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);
-}
-.flatpickr-calendar.inline {
-  display: block;
-  position: relative;
-  top: 2px;
-}
-.flatpickr-calendar.static {
-  position: absolute;
-  top: calc(100% + 2px);
-}
-.flatpickr-calendar.static.open {
-  z-index: 999;
-  display: block;
-}
-.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7) {
-  -webkit-box-shadow: none !important;
-          box-shadow: none !important;
-}
-.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1) {
-  -webkit-box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
-          box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
-}
-.flatpickr-calendar .hasWeeks .dayContainer,
-.flatpickr-calendar .hasTime .dayContainer {
-  border-bottom: 0;
-  border-bottom-right-radius: 0;
-  border-bottom-left-radius: 0;
-}
-.flatpickr-calendar .hasWeeks .dayContainer {
-  border-left: 0;
-}
-.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time {
-  height: 40px;
-  border-top: 1px solid #eee;
-}
-.flatpickr-calendar.noCalendar.hasTime .flatpickr-time {
-  height: auto;
-}
-.flatpickr-calendar:before,
-.flatpickr-calendar:after {
-  position: absolute;
-  display: block;
-  pointer-events: none;
-  border: solid transparent;
-  content: '';
-  height: 0;
-  width: 0;
-  left: 22px;
-}
-.flatpickr-calendar.rightMost:before,
-.flatpickr-calendar.rightMost:after {
-  left: auto;
-  right: 22px;
-}
-.flatpickr-calendar:before {
-  border-width: 5px;
-  margin: 0 -5px;
-}
-.flatpickr-calendar:after {
-  border-width: 4px;
-  margin: 0 -4px;
-}
-.flatpickr-calendar.arrowTop:before,
-.flatpickr-calendar.arrowTop:after {
-  bottom: 100%;
-}
-.flatpickr-calendar.arrowTop:before {
-  border-bottom-color: #eee;
-}
-.flatpickr-calendar.arrowTop:after {
-  border-bottom-color: #fff;
-}
-.flatpickr-calendar.arrowBottom:before,
-.flatpickr-calendar.arrowBottom:after {
-  top: 100%;
-}
-.flatpickr-calendar.arrowBottom:before {
-  border-top-color: #eee;
-}
-.flatpickr-calendar.arrowBottom:after {
-  border-top-color: #fff;
-}
-.flatpickr-calendar:focus {
-  outline: 0;
-}
-.flatpickr-wrapper {
-  position: relative;
-  display: inline-block;
-}
-.flatpickr-months {
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-}
-.flatpickr-months .flatpickr-month {
-  background: transparent;
-  color: #3c3f40;
-  fill: #3c3f40;
-  height: 34px;
-  line-height: 1;
-  text-align: center;
-  position: relative;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  overflow: hidden;
-  -webkit-box-flex: 1;
-  -webkit-flex: 1;
-      -ms-flex: 1;
-          flex: 1;
-}
-.flatpickr-months .flatpickr-prev-month,
-.flatpickr-months .flatpickr-next-month {
-  text-decoration: none;
-  cursor: pointer;
-  position: absolute;
-  top: 0;
-  height: 34px;
-  padding: 10px;
-  z-index: 3;
-  color: #3c3f40;
-  fill: #3c3f40;
-}
-.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,
-.flatpickr-months .flatpickr-next-month.flatpickr-disabled {
-  display: none;
-}
-.flatpickr-months .flatpickr-prev-month i,
-.flatpickr-months .flatpickr-next-month i {
-  position: relative;
-}
-.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,
-.flatpickr-months .flatpickr-next-month.flatpickr-prev-month {
-/*
-      /*rtl:begin:ignore*/
-/*
-      */
-  left: 0;
-/*
-      /*rtl:end:ignore*/
-/*
-      */
-}
-/*
-      /*rtl:begin:ignore*/
-/*
-      /*rtl:end:ignore*/
-.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,
-.flatpickr-months .flatpickr-next-month.flatpickr-next-month {
-/*
-      /*rtl:begin:ignore*/
-/*
-      */
-  right: 0;
-/*
-      /*rtl:end:ignore*/
-/*
-      */
-}
-/*
-      /*rtl:begin:ignore*/
-/*
-      /*rtl:end:ignore*/
-.flatpickr-months .flatpickr-prev-month:hover,
-.flatpickr-months .flatpickr-next-month:hover {
-  color: #f64747;
-}
-.flatpickr-months .flatpickr-prev-month:hover svg,
-.flatpickr-months .flatpickr-next-month:hover svg {
-  fill: #f64747;
-}
-.flatpickr-months .flatpickr-prev-month svg,
-.flatpickr-months .flatpickr-next-month svg {
-  width: 14px;
-  height: 14px;
-}
-.flatpickr-months .flatpickr-prev-month svg path,
-.flatpickr-months .flatpickr-next-month svg path {
-  -webkit-transition: fill 0.1s;
-  transition: fill 0.1s;
-  fill: inherit;
-}
-.numInputWrapper {
-  position: relative;
-  height: auto;
-}
-.numInputWrapper input,
-.numInputWrapper span {
-  display: inline-block;
-}
-.numInputWrapper input {
-  width: 100%;
-}
-.numInputWrapper input::-ms-clear {
-  display: none;
-}
-.numInputWrapper input::-webkit-outer-spin-button,
-.numInputWrapper input::-webkit-inner-spin-button {
-  margin: 0;
-  -webkit-appearance: none;
-}
-.numInputWrapper span {
-  position: absolute;
-  right: 0;
-  width: 14px;
-  padding: 0 4px 0 2px;
-  height: 50%;
-  line-height: 50%;
-  opacity: 0;
-  cursor: pointer;
-  border: 1px solid rgba(64,72,72,0.15);
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-}
-.numInputWrapper span:hover {
-  background: rgba(0,0,0,0.1);
-}
-.numInputWrapper span:active {
-  background: rgba(0,0,0,0.2);
-}
-.numInputWrapper span:after {
-  display: block;
-  content: "";
-  position: absolute;
-}
-.numInputWrapper span.arrowUp {
-  top: 0;
-  border-bottom: 0;
-}
-.numInputWrapper span.arrowUp:after {
-  border-left: 4px solid transparent;
-  border-right: 4px solid transparent;
-  border-bottom: 4px solid rgba(64,72,72,0.6);
-  top: 26%;
-}
-.numInputWrapper span.arrowDown {
-  top: 50%;
-}
-.numInputWrapper span.arrowDown:after {
-  border-left: 4px solid transparent;
-  border-right: 4px solid transparent;
-  border-top: 4px solid rgba(64,72,72,0.6);
-  top: 40%;
-}
-.numInputWrapper span svg {
-  width: inherit;
-  height: auto;
-}
-.numInputWrapper span svg path {
-  fill: rgba(60,63,64,0.5);
-}
-.numInputWrapper:hover {
-  background: rgba(0,0,0,0.05);
-}
-.numInputWrapper:hover span {
-  opacity: 1;
-}
-.flatpickr-current-month {
-  font-size: 135%;
-  line-height: inherit;
-  font-weight: 300;
-  color: inherit;
-  position: absolute;
-  width: 75%;
-  left: 12.5%;
-  padding: 7.48px 0 0 0;
-  line-height: 1;
-  height: 34px;
-  display: inline-block;
-  text-align: center;
-  -webkit-transform: translate3d(0px, 0px, 0px);
-          transform: translate3d(0px, 0px, 0px);
-}
-.flatpickr-current-month span.cur-month {
-  font-family: inherit;
-  font-weight: 700;
-  color: inherit;
-  display: inline-block;
-  margin-left: 0.5ch;
-  padding: 0;
-}
-.flatpickr-current-month span.cur-month:hover {
-  background: rgba(0,0,0,0.05);
-}
-.flatpickr-current-month .numInputWrapper {
-  width: 6ch;
-  width: 7ch\0;
-  display: inline-block;
-}
-.flatpickr-current-month .numInputWrapper span.arrowUp:after {
-  border-bottom-color: #3c3f40;
-}
-.flatpickr-current-month .numInputWrapper span.arrowDown:after {
-  border-top-color: #3c3f40;
-}
-.flatpickr-current-month input.cur-year {
-  background: transparent;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  color: inherit;
-  cursor: text;
-  padding: 0 0 0 0.5ch;
-  margin: 0;
-  display: inline-block;
-  font-size: inherit;
-  font-family: inherit;
-  font-weight: 300;
-  line-height: inherit;
-  height: auto;
-  border: 0;
-  border-radius: 0;
-  vertical-align: initial;
-  -webkit-appearance: textfield;
-  -moz-appearance: textfield;
-  appearance: textfield;
-}
-.flatpickr-current-month input.cur-year:focus {
-  outline: 0;
-}
-.flatpickr-current-month input.cur-year[disabled],
-.flatpickr-current-month input.cur-year[disabled]:hover {
-  font-size: 100%;
-  color: rgba(60,63,64,0.5);
-  background: transparent;
-  pointer-events: none;
-}
-.flatpickr-current-month .flatpickr-monthDropdown-months {
-  appearance: menulist;
-  background: transparent;
-  border: none;
-  border-radius: 0;
-  box-sizing: border-box;
-  color: inherit;
-  cursor: pointer;
-  font-size: inherit;
-  font-family: inherit;
-  font-weight: 300;
-  height: auto;
-  line-height: inherit;
-  margin: -1px 0 0 0;
-  outline: none;
-  padding: 0 0 0 0.5ch;
-  position: relative;
-  vertical-align: initial;
-  -webkit-box-sizing: border-box;
-  -webkit-appearance: menulist;
-  -moz-appearance: menulist;
-  width: auto;
-}
-.flatpickr-current-month .flatpickr-monthDropdown-months:focus,
-.flatpickr-current-month .flatpickr-monthDropdown-months:active {
-  outline: none;
-}
-.flatpickr-current-month .flatpickr-monthDropdown-months:hover {
-  background: rgba(0,0,0,0.05);
-}
-.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month {
-  background-color: transparent;
-  outline: none;
-  padding: 0;
-}
-.flatpickr-weekdays {
-  background: transparent;
-  text-align: center;
-  overflow: hidden;
-  width: 100%;
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-  -webkit-box-align: center;
-  -webkit-align-items: center;
-      -ms-flex-align: center;
-          align-items: center;
-  height: 28px;
-}
-.flatpickr-weekdays .flatpickr-weekdaycontainer {
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-  -webkit-box-flex: 1;
-  -webkit-flex: 1;
-      -ms-flex: 1;
-          flex: 1;
-}
-span.flatpickr-weekday {
-  cursor: default;
-  font-size: 90%;
-  background: transparent;
-  color: rgba(0,0,0,0.54);
-  line-height: 1;
-  margin: 0;
-  text-align: center;
-  display: block;
-  -webkit-box-flex: 1;
-  -webkit-flex: 1;
-      -ms-flex: 1;
-          flex: 1;
-  font-weight: bolder;
-}
-.dayContainer,
-.flatpickr-weeks {
-  padding: 1px 0 0 0;
-}
-.flatpickr-days {
-  position: relative;
-  overflow: hidden;
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-  -webkit-box-align: start;
-  -webkit-align-items: flex-start;
-      -ms-flex-align: start;
-          align-items: flex-start;
-  width: 307.875px;
-}
-.flatpickr-days:focus {
-  outline: 0;
-}
-.dayContainer {
-  padding: 0;
-  outline: 0;
-  text-align: left;
-  width: 307.875px;
-  min-width: 307.875px;
-  max-width: 307.875px;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  display: inline-block;
-  display: -ms-flexbox;
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: flex;
-  -webkit-flex-wrap: wrap;
-          flex-wrap: wrap;
-  -ms-flex-wrap: wrap;
-  -ms-flex-pack: justify;
-  -webkit-justify-content: space-around;
-          justify-content: space-around;
-  -webkit-transform: translate3d(0px, 0px, 0px);
-          transform: translate3d(0px, 0px, 0px);
-  opacity: 1;
-}
-.dayContainer + .dayContainer {
-  -webkit-box-shadow: -1px 0 0 #eee;
-          box-shadow: -1px 0 0 #eee;
-}
-.flatpickr-day {
-  background: none;
-  border: 1px solid transparent;
-  border-radius: 150px;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  color: #404848;
-  cursor: pointer;
-  font-weight: 400;
-  width: 14.2857143%;
-  -webkit-flex-basis: 14.2857143%;
-      -ms-flex-preferred-size: 14.2857143%;
-          flex-basis: 14.2857143%;
-  max-width: 39px;
-  height: 39px;
-  line-height: 39px;
-  margin: 0;
-  display: inline-block;
-  position: relative;
-  -webkit-box-pack: center;
-  -webkit-justify-content: center;
-      -ms-flex-pack: center;
-          justify-content: center;
-  text-align: center;
-}
-.flatpickr-day.inRange,
-.flatpickr-day.prevMonthDay.inRange,
-.flatpickr-day.nextMonthDay.inRange,
-.flatpickr-day.today.inRange,
-.flatpickr-day.prevMonthDay.today.inRange,
-.flatpickr-day.nextMonthDay.today.inRange,
-.flatpickr-day:hover,
-.flatpickr-day.prevMonthDay:hover,
-.flatpickr-day.nextMonthDay:hover,
-.flatpickr-day:focus,
-.flatpickr-day.prevMonthDay:focus,
-.flatpickr-day.nextMonthDay:focus {
-  cursor: pointer;
-  outline: 0;
-  background: #e9e9e9;
-  border-color: #e9e9e9;
-}
-.flatpickr-day.today {
-  border-color: #f64747;
-}
-.flatpickr-day.today:hover,
-.flatpickr-day.today:focus {
-  border-color: #f64747;
-  background: #f64747;
-  color: #fff;
-}
-.flatpickr-day.selected,
-.flatpickr-day.startRange,
-.flatpickr-day.endRange,
-.flatpickr-day.selected.inRange,
-.flatpickr-day.startRange.inRange,
-.flatpickr-day.endRange.inRange,
-.flatpickr-day.selected:focus,
-.flatpickr-day.startRange:focus,
-.flatpickr-day.endRange:focus,
-.flatpickr-day.selected:hover,
-.flatpickr-day.startRange:hover,
-.flatpickr-day.endRange:hover,
-.flatpickr-day.selected.prevMonthDay,
-.flatpickr-day.startRange.prevMonthDay,
-.flatpickr-day.endRange.prevMonthDay,
-.flatpickr-day.selected.nextMonthDay,
-.flatpickr-day.startRange.nextMonthDay,
-.flatpickr-day.endRange.nextMonthDay {
-  background: #4f99ff;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  color: #fff;
-  border-color: #4f99ff;
-}
-.flatpickr-day.selected.startRange,
-.flatpickr-day.startRange.startRange,
-.flatpickr-day.endRange.startRange {
-  border-radius: 50px 0 0 50px;
-}
-.flatpickr-day.selected.endRange,
-.flatpickr-day.startRange.endRange,
-.flatpickr-day.endRange.endRange {
-  border-radius: 0 50px 50px 0;
-}
-.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),
-.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),
-.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)) {
-  -webkit-box-shadow: -10px 0 0 #4f99ff;
-          box-shadow: -10px 0 0 #4f99ff;
-}
-.flatpickr-day.selected.startRange.endRange,
-.flatpickr-day.startRange.startRange.endRange,
-.flatpickr-day.endRange.startRange.endRange {
-  border-radius: 50px;
-}
-.flatpickr-day.inRange {
-  border-radius: 0;
-  -webkit-box-shadow: -5px 0 0 #e9e9e9, 5px 0 0 #e9e9e9;
-          box-shadow: -5px 0 0 #e9e9e9, 5px 0 0 #e9e9e9;
-}
-.flatpickr-day.flatpickr-disabled,
-.flatpickr-day.flatpickr-disabled:hover,
-.flatpickr-day.prevMonthDay,
-.flatpickr-day.nextMonthDay,
-.flatpickr-day.notAllowed,
-.flatpickr-day.notAllowed.prevMonthDay,
-.flatpickr-day.notAllowed.nextMonthDay {
-  color: rgba(64,72,72,0.3);
-  background: transparent;
-  border-color: #e9e9e9;
-  cursor: default;
-}
-.flatpickr-day.flatpickr-disabled,
-.flatpickr-day.flatpickr-disabled:hover {
-  cursor: not-allowed;
-  color: rgba(64,72,72,0.1);
-}
-.flatpickr-day.week.selected {
-  border-radius: 0;
-  -webkit-box-shadow: -5px 0 0 #4f99ff, 5px 0 0 #4f99ff;
-          box-shadow: -5px 0 0 #4f99ff, 5px 0 0 #4f99ff;
-}
-.flatpickr-day.hidden {
-  visibility: hidden;
-}
-.rangeMode .flatpickr-day {
-  margin-top: 1px;
-}
-.flatpickr-weekwrapper {
-  float: left;
-}
-.flatpickr-weekwrapper .flatpickr-weeks {
-  padding: 0 12px;
-  -webkit-box-shadow: 1px 0 0 #eee;
-          box-shadow: 1px 0 0 #eee;
-}
-.flatpickr-weekwrapper .flatpickr-weekday {
-  float: none;
-  width: 100%;
-  line-height: 28px;
-}
-.flatpickr-weekwrapper span.flatpickr-day,
-.flatpickr-weekwrapper span.flatpickr-day:hover {
-  display: block;
-  width: 100%;
-  max-width: none;
-  color: rgba(64,72,72,0.3);
-  background: transparent;
-  cursor: default;
-  border: none;
-}
-.flatpickr-innerContainer {
-  display: block;
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  overflow: hidden;
-}
-.flatpickr-rContainer {
-  display: inline-block;
-  padding: 0;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-}
-.flatpickr-time {
-  text-align: center;
-  outline: 0;
-  display: block;
-  height: 0;
-  line-height: 40px;
-  max-height: 40px;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  overflow: hidden;
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-}
-.flatpickr-time:after {
-  content: "";
-  display: table;
-  clear: both;
-}
-.flatpickr-time .numInputWrapper {
-  -webkit-box-flex: 1;
-  -webkit-flex: 1;
-      -ms-flex: 1;
-          flex: 1;
-  width: 40%;
-  height: 40px;
-  float: left;
-}
-.flatpickr-time .numInputWrapper span.arrowUp:after {
-  border-bottom-color: #404848;
-}
-.flatpickr-time .numInputWrapper span.arrowDown:after {
-  border-top-color: #404848;
-}
-.flatpickr-time.hasSeconds .numInputWrapper {
-  width: 26%;
-}
-.flatpickr-time.time24hr .numInputWrapper {
-  width: 49%;
-}
-.flatpickr-time input {
-  background: transparent;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  border: 0;
-  border-radius: 0;
-  text-align: center;
-  margin: 0;
-  padding: 0;
-  height: inherit;
-  line-height: inherit;
-  color: #404848;
-  font-size: 14px;
-  position: relative;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  -webkit-appearance: textfield;
-  -moz-appearance: textfield;
-  appearance: textfield;
-}
-.flatpickr-time input.flatpickr-hour {
-  font-weight: bold;
-}
-.flatpickr-time input.flatpickr-minute,
-.flatpickr-time input.flatpickr-second {
-  font-weight: 400;
-}
-.flatpickr-time input:focus {
-  outline: 0;
-  border: 0;
-}
-.flatpickr-time .flatpickr-time-separator,
-.flatpickr-time .flatpickr-am-pm {
-  height: inherit;
-  float: left;
-  line-height: inherit;
-  color: #404848;
-  font-weight: bold;
-  width: 2%;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  -webkit-align-self: center;
-      -ms-flex-item-align: center;
-          align-self: center;
-}
-.flatpickr-time .flatpickr-am-pm {
-  outline: 0;
-  width: 18%;
-  cursor: pointer;
-  text-align: center;
-  font-weight: 400;
-}
-.flatpickr-time input:hover,
-.flatpickr-time .flatpickr-am-pm:hover,
-.flatpickr-time input:focus,
-.flatpickr-time .flatpickr-am-pm:focus {
-  background: #f1f1f1;
-}
-.flatpickr-input[readonly] {
-  cursor: pointer;
-}
-@-webkit-keyframes fpFadeInDown {
-  from {
-    opacity: 0;
-    -webkit-transform: translate3d(0, -20px, 0);
-            transform: translate3d(0, -20px, 0);
-  }
-  to {
-    opacity: 1;
-    -webkit-transform: translate3d(0, 0, 0);
-            transform: translate3d(0, 0, 0);
-  }
-}
-@keyframes fpFadeInDown {
-  from {
-    opacity: 0;
-    -webkit-transform: translate3d(0, -20px, 0);
-            transform: translate3d(0, -20px, 0);
-  }
-  to {
-    opacity: 1;
-    -webkit-transform: translate3d(0, 0, 0);
-            transform: translate3d(0, 0, 0);
-  }
-}
-.flatpickr-calendar {
-  width: 307.875px;
-}
-.dayContainer {
-  padding: 0;
-  border-right: 0;
-}
-span.flatpickr-day,
-span.flatpickr-day.prevMonthDay,
-span.flatpickr-day.nextMonthDay {
-  border-radius: 0 !important;
-  border: 1px solid #e9e9e9;
-  max-width: none;
-  border-right-color: transparent;
-}
-span.flatpickr-day:nth-child(n+8),
-span.flatpickr-day.prevMonthDay:nth-child(n+8),
-span.flatpickr-day.nextMonthDay:nth-child(n+8) {
-  border-top-color: transparent;
-}
-span.flatpickr-day:nth-child(7n-6),
-span.flatpickr-day.prevMonthDay:nth-child(7n-6),
-span.flatpickr-day.nextMonthDay:nth-child(7n-6) {
-  border-left: 0;
-}
-span.flatpickr-day:nth-child(n+36),
-span.flatpickr-day.prevMonthDay:nth-child(n+36),
-span.flatpickr-day.nextMonthDay:nth-child(n+36) {
-  border-bottom: 0;
-}
-span.flatpickr-day:nth-child(-n+7),
-span.flatpickr-day.prevMonthDay:nth-child(-n+7),
-span.flatpickr-day.nextMonthDay:nth-child(-n+7) {
-  margin-top: 0;
-}
-span.flatpickr-day.today:not(.selected),
-span.flatpickr-day.prevMonthDay.today:not(.selected),
-span.flatpickr-day.nextMonthDay.today:not(.selected) {
-  border-color: #e9e9e9;
-  border-right-color: transparent;
-  border-top-color: transparent;
-  border-bottom-color: #f64747;
-}
-span.flatpickr-day.today:not(.selected):hover,
-span.flatpickr-day.prevMonthDay.today:not(.selected):hover,
-span.flatpickr-day.nextMonthDay.today:not(.selected):hover {
-  border: 1px solid #f64747;
-}
-span.flatpickr-day.startRange,
-span.flatpickr-day.prevMonthDay.startRange,
-span.flatpickr-day.nextMonthDay.startRange,
-span.flatpickr-day.endRange,
-span.flatpickr-day.prevMonthDay.endRange,
-span.flatpickr-day.nextMonthDay.endRange {
-  border-color: #4f99ff;
-}
-span.flatpickr-day.today,
-span.flatpickr-day.prevMonthDay.today,
-span.flatpickr-day.nextMonthDay.today,
-span.flatpickr-day.selected,
-span.flatpickr-day.prevMonthDay.selected,
-span.flatpickr-day.nextMonthDay.selected {
-  z-index: 2;
-}
-.rangeMode .flatpickr-day {
-  margin-top: -1px;
-}
-.flatpickr-weekwrapper .flatpickr-weeks {
-  -webkit-box-shadow: none;
-          box-shadow: none;
-}
-.flatpickr-weekwrapper span.flatpickr-day {
-  border: 0;
-  margin: -1px 0 0 -1px;
-}
-.hasWeeks .flatpickr-days {
-  border-right: 0;
-}
-
-       @media screen and (min-width:0\0) and (min-resolution: +72dpi) {
-               span.flatpickr-day {
-                       display: block;
-                       -webkit-box-flex: 1;
-                       -webkit-flex: 1 0 auto;
-                           -ms-flex: 1 0 auto;
-                               flex: 1 0 auto;
-               }
-       }
diff --git a/app/static/vendors/flatpickr/themes/confetti.css b/app/static/vendors/flatpickr/themes/confetti.css
deleted file mode 100644 (file)
index d663ae3..0000000
+++ /dev/null
@@ -1,795 +0,0 @@
-.flatpickr-calendar {
-  background: transparent;
-  opacity: 0;
-  display: none;
-  text-align: center;
-  visibility: hidden;
-  padding: 0;
-  -webkit-animation: none;
-          animation: none;
-  direction: ltr;
-  border: 0;
-  font-size: 14px;
-  line-height: 24px;
-  border-radius: 5px;
-  position: absolute;
-  width: 307.875px;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  -ms-touch-action: manipulation;
-      touch-action: manipulation;
-  -webkit-box-shadow: 0 3px 13px rgba(0,0,0,0.08);
-          box-shadow: 0 3px 13px rgba(0,0,0,0.08);
-}
-.flatpickr-calendar.open,
-.flatpickr-calendar.inline {
-  opacity: 1;
-  max-height: 640px;
-  visibility: visible;
-}
-.flatpickr-calendar.open {
-  display: inline-block;
-  z-index: 99999;
-}
-.flatpickr-calendar.animate.open {
-  -webkit-animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);
-          animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);
-}
-.flatpickr-calendar.inline {
-  display: block;
-  position: relative;
-  top: 2px;
-}
-.flatpickr-calendar.static {
-  position: absolute;
-  top: calc(100% + 2px);
-}
-.flatpickr-calendar.static.open {
-  z-index: 999;
-  display: block;
-}
-.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7) {
-  -webkit-box-shadow: none !important;
-          box-shadow: none !important;
-}
-.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1) {
-  -webkit-box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
-          box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
-}
-.flatpickr-calendar .hasWeeks .dayContainer,
-.flatpickr-calendar .hasTime .dayContainer {
-  border-bottom: 0;
-  border-bottom-right-radius: 0;
-  border-bottom-left-radius: 0;
-}
-.flatpickr-calendar .hasWeeks .dayContainer {
-  border-left: 0;
-}
-.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time {
-  height: 40px;
-  border-top: 1px solid rgba(72,72,72,0.1);
-}
-.flatpickr-calendar.showTimeInput.hasTime .flatpickr-innerContainer {
-  border-bottom: 0;
-}
-.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time {
-  border: 1px solid rgba(72,72,72,0.1);
-}
-.flatpickr-calendar.noCalendar.hasTime .flatpickr-time {
-  height: auto;
-}
-.flatpickr-calendar:before,
-.flatpickr-calendar:after {
-  position: absolute;
-  display: block;
-  pointer-events: none;
-  border: solid transparent;
-  content: '';
-  height: 0;
-  width: 0;
-  left: 22px;
-}
-.flatpickr-calendar.rightMost:before,
-.flatpickr-calendar.rightMost:after {
-  left: auto;
-  right: 22px;
-}
-.flatpickr-calendar:before {
-  border-width: 5px;
-  margin: 0 -5px;
-}
-.flatpickr-calendar:after {
-  border-width: 4px;
-  margin: 0 -4px;
-}
-.flatpickr-calendar.arrowTop:before,
-.flatpickr-calendar.arrowTop:after {
-  bottom: 100%;
-}
-.flatpickr-calendar.arrowTop:before {
-  border-bottom-color: rgba(72,72,72,0.1);
-}
-.flatpickr-calendar.arrowTop:after {
-  border-bottom-color: #ffb866;
-}
-.flatpickr-calendar.arrowBottom:before,
-.flatpickr-calendar.arrowBottom:after {
-  top: 100%;
-}
-.flatpickr-calendar.arrowBottom:before {
-  border-top-color: rgba(72,72,72,0.1);
-}
-.flatpickr-calendar.arrowBottom:after {
-  border-top-color: #ffb866;
-}
-.flatpickr-calendar:focus {
-  outline: 0;
-}
-.flatpickr-wrapper {
-  position: relative;
-  display: inline-block;
-}
-.flatpickr-months {
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-}
-.flatpickr-months .flatpickr-month {
-  border-radius: 5px 5px 0 0;
-  background: #ffb866;
-  color: #fff;
-  fill: #fff;
-  height: 34px;
-  line-height: 1;
-  text-align: center;
-  position: relative;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  overflow: hidden;
-  -webkit-box-flex: 1;
-  -webkit-flex: 1;
-      -ms-flex: 1;
-          flex: 1;
-}
-.flatpickr-months .flatpickr-prev-month,
-.flatpickr-months .flatpickr-next-month {
-  text-decoration: none;
-  cursor: pointer;
-  position: absolute;
-  top: 0;
-  height: 34px;
-  padding: 10px;
-  z-index: 3;
-  color: #fff;
-  fill: #fff;
-}
-.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,
-.flatpickr-months .flatpickr-next-month.flatpickr-disabled {
-  display: none;
-}
-.flatpickr-months .flatpickr-prev-month i,
-.flatpickr-months .flatpickr-next-month i {
-  position: relative;
-}
-.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,
-.flatpickr-months .flatpickr-next-month.flatpickr-prev-month {
-/*
-      /*rtl:begin:ignore*/
-/*
-      */
-  left: 0;
-/*
-      /*rtl:end:ignore*/
-/*
-      */
-}
-/*
-      /*rtl:begin:ignore*/
-/*
-      /*rtl:end:ignore*/
-.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,
-.flatpickr-months .flatpickr-next-month.flatpickr-next-month {
-/*
-      /*rtl:begin:ignore*/
-/*
-      */
-  right: 0;
-/*
-      /*rtl:end:ignore*/
-/*
-      */
-}
-/*
-      /*rtl:begin:ignore*/
-/*
-      /*rtl:end:ignore*/
-.flatpickr-months .flatpickr-prev-month:hover,
-.flatpickr-months .flatpickr-next-month:hover {
-  color: #bbb;
-}
-.flatpickr-months .flatpickr-prev-month:hover svg,
-.flatpickr-months .flatpickr-next-month:hover svg {
-  fill: #f64747;
-}
-.flatpickr-months .flatpickr-prev-month svg,
-.flatpickr-months .flatpickr-next-month svg {
-  width: 14px;
-  height: 14px;
-}
-.flatpickr-months .flatpickr-prev-month svg path,
-.flatpickr-months .flatpickr-next-month svg path {
-  -webkit-transition: fill 0.1s;
-  transition: fill 0.1s;
-  fill: inherit;
-}
-.numInputWrapper {
-  position: relative;
-  height: auto;
-}
-.numInputWrapper input,
-.numInputWrapper span {
-  display: inline-block;
-}
-.numInputWrapper input {
-  width: 100%;
-}
-.numInputWrapper input::-ms-clear {
-  display: none;
-}
-.numInputWrapper input::-webkit-outer-spin-button,
-.numInputWrapper input::-webkit-inner-spin-button {
-  margin: 0;
-  -webkit-appearance: none;
-}
-.numInputWrapper span {
-  position: absolute;
-  right: 0;
-  width: 14px;
-  padding: 0 4px 0 2px;
-  height: 50%;
-  line-height: 50%;
-  opacity: 0;
-  cursor: pointer;
-  border: 1px solid rgba(72,72,72,0.15);
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-}
-.numInputWrapper span:hover {
-  background: rgba(0,0,0,0.1);
-}
-.numInputWrapper span:active {
-  background: rgba(0,0,0,0.2);
-}
-.numInputWrapper span:after {
-  display: block;
-  content: "";
-  position: absolute;
-}
-.numInputWrapper span.arrowUp {
-  top: 0;
-  border-bottom: 0;
-}
-.numInputWrapper span.arrowUp:after {
-  border-left: 4px solid transparent;
-  border-right: 4px solid transparent;
-  border-bottom: 4px solid rgba(72,72,72,0.6);
-  top: 26%;
-}
-.numInputWrapper span.arrowDown {
-  top: 50%;
-}
-.numInputWrapper span.arrowDown:after {
-  border-left: 4px solid transparent;
-  border-right: 4px solid transparent;
-  border-top: 4px solid rgba(72,72,72,0.6);
-  top: 40%;
-}
-.numInputWrapper span svg {
-  width: inherit;
-  height: auto;
-}
-.numInputWrapper span svg path {
-  fill: rgba(255,255,255,0.5);
-}
-.numInputWrapper:hover {
-  background: rgba(0,0,0,0.05);
-}
-.numInputWrapper:hover span {
-  opacity: 1;
-}
-.flatpickr-current-month {
-  font-size: 135%;
-  line-height: inherit;
-  font-weight: 300;
-  color: inherit;
-  position: absolute;
-  width: 75%;
-  left: 12.5%;
-  padding: 7.48px 0 0 0;
-  line-height: 1;
-  height: 34px;
-  display: inline-block;
-  text-align: center;
-  -webkit-transform: translate3d(0px, 0px, 0px);
-          transform: translate3d(0px, 0px, 0px);
-}
-.flatpickr-current-month span.cur-month {
-  font-family: inherit;
-  font-weight: 700;
-  color: inherit;
-  display: inline-block;
-  margin-left: 0.5ch;
-  padding: 0;
-}
-.flatpickr-current-month span.cur-month:hover {
-  background: rgba(0,0,0,0.05);
-}
-.flatpickr-current-month .numInputWrapper {
-  width: 6ch;
-  width: 7ch\0;
-  display: inline-block;
-}
-.flatpickr-current-month .numInputWrapper span.arrowUp:after {
-  border-bottom-color: #fff;
-}
-.flatpickr-current-month .numInputWrapper span.arrowDown:after {
-  border-top-color: #fff;
-}
-.flatpickr-current-month input.cur-year {
-  background: transparent;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  color: inherit;
-  cursor: text;
-  padding: 0 0 0 0.5ch;
-  margin: 0;
-  display: inline-block;
-  font-size: inherit;
-  font-family: inherit;
-  font-weight: 300;
-  line-height: inherit;
-  height: auto;
-  border: 0;
-  border-radius: 0;
-  vertical-align: initial;
-  -webkit-appearance: textfield;
-  -moz-appearance: textfield;
-  appearance: textfield;
-}
-.flatpickr-current-month input.cur-year:focus {
-  outline: 0;
-}
-.flatpickr-current-month input.cur-year[disabled],
-.flatpickr-current-month input.cur-year[disabled]:hover {
-  font-size: 100%;
-  color: rgba(255,255,255,0.5);
-  background: transparent;
-  pointer-events: none;
-}
-.flatpickr-current-month .flatpickr-monthDropdown-months {
-  appearance: menulist;
-  background: #ffb866;
-  border: none;
-  border-radius: 0;
-  box-sizing: border-box;
-  color: inherit;
-  cursor: pointer;
-  font-size: inherit;
-  font-family: inherit;
-  font-weight: 300;
-  height: auto;
-  line-height: inherit;
-  margin: -1px 0 0 0;
-  outline: none;
-  padding: 0 0 0 0.5ch;
-  position: relative;
-  vertical-align: initial;
-  -webkit-box-sizing: border-box;
-  -webkit-appearance: menulist;
-  -moz-appearance: menulist;
-  width: auto;
-}
-.flatpickr-current-month .flatpickr-monthDropdown-months:focus,
-.flatpickr-current-month .flatpickr-monthDropdown-months:active {
-  outline: none;
-}
-.flatpickr-current-month .flatpickr-monthDropdown-months:hover {
-  background: rgba(0,0,0,0.05);
-}
-.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month {
-  background-color: #ffb866;
-  outline: none;
-  padding: 0;
-}
-.flatpickr-weekdays {
-  background: #ffb866;
-  text-align: center;
-  overflow: hidden;
-  width: 100%;
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-  -webkit-box-align: center;
-  -webkit-align-items: center;
-      -ms-flex-align: center;
-          align-items: center;
-  height: 28px;
-}
-.flatpickr-weekdays .flatpickr-weekdaycontainer {
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-  -webkit-box-flex: 1;
-  -webkit-flex: 1;
-      -ms-flex: 1;
-          flex: 1;
-}
-span.flatpickr-weekday {
-  cursor: default;
-  font-size: 90%;
-  background: #ffb866;
-  color: rgba(0,0,0,0.54);
-  line-height: 1;
-  margin: 0;
-  text-align: center;
-  display: block;
-  -webkit-box-flex: 1;
-  -webkit-flex: 1;
-      -ms-flex: 1;
-          flex: 1;
-  font-weight: bolder;
-}
-.dayContainer,
-.flatpickr-weeks {
-  padding: 1px 0 0 0;
-}
-.flatpickr-days {
-  position: relative;
-  overflow: hidden;
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-  -webkit-box-align: start;
-  -webkit-align-items: flex-start;
-      -ms-flex-align: start;
-          align-items: flex-start;
-  width: 307.875px;
-  border-left: 1px solid rgba(72,72,72,0.1);
-  border-right: 1px solid rgba(72,72,72,0.1);
-}
-.flatpickr-days:focus {
-  outline: 0;
-}
-.dayContainer {
-  padding: 0;
-  outline: 0;
-  text-align: left;
-  width: 307.875px;
-  min-width: 307.875px;
-  max-width: 307.875px;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  display: inline-block;
-  display: -ms-flexbox;
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: flex;
-  -webkit-flex-wrap: wrap;
-          flex-wrap: wrap;
-  -ms-flex-wrap: wrap;
-  -ms-flex-pack: justify;
-  -webkit-justify-content: space-around;
-          justify-content: space-around;
-  -webkit-transform: translate3d(0px, 0px, 0px);
-          transform: translate3d(0px, 0px, 0px);
-  opacity: 1;
-}
-.dayContainer + .dayContainer {
-  -webkit-box-shadow: -1px 0 0 rgba(72,72,72,0.1);
-          box-shadow: -1px 0 0 rgba(72,72,72,0.1);
-}
-.flatpickr-day {
-  background: none;
-  border: 1px solid transparent;
-  border-radius: 150px;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  color: #484848;
-  cursor: pointer;
-  font-weight: 400;
-  width: 14.2857143%;
-  -webkit-flex-basis: 14.2857143%;
-      -ms-flex-preferred-size: 14.2857143%;
-          flex-basis: 14.2857143%;
-  max-width: 39px;
-  height: 39px;
-  line-height: 39px;
-  margin: 0;
-  display: inline-block;
-  position: relative;
-  -webkit-box-pack: center;
-  -webkit-justify-content: center;
-      -ms-flex-pack: center;
-          justify-content: center;
-  text-align: center;
-}
-.flatpickr-day.inRange,
-.flatpickr-day.prevMonthDay.inRange,
-.flatpickr-day.nextMonthDay.inRange,
-.flatpickr-day.today.inRange,
-.flatpickr-day.prevMonthDay.today.inRange,
-.flatpickr-day.nextMonthDay.today.inRange,
-.flatpickr-day:hover,
-.flatpickr-day.prevMonthDay:hover,
-.flatpickr-day.nextMonthDay:hover,
-.flatpickr-day:focus,
-.flatpickr-day.prevMonthDay:focus,
-.flatpickr-day.nextMonthDay:focus {
-  cursor: pointer;
-  outline: 0;
-  background: #e2e2e2;
-  border-color: #e2e2e2;
-}
-.flatpickr-day.today {
-  border-color: #bbb;
-}
-.flatpickr-day.today:hover,
-.flatpickr-day.today:focus {
-  border-color: #bbb;
-  background: #bbb;
-  color: #fff;
-}
-.flatpickr-day.selected,
-.flatpickr-day.startRange,
-.flatpickr-day.endRange,
-.flatpickr-day.selected.inRange,
-.flatpickr-day.startRange.inRange,
-.flatpickr-day.endRange.inRange,
-.flatpickr-day.selected:focus,
-.flatpickr-day.startRange:focus,
-.flatpickr-day.endRange:focus,
-.flatpickr-day.selected:hover,
-.flatpickr-day.startRange:hover,
-.flatpickr-day.endRange:hover,
-.flatpickr-day.selected.prevMonthDay,
-.flatpickr-day.startRange.prevMonthDay,
-.flatpickr-day.endRange.prevMonthDay,
-.flatpickr-day.selected.nextMonthDay,
-.flatpickr-day.startRange.nextMonthDay,
-.flatpickr-day.endRange.nextMonthDay {
-  background: #ffb866;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  color: #fff;
-  border-color: #ffb866;
-}
-.flatpickr-day.selected.startRange,
-.flatpickr-day.startRange.startRange,
-.flatpickr-day.endRange.startRange {
-  border-radius: 50px 0 0 50px;
-}
-.flatpickr-day.selected.endRange,
-.flatpickr-day.startRange.endRange,
-.flatpickr-day.endRange.endRange {
-  border-radius: 0 50px 50px 0;
-}
-.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),
-.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),
-.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)) {
-  -webkit-box-shadow: -10px 0 0 #ffb866;
-          box-shadow: -10px 0 0 #ffb866;
-}
-.flatpickr-day.selected.startRange.endRange,
-.flatpickr-day.startRange.startRange.endRange,
-.flatpickr-day.endRange.startRange.endRange {
-  border-radius: 50px;
-}
-.flatpickr-day.inRange {
-  border-radius: 0;
-  -webkit-box-shadow: -5px 0 0 #e2e2e2, 5px 0 0 #e2e2e2;
-          box-shadow: -5px 0 0 #e2e2e2, 5px 0 0 #e2e2e2;
-}
-.flatpickr-day.flatpickr-disabled,
-.flatpickr-day.flatpickr-disabled:hover,
-.flatpickr-day.prevMonthDay,
-.flatpickr-day.nextMonthDay,
-.flatpickr-day.notAllowed,
-.flatpickr-day.notAllowed.prevMonthDay,
-.flatpickr-day.notAllowed.nextMonthDay {
-  color: rgba(72,72,72,0.3);
-  background: transparent;
-  border-color: transparent;
-  cursor: default;
-}
-.flatpickr-day.flatpickr-disabled,
-.flatpickr-day.flatpickr-disabled:hover {
-  cursor: not-allowed;
-  color: rgba(72,72,72,0.1);
-}
-.flatpickr-day.week.selected {
-  border-radius: 0;
-  -webkit-box-shadow: -5px 0 0 #ffb866, 5px 0 0 #ffb866;
-          box-shadow: -5px 0 0 #ffb866, 5px 0 0 #ffb866;
-}
-.flatpickr-day.hidden {
-  visibility: hidden;
-}
-.rangeMode .flatpickr-day {
-  margin-top: 1px;
-}
-.flatpickr-weekwrapper {
-  float: left;
-}
-.flatpickr-weekwrapper .flatpickr-weeks {
-  padding: 0 12px;
-  border-left: 1px solid rgba(72,72,72,0.1);
-}
-.flatpickr-weekwrapper .flatpickr-weekday {
-  float: none;
-  width: 100%;
-  line-height: 28px;
-}
-.flatpickr-weekwrapper span.flatpickr-day,
-.flatpickr-weekwrapper span.flatpickr-day:hover {
-  display: block;
-  width: 100%;
-  max-width: none;
-  color: rgba(72,72,72,0.3);
-  background: transparent;
-  cursor: default;
-  border: none;
-}
-.flatpickr-innerContainer {
-  display: block;
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  overflow: hidden;
-  background: #fff;
-  border-bottom: 1px solid rgba(72,72,72,0.1);
-}
-.flatpickr-rContainer {
-  display: inline-block;
-  padding: 0;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-}
-.flatpickr-time {
-  text-align: center;
-  outline: 0;
-  display: block;
-  height: 0;
-  line-height: 40px;
-  max-height: 40px;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  overflow: hidden;
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-  background: #fff;
-  border-radius: 0 0 5px 5px;
-}
-.flatpickr-time:after {
-  content: "";
-  display: table;
-  clear: both;
-}
-.flatpickr-time .numInputWrapper {
-  -webkit-box-flex: 1;
-  -webkit-flex: 1;
-      -ms-flex: 1;
-          flex: 1;
-  width: 40%;
-  height: 40px;
-  float: left;
-}
-.flatpickr-time .numInputWrapper span.arrowUp:after {
-  border-bottom-color: #484848;
-}
-.flatpickr-time .numInputWrapper span.arrowDown:after {
-  border-top-color: #484848;
-}
-.flatpickr-time.hasSeconds .numInputWrapper {
-  width: 26%;
-}
-.flatpickr-time.time24hr .numInputWrapper {
-  width: 49%;
-}
-.flatpickr-time input {
-  background: transparent;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  border: 0;
-  border-radius: 0;
-  text-align: center;
-  margin: 0;
-  padding: 0;
-  height: inherit;
-  line-height: inherit;
-  color: #484848;
-  font-size: 14px;
-  position: relative;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  -webkit-appearance: textfield;
-  -moz-appearance: textfield;
-  appearance: textfield;
-}
-.flatpickr-time input.flatpickr-hour {
-  font-weight: bold;
-}
-.flatpickr-time input.flatpickr-minute,
-.flatpickr-time input.flatpickr-second {
-  font-weight: 400;
-}
-.flatpickr-time input:focus {
-  outline: 0;
-  border: 0;
-}
-.flatpickr-time .flatpickr-time-separator,
-.flatpickr-time .flatpickr-am-pm {
-  height: inherit;
-  float: left;
-  line-height: inherit;
-  color: #484848;
-  font-weight: bold;
-  width: 2%;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  -webkit-align-self: center;
-      -ms-flex-item-align: center;
-          align-self: center;
-}
-.flatpickr-time .flatpickr-am-pm {
-  outline: 0;
-  width: 18%;
-  cursor: pointer;
-  text-align: center;
-  font-weight: 400;
-}
-.flatpickr-time input:hover,
-.flatpickr-time .flatpickr-am-pm:hover,
-.flatpickr-time input:focus,
-.flatpickr-time .flatpickr-am-pm:focus {
-  background: #eaeaea;
-}
-.flatpickr-input[readonly] {
-  cursor: pointer;
-}
-@-webkit-keyframes fpFadeInDown {
-  from {
-    opacity: 0;
-    -webkit-transform: translate3d(0, -20px, 0);
-            transform: translate3d(0, -20px, 0);
-  }
-  to {
-    opacity: 1;
-    -webkit-transform: translate3d(0, 0, 0);
-            transform: translate3d(0, 0, 0);
-  }
-}
-@keyframes fpFadeInDown {
-  from {
-    opacity: 0;
-    -webkit-transform: translate3d(0, -20px, 0);
-            transform: translate3d(0, -20px, 0);
-  }
-  to {
-    opacity: 1;
-    -webkit-transform: translate3d(0, 0, 0);
-            transform: translate3d(0, 0, 0);
-  }
-}
diff --git a/app/static/vendors/flatpickr/themes/dark.css b/app/static/vendors/flatpickr/themes/dark.css
deleted file mode 100644 (file)
index e3518cc..0000000
+++ /dev/null
@@ -1,784 +0,0 @@
-.flatpickr-calendar {
-  background: transparent;
-  opacity: 0;
-  display: none;
-  text-align: center;
-  visibility: hidden;
-  padding: 0;
-  -webkit-animation: none;
-          animation: none;
-  direction: ltr;
-  border: 0;
-  font-size: 14px;
-  line-height: 24px;
-  border-radius: 5px;
-  position: absolute;
-  width: 307.875px;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  -ms-touch-action: manipulation;
-      touch-action: manipulation;
-  background: #3f4458;
-  -webkit-box-shadow: 1px 0 0 #20222c, -1px 0 0 #20222c, 0 1px 0 #20222c, 0 -1px 0 #20222c, 0 3px 13px rgba(0,0,0,0.08);
-          box-shadow: 1px 0 0 #20222c, -1px 0 0 #20222c, 0 1px 0 #20222c, 0 -1px 0 #20222c, 0 3px 13px rgba(0,0,0,0.08);
-}
-.flatpickr-calendar.open,
-.flatpickr-calendar.inline {
-  opacity: 1;
-  max-height: 640px;
-  visibility: visible;
-}
-.flatpickr-calendar.open {
-  display: inline-block;
-  z-index: 99999;
-}
-.flatpickr-calendar.animate.open {
-  -webkit-animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);
-          animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);
-}
-.flatpickr-calendar.inline {
-  display: block;
-  position: relative;
-  top: 2px;
-}
-.flatpickr-calendar.static {
-  position: absolute;
-  top: calc(100% + 2px);
-}
-.flatpickr-calendar.static.open {
-  z-index: 999;
-  display: block;
-}
-.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7) {
-  -webkit-box-shadow: none !important;
-          box-shadow: none !important;
-}
-.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1) {
-  -webkit-box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
-          box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
-}
-.flatpickr-calendar .hasWeeks .dayContainer,
-.flatpickr-calendar .hasTime .dayContainer {
-  border-bottom: 0;
-  border-bottom-right-radius: 0;
-  border-bottom-left-radius: 0;
-}
-.flatpickr-calendar .hasWeeks .dayContainer {
-  border-left: 0;
-}
-.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time {
-  height: 40px;
-  border-top: 1px solid #20222c;
-}
-.flatpickr-calendar.noCalendar.hasTime .flatpickr-time {
-  height: auto;
-}
-.flatpickr-calendar:before,
-.flatpickr-calendar:after {
-  position: absolute;
-  display: block;
-  pointer-events: none;
-  border: solid transparent;
-  content: '';
-  height: 0;
-  width: 0;
-  left: 22px;
-}
-.flatpickr-calendar.rightMost:before,
-.flatpickr-calendar.rightMost:after {
-  left: auto;
-  right: 22px;
-}
-.flatpickr-calendar:before {
-  border-width: 5px;
-  margin: 0 -5px;
-}
-.flatpickr-calendar:after {
-  border-width: 4px;
-  margin: 0 -4px;
-}
-.flatpickr-calendar.arrowTop:before,
-.flatpickr-calendar.arrowTop:after {
-  bottom: 100%;
-}
-.flatpickr-calendar.arrowTop:before {
-  border-bottom-color: #20222c;
-}
-.flatpickr-calendar.arrowTop:after {
-  border-bottom-color: #3f4458;
-}
-.flatpickr-calendar.arrowBottom:before,
-.flatpickr-calendar.arrowBottom:after {
-  top: 100%;
-}
-.flatpickr-calendar.arrowBottom:before {
-  border-top-color: #20222c;
-}
-.flatpickr-calendar.arrowBottom:after {
-  border-top-color: #3f4458;
-}
-.flatpickr-calendar:focus {
-  outline: 0;
-}
-.flatpickr-wrapper {
-  position: relative;
-  display: inline-block;
-}
-.flatpickr-months {
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-}
-.flatpickr-months .flatpickr-month {
-  background: #3f4458;
-  color: #fff;
-  fill: #fff;
-  height: 34px;
-  line-height: 1;
-  text-align: center;
-  position: relative;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  overflow: hidden;
-  -webkit-box-flex: 1;
-  -webkit-flex: 1;
-      -ms-flex: 1;
-          flex: 1;
-}
-.flatpickr-months .flatpickr-prev-month,
-.flatpickr-months .flatpickr-next-month {
-  text-decoration: none;
-  cursor: pointer;
-  position: absolute;
-  top: 0;
-  height: 34px;
-  padding: 10px;
-  z-index: 3;
-  color: #fff;
-  fill: #fff;
-}
-.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,
-.flatpickr-months .flatpickr-next-month.flatpickr-disabled {
-  display: none;
-}
-.flatpickr-months .flatpickr-prev-month i,
-.flatpickr-months .flatpickr-next-month i {
-  position: relative;
-}
-.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,
-.flatpickr-months .flatpickr-next-month.flatpickr-prev-month {
-/*
-      /*rtl:begin:ignore*/
-/*
-      */
-  left: 0;
-/*
-      /*rtl:end:ignore*/
-/*
-      */
-}
-/*
-      /*rtl:begin:ignore*/
-/*
-      /*rtl:end:ignore*/
-.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,
-.flatpickr-months .flatpickr-next-month.flatpickr-next-month {
-/*
-      /*rtl:begin:ignore*/
-/*
-      */
-  right: 0;
-/*
-      /*rtl:end:ignore*/
-/*
-      */
-}
-/*
-      /*rtl:begin:ignore*/
-/*
-      /*rtl:end:ignore*/
-.flatpickr-months .flatpickr-prev-month:hover,
-.flatpickr-months .flatpickr-next-month:hover {
-  color: #eee;
-}
-.flatpickr-months .flatpickr-prev-month:hover svg,
-.flatpickr-months .flatpickr-next-month:hover svg {
-  fill: #f64747;
-}
-.flatpickr-months .flatpickr-prev-month svg,
-.flatpickr-months .flatpickr-next-month svg {
-  width: 14px;
-  height: 14px;
-}
-.flatpickr-months .flatpickr-prev-month svg path,
-.flatpickr-months .flatpickr-next-month svg path {
-  -webkit-transition: fill 0.1s;
-  transition: fill 0.1s;
-  fill: inherit;
-}
-.numInputWrapper {
-  position: relative;
-  height: auto;
-}
-.numInputWrapper input,
-.numInputWrapper span {
-  display: inline-block;
-}
-.numInputWrapper input {
-  width: 100%;
-}
-.numInputWrapper input::-ms-clear {
-  display: none;
-}
-.numInputWrapper input::-webkit-outer-spin-button,
-.numInputWrapper input::-webkit-inner-spin-button {
-  margin: 0;
-  -webkit-appearance: none;
-}
-.numInputWrapper span {
-  position: absolute;
-  right: 0;
-  width: 14px;
-  padding: 0 4px 0 2px;
-  height: 50%;
-  line-height: 50%;
-  opacity: 0;
-  cursor: pointer;
-  border: 1px solid rgba(255,255,255,0.15);
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-}
-.numInputWrapper span:hover {
-  background: rgba(192,187,167,0.1);
-}
-.numInputWrapper span:active {
-  background: rgba(192,187,167,0.2);
-}
-.numInputWrapper span:after {
-  display: block;
-  content: "";
-  position: absolute;
-}
-.numInputWrapper span.arrowUp {
-  top: 0;
-  border-bottom: 0;
-}
-.numInputWrapper span.arrowUp:after {
-  border-left: 4px solid transparent;
-  border-right: 4px solid transparent;
-  border-bottom: 4px solid rgba(255,255,255,0.6);
-  top: 26%;
-}
-.numInputWrapper span.arrowDown {
-  top: 50%;
-}
-.numInputWrapper span.arrowDown:after {
-  border-left: 4px solid transparent;
-  border-right: 4px solid transparent;
-  border-top: 4px solid rgba(255,255,255,0.6);
-  top: 40%;
-}
-.numInputWrapper span svg {
-  width: inherit;
-  height: auto;
-}
-.numInputWrapper span svg path {
-  fill: rgba(255,255,255,0.5);
-}
-.numInputWrapper:hover {
-  background: rgba(192,187,167,0.05);
-}
-.numInputWrapper:hover span {
-  opacity: 1;
-}
-.flatpickr-current-month {
-  font-size: 135%;
-  line-height: inherit;
-  font-weight: 300;
-  color: inherit;
-  position: absolute;
-  width: 75%;
-  left: 12.5%;
-  padding: 7.48px 0 0 0;
-  line-height: 1;
-  height: 34px;
-  display: inline-block;
-  text-align: center;
-  -webkit-transform: translate3d(0px, 0px, 0px);
-          transform: translate3d(0px, 0px, 0px);
-}
-.flatpickr-current-month span.cur-month {
-  font-family: inherit;
-  font-weight: 700;
-  color: inherit;
-  display: inline-block;
-  margin-left: 0.5ch;
-  padding: 0;
-}
-.flatpickr-current-month span.cur-month:hover {
-  background: rgba(192,187,167,0.05);
-}
-.flatpickr-current-month .numInputWrapper {
-  width: 6ch;
-  width: 7ch\0;
-  display: inline-block;
-}
-.flatpickr-current-month .numInputWrapper span.arrowUp:after {
-  border-bottom-color: #fff;
-}
-.flatpickr-current-month .numInputWrapper span.arrowDown:after {
-  border-top-color: #fff;
-}
-.flatpickr-current-month input.cur-year {
-  background: transparent;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  color: inherit;
-  cursor: text;
-  padding: 0 0 0 0.5ch;
-  margin: 0;
-  display: inline-block;
-  font-size: inherit;
-  font-family: inherit;
-  font-weight: 300;
-  line-height: inherit;
-  height: auto;
-  border: 0;
-  border-radius: 0;
-  vertical-align: initial;
-  -webkit-appearance: textfield;
-  -moz-appearance: textfield;
-  appearance: textfield;
-}
-.flatpickr-current-month input.cur-year:focus {
-  outline: 0;
-}
-.flatpickr-current-month input.cur-year[disabled],
-.flatpickr-current-month input.cur-year[disabled]:hover {
-  font-size: 100%;
-  color: rgba(255,255,255,0.5);
-  background: transparent;
-  pointer-events: none;
-}
-.flatpickr-current-month .flatpickr-monthDropdown-months {
-  appearance: menulist;
-  background: #3f4458;
-  border: none;
-  border-radius: 0;
-  box-sizing: border-box;
-  color: inherit;
-  cursor: pointer;
-  font-size: inherit;
-  font-family: inherit;
-  font-weight: 300;
-  height: auto;
-  line-height: inherit;
-  margin: -1px 0 0 0;
-  outline: none;
-  padding: 0 0 0 0.5ch;
-  position: relative;
-  vertical-align: initial;
-  -webkit-box-sizing: border-box;
-  -webkit-appearance: menulist;
-  -moz-appearance: menulist;
-  width: auto;
-}
-.flatpickr-current-month .flatpickr-monthDropdown-months:focus,
-.flatpickr-current-month .flatpickr-monthDropdown-months:active {
-  outline: none;
-}
-.flatpickr-current-month .flatpickr-monthDropdown-months:hover {
-  background: rgba(192,187,167,0.05);
-}
-.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month {
-  background-color: #3f4458;
-  outline: none;
-  padding: 0;
-}
-.flatpickr-weekdays {
-  background: transparent;
-  text-align: center;
-  overflow: hidden;
-  width: 100%;
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-  -webkit-box-align: center;
-  -webkit-align-items: center;
-      -ms-flex-align: center;
-          align-items: center;
-  height: 28px;
-}
-.flatpickr-weekdays .flatpickr-weekdaycontainer {
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-  -webkit-box-flex: 1;
-  -webkit-flex: 1;
-      -ms-flex: 1;
-          flex: 1;
-}
-span.flatpickr-weekday {
-  cursor: default;
-  font-size: 90%;
-  background: #3f4458;
-  color: #fff;
-  line-height: 1;
-  margin: 0;
-  text-align: center;
-  display: block;
-  -webkit-box-flex: 1;
-  -webkit-flex: 1;
-      -ms-flex: 1;
-          flex: 1;
-  font-weight: bolder;
-}
-.dayContainer,
-.flatpickr-weeks {
-  padding: 1px 0 0 0;
-}
-.flatpickr-days {
-  position: relative;
-  overflow: hidden;
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-  -webkit-box-align: start;
-  -webkit-align-items: flex-start;
-      -ms-flex-align: start;
-          align-items: flex-start;
-  width: 307.875px;
-}
-.flatpickr-days:focus {
-  outline: 0;
-}
-.dayContainer {
-  padding: 0;
-  outline: 0;
-  text-align: left;
-  width: 307.875px;
-  min-width: 307.875px;
-  max-width: 307.875px;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  display: inline-block;
-  display: -ms-flexbox;
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: flex;
-  -webkit-flex-wrap: wrap;
-          flex-wrap: wrap;
-  -ms-flex-wrap: wrap;
-  -ms-flex-pack: justify;
-  -webkit-justify-content: space-around;
-          justify-content: space-around;
-  -webkit-transform: translate3d(0px, 0px, 0px);
-          transform: translate3d(0px, 0px, 0px);
-  opacity: 1;
-}
-.dayContainer + .dayContainer {
-  -webkit-box-shadow: -1px 0 0 #20222c;
-          box-shadow: -1px 0 0 #20222c;
-}
-.flatpickr-day {
-  background: none;
-  border: 1px solid transparent;
-  border-radius: 150px;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  color: rgba(255,255,255,0.95);
-  cursor: pointer;
-  font-weight: 400;
-  width: 14.2857143%;
-  -webkit-flex-basis: 14.2857143%;
-      -ms-flex-preferred-size: 14.2857143%;
-          flex-basis: 14.2857143%;
-  max-width: 39px;
-  height: 39px;
-  line-height: 39px;
-  margin: 0;
-  display: inline-block;
-  position: relative;
-  -webkit-box-pack: center;
-  -webkit-justify-content: center;
-      -ms-flex-pack: center;
-          justify-content: center;
-  text-align: center;
-}
-.flatpickr-day.inRange,
-.flatpickr-day.prevMonthDay.inRange,
-.flatpickr-day.nextMonthDay.inRange,
-.flatpickr-day.today.inRange,
-.flatpickr-day.prevMonthDay.today.inRange,
-.flatpickr-day.nextMonthDay.today.inRange,
-.flatpickr-day:hover,
-.flatpickr-day.prevMonthDay:hover,
-.flatpickr-day.nextMonthDay:hover,
-.flatpickr-day:focus,
-.flatpickr-day.prevMonthDay:focus,
-.flatpickr-day.nextMonthDay:focus {
-  cursor: pointer;
-  outline: 0;
-  background: #646c8c;
-  border-color: #646c8c;
-}
-.flatpickr-day.today {
-  border-color: #eee;
-}
-.flatpickr-day.today:hover,
-.flatpickr-day.today:focus {
-  border-color: #eee;
-  background: #eee;
-  color: #3f4458;
-}
-.flatpickr-day.selected,
-.flatpickr-day.startRange,
-.flatpickr-day.endRange,
-.flatpickr-day.selected.inRange,
-.flatpickr-day.startRange.inRange,
-.flatpickr-day.endRange.inRange,
-.flatpickr-day.selected:focus,
-.flatpickr-day.startRange:focus,
-.flatpickr-day.endRange:focus,
-.flatpickr-day.selected:hover,
-.flatpickr-day.startRange:hover,
-.flatpickr-day.endRange:hover,
-.flatpickr-day.selected.prevMonthDay,
-.flatpickr-day.startRange.prevMonthDay,
-.flatpickr-day.endRange.prevMonthDay,
-.flatpickr-day.selected.nextMonthDay,
-.flatpickr-day.startRange.nextMonthDay,
-.flatpickr-day.endRange.nextMonthDay {
-  background: #80cbc4;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  color: #fff;
-  border-color: #80cbc4;
-}
-.flatpickr-day.selected.startRange,
-.flatpickr-day.startRange.startRange,
-.flatpickr-day.endRange.startRange {
-  border-radius: 50px 0 0 50px;
-}
-.flatpickr-day.selected.endRange,
-.flatpickr-day.startRange.endRange,
-.flatpickr-day.endRange.endRange {
-  border-radius: 0 50px 50px 0;
-}
-.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),
-.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),
-.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)) {
-  -webkit-box-shadow: -10px 0 0 #80cbc4;
-          box-shadow: -10px 0 0 #80cbc4;
-}
-.flatpickr-day.selected.startRange.endRange,
-.flatpickr-day.startRange.startRange.endRange,
-.flatpickr-day.endRange.startRange.endRange {
-  border-radius: 50px;
-}
-.flatpickr-day.inRange {
-  border-radius: 0;
-  -webkit-box-shadow: -5px 0 0 #646c8c, 5px 0 0 #646c8c;
-          box-shadow: -5px 0 0 #646c8c, 5px 0 0 #646c8c;
-}
-.flatpickr-day.flatpickr-disabled,
-.flatpickr-day.flatpickr-disabled:hover,
-.flatpickr-day.prevMonthDay,
-.flatpickr-day.nextMonthDay,
-.flatpickr-day.notAllowed,
-.flatpickr-day.notAllowed.prevMonthDay,
-.flatpickr-day.notAllowed.nextMonthDay {
-  color: rgba(255,255,255,0.3);
-  background: transparent;
-  border-color: transparent;
-  cursor: default;
-}
-.flatpickr-day.flatpickr-disabled,
-.flatpickr-day.flatpickr-disabled:hover {
-  cursor: not-allowed;
-  color: rgba(255,255,255,0.1);
-}
-.flatpickr-day.week.selected {
-  border-radius: 0;
-  -webkit-box-shadow: -5px 0 0 #80cbc4, 5px 0 0 #80cbc4;
-          box-shadow: -5px 0 0 #80cbc4, 5px 0 0 #80cbc4;
-}
-.flatpickr-day.hidden {
-  visibility: hidden;
-}
-.rangeMode .flatpickr-day {
-  margin-top: 1px;
-}
-.flatpickr-weekwrapper {
-  float: left;
-}
-.flatpickr-weekwrapper .flatpickr-weeks {
-  padding: 0 12px;
-  -webkit-box-shadow: 1px 0 0 #20222c;
-          box-shadow: 1px 0 0 #20222c;
-}
-.flatpickr-weekwrapper .flatpickr-weekday {
-  float: none;
-  width: 100%;
-  line-height: 28px;
-}
-.flatpickr-weekwrapper span.flatpickr-day,
-.flatpickr-weekwrapper span.flatpickr-day:hover {
-  display: block;
-  width: 100%;
-  max-width: none;
-  color: rgba(255,255,255,0.3);
-  background: transparent;
-  cursor: default;
-  border: none;
-}
-.flatpickr-innerContainer {
-  display: block;
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  overflow: hidden;
-}
-.flatpickr-rContainer {
-  display: inline-block;
-  padding: 0;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-}
-.flatpickr-time {
-  text-align: center;
-  outline: 0;
-  display: block;
-  height: 0;
-  line-height: 40px;
-  max-height: 40px;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  overflow: hidden;
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-}
-.flatpickr-time:after {
-  content: "";
-  display: table;
-  clear: both;
-}
-.flatpickr-time .numInputWrapper {
-  -webkit-box-flex: 1;
-  -webkit-flex: 1;
-      -ms-flex: 1;
-          flex: 1;
-  width: 40%;
-  height: 40px;
-  float: left;
-}
-.flatpickr-time .numInputWrapper span.arrowUp:after {
-  border-bottom-color: rgba(255,255,255,0.95);
-}
-.flatpickr-time .numInputWrapper span.arrowDown:after {
-  border-top-color: rgba(255,255,255,0.95);
-}
-.flatpickr-time.hasSeconds .numInputWrapper {
-  width: 26%;
-}
-.flatpickr-time.time24hr .numInputWrapper {
-  width: 49%;
-}
-.flatpickr-time input {
-  background: transparent;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  border: 0;
-  border-radius: 0;
-  text-align: center;
-  margin: 0;
-  padding: 0;
-  height: inherit;
-  line-height: inherit;
-  color: rgba(255,255,255,0.95);
-  font-size: 14px;
-  position: relative;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  -webkit-appearance: textfield;
-  -moz-appearance: textfield;
-  appearance: textfield;
-}
-.flatpickr-time input.flatpickr-hour {
-  font-weight: bold;
-}
-.flatpickr-time input.flatpickr-minute,
-.flatpickr-time input.flatpickr-second {
-  font-weight: 400;
-}
-.flatpickr-time input:focus {
-  outline: 0;
-  border: 0;
-}
-.flatpickr-time .flatpickr-time-separator,
-.flatpickr-time .flatpickr-am-pm {
-  height: inherit;
-  float: left;
-  line-height: inherit;
-  color: rgba(255,255,255,0.95);
-  font-weight: bold;
-  width: 2%;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  -webkit-align-self: center;
-      -ms-flex-item-align: center;
-          align-self: center;
-}
-.flatpickr-time .flatpickr-am-pm {
-  outline: 0;
-  width: 18%;
-  cursor: pointer;
-  text-align: center;
-  font-weight: 400;
-}
-.flatpickr-time input:hover,
-.flatpickr-time .flatpickr-am-pm:hover,
-.flatpickr-time input:focus,
-.flatpickr-time .flatpickr-am-pm:focus {
-  background: #6a7395;
-}
-.flatpickr-input[readonly] {
-  cursor: pointer;
-}
-@-webkit-keyframes fpFadeInDown {
-  from {
-    opacity: 0;
-    -webkit-transform: translate3d(0, -20px, 0);
-            transform: translate3d(0, -20px, 0);
-  }
-  to {
-    opacity: 1;
-    -webkit-transform: translate3d(0, 0, 0);
-            transform: translate3d(0, 0, 0);
-  }
-}
-@keyframes fpFadeInDown {
-  from {
-    opacity: 0;
-    -webkit-transform: translate3d(0, -20px, 0);
-            transform: translate3d(0, -20px, 0);
-  }
-  to {
-    opacity: 1;
-    -webkit-transform: translate3d(0, 0, 0);
-            transform: translate3d(0, 0, 0);
-  }
-}
diff --git a/app/static/vendors/flatpickr/themes/light.css b/app/static/vendors/flatpickr/themes/light.css
deleted file mode 100644 (file)
index da9e4a8..0000000
+++ /dev/null
@@ -1,798 +0,0 @@
-.flatpickr-calendar {
-  background: transparent;
-  opacity: 0;
-  display: none;
-  text-align: center;
-  visibility: hidden;
-  padding: 0;
-  -webkit-animation: none;
-          animation: none;
-  direction: ltr;
-  border: 0;
-  font-size: 14px;
-  line-height: 24px;
-  border-radius: 5px;
-  position: absolute;
-  width: 307.875px;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  -ms-touch-action: manipulation;
-      touch-action: manipulation;
-  -webkit-box-shadow: 0 3px 13px rgba(0,0,0,0.08);
-          box-shadow: 0 3px 13px rgba(0,0,0,0.08);
-}
-.flatpickr-calendar.open,
-.flatpickr-calendar.inline {
-  opacity: 1;
-  max-height: 640px;
-  visibility: visible;
-}
-.flatpickr-calendar.open {
-  display: inline-block;
-  z-index: 99999;
-}
-.flatpickr-calendar.animate.open {
-  -webkit-animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);
-          animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);
-}
-.flatpickr-calendar.inline {
-  display: block;
-  position: relative;
-  top: 2px;
-}
-.flatpickr-calendar.static {
-  position: absolute;
-  top: calc(100% + 2px);
-}
-.flatpickr-calendar.static.open {
-  z-index: 999;
-  display: block;
-}
-.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7) {
-  -webkit-box-shadow: none !important;
-          box-shadow: none !important;
-}
-.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1) {
-  -webkit-box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
-          box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
-}
-.flatpickr-calendar .hasWeeks .dayContainer,
-.flatpickr-calendar .hasTime .dayContainer {
-  border-bottom: 0;
-  border-bottom-right-radius: 0;
-  border-bottom-left-radius: 0;
-}
-.flatpickr-calendar .hasWeeks .dayContainer {
-  border-left: 0;
-}
-.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time {
-  height: 40px;
-  border-top: 1px solid #eceef1;
-}
-.flatpickr-calendar.showTimeInput.hasTime .flatpickr-innerContainer {
-  border-bottom: 0;
-}
-.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time {
-  border: 1px solid #eceef1;
-}
-.flatpickr-calendar.noCalendar.hasTime .flatpickr-time {
-  height: auto;
-}
-.flatpickr-calendar:before,
-.flatpickr-calendar:after {
-  position: absolute;
-  display: block;
-  pointer-events: none;
-  border: solid transparent;
-  content: '';
-  height: 0;
-  width: 0;
-  left: 22px;
-}
-.flatpickr-calendar.rightMost:before,
-.flatpickr-calendar.rightMost:after {
-  left: auto;
-  right: 22px;
-}
-.flatpickr-calendar:before {
-  border-width: 5px;
-  margin: 0 -5px;
-}
-.flatpickr-calendar:after {
-  border-width: 4px;
-  margin: 0 -4px;
-}
-.flatpickr-calendar.arrowTop:before,
-.flatpickr-calendar.arrowTop:after {
-  bottom: 100%;
-}
-.flatpickr-calendar.arrowTop:before {
-  border-bottom-color: #eceef1;
-}
-.flatpickr-calendar.arrowTop:after {
-  border-bottom-color: #eceef1;
-}
-.flatpickr-calendar.arrowBottom:before,
-.flatpickr-calendar.arrowBottom:after {
-  top: 100%;
-}
-.flatpickr-calendar.arrowBottom:before {
-  border-top-color: #eceef1;
-}
-.flatpickr-calendar.arrowBottom:after {
-  border-top-color: #eceef1;
-}
-.flatpickr-calendar:focus {
-  outline: 0;
-}
-.flatpickr-wrapper {
-  position: relative;
-  display: inline-block;
-}
-.flatpickr-months {
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-}
-.flatpickr-months .flatpickr-month {
-  border-radius: 5px 5px 0 0;
-  background: #eceef1;
-  color: #5a6171;
-  fill: #5a6171;
-  height: 34px;
-  line-height: 1;
-  text-align: center;
-  position: relative;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  overflow: hidden;
-  -webkit-box-flex: 1;
-  -webkit-flex: 1;
-      -ms-flex: 1;
-          flex: 1;
-}
-.flatpickr-months .flatpickr-prev-month,
-.flatpickr-months .flatpickr-next-month {
-  text-decoration: none;
-  cursor: pointer;
-  position: absolute;
-  top: 0;
-  height: 34px;
-  padding: 10px;
-  z-index: 3;
-  color: #5a6171;
-  fill: #5a6171;
-}
-.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,
-.flatpickr-months .flatpickr-next-month.flatpickr-disabled {
-  display: none;
-}
-.flatpickr-months .flatpickr-prev-month i,
-.flatpickr-months .flatpickr-next-month i {
-  position: relative;
-}
-.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,
-.flatpickr-months .flatpickr-next-month.flatpickr-prev-month {
-/*
-      /*rtl:begin:ignore*/
-/*
-      */
-  left: 0;
-/*
-      /*rtl:end:ignore*/
-/*
-      */
-}
-/*
-      /*rtl:begin:ignore*/
-/*
-      /*rtl:end:ignore*/
-.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,
-.flatpickr-months .flatpickr-next-month.flatpickr-next-month {
-/*
-      /*rtl:begin:ignore*/
-/*
-      */
-  right: 0;
-/*
-      /*rtl:end:ignore*/
-/*
-      */
-}
-/*
-      /*rtl:begin:ignore*/
-/*
-      /*rtl:end:ignore*/
-.flatpickr-months .flatpickr-prev-month:hover,
-.flatpickr-months .flatpickr-next-month:hover {
-  color: #bbb;
-}
-.flatpickr-months .flatpickr-prev-month:hover svg,
-.flatpickr-months .flatpickr-next-month:hover svg {
-  fill: #f64747;
-}
-.flatpickr-months .flatpickr-prev-month svg,
-.flatpickr-months .flatpickr-next-month svg {
-  width: 14px;
-  height: 14px;
-}
-.flatpickr-months .flatpickr-prev-month svg path,
-.flatpickr-months .flatpickr-next-month svg path {
-  -webkit-transition: fill 0.1s;
-  transition: fill 0.1s;
-  fill: inherit;
-}
-.numInputWrapper {
-  position: relative;
-  height: auto;
-}
-.numInputWrapper input,
-.numInputWrapper span {
-  display: inline-block;
-}
-.numInputWrapper input {
-  width: 100%;
-}
-.numInputWrapper input::-ms-clear {
-  display: none;
-}
-.numInputWrapper input::-webkit-outer-spin-button,
-.numInputWrapper input::-webkit-inner-spin-button {
-  margin: 0;
-  -webkit-appearance: none;
-}
-.numInputWrapper span {
-  position: absolute;
-  right: 0;
-  width: 14px;
-  padding: 0 4px 0 2px;
-  height: 50%;
-  line-height: 50%;
-  opacity: 0;
-  cursor: pointer;
-  border: 1px solid rgba(72,72,72,0.15);
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-}
-.numInputWrapper span:hover {
-  background: rgba(0,0,0,0.1);
-}
-.numInputWrapper span:active {
-  background: rgba(0,0,0,0.2);
-}
-.numInputWrapper span:after {
-  display: block;
-  content: "";
-  position: absolute;
-}
-.numInputWrapper span.arrowUp {
-  top: 0;
-  border-bottom: 0;
-}
-.numInputWrapper span.arrowUp:after {
-  border-left: 4px solid transparent;
-  border-right: 4px solid transparent;
-  border-bottom: 4px solid rgba(72,72,72,0.6);
-  top: 26%;
-}
-.numInputWrapper span.arrowDown {
-  top: 50%;
-}
-.numInputWrapper span.arrowDown:after {
-  border-left: 4px solid transparent;
-  border-right: 4px solid transparent;
-  border-top: 4px solid rgba(72,72,72,0.6);
-  top: 40%;
-}
-.numInputWrapper span svg {
-  width: inherit;
-  height: auto;
-}
-.numInputWrapper span svg path {
-  fill: rgba(90,97,113,0.5);
-}
-.numInputWrapper:hover {
-  background: rgba(0,0,0,0.05);
-}
-.numInputWrapper:hover span {
-  opacity: 1;
-}
-.flatpickr-current-month {
-  font-size: 135%;
-  line-height: inherit;
-  font-weight: 300;
-  color: inherit;
-  position: absolute;
-  width: 75%;
-  left: 12.5%;
-  padding: 7.48px 0 0 0;
-  line-height: 1;
-  height: 34px;
-  display: inline-block;
-  text-align: center;
-  -webkit-transform: translate3d(0px, 0px, 0px);
-          transform: translate3d(0px, 0px, 0px);
-}
-.flatpickr-current-month span.cur-month {
-  font-family: inherit;
-  font-weight: 700;
-  color: inherit;
-  display: inline-block;
-  margin-left: 0.5ch;
-  padding: 0;
-}
-.flatpickr-current-month span.cur-month:hover {
-  background: rgba(0,0,0,0.05);
-}
-.flatpickr-current-month .numInputWrapper {
-  width: 6ch;
-  width: 7ch\0;
-  display: inline-block;
-}
-.flatpickr-current-month .numInputWrapper span.arrowUp:after {
-  border-bottom-color: #5a6171;
-}
-.flatpickr-current-month .numInputWrapper span.arrowDown:after {
-  border-top-color: #5a6171;
-}
-.flatpickr-current-month input.cur-year {
-  background: transparent;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  color: inherit;
-  cursor: text;
-  padding: 0 0 0 0.5ch;
-  margin: 0;
-  display: inline-block;
-  font-size: inherit;
-  font-family: inherit;
-  font-weight: 300;
-  line-height: inherit;
-  height: auto;
-  border: 0;
-  border-radius: 0;
-  vertical-align: initial;
-  -webkit-appearance: textfield;
-  -moz-appearance: textfield;
-  appearance: textfield;
-}
-.flatpickr-current-month input.cur-year:focus {
-  outline: 0;
-}
-.flatpickr-current-month input.cur-year[disabled],
-.flatpickr-current-month input.cur-year[disabled]:hover {
-  font-size: 100%;
-  color: rgba(90,97,113,0.5);
-  background: transparent;
-  pointer-events: none;
-}
-.flatpickr-current-month .flatpickr-monthDropdown-months {
-  appearance: menulist;
-  background: #eceef1;
-  border: none;
-  border-radius: 0;
-  box-sizing: border-box;
-  color: inherit;
-  cursor: pointer;
-  font-size: inherit;
-  font-family: inherit;
-  font-weight: 300;
-  height: auto;
-  line-height: inherit;
-  margin: -1px 0 0 0;
-  outline: none;
-  padding: 0 0 0 0.5ch;
-  position: relative;
-  vertical-align: initial;
-  -webkit-box-sizing: border-box;
-  -webkit-appearance: menulist;
-  -moz-appearance: menulist;
-  width: auto;
-}
-.flatpickr-current-month .flatpickr-monthDropdown-months:focus,
-.flatpickr-current-month .flatpickr-monthDropdown-months:active {
-  outline: none;
-}
-.flatpickr-current-month .flatpickr-monthDropdown-months:hover {
-  background: rgba(0,0,0,0.05);
-}
-.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month {
-  background-color: #eceef1;
-  outline: none;
-  padding: 0;
-}
-.flatpickr-weekdays {
-  background: #eceef1;
-  text-align: center;
-  overflow: hidden;
-  width: 100%;
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-  -webkit-box-align: center;
-  -webkit-align-items: center;
-      -ms-flex-align: center;
-          align-items: center;
-  height: 28px;
-}
-.flatpickr-weekdays .flatpickr-weekdaycontainer {
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-  -webkit-box-flex: 1;
-  -webkit-flex: 1;
-      -ms-flex: 1;
-          flex: 1;
-}
-span.flatpickr-weekday {
-  cursor: default;
-  font-size: 90%;
-  background: #eceef1;
-  color: #5a6171;
-  line-height: 1;
-  margin: 0;
-  text-align: center;
-  display: block;
-  -webkit-box-flex: 1;
-  -webkit-flex: 1;
-      -ms-flex: 1;
-          flex: 1;
-  font-weight: bolder;
-}
-.dayContainer,
-.flatpickr-weeks {
-  padding: 1px 0 0 0;
-}
-.flatpickr-days {
-  position: relative;
-  overflow: hidden;
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-  -webkit-box-align: start;
-  -webkit-align-items: flex-start;
-      -ms-flex-align: start;
-          align-items: flex-start;
-  width: 307.875px;
-  border-left: 1px solid #eceef1;
-  border-right: 1px solid #eceef1;
-}
-.flatpickr-days:focus {
-  outline: 0;
-}
-.dayContainer {
-  padding: 0;
-  outline: 0;
-  text-align: left;
-  width: 307.875px;
-  min-width: 307.875px;
-  max-width: 307.875px;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  display: inline-block;
-  display: -ms-flexbox;
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: flex;
-  -webkit-flex-wrap: wrap;
-          flex-wrap: wrap;
-  -ms-flex-wrap: wrap;
-  -ms-flex-pack: justify;
-  -webkit-justify-content: space-around;
-          justify-content: space-around;
-  -webkit-transform: translate3d(0px, 0px, 0px);
-          transform: translate3d(0px, 0px, 0px);
-  opacity: 1;
-}
-.dayContainer + .dayContainer {
-  -webkit-box-shadow: -1px 0 0 #eceef1;
-          box-shadow: -1px 0 0 #eceef1;
-}
-.flatpickr-day {
-  background: none;
-  border: 1px solid transparent;
-  border-radius: 150px;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  color: #484848;
-  cursor: pointer;
-  font-weight: 400;
-  width: 14.2857143%;
-  -webkit-flex-basis: 14.2857143%;
-      -ms-flex-preferred-size: 14.2857143%;
-          flex-basis: 14.2857143%;
-  max-width: 39px;
-  height: 39px;
-  line-height: 39px;
-  margin: 0;
-  display: inline-block;
-  position: relative;
-  -webkit-box-pack: center;
-  -webkit-justify-content: center;
-      -ms-flex-pack: center;
-          justify-content: center;
-  text-align: center;
-}
-.flatpickr-day.inRange,
-.flatpickr-day.prevMonthDay.inRange,
-.flatpickr-day.nextMonthDay.inRange,
-.flatpickr-day.today.inRange,
-.flatpickr-day.prevMonthDay.today.inRange,
-.flatpickr-day.nextMonthDay.today.inRange,
-.flatpickr-day:hover,
-.flatpickr-day.prevMonthDay:hover,
-.flatpickr-day.nextMonthDay:hover,
-.flatpickr-day:focus,
-.flatpickr-day.prevMonthDay:focus,
-.flatpickr-day.nextMonthDay:focus {
-  cursor: pointer;
-  outline: 0;
-  background: #e2e2e2;
-  border-color: #e2e2e2;
-}
-.flatpickr-day.today {
-  border-color: #bbb;
-}
-.flatpickr-day.today:hover,
-.flatpickr-day.today:focus {
-  border-color: #bbb;
-  background: #bbb;
-  color: #fff;
-}
-.flatpickr-day.selected,
-.flatpickr-day.startRange,
-.flatpickr-day.endRange,
-.flatpickr-day.selected.inRange,
-.flatpickr-day.startRange.inRange,
-.flatpickr-day.endRange.inRange,
-.flatpickr-day.selected:focus,
-.flatpickr-day.startRange:focus,
-.flatpickr-day.endRange:focus,
-.flatpickr-day.selected:hover,
-.flatpickr-day.startRange:hover,
-.flatpickr-day.endRange:hover,
-.flatpickr-day.selected.prevMonthDay,
-.flatpickr-day.startRange.prevMonthDay,
-.flatpickr-day.endRange.prevMonthDay,
-.flatpickr-day.selected.nextMonthDay,
-.flatpickr-day.startRange.nextMonthDay,
-.flatpickr-day.endRange.nextMonthDay {
-  background: #ff5a5f;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  color: #fff;
-  border-color: #ff5a5f;
-}
-.flatpickr-day.selected.startRange,
-.flatpickr-day.startRange.startRange,
-.flatpickr-day.endRange.startRange {
-  border-radius: 50px 0 0 50px;
-}
-.flatpickr-day.selected.endRange,
-.flatpickr-day.startRange.endRange,
-.flatpickr-day.endRange.endRange {
-  border-radius: 0 50px 50px 0;
-}
-.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),
-.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),
-.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)) {
-  -webkit-box-shadow: -10px 0 0 #ff5a5f;
-          box-shadow: -10px 0 0 #ff5a5f;
-}
-.flatpickr-day.selected.startRange.endRange,
-.flatpickr-day.startRange.startRange.endRange,
-.flatpickr-day.endRange.startRange.endRange {
-  border-radius: 50px;
-}
-.flatpickr-day.inRange {
-  border-radius: 0;
-  -webkit-box-shadow: -5px 0 0 #e2e2e2, 5px 0 0 #e2e2e2;
-          box-shadow: -5px 0 0 #e2e2e2, 5px 0 0 #e2e2e2;
-}
-.flatpickr-day.flatpickr-disabled,
-.flatpickr-day.flatpickr-disabled:hover,
-.flatpickr-day.prevMonthDay,
-.flatpickr-day.nextMonthDay,
-.flatpickr-day.notAllowed,
-.flatpickr-day.notAllowed.prevMonthDay,
-.flatpickr-day.notAllowed.nextMonthDay {
-  color: rgba(72,72,72,0.3);
-  background: transparent;
-  border-color: transparent;
-  cursor: default;
-}
-.flatpickr-day.flatpickr-disabled,
-.flatpickr-day.flatpickr-disabled:hover {
-  cursor: not-allowed;
-  color: rgba(72,72,72,0.1);
-}
-.flatpickr-day.week.selected {
-  border-radius: 0;
-  -webkit-box-shadow: -5px 0 0 #ff5a5f, 5px 0 0 #ff5a5f;
-          box-shadow: -5px 0 0 #ff5a5f, 5px 0 0 #ff5a5f;
-}
-.flatpickr-day.hidden {
-  visibility: hidden;
-}
-.rangeMode .flatpickr-day {
-  margin-top: 1px;
-}
-.flatpickr-weekwrapper {
-  float: left;
-}
-.flatpickr-weekwrapper .flatpickr-weeks {
-  padding: 0 12px;
-  border-left: 1px solid #eceef1;
-}
-.flatpickr-weekwrapper .flatpickr-weekday {
-  float: none;
-  width: 100%;
-  line-height: 28px;
-}
-.flatpickr-weekwrapper span.flatpickr-day,
-.flatpickr-weekwrapper span.flatpickr-day:hover {
-  display: block;
-  width: 100%;
-  max-width: none;
-  color: rgba(72,72,72,0.3);
-  background: transparent;
-  cursor: default;
-  border: none;
-}
-.flatpickr-innerContainer {
-  display: block;
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  overflow: hidden;
-  background: #fff;
-  border-bottom: 1px solid #eceef1;
-}
-.flatpickr-rContainer {
-  display: inline-block;
-  padding: 0;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-}
-.flatpickr-time {
-  text-align: center;
-  outline: 0;
-  display: block;
-  height: 0;
-  line-height: 40px;
-  max-height: 40px;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  overflow: hidden;
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-  background: #fff;
-  border-radius: 0 0 5px 5px;
-}
-.flatpickr-time:after {
-  content: "";
-  display: table;
-  clear: both;
-}
-.flatpickr-time .numInputWrapper {
-  -webkit-box-flex: 1;
-  -webkit-flex: 1;
-      -ms-flex: 1;
-          flex: 1;
-  width: 40%;
-  height: 40px;
-  float: left;
-}
-.flatpickr-time .numInputWrapper span.arrowUp:after {
-  border-bottom-color: #484848;
-}
-.flatpickr-time .numInputWrapper span.arrowDown:after {
-  border-top-color: #484848;
-}
-.flatpickr-time.hasSeconds .numInputWrapper {
-  width: 26%;
-}
-.flatpickr-time.time24hr .numInputWrapper {
-  width: 49%;
-}
-.flatpickr-time input {
-  background: transparent;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  border: 0;
-  border-radius: 0;
-  text-align: center;
-  margin: 0;
-  padding: 0;
-  height: inherit;
-  line-height: inherit;
-  color: #484848;
-  font-size: 14px;
-  position: relative;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  -webkit-appearance: textfield;
-  -moz-appearance: textfield;
-  appearance: textfield;
-}
-.flatpickr-time input.flatpickr-hour {
-  font-weight: bold;
-}
-.flatpickr-time input.flatpickr-minute,
-.flatpickr-time input.flatpickr-second {
-  font-weight: 400;
-}
-.flatpickr-time input:focus {
-  outline: 0;
-  border: 0;
-}
-.flatpickr-time .flatpickr-time-separator,
-.flatpickr-time .flatpickr-am-pm {
-  height: inherit;
-  float: left;
-  line-height: inherit;
-  color: #484848;
-  font-weight: bold;
-  width: 2%;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  -webkit-align-self: center;
-      -ms-flex-item-align: center;
-          align-self: center;
-}
-.flatpickr-time .flatpickr-am-pm {
-  outline: 0;
-  width: 18%;
-  cursor: pointer;
-  text-align: center;
-  font-weight: 400;
-}
-.flatpickr-time input:hover,
-.flatpickr-time .flatpickr-am-pm:hover,
-.flatpickr-time input:focus,
-.flatpickr-time .flatpickr-am-pm:focus {
-  background: #eaeaea;
-}
-.flatpickr-input[readonly] {
-  cursor: pointer;
-}
-@-webkit-keyframes fpFadeInDown {
-  from {
-    opacity: 0;
-    -webkit-transform: translate3d(0, -20px, 0);
-            transform: translate3d(0, -20px, 0);
-  }
-  to {
-    opacity: 1;
-    -webkit-transform: translate3d(0, 0, 0);
-            transform: translate3d(0, 0, 0);
-  }
-}
-@keyframes fpFadeInDown {
-  from {
-    opacity: 0;
-    -webkit-transform: translate3d(0, -20px, 0);
-            transform: translate3d(0, -20px, 0);
-  }
-  to {
-    opacity: 1;
-    -webkit-transform: translate3d(0, 0, 0);
-            transform: translate3d(0, 0, 0);
-  }
-}
-span.flatpickr-day.selected {
-  font-weight: bold;
-}
diff --git a/app/static/vendors/flatpickr/themes/material_blue.css b/app/static/vendors/flatpickr/themes/material_blue.css
deleted file mode 100644 (file)
index 5368deb..0000000
+++ /dev/null
@@ -1,795 +0,0 @@
-.flatpickr-calendar {
-  background: transparent;
-  opacity: 0;
-  display: none;
-  text-align: center;
-  visibility: hidden;
-  padding: 0;
-  -webkit-animation: none;
-          animation: none;
-  direction: ltr;
-  border: 0;
-  font-size: 14px;
-  line-height: 24px;
-  border-radius: 5px;
-  position: absolute;
-  width: 307.875px;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  -ms-touch-action: manipulation;
-      touch-action: manipulation;
-  -webkit-box-shadow: 0 3px 13px rgba(0,0,0,0.08);
-          box-shadow: 0 3px 13px rgba(0,0,0,0.08);
-}
-.flatpickr-calendar.open,
-.flatpickr-calendar.inline {
-  opacity: 1;
-  max-height: 640px;
-  visibility: visible;
-}
-.flatpickr-calendar.open {
-  display: inline-block;
-  z-index: 99999;
-}
-.flatpickr-calendar.animate.open {
-  -webkit-animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);
-          animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);
-}
-.flatpickr-calendar.inline {
-  display: block;
-  position: relative;
-  top: 2px;
-}
-.flatpickr-calendar.static {
-  position: absolute;
-  top: calc(100% + 2px);
-}
-.flatpickr-calendar.static.open {
-  z-index: 999;
-  display: block;
-}
-.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7) {
-  -webkit-box-shadow: none !important;
-          box-shadow: none !important;
-}
-.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1) {
-  -webkit-box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
-          box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
-}
-.flatpickr-calendar .hasWeeks .dayContainer,
-.flatpickr-calendar .hasTime .dayContainer {
-  border-bottom: 0;
-  border-bottom-right-radius: 0;
-  border-bottom-left-radius: 0;
-}
-.flatpickr-calendar .hasWeeks .dayContainer {
-  border-left: 0;
-}
-.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time {
-  height: 40px;
-  border-top: 1px solid rgba(72,72,72,0.2);
-}
-.flatpickr-calendar.showTimeInput.hasTime .flatpickr-innerContainer {
-  border-bottom: 0;
-}
-.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time {
-  border: 1px solid rgba(72,72,72,0.2);
-}
-.flatpickr-calendar.noCalendar.hasTime .flatpickr-time {
-  height: auto;
-}
-.flatpickr-calendar:before,
-.flatpickr-calendar:after {
-  position: absolute;
-  display: block;
-  pointer-events: none;
-  border: solid transparent;
-  content: '';
-  height: 0;
-  width: 0;
-  left: 22px;
-}
-.flatpickr-calendar.rightMost:before,
-.flatpickr-calendar.rightMost:after {
-  left: auto;
-  right: 22px;
-}
-.flatpickr-calendar:before {
-  border-width: 5px;
-  margin: 0 -5px;
-}
-.flatpickr-calendar:after {
-  border-width: 4px;
-  margin: 0 -4px;
-}
-.flatpickr-calendar.arrowTop:before,
-.flatpickr-calendar.arrowTop:after {
-  bottom: 100%;
-}
-.flatpickr-calendar.arrowTop:before {
-  border-bottom-color: rgba(72,72,72,0.2);
-}
-.flatpickr-calendar.arrowTop:after {
-  border-bottom-color: #42a5f5;
-}
-.flatpickr-calendar.arrowBottom:before,
-.flatpickr-calendar.arrowBottom:after {
-  top: 100%;
-}
-.flatpickr-calendar.arrowBottom:before {
-  border-top-color: rgba(72,72,72,0.2);
-}
-.flatpickr-calendar.arrowBottom:after {
-  border-top-color: #42a5f5;
-}
-.flatpickr-calendar:focus {
-  outline: 0;
-}
-.flatpickr-wrapper {
-  position: relative;
-  display: inline-block;
-}
-.flatpickr-months {
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-}
-.flatpickr-months .flatpickr-month {
-  border-radius: 5px 5px 0 0;
-  background: #42a5f5;
-  color: #fff;
-  fill: #fff;
-  height: 34px;
-  line-height: 1;
-  text-align: center;
-  position: relative;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  overflow: hidden;
-  -webkit-box-flex: 1;
-  -webkit-flex: 1;
-      -ms-flex: 1;
-          flex: 1;
-}
-.flatpickr-months .flatpickr-prev-month,
-.flatpickr-months .flatpickr-next-month {
-  text-decoration: none;
-  cursor: pointer;
-  position: absolute;
-  top: 0;
-  height: 34px;
-  padding: 10px;
-  z-index: 3;
-  color: #fff;
-  fill: #fff;
-}
-.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,
-.flatpickr-months .flatpickr-next-month.flatpickr-disabled {
-  display: none;
-}
-.flatpickr-months .flatpickr-prev-month i,
-.flatpickr-months .flatpickr-next-month i {
-  position: relative;
-}
-.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,
-.flatpickr-months .flatpickr-next-month.flatpickr-prev-month {
-/*
-      /*rtl:begin:ignore*/
-/*
-      */
-  left: 0;
-/*
-      /*rtl:end:ignore*/
-/*
-      */
-}
-/*
-      /*rtl:begin:ignore*/
-/*
-      /*rtl:end:ignore*/
-.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,
-.flatpickr-months .flatpickr-next-month.flatpickr-next-month {
-/*
-      /*rtl:begin:ignore*/
-/*
-      */
-  right: 0;
-/*
-      /*rtl:end:ignore*/
-/*
-      */
-}
-/*
-      /*rtl:begin:ignore*/
-/*
-      /*rtl:end:ignore*/
-.flatpickr-months .flatpickr-prev-month:hover,
-.flatpickr-months .flatpickr-next-month:hover {
-  color: #bbb;
-}
-.flatpickr-months .flatpickr-prev-month:hover svg,
-.flatpickr-months .flatpickr-next-month:hover svg {
-  fill: #f64747;
-}
-.flatpickr-months .flatpickr-prev-month svg,
-.flatpickr-months .flatpickr-next-month svg {
-  width: 14px;
-  height: 14px;
-}
-.flatpickr-months .flatpickr-prev-month svg path,
-.flatpickr-months .flatpickr-next-month svg path {
-  -webkit-transition: fill 0.1s;
-  transition: fill 0.1s;
-  fill: inherit;
-}
-.numInputWrapper {
-  position: relative;
-  height: auto;
-}
-.numInputWrapper input,
-.numInputWrapper span {
-  display: inline-block;
-}
-.numInputWrapper input {
-  width: 100%;
-}
-.numInputWrapper input::-ms-clear {
-  display: none;
-}
-.numInputWrapper input::-webkit-outer-spin-button,
-.numInputWrapper input::-webkit-inner-spin-button {
-  margin: 0;
-  -webkit-appearance: none;
-}
-.numInputWrapper span {
-  position: absolute;
-  right: 0;
-  width: 14px;
-  padding: 0 4px 0 2px;
-  height: 50%;
-  line-height: 50%;
-  opacity: 0;
-  cursor: pointer;
-  border: 1px solid rgba(72,72,72,0.15);
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-}
-.numInputWrapper span:hover {
-  background: rgba(0,0,0,0.1);
-}
-.numInputWrapper span:active {
-  background: rgba(0,0,0,0.2);
-}
-.numInputWrapper span:after {
-  display: block;
-  content: "";
-  position: absolute;
-}
-.numInputWrapper span.arrowUp {
-  top: 0;
-  border-bottom: 0;
-}
-.numInputWrapper span.arrowUp:after {
-  border-left: 4px solid transparent;
-  border-right: 4px solid transparent;
-  border-bottom: 4px solid rgba(72,72,72,0.6);
-  top: 26%;
-}
-.numInputWrapper span.arrowDown {
-  top: 50%;
-}
-.numInputWrapper span.arrowDown:after {
-  border-left: 4px solid transparent;
-  border-right: 4px solid transparent;
-  border-top: 4px solid rgba(72,72,72,0.6);
-  top: 40%;
-}
-.numInputWrapper span svg {
-  width: inherit;
-  height: auto;
-}
-.numInputWrapper span svg path {
-  fill: rgba(255,255,255,0.5);
-}
-.numInputWrapper:hover {
-  background: rgba(0,0,0,0.05);
-}
-.numInputWrapper:hover span {
-  opacity: 1;
-}
-.flatpickr-current-month {
-  font-size: 135%;
-  line-height: inherit;
-  font-weight: 300;
-  color: inherit;
-  position: absolute;
-  width: 75%;
-  left: 12.5%;
-  padding: 7.48px 0 0 0;
-  line-height: 1;
-  height: 34px;
-  display: inline-block;
-  text-align: center;
-  -webkit-transform: translate3d(0px, 0px, 0px);
-          transform: translate3d(0px, 0px, 0px);
-}
-.flatpickr-current-month span.cur-month {
-  font-family: inherit;
-  font-weight: 700;
-  color: inherit;
-  display: inline-block;
-  margin-left: 0.5ch;
-  padding: 0;
-}
-.flatpickr-current-month span.cur-month:hover {
-  background: rgba(0,0,0,0.05);
-}
-.flatpickr-current-month .numInputWrapper {
-  width: 6ch;
-  width: 7ch\0;
-  display: inline-block;
-}
-.flatpickr-current-month .numInputWrapper span.arrowUp:after {
-  border-bottom-color: #fff;
-}
-.flatpickr-current-month .numInputWrapper span.arrowDown:after {
-  border-top-color: #fff;
-}
-.flatpickr-current-month input.cur-year {
-  background: transparent;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  color: inherit;
-  cursor: text;
-  padding: 0 0 0 0.5ch;
-  margin: 0;
-  display: inline-block;
-  font-size: inherit;
-  font-family: inherit;
-  font-weight: 300;
-  line-height: inherit;
-  height: auto;
-  border: 0;
-  border-radius: 0;
-  vertical-align: initial;
-  -webkit-appearance: textfield;
-  -moz-appearance: textfield;
-  appearance: textfield;
-}
-.flatpickr-current-month input.cur-year:focus {
-  outline: 0;
-}
-.flatpickr-current-month input.cur-year[disabled],
-.flatpickr-current-month input.cur-year[disabled]:hover {
-  font-size: 100%;
-  color: rgba(255,255,255,0.5);
-  background: transparent;
-  pointer-events: none;
-}
-.flatpickr-current-month .flatpickr-monthDropdown-months {
-  appearance: menulist;
-  background: #42a5f5;
-  border: none;
-  border-radius: 0;
-  box-sizing: border-box;
-  color: inherit;
-  cursor: pointer;
-  font-size: inherit;
-  font-family: inherit;
-  font-weight: 300;
-  height: auto;
-  line-height: inherit;
-  margin: -1px 0 0 0;
-  outline: none;
-  padding: 0 0 0 0.5ch;
-  position: relative;
-  vertical-align: initial;
-  -webkit-box-sizing: border-box;
-  -webkit-appearance: menulist;
-  -moz-appearance: menulist;
-  width: auto;
-}
-.flatpickr-current-month .flatpickr-monthDropdown-months:focus,
-.flatpickr-current-month .flatpickr-monthDropdown-months:active {
-  outline: none;
-}
-.flatpickr-current-month .flatpickr-monthDropdown-months:hover {
-  background: rgba(0,0,0,0.05);
-}
-.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month {
-  background-color: #42a5f5;
-  outline: none;
-  padding: 0;
-}
-.flatpickr-weekdays {
-  background: #42a5f5;
-  text-align: center;
-  overflow: hidden;
-  width: 100%;
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-  -webkit-box-align: center;
-  -webkit-align-items: center;
-      -ms-flex-align: center;
-          align-items: center;
-  height: 28px;
-}
-.flatpickr-weekdays .flatpickr-weekdaycontainer {
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-  -webkit-box-flex: 1;
-  -webkit-flex: 1;
-      -ms-flex: 1;
-          flex: 1;
-}
-span.flatpickr-weekday {
-  cursor: default;
-  font-size: 90%;
-  background: #42a5f5;
-  color: rgba(0,0,0,0.54);
-  line-height: 1;
-  margin: 0;
-  text-align: center;
-  display: block;
-  -webkit-box-flex: 1;
-  -webkit-flex: 1;
-      -ms-flex: 1;
-          flex: 1;
-  font-weight: bolder;
-}
-.dayContainer,
-.flatpickr-weeks {
-  padding: 1px 0 0 0;
-}
-.flatpickr-days {
-  position: relative;
-  overflow: hidden;
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-  -webkit-box-align: start;
-  -webkit-align-items: flex-start;
-      -ms-flex-align: start;
-          align-items: flex-start;
-  width: 307.875px;
-  border-left: 1px solid rgba(72,72,72,0.2);
-  border-right: 1px solid rgba(72,72,72,0.2);
-}
-.flatpickr-days:focus {
-  outline: 0;
-}
-.dayContainer {
-  padding: 0;
-  outline: 0;
-  text-align: left;
-  width: 307.875px;
-  min-width: 307.875px;
-  max-width: 307.875px;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  display: inline-block;
-  display: -ms-flexbox;
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: flex;
-  -webkit-flex-wrap: wrap;
-          flex-wrap: wrap;
-  -ms-flex-wrap: wrap;
-  -ms-flex-pack: justify;
-  -webkit-justify-content: space-around;
-          justify-content: space-around;
-  -webkit-transform: translate3d(0px, 0px, 0px);
-          transform: translate3d(0px, 0px, 0px);
-  opacity: 1;
-}
-.dayContainer + .dayContainer {
-  -webkit-box-shadow: -1px 0 0 rgba(72,72,72,0.2);
-          box-shadow: -1px 0 0 rgba(72,72,72,0.2);
-}
-.flatpickr-day {
-  background: none;
-  border: 1px solid transparent;
-  border-radius: 150px;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  color: #484848;
-  cursor: pointer;
-  font-weight: 400;
-  width: 14.2857143%;
-  -webkit-flex-basis: 14.2857143%;
-      -ms-flex-preferred-size: 14.2857143%;
-          flex-basis: 14.2857143%;
-  max-width: 39px;
-  height: 39px;
-  line-height: 39px;
-  margin: 0;
-  display: inline-block;
-  position: relative;
-  -webkit-box-pack: center;
-  -webkit-justify-content: center;
-      -ms-flex-pack: center;
-          justify-content: center;
-  text-align: center;
-}
-.flatpickr-day.inRange,
-.flatpickr-day.prevMonthDay.inRange,
-.flatpickr-day.nextMonthDay.inRange,
-.flatpickr-day.today.inRange,
-.flatpickr-day.prevMonthDay.today.inRange,
-.flatpickr-day.nextMonthDay.today.inRange,
-.flatpickr-day:hover,
-.flatpickr-day.prevMonthDay:hover,
-.flatpickr-day.nextMonthDay:hover,
-.flatpickr-day:focus,
-.flatpickr-day.prevMonthDay:focus,
-.flatpickr-day.nextMonthDay:focus {
-  cursor: pointer;
-  outline: 0;
-  background: #e2e2e2;
-  border-color: #e2e2e2;
-}
-.flatpickr-day.today {
-  border-color: #bbb;
-}
-.flatpickr-day.today:hover,
-.flatpickr-day.today:focus {
-  border-color: #bbb;
-  background: #bbb;
-  color: #fff;
-}
-.flatpickr-day.selected,
-.flatpickr-day.startRange,
-.flatpickr-day.endRange,
-.flatpickr-day.selected.inRange,
-.flatpickr-day.startRange.inRange,
-.flatpickr-day.endRange.inRange,
-.flatpickr-day.selected:focus,
-.flatpickr-day.startRange:focus,
-.flatpickr-day.endRange:focus,
-.flatpickr-day.selected:hover,
-.flatpickr-day.startRange:hover,
-.flatpickr-day.endRange:hover,
-.flatpickr-day.selected.prevMonthDay,
-.flatpickr-day.startRange.prevMonthDay,
-.flatpickr-day.endRange.prevMonthDay,
-.flatpickr-day.selected.nextMonthDay,
-.flatpickr-day.startRange.nextMonthDay,
-.flatpickr-day.endRange.nextMonthDay {
-  background: #42a5f5;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  color: #fff;
-  border-color: #42a5f5;
-}
-.flatpickr-day.selected.startRange,
-.flatpickr-day.startRange.startRange,
-.flatpickr-day.endRange.startRange {
-  border-radius: 50px 0 0 50px;
-}
-.flatpickr-day.selected.endRange,
-.flatpickr-day.startRange.endRange,
-.flatpickr-day.endRange.endRange {
-  border-radius: 0 50px 50px 0;
-}
-.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),
-.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),
-.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)) {
-  -webkit-box-shadow: -10px 0 0 #42a5f5;
-          box-shadow: -10px 0 0 #42a5f5;
-}
-.flatpickr-day.selected.startRange.endRange,
-.flatpickr-day.startRange.startRange.endRange,
-.flatpickr-day.endRange.startRange.endRange {
-  border-radius: 50px;
-}
-.flatpickr-day.inRange {
-  border-radius: 0;
-  -webkit-box-shadow: -5px 0 0 #e2e2e2, 5px 0 0 #e2e2e2;
-          box-shadow: -5px 0 0 #e2e2e2, 5px 0 0 #e2e2e2;
-}
-.flatpickr-day.flatpickr-disabled,
-.flatpickr-day.flatpickr-disabled:hover,
-.flatpickr-day.prevMonthDay,
-.flatpickr-day.nextMonthDay,
-.flatpickr-day.notAllowed,
-.flatpickr-day.notAllowed.prevMonthDay,
-.flatpickr-day.notAllowed.nextMonthDay {
-  color: rgba(72,72,72,0.3);
-  background: transparent;
-  border-color: transparent;
-  cursor: default;
-}
-.flatpickr-day.flatpickr-disabled,
-.flatpickr-day.flatpickr-disabled:hover {
-  cursor: not-allowed;
-  color: rgba(72,72,72,0.1);
-}
-.flatpickr-day.week.selected {
-  border-radius: 0;
-  -webkit-box-shadow: -5px 0 0 #42a5f5, 5px 0 0 #42a5f5;
-          box-shadow: -5px 0 0 #42a5f5, 5px 0 0 #42a5f5;
-}
-.flatpickr-day.hidden {
-  visibility: hidden;
-}
-.rangeMode .flatpickr-day {
-  margin-top: 1px;
-}
-.flatpickr-weekwrapper {
-  float: left;
-}
-.flatpickr-weekwrapper .flatpickr-weeks {
-  padding: 0 12px;
-  border-left: 1px solid rgba(72,72,72,0.2);
-}
-.flatpickr-weekwrapper .flatpickr-weekday {
-  float: none;
-  width: 100%;
-  line-height: 28px;
-}
-.flatpickr-weekwrapper span.flatpickr-day,
-.flatpickr-weekwrapper span.flatpickr-day:hover {
-  display: block;
-  width: 100%;
-  max-width: none;
-  color: rgba(72,72,72,0.3);
-  background: transparent;
-  cursor: default;
-  border: none;
-}
-.flatpickr-innerContainer {
-  display: block;
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  overflow: hidden;
-  background: #fff;
-  border-bottom: 1px solid rgba(72,72,72,0.2);
-}
-.flatpickr-rContainer {
-  display: inline-block;
-  padding: 0;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-}
-.flatpickr-time {
-  text-align: center;
-  outline: 0;
-  display: block;
-  height: 0;
-  line-height: 40px;
-  max-height: 40px;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  overflow: hidden;
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-  background: #fff;
-  border-radius: 0 0 5px 5px;
-}
-.flatpickr-time:after {
-  content: "";
-  display: table;
-  clear: both;
-}
-.flatpickr-time .numInputWrapper {
-  -webkit-box-flex: 1;
-  -webkit-flex: 1;
-      -ms-flex: 1;
-          flex: 1;
-  width: 40%;
-  height: 40px;
-  float: left;
-}
-.flatpickr-time .numInputWrapper span.arrowUp:after {
-  border-bottom-color: #484848;
-}
-.flatpickr-time .numInputWrapper span.arrowDown:after {
-  border-top-color: #484848;
-}
-.flatpickr-time.hasSeconds .numInputWrapper {
-  width: 26%;
-}
-.flatpickr-time.time24hr .numInputWrapper {
-  width: 49%;
-}
-.flatpickr-time input {
-  background: transparent;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  border: 0;
-  border-radius: 0;
-  text-align: center;
-  margin: 0;
-  padding: 0;
-  height: inherit;
-  line-height: inherit;
-  color: #484848;
-  font-size: 14px;
-  position: relative;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  -webkit-appearance: textfield;
-  -moz-appearance: textfield;
-  appearance: textfield;
-}
-.flatpickr-time input.flatpickr-hour {
-  font-weight: bold;
-}
-.flatpickr-time input.flatpickr-minute,
-.flatpickr-time input.flatpickr-second {
-  font-weight: 400;
-}
-.flatpickr-time input:focus {
-  outline: 0;
-  border: 0;
-}
-.flatpickr-time .flatpickr-time-separator,
-.flatpickr-time .flatpickr-am-pm {
-  height: inherit;
-  float: left;
-  line-height: inherit;
-  color: #484848;
-  font-weight: bold;
-  width: 2%;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  -webkit-align-self: center;
-      -ms-flex-item-align: center;
-          align-self: center;
-}
-.flatpickr-time .flatpickr-am-pm {
-  outline: 0;
-  width: 18%;
-  cursor: pointer;
-  text-align: center;
-  font-weight: 400;
-}
-.flatpickr-time input:hover,
-.flatpickr-time .flatpickr-am-pm:hover,
-.flatpickr-time input:focus,
-.flatpickr-time .flatpickr-am-pm:focus {
-  background: #eaeaea;
-}
-.flatpickr-input[readonly] {
-  cursor: pointer;
-}
-@-webkit-keyframes fpFadeInDown {
-  from {
-    opacity: 0;
-    -webkit-transform: translate3d(0, -20px, 0);
-            transform: translate3d(0, -20px, 0);
-  }
-  to {
-    opacity: 1;
-    -webkit-transform: translate3d(0, 0, 0);
-            transform: translate3d(0, 0, 0);
-  }
-}
-@keyframes fpFadeInDown {
-  from {
-    opacity: 0;
-    -webkit-transform: translate3d(0, -20px, 0);
-            transform: translate3d(0, -20px, 0);
-  }
-  to {
-    opacity: 1;
-    -webkit-transform: translate3d(0, 0, 0);
-            transform: translate3d(0, 0, 0);
-  }
-}
diff --git a/app/static/vendors/flatpickr/themes/material_green.css b/app/static/vendors/flatpickr/themes/material_green.css
deleted file mode 100644 (file)
index f4719f2..0000000
+++ /dev/null
@@ -1,795 +0,0 @@
-.flatpickr-calendar {
-  background: transparent;
-  opacity: 0;
-  display: none;
-  text-align: center;
-  visibility: hidden;
-  padding: 0;
-  -webkit-animation: none;
-          animation: none;
-  direction: ltr;
-  border: 0;
-  font-size: 14px;
-  line-height: 24px;
-  border-radius: 5px;
-  position: absolute;
-  width: 307.875px;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  -ms-touch-action: manipulation;
-      touch-action: manipulation;
-  -webkit-box-shadow: 0 3px 13px rgba(0,0,0,0.08);
-          box-shadow: 0 3px 13px rgba(0,0,0,0.08);
-}
-.flatpickr-calendar.open,
-.flatpickr-calendar.inline {
-  opacity: 1;
-  max-height: 640px;
-  visibility: visible;
-}
-.flatpickr-calendar.open {
-  display: inline-block;
-  z-index: 99999;
-}
-.flatpickr-calendar.animate.open {
-  -webkit-animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);
-          animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);
-}
-.flatpickr-calendar.inline {
-  display: block;
-  position: relative;
-  top: 2px;
-}
-.flatpickr-calendar.static {
-  position: absolute;
-  top: calc(100% + 2px);
-}
-.flatpickr-calendar.static.open {
-  z-index: 999;
-  display: block;
-}
-.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7) {
-  -webkit-box-shadow: none !important;
-          box-shadow: none !important;
-}
-.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1) {
-  -webkit-box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
-          box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
-}
-.flatpickr-calendar .hasWeeks .dayContainer,
-.flatpickr-calendar .hasTime .dayContainer {
-  border-bottom: 0;
-  border-bottom-right-radius: 0;
-  border-bottom-left-radius: 0;
-}
-.flatpickr-calendar .hasWeeks .dayContainer {
-  border-left: 0;
-}
-.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time {
-  height: 40px;
-  border-top: 1px solid rgba(72,72,72,0.2);
-}
-.flatpickr-calendar.showTimeInput.hasTime .flatpickr-innerContainer {
-  border-bottom: 0;
-}
-.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time {
-  border: 1px solid rgba(72,72,72,0.2);
-}
-.flatpickr-calendar.noCalendar.hasTime .flatpickr-time {
-  height: auto;
-}
-.flatpickr-calendar:before,
-.flatpickr-calendar:after {
-  position: absolute;
-  display: block;
-  pointer-events: none;
-  border: solid transparent;
-  content: '';
-  height: 0;
-  width: 0;
-  left: 22px;
-}
-.flatpickr-calendar.rightMost:before,
-.flatpickr-calendar.rightMost:after {
-  left: auto;
-  right: 22px;
-}
-.flatpickr-calendar:before {
-  border-width: 5px;
-  margin: 0 -5px;
-}
-.flatpickr-calendar:after {
-  border-width: 4px;
-  margin: 0 -4px;
-}
-.flatpickr-calendar.arrowTop:before,
-.flatpickr-calendar.arrowTop:after {
-  bottom: 100%;
-}
-.flatpickr-calendar.arrowTop:before {
-  border-bottom-color: rgba(72,72,72,0.2);
-}
-.flatpickr-calendar.arrowTop:after {
-  border-bottom-color: #1bbc9b;
-}
-.flatpickr-calendar.arrowBottom:before,
-.flatpickr-calendar.arrowBottom:after {
-  top: 100%;
-}
-.flatpickr-calendar.arrowBottom:before {
-  border-top-color: rgba(72,72,72,0.2);
-}
-.flatpickr-calendar.arrowBottom:after {
-  border-top-color: #1bbc9b;
-}
-.flatpickr-calendar:focus {
-  outline: 0;
-}
-.flatpickr-wrapper {
-  position: relative;
-  display: inline-block;
-}
-.flatpickr-months {
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-}
-.flatpickr-months .flatpickr-month {
-  border-radius: 5px 5px 0 0;
-  background: #1bbc9b;
-  color: #fff;
-  fill: #fff;
-  height: 34px;
-  line-height: 1;
-  text-align: center;
-  position: relative;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  overflow: hidden;
-  -webkit-box-flex: 1;
-  -webkit-flex: 1;
-      -ms-flex: 1;
-          flex: 1;
-}
-.flatpickr-months .flatpickr-prev-month,
-.flatpickr-months .flatpickr-next-month {
-  text-decoration: none;
-  cursor: pointer;
-  position: absolute;
-  top: 0;
-  height: 34px;
-  padding: 10px;
-  z-index: 3;
-  color: #fff;
-  fill: #fff;
-}
-.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,
-.flatpickr-months .flatpickr-next-month.flatpickr-disabled {
-  display: none;
-}
-.flatpickr-months .flatpickr-prev-month i,
-.flatpickr-months .flatpickr-next-month i {
-  position: relative;
-}
-.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,
-.flatpickr-months .flatpickr-next-month.flatpickr-prev-month {
-/*
-      /*rtl:begin:ignore*/
-/*
-      */
-  left: 0;
-/*
-      /*rtl:end:ignore*/
-/*
-      */
-}
-/*
-      /*rtl:begin:ignore*/
-/*
-      /*rtl:end:ignore*/
-.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,
-.flatpickr-months .flatpickr-next-month.flatpickr-next-month {
-/*
-      /*rtl:begin:ignore*/
-/*
-      */
-  right: 0;
-/*
-      /*rtl:end:ignore*/
-/*
-      */
-}
-/*
-      /*rtl:begin:ignore*/
-/*
-      /*rtl:end:ignore*/
-.flatpickr-months .flatpickr-prev-month:hover,
-.flatpickr-months .flatpickr-next-month:hover {
-  color: #bbb;
-}
-.flatpickr-months .flatpickr-prev-month:hover svg,
-.flatpickr-months .flatpickr-next-month:hover svg {
-  fill: #f64747;
-}
-.flatpickr-months .flatpickr-prev-month svg,
-.flatpickr-months .flatpickr-next-month svg {
-  width: 14px;
-  height: 14px;
-}
-.flatpickr-months .flatpickr-prev-month svg path,
-.flatpickr-months .flatpickr-next-month svg path {
-  -webkit-transition: fill 0.1s;
-  transition: fill 0.1s;
-  fill: inherit;
-}
-.numInputWrapper {
-  position: relative;
-  height: auto;
-}
-.numInputWrapper input,
-.numInputWrapper span {
-  display: inline-block;
-}
-.numInputWrapper input {
-  width: 100%;
-}
-.numInputWrapper input::-ms-clear {
-  display: none;
-}
-.numInputWrapper input::-webkit-outer-spin-button,
-.numInputWrapper input::-webkit-inner-spin-button {
-  margin: 0;
-  -webkit-appearance: none;
-}
-.numInputWrapper span {
-  position: absolute;
-  right: 0;
-  width: 14px;
-  padding: 0 4px 0 2px;
-  height: 50%;
-  line-height: 50%;
-  opacity: 0;
-  cursor: pointer;
-  border: 1px solid rgba(72,72,72,0.15);
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-}
-.numInputWrapper span:hover {
-  background: rgba(0,0,0,0.1);
-}
-.numInputWrapper span:active {
-  background: rgba(0,0,0,0.2);
-}
-.numInputWrapper span:after {
-  display: block;
-  content: "";
-  position: absolute;
-}
-.numInputWrapper span.arrowUp {
-  top: 0;
-  border-bottom: 0;
-}
-.numInputWrapper span.arrowUp:after {
-  border-left: 4px solid transparent;
-  border-right: 4px solid transparent;
-  border-bottom: 4px solid rgba(72,72,72,0.6);
-  top: 26%;
-}
-.numInputWrapper span.arrowDown {
-  top: 50%;
-}
-.numInputWrapper span.arrowDown:after {
-  border-left: 4px solid transparent;
-  border-right: 4px solid transparent;
-  border-top: 4px solid rgba(72,72,72,0.6);
-  top: 40%;
-}
-.numInputWrapper span svg {
-  width: inherit;
-  height: auto;
-}
-.numInputWrapper span svg path {
-  fill: rgba(255,255,255,0.5);
-}
-.numInputWrapper:hover {
-  background: rgba(0,0,0,0.05);
-}
-.numInputWrapper:hover span {
-  opacity: 1;
-}
-.flatpickr-current-month {
-  font-size: 135%;
-  line-height: inherit;
-  font-weight: 300;
-  color: inherit;
-  position: absolute;
-  width: 75%;
-  left: 12.5%;
-  padding: 7.48px 0 0 0;
-  line-height: 1;
-  height: 34px;
-  display: inline-block;
-  text-align: center;
-  -webkit-transform: translate3d(0px, 0px, 0px);
-          transform: translate3d(0px, 0px, 0px);
-}
-.flatpickr-current-month span.cur-month {
-  font-family: inherit;
-  font-weight: 700;
-  color: inherit;
-  display: inline-block;
-  margin-left: 0.5ch;
-  padding: 0;
-}
-.flatpickr-current-month span.cur-month:hover {
-  background: rgba(0,0,0,0.05);
-}
-.flatpickr-current-month .numInputWrapper {
-  width: 6ch;
-  width: 7ch\0;
-  display: inline-block;
-}
-.flatpickr-current-month .numInputWrapper span.arrowUp:after {
-  border-bottom-color: #fff;
-}
-.flatpickr-current-month .numInputWrapper span.arrowDown:after {
-  border-top-color: #fff;
-}
-.flatpickr-current-month input.cur-year {
-  background: transparent;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  color: inherit;
-  cursor: text;
-  padding: 0 0 0 0.5ch;
-  margin: 0;
-  display: inline-block;
-  font-size: inherit;
-  font-family: inherit;
-  font-weight: 300;
-  line-height: inherit;
-  height: auto;
-  border: 0;
-  border-radius: 0;
-  vertical-align: initial;
-  -webkit-appearance: textfield;
-  -moz-appearance: textfield;
-  appearance: textfield;
-}
-.flatpickr-current-month input.cur-year:focus {
-  outline: 0;
-}
-.flatpickr-current-month input.cur-year[disabled],
-.flatpickr-current-month input.cur-year[disabled]:hover {
-  font-size: 100%;
-  color: rgba(255,255,255,0.5);
-  background: transparent;
-  pointer-events: none;
-}
-.flatpickr-current-month .flatpickr-monthDropdown-months {
-  appearance: menulist;
-  background: #1bbc9b;
-  border: none;
-  border-radius: 0;
-  box-sizing: border-box;
-  color: inherit;
-  cursor: pointer;
-  font-size: inherit;
-  font-family: inherit;
-  font-weight: 300;
-  height: auto;
-  line-height: inherit;
-  margin: -1px 0 0 0;
-  outline: none;
-  padding: 0 0 0 0.5ch;
-  position: relative;
-  vertical-align: initial;
-  -webkit-box-sizing: border-box;
-  -webkit-appearance: menulist;
-  -moz-appearance: menulist;
-  width: auto;
-}
-.flatpickr-current-month .flatpickr-monthDropdown-months:focus,
-.flatpickr-current-month .flatpickr-monthDropdown-months:active {
-  outline: none;
-}
-.flatpickr-current-month .flatpickr-monthDropdown-months:hover {
-  background: rgba(0,0,0,0.05);
-}
-.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month {
-  background-color: #1bbc9b;
-  outline: none;
-  padding: 0;
-}
-.flatpickr-weekdays {
-  background: #1bbc9b;
-  text-align: center;
-  overflow: hidden;
-  width: 100%;
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-  -webkit-box-align: center;
-  -webkit-align-items: center;
-      -ms-flex-align: center;
-          align-items: center;
-  height: 28px;
-}
-.flatpickr-weekdays .flatpickr-weekdaycontainer {
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-  -webkit-box-flex: 1;
-  -webkit-flex: 1;
-      -ms-flex: 1;
-          flex: 1;
-}
-span.flatpickr-weekday {
-  cursor: default;
-  font-size: 90%;
-  background: #1bbc9b;
-  color: rgba(0,0,0,0.54);
-  line-height: 1;
-  margin: 0;
-  text-align: center;
-  display: block;
-  -webkit-box-flex: 1;
-  -webkit-flex: 1;
-      -ms-flex: 1;
-          flex: 1;
-  font-weight: bolder;
-}
-.dayContainer,
-.flatpickr-weeks {
-  padding: 1px 0 0 0;
-}
-.flatpickr-days {
-  position: relative;
-  overflow: hidden;
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-  -webkit-box-align: start;
-  -webkit-align-items: flex-start;
-      -ms-flex-align: start;
-          align-items: flex-start;
-  width: 307.875px;
-  border-left: 1px solid rgba(72,72,72,0.2);
-  border-right: 1px solid rgba(72,72,72,0.2);
-}
-.flatpickr-days:focus {
-  outline: 0;
-}
-.dayContainer {
-  padding: 0;
-  outline: 0;
-  text-align: left;
-  width: 307.875px;
-  min-width: 307.875px;
-  max-width: 307.875px;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  display: inline-block;
-  display: -ms-flexbox;
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: flex;
-  -webkit-flex-wrap: wrap;
-          flex-wrap: wrap;
-  -ms-flex-wrap: wrap;
-  -ms-flex-pack: justify;
-  -webkit-justify-content: space-around;
-          justify-content: space-around;
-  -webkit-transform: translate3d(0px, 0px, 0px);
-          transform: translate3d(0px, 0px, 0px);
-  opacity: 1;
-}
-.dayContainer + .dayContainer {
-  -webkit-box-shadow: -1px 0 0 rgba(72,72,72,0.2);
-          box-shadow: -1px 0 0 rgba(72,72,72,0.2);
-}
-.flatpickr-day {
-  background: none;
-  border: 1px solid transparent;
-  border-radius: 150px;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  color: #484848;
-  cursor: pointer;
-  font-weight: 400;
-  width: 14.2857143%;
-  -webkit-flex-basis: 14.2857143%;
-      -ms-flex-preferred-size: 14.2857143%;
-          flex-basis: 14.2857143%;
-  max-width: 39px;
-  height: 39px;
-  line-height: 39px;
-  margin: 0;
-  display: inline-block;
-  position: relative;
-  -webkit-box-pack: center;
-  -webkit-justify-content: center;
-      -ms-flex-pack: center;
-          justify-content: center;
-  text-align: center;
-}
-.flatpickr-day.inRange,
-.flatpickr-day.prevMonthDay.inRange,
-.flatpickr-day.nextMonthDay.inRange,
-.flatpickr-day.today.inRange,
-.flatpickr-day.prevMonthDay.today.inRange,
-.flatpickr-day.nextMonthDay.today.inRange,
-.flatpickr-day:hover,
-.flatpickr-day.prevMonthDay:hover,
-.flatpickr-day.nextMonthDay:hover,
-.flatpickr-day:focus,
-.flatpickr-day.prevMonthDay:focus,
-.flatpickr-day.nextMonthDay:focus {
-  cursor: pointer;
-  outline: 0;
-  background: #e2e2e2;
-  border-color: #e2e2e2;
-}
-.flatpickr-day.today {
-  border-color: #bbb;
-}
-.flatpickr-day.today:hover,
-.flatpickr-day.today:focus {
-  border-color: #bbb;
-  background: #bbb;
-  color: #fff;
-}
-.flatpickr-day.selected,
-.flatpickr-day.startRange,
-.flatpickr-day.endRange,
-.flatpickr-day.selected.inRange,
-.flatpickr-day.startRange.inRange,
-.flatpickr-day.endRange.inRange,
-.flatpickr-day.selected:focus,
-.flatpickr-day.startRange:focus,
-.flatpickr-day.endRange:focus,
-.flatpickr-day.selected:hover,
-.flatpickr-day.startRange:hover,
-.flatpickr-day.endRange:hover,
-.flatpickr-day.selected.prevMonthDay,
-.flatpickr-day.startRange.prevMonthDay,
-.flatpickr-day.endRange.prevMonthDay,
-.flatpickr-day.selected.nextMonthDay,
-.flatpickr-day.startRange.nextMonthDay,
-.flatpickr-day.endRange.nextMonthDay {
-  background: #1bbc9b;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  color: #fff;
-  border-color: #1bbc9b;
-}
-.flatpickr-day.selected.startRange,
-.flatpickr-day.startRange.startRange,
-.flatpickr-day.endRange.startRange {
-  border-radius: 50px 0 0 50px;
-}
-.flatpickr-day.selected.endRange,
-.flatpickr-day.startRange.endRange,
-.flatpickr-day.endRange.endRange {
-  border-radius: 0 50px 50px 0;
-}
-.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),
-.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),
-.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)) {
-  -webkit-box-shadow: -10px 0 0 #1bbc9b;
-          box-shadow: -10px 0 0 #1bbc9b;
-}
-.flatpickr-day.selected.startRange.endRange,
-.flatpickr-day.startRange.startRange.endRange,
-.flatpickr-day.endRange.startRange.endRange {
-  border-radius: 50px;
-}
-.flatpickr-day.inRange {
-  border-radius: 0;
-  -webkit-box-shadow: -5px 0 0 #e2e2e2, 5px 0 0 #e2e2e2;
-          box-shadow: -5px 0 0 #e2e2e2, 5px 0 0 #e2e2e2;
-}
-.flatpickr-day.flatpickr-disabled,
-.flatpickr-day.flatpickr-disabled:hover,
-.flatpickr-day.prevMonthDay,
-.flatpickr-day.nextMonthDay,
-.flatpickr-day.notAllowed,
-.flatpickr-day.notAllowed.prevMonthDay,
-.flatpickr-day.notAllowed.nextMonthDay {
-  color: rgba(72,72,72,0.3);
-  background: transparent;
-  border-color: transparent;
-  cursor: default;
-}
-.flatpickr-day.flatpickr-disabled,
-.flatpickr-day.flatpickr-disabled:hover {
-  cursor: not-allowed;
-  color: rgba(72,72,72,0.1);
-}
-.flatpickr-day.week.selected {
-  border-radius: 0;
-  -webkit-box-shadow: -5px 0 0 #1bbc9b, 5px 0 0 #1bbc9b;
-          box-shadow: -5px 0 0 #1bbc9b, 5px 0 0 #1bbc9b;
-}
-.flatpickr-day.hidden {
-  visibility: hidden;
-}
-.rangeMode .flatpickr-day {
-  margin-top: 1px;
-}
-.flatpickr-weekwrapper {
-  float: left;
-}
-.flatpickr-weekwrapper .flatpickr-weeks {
-  padding: 0 12px;
-  border-left: 1px solid rgba(72,72,72,0.2);
-}
-.flatpickr-weekwrapper .flatpickr-weekday {
-  float: none;
-  width: 100%;
-  line-height: 28px;
-}
-.flatpickr-weekwrapper span.flatpickr-day,
-.flatpickr-weekwrapper span.flatpickr-day:hover {
-  display: block;
-  width: 100%;
-  max-width: none;
-  color: rgba(72,72,72,0.3);
-  background: transparent;
-  cursor: default;
-  border: none;
-}
-.flatpickr-innerContainer {
-  display: block;
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  overflow: hidden;
-  background: #fff;
-  border-bottom: 1px solid rgba(72,72,72,0.2);
-}
-.flatpickr-rContainer {
-  display: inline-block;
-  padding: 0;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-}
-.flatpickr-time {
-  text-align: center;
-  outline: 0;
-  display: block;
-  height: 0;
-  line-height: 40px;
-  max-height: 40px;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  overflow: hidden;
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-  background: #fff;
-  border-radius: 0 0 5px 5px;
-}
-.flatpickr-time:after {
-  content: "";
-  display: table;
-  clear: both;
-}
-.flatpickr-time .numInputWrapper {
-  -webkit-box-flex: 1;
-  -webkit-flex: 1;
-      -ms-flex: 1;
-          flex: 1;
-  width: 40%;
-  height: 40px;
-  float: left;
-}
-.flatpickr-time .numInputWrapper span.arrowUp:after {
-  border-bottom-color: #484848;
-}
-.flatpickr-time .numInputWrapper span.arrowDown:after {
-  border-top-color: #484848;
-}
-.flatpickr-time.hasSeconds .numInputWrapper {
-  width: 26%;
-}
-.flatpickr-time.time24hr .numInputWrapper {
-  width: 49%;
-}
-.flatpickr-time input {
-  background: transparent;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  border: 0;
-  border-radius: 0;
-  text-align: center;
-  margin: 0;
-  padding: 0;
-  height: inherit;
-  line-height: inherit;
-  color: #484848;
-  font-size: 14px;
-  position: relative;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  -webkit-appearance: textfield;
-  -moz-appearance: textfield;
-  appearance: textfield;
-}
-.flatpickr-time input.flatpickr-hour {
-  font-weight: bold;
-}
-.flatpickr-time input.flatpickr-minute,
-.flatpickr-time input.flatpickr-second {
-  font-weight: 400;
-}
-.flatpickr-time input:focus {
-  outline: 0;
-  border: 0;
-}
-.flatpickr-time .flatpickr-time-separator,
-.flatpickr-time .flatpickr-am-pm {
-  height: inherit;
-  float: left;
-  line-height: inherit;
-  color: #484848;
-  font-weight: bold;
-  width: 2%;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  -webkit-align-self: center;
-      -ms-flex-item-align: center;
-          align-self: center;
-}
-.flatpickr-time .flatpickr-am-pm {
-  outline: 0;
-  width: 18%;
-  cursor: pointer;
-  text-align: center;
-  font-weight: 400;
-}
-.flatpickr-time input:hover,
-.flatpickr-time .flatpickr-am-pm:hover,
-.flatpickr-time input:focus,
-.flatpickr-time .flatpickr-am-pm:focus {
-  background: #eaeaea;
-}
-.flatpickr-input[readonly] {
-  cursor: pointer;
-}
-@-webkit-keyframes fpFadeInDown {
-  from {
-    opacity: 0;
-    -webkit-transform: translate3d(0, -20px, 0);
-            transform: translate3d(0, -20px, 0);
-  }
-  to {
-    opacity: 1;
-    -webkit-transform: translate3d(0, 0, 0);
-            transform: translate3d(0, 0, 0);
-  }
-}
-@keyframes fpFadeInDown {
-  from {
-    opacity: 0;
-    -webkit-transform: translate3d(0, -20px, 0);
-            transform: translate3d(0, -20px, 0);
-  }
-  to {
-    opacity: 1;
-    -webkit-transform: translate3d(0, 0, 0);
-            transform: translate3d(0, 0, 0);
-  }
-}
diff --git a/app/static/vendors/flatpickr/themes/material_orange.css b/app/static/vendors/flatpickr/themes/material_orange.css
deleted file mode 100644 (file)
index 8ee7d2b..0000000
+++ /dev/null
@@ -1,795 +0,0 @@
-.flatpickr-calendar {
-  background: transparent;
-  opacity: 0;
-  display: none;
-  text-align: center;
-  visibility: hidden;
-  padding: 0;
-  -webkit-animation: none;
-          animation: none;
-  direction: ltr;
-  border: 0;
-  font-size: 14px;
-  line-height: 24px;
-  border-radius: 5px;
-  position: absolute;
-  width: 307.875px;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  -ms-touch-action: manipulation;
-      touch-action: manipulation;
-  -webkit-box-shadow: 0 3px 13px rgba(0,0,0,0.08);
-          box-shadow: 0 3px 13px rgba(0,0,0,0.08);
-}
-.flatpickr-calendar.open,
-.flatpickr-calendar.inline {
-  opacity: 1;
-  max-height: 640px;
-  visibility: visible;
-}
-.flatpickr-calendar.open {
-  display: inline-block;
-  z-index: 99999;
-}
-.flatpickr-calendar.animate.open {
-  -webkit-animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);
-          animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);
-}
-.flatpickr-calendar.inline {
-  display: block;
-  position: relative;
-  top: 2px;
-}
-.flatpickr-calendar.static {
-  position: absolute;
-  top: calc(100% + 2px);
-}
-.flatpickr-calendar.static.open {
-  z-index: 999;
-  display: block;
-}
-.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7) {
-  -webkit-box-shadow: none !important;
-          box-shadow: none !important;
-}
-.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1) {
-  -webkit-box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
-          box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
-}
-.flatpickr-calendar .hasWeeks .dayContainer,
-.flatpickr-calendar .hasTime .dayContainer {
-  border-bottom: 0;
-  border-bottom-right-radius: 0;
-  border-bottom-left-radius: 0;
-}
-.flatpickr-calendar .hasWeeks .dayContainer {
-  border-left: 0;
-}
-.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time {
-  height: 40px;
-  border-top: 1px solid rgba(72,72,72,0.2);
-}
-.flatpickr-calendar.showTimeInput.hasTime .flatpickr-innerContainer {
-  border-bottom: 0;
-}
-.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time {
-  border: 1px solid rgba(72,72,72,0.2);
-}
-.flatpickr-calendar.noCalendar.hasTime .flatpickr-time {
-  height: auto;
-}
-.flatpickr-calendar:before,
-.flatpickr-calendar:after {
-  position: absolute;
-  display: block;
-  pointer-events: none;
-  border: solid transparent;
-  content: '';
-  height: 0;
-  width: 0;
-  left: 22px;
-}
-.flatpickr-calendar.rightMost:before,
-.flatpickr-calendar.rightMost:after {
-  left: auto;
-  right: 22px;
-}
-.flatpickr-calendar:before {
-  border-width: 5px;
-  margin: 0 -5px;
-}
-.flatpickr-calendar:after {
-  border-width: 4px;
-  margin: 0 -4px;
-}
-.flatpickr-calendar.arrowTop:before,
-.flatpickr-calendar.arrowTop:after {
-  bottom: 100%;
-}
-.flatpickr-calendar.arrowTop:before {
-  border-bottom-color: rgba(72,72,72,0.2);
-}
-.flatpickr-calendar.arrowTop:after {
-  border-bottom-color: #ff8a65;
-}
-.flatpickr-calendar.arrowBottom:before,
-.flatpickr-calendar.arrowBottom:after {
-  top: 100%;
-}
-.flatpickr-calendar.arrowBottom:before {
-  border-top-color: rgba(72,72,72,0.2);
-}
-.flatpickr-calendar.arrowBottom:after {
-  border-top-color: #ff8a65;
-}
-.flatpickr-calendar:focus {
-  outline: 0;
-}
-.flatpickr-wrapper {
-  position: relative;
-  display: inline-block;
-}
-.flatpickr-months {
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-}
-.flatpickr-months .flatpickr-month {
-  border-radius: 5px 5px 0 0;
-  background: #ff8a65;
-  color: #fff;
-  fill: #fff;
-  height: 34px;
-  line-height: 1;
-  text-align: center;
-  position: relative;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  overflow: hidden;
-  -webkit-box-flex: 1;
-  -webkit-flex: 1;
-      -ms-flex: 1;
-          flex: 1;
-}
-.flatpickr-months .flatpickr-prev-month,
-.flatpickr-months .flatpickr-next-month {
-  text-decoration: none;
-  cursor: pointer;
-  position: absolute;
-  top: 0;
-  height: 34px;
-  padding: 10px;
-  z-index: 3;
-  color: #fff;
-  fill: #fff;
-}
-.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,
-.flatpickr-months .flatpickr-next-month.flatpickr-disabled {
-  display: none;
-}
-.flatpickr-months .flatpickr-prev-month i,
-.flatpickr-months .flatpickr-next-month i {
-  position: relative;
-}
-.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,
-.flatpickr-months .flatpickr-next-month.flatpickr-prev-month {
-/*
-      /*rtl:begin:ignore*/
-/*
-      */
-  left: 0;
-/*
-      /*rtl:end:ignore*/
-/*
-      */
-}
-/*
-      /*rtl:begin:ignore*/
-/*
-      /*rtl:end:ignore*/
-.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,
-.flatpickr-months .flatpickr-next-month.flatpickr-next-month {
-/*
-      /*rtl:begin:ignore*/
-/*
-      */
-  right: 0;
-/*
-      /*rtl:end:ignore*/
-/*
-      */
-}
-/*
-      /*rtl:begin:ignore*/
-/*
-      /*rtl:end:ignore*/
-.flatpickr-months .flatpickr-prev-month:hover,
-.flatpickr-months .flatpickr-next-month:hover {
-  color: #bbb;
-}
-.flatpickr-months .flatpickr-prev-month:hover svg,
-.flatpickr-months .flatpickr-next-month:hover svg {
-  fill: #f64747;
-}
-.flatpickr-months .flatpickr-prev-month svg,
-.flatpickr-months .flatpickr-next-month svg {
-  width: 14px;
-  height: 14px;
-}
-.flatpickr-months .flatpickr-prev-month svg path,
-.flatpickr-months .flatpickr-next-month svg path {
-  -webkit-transition: fill 0.1s;
-  transition: fill 0.1s;
-  fill: inherit;
-}
-.numInputWrapper {
-  position: relative;
-  height: auto;
-}
-.numInputWrapper input,
-.numInputWrapper span {
-  display: inline-block;
-}
-.numInputWrapper input {
-  width: 100%;
-}
-.numInputWrapper input::-ms-clear {
-  display: none;
-}
-.numInputWrapper input::-webkit-outer-spin-button,
-.numInputWrapper input::-webkit-inner-spin-button {
-  margin: 0;
-  -webkit-appearance: none;
-}
-.numInputWrapper span {
-  position: absolute;
-  right: 0;
-  width: 14px;
-  padding: 0 4px 0 2px;
-  height: 50%;
-  line-height: 50%;
-  opacity: 0;
-  cursor: pointer;
-  border: 1px solid rgba(72,72,72,0.15);
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-}
-.numInputWrapper span:hover {
-  background: rgba(0,0,0,0.1);
-}
-.numInputWrapper span:active {
-  background: rgba(0,0,0,0.2);
-}
-.numInputWrapper span:after {
-  display: block;
-  content: "";
-  position: absolute;
-}
-.numInputWrapper span.arrowUp {
-  top: 0;
-  border-bottom: 0;
-}
-.numInputWrapper span.arrowUp:after {
-  border-left: 4px solid transparent;
-  border-right: 4px solid transparent;
-  border-bottom: 4px solid rgba(72,72,72,0.6);
-  top: 26%;
-}
-.numInputWrapper span.arrowDown {
-  top: 50%;
-}
-.numInputWrapper span.arrowDown:after {
-  border-left: 4px solid transparent;
-  border-right: 4px solid transparent;
-  border-top: 4px solid rgba(72,72,72,0.6);
-  top: 40%;
-}
-.numInputWrapper span svg {
-  width: inherit;
-  height: auto;
-}
-.numInputWrapper span svg path {
-  fill: rgba(255,255,255,0.5);
-}
-.numInputWrapper:hover {
-  background: rgba(0,0,0,0.05);
-}
-.numInputWrapper:hover span {
-  opacity: 1;
-}
-.flatpickr-current-month {
-  font-size: 135%;
-  line-height: inherit;
-  font-weight: 300;
-  color: inherit;
-  position: absolute;
-  width: 75%;
-  left: 12.5%;
-  padding: 7.48px 0 0 0;
-  line-height: 1;
-  height: 34px;
-  display: inline-block;
-  text-align: center;
-  -webkit-transform: translate3d(0px, 0px, 0px);
-          transform: translate3d(0px, 0px, 0px);
-}
-.flatpickr-current-month span.cur-month {
-  font-family: inherit;
-  font-weight: 700;
-  color: inherit;
-  display: inline-block;
-  margin-left: 0.5ch;
-  padding: 0;
-}
-.flatpickr-current-month span.cur-month:hover {
-  background: rgba(0,0,0,0.05);
-}
-.flatpickr-current-month .numInputWrapper {
-  width: 6ch;
-  width: 7ch\0;
-  display: inline-block;
-}
-.flatpickr-current-month .numInputWrapper span.arrowUp:after {
-  border-bottom-color: #fff;
-}
-.flatpickr-current-month .numInputWrapper span.arrowDown:after {
-  border-top-color: #fff;
-}
-.flatpickr-current-month input.cur-year {
-  background: transparent;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  color: inherit;
-  cursor: text;
-  padding: 0 0 0 0.5ch;
-  margin: 0;
-  display: inline-block;
-  font-size: inherit;
-  font-family: inherit;
-  font-weight: 300;
-  line-height: inherit;
-  height: auto;
-  border: 0;
-  border-radius: 0;
-  vertical-align: initial;
-  -webkit-appearance: textfield;
-  -moz-appearance: textfield;
-  appearance: textfield;
-}
-.flatpickr-current-month input.cur-year:focus {
-  outline: 0;
-}
-.flatpickr-current-month input.cur-year[disabled],
-.flatpickr-current-month input.cur-year[disabled]:hover {
-  font-size: 100%;
-  color: rgba(255,255,255,0.5);
-  background: transparent;
-  pointer-events: none;
-}
-.flatpickr-current-month .flatpickr-monthDropdown-months {
-  appearance: menulist;
-  background: #ff8a65;
-  border: none;
-  border-radius: 0;
-  box-sizing: border-box;
-  color: inherit;
-  cursor: pointer;
-  font-size: inherit;
-  font-family: inherit;
-  font-weight: 300;
-  height: auto;
-  line-height: inherit;
-  margin: -1px 0 0 0;
-  outline: none;
-  padding: 0 0 0 0.5ch;
-  position: relative;
-  vertical-align: initial;
-  -webkit-box-sizing: border-box;
-  -webkit-appearance: menulist;
-  -moz-appearance: menulist;
-  width: auto;
-}
-.flatpickr-current-month .flatpickr-monthDropdown-months:focus,
-.flatpickr-current-month .flatpickr-monthDropdown-months:active {
-  outline: none;
-}
-.flatpickr-current-month .flatpickr-monthDropdown-months:hover {
-  background: rgba(0,0,0,0.05);
-}
-.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month {
-  background-color: #ff8a65;
-  outline: none;
-  padding: 0;
-}
-.flatpickr-weekdays {
-  background: #ff8a65;
-  text-align: center;
-  overflow: hidden;
-  width: 100%;
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-  -webkit-box-align: center;
-  -webkit-align-items: center;
-      -ms-flex-align: center;
-          align-items: center;
-  height: 28px;
-}
-.flatpickr-weekdays .flatpickr-weekdaycontainer {
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-  -webkit-box-flex: 1;
-  -webkit-flex: 1;
-      -ms-flex: 1;
-          flex: 1;
-}
-span.flatpickr-weekday {
-  cursor: default;
-  font-size: 90%;
-  background: #ff8a65;
-  color: rgba(0,0,0,0.54);
-  line-height: 1;
-  margin: 0;
-  text-align: center;
-  display: block;
-  -webkit-box-flex: 1;
-  -webkit-flex: 1;
-      -ms-flex: 1;
-          flex: 1;
-  font-weight: bolder;
-}
-.dayContainer,
-.flatpickr-weeks {
-  padding: 1px 0 0 0;
-}
-.flatpickr-days {
-  position: relative;
-  overflow: hidden;
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-  -webkit-box-align: start;
-  -webkit-align-items: flex-start;
-      -ms-flex-align: start;
-          align-items: flex-start;
-  width: 307.875px;
-  border-left: 1px solid rgba(72,72,72,0.2);
-  border-right: 1px solid rgba(72,72,72,0.2);
-}
-.flatpickr-days:focus {
-  outline: 0;
-}
-.dayContainer {
-  padding: 0;
-  outline: 0;
-  text-align: left;
-  width: 307.875px;
-  min-width: 307.875px;
-  max-width: 307.875px;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  display: inline-block;
-  display: -ms-flexbox;
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: flex;
-  -webkit-flex-wrap: wrap;
-          flex-wrap: wrap;
-  -ms-flex-wrap: wrap;
-  -ms-flex-pack: justify;
-  -webkit-justify-content: space-around;
-          justify-content: space-around;
-  -webkit-transform: translate3d(0px, 0px, 0px);
-          transform: translate3d(0px, 0px, 0px);
-  opacity: 1;
-}
-.dayContainer + .dayContainer {
-  -webkit-box-shadow: -1px 0 0 rgba(72,72,72,0.2);
-          box-shadow: -1px 0 0 rgba(72,72,72,0.2);
-}
-.flatpickr-day {
-  background: none;
-  border: 1px solid transparent;
-  border-radius: 150px;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  color: #484848;
-  cursor: pointer;
-  font-weight: 400;
-  width: 14.2857143%;
-  -webkit-flex-basis: 14.2857143%;
-      -ms-flex-preferred-size: 14.2857143%;
-          flex-basis: 14.2857143%;
-  max-width: 39px;
-  height: 39px;
-  line-height: 39px;
-  margin: 0;
-  display: inline-block;
-  position: relative;
-  -webkit-box-pack: center;
-  -webkit-justify-content: center;
-      -ms-flex-pack: center;
-          justify-content: center;
-  text-align: center;
-}
-.flatpickr-day.inRange,
-.flatpickr-day.prevMonthDay.inRange,
-.flatpickr-day.nextMonthDay.inRange,
-.flatpickr-day.today.inRange,
-.flatpickr-day.prevMonthDay.today.inRange,
-.flatpickr-day.nextMonthDay.today.inRange,
-.flatpickr-day:hover,
-.flatpickr-day.prevMonthDay:hover,
-.flatpickr-day.nextMonthDay:hover,
-.flatpickr-day:focus,
-.flatpickr-day.prevMonthDay:focus,
-.flatpickr-day.nextMonthDay:focus {
-  cursor: pointer;
-  outline: 0;
-  background: #e2e2e2;
-  border-color: #e2e2e2;
-}
-.flatpickr-day.today {
-  border-color: #bbb;
-}
-.flatpickr-day.today:hover,
-.flatpickr-day.today:focus {
-  border-color: #bbb;
-  background: #bbb;
-  color: #fff;
-}
-.flatpickr-day.selected,
-.flatpickr-day.startRange,
-.flatpickr-day.endRange,
-.flatpickr-day.selected.inRange,
-.flatpickr-day.startRange.inRange,
-.flatpickr-day.endRange.inRange,
-.flatpickr-day.selected:focus,
-.flatpickr-day.startRange:focus,
-.flatpickr-day.endRange:focus,
-.flatpickr-day.selected:hover,
-.flatpickr-day.startRange:hover,
-.flatpickr-day.endRange:hover,
-.flatpickr-day.selected.prevMonthDay,
-.flatpickr-day.startRange.prevMonthDay,
-.flatpickr-day.endRange.prevMonthDay,
-.flatpickr-day.selected.nextMonthDay,
-.flatpickr-day.startRange.nextMonthDay,
-.flatpickr-day.endRange.nextMonthDay {
-  background: #ff8a65;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  color: #fff;
-  border-color: #ff8a65;
-}
-.flatpickr-day.selected.startRange,
-.flatpickr-day.startRange.startRange,
-.flatpickr-day.endRange.startRange {
-  border-radius: 50px 0 0 50px;
-}
-.flatpickr-day.selected.endRange,
-.flatpickr-day.startRange.endRange,
-.flatpickr-day.endRange.endRange {
-  border-radius: 0 50px 50px 0;
-}
-.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),
-.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),
-.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)) {
-  -webkit-box-shadow: -10px 0 0 #ff8a65;
-          box-shadow: -10px 0 0 #ff8a65;
-}
-.flatpickr-day.selected.startRange.endRange,
-.flatpickr-day.startRange.startRange.endRange,
-.flatpickr-day.endRange.startRange.endRange {
-  border-radius: 50px;
-}
-.flatpickr-day.inRange {
-  border-radius: 0;
-  -webkit-box-shadow: -5px 0 0 #e2e2e2, 5px 0 0 #e2e2e2;
-          box-shadow: -5px 0 0 #e2e2e2, 5px 0 0 #e2e2e2;
-}
-.flatpickr-day.flatpickr-disabled,
-.flatpickr-day.flatpickr-disabled:hover,
-.flatpickr-day.prevMonthDay,
-.flatpickr-day.nextMonthDay,
-.flatpickr-day.notAllowed,
-.flatpickr-day.notAllowed.prevMonthDay,
-.flatpickr-day.notAllowed.nextMonthDay {
-  color: rgba(72,72,72,0.3);
-  background: transparent;
-  border-color: transparent;
-  cursor: default;
-}
-.flatpickr-day.flatpickr-disabled,
-.flatpickr-day.flatpickr-disabled:hover {
-  cursor: not-allowed;
-  color: rgba(72,72,72,0.1);
-}
-.flatpickr-day.week.selected {
-  border-radius: 0;
-  -webkit-box-shadow: -5px 0 0 #ff8a65, 5px 0 0 #ff8a65;
-          box-shadow: -5px 0 0 #ff8a65, 5px 0 0 #ff8a65;
-}
-.flatpickr-day.hidden {
-  visibility: hidden;
-}
-.rangeMode .flatpickr-day {
-  margin-top: 1px;
-}
-.flatpickr-weekwrapper {
-  float: left;
-}
-.flatpickr-weekwrapper .flatpickr-weeks {
-  padding: 0 12px;
-  border-left: 1px solid rgba(72,72,72,0.2);
-}
-.flatpickr-weekwrapper .flatpickr-weekday {
-  float: none;
-  width: 100%;
-  line-height: 28px;
-}
-.flatpickr-weekwrapper span.flatpickr-day,
-.flatpickr-weekwrapper span.flatpickr-day:hover {
-  display: block;
-  width: 100%;
-  max-width: none;
-  color: rgba(72,72,72,0.3);
-  background: transparent;
-  cursor: default;
-  border: none;
-}
-.flatpickr-innerContainer {
-  display: block;
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  overflow: hidden;
-  background: #fff;
-  border-bottom: 1px solid rgba(72,72,72,0.2);
-}
-.flatpickr-rContainer {
-  display: inline-block;
-  padding: 0;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-}
-.flatpickr-time {
-  text-align: center;
-  outline: 0;
-  display: block;
-  height: 0;
-  line-height: 40px;
-  max-height: 40px;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  overflow: hidden;
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-  background: #fff;
-  border-radius: 0 0 5px 5px;
-}
-.flatpickr-time:after {
-  content: "";
-  display: table;
-  clear: both;
-}
-.flatpickr-time .numInputWrapper {
-  -webkit-box-flex: 1;
-  -webkit-flex: 1;
-      -ms-flex: 1;
-          flex: 1;
-  width: 40%;
-  height: 40px;
-  float: left;
-}
-.flatpickr-time .numInputWrapper span.arrowUp:after {
-  border-bottom-color: #484848;
-}
-.flatpickr-time .numInputWrapper span.arrowDown:after {
-  border-top-color: #484848;
-}
-.flatpickr-time.hasSeconds .numInputWrapper {
-  width: 26%;
-}
-.flatpickr-time.time24hr .numInputWrapper {
-  width: 49%;
-}
-.flatpickr-time input {
-  background: transparent;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  border: 0;
-  border-radius: 0;
-  text-align: center;
-  margin: 0;
-  padding: 0;
-  height: inherit;
-  line-height: inherit;
-  color: #484848;
-  font-size: 14px;
-  position: relative;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  -webkit-appearance: textfield;
-  -moz-appearance: textfield;
-  appearance: textfield;
-}
-.flatpickr-time input.flatpickr-hour {
-  font-weight: bold;
-}
-.flatpickr-time input.flatpickr-minute,
-.flatpickr-time input.flatpickr-second {
-  font-weight: 400;
-}
-.flatpickr-time input:focus {
-  outline: 0;
-  border: 0;
-}
-.flatpickr-time .flatpickr-time-separator,
-.flatpickr-time .flatpickr-am-pm {
-  height: inherit;
-  float: left;
-  line-height: inherit;
-  color: #484848;
-  font-weight: bold;
-  width: 2%;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  -webkit-align-self: center;
-      -ms-flex-item-align: center;
-          align-self: center;
-}
-.flatpickr-time .flatpickr-am-pm {
-  outline: 0;
-  width: 18%;
-  cursor: pointer;
-  text-align: center;
-  font-weight: 400;
-}
-.flatpickr-time input:hover,
-.flatpickr-time .flatpickr-am-pm:hover,
-.flatpickr-time input:focus,
-.flatpickr-time .flatpickr-am-pm:focus {
-  background: #eaeaea;
-}
-.flatpickr-input[readonly] {
-  cursor: pointer;
-}
-@-webkit-keyframes fpFadeInDown {
-  from {
-    opacity: 0;
-    -webkit-transform: translate3d(0, -20px, 0);
-            transform: translate3d(0, -20px, 0);
-  }
-  to {
-    opacity: 1;
-    -webkit-transform: translate3d(0, 0, 0);
-            transform: translate3d(0, 0, 0);
-  }
-}
-@keyframes fpFadeInDown {
-  from {
-    opacity: 0;
-    -webkit-transform: translate3d(0, -20px, 0);
-            transform: translate3d(0, -20px, 0);
-  }
-  to {
-    opacity: 1;
-    -webkit-transform: translate3d(0, 0, 0);
-            transform: translate3d(0, 0, 0);
-  }
-}
diff --git a/app/static/vendors/flatpickr/themes/material_red.css b/app/static/vendors/flatpickr/themes/material_red.css
deleted file mode 100644 (file)
index 159c6a6..0000000
+++ /dev/null
@@ -1,795 +0,0 @@
-.flatpickr-calendar {
-  background: transparent;
-  opacity: 0;
-  display: none;
-  text-align: center;
-  visibility: hidden;
-  padding: 0;
-  -webkit-animation: none;
-          animation: none;
-  direction: ltr;
-  border: 0;
-  font-size: 14px;
-  line-height: 24px;
-  border-radius: 5px;
-  position: absolute;
-  width: 307.875px;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  -ms-touch-action: manipulation;
-      touch-action: manipulation;
-  -webkit-box-shadow: 0 3px 13px rgba(0,0,0,0.08);
-          box-shadow: 0 3px 13px rgba(0,0,0,0.08);
-}
-.flatpickr-calendar.open,
-.flatpickr-calendar.inline {
-  opacity: 1;
-  max-height: 640px;
-  visibility: visible;
-}
-.flatpickr-calendar.open {
-  display: inline-block;
-  z-index: 99999;
-}
-.flatpickr-calendar.animate.open {
-  -webkit-animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);
-          animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);
-}
-.flatpickr-calendar.inline {
-  display: block;
-  position: relative;
-  top: 2px;
-}
-.flatpickr-calendar.static {
-  position: absolute;
-  top: calc(100% + 2px);
-}
-.flatpickr-calendar.static.open {
-  z-index: 999;
-  display: block;
-}
-.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7) {
-  -webkit-box-shadow: none !important;
-          box-shadow: none !important;
-}
-.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1) {
-  -webkit-box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
-          box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
-}
-.flatpickr-calendar .hasWeeks .dayContainer,
-.flatpickr-calendar .hasTime .dayContainer {
-  border-bottom: 0;
-  border-bottom-right-radius: 0;
-  border-bottom-left-radius: 0;
-}
-.flatpickr-calendar .hasWeeks .dayContainer {
-  border-left: 0;
-}
-.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time {
-  height: 40px;
-  border-top: 1px solid rgba(72,72,72,0.2);
-}
-.flatpickr-calendar.showTimeInput.hasTime .flatpickr-innerContainer {
-  border-bottom: 0;
-}
-.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time {
-  border: 1px solid rgba(72,72,72,0.2);
-}
-.flatpickr-calendar.noCalendar.hasTime .flatpickr-time {
-  height: auto;
-}
-.flatpickr-calendar:before,
-.flatpickr-calendar:after {
-  position: absolute;
-  display: block;
-  pointer-events: none;
-  border: solid transparent;
-  content: '';
-  height: 0;
-  width: 0;
-  left: 22px;
-}
-.flatpickr-calendar.rightMost:before,
-.flatpickr-calendar.rightMost:after {
-  left: auto;
-  right: 22px;
-}
-.flatpickr-calendar:before {
-  border-width: 5px;
-  margin: 0 -5px;
-}
-.flatpickr-calendar:after {
-  border-width: 4px;
-  margin: 0 -4px;
-}
-.flatpickr-calendar.arrowTop:before,
-.flatpickr-calendar.arrowTop:after {
-  bottom: 100%;
-}
-.flatpickr-calendar.arrowTop:before {
-  border-bottom-color: rgba(72,72,72,0.2);
-}
-.flatpickr-calendar.arrowTop:after {
-  border-bottom-color: #ef5350;
-}
-.flatpickr-calendar.arrowBottom:before,
-.flatpickr-calendar.arrowBottom:after {
-  top: 100%;
-}
-.flatpickr-calendar.arrowBottom:before {
-  border-top-color: rgba(72,72,72,0.2);
-}
-.flatpickr-calendar.arrowBottom:after {
-  border-top-color: #ef5350;
-}
-.flatpickr-calendar:focus {
-  outline: 0;
-}
-.flatpickr-wrapper {
-  position: relative;
-  display: inline-block;
-}
-.flatpickr-months {
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-}
-.flatpickr-months .flatpickr-month {
-  border-radius: 5px 5px 0 0;
-  background: #ef5350;
-  color: #fff;
-  fill: #fff;
-  height: 34px;
-  line-height: 1;
-  text-align: center;
-  position: relative;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  overflow: hidden;
-  -webkit-box-flex: 1;
-  -webkit-flex: 1;
-      -ms-flex: 1;
-          flex: 1;
-}
-.flatpickr-months .flatpickr-prev-month,
-.flatpickr-months .flatpickr-next-month {
-  text-decoration: none;
-  cursor: pointer;
-  position: absolute;
-  top: 0;
-  height: 34px;
-  padding: 10px;
-  z-index: 3;
-  color: #fff;
-  fill: #fff;
-}
-.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,
-.flatpickr-months .flatpickr-next-month.flatpickr-disabled {
-  display: none;
-}
-.flatpickr-months .flatpickr-prev-month i,
-.flatpickr-months .flatpickr-next-month i {
-  position: relative;
-}
-.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,
-.flatpickr-months .flatpickr-next-month.flatpickr-prev-month {
-/*
-      /*rtl:begin:ignore*/
-/*
-      */
-  left: 0;
-/*
-      /*rtl:end:ignore*/
-/*
-      */
-}
-/*
-      /*rtl:begin:ignore*/
-/*
-      /*rtl:end:ignore*/
-.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,
-.flatpickr-months .flatpickr-next-month.flatpickr-next-month {
-/*
-      /*rtl:begin:ignore*/
-/*
-      */
-  right: 0;
-/*
-      /*rtl:end:ignore*/
-/*
-      */
-}
-/*
-      /*rtl:begin:ignore*/
-/*
-      /*rtl:end:ignore*/
-.flatpickr-months .flatpickr-prev-month:hover,
-.flatpickr-months .flatpickr-next-month:hover {
-  color: #bbb;
-}
-.flatpickr-months .flatpickr-prev-month:hover svg,
-.flatpickr-months .flatpickr-next-month:hover svg {
-  fill: #f64747;
-}
-.flatpickr-months .flatpickr-prev-month svg,
-.flatpickr-months .flatpickr-next-month svg {
-  width: 14px;
-  height: 14px;
-}
-.flatpickr-months .flatpickr-prev-month svg path,
-.flatpickr-months .flatpickr-next-month svg path {
-  -webkit-transition: fill 0.1s;
-  transition: fill 0.1s;
-  fill: inherit;
-}
-.numInputWrapper {
-  position: relative;
-  height: auto;
-}
-.numInputWrapper input,
-.numInputWrapper span {
-  display: inline-block;
-}
-.numInputWrapper input {
-  width: 100%;
-}
-.numInputWrapper input::-ms-clear {
-  display: none;
-}
-.numInputWrapper input::-webkit-outer-spin-button,
-.numInputWrapper input::-webkit-inner-spin-button {
-  margin: 0;
-  -webkit-appearance: none;
-}
-.numInputWrapper span {
-  position: absolute;
-  right: 0;
-  width: 14px;
-  padding: 0 4px 0 2px;
-  height: 50%;
-  line-height: 50%;
-  opacity: 0;
-  cursor: pointer;
-  border: 1px solid rgba(72,72,72,0.15);
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-}
-.numInputWrapper span:hover {
-  background: rgba(0,0,0,0.1);
-}
-.numInputWrapper span:active {
-  background: rgba(0,0,0,0.2);
-}
-.numInputWrapper span:after {
-  display: block;
-  content: "";
-  position: absolute;
-}
-.numInputWrapper span.arrowUp {
-  top: 0;
-  border-bottom: 0;
-}
-.numInputWrapper span.arrowUp:after {
-  border-left: 4px solid transparent;
-  border-right: 4px solid transparent;
-  border-bottom: 4px solid rgba(72,72,72,0.6);
-  top: 26%;
-}
-.numInputWrapper span.arrowDown {
-  top: 50%;
-}
-.numInputWrapper span.arrowDown:after {
-  border-left: 4px solid transparent;
-  border-right: 4px solid transparent;
-  border-top: 4px solid rgba(72,72,72,0.6);
-  top: 40%;
-}
-.numInputWrapper span svg {
-  width: inherit;
-  height: auto;
-}
-.numInputWrapper span svg path {
-  fill: rgba(255,255,255,0.5);
-}
-.numInputWrapper:hover {
-  background: rgba(0,0,0,0.05);
-}
-.numInputWrapper:hover span {
-  opacity: 1;
-}
-.flatpickr-current-month {
-  font-size: 135%;
-  line-height: inherit;
-  font-weight: 300;
-  color: inherit;
-  position: absolute;
-  width: 75%;
-  left: 12.5%;
-  padding: 7.48px 0 0 0;
-  line-height: 1;
-  height: 34px;
-  display: inline-block;
-  text-align: center;
-  -webkit-transform: translate3d(0px, 0px, 0px);
-          transform: translate3d(0px, 0px, 0px);
-}
-.flatpickr-current-month span.cur-month {
-  font-family: inherit;
-  font-weight: 700;
-  color: inherit;
-  display: inline-block;
-  margin-left: 0.5ch;
-  padding: 0;
-}
-.flatpickr-current-month span.cur-month:hover {
-  background: rgba(0,0,0,0.05);
-}
-.flatpickr-current-month .numInputWrapper {
-  width: 6ch;
-  width: 7ch\0;
-  display: inline-block;
-}
-.flatpickr-current-month .numInputWrapper span.arrowUp:after {
-  border-bottom-color: #fff;
-}
-.flatpickr-current-month .numInputWrapper span.arrowDown:after {
-  border-top-color: #fff;
-}
-.flatpickr-current-month input.cur-year {
-  background: transparent;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  color: inherit;
-  cursor: text;
-  padding: 0 0 0 0.5ch;
-  margin: 0;
-  display: inline-block;
-  font-size: inherit;
-  font-family: inherit;
-  font-weight: 300;
-  line-height: inherit;
-  height: auto;
-  border: 0;
-  border-radius: 0;
-  vertical-align: initial;
-  -webkit-appearance: textfield;
-  -moz-appearance: textfield;
-  appearance: textfield;
-}
-.flatpickr-current-month input.cur-year:focus {
-  outline: 0;
-}
-.flatpickr-current-month input.cur-year[disabled],
-.flatpickr-current-month input.cur-year[disabled]:hover {
-  font-size: 100%;
-  color: rgba(255,255,255,0.5);
-  background: transparent;
-  pointer-events: none;
-}
-.flatpickr-current-month .flatpickr-monthDropdown-months {
-  appearance: menulist;
-  background: #ef5350;
-  border: none;
-  border-radius: 0;
-  box-sizing: border-box;
-  color: inherit;
-  cursor: pointer;
-  font-size: inherit;
-  font-family: inherit;
-  font-weight: 300;
-  height: auto;
-  line-height: inherit;
-  margin: -1px 0 0 0;
-  outline: none;
-  padding: 0 0 0 0.5ch;
-  position: relative;
-  vertical-align: initial;
-  -webkit-box-sizing: border-box;
-  -webkit-appearance: menulist;
-  -moz-appearance: menulist;
-  width: auto;
-}
-.flatpickr-current-month .flatpickr-monthDropdown-months:focus,
-.flatpickr-current-month .flatpickr-monthDropdown-months:active {
-  outline: none;
-}
-.flatpickr-current-month .flatpickr-monthDropdown-months:hover {
-  background: rgba(0,0,0,0.05);
-}
-.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month {
-  background-color: #ef5350;
-  outline: none;
-  padding: 0;
-}
-.flatpickr-weekdays {
-  background: #ef5350;
-  text-align: center;
-  overflow: hidden;
-  width: 100%;
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-  -webkit-box-align: center;
-  -webkit-align-items: center;
-      -ms-flex-align: center;
-          align-items: center;
-  height: 28px;
-}
-.flatpickr-weekdays .flatpickr-weekdaycontainer {
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-  -webkit-box-flex: 1;
-  -webkit-flex: 1;
-      -ms-flex: 1;
-          flex: 1;
-}
-span.flatpickr-weekday {
-  cursor: default;
-  font-size: 90%;
-  background: #ef5350;
-  color: rgba(0,0,0,0.54);
-  line-height: 1;
-  margin: 0;
-  text-align: center;
-  display: block;
-  -webkit-box-flex: 1;
-  -webkit-flex: 1;
-      -ms-flex: 1;
-          flex: 1;
-  font-weight: bolder;
-}
-.dayContainer,
-.flatpickr-weeks {
-  padding: 1px 0 0 0;
-}
-.flatpickr-days {
-  position: relative;
-  overflow: hidden;
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-  -webkit-box-align: start;
-  -webkit-align-items: flex-start;
-      -ms-flex-align: start;
-          align-items: flex-start;
-  width: 307.875px;
-  border-left: 1px solid rgba(72,72,72,0.2);
-  border-right: 1px solid rgba(72,72,72,0.2);
-}
-.flatpickr-days:focus {
-  outline: 0;
-}
-.dayContainer {
-  padding: 0;
-  outline: 0;
-  text-align: left;
-  width: 307.875px;
-  min-width: 307.875px;
-  max-width: 307.875px;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  display: inline-block;
-  display: -ms-flexbox;
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: flex;
-  -webkit-flex-wrap: wrap;
-          flex-wrap: wrap;
-  -ms-flex-wrap: wrap;
-  -ms-flex-pack: justify;
-  -webkit-justify-content: space-around;
-          justify-content: space-around;
-  -webkit-transform: translate3d(0px, 0px, 0px);
-          transform: translate3d(0px, 0px, 0px);
-  opacity: 1;
-}
-.dayContainer + .dayContainer {
-  -webkit-box-shadow: -1px 0 0 rgba(72,72,72,0.2);
-          box-shadow: -1px 0 0 rgba(72,72,72,0.2);
-}
-.flatpickr-day {
-  background: none;
-  border: 1px solid transparent;
-  border-radius: 150px;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  color: #484848;
-  cursor: pointer;
-  font-weight: 400;
-  width: 14.2857143%;
-  -webkit-flex-basis: 14.2857143%;
-      -ms-flex-preferred-size: 14.2857143%;
-          flex-basis: 14.2857143%;
-  max-width: 39px;
-  height: 39px;
-  line-height: 39px;
-  margin: 0;
-  display: inline-block;
-  position: relative;
-  -webkit-box-pack: center;
-  -webkit-justify-content: center;
-      -ms-flex-pack: center;
-          justify-content: center;
-  text-align: center;
-}
-.flatpickr-day.inRange,
-.flatpickr-day.prevMonthDay.inRange,
-.flatpickr-day.nextMonthDay.inRange,
-.flatpickr-day.today.inRange,
-.flatpickr-day.prevMonthDay.today.inRange,
-.flatpickr-day.nextMonthDay.today.inRange,
-.flatpickr-day:hover,
-.flatpickr-day.prevMonthDay:hover,
-.flatpickr-day.nextMonthDay:hover,
-.flatpickr-day:focus,
-.flatpickr-day.prevMonthDay:focus,
-.flatpickr-day.nextMonthDay:focus {
-  cursor: pointer;
-  outline: 0;
-  background: #e2e2e2;
-  border-color: #e2e2e2;
-}
-.flatpickr-day.today {
-  border-color: #bbb;
-}
-.flatpickr-day.today:hover,
-.flatpickr-day.today:focus {
-  border-color: #bbb;
-  background: #bbb;
-  color: #fff;
-}
-.flatpickr-day.selected,
-.flatpickr-day.startRange,
-.flatpickr-day.endRange,
-.flatpickr-day.selected.inRange,
-.flatpickr-day.startRange.inRange,
-.flatpickr-day.endRange.inRange,
-.flatpickr-day.selected:focus,
-.flatpickr-day.startRange:focus,
-.flatpickr-day.endRange:focus,
-.flatpickr-day.selected:hover,
-.flatpickr-day.startRange:hover,
-.flatpickr-day.endRange:hover,
-.flatpickr-day.selected.prevMonthDay,
-.flatpickr-day.startRange.prevMonthDay,
-.flatpickr-day.endRange.prevMonthDay,
-.flatpickr-day.selected.nextMonthDay,
-.flatpickr-day.startRange.nextMonthDay,
-.flatpickr-day.endRange.nextMonthDay {
-  background: #ef5350;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  color: #fff;
-  border-color: #ef5350;
-}
-.flatpickr-day.selected.startRange,
-.flatpickr-day.startRange.startRange,
-.flatpickr-day.endRange.startRange {
-  border-radius: 50px 0 0 50px;
-}
-.flatpickr-day.selected.endRange,
-.flatpickr-day.startRange.endRange,
-.flatpickr-day.endRange.endRange {
-  border-radius: 0 50px 50px 0;
-}
-.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),
-.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),
-.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)) {
-  -webkit-box-shadow: -10px 0 0 #ef5350;
-          box-shadow: -10px 0 0 #ef5350;
-}
-.flatpickr-day.selected.startRange.endRange,
-.flatpickr-day.startRange.startRange.endRange,
-.flatpickr-day.endRange.startRange.endRange {
-  border-radius: 50px;
-}
-.flatpickr-day.inRange {
-  border-radius: 0;
-  -webkit-box-shadow: -5px 0 0 #e2e2e2, 5px 0 0 #e2e2e2;
-          box-shadow: -5px 0 0 #e2e2e2, 5px 0 0 #e2e2e2;
-}
-.flatpickr-day.flatpickr-disabled,
-.flatpickr-day.flatpickr-disabled:hover,
-.flatpickr-day.prevMonthDay,
-.flatpickr-day.nextMonthDay,
-.flatpickr-day.notAllowed,
-.flatpickr-day.notAllowed.prevMonthDay,
-.flatpickr-day.notAllowed.nextMonthDay {
-  color: rgba(72,72,72,0.3);
-  background: transparent;
-  border-color: transparent;
-  cursor: default;
-}
-.flatpickr-day.flatpickr-disabled,
-.flatpickr-day.flatpickr-disabled:hover {
-  cursor: not-allowed;
-  color: rgba(72,72,72,0.1);
-}
-.flatpickr-day.week.selected {
-  border-radius: 0;
-  -webkit-box-shadow: -5px 0 0 #ef5350, 5px 0 0 #ef5350;
-          box-shadow: -5px 0 0 #ef5350, 5px 0 0 #ef5350;
-}
-.flatpickr-day.hidden {
-  visibility: hidden;
-}
-.rangeMode .flatpickr-day {
-  margin-top: 1px;
-}
-.flatpickr-weekwrapper {
-  float: left;
-}
-.flatpickr-weekwrapper .flatpickr-weeks {
-  padding: 0 12px;
-  border-left: 1px solid rgba(72,72,72,0.2);
-}
-.flatpickr-weekwrapper .flatpickr-weekday {
-  float: none;
-  width: 100%;
-  line-height: 28px;
-}
-.flatpickr-weekwrapper span.flatpickr-day,
-.flatpickr-weekwrapper span.flatpickr-day:hover {
-  display: block;
-  width: 100%;
-  max-width: none;
-  color: rgba(72,72,72,0.3);
-  background: transparent;
-  cursor: default;
-  border: none;
-}
-.flatpickr-innerContainer {
-  display: block;
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  overflow: hidden;
-  background: #fff;
-  border-bottom: 1px solid rgba(72,72,72,0.2);
-}
-.flatpickr-rContainer {
-  display: inline-block;
-  padding: 0;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-}
-.flatpickr-time {
-  text-align: center;
-  outline: 0;
-  display: block;
-  height: 0;
-  line-height: 40px;
-  max-height: 40px;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  overflow: hidden;
-  display: -webkit-box;
-  display: -webkit-flex;
-  display: -ms-flexbox;
-  display: flex;
-  background: #fff;
-  border-radius: 0 0 5px 5px;
-}
-.flatpickr-time:after {
-  content: "";
-  display: table;
-  clear: both;
-}
-.flatpickr-time .numInputWrapper {
-  -webkit-box-flex: 1;
-  -webkit-flex: 1;
-      -ms-flex: 1;
-          flex: 1;
-  width: 40%;
-  height: 40px;
-  float: left;
-}
-.flatpickr-time .numInputWrapper span.arrowUp:after {
-  border-bottom-color: #484848;
-}
-.flatpickr-time .numInputWrapper span.arrowDown:after {
-  border-top-color: #484848;
-}
-.flatpickr-time.hasSeconds .numInputWrapper {
-  width: 26%;
-}
-.flatpickr-time.time24hr .numInputWrapper {
-  width: 49%;
-}
-.flatpickr-time input {
-  background: transparent;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  border: 0;
-  border-radius: 0;
-  text-align: center;
-  margin: 0;
-  padding: 0;
-  height: inherit;
-  line-height: inherit;
-  color: #484848;
-  font-size: 14px;
-  position: relative;
-  -webkit-box-sizing: border-box;
-          box-sizing: border-box;
-  -webkit-appearance: textfield;
-  -moz-appearance: textfield;
-  appearance: textfield;
-}
-.flatpickr-time input.flatpickr-hour {
-  font-weight: bold;
-}
-.flatpickr-time input.flatpickr-minute,
-.flatpickr-time input.flatpickr-second {
-  font-weight: 400;
-}
-.flatpickr-time input:focus {
-  outline: 0;
-  border: 0;
-}
-.flatpickr-time .flatpickr-time-separator,
-.flatpickr-time .flatpickr-am-pm {
-  height: inherit;
-  float: left;
-  line-height: inherit;
-  color: #484848;
-  font-weight: bold;
-  width: 2%;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  -webkit-align-self: center;
-      -ms-flex-item-align: center;
-          align-self: center;
-}
-.flatpickr-time .flatpickr-am-pm {
-  outline: 0;
-  width: 18%;
-  cursor: pointer;
-  text-align: center;
-  font-weight: 400;
-}
-.flatpickr-time input:hover,
-.flatpickr-time .flatpickr-am-pm:hover,
-.flatpickr-time input:focus,
-.flatpickr-time .flatpickr-am-pm:focus {
-  background: #eaeaea;
-}
-.flatpickr-input[readonly] {
-  cursor: pointer;
-}
-@-webkit-keyframes fpFadeInDown {
-  from {
-    opacity: 0;
-    -webkit-transform: translate3d(0, -20px, 0);
-            transform: translate3d(0, -20px, 0);
-  }
-  to {
-    opacity: 1;
-    -webkit-transform: translate3d(0, 0, 0);
-            transform: translate3d(0, 0, 0);
-  }
-}
-@keyframes fpFadeInDown {
-  from {
-    opacity: 0;
-    -webkit-transform: translate3d(0, -20px, 0);
-            transform: translate3d(0, -20px, 0);
-  }
-  to {
-    opacity: 1;
-    -webkit-transform: translate3d(0, 0, 0);
-            transform: translate3d(0, 0, 0);
-  }
-}
diff --git a/app/static/vendors/flatpickr/types/globals.d.ts b/app/static/vendors/flatpickr/types/globals.d.ts
deleted file mode 100644 (file)
index a36e45b..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-import { Options } from "./options";
-import { Instance, FlatpickrFn } from "./instance";
-declare global {
-    interface HTMLElement {
-        flatpickr: (config?: Options) => Instance;
-        _flatpickr?: Instance;
-    }
-    interface NodeList {
-        flatpickr: (config?: Options) => Instance | Instance[];
-    }
-    interface HTMLCollection {
-        flatpickr: (config?: Options) => Instance | Instance[];
-    }
-    interface Window {
-        flatpickr: FlatpickrFn;
-    }
-    interface Date {
-        fp_incr: (n: number) => Date;
-    }
-}
diff --git a/app/static/vendors/flatpickr/types/instance.d.ts b/app/static/vendors/flatpickr/types/instance.d.ts
deleted file mode 100644 (file)
index 2a93500..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-import { DateOption, Options, ParsedOptions } from "./options";
-import { Locale, CustomLocale, key as LocaleKey } from "./locale";
-import { RevFormat, Formats, TokenRegex } from "../utils/formatting";
-export interface Elements {
-    element: HTMLElement;
-    input: HTMLInputElement;
-    altInput?: HTMLInputElement;
-    _input: HTMLInputElement;
-    mobileInput?: HTMLInputElement;
-    mobileFormatStr?: string;
-    selectedDateElem?: DayElement;
-    todayDateElem?: DayElement;
-    _positionElement: HTMLElement;
-    weekdayContainer: HTMLDivElement;
-    calendarContainer: HTMLDivElement;
-    innerContainer?: HTMLDivElement;
-    rContainer?: HTMLDivElement;
-    daysContainer?: HTMLDivElement;
-    days: HTMLDivElement;
-    weekWrapper?: HTMLDivElement;
-    weekNumbers?: HTMLDivElement;
-    monthNav: HTMLDivElement;
-    monthsDropdownContainer: HTMLSelectElement;
-    yearElements: HTMLInputElement[];
-    monthElements: HTMLSpanElement[];
-    currentYearElement: HTMLInputElement;
-    currentMonthElement: HTMLSpanElement;
-    _hidePrevMonthArrow: boolean;
-    _hideNextMonthArrow: boolean;
-    prevMonthNav: HTMLElement;
-    nextMonthNav: HTMLElement;
-    timeContainer?: HTMLDivElement;
-    hourElement?: HTMLInputElement;
-    minuteElement?: HTMLInputElement;
-    secondElement?: HTMLInputElement;
-    amPM?: HTMLSpanElement;
-    pluginElements: Node[];
-}
-export interface Formatting {
-    revFormat: RevFormat;
-    formats: Formats;
-    tokenRegex: TokenRegex;
-}
-export declare type Instance = Elements & Formatting & {
-    minRangeDate?: Date;
-    maxRangeDate?: Date;
-    now: Date;
-    latestSelectedDateObj?: Date;
-    _selectedDateObj?: Date;
-    selectedDates: Date[];
-    _initialDate: Date;
-    config: ParsedOptions;
-    loadedPlugins: string[];
-    l10n: Locale;
-    currentYear: number;
-    currentMonth: number;
-    isOpen: boolean;
-    isMobile: boolean;
-    minDateHasTime: boolean;
-    maxDateHasTime: boolean;
-    showTimeInput: boolean;
-    _showTimeInput: boolean;
-    changeMonth: (value: number, isOffset?: boolean, fromKeyboard?: boolean) => void;
-    changeYear: (year: number) => void;
-    clear: (emitChangeEvent?: boolean, toInitial?: boolean) => void;
-    close: () => void;
-    destroy: () => void;
-    isEnabled: (date: DateOption, timeless?: boolean) => boolean;
-    jumpToDate: (date?: DateOption, triggerChange?: boolean) => void;
-    open: (e?: FocusEvent | MouseEvent, positionElement?: HTMLElement) => void;
-    redraw: () => void;
-    set: (option: keyof Options | {
-        [k in keyof Options]?: Options[k];
-    }, value?: any) => void;
-    setDate: (date: DateOption | DateOption[], triggerChange?: boolean, format?: string) => void;
-    toggle: () => void;
-    pad: (num: string | number) => string;
-    parseDate: (date: Date | string | number, givenFormat?: string, timeless?: boolean) => Date | undefined;
-    formatDate: (dateObj: Date, frmt: string) => string;
-    _handlers: {
-        event: string;
-        element: Element;
-        handler: (e?: Event) => void;
-        options?: {
-            capture?: boolean;
-        };
-    }[];
-    _bind: <E extends Element>(element: E | E[], event: string | string[], handler: (e?: any) => void) => void;
-    _createElement: <E extends HTMLElement>(tag: keyof HTMLElementTagNameMap, className: string, content?: string) => E;
-    _setHoursFromDate: (date: Date) => void;
-    _debouncedChange: () => void;
-    __hideNextMonthArrow: boolean;
-    __hidePrevMonthArrow: boolean;
-    _positionCalendar: (customPositionElement?: HTMLElement) => void;
-    utils: {
-        getDaysInMonth: (month?: number, year?: number) => number;
-    };
-};
-export interface FlatpickrFn {
-    (selector: Node, config?: Options): Instance;
-    (selector: ArrayLike<Node>, config?: Options): Instance[];
-    (selector: string, config?: Options): Instance | Instance[];
-    defaultConfig: Partial<ParsedOptions>;
-    l10ns: {
-        [k in LocaleKey]?: CustomLocale;
-    } & {
-        default: Locale;
-    };
-    localize: (l10n: CustomLocale) => void;
-    setDefaults: (config: Options) => void;
-    parseDate: (date: DateOption, format?: string, timeless?: boolean) => Date | undefined;
-    formatDate: (date: Date, format: string) => string;
-    compareDates: (date1: Date, date2: Date, timeless?: boolean) => number;
-}
-export declare type DayElement = HTMLSpanElement & {
-    dateObj: Date;
-    $i: number;
-};
diff --git a/app/static/vendors/flatpickr/types/locale.d.ts b/app/static/vendors/flatpickr/types/locale.d.ts
deleted file mode 100644 (file)
index 75a6606..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-export declare type Locale = {
-    weekdays: {
-        shorthand: [string, string, string, string, string, string, string];
-        longhand: [string, string, string, string, string, string, string];
-    };
-    months: {
-        shorthand: [string, string, string, string, string, string, string, string, string, string, string, string];
-        longhand: [string, string, string, string, string, string, string, string, string, string, string, string];
-    };
-    daysInMonth: [number, number, number, number, number, number, number, number, number, number, number, number];
-    firstDayOfWeek: number;
-    ordinal: (nth: number) => string;
-    rangeSeparator: string;
-    weekAbbreviation: string;
-    scrollTitle: string;
-    toggleTitle: string;
-    amPM: [string, string];
-    yearAriaLabel: string;
-    hourAriaLabel: string;
-    minuteAriaLabel: string;
-    time_24hr: boolean;
-};
-export declare type CustomLocale = {
-    ordinal?: Locale["ordinal"];
-    daysInMonth?: Locale["daysInMonth"];
-    firstDayOfWeek?: Locale["firstDayOfWeek"];
-    rangeSeparator?: Locale["rangeSeparator"];
-    weekAbbreviation?: Locale["weekAbbreviation"];
-    toggleTitle?: Locale["toggleTitle"];
-    scrollTitle?: Locale["scrollTitle"];
-    yearAriaLabel?: string;
-    hourAriaLabel?: string;
-    minuteAriaLabel?: string;
-    amPM?: Locale["amPM"];
-    time_24hr?: Locale["time_24hr"];
-    weekdays: {
-        shorthand: [string, string, string, string, string, string, string];
-        longhand: [string, string, string, string, string, string, string];
-    };
-    months: {
-        shorthand: [string, string, string, string, string, string, string, string, string, string, string, string];
-        longhand: [string, string, string, string, string, string, string, string, string, string, string, string];
-    };
-};
-export declare type key = "ar" | "at" | "az" | "be" | "bg" | "bn" | "bs" | "cat" | "cs" | "cy" | "da" | "de" | "default" | "en" | "eo" | "es" | "et" | "fa" | "fi" | "fo" | "fr" | "gr" | "he" | "hi" | "hr" | "hu" | "id" | "is" | "it" | "ja" | "ka" | "ko" | "km" | "kz" | "lt" | "lv" | "mk" | "mn" | "ms" | "my" | "nl" | "no" | "pa" | "pl" | "pt" | "ro" | "ru" | "si" | "sk" | "sl" | "sq" | "sr" | "sv" | "th" | "tr" | "uk" | "vn" | "zh" | "zh_tw" | "lu";
diff --git a/app/static/vendors/flatpickr/types/options.d.ts b/app/static/vendors/flatpickr/types/options.d.ts
deleted file mode 100644 (file)
index 45f52dc..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-import { Instance } from "./instance";
-import { CustomLocale, key as LocaleKey, Locale } from "./locale";
-export declare type DateOption = Date | string | number;
-export declare type DateRangeLimit<D = DateOption> = {
-    from: D;
-    to: D;
-};
-export declare type DateLimit<D = DateOption> = D | DateRangeLimit<D> | ((date: Date) => boolean);
-export declare type Hook = (dates: Date[], currentDateString: string, self: Instance, data?: any) => void;
-export declare type HookKey = "onChange" | "onClose" | "onDayCreate" | "onDestroy" | "onKeyDown" | "onMonthChange" | "onOpen" | "onParseConfig" | "onReady" | "onValueUpdate" | "onYearChange" | "onPreCalendarPosition";
-export declare const HOOKS: HookKey[];
-export declare type Plugin<E = {}> = (fp: Instance & E) => Options;
-export interface BaseOptions {
-    allowInput: boolean;
-    altFormat: string;
-    altInput: boolean;
-    altInputClass: string;
-    animate: boolean;
-    appendTo: HTMLElement;
-    ariaDateFormat: string;
-    clickOpens: boolean;
-    closeOnSelect: boolean;
-    conjunction: string;
-    dateFormat: string;
-    defaultDate: DateOption | DateOption[];
-    defaultHour: number;
-    defaultMinute: number;
-    defaultSeconds: number;
-    disable: DateLimit<DateOption>[];
-    disableMobile: boolean;
-    enable: DateLimit<DateOption>[];
-    enableSeconds: boolean;
-    enableTime: boolean;
-    errorHandler: (e: Error) => void;
-    formatDate: (date: Date, format: string, locale: Locale) => string;
-    getWeek: (date: Date) => string | number;
-    hourIncrement: number;
-    ignoredFocusElements: HTMLElement[];
-    inline: boolean;
-    locale: LocaleKey | CustomLocale;
-    maxDate: DateOption;
-    maxTime: DateOption;
-    minDate: DateOption;
-    minTime: DateOption;
-    minuteIncrement: number;
-    mode: "single" | "multiple" | "range" | "time";
-    monthSelectorType: "dropdown" | "static";
-    nextArrow: string;
-    noCalendar: boolean;
-    now?: DateOption;
-    onChange: Hook | Hook[];
-    onClose: Hook | Hook[];
-    onDayCreate: Hook | Hook[];
-    onDestroy: Hook | Hook[];
-    onKeyDown: Hook | Hook[];
-    onMonthChange: Hook | Hook[];
-    onOpen: Hook | Hook[];
-    onParseConfig: Hook | Hook[];
-    onReady: Hook | Hook[];
-    onValueUpdate: Hook | Hook[];
-    onYearChange: Hook | Hook[];
-    onPreCalendarPosition: Hook | Hook[];
-    parseDate: (date: string, format: string) => Date;
-    plugins: Plugin[];
-    position: "auto" | "above" | "below";
-    positionElement: Element;
-    prevArrow: string;
-    shorthandCurrentMonth: boolean;
-    static: boolean;
-    showMonths?: number;
-    time_24hr: boolean;
-    weekNumbers: boolean;
-    wrap: boolean;
-}
-export declare type Options = Partial<BaseOptions>;
-export interface ParsedOptions {
-    _disable: DateLimit<Date>[];
-    _enable: DateLimit<Date>[];
-    _maxDate?: Date;
-    _maxTime?: Date;
-    _minDate?: Date;
-    _minTime?: Date;
-    allowInput: boolean;
-    altFormat: string;
-    altInput: boolean;
-    altInputClass: string;
-    animate: boolean;
-    appendTo?: HTMLElement;
-    ariaDateFormat: string;
-    clickOpens: boolean;
-    closeOnSelect: boolean;
-    conjunction: string;
-    dateFormat: string;
-    defaultDate?: Date | Date[];
-    defaultHour: number;
-    defaultMinute: number;
-    defaultSeconds: number;
-    disable: DateLimit<Date>[];
-    disableMobile: boolean;
-    enable: DateLimit<Date>[];
-    enableSeconds: boolean;
-    enableTime: boolean;
-    errorHandler: (err: Error) => void;
-    formatDate?: Options["formatDate"];
-    getWeek: (date: Date) => string | number;
-    hourIncrement: number;
-    ignoredFocusElements: HTMLElement[];
-    inline: boolean;
-    locale: LocaleKey | CustomLocale;
-    maxDate?: Date;
-    maxTime?: Date;
-    minDate?: Date;
-    minTime?: Date;
-    minuteIncrement: number;
-    mode: BaseOptions["mode"];
-    monthSelectorType: string;
-    nextArrow: string;
-    noCalendar: boolean;
-    now: Date;
-    onChange: Hook[];
-    onClose: Hook[];
-    onDayCreate: Hook[];
-    onDestroy: Hook[];
-    onKeyDown: Hook[];
-    onMonthChange: Hook[];
-    onOpen: Hook[];
-    onParseConfig: Hook[];
-    onReady: Hook[];
-    onValueUpdate: Hook[];
-    onYearChange: Hook[];
-    onPreCalendarPosition: Hook[];
-    parseDate?: BaseOptions["parseDate"];
-    plugins: Plugin[];
-    position: BaseOptions["position"];
-    positionElement?: HTMLElement;
-    prevArrow: string;
-    shorthandCurrentMonth: boolean;
-    showMonths: number;
-    static: boolean;
-    time_24hr: boolean;
-    weekNumbers: boolean;
-    wrap: boolean;
-}
-export declare const defaults: ParsedOptions;
diff --git a/app/static/vendors/flatpickr/typings.d.ts b/app/static/vendors/flatpickr/typings.d.ts
deleted file mode 100644 (file)
index fb32d88..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-import { FlatpickrFn } from "./types/instance";
-import { Instance as _Instance } from "./types/instance";
-import {
-  Options as _Options,
-  Hook as _Hook,
-  HookKey as _HookKey,
-  ParsedOptions as _ParsedOptions,
-  DateLimit as _DateLimit,
-  DateOption as _DateOption,
-  DateRangeLimit as _DateRangeLimit,
-  Plugin as _Plugin,
-} from "./types/options";
-
-import {
-  Locale as _Locale,
-  CustomLocale as _CustomLocale,
-} from "./types/locale";
-
-declare var flatpickr: FlatpickrFn;
-
-declare namespace flatpickr {
-  export type Instance = _Instance;
-  export type CustomLocale = _CustomLocale;
-  export type Locale = _Locale;
-
-  export namespace Options {
-    export type Options = _Options;
-    export type Hook = _Hook;
-    export type HookKey = _HookKey;
-    export type ParsedOptions = _ParsedOptions;
-    export type DateLimit = _DateLimit;
-    export type DateOption = _DateOption;
-    export type DateRangeLimit = _DateRangeLimit;
-    export type Plugin = _Plugin;
-  }
-}
-
-export default flatpickr;
diff --git a/app/static/vendors/flatpickr/utils/dates.d.ts b/app/static/vendors/flatpickr/utils/dates.d.ts
deleted file mode 100644 (file)
index 962ff6c..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-import { Locale } from "../types/locale";
-import { ParsedOptions } from "../types/options";
-export interface FormatterArgs {
-    config?: ParsedOptions;
-    l10n?: Locale;
-}
-export declare const createDateFormatter: ({ config, l10n, }: FormatterArgs) => (dateObj: Date, frmt: string, overrideLocale?: Locale | undefined) => string;
-export declare const createDateParser: ({ config, l10n }: {
-    config?: ParsedOptions | undefined;
-    l10n?: Locale | undefined;
-}) => (date: string | number | Date, givenFormat?: string | undefined, timeless?: boolean | undefined, customLocale?: Locale | undefined) => Date | undefined;
-export declare function compareDates(date1: Date, date2: Date, timeless?: boolean): number;
-export declare function compareTimes(date1: Date, date2: Date): number;
-export declare const isBetween: (ts: number, ts1: number, ts2: number) => boolean;
-export declare const duration: {
-    DAY: number;
-};
diff --git a/app/static/vendors/flatpickr/utils/dom.d.ts b/app/static/vendors/flatpickr/utils/dom.d.ts
deleted file mode 100644 (file)
index b15f309..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-export declare function toggleClass(elem: HTMLElement, className: string, bool: boolean): void;
-export declare function createElement<T extends HTMLElement>(tag: keyof HTMLElementTagNameMap, className: string, content?: string): T;
-export declare function clearNode(node: HTMLElement): void;
-export declare function findParent(node: Element, condition: (n: Element) => boolean): Element | undefined;
-export declare function createNumberInput(inputClassName: string, opts?: Record<string, any>): HTMLDivElement;
-export declare function getEventTarget(event: Event): EventTarget | null;
diff --git a/app/static/vendors/flatpickr/utils/formatting.d.ts b/app/static/vendors/flatpickr/utils/formatting.d.ts
deleted file mode 100644 (file)
index b430324..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-import { Locale } from "../types/locale";
-import { ParsedOptions } from "../types/options";
-export declare type token = "D" | "F" | "G" | "H" | "J" | "K" | "M" | "S" | "U" | "W" | "Y" | "Z" | "d" | "h" | "i" | "j" | "l" | "m" | "n" | "s" | "u" | "w" | "y";
-export declare const monthToStr: (monthNumber: number, shorthand: boolean, locale: Locale) => string;
-export declare type RevFormatFn = (date: Date, data: string, locale: Locale) => Date | void | undefined;
-export declare type RevFormat = Record<string, RevFormatFn>;
-export declare const revFormat: RevFormat;
-export declare type TokenRegex = {
-    [k in token]: string;
-};
-export declare const tokenRegex: TokenRegex;
-export declare type Formats = Record<token, (date: Date, locale: Locale, options: ParsedOptions) => string | number>;
-export declare const formats: Formats;
diff --git a/app/static/vendors/flatpickr/utils/index.d.ts b/app/static/vendors/flatpickr/utils/index.d.ts
deleted file mode 100644 (file)
index 91adb42..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-export declare const pad: (number: string | number) => string;
-export declare const int: (bool: boolean) => 1 | 0;
-export declare function debounce<F extends Function>(func: F, wait: number, immediate?: boolean): (this: Function) => void;
-export declare const arrayify: <T>(obj: T | T[]) => T[];
-export declare type IncrementEvent = MouseEvent & {
-    delta: number;
-    type: "increment";
-};
diff --git a/app/static/vendors/flatpickr/utils/polyfills.d.ts b/app/static/vendors/flatpickr/utils/polyfills.d.ts
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/app/static/vendors/moment/moment-with-locales.min.js b/app/static/vendors/moment/moment-with-locales.min.js
deleted file mode 100644 (file)
index 02cd72b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a():"function"==typeof define&&define.amd?define(a):e.moment=a()}(this,function(){"use strict";var e,n;function l(){return e.apply(null,arguments)}function _(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function i(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function o(e){return void 0===e}function m(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function u(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function M(e,a){var t,s=[];for(t=0;t<e.length;++t)s.push(a(e[t],t));return s}function h(e,a){return Object.prototype.hasOwnProperty.call(e,a)}function L(e,a){for(var t in a)h(a,t)&&(e[t]=a[t]);return h(a,"toString")&&(e.toString=a.toString),h(a,"valueOf")&&(e.valueOf=a.valueOf),e}function c(e,a,t,s){return va(e,a,t,s,!0).utc()}function Y(e){return null==e._pf&&(e._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}),e._pf}function y(e){if(null==e._isValid){var a=Y(e),t=n.call(a.parsedDateParts,function(e){return null!=e}),s=!isNaN(e._d.getTime())&&a.overflow<0&&!a.empty&&!a.invalidMonth&&!a.invalidWeekday&&!a.weekdayMismatch&&!a.nullInput&&!a.invalidFormat&&!a.userInvalidated&&(!a.meridiem||a.meridiem&&t);if(e._strict&&(s=s&&0===a.charsLeftOver&&0===a.unusedTokens.length&&void 0===a.bigHour),null!=Object.isFrozen&&Object.isFrozen(e))return s;e._isValid=s}return e._isValid}function f(e){var a=c(NaN);return null!=e?L(Y(a),e):Y(a).userInvalidated=!0,a}n=Array.prototype.some?Array.prototype.some:function(e){for(var a=Object(this),t=a.length>>>0,s=0;s<t;s++)if(s in a&&e.call(this,a[s],s,a))return!0;return!1};var d=l.momentProperties=[];function k(e,a){var t,s,n;if(o(a._isAMomentObject)||(e._isAMomentObject=a._isAMomentObject),o(a._i)||(e._i=a._i),o(a._f)||(e._f=a._f),o(a._l)||(e._l=a._l),o(a._strict)||(e._strict=a._strict),o(a._tzm)||(e._tzm=a._tzm),o(a._isUTC)||(e._isUTC=a._isUTC),o(a._offset)||(e._offset=a._offset),o(a._pf)||(e._pf=Y(a)),o(a._locale)||(e._locale=a._locale),0<d.length)for(t=0;t<d.length;t++)o(n=a[s=d[t]])||(e[s]=n);return e}var a=!1;function p(e){k(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===a&&(a=!0,l.updateOffset(this),a=!1)}function D(e){return e instanceof p||null!=e&&null!=e._isAMomentObject}function T(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function g(e){var a=+e,t=0;return 0!==a&&isFinite(a)&&(t=T(a)),t}function r(e,a,t){var s,n=Math.min(e.length,a.length),d=Math.abs(e.length-a.length),r=0;for(s=0;s<n;s++)(t&&e[s]!==a[s]||!t&&g(e[s])!==g(a[s]))&&r++;return r+d}function w(e){!1===l.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+e)}function t(n,d){var r=!0;return L(function(){if(null!=l.deprecationHandler&&l.deprecationHandler(null,n),r){for(var e,a=[],t=0;t<arguments.length;t++){if(e="","object"==typeof arguments[t]){for(var s in e+="\n["+t+"] ",arguments[0])e+=s+": "+arguments[0][s]+", ";e=e.slice(0,-2)}else e=arguments[t];a.push(e)}w(n+"\nArguments: "+Array.prototype.slice.call(a).join("")+"\n"+(new Error).stack),r=!1}return d.apply(this,arguments)},d)}var s,v={};function H(e,a){null!=l.deprecationHandler&&l.deprecationHandler(e,a),v[e]||(w(a),v[e]=!0)}function S(e){return e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}function b(e,a){var t,s=L({},e);for(t in a)h(a,t)&&(i(e[t])&&i(a[t])?(s[t]={},L(s[t],e[t]),L(s[t],a[t])):null!=a[t]?s[t]=a[t]:delete s[t]);for(t in e)h(e,t)&&!h(a,t)&&i(e[t])&&(s[t]=L({},s[t]));return s}function j(e){null!=e&&this.set(e)}l.suppressDeprecationWarnings=!1,l.deprecationHandler=null,s=Object.keys?Object.keys:function(e){var a,t=[];for(a in e)h(e,a)&&t.push(a);return t};var x={};function P(e,a){var t=e.toLowerCase();x[t]=x[t+"s"]=x[a]=e}function O(e){return"string"==typeof e?x[e]||x[e.toLowerCase()]:void 0}function W(e){var a,t,s={};for(t in e)h(e,t)&&(a=O(t))&&(s[a]=e[t]);return s}var E={};function A(e,a){E[e]=a}function F(e,a,t){var s=""+Math.abs(e),n=a-s.length;return(0<=e?t?"+":"":"-")+Math.pow(10,Math.max(0,n)).toString().substr(1)+s}var z=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,J=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,N={},R={};function I(e,a,t,s){var n=s;"string"==typeof s&&(n=function(){return this[s]()}),e&&(R[e]=n),a&&(R[a[0]]=function(){return F(n.apply(this,arguments),a[1],a[2])}),t&&(R[t]=function(){return this.localeData().ordinal(n.apply(this,arguments),e)})}function C(e,a){return e.isValid()?(a=G(a,e.localeData()),N[a]=N[a]||function(s){var e,n,a,d=s.match(z);for(e=0,n=d.length;e<n;e++)R[d[e]]?d[e]=R[d[e]]:d[e]=(a=d[e]).match(/\[[\s\S]/)?a.replace(/^\[|\]$/g,""):a.replace(/\\/g,"");return function(e){var a,t="";for(a=0;a<n;a++)t+=S(d[a])?d[a].call(e,s):d[a];return t}}(a),N[a](e)):e.localeData().invalidDate()}function G(e,a){var t=5;function s(e){return a.longDateFormat(e)||e}for(J.lastIndex=0;0<=t&&J.test(e);)e=e.replace(J,s),J.lastIndex=0,t-=1;return e}var U=/\d/,V=/\d\d/,K=/\d{3}/,$=/\d{4}/,Z=/[+-]?\d{6}/,B=/\d\d?/,q=/\d\d\d\d?/,Q=/\d\d\d\d\d\d?/,X=/\d{1,3}/,ee=/\d{1,4}/,ae=/[+-]?\d{1,6}/,te=/\d+/,se=/[+-]?\d+/,ne=/Z|[+-]\d\d:?\d\d/gi,de=/Z|[+-]\d\d(?::?\d\d)?/gi,re=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,_e={};function ie(e,t,s){_e[e]=S(t)?t:function(e,a){return e&&s?s:t}}function oe(e,a){return h(_e,e)?_e[e](a._strict,a._locale):new RegExp(me(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(e,a,t,s,n){return a||t||s||n})))}function me(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var ue={};function le(e,t){var a,s=t;for("string"==typeof e&&(e=[e]),m(t)&&(s=function(e,a){a[t]=g(e)}),a=0;a<e.length;a++)ue[e[a]]=s}function Me(e,n){le(e,function(e,a,t,s){t._w=t._w||{},n(e,t._w,t,s)})}var he=0,Le=1,ce=2,Ye=3,ye=4,fe=5,ke=6,pe=7,De=8;function Te(e){return ge(e)?366:365}function ge(e){return e%4==0&&e%100!=0||e%400==0}I("Y",0,0,function(){var e=this.year();return e<=9999?""+e:"+"+e}),I(0,["YY",2],0,function(){return this.year()%100}),I(0,["YYYY",4],0,"year"),I(0,["YYYYY",5],0,"year"),I(0,["YYYYYY",6,!0],0,"year"),P("year","y"),A("year",1),ie("Y",se),ie("YY",B,V),ie("YYYY",ee,$),ie("YYYYY",ae,Z),ie("YYYYYY",ae,Z),le(["YYYYY","YYYYYY"],he),le("YYYY",function(e,a){a[he]=2===e.length?l.parseTwoDigitYear(e):g(e)}),le("YY",function(e,a){a[he]=l.parseTwoDigitYear(e)}),le("Y",function(e,a){a[he]=parseInt(e,10)}),l.parseTwoDigitYear=function(e){return g(e)+(68<g(e)?1900:2e3)};var we,ve=He("FullYear",!0);function He(a,t){return function(e){return null!=e?(be(this,a,e),l.updateOffset(this,t),this):Se(this,a)}}function Se(e,a){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+a]():NaN}function be(e,a,t){e.isValid()&&!isNaN(t)&&("FullYear"===a&&ge(e.year())&&1===e.month()&&29===e.date()?e._d["set"+(e._isUTC?"UTC":"")+a](t,e.month(),je(t,e.month())):e._d["set"+(e._isUTC?"UTC":"")+a](t))}function je(e,a){if(isNaN(e)||isNaN(a))return NaN;var t,s=(a%(t=12)+t)%t;return e+=(a-s)/12,1===s?ge(e)?29:28:31-s%7%2}we=Array.prototype.indexOf?Array.prototype.indexOf:function(e){var a;for(a=0;a<this.length;++a)if(this[a]===e)return a;return-1},I("M",["MM",2],"Mo",function(){return this.month()+1}),I("MMM",0,0,function(e){return this.localeData().monthsShort(this,e)}),I("MMMM",0,0,function(e){return this.localeData().months(this,e)}),P("month","M"),A("month",8),ie("M",B),ie("MM",B,V),ie("MMM",function(e,a){return a.monthsShortRegex(e)}),ie("MMMM",function(e,a){return a.monthsRegex(e)}),le(["M","MM"],function(e,a){a[Le]=g(e)-1}),le(["MMM","MMMM"],function(e,a,t,s){var n=t._locale.monthsParse(e,s,t._strict);null!=n?a[Le]=n:Y(t).invalidMonth=e});var xe=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,Pe="January_February_March_April_May_June_July_August_September_October_November_December".split("_");var Oe="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_");function We(e,a){var t;if(!e.isValid())return e;if("string"==typeof a)if(/^\d+$/.test(a))a=g(a);else if(!m(a=e.localeData().monthsParse(a)))return e;return t=Math.min(e.date(),je(e.year(),a)),e._d["set"+(e._isUTC?"UTC":"")+"Month"](a,t),e}function Ee(e){return null!=e?(We(this,e),l.updateOffset(this,!0),this):Se(this,"Month")}var Ae=re;var Fe=re;function ze(){function e(e,a){return a.length-e.length}var a,t,s=[],n=[],d=[];for(a=0;a<12;a++)t=c([2e3,a]),s.push(this.monthsShort(t,"")),n.push(this.months(t,"")),d.push(this.months(t,"")),d.push(this.monthsShort(t,""));for(s.sort(e),n.sort(e),d.sort(e),a=0;a<12;a++)s[a]=me(s[a]),n[a]=me(n[a]);for(a=0;a<24;a++)d[a]=me(d[a]);this._monthsRegex=new RegExp("^("+d.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+n.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+s.join("|")+")","i")}function Je(e){var a=new Date(Date.UTC.apply(null,arguments));return e<100&&0<=e&&isFinite(a.getUTCFullYear())&&a.setUTCFullYear(e),a}function Ne(e,a,t){var s=7+a-t;return-((7+Je(e,0,s).getUTCDay()-a)%7)+s-1}function Re(e,a,t,s,n){var d,r,_=1+7*(a-1)+(7+t-s)%7+Ne(e,s,n);return r=_<=0?Te(d=e-1)+_:_>Te(e)?(d=e+1,_-Te(e)):(d=e,_),{year:d,dayOfYear:r}}function Ie(e,a,t){var s,n,d=Ne(e.year(),a,t),r=Math.floor((e.dayOfYear()-d-1)/7)+1;return r<1?s=r+Ce(n=e.year()-1,a,t):r>Ce(e.year(),a,t)?(s=r-Ce(e.year(),a,t),n=e.year()+1):(n=e.year(),s=r),{week:s,year:n}}function Ce(e,a,t){var s=Ne(e,a,t),n=Ne(e+1,a,t);return(Te(e)-s+n)/7}I("w",["ww",2],"wo","week"),I("W",["WW",2],"Wo","isoWeek"),P("week","w"),P("isoWeek","W"),A("week",5),A("isoWeek",5),ie("w",B),ie("ww",B,V),ie("W",B),ie("WW",B,V),Me(["w","ww","W","WW"],function(e,a,t,s){a[s.substr(0,1)]=g(e)});I("d",0,"do","day"),I("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),I("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),I("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),I("e",0,0,"weekday"),I("E",0,0,"isoWeekday"),P("day","d"),P("weekday","e"),P("isoWeekday","E"),A("day",11),A("weekday",11),A("isoWeekday",11),ie("d",B),ie("e",B),ie("E",B),ie("dd",function(e,a){return a.weekdaysMinRegex(e)}),ie("ddd",function(e,a){return a.weekdaysShortRegex(e)}),ie("dddd",function(e,a){return a.weekdaysRegex(e)}),Me(["dd","ddd","dddd"],function(e,a,t,s){var n=t._locale.weekdaysParse(e,s,t._strict);null!=n?a.d=n:Y(t).invalidWeekday=e}),Me(["d","e","E"],function(e,a,t,s){a[s]=g(e)});var Ge="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_");var Ue="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_");var Ve="Su_Mo_Tu_We_Th_Fr_Sa".split("_");var Ke=re;var $e=re;var Ze=re;function Be(){function e(e,a){return a.length-e.length}var a,t,s,n,d,r=[],_=[],i=[],o=[];for(a=0;a<7;a++)t=c([2e3,1]).day(a),s=this.weekdaysMin(t,""),n=this.weekdaysShort(t,""),d=this.weekdays(t,""),r.push(s),_.push(n),i.push(d),o.push(s),o.push(n),o.push(d);for(r.sort(e),_.sort(e),i.sort(e),o.sort(e),a=0;a<7;a++)_[a]=me(_[a]),i[a]=me(i[a]),o[a]=me(o[a]);this._weekdaysRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+i.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+_.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+r.join("|")+")","i")}function qe(){return this.hours()%12||12}function Qe(e,a){I(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),a)})}function Xe(e,a){return a._meridiemParse}I("H",["HH",2],0,"hour"),I("h",["hh",2],0,qe),I("k",["kk",2],0,function(){return this.hours()||24}),I("hmm",0,0,function(){return""+qe.apply(this)+F(this.minutes(),2)}),I("hmmss",0,0,function(){return""+qe.apply(this)+F(this.minutes(),2)+F(this.seconds(),2)}),I("Hmm",0,0,function(){return""+this.hours()+F(this.minutes(),2)}),I("Hmmss",0,0,function(){return""+this.hours()+F(this.minutes(),2)+F(this.seconds(),2)}),Qe("a",!0),Qe("A",!1),P("hour","h"),A("hour",13),ie("a",Xe),ie("A",Xe),ie("H",B),ie("h",B),ie("k",B),ie("HH",B,V),ie("hh",B,V),ie("kk",B,V),ie("hmm",q),ie("hmmss",Q),ie("Hmm",q),ie("Hmmss",Q),le(["H","HH"],Ye),le(["k","kk"],function(e,a,t){var s=g(e);a[Ye]=24===s?0:s}),le(["a","A"],function(e,a,t){t._isPm=t._locale.isPM(e),t._meridiem=e}),le(["h","hh"],function(e,a,t){a[Ye]=g(e),Y(t).bigHour=!0}),le("hmm",function(e,a,t){var s=e.length-2;a[Ye]=g(e.substr(0,s)),a[ye]=g(e.substr(s)),Y(t).bigHour=!0}),le("hmmss",function(e,a,t){var s=e.length-4,n=e.length-2;a[Ye]=g(e.substr(0,s)),a[ye]=g(e.substr(s,2)),a[fe]=g(e.substr(n)),Y(t).bigHour=!0}),le("Hmm",function(e,a,t){var s=e.length-2;a[Ye]=g(e.substr(0,s)),a[ye]=g(e.substr(s))}),le("Hmmss",function(e,a,t){var s=e.length-4,n=e.length-2;a[Ye]=g(e.substr(0,s)),a[ye]=g(e.substr(s,2)),a[fe]=g(e.substr(n))});var ea,aa=He("Hours",!0),ta={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Pe,monthsShort:Oe,week:{dow:0,doy:6},weekdays:Ge,weekdaysMin:Ve,weekdaysShort:Ue,meridiemParse:/[ap]\.?m?\.?/i},sa={},na={};function da(e){return e?e.toLowerCase().replace("_","-"):e}function ra(e){var a=null;if(!sa[e]&&"undefined"!=typeof module&&module&&module.exports)try{a=ea._abbr,require("./locale/"+e),_a(a)}catch(e){}return sa[e]}function _a(e,a){var t;return e&&((t=o(a)?oa(e):ia(e,a))?ea=t:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),ea._abbr}function ia(e,a){if(null===a)return delete sa[e],null;var t,s=ta;if(a.abbr=e,null!=sa[e])H("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),s=sa[e]._config;else if(null!=a.parentLocale)if(null!=sa[a.parentLocale])s=sa[a.parentLocale]._config;else{if(null==(t=ra(a.parentLocale)))return na[a.parentLocale]||(na[a.parentLocale]=[]),na[a.parentLocale].push({name:e,config:a}),null;s=t._config}return sa[e]=new j(b(s,a)),na[e]&&na[e].forEach(function(e){ia(e.name,e.config)}),_a(e),sa[e]}function oa(e){var a;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return ea;if(!_(e)){if(a=ra(e))return a;e=[e]}return function(e){for(var a,t,s,n,d=0;d<e.length;){for(a=(n=da(e[d]).split("-")).length,t=(t=da(e[d+1]))?t.split("-"):null;0<a;){if(s=ra(n.slice(0,a).join("-")))return s;if(t&&t.length>=a&&r(n,t,!0)>=a-1)break;a--}d++}return ea}(e)}function ma(e){var a,t=e._a;return t&&-2===Y(e).overflow&&(a=t[Le]<0||11<t[Le]?Le:t[ce]<1||t[ce]>je(t[he],t[Le])?ce:t[Ye]<0||24<t[Ye]||24===t[Ye]&&(0!==t[ye]||0!==t[fe]||0!==t[ke])?Ye:t[ye]<0||59<t[ye]?ye:t[fe]<0||59<t[fe]?fe:t[ke]<0||999<t[ke]?ke:-1,Y(e)._overflowDayOfYear&&(a<he||ce<a)&&(a=ce),Y(e)._overflowWeeks&&-1===a&&(a=pe),Y(e)._overflowWeekday&&-1===a&&(a=De),Y(e).overflow=a),e}function ua(e,a,t){return null!=e?e:null!=a?a:t}function la(e){var a,t,s,n,d,r=[];if(!e._d){var _,i;for(_=e,i=new Date(l.now()),s=_._useUTC?[i.getUTCFullYear(),i.getUTCMonth(),i.getUTCDate()]:[i.getFullYear(),i.getMonth(),i.getDate()],e._w&&null==e._a[ce]&&null==e._a[Le]&&function(e){var a,t,s,n,d,r,_,i;if(null!=(a=e._w).GG||null!=a.W||null!=a.E)d=1,r=4,t=ua(a.GG,e._a[he],Ie(Ha(),1,4).year),s=ua(a.W,1),((n=ua(a.E,1))<1||7<n)&&(i=!0);else{d=e._locale._week.dow,r=e._locale._week.doy;var o=Ie(Ha(),d,r);t=ua(a.gg,e._a[he],o.year),s=ua(a.w,o.week),null!=a.d?((n=a.d)<0||6<n)&&(i=!0):null!=a.e?(n=a.e+d,(a.e<0||6<a.e)&&(i=!0)):n=d}s<1||s>Ce(t,d,r)?Y(e)._overflowWeeks=!0:null!=i?Y(e)._overflowWeekday=!0:(_=Re(t,s,n,d,r),e._a[he]=_.year,e._dayOfYear=_.dayOfYear)}(e),null!=e._dayOfYear&&(d=ua(e._a[he],s[he]),(e._dayOfYear>Te(d)||0===e._dayOfYear)&&(Y(e)._overflowDayOfYear=!0),t=Je(d,0,e._dayOfYear),e._a[Le]=t.getUTCMonth(),e._a[ce]=t.getUTCDate()),a=0;a<3&&null==e._a[a];++a)e._a[a]=r[a]=s[a];for(;a<7;a++)e._a[a]=r[a]=null==e._a[a]?2===a?1:0:e._a[a];24===e._a[Ye]&&0===e._a[ye]&&0===e._a[fe]&&0===e._a[ke]&&(e._nextDay=!0,e._a[Ye]=0),e._d=(e._useUTC?Je:function(e,a,t,s,n,d,r){var _=new Date(e,a,t,s,n,d,r);return e<100&&0<=e&&isFinite(_.getFullYear())&&_.setFullYear(e),_}).apply(null,r),n=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[Ye]=24),e._w&&void 0!==e._w.d&&e._w.d!==n&&(Y(e).weekdayMismatch=!0)}}var Ma=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ha=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,La=/Z|[+-]\d\d(?::?\d\d)?/,ca=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],Ya=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],ya=/^\/?Date\((\-?\d+)/i;function fa(e){var a,t,s,n,d,r,_=e._i,i=Ma.exec(_)||ha.exec(_);if(i){for(Y(e).iso=!0,a=0,t=ca.length;a<t;a++)if(ca[a][1].exec(i[1])){n=ca[a][0],s=!1!==ca[a][2];break}if(null==n)return void(e._isValid=!1);if(i[3]){for(a=0,t=Ya.length;a<t;a++)if(Ya[a][1].exec(i[3])){d=(i[2]||" ")+Ya[a][0];break}if(null==d)return void(e._isValid=!1)}if(!s&&null!=d)return void(e._isValid=!1);if(i[4]){if(!La.exec(i[4]))return void(e._isValid=!1);r="Z"}e._f=n+(d||"")+(r||""),ga(e)}else e._isValid=!1}var ka=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/;function pa(e,a,t,s,n,d){var r=[function(e){var a=parseInt(e,10);{if(a<=49)return 2e3+a;if(a<=999)return 1900+a}return a}(e),Oe.indexOf(a),parseInt(t,10),parseInt(s,10),parseInt(n,10)];return d&&r.push(parseInt(d,10)),r}var Da={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Ta(e){var a,t,s,n=ka.exec(e._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));if(n){var d=pa(n[4],n[3],n[2],n[5],n[6],n[7]);if(a=n[1],t=d,s=e,a&&Ue.indexOf(a)!==new Date(t[0],t[1],t[2]).getDay()&&(Y(s).weekdayMismatch=!0,!(s._isValid=!1)))return;e._a=d,e._tzm=function(e,a,t){if(e)return Da[e];if(a)return 0;var s=parseInt(t,10),n=s%100;return(s-n)/100*60+n}(n[8],n[9],n[10]),e._d=Je.apply(null,e._a),e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),Y(e).rfc2822=!0}else e._isValid=!1}function ga(e){if(e._f!==l.ISO_8601)if(e._f!==l.RFC_2822){e._a=[],Y(e).empty=!0;var a,t,s,n,d,r,_,i,o=""+e._i,m=o.length,u=0;for(s=G(e._f,e._locale).match(z)||[],a=0;a<s.length;a++)n=s[a],(t=(o.match(oe(n,e))||[])[0])&&(0<(d=o.substr(0,o.indexOf(t))).length&&Y(e).unusedInput.push(d),o=o.slice(o.indexOf(t)+t.length),u+=t.length),R[n]?(t?Y(e).empty=!1:Y(e).unusedTokens.push(n),r=n,i=e,null!=(_=t)&&h(ue,r)&&ue[r](_,i._a,i,r)):e._strict&&!t&&Y(e).unusedTokens.push(n);Y(e).charsLeftOver=m-u,0<o.length&&Y(e).unusedInput.push(o),e._a[Ye]<=12&&!0===Y(e).bigHour&&0<e._a[Ye]&&(Y(e).bigHour=void 0),Y(e).parsedDateParts=e._a.slice(0),Y(e).meridiem=e._meridiem,e._a[Ye]=function(e,a,t){var s;if(null==t)return a;return null!=e.meridiemHour?e.meridiemHour(a,t):(null!=e.isPM&&((s=e.isPM(t))&&a<12&&(a+=12),s||12!==a||(a=0)),a)}(e._locale,e._a[Ye],e._meridiem),la(e),ma(e)}else Ta(e);else fa(e)}function wa(e){var a,t,s,n,d=e._i,r=e._f;return e._locale=e._locale||oa(e._l),null===d||void 0===r&&""===d?f({nullInput:!0}):("string"==typeof d&&(e._i=d=e._locale.preparse(d)),D(d)?new p(ma(d)):(u(d)?e._d=d:_(r)?function(e){var a,t,s,n,d;if(0===e._f.length)return Y(e).invalidFormat=!0,e._d=new Date(NaN);for(n=0;n<e._f.length;n++)d=0,a=k({},e),null!=e._useUTC&&(a._useUTC=e._useUTC),a._f=e._f[n],ga(a),y(a)&&(d+=Y(a).charsLeftOver,d+=10*Y(a).unusedTokens.length,Y(a).score=d,(null==s||d<s)&&(s=d,t=a));L(e,t||a)}(e):r?ga(e):o(t=(a=e)._i)?a._d=new Date(l.now()):u(t)?a._d=new Date(t.valueOf()):"string"==typeof t?(s=a,null===(n=ya.exec(s._i))?(fa(s),!1===s._isValid&&(delete s._isValid,Ta(s),!1===s._isValid&&(delete s._isValid,l.createFromInputFallback(s)))):s._d=new Date(+n[1])):_(t)?(a._a=M(t.slice(0),function(e){return parseInt(e,10)}),la(a)):i(t)?function(e){if(!e._d){var a=W(e._i);e._a=M([a.year,a.month,a.day||a.date,a.hour,a.minute,a.second,a.millisecond],function(e){return e&&parseInt(e,10)}),la(e)}}(a):m(t)?a._d=new Date(t):l.createFromInputFallback(a),y(e)||(e._d=null),e))}function va(e,a,t,s,n){var d,r={};return!0!==t&&!1!==t||(s=t,t=void 0),(i(e)&&function(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;var a;for(a in e)if(e.hasOwnProperty(a))return!1;return!0}(e)||_(e)&&0===e.length)&&(e=void 0),r._isAMomentObject=!0,r._useUTC=r._isUTC=n,r._l=t,r._i=e,r._f=a,r._strict=s,(d=new p(ma(wa(r))))._nextDay&&(d.add(1,"d"),d._nextDay=void 0),d}function Ha(e,a,t,s){return va(e,a,t,s,!1)}l.createFromInputFallback=t("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(e){e._d=new Date(e._i+(e._useUTC?" UTC":""))}),l.ISO_8601=function(){},l.RFC_2822=function(){};var Sa=t("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=Ha.apply(null,arguments);return this.isValid()&&e.isValid()?e<this?this:e:f()}),ba=t("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=Ha.apply(null,arguments);return this.isValid()&&e.isValid()?this<e?this:e:f()});function ja(e,a){var t,s;if(1===a.length&&_(a[0])&&(a=a[0]),!a.length)return Ha();for(t=a[0],s=1;s<a.length;++s)a[s].isValid()&&!a[s][e](t)||(t=a[s]);return t}var xa=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Pa(e){var a=W(e),t=a.year||0,s=a.quarter||0,n=a.month||0,d=a.week||a.isoWeek||0,r=a.day||0,_=a.hour||0,i=a.minute||0,o=a.second||0,m=a.millisecond||0;this._isValid=function(e){for(var a in e)if(-1===we.call(xa,a)||null!=e[a]&&isNaN(e[a]))return!1;for(var t=!1,s=0;s<xa.length;++s)if(e[xa[s]]){if(t)return!1;parseFloat(e[xa[s]])!==g(e[xa[s]])&&(t=!0)}return!0}(a),this._milliseconds=+m+1e3*o+6e4*i+1e3*_*60*60,this._days=+r+7*d,this._months=+n+3*s+12*t,this._data={},this._locale=oa(),this._bubble()}function Oa(e){return e instanceof Pa}function Wa(e){return e<0?-1*Math.round(-1*e):Math.round(e)}function Ea(e,t){I(e,0,0,function(){var e=this.utcOffset(),a="+";return e<0&&(e=-e,a="-"),a+F(~~(e/60),2)+t+F(~~e%60,2)})}Ea("Z",":"),Ea("ZZ",""),ie("Z",de),ie("ZZ",de),le(["Z","ZZ"],function(e,a,t){t._useUTC=!0,t._tzm=Fa(de,e)});var Aa=/([\+\-]|\d\d)/gi;function Fa(e,a){var t=(a||"").match(e);if(null===t)return null;var s=((t[t.length-1]||[])+"").match(Aa)||["-",0,0],n=60*s[1]+g(s[2]);return 0===n?0:"+"===s[0]?n:-n}function za(e,a){var t,s;return a._isUTC?(t=a.clone(),s=(D(e)||u(e)?e.valueOf():Ha(e).valueOf())-t.valueOf(),t._d.setTime(t._d.valueOf()+s),l.updateOffset(t,!1),t):Ha(e).local()}function Ja(e){return 15*-Math.round(e._d.getTimezoneOffset()/15)}function Na(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}l.updateOffset=function(){};var Ra=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,Ia=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function Ca(e,a){var t,s,n,d=e,r=null;return Oa(e)?d={ms:e._milliseconds,d:e._days,M:e._months}:m(e)?(d={},a?d[a]=e:d.milliseconds=e):(r=Ra.exec(e))?(t="-"===r[1]?-1:1,d={y:0,d:g(r[ce])*t,h:g(r[Ye])*t,m:g(r[ye])*t,s:g(r[fe])*t,ms:g(Wa(1e3*r[ke]))*t}):(r=Ia.exec(e))?(t="-"===r[1]?-1:1,d={y:Ga(r[2],t),M:Ga(r[3],t),w:Ga(r[4],t),d:Ga(r[5],t),h:Ga(r[6],t),m:Ga(r[7],t),s:Ga(r[8],t)}):null==d?d={}:"object"==typeof d&&("from"in d||"to"in d)&&(n=function(e,a){var t;if(!e.isValid()||!a.isValid())return{milliseconds:0,months:0};a=za(a,e),e.isBefore(a)?t=Ua(e,a):((t=Ua(a,e)).milliseconds=-t.milliseconds,t.months=-t.months);return t}(Ha(d.from),Ha(d.to)),(d={}).ms=n.milliseconds,d.M=n.months),s=new Pa(d),Oa(e)&&h(e,"_locale")&&(s._locale=e._locale),s}function Ga(e,a){var t=e&&parseFloat(e.replace(",","."));return(isNaN(t)?0:t)*a}function Ua(e,a){var t={milliseconds:0,months:0};return t.months=a.month()-e.month()+12*(a.year()-e.year()),e.clone().add(t.months,"M").isAfter(a)&&--t.months,t.milliseconds=+a-+e.clone().add(t.months,"M"),t}function Va(s,n){return function(e,a){var t;return null===a||isNaN(+a)||(H(n,"moment()."+n+"(period, number) is deprecated. Please use moment()."+n+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),t=e,e=a,a=t),Ka(this,Ca(e="string"==typeof e?+e:e,a),s),this}}function Ka(e,a,t,s){var n=a._milliseconds,d=Wa(a._days),r=Wa(a._months);e.isValid()&&(s=null==s||s,r&&We(e,Se(e,"Month")+r*t),d&&be(e,"Date",Se(e,"Date")+d*t),n&&e._d.setTime(e._d.valueOf()+n*t),s&&l.updateOffset(e,d||r))}Ca.fn=Pa.prototype,Ca.invalid=function(){return Ca(NaN)};var $a=Va(1,"add"),Za=Va(-1,"subtract");function Ba(e,a){var t=12*(a.year()-e.year())+(a.month()-e.month()),s=e.clone().add(t,"months");return-(t+(a-s<0?(a-s)/(s-e.clone().add(t-1,"months")):(a-s)/(e.clone().add(t+1,"months")-s)))||0}function qa(e){var a;return void 0===e?this._locale._abbr:(null!=(a=oa(e))&&(this._locale=a),this)}l.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",l.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var Qa=t("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){return void 0===e?this.localeData():this.locale(e)});function Xa(){return this._locale}function et(e,a){I(0,[e,e.length],0,a)}function at(e,a,t,s,n){var d;return null==e?Ie(this,s,n).year:((d=Ce(e,s,n))<a&&(a=d),function(e,a,t,s,n){var d=Re(e,a,t,s,n),r=Je(d.year,0,d.dayOfYear);return this.year(r.getUTCFullYear()),this.month(r.getUTCMonth()),this.date(r.getUTCDate()),this}.call(this,e,a,t,s,n))}I(0,["gg",2],0,function(){return this.weekYear()%100}),I(0,["GG",2],0,function(){return this.isoWeekYear()%100}),et("gggg","weekYear"),et("ggggg","weekYear"),et("GGGG","isoWeekYear"),et("GGGGG","isoWeekYear"),P("weekYear","gg"),P("isoWeekYear","GG"),A("weekYear",1),A("isoWeekYear",1),ie("G",se),ie("g",se),ie("GG",B,V),ie("gg",B,V),ie("GGGG",ee,$),ie("gggg",ee,$),ie("GGGGG",ae,Z),ie("ggggg",ae,Z),Me(["gggg","ggggg","GGGG","GGGGG"],function(e,a,t,s){a[s.substr(0,2)]=g(e)}),Me(["gg","GG"],function(e,a,t,s){a[s]=l.parseTwoDigitYear(e)}),I("Q",0,"Qo","quarter"),P("quarter","Q"),A("quarter",7),ie("Q",U),le("Q",function(e,a){a[Le]=3*(g(e)-1)}),I("D",["DD",2],"Do","date"),P("date","D"),A("date",9),ie("D",B),ie("DD",B,V),ie("Do",function(e,a){return e?a._dayOfMonthOrdinalParse||a._ordinalParse:a._dayOfMonthOrdinalParseLenient}),le(["D","DD"],ce),le("Do",function(e,a){a[ce]=g(e.match(B)[0])});var tt=He("Date",!0);I("DDD",["DDDD",3],"DDDo","dayOfYear"),P("dayOfYear","DDD"),A("dayOfYear",4),ie("DDD",X),ie("DDDD",K),le(["DDD","DDDD"],function(e,a,t){t._dayOfYear=g(e)}),I("m",["mm",2],0,"minute"),P("minute","m"),A("minute",14),ie("m",B),ie("mm",B,V),le(["m","mm"],ye);var st=He("Minutes",!1);I("s",["ss",2],0,"second"),P("second","s"),A("second",15),ie("s",B),ie("ss",B,V),le(["s","ss"],fe);var nt,dt=He("Seconds",!1);for(I("S",0,0,function(){return~~(this.millisecond()/100)}),I(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),I(0,["SSS",3],0,"millisecond"),I(0,["SSSS",4],0,function(){return 10*this.millisecond()}),I(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),I(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),I(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),I(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),I(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),P("millisecond","ms"),A("millisecond",16),ie("S",X,U),ie("SS",X,V),ie("SSS",X,K),nt="SSSS";nt.length<=9;nt+="S")ie(nt,te);function rt(e,a){a[ke]=g(1e3*("0."+e))}for(nt="S";nt.length<=9;nt+="S")le(nt,rt);var _t=He("Milliseconds",!1);I("z",0,0,"zoneAbbr"),I("zz",0,0,"zoneName");var it=p.prototype;function ot(e){return e}it.add=$a,it.calendar=function(e,a){var t=e||Ha(),s=za(t,this).startOf("day"),n=l.calendarFormat(this,s)||"sameElse",d=a&&(S(a[n])?a[n].call(this,t):a[n]);return this.format(d||this.localeData().calendar(n,this,Ha(t)))},it.clone=function(){return new p(this)},it.diff=function(e,a,t){var s,n,d;if(!this.isValid())return NaN;if(!(s=za(e,this)).isValid())return NaN;switch(n=6e4*(s.utcOffset()-this.utcOffset()),a=O(a)){case"year":d=Ba(this,s)/12;break;case"month":d=Ba(this,s);break;case"quarter":d=Ba(this,s)/3;break;case"second":d=(this-s)/1e3;break;case"minute":d=(this-s)/6e4;break;case"hour":d=(this-s)/36e5;break;case"day":d=(this-s-n)/864e5;break;case"week":d=(this-s-n)/6048e5;break;default:d=this-s}return t?d:T(d)},it.endOf=function(e){return void 0===(e=O(e))||"millisecond"===e?this:("date"===e&&(e="day"),this.startOf(e).add(1,"isoWeek"===e?"week":e).subtract(1,"ms"))},it.format=function(e){e||(e=this.isUtc()?l.defaultFormatUtc:l.defaultFormat);var a=C(this,e);return this.localeData().postformat(a)},it.from=function(e,a){return this.isValid()&&(D(e)&&e.isValid()||Ha(e).isValid())?Ca({to:this,from:e}).locale(this.locale()).humanize(!a):this.localeData().invalidDate()},it.fromNow=function(e){return this.from(Ha(),e)},it.to=function(e,a){return this.isValid()&&(D(e)&&e.isValid()||Ha(e).isValid())?Ca({from:this,to:e}).locale(this.locale()).humanize(!a):this.localeData().invalidDate()},it.toNow=function(e){return this.to(Ha(),e)},it.get=function(e){return S(this[e=O(e)])?this[e]():this},it.invalidAt=function(){return Y(this).overflow},it.isAfter=function(e,a){var t=D(e)?e:Ha(e);return!(!this.isValid()||!t.isValid())&&("millisecond"===(a=O(a)||"millisecond")?this.valueOf()>t.valueOf():t.valueOf()<this.clone().startOf(a).valueOf())},it.isBefore=function(e,a){var t=D(e)?e:Ha(e);return!(!this.isValid()||!t.isValid())&&("millisecond"===(a=O(a)||"millisecond")?this.valueOf()<t.valueOf():this.clone().endOf(a).valueOf()<t.valueOf())},it.isBetween=function(e,a,t,s){var n=D(e)?e:Ha(e),d=D(a)?a:Ha(a);return!!(this.isValid()&&n.isValid()&&d.isValid())&&("("===(s=s||"()")[0]?this.isAfter(n,t):!this.isBefore(n,t))&&(")"===s[1]?this.isBefore(d,t):!this.isAfter(d,t))},it.isSame=function(e,a){var t,s=D(e)?e:Ha(e);return!(!this.isValid()||!s.isValid())&&("millisecond"===(a=O(a)||"millisecond")?this.valueOf()===s.valueOf():(t=s.valueOf(),this.clone().startOf(a).valueOf()<=t&&t<=this.clone().endOf(a).valueOf()))},it.isSameOrAfter=function(e,a){return this.isSame(e,a)||this.isAfter(e,a)},it.isSameOrBefore=function(e,a){return this.isSame(e,a)||this.isBefore(e,a)},it.isValid=function(){return y(this)},it.lang=Qa,it.locale=qa,it.localeData=Xa,it.max=ba,it.min=Sa,it.parsingFlags=function(){return L({},Y(this))},it.set=function(e,a){if("object"==typeof e)for(var t=function(e){var a=[];for(var t in e)a.push({unit:t,priority:E[t]});return a.sort(function(e,a){return e.priority-a.priority}),a}(e=W(e)),s=0;s<t.length;s++)this[t[s].unit](e[t[s].unit]);else if(S(this[e=O(e)]))return this[e](a);return this},it.startOf=function(e){switch(e=O(e)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":case"date":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===e&&this.weekday(0),"isoWeek"===e&&this.isoWeekday(1),"quarter"===e&&this.month(3*Math.floor(this.month()/3)),this},it.subtract=Za,it.toArray=function(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]},it.toObject=function(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}},it.toDate=function(){return new Date(this.valueOf())},it.toISOString=function(e){if(!this.isValid())return null;var a=!0!==e,t=a?this.clone().utc():this;return t.year()<0||9999<t.year()?C(t,a?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):S(Date.prototype.toISOString)?a?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",C(t,"Z")):C(t,a?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},it.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e="moment",a="";this.isLocal()||(e=0===this.utcOffset()?"moment.utc":"moment.parseZone",a="Z");var t="["+e+'("]',s=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",n=a+'[")]';return this.format(t+s+"-MM-DD[T]HH:mm:ss.SSS"+n)},it.toJSON=function(){return this.isValid()?this.toISOString():null},it.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},it.unix=function(){return Math.floor(this.valueOf()/1e3)},it.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},it.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},it.year=ve,it.isLeapYear=function(){return ge(this.year())},it.weekYear=function(e){return at.call(this,e,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},it.isoWeekYear=function(e){return at.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)},it.quarter=it.quarters=function(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)},it.month=Ee,it.daysInMonth=function(){return je(this.year(),this.month())},it.week=it.weeks=function(e){var a=this.localeData().week(this);return null==e?a:this.add(7*(e-a),"d")},it.isoWeek=it.isoWeeks=function(e){var a=Ie(this,1,4).week;return null==e?a:this.add(7*(e-a),"d")},it.weeksInYear=function(){var e=this.localeData()._week;return Ce(this.year(),e.dow,e.doy)},it.isoWeeksInYear=function(){return Ce(this.year(),1,4)},it.date=tt,it.day=it.days=function(e){if(!this.isValid())return null!=e?this:NaN;var a,t,s=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=e?(a=e,t=this.localeData(),e="string"!=typeof a?a:isNaN(a)?"number"==typeof(a=t.weekdaysParse(a))?a:null:parseInt(a,10),this.add(e-s,"d")):s},it.weekday=function(e){if(!this.isValid())return null!=e?this:NaN;var a=(this.day()+7-this.localeData()._week.dow)%7;return null==e?a:this.add(e-a,"d")},it.isoWeekday=function(e){if(!this.isValid())return null!=e?this:NaN;if(null==e)return this.day()||7;var a,t,s=(a=e,t=this.localeData(),"string"==typeof a?t.weekdaysParse(a)%7||7:isNaN(a)?null:a);return this.day(this.day()%7?s:s-7)},it.dayOfYear=function(e){var a=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?a:this.add(e-a,"d")},it.hour=it.hours=aa,it.minute=it.minutes=st,it.second=it.seconds=dt,it.millisecond=it.milliseconds=_t,it.utcOffset=function(e,a,t){var s,n=this._offset||0;if(!this.isValid())return null!=e?this:NaN;if(null==e)return this._isUTC?n:Ja(this);if("string"==typeof e){if(null===(e=Fa(de,e)))return this}else Math.abs(e)<16&&!t&&(e*=60);return!this._isUTC&&a&&(s=Ja(this)),this._offset=e,this._isUTC=!0,null!=s&&this.add(s,"m"),n!==e&&(!a||this._changeInProgress?Ka(this,Ca(e-n,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,l.updateOffset(this,!0),this._changeInProgress=null)),this},it.utc=function(e){return this.utcOffset(0,e)},it.local=function(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e&&this.subtract(Ja(this),"m")),this},it.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var e=Fa(ne,this._i);null!=e?this.utcOffset(e):this.utcOffset(0,!0)}return this},it.hasAlignedHourOffset=function(e){return!!this.isValid()&&(e=e?Ha(e).utcOffset():0,(this.utcOffset()-e)%60==0)},it.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},it.isLocal=function(){return!!this.isValid()&&!this._isUTC},it.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},it.isUtc=Na,it.isUTC=Na,it.zoneAbbr=function(){return this._isUTC?"UTC":""},it.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},it.dates=t("dates accessor is deprecated. Use date instead.",tt),it.months=t("months accessor is deprecated. Use month instead",Ee),it.years=t("years accessor is deprecated. Use year instead",ve),it.zone=t("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(e,a){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,a),this):-this.utcOffset()}),it.isDSTShifted=t("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!o(this._isDSTShifted))return this._isDSTShifted;var e={};if(k(e,this),(e=wa(e))._a){var a=e._isUTC?c(e._a):Ha(e._a);this._isDSTShifted=this.isValid()&&0<r(e._a,a.toArray())}else this._isDSTShifted=!1;return this._isDSTShifted});var mt=j.prototype;function ut(e,a,t,s){var n=oa(),d=c().set(s,a);return n[t](d,e)}function lt(e,a,t){if(m(e)&&(a=e,e=void 0),e=e||"",null!=a)return ut(e,a,t,"month");var s,n=[];for(s=0;s<12;s++)n[s]=ut(e,s,t,"month");return n}function Mt(e,a,t,s){a=("boolean"==typeof e?m(a)&&(t=a,a=void 0):(a=e,e=!1,m(t=a)&&(t=a,a=void 0)),a||"");var n,d=oa(),r=e?d._week.dow:0;if(null!=t)return ut(a,(t+r)%7,s,"day");var _=[];for(n=0;n<7;n++)_[n]=ut(a,(n+r)%7,s,"day");return _}mt.calendar=function(e,a,t){var s=this._calendar[e]||this._calendar.sameElse;return S(s)?s.call(a,t):s},mt.longDateFormat=function(e){var a=this._longDateFormat[e],t=this._longDateFormat[e.toUpperCase()];return a||!t?a:(this._longDateFormat[e]=t.replace(/MMMM|MM|DD|dddd/g,function(e){return e.slice(1)}),this._longDateFormat[e])},mt.invalidDate=function(){return this._invalidDate},mt.ordinal=function(e){return this._ordinal.replace("%d",e)},mt.preparse=ot,mt.postformat=ot,mt.relativeTime=function(e,a,t,s){var n=this._relativeTime[t];return S(n)?n(e,a,t,s):n.replace(/%d/i,e)},mt.pastFuture=function(e,a){var t=this._relativeTime[0<e?"future":"past"];return S(t)?t(a):t.replace(/%s/i,a)},mt.set=function(e){var a,t;for(t in e)S(a=e[t])?this[t]=a:this["_"+t]=a;this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},mt.months=function(e,a){return e?_(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||xe).test(a)?"format":"standalone"][e.month()]:_(this._months)?this._months:this._months.standalone},mt.monthsShort=function(e,a){return e?_(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[xe.test(a)?"format":"standalone"][e.month()]:_(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},mt.monthsParse=function(e,a,t){var s,n,d;if(this._monthsParseExact)return function(e,a,t){var s,n,d,r=e.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],s=0;s<12;++s)d=c([2e3,s]),this._shortMonthsParse[s]=this.monthsShort(d,"").toLocaleLowerCase(),this._longMonthsParse[s]=this.months(d,"").toLocaleLowerCase();return t?"MMM"===a?-1!==(n=we.call(this._shortMonthsParse,r))?n:null:-1!==(n=we.call(this._longMonthsParse,r))?n:null:"MMM"===a?-1!==(n=we.call(this._shortMonthsParse,r))?n:-1!==(n=we.call(this._longMonthsParse,r))?n:null:-1!==(n=we.call(this._longMonthsParse,r))?n:-1!==(n=we.call(this._shortMonthsParse,r))?n:null}.call(this,e,a,t);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;s<12;s++){if(n=c([2e3,s]),t&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(n,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(n,"").replace(".","")+"$","i")),t||this._monthsParse[s]||(d="^"+this.months(n,"")+"|^"+this.monthsShort(n,""),this._monthsParse[s]=new RegExp(d.replace(".",""),"i")),t&&"MMMM"===a&&this._longMonthsParse[s].test(e))return s;if(t&&"MMM"===a&&this._shortMonthsParse[s].test(e))return s;if(!t&&this._monthsParse[s].test(e))return s}},mt.monthsRegex=function(e){return this._monthsParseExact?(h(this,"_monthsRegex")||ze.call(this),e?this._monthsStrictRegex:this._monthsRegex):(h(this,"_monthsRegex")||(this._monthsRegex=Fe),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},mt.monthsShortRegex=function(e){return this._monthsParseExact?(h(this,"_monthsRegex")||ze.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(h(this,"_monthsShortRegex")||(this._monthsShortRegex=Ae),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},mt.week=function(e){return Ie(e,this._week.dow,this._week.doy).week},mt.firstDayOfYear=function(){return this._week.doy},mt.firstDayOfWeek=function(){return this._week.dow},mt.weekdays=function(e,a){return e?_(this._weekdays)?this._weekdays[e.day()]:this._weekdays[this._weekdays.isFormat.test(a)?"format":"standalone"][e.day()]:_(this._weekdays)?this._weekdays:this._weekdays.standalone},mt.weekdaysMin=function(e){return e?this._weekdaysMin[e.day()]:this._weekdaysMin},mt.weekdaysShort=function(e){return e?this._weekdaysShort[e.day()]:this._weekdaysShort},mt.weekdaysParse=function(e,a,t){var s,n,d;if(this._weekdaysParseExact)return function(e,a,t){var s,n,d,r=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],s=0;s<7;++s)d=c([2e3,1]).day(s),this._minWeekdaysParse[s]=this.weekdaysMin(d,"").toLocaleLowerCase(),this._shortWeekdaysParse[s]=this.weekdaysShort(d,"").toLocaleLowerCase(),this._weekdaysParse[s]=this.weekdays(d,"").toLocaleLowerCase();return t?"dddd"===a?-1!==(n=we.call(this._weekdaysParse,r))?n:null:"ddd"===a?-1!==(n=we.call(this._shortWeekdaysParse,r))?n:null:-1!==(n=we.call(this._minWeekdaysParse,r))?n:null:"dddd"===a?-1!==(n=we.call(this._weekdaysParse,r))?n:-1!==(n=we.call(this._shortWeekdaysParse,r))?n:-1!==(n=we.call(this._minWeekdaysParse,r))?n:null:"ddd"===a?-1!==(n=we.call(this._shortWeekdaysParse,r))?n:-1!==(n=we.call(this._weekdaysParse,r))?n:-1!==(n=we.call(this._minWeekdaysParse,r))?n:null:-1!==(n=we.call(this._minWeekdaysParse,r))?n:-1!==(n=we.call(this._weekdaysParse,r))?n:-1!==(n=we.call(this._shortWeekdaysParse,r))?n:null}.call(this,e,a,t);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),s=0;s<7;s++){if(n=c([2e3,1]).day(s),t&&!this._fullWeekdaysParse[s]&&(this._fullWeekdaysParse[s]=new RegExp("^"+this.weekdays(n,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[s]=new RegExp("^"+this.weekdaysShort(n,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[s]=new RegExp("^"+this.weekdaysMin(n,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[s]||(d="^"+this.weekdays(n,"")+"|^"+this.weekdaysShort(n,"")+"|^"+this.weekdaysMin(n,""),this._weekdaysParse[s]=new RegExp(d.replace(".",""),"i")),t&&"dddd"===a&&this._fullWeekdaysParse[s].test(e))return s;if(t&&"ddd"===a&&this._shortWeekdaysParse[s].test(e))return s;if(t&&"dd"===a&&this._minWeekdaysParse[s].test(e))return s;if(!t&&this._weekdaysParse[s].test(e))return s}},mt.weekdaysRegex=function(e){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||Be.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(h(this,"_weekdaysRegex")||(this._weekdaysRegex=Ke),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},mt.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||Be.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(h(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=$e),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},mt.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||Be.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(h(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Ze),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},mt.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},mt.meridiem=function(e,a,t){return 11<e?t?"pm":"PM":t?"am":"AM"},_a("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var a=e%10;return e+(1===g(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")}}),l.lang=t("moment.lang is deprecated. Use moment.locale instead.",_a),l.langData=t("moment.langData is deprecated. Use moment.localeData instead.",oa);var ht=Math.abs;function Lt(e,a,t,s){var n=Ca(a,t);return e._milliseconds+=s*n._milliseconds,e._days+=s*n._days,e._months+=s*n._months,e._bubble()}function ct(e){return e<0?Math.floor(e):Math.ceil(e)}function Yt(e){return 4800*e/146097}function yt(e){return 146097*e/4800}function ft(e){return function(){return this.as(e)}}var kt=ft("ms"),pt=ft("s"),Dt=ft("m"),Tt=ft("h"),gt=ft("d"),wt=ft("w"),vt=ft("M"),Ht=ft("y");function St(e){return function(){return this.isValid()?this._data[e]:NaN}}var bt=St("milliseconds"),jt=St("seconds"),xt=St("minutes"),Pt=St("hours"),Ot=St("days"),Wt=St("months"),Et=St("years");var At=Math.round,Ft={ss:44,s:45,m:45,h:22,d:26,M:11};var zt=Math.abs;function Jt(e){return(0<e)-(e<0)||+e}function Nt(){if(!this.isValid())return this.localeData().invalidDate();var e,a,t=zt(this._milliseconds)/1e3,s=zt(this._days),n=zt(this._months);a=T((e=T(t/60))/60),t%=60,e%=60;var d=T(n/12),r=n%=12,_=s,i=a,o=e,m=t?t.toFixed(3).replace(/\.?0+$/,""):"",u=this.asSeconds();if(!u)return"P0D";var l=u<0?"-":"",M=Jt(this._months)!==Jt(u)?"-":"",h=Jt(this._days)!==Jt(u)?"-":"",L=Jt(this._milliseconds)!==Jt(u)?"-":"";return l+"P"+(d?M+d+"Y":"")+(r?M+r+"M":"")+(_?h+_+"D":"")+(i||o||m?"T":"")+(i?L+i+"H":"")+(o?L+o+"M":"")+(m?L+m+"S":"")}var Rt=Pa.prototype;Rt.isValid=function(){return this._isValid},Rt.abs=function(){var e=this._data;return this._milliseconds=ht(this._milliseconds),this._days=ht(this._days),this._months=ht(this._months),e.milliseconds=ht(e.milliseconds),e.seconds=ht(e.seconds),e.minutes=ht(e.minutes),e.hours=ht(e.hours),e.months=ht(e.months),e.years=ht(e.years),this},Rt.add=function(e,a){return Lt(this,e,a,1)},Rt.subtract=function(e,a){return Lt(this,e,a,-1)},Rt.as=function(e){if(!this.isValid())return NaN;var a,t,s=this._milliseconds;if("month"===(e=O(e))||"year"===e)return a=this._days+s/864e5,t=this._months+Yt(a),"month"===e?t:t/12;switch(a=this._days+Math.round(yt(this._months)),e){case"week":return a/7+s/6048e5;case"day":return a+s/864e5;case"hour":return 24*a+s/36e5;case"minute":return 1440*a+s/6e4;case"second":return 86400*a+s/1e3;case"millisecond":return Math.floor(864e5*a)+s;default:throw new Error("Unknown unit "+e)}},Rt.asMilliseconds=kt,Rt.asSeconds=pt,Rt.asMinutes=Dt,Rt.asHours=Tt,Rt.asDays=gt,Rt.asWeeks=wt,Rt.asMonths=vt,Rt.asYears=Ht,Rt.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*g(this._months/12):NaN},Rt._bubble=function(){var e,a,t,s,n,d=this._milliseconds,r=this._days,_=this._months,i=this._data;return 0<=d&&0<=r&&0<=_||d<=0&&r<=0&&_<=0||(d+=864e5*ct(yt(_)+r),_=r=0),i.milliseconds=d%1e3,e=T(d/1e3),i.seconds=e%60,a=T(e/60),i.minutes=a%60,t=T(a/60),i.hours=t%24,_+=n=T(Yt(r+=T(t/24))),r-=ct(yt(n)),s=T(_/12),_%=12,i.days=r,i.months=_,i.years=s,this},Rt.clone=function(){return Ca(this)},Rt.get=function(e){return e=O(e),this.isValid()?this[e+"s"]():NaN},Rt.milliseconds=bt,Rt.seconds=jt,Rt.minutes=xt,Rt.hours=Pt,Rt.days=Ot,Rt.weeks=function(){return T(this.days()/7)},Rt.months=Wt,Rt.years=Et,Rt.humanize=function(e){if(!this.isValid())return this.localeData().invalidDate();var a,t,s,n,d,r,_,i,o,m,u,l=this.localeData(),M=(t=!e,s=l,n=Ca(a=this).abs(),d=At(n.as("s")),r=At(n.as("m")),_=At(n.as("h")),i=At(n.as("d")),o=At(n.as("M")),m=At(n.as("y")),(u=d<=Ft.ss&&["s",d]||d<Ft.s&&["ss",d]||r<=1&&["m"]||r<Ft.m&&["mm",r]||_<=1&&["h"]||_<Ft.h&&["hh",_]||i<=1&&["d"]||i<Ft.d&&["dd",i]||o<=1&&["M"]||o<Ft.M&&["MM",o]||m<=1&&["y"]||["yy",m])[2]=t,u[3]=0<+a,u[4]=s,function(e,a,t,s,n){return n.relativeTime(a||1,!!t,e,s)}.apply(null,u));return e&&(M=l.pastFuture(+this,M)),l.postformat(M)},Rt.toISOString=Nt,Rt.toString=Nt,Rt.toJSON=Nt,Rt.locale=qa,Rt.localeData=Xa,Rt.toIsoString=t("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Nt),Rt.lang=Qa,I("X",0,0,"unix"),I("x",0,0,"valueOf"),ie("x",se),ie("X",/[+-]?\d+(\.\d{1,3})?/),le("X",function(e,a,t){t._d=new Date(1e3*parseFloat(e,10))}),le("x",function(e,a,t){t._d=new Date(g(e))}),l.version="2.23.0",e=Ha,l.fn=it,l.min=function(){return ja("isBefore",[].slice.call(arguments,0))},l.max=function(){return ja("isAfter",[].slice.call(arguments,0))},l.now=function(){return Date.now?Date.now():+new Date},l.utc=c,l.unix=function(e){return Ha(1e3*e)},l.months=function(e,a){return lt(e,a,"months")},l.isDate=u,l.locale=_a,l.invalid=f,l.duration=Ca,l.isMoment=D,l.weekdays=function(e,a,t){return Mt(e,a,t,"weekdays")},l.parseZone=function(){return Ha.apply(null,arguments).parseZone()},l.localeData=oa,l.isDuration=Oa,l.monthsShort=function(e,a){return lt(e,a,"monthsShort")},l.weekdaysMin=function(e,a,t){return Mt(e,a,t,"weekdaysMin")},l.defineLocale=ia,l.updateLocale=function(e,a){if(null!=a){var t,s,n=ta;null!=(s=ra(e))&&(n=s._config),(t=new j(a=b(n,a))).parentLocale=sa[e],sa[e]=t,_a(e)}else null!=sa[e]&&(null!=sa[e].parentLocale?sa[e]=sa[e].parentLocale:null!=sa[e]&&delete sa[e]);return sa[e]},l.locales=function(){return s(sa)},l.weekdaysShort=function(e,a,t){return Mt(e,a,t,"weekdaysShort")},l.normalizeUnits=O,l.relativeTimeRounding=function(e){return void 0===e?At:"function"==typeof e&&(At=e,!0)},l.relativeTimeThreshold=function(e,a){return void 0!==Ft[e]&&(void 0===a?Ft[e]:(Ft[e]=a,"s"===e&&(Ft.ss=a-1),!0))},l.calendarFormat=function(e,a){var t=e.diff(a,"days",!0);return t<-6?"sameElse":t<-1?"lastWeek":t<0?"lastDay":t<1?"sameDay":t<2?"nextDay":t<7?"nextWeek":"sameElse"},l.prototype=it,l.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},l.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(e){return/^nm$/i.test(e)},meridiem:function(e,a,t){return e<12?t?"vm":"VM":t?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[M\xf4re om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",ss:"%d sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||20<=e?"ste":"de")},week:{dow:1,doy:4}}),l.defineLocale("ar-dz",{months:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),monthsShort:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0627\u062d\u062f_\u0627\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u0623\u062d_\u0625\u062b_\u062b\u0644\u0627_\u0623\u0631_\u062e\u0645_\u062c\u0645_\u0633\u0628".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:0,doy:4}}),l.defineLocale("ar-kw",{months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062a\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0627\u062d\u062f_\u0627\u062a\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:0,doy:12}});var It={1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"},Ct=function(e){return 0===e?0:1===e?1:2===e?2:3<=e%100&&e%100<=10?3:11<=e%100?4:5},Gt={s:["\u0623\u0642\u0644 \u0645\u0646 \u062b\u0627\u0646\u064a\u0629","\u062b\u0627\u0646\u064a\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062b\u0627\u0646\u064a\u062a\u0627\u0646","\u062b\u0627\u0646\u064a\u062a\u064a\u0646"],"%d \u062b\u0648\u0627\u0646","%d \u062b\u0627\u0646\u064a\u0629","%d \u062b\u0627\u0646\u064a\u0629"],m:["\u0623\u0642\u0644 \u0645\u0646 \u062f\u0642\u064a\u0642\u0629","\u062f\u0642\u064a\u0642\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062f\u0642\u064a\u0642\u062a\u0627\u0646","\u062f\u0642\u064a\u0642\u062a\u064a\u0646"],"%d \u062f\u0642\u0627\u0626\u0642","%d \u062f\u0642\u064a\u0642\u0629","%d \u062f\u0642\u064a\u0642\u0629"],h:["\u0623\u0642\u0644 \u0645\u0646 \u0633\u0627\u0639\u0629","\u0633\u0627\u0639\u0629 \u0648\u0627\u062d\u062f\u0629",["\u0633\u0627\u0639\u062a\u0627\u0646","\u0633\u0627\u0639\u062a\u064a\u0646"],"%d \u0633\u0627\u0639\u0627\u062a","%d \u0633\u0627\u0639\u0629","%d \u0633\u0627\u0639\u0629"],d:["\u0623\u0642\u0644 \u0645\u0646 \u064a\u0648\u0645","\u064a\u0648\u0645 \u0648\u0627\u062d\u062f",["\u064a\u0648\u0645\u0627\u0646","\u064a\u0648\u0645\u064a\u0646"],"%d \u0623\u064a\u0627\u0645","%d \u064a\u0648\u0645\u064b\u0627","%d \u064a\u0648\u0645"],M:["\u0623\u0642\u0644 \u0645\u0646 \u0634\u0647\u0631","\u0634\u0647\u0631 \u0648\u0627\u062d\u062f",["\u0634\u0647\u0631\u0627\u0646","\u0634\u0647\u0631\u064a\u0646"],"%d \u0623\u0634\u0647\u0631","%d \u0634\u0647\u0631\u0627","%d \u0634\u0647\u0631"],y:["\u0623\u0642\u0644 \u0645\u0646 \u0639\u0627\u0645","\u0639\u0627\u0645 \u0648\u0627\u062d\u062f",["\u0639\u0627\u0645\u0627\u0646","\u0639\u0627\u0645\u064a\u0646"],"%d \u0623\u0639\u0648\u0627\u0645","%d \u0639\u0627\u0645\u064b\u0627","%d \u0639\u0627\u0645"]},Ut=function(r){return function(e,a,t,s){var n=Ct(e),d=Gt[r][Ct(e)];return 2===n&&(d=d[a?0:1]),d.replace(/%d/i,e)}},Vt=["\u064a\u0646\u0627\u064a\u0631","\u0641\u0628\u0631\u0627\u064a\u0631","\u0645\u0627\u0631\u0633","\u0623\u0628\u0631\u064a\u0644","\u0645\u0627\u064a\u0648","\u064a\u0648\u0646\u064a\u0648","\u064a\u0648\u0644\u064a\u0648","\u0623\u063a\u0633\u0637\u0633","\u0633\u0628\u062a\u0645\u0628\u0631","\u0623\u0643\u062a\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062f\u064a\u0633\u0645\u0628\u0631"];l.defineLocale("ar-ly",{months:Vt,monthsShort:Vt,weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\u200fM/\u200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(e){return"\u0645"===e},meridiem:function(e,a,t){return e<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u064b\u0627 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0628\u0639\u062f %s",past:"\u0645\u0646\u0630 %s",s:Ut("s"),ss:Ut("s"),m:Ut("m"),mm:Ut("m"),h:Ut("h"),hh:Ut("h"),d:Ut("d"),dd:Ut("d"),M:Ut("M"),MM:Ut("M"),y:Ut("y"),yy:Ut("y")},preparse:function(e){return e.replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return It[e]}).replace(/,/g,"\u060c")},week:{dow:6,doy:12}}),l.defineLocale("ar-ma",{months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062a\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0627\u062d\u062f_\u0627\u062a\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:6,doy:12}});var Kt={1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"},$t={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"};l.defineLocale("ar-sa",{months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a\u0648_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648_\u0623\u063a\u0633\u0637\u0633_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a\u0648_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648_\u0623\u063a\u0633\u0637\u0633_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(e){return"\u0645"===e},meridiem:function(e,a,t){return e<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},preparse:function(e){return e.replace(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,function(e){return $t[e]}).replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return Kt[e]}).replace(/,/g,"\u060c")},week:{dow:0,doy:6}}),l.defineLocale("ar-tn",{months:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),monthsShort:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:1,doy:4}});var Zt={1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"},Bt={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"},qt=function(e){return 0===e?0:1===e?1:2===e?2:3<=e%100&&e%100<=10?3:11<=e%100?4:5},Qt={s:["\u0623\u0642\u0644 \u0645\u0646 \u062b\u0627\u0646\u064a\u0629","\u062b\u0627\u0646\u064a\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062b\u0627\u0646\u064a\u062a\u0627\u0646","\u062b\u0627\u0646\u064a\u062a\u064a\u0646"],"%d \u062b\u0648\u0627\u0646","%d \u062b\u0627\u0646\u064a\u0629","%d \u062b\u0627\u0646\u064a\u0629"],m:["\u0623\u0642\u0644 \u0645\u0646 \u062f\u0642\u064a\u0642\u0629","\u062f\u0642\u064a\u0642\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062f\u0642\u064a\u0642\u062a\u0627\u0646","\u062f\u0642\u064a\u0642\u062a\u064a\u0646"],"%d \u062f\u0642\u0627\u0626\u0642","%d \u062f\u0642\u064a\u0642\u0629","%d \u062f\u0642\u064a\u0642\u0629"],h:["\u0623\u0642\u0644 \u0645\u0646 \u0633\u0627\u0639\u0629","\u0633\u0627\u0639\u0629 \u0648\u0627\u062d\u062f\u0629",["\u0633\u0627\u0639\u062a\u0627\u0646","\u0633\u0627\u0639\u062a\u064a\u0646"],"%d \u0633\u0627\u0639\u0627\u062a","%d \u0633\u0627\u0639\u0629","%d \u0633\u0627\u0639\u0629"],d:["\u0623\u0642\u0644 \u0645\u0646 \u064a\u0648\u0645","\u064a\u0648\u0645 \u0648\u0627\u062d\u062f",["\u064a\u0648\u0645\u0627\u0646","\u064a\u0648\u0645\u064a\u0646"],"%d \u0623\u064a\u0627\u0645","%d \u064a\u0648\u0645\u064b\u0627","%d \u064a\u0648\u0645"],M:["\u0623\u0642\u0644 \u0645\u0646 \u0634\u0647\u0631","\u0634\u0647\u0631 \u0648\u0627\u062d\u062f",["\u0634\u0647\u0631\u0627\u0646","\u0634\u0647\u0631\u064a\u0646"],"%d \u0623\u0634\u0647\u0631","%d \u0634\u0647\u0631\u0627","%d \u0634\u0647\u0631"],y:["\u0623\u0642\u0644 \u0645\u0646 \u0639\u0627\u0645","\u0639\u0627\u0645 \u0648\u0627\u062d\u062f",["\u0639\u0627\u0645\u0627\u0646","\u0639\u0627\u0645\u064a\u0646"],"%d \u0623\u0639\u0648\u0627\u0645","%d \u0639\u0627\u0645\u064b\u0627","%d \u0639\u0627\u0645"]},Xt=function(r){return function(e,a,t,s){var n=qt(e),d=Qt[r][qt(e)];return 2===n&&(d=d[a?0:1]),d.replace(/%d/i,e)}},es=["\u064a\u0646\u0627\u064a\u0631","\u0641\u0628\u0631\u0627\u064a\u0631","\u0645\u0627\u0631\u0633","\u0623\u0628\u0631\u064a\u0644","\u0645\u0627\u064a\u0648","\u064a\u0648\u0646\u064a\u0648","\u064a\u0648\u0644\u064a\u0648","\u0623\u063a\u0633\u0637\u0633","\u0633\u0628\u062a\u0645\u0628\u0631","\u0623\u0643\u062a\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062f\u064a\u0633\u0645\u0628\u0631"];l.defineLocale("ar",{months:es,monthsShort:es,weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\u200fM/\u200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(e){return"\u0645"===e},meridiem:function(e,a,t){return e<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u064b\u0627 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0628\u0639\u062f %s",past:"\u0645\u0646\u0630 %s",s:Xt("s"),ss:Xt("s"),m:Xt("m"),mm:Xt("m"),h:Xt("h"),hh:Xt("h"),d:Xt("d"),dd:Xt("d"),M:Xt("M"),MM:Xt("M"),y:Xt("y"),yy:Xt("y")},preparse:function(e){return e.replace(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,function(e){return Bt[e]}).replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return Zt[e]}).replace(/,/g,"\u060c")},week:{dow:6,doy:12}});var as={1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-\xfcnc\xfc",4:"-\xfcnc\xfc",100:"-\xfcnc\xfc",6:"-nc\u0131",9:"-uncu",10:"-uncu",30:"-uncu",60:"-\u0131nc\u0131",90:"-\u0131nc\u0131"};function ts(e,a,t){var s,n;return"m"===t?a?"\u0445\u0432\u0456\u043b\u0456\u043d\u0430":"\u0445\u0432\u0456\u043b\u0456\u043d\u0443":"h"===t?a?"\u0433\u0430\u0434\u0437\u0456\u043d\u0430":"\u0433\u0430\u0434\u0437\u0456\u043d\u0443":e+" "+(s=+e,n={ss:a?"\u0441\u0435\u043a\u0443\u043d\u0434\u0430_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434":"\u0441\u0435\u043a\u0443\u043d\u0434\u0443_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434",mm:a?"\u0445\u0432\u0456\u043b\u0456\u043d\u0430_\u0445\u0432\u0456\u043b\u0456\u043d\u044b_\u0445\u0432\u0456\u043b\u0456\u043d":"\u0445\u0432\u0456\u043b\u0456\u043d\u0443_\u0445\u0432\u0456\u043b\u0456\u043d\u044b_\u0445\u0432\u0456\u043b\u0456\u043d",hh:a?"\u0433\u0430\u0434\u0437\u0456\u043d\u0430_\u0433\u0430\u0434\u0437\u0456\u043d\u044b_\u0433\u0430\u0434\u0437\u0456\u043d":"\u0433\u0430\u0434\u0437\u0456\u043d\u0443_\u0433\u0430\u0434\u0437\u0456\u043d\u044b_\u0433\u0430\u0434\u0437\u0456\u043d",dd:"\u0434\u0437\u0435\u043d\u044c_\u0434\u043d\u0456_\u0434\u0437\u0451\u043d",MM:"\u043c\u0435\u0441\u044f\u0446_\u043c\u0435\u0441\u044f\u0446\u044b_\u043c\u0435\u0441\u044f\u0446\u0430\u045e",yy:"\u0433\u043e\u0434_\u0433\u0430\u0434\u044b_\u0433\u0430\u0434\u043e\u045e"}[t].split("_"),s%10==1&&s%100!=11?n[0]:2<=s%10&&s%10<=4&&(s%100<10||20<=s%100)?n[1]:n[2])}l.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ert\u0259si_\xc7\u0259r\u015f\u0259nb\u0259 ax\u015fam\u0131_\xc7\u0259r\u015f\u0259nb\u0259_C\xfcm\u0259 ax\u015fam\u0131_C\xfcm\u0259_\u015e\u0259nb\u0259".split("_"),weekdaysShort:"Baz_BzE_\xc7Ax_\xc7\u0259r_CAx_C\xfcm_\u015e\u0259n".split("_"),weekdaysMin:"Bz_BE_\xc7A_\xc7\u0259_CA_C\xfc_\u015e\u0259".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bug\xfcn saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[g\u0259l\u0259n h\u0259ft\u0259] dddd [saat] LT",lastDay:"[d\xfcn\u0259n] LT",lastWeek:"[ke\xe7\u0259n h\u0259ft\u0259] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s \u0259vv\u0259l",s:"birne\xe7\u0259 saniy\u0259",ss:"%d saniy\u0259",m:"bir d\u0259qiq\u0259",mm:"%d d\u0259qiq\u0259",h:"bir saat",hh:"%d saat",d:"bir g\xfcn",dd:"%d g\xfcn",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gec\u0259|s\u0259h\u0259r|g\xfcnd\xfcz|ax\u015fam/,isPM:function(e){return/^(g\xfcnd\xfcz|ax\u015fam)$/.test(e)},meridiem:function(e,a,t){return e<4?"gec\u0259":e<12?"s\u0259h\u0259r":e<17?"g\xfcnd\xfcz":"ax\u015fam"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0131nc\u0131|inci|nci|\xfcnc\xfc|nc\u0131|uncu)/,ordinal:function(e){if(0===e)return e+"-\u0131nc\u0131";var a=e%10;return e+(as[a]||as[e%100-a]||as[100<=e?100:null])},week:{dow:1,doy:7}}),l.defineLocale("be",{months:{format:"\u0441\u0442\u0443\u0434\u0437\u0435\u043d\u044f_\u043b\u044e\u0442\u0430\u0433\u0430_\u0441\u0430\u043a\u0430\u0432\u0456\u043a\u0430_\u043a\u0440\u0430\u0441\u0430\u0432\u0456\u043a\u0430_\u0442\u0440\u0430\u045e\u043d\u044f_\u0447\u044d\u0440\u0432\u0435\u043d\u044f_\u043b\u0456\u043f\u0435\u043d\u044f_\u0436\u043d\u0456\u045e\u043d\u044f_\u0432\u0435\u0440\u0430\u0441\u043d\u044f_\u043a\u0430\u0441\u0442\u0440\u044b\u0447\u043d\u0456\u043a\u0430_\u043b\u0456\u0441\u0442\u0430\u043f\u0430\u0434\u0430_\u0441\u043d\u0435\u0436\u043d\u044f".split("_"),standalone:"\u0441\u0442\u0443\u0434\u0437\u0435\u043d\u044c_\u043b\u044e\u0442\u044b_\u0441\u0430\u043a\u0430\u0432\u0456\u043a_\u043a\u0440\u0430\u0441\u0430\u0432\u0456\u043a_\u0442\u0440\u0430\u0432\u0435\u043d\u044c_\u0447\u044d\u0440\u0432\u0435\u043d\u044c_\u043b\u0456\u043f\u0435\u043d\u044c_\u0436\u043d\u0456\u0432\u0435\u043d\u044c_\u0432\u0435\u0440\u0430\u0441\u0435\u043d\u044c_\u043a\u0430\u0441\u0442\u0440\u044b\u0447\u043d\u0456\u043a_\u043b\u0456\u0441\u0442\u0430\u043f\u0430\u0434_\u0441\u043d\u0435\u0436\u0430\u043d\u044c".split("_")},monthsShort:"\u0441\u0442\u0443\u0434_\u043b\u044e\u0442_\u0441\u0430\u043a_\u043a\u0440\u0430\u0441_\u0442\u0440\u0430\u0432_\u0447\u044d\u0440\u0432_\u043b\u0456\u043f_\u0436\u043d\u0456\u0432_\u0432\u0435\u0440_\u043a\u0430\u0441\u0442_\u043b\u0456\u0441\u0442_\u0441\u043d\u0435\u0436".split("_"),weekdays:{format:"\u043d\u044f\u0434\u0437\u0435\u043b\u044e_\u043f\u0430\u043d\u044f\u0434\u0437\u0435\u043b\u0430\u043a_\u0430\u045e\u0442\u043e\u0440\u0430\u043a_\u0441\u0435\u0440\u0430\u0434\u0443_\u0447\u0430\u0446\u0432\u0435\u0440_\u043f\u044f\u0442\u043d\u0456\u0446\u0443_\u0441\u0443\u0431\u043e\u0442\u0443".split("_"),standalone:"\u043d\u044f\u0434\u0437\u0435\u043b\u044f_\u043f\u0430\u043d\u044f\u0434\u0437\u0435\u043b\u0430\u043a_\u0430\u045e\u0442\u043e\u0440\u0430\u043a_\u0441\u0435\u0440\u0430\u0434\u0430_\u0447\u0430\u0446\u0432\u0435\u0440_\u043f\u044f\u0442\u043d\u0456\u0446\u0430_\u0441\u0443\u0431\u043e\u0442\u0430".split("_"),isFormat:/\[ ?[\u0423\u0443\u045e] ?(?:\u043c\u0456\u043d\u0443\u043b\u0443\u044e|\u043d\u0430\u0441\u0442\u0443\u043f\u043d\u0443\u044e)? ?\] ?dddd/},weekdaysShort:"\u043d\u0434_\u043f\u043d_\u0430\u0442_\u0441\u0440_\u0447\u0446_\u043f\u0442_\u0441\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0430\u0442_\u0441\u0440_\u0447\u0446_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0433.",LLL:"D MMMM YYYY \u0433., HH:mm",LLLL:"dddd, D MMMM YYYY \u0433., HH:mm"},calendar:{sameDay:"[\u0421\u0451\u043d\u043d\u044f \u045e] LT",nextDay:"[\u0417\u0430\u045e\u0442\u0440\u0430 \u045e] LT",lastDay:"[\u0423\u0447\u043e\u0440\u0430 \u045e] LT",nextWeek:function(){return"[\u0423] dddd [\u045e] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[\u0423 \u043c\u0456\u043d\u0443\u043b\u0443\u044e] dddd [\u045e] LT";case 1:case 2:case 4:return"[\u0423 \u043c\u0456\u043d\u0443\u043b\u044b] dddd [\u045e] LT"}},sameElse:"L"},relativeTime:{future:"\u043f\u0440\u0430\u0437 %s",past:"%s \u0442\u0430\u043c\u0443",s:"\u043d\u0435\u043a\u0430\u043b\u044c\u043a\u0456 \u0441\u0435\u043a\u0443\u043d\u0434",m:ts,mm:ts,h:ts,hh:ts,d:"\u0434\u0437\u0435\u043d\u044c",dd:ts,M:"\u043c\u0435\u0441\u044f\u0446",MM:ts,y:"\u0433\u043e\u0434",yy:ts},meridiemParse:/\u043d\u043e\u0447\u044b|\u0440\u0430\u043d\u0456\u0446\u044b|\u0434\u043d\u044f|\u0432\u0435\u0447\u0430\u0440\u0430/,isPM:function(e){return/^(\u0434\u043d\u044f|\u0432\u0435\u0447\u0430\u0440\u0430)$/.test(e)},meridiem:function(e,a,t){return e<4?"\u043d\u043e\u0447\u044b":e<12?"\u0440\u0430\u043d\u0456\u0446\u044b":e<17?"\u0434\u043d\u044f":"\u0432\u0435\u0447\u0430\u0440\u0430"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0456|\u044b|\u0433\u0430)/,ordinal:function(e,a){switch(a){case"M":case"d":case"DDD":case"w":case"W":return e%10!=2&&e%10!=3||e%100==12||e%100==13?e+"-\u044b":e+"-\u0456";case"D":return e+"-\u0433\u0430";default:return e}},week:{dow:1,doy:7}}),l.defineLocale("bg",{months:"\u044f\u043d\u0443\u0430\u0440\u0438_\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0439_\u044e\u043d\u0438_\u044e\u043b\u0438_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438_\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438_\u043d\u043e\u0435\u043c\u0432\u0440\u0438_\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438".split("_"),monthsShort:"\u044f\u043d\u0440_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u044e\u043d\u0438_\u044e\u043b\u0438_\u0430\u0432\u0433_\u0441\u0435\u043f_\u043e\u043a\u0442_\u043d\u043e\u0435_\u0434\u0435\u043a".split("_"),weekdays:"\u043d\u0435\u0434\u0435\u043b\u044f_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u044f\u0434\u0430_\u0447\u0435\u0442\u0432\u044a\u0440\u0442\u044a\u043a_\u043f\u0435\u0442\u044a\u043a_\u0441\u044a\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0435\u0434_\u043f\u043e\u043d_\u0432\u0442\u043e_\u0441\u0440\u044f_\u0447\u0435\u0442_\u043f\u0435\u0442_\u0441\u044a\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[\u0414\u043d\u0435\u0441 \u0432] LT",nextDay:"[\u0423\u0442\u0440\u0435 \u0432] LT",nextWeek:"dddd [\u0432] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430 \u0432] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[\u0412 \u0438\u0437\u043c\u0438\u043d\u0430\u043b\u0430\u0442\u0430] dddd [\u0432] LT";case 1:case 2:case 4:case 5:return"[\u0412 \u0438\u0437\u043c\u0438\u043d\u0430\u043b\u0438\u044f] dddd [\u0432] LT"}},sameElse:"L"},relativeTime:{future:"\u0441\u043b\u0435\u0434 %s",past:"\u043f\u0440\u0435\u0434\u0438 %s",s:"\u043d\u044f\u043a\u043e\u043b\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434\u0438",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434\u0438",m:"\u043c\u0438\u043d\u0443\u0442\u0430",mm:"%d \u043c\u0438\u043d\u0443\u0442\u0438",h:"\u0447\u0430\u0441",hh:"%d \u0447\u0430\u0441\u0430",d:"\u0434\u0435\u043d",dd:"%d \u0434\u043d\u0438",M:"\u043c\u0435\u0441\u0435\u0446",MM:"%d \u043c\u0435\u0441\u0435\u0446\u0430",y:"\u0433\u043e\u0434\u0438\u043d\u0430",yy:"%d \u0433\u043e\u0434\u0438\u043d\u0438"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0435\u0432|\u0435\u043d|\u0442\u0438|\u0432\u0438|\u0440\u0438|\u043c\u0438)/,ordinal:function(e){var a=e%10,t=e%100;return 0===e?e+"-\u0435\u0432":0===t?e+"-\u0435\u043d":10<t&&t<20?e+"-\u0442\u0438":1===a?e+"-\u0432\u0438":2===a?e+"-\u0440\u0438":7===a||8===a?e+"-\u043c\u0438":e+"-\u0442\u0438"},week:{dow:1,doy:7}}),l.defineLocale("bm",{months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_M\u025bkalo_Zuw\u025bnkalo_Zuluyekalo_Utikalo_S\u025btanburukalo_\u0254kut\u0254burukalo_Nowanburukalo_Desanburukalo".split("_"),monthsShort:"Zan_Few_Mar_Awi_M\u025b_Zuw_Zul_Uti_S\u025bt_\u0254ku_Now_Des".split("_"),weekdays:"Kari_Nt\u025bn\u025bn_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),weekdaysShort:"Kar_Nt\u025b_Tar_Ara_Ala_Jum_Sib".split("_"),weekdaysMin:"Ka_Nt_Ta_Ar_Al_Ju_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM [tile] D [san] YYYY",LLL:"MMMM [tile] D [san] YYYY [l\u025br\u025b] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [l\u025br\u025b] HH:mm"},calendar:{sameDay:"[Bi l\u025br\u025b] LT",nextDay:"[Sini l\u025br\u025b] LT",nextWeek:"dddd [don l\u025br\u025b] LT",lastDay:"[Kunu l\u025br\u025b] LT",lastWeek:"dddd [t\u025bm\u025bnen l\u025br\u025b] LT",sameElse:"L"},relativeTime:{future:"%s k\u0254n\u0254",past:"a b\u025b %s b\u0254",s:"sanga dama dama",ss:"sekondi %d",m:"miniti kelen",mm:"miniti %d",h:"l\u025br\u025b kelen",hh:"l\u025br\u025b %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"},week:{dow:1,doy:4}});var ss={1:"\u09e7",2:"\u09e8",3:"\u09e9",4:"\u09ea",5:"\u09eb",6:"\u09ec",7:"\u09ed",8:"\u09ee",9:"\u09ef",0:"\u09e6"},ns={"\u09e7":"1","\u09e8":"2","\u09e9":"3","\u09ea":"4","\u09eb":"5","\u09ec":"6","\u09ed":"7","\u09ee":"8","\u09ef":"9","\u09e6":"0"};l.defineLocale("bn",{months:"\u099c\u09be\u09a8\u09c1\u09df\u09be\u09b0\u09c0_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09df\u09be\u09b0\u09bf_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0_\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0_\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0_\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0".split("_"),monthsShort:"\u099c\u09be\u09a8\u09c1_\u09ab\u09c7\u09ac_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2_\u0986\u0997_\u09b8\u09c7\u09aa\u09cd\u099f_\u0985\u0995\u09cd\u099f\u09cb_\u09a8\u09ad\u09c7_\u09a1\u09bf\u09b8\u09c7".split("_"),weekdays:"\u09b0\u09ac\u09bf\u09ac\u09be\u09b0_\u09b8\u09cb\u09ae\u09ac\u09be\u09b0_\u09ae\u0999\u09cd\u0997\u09b2\u09ac\u09be\u09b0_\u09ac\u09c1\u09a7\u09ac\u09be\u09b0_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf\u09ac\u09be\u09b0_\u09b6\u09c1\u0995\u09cd\u09b0\u09ac\u09be\u09b0_\u09b6\u09a8\u09bf\u09ac\u09be\u09b0".split("_"),weekdaysShort:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997\u09b2_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),weekdaysMin:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9\u0983_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),longDateFormat:{LT:"A h:mm \u09b8\u09ae\u09df",LTS:"A h:mm:ss \u09b8\u09ae\u09df",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u09b8\u09ae\u09df",LLLL:"dddd, D MMMM YYYY, A h:mm \u09b8\u09ae\u09df"},calendar:{sameDay:"[\u0986\u099c] LT",nextDay:"[\u0986\u0997\u09be\u09ae\u09c0\u0995\u09be\u09b2] LT",nextWeek:"dddd, LT",lastDay:"[\u0997\u09a4\u0995\u09be\u09b2] LT",lastWeek:"[\u0997\u09a4] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u09aa\u09b0\u09c7",past:"%s \u0986\u0997\u09c7",s:"\u0995\u09df\u09c7\u0995 \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",ss:"%d \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",m:"\u098f\u0995 \u09ae\u09bf\u09a8\u09bf\u099f",mm:"%d \u09ae\u09bf\u09a8\u09bf\u099f",h:"\u098f\u0995 \u0998\u09a8\u09cd\u099f\u09be",hh:"%d \u0998\u09a8\u09cd\u099f\u09be",d:"\u098f\u0995 \u09a6\u09bf\u09a8",dd:"%d \u09a6\u09bf\u09a8",M:"\u098f\u0995 \u09ae\u09be\u09b8",MM:"%d \u09ae\u09be\u09b8",y:"\u098f\u0995 \u09ac\u099b\u09b0",yy:"%d \u09ac\u099b\u09b0"},preparse:function(e){return e.replace(/[\u09e7\u09e8\u09e9\u09ea\u09eb\u09ec\u09ed\u09ee\u09ef\u09e6]/g,function(e){return ns[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return ss[e]})},meridiemParse:/\u09b0\u09be\u09a4|\u09b8\u0995\u09be\u09b2|\u09a6\u09c1\u09aa\u09c1\u09b0|\u09ac\u09bf\u0995\u09be\u09b2|\u09b0\u09be\u09a4/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u09b0\u09be\u09a4"===a&&4<=e||"\u09a6\u09c1\u09aa\u09c1\u09b0"===a&&e<5||"\u09ac\u09bf\u0995\u09be\u09b2"===a?e+12:e},meridiem:function(e,a,t){return e<4?"\u09b0\u09be\u09a4":e<10?"\u09b8\u0995\u09be\u09b2":e<17?"\u09a6\u09c1\u09aa\u09c1\u09b0":e<20?"\u09ac\u09bf\u0995\u09be\u09b2":"\u09b0\u09be\u09a4"},week:{dow:0,doy:6}});var ds={1:"\u0f21",2:"\u0f22",3:"\u0f23",4:"\u0f24",5:"\u0f25",6:"\u0f26",7:"\u0f27",8:"\u0f28",9:"\u0f29",0:"\u0f20"},rs={"\u0f21":"1","\u0f22":"2","\u0f23":"3","\u0f24":"4","\u0f25":"5","\u0f26":"6","\u0f27":"7","\u0f28":"8","\u0f29":"9","\u0f20":"0"};function _s(e,a,t){var s,n,d;return e+" "+(s={mm:"munutenn",MM:"miz",dd:"devezh"}[t],2!==e?s:void 0!==(d={m:"v",b:"v",d:"z"})[(n=s).charAt(0)]?d[n.charAt(0)]+n.substring(1):n)}function is(e,a,t){var s=e+" ";switch(t){case"ss":return s+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return a?"jedna minuta":"jedne minute";case"mm":return s+=1===e?"minuta":2===e||3===e||4===e?"minute":"minuta";case"h":return a?"jedan sat":"jednog sata";case"hh":return s+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return s+=1===e?"dan":"dana";case"MM":return s+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return s+=1===e?"godina":2===e||3===e||4===e?"godine":"godina"}}l.defineLocale("bo",{months:"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f44\u0f0b\u0f54\u0f7c_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f66\u0f74\u0f58\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f5e\u0f72\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f63\u0f94\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0fb2\u0f74\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f62\u0f92\u0fb1\u0f51\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f42\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54".split("_"),monthsShort:"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f44\u0f0b\u0f54\u0f7c_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f66\u0f74\u0f58\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f5e\u0f72\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f63\u0f94\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0fb2\u0f74\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f62\u0f92\u0fb1\u0f51\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f42\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54".split("_"),weekdays:"\u0f42\u0f5f\u0f60\u0f0b\u0f49\u0f72\u0f0b\u0f58\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f5f\u0fb3\u0f0b\u0f56\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74_\u0f42\u0f5f\u0f60\u0f0b\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b".split("_"),weekdaysShort:"\u0f49\u0f72\u0f0b\u0f58\u0f0b_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b_\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b_\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b_\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74_\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b_\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b".split("_"),weekdaysMin:"\u0f49\u0f72\u0f0b\u0f58\u0f0b_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b_\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b_\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b_\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74_\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b_\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[\u0f51\u0f72\u0f0b\u0f62\u0f72\u0f44] LT",nextDay:"[\u0f66\u0f44\u0f0b\u0f49\u0f72\u0f53] LT",nextWeek:"[\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f55\u0fb2\u0f42\u0f0b\u0f62\u0f97\u0f7a\u0f66\u0f0b\u0f58], LT",lastDay:"[\u0f41\u0f0b\u0f66\u0f44] LT",lastWeek:"[\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f55\u0fb2\u0f42\u0f0b\u0f58\u0f50\u0f60\u0f0b\u0f58] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0f63\u0f0b",past:"%s \u0f66\u0f94\u0f53\u0f0b\u0f63",s:"\u0f63\u0f58\u0f0b\u0f66\u0f44",ss:"%d \u0f66\u0f90\u0f62\u0f0b\u0f46\u0f0d",m:"\u0f66\u0f90\u0f62\u0f0b\u0f58\u0f0b\u0f42\u0f45\u0f72\u0f42",mm:"%d \u0f66\u0f90\u0f62\u0f0b\u0f58",h:"\u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51\u0f0b\u0f42\u0f45\u0f72\u0f42",hh:"%d \u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51",d:"\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f45\u0f72\u0f42",dd:"%d \u0f49\u0f72\u0f53\u0f0b",M:"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f45\u0f72\u0f42",MM:"%d \u0f5f\u0fb3\u0f0b\u0f56",y:"\u0f63\u0f7c\u0f0b\u0f42\u0f45\u0f72\u0f42",yy:"%d \u0f63\u0f7c"},preparse:function(e){return e.replace(/[\u0f21\u0f22\u0f23\u0f24\u0f25\u0f26\u0f27\u0f28\u0f29\u0f20]/g,function(e){return rs[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return ds[e]})},meridiemParse:/\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c|\u0f5e\u0f7c\u0f42\u0f66\u0f0b\u0f40\u0f66|\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f74\u0f44|\u0f51\u0f42\u0f7c\u0f44\u0f0b\u0f51\u0f42|\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c"===a&&4<=e||"\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f74\u0f44"===a&&e<5||"\u0f51\u0f42\u0f7c\u0f44\u0f0b\u0f51\u0f42"===a?e+12:e},meridiem:function(e,a,t){return e<4?"\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c":e<10?"\u0f5e\u0f7c\u0f42\u0f66\u0f0b\u0f40\u0f66":e<17?"\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f74\u0f44":e<20?"\u0f51\u0f42\u0f7c\u0f44\u0f0b\u0f51\u0f42":"\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c"},week:{dow:0,doy:6}}),l.defineLocale("br",{months:"Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h[e]mm A",LTS:"h[e]mm:ss A",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY h[e]mm A",LLLL:"dddd, D [a viz] MMMM YYYY h[e]mm A"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc'hoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec'h da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s 'zo",s:"un nebeud segondenno\xf9",ss:"%d eilenn",m:"ur vunutenn",mm:_s,h:"un eur",hh:"%d eur",d:"un devezh",dd:_s,M:"ur miz",MM:_s,y:"ur bloaz",yy:function(e){switch(function e(a){return 9<a?e(a%10):a}(e)){case 1:case 3:case 4:case 5:case 9:return e+" bloaz";default:return e+" vloaz"}}},dayOfMonthOrdinalParse:/\d{1,2}(a\xf1|vet)/,ordinal:function(e){return e+(1===e?"a\xf1":"vet")},week:{dow:1,doy:4}}),l.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[ju\u010der u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[pro\u0161lu] dddd [u] LT";case 6:return"[pro\u0161le] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[pro\u0161li] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:is,m:is,mm:is,h:is,hh:is,d:"dan",dd:is,M:"mjesec",MM:is,y:"godinu",yy:is},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),l.defineLocale("ca",{months:{standalone:"gener_febrer_mar\xe7_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),format:"de gener_de febrer_de mar\xe7_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._mar\xe7_abr._maig_juny_jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dt_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[dem\xe0 a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"d'aqu\xed %s",past:"fa %s",s:"uns segons",ss:"%d segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|\xe8|a)/,ordinal:function(e,a){var t=1===e?"r":2===e?"n":3===e?"r":4===e?"t":"\xe8";return"w"!==a&&"W"!==a||(t="a"),e+t},week:{dow:1,doy:4}});var os="leden_\xfanor_b\u0159ezen_duben_kv\u011bten_\u010derven_\u010dervenec_srpen_z\xe1\u0159\xed_\u0159\xedjen_listopad_prosinec".split("_"),ms="led_\xfano_b\u0159e_dub_kv\u011b_\u010dvn_\u010dvc_srp_z\xe1\u0159_\u0159\xedj_lis_pro".split("_");function us(e){return 1<e&&e<5&&1!=~~(e/10)}function ls(e,a,t,s){var n=e+" ";switch(t){case"s":return a||s?"p\xe1r sekund":"p\xe1r sekundami";case"ss":return a||s?n+(us(e)?"sekundy":"sekund"):n+"sekundami";break;case"m":return a?"minuta":s?"minutu":"minutou";case"mm":return a||s?n+(us(e)?"minuty":"minut"):n+"minutami";break;case"h":return a?"hodina":s?"hodinu":"hodinou";case"hh":return a||s?n+(us(e)?"hodiny":"hodin"):n+"hodinami";break;case"d":return a||s?"den":"dnem";case"dd":return a||s?n+(us(e)?"dny":"dn\xed"):n+"dny";break;case"M":return a||s?"m\u011bs\xedc":"m\u011bs\xedcem";case"MM":return a||s?n+(us(e)?"m\u011bs\xedce":"m\u011bs\xedc\u016f"):n+"m\u011bs\xedci";break;case"y":return a||s?"rok":"rokem";case"yy":return a||s?n+(us(e)?"roky":"let"):n+"lety";break}}function Ms(e,a,t,s){var n={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return a?n[t][0]:n[t][1]}function hs(e,a,t,s){var n={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return a?n[t][0]:n[t][1]}function Ls(e,a,t,s){var n={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return a?n[t][0]:n[t][1]}l.defineLocale("cs",{months:os,monthsShort:ms,monthsParse:function(e,a){var t,s=[];for(t=0;t<12;t++)s[t]=new RegExp("^"+e[t]+"$|^"+a[t]+"$","i");return s}(os,ms),shortMonthsParse:function(e){var a,t=[];for(a=0;a<12;a++)t[a]=new RegExp("^"+e[a]+"$","i");return t}(ms),longMonthsParse:function(e){var a,t=[];for(a=0;a<12;a++)t[a]=new RegExp("^"+e[a]+"$","i");return t}(os),weekdays:"ned\u011ble_pond\u011bl\xed_\xfater\xfd_st\u0159eda_\u010dtvrtek_p\xe1tek_sobota".split("_"),weekdaysShort:"ne_po_\xfat_st_\u010dt_p\xe1_so".split("_"),weekdaysMin:"ne_po_\xfat_st_\u010dt_p\xe1_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[z\xedtra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v ned\u011bli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve st\u0159edu v] LT";case 4:return"[ve \u010dtvrtek v] LT";case 5:return"[v p\xe1tek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[v\u010dera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou ned\u011bli v] LT";case 1:case 2:return"[minul\xe9] dddd [v] LT";case 3:return"[minulou st\u0159edu v] LT";case 4:case 5:return"[minul\xfd] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"p\u0159ed %s",s:ls,ss:ls,m:ls,mm:ls,h:ls,hh:ls,d:ls,dd:ls,M:ls,MM:ls,y:ls,yy:ls},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),l.defineLocale("cv",{months:"\u043a\u04d1\u0440\u043b\u0430\u0447_\u043d\u0430\u0440\u04d1\u0441_\u043f\u0443\u0448_\u0430\u043a\u0430_\u043c\u0430\u0439_\u04ab\u04d7\u0440\u0442\u043c\u0435_\u0443\u0442\u04d1_\u04ab\u0443\u0440\u043b\u0430_\u0430\u0432\u04d1\u043d_\u044e\u043f\u0430_\u0447\u04f3\u043a_\u0440\u0430\u0448\u0442\u0430\u0432".split("_"),monthsShort:"\u043a\u04d1\u0440_\u043d\u0430\u0440_\u043f\u0443\u0448_\u0430\u043a\u0430_\u043c\u0430\u0439_\u04ab\u04d7\u0440_\u0443\u0442\u04d1_\u04ab\u0443\u0440_\u0430\u0432\u043d_\u044e\u043f\u0430_\u0447\u04f3\u043a_\u0440\u0430\u0448".split("_"),weekdays:"\u0432\u044b\u0440\u0441\u0430\u0440\u043d\u0438\u043a\u0443\u043d_\u0442\u0443\u043d\u0442\u0438\u043a\u0443\u043d_\u044b\u0442\u043b\u0430\u0440\u0438\u043a\u0443\u043d_\u044e\u043d\u043a\u0443\u043d_\u043a\u04d7\u04ab\u043d\u0435\u0440\u043d\u0438\u043a\u0443\u043d_\u044d\u0440\u043d\u0435\u043a\u0443\u043d_\u0448\u04d1\u043c\u0430\u0442\u043a\u0443\u043d".split("_"),weekdaysShort:"\u0432\u044b\u0440_\u0442\u0443\u043d_\u044b\u0442\u043b_\u044e\u043d_\u043a\u04d7\u04ab_\u044d\u0440\u043d_\u0448\u04d1\u043c".split("_"),weekdaysMin:"\u0432\u0440_\u0442\u043d_\u044b\u0442_\u044e\u043d_\u043a\u04ab_\u044d\u0440_\u0448\u043c".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [\u04ab\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u04d1\u0445\u04d7\u043d] D[-\u043c\u04d7\u0448\u04d7]",LLL:"YYYY [\u04ab\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u04d1\u0445\u04d7\u043d] D[-\u043c\u04d7\u0448\u04d7], HH:mm",LLLL:"dddd, YYYY [\u04ab\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u04d1\u0445\u04d7\u043d] D[-\u043c\u04d7\u0448\u04d7], HH:mm"},calendar:{sameDay:"[\u041f\u0430\u044f\u043d] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",nextDay:"[\u042b\u0440\u0430\u043d] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",lastDay:"[\u04d6\u043d\u0435\u0440] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",nextWeek:"[\u04aa\u0438\u0442\u0435\u0441] dddd LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",lastWeek:"[\u0418\u0440\u0442\u043d\u04d7] dddd LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",sameElse:"L"},relativeTime:{future:function(e){return e+(/\u0441\u0435\u0445\u0435\u0442$/i.exec(e)?"\u0440\u0435\u043d":/\u04ab\u0443\u043b$/i.exec(e)?"\u0442\u0430\u043d":"\u0440\u0430\u043d")},past:"%s \u043a\u0430\u044f\u043b\u043b\u0430",s:"\u043f\u04d7\u0440-\u0438\u043a \u04ab\u0435\u043a\u043a\u0443\u043d\u0442",ss:"%d \u04ab\u0435\u043a\u043a\u0443\u043d\u0442",m:"\u043f\u04d7\u0440 \u043c\u0438\u043d\u0443\u0442",mm:"%d \u043c\u0438\u043d\u0443\u0442",h:"\u043f\u04d7\u0440 \u0441\u0435\u0445\u0435\u0442",hh:"%d \u0441\u0435\u0445\u0435\u0442",d:"\u043f\u04d7\u0440 \u043a\u0443\u043d",dd:"%d \u043a\u0443\u043d",M:"\u043f\u04d7\u0440 \u0443\u0439\u04d1\u0445",MM:"%d \u0443\u0439\u04d1\u0445",y:"\u043f\u04d7\u0440 \u04ab\u0443\u043b",yy:"%d \u04ab\u0443\u043b"},dayOfMonthOrdinalParse:/\d{1,2}-\u043c\u04d7\u0448/,ordinal:"%d-\u043c\u04d7\u0448",week:{dow:1,doy:7}}),l.defineLocale("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn \xf4l",s:"ychydig eiliadau",ss:"%d eiliad",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},dayOfMonthOrdinalParse:/\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,ordinal:function(e){var a="";return 20<e?a=40===e||50===e||60===e||80===e||100===e?"fed":"ain":0<e&&(a=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"][e]),e+a},week:{dow:1,doy:4}}),l.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"s\xf8ndag_mandag_tirsdag_onsdag_torsdag_fredag_l\xf8rdag".split("_"),weekdaysShort:"s\xf8n_man_tir_ons_tor_fre_l\xf8r".split("_"),weekdaysMin:"s\xf8_ma_ti_on_to_fr_l\xf8".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"p\xe5 dddd [kl.] LT",lastDay:"[i g\xe5r kl.] LT",lastWeek:"[i] dddd[s kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"f\xe5 sekunder",ss:"%d sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en m\xe5ned",MM:"%d m\xe5neder",y:"et \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),l.defineLocale("de-at",{months:"J\xe4nner_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"J\xe4n._Feb._M\xe4rz_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:Ms,mm:"%d Minuten",h:Ms,hh:"%d Stunden",d:Ms,dd:Ms,M:Ms,MM:Ms,y:Ms,yy:Ms},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),l.defineLocale("de-ch",{months:"Januar_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._M\xe4rz_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:hs,mm:"%d Minuten",h:hs,hh:"%d Stunden",d:hs,dd:hs,M:hs,MM:hs,y:hs,yy:hs},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),l.defineLocale("de",{months:"Januar_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._M\xe4rz_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:Ls,mm:"%d Minuten",h:Ls,hh:"%d Stunden",d:Ls,dd:Ls,M:Ls,MM:Ls,y:Ls,yy:Ls},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});var cs=["\u0796\u07ac\u0782\u07aa\u0787\u07a6\u0783\u07a9","\u078a\u07ac\u0784\u07b0\u0783\u07aa\u0787\u07a6\u0783\u07a9","\u0789\u07a7\u0783\u07a8\u0797\u07aa","\u0787\u07ad\u0795\u07b0\u0783\u07a9\u078d\u07aa","\u0789\u07ad","\u0796\u07ab\u0782\u07b0","\u0796\u07aa\u078d\u07a6\u0787\u07a8","\u0787\u07af\u078e\u07a6\u0790\u07b0\u0793\u07aa","\u0790\u07ac\u0795\u07b0\u0793\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa","\u0787\u07ae\u0786\u07b0\u0793\u07af\u0784\u07a6\u0783\u07aa","\u0782\u07ae\u0788\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa","\u0791\u07a8\u0790\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa"],Ys=["\u0787\u07a7\u078b\u07a8\u0787\u07b0\u078c\u07a6","\u0780\u07af\u0789\u07a6","\u0787\u07a6\u0782\u07b0\u078e\u07a7\u0783\u07a6","\u0784\u07aa\u078b\u07a6","\u0784\u07aa\u0783\u07a7\u0790\u07b0\u078a\u07a6\u078c\u07a8","\u0780\u07aa\u0786\u07aa\u0783\u07aa","\u0780\u07ae\u0782\u07a8\u0780\u07a8\u0783\u07aa"];l.defineLocale("dv",{months:cs,monthsShort:cs,weekdays:Ys,weekdaysShort:Ys,weekdaysMin:"\u0787\u07a7\u078b\u07a8_\u0780\u07af\u0789\u07a6_\u0787\u07a6\u0782\u07b0_\u0784\u07aa\u078b\u07a6_\u0784\u07aa\u0783\u07a7_\u0780\u07aa\u0786\u07aa_\u0780\u07ae\u0782\u07a8".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0789\u0786|\u0789\u078a/,isPM:function(e){return"\u0789\u078a"===e},meridiem:function(e,a,t){return e<12?"\u0789\u0786":"\u0789\u078a"},calendar:{sameDay:"[\u0789\u07a8\u0787\u07a6\u078b\u07aa] LT",nextDay:"[\u0789\u07a7\u078b\u07a6\u0789\u07a7] LT",nextWeek:"dddd LT",lastDay:"[\u0787\u07a8\u0787\u07b0\u0794\u07ac] LT",lastWeek:"[\u078a\u07a7\u0787\u07a8\u078c\u07aa\u0788\u07a8] dddd LT",sameElse:"L"},relativeTime:{future:"\u078c\u07ac\u0783\u07ad\u078e\u07a6\u0787\u07a8 %s",past:"\u0786\u07aa\u0783\u07a8\u0782\u07b0 %s",s:"\u0790\u07a8\u0786\u07aa\u0782\u07b0\u078c\u07aa\u0786\u07ae\u0785\u07ac\u0787\u07b0",ss:"d% \u0790\u07a8\u0786\u07aa\u0782\u07b0\u078c\u07aa",m:"\u0789\u07a8\u0782\u07a8\u0793\u07ac\u0787\u07b0",mm:"\u0789\u07a8\u0782\u07a8\u0793\u07aa %d",h:"\u078e\u07a6\u0791\u07a8\u0787\u07a8\u0783\u07ac\u0787\u07b0",hh:"\u078e\u07a6\u0791\u07a8\u0787\u07a8\u0783\u07aa %d",d:"\u078b\u07aa\u0788\u07a6\u0780\u07ac\u0787\u07b0",dd:"\u078b\u07aa\u0788\u07a6\u0790\u07b0 %d",M:"\u0789\u07a6\u0780\u07ac\u0787\u07b0",MM:"\u0789\u07a6\u0790\u07b0 %d",y:"\u0787\u07a6\u0780\u07a6\u0783\u07ac\u0787\u07b0",yy:"\u0787\u07a6\u0780\u07a6\u0783\u07aa %d"},preparse:function(e){return e.replace(/\u060c/g,",")},postformat:function(e){return e.replace(/,/g,"\u060c")},week:{dow:7,doy:12}}),l.defineLocale("el",{monthsNominativeEl:"\u0399\u03b1\u03bd\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2_\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2_\u039c\u03ac\u03c1\u03c4\u03b9\u03bf\u03c2_\u0391\u03c0\u03c1\u03af\u03bb\u03b9\u03bf\u03c2_\u039c\u03ac\u03b9\u03bf\u03c2_\u0399\u03bf\u03cd\u03bd\u03b9\u03bf\u03c2_\u0399\u03bf\u03cd\u03bb\u03b9\u03bf\u03c2_\u0391\u03cd\u03b3\u03bf\u03c5\u03c3\u03c4\u03bf\u03c2_\u03a3\u03b5\u03c0\u03c4\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2_\u039f\u03ba\u03c4\u03ce\u03b2\u03c1\u03b9\u03bf\u03c2_\u039d\u03bf\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2_\u0394\u03b5\u03ba\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2".split("_"),monthsGenitiveEl:"\u0399\u03b1\u03bd\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5_\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5_\u039c\u03b1\u03c1\u03c4\u03af\u03bf\u03c5_\u0391\u03c0\u03c1\u03b9\u03bb\u03af\u03bf\u03c5_\u039c\u03b1\u0390\u03bf\u03c5_\u0399\u03bf\u03c5\u03bd\u03af\u03bf\u03c5_\u0399\u03bf\u03c5\u03bb\u03af\u03bf\u03c5_\u0391\u03c5\u03b3\u03bf\u03cd\u03c3\u03c4\u03bf\u03c5_\u03a3\u03b5\u03c0\u03c4\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5_\u039f\u03ba\u03c4\u03c9\u03b2\u03c1\u03af\u03bf\u03c5_\u039d\u03bf\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5_\u0394\u03b5\u03ba\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5".split("_"),months:function(e,a){return e?"string"==typeof a&&/D/.test(a.substring(0,a.indexOf("MMMM")))?this._monthsGenitiveEl[e.month()]:this._monthsNominativeEl[e.month()]:this._monthsNominativeEl},monthsShort:"\u0399\u03b1\u03bd_\u03a6\u03b5\u03b2_\u039c\u03b1\u03c1_\u0391\u03c0\u03c1_\u039c\u03b1\u03ca_\u0399\u03bf\u03c5\u03bd_\u0399\u03bf\u03c5\u03bb_\u0391\u03c5\u03b3_\u03a3\u03b5\u03c0_\u039f\u03ba\u03c4_\u039d\u03bf\u03b5_\u0394\u03b5\u03ba".split("_"),weekdays:"\u039a\u03c5\u03c1\u03b9\u03b1\u03ba\u03ae_\u0394\u03b5\u03c5\u03c4\u03ad\u03c1\u03b1_\u03a4\u03c1\u03af\u03c4\u03b7_\u03a4\u03b5\u03c4\u03ac\u03c1\u03c4\u03b7_\u03a0\u03ad\u03bc\u03c0\u03c4\u03b7_\u03a0\u03b1\u03c1\u03b1\u03c3\u03ba\u03b5\u03c5\u03ae_\u03a3\u03ac\u03b2\u03b2\u03b1\u03c4\u03bf".split("_"),weekdaysShort:"\u039a\u03c5\u03c1_\u0394\u03b5\u03c5_\u03a4\u03c1\u03b9_\u03a4\u03b5\u03c4_\u03a0\u03b5\u03bc_\u03a0\u03b1\u03c1_\u03a3\u03b1\u03b2".split("_"),weekdaysMin:"\u039a\u03c5_\u0394\u03b5_\u03a4\u03c1_\u03a4\u03b5_\u03a0\u03b5_\u03a0\u03b1_\u03a3\u03b1".split("_"),meridiem:function(e,a,t){return 11<e?t?"\u03bc\u03bc":"\u039c\u039c":t?"\u03c0\u03bc":"\u03a0\u039c"},isPM:function(e){return"\u03bc"===(e+"").toLowerCase()[0]},meridiemParse:/[\u03a0\u039c]\.?\u039c?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[\u03a3\u03ae\u03bc\u03b5\u03c1\u03b1 {}] LT",nextDay:"[\u0391\u03cd\u03c1\u03b9\u03bf {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[\u03a7\u03b8\u03b5\u03c2 {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[\u03c4\u03bf \u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03bf] dddd [{}] LT";default:return"[\u03c4\u03b7\u03bd \u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03b7] dddd [{}] LT"}},sameElse:"L"},calendar:function(e,a){var t=this._calendarEl[e],s=a&&a.hours();return S(t)&&(t=t.apply(a)),t.replace("{}",s%12==1?"\u03c3\u03c4\u03b7":"\u03c3\u03c4\u03b9\u03c2")},relativeTime:{future:"\u03c3\u03b5 %s",past:"%s \u03c0\u03c1\u03b9\u03bd",s:"\u03bb\u03af\u03b3\u03b1 \u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03cc\u03bb\u03b5\u03c0\u03c4\u03b1",ss:"%d \u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03cc\u03bb\u03b5\u03c0\u03c4\u03b1",m:"\u03ad\u03bd\u03b1 \u03bb\u03b5\u03c0\u03c4\u03cc",mm:"%d \u03bb\u03b5\u03c0\u03c4\u03ac",h:"\u03bc\u03af\u03b1 \u03ce\u03c1\u03b1",hh:"%d \u03ce\u03c1\u03b5\u03c2",d:"\u03bc\u03af\u03b1 \u03bc\u03ad\u03c1\u03b1",dd:"%d \u03bc\u03ad\u03c1\u03b5\u03c2",M:"\u03ad\u03bd\u03b1\u03c2 \u03bc\u03ae\u03bd\u03b1\u03c2",MM:"%d \u03bc\u03ae\u03bd\u03b5\u03c2",y:"\u03ad\u03bd\u03b1\u03c2 \u03c7\u03c1\u03cc\u03bd\u03bf\u03c2",yy:"%d \u03c7\u03c1\u03cc\u03bd\u03b9\u03b1"},dayOfMonthOrdinalParse:/\d{1,2}\u03b7/,ordinal:"%d\u03b7",week:{dow:1,doy:4}}),l.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")},week:{dow:1,doy:4}}),l.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")}}),l.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")},week:{dow:1,doy:4}}),l.defineLocale("en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")},week:{dow:1,doy:4}}),l.defineLocale("en-il",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")}}),l.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")},week:{dow:1,doy:4}}),l.defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_a\u016dgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_a\u016dg_sep_okt_nov_dec".split("_"),weekdays:"diman\u0109o_lundo_mardo_merkredo_\u0135a\u016ddo_vendredo_sabato".split("_"),weekdaysShort:"dim_lun_mard_merk_\u0135a\u016d_ven_sab".split("_"),weekdaysMin:"di_lu_ma_me_\u0135a_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D[-a de] MMMM, YYYY",LLL:"D[-a de] MMMM, YYYY HH:mm",LLLL:"dddd, [la] D[-a de] MMMM, YYYY HH:mm"},meridiemParse:/[ap]\.t\.m/i,isPM:function(e){return"p"===e.charAt(0).toLowerCase()},meridiem:function(e,a,t){return 11<e?t?"p.t.m.":"P.T.M.":t?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodia\u016d je] LT",nextDay:"[Morga\u016d je] LT",nextWeek:"dddd [je] LT",lastDay:"[Hiera\u016d je] LT",lastWeek:"[pasinta] dddd [je] LT",sameElse:"L"},relativeTime:{future:"post %s",past:"anta\u016d %s",s:"sekundoj",ss:"%d sekundoj",m:"minuto",mm:"%d minutoj",h:"horo",hh:"%d horoj",d:"tago",dd:"%d tagoj",M:"monato",MM:"%d monatoj",y:"jaro",yy:"%d jaroj"},dayOfMonthOrdinalParse:/\d{1,2}a/,ordinal:"%da",week:{dow:1,doy:7}});var ys="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),fs="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),ks=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],ps=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;l.defineLocale("es-do",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,a){return e?/-MMM-/.test(a)?fs[e.month()]:ys[e.month()]:ys},monthsRegex:ps,monthsShortRegex:ps,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:ks,longMonthsParse:ks,shortMonthsParse:ks,weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[ma\xf1ana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}});var Ds="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),Ts="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_");l.defineLocale("es-us",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,a){return e?/-MMM-/.test(a)?Ts[e.month()]:Ds[e.month()]:Ds},monthsParseExact:!0,weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"MMMM [de] D [de] YYYY",LLL:"MMMM [de] D [de] YYYY h:mm A",LLLL:"dddd, MMMM [de] D [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[ma\xf1ana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:0,doy:6}});var gs="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),ws="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),vs=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],Hs=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;function Ss(e,a,t,s){var n={s:["m\xf5ne sekundi","m\xf5ni sekund","paar sekundit"],ss:[e+"sekundi",e+"sekundit"],m:["\xfche minuti","\xfcks minut"],mm:[e+" minuti",e+" minutit"],h:["\xfche tunni","tund aega","\xfcks tund"],hh:[e+" tunni",e+" tundi"],d:["\xfche p\xe4eva","\xfcks p\xe4ev"],M:["kuu aja","kuu aega","\xfcks kuu"],MM:[e+" kuu",e+" kuud"],y:["\xfche aasta","aasta","\xfcks aasta"],yy:[e+" aasta",e+" aastat"]};return a?n[t][2]?n[t][2]:n[t][1]:s?n[t][0]:n[t][1]}l.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,a){return e?/-MMM-/.test(a)?ws[e.month()]:gs[e.month()]:gs},monthsRegex:Hs,monthsShortRegex:Hs,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:vs,longMonthsParse:vs,shortMonthsParse:vs,weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[ma\xf1ana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}}),l.defineLocale("et",{months:"jaanuar_veebruar_m\xe4rts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_m\xe4rts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"p\xfchap\xe4ev_esmasp\xe4ev_teisip\xe4ev_kolmap\xe4ev_neljap\xe4ev_reede_laup\xe4ev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[T\xe4na,] LT",nextDay:"[Homme,] LT",nextWeek:"[J\xe4rgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s p\xe4rast",past:"%s tagasi",s:Ss,ss:Ss,m:Ss,mm:Ss,h:Ss,hh:Ss,d:Ss,dd:"%d p\xe4eva",M:Ss,MM:Ss,y:Ss,yy:Ss},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),l.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),monthsParseExact:!0,weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",ss:"%d segundo",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});var bs={1:"\u06f1",2:"\u06f2",3:"\u06f3",4:"\u06f4",5:"\u06f5",6:"\u06f6",7:"\u06f7",8:"\u06f8",9:"\u06f9",0:"\u06f0"},js={"\u06f1":"1","\u06f2":"2","\u06f3":"3","\u06f4":"4","\u06f5":"5","\u06f6":"6","\u06f7":"7","\u06f8":"8","\u06f9":"9","\u06f0":"0"};l.defineLocale("fa",{months:"\u0698\u0627\u0646\u0648\u06cc\u0647_\u0641\u0648\u0631\u06cc\u0647_\u0645\u0627\u0631\u0633_\u0622\u0648\u0631\u06cc\u0644_\u0645\u0647_\u0698\u0648\u0626\u0646_\u0698\u0648\u0626\u06cc\u0647_\u0627\u0648\u062a_\u0633\u067e\u062a\u0627\u0645\u0628\u0631_\u0627\u06a9\u062a\u0628\u0631_\u0646\u0648\u0627\u0645\u0628\u0631_\u062f\u0633\u0627\u0645\u0628\u0631".split("_"),monthsShort:"\u0698\u0627\u0646\u0648\u06cc\u0647_\u0641\u0648\u0631\u06cc\u0647_\u0645\u0627\u0631\u0633_\u0622\u0648\u0631\u06cc\u0644_\u0645\u0647_\u0698\u0648\u0626\u0646_\u0698\u0648\u0626\u06cc\u0647_\u0627\u0648\u062a_\u0633\u067e\u062a\u0627\u0645\u0628\u0631_\u0627\u06a9\u062a\u0628\u0631_\u0646\u0648\u0627\u0645\u0628\u0631_\u062f\u0633\u0627\u0645\u0628\u0631".split("_"),weekdays:"\u06cc\u06a9\u200c\u0634\u0646\u0628\u0647_\u062f\u0648\u0634\u0646\u0628\u0647_\u0633\u0647\u200c\u0634\u0646\u0628\u0647_\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647_\u067e\u0646\u062c\u200c\u0634\u0646\u0628\u0647_\u062c\u0645\u0639\u0647_\u0634\u0646\u0628\u0647".split("_"),weekdaysShort:"\u06cc\u06a9\u200c\u0634\u0646\u0628\u0647_\u062f\u0648\u0634\u0646\u0628\u0647_\u0633\u0647\u200c\u0634\u0646\u0628\u0647_\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647_\u067e\u0646\u062c\u200c\u0634\u0646\u0628\u0647_\u062c\u0645\u0639\u0647_\u0634\u0646\u0628\u0647".split("_"),weekdaysMin:"\u06cc_\u062f_\u0633_\u0686_\u067e_\u062c_\u0634".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/\u0642\u0628\u0644 \u0627\u0632 \u0638\u0647\u0631|\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631/,isPM:function(e){return/\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631/.test(e)},meridiem:function(e,a,t){return e<12?"\u0642\u0628\u0644 \u0627\u0632 \u0638\u0647\u0631":"\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631"},calendar:{sameDay:"[\u0627\u0645\u0631\u0648\u0632 \u0633\u0627\u0639\u062a] LT",nextDay:"[\u0641\u0631\u062f\u0627 \u0633\u0627\u0639\u062a] LT",nextWeek:"dddd [\u0633\u0627\u0639\u062a] LT",lastDay:"[\u062f\u06cc\u0631\u0648\u0632 \u0633\u0627\u0639\u062a] LT",lastWeek:"dddd [\u067e\u06cc\u0634] [\u0633\u0627\u0639\u062a] LT",sameElse:"L"},relativeTime:{future:"\u062f\u0631 %s",past:"%s \u067e\u06cc\u0634",s:"\u0686\u0646\u062f \u062b\u0627\u0646\u06cc\u0647",ss:"\u062b\u0627\u0646\u06cc\u0647 d%",m:"\u06cc\u06a9 \u062f\u0642\u06cc\u0642\u0647",mm:"%d \u062f\u0642\u06cc\u0642\u0647",h:"\u06cc\u06a9 \u0633\u0627\u0639\u062a",hh:"%d \u0633\u0627\u0639\u062a",d:"\u06cc\u06a9 \u0631\u0648\u0632",dd:"%d \u0631\u0648\u0632",M:"\u06cc\u06a9 \u0645\u0627\u0647",MM:"%d \u0645\u0627\u0647",y:"\u06cc\u06a9 \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"},preparse:function(e){return e.replace(/[\u06f0-\u06f9]/g,function(e){return js[e]}).replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return bs[e]}).replace(/,/g,"\u060c")},dayOfMonthOrdinalParse:/\d{1,2}\u0645/,ordinal:"%d\u0645",week:{dow:6,doy:12}});var xs="nolla yksi kaksi kolme nelj\xe4 viisi kuusi seitsem\xe4n kahdeksan yhdeks\xe4n".split(" "),Ps=["nolla","yhden","kahden","kolmen","nelj\xe4n","viiden","kuuden",xs[7],xs[8],xs[9]];function Os(e,a,t,s){var n,d,r="";switch(t){case"s":return s?"muutaman sekunnin":"muutama sekunti";case"ss":return s?"sekunnin":"sekuntia";case"m":return s?"minuutin":"minuutti";case"mm":r=s?"minuutin":"minuuttia";break;case"h":return s?"tunnin":"tunti";case"hh":r=s?"tunnin":"tuntia";break;case"d":return s?"p\xe4iv\xe4n":"p\xe4iv\xe4";case"dd":r=s?"p\xe4iv\xe4n":"p\xe4iv\xe4\xe4";break;case"M":return s?"kuukauden":"kuukausi";case"MM":r=s?"kuukauden":"kuukautta";break;case"y":return s?"vuoden":"vuosi";case"yy":r=s?"vuoden":"vuotta";break}return d=s,r=((n=e)<10?d?Ps[n]:xs[n]:n)+" "+r}l.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kes\xe4kuu_hein\xe4kuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kes\xe4_hein\xe4_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[t\xe4n\xe4\xe4n] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s p\xe4\xe4st\xe4",past:"%s sitten",s:Os,ss:Os,m:Os,mm:Os,h:Os,hh:Os,d:Os,dd:Os,M:Os,MM:Os,y:Os,yy:Os},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),l.defineLocale("fo",{months:"januar_februar_mars_apr\xedl_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sunnudagur_m\xe1nadagur_t\xfdsdagur_mikudagur_h\xf3sdagur_fr\xedggjadagur_leygardagur".split("_"),weekdaysShort:"sun_m\xe1n_t\xfds_mik_h\xf3s_fr\xed_ley".split("_"),weekdaysMin:"su_m\xe1_t\xfd_mi_h\xf3_fr_le".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D. MMMM, YYYY HH:mm"},calendar:{sameDay:"[\xcd dag kl.] LT",nextDay:"[\xcd morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[\xcd gj\xe1r kl.] LT",lastWeek:"[s\xed\xf0stu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s s\xed\xf0ani",s:"f\xe1 sekund",ss:"%d sekundir",m:"ein minutt",mm:"%d minuttir",h:"ein t\xedmi",hh:"%d t\xedmar",d:"ein dagur",dd:"%d dagar",M:"ein m\xe1na\xf0i",MM:"%d m\xe1na\xf0ir",y:"eitt \xe1r",yy:"%d \xe1r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),l.defineLocale("fr-ca",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd\u2019hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,a){switch(a){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}}}),l.defineLocale("fr-ch",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd\u2019hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,a){switch(a){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}}),l.defineLocale("fr",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd\u2019hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:function(e,a){switch(a){case"D":return e+(1===e?"er":"");default:case"M":case"Q":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}});var Ws="jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_"),Es="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_");l.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(e,a){return e?/-MMM-/.test(a)?Es[e.month()]:Ws[e.month()]:Ws},monthsParseExact:!0,weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[hjoed om] LT",nextDay:"[moarn om] LT",nextWeek:"dddd [om] LT",lastDay:"[juster om] LT",lastWeek:"[\xf4fr\xfbne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",ss:"%d sekonden",m:"ien min\xfat",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||20<=e?"ste":"de")},week:{dow:1,doy:4}});function As(e,a,t,s){var n={s:["thodde secondanim","thodde second"],ss:[e+" secondanim",e+" second"],m:["eka mintan","ek minute"],mm:[e+" mintanim",e+" mintam"],h:["eka horan","ek hor"],hh:[e+" horanim",e+" horam"],d:["eka disan","ek dis"],dd:[e+" disanim",e+" dis"],M:["eka mhoinean","ek mhoino"],MM:[e+" mhoineanim",e+" mhoine"],y:["eka vorsan","ek voros"],yy:[e+" vorsanim",e+" vorsam"]};return a?n[t][0]:n[t][1]}l.defineLocale("gd",{months:["Am Faoilleach","An Gearran","Am M\xe0rt","An Giblean","An C\xe8itean","An t-\xd2gmhios","An t-Iuchar","An L\xf9nastal","An t-Sultain","An D\xe0mhair","An t-Samhain","An D\xf9bhlachd"],monthsShort:["Faoi","Gear","M\xe0rt","Gibl","C\xe8it","\xd2gmh","Iuch","L\xf9n","Sult","D\xe0mh","Samh","D\xf9bh"],monthsParseExact:!0,weekdays:["Did\xf2mhnaich","Diluain","Dim\xe0irt","Diciadain","Diardaoin","Dihaoine","Disathairne"],weekdaysShort:["Did","Dil","Dim","Dic","Dia","Dih","Dis"],weekdaysMin:["D\xf2","Lu","M\xe0","Ci","Ar","Ha","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[An-diugh aig] LT",nextDay:"[A-m\xe0ireach aig] LT",nextWeek:"dddd [aig] LT",lastDay:"[An-d\xe8 aig] LT",lastWeek:"dddd [seo chaidh] [aig] LT",sameElse:"L"},relativeTime:{future:"ann an %s",past:"bho chionn %s",s:"beagan diogan",ss:"%d diogan",m:"mionaid",mm:"%d mionaidean",h:"uair",hh:"%d uairean",d:"latha",dd:"%d latha",M:"m\xecos",MM:"%d m\xecosan",y:"bliadhna",yy:"%d bliadhna"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){return e+(1===e?"d":e%10==2?"na":"mh")},week:{dow:1,doy:4}}),l.defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xu\xf1o_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xu\xf1._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_m\xe9rcores_xoves_venres_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._m\xe9r._xov._ven._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_m\xe9_xo_ve_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"\xe1s":"\xe1")+"] LT"},nextDay:function(){return"[ma\xf1\xe1 "+(1!==this.hours()?"\xe1s":"\xe1")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"\xe1s":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"\xe1":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"\xe1s":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(e){return 0===e.indexOf("un")?"n"+e:"en "+e},past:"hai %s",s:"uns segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}}),l.defineLocale("gom-latn",{months:"Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr".split("_"),monthsShort:"Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Aitar_Somar_Mongllar_Budvar_Brestar_Sukrar_Son'var".split("_"),weekdaysShort:"Ait._Som._Mon._Bud._Bre._Suk._Son.".split("_"),weekdaysMin:"Ai_Sm_Mo_Bu_Br_Su_Sn".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [vazta]",LTS:"A h:mm:ss [vazta]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [vazta]",LLLL:"dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]",llll:"ddd, D MMM YYYY, A h:mm [vazta]"},calendar:{sameDay:"[Aiz] LT",nextDay:"[Faleam] LT",nextWeek:"[Ieta to] dddd[,] LT",lastDay:"[Kal] LT",lastWeek:"[Fatlo] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s adim",s:As,ss:As,m:As,mm:As,h:As,hh:As,d:As,dd:As,M:As,MM:As,y:As,yy:As},dayOfMonthOrdinalParse:/\d{1,2}(er)/,ordinal:function(e,a){switch(a){case"D":return e+"er";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return e}},week:{dow:1,doy:4},meridiemParse:/rati|sokalli|donparam|sanje/,meridiemHour:function(e,a){return 12===e&&(e=0),"rati"===a?e<4?e:e+12:"sokalli"===a?e:"donparam"===a?12<e?e:e+12:"sanje"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"rati":e<12?"sokalli":e<16?"donparam":e<20?"sanje":"rati"}});var Fs={1:"\u0ae7",2:"\u0ae8",3:"\u0ae9",4:"\u0aea",5:"\u0aeb",6:"\u0aec",7:"\u0aed",8:"\u0aee",9:"\u0aef",0:"\u0ae6"},zs={"\u0ae7":"1","\u0ae8":"2","\u0ae9":"3","\u0aea":"4","\u0aeb":"5","\u0aec":"6","\u0aed":"7","\u0aee":"8","\u0aef":"9","\u0ae6":"0"};l.defineLocale("gu",{months:"\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1\u0a86\u0ab0\u0ac0_\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1\u0a86\u0ab0\u0ac0_\u0aae\u0abe\u0ab0\u0acd\u0a9a_\u0a8f\u0aaa\u0acd\u0ab0\u0abf\u0ab2_\u0aae\u0ac7_\u0a9c\u0ac2\u0aa8_\u0a9c\u0ac1\u0ab2\u0abe\u0a88_\u0a91\u0a97\u0ab8\u0acd\u0a9f_\u0ab8\u0aaa\u0acd\u0a9f\u0ac7\u0aae\u0acd\u0aac\u0ab0_\u0a91\u0a95\u0acd\u0a9f\u0acd\u0aac\u0ab0_\u0aa8\u0ab5\u0ac7\u0aae\u0acd\u0aac\u0ab0_\u0aa1\u0abf\u0ab8\u0ac7\u0aae\u0acd\u0aac\u0ab0".split("_"),monthsShort:"\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1._\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1._\u0aae\u0abe\u0ab0\u0acd\u0a9a_\u0a8f\u0aaa\u0acd\u0ab0\u0abf._\u0aae\u0ac7_\u0a9c\u0ac2\u0aa8_\u0a9c\u0ac1\u0ab2\u0abe._\u0a91\u0a97._\u0ab8\u0aaa\u0acd\u0a9f\u0ac7._\u0a91\u0a95\u0acd\u0a9f\u0acd._\u0aa8\u0ab5\u0ac7._\u0aa1\u0abf\u0ab8\u0ac7.".split("_"),monthsParseExact:!0,weekdays:"\u0ab0\u0ab5\u0abf\u0ab5\u0abe\u0ab0_\u0ab8\u0acb\u0aae\u0ab5\u0abe\u0ab0_\u0aae\u0a82\u0a97\u0ab3\u0ab5\u0abe\u0ab0_\u0aac\u0ac1\u0aa7\u0acd\u0ab5\u0abe\u0ab0_\u0a97\u0ac1\u0ab0\u0ac1\u0ab5\u0abe\u0ab0_\u0ab6\u0ac1\u0a95\u0acd\u0ab0\u0ab5\u0abe\u0ab0_\u0ab6\u0aa8\u0abf\u0ab5\u0abe\u0ab0".split("_"),weekdaysShort:"\u0ab0\u0ab5\u0abf_\u0ab8\u0acb\u0aae_\u0aae\u0a82\u0a97\u0ab3_\u0aac\u0ac1\u0aa7\u0acd_\u0a97\u0ac1\u0ab0\u0ac1_\u0ab6\u0ac1\u0a95\u0acd\u0ab0_\u0ab6\u0aa8\u0abf".split("_"),weekdaysMin:"\u0ab0_\u0ab8\u0acb_\u0aae\u0a82_\u0aac\u0ac1_\u0a97\u0ac1_\u0ab6\u0ac1_\u0ab6".split("_"),longDateFormat:{LT:"A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7",LTS:"A h:mm:ss \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7",LLLL:"dddd, D MMMM YYYY, A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7"},calendar:{sameDay:"[\u0a86\u0a9c] LT",nextDay:"[\u0a95\u0abe\u0ab2\u0ac7] LT",nextWeek:"dddd, LT",lastDay:"[\u0a97\u0a87\u0a95\u0abe\u0ab2\u0ac7] LT",lastWeek:"[\u0aaa\u0abe\u0a9b\u0ab2\u0abe] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0aae\u0abe",past:"%s \u0aaa\u0ac7\u0ab9\u0ab2\u0abe",s:"\u0a85\u0aae\u0ac1\u0a95 \u0aaa\u0ab3\u0acb",ss:"%d \u0ab8\u0ac7\u0a95\u0a82\u0aa1",m:"\u0a8f\u0a95 \u0aae\u0abf\u0aa8\u0abf\u0a9f",mm:"%d \u0aae\u0abf\u0aa8\u0abf\u0a9f",h:"\u0a8f\u0a95 \u0a95\u0ab2\u0abe\u0a95",hh:"%d \u0a95\u0ab2\u0abe\u0a95",d:"\u0a8f\u0a95 \u0aa6\u0abf\u0ab5\u0ab8",dd:"%d \u0aa6\u0abf\u0ab5\u0ab8",M:"\u0a8f\u0a95 \u0aae\u0ab9\u0abf\u0aa8\u0acb",MM:"%d \u0aae\u0ab9\u0abf\u0aa8\u0acb",y:"\u0a8f\u0a95 \u0ab5\u0ab0\u0acd\u0ab7",yy:"%d \u0ab5\u0ab0\u0acd\u0ab7"},preparse:function(e){return e.replace(/[\u0ae7\u0ae8\u0ae9\u0aea\u0aeb\u0aec\u0aed\u0aee\u0aef\u0ae6]/g,function(e){return zs[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return Fs[e]})},meridiemParse:/\u0ab0\u0abe\u0aa4|\u0aac\u0aaa\u0acb\u0ab0|\u0ab8\u0ab5\u0abe\u0ab0|\u0ab8\u0abe\u0a82\u0a9c/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0ab0\u0abe\u0aa4"===a?e<4?e:e+12:"\u0ab8\u0ab5\u0abe\u0ab0"===a?e:"\u0aac\u0aaa\u0acb\u0ab0"===a?10<=e?e:e+12:"\u0ab8\u0abe\u0a82\u0a9c"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u0ab0\u0abe\u0aa4":e<10?"\u0ab8\u0ab5\u0abe\u0ab0":e<17?"\u0aac\u0aaa\u0acb\u0ab0":e<20?"\u0ab8\u0abe\u0a82\u0a9c":"\u0ab0\u0abe\u0aa4"},week:{dow:0,doy:6}}),l.defineLocale("he",{months:"\u05d9\u05e0\u05d5\u05d0\u05e8_\u05e4\u05d1\u05e8\u05d5\u05d0\u05e8_\u05de\u05e8\u05e5_\u05d0\u05e4\u05e8\u05d9\u05dc_\u05de\u05d0\u05d9_\u05d9\u05d5\u05e0\u05d9_\u05d9\u05d5\u05dc\u05d9_\u05d0\u05d5\u05d2\u05d5\u05e1\u05d8_\u05e1\u05e4\u05d8\u05de\u05d1\u05e8_\u05d0\u05d5\u05e7\u05d8\u05d5\u05d1\u05e8_\u05e0\u05d5\u05d1\u05de\u05d1\u05e8_\u05d3\u05e6\u05de\u05d1\u05e8".split("_"),monthsShort:"\u05d9\u05e0\u05d5\u05f3_\u05e4\u05d1\u05e8\u05f3_\u05de\u05e8\u05e5_\u05d0\u05e4\u05e8\u05f3_\u05de\u05d0\u05d9_\u05d9\u05d5\u05e0\u05d9_\u05d9\u05d5\u05dc\u05d9_\u05d0\u05d5\u05d2\u05f3_\u05e1\u05e4\u05d8\u05f3_\u05d0\u05d5\u05e7\u05f3_\u05e0\u05d5\u05d1\u05f3_\u05d3\u05e6\u05de\u05f3".split("_"),weekdays:"\u05e8\u05d0\u05e9\u05d5\u05df_\u05e9\u05e0\u05d9_\u05e9\u05dc\u05d9\u05e9\u05d9_\u05e8\u05d1\u05d9\u05e2\u05d9_\u05d7\u05de\u05d9\u05e9\u05d9_\u05e9\u05d9\u05e9\u05d9_\u05e9\u05d1\u05ea".split("_"),weekdaysShort:"\u05d0\u05f3_\u05d1\u05f3_\u05d2\u05f3_\u05d3\u05f3_\u05d4\u05f3_\u05d5\u05f3_\u05e9\u05f3".split("_"),weekdaysMin:"\u05d0_\u05d1_\u05d2_\u05d3_\u05d4_\u05d5_\u05e9".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [\u05d1]MMMM YYYY",LLL:"D [\u05d1]MMMM YYYY HH:mm",LLLL:"dddd, D [\u05d1]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[\u05d4\u05d9\u05d5\u05dd \u05d1\u05be]LT",nextDay:"[\u05de\u05d7\u05e8 \u05d1\u05be]LT",nextWeek:"dddd [\u05d1\u05e9\u05e2\u05d4] LT",lastDay:"[\u05d0\u05ea\u05de\u05d5\u05dc \u05d1\u05be]LT",lastWeek:"[\u05d1\u05d9\u05d5\u05dd] dddd [\u05d4\u05d0\u05d7\u05e8\u05d5\u05df \u05d1\u05e9\u05e2\u05d4] LT",sameElse:"L"},relativeTime:{future:"\u05d1\u05e2\u05d5\u05d3 %s",past:"\u05dc\u05e4\u05e0\u05d9 %s",s:"\u05de\u05e1\u05e4\u05e8 \u05e9\u05e0\u05d9\u05d5\u05ea",ss:"%d \u05e9\u05e0\u05d9\u05d5\u05ea",m:"\u05d3\u05e7\u05d4",mm:"%d \u05d3\u05e7\u05d5\u05ea",h:"\u05e9\u05e2\u05d4",hh:function(e){return 2===e?"\u05e9\u05e2\u05ea\u05d9\u05d9\u05dd":e+" \u05e9\u05e2\u05d5\u05ea"},d:"\u05d9\u05d5\u05dd",dd:function(e){return 2===e?"\u05d9\u05d5\u05de\u05d9\u05d9\u05dd":e+" \u05d9\u05de\u05d9\u05dd"},M:"\u05d7\u05d5\u05d3\u05e9",MM:function(e){return 2===e?"\u05d7\u05d5\u05d3\u05e9\u05d9\u05d9\u05dd":e+" \u05d7\u05d5\u05d3\u05e9\u05d9\u05dd"},y:"\u05e9\u05e0\u05d4",yy:function(e){return 2===e?"\u05e9\u05e0\u05ea\u05d9\u05d9\u05dd":e%10==0&&10!==e?e+" \u05e9\u05e0\u05d4":e+" \u05e9\u05e0\u05d9\u05dd"}},meridiemParse:/\u05d0\u05d7\u05d4"\u05e6|\u05dc\u05e4\u05e0\u05d4"\u05e6|\u05d0\u05d7\u05e8\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd|\u05dc\u05e4\u05e0\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd|\u05dc\u05e4\u05e0\u05d5\u05ea \u05d1\u05d5\u05e7\u05e8|\u05d1\u05d1\u05d5\u05e7\u05e8|\u05d1\u05e2\u05e8\u05d1/i,isPM:function(e){return/^(\u05d0\u05d7\u05d4"\u05e6|\u05d0\u05d7\u05e8\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd|\u05d1\u05e2\u05e8\u05d1)$/.test(e)},meridiem:function(e,a,t){return e<5?"\u05dc\u05e4\u05e0\u05d5\u05ea \u05d1\u05d5\u05e7\u05e8":e<10?"\u05d1\u05d1\u05d5\u05e7\u05e8":e<12?t?'\u05dc\u05e4\u05e0\u05d4"\u05e6':"\u05dc\u05e4\u05e0\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd":e<18?t?'\u05d0\u05d7\u05d4"\u05e6':"\u05d0\u05d7\u05e8\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd":"\u05d1\u05e2\u05e8\u05d1"}});var Js={1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096a",5:"\u096b",6:"\u096c",7:"\u096d",8:"\u096e",9:"\u096f",0:"\u0966"},Ns={"\u0967":"1","\u0968":"2","\u0969":"3","\u096a":"4","\u096b":"5","\u096c":"6","\u096d":"7","\u096e":"8","\u096f":"9","\u0966":"0"};function Rs(e,a,t){var s=e+" ";switch(t){case"ss":return s+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return a?"jedna minuta":"jedne minute";case"mm":return s+=1===e?"minuta":2===e||3===e||4===e?"minute":"minuta";case"h":return a?"jedan sat":"jednog sata";case"hh":return s+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return s+=1===e?"dan":"dana";case"MM":return s+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return s+=1===e?"godina":2===e||3===e||4===e?"godine":"godina"}}l.defineLocale("hi",{months:"\u091c\u0928\u0935\u0930\u0940_\u092b\u093c\u0930\u0935\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948\u0932_\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932\u093e\u0908_\u0905\u0917\u0938\u094d\u0924_\u0938\u093f\u0924\u092e\u094d\u092c\u0930_\u0905\u0915\u094d\u091f\u0942\u092c\u0930_\u0928\u0935\u092e\u094d\u092c\u0930_\u0926\u093f\u0938\u092e\u094d\u092c\u0930".split("_"),monthsShort:"\u091c\u0928._\u092b\u093c\u0930._\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948._\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932._\u0905\u0917._\u0938\u093f\u0924._\u0905\u0915\u094d\u091f\u0942._\u0928\u0935._\u0926\u093f\u0938.".split("_"),monthsParseExact:!0,weekdays:"\u0930\u0935\u093f\u0935\u093e\u0930_\u0938\u094b\u092e\u0935\u093e\u0930_\u092e\u0902\u0917\u0932\u0935\u093e\u0930_\u092c\u0941\u0927\u0935\u093e\u0930_\u0917\u0941\u0930\u0942\u0935\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930_\u0936\u0928\u093f\u0935\u093e\u0930".split("_"),weekdaysShort:"\u0930\u0935\u093f_\u0938\u094b\u092e_\u092e\u0902\u0917\u0932_\u092c\u0941\u0927_\u0917\u0941\u0930\u0942_\u0936\u0941\u0915\u094d\u0930_\u0936\u0928\u093f".split("_"),weekdaysMin:"\u0930_\u0938\u094b_\u092e\u0902_\u092c\u0941_\u0917\u0941_\u0936\u0941_\u0936".split("_"),longDateFormat:{LT:"A h:mm \u092c\u091c\u0947",LTS:"A h:mm:ss \u092c\u091c\u0947",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u092c\u091c\u0947",LLLL:"dddd, D MMMM YYYY, A h:mm \u092c\u091c\u0947"},calendar:{sameDay:"[\u0906\u091c] LT",nextDay:"[\u0915\u0932] LT",nextWeek:"dddd, LT",lastDay:"[\u0915\u0932] LT",lastWeek:"[\u092a\u093f\u091b\u0932\u0947] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u092e\u0947\u0902",past:"%s \u092a\u0939\u0932\u0947",s:"\u0915\u0941\u091b \u0939\u0940 \u0915\u094d\u0937\u0923",ss:"%d \u0938\u0947\u0915\u0902\u0921",m:"\u090f\u0915 \u092e\u093f\u0928\u091f",mm:"%d \u092e\u093f\u0928\u091f",h:"\u090f\u0915 \u0918\u0902\u091f\u093e",hh:"%d \u0918\u0902\u091f\u0947",d:"\u090f\u0915 \u0926\u093f\u0928",dd:"%d \u0926\u093f\u0928",M:"\u090f\u0915 \u092e\u0939\u0940\u0928\u0947",MM:"%d \u092e\u0939\u0940\u0928\u0947",y:"\u090f\u0915 \u0935\u0930\u094d\u0937",yy:"%d \u0935\u0930\u094d\u0937"},preparse:function(e){return e.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g,function(e){return Ns[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return Js[e]})},meridiemParse:/\u0930\u093e\u0924|\u0938\u0941\u092c\u0939|\u0926\u094b\u092a\u0939\u0930|\u0936\u093e\u092e/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0930\u093e\u0924"===a?e<4?e:e+12:"\u0938\u0941\u092c\u0939"===a?e:"\u0926\u094b\u092a\u0939\u0930"===a?10<=e?e:e+12:"\u0936\u093e\u092e"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u0930\u093e\u0924":e<10?"\u0938\u0941\u092c\u0939":e<17?"\u0926\u094b\u092a\u0939\u0930":e<20?"\u0936\u093e\u092e":"\u0930\u093e\u0924"},week:{dow:0,doy:6}}),l.defineLocale("hr",{months:{format:"sije\u010dnja_velja\u010de_o\u017eujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"sije\u010danj_velja\u010da_o\u017eujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._o\u017eu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[ju\u010der u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[pro\u0161lu] dddd [u] LT";case 6:return"[pro\u0161le] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[pro\u0161li] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:Rs,m:Rs,mm:Rs,h:Rs,hh:Rs,d:"dan",dd:Rs,M:"mjesec",MM:Rs,y:"godinu",yy:Rs},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});var Is="vas\xe1rnap h\xe9tf\u0151n kedden szerd\xe1n cs\xfct\xf6rt\xf6k\xf6n p\xe9nteken szombaton".split(" ");function Cs(e,a,t,s){var n=e;switch(t){case"s":return s||a?"n\xe9h\xe1ny m\xe1sodperc":"n\xe9h\xe1ny m\xe1sodperce";case"ss":return n+(s||a)?" m\xe1sodperc":" m\xe1sodperce";case"m":return"egy"+(s||a?" perc":" perce");case"mm":return n+(s||a?" perc":" perce");case"h":return"egy"+(s||a?" \xf3ra":" \xf3r\xe1ja");case"hh":return n+(s||a?" \xf3ra":" \xf3r\xe1ja");case"d":return"egy"+(s||a?" nap":" napja");case"dd":return n+(s||a?" nap":" napja");case"M":return"egy"+(s||a?" h\xf3nap":" h\xf3napja");case"MM":return n+(s||a?" h\xf3nap":" h\xf3napja");case"y":return"egy"+(s||a?" \xe9v":" \xe9ve");case"yy":return n+(s||a?" \xe9v":" \xe9ve")}return""}function Gs(e){return(e?"":"[m\xfalt] ")+"["+Is[this.day()]+"] LT[-kor]"}function Us(e){return e%100==11||e%10!=1}function Vs(e,a,t,s){var n=e+" ";switch(t){case"s":return a||s?"nokkrar sek\xfandur":"nokkrum sek\xfandum";case"ss":return Us(e)?n+(a||s?"sek\xfandur":"sek\xfandum"):n+"sek\xfanda";case"m":return a?"m\xedn\xfata":"m\xedn\xfatu";case"mm":return Us(e)?n+(a||s?"m\xedn\xfatur":"m\xedn\xfatum"):a?n+"m\xedn\xfata":n+"m\xedn\xfatu";case"hh":return Us(e)?n+(a||s?"klukkustundir":"klukkustundum"):n+"klukkustund";case"d":return a?"dagur":s?"dag":"degi";case"dd":return Us(e)?a?n+"dagar":n+(s?"daga":"d\xf6gum"):a?n+"dagur":n+(s?"dag":"degi");case"M":return a?"m\xe1nu\xf0ur":s?"m\xe1nu\xf0":"m\xe1nu\xf0i";case"MM":return Us(e)?a?n+"m\xe1nu\xf0ir":n+(s?"m\xe1nu\xf0i":"m\xe1nu\xf0um"):a?n+"m\xe1nu\xf0ur":n+(s?"m\xe1nu\xf0":"m\xe1nu\xf0i");case"y":return a||s?"\xe1r":"\xe1ri";case"yy":return Us(e)?n+(a||s?"\xe1r":"\xe1rum"):n+(a||s?"\xe1r":"\xe1ri")}}l.defineLocale("hu",{months:"janu\xe1r_febru\xe1r_m\xe1rcius_\xe1prilis_m\xe1jus_j\xfanius_j\xfalius_augusztus_szeptember_okt\xf3ber_november_december".split("_"),monthsShort:"jan_feb_m\xe1rc_\xe1pr_m\xe1j_j\xfan_j\xfal_aug_szept_okt_nov_dec".split("_"),weekdays:"vas\xe1rnap_h\xe9tf\u0151_kedd_szerda_cs\xfct\xf6rt\xf6k_p\xe9ntek_szombat".split("_"),weekdaysShort:"vas_h\xe9t_kedd_sze_cs\xfct_p\xe9n_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(e){return"u"===e.charAt(1).toLowerCase()},meridiem:function(e,a,t){return e<12?!0===t?"de":"DE":!0===t?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return Gs.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return Gs.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s m\xfalva",past:"%s",s:Cs,ss:Cs,m:Cs,mm:Cs,h:Cs,hh:Cs,d:Cs,dd:Cs,M:Cs,MM:Cs,y:Cs,yy:Cs},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),l.defineLocale("hy-am",{months:{format:"\u0570\u0578\u0582\u0576\u057e\u0561\u0580\u056b_\u0583\u0565\u057f\u0580\u057e\u0561\u0580\u056b_\u0574\u0561\u0580\u057f\u056b_\u0561\u057a\u0580\u056b\u056c\u056b_\u0574\u0561\u0575\u056b\u057d\u056b_\u0570\u0578\u0582\u0576\u056b\u057d\u056b_\u0570\u0578\u0582\u056c\u056b\u057d\u056b_\u0585\u0563\u0578\u057d\u057f\u0578\u057d\u056b_\u057d\u0565\u057a\u057f\u0565\u0574\u0562\u0565\u0580\u056b_\u0570\u0578\u056f\u057f\u0565\u0574\u0562\u0565\u0580\u056b_\u0576\u0578\u0575\u0565\u0574\u0562\u0565\u0580\u056b_\u0564\u0565\u056f\u057f\u0565\u0574\u0562\u0565\u0580\u056b".split("_"),standalone:"\u0570\u0578\u0582\u0576\u057e\u0561\u0580_\u0583\u0565\u057f\u0580\u057e\u0561\u0580_\u0574\u0561\u0580\u057f_\u0561\u057a\u0580\u056b\u056c_\u0574\u0561\u0575\u056b\u057d_\u0570\u0578\u0582\u0576\u056b\u057d_\u0570\u0578\u0582\u056c\u056b\u057d_\u0585\u0563\u0578\u057d\u057f\u0578\u057d_\u057d\u0565\u057a\u057f\u0565\u0574\u0562\u0565\u0580_\u0570\u0578\u056f\u057f\u0565\u0574\u0562\u0565\u0580_\u0576\u0578\u0575\u0565\u0574\u0562\u0565\u0580_\u0564\u0565\u056f\u057f\u0565\u0574\u0562\u0565\u0580".split("_")},monthsShort:"\u0570\u0576\u057e_\u0583\u057f\u0580_\u0574\u0580\u057f_\u0561\u057a\u0580_\u0574\u0575\u057d_\u0570\u0576\u057d_\u0570\u056c\u057d_\u0585\u0563\u057d_\u057d\u057a\u057f_\u0570\u056f\u057f_\u0576\u0574\u0562_\u0564\u056f\u057f".split("_"),weekdays:"\u056f\u056b\u0580\u0561\u056f\u056b_\u0565\u0580\u056f\u0578\u0582\u0577\u0561\u0562\u0569\u056b_\u0565\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056b_\u0579\u0578\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056b_\u0570\u056b\u0576\u0563\u0577\u0561\u0562\u0569\u056b_\u0578\u0582\u0580\u0562\u0561\u0569_\u0577\u0561\u0562\u0561\u0569".split("_"),weekdaysShort:"\u056f\u0580\u056f_\u0565\u0580\u056f_\u0565\u0580\u0584_\u0579\u0580\u0584_\u0570\u0576\u0563_\u0578\u0582\u0580\u0562_\u0577\u0562\u0569".split("_"),weekdaysMin:"\u056f\u0580\u056f_\u0565\u0580\u056f_\u0565\u0580\u0584_\u0579\u0580\u0584_\u0570\u0576\u0563_\u0578\u0582\u0580\u0562_\u0577\u0562\u0569".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0569.",LLL:"D MMMM YYYY \u0569., HH:mm",LLLL:"dddd, D MMMM YYYY \u0569., HH:mm"},calendar:{sameDay:"[\u0561\u0575\u057d\u0585\u0580] LT",nextDay:"[\u057e\u0561\u0572\u0568] LT",lastDay:"[\u0565\u0580\u0565\u056f] LT",nextWeek:function(){return"dddd [\u0585\u0580\u0568 \u056a\u0561\u0574\u0568] LT"},lastWeek:function(){return"[\u0561\u0576\u0581\u0561\u056e] dddd [\u0585\u0580\u0568 \u056a\u0561\u0574\u0568] LT"},sameElse:"L"},relativeTime:{future:"%s \u0570\u0565\u057f\u0578",past:"%s \u0561\u057c\u0561\u057b",s:"\u0574\u056b \u0584\u0561\u0576\u056b \u057e\u0561\u0575\u0580\u056f\u0575\u0561\u0576",ss:"%d \u057e\u0561\u0575\u0580\u056f\u0575\u0561\u0576",m:"\u0580\u0578\u057a\u0565",mm:"%d \u0580\u0578\u057a\u0565",h:"\u056a\u0561\u0574",hh:"%d \u056a\u0561\u0574",d:"\u0585\u0580",dd:"%d \u0585\u0580",M:"\u0561\u0574\u056b\u057d",MM:"%d \u0561\u0574\u056b\u057d",y:"\u057f\u0561\u0580\u056b",yy:"%d \u057f\u0561\u0580\u056b"},meridiemParse:/\u0563\u056b\u0577\u0565\u0580\u057e\u0561|\u0561\u057c\u0561\u057e\u0578\u057f\u057e\u0561|\u0581\u0565\u0580\u0565\u056f\u057e\u0561|\u0565\u0580\u0565\u056f\u0578\u0575\u0561\u0576/,isPM:function(e){return/^(\u0581\u0565\u0580\u0565\u056f\u057e\u0561|\u0565\u0580\u0565\u056f\u0578\u0575\u0561\u0576)$/.test(e)},meridiem:function(e){return e<4?"\u0563\u056b\u0577\u0565\u0580\u057e\u0561":e<12?"\u0561\u057c\u0561\u057e\u0578\u057f\u057e\u0561":e<17?"\u0581\u0565\u0580\u0565\u056f\u057e\u0561":"\u0565\u0580\u0565\u056f\u0578\u0575\u0561\u0576"},dayOfMonthOrdinalParse:/\d{1,2}|\d{1,2}-(\u056b\u0576|\u0580\u0564)/,ordinal:function(e,a){switch(a){case"DDD":case"w":case"W":case"DDDo":return 1===e?e+"-\u056b\u0576":e+"-\u0580\u0564";default:return e}},week:{dow:1,doy:7}}),l.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"siang"===a?11<=e?e:e+12:"sore"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"pagi":e<15?"siang":e<19?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",ss:"%d detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}}),l.defineLocale("is",{months:"jan\xfaar_febr\xfaar_mars_apr\xedl_ma\xed_j\xfan\xed_j\xfal\xed_\xe1g\xfast_september_okt\xf3ber_n\xf3vember_desember".split("_"),monthsShort:"jan_feb_mar_apr_ma\xed_j\xfan_j\xfal_\xe1g\xfa_sep_okt_n\xf3v_des".split("_"),weekdays:"sunnudagur_m\xe1nudagur_\xferi\xf0judagur_mi\xf0vikudagur_fimmtudagur_f\xf6studagur_laugardagur".split("_"),weekdaysShort:"sun_m\xe1n_\xferi_mi\xf0_fim_f\xf6s_lau".split("_"),weekdaysMin:"Su_M\xe1_\xder_Mi_Fi_F\xf6_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[\xed dag kl.] LT",nextDay:"[\xe1 morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[\xed g\xe6r kl.] LT",lastWeek:"[s\xed\xf0asta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s s\xed\xf0an",s:Vs,ss:Vs,m:Vs,mm:Vs,h:"klukkustund",hh:Vs,d:Vs,dd:Vs,M:Vs,MM:Vs,y:Vs,yy:Vs},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),l.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_luned\xec_marted\xec_mercoled\xec_gioved\xec_venerd\xec_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?"tra":"in")+" "+e},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}}),l.defineLocale("ja",{months:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u65e5\u66dc\u65e5_\u6708\u66dc\u65e5_\u706b\u66dc\u65e5_\u6c34\u66dc\u65e5_\u6728\u66dc\u65e5_\u91d1\u66dc\u65e5_\u571f\u66dc\u65e5".split("_"),weekdaysShort:"\u65e5_\u6708_\u706b_\u6c34_\u6728_\u91d1_\u571f".split("_"),weekdaysMin:"\u65e5_\u6708_\u706b_\u6c34_\u6728_\u91d1_\u571f".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5(ddd) HH:mm"},meridiemParse:/\u5348\u524d|\u5348\u5f8c/i,isPM:function(e){return"\u5348\u5f8c"===e},meridiem:function(e,a,t){return e<12?"\u5348\u524d":"\u5348\u5f8c"},calendar:{sameDay:"[\u4eca\u65e5] LT",nextDay:"[\u660e\u65e5] LT",nextWeek:function(e){return e.week()<this.week()?"[\u6765\u9031]dddd LT":"dddd LT"},lastDay:"[\u6628\u65e5] LT",lastWeek:function(e){return this.week()<e.week()?"[\u5148\u9031]dddd LT":"dddd LT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}\u65e5/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"\u65e5";default:return e}},relativeTime:{future:"%s\u5f8c",past:"%s\u524d",s:"\u6570\u79d2",ss:"%d\u79d2",m:"1\u5206",mm:"%d\u5206",h:"1\u6642\u9593",hh:"%d\u6642\u9593",d:"1\u65e5",dd:"%d\u65e5",M:"1\u30f6\u6708",MM:"%d\u30f6\u6708",y:"1\u5e74",yy:"%d\u5e74"}}),l.defineLocale("jv",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/enjing|siyang|sonten|ndalu/,meridiemHour:function(e,a){return 12===e&&(e=0),"enjing"===a?e:"siyang"===a?11<=e?e:e+12:"sonten"===a||"ndalu"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"enjing":e<15?"siyang":e<19?"sonten":"ndalu"},calendar:{sameDay:"[Dinten puniko pukul] LT",nextDay:"[Mbenjang pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kala wingi pukul] LT",lastWeek:"dddd [kepengker pukul] LT",sameElse:"L"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",ss:"%d detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"},week:{dow:1,doy:7}}),l.defineLocale("ka",{months:{standalone:"\u10d8\u10d0\u10dc\u10d5\u10d0\u10e0\u10d8_\u10d7\u10d4\u10d1\u10d4\u10e0\u10d5\u10d0\u10da\u10d8_\u10db\u10d0\u10e0\u10e2\u10d8_\u10d0\u10de\u10e0\u10d8\u10da\u10d8_\u10db\u10d0\u10d8\u10e1\u10d8_\u10d8\u10d5\u10dc\u10d8\u10e1\u10d8_\u10d8\u10d5\u10da\u10d8\u10e1\u10d8_\u10d0\u10d2\u10d5\u10d8\u10e1\u10e2\u10dd_\u10e1\u10d4\u10e5\u10e2\u10d4\u10db\u10d1\u10d4\u10e0\u10d8_\u10dd\u10e5\u10e2\u10dd\u10db\u10d1\u10d4\u10e0\u10d8_\u10dc\u10dd\u10d4\u10db\u10d1\u10d4\u10e0\u10d8_\u10d3\u10d4\u10d9\u10d4\u10db\u10d1\u10d4\u10e0\u10d8".split("_"),format:"\u10d8\u10d0\u10dc\u10d5\u10d0\u10e0\u10e1_\u10d7\u10d4\u10d1\u10d4\u10e0\u10d5\u10d0\u10da\u10e1_\u10db\u10d0\u10e0\u10e2\u10e1_\u10d0\u10de\u10e0\u10d8\u10da\u10d8\u10e1_\u10db\u10d0\u10d8\u10e1\u10e1_\u10d8\u10d5\u10dc\u10d8\u10e1\u10e1_\u10d8\u10d5\u10da\u10d8\u10e1\u10e1_\u10d0\u10d2\u10d5\u10d8\u10e1\u10e2\u10e1_\u10e1\u10d4\u10e5\u10e2\u10d4\u10db\u10d1\u10d4\u10e0\u10e1_\u10dd\u10e5\u10e2\u10dd\u10db\u10d1\u10d4\u10e0\u10e1_\u10dc\u10dd\u10d4\u10db\u10d1\u10d4\u10e0\u10e1_\u10d3\u10d4\u10d9\u10d4\u10db\u10d1\u10d4\u10e0\u10e1".split("_")},monthsShort:"\u10d8\u10d0\u10dc_\u10d7\u10d4\u10d1_\u10db\u10d0\u10e0_\u10d0\u10de\u10e0_\u10db\u10d0\u10d8_\u10d8\u10d5\u10dc_\u10d8\u10d5\u10da_\u10d0\u10d2\u10d5_\u10e1\u10d4\u10e5_\u10dd\u10e5\u10e2_\u10dc\u10dd\u10d4_\u10d3\u10d4\u10d9".split("_"),weekdays:{standalone:"\u10d9\u10d5\u10d8\u10e0\u10d0_\u10dd\u10e0\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10e1\u10d0\u10db\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10dd\u10d7\u10ee\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10ee\u10e3\u10d7\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10de\u10d0\u10e0\u10d0\u10e1\u10d9\u10d4\u10d5\u10d8_\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8".split("_"),format:"\u10d9\u10d5\u10d8\u10e0\u10d0\u10e1_\u10dd\u10e0\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10e1\u10d0\u10db\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10dd\u10d7\u10ee\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10ee\u10e3\u10d7\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10de\u10d0\u10e0\u10d0\u10e1\u10d9\u10d4\u10d5\u10e1_\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1".split("_"),isFormat:/(\u10ec\u10d8\u10dc\u10d0|\u10e8\u10d4\u10db\u10d3\u10d4\u10d2)/},weekdaysShort:"\u10d9\u10d5\u10d8_\u10dd\u10e0\u10e8_\u10e1\u10d0\u10db_\u10dd\u10d7\u10ee_\u10ee\u10e3\u10d7_\u10de\u10d0\u10e0_\u10e8\u10d0\u10d1".split("_"),weekdaysMin:"\u10d9\u10d5_\u10dd\u10e0_\u10e1\u10d0_\u10dd\u10d7_\u10ee\u10e3_\u10de\u10d0_\u10e8\u10d0".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[\u10d3\u10e6\u10d4\u10e1] LT[-\u10d6\u10d4]",nextDay:"[\u10ee\u10d5\u10d0\u10da] LT[-\u10d6\u10d4]",lastDay:"[\u10d2\u10e3\u10e8\u10d8\u10dc] LT[-\u10d6\u10d4]",nextWeek:"[\u10e8\u10d4\u10db\u10d3\u10d4\u10d2] dddd LT[-\u10d6\u10d4]",lastWeek:"[\u10ec\u10d8\u10dc\u10d0] dddd LT-\u10d6\u10d4",sameElse:"L"},relativeTime:{future:function(e){return/(\u10ec\u10d0\u10db\u10d8|\u10ec\u10e3\u10d7\u10d8|\u10e1\u10d0\u10d0\u10d7\u10d8|\u10ec\u10d4\u10da\u10d8)/.test(e)?e.replace(/\u10d8$/,"\u10e8\u10d8"):e+"\u10e8\u10d8"},past:function(e){return/(\u10ec\u10d0\u10db\u10d8|\u10ec\u10e3\u10d7\u10d8|\u10e1\u10d0\u10d0\u10d7\u10d8|\u10d3\u10e6\u10d4|\u10d7\u10d5\u10d4)/.test(e)?e.replace(/(\u10d8|\u10d4)$/,"\u10d8\u10e1 \u10ec\u10d8\u10dc"):/\u10ec\u10d4\u10da\u10d8/.test(e)?e.replace(/\u10ec\u10d4\u10da\u10d8$/,"\u10ec\u10da\u10d8\u10e1 \u10ec\u10d8\u10dc"):void 0},s:"\u10e0\u10d0\u10db\u10d3\u10d4\u10dc\u10d8\u10db\u10d4 \u10ec\u10d0\u10db\u10d8",ss:"%d \u10ec\u10d0\u10db\u10d8",m:"\u10ec\u10e3\u10d7\u10d8",mm:"%d \u10ec\u10e3\u10d7\u10d8",h:"\u10e1\u10d0\u10d0\u10d7\u10d8",hh:"%d \u10e1\u10d0\u10d0\u10d7\u10d8",d:"\u10d3\u10e6\u10d4",dd:"%d \u10d3\u10e6\u10d4",M:"\u10d7\u10d5\u10d4",MM:"%d \u10d7\u10d5\u10d4",y:"\u10ec\u10d4\u10da\u10d8",yy:"%d \u10ec\u10d4\u10da\u10d8"},dayOfMonthOrdinalParse:/0|1-\u10da\u10d8|\u10db\u10d4-\d{1,2}|\d{1,2}-\u10d4/,ordinal:function(e){return 0===e?e:1===e?e+"-\u10da\u10d8":e<20||e<=100&&e%20==0||e%100==0?"\u10db\u10d4-"+e:e+"-\u10d4"},week:{dow:1,doy:7}});var Ks={0:"-\u0448\u0456",1:"-\u0448\u0456",2:"-\u0448\u0456",3:"-\u0448\u0456",4:"-\u0448\u0456",5:"-\u0448\u0456",6:"-\u0448\u044b",7:"-\u0448\u0456",8:"-\u0448\u0456",9:"-\u0448\u044b",10:"-\u0448\u044b",20:"-\u0448\u044b",30:"-\u0448\u044b",40:"-\u0448\u044b",50:"-\u0448\u0456",60:"-\u0448\u044b",70:"-\u0448\u0456",80:"-\u0448\u0456",90:"-\u0448\u044b",100:"-\u0448\u0456"};l.defineLocale("kk",{months:"\u049b\u0430\u04a3\u0442\u0430\u0440_\u0430\u049b\u043f\u0430\u043d_\u043d\u0430\u0443\u0440\u044b\u0437_\u0441\u04d9\u0443\u0456\u0440_\u043c\u0430\u043c\u044b\u0440_\u043c\u0430\u0443\u0441\u044b\u043c_\u0448\u0456\u043b\u0434\u0435_\u0442\u0430\u043c\u044b\u0437_\u049b\u044b\u0440\u043a\u04af\u0439\u0435\u043a_\u049b\u0430\u0437\u0430\u043d_\u049b\u0430\u0440\u0430\u0448\u0430_\u0436\u0435\u043b\u0442\u043e\u049b\u0441\u0430\u043d".split("_"),monthsShort:"\u049b\u0430\u04a3_\u0430\u049b\u043f_\u043d\u0430\u0443_\u0441\u04d9\u0443_\u043c\u0430\u043c_\u043c\u0430\u0443_\u0448\u0456\u043b_\u0442\u0430\u043c_\u049b\u044b\u0440_\u049b\u0430\u0437_\u049b\u0430\u0440_\u0436\u0435\u043b".split("_"),weekdays:"\u0436\u0435\u043a\u0441\u0435\u043d\u0431\u0456_\u0434\u04af\u0439\u0441\u0435\u043d\u0431\u0456_\u0441\u0435\u0439\u0441\u0435\u043d\u0431\u0456_\u0441\u04d9\u0440\u0441\u0435\u043d\u0431\u0456_\u0431\u0435\u0439\u0441\u0435\u043d\u0431\u0456_\u0436\u04b1\u043c\u0430_\u0441\u0435\u043d\u0431\u0456".split("_"),weekdaysShort:"\u0436\u0435\u043a_\u0434\u04af\u0439_\u0441\u0435\u0439_\u0441\u04d9\u0440_\u0431\u0435\u0439_\u0436\u04b1\u043c_\u0441\u0435\u043d".split("_"),weekdaysMin:"\u0436\u043a_\u0434\u0439_\u0441\u0439_\u0441\u0440_\u0431\u0439_\u0436\u043c_\u0441\u043d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0411\u04af\u0433\u0456\u043d \u0441\u0430\u0493\u0430\u0442] LT",nextDay:"[\u0415\u0440\u0442\u0435\u04a3 \u0441\u0430\u0493\u0430\u0442] LT",nextWeek:"dddd [\u0441\u0430\u0493\u0430\u0442] LT",lastDay:"[\u041a\u0435\u0448\u0435 \u0441\u0430\u0493\u0430\u0442] LT",lastWeek:"[\u04e8\u0442\u043a\u0435\u043d \u0430\u043f\u0442\u0430\u043d\u044b\u04a3] dddd [\u0441\u0430\u0493\u0430\u0442] LT",sameElse:"L"},relativeTime:{future:"%s \u0456\u0448\u0456\u043d\u0434\u0435",past:"%s \u0431\u04b1\u0440\u044b\u043d",s:"\u0431\u0456\u0440\u043d\u0435\u0448\u0435 \u0441\u0435\u043a\u0443\u043d\u0434",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434",m:"\u0431\u0456\u0440 \u043c\u0438\u043d\u0443\u0442",mm:"%d \u043c\u0438\u043d\u0443\u0442",h:"\u0431\u0456\u0440 \u0441\u0430\u0493\u0430\u0442",hh:"%d \u0441\u0430\u0493\u0430\u0442",d:"\u0431\u0456\u0440 \u043a\u04af\u043d",dd:"%d \u043a\u04af\u043d",M:"\u0431\u0456\u0440 \u0430\u0439",MM:"%d \u0430\u0439",y:"\u0431\u0456\u0440 \u0436\u044b\u043b",yy:"%d \u0436\u044b\u043b"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0448\u0456|\u0448\u044b)/,ordinal:function(e){return e+(Ks[e]||Ks[e%10]||Ks[100<=e?100:null])},week:{dow:1,doy:7}});var $s={1:"\u17e1",2:"\u17e2",3:"\u17e3",4:"\u17e4",5:"\u17e5",6:"\u17e6",7:"\u17e7",8:"\u17e8",9:"\u17e9",0:"\u17e0"},Zs={"\u17e1":"1","\u17e2":"2","\u17e3":"3","\u17e4":"4","\u17e5":"5","\u17e6":"6","\u17e7":"7","\u17e8":"8","\u17e9":"9","\u17e0":"0"};l.defineLocale("km",{months:"\u1798\u1780\u179a\u17b6_\u1780\u17bb\u1798\u17d2\u1797\u17c8_\u1798\u17b8\u1793\u17b6_\u1798\u17c1\u179f\u17b6_\u17a7\u179f\u1797\u17b6_\u1798\u17b7\u1790\u17bb\u1793\u17b6_\u1780\u1780\u17d2\u1780\u178a\u17b6_\u179f\u17b8\u17a0\u17b6_\u1780\u1789\u17d2\u1789\u17b6_\u178f\u17bb\u179b\u17b6_\u179c\u17b7\u1785\u17d2\u1786\u17b7\u1780\u17b6_\u1792\u17d2\u1793\u17bc".split("_"),monthsShort:"\u1798\u1780\u179a\u17b6_\u1780\u17bb\u1798\u17d2\u1797\u17c8_\u1798\u17b8\u1793\u17b6_\u1798\u17c1\u179f\u17b6_\u17a7\u179f\u1797\u17b6_\u1798\u17b7\u1790\u17bb\u1793\u17b6_\u1780\u1780\u17d2\u1780\u178a\u17b6_\u179f\u17b8\u17a0\u17b6_\u1780\u1789\u17d2\u1789\u17b6_\u178f\u17bb\u179b\u17b6_\u179c\u17b7\u1785\u17d2\u1786\u17b7\u1780\u17b6_\u1792\u17d2\u1793\u17bc".split("_"),weekdays:"\u17a2\u17b6\u1791\u17b7\u178f\u17d2\u1799_\u1785\u17d0\u1793\u17d2\u1791_\u17a2\u1784\u17d2\u1782\u17b6\u179a_\u1796\u17bb\u1792_\u1796\u17d2\u179a\u17a0\u179f\u17d2\u1794\u178f\u17b7\u17cd_\u179f\u17bb\u1780\u17d2\u179a_\u179f\u17c5\u179a\u17cd".split("_"),weekdaysShort:"\u17a2\u17b6_\u1785_\u17a2_\u1796_\u1796\u17d2\u179a_\u179f\u17bb_\u179f".split("_"),weekdaysMin:"\u17a2\u17b6_\u1785_\u17a2_\u1796_\u1796\u17d2\u179a_\u179f\u17bb_\u179f".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/\u1796\u17d2\u179a\u17b9\u1780|\u179b\u17d2\u1784\u17b6\u1785/,isPM:function(e){return"\u179b\u17d2\u1784\u17b6\u1785"===e},meridiem:function(e,a,t){return e<12?"\u1796\u17d2\u179a\u17b9\u1780":"\u179b\u17d2\u1784\u17b6\u1785"},calendar:{sameDay:"[\u1790\u17d2\u1784\u17c3\u1793\u17c1\u17c7 \u1798\u17c9\u17c4\u1784] LT",nextDay:"[\u179f\u17d2\u17a2\u17c2\u1780 \u1798\u17c9\u17c4\u1784] LT",nextWeek:"dddd [\u1798\u17c9\u17c4\u1784] LT",lastDay:"[\u1798\u17d2\u179f\u17b7\u179b\u1798\u17b7\u1789 \u1798\u17c9\u17c4\u1784] LT",lastWeek:"dddd [\u179f\u1794\u17d2\u178f\u17b6\u17a0\u17cd\u1798\u17bb\u1793] [\u1798\u17c9\u17c4\u1784] LT",sameElse:"L"},relativeTime:{future:"%s\u1791\u17c0\u178f",past:"%s\u1798\u17bb\u1793",s:"\u1794\u17c9\u17bb\u1793\u17d2\u1798\u17b6\u1793\u179c\u17b7\u1793\u17b6\u1791\u17b8",ss:"%d \u179c\u17b7\u1793\u17b6\u1791\u17b8",m:"\u1798\u17bd\u1799\u1793\u17b6\u1791\u17b8",mm:"%d \u1793\u17b6\u1791\u17b8",h:"\u1798\u17bd\u1799\u1798\u17c9\u17c4\u1784",hh:"%d \u1798\u17c9\u17c4\u1784",d:"\u1798\u17bd\u1799\u1790\u17d2\u1784\u17c3",dd:"%d \u1790\u17d2\u1784\u17c3",M:"\u1798\u17bd\u1799\u1781\u17c2",MM:"%d \u1781\u17c2",y:"\u1798\u17bd\u1799\u1786\u17d2\u1793\u17b6\u17c6",yy:"%d \u1786\u17d2\u1793\u17b6\u17c6"},dayOfMonthOrdinalParse:/\u1791\u17b8\d{1,2}/,ordinal:"\u1791\u17b8%d",preparse:function(e){return e.replace(/[\u17e1\u17e2\u17e3\u17e4\u17e5\u17e6\u17e7\u17e8\u17e9\u17e0]/g,function(e){return Zs[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return $s[e]})},week:{dow:1,doy:4}});var Bs={1:"\u0ce7",2:"\u0ce8",3:"\u0ce9",4:"\u0cea",5:"\u0ceb",6:"\u0cec",7:"\u0ced",8:"\u0cee",9:"\u0cef",0:"\u0ce6"},qs={"\u0ce7":"1","\u0ce8":"2","\u0ce9":"3","\u0cea":"4","\u0ceb":"5","\u0cec":"6","\u0ced":"7","\u0cee":"8","\u0cef":"9","\u0ce6":"0"};l.defineLocale("kn",{months:"\u0c9c\u0ca8\u0cb5\u0cb0\u0cbf_\u0cab\u0cc6\u0cac\u0ccd\u0cb0\u0cb5\u0cb0\u0cbf_\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd_\u0c8f\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd_\u0cae\u0cc6\u0cd5_\u0c9c\u0cc2\u0ca8\u0ccd_\u0c9c\u0cc1\u0cb2\u0cc6\u0cd6_\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd_\u0cb8\u0cc6\u0caa\u0ccd\u0c9f\u0cc6\u0c82\u0cac\u0cb0\u0ccd_\u0c85\u0c95\u0ccd\u0c9f\u0cc6\u0cc2\u0cd5\u0cac\u0cb0\u0ccd_\u0ca8\u0cb5\u0cc6\u0c82\u0cac\u0cb0\u0ccd_\u0ca1\u0cbf\u0cb8\u0cc6\u0c82\u0cac\u0cb0\u0ccd".split("_"),monthsShort:"\u0c9c\u0ca8_\u0cab\u0cc6\u0cac\u0ccd\u0cb0_\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd_\u0c8f\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd_\u0cae\u0cc6\u0cd5_\u0c9c\u0cc2\u0ca8\u0ccd_\u0c9c\u0cc1\u0cb2\u0cc6\u0cd6_\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd_\u0cb8\u0cc6\u0caa\u0ccd\u0c9f\u0cc6\u0c82_\u0c85\u0c95\u0ccd\u0c9f\u0cc6\u0cc2\u0cd5_\u0ca8\u0cb5\u0cc6\u0c82_\u0ca1\u0cbf\u0cb8\u0cc6\u0c82".split("_"),monthsParseExact:!0,weekdays:"\u0cad\u0cbe\u0ca8\u0cc1\u0cb5\u0cbe\u0cb0_\u0cb8\u0cc6\u0cc2\u0cd5\u0cae\u0cb5\u0cbe\u0cb0_\u0cae\u0c82\u0c97\u0cb3\u0cb5\u0cbe\u0cb0_\u0cac\u0cc1\u0ca7\u0cb5\u0cbe\u0cb0_\u0c97\u0cc1\u0cb0\u0cc1\u0cb5\u0cbe\u0cb0_\u0cb6\u0cc1\u0c95\u0ccd\u0cb0\u0cb5\u0cbe\u0cb0_\u0cb6\u0ca8\u0cbf\u0cb5\u0cbe\u0cb0".split("_"),weekdaysShort:"\u0cad\u0cbe\u0ca8\u0cc1_\u0cb8\u0cc6\u0cc2\u0cd5\u0cae_\u0cae\u0c82\u0c97\u0cb3_\u0cac\u0cc1\u0ca7_\u0c97\u0cc1\u0cb0\u0cc1_\u0cb6\u0cc1\u0c95\u0ccd\u0cb0_\u0cb6\u0ca8\u0cbf".split("_"),weekdaysMin:"\u0cad\u0cbe_\u0cb8\u0cc6\u0cc2\u0cd5_\u0cae\u0c82_\u0cac\u0cc1_\u0c97\u0cc1_\u0cb6\u0cc1_\u0cb6".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[\u0c87\u0c82\u0ca6\u0cc1] LT",nextDay:"[\u0ca8\u0cbe\u0cb3\u0cc6] LT",nextWeek:"dddd, LT",lastDay:"[\u0ca8\u0cbf\u0ca8\u0ccd\u0ca8\u0cc6] LT",lastWeek:"[\u0c95\u0cc6\u0cc2\u0ca8\u0cc6\u0caf] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0ca8\u0c82\u0ca4\u0cb0",past:"%s \u0cb9\u0cbf\u0c82\u0ca6\u0cc6",s:"\u0c95\u0cc6\u0cb2\u0cb5\u0cc1 \u0c95\u0ccd\u0cb7\u0ca3\u0c97\u0cb3\u0cc1",ss:"%d \u0cb8\u0cc6\u0c95\u0cc6\u0c82\u0ca1\u0cc1\u0c97\u0cb3\u0cc1",m:"\u0c92\u0c82\u0ca6\u0cc1 \u0ca8\u0cbf\u0cae\u0cbf\u0cb7",mm:"%d \u0ca8\u0cbf\u0cae\u0cbf\u0cb7",h:"\u0c92\u0c82\u0ca6\u0cc1 \u0c97\u0c82\u0c9f\u0cc6",hh:"%d \u0c97\u0c82\u0c9f\u0cc6",d:"\u0c92\u0c82\u0ca6\u0cc1 \u0ca6\u0cbf\u0ca8",dd:"%d \u0ca6\u0cbf\u0ca8",M:"\u0c92\u0c82\u0ca6\u0cc1 \u0ca4\u0cbf\u0c82\u0c97\u0cb3\u0cc1",MM:"%d \u0ca4\u0cbf\u0c82\u0c97\u0cb3\u0cc1",y:"\u0c92\u0c82\u0ca6\u0cc1 \u0cb5\u0cb0\u0ccd\u0cb7",yy:"%d \u0cb5\u0cb0\u0ccd\u0cb7"},preparse:function(e){return e.replace(/[\u0ce7\u0ce8\u0ce9\u0cea\u0ceb\u0cec\u0ced\u0cee\u0cef\u0ce6]/g,function(e){return qs[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return Bs[e]})},meridiemParse:/\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf|\u0cac\u0cc6\u0cb3\u0cbf\u0c97\u0ccd\u0c97\u0cc6|\u0cae\u0ca7\u0ccd\u0caf\u0cbe\u0cb9\u0ccd\u0ca8|\u0cb8\u0c82\u0c9c\u0cc6/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf"===a?e<4?e:e+12:"\u0cac\u0cc6\u0cb3\u0cbf\u0c97\u0ccd\u0c97\u0cc6"===a?e:"\u0cae\u0ca7\u0ccd\u0caf\u0cbe\u0cb9\u0ccd\u0ca8"===a?10<=e?e:e+12:"\u0cb8\u0c82\u0c9c\u0cc6"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf":e<10?"\u0cac\u0cc6\u0cb3\u0cbf\u0c97\u0ccd\u0c97\u0cc6":e<17?"\u0cae\u0ca7\u0ccd\u0caf\u0cbe\u0cb9\u0ccd\u0ca8":e<20?"\u0cb8\u0c82\u0c9c\u0cc6":"\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf"},dayOfMonthOrdinalParse:/\d{1,2}(\u0ca8\u0cc6\u0cd5)/,ordinal:function(e){return e+"\u0ca8\u0cc6\u0cd5"},week:{dow:0,doy:6}}),l.defineLocale("ko",{months:"1\uc6d4_2\uc6d4_3\uc6d4_4\uc6d4_5\uc6d4_6\uc6d4_7\uc6d4_8\uc6d4_9\uc6d4_10\uc6d4_11\uc6d4_12\uc6d4".split("_"),monthsShort:"1\uc6d4_2\uc6d4_3\uc6d4_4\uc6d4_5\uc6d4_6\uc6d4_7\uc6d4_8\uc6d4_9\uc6d4_10\uc6d4_11\uc6d4_12\uc6d4".split("_"),weekdays:"\uc77c\uc694\uc77c_\uc6d4\uc694\uc77c_\ud654\uc694\uc77c_\uc218\uc694\uc77c_\ubaa9\uc694\uc77c_\uae08\uc694\uc77c_\ud1a0\uc694\uc77c".split("_"),weekdaysShort:"\uc77c_\uc6d4_\ud654_\uc218_\ubaa9_\uae08_\ud1a0".split("_"),weekdaysMin:"\uc77c_\uc6d4_\ud654_\uc218_\ubaa9_\uae08_\ud1a0".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY\ub144 MMMM D\uc77c",LLL:"YYYY\ub144 MMMM D\uc77c A h:mm",LLLL:"YYYY\ub144 MMMM D\uc77c dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY\ub144 MMMM D\uc77c",lll:"YYYY\ub144 MMMM D\uc77c A h:mm",llll:"YYYY\ub144 MMMM D\uc77c dddd A h:mm"},calendar:{sameDay:"\uc624\ub298 LT",nextDay:"\ub0b4\uc77c LT",nextWeek:"dddd LT",lastDay:"\uc5b4\uc81c LT",lastWeek:"\uc9c0\ub09c\uc8fc dddd LT",sameElse:"L"},relativeTime:{future:"%s \ud6c4",past:"%s \uc804",s:"\uba87 \ucd08",ss:"%d\ucd08",m:"1\ubd84",mm:"%d\ubd84",h:"\ud55c \uc2dc\uac04",hh:"%d\uc2dc\uac04",d:"\ud558\ub8e8",dd:"%d\uc77c",M:"\ud55c \ub2ec",MM:"%d\ub2ec",y:"\uc77c \ub144",yy:"%d\ub144"},dayOfMonthOrdinalParse:/\d{1,2}(\uc77c|\uc6d4|\uc8fc)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"\uc77c";case"M":return e+"\uc6d4";case"w":case"W":return e+"\uc8fc";default:return e}},meridiemParse:/\uc624\uc804|\uc624\ud6c4/,isPM:function(e){return"\uc624\ud6c4"===e},meridiem:function(e,a,t){return e<12?"\uc624\uc804":"\uc624\ud6c4"}});var Qs={1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"},Xs={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"},en=["\u06a9\u0627\u0646\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645","\u0634\u0648\u0628\u0627\u062a","\u0626\u0627\u0632\u0627\u0631","\u0646\u06cc\u0633\u0627\u0646","\u0626\u0627\u06cc\u0627\u0631","\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646","\u062a\u06d5\u0645\u0645\u0648\u0632","\u0626\u0627\u0628","\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644","\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u0643\u06d5\u0645","\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645","\u0643\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645"];l.defineLocale("ku",{months:en,monthsShort:en,weekdays:"\u06cc\u0647\u200c\u0643\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u062f\u0648\u0648\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u0633\u06ce\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u0686\u0648\u0627\u0631\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u067e\u06ce\u0646\u062c\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u0647\u0647\u200c\u06cc\u0646\u06cc_\u0634\u0647\u200c\u0645\u0645\u0647\u200c".split("_"),weekdaysShort:"\u06cc\u0647\u200c\u0643\u0634\u0647\u200c\u0645_\u062f\u0648\u0648\u0634\u0647\u200c\u0645_\u0633\u06ce\u0634\u0647\u200c\u0645_\u0686\u0648\u0627\u0631\u0634\u0647\u200c\u0645_\u067e\u06ce\u0646\u062c\u0634\u0647\u200c\u0645_\u0647\u0647\u200c\u06cc\u0646\u06cc_\u0634\u0647\u200c\u0645\u0645\u0647\u200c".split("_"),weekdaysMin:"\u06cc_\u062f_\u0633_\u0686_\u067e_\u0647_\u0634".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/\u0626\u06ce\u0648\u0627\u0631\u0647\u200c|\u0628\u0647\u200c\u06cc\u0627\u0646\u06cc/,isPM:function(e){return/\u0626\u06ce\u0648\u0627\u0631\u0647\u200c/.test(e)},meridiem:function(e,a,t){return e<12?"\u0628\u0647\u200c\u06cc\u0627\u0646\u06cc":"\u0626\u06ce\u0648\u0627\u0631\u0647\u200c"},calendar:{sameDay:"[\u0626\u0647\u200c\u0645\u0631\u06c6 \u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",nextDay:"[\u0628\u0647\u200c\u06cc\u0627\u0646\u06cc \u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",nextWeek:"dddd [\u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",lastDay:"[\u062f\u0648\u06ce\u0646\u06ce \u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",lastWeek:"dddd [\u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",sameElse:"L"},relativeTime:{future:"\u0644\u0647\u200c %s",past:"%s",s:"\u0686\u0647\u200c\u0646\u062f \u0686\u0631\u0643\u0647\u200c\u06cc\u0647\u200c\u0643",ss:"\u0686\u0631\u0643\u0647\u200c %d",m:"\u06cc\u0647\u200c\u0643 \u062e\u0648\u0644\u0647\u200c\u0643",mm:"%d \u062e\u0648\u0644\u0647\u200c\u0643",h:"\u06cc\u0647\u200c\u0643 \u0643\u0627\u062a\u0698\u0645\u06ce\u0631",hh:"%d \u0643\u0627\u062a\u0698\u0645\u06ce\u0631",d:"\u06cc\u0647\u200c\u0643 \u0695\u06c6\u0698",dd:"%d \u0695\u06c6\u0698",M:"\u06cc\u0647\u200c\u0643 \u0645\u0627\u0646\u06af",MM:"%d \u0645\u0627\u0646\u06af",y:"\u06cc\u0647\u200c\u0643 \u0633\u0627\u06b5",yy:"%d \u0633\u0627\u06b5"},preparse:function(e){return e.replace(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,function(e){return Xs[e]}).replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return Qs[e]}).replace(/,/g,"\u060c")},week:{dow:6,doy:12}});var an={0:"-\u0447\u04af",1:"-\u0447\u0438",2:"-\u0447\u0438",3:"-\u0447\u04af",4:"-\u0447\u04af",5:"-\u0447\u0438",6:"-\u0447\u044b",7:"-\u0447\u0438",8:"-\u0447\u0438",9:"-\u0447\u0443",10:"-\u0447\u0443",20:"-\u0447\u044b",30:"-\u0447\u0443",40:"-\u0447\u044b",50:"-\u0447\u04af",60:"-\u0447\u044b",70:"-\u0447\u0438",80:"-\u0447\u0438",90:"-\u0447\u0443",100:"-\u0447\u04af"};function tn(e,a,t,s){var n={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return a?n[t][0]:n[t][1]}function sn(e){if(e=parseInt(e,10),isNaN(e))return!1;if(e<0)return!0;if(e<10)return 4<=e&&e<=7;if(e<100){var a=e%10;return sn(0===a?e/10:a)}if(e<1e4){for(;10<=e;)e/=10;return sn(e)}return sn(e/=1e3)}l.defineLocale("ky",{months:"\u044f\u043d\u0432\u0430\u0440\u044c_\u0444\u0435\u0432\u0440\u0430\u043b\u044c_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b\u044c_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c_\u043e\u043a\u0442\u044f\u0431\u0440\u044c_\u043d\u043e\u044f\u0431\u0440\u044c_\u0434\u0435\u043a\u0430\u0431\u0440\u044c".split("_"),monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdays:"\u0416\u0435\u043a\u0448\u0435\u043c\u0431\u0438_\u0414\u04af\u0439\u0448\u04e9\u043c\u0431\u04af_\u0428\u0435\u0439\u0448\u0435\u043c\u0431\u0438_\u0428\u0430\u0440\u0448\u0435\u043c\u0431\u0438_\u0411\u0435\u0439\u0448\u0435\u043c\u0431\u0438_\u0416\u0443\u043c\u0430_\u0418\u0448\u0435\u043c\u0431\u0438".split("_"),weekdaysShort:"\u0416\u0435\u043a_\u0414\u04af\u0439_\u0428\u0435\u0439_\u0428\u0430\u0440_\u0411\u0435\u0439_\u0416\u0443\u043c_\u0418\u0448\u0435".split("_"),weekdaysMin:"\u0416\u043a_\u0414\u0439_\u0428\u0439_\u0428\u0440_\u0411\u0439_\u0416\u043c_\u0418\u0448".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0411\u04af\u0433\u04af\u043d \u0441\u0430\u0430\u0442] LT",nextDay:"[\u042d\u0440\u0442\u0435\u04a3 \u0441\u0430\u0430\u0442] LT",nextWeek:"dddd [\u0441\u0430\u0430\u0442] LT",lastDay:"[\u041a\u0435\u0447\u044d\u044d \u0441\u0430\u0430\u0442] LT",lastWeek:"[\u04e8\u0442\u043a\u04e9\u043d \u0430\u043f\u0442\u0430\u043d\u044b\u043d] dddd [\u043a\u04af\u043d\u04af] [\u0441\u0430\u0430\u0442] LT",sameElse:"L"},relativeTime:{future:"%s \u0438\u0447\u0438\u043d\u0434\u0435",past:"%s \u043c\u0443\u0440\u0443\u043d",s:"\u0431\u0438\u0440\u043d\u0435\u0447\u0435 \u0441\u0435\u043a\u0443\u043d\u0434",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434",m:"\u0431\u0438\u0440 \u043c\u04af\u043d\u04e9\u0442",mm:"%d \u043c\u04af\u043d\u04e9\u0442",h:"\u0431\u0438\u0440 \u0441\u0430\u0430\u0442",hh:"%d \u0441\u0430\u0430\u0442",d:"\u0431\u0438\u0440 \u043a\u04af\u043d",dd:"%d \u043a\u04af\u043d",M:"\u0431\u0438\u0440 \u0430\u0439",MM:"%d \u0430\u0439",y:"\u0431\u0438\u0440 \u0436\u044b\u043b",yy:"%d \u0436\u044b\u043b"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0447\u0438|\u0447\u044b|\u0447\u04af|\u0447\u0443)/,ordinal:function(e){return e+(an[e]||an[e%10]||an[100<=e?100:null])},week:{dow:1,doy:7}}),l.defineLocale("lb",{months:"Januar_Februar_M\xe4erz_Abr\xebll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_M\xe9indeg_D\xebnschdeg_M\xebttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._M\xe9._D\xeb._M\xeb._Do._Fr._Sa.".split("_"),weekdaysMin:"So_M\xe9_D\xeb_M\xeb_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[G\xebschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:function(e){return sn(e.substr(0,e.indexOf(" ")))?"a "+e:"an "+e},past:function(e){return sn(e.substr(0,e.indexOf(" ")))?"viru "+e:"virun "+e},s:"e puer Sekonnen",ss:"%d Sekonnen",m:tn,mm:"%d Minutten",h:tn,hh:"%d Stonnen",d:tn,dd:"%d Deeg",M:tn,MM:"%d M\xe9int",y:tn,yy:"%d Joer"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),l.defineLocale("lo",{months:"\u0ea1\u0eb1\u0e87\u0e81\u0ead\u0e99_\u0e81\u0eb8\u0ea1\u0e9e\u0eb2_\u0ea1\u0eb5\u0e99\u0eb2_\u0ec0\u0ea1\u0eaa\u0eb2_\u0e9e\u0eb6\u0e94\u0eaa\u0eb0\u0e9e\u0eb2_\u0ea1\u0eb4\u0e96\u0eb8\u0e99\u0eb2_\u0e81\u0ecd\u0ea5\u0eb0\u0e81\u0ebb\u0e94_\u0eaa\u0eb4\u0e87\u0eab\u0eb2_\u0e81\u0eb1\u0e99\u0e8d\u0eb2_\u0e95\u0eb8\u0ea5\u0eb2_\u0e9e\u0eb0\u0e88\u0eb4\u0e81_\u0e97\u0eb1\u0e99\u0ea7\u0eb2".split("_"),monthsShort:"\u0ea1\u0eb1\u0e87\u0e81\u0ead\u0e99_\u0e81\u0eb8\u0ea1\u0e9e\u0eb2_\u0ea1\u0eb5\u0e99\u0eb2_\u0ec0\u0ea1\u0eaa\u0eb2_\u0e9e\u0eb6\u0e94\u0eaa\u0eb0\u0e9e\u0eb2_\u0ea1\u0eb4\u0e96\u0eb8\u0e99\u0eb2_\u0e81\u0ecd\u0ea5\u0eb0\u0e81\u0ebb\u0e94_\u0eaa\u0eb4\u0e87\u0eab\u0eb2_\u0e81\u0eb1\u0e99\u0e8d\u0eb2_\u0e95\u0eb8\u0ea5\u0eb2_\u0e9e\u0eb0\u0e88\u0eb4\u0e81_\u0e97\u0eb1\u0e99\u0ea7\u0eb2".split("_"),weekdays:"\u0ead\u0eb2\u0e97\u0eb4\u0e94_\u0e88\u0eb1\u0e99_\u0ead\u0eb1\u0e87\u0e84\u0eb2\u0e99_\u0e9e\u0eb8\u0e94_\u0e9e\u0eb0\u0eab\u0eb1\u0e94_\u0eaa\u0eb8\u0e81_\u0ec0\u0eaa\u0ebb\u0eb2".split("_"),weekdaysShort:"\u0e97\u0eb4\u0e94_\u0e88\u0eb1\u0e99_\u0ead\u0eb1\u0e87\u0e84\u0eb2\u0e99_\u0e9e\u0eb8\u0e94_\u0e9e\u0eb0\u0eab\u0eb1\u0e94_\u0eaa\u0eb8\u0e81_\u0ec0\u0eaa\u0ebb\u0eb2".split("_"),weekdaysMin:"\u0e97_\u0e88_\u0ead\u0e84_\u0e9e_\u0e9e\u0eab_\u0eaa\u0e81_\u0eaa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"\u0ea7\u0eb1\u0e99dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0e95\u0ead\u0e99\u0ec0\u0e8a\u0ebb\u0ec9\u0eb2|\u0e95\u0ead\u0e99\u0ec1\u0ea5\u0e87/,isPM:function(e){return"\u0e95\u0ead\u0e99\u0ec1\u0ea5\u0e87"===e},meridiem:function(e,a,t){return e<12?"\u0e95\u0ead\u0e99\u0ec0\u0e8a\u0ebb\u0ec9\u0eb2":"\u0e95\u0ead\u0e99\u0ec1\u0ea5\u0e87"},calendar:{sameDay:"[\u0ea1\u0eb7\u0ec9\u0e99\u0eb5\u0ec9\u0ec0\u0ea7\u0ea5\u0eb2] LT",nextDay:"[\u0ea1\u0eb7\u0ec9\u0ead\u0eb7\u0ec8\u0e99\u0ec0\u0ea7\u0ea5\u0eb2] LT",nextWeek:"[\u0ea7\u0eb1\u0e99]dddd[\u0edc\u0ec9\u0eb2\u0ec0\u0ea7\u0ea5\u0eb2] LT",lastDay:"[\u0ea1\u0eb7\u0ec9\u0ea7\u0eb2\u0e99\u0e99\u0eb5\u0ec9\u0ec0\u0ea7\u0ea5\u0eb2] LT",lastWeek:"[\u0ea7\u0eb1\u0e99]dddd[\u0ec1\u0ea5\u0ec9\u0ea7\u0e99\u0eb5\u0ec9\u0ec0\u0ea7\u0ea5\u0eb2] LT",sameElse:"L"},relativeTime:{future:"\u0ead\u0eb5\u0e81 %s",past:"%s\u0e9c\u0ec8\u0eb2\u0e99\u0ea1\u0eb2",s:"\u0e9a\u0ecd\u0ec8\u0ec0\u0e97\u0ebb\u0ec8\u0eb2\u0ec3\u0e94\u0ea7\u0eb4\u0e99\u0eb2\u0e97\u0eb5",ss:"%d \u0ea7\u0eb4\u0e99\u0eb2\u0e97\u0eb5",m:"1 \u0e99\u0eb2\u0e97\u0eb5",mm:"%d \u0e99\u0eb2\u0e97\u0eb5",h:"1 \u0e8a\u0ebb\u0ec8\u0ea7\u0ec2\u0ea1\u0e87",hh:"%d \u0e8a\u0ebb\u0ec8\u0ea7\u0ec2\u0ea1\u0e87",d:"1 \u0ea1\u0eb7\u0ec9",dd:"%d \u0ea1\u0eb7\u0ec9",M:"1 \u0ec0\u0e94\u0eb7\u0ead\u0e99",MM:"%d \u0ec0\u0e94\u0eb7\u0ead\u0e99",y:"1 \u0e9b\u0eb5",yy:"%d \u0e9b\u0eb5"},dayOfMonthOrdinalParse:/(\u0e97\u0eb5\u0ec8)\d{1,2}/,ordinal:function(e){return"\u0e97\u0eb5\u0ec8"+e}});var nn={ss:"sekund\u0117_sekund\u017ei\u0173_sekundes",m:"minut\u0117_minut\u0117s_minut\u0119",mm:"minut\u0117s_minu\u010di\u0173_minutes",h:"valanda_valandos_valand\u0105",hh:"valandos_valand\u0173_valandas",d:"diena_dienos_dien\u0105",dd:"dienos_dien\u0173_dienas",M:"m\u0117nuo_m\u0117nesio_m\u0117nes\u012f",MM:"m\u0117nesiai_m\u0117nesi\u0173_m\u0117nesius",y:"metai_met\u0173_metus",yy:"metai_met\u0173_metus"};function dn(e,a,t,s){return a?_n(t)[0]:s?_n(t)[1]:_n(t)[2]}function rn(e){return e%10==0||10<e&&e<20}function _n(e){return nn[e].split("_")}function on(e,a,t,s){var n=e+" ";return 1===e?n+dn(0,a,t[0],s):a?n+(rn(e)?_n(t)[1]:_n(t)[0]):s?n+_n(t)[1]:n+(rn(e)?_n(t)[1]:_n(t)[2])}l.defineLocale("lt",{months:{format:"sausio_vasario_kovo_baland\u017eio_gegu\u017e\u0117s_bir\u017eelio_liepos_rugpj\u016b\u010dio_rugs\u0117jo_spalio_lapkri\u010dio_gruod\u017eio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegu\u017e\u0117_bir\u017eelis_liepa_rugpj\u016btis_rugs\u0117jis_spalis_lapkritis_gruodis".split("_"),isFormat:/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadien\u012f_pirmadien\u012f_antradien\u012f_tre\u010diadien\u012f_ketvirtadien\u012f_penktadien\u012f_\u0161e\u0161tadien\u012f".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_tre\u010diadienis_ketvirtadienis_penktadienis_\u0161e\u0161tadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_\u0160e\u0161".split("_"),weekdaysMin:"S_P_A_T_K_Pn_\u0160".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[\u0160iandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Pra\u0117jus\u012f] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prie\u0161 %s",s:function(e,a,t,s){return a?"kelios sekund\u0117s":s?"keli\u0173 sekund\u017ei\u0173":"kelias sekundes"},ss:on,m:dn,mm:on,h:dn,hh:on,d:dn,dd:on,M:dn,MM:on,y:dn,yy:on},dayOfMonthOrdinalParse:/\d{1,2}-oji/,ordinal:function(e){return e+"-oji"},week:{dow:1,doy:4}});var mn={ss:"sekundes_sekund\u0113m_sekunde_sekundes".split("_"),m:"min\u016btes_min\u016bt\u0113m_min\u016bte_min\u016btes".split("_"),mm:"min\u016btes_min\u016bt\u0113m_min\u016bte_min\u016btes".split("_"),h:"stundas_stund\u0101m_stunda_stundas".split("_"),hh:"stundas_stund\u0101m_stunda_stundas".split("_"),d:"dienas_dien\u0101m_diena_dienas".split("_"),dd:"dienas_dien\u0101m_diena_dienas".split("_"),M:"m\u0113ne\u0161a_m\u0113ne\u0161iem_m\u0113nesis_m\u0113ne\u0161i".split("_"),MM:"m\u0113ne\u0161a_m\u0113ne\u0161iem_m\u0113nesis_m\u0113ne\u0161i".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")};function un(e,a,t){return t?a%10==1&&a%100!=11?e[2]:e[3]:a%10==1&&a%100!=11?e[0]:e[1]}function ln(e,a,t){return e+" "+un(mn[t],e,a)}function Mn(e,a,t){return un(mn[t],e,a)}l.defineLocale("lv",{months:"janv\u0101ris_febru\u0101ris_marts_apr\u012blis_maijs_j\u016bnijs_j\u016blijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_j\u016bn_j\u016bl_aug_sep_okt_nov_dec".split("_"),weekdays:"sv\u0113tdiena_pirmdiena_otrdiena_tre\u0161diena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[\u0160odien pulksten] LT",nextDay:"[R\u012bt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pag\u0101ju\u0161\u0101] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"p\u0113c %s",past:"pirms %s",s:function(e,a){return a?"da\u017eas sekundes":"da\u017e\u0101m sekund\u0113m"},ss:ln,m:Mn,mm:ln,h:Mn,hh:ln,d:Mn,dd:ln,M:Mn,MM:ln,y:Mn,yy:ln},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});var hn={words:{ss:["sekund","sekunda","sekundi"],m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mjesec","mjeseca","mjeseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,a){return 1===e?a[0]:2<=e&&e<=4?a[1]:a[2]},translate:function(e,a,t){var s=hn.words[t];return 1===t.length?a?s[0]:s[1]:e+" "+hn.correctGrammaticalCase(e,s)}};function Ln(e,a,t,s){switch(t){case"s":return a?"\u0445\u044d\u0434\u0445\u044d\u043d \u0441\u0435\u043a\u0443\u043d\u0434":"\u0445\u044d\u0434\u0445\u044d\u043d \u0441\u0435\u043a\u0443\u043d\u0434\u044b\u043d";case"ss":return e+(a?" \u0441\u0435\u043a\u0443\u043d\u0434":" \u0441\u0435\u043a\u0443\u043d\u0434\u044b\u043d");case"m":case"mm":return e+(a?" \u043c\u0438\u043d\u0443\u0442":" \u043c\u0438\u043d\u0443\u0442\u044b\u043d");case"h":case"hh":return e+(a?" \u0446\u0430\u0433":" \u0446\u0430\u0433\u0438\u0439\u043d");case"d":case"dd":return e+(a?" \u04e9\u0434\u04e9\u0440":" \u04e9\u0434\u0440\u0438\u0439\u043d");case"M":case"MM":return e+(a?" \u0441\u0430\u0440":" \u0441\u0430\u0440\u044b\u043d");case"y":case"yy":return e+(a?" \u0436\u0438\u043b":" \u0436\u0438\u043b\u0438\u0439\u043d");default:return e}}l.defineLocale("me",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sjutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[ju\u010de u] LT",lastWeek:function(){return["[pro\u0161le] [nedjelje] [u] LT","[pro\u0161log] [ponedjeljka] [u] LT","[pro\u0161log] [utorka] [u] LT","[pro\u0161le] [srijede] [u] LT","[pro\u0161log] [\u010detvrtka] [u] LT","[pro\u0161log] [petka] [u] LT","[pro\u0161le] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"nekoliko sekundi",ss:hn.translate,m:hn.translate,mm:hn.translate,h:hn.translate,hh:hn.translate,d:"dan",dd:hn.translate,M:"mjesec",MM:hn.translate,y:"godinu",yy:hn.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),l.defineLocale("mi",{months:"Kohi-t\u0101te_Hui-tanguru_Pout\u016b-te-rangi_Paenga-wh\u0101wh\u0101_Haratua_Pipiri_H\u014dngoingoi_Here-turi-k\u014dk\u0101_Mahuru_Whiringa-\u0101-nuku_Whiringa-\u0101-rangi_Hakihea".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_H\u014dngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"),monthsRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,weekdays:"R\u0101tapu_Mane_T\u016brei_Wenerei_T\u0101ite_Paraire_H\u0101tarei".split("_"),weekdaysShort:"Ta_Ma_T\u016b_We_T\u0101i_Pa_H\u0101".split("_"),weekdaysMin:"Ta_Ma_T\u016b_We_T\u0101i_Pa_H\u0101".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [i] HH:mm",LLLL:"dddd, D MMMM YYYY [i] HH:mm"},calendar:{sameDay:"[i teie mahana, i] LT",nextDay:"[apopo i] LT",nextWeek:"dddd [i] LT",lastDay:"[inanahi i] LT",lastWeek:"dddd [whakamutunga i] LT",sameElse:"L"},relativeTime:{future:"i roto i %s",past:"%s i mua",s:"te h\u0113kona ruarua",ss:"%d h\u0113kona",m:"he meneti",mm:"%d meneti",h:"te haora",hh:"%d haora",d:"he ra",dd:"%d ra",M:"he marama",MM:"%d marama",y:"he tau",yy:"%d tau"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}}),l.defineLocale("mk",{months:"\u0458\u0430\u043d\u0443\u0430\u0440\u0438_\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0458_\u0458\u0443\u043d\u0438_\u0458\u0443\u043b\u0438_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438_\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438_\u043d\u043e\u0435\u043c\u0432\u0440\u0438_\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438".split("_"),monthsShort:"\u0458\u0430\u043d_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0458_\u0458\u0443\u043d_\u0458\u0443\u043b_\u0430\u0432\u0433_\u0441\u0435\u043f_\u043e\u043a\u0442_\u043d\u043e\u0435_\u0434\u0435\u043a".split("_"),weekdays:"\u043d\u0435\u0434\u0435\u043b\u0430_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0440\u0442\u043e\u043a_\u043f\u0435\u0442\u043e\u043a_\u0441\u0430\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0435\u0434_\u043f\u043e\u043d_\u0432\u0442\u043e_\u0441\u0440\u0435_\u0447\u0435\u0442_\u043f\u0435\u0442_\u0441\u0430\u0431".split("_"),weekdaysMin:"\u043de_\u043fo_\u0432\u0442_\u0441\u0440_\u0447\u0435_\u043f\u0435_\u0441a".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[\u0414\u0435\u043d\u0435\u0441 \u0432\u043e] LT",nextDay:"[\u0423\u0442\u0440\u0435 \u0432\u043e] LT",nextWeek:"[\u0412\u043e] dddd [\u0432\u043e] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430 \u0432\u043e] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[\u0418\u0437\u043c\u0438\u043d\u0430\u0442\u0430\u0442\u0430] dddd [\u0432\u043e] LT";case 1:case 2:case 4:case 5:return"[\u0418\u0437\u043c\u0438\u043d\u0430\u0442\u0438\u043e\u0442] dddd [\u0432\u043e] LT"}},sameElse:"L"},relativeTime:{future:"\u043f\u043e\u0441\u043b\u0435 %s",past:"\u043f\u0440\u0435\u0434 %s",s:"\u043d\u0435\u043a\u043e\u043b\u043a\u0443 \u0441\u0435\u043a\u0443\u043d\u0434\u0438",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434\u0438",m:"\u043c\u0438\u043d\u0443\u0442\u0430",mm:"%d \u043c\u0438\u043d\u0443\u0442\u0438",h:"\u0447\u0430\u0441",hh:"%d \u0447\u0430\u0441\u0430",d:"\u0434\u0435\u043d",dd:"%d \u0434\u0435\u043d\u0430",M:"\u043c\u0435\u0441\u0435\u0446",MM:"%d \u043c\u0435\u0441\u0435\u0446\u0438",y:"\u0433\u043e\u0434\u0438\u043d\u0430",yy:"%d \u0433\u043e\u0434\u0438\u043d\u0438"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0435\u0432|\u0435\u043d|\u0442\u0438|\u0432\u0438|\u0440\u0438|\u043c\u0438)/,ordinal:function(e){var a=e%10,t=e%100;return 0===e?e+"-\u0435\u0432":0===t?e+"-\u0435\u043d":10<t&&t<20?e+"-\u0442\u0438":1===a?e+"-\u0432\u0438":2===a?e+"-\u0440\u0438":7===a||8===a?e+"-\u043c\u0438":e+"-\u0442\u0438"},week:{dow:1,doy:7}}),l.defineLocale("ml",{months:"\u0d1c\u0d28\u0d41\u0d35\u0d30\u0d3f_\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41\u0d35\u0d30\u0d3f_\u0d2e\u0d3e\u0d7c\u0d1a\u0d4d\u0d1a\u0d4d_\u0d0f\u0d2a\u0d4d\u0d30\u0d3f\u0d7d_\u0d2e\u0d47\u0d2f\u0d4d_\u0d1c\u0d42\u0d7a_\u0d1c\u0d42\u0d32\u0d48_\u0d13\u0d17\u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d4d_\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31\u0d02\u0d2c\u0d7c_\u0d12\u0d15\u0d4d\u0d1f\u0d4b\u0d2c\u0d7c_\u0d28\u0d35\u0d02\u0d2c\u0d7c_\u0d21\u0d3f\u0d38\u0d02\u0d2c\u0d7c".split("_"),monthsShort:"\u0d1c\u0d28\u0d41._\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41._\u0d2e\u0d3e\u0d7c._\u0d0f\u0d2a\u0d4d\u0d30\u0d3f._\u0d2e\u0d47\u0d2f\u0d4d_\u0d1c\u0d42\u0d7a_\u0d1c\u0d42\u0d32\u0d48._\u0d13\u0d17._\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31._\u0d12\u0d15\u0d4d\u0d1f\u0d4b._\u0d28\u0d35\u0d02._\u0d21\u0d3f\u0d38\u0d02.".split("_"),monthsParseExact:!0,weekdays:"\u0d1e\u0d3e\u0d2f\u0d31\u0d3e\u0d34\u0d4d\u0d1a_\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d33\u0d3e\u0d34\u0d4d\u0d1a_\u0d1a\u0d4a\u0d35\u0d4d\u0d35\u0d3e\u0d34\u0d4d\u0d1a_\u0d2c\u0d41\u0d27\u0d28\u0d3e\u0d34\u0d4d\u0d1a_\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d3e\u0d34\u0d4d\u0d1a_\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u0d1a_\u0d36\u0d28\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u0d1a".split("_"),weekdaysShort:"\u0d1e\u0d3e\u0d2f\u0d7c_\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d7e_\u0d1a\u0d4a\u0d35\u0d4d\u0d35_\u0d2c\u0d41\u0d27\u0d7b_\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d02_\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f_\u0d36\u0d28\u0d3f".split("_"),weekdaysMin:"\u0d1e\u0d3e_\u0d24\u0d3f_\u0d1a\u0d4a_\u0d2c\u0d41_\u0d35\u0d4d\u0d2f\u0d3e_\u0d35\u0d46_\u0d36".split("_"),longDateFormat:{LT:"A h:mm -\u0d28\u0d41",LTS:"A h:mm:ss -\u0d28\u0d41",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -\u0d28\u0d41",LLLL:"dddd, D MMMM YYYY, A h:mm -\u0d28\u0d41"},calendar:{sameDay:"[\u0d07\u0d28\u0d4d\u0d28\u0d4d] LT",nextDay:"[\u0d28\u0d3e\u0d33\u0d46] LT",nextWeek:"dddd, LT",lastDay:"[\u0d07\u0d28\u0d4d\u0d28\u0d32\u0d46] LT",lastWeek:"[\u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d",past:"%s \u0d2e\u0d41\u0d7b\u0d2a\u0d4d",s:"\u0d05\u0d7d\u0d2a \u0d28\u0d3f\u0d2e\u0d3f\u0d37\u0d19\u0d4d\u0d19\u0d7e",ss:"%d \u0d38\u0d46\u0d15\u0d4d\u0d15\u0d7b\u0d21\u0d4d",m:"\u0d12\u0d30\u0d41 \u0d2e\u0d3f\u0d28\u0d3f\u0d31\u0d4d\u0d31\u0d4d",mm:"%d \u0d2e\u0d3f\u0d28\u0d3f\u0d31\u0d4d\u0d31\u0d4d",h:"\u0d12\u0d30\u0d41 \u0d2e\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d42\u0d7c",hh:"%d \u0d2e\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d42\u0d7c",d:"\u0d12\u0d30\u0d41 \u0d26\u0d3f\u0d35\u0d38\u0d02",dd:"%d \u0d26\u0d3f\u0d35\u0d38\u0d02",M:"\u0d12\u0d30\u0d41 \u0d2e\u0d3e\u0d38\u0d02",MM:"%d \u0d2e\u0d3e\u0d38\u0d02",y:"\u0d12\u0d30\u0d41 \u0d35\u0d7c\u0d37\u0d02",yy:"%d \u0d35\u0d7c\u0d37\u0d02"},meridiemParse:/\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f|\u0d30\u0d3e\u0d35\u0d3f\u0d32\u0d46|\u0d09\u0d1a\u0d4d\u0d1a \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d|\u0d35\u0d48\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d47\u0d30\u0d02|\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f/i,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f"===a&&4<=e||"\u0d09\u0d1a\u0d4d\u0d1a \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d"===a||"\u0d35\u0d48\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d47\u0d30\u0d02"===a?e+12:e},meridiem:function(e,a,t){return e<4?"\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f":e<12?"\u0d30\u0d3e\u0d35\u0d3f\u0d32\u0d46":e<17?"\u0d09\u0d1a\u0d4d\u0d1a \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d":e<20?"\u0d35\u0d48\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d47\u0d30\u0d02":"\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f"}}),l.defineLocale("mn",{months:"\u041d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0425\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0413\u0443\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0414\u04e9\u0440\u04e9\u0432\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0422\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0417\u0443\u0440\u0433\u0430\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0414\u043e\u043b\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u041d\u0430\u0439\u043c\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0415\u0441\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0410\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0410\u0440\u0432\u0430\u043d \u043d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0410\u0440\u0432\u0430\u043d \u0445\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440".split("_"),monthsShort:"1 \u0441\u0430\u0440_2 \u0441\u0430\u0440_3 \u0441\u0430\u0440_4 \u0441\u0430\u0440_5 \u0441\u0430\u0440_6 \u0441\u0430\u0440_7 \u0441\u0430\u0440_8 \u0441\u0430\u0440_9 \u0441\u0430\u0440_10 \u0441\u0430\u0440_11 \u0441\u0430\u0440_12 \u0441\u0430\u0440".split("_"),monthsParseExact:!0,weekdays:"\u041d\u044f\u043c_\u0414\u0430\u0432\u0430\u0430_\u041c\u044f\u0433\u043c\u0430\u0440_\u041b\u0445\u0430\u0433\u0432\u0430_\u041f\u04af\u0440\u044d\u0432_\u0411\u0430\u0430\u0441\u0430\u043d_\u0411\u044f\u043c\u0431\u0430".split("_"),weekdaysShort:"\u041d\u044f\u043c_\u0414\u0430\u0432_\u041c\u044f\u0433_\u041b\u0445\u0430_\u041f\u04af\u0440_\u0411\u0430\u0430_\u0411\u044f\u043c".split("_"),weekdaysMin:"\u041d\u044f_\u0414\u0430_\u041c\u044f_\u041b\u0445_\u041f\u04af_\u0411\u0430_\u0411\u044f".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY \u043e\u043d\u044b MMMM\u044b\u043d D",LLL:"YYYY \u043e\u043d\u044b MMMM\u044b\u043d D HH:mm",LLLL:"dddd, YYYY \u043e\u043d\u044b MMMM\u044b\u043d D HH:mm"},meridiemParse:/\u04ae\u04e8|\u04ae\u0425/i,isPM:function(e){return"\u04ae\u0425"===e},meridiem:function(e,a,t){return e<12?"\u04ae\u04e8":"\u04ae\u0425"},calendar:{sameDay:"[\u04e8\u043d\u04e9\u04e9\u0434\u04e9\u0440] LT",nextDay:"[\u041c\u0430\u0440\u0433\u0430\u0430\u0448] LT",nextWeek:"[\u0418\u0440\u044d\u0445] dddd LT",lastDay:"[\u04e8\u0447\u0438\u0433\u0434\u04e9\u0440] LT",lastWeek:"[\u04e8\u043d\u0433\u04e9\u0440\u0441\u04e9\u043d] dddd LT",sameElse:"L"},relativeTime:{future:"%s \u0434\u0430\u0440\u0430\u0430",past:"%s \u04e9\u043c\u043d\u04e9",s:Ln,ss:Ln,m:Ln,mm:Ln,h:Ln,hh:Ln,d:Ln,dd:Ln,M:Ln,MM:Ln,y:Ln,yy:Ln},dayOfMonthOrdinalParse:/\d{1,2} \u04e9\u0434\u04e9\u0440/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+" \u04e9\u0434\u04e9\u0440";default:return e}}});var cn={1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096a",5:"\u096b",6:"\u096c",7:"\u096d",8:"\u096e",9:"\u096f",0:"\u0966"},Yn={"\u0967":"1","\u0968":"2","\u0969":"3","\u096a":"4","\u096b":"5","\u096c":"6","\u096d":"7","\u096e":"8","\u096f":"9","\u0966":"0"};function yn(e,a,t,s){var n="";if(a)switch(t){case"s":n="\u0915\u093e\u0939\u0940 \u0938\u0947\u0915\u0902\u0926";break;case"ss":n="%d \u0938\u0947\u0915\u0902\u0926";break;case"m":n="\u090f\u0915 \u092e\u093f\u0928\u093f\u091f";break;case"mm":n="%d \u092e\u093f\u0928\u093f\u091f\u0947";break;case"h":n="\u090f\u0915 \u0924\u093e\u0938";break;case"hh":n="%d \u0924\u093e\u0938";break;case"d":n="\u090f\u0915 \u0926\u093f\u0935\u0938";break;case"dd":n="%d \u0926\u093f\u0935\u0938";break;case"M":n="\u090f\u0915 \u092e\u0939\u093f\u0928\u093e";break;case"MM":n="%d \u092e\u0939\u093f\u0928\u0947";break;case"y":n="\u090f\u0915 \u0935\u0930\u094d\u0937";break;case"yy":n="%d \u0935\u0930\u094d\u0937\u0947";break}else switch(t){case"s":n="\u0915\u093e\u0939\u0940 \u0938\u0947\u0915\u0902\u0926\u093e\u0902";break;case"ss":n="%d \u0938\u0947\u0915\u0902\u0926\u093e\u0902";break;case"m":n="\u090f\u0915\u093e \u092e\u093f\u0928\u093f\u091f\u093e";break;case"mm":n="%d \u092e\u093f\u0928\u093f\u091f\u093e\u0902";break;case"h":n="\u090f\u0915\u093e \u0924\u093e\u0938\u093e";break;case"hh":n="%d \u0924\u093e\u0938\u093e\u0902";break;case"d":n="\u090f\u0915\u093e \u0926\u093f\u0935\u0938\u093e";break;case"dd":n="%d \u0926\u093f\u0935\u0938\u093e\u0902";break;case"M":n="\u090f\u0915\u093e \u092e\u0939\u093f\u0928\u094d\u092f\u093e";break;case"MM":n="%d \u092e\u0939\u093f\u0928\u094d\u092f\u093e\u0902";break;case"y":n="\u090f\u0915\u093e \u0935\u0930\u094d\u0937\u093e";break;case"yy":n="%d \u0935\u0930\u094d\u0937\u093e\u0902";break}return n.replace(/%d/i,e)}l.defineLocale("mr",{months:"\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u090f\u092a\u094d\u0930\u093f\u0932_\u092e\u0947_\u091c\u0942\u0928_\u091c\u0941\u0932\u0948_\u0911\u0917\u0938\u094d\u091f_\u0938\u092a\u094d\u091f\u0947\u0902\u092c\u0930_\u0911\u0915\u094d\u091f\u094b\u092c\u0930_\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930_\u0921\u093f\u0938\u0947\u0902\u092c\u0930".split("_"),monthsShort:"\u091c\u093e\u0928\u0947._\u092b\u0947\u092c\u094d\u0930\u0941._\u092e\u093e\u0930\u094d\u091a._\u090f\u092a\u094d\u0930\u093f._\u092e\u0947._\u091c\u0942\u0928._\u091c\u0941\u0932\u0948._\u0911\u0917._\u0938\u092a\u094d\u091f\u0947\u0902._\u0911\u0915\u094d\u091f\u094b._\u0928\u094b\u0935\u094d\u0939\u0947\u0902._\u0921\u093f\u0938\u0947\u0902.".split("_"),monthsParseExact:!0,weekdays:"\u0930\u0935\u093f\u0935\u093e\u0930_\u0938\u094b\u092e\u0935\u093e\u0930_\u092e\u0902\u0917\u0933\u0935\u093e\u0930_\u092c\u0941\u0927\u0935\u093e\u0930_\u0917\u0941\u0930\u0942\u0935\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930_\u0936\u0928\u093f\u0935\u093e\u0930".split("_"),weekdaysShort:"\u0930\u0935\u093f_\u0938\u094b\u092e_\u092e\u0902\u0917\u0933_\u092c\u0941\u0927_\u0917\u0941\u0930\u0942_\u0936\u0941\u0915\u094d\u0930_\u0936\u0928\u093f".split("_"),weekdaysMin:"\u0930_\u0938\u094b_\u092e\u0902_\u092c\u0941_\u0917\u0941_\u0936\u0941_\u0936".split("_"),longDateFormat:{LT:"A h:mm \u0935\u093e\u091c\u0924\u093e",LTS:"A h:mm:ss \u0935\u093e\u091c\u0924\u093e",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u0935\u093e\u091c\u0924\u093e",LLLL:"dddd, D MMMM YYYY, A h:mm \u0935\u093e\u091c\u0924\u093e"},calendar:{sameDay:"[\u0906\u091c] LT",nextDay:"[\u0909\u0926\u094d\u092f\u093e] LT",nextWeek:"dddd, LT",lastDay:"[\u0915\u093e\u0932] LT",lastWeek:"[\u092e\u093e\u0917\u0940\u0932] dddd, LT",sameElse:"L"},relativeTime:{future:"%s\u092e\u0927\u094d\u092f\u0947",past:"%s\u092a\u0942\u0930\u094d\u0935\u0940",s:yn,ss:yn,m:yn,mm:yn,h:yn,hh:yn,d:yn,dd:yn,M:yn,MM:yn,y:yn,yy:yn},preparse:function(e){return e.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g,function(e){return Yn[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return cn[e]})},meridiemParse:/\u0930\u093e\u0924\u094d\u0930\u0940|\u0938\u0915\u093e\u0933\u0940|\u0926\u0941\u092a\u093e\u0930\u0940|\u0938\u093e\u092f\u0902\u0915\u093e\u0933\u0940/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0930\u093e\u0924\u094d\u0930\u0940"===a?e<4?e:e+12:"\u0938\u0915\u093e\u0933\u0940"===a?e:"\u0926\u0941\u092a\u093e\u0930\u0940"===a?10<=e?e:e+12:"\u0938\u093e\u092f\u0902\u0915\u093e\u0933\u0940"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u0930\u093e\u0924\u094d\u0930\u0940":e<10?"\u0938\u0915\u093e\u0933\u0940":e<17?"\u0926\u0941\u092a\u093e\u0930\u0940":e<20?"\u0938\u093e\u092f\u0902\u0915\u093e\u0933\u0940":"\u0930\u093e\u0924\u094d\u0930\u0940"},week:{dow:0,doy:6}}),l.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"tengahari"===a?11<=e?e:e+12:"petang"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}}),l.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"tengahari"===a?11<=e?e:e+12:"petang"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}}),l.defineLocale("mt",{months:"Jannar_Frar_Marzu_April_Mejju_\u0120unju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Di\u010bembru".split("_"),monthsShort:"Jan_Fra_Mar_Apr_Mej_\u0120un_Lul_Aww_Set_Ott_Nov_Di\u010b".split("_"),weekdays:"Il-\u0126add_It-Tnejn_It-Tlieta_L-Erbg\u0127a_Il-\u0126amis_Il-\u0120img\u0127a_Is-Sibt".split("_"),weekdaysShort:"\u0126ad_Tne_Tli_Erb_\u0126am_\u0120im_Sib".split("_"),weekdaysMin:"\u0126a_Tn_Tl_Er_\u0126a_\u0120i_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Illum fil-]LT",nextDay:"[G\u0127ada fil-]LT",nextWeek:"dddd [fil-]LT",lastDay:"[Il-biera\u0127 fil-]LT",lastWeek:"dddd [li g\u0127adda] [fil-]LT",sameElse:"L"},relativeTime:{future:"f\u2019 %s",past:"%s ilu",s:"ftit sekondi",ss:"%d sekondi",m:"minuta",mm:"%d minuti",h:"sieg\u0127a",hh:"%d sieg\u0127at",d:"\u0121urnata",dd:"%d \u0121ranet",M:"xahar",MM:"%d xhur",y:"sena",yy:"%d sni"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}});var fn={1:"\u1041",2:"\u1042",3:"\u1043",4:"\u1044",5:"\u1045",6:"\u1046",7:"\u1047",8:"\u1048",9:"\u1049",0:"\u1040"},kn={"\u1041":"1","\u1042":"2","\u1043":"3","\u1044":"4","\u1045":"5","\u1046":"6","\u1047":"7","\u1048":"8","\u1049":"9","\u1040":"0"};l.defineLocale("my",{months:"\u1007\u1014\u103a\u1014\u101d\u102b\u101b\u102e_\u1016\u1031\u1016\u1031\u102c\u103a\u101d\u102b\u101b\u102e_\u1019\u1010\u103a_\u1027\u1015\u103c\u102e_\u1019\u1031_\u1007\u103d\u1014\u103a_\u1007\u1030\u101c\u102d\u102f\u1004\u103a_\u101e\u103c\u1002\u102f\u1010\u103a_\u1005\u1000\u103a\u1010\u1004\u103a\u1018\u102c_\u1021\u1031\u102c\u1000\u103a\u1010\u102d\u102f\u1018\u102c_\u1014\u102d\u102f\u101d\u1004\u103a\u1018\u102c_\u1012\u102e\u1007\u1004\u103a\u1018\u102c".split("_"),monthsShort:"\u1007\u1014\u103a_\u1016\u1031_\u1019\u1010\u103a_\u1015\u103c\u102e_\u1019\u1031_\u1007\u103d\u1014\u103a_\u101c\u102d\u102f\u1004\u103a_\u101e\u103c_\u1005\u1000\u103a_\u1021\u1031\u102c\u1000\u103a_\u1014\u102d\u102f_\u1012\u102e".split("_"),weekdays:"\u1010\u1014\u1004\u103a\u1039\u1002\u1014\u103d\u1031_\u1010\u1014\u1004\u103a\u1039\u101c\u102c_\u1021\u1004\u103a\u1039\u1002\u102b_\u1017\u102f\u1012\u1039\u1013\u101f\u1030\u1038_\u1000\u103c\u102c\u101e\u1015\u1010\u1031\u1038_\u101e\u1031\u102c\u1000\u103c\u102c_\u1005\u1014\u1031".split("_"),weekdaysShort:"\u1014\u103d\u1031_\u101c\u102c_\u1002\u102b_\u101f\u1030\u1038_\u1000\u103c\u102c_\u101e\u1031\u102c_\u1014\u1031".split("_"),weekdaysMin:"\u1014\u103d\u1031_\u101c\u102c_\u1002\u102b_\u101f\u1030\u1038_\u1000\u103c\u102c_\u101e\u1031\u102c_\u1014\u1031".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u101a\u1014\u1031.] LT [\u1019\u103e\u102c]",nextDay:"[\u1019\u1014\u1000\u103a\u1016\u103c\u1014\u103a] LT [\u1019\u103e\u102c]",nextWeek:"dddd LT [\u1019\u103e\u102c]",lastDay:"[\u1019\u1014\u1031.\u1000] LT [\u1019\u103e\u102c]",lastWeek:"[\u1015\u103c\u102e\u1038\u1001\u1032\u1037\u101e\u1031\u102c] dddd LT [\u1019\u103e\u102c]",sameElse:"L"},relativeTime:{future:"\u101c\u102c\u1019\u100a\u103a\u1037 %s \u1019\u103e\u102c",past:"\u101c\u103d\u1014\u103a\u1001\u1032\u1037\u101e\u1031\u102c %s \u1000",s:"\u1005\u1000\u1039\u1000\u1014\u103a.\u1021\u1014\u100a\u103a\u1038\u1004\u101a\u103a",ss:"%d \u1005\u1000\u1039\u1000\u1014\u1037\u103a",m:"\u1010\u1005\u103a\u1019\u102d\u1014\u1005\u103a",mm:"%d \u1019\u102d\u1014\u1005\u103a",h:"\u1010\u1005\u103a\u1014\u102c\u101b\u102e",hh:"%d \u1014\u102c\u101b\u102e",d:"\u1010\u1005\u103a\u101b\u1000\u103a",dd:"%d \u101b\u1000\u103a",M:"\u1010\u1005\u103a\u101c",MM:"%d \u101c",y:"\u1010\u1005\u103a\u1014\u103e\u1005\u103a",yy:"%d \u1014\u103e\u1005\u103a"},preparse:function(e){return e.replace(/[\u1041\u1042\u1043\u1044\u1045\u1046\u1047\u1048\u1049\u1040]/g,function(e){return kn[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return fn[e]})},week:{dow:1,doy:4}}),l.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"s\xf8ndag_mandag_tirsdag_onsdag_torsdag_fredag_l\xf8rdag".split("_"),weekdaysShort:"s\xf8._ma._ti._on._to._fr._l\xf8.".split("_"),weekdaysMin:"s\xf8_ma_ti_on_to_fr_l\xf8".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i g\xe5r kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",ss:"%d sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en m\xe5ned",MM:"%d m\xe5neder",y:"ett \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});var pn={1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096a",5:"\u096b",6:"\u096c",7:"\u096d",8:"\u096e",9:"\u096f",0:"\u0966"},Dn={"\u0967":"1","\u0968":"2","\u0969":"3","\u096a":"4","\u096b":"5","\u096c":"6","\u096d":"7","\u096e":"8","\u096f":"9","\u0966":"0"};l.defineLocale("ne",{months:"\u091c\u0928\u0935\u0930\u0940_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u093f\u0932_\u092e\u0908_\u091c\u0941\u0928_\u091c\u0941\u0932\u093e\u0908_\u0905\u0917\u0937\u094d\u091f_\u0938\u0947\u092a\u094d\u091f\u0947\u092e\u094d\u092c\u0930_\u0905\u0915\u094d\u091f\u094b\u092c\u0930_\u0928\u094b\u092d\u0947\u092e\u094d\u092c\u0930_\u0921\u093f\u0938\u0947\u092e\u094d\u092c\u0930".split("_"),monthsShort:"\u091c\u0928._\u092b\u0947\u092c\u094d\u0930\u0941._\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u093f._\u092e\u0908_\u091c\u0941\u0928_\u091c\u0941\u0932\u093e\u0908._\u0905\u0917._\u0938\u0947\u092a\u094d\u091f._\u0905\u0915\u094d\u091f\u094b._\u0928\u094b\u092d\u0947._\u0921\u093f\u0938\u0947.".split("_"),monthsParseExact:!0,weekdays:"\u0906\u0907\u0924\u092c\u093e\u0930_\u0938\u094b\u092e\u092c\u093e\u0930_\u092e\u0919\u094d\u0917\u0932\u092c\u093e\u0930_\u092c\u0941\u0927\u092c\u093e\u0930_\u092c\u093f\u0939\u093f\u092c\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u092c\u093e\u0930_\u0936\u0928\u093f\u092c\u093e\u0930".split("_"),weekdaysShort:"\u0906\u0907\u0924._\u0938\u094b\u092e._\u092e\u0919\u094d\u0917\u0932._\u092c\u0941\u0927._\u092c\u093f\u0939\u093f._\u0936\u0941\u0915\u094d\u0930._\u0936\u0928\u093f.".split("_"),weekdaysMin:"\u0906._\u0938\u094b._\u092e\u0902._\u092c\u0941._\u092c\u093f._\u0936\u0941._\u0936.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A\u0915\u094b h:mm \u092c\u091c\u0947",LTS:"A\u0915\u094b h:mm:ss \u092c\u091c\u0947",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A\u0915\u094b h:mm \u092c\u091c\u0947",LLLL:"dddd, D MMMM YYYY, A\u0915\u094b h:mm \u092c\u091c\u0947"},preparse:function(e){return e.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g,function(e){return Dn[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return pn[e]})},meridiemParse:/\u0930\u093e\u0924\u093f|\u092c\u093f\u0939\u093e\u0928|\u0926\u093f\u0909\u0901\u0938\u094b|\u0938\u093e\u0901\u091d/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0930\u093e\u0924\u093f"===a?e<4?e:e+12:"\u092c\u093f\u0939\u093e\u0928"===a?e:"\u0926\u093f\u0909\u0901\u0938\u094b"===a?10<=e?e:e+12:"\u0938\u093e\u0901\u091d"===a?e+12:void 0},meridiem:function(e,a,t){return e<3?"\u0930\u093e\u0924\u093f":e<12?"\u092c\u093f\u0939\u093e\u0928":e<16?"\u0926\u093f\u0909\u0901\u0938\u094b":e<20?"\u0938\u093e\u0901\u091d":"\u0930\u093e\u0924\u093f"},calendar:{sameDay:"[\u0906\u091c] LT",nextDay:"[\u092d\u094b\u0932\u093f] LT",nextWeek:"[\u0906\u0909\u0901\u0926\u094b] dddd[,] LT",lastDay:"[\u0939\u093f\u091c\u094b] LT",lastWeek:"[\u0917\u090f\u0915\u094b] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s\u092e\u093e",past:"%s \u0905\u0917\u093e\u0921\u093f",s:"\u0915\u0947\u0939\u0940 \u0915\u094d\u0937\u0923",ss:"%d \u0938\u0947\u0915\u0947\u0923\u094d\u0921",m:"\u090f\u0915 \u092e\u093f\u0928\u0947\u091f",mm:"%d \u092e\u093f\u0928\u0947\u091f",h:"\u090f\u0915 \u0918\u0923\u094d\u091f\u093e",hh:"%d \u0918\u0923\u094d\u091f\u093e",d:"\u090f\u0915 \u0926\u093f\u0928",dd:"%d \u0926\u093f\u0928",M:"\u090f\u0915 \u092e\u0939\u093f\u0928\u093e",MM:"%d \u092e\u0939\u093f\u0928\u093e",y:"\u090f\u0915 \u092c\u0930\u094d\u0937",yy:"%d \u092c\u0930\u094d\u0937"},week:{dow:0,doy:6}});var Tn="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),gn="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),wn=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],vn=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;l.defineLocale("nl-be",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,a){return e?/-MMM-/.test(a)?gn[e.month()]:Tn[e.month()]:Tn},monthsRegex:vn,monthsShortRegex:vn,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:wn,longMonthsParse:wn,shortMonthsParse:wn,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"\xe9\xe9n minuut",mm:"%d minuten",h:"\xe9\xe9n uur",hh:"%d uur",d:"\xe9\xe9n dag",dd:"%d dagen",M:"\xe9\xe9n maand",MM:"%d maanden",y:"\xe9\xe9n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||20<=e?"ste":"de")},week:{dow:1,doy:4}});var Hn="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),Sn="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),bn=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],jn=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;l.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,a){return e?/-MMM-/.test(a)?Sn[e.month()]:Hn[e.month()]:Hn},monthsRegex:jn,monthsShortRegex:jn,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:bn,longMonthsParse:bn,shortMonthsParse:bn,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"\xe9\xe9n minuut",mm:"%d minuten",h:"\xe9\xe9n uur",hh:"%d uur",d:"\xe9\xe9n dag",dd:"%d dagen",M:"\xe9\xe9n maand",MM:"%d maanden",y:"\xe9\xe9n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||20<=e?"ste":"de")},week:{dow:1,doy:4}}),l.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sundag_m\xe5ndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_m\xe5n_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_m\xe5_ty_on_to_fr_l\xf8".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I g\xe5r klokka] LT",lastWeek:"[F\xf8reg\xe5ande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s sidan",s:"nokre sekund",ss:"%d sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",M:"ein m\xe5nad",MM:"%d m\xe5nader",y:"eit \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});var xn={1:"\u0a67",2:"\u0a68",3:"\u0a69",4:"\u0a6a",5:"\u0a6b",6:"\u0a6c",7:"\u0a6d",8:"\u0a6e",9:"\u0a6f",0:"\u0a66"},Pn={"\u0a67":"1","\u0a68":"2","\u0a69":"3","\u0a6a":"4","\u0a6b":"5","\u0a6c":"6","\u0a6d":"7","\u0a6e":"8","\u0a6f":"9","\u0a66":"0"};l.defineLocale("pa-in",{months:"\u0a1c\u0a28\u0a35\u0a30\u0a40_\u0a2b\u0a3c\u0a30\u0a35\u0a30\u0a40_\u0a2e\u0a3e\u0a30\u0a1a_\u0a05\u0a2a\u0a4d\u0a30\u0a48\u0a32_\u0a2e\u0a08_\u0a1c\u0a42\u0a28_\u0a1c\u0a41\u0a32\u0a3e\u0a08_\u0a05\u0a17\u0a38\u0a24_\u0a38\u0a24\u0a70\u0a2c\u0a30_\u0a05\u0a15\u0a24\u0a42\u0a2c\u0a30_\u0a28\u0a35\u0a70\u0a2c\u0a30_\u0a26\u0a38\u0a70\u0a2c\u0a30".split("_"),monthsShort:"\u0a1c\u0a28\u0a35\u0a30\u0a40_\u0a2b\u0a3c\u0a30\u0a35\u0a30\u0a40_\u0a2e\u0a3e\u0a30\u0a1a_\u0a05\u0a2a\u0a4d\u0a30\u0a48\u0a32_\u0a2e\u0a08_\u0a1c\u0a42\u0a28_\u0a1c\u0a41\u0a32\u0a3e\u0a08_\u0a05\u0a17\u0a38\u0a24_\u0a38\u0a24\u0a70\u0a2c\u0a30_\u0a05\u0a15\u0a24\u0a42\u0a2c\u0a30_\u0a28\u0a35\u0a70\u0a2c\u0a30_\u0a26\u0a38\u0a70\u0a2c\u0a30".split("_"),weekdays:"\u0a10\u0a24\u0a35\u0a3e\u0a30_\u0a38\u0a4b\u0a2e\u0a35\u0a3e\u0a30_\u0a2e\u0a70\u0a17\u0a32\u0a35\u0a3e\u0a30_\u0a2c\u0a41\u0a27\u0a35\u0a3e\u0a30_\u0a35\u0a40\u0a30\u0a35\u0a3e\u0a30_\u0a38\u0a3c\u0a41\u0a71\u0a15\u0a30\u0a35\u0a3e\u0a30_\u0a38\u0a3c\u0a28\u0a40\u0a1a\u0a30\u0a35\u0a3e\u0a30".split("_"),weekdaysShort:"\u0a10\u0a24_\u0a38\u0a4b\u0a2e_\u0a2e\u0a70\u0a17\u0a32_\u0a2c\u0a41\u0a27_\u0a35\u0a40\u0a30_\u0a38\u0a3c\u0a41\u0a15\u0a30_\u0a38\u0a3c\u0a28\u0a40".split("_"),weekdaysMin:"\u0a10\u0a24_\u0a38\u0a4b\u0a2e_\u0a2e\u0a70\u0a17\u0a32_\u0a2c\u0a41\u0a27_\u0a35\u0a40\u0a30_\u0a38\u0a3c\u0a41\u0a15\u0a30_\u0a38\u0a3c\u0a28\u0a40".split("_"),longDateFormat:{LT:"A h:mm \u0a35\u0a1c\u0a47",LTS:"A h:mm:ss \u0a35\u0a1c\u0a47",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u0a35\u0a1c\u0a47",LLLL:"dddd, D MMMM YYYY, A h:mm \u0a35\u0a1c\u0a47"},calendar:{sameDay:"[\u0a05\u0a1c] LT",nextDay:"[\u0a15\u0a32] LT",nextWeek:"[\u0a05\u0a17\u0a32\u0a3e] dddd, LT",lastDay:"[\u0a15\u0a32] LT",lastWeek:"[\u0a2a\u0a3f\u0a1b\u0a32\u0a47] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0a35\u0a3f\u0a71\u0a1a",past:"%s \u0a2a\u0a3f\u0a1b\u0a32\u0a47",s:"\u0a15\u0a41\u0a1d \u0a38\u0a15\u0a3f\u0a70\u0a1f",ss:"%d \u0a38\u0a15\u0a3f\u0a70\u0a1f",m:"\u0a07\u0a15 \u0a2e\u0a3f\u0a70\u0a1f",mm:"%d \u0a2e\u0a3f\u0a70\u0a1f",h:"\u0a07\u0a71\u0a15 \u0a18\u0a70\u0a1f\u0a3e",hh:"%d \u0a18\u0a70\u0a1f\u0a47",d:"\u0a07\u0a71\u0a15 \u0a26\u0a3f\u0a28",dd:"%d \u0a26\u0a3f\u0a28",M:"\u0a07\u0a71\u0a15 \u0a2e\u0a39\u0a40\u0a28\u0a3e",MM:"%d \u0a2e\u0a39\u0a40\u0a28\u0a47",y:"\u0a07\u0a71\u0a15 \u0a38\u0a3e\u0a32",yy:"%d \u0a38\u0a3e\u0a32"},preparse:function(e){return e.replace(/[\u0a67\u0a68\u0a69\u0a6a\u0a6b\u0a6c\u0a6d\u0a6e\u0a6f\u0a66]/g,function(e){return Pn[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return xn[e]})},meridiemParse:/\u0a30\u0a3e\u0a24|\u0a38\u0a35\u0a47\u0a30|\u0a26\u0a41\u0a2a\u0a39\u0a3f\u0a30|\u0a38\u0a3c\u0a3e\u0a2e/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0a30\u0a3e\u0a24"===a?e<4?e:e+12:"\u0a38\u0a35\u0a47\u0a30"===a?e:"\u0a26\u0a41\u0a2a\u0a39\u0a3f\u0a30"===a?10<=e?e:e+12:"\u0a38\u0a3c\u0a3e\u0a2e"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u0a30\u0a3e\u0a24":e<10?"\u0a38\u0a35\u0a47\u0a30":e<17?"\u0a26\u0a41\u0a2a\u0a39\u0a3f\u0a30":e<20?"\u0a38\u0a3c\u0a3e\u0a2e":"\u0a30\u0a3e\u0a24"},week:{dow:0,doy:6}});var On="stycze\u0144_luty_marzec_kwiecie\u0144_maj_czerwiec_lipiec_sierpie\u0144_wrzesie\u0144_pa\u017adziernik_listopad_grudzie\u0144".split("_"),Wn="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_wrze\u015bnia_pa\u017adziernika_listopada_grudnia".split("_");function En(e){return e%10<5&&1<e%10&&~~(e/10)%10!=1}function An(e,a,t){var s=e+" ";switch(t){case"ss":return s+(En(e)?"sekundy":"sekund");case"m":return a?"minuta":"minut\u0119";case"mm":return s+(En(e)?"minuty":"minut");case"h":return a?"godzina":"godzin\u0119";case"hh":return s+(En(e)?"godziny":"godzin");case"MM":return s+(En(e)?"miesi\u0105ce":"miesi\u0119cy");case"yy":return s+(En(e)?"lata":"lat")}}function Fn(e,a,t){var s=" ";return(20<=e%100||100<=e&&e%100==0)&&(s=" de "),e+s+{ss:"secunde",mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"}[t]}function zn(e,a,t){var s,n;return"m"===t?a?"\u043c\u0438\u043d\u0443\u0442\u0430":"\u043c\u0438\u043d\u0443\u0442\u0443":e+" "+(s=+e,n={ss:a?"\u0441\u0435\u043a\u0443\u043d\u0434\u0430_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434":"\u0441\u0435\u043a\u0443\u043d\u0434\u0443_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434",mm:a?"\u043c\u0438\u043d\u0443\u0442\u0430_\u043c\u0438\u043d\u0443\u0442\u044b_\u043c\u0438\u043d\u0443\u0442":"\u043c\u0438\u043d\u0443\u0442\u0443_\u043c\u0438\u043d\u0443\u0442\u044b_\u043c\u0438\u043d\u0443\u0442",hh:"\u0447\u0430\u0441_\u0447\u0430\u0441\u0430_\u0447\u0430\u0441\u043e\u0432",dd:"\u0434\u0435\u043d\u044c_\u0434\u043d\u044f_\u0434\u043d\u0435\u0439",MM:"\u043c\u0435\u0441\u044f\u0446_\u043c\u0435\u0441\u044f\u0446\u0430_\u043c\u0435\u0441\u044f\u0446\u0435\u0432",yy:"\u0433\u043e\u0434_\u0433\u043e\u0434\u0430_\u043b\u0435\u0442"}[t].split("_"),s%10==1&&s%100!=11?n[0]:2<=s%10&&s%10<=4&&(s%100<10||20<=s%100)?n[1]:n[2])}l.defineLocale("pl",{months:function(e,a){return e?""===a?"("+Wn[e.month()]+"|"+On[e.month()]+")":/D MMMM/.test(a)?Wn[e.month()]:On[e.month()]:On},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_pa\u017a_lis_gru".split("_"),weekdays:"niedziela_poniedzia\u0142ek_wtorek_\u015broda_czwartek_pi\u0105tek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_\u015br_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_\u015ar_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dzi\u015b o] LT",nextDay:"[Jutro o] LT",nextWeek:function(){switch(this.day()){case 0:return"[W niedziel\u0119 o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W \u015brod\u0119 o] LT";case 6:return"[W sobot\u0119 o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zesz\u0142\u0105 niedziel\u0119 o] LT";case 3:return"[W zesz\u0142\u0105 \u015brod\u0119 o] LT";case 6:return"[W zesz\u0142\u0105 sobot\u0119 o] LT";default:return"[W zesz\u0142y] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:An,m:An,mm:An,h:An,hh:An,d:"1 dzie\u0144",dd:"%d dni",M:"miesi\u0105c",MM:An,y:"rok",yy:An},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),l.defineLocale("pt-br",{months:"janeiro_fevereiro_mar\xe7o_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"Domingo_Segunda-feira_Ter\xe7a-feira_Quarta-feira_Quinta-feira_Sexta-feira_S\xe1bado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_S\xe1b".split("_"),weekdaysMin:"Do_2\xaa_3\xaa_4\xaa_5\xaa_6\xaa_S\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [\xe0s] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [\xe0s] HH:mm"},calendar:{sameDay:"[Hoje \xe0s] LT",nextDay:"[Amanh\xe3 \xe0s] LT",nextWeek:"dddd [\xe0s] LT",lastDay:"[Ontem \xe0s] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[\xdaltimo] dddd [\xe0s] LT":"[\xdaltima] dddd [\xe0s] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"h\xe1 %s",s:"poucos segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um m\xeas",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba"}),l.defineLocale("pt",{months:"janeiro_fevereiro_mar\xe7o_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"Domingo_Segunda-feira_Ter\xe7a-feira_Quarta-feira_Quinta-feira_Sexta-feira_S\xe1bado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_S\xe1b".split("_"),weekdaysMin:"Do_2\xaa_3\xaa_4\xaa_5\xaa_6\xaa_S\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje \xe0s] LT",nextDay:"[Amanh\xe3 \xe0s] LT",nextWeek:"dddd [\xe0s] LT",lastDay:"[Ontem \xe0s] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[\xdaltimo] dddd [\xe0s] LT":"[\xdaltima] dddd [\xe0s] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"h\xe1 %s",s:"segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um m\xeas",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}}),l.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminic\u0103_luni_mar\u021bi_miercuri_joi_vineri_s\xe2mb\u0103t\u0103".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_S\xe2m".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_S\xe2".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[m\xe2ine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s \xeen urm\u0103",s:"c\xe2teva secunde",ss:Fn,m:"un minut",mm:Fn,h:"o or\u0103",hh:Fn,d:"o zi",dd:Fn,M:"o lun\u0103",MM:Fn,y:"un an",yy:Fn},week:{dow:1,doy:7}});var Jn=[/^\u044f\u043d\u0432/i,/^\u0444\u0435\u0432/i,/^\u043c\u0430\u0440/i,/^\u0430\u043f\u0440/i,/^\u043c\u0430[\u0439\u044f]/i,/^\u0438\u044e\u043d/i,/^\u0438\u044e\u043b/i,/^\u0430\u0432\u0433/i,/^\u0441\u0435\u043d/i,/^\u043e\u043a\u0442/i,/^\u043d\u043e\u044f/i,/^\u0434\u0435\u043a/i];l.defineLocale("ru",{months:{format:"\u044f\u043d\u0432\u0430\u0440\u044f_\u0444\u0435\u0432\u0440\u0430\u043b\u044f_\u043c\u0430\u0440\u0442\u0430_\u0430\u043f\u0440\u0435\u043b\u044f_\u043c\u0430\u044f_\u0438\u044e\u043d\u044f_\u0438\u044e\u043b\u044f_\u0430\u0432\u0433\u0443\u0441\u0442\u0430_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f_\u043e\u043a\u0442\u044f\u0431\u0440\u044f_\u043d\u043e\u044f\u0431\u0440\u044f_\u0434\u0435\u043a\u0430\u0431\u0440\u044f".split("_"),standalone:"\u044f\u043d\u0432\u0430\u0440\u044c_\u0444\u0435\u0432\u0440\u0430\u043b\u044c_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b\u044c_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c_\u043e\u043a\u0442\u044f\u0431\u0440\u044c_\u043d\u043e\u044f\u0431\u0440\u044c_\u0434\u0435\u043a\u0430\u0431\u0440\u044c".split("_")},monthsShort:{format:"\u044f\u043d\u0432._\u0444\u0435\u0432\u0440._\u043c\u0430\u0440._\u0430\u043f\u0440._\u043c\u0430\u044f_\u0438\u044e\u043d\u044f_\u0438\u044e\u043b\u044f_\u0430\u0432\u0433._\u0441\u0435\u043d\u0442._\u043e\u043a\u0442._\u043d\u043e\u044f\u0431._\u0434\u0435\u043a.".split("_"),standalone:"\u044f\u043d\u0432._\u0444\u0435\u0432\u0440._\u043c\u0430\u0440\u0442_\u0430\u043f\u0440._\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433._\u0441\u0435\u043d\u0442._\u043e\u043a\u0442._\u043d\u043e\u044f\u0431._\u0434\u0435\u043a.".split("_")},weekdays:{standalone:"\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0435\u0440\u0433_\u043f\u044f\u0442\u043d\u0438\u0446\u0430_\u0441\u0443\u0431\u0431\u043e\u0442\u0430".split("_"),format:"\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0443_\u0447\u0435\u0442\u0432\u0435\u0440\u0433_\u043f\u044f\u0442\u043d\u0438\u0446\u0443_\u0441\u0443\u0431\u0431\u043e\u0442\u0443".split("_"),isFormat:/\[ ?[\u0412\u0432] ?(?:\u043f\u0440\u043e\u0448\u043b\u0443\u044e|\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e|\u044d\u0442\u0443)? ?\] ?dddd/},weekdaysShort:"\u0432\u0441_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),weekdaysMin:"\u0432\u0441_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),monthsParse:Jn,longMonthsParse:Jn,shortMonthsParse:Jn,monthsRegex:/^(\u044f\u043d\u0432\u0430\u0440[\u044c\u044f]|\u044f\u043d\u0432\.?|\u0444\u0435\u0432\u0440\u0430\u043b[\u044c\u044f]|\u0444\u0435\u0432\u0440?\.?|\u043c\u0430\u0440\u0442\u0430?|\u043c\u0430\u0440\.?|\u0430\u043f\u0440\u0435\u043b[\u044c\u044f]|\u0430\u043f\u0440\.?|\u043c\u0430[\u0439\u044f]|\u0438\u044e\u043d[\u044c\u044f]|\u0438\u044e\u043d\.?|\u0438\u044e\u043b[\u044c\u044f]|\u0438\u044e\u043b\.?|\u0430\u0432\u0433\u0443\u0441\u0442\u0430?|\u0430\u0432\u0433\.?|\u0441\u0435\u043d\u0442\u044f\u0431\u0440[\u044c\u044f]|\u0441\u0435\u043d\u0442?\.?|\u043e\u043a\u0442\u044f\u0431\u0440[\u044c\u044f]|\u043e\u043a\u0442\.?|\u043d\u043e\u044f\u0431\u0440[\u044c\u044f]|\u043d\u043e\u044f\u0431?\.?|\u0434\u0435\u043a\u0430\u0431\u0440[\u044c\u044f]|\u0434\u0435\u043a\.?)/i,monthsShortRegex:/^(\u044f\u043d\u0432\u0430\u0440[\u044c\u044f]|\u044f\u043d\u0432\.?|\u0444\u0435\u0432\u0440\u0430\u043b[\u044c\u044f]|\u0444\u0435\u0432\u0440?\.?|\u043c\u0430\u0440\u0442\u0430?|\u043c\u0430\u0440\.?|\u0430\u043f\u0440\u0435\u043b[\u044c\u044f]|\u0430\u043f\u0440\.?|\u043c\u0430[\u0439\u044f]|\u0438\u044e\u043d[\u044c\u044f]|\u0438\u044e\u043d\.?|\u0438\u044e\u043b[\u044c\u044f]|\u0438\u044e\u043b\.?|\u0430\u0432\u0433\u0443\u0441\u0442\u0430?|\u0430\u0432\u0433\.?|\u0441\u0435\u043d\u0442\u044f\u0431\u0440[\u044c\u044f]|\u0441\u0435\u043d\u0442?\.?|\u043e\u043a\u0442\u044f\u0431\u0440[\u044c\u044f]|\u043e\u043a\u0442\.?|\u043d\u043e\u044f\u0431\u0440[\u044c\u044f]|\u043d\u043e\u044f\u0431?\.?|\u0434\u0435\u043a\u0430\u0431\u0440[\u044c\u044f]|\u0434\u0435\u043a\.?)/i,monthsStrictRegex:/^(\u044f\u043d\u0432\u0430\u0440[\u044f\u044c]|\u0444\u0435\u0432\u0440\u0430\u043b[\u044f\u044c]|\u043c\u0430\u0440\u0442\u0430?|\u0430\u043f\u0440\u0435\u043b[\u044f\u044c]|\u043c\u0430[\u044f\u0439]|\u0438\u044e\u043d[\u044f\u044c]|\u0438\u044e\u043b[\u044f\u044c]|\u0430\u0432\u0433\u0443\u0441\u0442\u0430?|\u0441\u0435\u043d\u0442\u044f\u0431\u0440[\u044f\u044c]|\u043e\u043a\u0442\u044f\u0431\u0440[\u044f\u044c]|\u043d\u043e\u044f\u0431\u0440[\u044f\u044c]|\u0434\u0435\u043a\u0430\u0431\u0440[\u044f\u044c])/i,monthsShortStrictRegex:/^(\u044f\u043d\u0432\.|\u0444\u0435\u0432\u0440?\.|\u043c\u0430\u0440[\u0442.]|\u0430\u043f\u0440\.|\u043c\u0430[\u044f\u0439]|\u0438\u044e\u043d[\u044c\u044f.]|\u0438\u044e\u043b[\u044c\u044f.]|\u0430\u0432\u0433\.|\u0441\u0435\u043d\u0442?\.|\u043e\u043a\u0442\.|\u043d\u043e\u044f\u0431?\.|\u0434\u0435\u043a\.)/i,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0433.",LLL:"D MMMM YYYY \u0433., H:mm",LLLL:"dddd, D MMMM YYYY \u0433., H:mm"},calendar:{sameDay:"[\u0421\u0435\u0433\u043e\u0434\u043d\u044f, \u0432] LT",nextDay:"[\u0417\u0430\u0432\u0442\u0440\u0430, \u0432] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430, \u0432] LT",nextWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[\u0412\u043e] dddd, [\u0432] LT":"[\u0412] dddd, [\u0432] LT";switch(this.day()){case 0:return"[\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435] dddd, [\u0432] LT";case 1:case 2:case 4:return"[\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439] dddd, [\u0432] LT";case 3:case 5:case 6:return"[\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e] dddd, [\u0432] LT"}},lastWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[\u0412\u043e] dddd, [\u0432] LT":"[\u0412] dddd, [\u0432] LT";switch(this.day()){case 0:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u0435] dddd, [\u0432] LT";case 1:case 2:case 4:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u044b\u0439] dddd, [\u0432] LT";case 3:case 5:case 6:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u0443\u044e] dddd, [\u0432] LT"}},sameElse:"L"},relativeTime:{future:"\u0447\u0435\u0440\u0435\u0437 %s",past:"%s \u043d\u0430\u0437\u0430\u0434",s:"\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434",ss:zn,m:zn,mm:zn,h:"\u0447\u0430\u0441",hh:zn,d:"\u0434\u0435\u043d\u044c",dd:zn,M:"\u043c\u0435\u0441\u044f\u0446",MM:zn,y:"\u0433\u043e\u0434",yy:zn},meridiemParse:/\u043d\u043e\u0447\u0438|\u0443\u0442\u0440\u0430|\u0434\u043d\u044f|\u0432\u0435\u0447\u0435\u0440\u0430/i,isPM:function(e){return/^(\u0434\u043d\u044f|\u0432\u0435\u0447\u0435\u0440\u0430)$/.test(e)},meridiem:function(e,a,t){return e<4?"\u043d\u043e\u0447\u0438":e<12?"\u0443\u0442\u0440\u0430":e<17?"\u0434\u043d\u044f":"\u0432\u0435\u0447\u0435\u0440\u0430"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0439|\u0433\u043e|\u044f)/,ordinal:function(e,a){switch(a){case"M":case"d":case"DDD":return e+"-\u0439";case"D":return e+"-\u0433\u043e";case"w":case"W":return e+"-\u044f";default:return e}},week:{dow:1,doy:4}});var Nn=["\u062c\u0646\u0648\u0631\u064a","\u0641\u064a\u0628\u0631\u0648\u0631\u064a","\u0645\u0627\u0631\u0686","\u0627\u067e\u0631\u064a\u0644","\u0645\u0626\u064a","\u062c\u0648\u0646","\u062c\u0648\u0644\u0627\u0621\u0650","\u0622\u06af\u0633\u067d","\u0633\u064a\u067e\u067d\u0645\u0628\u0631","\u0622\u06aa\u067d\u0648\u0628\u0631","\u0646\u0648\u0645\u0628\u0631","\u068a\u0633\u0645\u0628\u0631"],Rn=["\u0622\u0686\u0631","\u0633\u0648\u0645\u0631","\u0627\u06b1\u0627\u0631\u0648","\u0627\u0631\u0628\u0639","\u062e\u0645\u064a\u0633","\u062c\u0645\u0639","\u0687\u0646\u0687\u0631"];l.defineLocale("sd",{months:Nn,monthsShort:Nn,weekdays:Rn,weekdaysShort:Rn,weekdaysMin:Rn,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd\u060c D MMMM YYYY HH:mm"},meridiemParse:/\u0635\u0628\u062d|\u0634\u0627\u0645/,isPM:function(e){return"\u0634\u0627\u0645"===e},meridiem:function(e,a,t){return e<12?"\u0635\u0628\u062d":"\u0634\u0627\u0645"},calendar:{sameDay:"[\u0627\u0684] LT",nextDay:"[\u0633\u0680\u0627\u06bb\u064a] LT",nextWeek:"dddd [\u0627\u06b3\u064a\u0646 \u0647\u0641\u062a\u064a \u062a\u064a] LT",lastDay:"[\u06aa\u0627\u0644\u0647\u0647] LT",lastWeek:"[\u06af\u0632\u0631\u064a\u0644 \u0647\u0641\u062a\u064a] dddd [\u062a\u064a] LT",sameElse:"L"},relativeTime:{future:"%s \u067e\u0648\u0621",past:"%s \u0627\u06b3",s:"\u0686\u0646\u062f \u0633\u064a\u06aa\u0646\u068a",ss:"%d \u0633\u064a\u06aa\u0646\u068a",m:"\u0647\u06aa \u0645\u0646\u067d",mm:"%d \u0645\u0646\u067d",h:"\u0647\u06aa \u06aa\u0644\u0627\u06aa",hh:"%d \u06aa\u0644\u0627\u06aa",d:"\u0647\u06aa \u068f\u064a\u0646\u0647\u0646",dd:"%d \u068f\u064a\u0646\u0647\u0646",M:"\u0647\u06aa \u0645\u0647\u064a\u0646\u0648",MM:"%d \u0645\u0647\u064a\u0646\u0627",y:"\u0647\u06aa \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"},preparse:function(e){return e.replace(/\u060c/g,",")},postformat:function(e){return e.replace(/,/g,"\u060c")},week:{dow:1,doy:4}}),l.defineLocale("se",{months:"o\u0111\u0111ajagem\xe1nnu_guovvam\xe1nnu_njuk\u010dam\xe1nnu_cuo\u014bom\xe1nnu_miessem\xe1nnu_geassem\xe1nnu_suoidnem\xe1nnu_borgem\xe1nnu_\u010dak\u010dam\xe1nnu_golggotm\xe1nnu_sk\xe1bmam\xe1nnu_juovlam\xe1nnu".split("_"),monthsShort:"o\u0111\u0111j_guov_njuk_cuo_mies_geas_suoi_borg_\u010dak\u010d_golg_sk\xe1b_juov".split("_"),weekdays:"sotnabeaivi_vuoss\xe1rga_ma\u014b\u014beb\xe1rga_gaskavahkku_duorastat_bearjadat_l\xe1vvardat".split("_"),weekdaysShort:"sotn_vuos_ma\u014b_gask_duor_bear_l\xe1v".split("_"),weekdaysMin:"s_v_m_g_d_b_L".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"MMMM D. [b.] YYYY",LLL:"MMMM D. [b.] YYYY [ti.] HH:mm",LLLL:"dddd, MMMM D. [b.] YYYY [ti.] HH:mm"},calendar:{sameDay:"[otne ti] LT",nextDay:"[ihttin ti] LT",nextWeek:"dddd [ti] LT",lastDay:"[ikte ti] LT",lastWeek:"[ovddit] dddd [ti] LT",sameElse:"L"},relativeTime:{future:"%s gea\u017ees",past:"ma\u014bit %s",s:"moadde sekunddat",ss:"%d sekunddat",m:"okta minuhta",mm:"%d minuhtat",h:"okta diimmu",hh:"%d diimmut",d:"okta beaivi",dd:"%d beaivvit",M:"okta m\xe1nnu",MM:"%d m\xe1nut",y:"okta jahki",yy:"%d jagit"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),l.defineLocale("si",{months:"\u0da2\u0db1\u0dc0\u0dcf\u0dbb\u0dd2_\u0db4\u0dd9\u0db6\u0dbb\u0dc0\u0dcf\u0dbb\u0dd2_\u0db8\u0dcf\u0dbb\u0dca\u0dad\u0dd4_\u0d85\u0db4\u0dca\u200d\u0dbb\u0dda\u0dbd\u0dca_\u0db8\u0dd0\u0dba\u0dd2_\u0da2\u0dd6\u0db1\u0dd2_\u0da2\u0dd6\u0dbd\u0dd2_\u0d85\u0d9c\u0ddd\u0dc3\u0dca\u0dad\u0dd4_\u0dc3\u0dd0\u0db4\u0dca\u0dad\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca_\u0d94\u0d9a\u0dca\u0dad\u0ddd\u0db6\u0dbb\u0dca_\u0db1\u0ddc\u0dc0\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca_\u0daf\u0dd9\u0dc3\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca".split("_"),monthsShort:"\u0da2\u0db1_\u0db4\u0dd9\u0db6_\u0db8\u0dcf\u0dbb\u0dca_\u0d85\u0db4\u0dca_\u0db8\u0dd0\u0dba\u0dd2_\u0da2\u0dd6\u0db1\u0dd2_\u0da2\u0dd6\u0dbd\u0dd2_\u0d85\u0d9c\u0ddd_\u0dc3\u0dd0\u0db4\u0dca_\u0d94\u0d9a\u0dca_\u0db1\u0ddc\u0dc0\u0dd0_\u0daf\u0dd9\u0dc3\u0dd0".split("_"),weekdays:"\u0d89\u0dbb\u0dd2\u0daf\u0dcf_\u0dc3\u0db3\u0dd4\u0daf\u0dcf_\u0d85\u0d9f\u0dc4\u0dbb\u0dd4\u0dc0\u0dcf\u0daf\u0dcf_\u0db6\u0daf\u0dcf\u0daf\u0dcf_\u0db6\u0dca\u200d\u0dbb\u0dc4\u0dc3\u0dca\u0db4\u0dad\u0dd2\u0db1\u0dca\u0daf\u0dcf_\u0dc3\u0dd2\u0d9a\u0dd4\u0dbb\u0dcf\u0daf\u0dcf_\u0dc3\u0dd9\u0db1\u0dc3\u0dd4\u0dbb\u0dcf\u0daf\u0dcf".split("_"),weekdaysShort:"\u0d89\u0dbb\u0dd2_\u0dc3\u0db3\u0dd4_\u0d85\u0d9f_\u0db6\u0daf\u0dcf_\u0db6\u0dca\u200d\u0dbb\u0dc4_\u0dc3\u0dd2\u0d9a\u0dd4_\u0dc3\u0dd9\u0db1".split("_"),weekdaysMin:"\u0d89_\u0dc3_\u0d85_\u0db6_\u0db6\u0dca\u200d\u0dbb_\u0dc3\u0dd2_\u0dc3\u0dd9".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"a h:mm",LTS:"a h:mm:ss",L:"YYYY/MM/DD",LL:"YYYY MMMM D",LLL:"YYYY MMMM D, a h:mm",LLLL:"YYYY MMMM D [\u0dc0\u0dd0\u0db1\u0dd2] dddd, a h:mm:ss"},calendar:{sameDay:"[\u0d85\u0daf] LT[\u0da7]",nextDay:"[\u0dc4\u0dd9\u0da7] LT[\u0da7]",nextWeek:"dddd LT[\u0da7]",lastDay:"[\u0d8a\u0dba\u0dda] LT[\u0da7]",lastWeek:"[\u0db4\u0dc3\u0dd4\u0d9c\u0dd2\u0dba] dddd LT[\u0da7]",sameElse:"L"},relativeTime:{future:"%s\u0d9a\u0dd2\u0db1\u0dca",past:"%s\u0d9a\u0da7 \u0db4\u0dd9\u0dbb",s:"\u0dad\u0dad\u0dca\u0db4\u0dbb \u0d9a\u0dd2\u0dc4\u0dd2\u0db4\u0dba",ss:"\u0dad\u0dad\u0dca\u0db4\u0dbb %d",m:"\u0db8\u0dd2\u0db1\u0dd2\u0dad\u0dca\u0dad\u0dd4\u0dc0",mm:"\u0db8\u0dd2\u0db1\u0dd2\u0dad\u0dca\u0dad\u0dd4 %d",h:"\u0db4\u0dd0\u0dba",hh:"\u0db4\u0dd0\u0dba %d",d:"\u0daf\u0dd2\u0db1\u0dba",dd:"\u0daf\u0dd2\u0db1 %d",M:"\u0db8\u0dcf\u0dc3\u0dba",MM:"\u0db8\u0dcf\u0dc3 %d",y:"\u0dc0\u0dc3\u0dbb",yy:"\u0dc0\u0dc3\u0dbb %d"},dayOfMonthOrdinalParse:/\d{1,2} \u0dc0\u0dd0\u0db1\u0dd2/,ordinal:function(e){return e+" \u0dc0\u0dd0\u0db1\u0dd2"},meridiemParse:/\u0db4\u0dd9\u0dbb \u0dc0\u0dbb\u0dd4|\u0db4\u0dc3\u0dca \u0dc0\u0dbb\u0dd4|\u0db4\u0dd9.\u0dc0|\u0db4.\u0dc0./,isPM:function(e){return"\u0db4.\u0dc0."===e||"\u0db4\u0dc3\u0dca \u0dc0\u0dbb\u0dd4"===e},meridiem:function(e,a,t){return 11<e?t?"\u0db4.\u0dc0.":"\u0db4\u0dc3\u0dca \u0dc0\u0dbb\u0dd4":t?"\u0db4\u0dd9.\u0dc0.":"\u0db4\u0dd9\u0dbb \u0dc0\u0dbb\u0dd4"}});var In="janu\xe1r_febru\xe1r_marec_apr\xedl_m\xe1j_j\xfan_j\xfal_august_september_okt\xf3ber_november_december".split("_"),Cn="jan_feb_mar_apr_m\xe1j_j\xfan_j\xfal_aug_sep_okt_nov_dec".split("_");function Gn(e){return 1<e&&e<5}function Un(e,a,t,s){var n=e+" ";switch(t){case"s":return a||s?"p\xe1r sek\xfand":"p\xe1r sekundami";case"ss":return a||s?n+(Gn(e)?"sekundy":"sek\xfand"):n+"sekundami";break;case"m":return a?"min\xfata":s?"min\xfatu":"min\xfatou";case"mm":return a||s?n+(Gn(e)?"min\xfaty":"min\xfat"):n+"min\xfatami";break;case"h":return a?"hodina":s?"hodinu":"hodinou";case"hh":return a||s?n+(Gn(e)?"hodiny":"hod\xedn"):n+"hodinami";break;case"d":return a||s?"de\u0148":"d\u0148om";case"dd":return a||s?n+(Gn(e)?"dni":"dn\xed"):n+"d\u0148ami";break;case"M":return a||s?"mesiac":"mesiacom";case"MM":return a||s?n+(Gn(e)?"mesiace":"mesiacov"):n+"mesiacmi";break;case"y":return a||s?"rok":"rokom";case"yy":return a||s?n+(Gn(e)?"roky":"rokov"):n+"rokmi";break}}function Vn(e,a,t,s){var n=e+" ";switch(t){case"s":return a||s?"nekaj sekund":"nekaj sekundami";case"ss":return n+=1===e?a?"sekundo":"sekundi":2===e?a||s?"sekundi":"sekundah":e<5?a||s?"sekunde":"sekundah":"sekund";case"m":return a?"ena minuta":"eno minuto";case"mm":return n+=1===e?a?"minuta":"minuto":2===e?a||s?"minuti":"minutama":e<5?a||s?"minute":"minutami":a||s?"minut":"minutami";case"h":return a?"ena ura":"eno uro";case"hh":return n+=1===e?a?"ura":"uro":2===e?a||s?"uri":"urama":e<5?a||s?"ure":"urami":a||s?"ur":"urami";case"d":return a||s?"en dan":"enim dnem";case"dd":return n+=1===e?a||s?"dan":"dnem":2===e?a||s?"dni":"dnevoma":a||s?"dni":"dnevi";case"M":return a||s?"en mesec":"enim mesecem";case"MM":return n+=1===e?a||s?"mesec":"mesecem":2===e?a||s?"meseca":"mesecema":e<5?a||s?"mesece":"meseci":a||s?"mesecev":"meseci";case"y":return a||s?"eno leto":"enim letom";case"yy":return n+=1===e?a||s?"leto":"letom":2===e?a||s?"leti":"letoma":e<5?a||s?"leta":"leti":a||s?"let":"leti"}}l.defineLocale("sk",{months:In,monthsShort:Cn,weekdays:"nede\u013ea_pondelok_utorok_streda_\u0161tvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_\u0161t_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_\u0161t_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nede\u013eu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo \u0161tvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[v\u010dera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minul\xfa nede\u013eu o] LT";case 1:case 2:return"[minul\xfd] dddd [o] LT";case 3:return"[minul\xfa stredu o] LT";case 4:case 5:return"[minul\xfd] dddd [o] LT";case 6:return"[minul\xfa sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:Un,ss:Un,m:Un,mm:Un,h:Un,hh:Un,d:Un,dd:Un,M:Un,MM:Un,y:Un,yy:Un},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),l.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_\u010detrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._\u010det._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_\u010de_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[v\u010deraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prej\u0161njo] [nedeljo] [ob] LT";case 3:return"[prej\u0161njo] [sredo] [ob] LT";case 6:return"[prej\u0161njo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prej\u0161nji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"\u010dez %s",past:"pred %s",s:Vn,ss:Vn,m:Vn,mm:Vn,h:Vn,hh:Vn,d:Vn,dd:Vn,M:Vn,MM:Vn,y:Vn,yy:Vn},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),l.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_N\xebntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_N\xebn_Dhj".split("_"),weekdays:"E Diel_E H\xebn\xeb_E Mart\xeb_E M\xebrkur\xeb_E Enjte_E Premte_E Shtun\xeb".split("_"),weekdaysShort:"Die_H\xebn_Mar_M\xebr_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_M\xeb_E_P_Sh".split("_"),weekdaysParseExact:!0,meridiemParse:/PD|MD/,isPM:function(e){return"M"===e.charAt(0)},meridiem:function(e,a,t){return e<12?"PD":"MD"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Sot n\xeb] LT",nextDay:"[Nes\xebr n\xeb] LT",nextWeek:"dddd [n\xeb] LT",lastDay:"[Dje n\xeb] LT",lastWeek:"dddd [e kaluar n\xeb] LT",sameElse:"L"},relativeTime:{future:"n\xeb %s",past:"%s m\xeb par\xeb",s:"disa sekonda",ss:"%d sekonda",m:"nj\xeb minut\xeb",mm:"%d minuta",h:"nj\xeb or\xeb",hh:"%d or\xeb",d:"nj\xeb dit\xeb",dd:"%d dit\xeb",M:"nj\xeb muaj",MM:"%d muaj",y:"nj\xeb vit",yy:"%d vite"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});var Kn={words:{ss:["\u0441\u0435\u043a\u0443\u043d\u0434\u0430","\u0441\u0435\u043a\u0443\u043d\u0434\u0435","\u0441\u0435\u043a\u0443\u043d\u0434\u0438"],m:["\u0458\u0435\u0434\u0430\u043d \u043c\u0438\u043d\u0443\u0442","\u0458\u0435\u0434\u043d\u0435 \u043c\u0438\u043d\u0443\u0442\u0435"],mm:["\u043c\u0438\u043d\u0443\u0442","\u043c\u0438\u043d\u0443\u0442\u0435","\u043c\u0438\u043d\u0443\u0442\u0430"],h:["\u0458\u0435\u0434\u0430\u043d \u0441\u0430\u0442","\u0458\u0435\u0434\u043d\u043e\u0433 \u0441\u0430\u0442\u0430"],hh:["\u0441\u0430\u0442","\u0441\u0430\u0442\u0430","\u0441\u0430\u0442\u0438"],dd:["\u0434\u0430\u043d","\u0434\u0430\u043d\u0430","\u0434\u0430\u043d\u0430"],MM:["\u043c\u0435\u0441\u0435\u0446","\u043c\u0435\u0441\u0435\u0446\u0430","\u043c\u0435\u0441\u0435\u0446\u0438"],yy:["\u0433\u043e\u0434\u0438\u043d\u0430","\u0433\u043e\u0434\u0438\u043d\u0435","\u0433\u043e\u0434\u0438\u043d\u0430"]},correctGrammaticalCase:function(e,a){return 1===e?a[0]:2<=e&&e<=4?a[1]:a[2]},translate:function(e,a,t){var s=Kn.words[t];return 1===t.length?a?s[0]:s[1]:e+" "+Kn.correctGrammaticalCase(e,s)}};l.defineLocale("sr-cyrl",{months:"\u0458\u0430\u043d\u0443\u0430\u0440_\u0444\u0435\u0431\u0440\u0443\u0430\u0440_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0458_\u0458\u0443\u043d_\u0458\u0443\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0431\u0430\u0440_\u043e\u043a\u0442\u043e\u0431\u0430\u0440_\u043d\u043e\u0432\u0435\u043c\u0431\u0430\u0440_\u0434\u0435\u0446\u0435\u043c\u0431\u0430\u0440".split("_"),monthsShort:"\u0458\u0430\u043d._\u0444\u0435\u0431._\u043c\u0430\u0440._\u0430\u043f\u0440._\u043c\u0430\u0458_\u0458\u0443\u043d_\u0458\u0443\u043b_\u0430\u0432\u0433._\u0441\u0435\u043f._\u043e\u043a\u0442._\u043d\u043e\u0432._\u0434\u0435\u0446.".split("_"),monthsParseExact:!0,weekdays:"\u043d\u0435\u0434\u0435\u0459\u0430_\u043f\u043e\u043d\u0435\u0434\u0435\u0459\u0430\u043a_\u0443\u0442\u043e\u0440\u0430\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0440\u0442\u0430\u043a_\u043f\u0435\u0442\u0430\u043a_\u0441\u0443\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0435\u0434._\u043f\u043e\u043d._\u0443\u0442\u043e._\u0441\u0440\u0435._\u0447\u0435\u0442._\u043f\u0435\u0442._\u0441\u0443\u0431.".split("_"),weekdaysMin:"\u043d\u0435_\u043f\u043e_\u0443\u0442_\u0441\u0440_\u0447\u0435_\u043f\u0435_\u0441\u0443".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[\u0434\u0430\u043d\u0430\u0441 \u0443] LT",nextDay:"[\u0441\u0443\u0442\u0440\u0430 \u0443] LT",nextWeek:function(){switch(this.day()){case 0:return"[\u0443] [\u043d\u0435\u0434\u0435\u0459\u0443] [\u0443] LT";case 3:return"[\u0443] [\u0441\u0440\u0435\u0434\u0443] [\u0443] LT";case 6:return"[\u0443] [\u0441\u0443\u0431\u043e\u0442\u0443] [\u0443] LT";case 1:case 2:case 4:case 5:return"[\u0443] dddd [\u0443] LT"}},lastDay:"[\u0458\u0443\u0447\u0435 \u0443] LT",lastWeek:function(){return["[\u043f\u0440\u043e\u0448\u043b\u0435] [\u043d\u0435\u0434\u0435\u0459\u0435] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u043f\u043e\u043d\u0435\u0434\u0435\u0459\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u0443\u0442\u043e\u0440\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u0435] [\u0441\u0440\u0435\u0434\u0435] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u0447\u0435\u0442\u0432\u0440\u0442\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u043f\u0435\u0442\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u0435] [\u0441\u0443\u0431\u043e\u0442\u0435] [\u0443] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"\u0437\u0430 %s",past:"\u043f\u0440\u0435 %s",s:"\u043d\u0435\u043a\u043e\u043b\u0438\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434\u0438",ss:Kn.translate,m:Kn.translate,mm:Kn.translate,h:Kn.translate,hh:Kn.translate,d:"\u0434\u0430\u043d",dd:Kn.translate,M:"\u043c\u0435\u0441\u0435\u0446",MM:Kn.translate,y:"\u0433\u043e\u0434\u0438\u043d\u0443",yy:Kn.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});var $n={words:{ss:["sekunda","sekunde","sekundi"],m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,a){return 1===e?a[0]:2<=e&&e<=4?a[1]:a[2]},translate:function(e,a,t){var s=$n.words[t];return 1===t.length?a?s[0]:s[1]:e+" "+$n.correctGrammaticalCase(e,s)}};l.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[ju\u010de u] LT",lastWeek:function(){return["[pro\u0161le] [nedelje] [u] LT","[pro\u0161log] [ponedeljka] [u] LT","[pro\u0161log] [utorka] [u] LT","[pro\u0161le] [srede] [u] LT","[pro\u0161log] [\u010detvrtka] [u] LT","[pro\u0161log] [petka] [u] LT","[pro\u0161le] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",ss:$n.translate,m:$n.translate,mm:$n.translate,h:$n.translate,hh:$n.translate,d:"dan",dd:$n.translate,M:"mesec",MM:$n.translate,y:"godinu",yy:$n.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),l.defineLocale("ss",{months:"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"),monthsShort:"Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"),weekdays:"Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"),weekdaysShort:"Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"),weekdaysMin:"Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Namuhla nga] LT",nextDay:"[Kusasa nga] LT",nextWeek:"dddd [nga] LT",lastDay:"[Itolo nga] LT",lastWeek:"dddd [leliphelile] [nga] LT",sameElse:"L"},relativeTime:{future:"nga %s",past:"wenteka nga %s",s:"emizuzwana lomcane",ss:"%d mzuzwana",m:"umzuzu",mm:"%d emizuzu",h:"lihora",hh:"%d emahora",d:"lilanga",dd:"%d emalanga",M:"inyanga",MM:"%d tinyanga",y:"umnyaka",yy:"%d iminyaka"},meridiemParse:/ekuseni|emini|entsambama|ebusuku/,meridiem:function(e,a,t){return e<11?"ekuseni":e<15?"emini":e<19?"entsambama":"ebusuku"},meridiemHour:function(e,a){return 12===e&&(e=0),"ekuseni"===a?e:"emini"===a?11<=e?e:e+12:"entsambama"===a||"ebusuku"===a?0===e?0:e+12:void 0},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:"%d",week:{dow:1,doy:4}}),l.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"s\xf6ndag_m\xe5ndag_tisdag_onsdag_torsdag_fredag_l\xf6rdag".split("_"),weekdaysShort:"s\xf6n_m\xe5n_tis_ons_tor_fre_l\xf6r".split("_"),weekdaysMin:"s\xf6_m\xe5_ti_on_to_fr_l\xf6".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Ig\xe5r] LT",nextWeek:"[P\xe5] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"f\xf6r %s sedan",s:"n\xe5gra sekunder",ss:"%d sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en m\xe5nad",MM:"%d m\xe5nader",y:"ett \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}(e|a)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"e":1===a?"a":2===a?"a":"e")},week:{dow:1,doy:4}}),l.defineLocale("sw",{months:"Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des".split("_"),weekdays:"Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi".split("_"),weekdaysShort:"Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos".split("_"),weekdaysMin:"J2_J3_J4_J5_Al_Ij_J1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[leo saa] LT",nextDay:"[kesho saa] LT",nextWeek:"[wiki ijayo] dddd [saat] LT",lastDay:"[jana] LT",lastWeek:"[wiki iliyopita] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s baadaye",past:"tokea %s",s:"hivi punde",ss:"sekunde %d",m:"dakika moja",mm:"dakika %d",h:"saa limoja",hh:"masaa %d",d:"siku moja",dd:"masiku %d",M:"mwezi mmoja",MM:"miezi %d",y:"mwaka mmoja",yy:"miaka %d"},week:{dow:1,doy:7}});var Zn={1:"\u0be7",2:"\u0be8",3:"\u0be9",4:"\u0bea",5:"\u0beb",6:"\u0bec",7:"\u0bed",8:"\u0bee",9:"\u0bef",0:"\u0be6"},Bn={"\u0be7":"1","\u0be8":"2","\u0be9":"3","\u0bea":"4","\u0beb":"5","\u0bec":"6","\u0bed":"7","\u0bee":"8","\u0bef":"9","\u0be6":"0"};l.defineLocale("ta",{months:"\u0b9c\u0ba9\u0bb5\u0bb0\u0bbf_\u0baa\u0bbf\u0baa\u0bcd\u0bb0\u0bb5\u0bb0\u0bbf_\u0bae\u0bbe\u0bb0\u0bcd\u0b9a\u0bcd_\u0b8f\u0baa\u0bcd\u0bb0\u0bb2\u0bcd_\u0bae\u0bc7_\u0b9c\u0bc2\u0ba9\u0bcd_\u0b9c\u0bc2\u0bb2\u0bc8_\u0b86\u0b95\u0bb8\u0bcd\u0b9f\u0bcd_\u0b9a\u0bc6\u0baa\u0bcd\u0b9f\u0bc6\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b85\u0b95\u0bcd\u0b9f\u0bc7\u0bbe\u0baa\u0bb0\u0bcd_\u0ba8\u0bb5\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b9f\u0bbf\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcd".split("_"),monthsShort:"\u0b9c\u0ba9\u0bb5\u0bb0\u0bbf_\u0baa\u0bbf\u0baa\u0bcd\u0bb0\u0bb5\u0bb0\u0bbf_\u0bae\u0bbe\u0bb0\u0bcd\u0b9a\u0bcd_\u0b8f\u0baa\u0bcd\u0bb0\u0bb2\u0bcd_\u0bae\u0bc7_\u0b9c\u0bc2\u0ba9\u0bcd_\u0b9c\u0bc2\u0bb2\u0bc8_\u0b86\u0b95\u0bb8\u0bcd\u0b9f\u0bcd_\u0b9a\u0bc6\u0baa\u0bcd\u0b9f\u0bc6\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b85\u0b95\u0bcd\u0b9f\u0bc7\u0bbe\u0baa\u0bb0\u0bcd_\u0ba8\u0bb5\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b9f\u0bbf\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcd".split("_"),weekdays:"\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bcd\u0bb1\u0bc1\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0b9f\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0baa\u0bc1\u0ba4\u0ba9\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0b9a\u0ba9\u0bbf\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8".split("_"),weekdaysShort:"\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bc1_\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0bb3\u0bcd_\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd_\u0baa\u0bc1\u0ba4\u0ba9\u0bcd_\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0ba9\u0bcd_\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf_\u0b9a\u0ba9\u0bbf".split("_"),weekdaysMin:"\u0b9e\u0bbe_\u0ba4\u0bbf_\u0b9a\u0bc6_\u0baa\u0bc1_\u0bb5\u0bbf_\u0bb5\u0bc6_\u0b9a".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},calendar:{sameDay:"[\u0b87\u0ba9\u0bcd\u0bb1\u0bc1] LT",nextDay:"[\u0ba8\u0bbe\u0bb3\u0bc8] LT",nextWeek:"dddd, LT",lastDay:"[\u0ba8\u0bc7\u0bb1\u0bcd\u0bb1\u0bc1] LT",lastWeek:"[\u0b95\u0b9f\u0ba8\u0bcd\u0ba4 \u0bb5\u0bbe\u0bb0\u0bae\u0bcd] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0b87\u0bb2\u0bcd",past:"%s \u0bae\u0bc1\u0ba9\u0bcd",s:"\u0b92\u0bb0\u0bc1 \u0b9a\u0bbf\u0bb2 \u0bb5\u0bbf\u0ba8\u0bbe\u0b9f\u0bbf\u0b95\u0bb3\u0bcd",ss:"%d \u0bb5\u0bbf\u0ba8\u0bbe\u0b9f\u0bbf\u0b95\u0bb3\u0bcd",m:"\u0b92\u0bb0\u0bc1 \u0ba8\u0bbf\u0bae\u0bbf\u0b9f\u0bae\u0bcd",mm:"%d \u0ba8\u0bbf\u0bae\u0bbf\u0b9f\u0b99\u0bcd\u0b95\u0bb3\u0bcd",h:"\u0b92\u0bb0\u0bc1 \u0bae\u0ba3\u0bbf \u0ba8\u0bc7\u0bb0\u0bae\u0bcd",hh:"%d \u0bae\u0ba3\u0bbf \u0ba8\u0bc7\u0bb0\u0bae\u0bcd",d:"\u0b92\u0bb0\u0bc1 \u0ba8\u0bbe\u0bb3\u0bcd",dd:"%d \u0ba8\u0bbe\u0b9f\u0bcd\u0b95\u0bb3\u0bcd",M:"\u0b92\u0bb0\u0bc1 \u0bae\u0bbe\u0ba4\u0bae\u0bcd",MM:"%d \u0bae\u0bbe\u0ba4\u0b99\u0bcd\u0b95\u0bb3\u0bcd",y:"\u0b92\u0bb0\u0bc1 \u0bb5\u0bb0\u0bc1\u0b9f\u0bae\u0bcd",yy:"%d \u0b86\u0ba3\u0bcd\u0b9f\u0bc1\u0b95\u0bb3\u0bcd"},dayOfMonthOrdinalParse:/\d{1,2}\u0bb5\u0ba4\u0bc1/,ordinal:function(e){return e+"\u0bb5\u0ba4\u0bc1"},preparse:function(e){return e.replace(/[\u0be7\u0be8\u0be9\u0bea\u0beb\u0bec\u0bed\u0bee\u0bef\u0be6]/g,function(e){return Bn[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return Zn[e]})},meridiemParse:/\u0baf\u0bbe\u0bae\u0bae\u0bcd|\u0bb5\u0bc8\u0b95\u0bb1\u0bc8|\u0b95\u0bbe\u0bb2\u0bc8|\u0ba8\u0ba3\u0bcd\u0baa\u0b95\u0bb2\u0bcd|\u0b8e\u0bb1\u0bcd\u0baa\u0bbe\u0b9f\u0bc1|\u0bae\u0bbe\u0bb2\u0bc8/,meridiem:function(e,a,t){return e<2?" \u0baf\u0bbe\u0bae\u0bae\u0bcd":e<6?" \u0bb5\u0bc8\u0b95\u0bb1\u0bc8":e<10?" \u0b95\u0bbe\u0bb2\u0bc8":e<14?" \u0ba8\u0ba3\u0bcd\u0baa\u0b95\u0bb2\u0bcd":e<18?" \u0b8e\u0bb1\u0bcd\u0baa\u0bbe\u0b9f\u0bc1":e<22?" \u0bae\u0bbe\u0bb2\u0bc8":" \u0baf\u0bbe\u0bae\u0bae\u0bcd"},meridiemHour:function(e,a){return 12===e&&(e=0),"\u0baf\u0bbe\u0bae\u0bae\u0bcd"===a?e<2?e:e+12:"\u0bb5\u0bc8\u0b95\u0bb1\u0bc8"===a||"\u0b95\u0bbe\u0bb2\u0bc8"===a?e:"\u0ba8\u0ba3\u0bcd\u0baa\u0b95\u0bb2\u0bcd"===a&&10<=e?e:e+12},week:{dow:0,doy:6}}),l.defineLocale("te",{months:"\u0c1c\u0c28\u0c35\u0c30\u0c3f_\u0c2b\u0c3f\u0c2c\u0c4d\u0c30\u0c35\u0c30\u0c3f_\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f_\u0c0f\u0c2a\u0c4d\u0c30\u0c3f\u0c32\u0c4d_\u0c2e\u0c47_\u0c1c\u0c42\u0c28\u0c4d_\u0c1c\u0c42\u0c32\u0c46\u0c56_\u0c06\u0c17\u0c38\u0c4d\u0c1f\u0c41_\u0c38\u0c46\u0c2a\u0c4d\u0c1f\u0c46\u0c02\u0c2c\u0c30\u0c4d_\u0c05\u0c15\u0c4d\u0c1f\u0c4b\u0c2c\u0c30\u0c4d_\u0c28\u0c35\u0c02\u0c2c\u0c30\u0c4d_\u0c21\u0c3f\u0c38\u0c46\u0c02\u0c2c\u0c30\u0c4d".split("_"),monthsShort:"\u0c1c\u0c28._\u0c2b\u0c3f\u0c2c\u0c4d\u0c30._\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f_\u0c0f\u0c2a\u0c4d\u0c30\u0c3f._\u0c2e\u0c47_\u0c1c\u0c42\u0c28\u0c4d_\u0c1c\u0c42\u0c32\u0c46\u0c56_\u0c06\u0c17._\u0c38\u0c46\u0c2a\u0c4d._\u0c05\u0c15\u0c4d\u0c1f\u0c4b._\u0c28\u0c35._\u0c21\u0c3f\u0c38\u0c46.".split("_"),monthsParseExact:!0,weekdays:"\u0c06\u0c26\u0c3f\u0c35\u0c3e\u0c30\u0c02_\u0c38\u0c4b\u0c2e\u0c35\u0c3e\u0c30\u0c02_\u0c2e\u0c02\u0c17\u0c33\u0c35\u0c3e\u0c30\u0c02_\u0c2c\u0c41\u0c27\u0c35\u0c3e\u0c30\u0c02_\u0c17\u0c41\u0c30\u0c41\u0c35\u0c3e\u0c30\u0c02_\u0c36\u0c41\u0c15\u0c4d\u0c30\u0c35\u0c3e\u0c30\u0c02_\u0c36\u0c28\u0c3f\u0c35\u0c3e\u0c30\u0c02".split("_"),weekdaysShort:"\u0c06\u0c26\u0c3f_\u0c38\u0c4b\u0c2e_\u0c2e\u0c02\u0c17\u0c33_\u0c2c\u0c41\u0c27_\u0c17\u0c41\u0c30\u0c41_\u0c36\u0c41\u0c15\u0c4d\u0c30_\u0c36\u0c28\u0c3f".split("_"),weekdaysMin:"\u0c06_\u0c38\u0c4b_\u0c2e\u0c02_\u0c2c\u0c41_\u0c17\u0c41_\u0c36\u0c41_\u0c36".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[\u0c28\u0c47\u0c21\u0c41] LT",nextDay:"[\u0c30\u0c47\u0c2a\u0c41] LT",nextWeek:"dddd, LT",lastDay:"[\u0c28\u0c3f\u0c28\u0c4d\u0c28] LT",lastWeek:"[\u0c17\u0c24] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0c32\u0c4b",past:"%s \u0c15\u0c4d\u0c30\u0c3f\u0c24\u0c02",s:"\u0c15\u0c4a\u0c28\u0c4d\u0c28\u0c3f \u0c15\u0c4d\u0c37\u0c23\u0c3e\u0c32\u0c41",ss:"%d \u0c38\u0c46\u0c15\u0c28\u0c4d\u0c32\u0c41",m:"\u0c12\u0c15 \u0c28\u0c3f\u0c2e\u0c3f\u0c37\u0c02",mm:"%d \u0c28\u0c3f\u0c2e\u0c3f\u0c37\u0c3e\u0c32\u0c41",h:"\u0c12\u0c15 \u0c17\u0c02\u0c1f",hh:"%d \u0c17\u0c02\u0c1f\u0c32\u0c41",d:"\u0c12\u0c15 \u0c30\u0c4b\u0c1c\u0c41",dd:"%d \u0c30\u0c4b\u0c1c\u0c41\u0c32\u0c41",M:"\u0c12\u0c15 \u0c28\u0c46\u0c32",MM:"%d \u0c28\u0c46\u0c32\u0c32\u0c41",y:"\u0c12\u0c15 \u0c38\u0c02\u0c35\u0c24\u0c4d\u0c38\u0c30\u0c02",yy:"%d \u0c38\u0c02\u0c35\u0c24\u0c4d\u0c38\u0c30\u0c3e\u0c32\u0c41"},dayOfMonthOrdinalParse:/\d{1,2}\u0c35/,ordinal:"%d\u0c35",meridiemParse:/\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f|\u0c09\u0c26\u0c2f\u0c02|\u0c2e\u0c27\u0c4d\u0c2f\u0c3e\u0c39\u0c4d\u0c28\u0c02|\u0c38\u0c3e\u0c2f\u0c02\u0c24\u0c4d\u0c30\u0c02/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f"===a?e<4?e:e+12:"\u0c09\u0c26\u0c2f\u0c02"===a?e:"\u0c2e\u0c27\u0c4d\u0c2f\u0c3e\u0c39\u0c4d\u0c28\u0c02"===a?10<=e?e:e+12:"\u0c38\u0c3e\u0c2f\u0c02\u0c24\u0c4d\u0c30\u0c02"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f":e<10?"\u0c09\u0c26\u0c2f\u0c02":e<17?"\u0c2e\u0c27\u0c4d\u0c2f\u0c3e\u0c39\u0c4d\u0c28\u0c02":e<20?"\u0c38\u0c3e\u0c2f\u0c02\u0c24\u0c4d\u0c30\u0c02":"\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f"},week:{dow:0,doy:6}}),l.defineLocale("tet",{months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Ju\xf1u_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu".split("_"),weekdaysShort:"Dom_Seg_Ters_Kua_Kint_Sest_Sab".split("_"),weekdaysMin:"Do_Seg_Te_Ku_Ki_Ses_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Ohin iha] LT",nextDay:"[Aban iha] LT",nextWeek:"dddd [iha] LT",lastDay:"[Horiseik iha] LT",lastWeek:"dddd [semana kotuk] [iha] LT",sameElse:"L"},relativeTime:{future:"iha %s",past:"%s liuba",s:"minutu balun",ss:"minutu %d",m:"minutu ida",mm:"minutu %d",h:"oras ida",hh:"oras %d",d:"loron ida",dd:"loron %d",M:"fulan ida",MM:"fulan %d",y:"tinan ida",yy:"tinan %d"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")},week:{dow:1,doy:4}});var qn={0:"-\u0443\u043c",1:"-\u0443\u043c",2:"-\u044e\u043c",3:"-\u044e\u043c",4:"-\u0443\u043c",5:"-\u0443\u043c",6:"-\u0443\u043c",7:"-\u0443\u043c",8:"-\u0443\u043c",9:"-\u0443\u043c",10:"-\u0443\u043c",12:"-\u0443\u043c",13:"-\u0443\u043c",20:"-\u0443\u043c",30:"-\u044e\u043c",40:"-\u0443\u043c",50:"-\u0443\u043c",60:"-\u0443\u043c",70:"-\u0443\u043c",80:"-\u0443\u043c",90:"-\u0443\u043c",100:"-\u0443\u043c"};l.defineLocale("tg",{months:"\u044f\u043d\u0432\u0430\u0440_\u0444\u0435\u0432\u0440\u0430\u043b_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440_\u043e\u043a\u0442\u044f\u0431\u0440_\u043d\u043e\u044f\u0431\u0440_\u0434\u0435\u043a\u0430\u0431\u0440".split("_"),monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdays:"\u044f\u043a\u0448\u0430\u043d\u0431\u0435_\u0434\u0443\u0448\u0430\u043d\u0431\u0435_\u0441\u0435\u0448\u0430\u043d\u0431\u0435_\u0447\u043e\u0440\u0448\u0430\u043d\u0431\u0435_\u043f\u0430\u043d\u04b7\u0448\u0430\u043d\u0431\u0435_\u04b7\u0443\u043c\u044a\u0430_\u0448\u0430\u043d\u0431\u0435".split("_"),weekdaysShort:"\u044f\u0448\u0431_\u0434\u0448\u0431_\u0441\u0448\u0431_\u0447\u0448\u0431_\u043f\u0448\u0431_\u04b7\u0443\u043c_\u0448\u043d\u0431".split("_"),weekdaysMin:"\u044f\u0448_\u0434\u0448_\u0441\u0448_\u0447\u0448_\u043f\u0448_\u04b7\u043c_\u0448\u0431".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0418\u043c\u0440\u04ef\u0437 \u0441\u043e\u0430\u0442\u0438] LT",nextDay:"[\u041f\u0430\u0433\u043e\u04b3 \u0441\u043e\u0430\u0442\u0438] LT",lastDay:"[\u0414\u0438\u0440\u04ef\u0437 \u0441\u043e\u0430\u0442\u0438] LT",nextWeek:"dddd[\u0438] [\u04b3\u0430\u0444\u0442\u0430\u0438 \u043e\u044f\u043d\u0434\u0430 \u0441\u043e\u0430\u0442\u0438] LT",lastWeek:"dddd[\u0438] [\u04b3\u0430\u0444\u0442\u0430\u0438 \u0433\u0443\u0437\u0430\u0448\u0442\u0430 \u0441\u043e\u0430\u0442\u0438] LT",sameElse:"L"},relativeTime:{future:"\u0431\u0430\u044a\u0434\u0438 %s",past:"%s \u043f\u0435\u0448",s:"\u044f\u043a\u0447\u0430\u043d\u0434 \u0441\u043e\u043d\u0438\u044f",m:"\u044f\u043a \u0434\u0430\u049b\u0438\u049b\u0430",mm:"%d \u0434\u0430\u049b\u0438\u049b\u0430",h:"\u044f\u043a \u0441\u043e\u0430\u0442",hh:"%d \u0441\u043e\u0430\u0442",d:"\u044f\u043a \u0440\u04ef\u0437",dd:"%d \u0440\u04ef\u0437",M:"\u044f\u043a \u043c\u043e\u04b3",MM:"%d \u043c\u043e\u04b3",y:"\u044f\u043a \u0441\u043e\u043b",yy:"%d \u0441\u043e\u043b"},meridiemParse:/\u0448\u0430\u0431|\u0441\u0443\u0431\u04b3|\u0440\u04ef\u0437|\u0431\u0435\u0433\u043e\u04b3/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0448\u0430\u0431"===a?e<4?e:e+12:"\u0441\u0443\u0431\u04b3"===a?e:"\u0440\u04ef\u0437"===a?11<=e?e:e+12:"\u0431\u0435\u0433\u043e\u04b3"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u0448\u0430\u0431":e<11?"\u0441\u0443\u0431\u04b3":e<16?"\u0440\u04ef\u0437":e<19?"\u0431\u0435\u0433\u043e\u04b3":"\u0448\u0430\u0431"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0443\u043c|\u044e\u043c)/,ordinal:function(e){return e+(qn[e]||qn[e%10]||qn[100<=e?100:null])},week:{dow:1,doy:7}}),l.defineLocale("th",{months:"\u0e21\u0e01\u0e23\u0e32\u0e04\u0e21_\u0e01\u0e38\u0e21\u0e20\u0e32\u0e1e\u0e31\u0e19\u0e18\u0e4c_\u0e21\u0e35\u0e19\u0e32\u0e04\u0e21_\u0e40\u0e21\u0e29\u0e32\u0e22\u0e19_\u0e1e\u0e24\u0e29\u0e20\u0e32\u0e04\u0e21_\u0e21\u0e34\u0e16\u0e38\u0e19\u0e32\u0e22\u0e19_\u0e01\u0e23\u0e01\u0e0e\u0e32\u0e04\u0e21_\u0e2a\u0e34\u0e07\u0e2b\u0e32\u0e04\u0e21_\u0e01\u0e31\u0e19\u0e22\u0e32\u0e22\u0e19_\u0e15\u0e38\u0e25\u0e32\u0e04\u0e21_\u0e1e\u0e24\u0e28\u0e08\u0e34\u0e01\u0e32\u0e22\u0e19_\u0e18\u0e31\u0e19\u0e27\u0e32\u0e04\u0e21".split("_"),monthsShort:"\u0e21.\u0e04._\u0e01.\u0e1e._\u0e21\u0e35.\u0e04._\u0e40\u0e21.\u0e22._\u0e1e.\u0e04._\u0e21\u0e34.\u0e22._\u0e01.\u0e04._\u0e2a.\u0e04._\u0e01.\u0e22._\u0e15.\u0e04._\u0e1e.\u0e22._\u0e18.\u0e04.".split("_"),monthsParseExact:!0,weekdays:"\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c_\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c_\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23_\u0e1e\u0e38\u0e18_\u0e1e\u0e24\u0e2b\u0e31\u0e2a\u0e1a\u0e14\u0e35_\u0e28\u0e38\u0e01\u0e23\u0e4c_\u0e40\u0e2a\u0e32\u0e23\u0e4c".split("_"),weekdaysShort:"\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c_\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c_\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23_\u0e1e\u0e38\u0e18_\u0e1e\u0e24\u0e2b\u0e31\u0e2a_\u0e28\u0e38\u0e01\u0e23\u0e4c_\u0e40\u0e2a\u0e32\u0e23\u0e4c".split("_"),weekdaysMin:"\u0e2d\u0e32._\u0e08._\u0e2d._\u0e1e._\u0e1e\u0e24._\u0e28._\u0e2a.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY \u0e40\u0e27\u0e25\u0e32 H:mm",LLLL:"\u0e27\u0e31\u0e19dddd\u0e17\u0e35\u0e48 D MMMM YYYY \u0e40\u0e27\u0e25\u0e32 H:mm"},meridiemParse:/\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07|\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07/,isPM:function(e){return"\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07"===e},meridiem:function(e,a,t){return e<12?"\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07":"\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07"},calendar:{sameDay:"[\u0e27\u0e31\u0e19\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",nextDay:"[\u0e1e\u0e23\u0e38\u0e48\u0e07\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",nextWeek:"dddd[\u0e2b\u0e19\u0e49\u0e32 \u0e40\u0e27\u0e25\u0e32] LT",lastDay:"[\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e27\u0e32\u0e19\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",lastWeek:"[\u0e27\u0e31\u0e19]dddd[\u0e17\u0e35\u0e48\u0e41\u0e25\u0e49\u0e27 \u0e40\u0e27\u0e25\u0e32] LT",sameElse:"L"},relativeTime:{future:"\u0e2d\u0e35\u0e01 %s",past:"%s\u0e17\u0e35\u0e48\u0e41\u0e25\u0e49\u0e27",s:"\u0e44\u0e21\u0e48\u0e01\u0e35\u0e48\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35",ss:"%d \u0e27\u0e34\u0e19\u0e32\u0e17\u0e35",m:"1 \u0e19\u0e32\u0e17\u0e35",mm:"%d \u0e19\u0e32\u0e17\u0e35",h:"1 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07",hh:"%d \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07",d:"1 \u0e27\u0e31\u0e19",dd:"%d \u0e27\u0e31\u0e19",M:"1 \u0e40\u0e14\u0e37\u0e2d\u0e19",MM:"%d \u0e40\u0e14\u0e37\u0e2d\u0e19",y:"1 \u0e1b\u0e35",yy:"%d \u0e1b\u0e35"}}),l.defineLocale("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}});var Qn="pagh_wa\u2019_cha\u2019_wej_loS_vagh_jav_Soch_chorgh_Hut".split("_");function Xn(e,a,t,s){var n=function(e){var a=Math.floor(e%1e3/100),t=Math.floor(e%100/10),s=e%10,n="";0<a&&(n+=Qn[a]+"vatlh");0<t&&(n+=(""!==n?" ":"")+Qn[t]+"maH");0<s&&(n+=(""!==n?" ":"")+Qn[s]);return""===n?"pagh":n}(e);switch(t){case"ss":return n+" lup";case"mm":return n+" tup";case"hh":return n+" rep";case"dd":return n+" jaj";case"MM":return n+" jar";case"yy":return n+" DIS"}}l.defineLocale("tlh",{months:"tera\u2019 jar wa\u2019_tera\u2019 jar cha\u2019_tera\u2019 jar wej_tera\u2019 jar loS_tera\u2019 jar vagh_tera\u2019 jar jav_tera\u2019 jar Soch_tera\u2019 jar chorgh_tera\u2019 jar Hut_tera\u2019 jar wa\u2019maH_tera\u2019 jar wa\u2019maH wa\u2019_tera\u2019 jar wa\u2019maH cha\u2019".split("_"),monthsShort:"jar wa\u2019_jar cha\u2019_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa\u2019maH_jar wa\u2019maH wa\u2019_jar wa\u2019maH cha\u2019".split("_"),monthsParseExact:!0,weekdays:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysShort:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysMin:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[DaHjaj] LT",nextDay:"[wa\u2019leS] LT",nextWeek:"LLL",lastDay:"[wa\u2019Hu\u2019] LT",lastWeek:"LLL",sameElse:"L"},relativeTime:{future:function(e){var a=e;return a=-1!==e.indexOf("jaj")?a.slice(0,-3)+"leS":-1!==e.indexOf("jar")?a.slice(0,-3)+"waQ":-1!==e.indexOf("DIS")?a.slice(0,-3)+"nem":a+" pIq"},past:function(e){var a=e;return a=-1!==e.indexOf("jaj")?a.slice(0,-3)+"Hu\u2019":-1!==e.indexOf("jar")?a.slice(0,-3)+"wen":-1!==e.indexOf("DIS")?a.slice(0,-3)+"ben":a+" ret"},s:"puS lup",ss:Xn,m:"wa\u2019 tup",mm:Xn,h:"wa\u2019 rep",hh:Xn,d:"wa\u2019 jaj",dd:Xn,M:"wa\u2019 jar",MM:Xn,y:"wa\u2019 DIS",yy:Xn},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});var ed={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'\xfcnc\xfc",4:"'\xfcnc\xfc",100:"'\xfcnc\xfc",6:"'nc\u0131",9:"'uncu",10:"'uncu",30:"'uncu",60:"'\u0131nc\u0131",90:"'\u0131nc\u0131"};function ad(e,a,t,s){var n={s:["viensas secunds","'iensas secunds"],ss:[e+" secunds",e+" secunds"],m:["'n m\xedut","'iens m\xedut"],mm:[e+" m\xeduts",e+" m\xeduts"],h:["'n \xfeora","'iensa \xfeora"],hh:[e+" \xfeoras",e+" \xfeoras"],d:["'n ziua","'iensa ziua"],dd:[e+" ziuas",e+" ziuas"],M:["'n mes","'iens mes"],MM:[e+" mesen",e+" mesen"],y:["'n ar","'iens ar"],yy:[e+" ars",e+" ars"]};return s?n[t][0]:a?n[t][0]:n[t][1]}function td(e,a,t){var s,n;return"m"===t?a?"\u0445\u0432\u0438\u043b\u0438\u043d\u0430":"\u0445\u0432\u0438\u043b\u0438\u043d\u0443":"h"===t?a?"\u0433\u043e\u0434\u0438\u043d\u0430":"\u0433\u043e\u0434\u0438\u043d\u0443":e+" "+(s=+e,n={ss:a?"\u0441\u0435\u043a\u0443\u043d\u0434\u0430_\u0441\u0435\u043a\u0443\u043d\u0434\u0438_\u0441\u0435\u043a\u0443\u043d\u0434":"\u0441\u0435\u043a\u0443\u043d\u0434\u0443_\u0441\u0435\u043a\u0443\u043d\u0434\u0438_\u0441\u0435\u043a\u0443\u043d\u0434",mm:a?"\u0445\u0432\u0438\u043b\u0438\u043d\u0430_\u0445\u0432\u0438\u043b\u0438\u043d\u0438_\u0445\u0432\u0438\u043b\u0438\u043d":"\u0445\u0432\u0438\u043b\u0438\u043d\u0443_\u0445\u0432\u0438\u043b\u0438\u043d\u0438_\u0445\u0432\u0438\u043b\u0438\u043d",hh:a?"\u0433\u043e\u0434\u0438\u043d\u0430_\u0433\u043e\u0434\u0438\u043d\u0438_\u0433\u043e\u0434\u0438\u043d":"\u0433\u043e\u0434\u0438\u043d\u0443_\u0433\u043e\u0434\u0438\u043d\u0438_\u0433\u043e\u0434\u0438\u043d",dd:"\u0434\u0435\u043d\u044c_\u0434\u043d\u0456_\u0434\u043d\u0456\u0432",MM:"\u043c\u0456\u0441\u044f\u0446\u044c_\u043c\u0456\u0441\u044f\u0446\u0456_\u043c\u0456\u0441\u044f\u0446\u0456\u0432",yy:"\u0440\u0456\u043a_\u0440\u043e\u043a\u0438_\u0440\u043e\u043a\u0456\u0432"}[t].split("_"),s%10==1&&s%100!=11?n[0]:2<=s%10&&s%10<=4&&(s%100<10||20<=s%100)?n[1]:n[2])}function sd(e){return function(){return e+"\u043e"+(11===this.hours()?"\u0431":"")+"] LT"}}l.defineLocale("tr",{months:"Ocak_\u015eubat_Mart_Nisan_May\u0131s_Haziran_Temmuz_A\u011fustos_Eyl\xfcl_Ekim_Kas\u0131m_Aral\u0131k".split("_"),monthsShort:"Oca_\u015eub_Mar_Nis_May_Haz_Tem_A\u011fu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Sal\u0131_\xc7ar\u015famba_Per\u015fembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_\xc7ar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_\xc7a_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bug\xfcn saat] LT",nextDay:"[yar\u0131n saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[d\xfcn] LT",lastWeek:"[ge\xe7en] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s \xf6nce",s:"birka\xe7 saniye",ss:"%d saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir g\xfcn",dd:"%d g\xfcn",M:"bir ay",MM:"%d ay",y:"bir y\u0131l",yy:"%d y\u0131l"},ordinal:function(e,a){switch(a){case"d":case"D":case"Do":case"DD":return e;default:if(0===e)return e+"'\u0131nc\u0131";var t=e%10;return e+(ed[t]||ed[e%100-t]||ed[100<=e?100:null])}},week:{dow:1,doy:7}}),l.defineLocale("tzl",{months:"Januar_Fevraglh_Mar\xe7_Avr\xefu_Mai_G\xfcn_Julia_Guscht_Setemvar_Listop\xe4ts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_G\xfcn_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"S\xfaladi_L\xfane\xe7i_Maitzi_M\xe1rcuri_Xh\xfaadi_Vi\xe9ner\xe7i_S\xe1turi".split("_"),weekdaysShort:"S\xfal_L\xfan_Mai_M\xe1r_Xh\xfa_Vi\xe9_S\xe1t".split("_"),weekdaysMin:"S\xfa_L\xfa_Ma_M\xe1_Xh_Vi_S\xe1".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY HH.mm",LLLL:"dddd, [li] D. MMMM [dallas] YYYY HH.mm"},meridiemParse:/d\'o|d\'a/i,isPM:function(e){return"d'o"===e.toLowerCase()},meridiem:function(e,a,t){return 11<e?t?"d'o":"D'O":t?"d'a":"D'A"},calendar:{sameDay:"[oxhi \xe0] LT",nextDay:"[dem\xe0 \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[ieiri \xe0] LT",lastWeek:"[s\xfcr el] dddd [lasteu \xe0] LT",sameElse:"L"},relativeTime:{future:"osprei %s",past:"ja%s",s:ad,ss:ad,m:ad,mm:ad,h:ad,hh:ad,d:ad,dd:ad,M:ad,MM:ad,y:ad,yy:ad},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),l.defineLocale("tzm-latn",{months:"innayr_br\u02e4ayr\u02e4_mar\u02e4s\u02e4_ibrir_mayyw_ywnyw_ywlywz_\u0263w\u0161t_\u0161wtanbir_kt\u02e4wbr\u02e4_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_br\u02e4ayr\u02e4_mar\u02e4s\u02e4_ibrir_mayyw_ywnyw_ywlywz_\u0263w\u0161t_\u0161wtanbir_kt\u02e4wbr\u02e4_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",ss:"%d imik",m:"minu\u1e0d",mm:"%d minu\u1e0d",h:"sa\u025ba",hh:"%d tassa\u025bin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}}),l.defineLocale("tzm",{months:"\u2d49\u2d4f\u2d4f\u2d30\u2d62\u2d54_\u2d31\u2d55\u2d30\u2d62\u2d55_\u2d4e\u2d30\u2d55\u2d5a_\u2d49\u2d31\u2d54\u2d49\u2d54_\u2d4e\u2d30\u2d62\u2d62\u2d53_\u2d62\u2d53\u2d4f\u2d62\u2d53_\u2d62\u2d53\u2d4d\u2d62\u2d53\u2d63_\u2d56\u2d53\u2d5b\u2d5c_\u2d5b\u2d53\u2d5c\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d3d\u2d5f\u2d53\u2d31\u2d55_\u2d4f\u2d53\u2d61\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d37\u2d53\u2d4a\u2d4f\u2d31\u2d49\u2d54".split("_"),monthsShort:"\u2d49\u2d4f\u2d4f\u2d30\u2d62\u2d54_\u2d31\u2d55\u2d30\u2d62\u2d55_\u2d4e\u2d30\u2d55\u2d5a_\u2d49\u2d31\u2d54\u2d49\u2d54_\u2d4e\u2d30\u2d62\u2d62\u2d53_\u2d62\u2d53\u2d4f\u2d62\u2d53_\u2d62\u2d53\u2d4d\u2d62\u2d53\u2d63_\u2d56\u2d53\u2d5b\u2d5c_\u2d5b\u2d53\u2d5c\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d3d\u2d5f\u2d53\u2d31\u2d55_\u2d4f\u2d53\u2d61\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d37\u2d53\u2d4a\u2d4f\u2d31\u2d49\u2d54".split("_"),weekdays:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),weekdaysShort:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),weekdaysMin:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u2d30\u2d59\u2d37\u2d45 \u2d34] LT",nextDay:"[\u2d30\u2d59\u2d3d\u2d30 \u2d34] LT",nextWeek:"dddd [\u2d34] LT",lastDay:"[\u2d30\u2d5a\u2d30\u2d4f\u2d5c \u2d34] LT",lastWeek:"dddd [\u2d34] LT",sameElse:"L"},relativeTime:{future:"\u2d37\u2d30\u2d37\u2d45 \u2d59 \u2d62\u2d30\u2d4f %s",past:"\u2d62\u2d30\u2d4f %s",s:"\u2d49\u2d4e\u2d49\u2d3d",ss:"%d \u2d49\u2d4e\u2d49\u2d3d",m:"\u2d4e\u2d49\u2d4f\u2d53\u2d3a",mm:"%d \u2d4e\u2d49\u2d4f\u2d53\u2d3a",h:"\u2d59\u2d30\u2d44\u2d30",hh:"%d \u2d5c\u2d30\u2d59\u2d59\u2d30\u2d44\u2d49\u2d4f",d:"\u2d30\u2d59\u2d59",dd:"%d o\u2d59\u2d59\u2d30\u2d4f",M:"\u2d30\u2d62o\u2d53\u2d54",MM:"%d \u2d49\u2d62\u2d62\u2d49\u2d54\u2d4f",y:"\u2d30\u2d59\u2d33\u2d30\u2d59",yy:"%d \u2d49\u2d59\u2d33\u2d30\u2d59\u2d4f"},week:{dow:6,doy:12}}),l.defineLocale("ug-cn",{months:"\u064a\u0627\u0646\u06cb\u0627\u0631_\u0641\u06d0\u06cb\u0631\u0627\u0644_\u0645\u0627\u0631\u062a_\u0626\u0627\u067e\u0631\u06d0\u0644_\u0645\u0627\u064a_\u0626\u0649\u064a\u06c7\u0646_\u0626\u0649\u064a\u06c7\u0644_\u0626\u0627\u06cb\u063a\u06c7\u0633\u062a_\u0633\u06d0\u0646\u062a\u06d5\u0628\u0649\u0631_\u0626\u06c6\u0643\u062a\u06d5\u0628\u0649\u0631_\u0646\u0648\u064a\u0627\u0628\u0649\u0631_\u062f\u06d0\u0643\u0627\u0628\u0649\u0631".split("_"),monthsShort:"\u064a\u0627\u0646\u06cb\u0627\u0631_\u0641\u06d0\u06cb\u0631\u0627\u0644_\u0645\u0627\u0631\u062a_\u0626\u0627\u067e\u0631\u06d0\u0644_\u0645\u0627\u064a_\u0626\u0649\u064a\u06c7\u0646_\u0626\u0649\u064a\u06c7\u0644_\u0626\u0627\u06cb\u063a\u06c7\u0633\u062a_\u0633\u06d0\u0646\u062a\u06d5\u0628\u0649\u0631_\u0626\u06c6\u0643\u062a\u06d5\u0628\u0649\u0631_\u0646\u0648\u064a\u0627\u0628\u0649\u0631_\u062f\u06d0\u0643\u0627\u0628\u0649\u0631".split("_"),weekdays:"\u064a\u06d5\u0643\u0634\u06d5\u0646\u0628\u06d5_\u062f\u06c8\u0634\u06d5\u0646\u0628\u06d5_\u0633\u06d5\u064a\u0634\u06d5\u0646\u0628\u06d5_\u0686\u0627\u0631\u0634\u06d5\u0646\u0628\u06d5_\u067e\u06d5\u064a\u0634\u06d5\u0646\u0628\u06d5_\u062c\u06c8\u0645\u06d5_\u0634\u06d5\u0646\u0628\u06d5".split("_"),weekdaysShort:"\u064a\u06d5_\u062f\u06c8_\u0633\u06d5_\u0686\u0627_\u067e\u06d5_\u062c\u06c8_\u0634\u06d5".split("_"),weekdaysMin:"\u064a\u06d5_\u062f\u06c8_\u0633\u06d5_\u0686\u0627_\u067e\u06d5_\u062c\u06c8_\u0634\u06d5".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY-\u064a\u0649\u0644\u0649M-\u0626\u0627\u064a\u0646\u0649\u06adD-\u0643\u06c8\u0646\u0649",LLL:"YYYY-\u064a\u0649\u0644\u0649M-\u0626\u0627\u064a\u0646\u0649\u06adD-\u0643\u06c8\u0646\u0649\u060c HH:mm",LLLL:"dddd\u060c YYYY-\u064a\u0649\u0644\u0649M-\u0626\u0627\u064a\u0646\u0649\u06adD-\u0643\u06c8\u0646\u0649\u060c HH:mm"},meridiemParse:/\u064a\u06d0\u0631\u0649\u0645 \u0643\u06d0\u0686\u06d5|\u0633\u06d5\u06be\u06d5\u0631|\u0686\u06c8\u0634\u062a\u0649\u0646 \u0628\u06c7\u0631\u06c7\u0646|\u0686\u06c8\u0634|\u0686\u06c8\u0634\u062a\u0649\u0646 \u0643\u06d0\u064a\u0649\u0646|\u0643\u06d5\u0686/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u064a\u06d0\u0631\u0649\u0645 \u0643\u06d0\u0686\u06d5"===a||"\u0633\u06d5\u06be\u06d5\u0631"===a||"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0628\u06c7\u0631\u06c7\u0646"===a?e:"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0643\u06d0\u064a\u0649\u0646"===a||"\u0643\u06d5\u0686"===a?e+12:11<=e?e:e+12},meridiem:function(e,a,t){var s=100*e+a;return s<600?"\u064a\u06d0\u0631\u0649\u0645 \u0643\u06d0\u0686\u06d5":s<900?"\u0633\u06d5\u06be\u06d5\u0631":s<1130?"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0628\u06c7\u0631\u06c7\u0646":s<1230?"\u0686\u06c8\u0634":s<1800?"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0643\u06d0\u064a\u0649\u0646":"\u0643\u06d5\u0686"},calendar:{sameDay:"[\u0628\u06c8\u06af\u06c8\u0646 \u0633\u0627\u0626\u06d5\u062a] LT",nextDay:"[\u0626\u06d5\u062a\u06d5 \u0633\u0627\u0626\u06d5\u062a] LT",nextWeek:"[\u0643\u06d0\u0644\u06d5\u0631\u0643\u0649] dddd [\u0633\u0627\u0626\u06d5\u062a] LT",lastDay:"[\u062a\u06c6\u0646\u06c8\u06af\u06c8\u0646] LT",lastWeek:"[\u0626\u0627\u0644\u062f\u0649\u0646\u0642\u0649] dddd [\u0633\u0627\u0626\u06d5\u062a] LT",sameElse:"L"},relativeTime:{future:"%s \u0643\u06d0\u064a\u0649\u0646",past:"%s \u0628\u06c7\u0631\u06c7\u0646",s:"\u0646\u06d5\u0686\u0686\u06d5 \u0633\u06d0\u0643\u0648\u0646\u062a",ss:"%d \u0633\u06d0\u0643\u0648\u0646\u062a",m:"\u0628\u0649\u0631 \u0645\u0649\u0646\u06c7\u062a",mm:"%d \u0645\u0649\u0646\u06c7\u062a",h:"\u0628\u0649\u0631 \u0633\u0627\u0626\u06d5\u062a",hh:"%d \u0633\u0627\u0626\u06d5\u062a",d:"\u0628\u0649\u0631 \u0643\u06c8\u0646",dd:"%d \u0643\u06c8\u0646",M:"\u0628\u0649\u0631 \u0626\u0627\u064a",MM:"%d \u0626\u0627\u064a",y:"\u0628\u0649\u0631 \u064a\u0649\u0644",yy:"%d \u064a\u0649\u0644"},dayOfMonthOrdinalParse:/\d{1,2}(-\u0643\u06c8\u0646\u0649|-\u0626\u0627\u064a|-\u06be\u06d5\u067e\u062a\u06d5)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"-\u0643\u06c8\u0646\u0649";case"w":case"W":return e+"-\u06be\u06d5\u067e\u062a\u06d5";default:return e}},preparse:function(e){return e.replace(/\u060c/g,",")},postformat:function(e){return e.replace(/,/g,"\u060c")},week:{dow:1,doy:7}}),l.defineLocale("uk",{months:{format:"\u0441\u0456\u0447\u043d\u044f_\u043b\u044e\u0442\u043e\u0433\u043e_\u0431\u0435\u0440\u0435\u0437\u043d\u044f_\u043a\u0432\u0456\u0442\u043d\u044f_\u0442\u0440\u0430\u0432\u043d\u044f_\u0447\u0435\u0440\u0432\u043d\u044f_\u043b\u0438\u043f\u043d\u044f_\u0441\u0435\u0440\u043f\u043d\u044f_\u0432\u0435\u0440\u0435\u0441\u043d\u044f_\u0436\u043e\u0432\u0442\u043d\u044f_\u043b\u0438\u0441\u0442\u043e\u043f\u0430\u0434\u0430_\u0433\u0440\u0443\u0434\u043d\u044f".split("_"),standalone:"\u0441\u0456\u0447\u0435\u043d\u044c_\u043b\u044e\u0442\u0438\u0439_\u0431\u0435\u0440\u0435\u0437\u0435\u043d\u044c_\u043a\u0432\u0456\u0442\u0435\u043d\u044c_\u0442\u0440\u0430\u0432\u0435\u043d\u044c_\u0447\u0435\u0440\u0432\u0435\u043d\u044c_\u043b\u0438\u043f\u0435\u043d\u044c_\u0441\u0435\u0440\u043f\u0435\u043d\u044c_\u0432\u0435\u0440\u0435\u0441\u0435\u043d\u044c_\u0436\u043e\u0432\u0442\u0435\u043d\u044c_\u043b\u0438\u0441\u0442\u043e\u043f\u0430\u0434_\u0433\u0440\u0443\u0434\u0435\u043d\u044c".split("_")},monthsShort:"\u0441\u0456\u0447_\u043b\u044e\u0442_\u0431\u0435\u0440_\u043a\u0432\u0456\u0442_\u0442\u0440\u0430\u0432_\u0447\u0435\u0440\u0432_\u043b\u0438\u043f_\u0441\u0435\u0440\u043f_\u0432\u0435\u0440_\u0436\u043e\u0432\u0442_\u043b\u0438\u0441\u0442_\u0433\u0440\u0443\u0434".split("_"),weekdays:function(e,a){var t={nominative:"\u043d\u0435\u0434\u0456\u043b\u044f_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a_\u0432\u0456\u0432\u0442\u043e\u0440\u043e\u043a_\u0441\u0435\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0435\u0440_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u044f_\u0441\u0443\u0431\u043e\u0442\u0430".split("_"),accusative:"\u043d\u0435\u0434\u0456\u043b\u044e_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a_\u0432\u0456\u0432\u0442\u043e\u0440\u043e\u043a_\u0441\u0435\u0440\u0435\u0434\u0443_\u0447\u0435\u0442\u0432\u0435\u0440_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u044e_\u0441\u0443\u0431\u043e\u0442\u0443".split("_"),genitive:"\u043d\u0435\u0434\u0456\u043b\u0456_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043a\u0430_\u0432\u0456\u0432\u0442\u043e\u0440\u043a\u0430_\u0441\u0435\u0440\u0435\u0434\u0438_\u0447\u0435\u0442\u0432\u0435\u0440\u0433\u0430_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u0456_\u0441\u0443\u0431\u043e\u0442\u0438".split("_")};return e?t[/(\[[\u0412\u0432\u0423\u0443]\]) ?dddd/.test(a)?"accusative":/\[?(?:\u043c\u0438\u043d\u0443\u043b\u043e\u0457|\u043d\u0430\u0441\u0442\u0443\u043f\u043d\u043e\u0457)? ?\] ?dddd/.test(a)?"genitive":"nominative"][e.day()]:t.nominative},weekdaysShort:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0440.",LLL:"D MMMM YYYY \u0440., HH:mm",LLLL:"dddd, D MMMM YYYY \u0440., HH:mm"},calendar:{sameDay:sd("[\u0421\u044c\u043e\u0433\u043e\u0434\u043d\u0456 "),nextDay:sd("[\u0417\u0430\u0432\u0442\u0440\u0430 "),lastDay:sd("[\u0412\u0447\u043e\u0440\u0430 "),nextWeek:sd("[\u0423] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return sd("[\u041c\u0438\u043d\u0443\u043b\u043e\u0457] dddd [").call(this);case 1:case 2:case 4:return sd("[\u041c\u0438\u043d\u0443\u043b\u043e\u0433\u043e] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"\u0437\u0430 %s",past:"%s \u0442\u043e\u043c\u0443",s:"\u0434\u0435\u043a\u0456\u043b\u044c\u043a\u0430 \u0441\u0435\u043a\u0443\u043d\u0434",ss:td,m:td,mm:td,h:"\u0433\u043e\u0434\u0438\u043d\u0443",hh:td,d:"\u0434\u0435\u043d\u044c",dd:td,M:"\u043c\u0456\u0441\u044f\u0446\u044c",MM:td,y:"\u0440\u0456\u043a",yy:td},meridiemParse:/\u043d\u043e\u0447\u0456|\u0440\u0430\u043d\u043a\u0443|\u0434\u043d\u044f|\u0432\u0435\u0447\u043e\u0440\u0430/,isPM:function(e){return/^(\u0434\u043d\u044f|\u0432\u0435\u0447\u043e\u0440\u0430)$/.test(e)},meridiem:function(e,a,t){return e<4?"\u043d\u043e\u0447\u0456":e<12?"\u0440\u0430\u043d\u043a\u0443":e<17?"\u0434\u043d\u044f":"\u0432\u0435\u0447\u043e\u0440\u0430"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0439|\u0433\u043e)/,ordinal:function(e,a){switch(a){case"M":case"d":case"DDD":case"w":case"W":return e+"-\u0439";case"D":return e+"-\u0433\u043e";default:return e}},week:{dow:1,doy:7}});var nd=["\u062c\u0646\u0648\u0631\u06cc","\u0641\u0631\u0648\u0631\u06cc","\u0645\u0627\u0631\u0686","\u0627\u067e\u0631\u06cc\u0644","\u0645\u0626\u06cc","\u062c\u0648\u0646","\u062c\u0648\u0644\u0627\u0626\u06cc","\u0627\u06af\u0633\u062a","\u0633\u062a\u0645\u0628\u0631","\u0627\u06a9\u062a\u0648\u0628\u0631","\u0646\u0648\u0645\u0628\u0631","\u062f\u0633\u0645\u0628\u0631"],dd=["\u0627\u062a\u0648\u0627\u0631","\u067e\u06cc\u0631","\u0645\u0646\u06af\u0644","\u0628\u062f\u06be","\u062c\u0645\u0639\u0631\u0627\u062a","\u062c\u0645\u0639\u06c1","\u06c1\u0641\u062a\u06c1"];return l.defineLocale("ur",{months:nd,monthsShort:nd,weekdays:dd,weekdaysShort:dd,weekdaysMin:dd,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd\u060c D MMMM YYYY HH:mm"},meridiemParse:/\u0635\u0628\u062d|\u0634\u0627\u0645/,isPM:function(e){return"\u0634\u0627\u0645"===e},meridiem:function(e,a,t){return e<12?"\u0635\u0628\u062d":"\u0634\u0627\u0645"},calendar:{sameDay:"[\u0622\u062c \u0628\u0648\u0642\u062a] LT",nextDay:"[\u06a9\u0644 \u0628\u0648\u0642\u062a] LT",nextWeek:"dddd [\u0628\u0648\u0642\u062a] LT",lastDay:"[\u06af\u0630\u0634\u062a\u06c1 \u0631\u0648\u0632 \u0628\u0648\u0642\u062a] LT",lastWeek:"[\u06af\u0630\u0634\u062a\u06c1] dddd [\u0628\u0648\u0642\u062a] LT",sameElse:"L"},relativeTime:{future:"%s \u0628\u0639\u062f",past:"%s \u0642\u0628\u0644",s:"\u0686\u0646\u062f \u0633\u06cc\u06a9\u0646\u0688",ss:"%d \u0633\u06cc\u06a9\u0646\u0688",m:"\u0627\u06cc\u06a9 \u0645\u0646\u0679",mm:"%d \u0645\u0646\u0679",h:"\u0627\u06cc\u06a9 \u06af\u06be\u0646\u0679\u06c1",hh:"%d \u06af\u06be\u0646\u0679\u06d2",d:"\u0627\u06cc\u06a9 \u062f\u0646",dd:"%d \u062f\u0646",M:"\u0627\u06cc\u06a9 \u0645\u0627\u06c1",MM:"%d \u0645\u0627\u06c1",y:"\u0627\u06cc\u06a9 \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"},preparse:function(e){return e.replace(/\u060c/g,",")},postformat:function(e){return e.replace(/,/g,"\u060c")},week:{dow:1,doy:4}}),l.defineLocale("uz-latn",{months:"Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr".split("_"),monthsShort:"Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek".split("_"),weekdays:"Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba".split("_"),weekdaysShort:"Yak_Dush_Sesh_Chor_Pay_Jum_Shan".split("_"),weekdaysMin:"Ya_Du_Se_Cho_Pa_Ju_Sha".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Bugun soat] LT [da]",nextDay:"[Ertaga] LT [da]",nextWeek:"dddd [kuni soat] LT [da]",lastDay:"[Kecha soat] LT [da]",lastWeek:"[O'tgan] dddd [kuni soat] LT [da]",sameElse:"L"},relativeTime:{future:"Yaqin %s ichida",past:"Bir necha %s oldin",s:"soniya",ss:"%d soniya",m:"bir daqiqa",mm:"%d daqiqa",h:"bir soat",hh:"%d soat",d:"bir kun",dd:"%d kun",M:"bir oy",MM:"%d oy",y:"bir yil",yy:"%d yil"},week:{dow:1,doy:7}}),l.defineLocale("uz",{months:"\u044f\u043d\u0432\u0430\u0440_\u0444\u0435\u0432\u0440\u0430\u043b_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440_\u043e\u043a\u0442\u044f\u0431\u0440_\u043d\u043e\u044f\u0431\u0440_\u0434\u0435\u043a\u0430\u0431\u0440".split("_"),monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdays:"\u042f\u043a\u0448\u0430\u043d\u0431\u0430_\u0414\u0443\u0448\u0430\u043d\u0431\u0430_\u0421\u0435\u0448\u0430\u043d\u0431\u0430_\u0427\u043e\u0440\u0448\u0430\u043d\u0431\u0430_\u041f\u0430\u0439\u0448\u0430\u043d\u0431\u0430_\u0416\u0443\u043c\u0430_\u0428\u0430\u043d\u0431\u0430".split("_"),weekdaysShort:"\u042f\u043a\u0448_\u0414\u0443\u0448_\u0421\u0435\u0448_\u0427\u043e\u0440_\u041f\u0430\u0439_\u0416\u0443\u043c_\u0428\u0430\u043d".split("_"),weekdaysMin:"\u042f\u043a_\u0414\u0443_\u0421\u0435_\u0427\u043e_\u041f\u0430_\u0416\u0443_\u0428\u0430".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[\u0411\u0443\u0433\u0443\u043d \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",nextDay:"[\u042d\u0440\u0442\u0430\u0433\u0430] LT [\u0434\u0430]",nextWeek:"dddd [\u043a\u0443\u043d\u0438 \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",lastDay:"[\u041a\u0435\u0447\u0430 \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",lastWeek:"[\u0423\u0442\u0433\u0430\u043d] dddd [\u043a\u0443\u043d\u0438 \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",sameElse:"L"},relativeTime:{future:"\u042f\u043a\u0438\u043d %s \u0438\u0447\u0438\u0434\u0430",past:"\u0411\u0438\u0440 \u043d\u0435\u0447\u0430 %s \u043e\u043b\u0434\u0438\u043d",s:"\u0444\u0443\u0440\u0441\u0430\u0442",ss:"%d \u0444\u0443\u0440\u0441\u0430\u0442",m:"\u0431\u0438\u0440 \u0434\u0430\u043a\u0438\u043a\u0430",mm:"%d \u0434\u0430\u043a\u0438\u043a\u0430",h:"\u0431\u0438\u0440 \u0441\u043e\u0430\u0442",hh:"%d \u0441\u043e\u0430\u0442",d:"\u0431\u0438\u0440 \u043a\u0443\u043d",dd:"%d \u043a\u0443\u043d",M:"\u0431\u0438\u0440 \u043e\u0439",MM:"%d \u043e\u0439",y:"\u0431\u0438\u0440 \u0439\u0438\u043b",yy:"%d \u0439\u0438\u043b"},week:{dow:1,doy:7}}),l.defineLocale("vi",{months:"th\xe1ng 1_th\xe1ng 2_th\xe1ng 3_th\xe1ng 4_th\xe1ng 5_th\xe1ng 6_th\xe1ng 7_th\xe1ng 8_th\xe1ng 9_th\xe1ng 10_th\xe1ng 11_th\xe1ng 12".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),monthsParseExact:!0,weekdays:"ch\u1ee7 nh\u1eadt_th\u1ee9 hai_th\u1ee9 ba_th\u1ee9 t\u01b0_th\u1ee9 n\u0103m_th\u1ee9 s\xe1u_th\u1ee9 b\u1ea3y".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(e){return/^ch$/i.test(e)},meridiem:function(e,a,t){return e<12?t?"sa":"SA":t?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [n\u0103m] YYYY",LLL:"D MMMM [n\u0103m] YYYY HH:mm",LLLL:"dddd, D MMMM [n\u0103m] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[H\xf4m nay l\xfac] LT",nextDay:"[Ng\xe0y mai l\xfac] LT",nextWeek:"dddd [tu\u1ea7n t\u1edbi l\xfac] LT",lastDay:"[H\xf4m qua l\xfac] LT",lastWeek:"dddd [tu\u1ea7n r\u1ed3i l\xfac] LT",sameElse:"L"},relativeTime:{future:"%s t\u1edbi",past:"%s tr\u01b0\u1edbc",s:"v\xe0i gi\xe2y",ss:"%d gi\xe2y",m:"m\u1ed9t ph\xfat",mm:"%d ph\xfat",h:"m\u1ed9t gi\u1edd",hh:"%d gi\u1edd",d:"m\u1ed9t ng\xe0y",dd:"%d ng\xe0y",M:"m\u1ed9t th\xe1ng",MM:"%d th\xe1ng",y:"m\u1ed9t n\u0103m",yy:"%d n\u0103m"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}}),l.defineLocale("x-pseudo",{months:"J~\xe1\xf1\xfa\xe1~r\xfd_F~\xe9br\xfa~\xe1r\xfd_~M\xe1rc~h_\xc1p~r\xedl_~M\xe1\xfd_~J\xfa\xf1\xe9~_J\xfal~\xfd_\xc1\xfa~g\xfast~_S\xe9p~t\xe9mb~\xe9r_\xd3~ct\xf3b~\xe9r_\xd1~\xf3v\xe9m~b\xe9r_~D\xe9c\xe9~mb\xe9r".split("_"),monthsShort:"J~\xe1\xf1_~F\xe9b_~M\xe1r_~\xc1pr_~M\xe1\xfd_~J\xfa\xf1_~J\xfal_~\xc1\xfag_~S\xe9p_~\xd3ct_~\xd1\xf3v_~D\xe9c".split("_"),monthsParseExact:!0,weekdays:"S~\xfa\xf1d\xe1~\xfd_M\xf3~\xf1d\xe1\xfd~_T\xfa\xe9~sd\xe1\xfd~_W\xe9d~\xf1\xe9sd~\xe1\xfd_T~h\xfars~d\xe1\xfd_~Fr\xedd~\xe1\xfd_S~\xe1t\xfar~d\xe1\xfd".split("_"),weekdaysShort:"S~\xfa\xf1_~M\xf3\xf1_~T\xfa\xe9_~W\xe9d_~Th\xfa_~Fr\xed_~S\xe1t".split("_"),weekdaysMin:"S~\xfa_M\xf3~_T\xfa_~W\xe9_T~h_Fr~_S\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[T~\xf3d\xe1~\xfd \xe1t] LT",nextDay:"[T~\xf3m\xf3~rr\xf3~w \xe1t] LT",nextWeek:"dddd [\xe1t] LT",lastDay:"[\xdd~\xe9st~\xe9rd\xe1~\xfd \xe1t] LT",lastWeek:"[L~\xe1st] dddd [\xe1t] LT",sameElse:"L"},relativeTime:{future:"\xed~\xf1 %s",past:"%s \xe1~g\xf3",s:"\xe1 ~f\xe9w ~s\xe9c\xf3~\xf1ds",ss:"%d s~\xe9c\xf3\xf1~ds",m:"\xe1 ~m\xed\xf1~\xfat\xe9",mm:"%d m~\xed\xf1\xfa~t\xe9s",h:"\xe1~\xf1 h\xf3~\xfar",hh:"%d h~\xf3\xfars",d:"\xe1 ~d\xe1\xfd",dd:"%d d~\xe1\xfds",M:"\xe1 ~m\xf3\xf1~th",MM:"%d m~\xf3\xf1t~hs",y:"\xe1 ~\xfd\xe9\xe1r",yy:"%d \xfd~\xe9\xe1rs"},dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")},week:{dow:1,doy:4}}),l.defineLocale("yo",{months:"S\u1eb9\u0301r\u1eb9\u0301_E\u0300re\u0300le\u0300_\u1eb8r\u1eb9\u0300na\u0300_I\u0300gbe\u0301_E\u0300bibi_O\u0300ku\u0300du_Ag\u1eb9mo_O\u0300gu\u0301n_Owewe_\u1ecc\u0300wa\u0300ra\u0300_Be\u0301lu\u0301_\u1ecc\u0300p\u1eb9\u0300\u0300".split("_"),monthsShort:"S\u1eb9\u0301r_E\u0300rl_\u1eb8rn_I\u0300gb_E\u0300bi_O\u0300ku\u0300_Ag\u1eb9_O\u0300gu\u0301_Owe_\u1ecc\u0300wa\u0300_Be\u0301l_\u1ecc\u0300p\u1eb9\u0300\u0300".split("_"),weekdays:"A\u0300i\u0300ku\u0301_Aje\u0301_I\u0300s\u1eb9\u0301gun_\u1eccj\u1ecd\u0301ru\u0301_\u1eccj\u1ecd\u0301b\u1ecd_\u1eb8ti\u0300_A\u0300ba\u0301m\u1eb9\u0301ta".split("_"),weekdaysShort:"A\u0300i\u0300k_Aje\u0301_I\u0300s\u1eb9\u0301_\u1eccjr_\u1eccjb_\u1eb8ti\u0300_A\u0300ba\u0301".split("_"),weekdaysMin:"A\u0300i\u0300_Aj_I\u0300s_\u1eccr_\u1eccb_\u1eb8t_A\u0300b".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[O\u0300ni\u0300 ni] LT",nextDay:"[\u1ecc\u0300la ni] LT",nextWeek:"dddd [\u1eccs\u1eb9\u0300 to\u0301n'b\u1ecd] [ni] LT",lastDay:"[A\u0300na ni] LT",lastWeek:"dddd [\u1eccs\u1eb9\u0300 to\u0301l\u1ecd\u0301] [ni] LT",sameElse:"L"},relativeTime:{future:"ni\u0301 %s",past:"%s k\u1ecdja\u0301",s:"i\u0300s\u1eb9ju\u0301 aaya\u0301 die",ss:"aaya\u0301 %d",m:"i\u0300s\u1eb9ju\u0301 kan",mm:"i\u0300s\u1eb9ju\u0301 %d",h:"wa\u0301kati kan",hh:"wa\u0301kati %d",d:"\u1ecdj\u1ecd\u0301 kan",dd:"\u1ecdj\u1ecd\u0301 %d",M:"osu\u0300 kan",MM:"osu\u0300 %d",y:"\u1ecddu\u0301n kan",yy:"\u1ecddu\u0301n %d"},dayOfMonthOrdinalParse:/\u1ecdj\u1ecd\u0301\s\d{1,2}/,ordinal:"\u1ecdj\u1ecd\u0301 %d",week:{dow:1,doy:4}}),l.defineLocale("zh-cn",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u5468\u65e5_\u5468\u4e00_\u5468\u4e8c_\u5468\u4e09_\u5468\u56db_\u5468\u4e94_\u5468\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5Ah\u70b9mm\u5206",LLLL:"YYYY\u5e74M\u6708D\u65e5ddddAh\u70b9mm\u5206",l:"YYYY/M/D",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u51cc\u6668"===a||"\u65e9\u4e0a"===a||"\u4e0a\u5348"===a?e:"\u4e0b\u5348"===a||"\u665a\u4e0a"===a?e+12:11<=e?e:e+12},meridiem:function(e,a,t){var s=100*e+a;return s<600?"\u51cc\u6668":s<900?"\u65e9\u4e0a":s<1130?"\u4e0a\u5348":s<1230?"\u4e2d\u5348":s<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929]LT",nextDay:"[\u660e\u5929]LT",nextWeek:"[\u4e0b]ddddLT",lastDay:"[\u6628\u5929]LT",lastWeek:"[\u4e0a]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u5468)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"\u65e5";case"M":return e+"\u6708";case"w":case"W":return e+"\u5468";default:return e}},relativeTime:{future:"%s\u5185",past:"%s\u524d",s:"\u51e0\u79d2",ss:"%d \u79d2",m:"1 \u5206\u949f",mm:"%d \u5206\u949f",h:"1 \u5c0f\u65f6",hh:"%d \u5c0f\u65f6",d:"1 \u5929",dd:"%d \u5929",M:"1 \u4e2a\u6708",MM:"%d \u4e2a\u6708",y:"1 \u5e74",yy:"%d \u5e74"},week:{dow:1,doy:4}}),l.defineLocale("zh-hk",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u9031\u65e5_\u9031\u4e00_\u9031\u4e8c_\u9031\u4e09_\u9031\u56db_\u9031\u4e94_\u9031\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm",l:"YYYY/M/D",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u51cc\u6668"===a||"\u65e9\u4e0a"===a||"\u4e0a\u5348"===a?e:"\u4e2d\u5348"===a?11<=e?e:e+12:"\u4e0b\u5348"===a||"\u665a\u4e0a"===a?e+12:void 0},meridiem:function(e,a,t){var s=100*e+a;return s<600?"\u51cc\u6668":s<900?"\u65e9\u4e0a":s<1130?"\u4e0a\u5348":s<1230?"\u4e2d\u5348":s<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929]LT",nextDay:"[\u660e\u5929]LT",nextWeek:"[\u4e0b]ddddLT",lastDay:"[\u6628\u5929]LT",lastWeek:"[\u4e0a]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u9031)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"\u65e5";case"M":return e+"\u6708";case"w":case"W":return e+"\u9031";default:return e}},relativeTime:{future:"%s\u5167",past:"%s\u524d",s:"\u5e7e\u79d2",ss:"%d \u79d2",m:"1 \u5206\u9418",mm:"%d \u5206\u9418",h:"1 \u5c0f\u6642",hh:"%d \u5c0f\u6642",d:"1 \u5929",dd:"%d \u5929",M:"1 \u500b\u6708",MM:"%d \u500b\u6708",y:"1 \u5e74",yy:"%d \u5e74"}}),l.defineLocale("zh-tw",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u9031\u65e5_\u9031\u4e00_\u9031\u4e8c_\u9031\u4e09_\u9031\u56db_\u9031\u4e94_\u9031\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm",l:"YYYY/M/D",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u51cc\u6668"===a||"\u65e9\u4e0a"===a||"\u4e0a\u5348"===a?e:"\u4e2d\u5348"===a?11<=e?e:e+12:"\u4e0b\u5348"===a||"\u665a\u4e0a"===a?e+12:void 0},meridiem:function(e,a,t){var s=100*e+a;return s<600?"\u51cc\u6668":s<900?"\u65e9\u4e0a":s<1130?"\u4e0a\u5348":s<1230?"\u4e2d\u5348":s<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929] LT",nextDay:"[\u660e\u5929] LT",nextWeek:"[\u4e0b]dddd LT",lastDay:"[\u6628\u5929] LT",lastWeek:"[\u4e0a]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u9031)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"\u65e5";case"M":return e+"\u6708";case"w":case"W":return e+"\u9031";default:return e}},relativeTime:{future:"%s\u5167",past:"%s\u524d",s:"\u5e7e\u79d2",ss:"%d \u79d2",m:"1 \u5206\u9418",mm:"%d \u5206\u9418",h:"1 \u5c0f\u6642",hh:"%d \u5c0f\u6642",d:"1 \u5929",dd:"%d \u5929",M:"1 \u500b\u6708",MM:"%d \u500b\u6708",y:"1 \u5e74",yy:"%d \u5e74"}}),l.locale("en"),l});
\ No newline at end of file
diff --git a/app/static/vendors/moment/moment.min.js b/app/static/vendors/moment/moment.min.js
deleted file mode 100644 (file)
index 2a3358f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.moment=t()}(this,function(){"use strict";var e,i;function c(){return e.apply(null,arguments)}function o(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function u(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function l(e){return void 0===e}function d(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function h(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function f(e,t){var n,s=[];for(n=0;n<e.length;++n)s.push(t(e[n],n));return s}function m(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function _(e,t){for(var n in t)m(t,n)&&(e[n]=t[n]);return m(t,"toString")&&(e.toString=t.toString),m(t,"valueOf")&&(e.valueOf=t.valueOf),e}function y(e,t,n,s){return Ot(e,t,n,s,!0).utc()}function g(e){return null==e._pf&&(e._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}),e._pf}function p(e){if(null==e._isValid){var t=g(e),n=i.call(t.parsedDateParts,function(e){return null!=e}),s=!isNaN(e._d.getTime())&&t.overflow<0&&!t.empty&&!t.invalidMonth&&!t.invalidWeekday&&!t.weekdayMismatch&&!t.nullInput&&!t.invalidFormat&&!t.userInvalidated&&(!t.meridiem||t.meridiem&&n);if(e._strict&&(s=s&&0===t.charsLeftOver&&0===t.unusedTokens.length&&void 0===t.bigHour),null!=Object.isFrozen&&Object.isFrozen(e))return s;e._isValid=s}return e._isValid}function v(e){var t=y(NaN);return null!=e?_(g(t),e):g(t).userInvalidated=!0,t}i=Array.prototype.some?Array.prototype.some:function(e){for(var t=Object(this),n=t.length>>>0,s=0;s<n;s++)if(s in t&&e.call(this,t[s],s,t))return!0;return!1};var r=c.momentProperties=[];function w(e,t){var n,s,i;if(l(t._isAMomentObject)||(e._isAMomentObject=t._isAMomentObject),l(t._i)||(e._i=t._i),l(t._f)||(e._f=t._f),l(t._l)||(e._l=t._l),l(t._strict)||(e._strict=t._strict),l(t._tzm)||(e._tzm=t._tzm),l(t._isUTC)||(e._isUTC=t._isUTC),l(t._offset)||(e._offset=t._offset),l(t._pf)||(e._pf=g(t)),l(t._locale)||(e._locale=t._locale),0<r.length)for(n=0;n<r.length;n++)l(i=t[s=r[n]])||(e[s]=i);return e}var t=!1;function M(e){w(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===t&&(t=!0,c.updateOffset(this),t=!1)}function S(e){return e instanceof M||null!=e&&null!=e._isAMomentObject}function D(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function k(e){var t=+e,n=0;return 0!==t&&isFinite(t)&&(n=D(t)),n}function a(e,t,n){var s,i=Math.min(e.length,t.length),r=Math.abs(e.length-t.length),a=0;for(s=0;s<i;s++)(n&&e[s]!==t[s]||!n&&k(e[s])!==k(t[s]))&&a++;return a+r}function Y(e){!1===c.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+e)}function n(i,r){var a=!0;return _(function(){if(null!=c.deprecationHandler&&c.deprecationHandler(null,i),a){for(var e,t=[],n=0;n<arguments.length;n++){if(e="","object"==typeof arguments[n]){for(var s in e+="\n["+n+"] ",arguments[0])e+=s+": "+arguments[0][s]+", ";e=e.slice(0,-2)}else e=arguments[n];t.push(e)}Y(i+"\nArguments: "+Array.prototype.slice.call(t).join("")+"\n"+(new Error).stack),a=!1}return r.apply(this,arguments)},r)}var s,O={};function T(e,t){null!=c.deprecationHandler&&c.deprecationHandler(e,t),O[e]||(Y(t),O[e]=!0)}function x(e){return e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}function b(e,t){var n,s=_({},e);for(n in t)m(t,n)&&(u(e[n])&&u(t[n])?(s[n]={},_(s[n],e[n]),_(s[n],t[n])):null!=t[n]?s[n]=t[n]:delete s[n]);for(n in e)m(e,n)&&!m(t,n)&&u(e[n])&&(s[n]=_({},s[n]));return s}function P(e){null!=e&&this.set(e)}c.suppressDeprecationWarnings=!1,c.deprecationHandler=null,s=Object.keys?Object.keys:function(e){var t,n=[];for(t in e)m(e,t)&&n.push(t);return n};var W={};function H(e,t){var n=e.toLowerCase();W[n]=W[n+"s"]=W[t]=e}function R(e){return"string"==typeof e?W[e]||W[e.toLowerCase()]:void 0}function C(e){var t,n,s={};for(n in e)m(e,n)&&(t=R(n))&&(s[t]=e[n]);return s}var F={};function L(e,t){F[e]=t}function U(e,t,n){var s=""+Math.abs(e),i=t-s.length;return(0<=e?n?"+":"":"-")+Math.pow(10,Math.max(0,i)).toString().substr(1)+s}var N=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,G=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,V={},E={};function I(e,t,n,s){var i=s;"string"==typeof s&&(i=function(){return this[s]()}),e&&(E[e]=i),t&&(E[t[0]]=function(){return U(i.apply(this,arguments),t[1],t[2])}),n&&(E[n]=function(){return this.localeData().ordinal(i.apply(this,arguments),e)})}function A(e,t){return e.isValid()?(t=j(t,e.localeData()),V[t]=V[t]||function(s){var e,i,t,r=s.match(N);for(e=0,i=r.length;e<i;e++)E[r[e]]?r[e]=E[r[e]]:r[e]=(t=r[e]).match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"");return function(e){var t,n="";for(t=0;t<i;t++)n+=x(r[t])?r[t].call(e,s):r[t];return n}}(t),V[t](e)):e.localeData().invalidDate()}function j(e,t){var n=5;function s(e){return t.longDateFormat(e)||e}for(G.lastIndex=0;0<=n&&G.test(e);)e=e.replace(G,s),G.lastIndex=0,n-=1;return e}var Z=/\d/,z=/\d\d/,$=/\d{3}/,q=/\d{4}/,J=/[+-]?\d{6}/,B=/\d\d?/,Q=/\d\d\d\d?/,X=/\d\d\d\d\d\d?/,K=/\d{1,3}/,ee=/\d{1,4}/,te=/[+-]?\d{1,6}/,ne=/\d+/,se=/[+-]?\d+/,ie=/Z|[+-]\d\d:?\d\d/gi,re=/Z|[+-]\d\d(?::?\d\d)?/gi,ae=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,oe={};function ue(e,n,s){oe[e]=x(n)?n:function(e,t){return e&&s?s:n}}function le(e,t){return m(oe,e)?oe[e](t._strict,t._locale):new RegExp(de(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(e,t,n,s,i){return t||n||s||i})))}function de(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var he={};function ce(e,n){var t,s=n;for("string"==typeof e&&(e=[e]),d(n)&&(s=function(e,t){t[n]=k(e)}),t=0;t<e.length;t++)he[e[t]]=s}function fe(e,i){ce(e,function(e,t,n,s){n._w=n._w||{},i(e,n._w,n,s)})}var me=0,_e=1,ye=2,ge=3,pe=4,ve=5,we=6,Me=7,Se=8;function De(e){return ke(e)?366:365}function ke(e){return e%4==0&&e%100!=0||e%400==0}I("Y",0,0,function(){var e=this.year();return e<=9999?""+e:"+"+e}),I(0,["YY",2],0,function(){return this.year()%100}),I(0,["YYYY",4],0,"year"),I(0,["YYYYY",5],0,"year"),I(0,["YYYYYY",6,!0],0,"year"),H("year","y"),L("year",1),ue("Y",se),ue("YY",B,z),ue("YYYY",ee,q),ue("YYYYY",te,J),ue("YYYYYY",te,J),ce(["YYYYY","YYYYYY"],me),ce("YYYY",function(e,t){t[me]=2===e.length?c.parseTwoDigitYear(e):k(e)}),ce("YY",function(e,t){t[me]=c.parseTwoDigitYear(e)}),ce("Y",function(e,t){t[me]=parseInt(e,10)}),c.parseTwoDigitYear=function(e){return k(e)+(68<k(e)?1900:2e3)};var Ye,Oe=Te("FullYear",!0);function Te(t,n){return function(e){return null!=e?(be(this,t,e),c.updateOffset(this,n),this):xe(this,t)}}function xe(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function be(e,t,n){e.isValid()&&!isNaN(n)&&("FullYear"===t&&ke(e.year())&&1===e.month()&&29===e.date()?e._d["set"+(e._isUTC?"UTC":"")+t](n,e.month(),Pe(n,e.month())):e._d["set"+(e._isUTC?"UTC":"")+t](n))}function Pe(e,t){if(isNaN(e)||isNaN(t))return NaN;var n,s=(t%(n=12)+n)%n;return e+=(t-s)/12,1===s?ke(e)?29:28:31-s%7%2}Ye=Array.prototype.indexOf?Array.prototype.indexOf:function(e){var t;for(t=0;t<this.length;++t)if(this[t]===e)return t;return-1},I("M",["MM",2],"Mo",function(){return this.month()+1}),I("MMM",0,0,function(e){return this.localeData().monthsShort(this,e)}),I("MMMM",0,0,function(e){return this.localeData().months(this,e)}),H("month","M"),L("month",8),ue("M",B),ue("MM",B,z),ue("MMM",function(e,t){return t.monthsShortRegex(e)}),ue("MMMM",function(e,t){return t.monthsRegex(e)}),ce(["M","MM"],function(e,t){t[_e]=k(e)-1}),ce(["MMM","MMMM"],function(e,t,n,s){var i=n._locale.monthsParse(e,s,n._strict);null!=i?t[_e]=i:g(n).invalidMonth=e});var We=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,He="January_February_March_April_May_June_July_August_September_October_November_December".split("_");var Re="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_");function Ce(e,t){var n;if(!e.isValid())return e;if("string"==typeof t)if(/^\d+$/.test(t))t=k(t);else if(!d(t=e.localeData().monthsParse(t)))return e;return n=Math.min(e.date(),Pe(e.year(),t)),e._d["set"+(e._isUTC?"UTC":"")+"Month"](t,n),e}function Fe(e){return null!=e?(Ce(this,e),c.updateOffset(this,!0),this):xe(this,"Month")}var Le=ae;var Ue=ae;function Ne(){function e(e,t){return t.length-e.length}var t,n,s=[],i=[],r=[];for(t=0;t<12;t++)n=y([2e3,t]),s.push(this.monthsShort(n,"")),i.push(this.months(n,"")),r.push(this.months(n,"")),r.push(this.monthsShort(n,""));for(s.sort(e),i.sort(e),r.sort(e),t=0;t<12;t++)s[t]=de(s[t]),i[t]=de(i[t]);for(t=0;t<24;t++)r[t]=de(r[t]);this._monthsRegex=new RegExp("^("+r.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+i.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+s.join("|")+")","i")}function Ge(e){var t=new Date(Date.UTC.apply(null,arguments));return e<100&&0<=e&&isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e),t}function Ve(e,t,n){var s=7+t-n;return-((7+Ge(e,0,s).getUTCDay()-t)%7)+s-1}function Ee(e,t,n,s,i){var r,a,o=1+7*(t-1)+(7+n-s)%7+Ve(e,s,i);return a=o<=0?De(r=e-1)+o:o>De(e)?(r=e+1,o-De(e)):(r=e,o),{year:r,dayOfYear:a}}function Ie(e,t,n){var s,i,r=Ve(e.year(),t,n),a=Math.floor((e.dayOfYear()-r-1)/7)+1;return a<1?s=a+Ae(i=e.year()-1,t,n):a>Ae(e.year(),t,n)?(s=a-Ae(e.year(),t,n),i=e.year()+1):(i=e.year(),s=a),{week:s,year:i}}function Ae(e,t,n){var s=Ve(e,t,n),i=Ve(e+1,t,n);return(De(e)-s+i)/7}I("w",["ww",2],"wo","week"),I("W",["WW",2],"Wo","isoWeek"),H("week","w"),H("isoWeek","W"),L("week",5),L("isoWeek",5),ue("w",B),ue("ww",B,z),ue("W",B),ue("WW",B,z),fe(["w","ww","W","WW"],function(e,t,n,s){t[s.substr(0,1)]=k(e)});I("d",0,"do","day"),I("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),I("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),I("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),I("e",0,0,"weekday"),I("E",0,0,"isoWeekday"),H("day","d"),H("weekday","e"),H("isoWeekday","E"),L("day",11),L("weekday",11),L("isoWeekday",11),ue("d",B),ue("e",B),ue("E",B),ue("dd",function(e,t){return t.weekdaysMinRegex(e)}),ue("ddd",function(e,t){return t.weekdaysShortRegex(e)}),ue("dddd",function(e,t){return t.weekdaysRegex(e)}),fe(["dd","ddd","dddd"],function(e,t,n,s){var i=n._locale.weekdaysParse(e,s,n._strict);null!=i?t.d=i:g(n).invalidWeekday=e}),fe(["d","e","E"],function(e,t,n,s){t[s]=k(e)});var je="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_");var Ze="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_");var ze="Su_Mo_Tu_We_Th_Fr_Sa".split("_");var $e=ae;var qe=ae;var Je=ae;function Be(){function e(e,t){return t.length-e.length}var t,n,s,i,r,a=[],o=[],u=[],l=[];for(t=0;t<7;t++)n=y([2e3,1]).day(t),s=this.weekdaysMin(n,""),i=this.weekdaysShort(n,""),r=this.weekdays(n,""),a.push(s),o.push(i),u.push(r),l.push(s),l.push(i),l.push(r);for(a.sort(e),o.sort(e),u.sort(e),l.sort(e),t=0;t<7;t++)o[t]=de(o[t]),u[t]=de(u[t]),l[t]=de(l[t]);this._weekdaysRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+a.join("|")+")","i")}function Qe(){return this.hours()%12||12}function Xe(e,t){I(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function Ke(e,t){return t._meridiemParse}I("H",["HH",2],0,"hour"),I("h",["hh",2],0,Qe),I("k",["kk",2],0,function(){return this.hours()||24}),I("hmm",0,0,function(){return""+Qe.apply(this)+U(this.minutes(),2)}),I("hmmss",0,0,function(){return""+Qe.apply(this)+U(this.minutes(),2)+U(this.seconds(),2)}),I("Hmm",0,0,function(){return""+this.hours()+U(this.minutes(),2)}),I("Hmmss",0,0,function(){return""+this.hours()+U(this.minutes(),2)+U(this.seconds(),2)}),Xe("a",!0),Xe("A",!1),H("hour","h"),L("hour",13),ue("a",Ke),ue("A",Ke),ue("H",B),ue("h",B),ue("k",B),ue("HH",B,z),ue("hh",B,z),ue("kk",B,z),ue("hmm",Q),ue("hmmss",X),ue("Hmm",Q),ue("Hmmss",X),ce(["H","HH"],ge),ce(["k","kk"],function(e,t,n){var s=k(e);t[ge]=24===s?0:s}),ce(["a","A"],function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e}),ce(["h","hh"],function(e,t,n){t[ge]=k(e),g(n).bigHour=!0}),ce("hmm",function(e,t,n){var s=e.length-2;t[ge]=k(e.substr(0,s)),t[pe]=k(e.substr(s)),g(n).bigHour=!0}),ce("hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[ge]=k(e.substr(0,s)),t[pe]=k(e.substr(s,2)),t[ve]=k(e.substr(i)),g(n).bigHour=!0}),ce("Hmm",function(e,t,n){var s=e.length-2;t[ge]=k(e.substr(0,s)),t[pe]=k(e.substr(s))}),ce("Hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[ge]=k(e.substr(0,s)),t[pe]=k(e.substr(s,2)),t[ve]=k(e.substr(i))});var et,tt=Te("Hours",!0),nt={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:He,monthsShort:Re,week:{dow:0,doy:6},weekdays:je,weekdaysMin:ze,weekdaysShort:Ze,meridiemParse:/[ap]\.?m?\.?/i},st={},it={};function rt(e){return e?e.toLowerCase().replace("_","-"):e}function at(e){var t=null;if(!st[e]&&"undefined"!=typeof module&&module&&module.exports)try{t=et._abbr,require("./locale/"+e),ot(t)}catch(e){}return st[e]}function ot(e,t){var n;return e&&((n=l(t)?lt(e):ut(e,t))?et=n:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),et._abbr}function ut(e,t){if(null===t)return delete st[e],null;var n,s=nt;if(t.abbr=e,null!=st[e])T("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),s=st[e]._config;else if(null!=t.parentLocale)if(null!=st[t.parentLocale])s=st[t.parentLocale]._config;else{if(null==(n=at(t.parentLocale)))return it[t.parentLocale]||(it[t.parentLocale]=[]),it[t.parentLocale].push({name:e,config:t}),null;s=n._config}return st[e]=new P(b(s,t)),it[e]&&it[e].forEach(function(e){ut(e.name,e.config)}),ot(e),st[e]}function lt(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return et;if(!o(e)){if(t=at(e))return t;e=[e]}return function(e){for(var t,n,s,i,r=0;r<e.length;){for(t=(i=rt(e[r]).split("-")).length,n=(n=rt(e[r+1]))?n.split("-"):null;0<t;){if(s=at(i.slice(0,t).join("-")))return s;if(n&&n.length>=t&&a(i,n,!0)>=t-1)break;t--}r++}return et}(e)}function dt(e){var t,n=e._a;return n&&-2===g(e).overflow&&(t=n[_e]<0||11<n[_e]?_e:n[ye]<1||n[ye]>Pe(n[me],n[_e])?ye:n[ge]<0||24<n[ge]||24===n[ge]&&(0!==n[pe]||0!==n[ve]||0!==n[we])?ge:n[pe]<0||59<n[pe]?pe:n[ve]<0||59<n[ve]?ve:n[we]<0||999<n[we]?we:-1,g(e)._overflowDayOfYear&&(t<me||ye<t)&&(t=ye),g(e)._overflowWeeks&&-1===t&&(t=Me),g(e)._overflowWeekday&&-1===t&&(t=Se),g(e).overflow=t),e}function ht(e,t,n){return null!=e?e:null!=t?t:n}function ct(e){var t,n,s,i,r,a=[];if(!e._d){var o,u;for(o=e,u=new Date(c.now()),s=o._useUTC?[u.getUTCFullYear(),u.getUTCMonth(),u.getUTCDate()]:[u.getFullYear(),u.getMonth(),u.getDate()],e._w&&null==e._a[ye]&&null==e._a[_e]&&function(e){var t,n,s,i,r,a,o,u;if(null!=(t=e._w).GG||null!=t.W||null!=t.E)r=1,a=4,n=ht(t.GG,e._a[me],Ie(Tt(),1,4).year),s=ht(t.W,1),((i=ht(t.E,1))<1||7<i)&&(u=!0);else{r=e._locale._week.dow,a=e._locale._week.doy;var l=Ie(Tt(),r,a);n=ht(t.gg,e._a[me],l.year),s=ht(t.w,l.week),null!=t.d?((i=t.d)<0||6<i)&&(u=!0):null!=t.e?(i=t.e+r,(t.e<0||6<t.e)&&(u=!0)):i=r}s<1||s>Ae(n,r,a)?g(e)._overflowWeeks=!0:null!=u?g(e)._overflowWeekday=!0:(o=Ee(n,s,i,r,a),e._a[me]=o.year,e._dayOfYear=o.dayOfYear)}(e),null!=e._dayOfYear&&(r=ht(e._a[me],s[me]),(e._dayOfYear>De(r)||0===e._dayOfYear)&&(g(e)._overflowDayOfYear=!0),n=Ge(r,0,e._dayOfYear),e._a[_e]=n.getUTCMonth(),e._a[ye]=n.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=a[t]=s[t];for(;t<7;t++)e._a[t]=a[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[ge]&&0===e._a[pe]&&0===e._a[ve]&&0===e._a[we]&&(e._nextDay=!0,e._a[ge]=0),e._d=(e._useUTC?Ge:function(e,t,n,s,i,r,a){var o=new Date(e,t,n,s,i,r,a);return e<100&&0<=e&&isFinite(o.getFullYear())&&o.setFullYear(e),o}).apply(null,a),i=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[ge]=24),e._w&&void 0!==e._w.d&&e._w.d!==i&&(g(e).weekdayMismatch=!0)}}var ft=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,mt=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,_t=/Z|[+-]\d\d(?::?\d\d)?/,yt=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],gt=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],pt=/^\/?Date\((\-?\d+)/i;function vt(e){var t,n,s,i,r,a,o=e._i,u=ft.exec(o)||mt.exec(o);if(u){for(g(e).iso=!0,t=0,n=yt.length;t<n;t++)if(yt[t][1].exec(u[1])){i=yt[t][0],s=!1!==yt[t][2];break}if(null==i)return void(e._isValid=!1);if(u[3]){for(t=0,n=gt.length;t<n;t++)if(gt[t][1].exec(u[3])){r=(u[2]||" ")+gt[t][0];break}if(null==r)return void(e._isValid=!1)}if(!s&&null!=r)return void(e._isValid=!1);if(u[4]){if(!_t.exec(u[4]))return void(e._isValid=!1);a="Z"}e._f=i+(r||"")+(a||""),kt(e)}else e._isValid=!1}var wt=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/;function Mt(e,t,n,s,i,r){var a=[function(e){var t=parseInt(e,10);{if(t<=49)return 2e3+t;if(t<=999)return 1900+t}return t}(e),Re.indexOf(t),parseInt(n,10),parseInt(s,10),parseInt(i,10)];return r&&a.push(parseInt(r,10)),a}var St={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Dt(e){var t,n,s,i=wt.exec(e._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));if(i){var r=Mt(i[4],i[3],i[2],i[5],i[6],i[7]);if(t=i[1],n=r,s=e,t&&Ze.indexOf(t)!==new Date(n[0],n[1],n[2]).getDay()&&(g(s).weekdayMismatch=!0,!(s._isValid=!1)))return;e._a=r,e._tzm=function(e,t,n){if(e)return St[e];if(t)return 0;var s=parseInt(n,10),i=s%100;return(s-i)/100*60+i}(i[8],i[9],i[10]),e._d=Ge.apply(null,e._a),e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),g(e).rfc2822=!0}else e._isValid=!1}function kt(e){if(e._f!==c.ISO_8601)if(e._f!==c.RFC_2822){e._a=[],g(e).empty=!0;var t,n,s,i,r,a,o,u,l=""+e._i,d=l.length,h=0;for(s=j(e._f,e._locale).match(N)||[],t=0;t<s.length;t++)i=s[t],(n=(l.match(le(i,e))||[])[0])&&(0<(r=l.substr(0,l.indexOf(n))).length&&g(e).unusedInput.push(r),l=l.slice(l.indexOf(n)+n.length),h+=n.length),E[i]?(n?g(e).empty=!1:g(e).unusedTokens.push(i),a=i,u=e,null!=(o=n)&&m(he,a)&&he[a](o,u._a,u,a)):e._strict&&!n&&g(e).unusedTokens.push(i);g(e).charsLeftOver=d-h,0<l.length&&g(e).unusedInput.push(l),e._a[ge]<=12&&!0===g(e).bigHour&&0<e._a[ge]&&(g(e).bigHour=void 0),g(e).parsedDateParts=e._a.slice(0),g(e).meridiem=e._meridiem,e._a[ge]=function(e,t,n){var s;if(null==n)return t;return null!=e.meridiemHour?e.meridiemHour(t,n):(null!=e.isPM&&((s=e.isPM(n))&&t<12&&(t+=12),s||12!==t||(t=0)),t)}(e._locale,e._a[ge],e._meridiem),ct(e),dt(e)}else Dt(e);else vt(e)}function Yt(e){var t,n,s,i,r=e._i,a=e._f;return e._locale=e._locale||lt(e._l),null===r||void 0===a&&""===r?v({nullInput:!0}):("string"==typeof r&&(e._i=r=e._locale.preparse(r)),S(r)?new M(dt(r)):(h(r)?e._d=r:o(a)?function(e){var t,n,s,i,r;if(0===e._f.length)return g(e).invalidFormat=!0,e._d=new Date(NaN);for(i=0;i<e._f.length;i++)r=0,t=w({},e),null!=e._useUTC&&(t._useUTC=e._useUTC),t._f=e._f[i],kt(t),p(t)&&(r+=g(t).charsLeftOver,r+=10*g(t).unusedTokens.length,g(t).score=r,(null==s||r<s)&&(s=r,n=t));_(e,n||t)}(e):a?kt(e):l(n=(t=e)._i)?t._d=new Date(c.now()):h(n)?t._d=new Date(n.valueOf()):"string"==typeof n?(s=t,null===(i=pt.exec(s._i))?(vt(s),!1===s._isValid&&(delete s._isValid,Dt(s),!1===s._isValid&&(delete s._isValid,c.createFromInputFallback(s)))):s._d=new Date(+i[1])):o(n)?(t._a=f(n.slice(0),function(e){return parseInt(e,10)}),ct(t)):u(n)?function(e){if(!e._d){var t=C(e._i);e._a=f([t.year,t.month,t.day||t.date,t.hour,t.minute,t.second,t.millisecond],function(e){return e&&parseInt(e,10)}),ct(e)}}(t):d(n)?t._d=new Date(n):c.createFromInputFallback(t),p(e)||(e._d=null),e))}function Ot(e,t,n,s,i){var r,a={};return!0!==n&&!1!==n||(s=n,n=void 0),(u(e)&&function(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;var t;for(t in e)if(e.hasOwnProperty(t))return!1;return!0}(e)||o(e)&&0===e.length)&&(e=void 0),a._isAMomentObject=!0,a._useUTC=a._isUTC=i,a._l=n,a._i=e,a._f=t,a._strict=s,(r=new M(dt(Yt(a))))._nextDay&&(r.add(1,"d"),r._nextDay=void 0),r}function Tt(e,t,n,s){return Ot(e,t,n,s,!1)}c.createFromInputFallback=n("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(e){e._d=new Date(e._i+(e._useUTC?" UTC":""))}),c.ISO_8601=function(){},c.RFC_2822=function(){};var xt=n("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=Tt.apply(null,arguments);return this.isValid()&&e.isValid()?e<this?this:e:v()}),bt=n("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=Tt.apply(null,arguments);return this.isValid()&&e.isValid()?this<e?this:e:v()});function Pt(e,t){var n,s;if(1===t.length&&o(t[0])&&(t=t[0]),!t.length)return Tt();for(n=t[0],s=1;s<t.length;++s)t[s].isValid()&&!t[s][e](n)||(n=t[s]);return n}var Wt=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Ht(e){var t=C(e),n=t.year||0,s=t.quarter||0,i=t.month||0,r=t.week||t.isoWeek||0,a=t.day||0,o=t.hour||0,u=t.minute||0,l=t.second||0,d=t.millisecond||0;this._isValid=function(e){for(var t in e)if(-1===Ye.call(Wt,t)||null!=e[t]&&isNaN(e[t]))return!1;for(var n=!1,s=0;s<Wt.length;++s)if(e[Wt[s]]){if(n)return!1;parseFloat(e[Wt[s]])!==k(e[Wt[s]])&&(n=!0)}return!0}(t),this._milliseconds=+d+1e3*l+6e4*u+1e3*o*60*60,this._days=+a+7*r,this._months=+i+3*s+12*n,this._data={},this._locale=lt(),this._bubble()}function Rt(e){return e instanceof Ht}function Ct(e){return e<0?-1*Math.round(-1*e):Math.round(e)}function Ft(e,n){I(e,0,0,function(){var e=this.utcOffset(),t="+";return e<0&&(e=-e,t="-"),t+U(~~(e/60),2)+n+U(~~e%60,2)})}Ft("Z",":"),Ft("ZZ",""),ue("Z",re),ue("ZZ",re),ce(["Z","ZZ"],function(e,t,n){n._useUTC=!0,n._tzm=Ut(re,e)});var Lt=/([\+\-]|\d\d)/gi;function Ut(e,t){var n=(t||"").match(e);if(null===n)return null;var s=((n[n.length-1]||[])+"").match(Lt)||["-",0,0],i=60*s[1]+k(s[2]);return 0===i?0:"+"===s[0]?i:-i}function Nt(e,t){var n,s;return t._isUTC?(n=t.clone(),s=(S(e)||h(e)?e.valueOf():Tt(e).valueOf())-n.valueOf(),n._d.setTime(n._d.valueOf()+s),c.updateOffset(n,!1),n):Tt(e).local()}function Gt(e){return 15*-Math.round(e._d.getTimezoneOffset()/15)}function Vt(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}c.updateOffset=function(){};var Et=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,It=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function At(e,t){var n,s,i,r=e,a=null;return Rt(e)?r={ms:e._milliseconds,d:e._days,M:e._months}:d(e)?(r={},t?r[t]=e:r.milliseconds=e):(a=Et.exec(e))?(n="-"===a[1]?-1:1,r={y:0,d:k(a[ye])*n,h:k(a[ge])*n,m:k(a[pe])*n,s:k(a[ve])*n,ms:k(Ct(1e3*a[we]))*n}):(a=It.exec(e))?(n="-"===a[1]?-1:1,r={y:jt(a[2],n),M:jt(a[3],n),w:jt(a[4],n),d:jt(a[5],n),h:jt(a[6],n),m:jt(a[7],n),s:jt(a[8],n)}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(i=function(e,t){var n;if(!e.isValid()||!t.isValid())return{milliseconds:0,months:0};t=Nt(t,e),e.isBefore(t)?n=Zt(e,t):((n=Zt(t,e)).milliseconds=-n.milliseconds,n.months=-n.months);return n}(Tt(r.from),Tt(r.to)),(r={}).ms=i.milliseconds,r.M=i.months),s=new Ht(r),Rt(e)&&m(e,"_locale")&&(s._locale=e._locale),s}function jt(e,t){var n=e&&parseFloat(e.replace(",","."));return(isNaN(n)?0:n)*t}function Zt(e,t){var n={milliseconds:0,months:0};return n.months=t.month()-e.month()+12*(t.year()-e.year()),e.clone().add(n.months,"M").isAfter(t)&&--n.months,n.milliseconds=+t-+e.clone().add(n.months,"M"),n}function zt(s,i){return function(e,t){var n;return null===t||isNaN(+t)||(T(i,"moment()."+i+"(period, number) is deprecated. Please use moment()."+i+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),n=e,e=t,t=n),$t(this,At(e="string"==typeof e?+e:e,t),s),this}}function $t(e,t,n,s){var i=t._milliseconds,r=Ct(t._days),a=Ct(t._months);e.isValid()&&(s=null==s||s,a&&Ce(e,xe(e,"Month")+a*n),r&&be(e,"Date",xe(e,"Date")+r*n),i&&e._d.setTime(e._d.valueOf()+i*n),s&&c.updateOffset(e,r||a))}At.fn=Ht.prototype,At.invalid=function(){return At(NaN)};var qt=zt(1,"add"),Jt=zt(-1,"subtract");function Bt(e,t){var n=12*(t.year()-e.year())+(t.month()-e.month()),s=e.clone().add(n,"months");return-(n+(t-s<0?(t-s)/(s-e.clone().add(n-1,"months")):(t-s)/(e.clone().add(n+1,"months")-s)))||0}function Qt(e){var t;return void 0===e?this._locale._abbr:(null!=(t=lt(e))&&(this._locale=t),this)}c.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",c.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var Xt=n("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){return void 0===e?this.localeData():this.locale(e)});function Kt(){return this._locale}function en(e,t){I(0,[e,e.length],0,t)}function tn(e,t,n,s,i){var r;return null==e?Ie(this,s,i).year:((r=Ae(e,s,i))<t&&(t=r),function(e,t,n,s,i){var r=Ee(e,t,n,s,i),a=Ge(r.year,0,r.dayOfYear);return this.year(a.getUTCFullYear()),this.month(a.getUTCMonth()),this.date(a.getUTCDate()),this}.call(this,e,t,n,s,i))}I(0,["gg",2],0,function(){return this.weekYear()%100}),I(0,["GG",2],0,function(){return this.isoWeekYear()%100}),en("gggg","weekYear"),en("ggggg","weekYear"),en("GGGG","isoWeekYear"),en("GGGGG","isoWeekYear"),H("weekYear","gg"),H("isoWeekYear","GG"),L("weekYear",1),L("isoWeekYear",1),ue("G",se),ue("g",se),ue("GG",B,z),ue("gg",B,z),ue("GGGG",ee,q),ue("gggg",ee,q),ue("GGGGG",te,J),ue("ggggg",te,J),fe(["gggg","ggggg","GGGG","GGGGG"],function(e,t,n,s){t[s.substr(0,2)]=k(e)}),fe(["gg","GG"],function(e,t,n,s){t[s]=c.parseTwoDigitYear(e)}),I("Q",0,"Qo","quarter"),H("quarter","Q"),L("quarter",7),ue("Q",Z),ce("Q",function(e,t){t[_e]=3*(k(e)-1)}),I("D",["DD",2],"Do","date"),H("date","D"),L("date",9),ue("D",B),ue("DD",B,z),ue("Do",function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient}),ce(["D","DD"],ye),ce("Do",function(e,t){t[ye]=k(e.match(B)[0])});var nn=Te("Date",!0);I("DDD",["DDDD",3],"DDDo","dayOfYear"),H("dayOfYear","DDD"),L("dayOfYear",4),ue("DDD",K),ue("DDDD",$),ce(["DDD","DDDD"],function(e,t,n){n._dayOfYear=k(e)}),I("m",["mm",2],0,"minute"),H("minute","m"),L("minute",14),ue("m",B),ue("mm",B,z),ce(["m","mm"],pe);var sn=Te("Minutes",!1);I("s",["ss",2],0,"second"),H("second","s"),L("second",15),ue("s",B),ue("ss",B,z),ce(["s","ss"],ve);var rn,an=Te("Seconds",!1);for(I("S",0,0,function(){return~~(this.millisecond()/100)}),I(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),I(0,["SSS",3],0,"millisecond"),I(0,["SSSS",4],0,function(){return 10*this.millisecond()}),I(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),I(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),I(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),I(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),I(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),H("millisecond","ms"),L("millisecond",16),ue("S",K,Z),ue("SS",K,z),ue("SSS",K,$),rn="SSSS";rn.length<=9;rn+="S")ue(rn,ne);function on(e,t){t[we]=k(1e3*("0."+e))}for(rn="S";rn.length<=9;rn+="S")ce(rn,on);var un=Te("Milliseconds",!1);I("z",0,0,"zoneAbbr"),I("zz",0,0,"zoneName");var ln=M.prototype;function dn(e){return e}ln.add=qt,ln.calendar=function(e,t){var n=e||Tt(),s=Nt(n,this).startOf("day"),i=c.calendarFormat(this,s)||"sameElse",r=t&&(x(t[i])?t[i].call(this,n):t[i]);return this.format(r||this.localeData().calendar(i,this,Tt(n)))},ln.clone=function(){return new M(this)},ln.diff=function(e,t,n){var s,i,r;if(!this.isValid())return NaN;if(!(s=Nt(e,this)).isValid())return NaN;switch(i=6e4*(s.utcOffset()-this.utcOffset()),t=R(t)){case"year":r=Bt(this,s)/12;break;case"month":r=Bt(this,s);break;case"quarter":r=Bt(this,s)/3;break;case"second":r=(this-s)/1e3;break;case"minute":r=(this-s)/6e4;break;case"hour":r=(this-s)/36e5;break;case"day":r=(this-s-i)/864e5;break;case"week":r=(this-s-i)/6048e5;break;default:r=this-s}return n?r:D(r)},ln.endOf=function(e){return void 0===(e=R(e))||"millisecond"===e?this:("date"===e&&(e="day"),this.startOf(e).add(1,"isoWeek"===e?"week":e).subtract(1,"ms"))},ln.format=function(e){e||(e=this.isUtc()?c.defaultFormatUtc:c.defaultFormat);var t=A(this,e);return this.localeData().postformat(t)},ln.from=function(e,t){return this.isValid()&&(S(e)&&e.isValid()||Tt(e).isValid())?At({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},ln.fromNow=function(e){return this.from(Tt(),e)},ln.to=function(e,t){return this.isValid()&&(S(e)&&e.isValid()||Tt(e).isValid())?At({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},ln.toNow=function(e){return this.to(Tt(),e)},ln.get=function(e){return x(this[e=R(e)])?this[e]():this},ln.invalidAt=function(){return g(this).overflow},ln.isAfter=function(e,t){var n=S(e)?e:Tt(e);return!(!this.isValid()||!n.isValid())&&("millisecond"===(t=R(t)||"millisecond")?this.valueOf()>n.valueOf():n.valueOf()<this.clone().startOf(t).valueOf())},ln.isBefore=function(e,t){var n=S(e)?e:Tt(e);return!(!this.isValid()||!n.isValid())&&("millisecond"===(t=R(t)||"millisecond")?this.valueOf()<n.valueOf():this.clone().endOf(t).valueOf()<n.valueOf())},ln.isBetween=function(e,t,n,s){var i=S(e)?e:Tt(e),r=S(t)?t:Tt(t);return!!(this.isValid()&&i.isValid()&&r.isValid())&&("("===(s=s||"()")[0]?this.isAfter(i,n):!this.isBefore(i,n))&&(")"===s[1]?this.isBefore(r,n):!this.isAfter(r,n))},ln.isSame=function(e,t){var n,s=S(e)?e:Tt(e);return!(!this.isValid()||!s.isValid())&&("millisecond"===(t=R(t)||"millisecond")?this.valueOf()===s.valueOf():(n=s.valueOf(),this.clone().startOf(t).valueOf()<=n&&n<=this.clone().endOf(t).valueOf()))},ln.isSameOrAfter=function(e,t){return this.isSame(e,t)||this.isAfter(e,t)},ln.isSameOrBefore=function(e,t){return this.isSame(e,t)||this.isBefore(e,t)},ln.isValid=function(){return p(this)},ln.lang=Xt,ln.locale=Qt,ln.localeData=Kt,ln.max=bt,ln.min=xt,ln.parsingFlags=function(){return _({},g(this))},ln.set=function(e,t){if("object"==typeof e)for(var n=function(e){var t=[];for(var n in e)t.push({unit:n,priority:F[n]});return t.sort(function(e,t){return e.priority-t.priority}),t}(e=C(e)),s=0;s<n.length;s++)this[n[s].unit](e[n[s].unit]);else if(x(this[e=R(e)]))return this[e](t);return this},ln.startOf=function(e){switch(e=R(e)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":case"date":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===e&&this.weekday(0),"isoWeek"===e&&this.isoWeekday(1),"quarter"===e&&this.month(3*Math.floor(this.month()/3)),this},ln.subtract=Jt,ln.toArray=function(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]},ln.toObject=function(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}},ln.toDate=function(){return new Date(this.valueOf())},ln.toISOString=function(e){if(!this.isValid())return null;var t=!0!==e,n=t?this.clone().utc():this;return n.year()<0||9999<n.year()?A(n,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):x(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",A(n,"Z")):A(n,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},ln.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e="moment",t="";this.isLocal()||(e=0===this.utcOffset()?"moment.utc":"moment.parseZone",t="Z");var n="["+e+'("]',s=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",i=t+'[")]';return this.format(n+s+"-MM-DD[T]HH:mm:ss.SSS"+i)},ln.toJSON=function(){return this.isValid()?this.toISOString():null},ln.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},ln.unix=function(){return Math.floor(this.valueOf()/1e3)},ln.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},ln.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},ln.year=Oe,ln.isLeapYear=function(){return ke(this.year())},ln.weekYear=function(e){return tn.call(this,e,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},ln.isoWeekYear=function(e){return tn.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)},ln.quarter=ln.quarters=function(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)},ln.month=Fe,ln.daysInMonth=function(){return Pe(this.year(),this.month())},ln.week=ln.weeks=function(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),"d")},ln.isoWeek=ln.isoWeeks=function(e){var t=Ie(this,1,4).week;return null==e?t:this.add(7*(e-t),"d")},ln.weeksInYear=function(){var e=this.localeData()._week;return Ae(this.year(),e.dow,e.doy)},ln.isoWeeksInYear=function(){return Ae(this.year(),1,4)},ln.date=nn,ln.day=ln.days=function(e){if(!this.isValid())return null!=e?this:NaN;var t,n,s=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=e?(t=e,n=this.localeData(),e="string"!=typeof t?t:isNaN(t)?"number"==typeof(t=n.weekdaysParse(t))?t:null:parseInt(t,10),this.add(e-s,"d")):s},ln.weekday=function(e){if(!this.isValid())return null!=e?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return null==e?t:this.add(e-t,"d")},ln.isoWeekday=function(e){if(!this.isValid())return null!=e?this:NaN;if(null==e)return this.day()||7;var t,n,s=(t=e,n=this.localeData(),"string"==typeof t?n.weekdaysParse(t)%7||7:isNaN(t)?null:t);return this.day(this.day()%7?s:s-7)},ln.dayOfYear=function(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"d")},ln.hour=ln.hours=tt,ln.minute=ln.minutes=sn,ln.second=ln.seconds=an,ln.millisecond=ln.milliseconds=un,ln.utcOffset=function(e,t,n){var s,i=this._offset||0;if(!this.isValid())return null!=e?this:NaN;if(null==e)return this._isUTC?i:Gt(this);if("string"==typeof e){if(null===(e=Ut(re,e)))return this}else Math.abs(e)<16&&!n&&(e*=60);return!this._isUTC&&t&&(s=Gt(this)),this._offset=e,this._isUTC=!0,null!=s&&this.add(s,"m"),i!==e&&(!t||this._changeInProgress?$t(this,At(e-i,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,c.updateOffset(this,!0),this._changeInProgress=null)),this},ln.utc=function(e){return this.utcOffset(0,e)},ln.local=function(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e&&this.subtract(Gt(this),"m")),this},ln.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var e=Ut(ie,this._i);null!=e?this.utcOffset(e):this.utcOffset(0,!0)}return this},ln.hasAlignedHourOffset=function(e){return!!this.isValid()&&(e=e?Tt(e).utcOffset():0,(this.utcOffset()-e)%60==0)},ln.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},ln.isLocal=function(){return!!this.isValid()&&!this._isUTC},ln.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},ln.isUtc=Vt,ln.isUTC=Vt,ln.zoneAbbr=function(){return this._isUTC?"UTC":""},ln.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},ln.dates=n("dates accessor is deprecated. Use date instead.",nn),ln.months=n("months accessor is deprecated. Use month instead",Fe),ln.years=n("years accessor is deprecated. Use year instead",Oe),ln.zone=n("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(e,t){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()}),ln.isDSTShifted=n("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!l(this._isDSTShifted))return this._isDSTShifted;var e={};if(w(e,this),(e=Yt(e))._a){var t=e._isUTC?y(e._a):Tt(e._a);this._isDSTShifted=this.isValid()&&0<a(e._a,t.toArray())}else this._isDSTShifted=!1;return this._isDSTShifted});var hn=P.prototype;function cn(e,t,n,s){var i=lt(),r=y().set(s,t);return i[n](r,e)}function fn(e,t,n){if(d(e)&&(t=e,e=void 0),e=e||"",null!=t)return cn(e,t,n,"month");var s,i=[];for(s=0;s<12;s++)i[s]=cn(e,s,n,"month");return i}function mn(e,t,n,s){t=("boolean"==typeof e?d(t)&&(n=t,t=void 0):(t=e,e=!1,d(n=t)&&(n=t,t=void 0)),t||"");var i,r=lt(),a=e?r._week.dow:0;if(null!=n)return cn(t,(n+a)%7,s,"day");var o=[];for(i=0;i<7;i++)o[i]=cn(t,(i+a)%7,s,"day");return o}hn.calendar=function(e,t,n){var s=this._calendar[e]||this._calendar.sameElse;return x(s)?s.call(t,n):s},hn.longDateFormat=function(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];return t||!n?t:(this._longDateFormat[e]=n.replace(/MMMM|MM|DD|dddd/g,function(e){return e.slice(1)}),this._longDateFormat[e])},hn.invalidDate=function(){return this._invalidDate},hn.ordinal=function(e){return this._ordinal.replace("%d",e)},hn.preparse=dn,hn.postformat=dn,hn.relativeTime=function(e,t,n,s){var i=this._relativeTime[n];return x(i)?i(e,t,n,s):i.replace(/%d/i,e)},hn.pastFuture=function(e,t){var n=this._relativeTime[0<e?"future":"past"];return x(n)?n(t):n.replace(/%s/i,t)},hn.set=function(e){var t,n;for(n in e)x(t=e[n])?this[n]=t:this["_"+n]=t;this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},hn.months=function(e,t){return e?o(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||We).test(t)?"format":"standalone"][e.month()]:o(this._months)?this._months:this._months.standalone},hn.monthsShort=function(e,t){return e?o(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[We.test(t)?"format":"standalone"][e.month()]:o(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},hn.monthsParse=function(e,t,n){var s,i,r;if(this._monthsParseExact)return function(e,t,n){var s,i,r,a=e.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],s=0;s<12;++s)r=y([2e3,s]),this._shortMonthsParse[s]=this.monthsShort(r,"").toLocaleLowerCase(),this._longMonthsParse[s]=this.months(r,"").toLocaleLowerCase();return n?"MMM"===t?-1!==(i=Ye.call(this._shortMonthsParse,a))?i:null:-1!==(i=Ye.call(this._longMonthsParse,a))?i:null:"MMM"===t?-1!==(i=Ye.call(this._shortMonthsParse,a))?i:-1!==(i=Ye.call(this._longMonthsParse,a))?i:null:-1!==(i=Ye.call(this._longMonthsParse,a))?i:-1!==(i=Ye.call(this._shortMonthsParse,a))?i:null}.call(this,e,t,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;s<12;s++){if(i=y([2e3,s]),n&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(i,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(i,"").replace(".","")+"$","i")),n||this._monthsParse[s]||(r="^"+this.months(i,"")+"|^"+this.monthsShort(i,""),this._monthsParse[s]=new RegExp(r.replace(".",""),"i")),n&&"MMMM"===t&&this._longMonthsParse[s].test(e))return s;if(n&&"MMM"===t&&this._shortMonthsParse[s].test(e))return s;if(!n&&this._monthsParse[s].test(e))return s}},hn.monthsRegex=function(e){return this._monthsParseExact?(m(this,"_monthsRegex")||Ne.call(this),e?this._monthsStrictRegex:this._monthsRegex):(m(this,"_monthsRegex")||(this._monthsRegex=Ue),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},hn.monthsShortRegex=function(e){return this._monthsParseExact?(m(this,"_monthsRegex")||Ne.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(m(this,"_monthsShortRegex")||(this._monthsShortRegex=Le),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},hn.week=function(e){return Ie(e,this._week.dow,this._week.doy).week},hn.firstDayOfYear=function(){return this._week.doy},hn.firstDayOfWeek=function(){return this._week.dow},hn.weekdays=function(e,t){return e?o(this._weekdays)?this._weekdays[e.day()]:this._weekdays[this._weekdays.isFormat.test(t)?"format":"standalone"][e.day()]:o(this._weekdays)?this._weekdays:this._weekdays.standalone},hn.weekdaysMin=function(e){return e?this._weekdaysMin[e.day()]:this._weekdaysMin},hn.weekdaysShort=function(e){return e?this._weekdaysShort[e.day()]:this._weekdaysShort},hn.weekdaysParse=function(e,t,n){var s,i,r;if(this._weekdaysParseExact)return function(e,t,n){var s,i,r,a=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],s=0;s<7;++s)r=y([2e3,1]).day(s),this._minWeekdaysParse[s]=this.weekdaysMin(r,"").toLocaleLowerCase(),this._shortWeekdaysParse[s]=this.weekdaysShort(r,"").toLocaleLowerCase(),this._weekdaysParse[s]=this.weekdays(r,"").toLocaleLowerCase();return n?"dddd"===t?-1!==(i=Ye.call(this._weekdaysParse,a))?i:null:"ddd"===t?-1!==(i=Ye.call(this._shortWeekdaysParse,a))?i:null:-1!==(i=Ye.call(this._minWeekdaysParse,a))?i:null:"dddd"===t?-1!==(i=Ye.call(this._weekdaysParse,a))?i:-1!==(i=Ye.call(this._shortWeekdaysParse,a))?i:-1!==(i=Ye.call(this._minWeekdaysParse,a))?i:null:"ddd"===t?-1!==(i=Ye.call(this._shortWeekdaysParse,a))?i:-1!==(i=Ye.call(this._weekdaysParse,a))?i:-1!==(i=Ye.call(this._minWeekdaysParse,a))?i:null:-1!==(i=Ye.call(this._minWeekdaysParse,a))?i:-1!==(i=Ye.call(this._weekdaysParse,a))?i:-1!==(i=Ye.call(this._shortWeekdaysParse,a))?i:null}.call(this,e,t,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),s=0;s<7;s++){if(i=y([2e3,1]).day(s),n&&!this._fullWeekdaysParse[s]&&(this._fullWeekdaysParse[s]=new RegExp("^"+this.weekdays(i,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[s]=new RegExp("^"+this.weekdaysShort(i,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[s]=new RegExp("^"+this.weekdaysMin(i,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[s]||(r="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[s]=new RegExp(r.replace(".",""),"i")),n&&"dddd"===t&&this._fullWeekdaysParse[s].test(e))return s;if(n&&"ddd"===t&&this._shortWeekdaysParse[s].test(e))return s;if(n&&"dd"===t&&this._minWeekdaysParse[s].test(e))return s;if(!n&&this._weekdaysParse[s].test(e))return s}},hn.weekdaysRegex=function(e){return this._weekdaysParseExact?(m(this,"_weekdaysRegex")||Be.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(m(this,"_weekdaysRegex")||(this._weekdaysRegex=$e),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},hn.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(m(this,"_weekdaysRegex")||Be.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(m(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=qe),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},hn.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(m(this,"_weekdaysRegex")||Be.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(m(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Je),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},hn.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},hn.meridiem=function(e,t,n){return 11<e?n?"pm":"PM":n?"am":"AM"},ot("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1===k(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}}),c.lang=n("moment.lang is deprecated. Use moment.locale instead.",ot),c.langData=n("moment.langData is deprecated. Use moment.localeData instead.",lt);var _n=Math.abs;function yn(e,t,n,s){var i=At(t,n);return e._milliseconds+=s*i._milliseconds,e._days+=s*i._days,e._months+=s*i._months,e._bubble()}function gn(e){return e<0?Math.floor(e):Math.ceil(e)}function pn(e){return 4800*e/146097}function vn(e){return 146097*e/4800}function wn(e){return function(){return this.as(e)}}var Mn=wn("ms"),Sn=wn("s"),Dn=wn("m"),kn=wn("h"),Yn=wn("d"),On=wn("w"),Tn=wn("M"),xn=wn("y");function bn(e){return function(){return this.isValid()?this._data[e]:NaN}}var Pn=bn("milliseconds"),Wn=bn("seconds"),Hn=bn("minutes"),Rn=bn("hours"),Cn=bn("days"),Fn=bn("months"),Ln=bn("years");var Un=Math.round,Nn={ss:44,s:45,m:45,h:22,d:26,M:11};var Gn=Math.abs;function Vn(e){return(0<e)-(e<0)||+e}function En(){if(!this.isValid())return this.localeData().invalidDate();var e,t,n=Gn(this._milliseconds)/1e3,s=Gn(this._days),i=Gn(this._months);t=D((e=D(n/60))/60),n%=60,e%=60;var r=D(i/12),a=i%=12,o=s,u=t,l=e,d=n?n.toFixed(3).replace(/\.?0+$/,""):"",h=this.asSeconds();if(!h)return"P0D";var c=h<0?"-":"",f=Vn(this._months)!==Vn(h)?"-":"",m=Vn(this._days)!==Vn(h)?"-":"",_=Vn(this._milliseconds)!==Vn(h)?"-":"";return c+"P"+(r?f+r+"Y":"")+(a?f+a+"M":"")+(o?m+o+"D":"")+(u||l||d?"T":"")+(u?_+u+"H":"")+(l?_+l+"M":"")+(d?_+d+"S":"")}var In=Ht.prototype;return In.isValid=function(){return this._isValid},In.abs=function(){var e=this._data;return this._milliseconds=_n(this._milliseconds),this._days=_n(this._days),this._months=_n(this._months),e.milliseconds=_n(e.milliseconds),e.seconds=_n(e.seconds),e.minutes=_n(e.minutes),e.hours=_n(e.hours),e.months=_n(e.months),e.years=_n(e.years),this},In.add=function(e,t){return yn(this,e,t,1)},In.subtract=function(e,t){return yn(this,e,t,-1)},In.as=function(e){if(!this.isValid())return NaN;var t,n,s=this._milliseconds;if("month"===(e=R(e))||"year"===e)return t=this._days+s/864e5,n=this._months+pn(t),"month"===e?n:n/12;switch(t=this._days+Math.round(vn(this._months)),e){case"week":return t/7+s/6048e5;case"day":return t+s/864e5;case"hour":return 24*t+s/36e5;case"minute":return 1440*t+s/6e4;case"second":return 86400*t+s/1e3;case"millisecond":return Math.floor(864e5*t)+s;default:throw new Error("Unknown unit "+e)}},In.asMilliseconds=Mn,In.asSeconds=Sn,In.asMinutes=Dn,In.asHours=kn,In.asDays=Yn,In.asWeeks=On,In.asMonths=Tn,In.asYears=xn,In.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*k(this._months/12):NaN},In._bubble=function(){var e,t,n,s,i,r=this._milliseconds,a=this._days,o=this._months,u=this._data;return 0<=r&&0<=a&&0<=o||r<=0&&a<=0&&o<=0||(r+=864e5*gn(vn(o)+a),o=a=0),u.milliseconds=r%1e3,e=D(r/1e3),u.seconds=e%60,t=D(e/60),u.minutes=t%60,n=D(t/60),u.hours=n%24,o+=i=D(pn(a+=D(n/24))),a-=gn(vn(i)),s=D(o/12),o%=12,u.days=a,u.months=o,u.years=s,this},In.clone=function(){return At(this)},In.get=function(e){return e=R(e),this.isValid()?this[e+"s"]():NaN},In.milliseconds=Pn,In.seconds=Wn,In.minutes=Hn,In.hours=Rn,In.days=Cn,In.weeks=function(){return D(this.days()/7)},In.months=Fn,In.years=Ln,In.humanize=function(e){if(!this.isValid())return this.localeData().invalidDate();var t,n,s,i,r,a,o,u,l,d,h,c=this.localeData(),f=(n=!e,s=c,i=At(t=this).abs(),r=Un(i.as("s")),a=Un(i.as("m")),o=Un(i.as("h")),u=Un(i.as("d")),l=Un(i.as("M")),d=Un(i.as("y")),(h=r<=Nn.ss&&["s",r]||r<Nn.s&&["ss",r]||a<=1&&["m"]||a<Nn.m&&["mm",a]||o<=1&&["h"]||o<Nn.h&&["hh",o]||u<=1&&["d"]||u<Nn.d&&["dd",u]||l<=1&&["M"]||l<Nn.M&&["MM",l]||d<=1&&["y"]||["yy",d])[2]=n,h[3]=0<+t,h[4]=s,function(e,t,n,s,i){return i.relativeTime(t||1,!!n,e,s)}.apply(null,h));return e&&(f=c.pastFuture(+this,f)),c.postformat(f)},In.toISOString=En,In.toString=En,In.toJSON=En,In.locale=Qt,In.localeData=Kt,In.toIsoString=n("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",En),In.lang=Xt,I("X",0,0,"unix"),I("x",0,0,"valueOf"),ue("x",se),ue("X",/[+-]?\d+(\.\d{1,3})?/),ce("X",function(e,t,n){n._d=new Date(1e3*parseFloat(e,10))}),ce("x",function(e,t,n){n._d=new Date(k(e))}),c.version="2.23.0",e=Tt,c.fn=ln,c.min=function(){return Pt("isBefore",[].slice.call(arguments,0))},c.max=function(){return Pt("isAfter",[].slice.call(arguments,0))},c.now=function(){return Date.now?Date.now():+new Date},c.utc=y,c.unix=function(e){return Tt(1e3*e)},c.months=function(e,t){return fn(e,t,"months")},c.isDate=h,c.locale=ot,c.invalid=v,c.duration=At,c.isMoment=S,c.weekdays=function(e,t,n){return mn(e,t,n,"weekdays")},c.parseZone=function(){return Tt.apply(null,arguments).parseZone()},c.localeData=lt,c.isDuration=Rt,c.monthsShort=function(e,t){return fn(e,t,"monthsShort")},c.weekdaysMin=function(e,t,n){return mn(e,t,n,"weekdaysMin")},c.defineLocale=ut,c.updateLocale=function(e,t){if(null!=t){var n,s,i=nt;null!=(s=at(e))&&(i=s._config),(n=new P(t=b(i,t))).parentLocale=st[e],st[e]=n,ot(e)}else null!=st[e]&&(null!=st[e].parentLocale?st[e]=st[e].parentLocale:null!=st[e]&&delete st[e]);return st[e]},c.locales=function(){return s(st)},c.weekdaysShort=function(e,t,n){return mn(e,t,n,"weekdaysShort")},c.normalizeUnits=R,c.relativeTimeRounding=function(e){return void 0===e?Un:"function"==typeof e&&(Un=e,!0)},c.relativeTimeThreshold=function(e,t){return void 0!==Nn[e]&&(void 0===t?Nn[e]:(Nn[e]=t,"s"===e&&(Nn.ss=t-1),!0))},c.calendarFormat=function(e,t){var n=e.diff(t,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"},c.prototype=ln,c.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},c});
\ No newline at end of file
diff --git a/app/static/vendors/slimselect/slimselect.css b/app/static/vendors/slimselect/slimselect.css
deleted file mode 100644 (file)
index 4808849..0000000
+++ /dev/null
@@ -1,393 +0,0 @@
-.ss-main {
-  position   : relative;
-  display    : inline-block;
-  user-select: none;
-  color      : #666;
-  width      : 100%
-}
-
-.ss-main .ss-single-selected {
-  display         : flex;
-  cursor          : pointer;
-  width           : 100%;
-  height          : 30px;
-  padding         : 6px;
-  /* border          : 1px solid #dcdee2;
-  border-radius   : 4px; */
-  background-color: #fff;
-  outline         : 0;
-  box-sizing      : border-box;
-  transition      : background-color .2s
-}
-
-.ss-main .ss-single-selected.ss-disabled {
-  background-color: #dcdee2;
-  cursor          : not-allowed
-}
-
-.ss-main .ss-single-selected.ss-open-above {
-  border-top-left-radius : 0px;
-  border-top-right-radius: 0px
-}
-
-.ss-main .ss-single-selected.ss-open-below {
-  border-bottom-left-radius : 0px;
-  border-bottom-right-radius: 0px
-}
-
-.ss-main .ss-single-selected .placeholder {
-  display            : flex;
-  flex               : 1 1 100%;
-  align-items        : center;
-  overflow           : hidden;
-  text-overflow      : ellipsis;
-  white-space        : nowrap;
-  text-align         : left;
-  width              : calc(100% - 30px);
-  line-height        : 1em;
-  -webkit-user-select: none;
-  -moz-user-select   : none;
-  -ms-user-select    : none;
-  user-select        : none
-}
-
-.ss-main .ss-single-selected .placeholder * {
-  display      : flex;
-  align-items  : center;
-  overflow     : hidden;
-  text-overflow: ellipsis;
-  white-space  : nowrap;
-  width        : auto
-}
-
-.ss-main .ss-single-selected .placeholder .ss-disabled {
-  color: #dedede
-}
-
-.ss-main .ss-single-selected .ss-deselect {
-  display        : flex;
-  align-items    : center;
-  justify-content: flex-end;
-  flex           : 0 1 auto;
-  margin         : 0 6px 0 6px;
-  font-weight    : bold
-}
-
-.ss-main .ss-single-selected .ss-deselect.ss-hide {
-  display: none
-}
-
-.ss-main .ss-single-selected .ss-arrow {
-  display        : flex;
-  align-items    : center;
-  justify-content: flex-end;
-  flex           : 0 1 auto;
-  margin         : 0 6px 0 6px
-}
-
-.ss-main .ss-single-selected .ss-arrow span {
-  border      : solid #666;
-  border-width: 0 2px 2px 0;
-  display     : inline-block;
-  padding     : 3px;
-  transition  : transform .2s, margin .2s
-}
-
-.ss-main .ss-single-selected .ss-arrow span.arrow-up {
-  transform: rotate(-135deg);
-  margin   : 3px 0 0 0
-}
-
-.ss-main .ss-single-selected .ss-arrow span.arrow-down {
-  transform: rotate(45deg);
-  margin   : -3px 0 0 0
-}
-
-.ss-main .ss-multi-selected {
-  display         : flex;
-  flex-direction  : row;
-  cursor          : pointer;
-  min-height      : 30px;
-  width           : 100%;
-  padding         : 0 0 0 3px;
-  border          : 1px solid #dcdee2;
-  border-radius   : 4px;
-  background-color: #fff;
-  outline         : 0;
-  box-sizing      : border-box;
-  transition      : background-color .2s
-}
-
-.ss-main .ss-multi-selected.ss-disabled {
-  background-color: #dcdee2;
-  cursor          : not-allowed
-}
-
-.ss-main .ss-multi-selected.ss-disabled .ss-values .ss-disabled {
-  color: #666
-}
-
-.ss-main .ss-multi-selected.ss-disabled .ss-values .ss-value .ss-value-delete {
-  cursor: not-allowed
-}
-
-.ss-main .ss-multi-selected.ss-open-above {
-  border-top-left-radius : 0px;
-  border-top-right-radius: 0px
-}
-
-.ss-main .ss-multi-selected.ss-open-below {
-  border-bottom-left-radius : 0px;
-  border-bottom-right-radius: 0px
-}
-
-.ss-main .ss-multi-selected .ss-values {
-  display        : flex;
-  flex-wrap      : wrap;
-  justify-content: flex-start;
-  flex           : 1 1 100%;
-  width          : calc(100% - 30px)
-}
-
-.ss-main .ss-multi-selected .ss-values .ss-disabled {
-  display      : flex;
-  padding      : 4px 5px;
-  margin       : 2px 0px;
-  line-height  : 1em;
-  align-items  : center;
-  width        : 100%;
-  color        : #dedede;
-  overflow     : hidden;
-  text-overflow: ellipsis;
-  white-space  : nowrap
-}
-
-@keyframes scaleIn {
-  0% {
-    transform: scale(0);
-    opacity  : 0
-  }
-
-  100% {
-    transform: scale(1);
-    opacity  : 1
-  }
-}
-
-@keyframes scaleOut {
-  0% {
-    transform: scale(1);
-    opacity  : 1
-  }
-
-  100% {
-    transform: scale(0);
-    opacity  : 0
-  }
-}
-
-.ss-main .ss-multi-selected .ss-values .ss-value {
-  display                  : flex;
-  user-select              : none;
-  align-items              : center;
-  font-size                : 12px;
-  padding                  : 3px 5px;
-  margin                   : 3px 5px 3px 0px;
-  color                    : #fff;
-  background-color         : #5897fb;
-  border-radius            : 4px;
-  animation-name           : scaleIn;
-  animation-duration       : .2s;
-  animation-timing-function: ease-out;
-  animation-fill-mode      : both
-}
-
-.ss-main .ss-multi-selected .ss-values .ss-value.ss-out {
-  animation-name           : scaleOut;
-  animation-duration       : .2s;
-  animation-timing-function: ease-out
-}
-
-.ss-main .ss-multi-selected .ss-values .ss-value .ss-value-delete {
-  margin: 0 0 0 5px;
-  cursor: pointer
-}
-
-.ss-main .ss-multi-selected .ss-add {
-  display: flex;
-  flex   : 0 1 3px;
-  margin : 9px 12px 0 5px
-}
-
-.ss-main .ss-multi-selected .ss-add .ss-plus {
-  display        : flex;
-  justify-content: center;
-  align-items    : center;
-  background     : #666;
-  position       : relative;
-  height         : 10px;
-  width          : 2px;
-  transition     : transform .2s
-}
-
-.ss-main .ss-multi-selected .ss-add .ss-plus:after {
-  background: #666;
-  content   : "";
-  position  : absolute;
-  height    : 2px;
-  width     : 10px;
-  left      : -4px;
-  top       : 4px
-}
-
-.ss-main .ss-multi-selected .ss-add .ss-plus.ss-cross {
-  transform: rotate(45deg)
-}
-
-.ss-content {
-  position        : absolute;
-  width           : 100%;
-  margin          : -1px 0 0 0;
-  box-sizing      : border-box;
-  border          : solid 1px #dcdee2;
-  z-index         : 1010;
-  background-color: #fff;
-  transform-origin: center top;
-  transition      : transform .2s, opacity .2s;
-  opacity         : 0;
-  transform       : scaleY(0)
-}
-
-.ss-content.ss-open {
-  display  : block;
-  opacity  : 1;
-  transform: scaleY(1)
-}
-
-.ss-content .ss-search {
-  display       : flex;
-  flex-direction: row;
-  padding       : 8px 8px 6px 8px
-}
-
-.ss-content .ss-search.ss-hide {
-  height : 0px;
-  opacity: 0;
-  padding: 0px 0px 0px 0px;
-  margin : 0px 0px 0px 0px
-}
-
-.ss-content .ss-search.ss-hide input {
-  height : 0px;
-  opacity: 0;
-  padding: 0px 0px 0px 0px;
-  margin : 0px 0px 0px 0px
-}
-
-.ss-content .ss-search input {
-  display           : inline-flex;
-  font-size         : inherit;
-  line-height       : inherit;
-  flex              : 1 1 auto;
-  width             : 100%;
-  min-width         : 0px;
-  height            : 30px;
-  padding           : 6px 8px;
-  margin            : 0;
-  border            : 1px solid #dcdee2;
-  border-radius     : 4px;
-  background-color  : #fff;
-  outline           : 0;
-  text-align        : left;
-  box-sizing        : border-box;
-  -webkit-box-sizing: border-box;
-  -webkit-appearance: textfield
-}
-
-.ss-content .ss-search input::placeholder {
-  color         : #8a8a8a;
-  vertical-align: middle
-}
-
-.ss-content .ss-search input:focus {
-  box-shadow: 0 0 5px #5897fb
-}
-
-.ss-content .ss-search .ss-addable {
-  display        : inline-flex;
-  justify-content: center;
-  align-items    : center;
-  cursor         : pointer;
-  font-size      : 22px;
-  font-weight    : bold;
-  flex           : 0 0 30px;
-  height         : 30px;
-  margin         : 0 0 0 8px;
-  border         : 1px solid #dcdee2;
-  border-radius  : 4px;
-  box-sizing     : border-box
-}
-
-.ss-content .ss-addable {
-  padding-top: 0px
-}
-
-.ss-content .ss-list {
-  max-height: 200px;
-  overflow-x: hidden;
-  overflow-y: auto;
-  text-align: left
-}
-
-.ss-content .ss-list .ss-optgroup .ss-optgroup-label {
-  padding    : 6px 10px 6px 10px;
-  font-weight: bold
-}
-
-.ss-content .ss-list .ss-optgroup .ss-option {
-  padding: 6px 6px 6px 25px
-}
-
-.ss-content .ss-list .ss-optgroup-label-selectable {
-  cursor: pointer
-}
-
-.ss-content .ss-list .ss-optgroup-label-selectable:hover {
-  color           : #fff;
-  background-color: #5897fb
-}
-
-.ss-content .ss-list .ss-option {
-  padding    : 6px 10px 6px 10px;
-  cursor     : pointer;
-  user-select: none
-}
-
-.ss-content .ss-list .ss-option * {
-  display: inline-block
-}
-
-.ss-content .ss-list .ss-option:hover,
-.ss-content .ss-list .ss-option.ss-highlighted {
-  color           : #fff;
-  background-color: #5897fb
-}
-
-.ss-content .ss-list .ss-option.ss-disabled {
-  cursor          : not-allowed;
-  color           : #dedede;
-  background-color: #fff
-}
-
-.ss-content .ss-list .ss-option:not(.ss-disabled).ss-option-selected {
-  color           : #666;
-  background-color: rgba(88, 151, 251, 0.1)
-}
-
-.ss-content .ss-list .ss-option.ss-hide {
-  display: none
-}
-
-.ss-content .ss-list .ss-option .ss-search-highlight {
-  background-color: #fffb8c
-}
\ No newline at end of file
diff --git a/app/static/vendors/slimselect/slimselect.js b/app/static/vendors/slimselect/slimselect.js
deleted file mode 100644 (file)
index 2b0ce4b..0000000
+++ /dev/null
@@ -1,1931 +0,0 @@
-(function webpackUniversalModuleDefinition(root, factory) {
-       if(typeof exports === 'object' && typeof module === 'object')
-               module.exports = factory();
-       else if(typeof define === 'function' && define.amd)
-               define([], factory);
-       else if(typeof exports === 'object')
-               exports["SlimSelect"] = factory();
-       else
-               root["SlimSelect"] = factory();
-})(window, function() {
-return /******/ (function(modules) { // webpackBootstrap
-/******/       // The module cache
-/******/       var installedModules = {};
-/******/
-/******/       // The require function
-/******/       function __webpack_require__(moduleId) {
-/******/
-/******/               // Check if module is in cache
-/******/               if(installedModules[moduleId]) {
-/******/                       return installedModules[moduleId].exports;
-/******/               }
-/******/               // Create a new module (and put it into the cache)
-/******/               var module = installedModules[moduleId] = {
-/******/                       i: moduleId,
-/******/                       l: false,
-/******/                       exports: {}
-/******/               };
-/******/
-/******/               // Execute the module function
-/******/               modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-/******/
-/******/               // Flag the module as loaded
-/******/               module.l = true;
-/******/
-/******/               // Return the exports of the module
-/******/               return module.exports;
-/******/       }
-/******/
-/******/
-/******/       // expose the modules object (__webpack_modules__)
-/******/       __webpack_require__.m = modules;
-/******/
-/******/       // expose the module cache
-/******/       __webpack_require__.c = installedModules;
-/******/
-/******/       // define getter function for harmony exports
-/******/       __webpack_require__.d = function(exports, name, getter) {
-/******/               if(!__webpack_require__.o(exports, name)) {
-/******/                       Object.defineProperty(exports, name, { enumerable: true, get: getter });
-/******/               }
-/******/       };
-/******/
-/******/       // define __esModule on exports
-/******/       __webpack_require__.r = function(exports) {
-/******/               if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
-/******/                       Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
-/******/               }
-/******/               Object.defineProperty(exports, '__esModule', { value: true });
-/******/       };
-/******/
-/******/       // create a fake namespace object
-/******/       // mode & 1: value is a module id, require it
-/******/       // mode & 2: merge all properties of value into the ns
-/******/       // mode & 4: return value when already ns object
-/******/       // mode & 8|1: behave like require
-/******/       __webpack_require__.t = function(value, mode) {
-/******/               if(mode & 1) value = __webpack_require__(value);
-/******/               if(mode & 8) return value;
-/******/               if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
-/******/               var ns = Object.create(null);
-/******/               __webpack_require__.r(ns);
-/******/               Object.defineProperty(ns, 'default', { enumerable: true, value: value });
-/******/               if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
-/******/               return ns;
-/******/       };
-/******/
-/******/       // getDefaultExport function for compatibility with non-harmony modules
-/******/       __webpack_require__.n = function(module) {
-/******/               var getter = module && module.__esModule ?
-/******/                       function getDefault() { return module['default']; } :
-/******/                       function getModuleExports() { return module; };
-/******/               __webpack_require__.d(getter, 'a', getter);
-/******/               return getter;
-/******/       };
-/******/
-/******/       // Object.prototype.hasOwnProperty.call
-/******/       __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
-/******/
-/******/       // __webpack_public_path__
-/******/       __webpack_require__.p = "";
-/******/
-/******/
-/******/       // Load entry module and return exports
-/******/       return __webpack_require__(__webpack_require__.s = 2);
-/******/ })
-/************************************************************************/
-/******/ ([
-/* 0 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-exports.__esModule = true;
-function hasClassInTree(element, className) {
-    function hasClass(e, c) {
-        if (!(!c || !e || !e.classList || !e.classList.contains(c))) {
-            return e;
-        }
-        return null;
-    }
-    function parentByClass(e, c) {
-        if (!e || e === document) {
-            return null;
-        }
-        else if (hasClass(e, c)) {
-            return e;
-        }
-        else {
-            return parentByClass(e.parentNode, c);
-        }
-    }
-    return hasClass(element, className) || parentByClass(element, className);
-}
-exports.hasClassInTree = hasClassInTree;
-function ensureElementInView(container, element) {
-    var cTop = container.scrollTop + container.offsetTop;
-    var cBottom = cTop + container.clientHeight;
-    var eTop = element.offsetTop;
-    var eBottom = eTop + element.clientHeight;
-    if (eTop < cTop) {
-        container.scrollTop -= (cTop - eTop);
-    }
-    else if (eBottom > cBottom) {
-        container.scrollTop += (eBottom - cBottom);
-    }
-}
-exports.ensureElementInView = ensureElementInView;
-function putContent(el, currentPosition, isOpen) {
-    var height = el.offsetHeight;
-    var rect = el.getBoundingClientRect();
-    var elemTop = (isOpen ? rect.top : rect.top - height);
-    var elemBottom = (isOpen ? rect.bottom : rect.bottom + height);
-    if (elemTop <= 0) {
-        return 'below';
-    }
-    if (elemBottom >= window.innerHeight) {
-        return 'above';
-    }
-    return (isOpen ? currentPosition : 'below');
-}
-exports.putContent = putContent;
-function debounce(func, wait, immediate) {
-    if (wait === void 0) { wait = 100; }
-    if (immediate === void 0) { immediate = false; }
-    var timeout;
-    return function () {
-        var args = [];
-        for (var _i = 0; _i < arguments.length; _i++) {
-            args[_i] = arguments[_i];
-        }
-        var context = self;
-        var later = function () {
-            timeout = null;
-            if (!immediate) {
-                func.apply(context, args);
-            }
-        };
-        var callNow = immediate && !timeout;
-        clearTimeout(timeout);
-        timeout = setTimeout(later, wait);
-        if (callNow) {
-            func.apply(context, args);
-        }
-    };
-}
-exports.debounce = debounce;
-function isValueInArrayOfObjects(selected, key, value) {
-    if (!Array.isArray(selected)) {
-        return selected[key] === value;
-    }
-    for (var _i = 0, selected_1 = selected; _i < selected_1.length; _i++) {
-        var s = selected_1[_i];
-        if (s && s[key] && s[key] === value) {
-            return true;
-        }
-    }
-    return false;
-}
-exports.isValueInArrayOfObjects = isValueInArrayOfObjects;
-function highlight(str, search, className) {
-    var completedString = str;
-    var regex = new RegExp('(' + search.trim() + ')(?![^<]*>[^<>]*</)', 'i');
-    if (!str.match(regex)) {
-        return str;
-    }
-    var matchStartPosition = str.match(regex).index;
-    var matchEndPosition = matchStartPosition + str.match(regex)[0].toString().length;
-    var originalTextFoundByRegex = str.substring(matchStartPosition, matchEndPosition);
-    completedString = completedString.replace(regex, "<mark class=\"" + className + "\">" + originalTextFoundByRegex + "</mark>");
-    return completedString;
-}
-exports.highlight = highlight;
-function kebabCase(str) {
-    var result = str.replace(/[A-Z\u00C0-\u00D6\u00D8-\u00DE]/g, function (match) { return '-' + match.toLowerCase(); });
-    return (str[0] === str[0].toUpperCase())
-        ? result.substring(1)
-        : result;
-}
-exports.kebabCase = kebabCase;
-(function () {
-    var w = window;
-    if (typeof w.CustomEvent === 'function') {
-        return;
-    }
-    function CustomEvent(event, params) {
-        params = params || { bubbles: false, cancelable: false, detail: undefined };
-        var evt = document.createEvent('CustomEvent');
-        evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
-        return evt;
-    }
-    CustomEvent.prototype = w.Event.prototype;
-    w.CustomEvent = CustomEvent;
-})();
-
-
-/***/ }),
-/* 1 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-exports.__esModule = true;
-var Data = (function () {
-    function Data(info) {
-        this.contentOpen = false;
-        this.contentPosition = 'below';
-        this.isOnChangeEnabled = true;
-        this.main = info.main;
-        this.searchValue = '';
-        this.data = [];
-        this.filtered = null;
-        this.parseSelectData();
-        this.setSelectedFromSelect();
-    }
-    Data.prototype.newOption = function (info) {
-        return {
-            id: (info.id ? info.id : String(Math.floor(Math.random() * 100000000))),
-            value: (info.value ? info.value : ''),
-            text: (info.text ? info.text : ''),
-            innerHTML: (info.innerHTML ? info.innerHTML : ''),
-            selected: (info.selected ? info.selected : false),
-            display: (info.display !== undefined ? info.display : true),
-            disabled: (info.disabled ? info.disabled : false),
-            placeholder: (info.placeholder ? info.placeholder : false),
-            "class": (info["class"] ? info["class"] : undefined),
-            data: (info.data ? info.data : {}),
-            mandatory: (info.mandatory ? info.mandatory : false)
-        };
-    };
-    Data.prototype.add = function (data) {
-        this.data.push({
-            id: String(Math.floor(Math.random() * 100000000)),
-            value: data.value,
-            text: data.text,
-            innerHTML: '',
-            selected: false,
-            display: true,
-            disabled: false,
-            placeholder: false,
-            "class": undefined,
-            mandatory: data.mandatory,
-            data: {}
-        });
-    };
-    Data.prototype.parseSelectData = function () {
-        this.data = [];
-        var nodes = this.main.select.element.childNodes;
-        for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) {
-            var n = nodes_1[_i];
-            if (n.nodeName === 'OPTGROUP') {
-                var node = n;
-                var optgroup = {
-                    label: node.label,
-                    options: []
-                };
-                var options = n.childNodes;
-                for (var _a = 0, options_1 = options; _a < options_1.length; _a++) {
-                    var o = options_1[_a];
-                    if (o.nodeName === 'OPTION') {
-                        var option = this.pullOptionData(o);
-                        optgroup.options.push(option);
-                        if (option.placeholder && option.text.trim() !== '') {
-                            this.main.config.placeholderText = option.text;
-                        }
-                    }
-                }
-                this.data.push(optgroup);
-            }
-            else if (n.nodeName === 'OPTION') {
-                var option = this.pullOptionData(n);
-                this.data.push(option);
-                if (option.placeholder && option.text.trim() !== '') {
-                    this.main.config.placeholderText = option.text;
-                }
-            }
-        }
-    };
-    Data.prototype.pullOptionData = function (option) {
-        return {
-            id: (option.dataset ? option.dataset.id : false) || String(Math.floor(Math.random() * 100000000)),
-            value: option.value,
-            text: option.text,
-            innerHTML: option.innerHTML,
-            selected: option.selected,
-            disabled: option.disabled,
-            placeholder: option.dataset.placeholder === 'true',
-            "class": option.className,
-            style: option.style.cssText,
-            data: option.dataset,
-            mandatory: (option.dataset ? option.dataset.mandatory === 'true' : false)
-        };
-    };
-    Data.prototype.setSelectedFromSelect = function () {
-        if (this.main.config.isMultiple) {
-            var options = this.main.select.element.options;
-            var newSelected = [];
-            for (var _i = 0, options_2 = options; _i < options_2.length; _i++) {
-                var o = options_2[_i];
-                if (o.selected) {
-                    var newOption = this.getObjectFromData(o.value, 'value');
-                    if (newOption && newOption.id) {
-                        newSelected.push(newOption.id);
-                    }
-                }
-            }
-            this.setSelected(newSelected, 'id');
-        }
-        else {
-            var element = this.main.select.element;
-            if (element.selectedIndex !== -1) {
-                var option = element.options[element.selectedIndex];
-                var value = option.value;
-                this.setSelected(value, 'value');
-            }
-        }
-    };
-    Data.prototype.setSelected = function (value, type) {
-        if (type === void 0) { type = 'id'; }
-        for (var _i = 0, _a = this.data; _i < _a.length; _i++) {
-            var d = _a[_i];
-            if (d.hasOwnProperty('label')) {
-                if (d.hasOwnProperty('options')) {
-                    var options = d.options;
-                    if (options) {
-                        for (var _b = 0, options_3 = options; _b < options_3.length; _b++) {
-                            var o = options_3[_b];
-                            if (o.placeholder) {
-                                continue;
-                            }
-                            o.selected = this.shouldBeSelected(o, value, type);
-                        }
-                    }
-                }
-            }
-            else {
-                d.selected = this.shouldBeSelected(d, value, type);
-            }
-        }
-    };
-    Data.prototype.shouldBeSelected = function (option, value, type) {
-        if (type === void 0) { type = 'id'; }
-        if (Array.isArray(value)) {
-            for (var _i = 0, value_1 = value; _i < value_1.length; _i++) {
-                var v = value_1[_i];
-                if (type in option && String(option[type]) === String(v)) {
-                    return true;
-                }
-            }
-        }
-        else {
-            if (type in option && String(option[type]) === String(value)) {
-                return true;
-            }
-        }
-        return false;
-    };
-    Data.prototype.getSelected = function () {
-        var value = { text: '', placeholder: this.main.config.placeholderText };
-        var values = [];
-        for (var _i = 0, _a = this.data; _i < _a.length; _i++) {
-            var d = _a[_i];
-            if (d.hasOwnProperty('label')) {
-                if (d.hasOwnProperty('options')) {
-                    var options = d.options;
-                    if (options) {
-                        for (var _b = 0, options_4 = options; _b < options_4.length; _b++) {
-                            var o = options_4[_b];
-                            if (o.selected) {
-                                if (!this.main.config.isMultiple) {
-                                    value = o;
-                                }
-                                else {
-                                    values.push(o);
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-            else {
-                if (d.selected) {
-                    if (!this.main.config.isMultiple) {
-                        value = d;
-                    }
-                    else {
-                        values.push(d);
-                    }
-                }
-            }
-        }
-        if (this.main.config.isMultiple) {
-            return values;
-        }
-        return value;
-    };
-    Data.prototype.addToSelected = function (value, type) {
-        if (type === void 0) { type = 'id'; }
-        if (this.main.config.isMultiple) {
-            var values = [];
-            var selected = this.getSelected();
-            if (Array.isArray(selected)) {
-                for (var _i = 0, selected_1 = selected; _i < selected_1.length; _i++) {
-                    var s = selected_1[_i];
-                    values.push(s[type]);
-                }
-            }
-            values.push(value);
-            this.setSelected(values, type);
-        }
-    };
-    Data.prototype.removeFromSelected = function (value, type) {
-        if (type === void 0) { type = 'id'; }
-        if (this.main.config.isMultiple) {
-            var values = [];
-            var selected = this.getSelected();
-            for (var _i = 0, selected_2 = selected; _i < selected_2.length; _i++) {
-                var s = selected_2[_i];
-                if (String(s[type]) !== String(value)) {
-                    values.push(s[type]);
-                }
-            }
-            this.setSelected(values, type);
-        }
-    };
-    Data.prototype.onDataChange = function () {
-        if (this.main.onChange && this.isOnChangeEnabled) {
-            this.main.onChange(JSON.parse(JSON.stringify(this.getSelected())));
-        }
-    };
-    Data.prototype.getObjectFromData = function (value, type) {
-        if (type === void 0) { type = 'id'; }
-        for (var _i = 0, _a = this.data; _i < _a.length; _i++) {
-            var d = _a[_i];
-            if (type in d && String(d[type]) === String(value)) {
-                return d;
-            }
-            if (d.hasOwnProperty('options')) {
-                var optgroupObject = d;
-                if (optgroupObject.options) {
-                    for (var _b = 0, _c = optgroupObject.options; _b < _c.length; _b++) {
-                        var oo = _c[_b];
-                        if (String(oo[type]) === String(value)) {
-                            return oo;
-                        }
-                    }
-                }
-            }
-        }
-        return null;
-    };
-    Data.prototype.search = function (search) {
-        this.searchValue = search;
-        if (search.trim() === '') {
-            this.filtered = null;
-            return;
-        }
-        var searchFilter = this.main.config.searchFilter;
-        var valuesArray = this.data.slice(0);
-        search = search.trim();
-        var filtered = valuesArray.map(function (obj) {
-            if (obj.hasOwnProperty('options')) {
-                var optgroupObj = obj;
-                var options = [];
-                if (optgroupObj.options) {
-                    options = optgroupObj.options.filter(function (opt) {
-                        return searchFilter(opt, search);
-                    });
-                }
-                if (options.length !== 0) {
-                    var optgroup = Object.assign({}, optgroupObj);
-                    optgroup.options = options;
-                    return optgroup;
-                }
-            }
-            if (obj.hasOwnProperty('text')) {
-                var optionObj = obj;
-                if (searchFilter(optionObj, search)) {
-                    return obj;
-                }
-            }
-            return null;
-        });
-        this.filtered = filtered.filter(function (info) { return info; });
-    };
-    return Data;
-}());
-exports.Data = Data;
-function validateData(data) {
-    if (!data) {
-        console.error('Data must be an array of objects');
-        return false;
-    }
-    var isValid = false;
-    var errorCount = 0;
-    for (var _i = 0, data_1 = data; _i < data_1.length; _i++) {
-        var d = data_1[_i];
-        if (d.hasOwnProperty('label')) {
-            if (d.hasOwnProperty('options')) {
-                var optgroup = d;
-                var options = optgroup.options;
-                if (options) {
-                    for (var _a = 0, options_5 = options; _a < options_5.length; _a++) {
-                        var o = options_5[_a];
-                        isValid = validateOption(o);
-                        if (!isValid) {
-                            errorCount++;
-                        }
-                    }
-                }
-            }
-        }
-        else {
-            var option = d;
-            isValid = validateOption(option);
-            if (!isValid) {
-                errorCount++;
-            }
-        }
-    }
-    return errorCount === 0;
-}
-exports.validateData = validateData;
-function validateOption(option) {
-    if (option.text === undefined) {
-        console.error('Data object option must have at least have a text value. Check object: ' + JSON.stringify(option));
-        return false;
-    }
-    return true;
-}
-exports.validateOption = validateOption;
-
-
-/***/ }),
-/* 2 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-exports.__esModule = true;
-var config_1 = __webpack_require__(3);
-var select_1 = __webpack_require__(4);
-var slim_1 = __webpack_require__(5);
-var data_1 = __webpack_require__(1);
-var helper_1 = __webpack_require__(0);
-var SlimSelect = (function () {
-    function SlimSelect(info) {
-        var _this = this;
-        this.ajax = null;
-        this.addable = null;
-        this.beforeOnChange = null;
-        this.onChange = null;
-        this.beforeOpen = null;
-        this.afterOpen = null;
-        this.beforeClose = null;
-        this.afterClose = null;
-        var selectElement = this.validate(info);
-        if (selectElement.dataset.ssid) {
-            this.destroy(selectElement.dataset.ssid);
-        }
-        if (info.ajax) {
-            this.ajax = info.ajax;
-        }
-        if (info.addable) {
-            this.addable = info.addable;
-        }
-        this.config = new config_1.Config({
-            select: selectElement,
-            isAjax: (info.ajax ? true : false),
-            showSearch: info.showSearch,
-            searchPlaceholder: info.searchPlaceholder,
-            searchText: info.searchText,
-            searchingText: info.searchingText,
-            searchFocus: info.searchFocus,
-            searchHighlight: info.searchHighlight,
-            searchFilter: info.searchFilter,
-            closeOnSelect: info.closeOnSelect,
-            showContent: info.showContent,
-            placeholderText: info.placeholder,
-            allowDeselect: info.allowDeselect,
-            allowDeselectOption: info.allowDeselectOption,
-            hideSelectedOption: info.hideSelectedOption,
-            deselectLabel: info.deselectLabel,
-            isEnabled: info.isEnabled,
-            valuesUseText: info.valuesUseText,
-            showOptionTooltips: info.showOptionTooltips,
-            selectByGroup: info.selectByGroup,
-            limit: info.limit,
-            timeoutDelay: info.timeoutDelay,
-            addToBody: info.addToBody
-        });
-        this.select = new select_1.Select({
-            select: selectElement,
-            main: this
-        });
-        this.data = new data_1.Data({ main: this });
-        this.slim = new slim_1.Slim({ main: this });
-        if (this.select.element.parentNode) {
-            this.select.element.parentNode.insertBefore(this.slim.container, this.select.element.nextSibling);
-        }
-        if (info.data) {
-            this.setData(info.data);
-        }
-        else {
-            this.render();
-        }
-        document.addEventListener('click', function (e) {
-            if (e.target && !helper_1.hasClassInTree(e.target, _this.config.id)) {
-                _this.close();
-            }
-        });
-        if (this.config.showContent === 'auto') {
-            window.addEventListener('scroll', helper_1.debounce(function (e) {
-                if (_this.data.contentOpen) {
-                    if (helper_1.putContent(_this.slim.content, _this.data.contentPosition, _this.data.contentOpen) === 'above') {
-                        _this.moveContentAbove();
-                    }
-                    else {
-                        _this.moveContentBelow();
-                    }
-                }
-            }), false);
-        }
-        if (info.beforeOnChange) {
-            this.beforeOnChange = info.beforeOnChange;
-        }
-        if (info.onChange) {
-            this.onChange = info.onChange;
-        }
-        if (info.beforeOpen) {
-            this.beforeOpen = info.beforeOpen;
-        }
-        if (info.afterOpen) {
-            this.afterOpen = info.afterOpen;
-        }
-        if (info.beforeClose) {
-            this.beforeClose = info.beforeClose;
-        }
-        if (info.afterClose) {
-            this.afterClose = info.afterClose;
-        }
-        if (!this.config.isEnabled) {
-            this.disable();
-        }
-    }
-    SlimSelect.prototype.validate = function (info) {
-        var select = (typeof info.select === 'string' ? document.querySelector(info.select) : info.select);
-        if (!select) {
-            throw new Error('Could not find select element');
-        }
-        if (select.tagName !== 'SELECT') {
-            throw new Error('Element isnt of type select');
-        }
-        return select;
-    };
-    SlimSelect.prototype.selected = function () {
-        if (this.config.isMultiple) {
-            var selected = this.data.getSelected();
-            var outputSelected = [];
-            for (var _i = 0, selected_1 = selected; _i < selected_1.length; _i++) {
-                var s = selected_1[_i];
-                outputSelected.push(s.value);
-            }
-            return outputSelected;
-        }
-        else {
-            var selected = this.data.getSelected();
-            return (selected ? selected.value : '');
-        }
-    };
-    SlimSelect.prototype.set = function (value, type, close, render) {
-        if (type === void 0) { type = 'value'; }
-        if (close === void 0) { close = true; }
-        if (render === void 0) { render = true; }
-        if (this.config.isMultiple && !Array.isArray(value)) {
-            this.data.addToSelected(value, type);
-        }
-        else {
-            this.data.setSelected(value, type);
-        }
-        this.select.setValue();
-        this.data.onDataChange();
-        this.render();
-        if (close) {
-            this.close();
-        }
-    };
-    SlimSelect.prototype.setSelected = function (value, type, close, render) {
-        if (type === void 0) { type = 'value'; }
-        if (close === void 0) { close = true; }
-        if (render === void 0) { render = true; }
-        this.set(value, type, close, render);
-    };
-    SlimSelect.prototype.setData = function (data) {
-        var isValid = data_1.validateData(data);
-        if (!isValid) {
-            console.error('Validation problem on: #' + this.select.element.id);
-            return;
-        }
-        var newData = JSON.parse(JSON.stringify(data));
-        var selected = this.data.getSelected();
-        if (this.config.isAjax && selected) {
-            if (this.config.isMultiple) {
-                var reverseSelected = selected.reverse();
-                for (var _i = 0, reverseSelected_1 = reverseSelected; _i < reverseSelected_1.length; _i++) {
-                    var r = reverseSelected_1[_i];
-                    newData.unshift(r);
-                }
-            }
-            else {
-                newData.unshift(this.data.getSelected());
-                newData.unshift({ text: '', placeholder: true });
-            }
-        }
-        this.select.create(newData);
-        this.data.parseSelectData();
-        this.data.setSelectedFromSelect();
-    };
-    SlimSelect.prototype.addData = function (data) {
-        var isValid = data_1.validateData([data]);
-        if (!isValid) {
-            console.error('Validation problem on: #' + this.select.element.id);
-            return;
-        }
-        this.data.add(this.data.newOption(data));
-        this.select.create(this.data.data);
-        this.data.parseSelectData();
-        this.data.setSelectedFromSelect();
-        this.render();
-    };
-    SlimSelect.prototype.open = function () {
-        var _this = this;
-        if (!this.config.isEnabled) {
-            return;
-        }
-        if (this.data.contentOpen) {
-            return;
-        }
-        if (this.beforeOpen) {
-            this.beforeOpen();
-        }
-        if (this.config.isMultiple && this.slim.multiSelected) {
-            this.slim.multiSelected.plus.classList.add('ss-cross');
-        }
-        else if (this.slim.singleSelected) {
-            this.slim.singleSelected.arrowIcon.arrow.classList.remove('arrow-down');
-            this.slim.singleSelected.arrowIcon.arrow.classList.add('arrow-up');
-        }
-        this.slim[(this.config.isMultiple ? 'multiSelected' : 'singleSelected')].container.classList.add((this.data.contentPosition === 'above' ? this.config.openAbove : this.config.openBelow));
-        if (this.config.addToBody) {
-            var containerRect = this.slim.container.getBoundingClientRect();
-            this.slim.content.style.top = (containerRect.top + containerRect.height + window.scrollY) + 'px';
-            this.slim.content.style.left = (containerRect.left + window.scrollX) + 'px';
-            this.slim.content.style.width = containerRect.width + 'px';
-        }
-        this.slim.content.classList.add(this.config.open);
-        if (this.config.showContent.toLowerCase() === 'up') {
-            this.moveContentAbove();
-        }
-        else if (this.config.showContent.toLowerCase() === 'down') {
-            this.moveContentBelow();
-        }
-        else {
-            if (helper_1.putContent(this.slim.content, this.data.contentPosition, this.data.contentOpen) === 'above') {
-                this.moveContentAbove();
-            }
-            else {
-                this.moveContentBelow();
-            }
-        }
-        if (!this.config.isMultiple) {
-            var selected = this.data.getSelected();
-            if (selected) {
-                var selectedId = selected.id;
-                var selectedOption = this.slim.list.querySelector('[data-id="' + selectedId + '"]');
-                if (selectedOption) {
-                    helper_1.ensureElementInView(this.slim.list, selectedOption);
-                }
-            }
-        }
-        setTimeout(function () {
-            _this.data.contentOpen = true;
-            if (_this.config.searchFocus) {
-                _this.slim.search.input.focus();
-            }
-            if (_this.afterOpen) {
-                _this.afterOpen();
-            }
-        }, this.config.timeoutDelay);
-    };
-    SlimSelect.prototype.close = function () {
-        var _this = this;
-        if (!this.data.contentOpen) {
-            return;
-        }
-        if (this.beforeClose) {
-            this.beforeClose();
-        }
-        if (this.config.isMultiple && this.slim.multiSelected) {
-            this.slim.multiSelected.container.classList.remove(this.config.openAbove);
-            this.slim.multiSelected.container.classList.remove(this.config.openBelow);
-            this.slim.multiSelected.plus.classList.remove('ss-cross');
-        }
-        else if (this.slim.singleSelected) {
-            this.slim.singleSelected.container.classList.remove(this.config.openAbove);
-            this.slim.singleSelected.container.classList.remove(this.config.openBelow);
-            this.slim.singleSelected.arrowIcon.arrow.classList.add('arrow-down');
-            this.slim.singleSelected.arrowIcon.arrow.classList.remove('arrow-up');
-        }
-        this.slim.content.classList.remove(this.config.open);
-        this.data.contentOpen = false;
-        this.search('');
-        setTimeout(function () {
-            _this.slim.content.removeAttribute('style');
-            _this.data.contentPosition = 'below';
-            if (_this.config.isMultiple && _this.slim.multiSelected) {
-                _this.slim.multiSelected.container.classList.remove(_this.config.openAbove);
-                _this.slim.multiSelected.container.classList.remove(_this.config.openBelow);
-            }
-            else if (_this.slim.singleSelected) {
-                _this.slim.singleSelected.container.classList.remove(_this.config.openAbove);
-                _this.slim.singleSelected.container.classList.remove(_this.config.openBelow);
-            }
-            _this.slim.search.input.blur();
-            if (_this.afterClose) {
-                _this.afterClose();
-            }
-        }, this.config.timeoutDelay);
-    };
-    SlimSelect.prototype.moveContentAbove = function () {
-        var selectHeight = 0;
-        if (this.config.isMultiple && this.slim.multiSelected) {
-            selectHeight = this.slim.multiSelected.container.offsetHeight;
-        }
-        else if (this.slim.singleSelected) {
-            selectHeight = this.slim.singleSelected.container.offsetHeight;
-        }
-        var contentHeight = this.slim.content.offsetHeight;
-        var height = selectHeight + contentHeight - 1;
-        this.slim.content.style.margin = '-' + height + 'px 0 0 0';
-        this.slim.content.style.height = (height - selectHeight + 1) + 'px';
-        this.slim.content.style.transformOrigin = 'center bottom';
-        this.data.contentPosition = 'above';
-        if (this.config.isMultiple && this.slim.multiSelected) {
-            this.slim.multiSelected.container.classList.remove(this.config.openBelow);
-            this.slim.multiSelected.container.classList.add(this.config.openAbove);
-        }
-        else if (this.slim.singleSelected) {
-            this.slim.singleSelected.container.classList.remove(this.config.openBelow);
-            this.slim.singleSelected.container.classList.add(this.config.openAbove);
-        }
-    };
-    SlimSelect.prototype.moveContentBelow = function () {
-        this.data.contentPosition = 'below';
-        if (this.config.isMultiple && this.slim.multiSelected) {
-            this.slim.multiSelected.container.classList.remove(this.config.openAbove);
-            this.slim.multiSelected.container.classList.add(this.config.openBelow);
-        }
-        else if (this.slim.singleSelected) {
-            this.slim.singleSelected.container.classList.remove(this.config.openAbove);
-            this.slim.singleSelected.container.classList.add(this.config.openBelow);
-        }
-    };
-    SlimSelect.prototype.enable = function () {
-        this.config.isEnabled = true;
-        if (this.config.isMultiple && this.slim.multiSelected) {
-            this.slim.multiSelected.container.classList.remove(this.config.disabled);
-        }
-        else if (this.slim.singleSelected) {
-            this.slim.singleSelected.container.classList.remove(this.config.disabled);
-        }
-        this.select.triggerMutationObserver = false;
-        this.select.element.disabled = false;
-        this.slim.search.input.disabled = false;
-        this.select.triggerMutationObserver = true;
-    };
-    SlimSelect.prototype.disable = function () {
-        this.config.isEnabled = false;
-        if (this.config.isMultiple && this.slim.multiSelected) {
-            this.slim.multiSelected.container.classList.add(this.config.disabled);
-        }
-        else if (this.slim.singleSelected) {
-            this.slim.singleSelected.container.classList.add(this.config.disabled);
-        }
-        this.select.triggerMutationObserver = false;
-        this.select.element.disabled = true;
-        this.slim.search.input.disabled = true;
-        this.select.triggerMutationObserver = true;
-    };
-    SlimSelect.prototype.search = function (value) {
-        if (this.data.searchValue !== value) {
-            this.slim.search.input.value = value;
-            if (this.config.isAjax) {
-                var master_1 = this;
-                this.config.isSearching = true;
-                this.render();
-                if (this.ajax) {
-                    this.ajax(value, function (info) {
-                        master_1.config.isSearching = false;
-                        if (Array.isArray(info)) {
-                            info.unshift({ text: '', placeholder: true });
-                            master_1.setData(info);
-                            master_1.data.search(value);
-                            master_1.render();
-                        }
-                        else if (typeof info === 'string') {
-                            master_1.slim.options(info);
-                        }
-                        else {
-                            master_1.render();
-                        }
-                    });
-                }
-            }
-            else {
-                this.data.search(value);
-                this.render();
-            }
-        }
-    };
-    SlimSelect.prototype.setSearchText = function (text) {
-        this.config.searchText = text;
-    };
-    SlimSelect.prototype.render = function () {
-        if (this.config.isMultiple) {
-            this.slim.values();
-        }
-        else {
-            this.slim.placeholder();
-            this.slim.deselect();
-        }
-        this.slim.options();
-    };
-    SlimSelect.prototype.destroy = function (id) {
-        if (id === void 0) { id = null; }
-        var slim = (id ? document.querySelector('.' + id + '.ss-main') : this.slim.container);
-        var select = (id ? document.querySelector("[data-ssid=" + id + "]") : this.select.element);
-        if (!slim || !select) {
-            return;
-        }
-        select.style.display = '';
-        delete select.dataset.ssid;
-        var el = select;
-        el.slim = null;
-        if (slim.parentElement) {
-            slim.parentElement.removeChild(slim);
-        }
-        if (this.config.addToBody) {
-            var slimContent = (id ? document.querySelector('.' + id + '.ss-content') : this.slim.content);
-            if (!slimContent) {
-                return;
-            }
-            document.body.removeChild(slimContent);
-        }
-    };
-    return SlimSelect;
-}());
-exports["default"] = SlimSelect;
-
-
-/***/ }),
-/* 3 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-exports.__esModule = true;
-var Config = (function () {
-    function Config(info) {
-        this.id = '';
-        this.isMultiple = false;
-        this.isAjax = false;
-        this.isSearching = false;
-        this.showSearch = true;
-        this.searchFocus = true;
-        this.searchHighlight = false;
-        this.closeOnSelect = true;
-        this.showContent = 'auto';
-        this.searchPlaceholder = 'Search';
-        this.searchText = 'No Results';
-        this.searchingText = 'Searching...';
-        this.placeholderText = 'Select Value';
-        this.allowDeselect = false;
-        this.allowDeselectOption = false;
-        this.hideSelectedOption = false;
-        this.deselectLabel = 'x';
-        this.isEnabled = true;
-        this.valuesUseText = false;
-        this.showOptionTooltips = false;
-        this.selectByGroup = false;
-        this.limit = 0;
-        this.timeoutDelay = 200;
-        this.addToBody = false;
-        this.main = 'ss-main';
-        this.singleSelected = 'ss-single-selected';
-        this.arrow = 'ss-arrow';
-        this.multiSelected = 'ss-multi-selected';
-        this.add = 'ss-add';
-        this.plus = 'ss-plus';
-        this.values = 'ss-values';
-        this.value = 'ss-value';
-        this.valueText = 'ss-value-text';
-        this.valueDelete = 'ss-value-delete';
-        this.content = 'ss-content';
-        this.open = 'ss-open';
-        this.openAbove = 'ss-open-above';
-        this.openBelow = 'ss-open-below';
-        this.search = 'ss-search';
-        this.searchHighlighter = 'ss-search-highlight';
-        this.addable = 'ss-addable';
-        this.list = 'ss-list';
-        this.optgroup = 'ss-optgroup';
-        this.optgroupLabel = 'ss-optgroup-label';
-        this.optgroupLabelSelectable = 'ss-optgroup-label-selectable';
-        this.option = 'ss-option';
-        this.optionSelected = 'ss-option-selected';
-        this.highlighted = 'ss-highlighted';
-        this.disabled = 'ss-disabled';
-        this.hide = 'ss-hide';
-        this.id = 'ss-' + Math.floor(Math.random() * 100000);
-        this.style = info.select.style.cssText;
-        this["class"] = info.select.className.split(' ');
-        this.isMultiple = info.select.multiple;
-        this.isAjax = info.isAjax;
-        this.showSearch = (info.showSearch === false ? false : true);
-        this.searchFocus = (info.searchFocus === false ? false : true);
-        this.searchHighlight = (info.searchHighlight === true ? true : false);
-        this.closeOnSelect = (info.closeOnSelect === false ? false : true);
-        if (info.showContent) {
-            this.showContent = info.showContent;
-        }
-        this.isEnabled = (info.isEnabled === false ? false : true);
-        if (info.searchPlaceholder) {
-            this.searchPlaceholder = info.searchPlaceholder;
-        }
-        if (info.searchText) {
-            this.searchText = info.searchText;
-        }
-        if (info.searchingText) {
-            this.searchingText = info.searchingText;
-        }
-        if (info.placeholderText) {
-            this.placeholderText = info.placeholderText;
-        }
-        this.allowDeselect = (info.allowDeselect === true ? true : false);
-        this.allowDeselectOption = (info.allowDeselectOption === true ? true : false);
-        this.hideSelectedOption = (info.hideSelectedOption === true ? true : false);
-        if (info.deselectLabel) {
-            this.deselectLabel = info.deselectLabel;
-        }
-        if (info.valuesUseText) {
-            this.valuesUseText = info.valuesUseText;
-        }
-        if (info.showOptionTooltips) {
-            this.showOptionTooltips = info.showOptionTooltips;
-        }
-        if (info.selectByGroup) {
-            this.selectByGroup = info.selectByGroup;
-        }
-        if (info.limit) {
-            this.limit = info.limit;
-        }
-        if (info.searchFilter) {
-            this.searchFilter = info.searchFilter;
-        }
-        if (info.timeoutDelay != null) {
-            this.timeoutDelay = info.timeoutDelay;
-        }
-        this.addToBody = (info.addToBody === true ? true : false);
-    }
-    Config.prototype.searchFilter = function (opt, search) {
-        return opt.text.toLowerCase().indexOf(search.toLowerCase()) !== -1;
-    };
-    return Config;
-}());
-exports.Config = Config;
-
-
-/***/ }),
-/* 4 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-exports.__esModule = true;
-var helper_1 = __webpack_require__(0);
-var Select = (function () {
-    function Select(info) {
-        this.triggerMutationObserver = true;
-        this.element = info.select;
-        this.main = info.main;
-        if (this.element.disabled) {
-            this.main.config.isEnabled = false;
-        }
-        this.addAttributes();
-        this.addEventListeners();
-        this.mutationObserver = null;
-        this.addMutationObserver();
-        var el = this.element;
-        el.slim = info.main;
-    }
-    Select.prototype.setValue = function () {
-        if (!this.main.data.getSelected()) {
-            return;
-        }
-        if (this.main.config.isMultiple) {
-            var selected = this.main.data.getSelected();
-            var options = this.element.options;
-            for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {
-                var o = options_1[_i];
-                o.selected = false;
-                for (var _a = 0, selected_1 = selected; _a < selected_1.length; _a++) {
-                    var s = selected_1[_a];
-                    if (s.value === o.value) {
-                        o.selected = true;
-                    }
-                }
-            }
-        }
-        else {
-            var selected = this.main.data.getSelected();
-            this.element.value = (selected ? selected.value : '');
-        }
-        this.main.data.isOnChangeEnabled = false;
-        this.element.dispatchEvent(new CustomEvent('change', { bubbles: true }));
-        this.main.data.isOnChangeEnabled = true;
-    };
-    Select.prototype.addAttributes = function () {
-        this.element.tabIndex = -1;
-        this.element.style.display = 'none';
-        this.element.dataset.ssid = this.main.config.id;
-    };
-    Select.prototype.addEventListeners = function () {
-        var _this = this;
-        this.element.addEventListener('change', function (e) {
-            _this.main.data.setSelectedFromSelect();
-            _this.main.render();
-        });
-    };
-    Select.prototype.addMutationObserver = function () {
-        var _this = this;
-        if (this.main.config.isAjax) {
-            return;
-        }
-        this.mutationObserver = new MutationObserver(function (mutations) {
-            if (!_this.triggerMutationObserver) {
-                return;
-            }
-            _this.main.data.parseSelectData();
-            _this.main.data.setSelectedFromSelect();
-            _this.main.render();
-            mutations.forEach(function (mutation) {
-                if (mutation.attributeName === 'class') {
-                    _this.main.slim.updateContainerDivClass(_this.main.slim.container);
-                }
-            });
-        });
-        this.observeMutationObserver();
-    };
-    Select.prototype.observeMutationObserver = function () {
-        if (!this.mutationObserver) {
-            return;
-        }
-        this.mutationObserver.observe(this.element, {
-            attributes: true,
-            childList: true,
-            characterData: true
-        });
-    };
-    Select.prototype.disconnectMutationObserver = function () {
-        if (this.mutationObserver) {
-            this.mutationObserver.disconnect();
-        }
-    };
-    Select.prototype.create = function (data) {
-        this.element.innerHTML = '';
-        for (var _i = 0, data_1 = data; _i < data_1.length; _i++) {
-            var d = data_1[_i];
-            if (d.hasOwnProperty('options')) {
-                var optgroupObject = d;
-                var optgroupEl = document.createElement('optgroup');
-                optgroupEl.label = optgroupObject.label;
-                if (optgroupObject.options) {
-                    for (var _a = 0, _b = optgroupObject.options; _a < _b.length; _a++) {
-                        var oo = _b[_a];
-                        optgroupEl.appendChild(this.createOption(oo));
-                    }
-                }
-                this.element.appendChild(optgroupEl);
-            }
-            else {
-                this.element.appendChild(this.createOption(d));
-            }
-        }
-    };
-    Select.prototype.createOption = function (info) {
-        var optionEl = document.createElement('option');
-        optionEl.value = info.value !== '' ? info.value : info.text;
-        optionEl.innerHTML = info.innerHTML || info.text;
-        if (info.selected) {
-            optionEl.selected = info.selected;
-        }
-        if (info.display === false) {
-            optionEl.style.display = 'none';
-        }
-        if (info.disabled) {
-            optionEl.disabled = true;
-        }
-        if (info.placeholder) {
-            optionEl.setAttribute('data-placeholder', 'true');
-        }
-        if (info.mandatory) {
-            optionEl.setAttribute('data-mandatory', 'true');
-        }
-        if (info["class"]) {
-            info["class"].split(' ').forEach(function (optionClass) {
-                optionEl.classList.add(optionClass);
-            });
-        }
-        if (info.data && typeof info.data === 'object') {
-            Object.keys(info.data).forEach(function (key) {
-                optionEl.setAttribute('data-' + helper_1.kebabCase(key), info.data[key]);
-            });
-        }
-        return optionEl;
-    };
-    return Select;
-}());
-exports.Select = Select;
-
-
-/***/ }),
-/* 5 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-exports.__esModule = true;
-var helper_1 = __webpack_require__(0);
-var data_1 = __webpack_require__(1);
-var Slim = (function () {
-    function Slim(info) {
-        this.main = info.main;
-        this.container = this.containerDiv();
-        this.content = this.contentDiv();
-        this.search = this.searchDiv();
-        this.list = this.listDiv();
-        this.options();
-        this.singleSelected = null;
-        this.multiSelected = null;
-        if (this.main.config.isMultiple) {
-            this.multiSelected = this.multiSelectedDiv();
-            if (this.multiSelected) {
-                this.container.appendChild(this.multiSelected.container);
-            }
-        }
-        else {
-            this.singleSelected = this.singleSelectedDiv();
-            this.container.appendChild(this.singleSelected.container);
-        }
-        if (this.main.config.addToBody) {
-            this.content.classList.add(this.main.config.id);
-            document.body.appendChild(this.content);
-        }
-        else {
-            this.container.appendChild(this.content);
-        }
-        this.content.appendChild(this.search.container);
-        this.content.appendChild(this.list);
-    }
-    Slim.prototype.containerDiv = function () {
-        var container = document.createElement('div');
-        container.style.cssText = this.main.config.style;
-        this.updateContainerDivClass(container);
-        return container;
-    };
-    Slim.prototype.updateContainerDivClass = function (container) {
-        this.main.config["class"] = this.main.select.element.className.split(' ');
-        container.className = '';
-        container.classList.add(this.main.config.id);
-        container.classList.add(this.main.config.main);
-        for (var _i = 0, _a = this.main.config["class"]; _i < _a.length; _i++) {
-            var c = _a[_i];
-            if (c.trim() !== '') {
-                container.classList.add(c);
-            }
-        }
-    };
-    Slim.prototype.singleSelectedDiv = function () {
-        var _this = this;
-        var container = document.createElement('div');
-        container.classList.add(this.main.config.singleSelected);
-        var placeholder = document.createElement('span');
-        placeholder.classList.add('placeholder');
-        container.appendChild(placeholder);
-        var deselect = document.createElement('span');
-        deselect.innerHTML = this.main.config.deselectLabel;
-        deselect.classList.add('ss-deselect');
-        deselect.onclick = function (e) {
-            e.stopPropagation();
-            if (!_this.main.config.isEnabled) {
-                return;
-            }
-            _this.main.set('');
-        };
-        container.appendChild(deselect);
-        var arrowContainer = document.createElement('span');
-        arrowContainer.classList.add(this.main.config.arrow);
-        var arrowIcon = document.createElement('span');
-        arrowIcon.classList.add('arrow-down');
-        arrowContainer.appendChild(arrowIcon);
-        container.appendChild(arrowContainer);
-        container.onclick = function () {
-            if (!_this.main.config.isEnabled) {
-                return;
-            }
-            _this.main.data.contentOpen ? _this.main.close() : _this.main.open();
-        };
-        return {
-            container: container,
-            placeholder: placeholder,
-            deselect: deselect,
-            arrowIcon: {
-                container: arrowContainer,
-                arrow: arrowIcon
-            }
-        };
-    };
-    Slim.prototype.placeholder = function () {
-        var selected = this.main.data.getSelected();
-        if (selected === null || (selected && selected.placeholder)) {
-            var placeholder = document.createElement('span');
-            placeholder.classList.add(this.main.config.disabled);
-            placeholder.innerHTML = this.main.config.placeholderText;
-            if (this.singleSelected) {
-                this.singleSelected.placeholder.innerHTML = placeholder.outerHTML;
-            }
-        }
-        else {
-            var selectedValue = '';
-            if (selected) {
-                selectedValue = selected.innerHTML && this.main.config.valuesUseText !== true ? selected.innerHTML : selected.text;
-            }
-            if (this.singleSelected) {
-                this.singleSelected.placeholder.innerHTML = (selected ? selectedValue : '');
-            }
-        }
-    };
-    Slim.prototype.deselect = function () {
-        if (this.singleSelected) {
-            if (!this.main.config.allowDeselect) {
-                this.singleSelected.deselect.classList.add('ss-hide');
-                return;
-            }
-            if (this.main.selected() === '') {
-                this.singleSelected.deselect.classList.add('ss-hide');
-            }
-            else {
-                this.singleSelected.deselect.classList.remove('ss-hide');
-            }
-        }
-    };
-    Slim.prototype.multiSelectedDiv = function () {
-        var _this = this;
-        var container = document.createElement('div');
-        container.classList.add(this.main.config.multiSelected);
-        var values = document.createElement('div');
-        values.classList.add(this.main.config.values);
-        container.appendChild(values);
-        var add = document.createElement('div');
-        add.classList.add(this.main.config.add);
-        var plus = document.createElement('span');
-        plus.classList.add(this.main.config.plus);
-        plus.onclick = function (e) {
-            if (_this.main.data.contentOpen) {
-                _this.main.close();
-                e.stopPropagation();
-            }
-        };
-        add.appendChild(plus);
-        container.appendChild(add);
-        container.onclick = function (e) {
-            if (!_this.main.config.isEnabled) {
-                return;
-            }
-            var target = e.target;
-            if (!target.classList.contains(_this.main.config.valueDelete)) {
-                _this.main.data.contentOpen ? _this.main.close() : _this.main.open();
-            }
-        };
-        return {
-            container: container,
-            values: values,
-            add: add,
-            plus: plus
-        };
-    };
-    Slim.prototype.values = function () {
-        if (!this.multiSelected) {
-            return;
-        }
-        var currentNodes = this.multiSelected.values.childNodes;
-        var selected = this.main.data.getSelected();
-        var exists;
-        var nodesToRemove = [];
-        for (var _i = 0, currentNodes_1 = currentNodes; _i < currentNodes_1.length; _i++) {
-            var c = currentNodes_1[_i];
-            exists = true;
-            for (var _a = 0, selected_1 = selected; _a < selected_1.length; _a++) {
-                var s = selected_1[_a];
-                if (String(s.id) === String(c.dataset.id)) {
-                    exists = false;
-                }
-            }
-            if (exists) {
-                nodesToRemove.push(c);
-            }
-        }
-        for (var _b = 0, nodesToRemove_1 = nodesToRemove; _b < nodesToRemove_1.length; _b++) {
-            var n = nodesToRemove_1[_b];
-            n.classList.add('ss-out');
-            this.multiSelected.values.removeChild(n);
-        }
-        currentNodes = this.multiSelected.values.childNodes;
-        for (var s = 0; s < selected.length; s++) {
-            exists = false;
-            for (var _c = 0, currentNodes_2 = currentNodes; _c < currentNodes_2.length; _c++) {
-                var c = currentNodes_2[_c];
-                if (String(selected[s].id) === String(c.dataset.id)) {
-                    exists = true;
-                }
-            }
-            if (!exists) {
-                if (currentNodes.length === 0 || !HTMLElement.prototype.insertAdjacentElement) {
-                    this.multiSelected.values.appendChild(this.valueDiv(selected[s]));
-                }
-                else if (s === 0) {
-                    this.multiSelected.values.insertBefore(this.valueDiv(selected[s]), currentNodes[s]);
-                }
-                else {
-                    currentNodes[s - 1].insertAdjacentElement('afterend', this.valueDiv(selected[s]));
-                }
-            }
-        }
-        if (selected.length === 0) {
-            var placeholder = document.createElement('span');
-            placeholder.classList.add(this.main.config.disabled);
-            placeholder.innerHTML = this.main.config.placeholderText;
-            this.multiSelected.values.innerHTML = placeholder.outerHTML;
-        }
-    };
-    Slim.prototype.valueDiv = function (optionObj) {
-        var _this = this;
-        var value = document.createElement('div');
-        value.classList.add(this.main.config.value);
-        value.dataset.id = optionObj.id;
-        var text = document.createElement('span');
-        text.classList.add(this.main.config.valueText);
-        text.innerHTML = (optionObj.innerHTML && this.main.config.valuesUseText !== true ? optionObj.innerHTML : optionObj.text);
-        value.appendChild(text);
-        if (!optionObj.mandatory) {
-            var deleteSpan = document.createElement('span');
-            deleteSpan.classList.add(this.main.config.valueDelete);
-            deleteSpan.innerHTML = this.main.config.deselectLabel;
-            deleteSpan.onclick = function (e) {
-                e.preventDefault();
-                e.stopPropagation();
-                var shouldUpdate = false;
-                if (!_this.main.beforeOnChange) {
-                    shouldUpdate = true;
-                }
-                if (_this.main.beforeOnChange) {
-                    var selected = _this.main.data.getSelected();
-                    var currentValues = JSON.parse(JSON.stringify(selected));
-                    for (var i = 0; i < currentValues.length; i++) {
-                        if (currentValues[i].id === optionObj.id) {
-                            currentValues.splice(i, 1);
-                        }
-                    }
-                    var beforeOnchange = _this.main.beforeOnChange(currentValues);
-                    if (beforeOnchange !== false) {
-                        shouldUpdate = true;
-                    }
-                }
-                if (shouldUpdate) {
-                    _this.main.data.removeFromSelected(optionObj.id, 'id');
-                    _this.main.render();
-                    _this.main.select.setValue();
-                    _this.main.data.onDataChange();
-                }
-            };
-            value.appendChild(deleteSpan);
-        }
-        return value;
-    };
-    Slim.prototype.contentDiv = function () {
-        var container = document.createElement('div');
-        container.classList.add(this.main.config.content);
-        return container;
-    };
-    Slim.prototype.searchDiv = function () {
-        var _this = this;
-        var container = document.createElement('div');
-        var input = document.createElement('input');
-        var addable = document.createElement('div');
-        container.classList.add(this.main.config.search);
-        var searchReturn = {
-            container: container,
-            input: input
-        };
-        if (!this.main.config.showSearch) {
-            container.classList.add(this.main.config.hide);
-            input.readOnly = true;
-        }
-        input.type = 'search';
-        input.placeholder = this.main.config.searchPlaceholder;
-        input.tabIndex = 0;
-        input.setAttribute('aria-label', this.main.config.searchPlaceholder);
-        input.setAttribute('autocapitalize', 'off');
-        input.setAttribute('autocomplete', 'off');
-        input.setAttribute('autocorrect', 'off');
-        input.onclick = function (e) {
-            setTimeout(function () {
-                var target = e.target;
-                if (target.value === '') {
-                    _this.main.search('');
-                }
-            }, 10);
-        };
-        input.onkeydown = function (e) {
-            if (e.key === 'ArrowUp') {
-                _this.main.open();
-                _this.highlightUp();
-                e.preventDefault();
-            }
-            else if (e.key === 'ArrowDown') {
-                _this.main.open();
-                _this.highlightDown();
-                e.preventDefault();
-            }
-            else if (e.key === 'Tab') {
-                if (!_this.main.data.contentOpen) {
-                    setTimeout(function () { _this.main.close(); }, _this.main.config.timeoutDelay);
-                }
-                else {
-                    _this.main.close();
-                }
-            }
-            else if (e.key === 'Enter') {
-                e.preventDefault();
-            }
-        };
-        input.onkeyup = function (e) {
-            var target = e.target;
-            if (e.key === 'Enter') {
-                if (_this.main.addable && e.ctrlKey) {
-                    addable.click();
-                    e.preventDefault();
-                    e.stopPropagation();
-                    return;
-                }
-                var highlighted = _this.list.querySelector('.' + _this.main.config.highlighted);
-                if (highlighted) {
-                    highlighted.click();
-                }
-            }
-            else if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {
-            }
-            else if (e.key === 'Escape') {
-                _this.main.close();
-            }
-            else {
-                if (_this.main.config.showSearch && _this.main.data.contentOpen) {
-                    _this.main.search(target.value);
-                }
-                else {
-                    input.value = '';
-                }
-            }
-            e.preventDefault();
-            e.stopPropagation();
-        };
-        input.onfocus = function () { _this.main.open(); };
-        container.appendChild(input);
-        if (this.main.addable) {
-            addable.classList.add(this.main.config.addable);
-            addable.innerHTML = '+';
-            addable.onclick = function (e) {
-                if (_this.main.addable) {
-                    e.preventDefault();
-                    e.stopPropagation();
-                    var inputValue = _this.search.input.value;
-                    if (inputValue.trim() === '') {
-                        _this.search.input.focus();
-                        return;
-                    }
-                    var addableValue = _this.main.addable(inputValue);
-                    var addableValueStr_1 = '';
-                    if (!addableValue) {
-                        return;
-                    }
-                    if (typeof addableValue === 'object') {
-                        var validValue = data_1.validateOption(addableValue);
-                        if (validValue) {
-                            _this.main.addData(addableValue);
-                            addableValueStr_1 = (addableValue.value ? addableValue.value : addableValue.text);
-                        }
-                    }
-                    else {
-                        _this.main.addData(_this.main.data.newOption({
-                            text: addableValue,
-                            value: addableValue
-                        }));
-                        addableValueStr_1 = addableValue;
-                    }
-                    _this.main.search('');
-                    setTimeout(function () {
-                        _this.main.set(addableValueStr_1, 'value', false, false);
-                    }, 100);
-                    if (_this.main.config.closeOnSelect) {
-                        setTimeout(function () {
-                            _this.main.close();
-                        }, 100);
-                    }
-                }
-            };
-            container.appendChild(addable);
-            searchReturn.addable = addable;
-        }
-        return searchReturn;
-    };
-    Slim.prototype.highlightUp = function () {
-        var highlighted = this.list.querySelector('.' + this.main.config.highlighted);
-        var prev = null;
-        if (highlighted) {
-            prev = highlighted.previousSibling;
-            while (prev !== null) {
-                if (prev.classList.contains(this.main.config.disabled)) {
-                    prev = prev.previousSibling;
-                    continue;
-                }
-                else {
-                    break;
-                }
-            }
-        }
-        else {
-            var allOptions = this.list.querySelectorAll('.' + this.main.config.option + ':not(.' + this.main.config.disabled + ')');
-            prev = allOptions[allOptions.length - 1];
-        }
-        if (prev && prev.classList.contains(this.main.config.optgroupLabel)) {
-            prev = null;
-        }
-        if (prev === null) {
-            var parent_1 = highlighted.parentNode;
-            if (parent_1.classList.contains(this.main.config.optgroup)) {
-                if (parent_1.previousSibling) {
-                    var prevNodes = parent_1.previousSibling.querySelectorAll('.' + this.main.config.option + ':not(.' + this.main.config.disabled + ')');
-                    if (prevNodes.length) {
-                        prev = prevNodes[prevNodes.length - 1];
-                    }
-                }
-            }
-        }
-        if (prev) {
-            if (highlighted) {
-                highlighted.classList.remove(this.main.config.highlighted);
-            }
-            prev.classList.add(this.main.config.highlighted);
-            helper_1.ensureElementInView(this.list, prev);
-        }
-    };
-    Slim.prototype.highlightDown = function () {
-        var highlighted = this.list.querySelector('.' + this.main.config.highlighted);
-        var next = null;
-        if (highlighted) {
-            next = highlighted.nextSibling;
-            while (next !== null) {
-                if (next.classList.contains(this.main.config.disabled)) {
-                    next = next.nextSibling;
-                    continue;
-                }
-                else {
-                    break;
-                }
-            }
-        }
-        else {
-            next = this.list.querySelector('.' + this.main.config.option + ':not(.' + this.main.config.disabled + ')');
-        }
-        if (next === null && highlighted !== null) {
-            var parent_2 = highlighted.parentNode;
-            if (parent_2.classList.contains(this.main.config.optgroup)) {
-                if (parent_2.nextSibling) {
-                    var sibling = parent_2.nextSibling;
-                    next = sibling.querySelector('.' + this.main.config.option + ':not(.' + this.main.config.disabled + ')');
-                }
-            }
-        }
-        if (next) {
-            if (highlighted) {
-                highlighted.classList.remove(this.main.config.highlighted);
-            }
-            next.classList.add(this.main.config.highlighted);
-            helper_1.ensureElementInView(this.list, next);
-        }
-    };
-    Slim.prototype.listDiv = function () {
-        var list = document.createElement('div');
-        list.classList.add(this.main.config.list);
-        return list;
-    };
-    Slim.prototype.options = function (content) {
-        if (content === void 0) { content = ''; }
-        var data = this.main.data.filtered || this.main.data.data;
-        this.list.innerHTML = '';
-        if (content !== '') {
-            var searching = document.createElement('div');
-            searching.classList.add(this.main.config.option);
-            searching.classList.add(this.main.config.disabled);
-            searching.innerHTML = content;
-            this.list.appendChild(searching);
-            return;
-        }
-        if (this.main.config.isAjax && this.main.config.isSearching) {
-            var searching = document.createElement('div');
-            searching.classList.add(this.main.config.option);
-            searching.classList.add(this.main.config.disabled);
-            searching.innerHTML = this.main.config.searchingText;
-            this.list.appendChild(searching);
-            return;
-        }
-        if (data.length === 0) {
-            var noResults = document.createElement('div');
-            noResults.classList.add(this.main.config.option);
-            noResults.classList.add(this.main.config.disabled);
-            noResults.innerHTML = this.main.config.searchText;
-            this.list.appendChild(noResults);
-            return;
-        }
-        var _loop_1 = function (d) {
-            if (d.hasOwnProperty('label')) {
-                var item = d;
-                var optgroupEl_1 = document.createElement('div');
-                optgroupEl_1.classList.add(this_1.main.config.optgroup);
-                var optgroupLabel = document.createElement('div');
-                optgroupLabel.classList.add(this_1.main.config.optgroupLabel);
-                if (this_1.main.config.selectByGroup && this_1.main.config.isMultiple) {
-                    optgroupLabel.classList.add(this_1.main.config.optgroupLabelSelectable);
-                }
-                optgroupLabel.innerHTML = item.label;
-                optgroupEl_1.appendChild(optgroupLabel);
-                var options = item.options;
-                if (options) {
-                    for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {
-                        var o = options_1[_i];
-                        optgroupEl_1.appendChild(this_1.option(o));
-                    }
-                    if (this_1.main.config.selectByGroup && this_1.main.config.isMultiple) {
-                        var master_1 = this_1;
-                        optgroupLabel.addEventListener('click', function (e) {
-                            e.preventDefault();
-                            e.stopPropagation();
-                            for (var _i = 0, _a = optgroupEl_1.children; _i < _a.length; _i++) {
-                                var childEl = _a[_i];
-                                if (childEl.className.indexOf(master_1.main.config.option) !== -1) {
-                                    childEl.click();
-                                }
-                            }
-                        });
-                    }
-                }
-                this_1.list.appendChild(optgroupEl_1);
-            }
-            else {
-                this_1.list.appendChild(this_1.option(d));
-            }
-        };
-        var this_1 = this;
-        for (var _i = 0, data_2 = data; _i < data_2.length; _i++) {
-            var d = data_2[_i];
-            _loop_1(d);
-        }
-    };
-    Slim.prototype.option = function (data) {
-        if (data.placeholder) {
-            var placeholder = document.createElement('div');
-            placeholder.classList.add(this.main.config.option);
-            placeholder.classList.add(this.main.config.hide);
-            return placeholder;
-        }
-        var optionEl = document.createElement('div');
-        optionEl.classList.add(this.main.config.option);
-        if (data["class"]) {
-            data["class"].split(' ').forEach(function (dataClass) {
-                optionEl.classList.add(dataClass);
-            });
-        }
-        if (data.style) {
-            optionEl.style.cssText = data.style;
-        }
-        var selected = this.main.data.getSelected();
-        optionEl.dataset.id = data.id;
-        if (this.main.config.searchHighlight && this.main.slim && data.innerHTML && this.main.slim.search.input.value.trim() !== '') {
-            optionEl.innerHTML = helper_1.highlight(data.innerHTML, this.main.slim.search.input.value, this.main.config.searchHighlighter);
-        }
-        else if (data.innerHTML) {
-            optionEl.innerHTML = data.innerHTML;
-        }
-        if (this.main.config.showOptionTooltips && optionEl.textContent) {
-            optionEl.setAttribute('title', optionEl.textContent);
-        }
-        var master = this;
-        optionEl.addEventListener('click', function (e) {
-            e.preventDefault();
-            e.stopPropagation();
-            var element = this;
-            var elementID = element.dataset.id;
-            if (data.selected === true && master.main.config.allowDeselectOption) {
-                var shouldUpdate = false;
-                if (!master.main.beforeOnChange || !master.main.config.isMultiple) {
-                    shouldUpdate = true;
-                }
-                if (master.main.beforeOnChange && master.main.config.isMultiple) {
-                    var selectedValues = master.main.data.getSelected();
-                    var currentValues = JSON.parse(JSON.stringify(selectedValues));
-                    for (var i = 0; i < currentValues.length; i++) {
-                        if (currentValues[i].id === elementID) {
-                            currentValues.splice(i, 1);
-                        }
-                    }
-                    var beforeOnchange = master.main.beforeOnChange(currentValues);
-                    if (beforeOnchange !== false) {
-                        shouldUpdate = true;
-                    }
-                }
-                if (shouldUpdate) {
-                    if (master.main.config.isMultiple) {
-                        master.main.data.removeFromSelected(elementID, 'id');
-                        master.main.render();
-                        master.main.select.setValue();
-                        master.main.data.onDataChange();
-                    }
-                    else {
-                        master.main.set('');
-                    }
-                }
-            }
-            else {
-                if (data.disabled || data.selected) {
-                    return;
-                }
-                if (master.main.config.limit && Array.isArray(selected) && master.main.config.limit <= selected.length) {
-                    return;
-                }
-                if (master.main.beforeOnChange) {
-                    var value = void 0;
-                    var objectInfo = JSON.parse(JSON.stringify(master.main.data.getObjectFromData(elementID)));
-                    objectInfo.selected = true;
-                    if (master.main.config.isMultiple) {
-                        value = JSON.parse(JSON.stringify(selected));
-                        value.push(objectInfo);
-                    }
-                    else {
-                        value = JSON.parse(JSON.stringify(objectInfo));
-                    }
-                    var beforeOnchange = master.main.beforeOnChange(value);
-                    if (beforeOnchange !== false) {
-                        master.main.set(elementID, 'id', master.main.config.closeOnSelect);
-                    }
-                }
-                else {
-                    master.main.set(elementID, 'id', master.main.config.closeOnSelect);
-                }
-            }
-        });
-        var isSelected = selected && helper_1.isValueInArrayOfObjects(selected, 'id', data.id);
-        if (data.disabled || isSelected) {
-            optionEl.onclick = null;
-            if (!master.main.config.allowDeselectOption) {
-                optionEl.classList.add(this.main.config.disabled);
-            }
-            if (master.main.config.hideSelectedOption) {
-                optionEl.classList.add(this.main.config.hide);
-            }
-        }
-        if (isSelected) {
-            optionEl.classList.add(this.main.config.optionSelected);
-        }
-        else {
-            optionEl.classList.remove(this.main.config.optionSelected);
-        }
-        return optionEl;
-    };
-    return Slim;
-}());
-exports.Slim = Slim;
-
-
-/***/ })
-/******/ ])["default"];
-});
\ No newline at end of file
diff --git a/app/static/vendors/slimselect/slimselect.min.css b/app/static/vendors/slimselect/slimselect.min.css
deleted file mode 100644 (file)
index 753635a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-.ss-main{position:relative;display:inline-block;user-select:none;color:#666;width:100%}.ss-main .ss-single-selected{display:flex;cursor:pointer;width:100%;height:30px;padding:6px;border:1px solid #dcdee2;border-radius:4px;background-color:#fff;outline:0;box-sizing:border-box;transition:background-color .2s}.ss-main .ss-single-selected.ss-disabled{background-color:#dcdee2;cursor:not-allowed}.ss-main .ss-single-selected.ss-open-above{border-top-left-radius:0;border-top-right-radius:0}.ss-main .ss-single-selected.ss-open-below{border-bottom-left-radius:0;border-bottom-right-radius:0}.ss-main .ss-single-selected .placeholder{display:flex;flex:1 1 100%;align-items:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;width:calc(100% - 30px);line-height:1em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ss-main .ss-single-selected .placeholder *{display:flex;align-items:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:auto}.ss-main .ss-single-selected .placeholder .ss-disabled{color:#dedede}.ss-main .ss-single-selected .ss-deselect{display:flex;align-items:center;justify-content:flex-end;flex:0 1 auto;margin:0 6px 0 6px;font-weight:700}.ss-main .ss-single-selected .ss-deselect.ss-hide{display:none}.ss-main .ss-single-selected .ss-arrow{display:flex;align-items:center;justify-content:flex-end;flex:0 1 auto;margin:0 6px 0 6px}.ss-main .ss-single-selected .ss-arrow span{border:solid #666;border-width:0 2px 2px 0;display:inline-block;padding:3px;transition:transform .2s,margin .2s}.ss-main .ss-single-selected .ss-arrow span.arrow-up{transform:rotate(-135deg);margin:3px 0 0 0}.ss-main .ss-single-selected .ss-arrow span.arrow-down{transform:rotate(45deg);margin:-3px 0 0 0}.ss-main .ss-multi-selected{display:flex;flex-direction:row;cursor:pointer;min-height:30px;width:100%;padding:0 0 0 3px;border:1px solid #dcdee2;border-radius:4px;background-color:#fff;outline:0;box-sizing:border-box;transition:background-color .2s}.ss-main .ss-multi-selected.ss-disabled{background-color:#dcdee2;cursor:not-allowed}.ss-main .ss-multi-selected.ss-disabled .ss-values .ss-disabled{color:#666}.ss-main .ss-multi-selected.ss-disabled .ss-values .ss-value .ss-value-delete{cursor:not-allowed}.ss-main .ss-multi-selected.ss-open-above{border-top-left-radius:0;border-top-right-radius:0}.ss-main .ss-multi-selected.ss-open-below{border-bottom-left-radius:0;border-bottom-right-radius:0}.ss-main .ss-multi-selected .ss-values{display:flex;flex-wrap:wrap;justify-content:flex-start;flex:1 1 100%;width:calc(100% - 30px)}.ss-main .ss-multi-selected .ss-values .ss-disabled{display:flex;padding:4px 5px;margin:2px 0;line-height:1em;align-items:center;width:100%;color:#dedede;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@keyframes scaleIn{0%{transform:scale(0);opacity:0}100%{transform:scale(1);opacity:1}}@keyframes scaleOut{0%{transform:scale(1);opacity:1}100%{transform:scale(0);opacity:0}}.ss-main .ss-multi-selected .ss-values .ss-value{display:flex;user-select:none;align-items:center;font-size:12px;padding:3px 5px;margin:3px 5px 3px 0;color:#fff;background-color:#5897fb;border-radius:4px;animation-name:scaleIn;animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:both}.ss-main .ss-multi-selected .ss-values .ss-value.ss-out{animation-name:scaleOut;animation-duration:.2s;animation-timing-function:ease-out}.ss-main .ss-multi-selected .ss-values .ss-value .ss-value-delete{margin:0 0 0 5px;cursor:pointer}.ss-main .ss-multi-selected .ss-add{display:flex;flex:0 1 3px;margin:9px 12px 0 5px}.ss-main .ss-multi-selected .ss-add .ss-plus{display:flex;justify-content:center;align-items:center;background:#666;position:relative;height:10px;width:2px;transition:transform .2s}.ss-main .ss-multi-selected .ss-add .ss-plus:after{background:#666;content:"";position:absolute;height:2px;width:10px;left:-4px;top:4px}.ss-main .ss-multi-selected .ss-add .ss-plus.ss-cross{transform:rotate(45deg)}.ss-content{position:absolute;width:100%;margin:-1px 0 0 0;box-sizing:border-box;border:solid 1px #dcdee2;z-index:1010;background-color:#fff;transform-origin:center top;transition:transform .2s,opacity .2s;opacity:0;transform:scaleY(0)}.ss-content.ss-open{display:block;opacity:1;transform:scaleY(1)}.ss-content .ss-search{display:flex;flex-direction:row;padding:8px 8px 6px 8px}.ss-content .ss-search.ss-hide{height:0;opacity:0;padding:0;margin:0}.ss-content .ss-search.ss-hide input{height:0;opacity:0;padding:0;margin:0}.ss-content .ss-search input{display:inline-flex;font-size:inherit;line-height:inherit;flex:1 1 auto;width:100%;min-width:0;height:30px;padding:6px 8px;margin:0;border:1px solid #dcdee2;border-radius:4px;background-color:#fff;outline:0;text-align:left;box-sizing:border-box;-webkit-box-sizing:border-box;-webkit-appearance:textfield}.ss-content .ss-search input::placeholder{color:#8a8a8a;vertical-align:middle}.ss-content .ss-search input:focus{box-shadow:0 0 5px #5897fb}.ss-content .ss-search .ss-addable{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;font-size:22px;font-weight:700;flex:0 0 30px;height:30px;margin:0 0 0 8px;border:1px solid #dcdee2;border-radius:4px;box-sizing:border-box}.ss-content .ss-addable{padding-top:0}.ss-content .ss-list{max-height:200px;overflow-x:hidden;overflow-y:auto;text-align:left}.ss-content .ss-list .ss-optgroup .ss-optgroup-label{padding:6px 10px 6px 10px;font-weight:700}.ss-content .ss-list .ss-optgroup .ss-option{padding:6px 6px 6px 25px}.ss-content .ss-list .ss-optgroup-label-selectable{cursor:pointer}.ss-content .ss-list .ss-optgroup-label-selectable:hover{color:#fff;background-color:#5897fb}.ss-content .ss-list .ss-option{padding:6px 10px 6px 10px;cursor:pointer;user-select:none}.ss-content .ss-list .ss-option *{display:inline-block}.ss-content .ss-list .ss-option.ss-highlighted,.ss-content .ss-list .ss-option:hover{color:#fff;background-color:#5897fb}.ss-content .ss-list .ss-option.ss-disabled{cursor:not-allowed;color:#dedede;background-color:#fff}.ss-content .ss-list .ss-option:not(.ss-disabled).ss-option-selected{color:#666;background-color:rgba(88,151,251,.1)}.ss-content .ss-list .ss-option.ss-hide{display:none}.ss-content .ss-list .ss-option .ss-search-highlight{background-color:#fffb8c}
\ No newline at end of file
diff --git a/app/static/vendors/slimselect/slimselect.min.js b/app/static/vendors/slimselect/slimselect.min.js
deleted file mode 100644 (file)
index 8638634..0000000
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.SlimSelect=t():e.SlimSelect=t()}(window,function(){return s={},n.m=i=[function(e,t,i){"use strict";function s(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var i=document.createEvent("CustomEvent");return i.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),i}var n;t.__esModule=!0,t.hasClassInTree=function(e,t){function s(e,t){return t&&e&&e.classList&&e.classList.contains(t)?e:null}return s(e,t)||function e(t,i){return t&&t!==document?s(t,i)?t:e(t.parentNode,i):null}(e,t)},t.ensureElementInView=function(e,t){var i=e.scrollTop+e.offsetTop,s=i+e.clientHeight,n=t.offsetTop,a=n+t.clientHeight;n<i?e.scrollTop-=i-n:s<a&&(e.scrollTop+=a-s)},t.putContent=function(e,t,i){var s=e.offsetHeight,n=e.getBoundingClientRect(),a=i?n.top:n.top-s,o=i?n.bottom:n.bottom+s;return a<=0?"below":o>=window.innerHeight?"above":i?t:"below"},t.debounce=function(n,a,o){var l;return void 0===a&&(a=100),void 0===o&&(o=!1),function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var i=self,s=o&&!l;clearTimeout(l),l=setTimeout(function(){l=null,o||n.apply(i,e)},a),s&&n.apply(i,e)}},t.isValueInArrayOfObjects=function(e,t,i){if(!Array.isArray(e))return e[t]===i;for(var s=0,n=e;s<n.length;s++){var a=n[s];if(a&&a[t]&&a[t]===i)return!0}return!1},t.highlight=function(e,t,i){var s=e,n=new RegExp("("+t.trim()+")(?![^<]*>[^<>]*</)","i");if(!e.match(n))return e;var a=e.match(n).index,o=a+e.match(n)[0].toString().length,l=e.substring(a,o);return s=s.replace(n,'<mark class="'+i+'">'+l+"</mark>")},t.kebabCase=function(e){var t=e.replace(/[A-Z\u00C0-\u00D6\u00D8-\u00DE]/g,function(e){return"-"+e.toLowerCase()});return e[0]===e[0].toUpperCase()?t.substring(1):t},"function"!=typeof(n=window).CustomEvent&&(s.prototype=n.Event.prototype,n.CustomEvent=s)},function(e,t,i){"use strict";t.__esModule=!0;var s=(n.prototype.newOption=function(e){return{id:e.id?e.id:String(Math.floor(1e8*Math.random())),value:e.value?e.value:"",text:e.text?e.text:"",innerHTML:e.innerHTML?e.innerHTML:"",selected:!!e.selected&&e.selected,display:void 0===e.display||e.display,disabled:!!e.disabled&&e.disabled,placeholder:!!e.placeholder&&e.placeholder,class:e.class?e.class:void 0,data:e.data?e.data:{},mandatory:!!e.mandatory&&e.mandatory}},n.prototype.add=function(e){this.data.push({id:String(Math.floor(1e8*Math.random())),value:e.value,text:e.text,innerHTML:"",selected:!1,display:!0,disabled:!1,placeholder:!1,class:void 0,mandatory:e.mandatory,data:{}})},n.prototype.parseSelectData=function(){this.data=[];for(var e=0,t=this.main.select.element.childNodes;e<t.length;e++){var i=t[e];if("OPTGROUP"===i.nodeName){for(var s={label:i.label,options:[]},n=0,a=i.childNodes;n<a.length;n++){var o=a[n];if("OPTION"===o.nodeName){var l=this.pullOptionData(o);s.options.push(l),l.placeholder&&""!==l.text.trim()&&(this.main.config.placeholderText=l.text)}}this.data.push(s)}else"OPTION"===i.nodeName&&(l=this.pullOptionData(i),this.data.push(l),l.placeholder&&""!==l.text.trim()&&(this.main.config.placeholderText=l.text))}},n.prototype.pullOptionData=function(e){return{id:!!e.dataset&&e.dataset.id||String(Math.floor(1e8*Math.random())),value:e.value,text:e.text,innerHTML:e.innerHTML,selected:e.selected,disabled:e.disabled,placeholder:"true"===e.dataset.placeholder,class:e.className,style:e.style.cssText,data:e.dataset,mandatory:!!e.dataset&&"true"===e.dataset.mandatory}},n.prototype.setSelectedFromSelect=function(){if(this.main.config.isMultiple){for(var e=[],t=0,i=this.main.select.element.options;t<i.length;t++){var s=i[t];if(s.selected){var n=this.getObjectFromData(s.value,"value");n&&n.id&&e.push(n.id)}}this.setSelected(e,"id")}else{var a=this.main.select.element;if(-1!==a.selectedIndex){var o=a.options[a.selectedIndex].value;this.setSelected(o,"value")}}},n.prototype.setSelected=function(e,t){void 0===t&&(t="id");for(var i=0,s=this.data;i<s.length;i++){var n=s[i];if(n.hasOwnProperty("label")){if(n.hasOwnProperty("options")){var a=n.options;if(a)for(var o=0,l=a;o<l.length;o++){var r=l[o];r.placeholder||(r.selected=this.shouldBeSelected(r,e,t))}}}else n.selected=this.shouldBeSelected(n,e,t)}},n.prototype.shouldBeSelected=function(e,t,i){if(void 0===i&&(i="id"),Array.isArray(t))for(var s=0,n=t;s<n.length;s++){var a=n[s];if(i in e&&String(e[i])===String(a))return!0}else if(i in e&&String(e[i])===String(t))return!0;return!1},n.prototype.getSelected=function(){for(var e={text:"",placeholder:this.main.config.placeholderText},t=[],i=0,s=this.data;i<s.length;i++){var n=s[i];if(n.hasOwnProperty("label")){if(n.hasOwnProperty("options")){var a=n.options;if(a)for(var o=0,l=a;o<l.length;o++){var r=l[o];r.selected&&(this.main.config.isMultiple?t.push(r):e=r)}}}else n.selected&&(this.main.config.isMultiple?t.push(n):e=n)}return this.main.config.isMultiple?t:e},n.prototype.addToSelected=function(e,t){if(void 0===t&&(t="id"),this.main.config.isMultiple){var i=[],s=this.getSelected();if(Array.isArray(s))for(var n=0,a=s;n<a.length;n++){var o=a[n];i.push(o[t])}i.push(e),this.setSelected(i,t)}},n.prototype.removeFromSelected=function(e,t){if(void 0===t&&(t="id"),this.main.config.isMultiple){for(var i=[],s=0,n=this.getSelected();s<n.length;s++){var a=n[s];String(a[t])!==String(e)&&i.push(a[t])}this.setSelected(i,t)}},n.prototype.onDataChange=function(){this.main.onChange&&this.isOnChangeEnabled&&this.main.onChange(JSON.parse(JSON.stringify(this.getSelected())))},n.prototype.getObjectFromData=function(e,t){void 0===t&&(t="id");for(var i=0,s=this.data;i<s.length;i++){var n=s[i];if(t in n&&String(n[t])===String(e))return n;if(n.hasOwnProperty("options")&&n.options)for(var a=0,o=n.options;a<o.length;a++){var l=o[a];if(String(l[t])===String(e))return l}}return null},n.prototype.search=function(n){if(""!==(this.searchValue=n).trim()){var a=this.main.config.searchFilter,e=this.data.slice(0);n=n.trim();var t=e.map(function(e){if(e.hasOwnProperty("options")){var t=e,i=[];if(t.options&&(i=t.options.filter(function(e){return a(e,n)})),0!==i.length){var s=Object.assign({},t);return s.options=i,s}}return e.hasOwnProperty("text")&&a(e,n)?e:null});this.filtered=t.filter(function(e){return e})}else this.filtered=null},n);function n(e){this.contentOpen=!1,this.contentPosition="below",this.isOnChangeEnabled=!0,this.main=e.main,this.searchValue="",this.data=[],this.filtered=null,this.parseSelectData(),this.setSelectedFromSelect()}function r(e){return void 0!==e.text||(console.error("Data object option must have at least have a text value. Check object: "+JSON.stringify(e)),!1)}t.Data=s,t.validateData=function(e){if(!e)return console.error("Data must be an array of objects"),!1;for(var t=0,i=0,s=e;i<s.length;i++){var n=s[i];if(n.hasOwnProperty("label")){if(n.hasOwnProperty("options")){var a=n.options;if(a)for(var o=0,l=a;o<l.length;o++){r(l[o])||t++}}}else r(n)||t++}return 0===t},t.validateOption=r},function(e,t,i){"use strict";t.__esModule=!0;var s=i(3),n=i(4),a=i(5),o=i(1),l=i(0),r=(c.prototype.validate=function(e){var t="string"==typeof e.select?document.querySelector(e.select):e.select;if(!t)throw new Error("Could not find select element");if("SELECT"!==t.tagName)throw new Error("Element isnt of type select");return t},c.prototype.selected=function(){if(this.config.isMultiple){for(var e=[],t=0,i=n=this.data.getSelected();t<i.length;t++){var s=i[t];e.push(s.value)}return e}var n;return(n=this.data.getSelected())?n.value:""},c.prototype.set=function(e,t,i,s){void 0===t&&(t="value"),void 0===i&&(i=!0),void 0===s&&(s=!0),this.config.isMultiple&&!Array.isArray(e)?this.data.addToSelected(e,t):this.data.setSelected(e,t),this.select.setValue(),this.data.onDataChange(),this.render(),i&&this.close()},c.prototype.setSelected=function(e,t,i,s){void 0===t&&(t="value"),void 0===i&&(i=!0),void 0===s&&(s=!0),this.set(e,t,i,s)},c.prototype.setData=function(e){if(o.validateData(e)){var t=JSON.parse(JSON.stringify(e)),i=this.data.getSelected();if(this.config.isAjax&&i)if(this.config.isMultiple)for(var s=0,n=i.reverse();s<n.length;s++){var a=n[s];t.unshift(a)}else t.unshift(this.data.getSelected()),t.unshift({text:"",placeholder:!0});this.select.create(t),this.data.parseSelectData(),this.data.setSelectedFromSelect()}else console.error("Validation problem on: #"+this.select.element.id)},c.prototype.addData=function(e){o.validateData([e])?(this.data.add(this.data.newOption(e)),this.select.create(this.data.data),this.data.parseSelectData(),this.data.setSelectedFromSelect(),this.render()):console.error("Validation problem on: #"+this.select.element.id)},c.prototype.open=function(){var e=this;if(this.config.isEnabled&&!this.data.contentOpen){if(this.beforeOpen&&this.beforeOpen(),this.config.isMultiple&&this.slim.multiSelected?this.slim.multiSelected.plus.classList.add("ss-cross"):this.slim.singleSelected&&(this.slim.singleSelected.arrowIcon.arrow.classList.remove("arrow-down"),this.slim.singleSelected.arrowIcon.arrow.classList.add("arrow-up")),this.slim[this.config.isMultiple?"multiSelected":"singleSelected"].container.classList.add("above"===this.data.contentPosition?this.config.openAbove:this.config.openBelow),this.config.addToBody){var t=this.slim.container.getBoundingClientRect();this.slim.content.style.top=t.top+t.height+window.scrollY+"px",this.slim.content.style.left=t.left+window.scrollX+"px",this.slim.content.style.width=t.width+"px"}if(this.slim.content.classList.add(this.config.open),"up"===this.config.showContent.toLowerCase()||"down"!==this.config.showContent.toLowerCase()&&"above"===l.putContent(this.slim.content,this.data.contentPosition,this.data.contentOpen)?this.moveContentAbove():this.moveContentBelow(),!this.config.isMultiple){var i=this.data.getSelected();if(i){var s=i.id,n=this.slim.list.querySelector('[data-id="'+s+'"]');n&&l.ensureElementInView(this.slim.list,n)}}setTimeout(function(){e.data.contentOpen=!0,e.config.searchFocus&&e.slim.search.input.focus(),e.afterOpen&&e.afterOpen()},this.config.timeoutDelay)}},c.prototype.close=function(){var e=this;this.data.contentOpen&&(this.beforeClose&&this.beforeClose(),this.config.isMultiple&&this.slim.multiSelected?(this.slim.multiSelected.container.classList.remove(this.config.openAbove),this.slim.multiSelected.container.classList.remove(this.config.openBelow),this.slim.multiSelected.plus.classList.remove("ss-cross")):this.slim.singleSelected&&(this.slim.singleSelected.container.classList.remove(this.config.openAbove),this.slim.singleSelected.container.classList.remove(this.config.openBelow),this.slim.singleSelected.arrowIcon.arrow.classList.add("arrow-down"),this.slim.singleSelected.arrowIcon.arrow.classList.remove("arrow-up")),this.slim.content.classList.remove(this.config.open),this.data.contentOpen=!1,this.search(""),setTimeout(function(){e.slim.content.removeAttribute("style"),e.data.contentPosition="below",e.config.isMultiple&&e.slim.multiSelected?(e.slim.multiSelected.container.classList.remove(e.config.openAbove),e.slim.multiSelected.container.classList.remove(e.config.openBelow)):e.slim.singleSelected&&(e.slim.singleSelected.container.classList.remove(e.config.openAbove),e.slim.singleSelected.container.classList.remove(e.config.openBelow)),e.slim.search.input.blur(),e.afterClose&&e.afterClose()},this.config.timeoutDelay))},c.prototype.moveContentAbove=function(){var e=0;this.config.isMultiple&&this.slim.multiSelected?e=this.slim.multiSelected.container.offsetHeight:this.slim.singleSelected&&(e=this.slim.singleSelected.container.offsetHeight);var t=e+this.slim.content.offsetHeight-1;this.slim.content.style.margin="-"+t+"px 0 0 0",this.slim.content.style.height=t-e+1+"px",this.slim.content.style.transformOrigin="center bottom",this.data.contentPosition="above",this.config.isMultiple&&this.slim.multiSelected?(this.slim.multiSelected.container.classList.remove(this.config.openBelow),this.slim.multiSelected.container.classList.add(this.config.openAbove)):this.slim.singleSelected&&(this.slim.singleSelected.container.classList.remove(this.config.openBelow),this.slim.singleSelected.container.classList.add(this.config.openAbove))},c.prototype.moveContentBelow=function(){this.data.contentPosition="below",this.config.isMultiple&&this.slim.multiSelected?(this.slim.multiSelected.container.classList.remove(this.config.openAbove),this.slim.multiSelected.container.classList.add(this.config.openBelow)):this.slim.singleSelected&&(this.slim.singleSelected.container.classList.remove(this.config.openAbove),this.slim.singleSelected.container.classList.add(this.config.openBelow))},c.prototype.enable=function(){this.config.isEnabled=!0,this.config.isMultiple&&this.slim.multiSelected?this.slim.multiSelected.container.classList.remove(this.config.disabled):this.slim.singleSelected&&this.slim.singleSelected.container.classList.remove(this.config.disabled),this.select.triggerMutationObserver=!1,this.select.element.disabled=!1,this.slim.search.input.disabled=!1,this.select.triggerMutationObserver=!0},c.prototype.disable=function(){this.config.isEnabled=!1,this.config.isMultiple&&this.slim.multiSelected?this.slim.multiSelected.container.classList.add(this.config.disabled):this.slim.singleSelected&&this.slim.singleSelected.container.classList.add(this.config.disabled),this.select.triggerMutationObserver=!1,this.select.element.disabled=!0,this.slim.search.input.disabled=!0,this.select.triggerMutationObserver=!0},c.prototype.search=function(t){if(this.data.searchValue!==t)if(this.slim.search.input.value=t,this.config.isAjax){var i=this;this.config.isSearching=!0,this.render(),this.ajax&&this.ajax(t,function(e){i.config.isSearching=!1,Array.isArray(e)?(e.unshift({text:"",placeholder:!0}),i.setData(e),i.data.search(t),i.render()):"string"==typeof e?i.slim.options(e):i.render()})}else this.data.search(t),this.render()},c.prototype.setSearchText=function(e){this.config.searchText=e},c.prototype.render=function(){this.config.isMultiple?this.slim.values():(this.slim.placeholder(),this.slim.deselect()),this.slim.options()},c.prototype.destroy=function(e){void 0===e&&(e=null);var t=e?document.querySelector("."+e+".ss-main"):this.slim.container,i=e?document.querySelector("[data-ssid="+e+"]"):this.select.element;if(t&&i&&(i.style.display="",delete i.dataset.ssid,i.slim=null,t.parentElement&&t.parentElement.removeChild(t),this.config.addToBody)){var s=e?document.querySelector("."+e+".ss-content"):this.slim.content;if(!s)return;document.body.removeChild(s)}},c);function c(e){var t=this;this.ajax=null,this.addable=null,this.beforeOnChange=null,this.onChange=null,this.beforeOpen=null,this.afterOpen=null,this.beforeClose=null,this.afterClose=null;var i=this.validate(e);i.dataset.ssid&&this.destroy(i.dataset.ssid),e.ajax&&(this.ajax=e.ajax),e.addable&&(this.addable=e.addable),this.config=new s.Config({select:i,isAjax:!!e.ajax,showSearch:e.showSearch,searchPlaceholder:e.searchPlaceholder,searchText:e.searchText,searchingText:e.searchingText,searchFocus:e.searchFocus,searchHighlight:e.searchHighlight,searchFilter:e.searchFilter,closeOnSelect:e.closeOnSelect,showContent:e.showContent,placeholderText:e.placeholder,allowDeselect:e.allowDeselect,allowDeselectOption:e.allowDeselectOption,hideSelectedOption:e.hideSelectedOption,deselectLabel:e.deselectLabel,isEnabled:e.isEnabled,valuesUseText:e.valuesUseText,showOptionTooltips:e.showOptionTooltips,selectByGroup:e.selectByGroup,limit:e.limit,timeoutDelay:e.timeoutDelay,addToBody:e.addToBody}),this.select=new n.Select({select:i,main:this}),this.data=new o.Data({main:this}),this.slim=new a.Slim({main:this}),this.select.element.parentNode&&this.select.element.parentNode.insertBefore(this.slim.container,this.select.element.nextSibling),e.data?this.setData(e.data):this.render(),document.addEventListener("click",function(e){e.target&&!l.hasClassInTree(e.target,t.config.id)&&t.close()}),"auto"===this.config.showContent&&window.addEventListener("scroll",l.debounce(function(e){t.data.contentOpen&&("above"===l.putContent(t.slim.content,t.data.contentPosition,t.data.contentOpen)?t.moveContentAbove():t.moveContentBelow())}),!1),e.beforeOnChange&&(this.beforeOnChange=e.beforeOnChange),e.onChange&&(this.onChange=e.onChange),e.beforeOpen&&(this.beforeOpen=e.beforeOpen),e.afterOpen&&(this.afterOpen=e.afterOpen),e.beforeClose&&(this.beforeClose=e.beforeClose),e.afterClose&&(this.afterClose=e.afterClose),this.config.isEnabled||this.disable()}t.default=r},function(e,t,i){"use strict";t.__esModule=!0;var s=(n.prototype.searchFilter=function(e,t){return-1!==e.text.toLowerCase().indexOf(t.toLowerCase())},n);function n(e){this.id="",this.isMultiple=!1,this.isAjax=!1,this.isSearching=!1,this.showSearch=!0,this.searchFocus=!0,this.searchHighlight=!1,this.closeOnSelect=!0,this.showContent="auto",this.searchPlaceholder="Search",this.searchText="No Results",this.searchingText="Searching...",this.placeholderText="Select Value",this.allowDeselect=!1,this.allowDeselectOption=!1,this.hideSelectedOption=!1,this.deselectLabel="x",this.isEnabled=!0,this.valuesUseText=!1,this.showOptionTooltips=!1,this.selectByGroup=!1,this.limit=0,this.timeoutDelay=200,this.addToBody=!1,this.main="ss-main",this.singleSelected="ss-single-selected",this.arrow="ss-arrow",this.multiSelected="ss-multi-selected",this.add="ss-add",this.plus="ss-plus",this.values="ss-values",this.value="ss-value",this.valueText="ss-value-text",this.valueDelete="ss-value-delete",this.content="ss-content",this.open="ss-open",this.openAbove="ss-open-above",this.openBelow="ss-open-below",this.search="ss-search",this.searchHighlighter="ss-search-highlight",this.addable="ss-addable",this.list="ss-list",this.optgroup="ss-optgroup",this.optgroupLabel="ss-optgroup-label",this.optgroupLabelSelectable="ss-optgroup-label-selectable",this.option="ss-option",this.optionSelected="ss-option-selected",this.highlighted="ss-highlighted",this.disabled="ss-disabled",this.hide="ss-hide",this.id="ss-"+Math.floor(1e5*Math.random()),this.style=e.select.style.cssText,this.class=e.select.className.split(" "),this.isMultiple=e.select.multiple,this.isAjax=e.isAjax,this.showSearch=!1!==e.showSearch,this.searchFocus=!1!==e.searchFocus,this.searchHighlight=!0===e.searchHighlight,this.closeOnSelect=!1!==e.closeOnSelect,e.showContent&&(this.showContent=e.showContent),this.isEnabled=!1!==e.isEnabled,e.searchPlaceholder&&(this.searchPlaceholder=e.searchPlaceholder),e.searchText&&(this.searchText=e.searchText),e.searchingText&&(this.searchingText=e.searchingText),e.placeholderText&&(this.placeholderText=e.placeholderText),this.allowDeselect=!0===e.allowDeselect,this.allowDeselectOption=!0===e.allowDeselectOption,this.hideSelectedOption=!0===e.hideSelectedOption,e.deselectLabel&&(this.deselectLabel=e.deselectLabel),e.valuesUseText&&(this.valuesUseText=e.valuesUseText),e.showOptionTooltips&&(this.showOptionTooltips=e.showOptionTooltips),e.selectByGroup&&(this.selectByGroup=e.selectByGroup),e.limit&&(this.limit=e.limit),e.searchFilter&&(this.searchFilter=e.searchFilter),null!=e.timeoutDelay&&(this.timeoutDelay=e.timeoutDelay),this.addToBody=!0===e.addToBody}t.Config=s},function(e,t,i){"use strict";t.__esModule=!0;var s=i(0),n=(a.prototype.setValue=function(){if(this.main.data.getSelected()){if(this.main.config.isMultiple)for(var e=this.main.data.getSelected(),t=0,i=this.element.options;t<i.length;t++){var s=i[t];s.selected=!1;for(var n=0,a=e;n<a.length;n++)a[n].value===s.value&&(s.selected=!0)}else e=this.main.data.getSelected(),this.element.value=e?e.value:"";this.main.data.isOnChangeEnabled=!1,this.element.dispatchEvent(new CustomEvent("change",{bubbles:!0})),this.main.data.isOnChangeEnabled=!0}},a.prototype.addAttributes=function(){this.element.tabIndex=-1,this.element.style.display="none",this.element.dataset.ssid=this.main.config.id},a.prototype.addEventListeners=function(){var t=this;this.element.addEventListener("change",function(e){t.main.data.setSelectedFromSelect(),t.main.render()})},a.prototype.addMutationObserver=function(){var t=this;this.main.config.isAjax||(this.mutationObserver=new MutationObserver(function(e){t.triggerMutationObserver&&(t.main.data.parseSelectData(),t.main.data.setSelectedFromSelect(),t.main.render(),e.forEach(function(e){"class"===e.attributeName&&t.main.slim.updateContainerDivClass(t.main.slim.container)}))}),this.observeMutationObserver())},a.prototype.observeMutationObserver=function(){this.mutationObserver&&this.mutationObserver.observe(this.element,{attributes:!0,childList:!0,characterData:!0})},a.prototype.disconnectMutationObserver=function(){this.mutationObserver&&this.mutationObserver.disconnect()},a.prototype.create=function(e){this.element.innerHTML="";for(var t=0,i=e;t<i.length;t++){var s=i[t];if(s.hasOwnProperty("options")){var n=s,a=document.createElement("optgroup");if(a.label=n.label,n.options)for(var o=0,l=n.options;o<l.length;o++){var r=l[o];a.appendChild(this.createOption(r))}this.element.appendChild(a)}else this.element.appendChild(this.createOption(s))}},a.prototype.createOption=function(t){var i=document.createElement("option");return i.value=""!==t.value?t.value:t.text,i.innerHTML=t.innerHTML||t.text,t.selected&&(i.selected=t.selected),!1===t.display&&(i.style.display="none"),t.disabled&&(i.disabled=!0),t.placeholder&&i.setAttribute("data-placeholder","true"),t.mandatory&&i.setAttribute("data-mandatory","true"),t.class&&t.class.split(" ").forEach(function(e){i.classList.add(e)}),t.data&&"object"==typeof t.data&&Object.keys(t.data).forEach(function(e){i.setAttribute("data-"+s.kebabCase(e),t.data[e])}),i},a);function a(e){this.triggerMutationObserver=!0,this.element=e.select,this.main=e.main,this.element.disabled&&(this.main.config.isEnabled=!1),this.addAttributes(),this.addEventListeners(),this.mutationObserver=null,this.addMutationObserver(),this.element.slim=e.main}t.Select=n},function(e,t,i){"use strict";t.__esModule=!0;var a=i(0),o=i(1),s=(n.prototype.containerDiv=function(){var e=document.createElement("div");return e.style.cssText=this.main.config.style,this.updateContainerDivClass(e),e},n.prototype.updateContainerDivClass=function(e){this.main.config.class=this.main.select.element.className.split(" "),e.className="",e.classList.add(this.main.config.id),e.classList.add(this.main.config.main);for(var t=0,i=this.main.config.class;t<i.length;t++){var s=i[t];""!==s.trim()&&e.classList.add(s)}},n.prototype.singleSelectedDiv=function(){var t=this,e=document.createElement("div");e.classList.add(this.main.config.singleSelected);var i=document.createElement("span");i.classList.add("placeholder"),e.appendChild(i);var s=document.createElement("span");s.innerHTML=this.main.config.deselectLabel,s.classList.add("ss-deselect"),s.onclick=function(e){e.stopPropagation(),t.main.config.isEnabled&&t.main.set("")},e.appendChild(s);var n=document.createElement("span");n.classList.add(this.main.config.arrow);var a=document.createElement("span");return a.classList.add("arrow-down"),n.appendChild(a),e.appendChild(n),e.onclick=function(){t.main.config.isEnabled&&(t.main.data.contentOpen?t.main.close():t.main.open())},{container:e,placeholder:i,deselect:s,arrowIcon:{container:n,arrow:a}}},n.prototype.placeholder=function(){var e=this.main.data.getSelected();if(null===e||e&&e.placeholder){var t=document.createElement("span");t.classList.add(this.main.config.disabled),t.innerHTML=this.main.config.placeholderText,this.singleSelected&&(this.singleSelected.placeholder.innerHTML=t.outerHTML)}else{var i="";e&&(i=e.innerHTML&&!0!==this.main.config.valuesUseText?e.innerHTML:e.text),this.singleSelected&&(this.singleSelected.placeholder.innerHTML=e?i:"")}},n.prototype.deselect=function(){if(this.singleSelected){if(!this.main.config.allowDeselect)return void this.singleSelected.deselect.classList.add("ss-hide");""===this.main.selected()?this.singleSelected.deselect.classList.add("ss-hide"):this.singleSelected.deselect.classList.remove("ss-hide")}},n.prototype.multiSelectedDiv=function(){var t=this,e=document.createElement("div");e.classList.add(this.main.config.multiSelected);var i=document.createElement("div");i.classList.add(this.main.config.values),e.appendChild(i);var s=document.createElement("div");s.classList.add(this.main.config.add);var n=document.createElement("span");return n.classList.add(this.main.config.plus),n.onclick=function(e){t.main.data.contentOpen&&(t.main.close(),e.stopPropagation())},s.appendChild(n),e.appendChild(s),e.onclick=function(e){t.main.config.isEnabled&&(e.target.classList.contains(t.main.config.valueDelete)||(t.main.data.contentOpen?t.main.close():t.main.open()))},{container:e,values:i,add:s,plus:n}},n.prototype.values=function(){if(this.multiSelected){for(var e,t=this.multiSelected.values.childNodes,i=this.main.data.getSelected(),s=[],n=0,a=t;n<a.length;n++){var o=a[n];e=!0;for(var l=0,r=i;l<r.length;l++){var c=r[l];String(c.id)===String(o.dataset.id)&&(e=!1)}e&&s.push(o)}for(var d=0,h=s;d<h.length;d++){var u=h[d];u.classList.add("ss-out"),this.multiSelected.values.removeChild(u)}for(t=this.multiSelected.values.childNodes,c=0;c<i.length;c++){e=!1;for(var p=0,m=t;p<m.length;p++)o=m[p],String(i[c].id)===String(o.dataset.id)&&(e=!0);e||(0!==t.length&&HTMLElement.prototype.insertAdjacentElement?0===c?this.multiSelected.values.insertBefore(this.valueDiv(i[c]),t[c]):t[c-1].insertAdjacentElement("afterend",this.valueDiv(i[c])):this.multiSelected.values.appendChild(this.valueDiv(i[c])))}if(0===i.length){var f=document.createElement("span");f.classList.add(this.main.config.disabled),f.innerHTML=this.main.config.placeholderText,this.multiSelected.values.innerHTML=f.outerHTML}}},n.prototype.valueDiv=function(a){var o=this,e=document.createElement("div");e.classList.add(this.main.config.value),e.dataset.id=a.id;var t=document.createElement("span");if(t.classList.add(this.main.config.valueText),t.innerHTML=a.innerHTML&&!0!==this.main.config.valuesUseText?a.innerHTML:a.text,e.appendChild(t),!a.mandatory){var i=document.createElement("span");i.classList.add(this.main.config.valueDelete),i.innerHTML=this.main.config.deselectLabel,i.onclick=function(e){e.preventDefault(),e.stopPropagation();var t=!1;if(o.main.beforeOnChange||(t=!0),o.main.beforeOnChange){for(var i=o.main.data.getSelected(),s=JSON.parse(JSON.stringify(i)),n=0;n<s.length;n++)s[n].id===a.id&&s.splice(n,1);!1!==o.main.beforeOnChange(s)&&(t=!0)}t&&(o.main.data.removeFromSelected(a.id,"id"),o.main.render(),o.main.select.setValue(),o.main.data.onDataChange())},e.appendChild(i)}return e},n.prototype.contentDiv=function(){var e=document.createElement("div");return e.classList.add(this.main.config.content),e},n.prototype.searchDiv=function(){var n=this,e=document.createElement("div"),s=document.createElement("input"),a=document.createElement("div");e.classList.add(this.main.config.search);var t={container:e,input:s};return this.main.config.showSearch||(e.classList.add(this.main.config.hide),s.readOnly=!0),s.type="search",s.placeholder=this.main.config.searchPlaceholder,s.tabIndex=0,s.setAttribute("aria-label",this.main.config.searchPlaceholder),s.setAttribute("autocapitalize","off"),s.setAttribute("autocomplete","off"),s.setAttribute("autocorrect","off"),s.onclick=function(e){setTimeout(function(){""===e.target.value&&n.main.search("")},10)},s.onkeydown=function(e){"ArrowUp"===e.key?(n.main.open(),n.highlightUp(),e.preventDefault()):"ArrowDown"===e.key?(n.main.open(),n.highlightDown(),e.preventDefault()):"Tab"===e.key?n.main.data.contentOpen?n.main.close():setTimeout(function(){n.main.close()},n.main.config.timeoutDelay):"Enter"===e.key&&e.preventDefault()},s.onkeyup=function(e){var t=e.target;if("Enter"===e.key){if(n.main.addable&&e.ctrlKey)return a.click(),e.preventDefault(),void e.stopPropagation();var i=n.list.querySelector("."+n.main.config.highlighted);i&&i.click()}else"ArrowUp"===e.key||"ArrowDown"===e.key||("Escape"===e.key?n.main.close():n.main.config.showSearch&&n.main.data.contentOpen?n.main.search(t.value):s.value="");e.preventDefault(),e.stopPropagation()},s.onfocus=function(){n.main.open()},e.appendChild(s),this.main.addable&&(a.classList.add(this.main.config.addable),a.innerHTML="+",a.onclick=function(e){if(n.main.addable){e.preventDefault(),e.stopPropagation();var t=n.search.input.value;if(""===t.trim())return void n.search.input.focus();var i=n.main.addable(t),s="";if(!i)return;"object"==typeof i?o.validateOption(i)&&(n.main.addData(i),s=i.value?i.value:i.text):(n.main.addData(n.main.data.newOption({text:i,value:i})),s=i),n.main.search(""),setTimeout(function(){n.main.set(s,"value",!1,!1)},100),n.main.config.closeOnSelect&&setTimeout(function(){n.main.close()},100)}},e.appendChild(a),t.addable=a),t},n.prototype.highlightUp=function(){var e=this.list.querySelector("."+this.main.config.highlighted),t=null;if(e)for(t=e.previousSibling;null!==t&&t.classList.contains(this.main.config.disabled);)t=t.previousSibling;else{var i=this.list.querySelectorAll("."+this.main.config.option+":not(."+this.main.config.disabled+")");t=i[i.length-1]}if(t&&t.classList.contains(this.main.config.optgroupLabel)&&(t=null),null===t){var s=e.parentNode;if(s.classList.contains(this.main.config.optgroup)&&s.previousSibling){var n=s.previousSibling.querySelectorAll("."+this.main.config.option+":not(."+this.main.config.disabled+")");n.length&&(t=n[n.length-1])}}t&&(e&&e.classList.remove(this.main.config.highlighted),t.classList.add(this.main.config.highlighted),a.ensureElementInView(this.list,t))},n.prototype.highlightDown=function(){var e=this.list.querySelector("."+this.main.config.highlighted),t=null;if(e)for(t=e.nextSibling;null!==t&&t.classList.contains(this.main.config.disabled);)t=t.nextSibling;else t=this.list.querySelector("."+this.main.config.option+":not(."+this.main.config.disabled+")");if(null===t&&null!==e){var i=e.parentNode;i.classList.contains(this.main.config.optgroup)&&i.nextSibling&&(t=i.nextSibling.querySelector("."+this.main.config.option+":not(."+this.main.config.disabled+")"))}t&&(e&&e.classList.remove(this.main.config.highlighted),t.classList.add(this.main.config.highlighted),a.ensureElementInView(this.list,t))},n.prototype.listDiv=function(){var e=document.createElement("div");return e.classList.add(this.main.config.list),e},n.prototype.options=function(e){void 0===e&&(e="");var t,i=this.main.data.filtered||this.main.data.data;if((this.list.innerHTML="")!==e)return(t=document.createElement("div")).classList.add(this.main.config.option),t.classList.add(this.main.config.disabled),t.innerHTML=e,void this.list.appendChild(t);if(this.main.config.isAjax&&this.main.config.isSearching)return(t=document.createElement("div")).classList.add(this.main.config.option),t.classList.add(this.main.config.disabled),t.innerHTML=this.main.config.searchingText,void this.list.appendChild(t);if(0===i.length){var s=document.createElement("div");return s.classList.add(this.main.config.option),s.classList.add(this.main.config.disabled),s.innerHTML=this.main.config.searchText,void this.list.appendChild(s)}for(var n=function(e){if(e.hasOwnProperty("label")){var t=e,n=document.createElement("div");n.classList.add(c.main.config.optgroup);var i=document.createElement("div");i.classList.add(c.main.config.optgroupLabel),c.main.config.selectByGroup&&c.main.config.isMultiple&&i.classList.add(c.main.config.optgroupLabelSelectable),i.innerHTML=t.label,n.appendChild(i);var s=t.options;if(s){for(var a=0,o=s;a<o.length;a++){var l=o[a];n.appendChild(c.option(l))}if(c.main.config.selectByGroup&&c.main.config.isMultiple){var r=c;i.addEventListener("click",function(e){e.preventDefault(),e.stopPropagation();for(var t=0,i=n.children;t<i.length;t++){var s=i[t];-1!==s.className.indexOf(r.main.config.option)&&s.click()}})}}c.list.appendChild(n)}else c.list.appendChild(c.option(e))},c=this,a=0,o=i;a<o.length;a++)n(o[a])},n.prototype.option=function(r){if(r.placeholder){var e=document.createElement("div");return e.classList.add(this.main.config.option),e.classList.add(this.main.config.hide),e}var t=document.createElement("div");t.classList.add(this.main.config.option),r.class&&r.class.split(" ").forEach(function(e){t.classList.add(e)}),r.style&&(t.style.cssText=r.style);var c=this.main.data.getSelected();t.dataset.id=r.id,this.main.config.searchHighlight&&this.main.slim&&r.innerHTML&&""!==this.main.slim.search.input.value.trim()?t.innerHTML=a.highlight(r.innerHTML,this.main.slim.search.input.value,this.main.config.searchHighlighter):r.innerHTML&&(t.innerHTML=r.innerHTML),this.main.config.showOptionTooltips&&t.textContent&&t.setAttribute("title",t.textContent);var d=this;t.addEventListener("click",function(e){e.preventDefault(),e.stopPropagation();var t=this.dataset.id;if(!0===r.selected&&d.main.config.allowDeselectOption){var i=!1;if(d.main.beforeOnChange&&d.main.config.isMultiple||(i=!0),d.main.beforeOnChange&&d.main.config.isMultiple){for(var s=d.main.data.getSelected(),n=JSON.parse(JSON.stringify(s)),a=0;a<n.length;a++)n[a].id===t&&n.splice(a,1);!1!==d.main.beforeOnChange(n)&&(i=!0)}i&&(d.main.config.isMultiple?(d.main.data.removeFromSelected(t,"id"),d.main.render(),d.main.select.setValue(),d.main.data.onDataChange()):d.main.set(""))}else{if(r.disabled||r.selected)return;if(d.main.config.limit&&Array.isArray(c)&&d.main.config.limit<=c.length)return;if(d.main.beforeOnChange){var o=void 0,l=JSON.parse(JSON.stringify(d.main.data.getObjectFromData(t)));l.selected=!0,d.main.config.isMultiple?(o=JSON.parse(JSON.stringify(c))).push(l):o=JSON.parse(JSON.stringify(l)),!1!==d.main.beforeOnChange(o)&&d.main.set(t,"id",d.main.config.closeOnSelect)}else d.main.set(t,"id",d.main.config.closeOnSelect)}});var i=c&&a.isValueInArrayOfObjects(c,"id",r.id);return(r.disabled||i)&&(t.onclick=null,d.main.config.allowDeselectOption||t.classList.add(this.main.config.disabled),d.main.config.hideSelectedOption&&t.classList.add(this.main.config.hide)),i?t.classList.add(this.main.config.optionSelected):t.classList.remove(this.main.config.optionSelected),t},n);function n(e){this.main=e.main,this.container=this.containerDiv(),this.content=this.contentDiv(),this.search=this.searchDiv(),this.list=this.listDiv(),this.options(),this.singleSelected=null,this.multiSelected=null,this.main.config.isMultiple?(this.multiSelected=this.multiSelectedDiv(),this.multiSelected&&this.container.appendChild(this.multiSelected.container)):(this.singleSelected=this.singleSelectedDiv(),this.container.appendChild(this.singleSelected.container)),this.main.config.addToBody?(this.content.classList.add(this.main.config.id),document.body.appendChild(this.content)):this.container.appendChild(this.content),this.content.appendChild(this.search.container),this.content.appendChild(this.list)}t.Slim=s}],n.c=s,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var s in t)n.d(i,s,function(e){return t[e]}.bind(null,s));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=2).default;function n(e){if(s[e])return s[e].exports;var t=s[e]={i:e,l:!1,exports:{}};return i[e].call(t.exports,t,t.exports,n),t.l=!0,t.exports}var i,s});
\ No newline at end of file
diff --git a/app/static/vendors/slimselect/slimselect.scss b/app/static/vendors/slimselect/slimselect.scss
deleted file mode 100644 (file)
index 705bb30..0000000
+++ /dev/null
@@ -1,391 +0,0 @@
-$height: 30px !default;
-$white: #ffffff !default;
-$font-color: #666666 !default;
-$font-placeholder-color: #8a8a8a !default;
-$font-disabled-color: #dedede !default;
-$primary-color: #5897fb !default;
-$border-color: #dcdee2 !default;
-$search-highlight-color: #fffb8c !default;
-$border-radius: 4px !default;
-$spacing-l: 8px !default;
-$spacing-m: 6px !default;
-$spacing-s: 4px !default;
-
-.ss-main {
-  position: relative;
-  display: inline-block;
-  user-select: none;
-  color: $font-color;
-  width: 100%;
-
-  .ss-single-selected {
-    display: flex;
-    cursor: pointer;
-    width: 100%;
-    height: $height;
-    padding: $spacing-m;
-    border: 1px solid $border-color;
-    border-radius: $border-radius;
-    background-color: $white;
-    outline: 0;
-    box-sizing: border-box;
-    transition: background-color .2s;
-
-    &.ss-disabled {
-      background-color: $border-color;
-      cursor: not-allowed;
-    }
-
-    &.ss-open-above {
-      border-top-left-radius: 0px;
-      border-top-right-radius: 0px;
-    }
-    &.ss-open-below {
-      border-bottom-left-radius: 0px;
-      border-bottom-right-radius: 0px;
-    }
-
-    .placeholder {
-      display: flex;
-      flex: 1 1 100%;
-      align-items: center;
-      overflow: hidden;
-      text-overflow: ellipsis;
-      white-space: nowrap;
-      text-align: left;
-      width: calc(100% - 30px);
-      line-height: 1em;
-      -webkit-user-select: none;  
-      -moz-user-select: none;    
-      -ms-user-select: none;      
-      user-select: none;
-
-      * {
-        display: flex;
-        align-items: center;
-        overflow: hidden;
-        text-overflow: ellipsis;
-        white-space: nowrap;
-        width: auto;
-      }
-
-      .ss-disabled {
-        color: $font-disabled-color;
-      }
-    }
-
-    .ss-deselect {
-      display: flex;
-      align-items: center;
-      justify-content: flex-end;
-      flex: 0 1 auto;
-      margin: 0 $spacing-m 0 $spacing-m;
-      font-weight: bold;
-
-      &.ss-hide {
-        display: none;
-      }
-    }
-
-    .ss-arrow {
-      display: flex;
-      align-items: center;
-      justify-content: flex-end;
-      flex: 0 1 auto;
-      margin: 0 $spacing-m 0 $spacing-m;
-
-      span {
-        border: solid $font-color;
-        border-width: 0 2px 2px 0;
-        display: inline-block;
-        padding: 3px;
-        transition: transform .2s, margin .2s;
-
-        &.arrow-up {
-          transform: rotate(-135deg);
-          margin: 3px 0 0 0;
-        }
-        &.arrow-down {
-          transform: rotate(45deg);
-          margin: -3px 0 0 0;
-        }
-      }
-    }
-  }
-
-  .ss-multi-selected {
-    display: flex;
-    flex-direction: row;
-    cursor: pointer;
-    min-height: $height;
-    width: 100%;
-    padding: 0 0 0 3px;
-    border: 1px solid $border-color;
-    border-radius: $border-radius;
-    background-color: $white;
-    outline: 0;
-    box-sizing: border-box;
-    transition: background-color .2s;
-
-    &.ss-disabled {
-      background-color: $border-color;
-      cursor: not-allowed;
-
-      .ss-values {
-        .ss-disabled {
-          color: $font-color;
-        }
-
-        .ss-value {
-          .ss-value-delete {
-            cursor: not-allowed;
-          }
-        }
-      }
-    }
-
-    &.ss-open-above {
-      border-top-left-radius: 0px;
-      border-top-right-radius: 0px;
-    }
-    &.ss-open-below {
-      border-bottom-left-radius: 0px;
-      border-bottom-right-radius: 0px;
-    }
-
-    .ss-values {
-      display: flex;
-      flex-wrap: wrap;
-      justify-content: flex-start;
-      flex: 1 1 100%;
-      width: calc(100% - 30px);
-
-      .ss-disabled {
-        display: flex;
-        padding: 4px 5px;
-        margin: 2px 0px;
-        line-height: 1em;
-        align-items: center;
-        width: 100%;
-        color: $font-disabled-color;
-        overflow: hidden;
-        text-overflow: ellipsis;
-        white-space: nowrap;
-      }
-
-      @keyframes scaleIn {
-        0% {transform: scale(0); opacity: 0;}
-        100% {transform: scale(1); opacity: 1;}
-      }
-      @keyframes scaleOut {
-        0% {transform: scale(1); opacity: 1;}
-        100% {transform: scale(0); opacity: 0;}
-      }
-
-      .ss-value {
-        display: flex;
-        user-select: none;
-        align-items: center;
-        font-size: 12px;
-        padding: 3px 5px;
-        margin: 3px 5px 3px 0px;
-        color: $white;
-        background-color: $primary-color;
-        border-radius: $border-radius;
-        animation-name: scaleIn;
-        animation-duration: .2s;
-        animation-timing-function: ease-out;
-        animation-fill-mode: both;
-
-        &.ss-out {
-          animation-name: scaleOut;
-          animation-duration: .2s;
-          animation-timing-function: ease-out;
-        }
-
-        .ss-value-delete {
-          margin: 0 0 0 5px;
-          cursor: pointer;
-        }
-      }
-    }
-
-    .ss-add {
-      display: flex;
-      flex: 0 1 3px;
-      margin: 9px 12px 0 5px;
-
-      .ss-plus {
-        display: flex;
-        justify-content: center;
-        align-items: center;
-        background: $font-color;
-        position: relative;
-        height: 10px;
-        width: 2px;
-        transition: transform .2s;
-
-        &:after {
-          background: $font-color;
-          content: "";
-          position: absolute;
-          height: 2px;
-          width: 10px;
-          left: -4px;
-          top: 4px;
-        }
-
-        &.ss-cross {
-          transform: rotate(45deg);
-        }
-      }
-    }
-
-  }
-}
-.ss-content {
-  position: absolute;
-  width: 100%;
-  margin: -1px 0 0 0;
-  box-sizing: border-box;
-  border: solid 1px $border-color;
-  z-index: 1010;
-  background-color: $white;
-  transform-origin: center top;
-  transition: transform .2s, opacity .2s;
-  opacity: 0;
-  transform: scaleY(0);
-
-  &.ss-open {
-    display: block;
-    opacity: 1;
-    transform: scaleY(1);
-  }
-
-  .ss-search {
-    display: flex;
-    flex-direction: row;
-    padding: $spacing-l $spacing-l $spacing-m $spacing-l;
-
-    &.ss-hide {
-      height: 0px;
-      opacity: 0;
-      padding: 0px 0px 0px 0px;
-      margin: 0px 0px 0px 0px;
-
-      input {
-        height: 0px;
-        opacity: 0;
-        padding: 0px 0px 0px 0px;
-        margin: 0px 0px 0px 0px;
-      }
-    }
-
-    input {
-      display: inline-flex;
-      font-size: inherit;
-      line-height: inherit;
-      flex: 1 1 auto;
-      width: 100%;
-      min-width: 0px;
-      height: 30px;
-      padding: $spacing-m $spacing-l;
-      margin: 0;
-      border: 1px solid $border-color;
-      border-radius: $border-radius;
-      background-color: $white;
-      outline: 0;
-      text-align: left;
-      box-sizing: border-box;
-      -webkit-box-sizing: border-box;
-      -webkit-appearance: textfield;
-      
-      &::placeholder {
-        color: $font-placeholder-color;
-        vertical-align: middle;
-      }
-
-      &:focus {
-        box-shadow: 0 0 5px $primary-color;
-      }
-    }
-
-    .ss-addable {
-      display: inline-flex;
-      justify-content: center;
-      align-items: center;
-      cursor: pointer;
-      font-size: 22px;
-      font-weight: bold;
-      flex: 0 0 30px;
-      height: 30px;
-      margin: 0 0 0 8px;
-      border: 1px solid $border-color;
-      border-radius: $border-radius;
-      box-sizing: border-box;
-    }
-  }
-
-  .ss-addable {
-    padding-top: 0px;
-  }
-
-  .ss-list {
-    max-height: 200px;
-    overflow-x: hidden;
-    overflow-y: auto;
-    text-align: left;
-
-    .ss-optgroup {
-      .ss-optgroup-label {
-        padding: 6px 10px 6px 10px;
-        font-weight: bold;
-      }
-
-      .ss-option {
-        padding: 6px 6px 6px 25px;
-      }
-    }
-
-    .ss-optgroup-label-selectable {
-      cursor: pointer;
-      
-      &:hover {
-        color: $white;
-        background-color: $primary-color;
-      }
-    }
-
-    .ss-option {
-      padding: 6px 10px 6px 10px;
-      cursor: pointer;
-      user-select: none;
-
-      * {
-        display: inline-block;
-      }
-
-      &:hover, &.ss-highlighted {
-        color: $white;
-        background-color: $primary-color;
-      }
-
-      &.ss-disabled {
-        cursor: not-allowed;
-        color: $font-disabled-color;
-        background-color: $white;
-      }
-
-      &:not(.ss-disabled).ss-option-selected {
-        color: $font-color;
-        background-color: rgba($primary-color, .1);
-      }
-
-      &.ss-hide { display: none; }
-
-      .ss-search-highlight {
-        background-color: $search-highlight-color;
-      }
-    }
-  }
-}
diff --git a/app/static/vendors/tabulator/css.old/tabulator.css b/app/static/vendors/tabulator/css.old/tabulator.css
deleted file mode 100644 (file)
index ec3b42a..0000000
+++ /dev/null
@@ -1,995 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-.tabulator {
-  position: relative;
-  border: 1px solid #999;
-  background-color: #888;
-  font-size: 14px;
-  text-align: left;
-  overflow: hidden;
-  -ms-transform: translatez(0);
-  transform: translatez(0);
-}
-
-.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableHolder .tabulator-table {
-  min-width: 100%;
-}
-
-.tabulator[tabulator-layout="fitDataTable"] {
-  display: inline-block;
-}
-
-.tabulator.tabulator-block-select {
-  -webkit-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-}
-
-.tabulator .tabulator-header {
-  position: relative;
-  box-sizing: border-box;
-  width: 100%;
-  border-bottom: 1px solid #999;
-  background-color: #e6e6e6;
-  color: #555;
-  font-weight: bold;
-  white-space: nowrap;
-  overflow: hidden;
-  -moz-user-select: none;
-  -khtml-user-select: none;
-  -webkit-user-select: none;
-  -o-user-select: none;
-}
-
-.tabulator .tabulator-header.tabulator-header-hidden {
-  display: none;
-}
-
-.tabulator .tabulator-header .tabulator-col {
-  display: inline-block;
-  position: relative;
-  box-sizing: border-box;
-  border-right: 1px solid #aaa;
-  background: #e6e6e6;
-  text-align: left;
-  vertical-align: bottom;
-  overflow: hidden;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-moving {
-  position: absolute;
-  border: 1px solid #999;
-  background: #cdcdcd;
-  pointer-events: none;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-col-content {
-  box-sizing: border-box;
-  position: relative;
-  padding: 4px;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button {
-  padding: 0 8px;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button:hover {
-  cursor: pointer;
-  opacity: .6;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {
-  box-sizing: border-box;
-  width: 100%;
-  white-space: nowrap;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  vertical-align: bottom;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {
-  box-sizing: border-box;
-  width: 100%;
-  border: 1px solid #999;
-  padding: 1px;
-  background: #fff;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {
-  display: inline-block;
-  position: absolute;
-  top: 9px;
-  right: 8px;
-  width: 0;
-  height: 0;
-  border-left: 6px solid transparent;
-  border-right: 6px solid transparent;
-  border-bottom: 6px solid #bbb;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {
-  position: relative;
-  display: -ms-flexbox;
-  display: flex;
-  border-top: 1px solid #aaa;
-  overflow: hidden;
-  margin-right: -1px;
-}
-
-.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev {
-  display: none;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-header-filter {
-  position: relative;
-  box-sizing: border-box;
-  margin-top: 2px;
-  width: 100%;
-  text-align: center;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {
-  height: auto !important;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {
-  margin-top: 3px;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {
-  width: 0;
-  height: 0;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {
-  padding-right: 25px;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover {
-  cursor: pointer;
-  background-color: #cdcdcd;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-arrow {
-  border-top: none;
-  border-bottom: 6px solid #bbb;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="asc"] .tabulator-col-content .tabulator-arrow {
-  border-top: none;
-  border-bottom: 6px solid #666;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="desc"] .tabulator-col-content .tabulator-arrow {
-  border-top: 6px solid #666;
-  border-bottom: none;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {
-  -ms-writing-mode: tb-rl;
-      writing-mode: vertical-rl;
-  text-orientation: mixed;
-  display: -ms-flexbox;
-  display: flex;
-  -ms-flex-align: center;
-      align-items: center;
-  -ms-flex-pack: center;
-      justify-content: center;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {
-  -ms-transform: rotate(180deg);
-      transform: rotate(180deg);
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {
-  padding-right: 0;
-  padding-top: 20px;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {
-  padding-right: 0;
-  padding-bottom: 20px;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-arrow {
-  right: calc(50% - 6px);
-}
-
-.tabulator .tabulator-header .tabulator-frozen {
-  display: inline-block;
-  position: absolute;
-  z-index: 10;
-}
-
-.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {
-  border-right: 2px solid #aaa;
-}
-
-.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {
-  border-left: 2px solid #aaa;
-}
-
-.tabulator .tabulator-header .tabulator-calcs-holder {
-  box-sizing: border-box;
-  min-width: 600%;
-  background: #f3f3f3 !important;
-  border-top: 1px solid #aaa;
-  border-bottom: 1px solid #aaa;
-  overflow: hidden;
-}
-
-.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {
-  background: #f3f3f3 !important;
-}
-
-.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {
-  display: none;
-}
-
-.tabulator .tabulator-header .tabulator-frozen-rows-holder {
-  min-width: 600%;
-}
-
-.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {
-  display: none;
-}
-
-.tabulator .tabulator-tableHolder {
-  position: relative;
-  width: 100%;
-  white-space: nowrap;
-  overflow: auto;
-  -webkit-overflow-scrolling: touch;
-}
-
-.tabulator .tabulator-tableHolder:focus {
-  outline: none;
-}
-
-.tabulator .tabulator-tableHolder .tabulator-placeholder {
-  box-sizing: border-box;
-  display: -ms-flexbox;
-  display: flex;
-  -ms-flex-align: center;
-      align-items: center;
-  width: 100%;
-}
-
-.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode="virtual"] {
-  min-height: 100%;
-  min-width: 100%;
-}
-
-.tabulator .tabulator-tableHolder .tabulator-placeholder span {
-  display: inline-block;
-  margin: 0 auto;
-  padding: 10px;
-  color: #ccc;
-  font-weight: bold;
-  font-size: 20px;
-}
-
-.tabulator .tabulator-tableHolder .tabulator-table {
-  position: relative;
-  display: inline-block;
-  background-color: #fff;
-  white-space: nowrap;
-  overflow: visible;
-  color: #333;
-}
-
-.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs {
-  font-weight: bold;
-  background: #e2e2e2 !important;
-}
-
-.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {
-  border-bottom: 2px solid #aaa;
-}
-
-.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {
-  border-top: 2px solid #aaa;
-}
-
-.tabulator .tabulator-footer {
-  padding: 5px 10px;
-  border-top: 1px solid #999;
-  background-color: #e6e6e6;
-  text-align: right;
-  color: #555;
-  font-weight: bold;
-  white-space: nowrap;
-  -ms-user-select: none;
-      user-select: none;
-  -moz-user-select: none;
-  -khtml-user-select: none;
-  -webkit-user-select: none;
-  -o-user-select: none;
-}
-
-.tabulator .tabulator-footer .tabulator-calcs-holder {
-  box-sizing: border-box;
-  width: calc(100% + 20px);
-  margin: -5px -10px 5px -10px;
-  text-align: left;
-  background: #f3f3f3 !important;
-  border-bottom: 1px solid #aaa;
-  border-top: 1px solid #aaa;
-  overflow: hidden;
-}
-
-.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {
-  background: #f3f3f3 !important;
-}
-
-.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {
-  display: none;
-}
-
-.tabulator .tabulator-footer .tabulator-calcs-holder:only-child {
-  margin-bottom: -5px;
-  border-bottom: none;
-}
-
-.tabulator .tabulator-footer .tabulator-paginator {
-  color: #555;
-  font-family: inherit;
-  font-weight: inherit;
-  font-size: inherit;
-}
-
-.tabulator .tabulator-footer .tabulator-page-size {
-  display: inline-block;
-  margin: 0 5px;
-  padding: 2px 5px;
-  border: 1px solid #aaa;
-  border-radius: 3px;
-}
-
-.tabulator .tabulator-footer .tabulator-pages {
-  margin: 0 7px;
-}
-
-.tabulator .tabulator-footer .tabulator-page {
-  display: inline-block;
-  margin: 0 2px;
-  padding: 2px 5px;
-  border: 1px solid #aaa;
-  border-radius: 3px;
-  background: rgba(255, 255, 255, 0.2);
-}
-
-.tabulator .tabulator-footer .tabulator-page.active {
-  color: #d00;
-}
-
-.tabulator .tabulator-footer .tabulator-page:disabled {
-  opacity: .5;
-}
-
-.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {
-  cursor: pointer;
-  background: rgba(0, 0, 0, 0.2);
-  color: #fff;
-}
-
-.tabulator .tabulator-col-resize-handle {
-  position: absolute;
-  right: 0;
-  top: 0;
-  bottom: 0;
-  width: 5px;
-}
-
-.tabulator .tabulator-col-resize-handle.prev {
-  left: 0;
-  right: auto;
-}
-
-.tabulator .tabulator-col-resize-handle:hover {
-  cursor: ew-resize;
-}
-
-.tabulator .tabulator-loader {
-  position: absolute;
-  display: -ms-flexbox;
-  display: flex;
-  -ms-flex-align: center;
-      align-items: center;
-  top: 0;
-  left: 0;
-  z-index: 100;
-  height: 100%;
-  width: 100%;
-  background: rgba(0, 0, 0, 0.4);
-  text-align: center;
-}
-
-.tabulator .tabulator-loader .tabulator-loader-msg {
-  display: inline-block;
-  margin: 0 auto;
-  padding: 10px 20px;
-  border-radius: 10px;
-  background: #fff;
-  font-weight: bold;
-  font-size: 16px;
-}
-
-.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading {
-  border: 4px solid #333;
-  color: #000;
-}
-
-.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error {
-  border: 4px solid #D00;
-  color: #590000;
-}
-
-.tabulator-row {
-  position: relative;
-  box-sizing: border-box;
-  min-height: 22px;
-  background-color: #fff;
-}
-
-.tabulator-row.tabulator-row-even {
-  background-color: #EFEFEF;
-}
-
-.tabulator-row.tabulator-selectable:hover {
-  background-color: #bbb;
-  cursor: pointer;
-}
-
-.tabulator-row.tabulator-selected {
-  background-color: #9ABCEA;
-}
-
-.tabulator-row.tabulator-selected:hover {
-  background-color: #769BCC;
-  cursor: pointer;
-}
-
-.tabulator-row.tabulator-row-moving {
-  border: 1px solid #000;
-  background: #fff;
-}
-
-.tabulator-row.tabulator-moving {
-  position: absolute;
-  border-top: 1px solid #aaa;
-  border-bottom: 1px solid #aaa;
-  pointer-events: none;
-  z-index: 15;
-}
-
-.tabulator-row .tabulator-row-resize-handle {
-  position: absolute;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  height: 5px;
-}
-
-.tabulator-row .tabulator-row-resize-handle.prev {
-  top: 0;
-  bottom: auto;
-}
-
-.tabulator-row .tabulator-row-resize-handle:hover {
-  cursor: ns-resize;
-}
-
-.tabulator-row .tabulator-frozen {
-  display: inline-block;
-  position: absolute;
-  background-color: inherit;
-  z-index: 10;
-}
-
-.tabulator-row .tabulator-frozen.tabulator-frozen-left {
-  border-right: 2px solid #aaa;
-}
-
-.tabulator-row .tabulator-frozen.tabulator-frozen-right {
-  border-left: 2px solid #aaa;
-}
-
-.tabulator-row .tabulator-responsive-collapse {
-  box-sizing: border-box;
-  padding: 5px;
-  border-top: 1px solid #aaa;
-  border-bottom: 1px solid #aaa;
-}
-
-.tabulator-row .tabulator-responsive-collapse:empty {
-  display: none;
-}
-
-.tabulator-row .tabulator-responsive-collapse table {
-  font-size: 14px;
-}
-
-.tabulator-row .tabulator-responsive-collapse table tr td {
-  position: relative;
-}
-
-.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {
-  padding-right: 10px;
-}
-
-.tabulator-row .tabulator-cell {
-  display: inline-block;
-  position: relative;
-  box-sizing: border-box;
-  padding: 4px;
-  border-right: 1px solid #aaa;
-  vertical-align: middle;
-  white-space: nowrap;
-  overflow: hidden;
-  text-overflow: ellipsis;
-}
-
-.tabulator-row .tabulator-cell.tabulator-editing {
-  border: 1px solid #1D68CD;
-  padding: 0;
-}
-
-.tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {
-  border: 1px;
-  background: transparent;
-}
-
-.tabulator-row .tabulator-cell.tabulator-validation-fail {
-  border: 1px solid #dd0000;
-}
-
-.tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {
-  border: 1px;
-  background: transparent;
-  color: #dd0000;
-}
-
-.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev {
-  display: none;
-}
-
-.tabulator-row .tabulator-cell.tabulator-row-handle {
-  display: -ms-inline-flexbox;
-  display: inline-flex;
-  -ms-flex-align: center;
-      align-items: center;
-  -ms-flex-pack: center;
-      justify-content: center;
-  -moz-user-select: none;
-  -khtml-user-select: none;
-  -webkit-user-select: none;
-  -o-user-select: none;
-}
-
-.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {
-  width: 80%;
-}
-
-.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {
-  width: 100%;
-  height: 3px;
-  margin-top: 2px;
-  background: #666;
-}
-
-.tabulator-row .tabulator-cell .tabulator-data-tree-branch {
-  display: inline-block;
-  vertical-align: middle;
-  height: 9px;
-  width: 7px;
-  margin-top: -9px;
-  margin-right: 5px;
-  border-bottom-left-radius: 1px;
-  border-left: 2px solid #aaa;
-  border-bottom: 2px solid #aaa;
-}
-
-.tabulator-row .tabulator-cell .tabulator-data-tree-control {
-  display: -ms-inline-flexbox;
-  display: inline-flex;
-  -ms-flex-pack: center;
-      justify-content: center;
-  -ms-flex-align: center;
-      align-items: center;
-  vertical-align: middle;
-  height: 11px;
-  width: 11px;
-  margin-right: 5px;
-  border: 1px solid #333;
-  border-radius: 2px;
-  background: rgba(0, 0, 0, 0.1);
-  overflow: hidden;
-}
-
-.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {
-  cursor: pointer;
-  background: rgba(0, 0, 0, 0.2);
-}
-
-.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {
-  display: inline-block;
-  position: relative;
-  height: 7px;
-  width: 1px;
-  background: transparent;
-}
-
-.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {
-  position: absolute;
-  content: "";
-  left: -3px;
-  top: 3px;
-  height: 1px;
-  width: 7px;
-  background: #333;
-}
-
-.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {
-  display: inline-block;
-  position: relative;
-  height: 7px;
-  width: 1px;
-  background: #333;
-}
-
-.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {
-  position: absolute;
-  content: "";
-  left: -3px;
-  top: 3px;
-  height: 1px;
-  width: 7px;
-  background: #333;
-}
-
-.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {
-  display: -ms-inline-flexbox;
-  display: inline-flex;
-  -ms-flex-align: center;
-      align-items: center;
-  -ms-flex-pack: center;
-      justify-content: center;
-  -moz-user-select: none;
-  -khtml-user-select: none;
-  -webkit-user-select: none;
-  -o-user-select: none;
-  height: 15px;
-  width: 15px;
-  border-radius: 20px;
-  background: #666;
-  color: #fff;
-  font-weight: bold;
-  font-size: 1.1em;
-}
-
-.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {
-  opacity: .7;
-}
-
-.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {
-  display: initial;
-}
-
-.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {
-  display: none;
-}
-
-.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {
-  display: none;
-}
-
-.tabulator-row .tabulator-cell .tabulator-traffic-light {
-  display: inline-block;
-  height: 14px;
-  width: 14px;
-  border-radius: 14px;
-}
-
-.tabulator-row.tabulator-group {
-  box-sizing: border-box;
-  border-bottom: 1px solid #999;
-  border-right: 1px solid #aaa;
-  border-top: 1px solid #999;
-  padding: 5px;
-  padding-left: 10px;
-  background: #ccc;
-  font-weight: bold;
-  min-width: 100%;
-}
-
-.tabulator-row.tabulator-group:hover {
-  cursor: pointer;
-  background-color: rgba(0, 0, 0, 0.1);
-}
-
-.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {
-  margin-right: 10px;
-  border-left: 6px solid transparent;
-  border-right: 6px solid transparent;
-  border-top: 6px solid #666;
-  border-bottom: 0;
-}
-
-.tabulator-row.tabulator-group.tabulator-group-level-1 {
-  padding-left: 30px;
-}
-
-.tabulator-row.tabulator-group.tabulator-group-level-2 {
-  padding-left: 50px;
-}
-
-.tabulator-row.tabulator-group.tabulator-group-level-3 {
-  padding-left: 70px;
-}
-
-.tabulator-row.tabulator-group.tabulator-group-level-4 {
-  padding-left: 90px;
-}
-
-.tabulator-row.tabulator-group.tabulator-group-level-5 {
-  padding-left: 110px;
-}
-
-.tabulator-row.tabulator-group .tabulator-group-toggle {
-  display: inline-block;
-}
-
-.tabulator-row.tabulator-group .tabulator-arrow {
-  display: inline-block;
-  width: 0;
-  height: 0;
-  margin-right: 16px;
-  border-top: 6px solid transparent;
-  border-bottom: 6px solid transparent;
-  border-right: 0;
-  border-left: 6px solid #666;
-  vertical-align: middle;
-}
-
-.tabulator-row.tabulator-group span {
-  margin-left: 10px;
-  color: #d00;
-}
-
-.tabulator-menu {
-  position: absolute;
-  display: inline-block;
-  box-sizing: border-box;
-  background: #fff;
-  border: 1px solid #aaa;
-  box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);
-  font-size: 14px;
-  overflow-y: auto;
-  -webkit-overflow-scrolling: touch;
-  z-index: 10000;
-}
-
-.tabulator-menu .tabulator-menu-item {
-  padding: 5px 10px;
-  -webkit-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-}
-
-.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {
-  opacity: .5;
-}
-
-.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {
-  cursor: pointer;
-  background: #EFEFEF;
-}
-
-.tabulator-menu .tabulator-menu-separator {
-  border-top: 1px solid #aaa;
-}
-
-.tabulator-edit-select-list {
-  position: absolute;
-  display: inline-block;
-  box-sizing: border-box;
-  max-height: 200px;
-  background: #fff;
-  border: 1px solid #aaa;
-  font-size: 14px;
-  overflow-y: auto;
-  -webkit-overflow-scrolling: touch;
-  z-index: 10000;
-}
-
-.tabulator-edit-select-list .tabulator-edit-select-list-item {
-  padding: 4px;
-  color: #333;
-}
-
-.tabulator-edit-select-list .tabulator-edit-select-list-item.active {
-  color: #fff;
-  background: #1D68CD;
-}
-
-.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {
-  outline: 1px solid rgba(255, 255, 255, 0.5);
-}
-
-.tabulator-edit-select-list .tabulator-edit-select-list-item.focused {
-  outline: 1px solid #1D68CD;
-}
-
-.tabulator-edit-select-list .tabulator-edit-select-list-item:hover {
-  cursor: pointer;
-  color: #fff;
-  background: #1D68CD;
-}
-
-.tabulator-edit-select-list .tabulator-edit-select-list-notice {
-  padding: 4px;
-  color: #333;
-  text-align: center;
-}
-
-.tabulator-edit-select-list .tabulator-edit-select-list-group {
-  border-bottom: 1px solid #aaa;
-  padding: 4px;
-  padding-top: 6px;
-  color: #333;
-  font-weight: bold;
-}
-
-.tabulator-print-fullscreen {
-  position: absolute;
-  top: 0;
-  bottom: 0;
-  left: 0;
-  right: 0;
-  z-index: 10000;
-}
-
-body.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {
-  display: none !important;
-}
-
-.tabulator-print-table {
-  border-collapse: collapse;
-}
-
-.tabulator-print-table .tabulator-data-tree-branch {
-  display: inline-block;
-  vertical-align: middle;
-  height: 9px;
-  width: 7px;
-  margin-top: -9px;
-  margin-right: 5px;
-  border-bottom-left-radius: 1px;
-  border-left: 2px solid #aaa;
-  border-bottom: 2px solid #aaa;
-}
-
-.tabulator-print-table .tabulator-print-table-group {
-  box-sizing: border-box;
-  border-bottom: 1px solid #999;
-  border-right: 1px solid #aaa;
-  border-top: 1px solid #999;
-  padding: 5px;
-  padding-left: 10px;
-  background: #ccc;
-  font-weight: bold;
-  min-width: 100%;
-}
-
-.tabulator-print-table .tabulator-print-table-group:hover {
-  cursor: pointer;
-  background-color: rgba(0, 0, 0, 0.1);
-}
-
-.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {
-  margin-right: 10px;
-  border-left: 6px solid transparent;
-  border-right: 6px solid transparent;
-  border-top: 6px solid #666;
-  border-bottom: 0;
-}
-
-.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {
-  padding-left: 30px !important;
-}
-
-.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {
-  padding-left: 50px !important;
-}
-
-.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {
-  padding-left: 70px !important;
-}
-
-.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {
-  padding-left: 90px !important;
-}
-
-.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {
-  padding-left: 110px !important;
-}
-
-.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {
-  display: inline-block;
-}
-
-.tabulator-print-table .tabulator-print-table-group .tabulator-arrow {
-  display: inline-block;
-  width: 0;
-  height: 0;
-  margin-right: 16px;
-  border-top: 6px solid transparent;
-  border-bottom: 6px solid transparent;
-  border-right: 0;
-  border-left: 6px solid #666;
-  vertical-align: middle;
-}
-
-.tabulator-print-table .tabulator-print-table-group span {
-  margin-left: 10px;
-  color: #d00;
-}
-
-.tabulator-print-table .tabulator-data-tree-control {
-  display: -ms-inline-flexbox;
-  display: inline-flex;
-  -ms-flex-pack: center;
-      justify-content: center;
-  -ms-flex-align: center;
-      align-items: center;
-  vertical-align: middle;
-  height: 11px;
-  width: 11px;
-  margin-right: 5px;
-  border: 1px solid #333;
-  border-radius: 2px;
-  background: rgba(0, 0, 0, 0.1);
-  overflow: hidden;
-}
-
-.tabulator-print-table .tabulator-data-tree-control:hover {
-  cursor: pointer;
-  background: rgba(0, 0, 0, 0.2);
-}
-
-.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {
-  display: inline-block;
-  position: relative;
-  height: 7px;
-  width: 1px;
-  background: transparent;
-}
-
-.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {
-  position: absolute;
-  content: "";
-  left: -3px;
-  top: 3px;
-  height: 1px;
-  width: 7px;
-  background: #333;
-}
-
-.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {
-  display: inline-block;
-  position: relative;
-  height: 7px;
-  width: 1px;
-  background: #333;
-}
-
-.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {
-  position: absolute;
-  content: "";
-  left: -3px;
-  top: 3px;
-  height: 1px;
-  width: 7px;
-  background: #333;
-}
diff --git a/app/static/vendors/tabulator/css.old/tabulator.min.css b/app/static/vendors/tabulator/css.old/tabulator.min.css
deleted file mode 100644 (file)
index bafd6c7..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-.tabulator{position:relative;border:1px solid #999;background-color:#888;font-size:14px;text-align:left;overflow:hidden;transform:translatez(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableHolder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitDataTable]{display:inline-block}.tabulator.tabulator-block-select{-webkit-user-select:none;-ms-user-select:none;user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #999;background-color:#e6e6e6;color:#555;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;border-right:1px solid #aaa;background:#e6e6e6;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #999;background:#cdcdcd;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button:hover{cursor:pointer;opacity:.6}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{box-sizing:border-box;width:100%;border:1px solid #999;padding:1px;background:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{display:inline-block;position:absolute;top:9px;right:8px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:-ms-flexbox;display:flex;border-top:1px solid #aaa;overflow:hidden;margin-right:-1px}.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{position:relative;box-sizing:border-box;margin-top:2px;width:100%;text-align:center}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{width:0;height:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:#cdcdcd}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-arrow{border-top:6px solid #666;border-bottom:none}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{-ms-writing-mode:tb-rl;writing-mode:vertical-rl;text-orientation:mixed;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-right:0;padding-bottom:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-arrow{right:calc(50% - 6px)}.tabulator .tabulator-header .tabulator-frozen{display:inline-block;position:absolute;z-index:10}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;min-width:600%;background:#f3f3f3!important;border-top:1px solid #aaa;border-bottom:1px solid #aaa;overflow:hidden}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#f3f3f3!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-header .tabulator-frozen-rows-holder{min-width:600%}.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableHolder{position:relative;width:100%;white-space:nowrap;overflow:auto;-webkit-overflow-scrolling:touch}.tabulator .tabulator-tableHolder:focus{outline:none}.tabulator .tabulator-tableHolder .tabulator-placeholder{box-sizing:border-box;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;width:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder span{display:inline-block;margin:0 auto;padding:10px;color:#ccc;font-weight:700;font-size:20px}.tabulator .tabulator-tableHolder .tabulator-table{position:relative;display:inline-block;background-color:#fff;white-space:nowrap;overflow:visible;color:#333}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#e2e2e2!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #aaa}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #aaa}.tabulator .tabulator-footer{padding:5px 10px;border-top:1px solid #999;background-color:#e6e6e6;text-align:right;color:#555;font-weight:700;white-space:nowrap;-ms-user-select:none;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-footer .tabulator-calcs-holder{box-sizing:border-box;width:calc(100% + 20px);margin:-5px -10px 5px;text-align:left;background:#f3f3f3!important;border-bottom:1px solid #aaa;border-top:1px solid #aaa;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#f3f3f3!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px;border-bottom:none}.tabulator .tabulator-footer .tabulator-paginator{color:#555;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page-size{display:inline-block;margin:0 5px;padding:2px 5px;border:1px solid #aaa;border-radius:3px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{display:inline-block;margin:0 2px;padding:2px 5px;border:1px solid #aaa;border-radius:3px;background:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#d00}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}.tabulator .tabulator-col-resize-handle{position:absolute;right:0;top:0;bottom:0;width:5px}.tabulator .tabulator-col-resize-handle.prev{left:0;right:auto}.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}.tabulator .tabulator-loader{position:absolute;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;top:0;left:0;z-index:100;height:100%;width:100%;background:rgba(0,0,0,.4);text-align:center}.tabulator .tabulator-loader .tabulator-loader-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading{border:4px solid #333;color:#000}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error{border:4px solid #d00;color:#590000}.tabulator-row{position:relative;box-sizing:border-box;min-height:22px;background-color:#fff}.tabulator-row.tabulator-row-even{background-color:#efefef}.tabulator-row.tabulator-selectable:hover{background-color:#bbb;cursor:pointer}.tabulator-row.tabulator-selected{background-color:#9abcea}.tabulator-row.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}.tabulator-row.tabulator-row-moving{border:1px solid #000;background:#fff}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #aaa;border-bottom:1px solid #aaa;pointer-events:none;z-index:15}.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #aaa;border-bottom:1px solid #aaa}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:14px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:4px;border-right:1px solid #aaa;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{border:1px;background:transparent}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator-row .tabulator-cell.tabulator-row-handle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{width:100%;height:3px;margin-top:2px;background:#666}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #aaa;border-bottom:2px solid #aaa}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;height:15px;width:15px;border-radius:20px;background:#666;color:#fff;font-weight:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{opacity:.7}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open,.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{display:inline-block;height:14px;width:14px;border-radius:14px}.tabulator-row.tabulator-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #aaa;border-top:1px solid #999;padding:5px;padding-left:10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#d00}.tabulator-menu{position:absolute;display:inline-block;box-sizing:border-box;background:#fff;border:1px solid #aaa;box-shadow:0 0 5px 0 rgba(0,0,0,.2);font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-menu .tabulator-menu-item{padding:5px 10px;-webkit-user-select:none;-ms-user-select:none;user-select:none}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled{opacity:.5}.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{cursor:pointer;background:#efefef}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #aaa}.tabulator-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;background:#fff;border:1px solid #aaa;font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-edit-select-list .tabulator-edit-select-list-item{padding:4px;color:#333}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused{outline:1px solid hsla(0,0%,100%,.5)}.tabulator-edit-select-list .tabulator-edit-select-list-item.focused{outline:1px solid #1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{cursor:pointer;color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-notice{padding:4px;color:#333;text-align:center}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #aaa;padding:4px;padding-top:6px;color:#333;font-weight:700}.tabulator-print-fullscreen{position:absolute;top:0;bottom:0;left:0;right:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse}.tabulator-print-table .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #aaa;border-bottom:2px solid #aaa}.tabulator-print-table .tabulator-print-table-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #aaa;border-top:1px solid #999;padding:5px;padding-left:10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td{padding-left:30px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td{padding-left:50px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td{padding-left:70px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td{padding-left:90px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td{padding-left:110px!important}.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle{display:inline-block}.tabulator-print-table .tabulator-print-table-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-print-table .tabulator-print-table-group span{margin-left:10px;color:#d00}.tabulator-print-table .tabulator-data-tree-control{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}
-/*# sourceMappingURL=tabulator.min.css.map */
diff --git a/app/static/vendors/tabulator/css.old/tabulator.min.css.map b/app/static/vendors/tabulator/css.old/tabulator.min.css.map
deleted file mode 100644 (file)
index 47a4c5c..0000000
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["tabulator.scss"],"names":[],"mappings":"AA0CA,WACC,kBAAkB,AAElB,sBAxCgB,AA0ChB,sBA3CqB,AA6CrB,eA3Ca,AA4Cb,gBAAgB,AAChB,gBAAe,AAMf,uBAAwB,CAwfxB,AAvgBD,iFAoBI,cAAc,CACd,AArBJ,0CA0BE,oBAAqB,CACrB,AA3BF,kCA8BE,yBAAiB,AAAjB,qBAAiB,AAAjB,gBAAiB,CACjB,AA/BF,6BAmCE,kBAAiB,AACjB,sBAAsB,AAEtB,WAAU,AAEV,6BAtEwB,AAuExB,yBA1E4B,AA2E5B,WA1EmB,AA2EnB,gBAAgB,AAEhB,mBAAmB,AACnB,gBAAe,AAEf,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAmPpB,AAtSF,qDAsDG,YAAY,CACZ,AAvDH,4CA2DG,qBAAoB,AACpB,kBAAiB,AACjB,sBAAqB,AACrB,4BA7FoB,AA8FpB,mBAhG2B,AAiG3B,gBAAe,AACf,sBAAsB,AACtB,eAAgB,CAqLhB,AAvPH,6DAqEI,kBAAkB,AAClB,sBApGsB,AAqGtB,mBAA8C,AAC9C,mBAAoB,CACpB,AAzEJ,mEA6EI,sBAAqB,AACrB,kBAAkB,AAClB,WAAW,CAgDX,AA/HJ,iGAmFK,aAAc,CAMd,AAzFL,uGAsFM,eAAe,AACf,UAAW,CACX,AAxFN,wFA6FK,sBAAqB,AACrB,WAAW,AAEX,mBAAmB,AACnB,gBAAgB,AAChB,uBAAuB,AACvB,qBAAqB,CAarB,AAhHL,gHAuGM,sBAAsB,AACtB,WAAW,AAEX,sBAAqB,AAErB,YAAW,AAEX,eAAgB,CAChB,AA/GN,oFAoHK,qBAAqB,AACrB,kBAAkB,AAClB,QAAO,AACP,UAAS,AACT,QAAQ,AACR,SAAS,AACT,kCAAkC,AAClC,mCAAmC,AACnC,4BArJmB,CAsJnB,AA7HL,0FAsIK,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AAEb,0BAxKkB,AAyKlB,gBAAgB,AAEhB,iBAAiB,CACjB,AA7IL,0FAmJK,YAAa,CACb,AApJL,qEAyJI,kBAAkB,AAClB,sBAAsB,AACtB,eAAc,AACd,WAAU,AACV,iBAAkB,CAiBlB,AA9KJ,8EAiKK,qBAAsB,CACtB,AAlKL,yEAqKK,cAAe,CACf,AAtKL,sFA0KM,QAAS,AACT,QAAS,CACT,AA5KN,oFAmLK,kBAAkB,CAClB,AApLL,qEAuLK,eAAc,AACd,wBAAoD,CACpD,AAzLL,uHA6LM,gBAAgB,AAChB,4BAvNkB,CAwNlB,AA/LN,sHAoMM,gBAAgB,AAChB,4BA/NgB,CAgOhB,AAtMN,uHA2MM,0BArOgB,AAsOhB,kBAAmB,CACnB,AA7MN,+GAqNM,uBAAyB,AAAzB,yBAAyB,AACzB,uBAAuB,AAEvB,oBAAY,AAAZ,aAAY,AACZ,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,sBAAsB,CACtB,AA3NN,oHAgOM,wBAAyB,CACzB,AAjON,2GAsOM,gBAAe,AACf,gBAAgB,CAChB,AAxON,uIA4OO,gBAAe,AACf,mBAAmB,CACnB,AA9OP,uGAmPM,qBAAqB,CACrB,AApPN,+CA0PG,qBAAqB,AACrB,kBAAkB,AAIlB,UAAW,CASX,AAxQH,qEAkQI,2BAtRgB,CAuRhB,AAnQJ,sEAsQI,0BA1RgB,CA2RhB,AAvQJ,qDA4QG,sBAAqB,AACrB,eAAc,AAEd,6BAAyD,AAUzD,0BA7SiB,AA8SjB,6BAzToB,AA2TpB,eAAgB,CAChB,AA7RH,oEAkRI,4BAAyD,CAKzD,AAvRJ,iGAqRK,YAAa,CACb,AAtRL,2DAgSG,cAAc,CAKd,AArSH,iEAmSI,YAAa,CACb,AApSJ,kCA0SE,kBAAiB,AACjB,WAAU,AACV,mBAAmB,AACnB,cAAa,AACb,gCAAiC,CAyDjC,AAvWF,wCAiTG,YAAa,CACb,AAlTH,yDAsTG,sBAAqB,AACrB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AAOlB,UAAU,CAYV,AA3UH,wFA2TI,gBAAe,AACf,cAAc,CACd,AA7TJ,8DAkUI,qBAAqB,AAErB,cAAa,AACb,aAAY,AAEZ,WAAU,AACV,gBAAiB,AACjB,cAAe,CACf,AA1UJ,mDA+UG,kBAAiB,AACjB,qBAAoB,AACpB,sBAvWqB,AAwWrB,mBAAmB,AACnB,iBAAgB,AAChB,UAvWe,CAyXf,AAtWH,kFAyVK,gBAAiB,AACjB,4BAAwD,CASxD,AAnWL,sGA6VM,4BAjXc,CAkXd,AA9VN,yGAiWM,yBArXc,CAsXd,AAlWN,6BA6WE,iBAAgB,AAChB,0BApXwB,AAqXxB,yBAxX4B,AAyX5B,iBAAiB,AACjB,WAzXmB,AA0XnB,gBAAgB,AAChB,mBAAkB,AAClB,qBAAgB,AAAhB,iBAAgB,AAEhB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAgFpB,AAzcF,qDA4XG,sBAAqB,AACrB,wBAAuB,AACvB,sBAA2B,AAE3B,gBAAgB,AAEhB,6BAAyD,AAUzD,6BAhaiB,AAiajB,0BAjaiB,AAmajB,eAAgB,CAMhB,AArZH,oEAqYI,4BAAyD,CAKzD,AA1YJ,iGAwYK,YAAa,CACb,AAzYL,gEAkZI,mBAAkB,AAClB,kBAAkB,CAClB,AApZJ,kDAwZG,WAhakB,AAialB,oBAAmB,AACnB,oBAAmB,AACnB,iBAAiB,CACjB,AA5ZH,kDAgaG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBA5aoB,AA6apB,iBAAiB,CACjB,AAvaH,8CA0aG,YAAY,CACZ,AA3aH,6CA+aG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBA3boB,AA4bpB,kBAAiB,AAEjB,6BAA+B,CAiB/B,AAxcH,oDA0bI,UA/bmB,CAgcnB,AA3bJ,sDA8bI,UAAU,CACV,AA/bJ,kEAmcK,eAAc,AACd,0BAAyB,AACzB,UAAU,CACV,AAtcL,wCA6cE,kBAAiB,AACjB,QAAO,AACP,MAAK,AACL,SAAQ,AACR,SAAS,CAUT,AA3dF,6CAodG,OAAM,AACN,UAAU,CACV,AAtdH,8CAydG,gBAAgB,CAChB,AA1dH,6BAgeE,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AAElB,MAAK,AACL,OAAM,AACN,YAAW,AAEX,YAAW,AACX,WAAU,AACV,0BAAyB,AACzB,iBAAiB,CA2BjB,AAtgBF,mDA+eG,qBAAoB,AAEpB,cAAa,AACb,kBAAiB,AAEjB,mBAAkB,AAElB,gBAAe,AACf,gBAAgB,AAChB,cAAc,CAad,AArgBH,qEA4fI,sBAAqB,AACrB,UAAU,CACV,AA9fJ,mEAkgBI,sBAAqB,AACrB,aAAa,CACb,AAMJ,eACC,kBAAkB,AAClB,sBAAsB,AACtB,gBAA0C,AAC1C,qBApiBuB,CAo5BvB,AApXD,kCAQE,wBAviB4B,CAwiB5B,AATF,0CAYE,sBAxiBsB,AAyiBtB,cAAe,CACf,AAdF,kCAiBE,wBA3iB6B,CA4iB7B,AAlBF,wCAqBE,yBA9iBkC,AA+iBlC,cAAe,CACf,AAvBF,oCA0BE,sBAAqB,AACrB,eAAe,CACf,AA5BF,gCA+BE,kBAAkB,AAElB,0BA/jBkB,AAgkBlB,6BAhkBkB,AAkkBlB,oBAAoB,AACpB,UAAU,CACV,AAtCF,4CA0CE,kBAAiB,AACjB,QAAO,AACP,SAAQ,AACR,OAAM,AACN,UAAU,CAUV,AAxDF,iDAiDG,MAAK,AACL,WAAW,CACX,AAnDH,kDAsDG,gBAAgB,CAChB,AAvDH,iCA2DE,qBAAqB,AACrB,kBAAkB,AAElB,yBAAyB,AAEzB,UAAW,CASX,AAzEF,uDAmEG,2BAjmBiB,CAkmBjB,AApEH,wDAuEG,0BArmBiB,CAsmBjB,AAxEH,8CA4EE,sBAAqB,AAErB,YAAW,AAEX,0BA9mBkB,AA+mBlB,4BA/mBkB,CAkoBlB,AApGF,oDAoFG,YAAY,CACZ,AArFH,oDAwFG,cAtoBW,CAipBX,AAnGH,0DA4FK,iBAAkB,CAKlB,AAjGL,wEA+FM,kBAAkB,CAClB,AAhGN,+BAwGE,qBAAoB,AACpB,kBAAkB,AAClB,sBAAqB,AACrB,YAAW,AACX,4BA1oBkB,AA2oBlB,sBAAqB,AACrB,mBAAkB,AAClB,gBAAe,AACf,sBAAsB,CAyLtB,AAzSF,iDAmHG,yBA1oBkB,AA2oBlB,SAAU,CAMV,AA1HH,+GAuHI,WAAU,AACV,sBAAsB,CACtB,AAzHJ,yDA6HG,qBAnpBgB,CA0pBhB,AApIH,+HA+HI,WAAU,AACV,uBAAsB,AAEtB,UAxpBe,CAypBf,AAnIJ,6EAyII,YAAa,CACb,AA1IJ,oDA+IG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,uBAAsB,AAEtB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAcpB,AApKH,8EA0JI,SAAS,CAST,AAnKJ,wGA8JK,WAAU,AACV,WAAU,AACV,eAAc,AACd,eAAe,CACf,AAlKL,2DAuKG,qBAAoB,AACpB,sBAAqB,AAErB,WAAU,AACV,UAAS,AAET,gBAAe,AACf,iBAAgB,AAEhB,8BAA6B,AAE7B,2BAhtBiB,AAitBjB,4BAjtBiB,CAktBjB,AApLH,4DAwLG,2BAAmB,AAAnB,oBAAmB,AACnB,qBAAsB,AAAtB,uBAAsB,AACtB,sBAAkB,AAAlB,mBAAkB,AAClB,sBAAqB,AAErB,YAAW,AACX,WAAU,AAEV,iBAAgB,AAEhB,sBA/tBe,AAguBf,kBAAiB,AACjB,0BAA4B,AAE5B,eAAe,CAmDf,AAzPH,kEAyMI,eAAc,AACd,yBAA4B,CAC5B,AA3MJ,kGA8MI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,sBAAuB,CAavB,AAjOJ,wGAuNK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eA5vBa,CA6vBb,AAhOL,gGAoOI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,eAvwBc,CAoxBd,AAvPJ,sGA6OK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eAlxBa,CAmxBb,AAtPL,qEA4PG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,uBAAsB,AAEtB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,oBAAoB,AAEpB,YAAW,AACX,WAAU,AAEV,mBAAkB,AAClB,gBAAe,AAEf,WA3yBqB,AA4yBrB,gBAAgB,AAChB,eAAe,CAmBf,AAhSH,2EAgRI,UAAU,CACV,AAjRJ,sHAqRK,eAAe,CACf,AAtRL,sOA8RI,YAAY,CACZ,AA/RJ,wDAmSG,qBAAqB,AACrB,YAAW,AACX,WAAU,AAEV,kBAAkB,CAClB,AAxSH,+BA6SE,sBAAqB,AACrB,6BAA4B,AAC5B,4BA70BkB,AA80BlB,0BAAyB,AACzB,YAAW,AACX,kBAAiB,AACjB,gBAAe,AACf,gBAAgB,AAEhB,cAAe,CA4Df,AAlXF,qCAyTG,eAAc,AACd,+BAA+B,CAC/B,AA3TH,wEAgUI,kBAAiB,AACjB,kCAAkC,AAClC,mCAAmC,AACnC,0BAv2BkB,AAw2BlB,eAAgB,CAChB,AArUJ,uDA0UG,iBAAiB,CACjB,AA3UH,uDA8UG,iBAAiB,CACjB,AA/UH,uDAkVG,iBAAiB,CACjB,AAnVH,uDAsVG,iBAAiB,CACjB,AAvVH,uDA0VG,kBAAkB,CAClB,AA3VH,uDA8VG,oBAAqB,CACrB,AA/VH,gDAmWG,qBAAqB,AACrB,QAAQ,AACR,SAAS,AACT,kBAAiB,AACjB,iCAAiC,AACjC,oCAAoC,AACpC,eAAe,AACf,2BA94BmB,AA+4BnB,qBAAqB,CACrB,AA5WH,oCA+WG,iBAAgB,AAChB,UAAU,CACV,AAKH,gBACC,kBAAkB,AAClB,qBAAoB,AACpB,sBAAqB,AAErB,gBA35BuB,AA45BvB,sBA15BmB,AA25BnB,oCAAuC,AAEvC,eA76Ba,AA+6Bb,gBAAe,AACf,iCAAiC,AAEjC,aAAc,CAqBd,AAnCD,qCAkBE,iBAAgB,AAEhB,yBAAiB,AAAjB,qBAAiB,AAAjB,gBAAiB,CAUjB,AA9BF,kEAuBG,UAAW,CACX,AAxBH,8EA2BG,eAAe,AACf,kBAj7B2B,CAk7B3B,AA7BH,0CAiCE,yBAr7BkB,CAs7BlB,AAGF,4BACC,kBAAkB,AAClB,qBAAoB,AACpB,sBAAqB,AAErB,iBAAgB,AAEhB,gBAl8BuB,AAm8BvB,sBAj8BmB,AAm8BnB,eAn9Ba,AAq9Bb,gBAAe,AACf,iCAAiC,AAEjC,aAAc,CA4Cd,AA3DD,6DAkBE,YAAW,AAEX,UA58BgB,CAi+BhB,AAzCF,oEAuBG,WAl9BqB,AAm9BrB,kBA18BkB,CA+8BlB,AA7BH,4EA2BI,oCAt9BoB,CAu9BpB,AA5BJ,qEAgCG,yBAl9BkB,CAm9BlB,AAjCH,mEAoCG,eAAc,AAEd,WAj+BqB,AAk+BrB,kBAz9BkB,CA09BlB,AAxCH,+DA4CE,YAAW,AAEX,WAt+BgB,AAu+BhB,iBAAkB,CAClB,AAhDF,8DAmDE,6BA5+BkB,AA8+BlB,YAAW,AACX,gBAAe,AAEf,WAh/BgB,AAi/BhB,eAAgB,CAChB,AAKF,4BACC,kBAAkB,AAClB,MAAK,AACL,SAAQ,AACR,OAAM,AACN,QAAO,AAEP,aAAc,CACd,AAED,uEACC,sBAAuB,CACvB,AAED,uBACC,wBAAyB,CAwKzB,AAzKD,mDAIE,qBAAoB,AACpB,sBAAqB,AAErB,WAAU,AACV,UAAS,AAET,gBAAe,AACf,iBAAgB,AAEhB,8BAA6B,AAE7B,2BArhCkB,AAshClB,4BAthCkB,CAuhClB,AAjBF,oDAqBE,sBAAqB,AACrB,6BAA4B,AAC5B,4BA7hCkB,AA8hClB,0BAAyB,AACzB,YAAW,AACX,kBAAiB,AACjB,gBAAe,AACf,gBAAgB,AAEhB,cAAe,CAsEf,AApGF,0DAiCG,eAAc,AACd,+BAA+B,CAC/B,AAnCH,6FAwCI,kBAAiB,AACjB,kCAAkC,AAClC,mCAAmC,AACnC,0BAvjCkB,AAwjClB,eAAgB,CAChB,AA7CJ,+EAmDI,2BAA4B,CAC5B,AApDJ,+EAyDI,2BAA4B,CAC5B,AA1DJ,+EA+DI,2BAA4B,CAC5B,AAhEJ,+EAqEI,2BAA4B,CAC5B,AAtEJ,+EA2EI,4BAA6B,CAC7B,AA5EJ,4EAgFG,oBAAqB,CACrB,AAjFH,qEAqFG,qBAAqB,AACrB,QAAQ,AACR,SAAS,AACT,kBAAiB,AACjB,iCAAiC,AACjC,oCAAoC,AACpC,eAAe,AACf,2BAxmCmB,AAymCnB,qBAAqB,CACrB,AA9FH,yDAiGG,iBAAgB,AAChB,UAAU,CACV,AAnGH,oDAwGE,2BAAmB,AAAnB,oBAAmB,AACnB,qBAAsB,AAAtB,uBAAsB,AACtB,sBAAkB,AAAlB,mBAAkB,AAClB,sBAAqB,AAErB,YAAW,AACX,WAAU,AAEV,iBAAgB,AAEhB,sBAvnCgB,AAwnChB,kBAAiB,AACjB,0BAA4B,AAE5B,eAAe,CAkDf,AAxKF,0DAyHG,eAAc,AACd,yBAA4B,CAC5B,AA3HH,0FA8HG,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,sBAAuB,CAavB,AAjJH,gGAuII,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eAppCc,CAqpCd,AAhJJ,wFAoJG,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,eA/pCe,CA4qCf,AAvKH,8FA6JI,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eA1qCc,CA2qCd","file":"tabulator.min.css","sourcesContent":["/* Tabulator v4.7.0 (c) Oliver Folkerd */\n\n\r\n//Main Theme Variables\r\n$backgroundColor: #888 !default; //background color of tabulator\r\n$borderColor:#999 !default; //border to tabulator\r\n$textSize:14px !default; //table text size\r\n\r\n//header themeing\r\n$headerBackgroundColor:#e6e6e6 !default; //border to tabulator\r\n$headerTextColor:#555 !default; //header text colour\r\n$headerBorderColor:#aaa !default;  //header border color\r\n$headerSeperatorColor:#999 !default; //header bottom seperator color\r\n$headerMargin:4px !default; //padding round header\r\n\r\n//column header arrows\r\n$sortArrowActive: #666 !default;\r\n$sortArrowInactive: #bbb !default;\r\n\r\n//row themeing\r\n$rowBackgroundColor:#fff !default; //table row background color\r\n$rowAltBackgroundColor:#EFEFEF !default; //table row background color\r\n$rowBorderColor:#aaa !default; //table border color\r\n$rowTextColor:#333 !default; //table text color\r\n$rowHoverBackground:#bbb !default; //row background color on hover\r\n\r\n$rowSelectedBackground: #9ABCEA !default; //row background color when selected\r\n$rowSelectedBackgroundHover: #769BCC !default;//row background color when selected and hovered\r\n\r\n$editBoxColor:#1D68CD !default; //border color for edit boxes\r\n$errorColor:#dd0000 !default; //error indication\r\n\r\n//footer themeing\r\n$footerBackgroundColor:#e6e6e6 !default; //border to tabulator\r\n$footerTextColor:#555 !default; //footer text colour\r\n$footerBorderColor:#aaa !default; //footer border color\r\n$footerSeperatorColor:#999 !default; //footer bottom seperator color\r\n$footerActiveColor:#d00 !default; //footer bottom active text color\r\n\r\n\r\n\r\n//Tabulator Containing Element\r\n.tabulator{\r\n\tposition: relative;\r\n\r\n\tborder: 1px solid $borderColor;\r\n\r\n\tbackground-color: $backgroundColor;\r\n\r\n\tfont-size:$textSize;\r\n\ttext-align: left;\r\n\toverflow:hidden;\r\n\r\n\t-webkit-transform: translatez(0);\r\n\t-moz-transform: translatez(0);\r\n\t-ms-transform: translatez(0);\r\n\t-o-transform: translatez(0);\r\n\ttransform: translatez(0);\r\n\r\n\t&[tabulator-layout=\"fitDataFill\"]{\r\n\t\t.tabulator-tableHolder{\r\n\t\t\t.tabulator-table{\r\n\t\t\t\tmin-width:100%;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t&[tabulator-layout=\"fitDataTable\"]{\r\n\t\tdisplay: inline-block;\r\n\t}\r\n\r\n\t&.tabulator-block-select{\r\n\t\tuser-select: none;\r\n\t}\r\n\r\n\t//column header containing element\r\n\t.tabulator-header{\r\n\t\tposition:relative;\r\n\t\tbox-sizing: border-box;\r\n\r\n\t\twidth:100%;\r\n\r\n\t\tborder-bottom:1px solid $headerSeperatorColor;\r\n\t\tbackground-color: $headerBackgroundColor;\r\n\t\tcolor: $headerTextColor;\r\n\t\tfont-weight:bold;\r\n\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:hidden;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t&.tabulator-header-hidden{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\t//individual column header element\r\n\t\t.tabulator-col{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tposition:relative;\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tborder-right:1px solid $headerBorderColor;\r\n\t\t\tbackground:$headerBackgroundColor;\r\n\t\t\ttext-align:left;\r\n\t\t\tvertical-align: bottom;\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&.tabulator-moving{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tborder:1px solid  $headerSeperatorColor;\r\n\t\t\t\tbackground:darken($headerBackgroundColor, 10%);\r\n\t\t\t\tpointer-events: none;\r\n\t\t\t}\r\n\r\n\t\t\t//hold content of column header\r\n\t\t\t.tabulator-col-content{\r\n\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tpadding:4px;\r\n\r\n\t\t\t\t//header menu button\r\n\t\t\t\t.tabulator-header-menu-button{\r\n\t\t\t\t\tpadding: 0 8px;\r\n\r\n\t\t\t\t\t&:hover{\r\n\t\t\t\t\t\tcursor: pointer;\r\n\t\t\t\t\t\topacity: .6;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//hold title of column header\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\twhite-space: nowrap;\r\n\t\t\t\t\toverflow: hidden;\r\n\t\t\t\t\ttext-overflow: ellipsis;\r\n\t\t\t\t\tvertical-align:bottom;\r\n\r\n\t\t\t\t\t//element to hold title editor\r\n\t\t\t\t\t.tabulator-title-editor{\r\n\t\t\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\t\tborder:1px solid #999;\r\n\r\n\t\t\t\t\t\tpadding:1px;\r\n\r\n\t\t\t\t\t\tbackground: #fff;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//column sorter arrow\r\n\t\t\t\t.tabulator-arrow{\r\n\t\t\t\t\tdisplay: inline-block;\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\ttop:9px;\r\n\t\t\t\t\tright:8px;\r\n\t\t\t\t\twidth: 0;\r\n\t\t\t\t\theight: 0;\r\n\t\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t//complex header column group\r\n\t\t\t&.tabulator-col-group{\r\n\r\n\t\t\t\t//gelement to hold sub columns in column group\r\n\t\t\t\t.tabulator-col-group-cols{\r\n\t\t\t\t\tposition:relative;\r\n\t\t\t\t\tdisplay: flex;\r\n\r\n\t\t\t\t\tborder-top:1px solid $headerBorderColor;\r\n\t\t\t\t\toverflow: hidden;\r\n\r\n\t\t\t\t\tmargin-right:-1px;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//hide left resize handle on first column\r\n\t\t\t&:first-child{\r\n\t\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//header filter containing element\r\n\t\t\t.tabulator-header-filter{\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\tmargin-top:2px;\r\n\t\t\t\twidth:100%;\r\n\t\t\t\ttext-align: center;\r\n\r\n\t\t\t\t//styling adjustment for inbuilt editors\r\n\t\t\t\ttextarea{\r\n\t\t\t\t\theight:auto !important;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsvg{\r\n\t\t\t\t\tmargin-top: 3px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tinput{\r\n\t\t\t\t\t&::-ms-clear {\r\n\t\t\t\t\t\twidth : 0;\r\n\t\t\t\t\t\theight: 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//styling child elements for sortable columns\r\n\t\t\t&.tabulator-sortable{\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tpadding-right:25px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground-color:darken($headerBackgroundColor, 10%);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"none\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"asc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowActive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"desc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\t\t\tborder-bottom: none;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\t\t\t&.tabulator-col-vertical{\r\n\t\t\t\t.tabulator-col-content{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\twriting-mode: vertical-rl;\r\n\t\t\t\t\t\ttext-orientation: mixed;\r\n\r\n\t\t\t\t\t\tdisplay:flex;\r\n\t\t\t\t\t\talign-items:center;\r\n\t\t\t\t\t\tjustify-content:center;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\ttransform: rotate(180deg);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-sortable{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\tpadding-top:20px;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\t\tpadding-bottom:20px;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t.tabulator-arrow{\r\n\t\t\t\t\t\tright:calc(50% - 6px);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-frozen{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\tposition: absolute;\r\n\r\n\t\t\t// background-color: inherit;\r\n\r\n\t\t\tz-index: 10;\r\n\r\n\t\t\t&.tabulator-frozen-left{\r\n\t\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t&.tabulator-frozen-right{\r\n\t\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tmin-width:600%;\r\n\r\n\t\t\tbackground:lighten($headerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:lighten($headerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\t\t\tborder-bottom:1px solid $headerBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\t\t}\r\n\r\n\t\t.tabulator-frozen-rows-holder{\r\n\t\t\tmin-width:600%;\r\n\r\n\t\t\t&:empty{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//scrolling element to hold table\r\n\t.tabulator-tableHolder{\r\n\t\tposition:relative;\r\n\t\twidth:100%;\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:auto;\r\n\t\t-webkit-overflow-scrolling: touch;\r\n\r\n\t\t&:focus{\r\n\t\t\toutline: none;\r\n\t\t}\r\n\r\n\t\t//default placeholder element\r\n\t\t.tabulator-placeholder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t&[tabulator-render-mode=\"virtual\"]{\r\n\t\t\t\tmin-height:100%;\r\n\t\t\t\tmin-width:100%;\r\n\t\t\t}\r\n\r\n\t\t\twidth:100%;\r\n\r\n\t\t\tspan{\r\n\t\t\t\tdisplay: inline-block;\r\n\r\n\t\t\t\tmargin:0 auto;\r\n\t\t\t\tpadding:10px;\r\n\r\n\t\t\t\tcolor:#ccc;\r\n\t\t\t\tfont-weight: bold;\r\n\t\t\t\tfont-size: 20px;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//element to hold table rows\r\n\t\t.tabulator-table{\r\n\t\t\tposition:relative;\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tbackground-color:$rowBackgroundColor;\r\n\t\t\twhite-space: nowrap;\r\n\t\t\toverflow:visible;\r\n\t\t\tcolor:$rowTextColor;\r\n\r\n\t\t\t//row element\r\n\t\t\t.tabulator-row{\r\n\t\t\t\t&.tabulator-calcs{\r\n\t\t\t\t\tfont-weight: bold;\r\n\t\t\t\t\tbackground:darken($rowAltBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t\t&.tabulator-calcs-top{\r\n\t\t\t\t\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-calcs-bottom{\r\n\t\t\t\t\t\tborder-top:2px solid $rowBorderColor;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n\r\n\r\n\r\n\t//footer element\r\n\t.tabulator-footer{\r\n\t\tpadding:5px 10px;\r\n\t\tborder-top:1px solid $footerSeperatorColor;\r\n\t\tbackground-color: $footerBackgroundColor;\r\n\t\ttext-align: right;\r\n\t\tcolor: $footerTextColor;\r\n\t\tfont-weight:bold;\r\n\t\twhite-space:nowrap;\r\n\t\tuser-select:none;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\twidth:calc(100% + 20px);\r\n\t\t\tmargin:-5px -10px 5px -10px;\r\n\r\n\t\t\ttext-align: left;\r\n\r\n\t\t\tbackground:lighten($footerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:lighten($footerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-bottom:1px solid $rowBorderColor;\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&:only-child{\r\n\t\t\t\tmargin-bottom:-5px;\r\n\t\t\t\tborder-bottom:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-paginator{\r\n\t\t\tcolor: $footerTextColor;\r\n\t\t\tfont-family:inherit;\r\n\t\t\tfont-weight:inherit;\r\n\t\t\tfont-size:inherit;\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-page-size{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 5px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\t\t}\r\n\r\n\t\t.tabulator-pages{\r\n\t\t\tmargin:0 7px;\r\n\t\t}\r\n\r\n\t\t//pagination button\r\n\t\t.tabulator-page{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 2px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\r\n\t\t\tbackground:rgba(255,255,255,.2);\r\n\r\n\t\t\t&.active{\r\n\t\t\t\tcolor:$footerActiveColor;\r\n\t\t\t}\r\n\r\n\t\t\t&:disabled{\r\n\t\t\t\topacity:.5;\r\n\t\t\t}\r\n\r\n\t\t\t&:not(.disabled){\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground:rgba(0,0,0,.2);\r\n\t\t\t\t\tcolor:#fff;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//column resize handles\r\n\t.tabulator-col-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\ttop:0;\r\n\t\tbottom:0;\r\n\t\twidth:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\tleft:0;\r\n\t\t\tright:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ew-resize;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//holding div that contains loader and covers tabulator element to prevent interaction\r\n\t.tabulator-loader{\r\n\t\tposition:absolute;\r\n\t\tdisplay: flex;\r\n\t\talign-items:center;\r\n\r\n\t\ttop:0;\r\n\t\tleft:0;\r\n\t\tz-index:100;\r\n\r\n\t\theight:100%;\r\n\t\twidth:100%;\r\n\t\tbackground:rgba(0,0,0,.4);\r\n\t\ttext-align:center;\r\n\r\n\t\t//loading message element\r\n\t\t.tabulator-loader-msg{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 auto;\r\n\t\t\tpadding:10px 20px;\r\n\r\n\t\t\tborder-radius:10px;\r\n\r\n\t\t\tbackground:#fff;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:16px;\r\n\r\n\t\t\t//loading message\r\n\t\t\t&.tabulator-loading{\r\n\t\t\t\tborder:4px solid #333;\r\n\t\t\t\tcolor:#000;\r\n\t\t\t}\r\n\r\n\t\t\t//error message\r\n\t\t\t&.tabulator-error{\r\n\t\t\t\tborder:4px solid #D00;\r\n\t\t\t\tcolor:#590000;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n//row element\r\n.tabulator-row{\r\n\tposition: relative;\r\n\tbox-sizing: border-box;\r\n\tmin-height:$textSize + ($headerMargin * 2);\r\n\tbackground-color: $rowBackgroundColor;\r\n\r\n\r\n\t&.tabulator-row-even{\r\n\t\tbackground-color: $rowAltBackgroundColor;\r\n\t}\r\n\r\n\t&.tabulator-selectable:hover{\r\n\t\tbackground-color:$rowHoverBackground;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t&.tabulator-selected{\r\n\t\tbackground-color:$rowSelectedBackground;\r\n\t}\r\n\r\n\t&.tabulator-selected:hover{\r\n\t\tbackground-color:$rowSelectedBackgroundHover;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t&.tabulator-row-moving{\r\n\t\tborder:1px solid #000;\r\n\t\tbackground:#fff;\r\n\t}\r\n\r\n\t&.tabulator-moving{\r\n\t\tposition: absolute;\r\n\r\n\t\tborder-top:1px solid  $rowBorderColor;\r\n\t\tborder-bottom:1px solid  $rowBorderColor;\r\n\r\n\t\tpointer-events: none;\r\n\t\tz-index:15;\r\n\t}\r\n\r\n\t//row resize handles\r\n\t.tabulator-row-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\tbottom:0;\r\n\t\tleft:0;\r\n\t\theight:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\ttop:0;\r\n\t\t\tbottom:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ns-resize;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-frozen{\r\n\t\tdisplay: inline-block;\r\n\t\tposition: absolute;\r\n\r\n\t\tbackground-color: inherit;\r\n\r\n\t\tz-index: 10;\r\n\r\n\t\t&.tabulator-frozen-left{\r\n\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t&.tabulator-frozen-right{\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-responsive-collapse{\r\n\t\tbox-sizing:border-box;\r\n\r\n\t\tpadding:5px;\r\n\r\n\t\tborder-top:1px solid $rowBorderColor;\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\t&:empty{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\ttable{\r\n\t\t\tfont-size:$textSize;\r\n\r\n\t\t\ttr{\r\n\t\t\t\ttd{\r\n\t\t\t\t\tposition: relative;\r\n\r\n\t\t\t\t\t&:first-of-type{\r\n\t\t\t\t\t\tpadding-right:10px;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//cell element\r\n\t.tabulator-cell{\r\n\t\tdisplay:inline-block;\r\n\t\tposition: relative;\r\n\t\tbox-sizing:border-box;\r\n\t\tpadding:4px;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tvertical-align:middle;\r\n\t\twhite-space:nowrap;\r\n\t\toverflow:hidden;\r\n\t\ttext-overflow:ellipsis;\r\n\r\n\t\t&.tabulator-editing{\r\n\t\t\tborder:1px solid  $editBoxColor;\r\n\t\t\tpadding: 0;\r\n\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-validation-fail{\r\n\t\t\tborder:1px solid $errorColor;\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\r\n\t\t\t\tcolor: $errorColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//hide left resize handle on first column\r\n\t\t&:first-child{\r\n\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//movable row handle\r\n\t\t&.tabulator-row-handle{\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\t\t\tjustify-content:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\t//handle holder\r\n\t\t\t.tabulator-row-handle-box{\r\n\t\t\t\twidth:80%;\r\n\r\n\t\t\t\t//Hamburger element\r\n\t\t\t\t.tabulator-row-handle-bar{\r\n\t\t\t\t\twidth:100%;\r\n\t\t\t\t\theight:3px;\r\n\t\t\t\t\tmargin-top:2px;\r\n\t\t\t\t\tbackground:#666;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-branch{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:9px;\r\n\t\t\twidth:7px;\r\n\r\n\t\t\tmargin-top:-9px;\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder-bottom-left-radius:1px;\r\n\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-control{\r\n\r\n\t\t\tdisplay:inline-flex;\r\n\t\t\tjustify-content:center;\r\n\t\t\talign-items:center;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:11px;\r\n\t\t\twidth:11px;\r\n\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder:1px solid $rowTextColor;\r\n\t\t\tborder-radius:2px;\r\n\t\t\tbackground:rgba(0, 0, 0, .1);\r\n\r\n\t\t\toverflow:hidden;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\tcursor:pointer;\r\n\t\t\t\tbackground:rgba(0, 0, 0, .2);\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-collapse{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: transparent;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-expand{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: $rowTextColor;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t.tabulator-responsive-collapse-toggle{\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\t\t\tjustify-content:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\theight:15px;\r\n\t\t\twidth:15px;\r\n\r\n\t\t\tborder-radius:20px;\r\n\t\t\tbackground:#666;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:1.1em;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\topacity:.7;\r\n\t\t\t}\r\n\r\n\t\t\t&.open{\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\t\tdisplay:initial;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-open{\r\n\t\t\t\t\tdisplay:none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\tdisplay:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-traffic-light{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\theight:14px;\r\n\t\t\twidth:14px;\r\n\r\n\t\t\tborder-radius:14px;\r\n\t\t}\r\n\t}\r\n\r\n\t//row grouping element\r\n\t&.tabulator-group{\r\n\t\tbox-sizing:border-box;\r\n\t\tborder-bottom:1px solid #999;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tborder-top:1px solid #999;\r\n\t\tpadding:5px;\r\n\t\tpadding-left:10px;\r\n\t\tbackground:#ccc;\r\n\t\tfont-weight:bold;\r\n\r\n\t\tmin-width: 100%;\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\t\t\tbackground-color:rgba(0,0,0,.1);\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-visible{\r\n\r\n\t\t\t.tabulator-arrow{\r\n\t\t\t\tmargin-right:10px;\r\n\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\tborder-bottom: 0;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-1{\r\n\t\t\tpadding-left:30px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-2{\r\n\t\t\tpadding-left:50px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-3{\r\n\t\t\tpadding-left:70px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-4{\r\n\t\t\tpadding-left:90px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-5{\r\n\t\t\tpadding-left:110px;\r\n\t\t}\r\n\r\n\t\t.tabulator-group-toggle{\r\n\t\t\tdisplay: inline-block;\r\n\t\t}\r\n\r\n\t\t//sorting arrow\r\n\t\t.tabulator-arrow{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t\tmargin-right:16px;\r\n\t\t\tborder-top: 6px solid transparent;\r\n\t\t\tborder-bottom: 6px solid transparent;\r\n\t\t\tborder-right: 0;\r\n\t\t\tborder-left: 6px solid $sortArrowActive;\r\n\t\t\tvertical-align:middle;\r\n\t\t}\r\n\r\n\t\tspan{\r\n\t\t\tmargin-left:10px;\r\n\t\t\tcolor:#d00;\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\n.tabulator-menu{\r\n\tposition: absolute;\r\n\tdisplay:inline-block;\r\n\tbox-sizing:border-box;\r\n\r\n\tbackground:$rowBackgroundColor;\r\n\tborder:1px solid $rowBorderColor;\r\n\tbox-shadow: 0 0 5px 0 rgba(0, 0, 0, .2);\r\n\r\n\tfont-size:$textSize;\r\n\r\n\toverflow-y:auto;\r\n\t-webkit-overflow-scrolling: touch;\r\n\r\n\tz-index: 10000;\r\n\r\n\t.tabulator-menu-item{\r\n\r\n\t\tpadding:5px 10px;\r\n\r\n\t\tuser-select: none;\r\n\r\n\t\t&.tabulator-menu-item-disabled{\r\n\t\t\topacity: .5;\r\n\t\t}\r\n\r\n\t\t&:not(.tabulator-menu-item-disabled):hover{\r\n\t\t\tcursor: pointer;\r\n\t\t\tbackground: $rowAltBackgroundColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-menu-separator{\r\n\t\tborder-top:1px solid $rowBorderColor;\r\n\t}\r\n}\r\n\r\n.tabulator-edit-select-list{\r\n\tposition: absolute;\r\n\tdisplay:inline-block;\r\n\tbox-sizing:border-box;\r\n\r\n\tmax-height:200px;\r\n\r\n\tbackground:$rowBackgroundColor;\r\n\tborder:1px solid $rowBorderColor;\r\n\r\n\tfont-size:$textSize;\r\n\r\n\toverflow-y:auto;\r\n\t-webkit-overflow-scrolling: touch;\r\n\r\n\tz-index: 10000;\r\n\r\n\t.tabulator-edit-select-list-item{\r\n\t\tpadding:4px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\r\n\t\t&.active{\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tbackground:$editBoxColor;\r\n\r\n\t\t\t&.focused{\r\n\t\t\t\toutline:1px solid rgba($rowBackgroundColor, .5);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.focused{\r\n\t\t\toutline:1px solid $editBoxColor;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tbackground:$editBoxColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-edit-select-list-notice{\r\n\t\tpadding:4px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\t\ttext-align: center;\r\n\t}\r\n\r\n\t.tabulator-edit-select-list-group{\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\tpadding:4px;\r\n\t\tpadding-top:6px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\t\tfont-weight:bold;\r\n\t}\r\n}\r\n\r\n// Table print styling\r\n\r\n.tabulator-print-fullscreen{\r\n\tposition: absolute;\r\n\ttop:0;\r\n\tbottom:0;\r\n\tleft:0;\r\n\tright:0;\r\n\r\n\tz-index: 10000;\r\n}\r\n\r\nbody.tabulator-print-fullscreen-hide>*:not(.tabulator-print-fullscreen){\r\n\tdisplay:none !important;\r\n}\r\n\r\n.tabulator-print-table{\r\n\tborder-collapse: collapse;\r\n\r\n\t.tabulator-data-tree-branch{\r\n\t\tdisplay:inline-block;\r\n\t\tvertical-align:middle;\r\n\r\n\t\theight:9px;\r\n\t\twidth:7px;\r\n\r\n\t\tmargin-top:-9px;\r\n\t\tmargin-right:5px;\r\n\r\n\t\tborder-bottom-left-radius:1px;\r\n\r\n\t\tborder-left:2px solid $rowBorderColor;\r\n\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t}\r\n\r\n\t//row grouping element\r\n\t.tabulator-print-table-group{\r\n\t\tbox-sizing:border-box;\r\n\t\tborder-bottom:1px solid #999;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tborder-top:1px solid #999;\r\n\t\tpadding:5px;\r\n\t\tpadding-left:10px;\r\n\t\tbackground:#ccc;\r\n\t\tfont-weight:bold;\r\n\r\n\t\tmin-width: 100%;\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\t\t\tbackground-color:rgba(0,0,0,.1);\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-visible{\r\n\r\n\t\t\t.tabulator-arrow{\r\n\t\t\t\tmargin-right:10px;\r\n\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\tborder-bottom: 0;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-1{\r\n\t\t\ttd{\r\n\t\t\t\tpadding-left:30px !important;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-2{\r\n\t\t\ttd{\r\n\t\t\t\tpadding-left:50px !important;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-3{\r\n\t\t\ttd{\r\n\t\t\t\tpadding-left:70px !important;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-4{\r\n\t\t\ttd{\r\n\t\t\t\tpadding-left:90px !important;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-5{\r\n\t\t\ttd{\r\n\t\t\t\tpadding-left:110px !important;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-group-toggle{\r\n\t\t\tdisplay: inline-block;\r\n\t\t}\r\n\r\n\t\t//sorting arrow\r\n\t\t.tabulator-arrow{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t\tmargin-right:16px;\r\n\t\t\tborder-top: 6px solid transparent;\r\n\t\t\tborder-bottom: 6px solid transparent;\r\n\t\t\tborder-right: 0;\r\n\t\t\tborder-left: 6px solid $sortArrowActive;\r\n\t\t\tvertical-align:middle;\r\n\t\t}\r\n\r\n\t\tspan{\r\n\t\t\tmargin-left:10px;\r\n\t\t\tcolor:#d00;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-data-tree-control{\r\n\r\n\t\tdisplay:inline-flex;\r\n\t\tjustify-content:center;\r\n\t\talign-items:center;\r\n\t\tvertical-align:middle;\r\n\r\n\t\theight:11px;\r\n\t\twidth:11px;\r\n\r\n\t\tmargin-right:5px;\r\n\r\n\t\tborder:1px solid $rowTextColor;\r\n\t\tborder-radius:2px;\r\n\t\tbackground:rgba(0, 0, 0, .1);\r\n\r\n\t\toverflow:hidden;\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\t\t\tbackground:rgba(0, 0, 0, .2);\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-control-collapse{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tposition: relative;\r\n\r\n\t\t\theight: 7px;\r\n\t\t\twidth: 1px;\r\n\r\n\t\t\tbackground: transparent;\r\n\r\n\t\t\t&:after {\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tcontent: \"\";\r\n\t\t\t\tleft: -3px;\r\n\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\theight: 1px;\r\n\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-control-expand{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tposition: relative;\r\n\r\n\t\t\theight: 7px;\r\n\t\t\twidth: 1px;\r\n\r\n\t\t\tbackground: $rowTextColor;\r\n\r\n\t\t\t&:after {\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tcontent: \"\";\r\n\t\t\t\tleft: -3px;\r\n\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\theight: 1px;\r\n\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n"]}
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/css/tabulator_midnight.css b/app/static/vendors/tabulator/css/tabulator_midnight.css
deleted file mode 100644 (file)
index bc9796c..0000000
+++ /dev/null
@@ -1,999 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-.tabulator {
-  position: relative;
-  border: 1px solid #293146;
-  background-color: #222;
-  overflow: hidden;
-  font-size: 14px;
-  text-align: left;
-  -ms-transform: translatez(0);
-  transform: translatez(0);
-}
-
-.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableHolder .tabulator-table {
-  min-width: 100%;
-}
-
-.tabulator[tabulator-layout="fitDataTable"] {
-  display: inline-block;
-}
-
-.tabulator.tabulator-block-select {
-  -webkit-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-}
-
-.tabulator .tabulator-header {
-  position: relative;
-  box-sizing: border-box;
-  width: 100%;
-  border-bottom: 1px solid #999;
-  background-color: #293146;
-  color: #fff;
-  font-weight: bold;
-  white-space: nowrap;
-  overflow: hidden;
-  -moz-user-select: none;
-  -khtml-user-select: none;
-  -webkit-user-select: none;
-  -o-user-select: none;
-}
-
-.tabulator .tabulator-header.tabulator-header-hidden {
-  display: none;
-}
-
-.tabulator .tabulator-header .tabulator-col {
-  display: inline-block;
-  position: relative;
-  box-sizing: border-box;
-  border-right: 1px solid #aaa;
-  background-color: #293146;
-  text-align: left;
-  vertical-align: bottom;
-  overflow: hidden;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-moving {
-  position: absolute;
-  border: 1px solid #999;
-  background: #1a1a1a;
-  pointer-events: none;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-col-content {
-  box-sizing: border-box;
-  position: relative;
-  padding: 4px;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button {
-  padding: 0 8px;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button:hover {
-  cursor: pointer;
-  opacity: .6;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {
-  box-sizing: border-box;
-  width: 100%;
-  white-space: nowrap;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  vertical-align: bottom;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {
-  box-sizing: border-box;
-  width: 100%;
-  border: 1px solid #999;
-  padding: 1px;
-  background: #444;
-  color: #fff;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {
-  display: inline-block;
-  position: absolute;
-  top: 9px;
-  right: 8px;
-  width: 0;
-  height: 0;
-  border-left: 6px solid transparent;
-  border-right: 6px solid transparent;
-  border-bottom: 6px solid #bbb;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {
-  position: relative;
-  display: -ms-flexbox;
-  display: flex;
-  border-top: 1px solid #aaa;
-  overflow: hidden;
-  margin-right: -1px;
-}
-
-.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev {
-  display: none;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-header-filter {
-  position: relative;
-  box-sizing: border-box;
-  margin-top: 2px;
-  width: 100%;
-  text-align: center;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {
-  height: auto !important;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {
-  margin-top: 3px;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input, .tabulator .tabulator-header .tabulator-col .tabulator-header-filter select {
-  border: 1px solid #999;
-  background: #444;
-  color: #fff;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {
-  width: 0;
-  height: 0;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {
-  padding-right: 25px;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover {
-  cursor: pointer;
-  background-color: #1a1a1a;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-arrow {
-  border-top: none;
-  border-bottom: 6px solid #bbb;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="asc"] .tabulator-col-content .tabulator-arrow {
-  border-top: none;
-  border-bottom: 6px solid #666;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="desc"] .tabulator-col-content .tabulator-arrow {
-  border-top: 6px solid #666;
-  border-bottom: none;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {
-  -ms-writing-mode: tb-rl;
-      writing-mode: vertical-rl;
-  text-orientation: mixed;
-  display: -ms-flexbox;
-  display: flex;
-  -ms-flex-align: center;
-      align-items: center;
-  -ms-flex-pack: center;
-      justify-content: center;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {
-  -ms-transform: rotate(180deg);
-      transform: rotate(180deg);
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {
-  padding-right: 0;
-  padding-top: 20px;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {
-  padding-right: 0;
-  padding-bottom: 20px;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-arrow {
-  right: calc(50% - 6px);
-}
-
-.tabulator .tabulator-header .tabulator-frozen {
-  display: inline-block;
-  position: absolute;
-  z-index: 10;
-}
-
-.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {
-  border-right: 2px solid #888;
-}
-
-.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {
-  border-left: 2px solid #888;
-}
-
-.tabulator .tabulator-header .tabulator-calcs-holder {
-  box-sizing: border-box;
-  min-width: 600%;
-  background: #1a1a1a !important;
-  border-top: 1px solid #888;
-  border-bottom: 1px solid #aaa;
-  overflow: hidden;
-}
-
-.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {
-  background: #1a1a1a !important;
-}
-
-.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {
-  display: none;
-}
-
-.tabulator .tabulator-header .tabulator-frozen-rows-holder {
-  min-width: 600%;
-}
-
-.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {
-  display: none;
-}
-
-.tabulator .tabulator-tableHolder {
-  position: relative;
-  width: 100%;
-  white-space: nowrap;
-  overflow: auto;
-  -webkit-overflow-scrolling: touch;
-}
-
-.tabulator .tabulator-tableHolder:focus {
-  outline: none;
-}
-
-.tabulator .tabulator-tableHolder .tabulator-placeholder {
-  box-sizing: border-box;
-  display: -ms-flexbox;
-  display: flex;
-  -ms-flex-align: center;
-      align-items: center;
-  width: 100%;
-}
-
-.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode="virtual"] {
-  min-height: 100%;
-  min-width: 100%;
-}
-
-.tabulator .tabulator-tableHolder .tabulator-placeholder span {
-  display: inline-block;
-  margin: 0 auto;
-  padding: 10px;
-  color: #eee;
-  font-weight: bold;
-  font-size: 20px;
-}
-
-.tabulator .tabulator-tableHolder .tabulator-table {
-  position: relative;
-  display: inline-block;
-  background-color: #666;
-  white-space: nowrap;
-  overflow: visible;
-  color: #fff;
-}
-
-.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs {
-  font-weight: bold;
-  background: #373737 !important;
-}
-
-.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {
-  border-bottom: 2px solid #888;
-}
-
-.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {
-  border-top: 2px solid #888;
-}
-
-.tabulator .tabulator-col-resize-handle {
-  position: absolute;
-  right: 0;
-  top: 0;
-  bottom: 0;
-  width: 5px;
-}
-
-.tabulator .tabulator-col-resize-handle.prev {
-  left: 0;
-  right: auto;
-}
-
-.tabulator .tabulator-col-resize-handle:hover {
-  cursor: ew-resize;
-}
-
-.tabulator .tabulator-footer {
-  padding: 5px 10px;
-  border-top: 1px solid #999;
-  background-color: #293146;
-  text-align: right;
-  color: #293146;
-  font-weight: bold;
-  white-space: nowrap;
-  -ms-user-select: none;
-      user-select: none;
-  -moz-user-select: none;
-  -khtml-user-select: none;
-  -webkit-user-select: none;
-  -o-user-select: none;
-}
-
-.tabulator .tabulator-footer .tabulator-calcs-holder {
-  box-sizing: border-box;
-  width: calc(100% + 20px);
-  margin: -5px -10px 5px -10px;
-  text-align: left;
-  background: #262626 !important;
-  border-bottom: 1px solid #888;
-  border-top: 1px solid #888;
-  overflow: hidden;
-}
-
-.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {
-  background: #262626 !important;
-  color: #fff;
-}
-
-.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {
-  display: none;
-}
-
-.tabulator .tabulator-footer .tabulator-calcs-holder:only-child {
-  margin-bottom: -5px;
-  border-bottom: none;
-}
-
-.tabulator .tabulator-footer .tabulator-paginator label {
-  color: #fff;
-}
-
-.tabulator .tabulator-footer .tabulator-page-size {
-  display: inline-block;
-  margin: 0 5px;
-  padding: 2px 5px;
-  border: 1px solid #aaa;
-  border-radius: 3px;
-}
-
-.tabulator .tabulator-footer .tabulator-pages {
-  margin: 0 7px;
-}
-
-.tabulator .tabulator-footer .tabulator-page {
-  display: inline-block;
-  margin: 0 2px;
-  padding: 2px 5px;
-  border: 1px solid #aaa;
-  border-radius: 3px;
-  background: rgba(255, 255, 255, 0.2);
-  color: #293146;
-  font-family: inherit;
-  font-weight: inherit;
-  font-size: inherit;
-}
-
-.tabulator .tabulator-footer .tabulator-page.active {
-  color: #fff;
-}
-
-.tabulator .tabulator-footer .tabulator-page:disabled {
-  opacity: .5;
-}
-
-.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {
-  cursor: pointer;
-  background: rgba(0, 0, 0, 0.2);
-  color: #fff;
-}
-
-.tabulator .tabulator-loader {
-  position: absolute;
-  display: -ms-flexbox;
-  display: flex;
-  -ms-flex-align: center;
-      align-items: center;
-  top: 0;
-  left: 0;
-  z-index: 100;
-  height: 100%;
-  width: 100%;
-  background: rgba(0, 0, 0, 0.4);
-  text-align: center;
-}
-
-.tabulator .tabulator-loader .tabulator-loader-msg {
-  display: inline-block;
-  margin: 0 auto;
-  padding: 10px 20px;
-  border-radius: 10px;
-  background: #fff;
-  font-weight: bold;
-  font-size: 16px;
-}
-
-.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading {
-  border: 4px solid #293146;
-  color: #000;
-}
-
-.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error {
-  border: 4px solid #D00;
-  color: #590000;
-}
-
-.tabulator-row {
-  position: relative;
-  box-sizing: border-box;
-  min-height: 22px;
-  background-color: #666;
-}
-
-.tabulator-row:nth-child(even) {
-  background-color: #444;
-}
-
-.tabulator-row.tabulator-selectable:hover {
-  background-color: #999;
-  cursor: pointer;
-}
-
-.tabulator-row.tabulator-selected {
-  background-color: #000;
-}
-
-.tabulator-row.tabulator-selected:hover {
-  background-color: #888;
-  cursor: pointer;
-}
-
-.tabulator-row.tabulator-moving {
-  position: absolute;
-  border-top: 1px solid #888;
-  border-bottom: 1px solid #888;
-  pointer-events: none !important;
-  z-index: 15;
-}
-
-.tabulator-row .tabulator-row-resize-handle {
-  position: absolute;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  height: 5px;
-}
-
-.tabulator-row .tabulator-row-resize-handle.prev {
-  top: 0;
-  bottom: auto;
-}
-
-.tabulator-row .tabulator-row-resize-handle:hover {
-  cursor: ns-resize;
-}
-
-.tabulator-row .tabulator-frozen {
-  display: inline-block;
-  position: absolute;
-  background-color: inherit;
-  z-index: 10;
-}
-
-.tabulator-row .tabulator-frozen.tabulator-frozen-left {
-  border-right: 2px solid #888;
-}
-
-.tabulator-row .tabulator-frozen.tabulator-frozen-right {
-  border-left: 2px solid #888;
-}
-
-.tabulator-row .tabulator-responsive-collapse {
-  box-sizing: border-box;
-  padding: 5px;
-  border-top: 1px solid #888;
-  border-bottom: 1px solid #888;
-}
-
-.tabulator-row .tabulator-responsive-collapse:empty {
-  display: none;
-}
-
-.tabulator-row .tabulator-responsive-collapse table {
-  font-size: 14px;
-}
-
-.tabulator-row .tabulator-responsive-collapse table tr td {
-  position: relative;
-}
-
-.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {
-  padding-right: 10px;
-}
-
-.tabulator-row .tabulator-cell {
-  display: inline-block;
-  position: relative;
-  box-sizing: border-box;
-  padding: 4px;
-  border-right: 1px solid #888;
-  vertical-align: middle;
-  white-space: nowrap;
-  overflow: hidden;
-  text-overflow: ellipsis;
-}
-
-.tabulator-row .tabulator-cell.tabulator-editing {
-  border: 1px solid #999;
-  padding: 0;
-}
-
-.tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {
-  border: 1px;
-  background: transparent;
-}
-
-.tabulator-row .tabulator-cell.tabulator-validation-fail {
-  border: 1px solid #dd0000;
-}
-
-.tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {
-  border: 1px;
-  background: transparent;
-  color: #dd0000;
-}
-
-.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev {
-  display: none;
-}
-
-.tabulator-row .tabulator-cell.tabulator-row-handle {
-  display: -ms-inline-flexbox;
-  display: inline-flex;
-  -ms-flex-align: center;
-      align-items: center;
-  -moz-user-select: none;
-  -khtml-user-select: none;
-  -webkit-user-select: none;
-  -o-user-select: none;
-}
-
-.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {
-  width: 80%;
-}
-
-.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {
-  width: 100%;
-  height: 3px;
-  margin-top: 2px;
-  background: #666;
-}
-
-.tabulator-row .tabulator-cell .tabulator-data-tree-branch {
-  display: inline-block;
-  vertical-align: middle;
-  height: 9px;
-  width: 7px;
-  margin-top: -9px;
-  margin-right: 5px;
-  border-bottom-left-radius: 1px;
-  border-left: 2px solid #888;
-  border-bottom: 2px solid #888;
-}
-
-.tabulator-row .tabulator-cell .tabulator-data-tree-control {
-  display: -ms-inline-flexbox;
-  display: inline-flex;
-  -ms-flex-pack: center;
-      justify-content: center;
-  -ms-flex-align: center;
-      align-items: center;
-  vertical-align: middle;
-  height: 11px;
-  width: 11px;
-  margin-right: 5px;
-  border: 1px solid #fff;
-  border-radius: 2px;
-  background: rgba(0, 0, 0, 0.1);
-  overflow: hidden;
-}
-
-.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {
-  cursor: pointer;
-  background: rgba(0, 0, 0, 0.2);
-}
-
-.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {
-  display: inline-block;
-  position: relative;
-  height: 7px;
-  width: 1px;
-  background: transparent;
-}
-
-.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {
-  position: absolute;
-  content: "";
-  left: -3px;
-  top: 3px;
-  height: 1px;
-  width: 7px;
-  background: #fff;
-}
-
-.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {
-  display: inline-block;
-  position: relative;
-  height: 7px;
-  width: 1px;
-  background: #fff;
-}
-
-.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {
-  position: absolute;
-  content: "";
-  left: -3px;
-  top: 3px;
-  height: 1px;
-  width: 7px;
-  background: #fff;
-}
-
-.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {
-  display: -ms-inline-flexbox;
-  display: inline-flex;
-  -ms-flex-align: center;
-      align-items: center;
-  -ms-flex-pack: center;
-      justify-content: center;
-  -moz-user-select: none;
-  -khtml-user-select: none;
-  -webkit-user-select: none;
-  -o-user-select: none;
-  height: 15px;
-  width: 15px;
-  border-radius: 20px;
-  background: #fff;
-  color: #666;
-  font-weight: bold;
-  font-size: 1.1em;
-}
-
-.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {
-  opacity: .7;
-}
-
-.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {
-  display: initial;
-}
-
-.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {
-  display: none;
-}
-
-.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {
-  display: none;
-}
-
-.tabulator-row .tabulator-cell .tabulator-traffic-light {
-  display: inline-block;
-  height: 14px;
-  width: 14px;
-  border-radius: 14px;
-}
-
-.tabulator-row.tabulator-group {
-  box-sizing: border-box;
-  border-bottom: 1px solid #999;
-  border-right: 1px solid #888;
-  border-top: 1px solid #999;
-  padding: 5px;
-  padding-left: 10px;
-  background: #ccc;
-  font-weight: bold;
-  color: #293146;
-  min-width: 100%;
-}
-
-.tabulator-row.tabulator-group:hover {
-  cursor: pointer;
-  background-color: rgba(0, 0, 0, 0.1);
-}
-
-.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {
-  margin-right: 10px;
-  border-left: 6px solid transparent;
-  border-right: 6px solid transparent;
-  border-top: 6px solid #666;
-  border-bottom: 0;
-}
-
-.tabulator-row.tabulator-group.tabulator-group-level-1 {
-  padding-left: 30px;
-}
-
-.tabulator-row.tabulator-group.tabulator-group-level-2 {
-  padding-left: 50px;
-}
-
-.tabulator-row.tabulator-group.tabulator-group-level-3 {
-  padding-left: 70px;
-}
-
-.tabulator-row.tabulator-group.tabulator-group-level-4 {
-  padding-left: 90px;
-}
-
-.tabulator-row.tabulator-group.tabulator-group-level-5 {
-  padding-left: 110px;
-}
-
-.tabulator-row.tabulator-group .tabulator-group-toggle {
-  display: inline-block;
-}
-
-.tabulator-row.tabulator-group .tabulator-arrow {
-  display: inline-block;
-  width: 0;
-  height: 0;
-  margin-right: 16px;
-  border-top: 6px solid transparent;
-  border-bottom: 6px solid transparent;
-  border-right: 0;
-  border-left: 6px solid #666;
-  vertical-align: middle;
-}
-
-.tabulator-row.tabulator-group span {
-  margin-left: 10px;
-  color: #666;
-}
-
-.tabulator-menu {
-  position: absolute;
-  display: inline-block;
-  box-sizing: border-box;
-  background: #666;
-  border: 1px solid #888;
-  box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);
-  font-size: 14px;
-  overflow-y: auto;
-  -webkit-overflow-scrolling: touch;
-  z-index: 10000;
-}
-
-.tabulator-menu .tabulator-menu-item {
-  padding: 5px 10px;
-  -webkit-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-}
-
-.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {
-  opacity: .5;
-}
-
-.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {
-  cursor: pointer;
-  background: #444;
-}
-
-.tabulator-menu .tabulator-menu-separator {
-  border-top: 1px solid #888;
-}
-
-.tabulator-edit-select-list {
-  position: absolute;
-  display: inline-block;
-  box-sizing: border-box;
-  max-height: 200px;
-  background: #fff;
-  border: 1px solid #888;
-  font-size: 14px;
-  overflow-y: auto;
-  -webkit-overflow-scrolling: touch;
-  z-index: 10000;
-}
-
-.tabulator-edit-select-list .tabulator-edit-select-list-item {
-  padding: 4px;
-  color: #666;
-}
-
-.tabulator-edit-select-list .tabulator-edit-select-list-item.active {
-  color: #999;
-  background: #444;
-}
-
-.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {
-  outline: 1px solid rgba(153, 153, 153, 0.5);
-}
-
-.tabulator-edit-select-list .tabulator-edit-select-list-item.focused {
-  outline: 1px solid #444;
-}
-
-.tabulator-edit-select-list .tabulator-edit-select-list-item:hover {
-  cursor: pointer;
-  color: #999;
-  background: #666;
-}
-
-.tabulator-edit-select-list .tabulator-edit-select-list-notice {
-  padding: 4px;
-  color: #fff;
-  text-align: center;
-}
-
-.tabulator-edit-select-list .tabulator-edit-select-list-group {
-  border-bottom: 1px solid #888;
-  padding: 4px;
-  padding-top: 6px;
-  color: #fff;
-  font-weight: bold;
-}
-
-.tabulator-print-fullscreen {
-  position: absolute;
-  top: 0;
-  bottom: 0;
-  left: 0;
-  right: 0;
-  z-index: 10000;
-}
-
-body.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {
-  display: none !important;
-}
-
-.tabulator-print-table {
-  border-collapse: collapse;
-}
-
-.tabulator-print-table .tabulator-print-table-group {
-  box-sizing: border-box;
-  border-bottom: 1px solid #999;
-  border-right: 1px solid #888;
-  border-top: 1px solid #999;
-  padding: 5px;
-  padding-left: 10px;
-  background: #ccc;
-  font-weight: bold;
-  color: #293146;
-  min-width: 100%;
-}
-
-.tabulator-print-table .tabulator-print-table-group:hover {
-  cursor: pointer;
-  background-color: rgba(0, 0, 0, 0.1);
-}
-
-.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {
-  margin-right: 10px;
-  border-left: 6px solid transparent;
-  border-right: 6px solid transparent;
-  border-top: 6px solid #666;
-  border-bottom: 0;
-}
-
-.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {
-  padding-left: 30px !important;
-}
-
-.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {
-  padding-left: 50px !important;
-}
-
-.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {
-  padding-left: 70px !important;
-}
-
-.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {
-  padding-left: 90px !important;
-}
-
-.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {
-  padding-left: 110px !important;
-}
-
-.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {
-  display: inline-block;
-}
-
-.tabulator-print-table .tabulator-print-table-group .tabulator-arrow {
-  display: inline-block;
-  width: 0;
-  height: 0;
-  margin-right: 16px;
-  border-top: 6px solid transparent;
-  border-bottom: 6px solid transparent;
-  border-right: 0;
-  border-left: 6px solid #666;
-  vertical-align: middle;
-}
-
-.tabulator-print-table .tabulator-print-table-group span {
-  margin-left: 10px;
-  color: #666;
-}
-
-.tabulator-print-table .tabulator-data-tree-branch {
-  display: inline-block;
-  vertical-align: middle;
-  height: 9px;
-  width: 7px;
-  margin-top: -9px;
-  margin-right: 5px;
-  border-bottom-left-radius: 1px;
-  border-left: 2px solid #888;
-  border-bottom: 2px solid #888;
-}
-
-.tabulator-print-table .tabulator-data-tree-control {
-  display: -ms-inline-flexbox;
-  display: inline-flex;
-  -ms-flex-pack: center;
-      justify-content: center;
-  -ms-flex-align: center;
-      align-items: center;
-  vertical-align: middle;
-  height: 11px;
-  width: 11px;
-  margin-right: 5px;
-  border: 1px solid #fff;
-  border-radius: 2px;
-  background: rgba(0, 0, 0, 0.1);
-  overflow: hidden;
-}
-
-.tabulator-print-table .tabulator-data-tree-control:hover {
-  cursor: pointer;
-  background: rgba(0, 0, 0, 0.2);
-}
-
-.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {
-  display: inline-block;
-  position: relative;
-  height: 7px;
-  width: 1px;
-  background: transparent;
-}
-
-.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {
-  position: absolute;
-  content: "";
-  left: -3px;
-  top: 3px;
-  height: 1px;
-  width: 7px;
-  background: #fff;
-}
-
-.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {
-  display: inline-block;
-  position: relative;
-  height: 7px;
-  width: 1px;
-  background: #fff;
-}
-
-.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {
-  position: absolute;
-  content: "";
-  left: -3px;
-  top: 3px;
-  height: 1px;
-  width: 7px;
-  background: #fff;
-}
diff --git a/app/static/vendors/tabulator/css/tabulator_midnight.min.css b/app/static/vendors/tabulator/css/tabulator_midnight.min.css
deleted file mode 100644 (file)
index a9ea0de..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-.tabulator{position:relative;border:1px solid #333;background-color:#222;overflow:hidden;font-size:14px;text-align:left;transform:translatez(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableHolder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitDataTable]{display:inline-block}.tabulator.tabulator-block-select{-webkit-user-select:none;-ms-user-select:none;user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #999;background-color:#333;color:#fff;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;border-right:1px solid #aaa;background-color:#333;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #999;background:#1a1a1a;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button:hover{cursor:pointer;opacity:.6}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{box-sizing:border-box;width:100%;border:1px solid #999;padding:1px;background:#444;color:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{display:inline-block;position:absolute;top:9px;right:8px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:-ms-flexbox;display:flex;border-top:1px solid #aaa;overflow:hidden;margin-right:-1px}.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{position:relative;box-sizing:border-box;margin-top:2px;width:100%;text-align:center}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input,.tabulator .tabulator-header .tabulator-col .tabulator-header-filter select{border:1px solid #999;background:#444;color:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{width:0;height:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:#1a1a1a}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-arrow{border-top:6px solid #666;border-bottom:none}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{-ms-writing-mode:tb-rl;writing-mode:vertical-rl;text-orientation:mixed;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-right:0;padding-bottom:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-arrow{right:calc(50% - 6px)}.tabulator .tabulator-header .tabulator-frozen{display:inline-block;position:absolute;z-index:10}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #888}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #888}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;min-width:600%;background:#1a1a1a!important;border-top:1px solid #888;border-bottom:1px solid #aaa;overflow:hidden}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#1a1a1a!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-header .tabulator-frozen-rows-holder{min-width:600%}.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableHolder{position:relative;width:100%;white-space:nowrap;overflow:auto;-webkit-overflow-scrolling:touch}.tabulator .tabulator-tableHolder:focus{outline:none}.tabulator .tabulator-tableHolder .tabulator-placeholder{box-sizing:border-box;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;width:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder span{display:inline-block;margin:0 auto;padding:10px;color:#eee;font-weight:700;font-size:20px}.tabulator .tabulator-tableHolder .tabulator-table{position:relative;display:inline-block;background-color:#666;white-space:nowrap;overflow:visible;color:#fff}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#373737!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #888}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #888}.tabulator .tabulator-col-resize-handle{position:absolute;right:0;top:0;bottom:0;width:5px}.tabulator .tabulator-col-resize-handle.prev{left:0;right:auto}.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}.tabulator .tabulator-footer{padding:5px 10px;border-top:1px solid #999;background-color:#333;text-align:right;color:#333;font-weight:700;white-space:nowrap;-ms-user-select:none;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-footer .tabulator-calcs-holder{box-sizing:border-box;width:calc(100% + 20px);margin:-5px -10px 5px;text-align:left;background:#262626!important;border-bottom:1px solid #888;border-top:1px solid #888;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#262626!important;color:#fff}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px;border-bottom:none}.tabulator .tabulator-footer .tabulator-paginator label{color:#fff}.tabulator .tabulator-footer .tabulator-page-size{display:inline-block;margin:0 5px;padding:2px 5px;border:1px solid #aaa;border-radius:3px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{display:inline-block;margin:0 2px;padding:2px 5px;border:1px solid #aaa;border-radius:3px;background:hsla(0,0%,100%,.2);color:#333;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page.active{color:#fff}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}.tabulator .tabulator-loader{position:absolute;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;top:0;left:0;z-index:100;height:100%;width:100%;background:rgba(0,0,0,.4);text-align:center}.tabulator .tabulator-loader .tabulator-loader-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading{border:4px solid #333;color:#000}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error{border:4px solid #d00;color:#590000}.tabulator-row{position:relative;box-sizing:border-box;min-height:22px;background-color:#666}.tabulator-row:nth-child(2n){background-color:#444}.tabulator-row.tabulator-selectable:hover{background-color:#999;cursor:pointer}.tabulator-row.tabulator-selected{background-color:#000}.tabulator-row.tabulator-selected:hover{background-color:#888;cursor:pointer}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #888;border-bottom:1px solid #888;pointer-events:none!important;z-index:15}.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #888}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #888}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #888;border-bottom:1px solid #888}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:14px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:4px;border-right:1px solid #888;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #999;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{border:1px;background:transparent}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator-row .tabulator-cell.tabulator-row-handle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{width:100%;height:3px;margin-top:2px;background:#666}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #888;border-bottom:2px solid #888}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #fff;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#fff}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#fff}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#fff}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;height:15px;width:15px;border-radius:20px;background:#fff;color:#666;font-weight:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{opacity:.7}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open,.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{display:inline-block;height:14px;width:14px;border-radius:14px}.tabulator-row.tabulator-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #888;border-top:1px solid #999;padding:5px;padding-left:10px;background:#ccc;font-weight:700;color:#333;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#666}.tabulator-menu{position:absolute;display:inline-block;box-sizing:border-box;background:#666;border:1px solid #888;box-shadow:0 0 5px 0 rgba(0,0,0,.2);font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-menu .tabulator-menu-item{padding:5px 10px;-webkit-user-select:none;-ms-user-select:none;user-select:none}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled{opacity:.5}.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{cursor:pointer;background:#444}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #888}.tabulator-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;background:#fff;border:1px solid #888;font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-edit-select-list .tabulator-edit-select-list-item{padding:4px;color:#666}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:#999;background:#444}.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused{outline:1px solid hsla(0,0%,60%,.5)}.tabulator-edit-select-list .tabulator-edit-select-list-item.focused{outline:1px solid #444}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{cursor:pointer;color:#999;background:#666}.tabulator-edit-select-list .tabulator-edit-select-list-notice{padding:4px;color:#fff;text-align:center}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #888;padding:4px;padding-top:6px;color:#fff;font-weight:700}.tabulator-print-fullscreen{position:absolute;top:0;bottom:0;left:0;right:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse}.tabulator-print-table .tabulator-print-table-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #888;border-top:1px solid #999;padding:5px;padding-left:10px;background:#ccc;font-weight:700;color:#333;min-width:100%}.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td{padding-left:30px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td{padding-left:50px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td{padding-left:70px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td{padding-left:90px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td{padding-left:110px!important}.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle{display:inline-block}.tabulator-print-table .tabulator-print-table-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-print-table .tabulator-print-table-group span{margin-left:10px;color:#666}.tabulator-print-table .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #888;border-bottom:2px solid #888}.tabulator-print-table .tabulator-data-tree-control{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #fff;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#fff}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#fff}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#fff}
-/*# sourceMappingURL=tabulator_midnight.min.css.map */
diff --git a/app/static/vendors/tabulator/css/tabulator_midnight.min.css.map b/app/static/vendors/tabulator/css/tabulator_midnight.min.css.map
deleted file mode 100644 (file)
index 0a41946..0000000
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["tabulator_midnight.scss"],"names":[],"mappings":"AAyCA,WACC,kBAAkB,AAClB,sBAtCgB,AAuChB,sBAxCqB,AAyCrB,gBAAe,AACf,eAxCa,AAyCb,gBAAgB,AAMhB,uBAAwB,CAqgBxB,AAjhBD,iFAiBI,cAAc,CACd,AAlBJ,0CAuBE,oBAAqB,CACrB,AAxBF,kCA2BE,yBAAiB,AAAjB,qBAAiB,AAAjB,gBAAiB,CACjB,AA5BF,6BAgCE,kBAAiB,AACjB,sBAAsB,AAEtB,WAAU,AAEV,6BAlEwB,AAmExB,sBAtEyB,AAuEzB,WAtEmB,AAuEnB,gBAAgB,AAEhB,mBAAmB,AACnB,gBAAe,AAEf,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CA6PpB,AA7SF,qDAmDG,YAAY,CACZ,AApDH,4CAwDG,qBAAoB,AACpB,kBAAiB,AACjB,sBAAqB,AACrB,4BAzFoB,AA0FpB,sBA5FwB,AA6FxB,gBAAe,AACf,sBAAsB,AACtB,eAAgB,CA8LhB,AA7PH,6DAkEI,kBAAkB,AAClB,sBAhGsB,AAiGtB,mBAA8C,AAC9C,mBAAoB,CACpB,AAtEJ,mEA0EI,sBAAqB,AACrB,kBAAkB,AAClB,WAAW,CAkDX,AA9HJ,iGAgFK,aAAc,CAMd,AAtFL,uGAmFM,eAAe,AACf,UAAW,CACX,AArFN,wFA0FK,sBAAqB,AACrB,WAAW,AAEX,mBAAmB,AACnB,gBAAgB,AAChB,uBAAuB,AACvB,qBAAqB,CAerB,AA/GL,gHAoGM,sBAAsB,AACtB,WAAW,AAEX,sBAAqB,AAErB,YAAW,AAEX,gBAAgB,AAChB,UAAW,CACX,AA7GN,oFAmHK,qBAAqB,AACrB,kBAAkB,AAClB,QAAO,AACP,UAAS,AACT,QAAQ,AACR,SAAS,AACT,kCAAkC,AAClC,mCAAmC,AACnC,4BAnJmB,CAoJnB,AA5HL,0FAqIK,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AAEb,0BAtKkB,AAuKlB,gBAAgB,AAEhB,iBAAiB,CACjB,AA5IL,0FAkJK,YAAa,CACb,AAnJL,qEAwJI,kBAAkB,AAClB,sBAAsB,AACtB,eAAc,AACd,WAAU,AACV,iBAAkB,CAuBlB,AAnLJ,8EAgKK,qBAAsB,CACtB,AAjKL,yEAoKK,cAAe,CACf,AArKL,uJAwKK,sBAAqB,AACrB,gBAAgB,AAChB,UAAW,CACX,AA3KL,sFA+KM,QAAS,AACT,QAAS,CACT,AAjLN,oFAwLK,kBAAkB,CAClB,AAzLL,qEA4LK,eAAc,AACd,wBAAoD,CACpD,AA9LL,uHAmMM,gBAAgB,AAChB,4BA5NkB,CA6NlB,AArMN,sHA0MM,gBAAgB,AAChB,4BApOgB,CAqOhB,AA5MN,uHAiNM,0BA1OgB,AA2OhB,kBAAmB,CACnB,AAnNN,+GA0NM,uBAAyB,AAAzB,yBAAyB,AACzB,uBAAuB,AAEvB,oBAAY,AAAZ,aAAY,AACZ,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,sBAAsB,CACtB,AAhON,oHAqOM,wBAAyB,CACzB,AAtON,2GA2OM,gBAAe,AACf,gBAAgB,CAChB,AA7ON,uIAiPO,gBAAe,AACf,mBAAmB,CACnB,AAnPP,uGAwPM,qBAAqB,CACrB,AAzPN,+CAgQG,qBAAqB,AACrB,kBAAkB,AAIlB,UAAW,CASX,AA9QH,qEAwQI,2BA3RgB,CA4RhB,AAzQJ,sEA4QI,0BA/RgB,CAgShB,AA7QJ,qDAkRG,sBAAqB,AACrB,eAAc,AAEd,6BAAyD,AAUzD,0BAlTiB,AAmTjB,6BA9ToB,AAgUpB,eAAgB,CAChB,AAnSH,oEAwRI,4BAAyD,CAKzD,AA7RJ,iGA2RK,YAAa,CACb,AA5RL,2DAsSG,cAAc,CAKd,AA3SH,iEAySI,YAAa,CACb,AA1SJ,kCAiTE,kBAAiB,AACjB,WAAU,AACV,mBAAmB,AACnB,cAAa,AACb,gCAAiC,CAuDjC,AA5WF,wCAwTG,YAAa,CACb,AAzTH,yDA6TG,sBAAqB,AACrB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AAOlB,UAAU,CAYV,AAlVH,wFAkUI,gBAAe,AACf,cAAc,CACd,AApUJ,8DAyUI,qBAAqB,AAErB,cAAa,AACb,aAAY,AAEZ,WAAU,AACV,gBAAiB,AACjB,cAAe,CACf,AAjVJ,mDAsVG,kBAAiB,AACjB,qBAAoB,AACpB,sBA7WqB,AA8WrB,mBAAmB,AACnB,iBAAgB,AAChB,UA7We,CA6Xf,AA3WH,kFA+VK,gBAAiB,AACjB,4BAAwD,CASxD,AAzWL,sGAmWM,4BAtXc,CAuXd,AApWN,yGAuWM,yBA1Xc,CA2Xd,AAxWN,wCAgXE,kBAAiB,AACjB,QAAO,AACP,MAAK,AACL,SAAQ,AACR,SAAS,CAUT,AA9XF,6CAuXG,OAAM,AACN,UAAU,CACV,AAzXH,8CA4XG,gBAAgB,CAChB,AA7XH,6BAmYE,iBAAgB,AAChB,0BAzYwB,AA0YxB,sBA7YyB,AA8YzB,iBAAgB,AAChB,WA9YmB,AA+YnB,gBAAgB,AAChB,mBAAkB,AAClB,qBAAgB,AAAhB,iBAAgB,AAEhB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAuFpB,AAteF,qDAkZG,sBAAqB,AACrB,wBAAuB,AACvB,sBAA2B,AAE3B,gBAAgB,AAEhB,6BAAwD,AAWxD,6BAtbiB,AAubjB,0BAvbiB,AAybjB,eAAgB,CAMhB,AA5aH,oEA2ZI,6BAAwD,AACxD,UA3biB,CAgcjB,AAjaJ,iGA+ZK,YAAa,CACb,AAhaL,gEAyaI,mBAAkB,AAClB,kBAAkB,CAClB,AA3aJ,wDAibI,UAAU,CACV,AAlbJ,kDAubG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBAlcoB,AAmcpB,iBAAiB,CACjB,AA9bH,8CAkcG,YAAY,CACZ,AAncH,6CAucG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBAldoB,AAmdpB,kBAAiB,AAEjB,8BAA+B,AAE/B,WAxdkB,AAydlB,oBAAmB,AACnB,oBAAmB,AACnB,iBAAiB,CAiBjB,AAreH,oDAudI,UA3dmB,CA4dnB,AAxdJ,sDA2dI,UAAU,CACV,AA5dJ,kEAgeK,eAAc,AACd,0BAAyB,AACzB,UAAU,CACV,AAneL,6BA0eE,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AAElB,MAAK,AACL,OAAM,AACN,YAAW,AAEX,YAAW,AACX,WAAU,AACV,0BAAyB,AACzB,iBAAiB,CA2BjB,AAhhBF,mDAyfG,qBAAoB,AAEpB,cAAa,AACb,kBAAiB,AAEjB,mBAAkB,AAElB,gBAAe,AACf,gBAAgB,AAChB,cAAc,CAad,AA/gBH,qEAsgBI,sBAAqB,AACrB,UAAU,CACV,AAxgBJ,mEA4gBI,sBAAqB,AACrB,aAAa,CACb,AAMJ,eACC,kBAAkB,AAClB,sBAAsB,AAEtB,gBAA0C,AAC1C,qBA9iBuB,CA05BvB,AAjXD,6BAQE,qBAhjByB,CAijBzB,AATF,0CAYE,sBAjjBsB,AAkjBtB,cAAe,CACf,AAdF,kCAiBE,qBApjB0B,CAqjB1B,AAlBF,wCAqBE,sBAvjB+B,AAwjB/B,cAAe,CACf,AAvBF,gCA0BE,kBAAkB,AAElB,0BAnkBkB,AAokBlB,6BApkBkB,AAskBlB,8BAA+B,AAC/B,UAAU,CACV,AAjCF,4CAqCE,kBAAiB,AACjB,QAAO,AACP,SAAQ,AACR,OAAM,AACN,UAAU,CAUV,AAnDF,iDA4CG,MAAK,AACL,WAAW,CACX,AA9CH,kDAiDG,gBAAgB,CAChB,AAlDH,iCAsDE,qBAAqB,AACrB,kBAAkB,AAElB,yBAAyB,AAEzB,UAAW,CASX,AApEF,uDA8DG,2BArmBiB,CAsmBjB,AA/DH,wDAkEG,0BAzmBiB,CA0mBjB,AAnEH,8CAuEE,sBAAqB,AAErB,YAAW,AAEX,0BAlnBkB,AAmnBlB,4BAnnBkB,CAsoBlB,AA/FF,oDA+EG,YAAY,CACZ,AAhFH,oDAmFG,cA1oBW,CAqpBX,AA9FH,0DAuFK,iBAAkB,CAKlB,AA5FL,wEA0FM,kBAAkB,CAClB,AA3FN,+BAoGE,qBAAoB,AACpB,kBAAkB,AAClB,sBAAqB,AACrB,YAAW,AACX,4BA/oBkB,AAgpBlB,sBAAqB,AACrB,mBAAkB,AAClB,gBAAe,AACf,sBAAsB,CA0LtB,AAtSF,iDAgHG,sBAhpBe,AAipBf,SAAU,CAMV,AAvHH,+GAoHI,WAAU,AACV,sBAAsB,CACtB,AAtHJ,yDA0HG,qBAzpBgB,CAgqBhB,AAjIH,+HA4HI,WAAU,AACV,uBAAsB,AAEtB,UA9pBe,CA+pBf,AAhIJ,6EAsII,YAAa,CACb,AAvIJ,oDA6IG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAElB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAcpB,AAjKH,8EAuJI,SAAS,CAST,AAhKJ,wGA2JK,WAAU,AACV,WAAU,AACV,eAAc,AACd,eAAe,CACf,AA/JL,2DAoKG,qBAAoB,AACpB,sBAAqB,AAErB,WAAU,AACV,UAAS,AAET,gBAAe,AACf,iBAAgB,AAEhB,8BAA6B,AAE7B,2BAttBiB,AAutBjB,4BAvtBiB,CAwtBjB,AAjLH,4DAqLG,2BAAmB,AAAnB,oBAAmB,AACnB,qBAAsB,AAAtB,uBAAsB,AACtB,sBAAkB,AAAlB,mBAAkB,AAClB,sBAAqB,AAErB,YAAW,AACX,WAAU,AAEV,iBAAgB,AAEhB,sBAruBe,AAsuBf,kBAAiB,AACjB,0BAA4B,AAE5B,eAAe,CAmDf,AAtPH,kEAsMI,eAAc,AACd,yBAA4B,CAC5B,AAxMJ,kGA2MI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,sBAAuB,CAavB,AA9NJ,wGAoNK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eAlwBa,CAmwBb,AA7NL,gGAiOI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,eA7wBc,CA0xBd,AApPJ,sGA0OK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eAxxBa,CAyxBb,AAnPL,qEAyPG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,uBAAsB,AAEtB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,oBAAoB,AAEpB,YAAW,AACX,WAAU,AAEV,mBAAkB,AAClB,gBAAe,AAEf,WAjzBqB,AAkzBrB,gBAAgB,AAChB,eAAe,CAmBf,AA7RH,2EA6QI,UAAU,CACV,AA9QJ,sHAkRK,eAAe,CACf,AAnRL,sOA2RI,YAAY,CACZ,AA5RJ,wDAgSG,qBAAqB,AACrB,YAAW,AACX,WAAU,AAEV,kBAAkB,CAClB,AArSH,+BA4SE,sBAAqB,AACrB,6BAA4B,AAC5B,4BAr1BkB,AAs1BlB,0BAAyB,AACzB,YAAW,AACX,kBAAiB,AACjB,gBAAe,AACf,gBAAgB,AAChB,WAAU,AAEV,cAAe,CA0Df,AAhXF,qCAyTG,eAAc,AACd,+BAA+B,CAC/B,AA3TH,wEA+TI,kBAAiB,AACjB,kCAAkC,AAClC,mCAAmC,AACnC,0BA/2BkB,AAg3BlB,eAAgB,CAChB,AApUJ,uDAwUG,iBAAiB,CACjB,AAzUH,uDA4UG,iBAAiB,CACjB,AA7UH,uDAgVG,iBAAiB,CACjB,AAjVH,uDAoVG,iBAAiB,CACjB,AArVH,uDAwVG,kBAAkB,CAClB,AAzVH,uDA4VG,oBAAqB,CACrB,AA7VH,gDAiWG,qBAAqB,AACrB,QAAQ,AACR,SAAS,AACT,kBAAiB,AACjB,iCAAiC,AACjC,oCAAoC,AACpC,eAAe,AACf,2BAr5BmB,AAs5BnB,qBAAqB,CACrB,AA1WH,oCA6WG,iBAAgB,AAChB,UAAU,CACV,AAIH,gBACC,kBAAkB,AAClB,qBAAoB,AACpB,sBAAqB,AAErB,gBAj6BuB,AAk6BvB,sBAh6BmB,AAi6BnB,oCAAuC,AAEvC,eAn7Ba,AAq7Bb,gBAAe,AACf,iCAAiC,AAEjC,aAAc,CAqBd,AAnCD,qCAkBE,iBAAgB,AAEhB,yBAAiB,AAAjB,qBAAiB,AAAjB,gBAAiB,CAUjB,AA9BF,kEAuBG,UAAW,CACX,AAxBH,8EA2BG,eAAe,AACf,eAv7BwB,CAw7BxB,AA7BH,0CAiCE,yBA37BkB,CA47BlB,AAGF,4BACC,kBAAkB,AAClB,qBAAoB,AACpB,sBAAqB,AAErB,iBAAgB,AAEhB,gBAr8BiB,AAs8BjB,sBAv8BmB,AAy8BnB,eAz9Ba,AA29Bb,gBAAe,AACf,iCAAiC,AAEjC,aAAc,CA6Cd,AA5DD,6DAkBE,YAAW,AAEX,UAr9BsB,CA2+BtB,AA1CF,oEAuBG,WA/8Be,AAg9Bf,eAx9BwB,CA69BxB,AA7BH,4EA2BI,mCAn9Bc,CAo9Bd,AA5BJ,qEAgCG,sBAh+BwB,CAi+BxB,AAjCH,mEAqCG,eAAc,AAEd,WA/9Be,AAg+Bf,eAz+BqB,CA0+BrB,AAzCH,+DA6CE,YAAW,AAEX,WA7+BgB,AA8+BhB,iBAAkB,CAClB,AAjDF,8DAoDE,6BAn/BkB,AAq/BlB,YAAW,AACX,gBAAe,AAEf,WAv/BgB,AAw/BhB,eAAgB,CAChB,AAKF,4BACC,kBAAkB,AAClB,MAAK,AACL,SAAQ,AACR,OAAM,AACN,QAAO,AAEP,aAAc,CACd,AAED,uEACC,sBAAuB,CACvB,AAED,uBACC,wBAAyB,CAwKzB,AAzKD,oDAME,sBAAqB,AACrB,6BAA4B,AAC5B,4BArhCkB,AAshClB,0BAAyB,AACzB,YAAW,AACX,kBAAiB,AACjB,gBAAe,AACf,gBAAgB,AAChB,WAAU,AAEV,cAAe,CAoEf,AApFF,0DAmBG,eAAc,AACd,+BAA+B,CAC/B,AArBH,6FAyBI,kBAAiB,AACjB,kCAAkC,AAClC,mCAAmC,AACnC,0BA/iCkB,AAgjClB,eAAgB,CAChB,AA9BJ,+EAmCI,2BAA4B,CAC5B,AApCJ,+EAyCI,2BAA4B,CAC5B,AA1CJ,+EA+CI,2BAA4B,CAC5B,AAhDJ,+EAqDI,2BAA4B,CAC5B,AAtDJ,+EA2DI,4BAA6B,CAC7B,AA5DJ,4EAgEG,oBAAqB,CACrB,AAjEH,qEAqEG,qBAAqB,AACrB,QAAQ,AACR,SAAS,AACT,kBAAiB,AACjB,iCAAiC,AACjC,oCAAoC,AACpC,eAAe,AACf,2BA/lCmB,AAgmCnB,qBAAqB,CACrB,AA9EH,yDAiFG,iBAAgB,AAChB,UAAU,CACV,AAnFH,mDAuFE,qBAAoB,AACpB,sBAAqB,AAErB,WAAU,AACV,UAAS,AAET,gBAAe,AACf,iBAAgB,AAEhB,8BAA6B,AAE7B,2BA/mCkB,AAgnClB,4BAhnCkB,CAinClB,AApGF,oDAwGE,2BAAmB,AAAnB,oBAAmB,AACnB,qBAAsB,AAAtB,uBAAsB,AACtB,sBAAkB,AAAlB,mBAAkB,AAClB,sBAAqB,AAErB,YAAW,AACX,WAAU,AAEV,iBAAgB,AAEhB,sBA9nCgB,AA+nChB,kBAAiB,AACjB,0BAA4B,AAE5B,eAAe,CAkDf,AAxKF,0DAyHG,eAAc,AACd,yBAA4B,CAC5B,AA3HH,0FA8HG,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,sBAAuB,CAavB,AAjJH,gGAuII,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eA3pCc,CA4pCd,AAhJJ,wFAoJG,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,eAtqCe,CAmrCf,AAvKH,8FA6JI,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eAjrCc,CAkrCd","file":"tabulator_midnight.min.css","sourcesContent":["/* Tabulator v4.7.0 (c) Oliver Folkerd */\n\n\r\n//Main Theme Variables\r\n$backgroundColor: #222 !default; //background color of tabulator\r\n$borderColor:#333 !default; //border to tabulator\r\n$textSize:14px !default; //table text size\r\n\r\n//header themeing\r\n$headerBackgroundColor:#333 !default; //border to tabulator\r\n$headerTextColor:#fff !default; //header text colour\r\n$headerBorderColor:#aaa !default;  //header border color\r\n$headerSeperatorColor:#999 !default; //header bottom seperator color\r\n$headerMargin:4px !default; //padding round header\r\n\r\n//column header arrows\r\n$sortArrowActive: #666 !default;\r\n$sortArrowInactive: #bbb !default;\r\n\r\n//row themeing\r\n$rowBackgroundColor:#666 !default; //table row background color\r\n$rowAltBackgroundColor:#444 !default; //table row background color\r\n$rowBorderColor:#888 !default; //table border color\r\n$rowTextColor:#fff !default; //table text color\r\n$rowHoverBackground:#999 !default; //row background color on hover\r\n\r\n$rowSelectedBackground: #000 !default; //row background color when selected\r\n$rowSelectedBackgroundHover: #888 !default;//row background color when selected and hovered\r\n\r\n$editBoxColor:#999 !default; //border color for edit boxes\r\n$errorColor:#dd0000 !default; //error indication\r\n\r\n//footer themeing\r\n$footerBackgroundColor:#333 !default; //border to tabulator\r\n$footerTextColor:#333 !default; //footer text colour\r\n$footerBorderColor:#aaa !default; //footer border color\r\n$footerSeperatorColor:#999 !default; //footer bottom seperator color\r\n$footerActiveColor:#fff !default; //footer bottom active text color\r\n\r\n\r\n//Tabulator Containing Element\r\n.tabulator{\r\n\tposition: relative;\r\n\tborder: 1px solid $borderColor;\r\n\tbackground-color: $backgroundColor;\r\n\toverflow:hidden;\r\n\tfont-size:$textSize;\r\n\ttext-align: left;\r\n\r\n\t-webkit-transform: translatez(0);\r\n\t-moz-transform: translatez(0);\r\n\t-ms-transform: translatez(0);\r\n\t-o-transform: translatez(0);\r\n\ttransform: translatez(0);\r\n\r\n\t&[tabulator-layout=\"fitDataFill\"]{\r\n\t\t.tabulator-tableHolder{\r\n\t\t\t.tabulator-table{\r\n\t\t\t\tmin-width:100%;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t&[tabulator-layout=\"fitDataTable\"]{\r\n\t\tdisplay: inline-block;\r\n\t}\r\n\r\n\t&.tabulator-block-select{\r\n\t\tuser-select: none;\r\n\t}\r\n\r\n\t//column header containing element\r\n\t.tabulator-header{\r\n\t\tposition:relative;\r\n\t\tbox-sizing: border-box;\r\n\r\n\t\twidth:100%;\r\n\r\n\t\tborder-bottom:1px solid $headerSeperatorColor;\r\n\t\tbackground-color: $headerBackgroundColor;\r\n\t\tcolor: $headerTextColor;\r\n\t\tfont-weight:bold;\r\n\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:hidden;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t&.tabulator-header-hidden{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\t//individual column header element\r\n\t\t.tabulator-col{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tposition:relative;\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tborder-right:1px solid $headerBorderColor;\r\n\t\t\tbackground-color: $headerBackgroundColor;\r\n\t\t\ttext-align:left;\r\n\t\t\tvertical-align: bottom;\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&.tabulator-moving{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tborder:1px solid  $headerSeperatorColor;\r\n\t\t\t\tbackground:darken($headerBackgroundColor, 10%);\r\n\t\t\t\tpointer-events: none;\r\n\t\t\t}\r\n\r\n\t\t\t//hold content of column header\r\n\t\t\t.tabulator-col-content{\r\n\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tpadding:4px;\r\n\r\n\t\t\t\t//header menu button\r\n\t\t\t\t.tabulator-header-menu-button{\r\n\t\t\t\t\tpadding: 0 8px;\r\n\r\n\t\t\t\t\t&:hover{\r\n\t\t\t\t\t\tcursor: pointer;\r\n\t\t\t\t\t\topacity: .6;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//hold title of column header\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\twhite-space: nowrap;\r\n\t\t\t\t\toverflow: hidden;\r\n\t\t\t\t\ttext-overflow: ellipsis;\r\n\t\t\t\t\tvertical-align:bottom;\r\n\r\n\t\t\t\t\t//element to hold title editor\r\n\t\t\t\t\t.tabulator-title-editor{\r\n\t\t\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\t\tborder:1px solid #999;\r\n\r\n\t\t\t\t\t\tpadding:1px;\r\n\r\n\t\t\t\t\t\tbackground: #444;\r\n\t\t\t\t\t\tcolor: #fff;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//column sorter arrow\r\n\t\t\t\t.tabulator-arrow{\r\n\t\t\t\t\tdisplay: inline-block;\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\ttop:9px;\r\n\t\t\t\t\tright:8px;\r\n\t\t\t\t\twidth: 0;\r\n\t\t\t\t\theight: 0;\r\n\t\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t//complex header column group\r\n\t\t\t&.tabulator-col-group{\r\n\r\n\t\t\t\t//gelement to hold sub columns in column group\r\n\t\t\t\t.tabulator-col-group-cols{\r\n\t\t\t\t\tposition:relative;\r\n\t\t\t\t\tdisplay: flex;\r\n\r\n\t\t\t\t\tborder-top:1px solid $headerBorderColor;\r\n\t\t\t\t\toverflow: hidden;\r\n\r\n\t\t\t\t\tmargin-right:-1px;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//hide left resize handle on first column\r\n\t\t\t&:first-child{\r\n\t\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//header filter containing element\r\n\t\t\t.tabulator-header-filter{\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\tmargin-top:2px;\r\n\t\t\t\twidth:100%;\r\n\t\t\t\ttext-align: center;\r\n\r\n\t\t\t\t//styling adjustment for inbuilt editors\r\n\t\t\t\ttextarea{\r\n\t\t\t\t\theight:auto !important;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsvg{\r\n\t\t\t\t\tmargin-top: 3px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tinput, select{\r\n\t\t\t\t\tborder:1px solid #999;\r\n\t\t\t\t\tbackground: #444;\r\n\t\t\t\t\tcolor: #fff;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tinput{\r\n\t\t\t\t\t&::-ms-clear {\r\n\t\t\t\t\t\twidth : 0;\r\n\t\t\t\t\t\theight: 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//styling child elements for sortable columns\r\n\t\t\t&.tabulator-sortable{\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tpadding-right:25px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground-color:darken($headerBackgroundColor, 10%);\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\t&[aria-sort=\"none\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"asc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowActive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"desc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\t\t\tborder-bottom: none;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t&.tabulator-col-vertical{\r\n\t\t\t\t.tabulator-col-content{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\twriting-mode: vertical-rl;\r\n\t\t\t\t\t\ttext-orientation: mixed;\r\n\r\n\t\t\t\t\t\tdisplay:flex;\r\n\t\t\t\t\t\talign-items:center;\r\n\t\t\t\t\t\tjustify-content:center;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\ttransform: rotate(180deg);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-sortable{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\tpadding-top:20px;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\t\tpadding-bottom:20px;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t.tabulator-arrow{\r\n\t\t\t\t\t\tright:calc(50% - 6px);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t.tabulator-frozen{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\tposition: absolute;\r\n\r\n\t\t\t// background-color: inherit;\r\n\r\n\t\t\tz-index: 10;\r\n\r\n\t\t\t&.tabulator-frozen-left{\r\n\t\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t&.tabulator-frozen-right{\r\n\t\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tmin-width:600%;\r\n\r\n\t\t\tbackground:darken($headerBackgroundColor, 10%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:darken($headerBackgroundColor, 10%) !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\t\t\tborder-bottom:1px solid $headerBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\t\t}\r\n\r\n\t\t.tabulator-frozen-rows-holder{\r\n\t\t\tmin-width:600%;\r\n\r\n\t\t\t&:empty{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t//scrolling element to hold table\r\n\t.tabulator-tableHolder{\r\n\t\tposition:relative;\r\n\t\twidth:100%;\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:auto;\r\n\t\t-webkit-overflow-scrolling: touch;\r\n\r\n\t\t&:focus{\r\n\t\t\toutline: none;\r\n\t\t}\r\n\r\n\t\t//default placeholder element\r\n\t\t.tabulator-placeholder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t&[tabulator-render-mode=\"virtual\"]{\r\n\t\t\t\tmin-height:100%;\r\n\t\t\t\tmin-width:100%;\r\n\t\t\t}\r\n\r\n\t\t\twidth:100%;\r\n\r\n\t\t\tspan{\r\n\t\t\t\tdisplay: inline-block;\r\n\r\n\t\t\t\tmargin:0 auto;\r\n\t\t\t\tpadding:10px;\r\n\r\n\t\t\t\tcolor:#eee;\r\n\t\t\t\tfont-weight: bold;\r\n\t\t\t\tfont-size: 20px;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//element to hold table rows\r\n\t\t.tabulator-table{\r\n\t\t\tposition:relative;\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tbackground-color:$rowBackgroundColor;\r\n\t\t\twhite-space: nowrap;\r\n\t\t\toverflow:visible;\r\n\t\t\tcolor:$rowTextColor;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\t&.tabulator-calcs{\r\n\t\t\t\t\tfont-weight: bold;\r\n\t\t\t\t\tbackground:darken($rowAltBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t\t&.tabulator-calcs-top{\r\n\t\t\t\t\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-calcs-bottom{\r\n\t\t\t\t\t\tborder-top:2px solid $rowBorderColor;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//column resize handles\r\n\t.tabulator-col-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\ttop:0;\r\n\t\tbottom:0;\r\n\t\twidth:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\tleft:0;\r\n\t\t\tright:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ew-resize;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//footer element\r\n\t.tabulator-footer{\r\n\t\tpadding:5px 10px;\r\n\t\tborder-top:1px solid $footerSeperatorColor;\r\n\t\tbackground-color: $footerBackgroundColor;\r\n\t\ttext-align:right;\r\n\t\tcolor: $footerTextColor;\r\n\t\tfont-weight:bold;\r\n\t\twhite-space:nowrap;\r\n\t\tuser-select:none;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\twidth:calc(100% + 20px);\r\n\t\t\tmargin:-5px -10px 5px -10px;\r\n\r\n\t\t\ttext-align: left;\r\n\r\n\t\t\tbackground:darken($footerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:darken($footerBackgroundColor, 5%) !important;\r\n\t\t\t\tcolor:$headerTextColor;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-bottom:1px solid $rowBorderColor;\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&:only-child{\r\n\t\t\t\tmargin-bottom:-5px;\r\n\t\t\t\tborder-bottom:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-paginator{\r\n\t\t\tlabel{\r\n\t\t\t\tcolor:#fff;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//page size select element\r\n\t\t.tabulator-page-size{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 5px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-pages{\r\n\t\t\tmargin:0 7px;\r\n\t\t}\r\n\r\n\t\t//pagination button\r\n\t\t.tabulator-page{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 2px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\r\n\t\t\tbackground:rgba(255,255,255,.2);\r\n\r\n\t\t\tcolor: $footerTextColor;\r\n\t\t\tfont-family:inherit;\r\n\t\t\tfont-weight:inherit;\r\n\t\t\tfont-size:inherit;\r\n\r\n\t\t\t&.active{\r\n\t\t\t\tcolor:$footerActiveColor;\r\n\t\t\t}\r\n\r\n\t\t\t&:disabled{\r\n\t\t\t\topacity:.5;\r\n\t\t\t}\r\n\r\n\t\t\t&:not(.disabled){\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground:rgba(0,0,0,.2);\r\n\t\t\t\t\tcolor:#fff;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//holding div that contains loader and covers tabulator element to prevent interaction\r\n\t.tabulator-loader{\r\n\t\tposition:absolute;\r\n\t\tdisplay: flex;\r\n\t\talign-items:center;\r\n\r\n\t\ttop:0;\r\n\t\tleft:0;\r\n\t\tz-index:100;\r\n\r\n\t\theight:100%;\r\n\t\twidth:100%;\r\n\t\tbackground:rgba(0,0,0,.4);\r\n\t\ttext-align:center;\r\n\r\n\t\t//loading message element\r\n\t\t.tabulator-loader-msg{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 auto;\r\n\t\t\tpadding:10px 20px;\r\n\r\n\t\t\tborder-radius:10px;\r\n\r\n\t\t\tbackground:#fff;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:16px;\r\n\r\n\t\t\t//loading message\r\n\t\t\t&.tabulator-loading{\r\n\t\t\t\tborder:4px solid #333;\r\n\t\t\t\tcolor:#000;\r\n\t\t\t}\r\n\r\n\t\t\t//error message\r\n\t\t\t&.tabulator-error{\r\n\t\t\t\tborder:4px solid #D00;\r\n\t\t\t\tcolor:#590000;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n//row element\r\n.tabulator-row{\r\n\tposition: relative;\r\n\tbox-sizing: border-box;\r\n\r\n\tmin-height:$textSize + ($headerMargin * 2);\r\n\tbackground-color: $rowBackgroundColor;\r\n\r\n\t&:nth-child(even){\r\n\t\tbackground-color: $rowAltBackgroundColor;\r\n\t}\r\n\r\n\t&.tabulator-selectable:hover{\r\n\t\tbackground-color:$rowHoverBackground;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t&.tabulator-selected{\r\n\t\tbackground-color:$rowSelectedBackground;\r\n\t}\r\n\r\n\t&.tabulator-selected:hover{\r\n\t\tbackground-color:$rowSelectedBackgroundHover;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t&.tabulator-moving{\r\n\t\tposition: absolute;\r\n\r\n\t\tborder-top:1px solid  $rowBorderColor;\r\n\t\tborder-bottom:1px solid  $rowBorderColor;\r\n\r\n\t\tpointer-events: none !important;\r\n\t\tz-index:15;\r\n\t}\r\n\r\n\t//row resize handles\r\n\t.tabulator-row-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\tbottom:0;\r\n\t\tleft:0;\r\n\t\theight:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\ttop:0;\r\n\t\t\tbottom:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ns-resize;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-frozen{\r\n\t\tdisplay: inline-block;\r\n\t\tposition: absolute;\r\n\r\n\t\tbackground-color: inherit;\r\n\r\n\t\tz-index: 10;\r\n\r\n\t\t&.tabulator-frozen-left{\r\n\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t&.tabulator-frozen-right{\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-responsive-collapse{\r\n\t\tbox-sizing:border-box;\r\n\r\n\t\tpadding:5px;\r\n\r\n\t\tborder-top:1px solid $rowBorderColor;\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\t&:empty{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\ttable{\r\n\t\t\tfont-size:$textSize;\r\n\r\n\t\t\ttr{\r\n\t\t\t\ttd{\r\n\t\t\t\t\tposition: relative;\r\n\r\n\t\t\t\t\t&:first-of-type{\r\n\t\t\t\t\t\tpadding-right:10px;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//cell element\r\n\t.tabulator-cell{\r\n\t\tdisplay:inline-block;\r\n\t\tposition: relative;\r\n\t\tbox-sizing:border-box;\r\n\t\tpadding:4px;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tvertical-align:middle;\r\n\t\twhite-space:nowrap;\r\n\t\toverflow:hidden;\r\n\t\ttext-overflow:ellipsis;\r\n\r\n\r\n\t\t&.tabulator-editing{\r\n\t\t\tborder:1px solid  $editBoxColor;\r\n\t\t\tpadding: 0;\r\n\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-validation-fail{\r\n\t\t\tborder:1px solid $errorColor;\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\r\n\t\t\t\tcolor: $errorColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//hide left resize handle on first column\r\n\t\t&:first-child{\r\n\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//movable row handle\r\n\t\t&.tabulator-row-handle{\r\n\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\t//handle holder\r\n\t\t\t.tabulator-row-handle-box{\r\n\t\t\t\twidth:80%;\r\n\r\n\t\t\t\t//Hamburger element\r\n\t\t\t\t.tabulator-row-handle-bar{\r\n\t\t\t\t\twidth:100%;\r\n\t\t\t\t\theight:3px;\r\n\t\t\t\t\tmargin-top:2px;\r\n\t\t\t\t\tbackground:#666;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-branch{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:9px;\r\n\t\t\twidth:7px;\r\n\r\n\t\t\tmargin-top:-9px;\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder-bottom-left-radius:1px;\r\n\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-control{\r\n\r\n\t\t\tdisplay:inline-flex;\r\n\t\t\tjustify-content:center;\r\n\t\t\talign-items:center;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:11px;\r\n\t\t\twidth:11px;\r\n\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder:1px solid $rowTextColor;\r\n\t\t\tborder-radius:2px;\r\n\t\t\tbackground:rgba(0, 0, 0, .1);\r\n\r\n\t\t\toverflow:hidden;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\tcursor:pointer;\r\n\t\t\t\tbackground:rgba(0, 0, 0, .2);\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-collapse{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: transparent;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-expand{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: $rowTextColor;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t.tabulator-responsive-collapse-toggle{\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\t\t\tjustify-content:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\theight:15px;\r\n\t\t\twidth:15px;\r\n\r\n\t\t\tborder-radius:20px;\r\n\t\t\tbackground:#fff;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:1.1em;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\topacity:.7;\r\n\t\t\t}\r\n\r\n\t\t\t&.open{\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\t\tdisplay:initial;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-open{\r\n\t\t\t\t\tdisplay:none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\tdisplay:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-traffic-light{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\theight:14px;\r\n\t\t\twidth:14px;\r\n\r\n\t\t\tborder-radius:14px;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//row grouping element\r\n\t&.tabulator-group{\r\n\r\n\t\tbox-sizing:border-box;\r\n\t\tborder-bottom:1px solid #999;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tborder-top:1px solid #999;\r\n\t\tpadding:5px;\r\n\t\tpadding-left:10px;\r\n\t\tbackground:#ccc;\r\n\t\tfont-weight:bold;\r\n\t\tcolor:#333;\r\n\r\n\t\tmin-width: 100%;\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\t\t\tbackground-color:rgba(0,0,0,.1);\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-visible{\r\n\t\t\t.tabulator-arrow{\r\n\t\t\t\tmargin-right:10px;\r\n\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\tborder-bottom: 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-1{\r\n\t\t\tpadding-left:30px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-2{\r\n\t\t\tpadding-left:50px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-3{\r\n\t\t\tpadding-left:70px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-4{\r\n\t\t\tpadding-left:90px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-5{\r\n\t\t\tpadding-left:110px;\r\n\t\t}\r\n\r\n\t\t.tabulator-group-toggle{\r\n\t\t\tdisplay: inline-block;\r\n\t\t}\r\n\r\n\t\t//sorting arrow\r\n\t\t.tabulator-arrow{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t\tmargin-right:16px;\r\n\t\t\tborder-top: 6px solid transparent;\r\n\t\t\tborder-bottom: 6px solid transparent;\r\n\t\t\tborder-right: 0;\r\n\t\t\tborder-left: 6px solid $sortArrowActive;\r\n\t\t\tvertical-align:middle;\r\n\t\t}\r\n\r\n\t\tspan{\r\n\t\t\tmargin-left:10px;\r\n\t\t\tcolor:#666;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n.tabulator-menu{\r\n\tposition: absolute;\r\n\tdisplay:inline-block;\r\n\tbox-sizing:border-box;\r\n\r\n\tbackground:$rowBackgroundColor;\r\n\tborder:1px solid $rowBorderColor;\r\n\tbox-shadow: 0 0 5px 0 rgba(0, 0, 0, .2);\r\n\r\n\tfont-size:$textSize;\r\n\r\n\toverflow-y:auto;\r\n\t-webkit-overflow-scrolling: touch;\r\n\r\n\tz-index: 10000;\r\n\r\n\t.tabulator-menu-item{\r\n\r\n\t\tpadding:5px 10px;\r\n\r\n\t\tuser-select: none;\r\n\r\n\t\t&.tabulator-menu-item-disabled{\r\n\t\t\topacity: .5;\r\n\t\t}\r\n\r\n\t\t&:not(.tabulator-menu-item-disabled):hover{\r\n\t\t\tcursor: pointer;\r\n\t\t\tbackground: $rowAltBackgroundColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-menu-separator{\r\n\t\tborder-top:1px solid $rowBorderColor;\r\n\t}\r\n}\r\n\r\n.tabulator-edit-select-list{\r\n\tposition: absolute;\r\n\tdisplay:inline-block;\r\n\tbox-sizing:border-box;\r\n\r\n\tmax-height:200px;\r\n\r\n\tbackground:$rowTextColor;\r\n\tborder:1px solid $rowBorderColor;\r\n\r\n\tfont-size:$textSize;\r\n\r\n\toverflow-y:auto;\r\n\t-webkit-overflow-scrolling: touch;\r\n\r\n\tz-index: 10000;\r\n\r\n\t.tabulator-edit-select-list-item{\r\n\t\tpadding:4px;\r\n\r\n\t\tcolor:$rowBackgroundColor;\r\n\r\n\t\t&.active{\r\n\t\t\tcolor:$editBoxColor;\r\n\t\t\tbackground:$rowAltBackgroundColor;\r\n\r\n\t\t\t&.focused{\r\n\t\t\t\toutline:1px solid rgba($editBoxColor, .5);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.focused{\r\n\t\t\toutline:1px solid $rowAltBackgroundColor;\r\n\t\t}\r\n\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\r\n\t\t\tcolor:$editBoxColor;\r\n\t\t\tbackground:$rowBackgroundColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-edit-select-list-notice{\r\n\t\tpadding:4px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\t\ttext-align: center;\r\n\t}\r\n\r\n\t.tabulator-edit-select-list-group{\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\tpadding:4px;\r\n\t\tpadding-top:6px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\t\tfont-weight:bold;\r\n\t}\r\n}\r\n\r\n// Table print styling\r\n\r\n.tabulator-print-fullscreen{\r\n\tposition: absolute;\r\n\ttop:0;\r\n\tbottom:0;\r\n\tleft:0;\r\n\tright:0;\r\n\r\n\tz-index: 10000;\r\n}\r\n\r\nbody.tabulator-print-fullscreen-hide>*:not(.tabulator-print-fullscreen){\r\n\tdisplay:none !important;\r\n}\r\n\r\n.tabulator-print-table{\r\n\tborder-collapse: collapse;\r\n\r\n\t//row grouping element\r\n\t.tabulator-print-table-group{\r\n\r\n\t\tbox-sizing:border-box;\r\n\t\tborder-bottom:1px solid #999;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tborder-top:1px solid #999;\r\n\t\tpadding:5px;\r\n\t\tpadding-left:10px;\r\n\t\tbackground:#ccc;\r\n\t\tfont-weight:bold;\r\n\t\tcolor:#333;\r\n\r\n\t\tmin-width: 100%;\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\t\t\tbackground-color:rgba(0,0,0,.1);\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-visible{\r\n\t\t\t.tabulator-arrow{\r\n\t\t\t\tmargin-right:10px;\r\n\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\tborder-bottom: 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-1{\r\n\t\t\ttd{\r\n\t\t\t\tpadding-left:30px !important;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-2{\r\n\t\t\ttd{\r\n\t\t\t\tpadding-left:50px !important;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-3{\r\n\t\t\ttd{\r\n\t\t\t\tpadding-left:70px !important;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-4{\r\n\t\t\ttd{\r\n\t\t\t\tpadding-left:90px !important;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-5{\r\n\t\t\ttd{\r\n\t\t\t\tpadding-left:110px !important;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-group-toggle{\r\n\t\t\tdisplay: inline-block;\r\n\t\t}\r\n\r\n\t\t//sorting arrow\r\n\t\t.tabulator-arrow{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t\tmargin-right:16px;\r\n\t\t\tborder-top: 6px solid transparent;\r\n\t\t\tborder-bottom: 6px solid transparent;\r\n\t\t\tborder-right: 0;\r\n\t\t\tborder-left: 6px solid $sortArrowActive;\r\n\t\t\tvertical-align:middle;\r\n\t\t}\r\n\r\n\t\tspan{\r\n\t\t\tmargin-left:10px;\r\n\t\t\tcolor:#666;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-data-tree-branch{\r\n\t\tdisplay:inline-block;\r\n\t\tvertical-align:middle;\r\n\r\n\t\theight:9px;\r\n\t\twidth:7px;\r\n\r\n\t\tmargin-top:-9px;\r\n\t\tmargin-right:5px;\r\n\r\n\t\tborder-bottom-left-radius:1px;\r\n\r\n\t\tborder-left:2px solid $rowBorderColor;\r\n\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t}\r\n\r\n\t.tabulator-data-tree-control{\r\n\r\n\t\tdisplay:inline-flex;\r\n\t\tjustify-content:center;\r\n\t\talign-items:center;\r\n\t\tvertical-align:middle;\r\n\r\n\t\theight:11px;\r\n\t\twidth:11px;\r\n\r\n\t\tmargin-right:5px;\r\n\r\n\t\tborder:1px solid $rowTextColor;\r\n\t\tborder-radius:2px;\r\n\t\tbackground:rgba(0, 0, 0, .1);\r\n\r\n\t\toverflow:hidden;\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\t\t\tbackground:rgba(0, 0, 0, .2);\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-control-collapse{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tposition: relative;\r\n\r\n\t\t\theight: 7px;\r\n\t\t\twidth: 1px;\r\n\r\n\t\t\tbackground: transparent;\r\n\r\n\t\t\t&:after {\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tcontent: \"\";\r\n\t\t\t\tleft: -3px;\r\n\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\theight: 1px;\r\n\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-control-expand{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tposition: relative;\r\n\r\n\t\t\theight: 7px;\r\n\t\t\twidth: 1px;\r\n\r\n\t\t\tbackground: $rowTextColor;\r\n\r\n\t\t\t&:after {\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tcontent: \"\";\r\n\t\t\t\tleft: -3px;\r\n\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\theight: 1px;\r\n\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n"]}
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/css/tabulator_modern.css b/app/static/vendors/tabulator/css/tabulator_modern.css
deleted file mode 100644 (file)
index 90defa5..0000000
+++ /dev/null
@@ -1,1032 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-.tabulator {
-  position: relative;
-  border: 1px solid #fff;
-  background-color: #fff;
-  overflow: hidden;
-  font-size: 16px;
-  text-align: left;
-  -ms-transform: translatez(0);
-  transform: translatez(0);
-}
-
-.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableHolder .tabulator-table {
-  min-width: 100%;
-}
-
-.tabulator[tabulator-layout="fitDataTable"] {
-  display: inline-block;
-}
-
-.tabulator.tabulator-block-select {
-  -webkit-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-}
-
-.tabulator .tabulator-header {
-  position: relative;
-  box-sizing: border-box;
-  width: 100%;
-  border-bottom: 3px solid #3759D7;
-  margin-bottom: 4px;
-  background-color: #fff;
-  color: #3759D7;
-  font-weight: bold;
-  white-space: nowrap;
-  overflow: hidden;
-  -moz-user-select: none;
-  -khtml-user-select: none;
-  -webkit-user-select: none;
-  -o-user-select: none;
-  padding-left: 10px;
-  font-size: 1.1em;
-}
-
-.tabulator .tabulator-header.tabulator-header-hidden {
-  display: none;
-}
-
-.tabulator .tabulator-header .tabulator-col {
-  display: inline-block;
-  position: relative;
-  box-sizing: border-box;
-  border-right: 2px solid #fff;
-  background-color: #fff;
-  text-align: left;
-  vertical-align: bottom;
-  overflow: hidden;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-moving {
-  position: absolute;
-  border: 1px solid #3759D7;
-  background: #e6e6e6;
-  pointer-events: none;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-col-content {
-  box-sizing: border-box;
-  position: relative;
-  padding: 4px;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button {
-  padding: 0 8px;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button:hover {
-  cursor: pointer;
-  opacity: .6;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {
-  box-sizing: border-box;
-  width: 100%;
-  white-space: nowrap;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  vertical-align: bottom;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {
-  box-sizing: border-box;
-  width: 100%;
-  border: 1px solid #3759D7;
-  padding: 1px;
-  background: #fff;
-  font-size: 1em;
-  color: #3759D7;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {
-  display: inline-block;
-  position: absolute;
-  top: 9px;
-  right: 8px;
-  width: 0;
-  height: 0;
-  border-left: 6px solid transparent;
-  border-right: 6px solid transparent;
-  border-bottom: 6px solid #b7c3f1;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {
-  position: relative;
-  display: -ms-flexbox;
-  display: flex;
-  border-top: 2px solid #3759D7;
-  overflow: hidden;
-  margin-right: -1px;
-}
-
-.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev {
-  display: none;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-header-filter {
-  position: relative;
-  box-sizing: border-box;
-  margin-top: 2px;
-  width: 100%;
-  text-align: center;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {
-  height: auto !important;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {
-  margin-top: 3px;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {
-  width: 0;
-  height: 0;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {
-  padding-right: 25px;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover {
-  cursor: pointer;
-  background-color: #e6e6e6;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-arrow {
-  border-top: none;
-  border-bottom: 6px solid #b7c3f1;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="asc"] .tabulator-col-content .tabulator-arrow {
-  border-top: none;
-  border-bottom: 6px solid #3759D7;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="desc"] .tabulator-col-content .tabulator-arrow {
-  border-top: 6px solid #3759D7;
-  border-bottom: none;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {
-  -ms-writing-mode: tb-rl;
-      writing-mode: vertical-rl;
-  text-orientation: mixed;
-  display: -ms-flexbox;
-  display: flex;
-  -ms-flex-align: center;
-      align-items: center;
-  -ms-flex-pack: center;
-      justify-content: center;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {
-  -ms-transform: rotate(180deg);
-      transform: rotate(180deg);
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {
-  padding-right: 0;
-  padding-top: 20px;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {
-  padding-right: 0;
-  padding-bottom: 20px;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-arrow {
-  right: calc(50% - 6px);
-}
-
-.tabulator .tabulator-header .tabulator-frozen {
-  display: inline-block;
-  position: absolute;
-  z-index: 10;
-}
-
-.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {
-  padding-left: 10px;
-  border-right: 2px solid #fff;
-}
-
-.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {
-  border-left: 2px solid #fff;
-}
-
-.tabulator .tabulator-header .tabulator-calcs-holder {
-  box-sizing: border-box;
-  min-width: 600%;
-  border-top: 2px solid #3759D7 !important;
-  background: white !important;
-  border-top: 1px solid #fff;
-  border-bottom: 1px solid #fff;
-  overflow: hidden;
-}
-
-.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {
-  padding-left: 0 !important;
-  background: white !important;
-}
-
-.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {
-  display: none;
-}
-
-.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-cell {
-  background: none;
-}
-
-.tabulator .tabulator-header .tabulator-frozen-rows-holder {
-  min-width: 600%;
-}
-
-.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {
-  display: none;
-}
-
-.tabulator .tabulator-tableHolder {
-  position: relative;
-  width: 100%;
-  white-space: nowrap;
-  overflow: auto;
-  -webkit-overflow-scrolling: touch;
-}
-
-.tabulator .tabulator-tableHolder:focus {
-  outline: none;
-}
-
-.tabulator .tabulator-tableHolder .tabulator-placeholder {
-  box-sizing: border-box;
-  display: -ms-flexbox;
-  display: flex;
-  -ms-flex-align: center;
-      align-items: center;
-  width: 100%;
-}
-
-.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode="virtual"] {
-  min-height: 100%;
-  min-width: 100%;
-}
-
-.tabulator .tabulator-tableHolder .tabulator-placeholder span {
-  display: inline-block;
-  margin: 0 auto;
-  padding: 10px;
-  color: #3759D7;
-  font-weight: bold;
-  font-size: 20px;
-}
-
-.tabulator .tabulator-tableHolder .tabulator-table {
-  position: relative;
-  display: inline-block;
-  background-color: #f3f3f3;
-  white-space: nowrap;
-  overflow: visible;
-  color: #333;
-}
-
-.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs {
-  font-weight: bold;
-  background: #f2f2f2 !important;
-}
-
-.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {
-  border-bottom: 2px solid #3759D7;
-}
-
-.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {
-  border-top: 2px solid #3759D7;
-}
-
-.tabulator .tabulator-col-resize-handle {
-  position: absolute;
-  right: 0;
-  top: 0;
-  bottom: 0;
-  width: 5px;
-}
-
-.tabulator .tabulator-col-resize-handle.prev {
-  left: 0;
-  right: auto;
-}
-
-.tabulator .tabulator-col-resize-handle:hover {
-  cursor: ew-resize;
-}
-
-.tabulator .tabulator-footer {
-  padding: 5px 10px;
-  border-top: 1px solid #999;
-  background-color: #fff;
-  text-align: right;
-  color: #3759D7;
-  font-weight: bold;
-  white-space: nowrap;
-  -ms-user-select: none;
-      user-select: none;
-  -moz-user-select: none;
-  -khtml-user-select: none;
-  -webkit-user-select: none;
-  -o-user-select: none;
-}
-
-.tabulator .tabulator-footer .tabulator-calcs-holder {
-  box-sizing: border-box;
-  width: calc(100% + 20px);
-  margin: -5px -10px 5px -10px;
-  text-align: left;
-  background: white !important;
-  border-top: 3px solid #3759D7 !important;
-  border-bottom: 2px solid #3759D7 !important;
-  border-bottom: 1px solid #fff;
-  border-top: 1px solid #fff;
-  overflow: hidden;
-}
-
-.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {
-  background: white !important;
-}
-
-.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {
-  display: none;
-}
-
-.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-cell {
-  background: none;
-}
-
-.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-cell:first-child {
-  border-left: 10px solid transparent;
-}
-
-.tabulator .tabulator-footer .tabulator-calcs-holder:only-child {
-  margin-bottom: -5px;
-  border-bottom: none;
-  border-bottom: none !important;
-}
-
-.tabulator .tabulator-footer .tabulator-paginator {
-  color: #3759D7;
-  font-family: inherit;
-  font-weight: inherit;
-  font-size: inherit;
-}
-
-.tabulator .tabulator-footer .tabulator-page-size {
-  display: inline-block;
-  margin: 0 5px;
-  padding: 2px 5px;
-  border: 1px solid #aaa;
-  border-radius: 3px;
-}
-
-.tabulator .tabulator-footer .tabulator-pages {
-  margin: 0 7px;
-}
-
-.tabulator .tabulator-footer .tabulator-page {
-  display: inline-block;
-  margin: 0 2px;
-  padding: 2px 5px;
-  border: 1px solid #aaa;
-  border-radius: 3px;
-  background: rgba(255, 255, 255, 0.2);
-}
-
-.tabulator .tabulator-footer .tabulator-page.active {
-  color: #3759D7;
-}
-
-.tabulator .tabulator-footer .tabulator-page:disabled {
-  opacity: .5;
-}
-
-.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {
-  cursor: pointer;
-  background: rgba(0, 0, 0, 0.2);
-  color: #fff;
-}
-
-.tabulator .tabulator-loader {
-  position: absolute;
-  display: -ms-flexbox;
-  display: flex;
-  -ms-flex-align: center;
-      align-items: center;
-  top: 0;
-  left: 0;
-  z-index: 100;
-  height: 100%;
-  width: 100%;
-  background: rgba(0, 0, 0, 0.4);
-  text-align: center;
-}
-
-.tabulator .tabulator-loader .tabulator-loader-msg {
-  display: inline-block;
-  margin: 0 auto;
-  padding: 10px 20px;
-  border-radius: 10px;
-  background: #fff;
-  font-weight: bold;
-  font-size: 16px;
-}
-
-.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading {
-  border: 4px solid #333;
-  color: #000;
-}
-
-.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error {
-  border: 4px solid #D00;
-  color: #590000;
-}
-
-.tabulator-row {
-  position: relative;
-  box-sizing: border-box;
-  box-sizing: border-box;
-  min-height: 24px;
-  margin-bottom: 2px;
-}
-
-.tabulator-row .tabulator-cell:first-child {
-  border-left: 10px solid #3759D7;
-}
-
-.tabulator-row:nth-child(even) {
-  background-color: #627ce0;
-}
-
-.tabulator-row:nth-child(even) .tabulator-cell {
-  background-color: #fff;
-}
-
-.tabulator-row:nth-child(even) .tabulator-cell:first-child {
-  border-left: 10px solid #627ce0;
-}
-
-.tabulator-row.tabulator-selectable:hover {
-  cursor: pointer;
-}
-
-.tabulator-row.tabulator-selectable:hover .tabulator-cell {
-  background-color: #bbb;
-}
-
-.tabulator-row.tabulator-selected .tabulator-cell {
-  background-color: #9ABCEA;
-}
-
-.tabulator-row.tabulator-selected:hover .tabulator-cell {
-  background-color: #769BCC;
-  cursor: pointer;
-}
-
-.tabulator-row.tabulator-moving {
-  position: absolute;
-  border-top: 1px solid #fff;
-  border-bottom: 1px solid #fff;
-  pointer-events: none !important;
-  z-index: 15;
-}
-
-.tabulator-row .tabulator-row-resize-handle {
-  position: absolute;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  height: 5px;
-}
-
-.tabulator-row .tabulator-row-resize-handle.prev {
-  top: 0;
-  bottom: auto;
-}
-
-.tabulator-row .tabulator-row-resize-handle:hover {
-  cursor: ns-resize;
-}
-
-.tabulator-row .tabulator-frozen {
-  display: inline-block;
-  position: absolute;
-  background-color: inherit;
-  z-index: 10;
-}
-
-.tabulator-row .tabulator-frozen.tabulator-frozen-left {
-  border-right: 2px solid #fff;
-}
-
-.tabulator-row .tabulator-frozen.tabulator-frozen-right {
-  border-left: 2px solid #fff;
-}
-
-.tabulator-row .tabulator-responsive-collapse {
-  box-sizing: border-box;
-  padding: 5px;
-  border-top: 1px solid #fff;
-  border-bottom: 1px solid #fff;
-}
-
-.tabulator-row .tabulator-responsive-collapse:empty {
-  display: none;
-}
-
-.tabulator-row .tabulator-responsive-collapse table {
-  font-size: 16px;
-}
-
-.tabulator-row .tabulator-responsive-collapse table tr td {
-  position: relative;
-}
-
-.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {
-  padding-right: 10px;
-}
-
-.tabulator-row .tabulator-cell {
-  display: inline-block;
-  position: relative;
-  box-sizing: border-box;
-  padding: 6px 4px;
-  border-right: 2px solid #fff;
-  vertical-align: middle;
-  white-space: nowrap;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  background-color: #f3f3f3;
-}
-
-.tabulator-row .tabulator-cell.tabulator-editing {
-  border: 1px solid #1D68CD;
-  padding: 0;
-}
-
-.tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {
-  border: 1px;
-  background: transparent;
-}
-
-.tabulator-row .tabulator-cell.tabulator-validation-fail {
-  border: 1px solid #dd0000;
-}
-
-.tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {
-  border: 1px;
-  background: transparent;
-  color: #dd0000;
-}
-
-.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev {
-  display: none;
-}
-
-.tabulator-row .tabulator-cell.tabulator-row-handle {
-  display: -ms-inline-flexbox;
-  display: inline-flex;
-  -ms-flex-align: center;
-      align-items: center;
-  -ms-flex-pack: center;
-      justify-content: center;
-  -moz-user-select: none;
-  -khtml-user-select: none;
-  -webkit-user-select: none;
-  -o-user-select: none;
-}
-
-.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {
-  width: 80%;
-}
-
-.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {
-  width: 100%;
-  height: 3px;
-  margin-top: 2px;
-  background: #666;
-}
-
-.tabulator-row .tabulator-cell .tabulator-data-tree-branch {
-  display: inline-block;
-  vertical-align: middle;
-  height: 9px;
-  width: 7px;
-  margin-top: -9px;
-  margin-right: 5px;
-  border-bottom-left-radius: 1px;
-  border-left: 2px solid #fff;
-  border-bottom: 2px solid #fff;
-}
-
-.tabulator-row .tabulator-cell .tabulator-data-tree-control {
-  display: -ms-inline-flexbox;
-  display: inline-flex;
-  -ms-flex-pack: center;
-      justify-content: center;
-  -ms-flex-align: center;
-      align-items: center;
-  vertical-align: middle;
-  height: 11px;
-  width: 11px;
-  margin-right: 5px;
-  border: 1px solid #333;
-  border-radius: 2px;
-  background: rgba(0, 0, 0, 0.1);
-  overflow: hidden;
-}
-
-.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {
-  cursor: pointer;
-  background: rgba(0, 0, 0, 0.2);
-}
-
-.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {
-  display: inline-block;
-  position: relative;
-  height: 7px;
-  width: 1px;
-  background: transparent;
-}
-
-.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {
-  position: absolute;
-  content: "";
-  left: -3px;
-  top: 3px;
-  height: 1px;
-  width: 7px;
-  background: #333;
-}
-
-.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {
-  display: inline-block;
-  position: relative;
-  height: 7px;
-  width: 1px;
-  background: #333;
-}
-
-.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {
-  position: absolute;
-  content: "";
-  left: -3px;
-  top: 3px;
-  height: 1px;
-  width: 7px;
-  background: #333;
-}
-
-.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {
-  display: -ms-inline-flexbox;
-  display: inline-flex;
-  -ms-flex-align: center;
-      align-items: center;
-  -ms-flex-pack: center;
-      justify-content: center;
-  -moz-user-select: none;
-  -khtml-user-select: none;
-  -webkit-user-select: none;
-  -o-user-select: none;
-  height: 15px;
-  width: 15px;
-  border-radius: 20px;
-  background: #666;
-  color: #f3f3f3;
-  font-weight: bold;
-  font-size: 1.1em;
-}
-
-.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {
-  opacity: .7;
-}
-
-.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {
-  display: initial;
-}
-
-.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {
-  display: none;
-}
-
-.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {
-  display: none;
-}
-
-.tabulator-row .tabulator-cell .tabulator-traffic-light {
-  display: inline-block;
-  height: 14px;
-  width: 14px;
-  border-radius: 14px;
-}
-
-.tabulator-row.tabulator-group {
-  box-sizing: border-box;
-  border-bottom: 2px solid #3759D7;
-  border-top: 2px solid #3759D7;
-  padding: 5px;
-  padding-left: 10px;
-  background: #8ca0e8;
-  font-weight: bold;
-  color: fff;
-  margin-bottom: 2px;
-  min-width: 100%;
-}
-
-.tabulator-row.tabulator-group:hover {
-  cursor: pointer;
-  background-color: rgba(0, 0, 0, 0.1);
-}
-
-.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {
-  margin-right: 10px;
-  border-left: 6px solid transparent;
-  border-right: 6px solid transparent;
-  border-top: 6px solid #3759D7;
-  border-bottom: 0;
-}
-
-.tabulator-row.tabulator-group.tabulator-group-level-1 {
-  padding-left: 30px;
-}
-
-.tabulator-row.tabulator-group.tabulator-group-level-2 {
-  padding-left: 50px;
-}
-
-.tabulator-row.tabulator-group.tabulator-group-level-3 {
-  padding-left: 70px;
-}
-
-.tabulator-row.tabulator-group.tabulator-group-level-4 {
-  padding-left: 90px;
-}
-
-.tabulator-row.tabulator-group.tabulator-group-level-5 {
-  padding-left: 110px;
-}
-
-.tabulator-row.tabulator-group .tabulator-group-toggle {
-  display: inline-block;
-}
-
-.tabulator-row.tabulator-group .tabulator-arrow {
-  display: inline-block;
-  width: 0;
-  height: 0;
-  margin-right: 16px;
-  border-top: 6px solid transparent;
-  border-bottom: 6px solid transparent;
-  border-right: 0;
-  border-left: 6px solid #3759D7;
-  vertical-align: middle;
-}
-
-.tabulator-row.tabulator-group span {
-  margin-left: 10px;
-  color: #3759D7;
-}
-
-.tabulator-menu {
-  position: absolute;
-  display: inline-block;
-  box-sizing: border-box;
-  background: #f3f3f3;
-  border: 1px solid #fff;
-  box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);
-  font-size: 16px;
-  overflow-y: auto;
-  -webkit-overflow-scrolling: touch;
-  z-index: 10000;
-}
-
-.tabulator-menu .tabulator-menu-item {
-  padding: 5px 10px;
-  -webkit-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-}
-
-.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {
-  opacity: .5;
-}
-
-.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {
-  cursor: pointer;
-  background: #fff;
-}
-
-.tabulator-menu .tabulator-menu-separator {
-  border-top: 1px solid #fff;
-}
-
-.tabulator-edit-select-list {
-  position: absolute;
-  display: inline-block;
-  box-sizing: border-box;
-  max-height: 200px;
-  background: #f3f3f3;
-  border: 1px solid #1D68CD;
-  font-size: 16px;
-  overflow-y: auto;
-  -webkit-overflow-scrolling: touch;
-  z-index: 10000;
-}
-
-.tabulator-edit-select-list .tabulator-edit-select-list-item {
-  padding: 4px;
-  color: #333;
-}
-
-.tabulator-edit-select-list .tabulator-edit-select-list-item.active {
-  color: #f3f3f3;
-  background: #1D68CD;
-}
-
-.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {
-  outline: 1px solid rgba(243, 243, 243, 0.5);
-}
-
-.tabulator-edit-select-list .tabulator-edit-select-list-item.focused {
-  outline: 1px solid #1D68CD;
-}
-
-.tabulator-edit-select-list .tabulator-edit-select-list-item:hover {
-  cursor: pointer;
-  color: #f3f3f3;
-  background: #1D68CD;
-}
-
-.tabulator-edit-select-list .tabulator-edit-select-list-notice {
-  padding: 4px;
-  color: #333;
-  text-align: center;
-}
-
-.tabulator-edit-select-list .tabulator-edit-select-list-group {
-  border-bottom: 1px solid #fff;
-  padding: 4px;
-  padding-top: 6px;
-  color: #333;
-  font-weight: bold;
-}
-
-.tabulator-print-fullscreen {
-  position: absolute;
-  top: 0;
-  bottom: 0;
-  left: 0;
-  right: 0;
-  z-index: 10000;
-}
-
-body.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {
-  display: none !important;
-}
-
-.tabulator-print-table {
-  border-collapse: collapse;
-}
-
-.tabulator-print-table .tabulator-print-table-group {
-  box-sizing: border-box;
-  border-bottom: 2px solid #3759D7;
-  border-top: 2px solid #3759D7;
-  padding: 5px;
-  padding-left: 10px;
-  background: #8ca0e8;
-  font-weight: bold;
-  color: fff;
-  margin-bottom: 2px;
-  min-width: 100%;
-}
-
-.tabulator-print-table .tabulator-print-table-group:hover {
-  cursor: pointer;
-  background-color: rgba(0, 0, 0, 0.1);
-}
-
-.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {
-  margin-right: 10px;
-  border-left: 6px solid transparent;
-  border-right: 6px solid transparent;
-  border-top: 6px solid #3759D7;
-  border-bottom: 0;
-}
-
-.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {
-  padding-left: 30px !important;
-}
-
-.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {
-  padding-left: 50px !important;
-}
-
-.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {
-  padding-left: 70px !important;
-}
-
-.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {
-  padding-left: 90px !important;
-}
-
-.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {
-  padding-left: 110px !important;
-}
-
-.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {
-  display: inline-block;
-}
-
-.tabulator-print-table .tabulator-print-table-group .tabulator-arrow {
-  display: inline-block;
-  width: 0;
-  height: 0;
-  margin-right: 16px;
-  border-top: 6px solid transparent;
-  border-bottom: 6px solid transparent;
-  border-right: 0;
-  border-left: 6px solid #3759D7;
-  vertical-align: middle;
-}
-
-.tabulator-print-table .tabulator-print-table-group span {
-  margin-left: 10px;
-  color: #3759D7;
-}
-
-.tabulator-print-table .tabulator-data-tree-branch {
-  display: inline-block;
-  vertical-align: middle;
-  height: 9px;
-  width: 7px;
-  margin-top: -9px;
-  margin-right: 5px;
-  border-bottom-left-radius: 1px;
-  border-left: 2px solid #fff;
-  border-bottom: 2px solid #fff;
-}
-
-.tabulator-print-table .tabulator-data-tree-control {
-  display: -ms-inline-flexbox;
-  display: inline-flex;
-  -ms-flex-pack: center;
-      justify-content: center;
-  -ms-flex-align: center;
-      align-items: center;
-  vertical-align: middle;
-  height: 11px;
-  width: 11px;
-  margin-right: 5px;
-  border: 1px solid #333;
-  border-radius: 2px;
-  background: rgba(0, 0, 0, 0.1);
-  overflow: hidden;
-}
-
-.tabulator-print-table .tabulator-data-tree-control:hover {
-  cursor: pointer;
-  background: rgba(0, 0, 0, 0.2);
-}
-
-.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {
-  display: inline-block;
-  position: relative;
-  height: 7px;
-  width: 1px;
-  background: transparent;
-}
-
-.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {
-  position: absolute;
-  content: "";
-  left: -3px;
-  top: 3px;
-  height: 1px;
-  width: 7px;
-  background: #333;
-}
-
-.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {
-  display: inline-block;
-  position: relative;
-  height: 7px;
-  width: 1px;
-  background: #333;
-}
-
-.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {
-  position: absolute;
-  content: "";
-  left: -3px;
-  top: 3px;
-  height: 1px;
-  width: 7px;
-  background: #333;
-}
diff --git a/app/static/vendors/tabulator/css/tabulator_modern.min.css b/app/static/vendors/tabulator/css/tabulator_modern.min.css
deleted file mode 100644 (file)
index df7a81a..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-.tabulator{position:relative;border:1px solid #fff;background-color:#fff;overflow:hidden;font-size:16px;text-align:left;transform:translatez(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableHolder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitDataTable]{display:inline-block}.tabulator.tabulator-block-select{-webkit-user-select:none;-ms-user-select:none;user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:3px solid #3759d7;margin-bottom:4px;background-color:#fff;color:#3759d7;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;padding-left:10px;font-size:1.1em}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;border-right:2px solid #fff;background-color:#fff;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #3759d7;background:#e6e6e6;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button:hover{cursor:pointer;opacity:.6}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{box-sizing:border-box;width:100%;border:1px solid #3759d7;padding:1px;background:#fff;font-size:1em;color:#3759d7}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{display:inline-block;position:absolute;top:9px;right:8px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #b7c3f1}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:-ms-flexbox;display:flex;border-top:2px solid #3759d7;overflow:hidden;margin-right:-1px}.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{position:relative;box-sizing:border-box;margin-top:2px;width:100%;text-align:center}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{width:0;height:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:#e6e6e6}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #b7c3f1}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #3759d7}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-arrow{border-top:6px solid #3759d7;border-bottom:none}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{-ms-writing-mode:tb-rl;writing-mode:vertical-rl;text-orientation:mixed;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-right:0;padding-bottom:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-arrow{right:calc(50% - 6px)}.tabulator .tabulator-header .tabulator-frozen{display:inline-block;position:absolute;z-index:10}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{padding-left:10px;border-right:2px solid #fff}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #fff}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;min-width:600%;border-top:2px solid #3759d7!important;background:#fff!important;border-top:1px solid #fff;border-bottom:1px solid #fff;overflow:hidden}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{padding-left:0!important;background:#fff!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-cell{background:none}.tabulator .tabulator-header .tabulator-frozen-rows-holder{min-width:600%}.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableHolder{position:relative;width:100%;white-space:nowrap;overflow:auto;-webkit-overflow-scrolling:touch}.tabulator .tabulator-tableHolder:focus{outline:none}.tabulator .tabulator-tableHolder .tabulator-placeholder{box-sizing:border-box;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;width:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder span{display:inline-block;margin:0 auto;padding:10px;color:#3759d7;font-weight:700;font-size:20px}.tabulator .tabulator-tableHolder .tabulator-table{position:relative;display:inline-block;background-color:#f3f3f3;white-space:nowrap;overflow:visible;color:#333}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#f2f2f2!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #3759d7}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #3759d7}.tabulator .tabulator-col-resize-handle{position:absolute;right:0;top:0;bottom:0;width:5px}.tabulator .tabulator-col-resize-handle.prev{left:0;right:auto}.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}.tabulator .tabulator-footer{padding:5px 10px;border-top:1px solid #999;background-color:#fff;text-align:right;color:#3759d7;font-weight:700;white-space:nowrap;-ms-user-select:none;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-footer .tabulator-calcs-holder{box-sizing:border-box;width:calc(100% + 20px);margin:-5px -10px 5px;text-align:left;background:#fff!important;border-top:3px solid #3759d7!important;border-bottom:2px solid #3759d7!important;border-bottom:1px solid #fff;border-top:1px solid #fff;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#fff!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-cell{background:none}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-cell:first-child{border-left:10px solid transparent}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px;border-bottom:none;border-bottom:none!important}.tabulator .tabulator-footer .tabulator-paginator{color:#3759d7;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page-size{display:inline-block;margin:0 5px;padding:2px 5px;border:1px solid #aaa;border-radius:3px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{display:inline-block;margin:0 2px;padding:2px 5px;border:1px solid #aaa;border-radius:3px;background:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#3759d7}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}.tabulator .tabulator-loader{position:absolute;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;top:0;left:0;z-index:100;height:100%;width:100%;background:rgba(0,0,0,.4);text-align:center}.tabulator .tabulator-loader .tabulator-loader-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading{border:4px solid #333;color:#000}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error{border:4px solid #d00;color:#590000}.tabulator-row{position:relative;box-sizing:border-box;min-height:24px;margin-bottom:2px}.tabulator-row .tabulator-cell:first-child{border-left:10px solid #3759d7}.tabulator-row:nth-child(2n){background-color:#627ce0}.tabulator-row:nth-child(2n) .tabulator-cell{background-color:#fff}.tabulator-row:nth-child(2n) .tabulator-cell:first-child{border-left:10px solid #627ce0}.tabulator-row.tabulator-selectable:hover{cursor:pointer}.tabulator-row.tabulator-selectable:hover .tabulator-cell{background-color:#bbb}.tabulator-row.tabulator-selected .tabulator-cell{background-color:#9abcea}.tabulator-row.tabulator-selected:hover .tabulator-cell{background-color:#769bcc;cursor:pointer}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #fff;border-bottom:1px solid #fff;pointer-events:none!important;z-index:15}.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #fff}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #fff}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #fff;border-bottom:1px solid #fff}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:16px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:6px 4px;border-right:2px solid #fff;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background-color:#f3f3f3}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{border:1px;background:transparent}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator-row .tabulator-cell.tabulator-row-handle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{width:100%;height:3px;margin-top:2px;background:#666}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #fff;border-bottom:2px solid #fff}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;height:15px;width:15px;border-radius:20px;background:#666;color:#f3f3f3;font-weight:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{opacity:.7}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open,.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{display:inline-block;height:14px;width:14px;border-radius:14px}.tabulator-row.tabulator-group{box-sizing:border-box;border-bottom:2px solid #3759d7;border-top:2px solid #3759d7;padding:5px;padding-left:10px;background:#8ca0e8;font-weight:700;color:fff;margin-bottom:2px;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #3759d7;border-bottom:0}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #3759d7;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#3759d7}.tabulator-menu{position:absolute;display:inline-block;box-sizing:border-box;background:#f3f3f3;border:1px solid #fff;box-shadow:0 0 5px 0 rgba(0,0,0,.2);font-size:16px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-menu .tabulator-menu-item{padding:5px 10px;-webkit-user-select:none;-ms-user-select:none;user-select:none}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled{opacity:.5}.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{cursor:pointer;background:#fff}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #fff}.tabulator-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;background:#f3f3f3;border:1px solid #1d68cd;font-size:16px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-edit-select-list .tabulator-edit-select-list-item{padding:4px;color:#333}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:#f3f3f3;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused{outline:1px solid hsla(0,0%,95%,.5)}.tabulator-edit-select-list .tabulator-edit-select-list-item.focused{outline:1px solid #1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{cursor:pointer;color:#f3f3f3;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-notice{padding:4px;color:#333;text-align:center}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #fff;padding:4px;padding-top:6px;color:#333;font-weight:700}.tabulator-print-fullscreen{position:absolute;top:0;bottom:0;left:0;right:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse}.tabulator-print-table .tabulator-print-table-group{box-sizing:border-box;border-bottom:2px solid #3759d7;border-top:2px solid #3759d7;padding:5px;padding-left:10px;background:#8ca0e8;font-weight:700;color:fff;margin-bottom:2px;min-width:100%}.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #3759d7;border-bottom:0}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td{padding-left:30px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td{padding-left:50px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td{padding-left:70px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td{padding-left:90px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td{padding-left:110px!important}.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle{display:inline-block}.tabulator-print-table .tabulator-print-table-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #3759d7;vertical-align:middle}.tabulator-print-table .tabulator-print-table-group span{margin-left:10px;color:#3759d7}.tabulator-print-table .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #fff;border-bottom:2px solid #fff}.tabulator-print-table .tabulator-data-tree-control{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}
-/*# sourceMappingURL=tabulator_modern.min.css.map */
diff --git a/app/static/vendors/tabulator/css/tabulator_modern.min.css.map b/app/static/vendors/tabulator/css/tabulator_modern.min.css.map
deleted file mode 100644 (file)
index 5f594c8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["tabulator_modern.scss"],"names":[],"mappings":"AA+CA,WACC,kBAAkB,AAClB,sBA1CgB,AA2ChB,sBA5CqB,AA6CrB,gBAAe,AACf,eA5Ca,AA6Cb,gBAAgB,AAMhB,uBAAwB,CAuhBxB,AAniBD,iFAiBI,cAAc,CACd,AAlBJ,0CAuBE,oBAAqB,CACrB,AAxBF,kCA2BE,yBAAiB,AAAjB,qBAAiB,AAAjB,gBAAiB,CACjB,AA5BF,6BAgCE,kBAAiB,AACjB,sBAAsB,AAEtB,WAAU,AAEV,gCAjFe,AAkFf,kBAAiB,AACjB,sBA3EyB,AA4EzB,cApFe,AAqFf,gBAAgB,AAEhB,mBAAmB,AACnB,gBAAe,AAEf,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,oBAAoB,AAEpB,kBAzDe,AA2Df,eAAgB,CAkQhB,AAvTF,qDAwDG,YAAY,CACZ,AAzDH,4CA6DG,qBAAoB,AACpB,kBAAiB,AACjB,sBAAqB,AACrB,4BAlGoB,AAmGpB,sBArGwB,AAsGxB,gBAAe,AACf,sBAAsB,AACtB,eAAgB,CA2LhB,AA/PH,6DAuEI,kBAAkB,AAClB,yBApHa,AAqHb,mBAA8C,AAC9C,mBAAoB,CACpB,AA3EJ,mEA+EI,sBAAqB,AACrB,kBAAkB,AAClB,WAAW,CAmDX,AApIJ,iGAqFK,aAAc,CAMd,AA3FL,uGAwFM,eAAe,AACf,UAAW,CACX,AA1FN,wFA+FK,sBAAqB,AACrB,WAAW,AAEX,mBAAmB,AACnB,gBAAgB,AAChB,uBAAuB,AACvB,qBAAqB,CAgBrB,AArHL,gHAyGM,sBAAsB,AACtB,WAAW,AAEX,yBAxJW,AA0JX,YAAW,AAEX,gBAAgB,AAEhB,cAAc,AACd,aA/JW,CAgKX,AApHN,oFAyHK,qBAAqB,AACrB,kBAAkB,AAClB,QAAO,AACP,UAAS,AACT,QAAQ,AACR,SAAS,AACT,kCAAkC,AAClC,mCAAmC,AACnC,+BA7JqC,CA8JrC,AAlIL,0FA2IK,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AAEb,6BA1LY,AA2LZ,gBAAgB,AAEhB,iBAAiB,CACjB,AAlJL,0FAyJK,YAAa,CACb,AA1JL,qEAgKI,kBAAkB,AAClB,sBAAsB,AACtB,eAAc,AACd,WAAU,AACV,iBAAkB,CAiBlB,AArLJ,8EAwKK,qBAAsB,CACtB,AAzKL,yEA4KK,cAAe,CACf,AA7KL,sFAiLM,QAAS,AACT,QAAS,CACT,AAnLN,oFA0LK,kBAAkB,CAClB,AA3LL,qEA8LK,eAAc,AACd,wBAAoD,CACpD,AAhML,uHAqMM,gBAAgB,AAChB,+BAlOoC,CAmOpC,AAvMN,sHA4MM,gBAAgB,AAChB,+BAzPW,CA0PX,AA9MN,uHAmNM,6BA/PW,AAgQX,kBAAmB,CACnB,AArNN,+GA4NM,uBAAyB,AAAzB,yBAAyB,AACzB,uBAAuB,AAEvB,oBAAY,AAAZ,aAAY,AACZ,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,sBAAsB,CACtB,AAlON,oHAuOM,wBAAyB,CACzB,AAxON,2GA6OM,gBAAe,AACf,gBAAgB,CAChB,AA/ON,uIAmPO,gBAAe,AACf,mBAAmB,CACnB,AArPP,uGA0PM,qBAAqB,CACrB,AA3PN,+CAkQG,qBAAqB,AACrB,kBAAkB,AAIlB,UAAW,CAWX,AAlRH,qEA0QI,kBAhRa,AAkRb,2BAnSgB,CAoShB,AA7QJ,sEAgRI,0BAvSgB,CAwShB,AAjRJ,qDAqRG,sBAAqB,AACrB,eAAc,AAEd,uCAAqD,AAErD,0BAAyD,AAgBzD,0BAjUiB,AAkUjB,6BA7UoB,AA+UpB,eAAgB,CAChB,AA9SH,oEA6RI,yBAA0B,AAE1B,yBAAyD,CASzD,AAxSJ,iGAkSK,YAAa,CACb,AAnSL,oFAsSK,eAAe,CACf,AAvSL,2DAiTG,cAAc,CAKd,AAtTH,iEAoTI,YAAa,CACb,AArTJ,kCA2TE,kBAAiB,AACjB,WAAU,AACV,mBAAmB,AACnB,cAAa,AACb,gCAAiC,CAuDjC,AAtXF,wCAkUG,YAAa,CACb,AAnUH,yDAuUG,sBAAqB,AACrB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AAOlB,UAAU,CAYV,AA5VH,wFA4UI,gBAAe,AACf,cAAc,CACd,AA9UJ,8DAmVI,qBAAqB,AAErB,cAAa,AACb,aAAY,AAEZ,cApYa,AAqYb,gBAAiB,AACjB,cAAe,CACf,AA3VJ,mDAgWG,kBAAiB,AACjB,qBAAoB,AACpB,yBA3XwB,AA4XxB,mBAAmB,AACnB,iBAAgB,AAChB,UA3Xe,CA2Yf,AArXH,kFAyWK,gBAAiB,AACjB,4BAAwD,CASxD,AAnXL,sGA6WM,+BAzZW,CA0ZX,AA9WN,yGAiXM,4BA7ZW,CA8ZX,AAlXN,wCA2XE,kBAAiB,AACjB,QAAO,AACP,MAAK,AACL,SAAQ,AACR,SAAS,CAUT,AAzYF,6CAkYG,OAAM,AACN,UAAU,CACV,AApYH,8CAuYG,gBAAgB,CAChB,AAxYH,6BA8YE,iBAAgB,AAChB,0BAxZwB,AAyZxB,sBA5ZyB,AA6ZzB,iBAAgB,AAChB,cA9be,AA+bf,gBAAgB,AAChB,mBAAkB,AAClB,qBAAgB,AAAhB,iBAAgB,AAEhB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CA8FpB,AAxfF,qDA6ZG,sBAAqB,AACrB,wBAAuB,AACvB,sBAA2B,AAE3B,gBAAgB,AAEhB,0BAAyD,AAEzD,uCAAqD,AACrD,0CAAwD,AAkBxD,6BA/ciB,AAgdjB,0BAhdiB,AAkdjB,eAAgB,CAOhB,AAlcH,oEAyaI,yBAAyD,CAazD,AAtbJ,iGA4aK,YAAa,CACb,AA7aL,oFAgbK,eAAe,CAKf,AArbL,gGAmbM,kCAA2C,CAC3C,AApbN,gEA8bI,mBAAkB,AAClB,mBAAkB,AAClB,4BAA6B,CAC7B,AAjcJ,kDAscG,cAlfc,AAmfd,oBAAmB,AACnB,oBAAmB,AACnB,iBAAiB,CACjB,AA1cH,kDA8cG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBA7doB,AA8dpB,iBAAiB,CACjB,AArdH,8CAydG,YAAY,CACZ,AA1dH,6CA8dG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBA7eoB,AA8epB,kBAAiB,AAEjB,6BAA+B,CAiB/B,AAvfH,oDAyeI,aArhBa,CAshBb,AA1eJ,sDA6eI,UAAU,CACV,AA9eJ,kEAkfK,eAAc,AACd,0BAAyB,AACzB,UAAU,CACV,AArfL,6BA4fE,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AAElB,MAAK,AACL,OAAM,AACN,YAAW,AAEX,YAAW,AACX,WAAU,AACV,0BAAyB,AACzB,iBAAiB,CA2BjB,AAliBF,mDA2gBG,qBAAoB,AAEpB,cAAa,AACb,kBAAiB,AAEjB,mBAAkB,AAElB,gBAAe,AACf,gBAAgB,AAChB,cAAc,CAad,AAjiBH,qEAwhBI,sBAAqB,AACrB,UAAU,CACV,AA1hBJ,mEA8hBI,sBAAqB,AACrB,aAAa,CACb,AAMJ,eACC,kBAAkB,AAGlB,sBAAsB,AACtB,gBAA0C,AAM1C,iBAAkB,CAqYlB,AAhZD,2CAeG,8BAjmBc,CAkmBd,AAhBH,6BAqBE,wBA/jBqC,CAwkBrC,AA9BF,6CAwBG,qBAtlBwB,CA2lBxB,AA7BH,yDA2BI,8BArkBmC,CAskBnC,AA5BJ,0CAiCE,cAAe,CAKf,AAtCF,0DAoCG,qBA/lBqB,CAgmBrB,AArCH,kDA0CG,wBAnmB4B,CAomB5B,AA3CH,wDAgDG,yBAxmBiC,AAymBjC,cAAe,CACf,AAlDH,gCAsDE,kBAAkB,AAElB,0BArnBkB,AAsnBlB,6BAtnBkB,AAwnBlB,8BAA+B,AAC/B,UAAU,CACV,AA7DF,4CAiEE,kBAAiB,AACjB,QAAO,AACP,SAAQ,AACR,OAAM,AACN,UAAU,CAUV,AA/EF,iDAwEG,MAAK,AACL,WAAW,CACX,AA1EH,kDA6EG,gBAAgB,CAChB,AA9EH,iCAkFE,qBAAqB,AACrB,kBAAkB,AAElB,yBAAyB,AAEzB,UAAW,CAUX,AAjGF,uDA2FG,2BAxpBiB,CAypBjB,AA5FH,wDA+FG,0BA5pBiB,CA6pBjB,AAhGH,8CAoGE,sBAAqB,AAErB,YAAW,AAEX,0BArqBkB,AAsqBlB,4BAtqBkB,CAyrBlB,AA5HF,oDA4GG,YAAY,CACZ,AA7GH,oDAgHG,cA7rBW,CAwsBX,AA3HH,0DAoHK,iBAAkB,CAKlB,AAzHL,wEAuHM,kBAAkB,CAClB,AAxHN,+BAgIE,qBAAoB,AACpB,kBAAkB,AAClB,sBAAqB,AACrB,gBAAe,AACf,4BAjsBkB,AAksBlB,sBAAqB,AACrB,mBAAkB,AAClB,gBAAe,AACf,uBAAsB,AAEtB,wBAzsByB,CAm4BzB,AApUF,iDA6IG,yBAnsBkB,AAosBlB,SAAU,CAMV,AApJH,+GAiJI,WAAU,AACV,sBAAsB,CACtB,AAnJJ,yDAuJG,qBA5sBgB,CAmtBhB,AA9JH,+HAyJI,WAAU,AACV,uBAAsB,AAEtB,UAjtBe,CAktBf,AA7JJ,6EAmKI,YAAa,CACb,AApKJ,oDA0KG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAuB,AAAvB,uBAAuB,AAEvB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAcpB,AA/LH,8EAqLI,SAAS,CAST,AA9LJ,wGAyLK,WAAU,AACV,WAAU,AACV,eAAc,AACd,eAAe,CACf,AA7LL,2DAkMG,qBAAoB,AACpB,sBAAqB,AAErB,WAAU,AACV,UAAS,AAET,gBAAe,AACf,iBAAgB,AAEhB,8BAA6B,AAE7B,2BA1wBiB,AA2wBjB,4BA3wBiB,CA4wBjB,AA/MH,4DAmNG,2BAAmB,AAAnB,oBAAmB,AACnB,qBAAsB,AAAtB,uBAAsB,AACtB,sBAAkB,AAAlB,mBAAkB,AAClB,sBAAqB,AAErB,YAAW,AACX,WAAU,AAEV,iBAAgB,AAEhB,sBAzxBe,AA0xBf,kBAAiB,AACjB,0BAA4B,AAE5B,eAAe,CAmDf,AApRH,kEAoOI,eAAc,AACd,yBAA4B,CAC5B,AAtOJ,kGAyOI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,sBAAuB,CAavB,AA5PJ,wGAkPK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eAtzBa,CAuzBb,AA3PL,gGA+PI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,eAj0Bc,CA80Bd,AAlRJ,sGAwQK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eA50Ba,CA60Bb,AAjRL,qEAuRG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,uBAAsB,AAEtB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,oBAAoB,AAEpB,YAAW,AACX,WAAU,AAEV,mBAAkB,AAClB,gBAAe,AAEf,cAr2BwB,AAs2BxB,gBAAgB,AAChB,eAAe,CAmBf,AA3TH,2EA2SI,UAAU,CACV,AA5SJ,sHAgTK,eAAe,CACf,AAjTL,sOAyTI,YAAY,CACZ,AA1TJ,wDA8TG,qBAAqB,AACrB,YAAW,AACX,WAAU,AAEV,kBAAkB,CAClB,AAnUH,+BAyUE,sBAAqB,AACrB,gCA55Be,AA65Bf,6BA75Be,AA85Bf,YAAW,AACX,kBAAiB,AACjB,mBAAiC,AACjC,gBAAgB,AAChB,UAAS,AACT,kBAAkB,AAElB,cAAe,CA4Df,AA/YF,qCAsVG,eAAc,AACd,+BAA+B,CAC/B,AAxVH,wEA6VI,kBAAiB,AACjB,kCAAkC,AAClC,mCAAmC,AACnC,6BAl7Ba,AAm7Bb,eAAgB,CAChB,AAlWJ,uDAsWG,iBAAiB,CACjB,AAvWH,uDA0WG,iBAAiB,CACjB,AA3WH,uDA8WG,iBAAiB,CACjB,AA/WH,uDAkXG,iBAAiB,CACjB,AAnXH,uDAsXG,kBAAkB,CAClB,AAvXH,uDA0XG,oBAAqB,CACrB,AA3XH,gDAgYG,qBAAqB,AACrB,QAAQ,AACR,SAAS,AACT,kBAAiB,AACjB,iCAAiC,AACjC,oCAAoC,AACpC,eAAe,AACf,8BAz9Bc,AA09Bd,qBAAqB,CACrB,AAzYH,oCA4YG,iBAAgB,AAChB,aA/9Bc,CAg+Bd,AAIH,gBACC,kBAAkB,AAClB,qBAAoB,AACpB,sBAAqB,AAErB,mBAt9B0B,AAu9B1B,sBAr9BmB,AAs9BnB,oCAAuC,AAEvC,eAx+Ba,AA0+Bb,gBAAe,AACf,iCAAiC,AAEjC,aAAc,CAqBd,AAnCD,qCAkBE,iBAAgB,AAEhB,yBAAiB,AAAjB,qBAAiB,AAAjB,gBAAiB,CAUjB,AA9BF,kEAuBG,UAAW,CACX,AAxBH,8EA2BG,eAAe,AACf,eA5+BwB,CA6+BxB,AA7BH,0CAiCE,yBAh/BkB,CAi/BlB,AAGF,4BACC,kBAAkB,AAClB,qBAAoB,AACpB,sBAAqB,AAErB,iBAAgB,AAEhB,mBA7/B0B,AA8/B1B,yBAr/BoB,AAu/BpB,eA9gCa,AAghCb,gBAAe,AACf,iCAAiC,AAEjC,aAAc,CA6Cd,AA5DD,6DAkBE,YAAW,AAEX,UAvgCgB,CA6hChB,AA1CF,oEAuBG,cA7gCwB,AA8gCxB,kBArgCkB,CA0gClB,AA7BH,4EA2BI,mCAjhCuB,CAkhCvB,AA5BJ,qEAgCG,yBA7gCkB,CA8gClB,AAjCH,mEAqCG,eAAc,AAEd,cA7hCwB,AA8hCxB,kBArhCkB,CAshClB,AAzCH,+DA6CE,YAAW,AAEX,WAliCgB,AAmiChB,iBAAkB,CAClB,AAjDF,8DAoDE,6BAxiCkB,AA0iClB,YAAW,AACX,gBAAe,AAEf,WA5iCgB,AA6iChB,eAAgB,CAChB,AAKF,4BACC,kBAAkB,AAClB,MAAK,AACL,SAAQ,AACR,OAAM,AACN,QAAO,AAEP,aAAc,CACd,AAED,uEACC,sBAAuB,CACvB,AAED,uBACC,wBAAyB,CAyKzB,AA1KD,oDAME,sBAAqB,AACrB,gCA9lCe,AA+lCf,6BA/lCe,AAgmCf,YAAW,AACX,kBAAiB,AACjB,mBAAiC,AACjC,gBAAgB,AAChB,UAAS,AACT,kBAAkB,AAElB,cAAe,CAqEf,AArFF,0DAmBG,eAAc,AACd,+BAA+B,CAC/B,AArBH,6FA0BI,kBAAiB,AACjB,kCAAkC,AAClC,mCAAmC,AACnC,6BApnCa,AAqnCb,eAAgB,CAChB,AA/BJ,+EAoCI,2BAA4B,CAC5B,AArCJ,+EA0CI,2BAA4B,CAC5B,AA3CJ,+EAgDI,2BAA4B,CAC5B,AAjDJ,+EAsDI,2BAA4B,CAC5B,AAvDJ,+EA4DI,4BAA6B,CAC7B,AA7DJ,4EAiEG,oBAAqB,CACrB,AAlEH,qEAsEG,qBAAqB,AACrB,QAAQ,AACR,SAAS,AACT,kBAAiB,AACjB,iCAAiC,AACjC,oCAAoC,AACpC,eAAe,AACf,8BApqCc,AAqqCd,qBAAqB,CACrB,AA/EH,yDAkFG,iBAAgB,AAChB,aA1qCc,CA2qCd,AApFH,mDAwFE,qBAAoB,AACpB,sBAAqB,AAErB,WAAU,AACV,UAAS,AAET,gBAAe,AACf,iBAAgB,AAEhB,8BAA6B,AAE7B,2BArqCkB,AAsqClB,4BAtqCkB,CAuqClB,AArGF,oDAyGE,2BAAmB,AAAnB,oBAAmB,AACnB,qBAAsB,AAAtB,uBAAsB,AACtB,sBAAkB,AAAlB,mBAAkB,AAClB,sBAAqB,AAErB,YAAW,AACX,WAAU,AAEV,iBAAgB,AAEhB,sBAprCgB,AAqrChB,kBAAiB,AACjB,0BAA4B,AAE5B,eAAe,CAkDf,AAzKF,0DA0HG,eAAc,AACd,yBAA4B,CAC5B,AA5HH,0FA+HG,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,sBAAuB,CAavB,AAlJH,gGAwII,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eAjtCc,CAktCd,AAjJJ,wFAqJG,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,eA5tCe,CAyuCf,AAxKH,8FA8JI,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eAvuCc,CAwuCd","file":"tabulator_modern.min.css","sourcesContent":["/* Tabulator v4.7.0 (c) Oliver Folkerd */\n\n\r\n$primary: #3759D7 !default; //the base text color from which the rest of the theme derives\r\n\r\n//Main Theme Variables\r\n$backgroundColor: #fff !default; //background color of tabulator\r\n$borderColor:#fff !default; //border to tabulator\r\n$textSize:16px !default; //table text size\r\n\r\n//header themeing\r\n$headerBackgroundColor:#fff !default; //border to tabulator\r\n$headerTextColor:$primary !default; //header text colour\r\n$headerBorderColor:#fff !default;  //header border color\r\n$headerSeperatorColor:$primary !default; //header bottom seperator color\r\n$headerMargin:4px !default; //padding round header\r\n\r\n//column header arrows\r\n$sortArrowActive: $primary !default;\r\n$sortArrowInactive: lighten($primary, 30%) !default;\r\n\r\n//row themeing\r\n$rowBackgroundColor:#f3f3f3 !default; //table row background color\r\n$rowAltBackgroundColor:#fff !default; //table row background color\r\n$rowBorderColor:#fff !default; //table border color\r\n$rowTextColor:#333 !default; //table text color\r\n$rowHoverBackground:#bbb !default; //row background color on hover\r\n\r\n$rowSelectedBackground: #9ABCEA !default; //row background color when selected\r\n$rowSelectedBackgroundHover: #769BCC !default;//row background color when selected and hovered\r\n\r\n$editBoxColor:#1D68CD !default; //border color for edit boxes\r\n$errorColor:#dd0000 !default; //error indication\r\n\r\n//footer themeing\r\n$footerBackgroundColor:#fff !default; //border to tabulator\r\n$footerTextColor:$primary !default; //footer text colour\r\n$footerBorderColor:#aaa !default; //footer border color\r\n$footerSeperatorColor:#999 !default; //footer bottom seperator color\r\n$footerActiveColor:$primary !default; //footer bottom active text color\r\n\r\n$handleWidth:10px !default; //width of the row handle\r\n$handleColor: $primary !default; //color for odd numbered rows\r\n$handleColorAlt: lighten($primary, 10%) !default; //color for even numbered rows\r\n\r\n\r\n//Tabulator Containing Element\r\n.tabulator{\r\n\tposition: relative;\r\n\tborder: 1px solid $borderColor;\r\n\tbackground-color: $backgroundColor;\r\n\toverflow:hidden;\r\n\tfont-size:$textSize;\r\n\ttext-align: left;\r\n\r\n\t-webkit-transform: translatez(0);\r\n\t-moz-transform: translatez(0);\r\n\t-ms-transform: translatez(0);\r\n\t-o-transform: translatez(0);\r\n\ttransform: translatez(0);\r\n\r\n\t&[tabulator-layout=\"fitDataFill\"]{\r\n\t\t.tabulator-tableHolder{\r\n\t\t\t.tabulator-table{\r\n\t\t\t\tmin-width:100%;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t&[tabulator-layout=\"fitDataTable\"]{\r\n\t\tdisplay: inline-block;\r\n\t}\r\n\r\n\t&.tabulator-block-select{\r\n\t\tuser-select: none;\r\n\t}\r\n\r\n\t//column header containing element\r\n\t.tabulator-header{\r\n\t\tposition:relative;\r\n\t\tbox-sizing: border-box;\r\n\r\n\t\twidth:100%;\r\n\r\n\t\tborder-bottom:3px solid $headerSeperatorColor;\r\n\t\tmargin-bottom:4px;\r\n\t\tbackground-color: $headerBackgroundColor;\r\n\t\tcolor: $headerTextColor;\r\n\t\tfont-weight:bold;\r\n\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:hidden;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\tpadding-left:$handleWidth;\r\n\r\n\t\tfont-size: 1.1em;\r\n\r\n\t\t&.tabulator-header-hidden{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\t//individual column header element\r\n\t\t.tabulator-col{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tposition:relative;\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tborder-right:2px solid $headerBorderColor;\r\n\t\t\tbackground-color: $headerBackgroundColor;\r\n\t\t\ttext-align:left;\r\n\t\t\tvertical-align: bottom;\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&.tabulator-moving{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tborder:1px solid  $headerSeperatorColor;\r\n\t\t\t\tbackground:darken($headerBackgroundColor, 10%);\r\n\t\t\t\tpointer-events: none;\r\n\t\t\t}\r\n\r\n\t\t\t//hold content of column header\r\n\t\t\t.tabulator-col-content{\r\n\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tpadding:4px;\r\n\r\n\t\t\t\t//header menu button\r\n\t\t\t\t.tabulator-header-menu-button{\r\n\t\t\t\t\tpadding: 0 8px;\r\n\r\n\t\t\t\t\t&:hover{\r\n\t\t\t\t\t\tcursor: pointer;\r\n\t\t\t\t\t\topacity: .6;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//hold title of column header\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\twhite-space: nowrap;\r\n\t\t\t\t\toverflow: hidden;\r\n\t\t\t\t\ttext-overflow: ellipsis;\r\n\t\t\t\t\tvertical-align:bottom;\r\n\r\n\t\t\t\t\t//element to hold title editor\r\n\t\t\t\t\t.tabulator-title-editor{\r\n\t\t\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\t\tborder:1px solid $primary;\r\n\r\n\t\t\t\t\t\tpadding:1px;\r\n\r\n\t\t\t\t\t\tbackground: #fff;\r\n\r\n\t\t\t\t\t\tfont-size: 1em;\r\n\t\t\t\t\t\tcolor: $primary;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//column sorter arrow\r\n\t\t\t\t.tabulator-arrow{\r\n\t\t\t\t\tdisplay: inline-block;\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\ttop:9px;\r\n\t\t\t\t\tright:8px;\r\n\t\t\t\t\twidth: 0;\r\n\t\t\t\t\theight: 0;\r\n\t\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t//complex header column group\r\n\t\t\t&.tabulator-col-group{\r\n\r\n\t\t\t\t//gelement to hold sub columns in column group\r\n\t\t\t\t.tabulator-col-group-cols{\r\n\t\t\t\t\tposition:relative;\r\n\t\t\t\t\tdisplay: flex;\r\n\r\n\t\t\t\t\tborder-top:2px solid $headerSeperatorColor;\r\n\t\t\t\t\toverflow: hidden;\r\n\r\n\t\t\t\t\tmargin-right:-1px;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\t\t\t//hide left resize handle on first column\r\n\t\t\t&:first-child{\r\n\t\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\t\t\t//header filter containing element\r\n\t\t\t.tabulator-header-filter{\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\tmargin-top:2px;\r\n\t\t\t\twidth:100%;\r\n\t\t\t\ttext-align: center;\r\n\r\n\t\t\t\t//styling adjustment for inbuilt editors\r\n\t\t\t\ttextarea{\r\n\t\t\t\t\theight:auto !important;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsvg{\r\n\t\t\t\t\tmargin-top: 3px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tinput{\r\n\t\t\t\t\t&::-ms-clear {\r\n\t\t\t\t\t\twidth : 0;\r\n\t\t\t\t\t\theight: 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//styling child elements for sortable columns\r\n\t\t\t&.tabulator-sortable{\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tpadding-right:25px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground-color:darken($headerBackgroundColor, 10%);\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\t&[aria-sort=\"none\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"asc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowActive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"desc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\t\t\tborder-bottom: none;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t&.tabulator-col-vertical{\r\n\t\t\t\t.tabulator-col-content{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\twriting-mode: vertical-rl;\r\n\t\t\t\t\t\ttext-orientation: mixed;\r\n\r\n\t\t\t\t\t\tdisplay:flex;\r\n\t\t\t\t\t\talign-items:center;\r\n\t\t\t\t\t\tjustify-content:center;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\ttransform: rotate(180deg);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-sortable{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\tpadding-top:20px;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\t\tpadding-bottom:20px;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t.tabulator-arrow{\r\n\t\t\t\t\t\tright:calc(50% - 6px);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t.tabulator-frozen{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\tposition: absolute;\r\n\r\n\t\t\t// background-color: inherit;\r\n\r\n\t\t\tz-index: 10;\r\n\r\n\t\t\t&.tabulator-frozen-left{\r\n\t\t\t\tpadding-left: $handleWidth;\r\n\r\n\t\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t&.tabulator-frozen-right{\r\n\t\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tmin-width:600%;\r\n\r\n\t\t\tborder-top:2px solid $headerSeperatorColor !important;\r\n\r\n\t\t\tbackground:lighten($headerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tpadding-left: 0 !important;\r\n\r\n\t\t\t\tbackground:lighten($headerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.tabulator-cell{\r\n\t\t\t\t\tbackground:none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\t\t\tborder-bottom:1px solid $headerBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\t\t}\r\n\r\n\t\t.tabulator-frozen-rows-holder{\r\n\t\t\tmin-width:600%;\r\n\r\n\t\t\t&:empty{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//scrolling element to hold table\r\n\t.tabulator-tableHolder{\r\n\t\tposition:relative;\r\n\t\twidth:100%;\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:auto;\r\n\t\t-webkit-overflow-scrolling: touch;\r\n\r\n\t\t&:focus{\r\n\t\t\toutline: none;\r\n\t\t}\r\n\r\n\t\t//default placeholder element\r\n\t\t.tabulator-placeholder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t&[tabulator-render-mode=\"virtual\"]{\r\n\t\t\t\tmin-height:100%;\r\n\t\t\t\tmin-width:100%;\r\n\t\t\t}\r\n\r\n\t\t\twidth:100%;\r\n\r\n\t\t\tspan{\r\n\t\t\t\tdisplay: inline-block;\r\n\r\n\t\t\t\tmargin:0 auto;\r\n\t\t\t\tpadding:10px;\r\n\r\n\t\t\t\tcolor:$primary;\r\n\t\t\t\tfont-weight: bold;\r\n\t\t\t\tfont-size: 20px;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//element to hold table rows\r\n\t\t.tabulator-table{\r\n\t\t\tposition:relative;\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tbackground-color:$rowBackgroundColor;\r\n\t\t\twhite-space: nowrap;\r\n\t\t\toverflow:visible;\r\n\t\t\tcolor:$rowTextColor;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\t&.tabulator-calcs{\r\n\t\t\t\t\tfont-weight: bold;\r\n\t\t\t\t\tbackground:darken($rowAltBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t\t&.tabulator-calcs-top{\r\n\t\t\t\t\t\tborder-bottom:2px solid $headerSeperatorColor;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-calcs-bottom{\r\n\t\t\t\t\t\tborder-top:2px solid $headerSeperatorColor;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//column resize handles\r\n\t.tabulator-col-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\ttop:0;\r\n\t\tbottom:0;\r\n\t\twidth:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\tleft:0;\r\n\t\t\tright:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ew-resize;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//footer element\r\n\t.tabulator-footer{\r\n\t\tpadding:5px 10px;\r\n\t\tborder-top:1px solid $footerSeperatorColor;\r\n\t\tbackground-color: $footerBackgroundColor;\r\n\t\ttext-align:right;\r\n\t\tcolor: $footerTextColor;\r\n\t\tfont-weight:bold;\r\n\t\twhite-space:nowrap;\r\n\t\tuser-select:none;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\twidth:calc(100% + 20px);\r\n\t\t\tmargin:-5px -10px 5px -10px;\r\n\r\n\t\t\ttext-align: left;\r\n\r\n\t\t\tbackground:lighten($footerBackgroundColor, 5%) !important;\r\n\r\n\t\t\tborder-top:3px solid $headerSeperatorColor !important;\r\n\t\t\tborder-bottom:2px solid $headerSeperatorColor !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:lighten($footerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.tabulator-cell{\r\n\t\t\t\t\tbackground:none;\r\n\r\n\t\t\t\t\t&:first-child{\r\n\t\t\t\t\t\tborder-left: $handleWidth solid transparent;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-bottom:1px solid $rowBorderColor;\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&:only-child{\r\n\t\t\t\tmargin-bottom:-5px;\r\n\t\t\t\tborder-bottom:none;\r\n\t\t\t\tborder-bottom:none !important;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-paginator{\r\n\t\t\tcolor: $footerTextColor;\r\n\t\t\tfont-family:inherit;\r\n\t\t\tfont-weight:inherit;\r\n\t\t\tfont-size:inherit;\r\n\t\t}\r\n\r\n\t\t//page size select element\r\n\t\t.tabulator-page-size{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 5px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-pages{\r\n\t\t\tmargin:0 7px;\r\n\t\t}\r\n\r\n\t\t//pagination button\r\n\t\t.tabulator-page{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 2px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\r\n\t\t\tbackground:rgba(255,255,255,.2);\r\n\r\n\t\t\t&.active{\r\n\t\t\t\tcolor:$footerActiveColor;\r\n\t\t\t}\r\n\r\n\t\t\t&:disabled{\r\n\t\t\t\topacity:.5;\r\n\t\t\t}\r\n\r\n\t\t\t&:not(.disabled){\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground:rgba(0,0,0,.2);\r\n\t\t\t\t\tcolor:#fff;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//holding div that contains loader and covers tabulator element to prevent interaction\r\n\t.tabulator-loader{\r\n\t\tposition:absolute;\r\n\t\tdisplay: flex;\r\n\t\talign-items:center;\r\n\r\n\t\ttop:0;\r\n\t\tleft:0;\r\n\t\tz-index:100;\r\n\r\n\t\theight:100%;\r\n\t\twidth:100%;\r\n\t\tbackground:rgba(0,0,0,.4);\r\n\t\ttext-align:center;\r\n\r\n\t\t//loading message element\r\n\t\t.tabulator-loader-msg{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 auto;\r\n\t\t\tpadding:10px 20px;\r\n\r\n\t\t\tborder-radius:10px;\r\n\r\n\t\t\tbackground:#fff;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:16px;\r\n\r\n\t\t\t//loading message\r\n\t\t\t&.tabulator-loading{\r\n\t\t\t\tborder:4px solid #333;\r\n\t\t\t\tcolor:#000;\r\n\t\t\t}\r\n\r\n\t\t\t//error message\r\n\t\t\t&.tabulator-error{\r\n\t\t\t\tborder:4px solid #D00;\r\n\t\t\t\tcolor:#590000;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n//row element\r\n.tabulator-row{\r\n\tposition: relative;\r\n\tbox-sizing: border-box;\r\n\r\n\tbox-sizing: border-box;\r\n\tmin-height:$textSize + ($headerMargin * 2);\r\n\r\n\t// background-color: $handleColor;\r\n\r\n\t// padding-left: $handleWidth !important;\r\n\r\n\tmargin-bottom: 2px;\r\n\r\n\t.tabulator-cell{\r\n\t\t&:first-child{\r\n\t\t\tborder-left: $handleWidth solid $handleColor;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t&:nth-child(even){\r\n\t\tbackground-color: $handleColorAlt;\r\n\r\n\t\t.tabulator-cell{\r\n\t\t\tbackground-color: $rowAltBackgroundColor;\r\n\r\n\t\t\t&:first-child{\r\n\t\t\t\tborder-left: $handleWidth solid $handleColorAlt;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t&.tabulator-selectable:hover{\r\n\t\tcursor: pointer;\r\n\r\n\t\t.tabulator-cell{\r\n\t\t\tbackground-color:$rowHoverBackground;\r\n\t\t}\r\n\t}\r\n\r\n\t&.tabulator-selected{\r\n\t\t.tabulator-cell{\r\n\t\t\tbackground-color:$rowSelectedBackground;\r\n\t\t}\r\n\t}\r\n\r\n\t&.tabulator-selected:hover{\r\n\t\t.tabulator-cell{\r\n\t\t\tbackground-color:$rowSelectedBackgroundHover;\r\n\t\t\tcursor: pointer;\r\n\t\t}\r\n\t}\r\n\r\n\t&.tabulator-moving{\r\n\t\tposition: absolute;\r\n\r\n\t\tborder-top:1px solid  $rowBorderColor;\r\n\t\tborder-bottom:1px solid  $rowBorderColor;\r\n\r\n\t\tpointer-events: none !important;\r\n\t\tz-index:15;\r\n\t}\r\n\r\n\t//row resize handles\r\n\t.tabulator-row-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\tbottom:0;\r\n\t\tleft:0;\r\n\t\theight:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\ttop:0;\r\n\t\t\tbottom:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ns-resize;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-frozen{\r\n\t\tdisplay: inline-block;\r\n\t\tposition: absolute;\r\n\r\n\t\tbackground-color: inherit;\r\n\r\n\t\tz-index: 10;\r\n\r\n\t\t&.tabulator-frozen-left{\r\n\t\t\t// padding-left: $handleWidth;\r\n\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t&.tabulator-frozen-right{\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-responsive-collapse{\r\n\t\tbox-sizing:border-box;\r\n\r\n\t\tpadding:5px;\r\n\r\n\t\tborder-top:1px solid $rowBorderColor;\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\t&:empty{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\ttable{\r\n\t\t\tfont-size:$textSize;\r\n\r\n\t\t\ttr{\r\n\t\t\t\ttd{\r\n\t\t\t\t\tposition: relative;\r\n\r\n\t\t\t\t\t&:first-of-type{\r\n\t\t\t\t\t\tpadding-right:10px;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//cell element\r\n\t.tabulator-cell{\r\n\t\tdisplay:inline-block;\r\n\t\tposition: relative;\r\n\t\tbox-sizing:border-box;\r\n\t\tpadding:6px 4px;\r\n\t\tborder-right:2px solid $rowBorderColor;\r\n\t\tvertical-align:middle;\r\n\t\twhite-space:nowrap;\r\n\t\toverflow:hidden;\r\n\t\ttext-overflow:ellipsis;\r\n\r\n\t\tbackground-color: $rowBackgroundColor;\r\n\r\n\t\t&.tabulator-editing{\r\n\t\t\tborder:1px solid  $editBoxColor;\r\n\t\t\tpadding: 0;\r\n\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-validation-fail{\r\n\t\t\tborder:1px solid $errorColor;\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\r\n\t\t\t\tcolor: $errorColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//hide left resize handle on first column\r\n\t\t&:first-child{\r\n\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//movable row handle\r\n\t\t&.tabulator-row-handle{\r\n\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\t\t\tjustify-content: center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\t//handle holder\r\n\t\t\t.tabulator-row-handle-box{\r\n\t\t\t\twidth:80%;\r\n\r\n\t\t\t\t//Hamburger element\r\n\t\t\t\t.tabulator-row-handle-bar{\r\n\t\t\t\t\twidth:100%;\r\n\t\t\t\t\theight:3px;\r\n\t\t\t\t\tmargin-top:2px;\r\n\t\t\t\t\tbackground:#666;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-branch{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:9px;\r\n\t\t\twidth:7px;\r\n\r\n\t\t\tmargin-top:-9px;\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder-bottom-left-radius:1px;\r\n\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-control{\r\n\r\n\t\t\tdisplay:inline-flex;\r\n\t\t\tjustify-content:center;\r\n\t\t\talign-items:center;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:11px;\r\n\t\t\twidth:11px;\r\n\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder:1px solid $rowTextColor;\r\n\t\t\tborder-radius:2px;\r\n\t\t\tbackground:rgba(0, 0, 0, .1);\r\n\r\n\t\t\toverflow:hidden;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\tcursor:pointer;\r\n\t\t\t\tbackground:rgba(0, 0, 0, .2);\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-collapse{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: transparent;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-expand{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: $rowTextColor;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t.tabulator-responsive-collapse-toggle{\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\t\t\tjustify-content:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\theight:15px;\r\n\t\t\twidth:15px;\r\n\r\n\t\t\tborder-radius:20px;\r\n\t\t\tbackground:#666;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:1.1em;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\topacity:.7;\r\n\t\t\t}\r\n\r\n\t\t\t&.open{\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\t\tdisplay:initial;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-open{\r\n\t\t\t\t\tdisplay:none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\tdisplay:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-traffic-light{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\theight:14px;\r\n\t\t\twidth:14px;\r\n\r\n\t\t\tborder-radius:14px;\r\n\t\t}\r\n\t}\r\n\r\n\t//row grouping element\r\n\t&.tabulator-group{\r\n\r\n\t\tbox-sizing:border-box;\r\n\t\tborder-bottom:2px solid $primary;\r\n\t\tborder-top:2px solid $primary;\r\n\t\tpadding:5px;\r\n\t\tpadding-left:10px;\r\n\t\tbackground:lighten($primary, 20%);\r\n\t\tfont-weight:bold;\r\n\t\tcolor:fff;\r\n\t\tmargin-bottom: 2px;\r\n\r\n\t\tmin-width: 100%;\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\t\t\tbackground-color:rgba(0,0,0,.1);\r\n\t\t}\r\n\r\n\r\n\t\t&.tabulator-group-visible{\r\n\t\t\t.tabulator-arrow{\r\n\t\t\t\tmargin-right:10px;\r\n\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\tborder-bottom: 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-1{\r\n\t\t\tpadding-left:30px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-2{\r\n\t\t\tpadding-left:50px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-3{\r\n\t\t\tpadding-left:70px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-4{\r\n\t\t\tpadding-left:90px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-5{\r\n\t\t\tpadding-left:110px;\r\n\t\t}\r\n\r\n\t\t.tabulator-group-toggle{\r\n\t\t\tdisplay: inline-block;\r\n\t\t}\r\n\r\n\r\n\t\t//sorting arrow\r\n\t\t.tabulator-arrow{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t\tmargin-right:16px;\r\n\t\t\tborder-top: 6px solid transparent;\r\n\t\t\tborder-bottom: 6px solid transparent;\r\n\t\t\tborder-right: 0;\r\n\t\t\tborder-left: 6px solid $sortArrowActive;\r\n\t\t\tvertical-align:middle;\r\n\t\t}\r\n\r\n\t\tspan{\r\n\t\t\tmargin-left:10px;\r\n\t\t\tcolor:$primary;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n.tabulator-menu{\r\n\tposition: absolute;\r\n\tdisplay:inline-block;\r\n\tbox-sizing:border-box;\r\n\r\n\tbackground:$rowBackgroundColor;\r\n\tborder:1px solid $rowBorderColor;\r\n\tbox-shadow: 0 0 5px 0 rgba(0, 0, 0, .2);\r\n\r\n\tfont-size:$textSize;\r\n\r\n\toverflow-y:auto;\r\n\t-webkit-overflow-scrolling: touch;\r\n\r\n\tz-index: 10000;\r\n\r\n\t.tabulator-menu-item{\r\n\r\n\t\tpadding:5px 10px;\r\n\r\n\t\tuser-select: none;\r\n\r\n\t\t&.tabulator-menu-item-disabled{\r\n\t\t\topacity: .5;\r\n\t\t}\r\n\r\n\t\t&:not(.tabulator-menu-item-disabled):hover{\r\n\t\t\tcursor: pointer;\r\n\t\t\tbackground: $rowAltBackgroundColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-menu-separator{\r\n\t\tborder-top:1px solid $rowBorderColor;\r\n\t}\r\n}\r\n\r\n.tabulator-edit-select-list{\r\n\tposition: absolute;\r\n\tdisplay:inline-block;\r\n\tbox-sizing:border-box;\r\n\r\n\tmax-height:200px;\r\n\r\n\tbackground:$rowBackgroundColor;\r\n\tborder:1px solid $editBoxColor;\r\n\r\n\tfont-size:$textSize;\r\n\r\n\toverflow-y:auto;\r\n\t-webkit-overflow-scrolling: touch;\r\n\r\n\tz-index: 10000;\r\n\r\n\t.tabulator-edit-select-list-item{\r\n\t\tpadding:4px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\r\n\t\t&.active{\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tbackground:$editBoxColor;\r\n\r\n\t\t\t&.focused{\r\n\t\t\t\toutline:1px solid rgba($rowBackgroundColor, .5);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.focused{\r\n\t\t\toutline:1px solid $editBoxColor;\r\n\t\t}\r\n\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tbackground:$editBoxColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-edit-select-list-notice{\r\n\t\tpadding:4px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\t\ttext-align: center;\r\n\t}\r\n\r\n\t.tabulator-edit-select-list-group{\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\tpadding:4px;\r\n\t\tpadding-top:6px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\t\tfont-weight:bold;\r\n\t}\r\n}\r\n\r\n// Table print styling\r\n\r\n.tabulator-print-fullscreen{\r\n\tposition: absolute;\r\n\ttop:0;\r\n\tbottom:0;\r\n\tleft:0;\r\n\tright:0;\r\n\r\n\tz-index: 10000;\r\n}\r\n\r\nbody.tabulator-print-fullscreen-hide>*:not(.tabulator-print-fullscreen){\r\n\tdisplay:none !important;\r\n}\r\n\r\n.tabulator-print-table{\r\n\tborder-collapse: collapse;\r\n\r\n\t//row grouping element\r\n\t.tabulator-print-table-group{\r\n\r\n\t\tbox-sizing:border-box;\r\n\t\tborder-bottom:2px solid $primary;\r\n\t\tborder-top:2px solid $primary;\r\n\t\tpadding:5px;\r\n\t\tpadding-left:10px;\r\n\t\tbackground:lighten($primary, 20%);\r\n\t\tfont-weight:bold;\r\n\t\tcolor:fff;\r\n\t\tmargin-bottom: 2px;\r\n\r\n\t\tmin-width: 100%;\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\t\t\tbackground-color:rgba(0,0,0,.1);\r\n\t\t}\r\n\r\n\r\n\t\t&.tabulator-group-visible{\r\n\t\t\t.tabulator-arrow{\r\n\t\t\t\tmargin-right:10px;\r\n\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\tborder-bottom: 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-1{\r\n\t\t\ttd{\r\n\t\t\t\tpadding-left:30px !important;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-2{\r\n\t\t\ttd{\r\n\t\t\t\tpadding-left:50px !important;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-3{\r\n\t\t\ttd{\r\n\t\t\t\tpadding-left:70px !important;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-4{\r\n\t\t\ttd{\r\n\t\t\t\tpadding-left:90px !important;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-5{\r\n\t\t\ttd{\r\n\t\t\t\tpadding-left:110px !important;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-group-toggle{\r\n\t\t\tdisplay: inline-block;\r\n\t\t}\r\n\r\n\t\t//sorting arrow\r\n\t\t.tabulator-arrow{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t\tmargin-right:16px;\r\n\t\t\tborder-top: 6px solid transparent;\r\n\t\t\tborder-bottom: 6px solid transparent;\r\n\t\t\tborder-right: 0;\r\n\t\t\tborder-left: 6px solid $sortArrowActive;\r\n\t\t\tvertical-align:middle;\r\n\t\t}\r\n\r\n\t\tspan{\r\n\t\t\tmargin-left:10px;\r\n\t\t\tcolor:$primary;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-data-tree-branch{\r\n\t\tdisplay:inline-block;\r\n\t\tvertical-align:middle;\r\n\r\n\t\theight:9px;\r\n\t\twidth:7px;\r\n\r\n\t\tmargin-top:-9px;\r\n\t\tmargin-right:5px;\r\n\r\n\t\tborder-bottom-left-radius:1px;\r\n\r\n\t\tborder-left:2px solid $rowBorderColor;\r\n\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t}\r\n\r\n\t.tabulator-data-tree-control{\r\n\r\n\t\tdisplay:inline-flex;\r\n\t\tjustify-content:center;\r\n\t\talign-items:center;\r\n\t\tvertical-align:middle;\r\n\r\n\t\theight:11px;\r\n\t\twidth:11px;\r\n\r\n\t\tmargin-right:5px;\r\n\r\n\t\tborder:1px solid $rowTextColor;\r\n\t\tborder-radius:2px;\r\n\t\tbackground:rgba(0, 0, 0, .1);\r\n\r\n\t\toverflow:hidden;\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\t\t\tbackground:rgba(0, 0, 0, .2);\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-control-collapse{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tposition: relative;\r\n\r\n\t\t\theight: 7px;\r\n\t\t\twidth: 1px;\r\n\r\n\t\t\tbackground: transparent;\r\n\r\n\t\t\t&:after {\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tcontent: \"\";\r\n\t\t\t\tleft: -3px;\r\n\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\theight: 1px;\r\n\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-control-expand{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tposition: relative;\r\n\r\n\t\t\theight: 7px;\r\n\t\t\twidth: 1px;\r\n\r\n\t\t\tbackground: $rowTextColor;\r\n\r\n\t\t\t&:after {\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tcontent: \"\";\r\n\t\t\t\tleft: -3px;\r\n\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\theight: 1px;\r\n\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n"]}
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/css/tabulator_simple.css b/app/static/vendors/tabulator/css/tabulator_simple.css
deleted file mode 100644 (file)
index fb660a9..0000000
+++ /dev/null
@@ -1,992 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-.tabulator {
-  position: relative;
-  background-color: #fff;
-  overflow: hidden;
-  font-size: 14px;
-  text-align: left;
-  -ms-transform: translatez(0);
-  transform: translatez(0);
-}
-
-.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableHolder .tabulator-table {
-  min-width: 100%;
-}
-
-.tabulator[tabulator-layout="fitDataTable"] {
-  display: inline-block;
-}
-
-.tabulator.tabulator-block-select {
-  -webkit-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-}
-
-.tabulator .tabulator-header {
-  position: relative;
-  box-sizing: border-box;
-  width: 100%;
-  border-bottom: 1px solid #999;
-  background-color: #fff;
-  color: #555;
-  font-weight: bold;
-  white-space: nowrap;
-  overflow: hidden;
-  -moz-user-select: none;
-  -khtml-user-select: none;
-  -webkit-user-select: none;
-  -o-user-select: none;
-}
-
-.tabulator .tabulator-header.tabulator-header-hidden {
-  display: none;
-}
-
-.tabulator .tabulator-header .tabulator-col {
-  display: inline-block;
-  position: relative;
-  box-sizing: border-box;
-  border-right: 1px solid #ddd;
-  background-color: #fff;
-  text-align: left;
-  vertical-align: bottom;
-  overflow: hidden;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-moving {
-  position: absolute;
-  border: 1px solid #999;
-  background: #e6e6e6;
-  pointer-events: none;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-col-content {
-  box-sizing: border-box;
-  position: relative;
-  padding: 4px;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button {
-  padding: 0 8px;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button:hover {
-  cursor: pointer;
-  opacity: .6;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {
-  box-sizing: border-box;
-  width: 100%;
-  white-space: nowrap;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  vertical-align: bottom;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {
-  box-sizing: border-box;
-  width: 100%;
-  border: 1px solid #999;
-  padding: 1px;
-  background: #fff;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {
-  display: inline-block;
-  position: absolute;
-  top: 9px;
-  right: 8px;
-  width: 0;
-  height: 0;
-  border-left: 6px solid transparent;
-  border-right: 6px solid transparent;
-  border-bottom: 6px solid #bbb;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {
-  position: relative;
-  display: -ms-flexbox;
-  display: flex;
-  border-top: 1px solid #ddd;
-  overflow: hidden;
-  margin-right: -1px;
-}
-
-.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev {
-  display: none;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-header-filter {
-  position: relative;
-  box-sizing: border-box;
-  margin-top: 2px;
-  width: 100%;
-  text-align: center;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {
-  height: auto !important;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {
-  margin-top: 3px;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {
-  width: 0;
-  height: 0;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {
-  padding-right: 25px;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover {
-  cursor: pointer;
-  background-color: #e6e6e6;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-arrow {
-  border-top: none;
-  border-bottom: 6px solid #bbb;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="asc"] .tabulator-col-content .tabulator-arrow {
-  border-top: none;
-  border-bottom: 6px solid #666;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="desc"] .tabulator-col-content .tabulator-arrow {
-  border-top: 6px solid #666;
-  border-bottom: none;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {
-  -ms-writing-mode: tb-rl;
-      writing-mode: vertical-rl;
-  text-orientation: mixed;
-  display: -ms-flexbox;
-  display: flex;
-  -ms-flex-align: center;
-      align-items: center;
-  -ms-flex-pack: center;
-      justify-content: center;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {
-  -ms-transform: rotate(180deg);
-      transform: rotate(180deg);
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {
-  padding-right: 0;
-  padding-top: 20px;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {
-  padding-right: 0;
-  padding-bottom: 20px;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-arrow {
-  right: calc(50% - 6px);
-}
-
-.tabulator .tabulator-header .tabulator-frozen {
-  display: inline-block;
-  position: absolute;
-  z-index: 10;
-}
-
-.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {
-  border-right: 2px solid #ddd;
-}
-
-.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {
-  border-left: 2px solid #ddd;
-}
-
-.tabulator .tabulator-header .tabulator-calcs-holder {
-  box-sizing: border-box;
-  min-width: 600%;
-  background: #f2f2f2 !important;
-  border-top: 1px solid #ddd;
-  border-bottom: 1px solid #999;
-  overflow: hidden;
-}
-
-.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {
-  background: #f2f2f2 !important;
-}
-
-.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {
-  display: none;
-}
-
-.tabulator .tabulator-header .tabulator-frozen-rows-holder {
-  min-width: 600%;
-}
-
-.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {
-  display: none;
-}
-
-.tabulator .tabulator-tableHolder {
-  position: relative;
-  width: 100%;
-  white-space: nowrap;
-  overflow: auto;
-  -webkit-overflow-scrolling: touch;
-}
-
-.tabulator .tabulator-tableHolder:focus {
-  outline: none;
-}
-
-.tabulator .tabulator-tableHolder .tabulator-placeholder {
-  box-sizing: border-box;
-  display: -ms-flexbox;
-  display: flex;
-  -ms-flex-align: center;
-      align-items: center;
-  width: 100%;
-}
-
-.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode="virtual"] {
-  min-height: 100%;
-  min-width: 100%;
-}
-
-.tabulator .tabulator-tableHolder .tabulator-placeholder span {
-  display: inline-block;
-  margin: 0 auto;
-  padding: 10px;
-  color: #000;
-  font-weight: bold;
-  font-size: 20px;
-}
-
-.tabulator .tabulator-tableHolder .tabulator-table {
-  position: relative;
-  display: inline-block;
-  background-color: #fff;
-  white-space: nowrap;
-  overflow: visible;
-  color: #333;
-}
-
-.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs {
-  font-weight: bold;
-  background: #f2f2f2 !important;
-}
-
-.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {
-  border-bottom: 2px solid #ddd;
-}
-
-.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {
-  border-top: 2px solid #ddd;
-}
-
-.tabulator .tabulator-col-resize-handle {
-  position: absolute;
-  right: 0;
-  top: 0;
-  bottom: 0;
-  width: 5px;
-}
-
-.tabulator .tabulator-col-resize-handle.prev {
-  left: 0;
-  right: auto;
-}
-
-.tabulator .tabulator-col-resize-handle:hover {
-  cursor: ew-resize;
-}
-
-.tabulator .tabulator-footer {
-  padding: 5px 10px;
-  border-top: 1px solid #999;
-  background-color: #fff;
-  text-align: right;
-  color: #555;
-  font-weight: bold;
-  white-space: nowrap;
-  -ms-user-select: none;
-      user-select: none;
-  -moz-user-select: none;
-  -khtml-user-select: none;
-  -webkit-user-select: none;
-  -o-user-select: none;
-}
-
-.tabulator .tabulator-footer .tabulator-calcs-holder {
-  box-sizing: border-box;
-  width: calc(100% + 20px);
-  margin: -5px -10px 5px -10px;
-  text-align: left;
-  background: #f2f2f2 !important;
-  border-bottom: 1px solid #fff;
-  border-top: 1px solid #ddd;
-  overflow: hidden;
-}
-
-.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {
-  background: #f2f2f2 !important;
-}
-
-.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {
-  display: none;
-}
-
-.tabulator .tabulator-footer .tabulator-calcs-holder:only-child {
-  margin-bottom: -5px;
-  border-bottom: none;
-}
-
-.tabulator .tabulator-footer .tabulator-paginator {
-  color: #555;
-  font-family: inherit;
-  font-weight: inherit;
-  font-size: inherit;
-}
-
-.tabulator .tabulator-footer .tabulator-page-size {
-  display: inline-block;
-  margin: 0 5px;
-  padding: 2px 5px;
-  border: 1px solid #aaa;
-  border-radius: 3px;
-}
-
-.tabulator .tabulator-footer .tabulator-pages {
-  margin: 0 7px;
-}
-
-.tabulator .tabulator-footer .tabulator-page {
-  display: inline-block;
-  margin: 0 2px;
-  padding: 2px 5px;
-  border: 1px solid #aaa;
-  border-radius: 3px;
-  background: rgba(255, 255, 255, 0.2);
-}
-
-.tabulator .tabulator-footer .tabulator-page.active {
-  color: #d00;
-}
-
-.tabulator .tabulator-footer .tabulator-page:disabled {
-  opacity: .5;
-}
-
-.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {
-  cursor: pointer;
-  background: rgba(0, 0, 0, 0.2);
-  color: #fff;
-}
-
-.tabulator .tabulator-loader {
-  position: absolute;
-  display: -ms-flexbox;
-  display: flex;
-  -ms-flex-align: center;
-      align-items: center;
-  top: 0;
-  left: 0;
-  z-index: 100;
-  height: 100%;
-  width: 100%;
-  background: rgba(0, 0, 0, 0.4);
-  text-align: center;
-}
-
-.tabulator .tabulator-loader .tabulator-loader-msg {
-  display: inline-block;
-  margin: 0 auto;
-  padding: 10px 20px;
-  border-radius: 10px;
-  background: #fff;
-  font-weight: bold;
-  font-size: 16px;
-}
-
-.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading {
-  border: 4px solid #333;
-  color: #000;
-}
-
-.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error {
-  border: 4px solid #D00;
-  color: #590000;
-}
-
-.tabulator-row {
-  position: relative;
-  box-sizing: border-box;
-  min-height: 22px;
-  background-color: #fff;
-  border-bottom: 1px solid #ddd;
-}
-
-.tabulator-row:nth-child(even) {
-  background-color: #fff;
-}
-
-.tabulator-row.tabulator-selectable:hover {
-  background-color: #bbb;
-  cursor: pointer;
-}
-
-.tabulator-row.tabulator-selected {
-  background-color: #9ABCEA;
-}
-
-.tabulator-row.tabulator-selected:hover {
-  background-color: #769BCC;
-  cursor: pointer;
-}
-
-.tabulator-row.tabulator-moving {
-  position: absolute;
-  border-top: 1px solid #ddd;
-  border-bottom: 1px solid #ddd;
-  pointer-events: none !important;
-  z-index: 15;
-}
-
-.tabulator-row .tabulator-row-resize-handle {
-  position: absolute;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  height: 5px;
-}
-
-.tabulator-row .tabulator-row-resize-handle.prev {
-  top: 0;
-  bottom: auto;
-}
-
-.tabulator-row .tabulator-row-resize-handle:hover {
-  cursor: ns-resize;
-}
-
-.tabulator-row .tabulator-frozen {
-  display: inline-block;
-  position: absolute;
-  background-color: inherit;
-  z-index: 10;
-}
-
-.tabulator-row .tabulator-frozen.tabulator-frozen-left {
-  border-right: 2px solid #ddd;
-}
-
-.tabulator-row .tabulator-frozen.tabulator-frozen-right {
-  border-left: 2px solid #ddd;
-}
-
-.tabulator-row .tabulator-responsive-collapse {
-  box-sizing: border-box;
-  padding: 5px;
-  border-top: 1px solid #ddd;
-  border-bottom: 1px solid #ddd;
-}
-
-.tabulator-row .tabulator-responsive-collapse:empty {
-  display: none;
-}
-
-.tabulator-row .tabulator-responsive-collapse table {
-  font-size: 14px;
-}
-
-.tabulator-row .tabulator-responsive-collapse table tr td {
-  position: relative;
-}
-
-.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {
-  padding-right: 10px;
-}
-
-.tabulator-row .tabulator-cell {
-  display: inline-block;
-  position: relative;
-  box-sizing: border-box;
-  padding: 4px;
-  border-right: 1px solid #ddd;
-  vertical-align: middle;
-  white-space: nowrap;
-  overflow: hidden;
-  text-overflow: ellipsis;
-}
-
-.tabulator-row .tabulator-cell:last-of-type {
-  border-right: none;
-}
-
-.tabulator-row .tabulator-cell.tabulator-editing {
-  border: 1px solid #1D68CD;
-  padding: 0;
-}
-
-.tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {
-  border: 1px;
-  background: transparent;
-}
-
-.tabulator-row .tabulator-cell.tabulator-validation-fail {
-  border: 1px solid #dd0000;
-}
-
-.tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {
-  border: 1px;
-  background: transparent;
-  color: #dd0000;
-}
-
-.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev {
-  display: none;
-}
-
-.tabulator-row .tabulator-cell.tabulator-row-handle {
-  display: -ms-inline-flexbox;
-  display: inline-flex;
-  -ms-flex-align: center;
-      align-items: center;
-  -moz-user-select: none;
-  -khtml-user-select: none;
-  -webkit-user-select: none;
-  -o-user-select: none;
-}
-
-.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {
-  width: 80%;
-}
-
-.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {
-  width: 100%;
-  height: 3px;
-  margin-top: 2px;
-  background: #666;
-}
-
-.tabulator-row .tabulator-cell .tabulator-data-tree-branch {
-  display: inline-block;
-  vertical-align: middle;
-  height: 9px;
-  width: 7px;
-  margin-top: -9px;
-  margin-right: 5px;
-  border-bottom-left-radius: 1px;
-  border-left: 2px solid #ddd;
-  border-bottom: 2px solid #ddd;
-}
-
-.tabulator-row .tabulator-cell .tabulator-data-tree-control {
-  display: -ms-inline-flexbox;
-  display: inline-flex;
-  -ms-flex-pack: center;
-      justify-content: center;
-  -ms-flex-align: center;
-      align-items: center;
-  vertical-align: middle;
-  height: 11px;
-  width: 11px;
-  margin-right: 5px;
-  border: 1px solid #333;
-  border-radius: 2px;
-  background: rgba(0, 0, 0, 0.1);
-  overflow: hidden;
-}
-
-.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {
-  cursor: pointer;
-  background: rgba(0, 0, 0, 0.2);
-}
-
-.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {
-  display: inline-block;
-  position: relative;
-  height: 7px;
-  width: 1px;
-  background: transparent;
-}
-
-.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {
-  position: absolute;
-  content: "";
-  left: -3px;
-  top: 3px;
-  height: 1px;
-  width: 7px;
-  background: #333;
-}
-
-.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {
-  display: inline-block;
-  position: relative;
-  height: 7px;
-  width: 1px;
-  background: #333;
-}
-
-.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {
-  position: absolute;
-  content: "";
-  left: -3px;
-  top: 3px;
-  height: 1px;
-  width: 7px;
-  background: #333;
-}
-
-.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {
-  display: -ms-inline-flexbox;
-  display: inline-flex;
-  -ms-flex-align: center;
-      align-items: center;
-  -ms-flex-pack: center;
-      justify-content: center;
-  -moz-user-select: none;
-  -khtml-user-select: none;
-  -webkit-user-select: none;
-  -o-user-select: none;
-  height: 15px;
-  width: 15px;
-  border-radius: 20px;
-  background: #666;
-  color: #fff;
-  font-weight: bold;
-  font-size: 1.1em;
-}
-
-.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {
-  opacity: .7;
-}
-
-.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {
-  display: initial;
-}
-
-.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {
-  display: none;
-}
-
-.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {
-  display: none;
-}
-
-.tabulator-row .tabulator-cell .tabulator-traffic-light {
-  display: inline-block;
-  height: 14px;
-  width: 14px;
-  border-radius: 14px;
-}
-
-.tabulator-row.tabulator-group {
-  box-sizing: border-box;
-  border-bottom: 1px solid #999;
-  border-right: 1px solid #ddd;
-  border-top: 1px solid #999;
-  padding: 5px;
-  padding-left: 10px;
-  background: #fafafa;
-  font-weight: bold;
-  min-width: 100%;
-}
-
-.tabulator-row.tabulator-group:hover {
-  cursor: pointer;
-  background-color: rgba(0, 0, 0, 0.1);
-}
-
-.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {
-  margin-right: 10px;
-  border-left: 6px solid transparent;
-  border-right: 6px solid transparent;
-  border-top: 6px solid #666;
-  border-bottom: 0;
-}
-
-.tabulator-row.tabulator-group.tabulator-group-level-1 {
-  padding-left: 30px;
-}
-
-.tabulator-row.tabulator-group.tabulator-group-level-2 {
-  padding-left: 50px;
-}
-
-.tabulator-row.tabulator-group.tabulator-group-level-3 {
-  padding-left: 70px;
-}
-
-.tabulator-row.tabulator-group.tabulator-group-level-4 {
-  padding-left: 90px;
-}
-
-.tabulator-row.tabulator-group.tabulator-group-level-5 {
-  padding-left: 110px;
-}
-
-.tabulator-row.tabulator-group .tabulator-group-toggle {
-  display: inline-block;
-}
-
-.tabulator-row.tabulator-group .tabulator-arrow {
-  display: inline-block;
-  width: 0;
-  height: 0;
-  margin-right: 16px;
-  border-top: 6px solid transparent;
-  border-bottom: 6px solid transparent;
-  border-right: 0;
-  border-left: 6px solid #666;
-  vertical-align: middle;
-}
-
-.tabulator-row.tabulator-group span {
-  margin-left: 10px;
-  color: #666;
-}
-
-.tabulator-menu {
-  position: absolute;
-  display: inline-block;
-  box-sizing: border-box;
-  background: #fff;
-  border: 1px solid #ddd;
-  box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);
-  font-size: 14px;
-  overflow-y: auto;
-  -webkit-overflow-scrolling: touch;
-  z-index: 10000;
-}
-
-.tabulator-menu .tabulator-menu-item {
-  padding: 5px 10px;
-  -webkit-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-}
-
-.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {
-  opacity: .5;
-}
-
-.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {
-  cursor: pointer;
-  background: #fff;
-}
-
-.tabulator-menu .tabulator-menu-separator {
-  border-top: 1px solid #ddd;
-}
-
-.tabulator-edit-select-list {
-  position: absolute;
-  display: inline-block;
-  box-sizing: border-box;
-  max-height: 200px;
-  background: #fff;
-  border: 1px solid #ddd;
-  font-size: 14px;
-  overflow-y: auto;
-  -webkit-overflow-scrolling: touch;
-  z-index: 10000;
-}
-
-.tabulator-edit-select-list .tabulator-edit-select-list-item {
-  padding: 4px;
-  color: #333;
-}
-
-.tabulator-edit-select-list .tabulator-edit-select-list-item.active {
-  color: #fff;
-  background: #1D68CD;
-}
-
-.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {
-  outline: 1px solid rgba(255, 255, 255, 0.5);
-}
-
-.tabulator-edit-select-list .tabulator-edit-select-list-item.focused {
-  outline: 1px solid #1D68CD;
-}
-
-.tabulator-edit-select-list .tabulator-edit-select-list-item:hover {
-  cursor: pointer;
-  color: #fff;
-  background: #1D68CD;
-}
-
-.tabulator-edit-select-list .tabulator-edit-select-list-notice {
-  padding: 4px;
-  color: #333;
-  text-align: center;
-}
-
-.tabulator-edit-select-list .tabulator-edit-select-list-group {
-  border-bottom: 1px solid #ddd;
-  padding: 4px;
-  padding-top: 6px;
-  color: #333;
-  font-weight: bold;
-}
-
-.tabulator-print-fullscreen {
-  position: absolute;
-  top: 0;
-  bottom: 0;
-  left: 0;
-  right: 0;
-  z-index: 10000;
-}
-
-body.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {
-  display: none !important;
-}
-
-.tabulator-print-table {
-  border-collapse: collapse;
-}
-
-.tabulator-print-table .tabulator-print-table-group {
-  box-sizing: border-box;
-  border-bottom: 1px solid #999;
-  border-right: 1px solid #ddd;
-  border-top: 1px solid #999;
-  padding: 5px;
-  padding-left: 10px;
-  background: #fafafa;
-  font-weight: bold;
-  min-width: 100%;
-}
-
-.tabulator-print-table .tabulator-print-table-group:hover {
-  cursor: pointer;
-  background-color: rgba(0, 0, 0, 0.1);
-}
-
-.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {
-  margin-right: 10px;
-  border-left: 6px solid transparent;
-  border-right: 6px solid transparent;
-  border-top: 6px solid #666;
-  border-bottom: 0;
-}
-
-.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {
-  padding-left: 30px !important;
-}
-
-.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {
-  padding-left: 50px !important;
-}
-
-.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {
-  padding-left: 70px !important;
-}
-
-.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {
-  padding-left: 90px !important;
-}
-
-.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {
-  padding-left: 110px !important;
-}
-
-.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {
-  display: inline-block;
-}
-
-.tabulator-print-table .tabulator-print-table-group .tabulator-arrow {
-  display: inline-block;
-  width: 0;
-  height: 0;
-  margin-right: 16px;
-  border-top: 6px solid transparent;
-  border-bottom: 6px solid transparent;
-  border-right: 0;
-  border-left: 6px solid #666;
-  vertical-align: middle;
-}
-
-.tabulator-print-table .tabulator-print-table-group span {
-  margin-left: 10px;
-  color: #666;
-}
-
-.tabulator-print-table .tabulator-data-tree-branch {
-  display: inline-block;
-  vertical-align: middle;
-  height: 9px;
-  width: 7px;
-  margin-top: -9px;
-  margin-right: 5px;
-  border-bottom-left-radius: 1px;
-  border-left: 2px solid #ddd;
-  border-bottom: 2px solid #ddd;
-}
-
-.tabulator-print-table .tabulator-data-tree-control {
-  display: -ms-inline-flexbox;
-  display: inline-flex;
-  -ms-flex-pack: center;
-      justify-content: center;
-  -ms-flex-align: center;
-      align-items: center;
-  vertical-align: middle;
-  height: 11px;
-  width: 11px;
-  margin-right: 5px;
-  border: 1px solid #333;
-  border-radius: 2px;
-  background: rgba(0, 0, 0, 0.1);
-  overflow: hidden;
-}
-
-.tabulator-print-table .tabulator-data-tree-control:hover {
-  cursor: pointer;
-  background: rgba(0, 0, 0, 0.2);
-}
-
-.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {
-  display: inline-block;
-  position: relative;
-  height: 7px;
-  width: 1px;
-  background: transparent;
-}
-
-.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {
-  position: absolute;
-  content: "";
-  left: -3px;
-  top: 3px;
-  height: 1px;
-  width: 7px;
-  background: #333;
-}
-
-.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {
-  display: inline-block;
-  position: relative;
-  height: 7px;
-  width: 1px;
-  background: #333;
-}
-
-.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {
-  position: absolute;
-  content: "";
-  left: -3px;
-  top: 3px;
-  height: 1px;
-  width: 7px;
-  background: #333;
-}
diff --git a/app/static/vendors/tabulator/css/tabulator_simple.min.css b/app/static/vendors/tabulator/css/tabulator_simple.min.css
deleted file mode 100644 (file)
index c4148e8..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-.tabulator{position:relative;background-color:#fff;overflow:hidden;font-size:14px;text-align:left;transform:translatez(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableHolder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitDataTable]{display:inline-block}.tabulator.tabulator-block-select{-webkit-user-select:none;-ms-user-select:none;user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #999;background-color:#fff;color:#555;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;border-right:1px solid #ddd;background-color:#fff;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #999;background:#e6e6e6;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button:hover{cursor:pointer;opacity:.6}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{box-sizing:border-box;width:100%;border:1px solid #999;padding:1px;background:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{display:inline-block;position:absolute;top:9px;right:8px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:-ms-flexbox;display:flex;border-top:1px solid #ddd;overflow:hidden;margin-right:-1px}.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{position:relative;box-sizing:border-box;margin-top:2px;width:100%;text-align:center}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{width:0;height:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:#e6e6e6}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-arrow{border-top:6px solid #666;border-bottom:none}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{-ms-writing-mode:tb-rl;writing-mode:vertical-rl;text-orientation:mixed;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-right:0;padding-bottom:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-arrow{right:calc(50% - 6px)}.tabulator .tabulator-header .tabulator-frozen{display:inline-block;position:absolute;z-index:10}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #ddd}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #ddd}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;min-width:600%;background:#f2f2f2!important;border-top:1px solid #ddd;border-bottom:1px solid #999;overflow:hidden}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#f2f2f2!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-header .tabulator-frozen-rows-holder{min-width:600%}.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableHolder{position:relative;width:100%;white-space:nowrap;overflow:auto;-webkit-overflow-scrolling:touch}.tabulator .tabulator-tableHolder:focus{outline:none}.tabulator .tabulator-tableHolder .tabulator-placeholder{box-sizing:border-box;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;width:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder span{display:inline-block;margin:0 auto;padding:10px;color:#000;font-weight:700;font-size:20px}.tabulator .tabulator-tableHolder .tabulator-table{position:relative;display:inline-block;background-color:#fff;white-space:nowrap;overflow:visible;color:#333}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#f2f2f2!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #ddd}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #ddd}.tabulator .tabulator-col-resize-handle{position:absolute;right:0;top:0;bottom:0;width:5px}.tabulator .tabulator-col-resize-handle.prev{left:0;right:auto}.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}.tabulator .tabulator-footer{padding:5px 10px;border-top:1px solid #999;background-color:#fff;text-align:right;color:#555;font-weight:700;white-space:nowrap;-ms-user-select:none;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-footer .tabulator-calcs-holder{box-sizing:border-box;width:calc(100% + 20px);margin:-5px -10px 5px;text-align:left;background:#f2f2f2!important;border-bottom:1px solid #fff;border-top:1px solid #ddd;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#f2f2f2!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px;border-bottom:none}.tabulator .tabulator-footer .tabulator-paginator{color:#555;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page-size{display:inline-block;margin:0 5px;padding:2px 5px;border:1px solid #aaa;border-radius:3px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{display:inline-block;margin:0 2px;padding:2px 5px;border:1px solid #aaa;border-radius:3px;background:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#d00}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}.tabulator .tabulator-loader{position:absolute;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;top:0;left:0;z-index:100;height:100%;width:100%;background:rgba(0,0,0,.4);text-align:center}.tabulator .tabulator-loader .tabulator-loader-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading{border:4px solid #333;color:#000}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error{border:4px solid #d00;color:#590000}.tabulator-row{position:relative;box-sizing:border-box;min-height:22px;border-bottom:1px solid #ddd}.tabulator-row,.tabulator-row:nth-child(2n){background-color:#fff}.tabulator-row.tabulator-selectable:hover{background-color:#bbb;cursor:pointer}.tabulator-row.tabulator-selected{background-color:#9abcea}.tabulator-row.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #ddd;border-bottom:1px solid #ddd;pointer-events:none!important;z-index:15}.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #ddd}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #ddd}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #ddd;border-bottom:1px solid #ddd}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:14px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:4px;border-right:1px solid #ddd;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell:last-of-type{border-right:none}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{border:1px;background:transparent}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator-row .tabulator-cell.tabulator-row-handle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{width:100%;height:3px;margin-top:2px;background:#666}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #ddd;border-bottom:2px solid #ddd}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;height:15px;width:15px;border-radius:20px;background:#666;color:#fff;font-weight:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{opacity:.7}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open,.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{display:inline-block;height:14px;width:14px;border-radius:14px}.tabulator-row.tabulator-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #ddd;border-top:1px solid #999;padding:5px;padding-left:10px;background:#fafafa;font-weight:700;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#666}.tabulator-menu{position:absolute;display:inline-block;box-sizing:border-box;background:#fff;border:1px solid #ddd;box-shadow:0 0 5px 0 rgba(0,0,0,.2);font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-menu .tabulator-menu-item{padding:5px 10px;-webkit-user-select:none;-ms-user-select:none;user-select:none}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled{opacity:.5}.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{cursor:pointer;background:#fff}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #ddd}.tabulator-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;background:#fff;border:1px solid #ddd;font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-edit-select-list .tabulator-edit-select-list-item{padding:4px;color:#333}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused{outline:1px solid hsla(0,0%,100%,.5)}.tabulator-edit-select-list .tabulator-edit-select-list-item.focused{outline:1px solid #1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{cursor:pointer;color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-notice{padding:4px;color:#333;text-align:center}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #ddd;padding:4px;padding-top:6px;color:#333;font-weight:700}.tabulator-print-fullscreen{position:absolute;top:0;bottom:0;left:0;right:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse}.tabulator-print-table .tabulator-print-table-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #ddd;border-top:1px solid #999;padding:5px;padding-left:10px;background:#fafafa;font-weight:700;min-width:100%}.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td{padding-left:30px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td{padding-left:50px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td{padding-left:70px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td{padding-left:90px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td{padding-left:110px!important}.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle{display:inline-block}.tabulator-print-table .tabulator-print-table-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-print-table .tabulator-print-table-group span{margin-left:10px;color:#666}.tabulator-print-table .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #ddd;border-bottom:2px solid #ddd}.tabulator-print-table .tabulator-data-tree-control{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}
-/*# sourceMappingURL=tabulator_simple.min.css.map */
diff --git a/app/static/vendors/tabulator/css/tabulator_simple.min.css.map b/app/static/vendors/tabulator/css/tabulator_simple.min.css.map
deleted file mode 100644 (file)
index 0a0672f..0000000
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["tabulator_simple.scss"],"names":[],"mappings":"AA0CA,WACC,kBAAkB,AAClB,sBAxCqB,AAyCrB,gBAAe,AACf,eAxCa,AAyCb,gBAAgB,AAMhB,uBAAwB,CA2fxB,AAtgBD,iFAgBI,cAAc,CACd,AAjBJ,0CAsBE,oBAAqB,CACrB,AAvBF,kCA0BE,yBAAiB,AAAjB,qBAAiB,AAAjB,gBAAiB,CACjB,AA3BF,6BA+BE,kBAAiB,AACjB,sBAAsB,AAEtB,WAAU,AAEV,6BAlEwB,AAmExB,sBAtEyB,AAuEzB,WAtEmB,AAuEnB,gBAAgB,AAEhB,mBAAmB,AACnB,gBAAe,AAEf,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAqPpB,AApSF,qDAkDG,YAAY,CACZ,AAnDH,4CAuDG,qBAAoB,AACpB,kBAAiB,AACjB,sBAAqB,AACrB,4BAzFoB,AA0FpB,sBA5FwB,AA6FxB,gBAAe,AACf,sBAAsB,AACtB,eAAgB,CAwLhB,AAtPH,6DAiEI,kBAAkB,AAClB,sBAhGsB,AAiGtB,mBAA8C,AAC9C,mBAAoB,CACpB,AArEJ,mEAyEI,sBAAqB,AACrB,kBAAkB,AAClB,WAAW,CAgDX,AA3HJ,iGA+EK,aAAc,CAMd,AArFL,uGAkFM,eAAe,AACf,UAAW,CACX,AApFN,wFAyFK,sBAAqB,AACrB,WAAW,AAEX,mBAAmB,AACnB,gBAAgB,AAChB,uBAAuB,AACvB,qBAAqB,CAarB,AA5GL,gHAmGM,sBAAsB,AACtB,WAAW,AAEX,sBAAqB,AAErB,YAAW,AAEX,eAAgB,CAChB,AA3GN,oFAgHK,qBAAqB,AACrB,kBAAkB,AAClB,QAAO,AACP,UAAS,AACT,QAAQ,AACR,SAAS,AACT,kCAAkC,AAClC,mCAAmC,AACnC,4BAjJmB,CAkJnB,AAzHL,0FAkIK,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AAEb,0BApKkB,AAqKlB,gBAAgB,AAEhB,iBAAiB,CACjB,AAzIL,0FAgJK,YAAa,CACb,AAjJL,qEAsJI,kBAAkB,AAClB,sBAAsB,AACtB,eAAc,AACd,WAAU,AACV,iBAAkB,CAiBlB,AA3KJ,8EA8JK,qBAAsB,CACtB,AA/JL,yEAkKK,cAAe,CACf,AAnKL,sFAuKO,QAAS,AACT,QAAS,CACV,AAzKN,oFAiLK,kBAAkB,CAClB,AAlLL,qEAqLK,eAAc,AACd,wBAAoD,CACpD,AAvLL,uHA4LM,gBAAgB,AAChB,4BAtNkB,CAuNlB,AA9LN,sHAmMM,gBAAgB,AAChB,4BA9NgB,CA+NhB,AArMN,uHA0MM,0BApOgB,AAqOhB,kBAAmB,CACnB,AA5MN,+GAmNM,uBAAyB,AAAzB,yBAAyB,AACzB,uBAAuB,AAEvB,oBAAY,AAAZ,aAAY,AACZ,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,sBAAsB,CACtB,AAzNN,oHA8NM,wBAAyB,CACzB,AA/NN,2GAoOM,gBAAe,AACf,gBAAgB,CAChB,AAtON,uIA0OO,gBAAe,AACf,mBAAmB,CACnB,AA5OP,uGAiPM,qBAAqB,CACrB,AAlPN,+CAyPG,qBAAqB,AACrB,kBAAkB,AAIlB,UAAW,CASX,AAvQH,qEAiQI,2BArRgB,CAsRhB,AAlQJ,sEAqQI,0BAzRgB,CA0RhB,AAtQJ,qDA0QG,sBAAqB,AACrB,eAAc,AAEd,6BAAwD,AAUxD,0BA3SiB,AA4SjB,6BAtTuB,AAwTvB,eAAgB,CAChB,AA3RH,oEAgRI,4BAAwD,CAKxD,AArRJ,iGAmRK,YAAa,CACb,AApRL,2DA8RG,cAAc,CAKd,AAnSH,iEAiSI,YAAa,CACb,AAlSJ,kCA0SE,kBAAiB,AACjB,WAAU,AACV,mBAAmB,AACnB,cAAa,AACb,gCAAiC,CAwDjC,AAtWF,wCAiTG,YAAa,CACb,AAlTH,yDAsTG,sBAAqB,AACrB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AAOlB,UAAU,CAYV,AA3UH,wFA2TI,gBAAe,AACf,cAAc,CACd,AA7TJ,8DAkUI,qBAAqB,AAErB,cAAa,AACb,aAAY,AAEZ,WAAU,AACV,gBAAiB,AACjB,cAAe,CACf,AA1UJ,mDA+UG,kBAAiB,AACjB,qBAAoB,AACpB,sBAvWqB,AAwWrB,mBAAmB,AACnB,iBAAgB,AAChB,UAvWe,CAwXf,AArWH,kFAwVK,gBAAiB,AACjB,4BAAwD,CASxD,AAlWL,sGA4VM,4BAhXc,CAiXd,AA7VN,yGAgWM,yBApXc,CAqXd,AAjWN,wCA0WE,kBAAiB,AACjB,QAAO,AACP,MAAK,AACL,SAAQ,AACR,SAAS,CAUT,AAxXF,6CAiXG,OAAM,AACN,UAAU,CACV,AAnXH,8CAsXG,gBAAgB,CAChB,AAvXH,6BA6XE,iBAAgB,AAChB,0BAnYwB,AAoYxB,sBAvYyB,AAwYzB,iBAAgB,AAChB,WAxYmB,AAyYnB,gBAAgB,AAChB,mBAAkB,AAClB,qBAAgB,AAAhB,iBAAgB,AAEhB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAkFpB,AA3dF,qDA4YG,sBAAqB,AACrB,wBAAuB,AACvB,sBAA2B,AAE3B,gBAAgB,AAEhB,6BAAwD,AAUxD,6BApawB,AAqaxB,0BAjbiB,AAmbjB,eAAgB,CAMhB,AAraH,oEAqZI,4BAAwD,CAKxD,AA1ZJ,iGAwZK,YAAa,CACb,AAzZL,gEAkaI,mBAAkB,AAClB,kBAAkB,CAClB,AApaJ,kDAyaG,WAhbkB,AAiblB,oBAAmB,AACnB,oBAAmB,AACnB,iBAAiB,CACjB,AA7aH,kDAibG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBA5boB,AA6bpB,iBAAiB,CACjB,AAxbH,8CA4bG,YAAY,CACZ,AA7bH,6CAicG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBA5coB,AA6cpB,kBAAiB,AAEjB,6BAA+B,CAiB/B,AA1dH,oDA4cI,UAhdmB,CAidnB,AA7cJ,sDAgdI,UAAU,CACV,AAjdJ,kEAqdK,eAAc,AACd,0BAAyB,AACzB,UAAU,CACV,AAxdL,6BA+dE,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AAElB,MAAK,AACL,OAAM,AACN,YAAW,AAEX,YAAW,AACX,WAAU,AACV,0BAAyB,AACzB,iBAAiB,CA2BjB,AArgBF,mDA8eG,qBAAoB,AAEpB,cAAa,AACb,kBAAiB,AAEjB,mBAAkB,AAElB,gBAAe,AACf,gBAAgB,AAChB,cAAc,CAad,AApgBH,qEA2fI,sBAAqB,AACrB,UAAU,CACV,AA7fJ,mEAigBI,sBAAqB,AACrB,aAAa,CACb,AAMJ,eACC,kBAAkB,AAClB,sBAAsB,AAEtB,gBAA0C,AAE1C,4BAniBmB,CA+4BnB,AAlXD,4CAKC,qBApiBuB,CAyiBtB,AAVF,0CAaE,sBAxiBsB,AAyiBtB,cAAe,CACf,AAfF,kCAkBE,wBA3iB6B,CA4iB7B,AAnBF,wCAsBE,yBA9iBkC,AA+iBlC,cAAe,CACf,AAxBF,gCA2BE,kBAAkB,AAElB,0BA1jBkB,AA2jBlB,6BA3jBkB,AA6jBlB,8BAA+B,AAC/B,UAAU,CACV,AAlCF,4CAsCE,kBAAiB,AACjB,QAAO,AACP,SAAQ,AACR,OAAM,AACN,UAAU,CAUV,AApDF,iDA6CG,MAAK,AACL,WAAW,CACX,AA/CH,kDAkDG,gBAAgB,CAChB,AAnDH,iCAuDE,qBAAqB,AACrB,kBAAkB,AAElB,yBAAyB,AAEzB,UAAW,CASX,AArEF,uDA+DG,2BA5lBiB,CA6lBjB,AAhEH,wDAmEG,0BAhmBiB,CAimBjB,AApEH,8CAwEE,sBAAqB,AAErB,YAAW,AAEX,0BAzmBkB,AA0mBlB,4BA1mBkB,CA6nBlB,AAhGF,oDAgFG,YAAY,CACZ,AAjFH,oDAoFG,cAjoBW,CA4oBX,AA/FH,0DAwFK,iBAAkB,CAKlB,AA7FL,wEA2FM,kBAAkB,CAClB,AA5FN,+BAoGE,qBAAoB,AACpB,kBAAkB,AAClB,sBAAqB,AACrB,YAAW,AACX,4BAroBkB,AAsoBlB,sBAAqB,AACrB,mBAAkB,AAClB,gBAAe,AACf,sBAAsB,CA6LtB,AAzSF,4CA+GG,iBAAkB,CAClB,AAhHH,iDAmHG,yBAxoBkB,AAyoBlB,SAAU,CAMV,AA1HH,+GAuHI,WAAU,AACV,sBAAsB,CACtB,AAzHJ,yDA6HG,qBAjpBgB,CAwpBhB,AApIH,+HA+HI,WAAU,AACV,uBAAsB,AAEtB,UAtpBe,CAupBf,AAnIJ,6EAyII,YAAa,CACb,AA1IJ,oDAgJG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAElB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAcpB,AApKH,8EA0JI,SAAS,CAST,AAnKJ,wGA8JK,WAAU,AACV,WAAU,AACV,eAAc,AACd,eAAe,CACf,AAlKL,2DAuKG,qBAAoB,AACpB,sBAAqB,AAErB,WAAU,AACV,UAAS,AAET,gBAAe,AACf,iBAAgB,AAEhB,8BAA6B,AAE7B,2BA/sBiB,AAgtBjB,4BAhtBiB,CAitBjB,AApLH,4DAwLG,2BAAmB,AAAnB,oBAAmB,AACnB,qBAAsB,AAAtB,uBAAsB,AACtB,sBAAkB,AAAlB,mBAAkB,AAClB,sBAAqB,AAErB,YAAW,AACX,WAAU,AAEV,iBAAgB,AAEhB,sBA9tBe,AA+tBf,kBAAiB,AACjB,0BAA4B,AAE5B,eAAe,CAmDf,AAzPH,kEAyMI,eAAc,AACd,yBAA4B,CAC5B,AA3MJ,kGA8MI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,sBAAuB,CAavB,AAjOJ,wGAuNK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eA3vBa,CA4vBb,AAhOL,gGAoOI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,eAtwBc,CAmxBd,AAvPJ,sGA6OK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eAjxBa,CAkxBb,AAtPL,qEA4PG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,uBAAsB,AAEtB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,oBAAoB,AAEpB,YAAW,AACX,WAAU,AAEV,mBAAkB,AAClB,gBAAe,AAEf,WA1yBqB,AA2yBrB,gBAAgB,AAChB,eAAe,CAmBf,AAhSH,2EAgRI,UAAU,CACV,AAjRJ,sHAqRK,eAAe,CACf,AAtRL,sOA8RI,YAAY,CACZ,AA/RJ,wDAmSG,qBAAqB,AACrB,YAAW,AACX,WAAU,AAEV,kBAAkB,CAClB,AAxSH,+BA8SE,sBAAqB,AACrB,6BAA4B,AAC5B,4BA70BkB,AA80BlB,0BAAyB,AACzB,YAAW,AACX,kBAAiB,AACjB,mBAAkB,AAClB,gBAAgB,AAEhB,cAAe,CA0Df,AAjXF,qCA0TG,eAAc,AACd,+BAA+B,CAC/B,AA5TH,wEAgUI,kBAAiB,AACjB,kCAAkC,AAClC,mCAAmC,AACnC,0BAt2BkB,AAu2BlB,eAAgB,CAChB,AArUJ,uDAyUG,iBAAiB,CACjB,AA1UH,uDA6UG,iBAAiB,CACjB,AA9UH,uDAiVG,iBAAiB,CACjB,AAlVH,uDAqVG,iBAAiB,CACjB,AAtVH,uDAyVG,kBAAkB,CAClB,AA1VH,uDA6VG,oBAAqB,CACrB,AA9VH,gDAkWG,qBAAqB,AACrB,QAAQ,AACR,SAAS,AACT,kBAAiB,AACjB,iCAAiC,AACjC,oCAAoC,AACpC,eAAe,AACf,2BA54BmB,AA64BnB,qBAAqB,CACrB,AA3WH,oCA8WG,iBAAgB,AAChB,UAAU,CACV,AAIH,gBACC,kBAAkB,AAClB,qBAAoB,AACpB,sBAAqB,AAErB,gBAx5BuB,AAy5BvB,sBAv5BmB,AAw5BnB,oCAAuC,AAEvC,eA16Ba,AA46Bb,gBAAe,AACf,iCAAiC,AAEjC,aAAc,CAqBd,AAnCD,qCAkBE,iBAAgB,AAEhB,yBAAiB,AAAjB,qBAAiB,AAAjB,gBAAiB,CAUjB,AA9BF,kEAuBG,UAAW,CACX,AAxBH,8EA2BG,eAAe,AACf,eA96BwB,CA+6BxB,AA7BH,0CAiCE,yBAl7BkB,CAm7BlB,AAGF,4BACC,kBAAkB,AAClB,qBAAoB,AACpB,sBAAqB,AAErB,iBAAgB,AAEhB,gBA/7BuB,AAg8BvB,sBA97BmB,AAg8BnB,eAh9Ba,AAk9Bb,gBAAe,AACf,iCAAiC,AAEjC,aAAc,CA6Cd,AA5DD,6DAkBE,YAAW,AAEX,UAz8BgB,CA+9BhB,AA1CF,oEAuBG,WA/8BqB,AAg9BrB,kBAt8BkB,CA28BlB,AA7BH,4EA2BI,oCAn9BoB,CAo9BpB,AA5BJ,qEAgCG,yBA98BkB,CA+8BlB,AAjCH,mEAqCG,eAAc,AAEd,WA/9BqB,AAg+BrB,kBAt9BkB,CAu9BlB,AAzCH,+DA6CE,YAAW,AAEX,WAp+BgB,AAq+BhB,iBAAkB,CAClB,AAjDF,8DAoDE,6BA1+BkB,AA4+BlB,YAAW,AACX,gBAAe,AAEf,WA9+BgB,AA++BhB,eAAgB,CAChB,AAKF,4BACC,kBAAkB,AAClB,MAAK,AACL,SAAQ,AACR,OAAM,AACN,QAAO,AAEP,aAAc,CACd,AAED,uEACC,sBAAuB,CACvB,AAED,uBACC,wBAAyB,CAuKzB,AAxKD,oDAME,sBAAqB,AACrB,6BAA4B,AAC5B,4BA5gCkB,AA6gClB,0BAAyB,AACzB,YAAW,AACX,kBAAiB,AACjB,mBAAkB,AAClB,gBAAgB,AAEhB,cAAe,CAoEf,AAnFF,0DAkBG,eAAc,AACd,+BAA+B,CAC/B,AApBH,6FAwBI,kBAAiB,AACjB,kCAAkC,AAClC,mCAAmC,AACnC,0BAriCkB,AAsiClB,eAAgB,CAChB,AA7BJ,+EAkCI,2BAA4B,CAC5B,AAnCJ,+EAwCI,2BAA4B,CAC5B,AAzCJ,+EA8CI,2BAA4B,CAC5B,AA/CJ,+EAoDI,2BAA4B,CAC5B,AArDJ,+EA0DI,4BAA6B,CAC7B,AA3DJ,4EA+DG,oBAAqB,CACrB,AAhEH,qEAoEG,qBAAqB,AACrB,QAAQ,AACR,SAAS,AACT,kBAAiB,AACjB,iCAAiC,AACjC,oCAAoC,AACpC,eAAe,AACf,2BArlCmB,AAslCnB,qBAAqB,CACrB,AA7EH,yDAgFG,iBAAgB,AAChB,UAAU,CACV,AAlFH,mDAsFE,qBAAoB,AACpB,sBAAqB,AAErB,WAAU,AACV,UAAS,AAET,gBAAe,AACf,iBAAgB,AAEhB,8BAA6B,AAE7B,2BArmCkB,AAsmClB,4BAtmCkB,CAumClB,AAnGF,oDAuGE,2BAAmB,AAAnB,oBAAmB,AACnB,qBAAsB,AAAtB,uBAAsB,AACtB,sBAAkB,AAAlB,mBAAkB,AAClB,sBAAqB,AAErB,YAAW,AACX,WAAU,AAEV,iBAAgB,AAEhB,sBApnCgB,AAqnChB,kBAAiB,AACjB,0BAA4B,AAE5B,eAAe,CAkDf,AAvKF,0DAwHG,eAAc,AACd,yBAA4B,CAC5B,AA1HH,0FA6HG,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,sBAAuB,CAavB,AAhJH,gGAsII,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eAjpCc,CAkpCd,AA/IJ,wFAmJG,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,eA5pCe,CAyqCf,AAtKH,8FA4JI,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eAvqCc,CAwqCd","file":"tabulator_simple.min.css","sourcesContent":["/* Tabulator v4.7.0 (c) Oliver Folkerd */\n\n\r\n//Main Theme Variables\r\n$backgroundColor: #fff !default; //background color of tabulator\r\n$borderColor:#999 !default; //border to tabulator\r\n$textSize:14px !default; //table text size\r\n\r\n//header themeing\r\n$headerBackgroundColor:#fff !default; //border to tabulator\r\n$headerTextColor:#555 !default; //header text colour\r\n$headerBorderColor:#ddd !default;  //header border color\r\n$headerSeperatorColor:#999 !default; //header bottom seperator color\r\n$headerMargin:4px !default; //padding round header\r\n\r\n//column header arrows\r\n$sortArrowActive: #666 !default;\r\n$sortArrowInactive: #bbb !default;\r\n\r\n//row themeing\r\n$rowBackgroundColor:#fff !default; //table row background color\r\n$rowAltBackgroundColor:#fff !default; //table row background color\r\n$rowBorderColor:#ddd !default; //table border color\r\n$rowTextColor:#333 !default; //table text color\r\n$rowHoverBackground:#bbb !default; //row background color on hover\r\n\r\n$rowSelectedBackground: #9ABCEA !default; //row background color when selected\r\n$rowSelectedBackgroundHover: #769BCC !default;//row background color when selected and hovered\r\n\r\n\r\n$editBoxColor:#1D68CD !default; //border color for edit boxes\r\n$errorColor:#dd0000 !default; //error indication\r\n\r\n//footer themeing\r\n$footerBackgroundColor:#fff !default; //border to tabulator\r\n$footerTextColor:#555 !default; //footer text colour\r\n$footerBorderColor:#aaa !default; //footer border color\r\n$footerSeperatorColor:#999 !default; //footer bottom seperator color\r\n$footerActiveColor:#d00 !default; //footer bottom active text color\r\n\r\n\r\n//Tabulator Containing Element\r\n.tabulator{\r\n\tposition: relative;\r\n\tbackground-color: $backgroundColor;\r\n\toverflow:hidden;\r\n\tfont-size:$textSize;\r\n\ttext-align: left;\r\n\r\n\t-webkit-transform: translatez(0);\r\n\t-moz-transform: translatez(0);\r\n\t-ms-transform: translatez(0);\r\n\t-o-transform: translatez(0);\r\n\ttransform: translatez(0);\r\n\r\n\t&[tabulator-layout=\"fitDataFill\"]{\r\n\t\t.tabulator-tableHolder{\r\n\t\t\t.tabulator-table{\r\n\t\t\t\tmin-width:100%;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t&[tabulator-layout=\"fitDataTable\"]{\r\n\t\tdisplay: inline-block;\r\n\t}\r\n\r\n\t&.tabulator-block-select{\r\n\t\tuser-select: none;\r\n\t}\r\n\r\n\t//column header containing element\r\n\t.tabulator-header{\r\n\t\tposition:relative;\r\n\t\tbox-sizing: border-box;\r\n\r\n\t\twidth:100%;\r\n\r\n\t\tborder-bottom:1px solid $headerSeperatorColor;\r\n\t\tbackground-color: $headerBackgroundColor;\r\n\t\tcolor: $headerTextColor;\r\n\t\tfont-weight:bold;\r\n\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:hidden;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t&.tabulator-header-hidden{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\t//individual column header element\r\n\t\t.tabulator-col{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tposition:relative;\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tborder-right:1px solid $headerBorderColor;\r\n\t\t\tbackground-color: $headerBackgroundColor;\r\n\t\t\ttext-align:left;\r\n\t\t\tvertical-align: bottom;\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&.tabulator-moving{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tborder:1px solid  $headerSeperatorColor;\r\n\t\t\t\tbackground:darken($headerBackgroundColor, 10%);\r\n\t\t\t\tpointer-events: none;\r\n\t\t\t}\r\n\r\n\t\t\t//hold content of column header\r\n\t\t\t.tabulator-col-content{\r\n\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tpadding:4px;\r\n\r\n\t\t\t\t//header menu button\r\n\t\t\t\t.tabulator-header-menu-button{\r\n\t\t\t\t\tpadding: 0 8px;\r\n\r\n\t\t\t\t\t&:hover{\r\n\t\t\t\t\t\tcursor: pointer;\r\n\t\t\t\t\t\topacity: .6;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//hold title of column header\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\twhite-space: nowrap;\r\n\t\t\t\t\toverflow: hidden;\r\n\t\t\t\t\ttext-overflow: ellipsis;\r\n\t\t\t\t\tvertical-align:bottom;\r\n\r\n\t\t\t\t\t//element to hold title editor\r\n\t\t\t\t\t.tabulator-title-editor{\r\n\t\t\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\t\tborder:1px solid #999;\r\n\r\n\t\t\t\t\t\tpadding:1px;\r\n\r\n\t\t\t\t\t\tbackground: #fff;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//column sorter arrow\r\n\t\t\t\t.tabulator-arrow{\r\n\t\t\t\t\tdisplay: inline-block;\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\ttop:9px;\r\n\t\t\t\t\tright:8px;\r\n\t\t\t\t\twidth: 0;\r\n\t\t\t\t\theight: 0;\r\n\t\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t//complex header column group\r\n\t\t\t&.tabulator-col-group{\r\n\r\n\t\t\t\t//gelement to hold sub columns in column group\r\n\t\t\t\t.tabulator-col-group-cols{\r\n\t\t\t\t\tposition:relative;\r\n\t\t\t\t\tdisplay: flex;\r\n\r\n\t\t\t\t\tborder-top:1px solid $headerBorderColor;\r\n\t\t\t\t\toverflow: hidden;\r\n\r\n\t\t\t\t\tmargin-right:-1px;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\t\t\t//hide left resize handle on first column\r\n\t\t\t&:first-child{\r\n\t\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//header filter containing element\r\n\t\t\t.tabulator-header-filter{\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\tmargin-top:2px;\r\n\t\t\t\twidth:100%;\r\n\t\t\t\ttext-align: center;\r\n\r\n\t\t\t\t//styling adjustment for inbuilt editors\r\n\t\t\t\ttextarea{\r\n\t\t\t\t\theight:auto !important;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsvg{\r\n\t\t\t\t\tmargin-top: 3px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tinput{\r\n\t\t\t\t\t&::-ms-clear {\r\n\t\t\t\t\t  width : 0;\r\n\t\t\t\t\t  height: 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\t\t\t//styling child elements for sortable columns\r\n\t\t\t&.tabulator-sortable{\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tpadding-right:25px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground-color:darken($headerBackgroundColor, 10%);\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\t&[aria-sort=\"none\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"asc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowActive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"desc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\t\t\tborder-bottom: none;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t&.tabulator-col-vertical{\r\n\t\t\t\t.tabulator-col-content{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\twriting-mode: vertical-rl;\r\n\t\t\t\t\t\ttext-orientation: mixed;\r\n\r\n\t\t\t\t\t\tdisplay:flex;\r\n\t\t\t\t\t\talign-items:center;\r\n\t\t\t\t\t\tjustify-content:center;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\ttransform: rotate(180deg);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-sortable{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\tpadding-top:20px;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\t\tpadding-bottom:20px;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t.tabulator-arrow{\r\n\t\t\t\t\t\tright:calc(50% - 6px);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t.tabulator-frozen{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\tposition: absolute;\r\n\r\n\t\t\t// background-color: inherit;\r\n\r\n\t\t\tz-index: 10;\r\n\r\n\t\t\t&.tabulator-frozen-left{\r\n\t\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t&.tabulator-frozen-right{\r\n\t\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tmin-width:600%;\r\n\r\n\t\t\tbackground:darken($headerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:darken($headerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\t\t\tborder-bottom:1px solid $headerSeperatorColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\t\t}\r\n\r\n\t\t.tabulator-frozen-rows-holder{\r\n\t\t\tmin-width:600%;\r\n\r\n\t\t\t&:empty{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\r\n\t//scrolling element to hold table\r\n\t.tabulator-tableHolder{\r\n\t\tposition:relative;\r\n\t\twidth:100%;\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:auto;\r\n\t\t-webkit-overflow-scrolling: touch;\r\n\r\n\t\t&:focus{\r\n\t\t\toutline: none;\r\n\t\t}\r\n\r\n\t\t//default placeholder element\r\n\t\t.tabulator-placeholder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t&[tabulator-render-mode=\"virtual\"]{\r\n\t\t\t\tmin-height:100%;\r\n\t\t\t\tmin-width:100%;\r\n\t\t\t}\r\n\r\n\t\t\twidth:100%;\r\n\r\n\t\t\tspan{\r\n\t\t\t\tdisplay: inline-block;\r\n\r\n\t\t\t\tmargin:0 auto;\r\n\t\t\t\tpadding:10px;\r\n\r\n\t\t\t\tcolor:#000;\r\n\t\t\t\tfont-weight: bold;\r\n\t\t\t\tfont-size: 20px;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//element to hold table rows\r\n\t\t.tabulator-table{\r\n\t\t\tposition:relative;\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tbackground-color:$rowBackgroundColor;\r\n\t\t\twhite-space: nowrap;\r\n\t\t\toverflow:visible;\r\n\t\t\tcolor:$rowTextColor;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\t&.tabulator-calcs{\r\n\t\t\t\t\tfont-weight: bold;\r\n\t\t\t\t\tbackground:darken($rowAltBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t\t&.tabulator-calcs-top{\r\n\t\t\t\t\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-calcs-bottom{\r\n\t\t\t\t\t\tborder-top:2px solid $rowBorderColor;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n\r\n\t//column resize handles\r\n\t.tabulator-col-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\ttop:0;\r\n\t\tbottom:0;\r\n\t\twidth:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\tleft:0;\r\n\t\t\tright:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ew-resize;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//footer element\r\n\t.tabulator-footer{\r\n\t\tpadding:5px 10px;\r\n\t\tborder-top:1px solid $footerSeperatorColor;\r\n\t\tbackground-color: $footerBackgroundColor;\r\n\t\ttext-align:right;\r\n\t\tcolor: $footerTextColor;\r\n\t\tfont-weight:bold;\r\n\t\twhite-space:nowrap;\r\n\t\tuser-select:none;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\twidth:calc(100% + 20px);\r\n\t\t\tmargin:-5px -10px 5px -10px;\r\n\r\n\t\t\ttext-align: left;\r\n\r\n\t\t\tbackground:darken($footerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:darken($footerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-bottom:1px solid $footerBackgroundColor;\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&:only-child{\r\n\t\t\t\tmargin-bottom:-5px;\r\n\t\t\t\tborder-bottom:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-paginator{\r\n\t\t\tcolor: $footerTextColor;\r\n\t\t\tfont-family:inherit;\r\n\t\t\tfont-weight:inherit;\r\n\t\t\tfont-size:inherit;\r\n\t\t}\r\n\r\n\t\t//page size select element\r\n\t\t.tabulator-page-size{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 5px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-pages{\r\n\t\t\tmargin:0 7px;\r\n\t\t}\r\n\r\n\t\t//pagination button\r\n\t\t.tabulator-page{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 2px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\r\n\t\t\tbackground:rgba(255,255,255,.2);\r\n\r\n\t\t\t&.active{\r\n\t\t\t\tcolor:$footerActiveColor;\r\n\t\t\t}\r\n\r\n\t\t\t&:disabled{\r\n\t\t\t\topacity:.5;\r\n\t\t\t}\r\n\r\n\t\t\t&:not(.disabled){\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground:rgba(0,0,0,.2);\r\n\t\t\t\t\tcolor:#fff;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//holding div that contains loader and covers tabulator element to prevent interaction\r\n\t.tabulator-loader{\r\n\t\tposition:absolute;\r\n\t\tdisplay: flex;\r\n\t\talign-items:center;\r\n\r\n\t\ttop:0;\r\n\t\tleft:0;\r\n\t\tz-index:100;\r\n\r\n\t\theight:100%;\r\n\t\twidth:100%;\r\n\t\tbackground:rgba(0,0,0,.4);\r\n\t\ttext-align:center;\r\n\r\n\t\t//loading message element\r\n\t\t.tabulator-loader-msg{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 auto;\r\n\t\t\tpadding:10px 20px;\r\n\r\n\t\t\tborder-radius:10px;\r\n\r\n\t\t\tbackground:#fff;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:16px;\r\n\r\n\t\t\t//loading message\r\n\t\t\t&.tabulator-loading{\r\n\t\t\t\tborder:4px solid #333;\r\n\t\t\t\tcolor:#000;\r\n\t\t\t}\r\n\r\n\t\t\t//error message\r\n\t\t\t&.tabulator-error{\r\n\t\t\t\tborder:4px solid #D00;\r\n\t\t\t\tcolor:#590000;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n//row element\r\n.tabulator-row{\r\n\tposition: relative;\r\n\tbox-sizing: border-box;\r\n\r\n\tmin-height:$textSize + ($headerMargin * 2);\r\n\tbackground-color: $rowBackgroundColor;\r\n\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t&:nth-child(even){\r\n\t\tbackground-color: $rowAltBackgroundColor;\r\n\t}\r\n\r\n\t&.tabulator-selectable:hover{\r\n\t\tbackground-color:$rowHoverBackground;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t&.tabulator-selected{\r\n\t\tbackground-color:$rowSelectedBackground;\r\n\t}\r\n\r\n\t&.tabulator-selected:hover{\r\n\t\tbackground-color:$rowSelectedBackgroundHover;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t&.tabulator-moving{\r\n\t\tposition: absolute;\r\n\r\n\t\tborder-top:1px solid  $rowBorderColor;\r\n\t\tborder-bottom:1px solid  $rowBorderColor;\r\n\r\n\t\tpointer-events: none !important;\r\n\t\tz-index:15;\r\n\t}\r\n\r\n\t//row resize handles\r\n\t.tabulator-row-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\tbottom:0;\r\n\t\tleft:0;\r\n\t\theight:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\ttop:0;\r\n\t\t\tbottom:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ns-resize;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-frozen{\r\n\t\tdisplay: inline-block;\r\n\t\tposition: absolute;\r\n\r\n\t\tbackground-color: inherit;\r\n\r\n\t\tz-index: 10;\r\n\r\n\t\t&.tabulator-frozen-left{\r\n\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t&.tabulator-frozen-right{\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-responsive-collapse{\r\n\t\tbox-sizing:border-box;\r\n\r\n\t\tpadding:5px;\r\n\r\n\t\tborder-top:1px solid $rowBorderColor;\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\t&:empty{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\ttable{\r\n\t\t\tfont-size:$textSize;\r\n\r\n\t\t\ttr{\r\n\t\t\t\ttd{\r\n\t\t\t\t\tposition: relative;\r\n\r\n\t\t\t\t\t&:first-of-type{\r\n\t\t\t\t\t\tpadding-right:10px;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//cell element\r\n\t.tabulator-cell{\r\n\t\tdisplay:inline-block;\r\n\t\tposition: relative;\r\n\t\tbox-sizing:border-box;\r\n\t\tpadding:4px;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tvertical-align:middle;\r\n\t\twhite-space:nowrap;\r\n\t\toverflow:hidden;\r\n\t\ttext-overflow:ellipsis;\r\n\r\n\t\t&:last-of-type{\r\n\t\t\tborder-right: none;\r\n\t\t}\r\n\r\n\t\t&.tabulator-editing{\r\n\t\t\tborder:1px solid  $editBoxColor;\r\n\t\t\tpadding: 0;\r\n\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-validation-fail{\r\n\t\t\tborder:1px solid $errorColor;\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\r\n\t\t\t\tcolor: $errorColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//hide left resize handle on first column\r\n\t\t&:first-child{\r\n\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//movable row handle\r\n\t\t&.tabulator-row-handle{\r\n\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\t//handle holder\r\n\t\t\t.tabulator-row-handle-box{\r\n\t\t\t\twidth:80%;\r\n\r\n\t\t\t\t//Hamburger element\r\n\t\t\t\t.tabulator-row-handle-bar{\r\n\t\t\t\t\twidth:100%;\r\n\t\t\t\t\theight:3px;\r\n\t\t\t\t\tmargin-top:2px;\r\n\t\t\t\t\tbackground:#666;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-branch{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:9px;\r\n\t\t\twidth:7px;\r\n\r\n\t\t\tmargin-top:-9px;\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder-bottom-left-radius:1px;\r\n\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-control{\r\n\r\n\t\t\tdisplay:inline-flex;\r\n\t\t\tjustify-content:center;\r\n\t\t\talign-items:center;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:11px;\r\n\t\t\twidth:11px;\r\n\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder:1px solid $rowTextColor;\r\n\t\t\tborder-radius:2px;\r\n\t\t\tbackground:rgba(0, 0, 0, .1);\r\n\r\n\t\t\toverflow:hidden;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\tcursor:pointer;\r\n\t\t\t\tbackground:rgba(0, 0, 0, .2);\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-collapse{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: transparent;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-expand{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: $rowTextColor;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t.tabulator-responsive-collapse-toggle{\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\t\t\tjustify-content:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\theight:15px;\r\n\t\t\twidth:15px;\r\n\r\n\t\t\tborder-radius:20px;\r\n\t\t\tbackground:#666;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:1.1em;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\topacity:.7;\r\n\t\t\t}\r\n\r\n\t\t\t&.open{\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\t\tdisplay:initial;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-open{\r\n\t\t\t\t\tdisplay:none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\tdisplay:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-traffic-light{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\theight:14px;\r\n\t\t\twidth:14px;\r\n\r\n\t\t\tborder-radius:14px;\r\n\t\t}\r\n\t}\r\n\r\n\t//row grouping element\r\n\t&.tabulator-group{\r\n\r\n\t\tbox-sizing:border-box;\r\n\t\tborder-bottom:1px solid #999;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tborder-top:1px solid #999;\r\n\t\tpadding:5px;\r\n\t\tpadding-left:10px;\r\n\t\tbackground:#fafafa;\r\n\t\tfont-weight:bold;\r\n\r\n\t\tmin-width: 100%;\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\t\t\tbackground-color:rgba(0,0,0,.1);\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-visible{\r\n\t\t\t.tabulator-arrow{\r\n\t\t\t\tmargin-right:10px;\r\n\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\tborder-bottom: 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-1{\r\n\t\t\tpadding-left:30px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-2{\r\n\t\t\tpadding-left:50px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-3{\r\n\t\t\tpadding-left:70px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-4{\r\n\t\t\tpadding-left:90px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-5{\r\n\t\t\tpadding-left:110px;\r\n\t\t}\r\n\r\n\t\t.tabulator-group-toggle{\r\n\t\t\tdisplay: inline-block;\r\n\t\t}\r\n\r\n\t\t//sorting arrow\r\n\t\t.tabulator-arrow{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t\tmargin-right:16px;\r\n\t\t\tborder-top: 6px solid transparent;\r\n\t\t\tborder-bottom: 6px solid transparent;\r\n\t\t\tborder-right: 0;\r\n\t\t\tborder-left: 6px solid $sortArrowActive;\r\n\t\t\tvertical-align:middle;\r\n\t\t}\r\n\r\n\t\tspan{\r\n\t\t\tmargin-left:10px;\r\n\t\t\tcolor:#666;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n.tabulator-menu{\r\n\tposition: absolute;\r\n\tdisplay:inline-block;\r\n\tbox-sizing:border-box;\r\n\r\n\tbackground:$rowBackgroundColor;\r\n\tborder:1px solid $rowBorderColor;\r\n\tbox-shadow: 0 0 5px 0 rgba(0, 0, 0, .2);\r\n\r\n\tfont-size:$textSize;\r\n\r\n\toverflow-y:auto;\r\n\t-webkit-overflow-scrolling: touch;\r\n\r\n\tz-index: 10000;\r\n\r\n\t.tabulator-menu-item{\r\n\r\n\t\tpadding:5px 10px;\r\n\r\n\t\tuser-select: none;\r\n\r\n\t\t&.tabulator-menu-item-disabled{\r\n\t\t\topacity: .5;\r\n\t\t}\r\n\r\n\t\t&:not(.tabulator-menu-item-disabled):hover{\r\n\t\t\tcursor: pointer;\r\n\t\t\tbackground: $rowAltBackgroundColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-menu-separator{\r\n\t\tborder-top:1px solid $rowBorderColor;\r\n\t}\r\n}\r\n\r\n.tabulator-edit-select-list{\r\n\tposition: absolute;\r\n\tdisplay:inline-block;\r\n\tbox-sizing:border-box;\r\n\r\n\tmax-height:200px;\r\n\r\n\tbackground:$rowBackgroundColor;\r\n\tborder:1px solid $rowBorderColor;\r\n\r\n\tfont-size:$textSize;\r\n\r\n\toverflow-y:auto;\r\n\t-webkit-overflow-scrolling: touch;\r\n\r\n\tz-index: 10000;\r\n\r\n\t.tabulator-edit-select-list-item{\r\n\t\tpadding:4px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\r\n\t\t&.active{\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tbackground:$editBoxColor;\r\n\r\n\t\t\t&.focused{\r\n\t\t\t\toutline:1px solid rgba($rowBackgroundColor, .5);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.focused{\r\n\t\t\toutline:1px solid $editBoxColor;\r\n\t\t}\r\n\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tbackground:$editBoxColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-edit-select-list-notice{\r\n\t\tpadding:4px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\t\ttext-align: center;\r\n\t}\r\n\r\n\t.tabulator-edit-select-list-group{\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\tpadding:4px;\r\n\t\tpadding-top:6px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\t\tfont-weight:bold;\r\n\t}\r\n}\r\n\r\n// Table print styling\r\n\r\n.tabulator-print-fullscreen{\r\n\tposition: absolute;\r\n\ttop:0;\r\n\tbottom:0;\r\n\tleft:0;\r\n\tright:0;\r\n\r\n\tz-index: 10000;\r\n}\r\n\r\nbody.tabulator-print-fullscreen-hide>*:not(.tabulator-print-fullscreen){\r\n\tdisplay:none !important;\r\n}\r\n\r\n.tabulator-print-table{\r\n\tborder-collapse: collapse;\r\n\r\n\t//row grouping element\r\n\t.tabulator-print-table-group{\r\n\r\n\t\tbox-sizing:border-box;\r\n\t\tborder-bottom:1px solid #999;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tborder-top:1px solid #999;\r\n\t\tpadding:5px;\r\n\t\tpadding-left:10px;\r\n\t\tbackground:#fafafa;\r\n\t\tfont-weight:bold;\r\n\r\n\t\tmin-width: 100%;\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\t\t\tbackground-color:rgba(0,0,0,.1);\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-visible{\r\n\t\t\t.tabulator-arrow{\r\n\t\t\t\tmargin-right:10px;\r\n\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\tborder-bottom: 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-1{\r\n\t\t\ttd{\r\n\t\t\t\tpadding-left:30px !important;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-2{\r\n\t\t\ttd{\r\n\t\t\t\tpadding-left:50px !important;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-3{\r\n\t\t\ttd{\r\n\t\t\t\tpadding-left:70px !important;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-4{\r\n\t\t\ttd{\r\n\t\t\t\tpadding-left:90px !important;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-5{\r\n\t\t\ttd{\r\n\t\t\t\tpadding-left:110px !important;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-group-toggle{\r\n\t\t\tdisplay: inline-block;\r\n\t\t}\r\n\r\n\t\t//sorting arrow\r\n\t\t.tabulator-arrow{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t\tmargin-right:16px;\r\n\t\t\tborder-top: 6px solid transparent;\r\n\t\t\tborder-bottom: 6px solid transparent;\r\n\t\t\tborder-right: 0;\r\n\t\t\tborder-left: 6px solid $sortArrowActive;\r\n\t\t\tvertical-align:middle;\r\n\t\t}\r\n\r\n\t\tspan{\r\n\t\t\tmargin-left:10px;\r\n\t\t\tcolor:#666;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-data-tree-branch{\r\n\t\tdisplay:inline-block;\r\n\t\tvertical-align:middle;\r\n\r\n\t\theight:9px;\r\n\t\twidth:7px;\r\n\r\n\t\tmargin-top:-9px;\r\n\t\tmargin-right:5px;\r\n\r\n\t\tborder-bottom-left-radius:1px;\r\n\r\n\t\tborder-left:2px solid $rowBorderColor;\r\n\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t}\r\n\r\n\t.tabulator-data-tree-control{\r\n\r\n\t\tdisplay:inline-flex;\r\n\t\tjustify-content:center;\r\n\t\talign-items:center;\r\n\t\tvertical-align:middle;\r\n\r\n\t\theight:11px;\r\n\t\twidth:11px;\r\n\r\n\t\tmargin-right:5px;\r\n\r\n\t\tborder:1px solid $rowTextColor;\r\n\t\tborder-radius:2px;\r\n\t\tbackground:rgba(0, 0, 0, .1);\r\n\r\n\t\toverflow:hidden;\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\t\t\tbackground:rgba(0, 0, 0, .2);\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-control-collapse{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tposition: relative;\r\n\r\n\t\t\theight: 7px;\r\n\t\t\twidth: 1px;\r\n\r\n\t\t\tbackground: transparent;\r\n\r\n\t\t\t&:after {\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tcontent: \"\";\r\n\t\t\t\tleft: -3px;\r\n\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\theight: 1px;\r\n\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-control-expand{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tposition: relative;\r\n\r\n\t\t\theight: 7px;\r\n\t\t\twidth: 1px;\r\n\r\n\t\t\tbackground: $rowTextColor;\r\n\r\n\t\t\t&:after {\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tcontent: \"\";\r\n\t\t\t\tleft: -3px;\r\n\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\theight: 1px;\r\n\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n"]}
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/css/tabulator_site.css b/app/static/vendors/tabulator/css/tabulator_site.css
deleted file mode 100644 (file)
index 7139757..0000000
+++ /dev/null
@@ -1,993 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-.tabulator {
-  position: relative;
-  border-bottom: 5px solid #293146;
-  background-color: #fff;
-  font-size: 14px;
-  text-align: left;
-  overflow: hidden;
-  -ms-transform: translatez(0);
-  transform: translatez(0);
-}
-
-.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableHolder .tabulator-table {
-  min-width: 100%;
-}
-
-.tabulator[tabulator-layout="fitDataTable"] {
-  display: inline-block;
-}
-
-.tabulator[tabulator-layout="fitColumns"] .tabulator-row .tabulator-cell:last-of-type {
-  border-right: none;
-}
-
-.tabulator.tabulator-block-select {
-  -webkit-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-}
-
-.tabulator .tabulator-header {
-  position: relative;
-  box-sizing: border-box;
-  width: 100%;
-  /* border-bottom: 3px solid #003268; */
-  background-color: #293146;
-  color: #fff;
-  font-weight: bold;
-  white-space: nowrap;
-  overflow: hidden;
-  -moz-user-select: none;
-  -khtml-user-select: none;
-  -webkit-user-select: none;
-  -o-user-select: none;
-}
-
-.tabulator .tabulator-header.tabulator-header-hidden {
-  display: none;
-}
-
-.tabulator .tabulator-header .tabulator-col {
-  display: inline-block;
-  position: relative;
-  box-sizing: border-box;
-  border-right: 1px solid #aaa;
-  background-color: #293146;
-  text-align: left;
-  vertical-align: bottom;
-  overflow: hidden;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-moving {
-  position: absolute;
-  /* border: 1px solid #3FB449; */
-  background: #090909;
-  pointer-events: none;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-col-content {
-  box-sizing: border-box;
-  position: relative;
-  padding: 8px;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button {
-  padding: 0 8px;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button:hover {
-  cursor: pointer;
-  opacity: .6;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {
-  box-sizing: border-box;
-  width: 100%;
-  white-space: nowrap;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  vertical-align: bottom;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {
-  box-sizing: border-box;
-  width: 100%;
-  border: 1px solid #999;
-  padding: 1px;
-  background: #fff;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {
-  display: inline-block;
-  position: absolute;
-  top: 14px;
-  right: 8px;
-  width: 0;
-  height: 0;
-  border-left: 6px solid transparent;
-  border-right: 6px solid transparent;
-  border-bottom: 6px solid #bbb;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {
-  position: relative;
-  display: -ms-flexbox;
-  display: flex;
-  border-top: 1px solid #aaa;
-  overflow: hidden;
-  margin-right: -1px;
-}
-
-.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev {
-  display: none;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-header-filter {
-  position: relative;
-  box-sizing: border-box;
-  margin-top: 2px;
-  width: 100%;
-  text-align: center;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {
-  height: auto !important;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {
-  margin-top: 3px;
-}
-
-.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {
-  width: 0;
-  height: 0;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {
-  padding-right: 25px;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover {
-  cursor: pointer;
-  background-color: #090909;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-arrow {
-  border-top: none;
-  border-bottom: 6px solid #bbb;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="asc"] .tabulator-col-content .tabulator-arrow {
-  border-top: none;
-  /* border-bottom: 6px solid #3FB449; */
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="desc"] .tabulator-col-content .tabulator-arrow {
-  border-top: 6px solid #3FB449;
-  border-bottom: none;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {
-  -ms-writing-mode: tb-rl;
-      writing-mode: vertical-rl;
-  text-orientation: mixed;
-  display: -ms-flexbox;
-  display: flex;
-  -ms-flex-align: center;
-      align-items: center;
-  -ms-flex-pack: center;
-      justify-content: center;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {
-  -ms-transform: rotate(180deg);
-      transform: rotate(180deg);
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {
-  padding-right: 0;
-  padding-top: 20px;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {
-  padding-right: 0;
-  padding-bottom: 20px;
-}
-
-.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-arrow {
-  right: calc(50% - 6px);
-}
-
-.tabulator .tabulator-header .tabulator-frozen {
-  display: inline-block;
-  position: absolute;
-  z-index: 10;
-}
-
-.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {
-  border-right: 2px solid #aaa;
-}
-
-.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {
-  border-left: 2px solid #aaa;
-}
-
-.tabulator .tabulator-header .tabulator-calcs-holder {
-  box-sizing: border-box;
-  min-width: 600%;
-  background: #3c3c3c !important;
-  border-top: 1px solid #aaa;
-  overflow: hidden;
-}
-
-.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {
-  background: #3c3c3c !important;
-}
-
-.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {
-  display: none;
-}
-
-.tabulator .tabulator-header .tabulator-frozen-rows-holder {
-  min-width: 600%;
-}
-
-.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {
-  display: none;
-}
-
-.tabulator .tabulator-tableHolder {
-  position: relative;
-  width: 100%;
-  white-space: nowrap;
-  overflow: auto;
-  -webkit-overflow-scrolling: touch;
-}
-
-.tabulator .tabulator-tableHolder:focus {
-  outline: none;
-}
-
-.tabulator .tabulator-tableHolder .tabulator-placeholder {
-  box-sizing: border-box;
-  display: -ms-flexbox;
-  display: flex;
-  -ms-flex-align: center;
-      align-items: center;
-  width: 100%;
-}
-
-.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode="virtual"] {
-  min-height: 100%;
-  min-width: 100%;
-}
-
-.tabulator .tabulator-tableHolder .tabulator-placeholder span {
-  display: inline-block;
-  margin: 0 auto;
-  padding: 10px;
-  color: #3FB449;
-  font-weight: bold;
-  font-size: 20px;
-}
-
-.tabulator .tabulator-tableHolder .tabulator-table {
-  position: relative;
-  display: inline-block;
-  background-color: #fff;
-  white-space: nowrap;
-  overflow: visible;
-  color: #333;
-}
-
-.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs {
-  font-weight: bold;
-  background: #484848 !important;
-  color: #fff;
-}
-
-.tabulator .tabulator-footer {
-  padding: 5px 10px;
-  padding-top: 8px;
-  /* border-top: 3px solid #3FB449; */
-  background-color: #293146;
-  text-align: right;
-  color: #293146;
-  font-weight: bold;
-  white-space: nowrap;
-  -ms-user-select: none;
-      user-select: none;
-  -moz-user-select: none;
-  -khtml-user-select: none;
-  -webkit-user-select: none;
-  -o-user-select: none;
-}
-
-.tabulator .tabulator-footer .tabulator-calcs-holder {
-  box-sizing: border-box;
-  width: calc(100% + 20px);
-  margin: -8px -10px 8px -10px;
-  text-align: left;
-  background: #3c3c3c !important;
-  border-bottom: 1px solid #aaa;
-  overflow: hidden;
-}
-
-.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {
-  background: #3c3c3c !important;
-  color: #fff !important;
-}
-
-.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {
-  display: none;
-}
-
-.tabulator .tabulator-footer .tabulator-calcs-holder:only-child {
-  margin-bottom: -5px;
-  border-bottom: none;
-}
-
-.tabulator .tabulator-footer .tabulator-paginator label {
-  color: #fff;
-}
-
-.tabulator .tabulator-footer .tabulator-page-size {
-  display: inline-block;
-  margin: 0 5px;
-  padding: 2px 5px;
-  border: 1px solid #aaa;
-  border-radius: 3px;
-}
-
-.tabulator .tabulator-footer .tabulator-pages {
-  margin: 0 7px;
-}
-
-.tabulator .tabulator-footer .tabulator-page {
-  display: inline-block;
-  margin: 0 2px;
-  padding: 2px 5px;
-  border: 1px solid #aaa;
-  border-radius: 3px;
-  background: #fff;
-  color: #293146;
-  font-family: inherit;
-  font-weight: inherit;
-  font-size: inherit;
-}
-
-.tabulator .tabulator-footer .tabulator-page.active {
-  /* color: #3FB449; */
-}
-
-.tabulator .tabulator-footer .tabulator-page:disabled {
-  opacity: .5;
-}
-
-.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {
-  cursor: pointer;
-  background: rgba(0, 0, 0, 0.2);
-  color: #fff;
-}
-
-.tabulator .tabulator-col-resize-handle {
-  position: absolute;
-  right: 0;
-  top: 0;
-  bottom: 0;
-  width: 5px;
-}
-
-.tabulator .tabulator-col-resize-handle.prev {
-  left: 0;
-  right: auto;
-}
-
-.tabulator .tabulator-col-resize-handle:hover {
-  cursor: ew-resize;
-}
-
-.tabulator .tabulator-loader {
-  position: absolute;
-  display: -ms-flexbox;
-  display: flex;
-  -ms-flex-align: center;
-      align-items: center;
-  top: 0;
-  left: 0;
-  z-index: 100;
-  height: 100%;
-  width: 100%;
-  background: rgba(0, 0, 0, 0.4);
-  text-align: center;
-}
-
-.tabulator .tabulator-loader .tabulator-loader-msg {
-  display: inline-block;
-  margin: 0 auto;
-  padding: 10px 20px;
-  border-radius: 10px;
-  background: #fff;
-  font-weight: bold;
-  font-size: 16px;
-}
-
-.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading {
-  border: 4px solid #333;
-  color: #000;
-}
-
-.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error {
-  border: 4px solid #D00;
-  color: #590000;
-}
-
-.tabulator-row {
-  position: relative;
-  box-sizing: border-box;
-  min-height: 22px;
-  background-color: #fff;
-}
-
-.tabulator-row.tabulator-row-even {
-  background-color: #EFEFEF;
-}
-
-.tabulator-row.tabulator-selectable:hover {
-  background-color: #bbb;
-  cursor: pointer;
-}
-
-.tabulator-row.tabulator-selected {
-  background-color: #9ABCEA;
-}
-
-.tabulator-row.tabulator-selected:hover {
-  background-color: #769BCC;
-  cursor: pointer;
-}
-
-.tabulator-row.tabulator-row-moving {
-  border: 1px solid #000;
-  background: #fff;
-}
-
-.tabulator-row.tabulator-moving {
-  position: absolute;
-  border-top: 1px solid #aaa;
-  border-bottom: 1px solid #aaa;
-  pointer-events: none !important;
-  z-index: 15;
-}
-
-.tabulator-row .tabulator-row-resize-handle {
-  position: absolute;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  height: 5px;
-}
-
-.tabulator-row .tabulator-row-resize-handle.prev {
-  top: 0;
-  bottom: auto;
-}
-
-.tabulator-row .tabulator-row-resize-handle:hover {
-  cursor: ns-resize;
-}
-
-.tabulator-row .tabulator-frozen {
-  display: inline-block;
-  position: absolute;
-  background-color: inherit;
-  z-index: 10;
-}
-
-.tabulator-row .tabulator-frozen.tabulator-frozen-left {
-  border-right: 2px solid #aaa;
-}
-
-.tabulator-row .tabulator-frozen.tabulator-frozen-right {
-  border-left: 2px solid #aaa;
-}
-
-.tabulator-row .tabulator-responsive-collapse {
-  box-sizing: border-box;
-  padding: 5px;
-  border-top: 1px solid #aaa;
-  border-bottom: 1px solid #aaa;
-}
-
-.tabulator-row .tabulator-responsive-collapse:empty {
-  display: none;
-}
-
-.tabulator-row .tabulator-responsive-collapse table {
-  font-size: 14px;
-}
-
-.tabulator-row .tabulator-responsive-collapse table tr td {
-  position: relative;
-}
-
-.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {
-  padding-right: 10px;
-}
-
-.tabulator-row .tabulator-cell {
-  display: inline-block;
-  position: relative;
-  box-sizing: border-box;
-  padding: 6px;
-  border-right: 1px solid #aaa;
-  vertical-align: middle;
-  white-space: nowrap;
-  overflow: hidden;
-  text-overflow: ellipsis;
-}
-
-.tabulator-row .tabulator-cell.tabulator-editing {
-  border: 1px solid #1D68CD;
-  padding: 0;
-}
-
-.tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {
-  border: 1px;
-  background: transparent;
-}
-
-.tabulator-row .tabulator-cell.tabulator-validation-fail {
-  border: 1px solid #dd0000;
-}
-
-.tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {
-  border: 1px;
-  background: transparent;
-  color: #dd0000;
-}
-
-.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev {
-  display: none;
-}
-
-.tabulator-row .tabulator-cell.tabulator-row-handle {
-  display: -ms-inline-flexbox;
-  display: inline-flex;
-  -ms-flex-align: center;
-      align-items: center;
-  -moz-user-select: none;
-  -khtml-user-select: none;
-  -webkit-user-select: none;
-  -o-user-select: none;
-}
-
-.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {
-  width: 80%;
-}
-
-.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {
-  width: 100%;
-  height: 3px;
-  margin-top: 2px;
-  background: #3FB449;
-}
-
-.tabulator-row .tabulator-cell .tabulator-data-tree-branch {
-  display: inline-block;
-  vertical-align: middle;
-  height: 9px;
-  width: 7px;
-  margin-top: -9px;
-  margin-right: 5px;
-  border-bottom-left-radius: 1px;
-  border-left: 2px solid #aaa;
-  border-bottom: 2px solid #aaa;
-}
-
-.tabulator-row .tabulator-cell .tabulator-data-tree-control {
-  display: -ms-inline-flexbox;
-  display: inline-flex;
-  -ms-flex-pack: center;
-      justify-content: center;
-  -ms-flex-align: center;
-      align-items: center;
-  vertical-align: middle;
-  height: 11px;
-  width: 11px;
-  margin-right: 5px;
-  border: 1px solid #333;
-  border-radius: 2px;
-  background: rgba(0, 0, 0, 0.1);
-  overflow: hidden;
-}
-
-.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {
-  cursor: pointer;
-  background: rgba(0, 0, 0, 0.2);
-}
-
-.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {
-  display: inline-block;
-  position: relative;
-  height: 7px;
-  width: 1px;
-  background: transparent;
-}
-
-.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {
-  position: absolute;
-  content: "";
-  left: -3px;
-  top: 3px;
-  height: 1px;
-  width: 7px;
-  background: #333;
-}
-
-.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {
-  display: inline-block;
-  position: relative;
-  height: 7px;
-  width: 1px;
-  background: #333;
-}
-
-.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {
-  position: absolute;
-  content: "";
-  left: -3px;
-  top: 3px;
-  height: 1px;
-  width: 7px;
-  background: #333;
-}
-
-.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {
-  display: -ms-inline-flexbox;
-  display: inline-flex;
-  -ms-flex-align: center;
-      align-items: center;
-  -ms-flex-pack: center;
-      justify-content: center;
-  -moz-user-select: none;
-  -khtml-user-select: none;
-  -webkit-user-select: none;
-  -o-user-select: none;
-  height: 15px;
-  width: 15px;
-  border-radius: 20px;
-  background: #666;
-  color: #fff;
-  font-weight: bold;
-  font-size: 1.1em;
-}
-
-.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {
-  opacity: .7;
-}
-
-.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {
-  display: initial;
-}
-
-.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {
-  display: none;
-}
-
-.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {
-  display: none;
-}
-
-.tabulator-row .tabulator-cell .tabulator-traffic-light {
-  display: inline-block;
-  height: 14px;
-  width: 14px;
-  border-radius: 14px;
-}
-
-.tabulator-row.tabulator-group {
-  box-sizing: border-box;
-  border-right: 1px solid #aaa;
-  border-top: 1px solid #000;
-  /* border-bottom: 2px solid #3FB449; */
-  padding: 5px;
-  padding-left: 10px;
-  background: #293146;
-  color: #fff;
-  font-weight: bold;
-  min-width: 100%;
-}
-
-.tabulator-row.tabulator-group:hover {
-  cursor: pointer;
-  background-color: #090909;
-}
-
-.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {
-  margin-right: 10px;
-  border-left: 6px solid transparent;
-  border-right: 6px solid transparent;
-  border-top: 6px solid #bbb;
-  border-bottom: 0;
-}
-
-.tabulator-row.tabulator-group.tabulator-group-level-1 {
-  padding-left: 30px;
-}
-
-.tabulator-row.tabulator-group.tabulator-group-level-2 {
-  padding-left: 50px;
-}
-
-.tabulator-row.tabulator-group.tabulator-group-level-3 {
-  padding-left: 70px;
-}
-
-.tabulator-row.tabulator-group.tabulator-group-level-4 {
-  padding-left: 90px;
-}
-
-.tabulator-row.tabulator-group.tabulator-group-level-5 {
-  padding-left: 110px;
-}
-
-.tabulator-row.tabulator-group .tabulator-group-toggle {
-  display: inline-block;
-}
-
-.tabulator-row.tabulator-group .tabulator-arrow {
-  display: inline-block;
-  width: 0;
-  height: 0;
-  margin-right: 16px;
-  border-top: 6px solid transparent;
-  border-bottom: 6px solid transparent;
-  border-right: 0;
-  border-left: 6px solid #bbb;
-  vertical-align: middle;
-}
-
-.tabulator-row.tabulator-group span {
-  margin-left: 10px;
-  color: #bbb;
-}
-
-.tabulator-menu {
-  position: absolute;
-  display: inline-block;
-  box-sizing: border-box;
-  background: #fff;
-  border: 1px solid #aaa;
-  box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2);
-  font-size: 14px;
-  overflow-y: auto;
-  -webkit-overflow-scrolling: touch;
-  z-index: 10000;
-}
-
-.tabulator-menu .tabulator-menu-item {
-  padding: 5px 10px;
-  -webkit-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-}
-
-.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled {
-  opacity: .5;
-}
-
-.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover {
-  cursor: pointer;
-  background: #EFEFEF;
-}
-
-.tabulator-menu .tabulator-menu-separator {
-  border-top: 1px solid #aaa;
-}
-
-.tabulator-edit-select-list {
-  position: absolute;
-  display: inline-block;
-  box-sizing: border-box;
-  max-height: 200px;
-  background: #fff;
-  border: 1px solid #aaa;
-  font-size: 14px;
-  overflow-y: auto;
-  -webkit-overflow-scrolling: touch;
-  z-index: 10000;
-}
-
-.tabulator-edit-select-list .tabulator-edit-select-list-item {
-  padding: 4px;
-  color: #333;
-}
-
-.tabulator-edit-select-list .tabulator-edit-select-list-item.active {
-  color: #fff;
-  background: #1D68CD;
-}
-
-.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused {
-  outline: 1px solid rgba(255, 255, 255, 0.5);
-}
-
-.tabulator-edit-select-list .tabulator-edit-select-list-item.focused {
-  outline: 1px solid #1D68CD;
-}
-
-.tabulator-edit-select-list .tabulator-edit-select-list-item:hover {
-  cursor: pointer;
-  color: #fff;
-  background: #1D68CD;
-}
-
-.tabulator-edit-select-list .tabulator-edit-select-list-notice {
-  padding: 4px;
-  color: #333;
-  text-align: center;
-}
-
-.tabulator-edit-select-list .tabulator-edit-select-list-group {
-  border-bottom: 1px solid #aaa;
-  padding: 4px;
-  padding-top: 6px;
-  color: #333;
-  font-weight: bold;
-}
-
-.tabulator-print-fullscreen {
-  position: absolute;
-  top: 0;
-  bottom: 0;
-  left: 0;
-  right: 0;
-  z-index: 10000;
-}
-
-body.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {
-  display: none !important;
-}
-
-.tabulator-print-table {
-  border-collapse: collapse;
-}
-
-.tabulator-print-table .tabulator-print-table-group {
-  box-sizing: border-box;
-  border-right: 1px solid #aaa;
-  border-top: 1px solid #000;
-  border-bottom: 2px solid #3FB449;
-  padding: 5px;
-  padding-left: 10px;
-  background: #293146;
-  color: #fff;
-  font-weight: bold;
-  min-width: 100%;
-}
-
-.tabulator-print-table .tabulator-print-table-group:hover {
-  cursor: pointer;
-  background-color: #090909;
-}
-
-.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow {
-  margin-right: 10px;
-  border-left: 6px solid transparent;
-  border-right: 6px solid transparent;
-  border-top: 6px solid #3FB449;
-  border-bottom: 0;
-}
-
-.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td {
-  padding-left: 30px !important;
-}
-
-.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td {
-  padding-left: 50px !important;
-}
-
-.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td {
-  padding-left: 70px !important;
-}
-
-.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td {
-  padding-left: 90px !important;
-}
-
-.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td {
-  padding-left: 110px !important;
-}
-
-.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle {
-  display: inline-block;
-}
-
-.tabulator-print-table .tabulator-print-table-group .tabulator-arrow {
-  display: inline-block;
-  width: 0;
-  height: 0;
-  margin-right: 16px;
-  border-top: 6px solid transparent;
-  border-bottom: 6px solid transparent;
-  border-right: 0;
-  border-left: 6px solid #3FB449;
-  vertical-align: middle;
-}
-
-.tabulator-print-table .tabulator-print-table-group span {
-  margin-left: 10px;
-  color: #3FB449;
-}
-
-.tabulator-print-table .tabulator-data-tree-branch {
-  display: inline-block;
-  vertical-align: middle;
-  height: 9px;
-  width: 7px;
-  margin-top: -9px;
-  margin-right: 5px;
-  border-bottom-left-radius: 1px;
-  border-left: 2px solid #aaa;
-  border-bottom: 2px solid #aaa;
-}
-
-.tabulator-print-table .tabulator-data-tree-control {
-  display: -ms-inline-flexbox;
-  display: inline-flex;
-  -ms-flex-pack: center;
-      justify-content: center;
-  -ms-flex-align: center;
-      align-items: center;
-  vertical-align: middle;
-  height: 11px;
-  width: 11px;
-  margin-right: 5px;
-  border: 1px solid #333;
-  border-radius: 2px;
-  background: rgba(0, 0, 0, 0.1);
-  overflow: hidden;
-}
-
-.tabulator-print-table .tabulator-data-tree-control:hover {
-  cursor: pointer;
-  background: rgba(0, 0, 0, 0.2);
-}
-
-.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse {
-  display: inline-block;
-  position: relative;
-  height: 7px;
-  width: 1px;
-  background: transparent;
-}
-
-.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {
-  position: absolute;
-  content: "";
-  left: -3px;
-  top: 3px;
-  height: 1px;
-  width: 7px;
-  background: #333;
-}
-
-.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand {
-  display: inline-block;
-  position: relative;
-  height: 7px;
-  width: 1px;
-  background: #333;
-}
-
-.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {
-  position: absolute;
-  content: "";
-  left: -3px;
-  top: 3px;
-  height: 1px;
-  width: 7px;
-  background: #333;
-}
diff --git a/app/static/vendors/tabulator/css/tabulator_site.min.css b/app/static/vendors/tabulator/css/tabulator_site.min.css
deleted file mode 100644 (file)
index 2fc522d..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-.tabulator{position:relative;border-bottom:5px solid #222;background-color:#fff;font-size:14px;text-align:left;overflow:hidden;transform:translatez(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableHolder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitDataTable]{display:inline-block}.tabulator[tabulator-layout=fitColumns] .tabulator-row .tabulator-cell:last-of-type{border-right:none}.tabulator.tabulator-block-select{-webkit-user-select:none;-ms-user-select:none;user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:3px solid #3fb449;background-color:#222;color:#fff;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;border-right:1px solid #aaa;background-color:#222;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #3fb449;background:#090909;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-menu-button:hover{cursor:pointer;opacity:.6}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{box-sizing:border-box;width:100%;border:1px solid #999;padding:1px;background:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{display:inline-block;position:absolute;top:14px;right:8px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:-ms-flexbox;display:flex;border-top:1px solid #aaa;overflow:hidden;margin-right:-1px}.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{position:relative;box-sizing:border-box;margin-top:2px;width:100%;text-align:center}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{width:0;height:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:#090909}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #3fb449}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-arrow{border-top:6px solid #3fb449;border-bottom:none}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{-ms-writing-mode:tb-rl;writing-mode:vertical-rl;text-orientation:mixed;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-right:0;padding-bottom:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-arrow{right:calc(50% - 6px)}.tabulator .tabulator-header .tabulator-frozen{display:inline-block;position:absolute;z-index:10}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;min-width:600%;background:#3c3c3c!important;border-top:1px solid #aaa;overflow:hidden}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#3c3c3c!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-header .tabulator-frozen-rows-holder{min-width:600%}.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableHolder{position:relative;width:100%;white-space:nowrap;overflow:auto;-webkit-overflow-scrolling:touch}.tabulator .tabulator-tableHolder:focus{outline:none}.tabulator .tabulator-tableHolder .tabulator-placeholder{box-sizing:border-box;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;width:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder span{display:inline-block;margin:0 auto;padding:10px;color:#3fb449;font-weight:700;font-size:20px}.tabulator .tabulator-tableHolder .tabulator-table{position:relative;display:inline-block;background-color:#fff;white-space:nowrap;overflow:visible;color:#333}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#484848!important;color:#fff}.tabulator .tabulator-footer{padding:5px 10px;padding-top:8px;border-top:3px solid #3fb449;background-color:#222;text-align:right;color:#222;font-weight:700;white-space:nowrap;-ms-user-select:none;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-footer .tabulator-calcs-holder{box-sizing:border-box;width:calc(100% + 20px);margin:-8px -10px 8px;text-align:left;background:#3c3c3c!important;border-bottom:1px solid #aaa;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#3c3c3c!important;color:#fff!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px;border-bottom:none}.tabulator .tabulator-footer .tabulator-paginator label{color:#fff}.tabulator .tabulator-footer .tabulator-page-size{display:inline-block;margin:0 5px;padding:2px 5px;border:1px solid #aaa;border-radius:3px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{display:inline-block;margin:0 2px;padding:2px 5px;border:1px solid #aaa;border-radius:3px;background:#fff;color:#222;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page.active{color:#3fb449}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}.tabulator .tabulator-col-resize-handle{position:absolute;right:0;top:0;bottom:0;width:5px}.tabulator .tabulator-col-resize-handle.prev{left:0;right:auto}.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}.tabulator .tabulator-loader{position:absolute;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;top:0;left:0;z-index:100;height:100%;width:100%;background:rgba(0,0,0,.4);text-align:center}.tabulator .tabulator-loader .tabulator-loader-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading{border:4px solid #333;color:#000}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error{border:4px solid #d00;color:#590000}.tabulator-row{position:relative;box-sizing:border-box;min-height:22px;background-color:#fff}.tabulator-row.tabulator-row-even{background-color:#efefef}.tabulator-row.tabulator-selectable:hover{background-color:#bbb;cursor:pointer}.tabulator-row.tabulator-selected{background-color:#9abcea}.tabulator-row.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}.tabulator-row.tabulator-row-moving{border:1px solid #000;background:#fff}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #aaa;border-bottom:1px solid #aaa;pointer-events:none!important;z-index:15}.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #aaa;border-bottom:1px solid #aaa}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:14px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:6px;border-right:1px solid #aaa;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{border:1px;background:transparent}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator-row .tabulator-cell.tabulator-row-handle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{width:100%;height:3px;margin-top:2px;background:#3fb449}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #aaa;border-bottom:2px solid #aaa}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;height:15px;width:15px;border-radius:20px;background:#666;color:#fff;font-weight:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{opacity:.7}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open,.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{display:inline-block;height:14px;width:14px;border-radius:14px}.tabulator-row.tabulator-group{box-sizing:border-box;border-right:1px solid #aaa;border-top:1px solid #000;border-bottom:2px solid #3fb449;padding:5px;padding-left:10px;background:#222;color:#fff;font-weight:700;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:#090909}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #3fb449;border-bottom:0}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #3fb449;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#3fb449}.tabulator-menu{position:absolute;display:inline-block;box-sizing:border-box;background:#fff;border:1px solid #aaa;box-shadow:0 0 5px 0 rgba(0,0,0,.2);font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-menu .tabulator-menu-item{padding:5px 10px;-webkit-user-select:none;-ms-user-select:none;user-select:none}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled{opacity:.5}.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{cursor:pointer;background:#efefef}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #aaa}.tabulator-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;background:#fff;border:1px solid #aaa;font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-edit-select-list .tabulator-edit-select-list-item{padding:4px;color:#333}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item.active.focused{outline:1px solid hsla(0,0%,100%,.5)}.tabulator-edit-select-list .tabulator-edit-select-list-item.focused{outline:1px solid #1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{cursor:pointer;color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-notice{padding:4px;color:#333;text-align:center}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #aaa;padding:4px;padding-top:6px;color:#333;font-weight:700}.tabulator-print-fullscreen{position:absolute;top:0;bottom:0;left:0;right:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse}.tabulator-print-table .tabulator-print-table-group{box-sizing:border-box;border-right:1px solid #aaa;border-top:1px solid #000;border-bottom:2px solid #3fb449;padding:5px;padding-left:10px;background:#222;color:#fff;font-weight:700;min-width:100%}.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:#090909}.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #3fb449;border-bottom:0}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td{padding-left:30px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td{padding-left:50px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td{padding-left:70px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td{padding-left:90px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td{padding-left:110px!important}.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle{display:inline-block}.tabulator-print-table .tabulator-print-table-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #3fb449;vertical-align:middle}.tabulator-print-table .tabulator-print-table-group span{margin-left:10px;color:#3fb449}.tabulator-print-table .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #aaa;border-bottom:2px solid #aaa}.tabulator-print-table .tabulator-data-tree-control{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}
-/*# sourceMappingURL=tabulator_site.min.css.map */
diff --git a/app/static/vendors/tabulator/css/tabulator_site.min.css.map b/app/static/vendors/tabulator/css/tabulator_site.min.css.map
deleted file mode 100644 (file)
index 6970f0b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["tabulator_site.scss"],"names":[],"mappings":"AAyCA,WACC,kBAAkB,AAElB,6BAvCgB,AAyChB,sBA1CqB,AA4CrB,eA1Ca,AA2Cb,gBAAgB,AAChB,gBAAe,AAMf,uBAAwB,CAigBxB,AAhhBD,iFAoBI,cAAc,CACd,AArBJ,0CA0BE,oBAAqB,CACrB,AA3BF,oFAiCK,iBAAkB,CAClB,AAlCL,kCAyCE,yBAAiB,AAAjB,qBAAiB,AAAjB,gBAAiB,CACjB,AA1CF,6BA8CE,kBAAiB,AACjB,sBAAsB,AAEtB,WAAU,AAEV,gCAhF2B,AAiF3B,sBApFyB,AAqFzB,WApFmB,AAqFnB,gBAAgB,AAEhB,mBAAmB,AACnB,gBAAe,AAEf,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAmPpB,AAjTF,qDAiEG,YAAY,CACZ,AAlEH,4CAsEG,qBAAoB,AAEpB,kBAAiB,AACjB,sBAAqB,AACrB,4BAxGoB,AAyGpB,sBA3GwB,AA4GxB,gBAAe,AACf,sBAAsB,AACtB,eAAgB,CAqLhB,AAnQH,6DAiFI,kBAAkB,AAClB,yBA/GyB,AAgHzB,mBAA8C,AAC9C,mBAAoB,CACpB,AArFJ,mEAyFI,sBAAqB,AACrB,kBAAkB,AAClB,WAAW,CAgDX,AA3IJ,iGA+FK,aAAc,CAMd,AArGL,uGAkGM,eAAe,AACf,UAAW,CACX,AApGN,wFAyGK,sBAAqB,AACrB,WAAW,AAEX,mBAAmB,AACnB,gBAAgB,AAChB,uBAAuB,AACvB,qBAAqB,CAarB,AA5HL,gHAmHM,sBAAsB,AACtB,WAAW,AAEX,sBAAqB,AAErB,YAAW,AAEX,eAAgB,CAChB,AA3HN,oFAgIK,qBAAqB,AACrB,kBAAkB,AAClB,SAAQ,AACR,UAAS,AACT,QAAQ,AACR,SAAS,AACT,kCAAkC,AAClC,mCAAmC,AACnC,4BAhKmB,CAiKnB,AAzIL,0FAkJK,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AAEb,0BAnLkB,AAoLlB,gBAAgB,AAEhB,iBAAiB,CACjB,AAzJL,0FA+JK,YAAa,CACb,AAhKL,qEAqKI,kBAAkB,AAClB,sBAAsB,AACtB,eAAc,AACd,WAAU,AACV,iBAAkB,CAiBlB,AA1LJ,8EA6KK,qBAAsB,CACtB,AA9KL,yEAiLK,cAAe,CACf,AAlLL,sFAsLO,QAAS,AACT,QAAS,CACV,AAxLN,oFA+LK,kBAAkB,CAClB,AAhML,qEAmMK,eAAc,AACd,wBAAoD,CACpD,AArML,uHAyMM,gBAAgB,AAChB,4BAlOkB,CAmOlB,AA3MN,sHAgNM,gBAAgB,AAChB,+BA1OmB,CA2OnB,AAlNN,uHAuNM,6BAhPmB,AAiPnB,kBAAmB,CACnB,AAzNN,+GAgOM,uBAAyB,AAAzB,yBAAyB,AACzB,uBAAuB,AAEvB,oBAAY,AAAZ,aAAY,AACZ,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,sBAAsB,CACtB,AAtON,oHA2OM,wBAAyB,CACzB,AA5ON,2GAiPM,gBAAe,AACf,gBAAgB,CAChB,AAnPN,uIAuPO,gBAAe,AACf,mBAAmB,CACnB,AAzPP,uGA8PM,qBAAqB,CACrB,AA/PN,+CAsQG,qBAAqB,AACrB,kBAAkB,AAIlB,UAAW,CASX,AApRH,qEA8QI,2BAjSgB,CAkShB,AA/QJ,sEAkRI,0BArSgB,CAsShB,AAnRJ,qDAuRG,sBAAqB,AACrB,eAAc,AAEd,6BAA0D,AAU1D,0BAvTiB,AA0TjB,eAAgB,CAChB,AAxSH,oEA6RI,4BAA0D,CAK1D,AAlSJ,iGAgSK,YAAa,CACb,AAjSL,2DA2SG,cAAc,CAKd,AAhTH,iEA8SI,YAAa,CACb,AA/SJ,kCAqTE,kBAAiB,AACjB,WAAU,AACV,mBAAmB,AACnB,cAAa,AACb,gCAAiC,CAgDjC,AAzWF,wCA4TG,YAAa,CACb,AA7TH,yDAiUG,sBAAqB,AACrB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AAOlB,UAAU,CAYV,AAtVH,wFAsUI,gBAAe,AACf,cAAc,CACd,AAxUJ,8DA6UI,qBAAqB,AAErB,cAAa,AACb,aAAY,AAEZ,cA/WyB,AAgXzB,gBAAiB,AACjB,cAAe,CACf,AArVJ,mDA0VG,kBAAiB,AACjB,qBAAoB,AACpB,sBAjXqB,AAkXrB,mBAAmB,AACnB,iBAAgB,AAChB,UAjXe,CA0Xf,AAxWH,kFAmWK,gBAAiB,AACjB,6BAA0D,AAC1D,UApYgB,CAqYhB,AAtWL,6BA8WE,iBAAgB,AAChB,gBAAe,AACf,6BArX2B,AAsX3B,sBAzXyB,AA0XzB,iBAAgB,AAChB,WA1XmB,AA2XnB,gBAAgB,AAChB,mBAAkB,AAClB,qBAAgB,AAAhB,iBAAgB,AAEhB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAuFpB,AAldF,qDA8XG,sBAAqB,AACrB,wBAAuB,AACvB,sBAA2B,AAE3B,gBAAgB,AAEhB,6BAA0D,AAY1D,6BAnaiB,AAqajB,eAAgB,CAMhB,AAxZH,oEAuYI,6BAA0D,AAC1D,oBAAiC,CAKjC,AA7YJ,iGA2YK,YAAa,CACb,AA5YL,gEAqZI,mBAAkB,AAClB,kBAAkB,CAClB,AAvZJ,wDA6ZI,UAAU,CACV,AA9ZJ,kDAmaG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBA9aoB,AA+apB,iBAAiB,CACjB,AA1aH,8CA8aG,YAAY,CACZ,AA/aH,6CAmbG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBA9boB,AA+bpB,kBAAiB,AAEjB,gBAAe,AAEf,WApckB,AAqclB,oBAAmB,AACnB,oBAAmB,AACnB,iBAAiB,CAiBjB,AAjdH,oDAmcI,aAxcyB,CAyczB,AApcJ,sDAucI,UAAU,CACV,AAxcJ,kEA4cK,eAAc,AACd,0BAAyB,AACzB,UAAU,CACV,AA/cL,wCAsdE,kBAAiB,AACjB,QAAO,AACP,MAAK,AACL,SAAQ,AACR,SAAS,CAUT,AApeF,6CA6dG,OAAM,AACN,UAAU,CACV,AA/dH,8CAkeG,gBAAgB,CAChB,AAneH,6BAyeE,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AAElB,MAAK,AACL,OAAM,AACN,YAAW,AAEX,YAAW,AACX,WAAU,AACV,0BAAyB,AACzB,iBAAiB,CA2BjB,AA/gBF,mDAwfG,qBAAoB,AAEpB,cAAa,AACb,kBAAiB,AAEjB,mBAAkB,AAElB,gBAAe,AACf,gBAAgB,AAChB,cAAc,CAad,AA9gBH,qEAqgBI,sBAAqB,AACrB,UAAU,CACV,AAvgBJ,mEA2gBI,sBAAqB,AACrB,aAAa,CACb,AAMJ,eACC,kBAAkB,AAClB,sBAAsB,AACtB,gBAA0C,AAC1C,qBA5iBuB,CA45BvB,AApXD,kCAQE,wBA/iB4B,CAgjB5B,AATF,0CAYE,sBAhjBsB,AAijBtB,cAAe,CACf,AAdF,kCAiBE,wBAnjB6B,CAojB7B,AAlBF,wCAqBE,yBAtjBkC,AAujBlC,cAAe,CACf,AAvBF,oCA0BE,sBAAqB,AACrB,eAAe,CACf,AA5BF,gCA+BE,kBAAkB,AAElB,0BAvkBkB,AAwkBlB,6BAxkBkB,AA0kBlB,8BAA+B,AAC/B,UAAU,CACV,AAtCF,4CA0CE,kBAAiB,AACjB,QAAO,AACP,SAAQ,AACR,OAAM,AACN,UAAU,CAUV,AAxDF,iDAiDG,MAAK,AACL,WAAW,CACX,AAnDH,kDAsDG,gBAAgB,CAChB,AAvDH,iCA2DE,qBAAqB,AACrB,kBAAkB,AAElB,yBAAyB,AAEzB,UAAW,CASX,AAzEF,uDAmEG,2BAzmBiB,CA0mBjB,AApEH,wDAuEG,0BA7mBiB,CA8mBjB,AAxEH,8CA4EE,sBAAqB,AAErB,YAAW,AAEX,0BAtnBkB,AAunBlB,4BAvnBkB,CA0oBlB,AApGF,oDAoFG,YAAY,CACZ,AArFH,oDAwFG,cA9oBW,CAypBX,AAnGH,0DA4FK,iBAAkB,CAKlB,AAjGL,wEA+FM,kBAAkB,CAClB,AAhGN,+BAwGE,qBAAoB,AACpB,kBAAkB,AAClB,sBAAqB,AACrB,YAAW,AACX,4BAlpBkB,AAmpBlB,sBAAqB,AACrB,mBAAkB,AAClB,gBAAe,AACf,sBAAsB,CA0LtB,AA1SF,iDAoHG,yBAnpBkB,AAopBlB,SAAU,CAMV,AA3HH,+GAwHI,WAAU,AACV,sBAAsB,CACtB,AA1HJ,yDA8HG,qBA5pBgB,CAmqBhB,AArIH,+HAgII,WAAU,AACV,uBAAsB,AAEtB,UAjqBe,CAkqBf,AApIJ,6EA0II,YAAa,CACb,AA3IJ,oDAiJG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAElB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAcpB,AArKH,8EA2JI,SAAS,CAST,AApKJ,wGA+JK,WAAU,AACV,WAAU,AACV,eAAc,AACd,kBA9sBoB,CA+sBpB,AAnKL,2DAwKG,qBAAoB,AACpB,sBAAqB,AAErB,WAAU,AACV,UAAS,AAET,gBAAe,AACf,iBAAgB,AAEhB,8BAA6B,AAE7B,2BAztBiB,AA0tBjB,4BA1tBiB,CA2tBjB,AArLH,4DAyLG,2BAAmB,AAAnB,oBAAmB,AACnB,qBAAsB,AAAtB,uBAAsB,AACtB,sBAAkB,AAAlB,mBAAkB,AAClB,sBAAqB,AAErB,YAAW,AACX,WAAU,AAEV,iBAAgB,AAEhB,sBAxuBe,AAyuBf,kBAAiB,AACjB,0BAA4B,AAE5B,eAAe,CAmDf,AA1PH,kEA0MI,eAAc,AACd,yBAA4B,CAC5B,AA5MJ,kGA+MI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,sBAAuB,CAavB,AAlOJ,wGAwNK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eArwBa,CAswBb,AAjOL,gGAqOI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,eAhxBc,CA6xBd,AAxPJ,sGA8OK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eA3xBa,CA4xBb,AAvPL,qEA6PG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,uBAAsB,AAEtB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,oBAAoB,AAEpB,YAAW,AACX,WAAU,AAEV,mBAAkB,AAClB,gBAAe,AAEf,WApzBqB,AAqzBrB,gBAAgB,AAChB,eAAe,CAmBf,AAjSH,2EAiRI,UAAU,CACV,AAlRJ,sHAsRK,eAAe,CACf,AAvRL,sOA+RI,YAAY,CACZ,AAhSJ,wDAoSG,qBAAqB,AACrB,YAAW,AACX,WAAU,AAEV,kBAAkB,CAClB,AAzSH,+BA8SE,sBAAqB,AACrB,4BAr1BkB,AAs1BlB,0BAAyB,AACzB,gCAj2B2B,AAk2B3B,YAAW,AACX,kBAAiB,AACjB,gBAv2ByB,AAw2BzB,WAv2BmB,AAw2BnB,gBAAgB,AAEhB,cAAe,CA0Df,AAlXF,qCA2TG,eAAc,AACd,wBAAoD,CACpD,AA7TH,wEAiUI,kBAAiB,AACjB,kCAAkC,AAClC,mCAAmC,AACnC,6BAh3BqB,AAi3BrB,eAAgB,CAChB,AAtUJ,uDA0UG,iBAAiB,CACjB,AA3UH,uDA8UG,iBAAiB,CACjB,AA/UH,uDAkVG,iBAAiB,CACjB,AAnVH,uDAsVG,iBAAiB,CACjB,AAvVH,uDA0VG,kBAAkB,CAClB,AA3VH,uDA8VG,oBAAqB,CACrB,AA/VH,gDAmWG,qBAAqB,AACrB,QAAQ,AACR,SAAS,AACT,kBAAiB,AACjB,iCAAiC,AACjC,oCAAoC,AACpC,eAAe,AACf,8BAt5BsB,AAu5BtB,qBAAqB,CACrB,AA5WH,oCA+WG,iBAAgB,AAChB,aAh6B0B,CAi6B1B,AAKH,gBACC,kBAAkB,AAClB,qBAAoB,AACpB,sBAAqB,AAErB,gBAn6BuB,AAo6BvB,sBAl6BmB,AAm6BnB,oCAAuC,AAEvC,eAr7Ba,AAu7Bb,gBAAe,AACf,iCAAiC,AAEjC,aAAc,CAqBd,AAnCD,qCAkBE,iBAAgB,AAEhB,yBAAiB,AAAjB,qBAAiB,AAAjB,gBAAiB,CAUjB,AA9BF,kEAuBG,UAAW,CACX,AAxBH,8EA2BG,eAAe,AACf,kBAz7B2B,CA07B3B,AA7BH,0CAiCE,yBA77BkB,CA87BlB,AAGF,4BACC,kBAAkB,AAClB,qBAAoB,AACpB,sBAAqB,AAErB,iBAAgB,AAEhB,gBA18BuB,AA28BvB,sBAz8BmB,AA28BnB,eA39Ba,AA69Bb,gBAAe,AACf,iCAAiC,AAEjC,aAAc,CA6Cd,AA5DD,6DAkBE,YAAW,AAEX,UAp9BgB,CA0+BhB,AA1CF,oEAuBG,WA19BqB,AA29BrB,kBAl9BkB,CAu9BlB,AA7BH,4EA2BI,oCA99BoB,CA+9BpB,AA5BJ,qEAgCG,yBA19BkB,CA29BlB,AAjCH,mEAqCG,eAAc,AAEd,WA1+BqB,AA2+BrB,kBAl+BkB,CAm+BlB,AAzCH,+DA6CE,YAAW,AAEX,WA/+BgB,AAg/BhB,iBAAkB,CAClB,AAjDF,8DAoDE,6BAr/BkB,AAu/BlB,YAAW,AACX,gBAAe,AAEf,WAz/BgB,AA0/BhB,eAAgB,CAChB,AAKF,4BACC,kBAAkB,AAClB,MAAK,AACL,SAAQ,AACR,OAAM,AACN,QAAO,AAEP,aAAc,CACd,AAED,uEACC,sBAAuB,CACvB,AAED,uBACC,wBAAyB,CAsKzB,AAvKD,oDAKE,sBAAqB,AACrB,4BArhCkB,AAshClB,0BAAyB,AACzB,gCAjiC2B,AAkiC3B,YAAW,AACX,kBAAiB,AACjB,gBAviCyB,AAwiCzB,WAviCmB,AAwiCnB,gBAAgB,AAEhB,cAAe,CAmEf,AAlFF,0DAkBG,eAAc,AACd,wBAAoD,CACpD,AApBH,6FAwBI,kBAAiB,AACjB,kCAAkC,AAClC,mCAAmC,AACnC,6BAhjCqB,AAijCrB,eAAgB,CAChB,AA7BJ,+EAkCI,2BAA4B,CAC5B,AAnCJ,+EAwCI,2BAA4B,CAC5B,AAzCJ,+EA8CI,2BAA4B,CAC5B,AA/CJ,+EAoDI,2BAA4B,CAC5B,AArDJ,+EA0DI,4BAA6B,CAC7B,AA3DJ,4EA8DG,oBAAqB,CACrB,AA/DH,qEAmEG,qBAAqB,AACrB,QAAQ,AACR,SAAS,AACT,kBAAiB,AACjB,iCAAiC,AACjC,oCAAoC,AACpC,eAAe,AACf,8BA/lCsB,AAgmCtB,qBAAqB,CACrB,AA5EH,yDA+EG,iBAAgB,AAChB,aAzmC0B,CA0mC1B,AAjFH,mDAqFE,qBAAoB,AACpB,sBAAqB,AAErB,WAAU,AACV,UAAS,AAET,gBAAe,AACf,iBAAgB,AAEhB,8BAA6B,AAE7B,2BA/mCkB,AAgnClB,4BAhnCkB,CAinClB,AAlGF,oDAsGE,2BAAmB,AAAnB,oBAAmB,AACnB,qBAAsB,AAAtB,uBAAsB,AACtB,sBAAkB,AAAlB,mBAAkB,AAClB,sBAAqB,AAErB,YAAW,AACX,WAAU,AAEV,iBAAgB,AAEhB,sBA9nCgB,AA+nChB,kBAAiB,AACjB,0BAA4B,AAE5B,eAAe,CAkDf,AAtKF,0DAuHG,eAAc,AACd,yBAA4B,CAC5B,AAzHH,0FA4HG,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,sBAAuB,CAavB,AA/IH,gGAqII,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eA3pCc,CA4pCd,AA9IJ,wFAkJG,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,eAtqCe,CAmrCf,AArKH,8FA2JI,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eAjrCc,CAkrCd","file":"tabulator_site.min.css","sourcesContent":["/* Tabulator v4.7.0 (c) Oliver Folkerd */\n\n\r\n//Main Theme Variables\r\n$backgroundColor: #fff !default; //background color of tabulator\r\n$borderColor:#222 !default; //border to tabulator\r\n$textSize:14px !default; //table text size\r\n\r\n//header themeing\r\n$headerBackgroundColor:#222 !default; //border to tabulator\r\n$headerTextColor:#fff !default; //header text colour\r\n$headerBorderColor:#aaa !default;  //header border color\r\n$headerSeperatorColor:#3FB449 !default; //header bottom seperator color\r\n$headerMargin:4px !default; //padding round header\r\n\r\n//column header arrows\r\n$sortArrowActive: #3FB449 !default;\r\n$sortArrowInactive: #bbb !default;\r\n\r\n//row themeing\r\n$rowBackgroundColor:#fff !default; //table row background color\r\n$rowAltBackgroundColor:#EFEFEF !default; //table row background color\r\n$rowBorderColor:#aaa !default; //table border color\r\n$rowTextColor:#333 !default; //table text color\r\n$rowHoverBackground:#bbb !default; //row background color on hover\r\n\r\n$rowSelectedBackground: #9ABCEA !default; //row background color when selected\r\n$rowSelectedBackgroundHover: #769BCC !default;//row background color when selected and hovered\r\n\r\n$editBoxColor:#1D68CD !default; //border color for edit boxes\r\n$errorColor:#dd0000 !default; //error indication\r\n\r\n//footer themeing\r\n$footerBackgroundColor:#222 !default; //border to tabulator\r\n$footerTextColor:#222 !default; //footer text colour\r\n$footerBorderColor:#aaa !default; //footer border color\r\n$footerSeperatorColor:#3FB449 !default; //footer bottom seperator color\r\n$footerActiveColor:$footerSeperatorColor !default; //footer bottom active text color\r\n\r\n\r\n//Tabulator Containing Element\r\n.tabulator{\r\n\tposition: relative;\r\n\r\n\tborder-bottom: 5px solid $borderColor;\r\n\r\n\tbackground-color: $backgroundColor;\r\n\r\n\tfont-size:$textSize;\r\n\ttext-align: left;\r\n\toverflow:hidden;\r\n\r\n\t-webkit-transform: translatez(0);\r\n\t-moz-transform: translatez(0);\r\n\t-ms-transform: translatez(0);\r\n\t-o-transform: translatez(0);\r\n\ttransform: translatez(0);\r\n\r\n\t&[tabulator-layout=\"fitDataFill\"]{\r\n\t\t.tabulator-tableHolder{\r\n\t\t\t.tabulator-table{\r\n\t\t\t\tmin-width:100%;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t&[tabulator-layout=\"fitDataTable\"]{\r\n\t\tdisplay: inline-block;\r\n\t}\r\n\r\n\t&[tabulator-layout=\"fitColumns\"]{\r\n\t\t.tabulator-row{\r\n\t\t\t.tabulator-cell{\r\n\t\t\t\t&:last-of-type{\r\n\t\t\t\t\tborder-right: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t&.tabulator-block-select{\r\n\t\tuser-select: none;\r\n\t}\r\n\r\n\t//column header containing element\r\n\t.tabulator-header{\r\n\t\tposition:relative;\r\n\t\tbox-sizing: border-box;\r\n\r\n\t\twidth:100%;\r\n\r\n\t\tborder-bottom:3px solid $headerSeperatorColor;\r\n\t\tbackground-color: $headerBackgroundColor;\r\n\t\tcolor: $headerTextColor;\r\n\t\tfont-weight:bold;\r\n\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:hidden;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t&.tabulator-header-hidden{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\t//individual column header element\r\n\t\t.tabulator-col{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tposition:relative;\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tborder-right:1px solid $headerBorderColor;\r\n\t\t\tbackground-color: $headerBackgroundColor;\r\n\t\t\ttext-align:left;\r\n\t\t\tvertical-align: bottom;\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&.tabulator-moving{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tborder:1px solid  $headerSeperatorColor;\r\n\t\t\t\tbackground:darken($headerBackgroundColor, 10%);\r\n\t\t\t\tpointer-events: none;\r\n\t\t\t}\r\n\r\n\t\t\t//hold content of column header\r\n\t\t\t.tabulator-col-content{\r\n\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tpadding:8px;\r\n\r\n\t\t\t\t//header menu button\r\n\t\t\t\t.tabulator-header-menu-button{\r\n\t\t\t\t\tpadding: 0 8px;\r\n\r\n\t\t\t\t\t&:hover{\r\n\t\t\t\t\t\tcursor: pointer;\r\n\t\t\t\t\t\topacity: .6;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//hold title of column header\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\twhite-space: nowrap;\r\n\t\t\t\t\toverflow: hidden;\r\n\t\t\t\t\ttext-overflow: ellipsis;\r\n\t\t\t\t\tvertical-align:bottom;\r\n\r\n\t\t\t\t\t//element to hold title editor\r\n\t\t\t\t\t.tabulator-title-editor{\r\n\t\t\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\t\tborder:1px solid #999;\r\n\r\n\t\t\t\t\t\tpadding:1px;\r\n\r\n\t\t\t\t\t\tbackground: #fff;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//column sorter arrow\r\n\t\t\t\t.tabulator-arrow{\r\n\t\t\t\t\tdisplay: inline-block;\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\ttop:14px;\r\n\t\t\t\t\tright:8px;\r\n\t\t\t\t\twidth: 0;\r\n\t\t\t\t\theight: 0;\r\n\t\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t//complex header column group\r\n\t\t\t&.tabulator-col-group{\r\n\r\n\t\t\t\t//gelement to hold sub columns in column group\r\n\t\t\t\t.tabulator-col-group-cols{\r\n\t\t\t\t\tposition:relative;\r\n\t\t\t\t\tdisplay: flex;\r\n\r\n\t\t\t\t\tborder-top:1px solid $headerBorderColor;\r\n\t\t\t\t\toverflow: hidden;\r\n\r\n\t\t\t\t\tmargin-right:-1px;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//hide left resize handle on first column\r\n\t\t\t&:first-child{\r\n\t\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//header filter containing element\r\n\t\t\t.tabulator-header-filter{\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\tmargin-top:2px;\r\n\t\t\t\twidth:100%;\r\n\t\t\t\ttext-align: center;\r\n\r\n\t\t\t\t//styling adjustment for inbuilt editors\r\n\t\t\t\ttextarea{\r\n\t\t\t\t\theight:auto !important;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsvg{\r\n\t\t\t\t\tmargin-top: 3px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tinput{\r\n\t\t\t\t\t&::-ms-clear {\r\n\t\t\t\t\t  width : 0;\r\n\t\t\t\t\t  height: 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//styling child elements for sortable columns\r\n\t\t\t&.tabulator-sortable{\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tpadding-right:25px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground-color:darken($headerBackgroundColor, 10%);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"none\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"asc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowActive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"desc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\t\t\tborder-bottom: none;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t&.tabulator-col-vertical{\r\n\t\t\t\t.tabulator-col-content{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\twriting-mode: vertical-rl;\r\n\t\t\t\t\t\ttext-orientation: mixed;\r\n\r\n\t\t\t\t\t\tdisplay:flex;\r\n\t\t\t\t\t\talign-items:center;\r\n\t\t\t\t\t\tjustify-content:center;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\ttransform: rotate(180deg);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-sortable{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\tpadding-top:20px;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\t\tpadding-bottom:20px;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t.tabulator-arrow{\r\n\t\t\t\t\t\tright:calc(50% - 6px);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t.tabulator-frozen{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\tposition: absolute;\r\n\r\n\t\t\t// background-color: inherit;\r\n\r\n\t\t\tz-index: 10;\r\n\r\n\t\t\t&.tabulator-frozen-left{\r\n\t\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t&.tabulator-frozen-right{\r\n\t\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tmin-width:600%;\r\n\r\n\t\t\tbackground:lighten($headerBackgroundColor, 10%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:lighten($headerBackgroundColor, 10%) !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\t\t\t// border-bottom:1px solid $headerBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\t\t}\r\n\r\n\t\t.tabulator-frozen-rows-holder{\r\n\t\t\tmin-width:600%;\r\n\r\n\t\t\t&:empty{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//scrolling element to hold table\r\n\t.tabulator-tableHolder{\r\n\t\tposition:relative;\r\n\t\twidth:100%;\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:auto;\r\n\t\t-webkit-overflow-scrolling: touch;\r\n\r\n\t\t&:focus{\r\n\t\t\toutline: none;\r\n\t\t}\r\n\r\n\t\t//default placeholder element\r\n\t\t.tabulator-placeholder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t&[tabulator-render-mode=\"virtual\"]{\r\n\t\t\t\tmin-height:100%;\r\n\t\t\t\tmin-width:100%;\r\n\t\t\t}\r\n\r\n\t\t\twidth:100%;\r\n\r\n\t\t\tspan{\r\n\t\t\t\tdisplay: inline-block;\r\n\r\n\t\t\t\tmargin:0 auto;\r\n\t\t\t\tpadding:10px;\r\n\r\n\t\t\t\tcolor:$headerSeperatorColor;\r\n\t\t\t\tfont-weight: bold;\r\n\t\t\t\tfont-size: 20px;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//element to hold table rows\r\n\t\t.tabulator-table{\r\n\t\t\tposition:relative;\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tbackground-color:$rowBackgroundColor;\r\n\t\t\twhite-space: nowrap;\r\n\t\t\toverflow:visible;\r\n\t\t\tcolor:$rowTextColor;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\t&.tabulator-calcs{\r\n\t\t\t\t\tfont-weight: bold;\r\n\t\t\t\t\tbackground:lighten($headerBackgroundColor, 15%) !important;\r\n\t\t\t\t\tcolor:$headerTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//footer element\r\n\t.tabulator-footer{\r\n\t\tpadding:5px 10px;\r\n\t\tpadding-top:8px;\r\n\t\tborder-top:3px solid $footerSeperatorColor;\r\n\t\tbackground-color: $footerBackgroundColor;\r\n\t\ttext-align:right;\r\n\t\tcolor: $footerTextColor;\r\n\t\tfont-weight:bold;\r\n\t\twhite-space:nowrap;\r\n\t\tuser-select:none;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\twidth:calc(100% + 20px);\r\n\t\t\tmargin:-8px -10px 8px -10px;\r\n\r\n\t\t\ttext-align: left;\r\n\r\n\t\t\tbackground:lighten($footerBackgroundColor, 10%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:lighten($footerBackgroundColor, 10%) !important;\r\n\t\t\t\tcolor:$headerTextColor !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// border-top:1px solid $rowBorderColor;\r\n\t\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&:only-child{\r\n\t\t\t\tmargin-bottom:-5px;\r\n\t\t\t\tborder-bottom:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-paginator{\r\n\t\t\tlabel{\r\n\t\t\t\tcolor:#fff;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//page size select element\r\n\t\t.tabulator-page-size{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 5px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-pages{\r\n\t\t\tmargin:0 7px;\r\n\t\t}\r\n\r\n\t\t//pagination button\r\n\t\t.tabulator-page{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 2px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\r\n\t\t\tbackground:#fff;\r\n\r\n\t\t\tcolor: $footerTextColor;\r\n\t\t\tfont-family:inherit;\r\n\t\t\tfont-weight:inherit;\r\n\t\t\tfont-size:inherit;\r\n\r\n\t\t\t&.active{\r\n\t\t\t\tcolor:$footerActiveColor;\r\n\t\t\t}\r\n\r\n\t\t\t&:disabled{\r\n\t\t\t\topacity:.5;\r\n\t\t\t}\r\n\r\n\t\t\t&:not(.disabled){\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground:rgba(0,0,0,.2);\r\n\t\t\t\t\tcolor:#fff;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//column resize handles\r\n\t.tabulator-col-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\ttop:0;\r\n\t\tbottom:0;\r\n\t\twidth:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\tleft:0;\r\n\t\t\tright:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ew-resize;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//holding div that contains loader and covers tabulator element to prevent interaction\r\n\t.tabulator-loader{\r\n\t\tposition:absolute;\r\n\t\tdisplay: flex;\r\n\t\talign-items:center;\r\n\r\n\t\ttop:0;\r\n\t\tleft:0;\r\n\t\tz-index:100;\r\n\r\n\t\theight:100%;\r\n\t\twidth:100%;\r\n\t\tbackground:rgba(0,0,0,.4);\r\n\t\ttext-align:center;\r\n\r\n\t\t//loading message element\r\n\t\t.tabulator-loader-msg{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 auto;\r\n\t\t\tpadding:10px 20px;\r\n\r\n\t\t\tborder-radius:10px;\r\n\r\n\t\t\tbackground:#fff;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:16px;\r\n\r\n\t\t\t//loading message\r\n\t\t\t&.tabulator-loading{\r\n\t\t\t\tborder:4px solid #333;\r\n\t\t\t\tcolor:#000;\r\n\t\t\t}\r\n\r\n\t\t\t//error message\r\n\t\t\t&.tabulator-error{\r\n\t\t\t\tborder:4px solid #D00;\r\n\t\t\t\tcolor:#590000;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n//row element\r\n.tabulator-row{\r\n\tposition: relative;\r\n\tbox-sizing: border-box;\r\n\tmin-height:$textSize + ($headerMargin * 2);\r\n\tbackground-color: $rowBackgroundColor;\r\n\r\n\r\n\t&.tabulator-row-even{\r\n\t\tbackground-color: $rowAltBackgroundColor;\r\n\t}\r\n\r\n\t&.tabulator-selectable:hover{\r\n\t\tbackground-color:$rowHoverBackground;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t&.tabulator-selected{\r\n\t\tbackground-color:$rowSelectedBackground;\r\n\t}\r\n\r\n\t&.tabulator-selected:hover{\r\n\t\tbackground-color:$rowSelectedBackgroundHover;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t&.tabulator-row-moving{\r\n\t\tborder:1px solid #000;\r\n\t\tbackground:#fff;\r\n\t}\r\n\r\n\t&.tabulator-moving{\r\n\t\tposition: absolute;\r\n\r\n\t\tborder-top:1px solid  $rowBorderColor;\r\n\t\tborder-bottom:1px solid  $rowBorderColor;\r\n\r\n\t\tpointer-events: none !important;\r\n\t\tz-index:15;\r\n\t}\r\n\r\n\t//row resize handles\r\n\t.tabulator-row-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\tbottom:0;\r\n\t\tleft:0;\r\n\t\theight:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\ttop:0;\r\n\t\t\tbottom:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ns-resize;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-frozen{\r\n\t\tdisplay: inline-block;\r\n\t\tposition: absolute;\r\n\r\n\t\tbackground-color: inherit;\r\n\r\n\t\tz-index: 10;\r\n\r\n\t\t&.tabulator-frozen-left{\r\n\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t&.tabulator-frozen-right{\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-responsive-collapse{\r\n\t\tbox-sizing:border-box;\r\n\r\n\t\tpadding:5px;\r\n\r\n\t\tborder-top:1px solid $rowBorderColor;\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\t&:empty{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\ttable{\r\n\t\t\tfont-size:$textSize;\r\n\r\n\t\t\ttr{\r\n\t\t\t\ttd{\r\n\t\t\t\t\tposition: relative;\r\n\r\n\t\t\t\t\t&:first-of-type{\r\n\t\t\t\t\t\tpadding-right:10px;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//cell element\r\n\t.tabulator-cell{\r\n\t\tdisplay:inline-block;\r\n\t\tposition: relative;\r\n\t\tbox-sizing:border-box;\r\n\t\tpadding:6px;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tvertical-align:middle;\r\n\t\twhite-space:nowrap;\r\n\t\toverflow:hidden;\r\n\t\ttext-overflow:ellipsis;\r\n\r\n\r\n\t\t&.tabulator-editing{\r\n\t\t\tborder:1px solid  $editBoxColor;\r\n\t\t\tpadding: 0;\r\n\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-validation-fail{\r\n\t\t\tborder:1px solid $errorColor;\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\r\n\t\t\t\tcolor: $errorColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//hide left resize handle on first column\r\n\t\t&:first-child{\r\n\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//movable row handle\r\n\t\t&.tabulator-row-handle{\r\n\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\t//handle holder\r\n\t\t\t.tabulator-row-handle-box{\r\n\t\t\t\twidth:80%;\r\n\r\n\t\t\t\t//Hamburger element\r\n\t\t\t\t.tabulator-row-handle-bar{\r\n\t\t\t\t\twidth:100%;\r\n\t\t\t\t\theight:3px;\r\n\t\t\t\t\tmargin-top:2px;\r\n\t\t\t\t\tbackground:$sortArrowActive;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-branch{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:9px;\r\n\t\t\twidth:7px;\r\n\r\n\t\t\tmargin-top:-9px;\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder-bottom-left-radius:1px;\r\n\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-control{\r\n\r\n\t\t\tdisplay:inline-flex;\r\n\t\t\tjustify-content:center;\r\n\t\t\talign-items:center;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:11px;\r\n\t\t\twidth:11px;\r\n\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder:1px solid $rowTextColor;\r\n\t\t\tborder-radius:2px;\r\n\t\t\tbackground:rgba(0, 0, 0, .1);\r\n\r\n\t\t\toverflow:hidden;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\tcursor:pointer;\r\n\t\t\t\tbackground:rgba(0, 0, 0, .2);\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-collapse{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: transparent;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-expand{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: $rowTextColor;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t.tabulator-responsive-collapse-toggle{\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\t\t\tjustify-content:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\theight:15px;\r\n\t\t\twidth:15px;\r\n\r\n\t\t\tborder-radius:20px;\r\n\t\t\tbackground:#666;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:1.1em;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\topacity:.7;\r\n\t\t\t}\r\n\r\n\t\t\t&.open{\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\t\tdisplay:initial;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-open{\r\n\t\t\t\t\tdisplay:none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\tdisplay:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-traffic-light{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\theight:14px;\r\n\t\t\twidth:14px;\r\n\r\n\t\t\tborder-radius:14px;\r\n\t\t}\r\n\t}\r\n\r\n\t//row grouping element\r\n\t&.tabulator-group{\r\n\t\tbox-sizing:border-box;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tborder-top:1px solid #000;\r\n\t\tborder-bottom:2px solid $headerSeperatorColor;\r\n\t\tpadding:5px;\r\n\t\tpadding-left:10px;\r\n\t\tbackground:$headerBackgroundColor;\r\n\t\tcolor:$headerTextColor;\r\n\t\tfont-weight:bold;\r\n\r\n\t\tmin-width: 100%;\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\t\t\tbackground-color:darken($headerBackgroundColor, 10%);\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-visible{\r\n\t\t\t.tabulator-arrow{\r\n\t\t\t\tmargin-right:10px;\r\n\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\tborder-bottom: 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-1{\r\n\t\t\tpadding-left:30px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-2{\r\n\t\t\tpadding-left:50px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-3{\r\n\t\t\tpadding-left:70px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-4{\r\n\t\t\tpadding-left:90px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-5{\r\n\t\t\tpadding-left:110px;\r\n\t\t}\r\n\r\n\t\t.tabulator-group-toggle{\r\n\t\t\tdisplay: inline-block;\r\n\t\t}\r\n\r\n\t\t//sorting arrow\r\n\t\t.tabulator-arrow{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t\tmargin-right:16px;\r\n\t\t\tborder-top: 6px solid transparent;\r\n\t\t\tborder-bottom: 6px solid transparent;\r\n\t\t\tborder-right: 0;\r\n\t\t\tborder-left: 6px solid $sortArrowActive;\r\n\t\t\tvertical-align:middle;\r\n\t\t}\r\n\r\n\t\tspan{\r\n\t\t\tmargin-left:10px;\r\n\t\t\tcolor:$headerSeperatorColor;\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\n.tabulator-menu{\r\n\tposition: absolute;\r\n\tdisplay:inline-block;\r\n\tbox-sizing:border-box;\r\n\r\n\tbackground:$rowBackgroundColor;\r\n\tborder:1px solid $rowBorderColor;\r\n\tbox-shadow: 0 0 5px 0 rgba(0, 0, 0, .2);\r\n\r\n\tfont-size:$textSize;\r\n\r\n\toverflow-y:auto;\r\n\t-webkit-overflow-scrolling: touch;\r\n\r\n\tz-index: 10000;\r\n\r\n\t.tabulator-menu-item{\r\n\r\n\t\tpadding:5px 10px;\r\n\r\n\t\tuser-select: none;\r\n\r\n\t\t&.tabulator-menu-item-disabled{\r\n\t\t\topacity: .5;\r\n\t\t}\r\n\r\n\t\t&:not(.tabulator-menu-item-disabled):hover{\r\n\t\t\tcursor: pointer;\r\n\t\t\tbackground: $rowAltBackgroundColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-menu-separator{\r\n\t\tborder-top:1px solid $rowBorderColor;\r\n\t}\r\n}\r\n\r\n.tabulator-edit-select-list{\r\n\tposition: absolute;\r\n\tdisplay:inline-block;\r\n\tbox-sizing:border-box;\r\n\r\n\tmax-height:200px;\r\n\r\n\tbackground:$rowBackgroundColor;\r\n\tborder:1px solid $rowBorderColor;\r\n\r\n\tfont-size:$textSize;\r\n\r\n\toverflow-y:auto;\r\n\t-webkit-overflow-scrolling: touch;\r\n\r\n\tz-index: 10000;\r\n\r\n\t.tabulator-edit-select-list-item{\r\n\t\tpadding:4px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\r\n\t\t&.active{\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tbackground:$editBoxColor;\r\n\r\n\t\t\t&.focused{\r\n\t\t\t\toutline:1px solid rgba($rowBackgroundColor, .5);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.focused{\r\n\t\t\toutline:1px solid $editBoxColor;\r\n\t\t}\r\n\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tbackground:$editBoxColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-edit-select-list-notice{\r\n\t\tpadding:4px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\t\ttext-align: center;\r\n\t}\r\n\r\n\t.tabulator-edit-select-list-group{\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\tpadding:4px;\r\n\t\tpadding-top:6px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\t\tfont-weight:bold;\r\n\t}\r\n}\r\n\r\n// Table print styling\r\n\r\n.tabulator-print-fullscreen{\r\n\tposition: absolute;\r\n\ttop:0;\r\n\tbottom:0;\r\n\tleft:0;\r\n\tright:0;\r\n\r\n\tz-index: 10000;\r\n}\r\n\r\nbody.tabulator-print-fullscreen-hide>*:not(.tabulator-print-fullscreen){\r\n\tdisplay:none !important;\r\n}\r\n\r\n.tabulator-print-table{\r\n\tborder-collapse: collapse;\r\n\r\n\t//row grouping element\r\n\t.tabulator-print-table-group{\r\n\t\tbox-sizing:border-box;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tborder-top:1px solid #000;\r\n\t\tborder-bottom:2px solid $headerSeperatorColor;\r\n\t\tpadding:5px;\r\n\t\tpadding-left:10px;\r\n\t\tbackground:$headerBackgroundColor;\r\n\t\tcolor:$headerTextColor;\r\n\t\tfont-weight:bold;\r\n\r\n\t\tmin-width: 100%;\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\t\t\tbackground-color:darken($headerBackgroundColor, 10%);\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-visible{\r\n\t\t\t.tabulator-arrow{\r\n\t\t\t\tmargin-right:10px;\r\n\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\tborder-bottom: 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-1{\r\n\t\t\ttd{\r\n\t\t\t\tpadding-left:30px !important;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-2{\r\n\t\t\ttd{\r\n\t\t\t\tpadding-left:50px !important;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-3{\r\n\t\t\ttd{\r\n\t\t\t\tpadding-left:70px !important;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-4{\r\n\t\t\ttd{\r\n\t\t\t\tpadding-left:90px !important;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-5{\r\n\t\t\ttd{\r\n\t\t\t\tpadding-left:110px !important;\r\n\t\t\t}\r\n\t\t}\r\n\t\t.tabulator-group-toggle{\r\n\t\t\tdisplay: inline-block;\r\n\t\t}\r\n\r\n\t\t//sorting arrow\r\n\t\t.tabulator-arrow{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t\tmargin-right:16px;\r\n\t\t\tborder-top: 6px solid transparent;\r\n\t\t\tborder-bottom: 6px solid transparent;\r\n\t\t\tborder-right: 0;\r\n\t\t\tborder-left: 6px solid $sortArrowActive;\r\n\t\t\tvertical-align:middle;\r\n\t\t}\r\n\r\n\t\tspan{\r\n\t\t\tmargin-left:10px;\r\n\t\t\tcolor:$headerSeperatorColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-data-tree-branch{\r\n\t\tdisplay:inline-block;\r\n\t\tvertical-align:middle;\r\n\r\n\t\theight:9px;\r\n\t\twidth:7px;\r\n\r\n\t\tmargin-top:-9px;\r\n\t\tmargin-right:5px;\r\n\r\n\t\tborder-bottom-left-radius:1px;\r\n\r\n\t\tborder-left:2px solid $rowBorderColor;\r\n\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t}\r\n\r\n\t.tabulator-data-tree-control{\r\n\r\n\t\tdisplay:inline-flex;\r\n\t\tjustify-content:center;\r\n\t\talign-items:center;\r\n\t\tvertical-align:middle;\r\n\r\n\t\theight:11px;\r\n\t\twidth:11px;\r\n\r\n\t\tmargin-right:5px;\r\n\r\n\t\tborder:1px solid $rowTextColor;\r\n\t\tborder-radius:2px;\r\n\t\tbackground:rgba(0, 0, 0, .1);\r\n\r\n\t\toverflow:hidden;\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\t\t\tbackground:rgba(0, 0, 0, .2);\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-control-collapse{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tposition: relative;\r\n\r\n\t\t\theight: 7px;\r\n\t\t\twidth: 1px;\r\n\r\n\t\t\tbackground: transparent;\r\n\r\n\t\t\t&:after {\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tcontent: \"\";\r\n\t\t\t\tleft: -3px;\r\n\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\theight: 1px;\r\n\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-control-expand{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tposition: relative;\r\n\r\n\t\t\theight: 7px;\r\n\t\t\twidth: 1px;\r\n\r\n\t\t\tbackground: $rowTextColor;\r\n\r\n\t\t\t&:after {\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tcontent: \"\";\r\n\t\t\t\tleft: -3px;\r\n\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\theight: 1px;\r\n\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n"]}
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/accessor.js b/app/static/vendors/tabulator/js.old/modules/accessor.js
deleted file mode 100644 (file)
index 33c6008..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-
-var Accessor = function Accessor(table) {
-       this.table = table; //hold Tabulator object
-       this.allowedTypes = ["", "data", "download", "clipboard", "print", "htmlOutput"]; //list of accessor types
-};
-
-//initialize column accessor
-Accessor.prototype.initializeColumn = function (column) {
-       var self = this,
-           match = false,
-           config = {};
-
-       this.allowedTypes.forEach(function (type) {
-               var key = "accessor" + (type.charAt(0).toUpperCase() + type.slice(1)),
-                   accessor;
-
-               if (column.definition[key]) {
-                       accessor = self.lookupAccessor(column.definition[key]);
-
-                       if (accessor) {
-                               match = true;
-
-                               config[key] = {
-                                       accessor: accessor,
-                                       params: column.definition[key + "Params"] || {}
-                               };
-                       }
-               }
-       });
-
-       if (match) {
-               column.modules.accessor = config;
-       }
-};
-
-Accessor.prototype.lookupAccessor = function (value) {
-       var accessor = false;
-
-       //set column accessor
-       switch (typeof value === "undefined" ? "undefined" : _typeof(value)) {
-               case "string":
-                       if (this.accessors[value]) {
-                               accessor = this.accessors[value];
-                       } else {
-                               console.warn("Accessor Error - No such accessor found, ignoring: ", value);
-                       }
-                       break;
-
-               case "function":
-                       accessor = value;
-                       break;
-       }
-
-       return accessor;
-};
-
-//apply accessor to row
-Accessor.prototype.transformRow = function (dataIn, type) {
-       var self = this,
-           key = "accessor" + (type.charAt(0).toUpperCase() + type.slice(1));
-
-       //clone data object with deep copy to isolate internal data from returned result
-       var data = Tabulator.prototype.helpers.deepClone(dataIn || {});
-
-       self.table.columnManager.traverse(function (column) {
-               var value, accessor, params, component;
-
-               if (column.modules.accessor) {
-
-                       accessor = column.modules.accessor[key] || column.modules.accessor.accessor || false;
-
-                       if (accessor) {
-                               value = column.getFieldValue(data);
-
-                               if (value != "undefined") {
-                                       component = column.getComponent();
-                                       params = typeof accessor.params === "function" ? accessor.params(value, data, type, component) : accessor.params;
-                                       column.setFieldValue(data, accessor.accessor(value, data, type, params, component));
-                               }
-                       }
-               }
-       });
-
-       return data;
-},
-
-//default accessors
-Accessor.prototype.accessors = {};
-
-Tabulator.prototype.registerModule("accessor", Accessor);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/accessor.min.js b/app/static/vendors/tabulator/js.old/modules/accessor.min.js
deleted file mode 100644 (file)
index 670da5f..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},Accessor=function(o){this.table=o,this.allowedTypes=["","data","download","clipboard","print","htmlOutput"]};Accessor.prototype.initializeColumn=function(o){var e=this,s=!1,r={};this.allowedTypes.forEach(function(t){var c,a="accessor"+(t.charAt(0).toUpperCase()+t.slice(1));o.definition[a]&&(c=e.lookupAccessor(o.definition[a]))&&(s=!0,r[a]={accessor:c,params:o.definition[a+"Params"]||{}})}),s&&(o.modules.accessor=r)},Accessor.prototype.lookupAccessor=function(o){var e=!1;switch(void 0===o?"undefined":_typeof(o)){case"string":this.accessors[o]?e=this.accessors[o]:console.warn("Accessor Error - No such accessor found, ignoring: ",o);break;case"function":e=o}return e},Accessor.prototype.transformRow=function(o,e){var s=this,r="accessor"+(e.charAt(0).toUpperCase()+e.slice(1)),t=Tabulator.prototype.helpers.deepClone(o||{});return s.table.columnManager.traverse(function(o){var s,c,a,n;o.modules.accessor&&(c=o.modules.accessor[r]||o.modules.accessor.accessor||!1)&&"undefined"!=(s=o.getFieldValue(t))&&(n=o.getComponent(),a="function"==typeof c.params?c.params(s,t,e,n):c.params,o.setFieldValue(t,c.accessor(s,t,e,a,n)))}),t},Accessor.prototype.accessors={},Tabulator.prototype.registerModule("accessor",Accessor);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/ajax.js b/app/static/vendors/tabulator/js.old/modules/ajax.js
deleted file mode 100644 (file)
index 9abd307..0000000
+++ /dev/null
@@ -1,465 +0,0 @@
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-
-var Ajax = function Ajax(table) {
-
-       this.table = table; //hold Tabulator object
-       this.config = false; //hold config object for ajax request
-       this.url = ""; //request URL
-       this.urlGenerator = false;
-       this.params = false; //request parameters
-
-       this.loaderElement = this.createLoaderElement(); //loader message div
-       this.msgElement = this.createMsgElement(); //message element
-       this.loadingElement = false;
-       this.errorElement = false;
-       this.loaderPromise = false;
-
-       this.progressiveLoad = false;
-       this.loading = false;
-
-       this.requestOrder = 0; //prevent requests comming out of sequence if overridden by another load request
-};
-
-//initialize setup options
-Ajax.prototype.initialize = function () {
-       var template;
-
-       this.loaderElement.appendChild(this.msgElement);
-
-       if (this.table.options.ajaxLoaderLoading) {
-               if (typeof this.table.options.ajaxLoaderLoading == "string") {
-                       template = document.createElement('template');
-                       template.innerHTML = this.table.options.ajaxLoaderLoading.trim();
-                       this.loadingElement = template.content.firstChild;
-               } else {
-                       this.loadingElement = this.table.options.ajaxLoaderLoading;
-               }
-       }
-
-       this.loaderPromise = this.table.options.ajaxRequestFunc || this.defaultLoaderPromise;
-
-       this.urlGenerator = this.table.options.ajaxURLGenerator || this.defaultURLGenerator;
-
-       if (this.table.options.ajaxLoaderError) {
-               if (typeof this.table.options.ajaxLoaderError == "string") {
-                       template = document.createElement('template');
-                       template.innerHTML = this.table.options.ajaxLoaderError.trim();
-                       this.errorElement = template.content.firstChild;
-               } else {
-                       this.errorElement = this.table.options.ajaxLoaderError;
-               }
-       }
-
-       if (this.table.options.ajaxParams) {
-               this.setParams(this.table.options.ajaxParams);
-       }
-
-       if (this.table.options.ajaxConfig) {
-               this.setConfig(this.table.options.ajaxConfig);
-       }
-
-       if (this.table.options.ajaxURL) {
-               this.setUrl(this.table.options.ajaxURL);
-       }
-
-       if (this.table.options.ajaxProgressiveLoad) {
-               if (this.table.options.pagination) {
-                       this.progressiveLoad = false;
-                       console.error("Progressive Load Error - Pagination and progressive load cannot be used at the same time");
-               } else {
-                       if (this.table.modExists("page")) {
-                               this.progressiveLoad = this.table.options.ajaxProgressiveLoad;
-                               this.table.modules.page.initializeProgressive(this.progressiveLoad);
-                       } else {
-                               console.error("Pagination plugin is required for progressive ajax loading");
-                       }
-               }
-       }
-};
-
-Ajax.prototype.createLoaderElement = function () {
-       var el = document.createElement("div");
-       el.classList.add("tabulator-loader");
-       return el;
-};
-
-Ajax.prototype.createMsgElement = function () {
-       var el = document.createElement("div");
-
-       el.classList.add("tabulator-loader-msg");
-       el.setAttribute("role", "alert");
-
-       return el;
-};
-
-//set ajax params
-Ajax.prototype.setParams = function (params, update) {
-       if (update) {
-               this.params = this.params || {};
-
-               for (var key in params) {
-                       this.params[key] = params[key];
-               }
-       } else {
-               this.params = params;
-       }
-};
-
-Ajax.prototype.getParams = function () {
-       return this.params || {};
-};
-
-//load config object
-Ajax.prototype.setConfig = function (config) {
-       this._loadDefaultConfig();
-
-       if (typeof config == "string") {
-               this.config.method = config;
-       } else {
-               for (var key in config) {
-                       this.config[key] = config[key];
-               }
-       }
-};
-
-//create config object from default
-Ajax.prototype._loadDefaultConfig = function (force) {
-       var self = this;
-       if (!self.config || force) {
-
-               self.config = {};
-
-               //load base config from defaults
-               for (var key in self.defaultConfig) {
-                       self.config[key] = self.defaultConfig[key];
-               }
-       }
-};
-
-//set request url
-Ajax.prototype.setUrl = function (url) {
-       this.url = url;
-};
-
-//get request url
-Ajax.prototype.getUrl = function () {
-       return this.url;
-};
-
-//lstandard loading function
-Ajax.prototype.loadData = function (inPosition, columnsChanged) {
-       var self = this;
-
-       if (this.progressiveLoad) {
-               return this._loadDataProgressive();
-       } else {
-               return this._loadDataStandard(inPosition, columnsChanged);
-       }
-};
-
-Ajax.prototype.nextPage = function (diff) {
-       var margin;
-
-       if (!this.loading) {
-
-               margin = this.table.options.ajaxProgressiveLoadScrollMargin || this.table.rowManager.getElement().clientHeight * 2;
-
-               if (diff < margin) {
-                       this.table.modules.page.nextPage().then(function () {}).catch(function () {});
-               }
-       }
-};
-
-Ajax.prototype.blockActiveRequest = function () {
-       this.requestOrder++;
-};
-
-Ajax.prototype._loadDataProgressive = function () {
-       this.table.rowManager.setData([]);
-       return this.table.modules.page.setPage(1);
-};
-
-Ajax.prototype._loadDataStandard = function (inPosition, columnsChanged) {
-       var _this = this;
-
-       return new Promise(function (resolve, reject) {
-               _this.sendRequest(inPosition).then(function (data) {
-                       _this.table.rowManager.setData(data, inPosition, columnsChanged).then(function () {
-                               resolve();
-                       }).catch(function (e) {
-                               reject(e);
-                       });
-               }).catch(function (e) {
-                       reject(e);
-               });
-       });
-};
-
-Ajax.prototype.generateParamsList = function (data, prefix) {
-       var self = this,
-           output = [];
-
-       prefix = prefix || "";
-
-       if (Array.isArray(data)) {
-               data.forEach(function (item, i) {
-                       output = output.concat(self.generateParamsList(item, prefix ? prefix + "[" + i + "]" : i));
-               });
-       } else if ((typeof data === "undefined" ? "undefined" : _typeof(data)) === "object") {
-               for (var key in data) {
-                       output = output.concat(self.generateParamsList(data[key], prefix ? prefix + "[" + key + "]" : key));
-               }
-       } else {
-               output.push({ key: prefix, value: data });
-       }
-
-       return output;
-};
-
-Ajax.prototype.serializeParams = function (params) {
-       var output = this.generateParamsList(params),
-           encoded = [];
-
-       output.forEach(function (item) {
-               encoded.push(encodeURIComponent(item.key) + "=" + encodeURIComponent(item.value));
-       });
-
-       return encoded.join("&");
-};
-
-//send ajax request
-Ajax.prototype.sendRequest = function (silent) {
-       var _this2 = this;
-
-       var self = this,
-           url = self.url,
-           requestNo,
-           esc,
-           query;
-
-       self.requestOrder++;
-       requestNo = self.requestOrder;
-
-       self._loadDefaultConfig();
-
-       return new Promise(function (resolve, reject) {
-               if (self.table.options.ajaxRequesting.call(_this2.table, self.url, self.params) !== false) {
-
-                       self.loading = true;
-
-                       if (!silent) {
-                               self.showLoader();
-                       }
-
-                       _this2.loaderPromise(url, self.config, self.params).then(function (data) {
-                               if (requestNo === self.requestOrder) {
-                                       if (self.table.options.ajaxResponse) {
-                                               data = self.table.options.ajaxResponse.call(self.table, self.url, self.params, data);
-                                       }
-                                       resolve(data);
-
-                                       self.hideLoader();
-                                       self.loading = false;
-                               } else {
-                                       console.warn("Ajax Response Blocked - An active ajax request was blocked by an attempt to change table data while the request was being made");
-                               }
-                       }).catch(function (error) {
-                               console.error("Ajax Load Error: ", error);
-                               self.table.options.ajaxError.call(self.table, error);
-
-                               self.showError();
-
-                               setTimeout(function () {
-                                       self.hideLoader();
-                               }, 3000);
-
-                               self.loading = false;
-
-                               reject();
-                       });
-               } else {
-                       reject();
-               }
-       });
-};
-
-Ajax.prototype.showLoader = function () {
-       var shouldLoad = typeof this.table.options.ajaxLoader === "function" ? this.table.options.ajaxLoader() : this.table.options.ajaxLoader;
-
-       if (shouldLoad) {
-
-               this.hideLoader();
-
-               while (this.msgElement.firstChild) {
-                       this.msgElement.removeChild(this.msgElement.firstChild);
-               }this.msgElement.classList.remove("tabulator-error");
-               this.msgElement.classList.add("tabulator-loading");
-
-               if (this.loadingElement) {
-                       this.msgElement.appendChild(this.loadingElement);
-               } else {
-                       this.msgElement.innerHTML = this.table.modules.localize.getText("ajax|loading");
-               }
-
-               this.table.element.appendChild(this.loaderElement);
-       }
-};
-
-Ajax.prototype.showError = function () {
-       this.hideLoader();
-
-       while (this.msgElement.firstChild) {
-               this.msgElement.removeChild(this.msgElement.firstChild);
-       }this.msgElement.classList.remove("tabulator-loading");
-       this.msgElement.classList.add("tabulator-error");
-
-       if (this.errorElement) {
-               this.msgElement.appendChild(this.errorElement);
-       } else {
-               this.msgElement.innerHTML = this.table.modules.localize.getText("ajax|error");
-       }
-
-       this.table.element.appendChild(this.loaderElement);
-};
-
-Ajax.prototype.hideLoader = function () {
-       if (this.loaderElement.parentNode) {
-               this.loaderElement.parentNode.removeChild(this.loaderElement);
-       }
-};
-
-//default ajax config object
-Ajax.prototype.defaultConfig = {
-       method: "GET"
-};
-
-Ajax.prototype.defaultURLGenerator = function (url, config, params) {
-
-       if (url) {
-               if (params && Object.keys(params).length) {
-                       if (!config.method || config.method.toLowerCase() == "get") {
-                               config.method = "get";
-
-                               url += (url.includes("?") ? "&" : "?") + this.serializeParams(params);
-                       }
-               }
-       }
-
-       return url;
-};
-
-Ajax.prototype.defaultLoaderPromise = function (url, config, params) {
-       var self = this,
-           contentType;
-
-       return new Promise(function (resolve, reject) {
-
-               //set url
-               url = self.urlGenerator(url, config, params);
-
-               //set body content if not GET request
-               if (config.method.toUpperCase() != "GET") {
-                       contentType = _typeof(self.table.options.ajaxContentType) === "object" ? self.table.options.ajaxContentType : self.contentTypeFormatters[self.table.options.ajaxContentType];
-                       if (contentType) {
-
-                               for (var key in contentType.headers) {
-                                       if (!config.headers) {
-                                               config.headers = {};
-                                       }
-
-                                       if (typeof config.headers[key] === "undefined") {
-                                               config.headers[key] = contentType.headers[key];
-                                       }
-                               }
-
-                               config.body = contentType.body.call(self, url, config, params);
-                       } else {
-                               console.warn("Ajax Error - Invalid ajaxContentType value:", self.table.options.ajaxContentType);
-                       }
-               }
-
-               if (url) {
-
-                       //configure headers
-                       if (typeof config.headers === "undefined") {
-                               config.headers = {};
-                       }
-
-                       if (typeof config.headers.Accept === "undefined") {
-                               config.headers.Accept = "application/json";
-                       }
-
-                       if (typeof config.headers["X-Requested-With"] === "undefined") {
-                               config.headers["X-Requested-With"] = "XMLHttpRequest";
-                       }
-
-                       if (typeof config.mode === "undefined") {
-                               config.mode = "cors";
-                       }
-
-                       if (config.mode == "cors") {
-
-                               if (typeof config.headers["Access-Control-Allow-Origin"] === "undefined") {
-                                       config.headers["Access-Control-Allow-Origin"] = window.location.origin;
-                               }
-
-                               if (typeof config.credentials === "undefined") {
-                                       config.credentials = 'same-origin';
-                               }
-                       } else {
-                               if (typeof config.credentials === "undefined") {
-                                       config.credentials = 'include';
-                               }
-                       }
-
-                       //send request
-                       fetch(url, config).then(function (response) {
-                               if (response.ok) {
-                                       response.json().then(function (data) {
-                                               resolve(data);
-                                       }).catch(function (error) {
-                                               reject(error);
-                                               console.warn("Ajax Load Error - Invalid JSON returned", error);
-                                       });
-                               } else {
-                                       console.error("Ajax Load Error - Connection Error: " + response.status, response.statusText);
-                                       reject(response);
-                               }
-                       }).catch(function (error) {
-                               console.error("Ajax Load Error - Connection Error: ", error);
-                               reject(error);
-                       });
-               } else {
-                       console.warn("Ajax Load Error - No URL Set");
-                       resolve([]);
-               }
-       });
-};
-
-Ajax.prototype.contentTypeFormatters = {
-       "json": {
-               headers: {
-                       'Content-Type': 'application/json'
-               },
-               body: function body(url, config, params) {
-                       return JSON.stringify(params);
-               }
-       },
-       "form": {
-               headers: {},
-               body: function body(url, config, params) {
-                       var output = this.generateParamsList(params),
-                           form = new FormData();
-
-                       output.forEach(function (item) {
-                               form.append(item.key, item.value);
-                       });
-
-                       return form;
-               }
-       }
-};
-
-Tabulator.prototype.registerModule("ajax", Ajax);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/ajax.min.js b/app/static/vendors/tabulator/js.old/modules/ajax.min.js
deleted file mode 100644 (file)
index eec9e11..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ajax=function(e){this.table=e,this.config=!1,this.url="",this.urlGenerator=!1,this.params=!1,this.loaderElement=this.createLoaderElement(),this.msgElement=this.createMsgElement(),this.loadingElement=!1,this.errorElement=!1,this.loaderPromise=!1,this.progressiveLoad=!1,this.loading=!1,this.requestOrder=0};Ajax.prototype.initialize=function(){var e;this.loaderElement.appendChild(this.msgElement),this.table.options.ajaxLoaderLoading&&("string"==typeof this.table.options.ajaxLoaderLoading?(e=document.createElement("template"),e.innerHTML=this.table.options.ajaxLoaderLoading.trim(),this.loadingElement=e.content.firstChild):this.loadingElement=this.table.options.ajaxLoaderLoading),this.loaderPromise=this.table.options.ajaxRequestFunc||this.defaultLoaderPromise,this.urlGenerator=this.table.options.ajaxURLGenerator||this.defaultURLGenerator,this.table.options.ajaxLoaderError&&("string"==typeof this.table.options.ajaxLoaderError?(e=document.createElement("template"),e.innerHTML=this.table.options.ajaxLoaderError.trim(),this.errorElement=e.content.firstChild):this.errorElement=this.table.options.ajaxLoaderError),this.table.options.ajaxParams&&this.setParams(this.table.options.ajaxParams),this.table.options.ajaxConfig&&this.setConfig(this.table.options.ajaxConfig),this.table.options.ajaxURL&&this.setUrl(this.table.options.ajaxURL),this.table.options.ajaxProgressiveLoad&&(this.table.options.pagination?(this.progressiveLoad=!1,console.error("Progressive Load Error - Pagination and progressive load cannot be used at the same time")):this.table.modExists("page")?(this.progressiveLoad=this.table.options.ajaxProgressiveLoad,this.table.modules.page.initializeProgressive(this.progressiveLoad)):console.error("Pagination plugin is required for progressive ajax loading"))},Ajax.prototype.createLoaderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-loader"),e},Ajax.prototype.createMsgElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-loader-msg"),e.setAttribute("role","alert"),e},Ajax.prototype.setParams=function(e,t){if(t){this.params=this.params||{};for(var o in e)this.params[o]=e[o]}else this.params=e},Ajax.prototype.getParams=function(){return this.params||{}},Ajax.prototype.setConfig=function(e){if(this._loadDefaultConfig(),"string"==typeof e)this.config.method=e;else for(var t in e)this.config[t]=e[t]},Ajax.prototype._loadDefaultConfig=function(e){var t=this;if(!t.config||e){t.config={};for(var o in t.defaultConfig)t.config[o]=t.defaultConfig[o]}},Ajax.prototype.setUrl=function(e){this.url=e},Ajax.prototype.getUrl=function(){return this.url},Ajax.prototype.loadData=function(e,t){return this.progressiveLoad?this._loadDataProgressive():this._loadDataStandard(e,t)},Ajax.prototype.nextPage=function(e){var t;this.loading||(t=this.table.options.ajaxProgressiveLoadScrollMargin||2*this.table.rowManager.getElement().clientHeight,e<t&&this.table.modules.page.nextPage().then(function(){}).catch(function(){}))},Ajax.prototype.blockActiveRequest=function(){this.requestOrder++},Ajax.prototype._loadDataProgressive=function(){return this.table.rowManager.setData([]),this.table.modules.page.setPage(1)},Ajax.prototype._loadDataStandard=function(e,t){var o=this;return new Promise(function(a,r){o.sendRequest(e).then(function(i){o.table.rowManager.setData(i,e,t).then(function(){a()}).catch(function(e){r(e)})}).catch(function(e){r(e)})})},Ajax.prototype.generateParamsList=function(e,t){var o=this,a=[];if(t=t||"",Array.isArray(e))e.forEach(function(e,r){a=a.concat(o.generateParamsList(e,t?t+"["+r+"]":r))});else if("object"===(void 0===e?"undefined":_typeof(e)))for(var r in e)a=a.concat(o.generateParamsList(e[r],t?t+"["+r+"]":r));else a.push({key:t,value:e});return a},Ajax.prototype.serializeParams=function(e){var t=this.generateParamsList(e),o=[];return t.forEach(function(e){o.push(encodeURIComponent(e.key)+"="+encodeURIComponent(e.value))}),o.join("&")},Ajax.prototype.sendRequest=function(e){var t,o=this,a=this,r=a.url;return a.requestOrder++,t=a.requestOrder,a._loadDefaultConfig(),new Promise(function(i,n){!1!==a.table.options.ajaxRequesting.call(o.table,a.url,a.params)?(a.loading=!0,e||a.showLoader(),o.loaderPromise(r,a.config,a.params).then(function(e){t===a.requestOrder?(a.table.options.ajaxResponse&&(e=a.table.options.ajaxResponse.call(a.table,a.url,a.params,e)),i(e),a.hideLoader(),a.loading=!1):console.warn("Ajax Response Blocked - An active ajax request was blocked by an attempt to change table data while the request was being made")}).catch(function(e){console.error("Ajax Load Error: ",e),a.table.options.ajaxError.call(a.table,e),a.showError(),setTimeout(function(){a.hideLoader()},3e3),a.loading=!1,n()})):n()})},Ajax.prototype.showLoader=function(){if("function"==typeof this.table.options.ajaxLoader?this.table.options.ajaxLoader():this.table.options.ajaxLoader){for(this.hideLoader();this.msgElement.firstChild;)this.msgElement.removeChild(this.msgElement.firstChild);this.msgElement.classList.remove("tabulator-error"),this.msgElement.classList.add("tabulator-loading"),this.loadingElement?this.msgElement.appendChild(this.loadingElement):this.msgElement.innerHTML=this.table.modules.localize.getText("ajax|loading"),this.table.element.appendChild(this.loaderElement)}},Ajax.prototype.showError=function(){for(this.hideLoader();this.msgElement.firstChild;)this.msgElement.removeChild(this.msgElement.firstChild);this.msgElement.classList.remove("tabulator-loading"),this.msgElement.classList.add("tabulator-error"),this.errorElement?this.msgElement.appendChild(this.errorElement):this.msgElement.innerHTML=this.table.modules.localize.getText("ajax|error"),this.table.element.appendChild(this.loaderElement)},Ajax.prototype.hideLoader=function(){this.loaderElement.parentNode&&this.loaderElement.parentNode.removeChild(this.loaderElement)},Ajax.prototype.defaultConfig={method:"GET"},Ajax.prototype.defaultURLGenerator=function(e,t,o){return e&&o&&Object.keys(o).length&&(t.method&&"get"!=t.method.toLowerCase()||(t.method="get",e+=(e.includes("?")?"&":"?")+this.serializeParams(o))),e},Ajax.prototype.defaultLoaderPromise=function(e,t,o){var a,r=this;return new Promise(function(i,n){if(e=r.urlGenerator(e,t,o),"GET"!=t.method.toUpperCase())if(a="object"===_typeof(r.table.options.ajaxContentType)?r.table.options.ajaxContentType:r.contentTypeFormatters[r.table.options.ajaxContentType]){for(var s in a.headers)t.headers||(t.headers={}),void 0===t.headers[s]&&(t.headers[s]=a.headers[s]);t.body=a.body.call(r,e,t,o)}else console.warn("Ajax Error - Invalid ajaxContentType value:",r.table.options.ajaxContentType);e?(void 0===t.headers&&(t.headers={}),void 0===t.headers.Accept&&(t.headers.Accept="application/json"),void 0===t.headers["X-Requested-With"]&&(t.headers["X-Requested-With"]="XMLHttpRequest"),void 0===t.mode&&(t.mode="cors"),"cors"==t.mode?(void 0===t.headers["Access-Control-Allow-Origin"]&&(t.headers["Access-Control-Allow-Origin"]=window.location.origin),void 0===t.credentials&&(t.credentials="same-origin")):void 0===t.credentials&&(t.credentials="include"),fetch(e,t).then(function(e){e.ok?e.json().then(function(e){i(e)}).catch(function(e){n(e),console.warn("Ajax Load Error - Invalid JSON returned",e)}):(console.error("Ajax Load Error - Connection Error: "+e.status,e.statusText),n(e))}).catch(function(e){console.error("Ajax Load Error - Connection Error: ",e),n(e)})):(console.warn("Ajax Load Error - No URL Set"),i([]))})},Ajax.prototype.contentTypeFormatters={json:{headers:{"Content-Type":"application/json"},body:function(e,t,o){return JSON.stringify(o)}},form:{headers:{},body:function(e,t,o){var a=this.generateParamsList(o),r=new FormData;return a.forEach(function(e){r.append(e.key,e.value)}),r}}},Tabulator.prototype.registerModule("ajax",Ajax);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/calculation_colums.js b/app/static/vendors/tabulator/js.old/modules/calculation_colums.js
deleted file mode 100644 (file)
index 1726f7e..0000000
+++ /dev/null
@@ -1,495 +0,0 @@
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-
-var ColumnCalcs = function ColumnCalcs(table) {
-       this.table = table; //hold Tabulator object
-       this.topCalcs = [];
-       this.botCalcs = [];
-       this.genColumn = false;
-       this.topElement = this.createElement();
-       this.botElement = this.createElement();
-       this.topRow = false;
-       this.botRow = false;
-       this.topInitialized = false;
-       this.botInitialized = false;
-
-       this.initialize();
-};
-
-ColumnCalcs.prototype.createElement = function () {
-       var el = document.createElement("div");
-       el.classList.add("tabulator-calcs-holder");
-       return el;
-};
-
-ColumnCalcs.prototype.initialize = function () {
-       this.genColumn = new Column({ field: "value" }, this);
-};
-
-//dummy functions to handle being mock column manager
-ColumnCalcs.prototype.registerColumnField = function () {};
-
-//initialize column calcs
-ColumnCalcs.prototype.initializeColumn = function (column) {
-       var def = column.definition;
-
-       var config = {
-               topCalcParams: def.topCalcParams || {},
-               botCalcParams: def.bottomCalcParams || {}
-       };
-
-       if (def.topCalc) {
-
-               switch (_typeof(def.topCalc)) {
-                       case "string":
-                               if (this.calculations[def.topCalc]) {
-                                       config.topCalc = this.calculations[def.topCalc];
-                               } else {
-                                       console.warn("Column Calc Error - No such calculation found, ignoring: ", def.topCalc);
-                               }
-                               break;
-
-                       case "function":
-                               config.topCalc = def.topCalc;
-                               break;
-
-               }
-
-               if (config.topCalc) {
-                       column.modules.columnCalcs = config;
-                       this.topCalcs.push(column);
-
-                       if (this.table.options.columnCalcs != "group") {
-                               this.initializeTopRow();
-                       }
-               }
-       }
-
-       if (def.bottomCalc) {
-               switch (_typeof(def.bottomCalc)) {
-                       case "string":
-                               if (this.calculations[def.bottomCalc]) {
-                                       config.botCalc = this.calculations[def.bottomCalc];
-                               } else {
-                                       console.warn("Column Calc Error - No such calculation found, ignoring: ", def.bottomCalc);
-                               }
-                               break;
-
-                       case "function":
-                               config.botCalc = def.bottomCalc;
-                               break;
-
-               }
-
-               if (config.botCalc) {
-                       column.modules.columnCalcs = config;
-                       this.botCalcs.push(column);
-
-                       if (this.table.options.columnCalcs != "group") {
-                               this.initializeBottomRow();
-                       }
-               }
-       }
-};
-
-ColumnCalcs.prototype.removeCalcs = function () {
-       var changed = false;
-
-       if (this.topInitialized) {
-               this.topInitialized = false;
-               this.topElement.parentNode.removeChild(this.topElement);
-               changed = true;
-       }
-
-       if (this.botInitialized) {
-               this.botInitialized = false;
-               this.table.footerManager.remove(this.botElement);
-               changed = true;
-       }
-
-       if (changed) {
-               this.table.rowManager.adjustTableSize();
-       }
-};
-
-ColumnCalcs.prototype.initializeTopRow = function () {
-       if (!this.topInitialized) {
-               // this.table.columnManager.headersElement.after(this.topElement);
-               this.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);
-               this.topInitialized = true;
-       }
-};
-
-ColumnCalcs.prototype.initializeBottomRow = function () {
-       if (!this.botInitialized) {
-               this.table.footerManager.prepend(this.botElement);
-               this.botInitialized = true;
-       }
-};
-
-ColumnCalcs.prototype.scrollHorizontal = function (left) {
-       var hozAdjust = 0,
-           scrollWidth = this.table.columnManager.getElement().scrollWidth - this.table.element.clientWidth;
-
-       if (this.botInitialized) {
-               this.botRow.getElement().style.marginLeft = -left + "px";
-       }
-};
-
-ColumnCalcs.prototype.recalc = function (rows) {
-       var data, row;
-
-       if (this.topInitialized || this.botInitialized) {
-               data = this.rowsToData(rows);
-
-               if (this.topInitialized) {
-                       if (this.topRow) {
-                               this.topRow.deleteCells();
-                       }
-
-                       row = this.generateRow("top", this.rowsToData(rows));
-                       this.topRow = row;
-                       while (this.topElement.firstChild) {
-                               this.topElement.removeChild(this.topElement.firstChild);
-                       }this.topElement.appendChild(row.getElement());
-                       row.initialize(true);
-               }
-
-               if (this.botInitialized) {
-                       if (this.botRow) {
-                               this.botRow.deleteCells();
-                       }
-
-                       row = this.generateRow("bottom", this.rowsToData(rows));
-                       this.botRow = row;
-                       while (this.botElement.firstChild) {
-                               this.botElement.removeChild(this.botElement.firstChild);
-                       }this.botElement.appendChild(row.getElement());
-                       row.initialize(true);
-               }
-
-               this.table.rowManager.adjustTableSize();
-
-               //set resizable handles
-               if (this.table.modExists("frozenColumns")) {
-                       this.table.modules.frozenColumns.layout();
-               }
-       }
-};
-
-ColumnCalcs.prototype.recalcRowGroup = function (row) {
-       this.recalcGroup(this.table.modules.groupRows.getRowGroup(row));
-};
-
-ColumnCalcs.prototype.recalcAll = function () {
-       var _this = this;
-
-       if (this.topCalcs.length || this.botCalcs.length) {
-               if (this.table.options.columnCalcs !== "group") {
-                       this.recalc(this.table.rowManager.activeRows);
-               }
-
-               if (this.table.options.groupBy && this.table.options.columnCalcs !== "table") {
-
-                       var groups = table.modules.groupRows.getChildGroups();
-
-                       groups.forEach(function (group) {
-                               _this.recalcGroup(group);
-                       });
-               }
-       }
-};
-
-ColumnCalcs.prototype.recalcGroup = function (group) {
-       var data, rowData;
-
-       if (group) {
-               if (group.calcs) {
-                       if (group.calcs.bottom) {
-                               data = this.rowsToData(group.rows);
-                               rowData = this.generateRowData("bottom", data);
-
-                               group.calcs.bottom.updateData(rowData);
-                               group.calcs.bottom.reinitialize();
-                       }
-
-                       if (group.calcs.top) {
-                               data = this.rowsToData(group.rows);
-                               rowData = this.generateRowData("top", data);
-
-                               group.calcs.top.updateData(rowData);
-                               group.calcs.top.reinitialize();
-                       }
-               }
-       }
-};
-
-//generate top stats row
-ColumnCalcs.prototype.generateTopRow = function (rows) {
-       return this.generateRow("top", this.rowsToData(rows));
-};
-//generate bottom stats row
-ColumnCalcs.prototype.generateBottomRow = function (rows) {
-       return this.generateRow("bottom", this.rowsToData(rows));
-};
-
-ColumnCalcs.prototype.rowsToData = function (rows) {
-       var _this2 = this;
-
-       var data = [];
-
-       rows.forEach(function (row) {
-               data.push(row.getData());
-
-               if (_this2.table.options.dataTree && _this2.table.options.dataTreeChildColumnCalcs) {
-                       if (row.modules.dataTree.open) {
-                               var children = _this2.rowsToData(_this2.table.modules.dataTree.getFilteredTreeChildren(row));
-                               data = data.concat(children);
-                       }
-               }
-       });
-
-       return data;
-};
-
-//generate stats row
-ColumnCalcs.prototype.generateRow = function (pos, data) {
-       var self = this,
-           rowData = this.generateRowData(pos, data),
-           row;
-
-       if (self.table.modExists("mutator")) {
-               self.table.modules.mutator.disable();
-       }
-
-       row = new Row(rowData, this, "calc");
-
-       if (self.table.modExists("mutator")) {
-               self.table.modules.mutator.enable();
-       }
-
-       row.getElement().classList.add("tabulator-calcs", "tabulator-calcs-" + pos);
-
-       row.generateCells = function () {
-
-               var cells = [];
-
-               self.table.columnManager.columnsByIndex.forEach(function (column) {
-
-                       //set field name of mock column
-                       self.genColumn.setField(column.getField());
-                       self.genColumn.hozAlign = column.hozAlign;
-
-                       if (column.definition[pos + "CalcFormatter"] && self.table.modExists("format")) {
-
-                               self.genColumn.modules.format = {
-                                       formatter: self.table.modules.format.getFormatter(column.definition[pos + "CalcFormatter"]),
-                                       params: column.definition[pos + "CalcFormatterParams"]
-                               };
-                       } else {
-                               self.genColumn.modules.format = {
-                                       formatter: self.table.modules.format.getFormatter("plaintext"),
-                                       params: {}
-                               };
-                       }
-
-                       //ensure css class defintion is replicated to calculation cell
-                       self.genColumn.definition.cssClass = column.definition.cssClass;
-
-                       //generate cell and assign to correct column
-                       var cell = new Cell(self.genColumn, row);
-                       cell.column = column;
-                       cell.setWidth();
-
-                       column.cells.push(cell);
-                       cells.push(cell);
-
-                       if (!column.visible) {
-                               cell.hide();
-                       }
-               });
-
-               this.cells = cells;
-       };
-
-       return row;
-};
-
-//generate stats row
-ColumnCalcs.prototype.generateRowData = function (pos, data) {
-       var rowData = {},
-           calcs = pos == "top" ? this.topCalcs : this.botCalcs,
-           type = pos == "top" ? "topCalc" : "botCalc",
-           params,
-           paramKey;
-
-       calcs.forEach(function (column) {
-               var values = [];
-
-               if (column.modules.columnCalcs && column.modules.columnCalcs[type]) {
-                       data.forEach(function (item) {
-                               values.push(column.getFieldValue(item));
-                       });
-
-                       paramKey = type + "Params";
-                       params = typeof column.modules.columnCalcs[paramKey] === "function" ? column.modules.columnCalcs[paramKey](values, data) : column.modules.columnCalcs[paramKey];
-
-                       column.setFieldValue(rowData, column.modules.columnCalcs[type](values, data, params));
-               }
-       });
-
-       return rowData;
-};
-
-ColumnCalcs.prototype.hasTopCalcs = function () {
-       return !!this.topCalcs.length;
-};
-
-ColumnCalcs.prototype.hasBottomCalcs = function () {
-       return !!this.botCalcs.length;
-};
-
-//handle table redraw
-ColumnCalcs.prototype.redraw = function () {
-       if (this.topRow) {
-               this.topRow.normalizeHeight(true);
-       }
-       if (this.botRow) {
-               this.botRow.normalizeHeight(true);
-       }
-};
-
-//return the calculated
-ColumnCalcs.prototype.getResults = function () {
-       var self = this,
-           results = {},
-           groups;
-
-       if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-               groups = this.table.modules.groupRows.getGroups(true);
-
-               groups.forEach(function (group) {
-                       results[group.getKey()] = self.getGroupResults(group);
-               });
-       } else {
-               results = {
-                       top: this.topRow ? this.topRow.getData() : {},
-                       bottom: this.botRow ? this.botRow.getData() : {}
-               };
-       }
-
-       return results;
-};
-
-//get results from a group
-ColumnCalcs.prototype.getGroupResults = function (group) {
-       var self = this,
-           groupObj = group._getSelf(),
-           subGroups = group.getSubGroups(),
-           subGroupResults = {},
-           results = {};
-
-       subGroups.forEach(function (subgroup) {
-               subGroupResults[subgroup.getKey()] = self.getGroupResults(subgroup);
-       });
-
-       results = {
-               top: groupObj.calcs.top ? groupObj.calcs.top.getData() : {},
-               bottom: groupObj.calcs.bottom ? groupObj.calcs.bottom.getData() : {},
-               groups: subGroupResults
-       };
-
-       return results;
-};
-
-//default calculations
-ColumnCalcs.prototype.calculations = {
-       "avg": function avg(values, data, calcParams) {
-               var output = 0,
-                   precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : 2;
-
-               if (values.length) {
-                       output = values.reduce(function (sum, value) {
-                               value = Number(value);
-                               return sum + value;
-                       });
-
-                       output = output / values.length;
-
-                       output = precision !== false ? output.toFixed(precision) : output;
-               }
-
-               return parseFloat(output).toString();
-       },
-       "max": function max(values, data, calcParams) {
-               var output = null,
-                   precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : false;
-
-               values.forEach(function (value) {
-
-                       value = Number(value);
-
-                       if (value > output || output === null) {
-                               output = value;
-                       }
-               });
-
-               return output !== null ? precision !== false ? output.toFixed(precision) : output : "";
-       },
-       "min": function min(values, data, calcParams) {
-               var output = null,
-                   precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : false;
-
-               values.forEach(function (value) {
-
-                       value = Number(value);
-
-                       if (value < output || output === null) {
-                               output = value;
-                       }
-               });
-
-               return output !== null ? precision !== false ? output.toFixed(precision) : output : "";
-       },
-       "sum": function sum(values, data, calcParams) {
-               var output = 0,
-                   precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : false;
-
-               if (values.length) {
-                       values.forEach(function (value) {
-                               value = Number(value);
-
-                               output += !isNaN(value) ? Number(value) : 0;
-                       });
-               }
-
-               return precision !== false ? output.toFixed(precision) : output;
-       },
-       "concat": function concat(values, data, calcParams) {
-               var output = 0;
-
-               if (values.length) {
-                       output = values.reduce(function (sum, value) {
-                               return String(sum) + String(value);
-                       });
-               }
-
-               return output;
-       },
-       "count": function count(values, data, calcParams) {
-               var output = 0;
-
-               if (values.length) {
-                       values.forEach(function (value) {
-                               if (value) {
-                                       output++;
-                               }
-                       });
-               }
-
-               return output;
-       }
-};
-
-Tabulator.prototype.registerModule("columnCalcs", ColumnCalcs);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/calculation_colums.min.js b/app/static/vendors/tabulator/js.old/modules/calculation_colums.min.js
deleted file mode 100644 (file)
index 3174e0f..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ColumnCalcs=function(t){this.table=t,this.topCalcs=[],this.botCalcs=[],this.genColumn=!1,this.topElement=this.createElement(),this.botElement=this.createElement(),this.topRow=!1,this.botRow=!1,this.topInitialized=!1,this.botInitialized=!1,this.initialize()};ColumnCalcs.prototype.createElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-calcs-holder"),t},ColumnCalcs.prototype.initialize=function(){this.genColumn=new Column({field:"value"},this)},ColumnCalcs.prototype.registerColumnField=function(){},ColumnCalcs.prototype.initializeColumn=function(t){var o=t.definition,e={topCalcParams:o.topCalcParams||{},botCalcParams:o.bottomCalcParams||{}};if(o.topCalc){switch(_typeof(o.topCalc)){case"string":this.calculations[o.topCalc]?e.topCalc=this.calculations[o.topCalc]:console.warn("Column Calc Error - No such calculation found, ignoring: ",o.topCalc);break;case"function":e.topCalc=o.topCalc}e.topCalc&&(t.modules.columnCalcs=e,this.topCalcs.push(t),"group"!=this.table.options.columnCalcs&&this.initializeTopRow())}if(o.bottomCalc){switch(_typeof(o.bottomCalc)){case"string":this.calculations[o.bottomCalc]?e.botCalc=this.calculations[o.bottomCalc]:console.warn("Column Calc Error - No such calculation found, ignoring: ",o.bottomCalc);break;case"function":e.botCalc=o.bottomCalc}e.botCalc&&(t.modules.columnCalcs=e,this.botCalcs.push(t),"group"!=this.table.options.columnCalcs&&this.initializeBottomRow())}},ColumnCalcs.prototype.removeCalcs=function(){var t=!1;this.topInitialized&&(this.topInitialized=!1,this.topElement.parentNode.removeChild(this.topElement),t=!0),this.botInitialized&&(this.botInitialized=!1,this.table.footerManager.remove(this.botElement),t=!0),t&&this.table.rowManager.adjustTableSize()},ColumnCalcs.prototype.initializeTopRow=function(){this.topInitialized||(this.table.columnManager.getElement().insertBefore(this.topElement,this.table.columnManager.headersElement.nextSibling),this.topInitialized=!0)},ColumnCalcs.prototype.initializeBottomRow=function(){this.botInitialized||(this.table.footerManager.prepend(this.botElement),this.botInitialized=!0)},ColumnCalcs.prototype.scrollHorizontal=function(t){this.table.columnManager.getElement().scrollWidth,this.table.element.clientWidth;this.botInitialized&&(this.botRow.getElement().style.marginLeft=-t+"px")},ColumnCalcs.prototype.recalc=function(t){var o;if(this.topInitialized||this.botInitialized){if(this.rowsToData(t),this.topInitialized){for(this.topRow&&this.topRow.deleteCells(),o=this.generateRow("top",this.rowsToData(t)),this.topRow=o;this.topElement.firstChild;)this.topElement.removeChild(this.topElement.firstChild);this.topElement.appendChild(o.getElement()),o.initialize(!0)}if(this.botInitialized){for(this.botRow&&this.botRow.deleteCells(),o=this.generateRow("bottom",this.rowsToData(t)),this.botRow=o;this.botElement.firstChild;)this.botElement.removeChild(this.botElement.firstChild);this.botElement.appendChild(o.getElement()),o.initialize(!0)}this.table.rowManager.adjustTableSize(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout()}},ColumnCalcs.prototype.recalcRowGroup=function(t){this.recalcGroup(this.table.modules.groupRows.getRowGroup(t))},ColumnCalcs.prototype.recalcAll=function(){var t=this;if((this.topCalcs.length||this.botCalcs.length)&&("group"!==this.table.options.columnCalcs&&this.recalc(this.table.rowManager.activeRows),this.table.options.groupBy&&"table"!==this.table.options.columnCalcs)){table.modules.groupRows.getChildGroups().forEach(function(o){t.recalcGroup(o)})}},ColumnCalcs.prototype.recalcGroup=function(t){var o,e;t&&t.calcs&&(t.calcs.bottom&&(o=this.rowsToData(t.rows),e=this.generateRowData("bottom",o),t.calcs.bottom.updateData(e),t.calcs.bottom.reinitialize()),t.calcs.top&&(o=this.rowsToData(t.rows),e=this.generateRowData("top",o),t.calcs.top.updateData(e),t.calcs.top.reinitialize()))},ColumnCalcs.prototype.generateTopRow=function(t){return this.generateRow("top",this.rowsToData(t))},ColumnCalcs.prototype.generateBottomRow=function(t){return this.generateRow("bottom",this.rowsToData(t))},ColumnCalcs.prototype.rowsToData=function(t){var o=this,e=[];return t.forEach(function(t){if(e.push(t.getData()),o.table.options.dataTree&&o.table.options.dataTreeChildColumnCalcs&&t.modules.dataTree.open){var l=o.rowsToData(o.table.modules.dataTree.getFilteredTreeChildren(t));e=e.concat(l)}}),e},ColumnCalcs.prototype.generateRow=function(t,o){var e,l=this,i=this.generateRowData(t,o);return l.table.modExists("mutator")&&l.table.modules.mutator.disable(),e=new Row(i,this,"calc"),l.table.modExists("mutator")&&l.table.modules.mutator.enable(),e.getElement().classList.add("tabulator-calcs","tabulator-calcs-"+t),e.generateCells=function(){var o=[];l.table.columnManager.columnsByIndex.forEach(function(i){l.genColumn.setField(i.getField()),l.genColumn.hozAlign=i.hozAlign,i.definition[t+"CalcFormatter"]&&l.table.modExists("format")?l.genColumn.modules.format={formatter:l.table.modules.format.getFormatter(i.definition[t+"CalcFormatter"]),params:i.definition[t+"CalcFormatterParams"]}:l.genColumn.modules.format={formatter:l.table.modules.format.getFormatter("plaintext"),params:{}},l.genColumn.definition.cssClass=i.definition.cssClass;var a=new Cell(l.genColumn,e);a.column=i,a.setWidth(),i.cells.push(a),o.push(a),i.visible||a.hide()}),this.cells=o},e},ColumnCalcs.prototype.generateRowData=function(t,o){var e,l,i={},a="top"==t?this.topCalcs:this.botCalcs,n="top"==t?"topCalc":"botCalc";return a.forEach(function(t){var a=[];t.modules.columnCalcs&&t.modules.columnCalcs[n]&&(o.forEach(function(o){a.push(t.getFieldValue(o))}),l=n+"Params",e="function"==typeof t.modules.columnCalcs[l]?t.modules.columnCalcs[l](a,o):t.modules.columnCalcs[l],t.setFieldValue(i,t.modules.columnCalcs[n](a,o,e)))}),i},ColumnCalcs.prototype.hasTopCalcs=function(){return!!this.topCalcs.length},ColumnCalcs.prototype.hasBottomCalcs=function(){return!!this.botCalcs.length},ColumnCalcs.prototype.redraw=function(){this.topRow&&this.topRow.normalizeHeight(!0),this.botRow&&this.botRow.normalizeHeight(!0)},ColumnCalcs.prototype.getResults=function(){var t,o=this,e={};return this.table.options.groupBy&&this.table.modExists("groupRows")?(t=this.table.modules.groupRows.getGroups(!0),t.forEach(function(t){e[t.getKey()]=o.getGroupResults(t)})):e={top:this.topRow?this.topRow.getData():{},bottom:this.botRow?this.botRow.getData():{}},e},ColumnCalcs.prototype.getGroupResults=function(t){var o=this,e=t._getSelf(),l=t.getSubGroups(),i={};return l.forEach(function(t){i[t.getKey()]=o.getGroupResults(t)}),{top:e.calcs.top?e.calcs.top.getData():{},bottom:e.calcs.bottom?e.calcs.bottom.getData():{},groups:i}},ColumnCalcs.prototype.calculations={avg:function(t,o,e){var l=0,i=void 0!==e.precision?e.precision:2;return t.length&&(l=t.reduce(function(t,o){return o=Number(o),t+o}),l/=t.length,l=!1!==i?l.toFixed(i):l),parseFloat(l).toString()},max:function(t,o,e){var l=null,i=void 0!==e.precision&&e.precision;return t.forEach(function(t){((t=Number(t))>l||null===l)&&(l=t)}),null!==l?!1!==i?l.toFixed(i):l:""},min:function(t,o,e){var l=null,i=void 0!==e.precision&&e.precision;return t.forEach(function(t){((t=Number(t))<l||null===l)&&(l=t)}),null!==l?!1!==i?l.toFixed(i):l:""},sum:function(t,o,e){var l=0,i=void 0!==e.precision&&e.precision;return t.length&&t.forEach(function(t){t=Number(t),l+=isNaN(t)?0:Number(t)}),!1!==i?l.toFixed(i):l},concat:function(t,o,e){var l=0;return t.length&&(l=t.reduce(function(t,o){return String(t)+String(o)})),l},count:function(t,o,e){var l=0;return t.length&&t.forEach(function(t){t&&l++}),l}},Tabulator.prototype.registerModule("columnCalcs",ColumnCalcs);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/clipboard.js b/app/static/vendors/tabulator/js.old/modules/clipboard.js
deleted file mode 100644 (file)
index eddf68b..0000000
+++ /dev/null
@@ -1,335 +0,0 @@
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-
-var Clipboard = function Clipboard(table) {
-       this.table = table;
-       this.mode = true;
-
-       this.pasteParser = function () {};
-       this.pasteAction = function () {};
-       this.customSelection = false;
-       this.rowRange = false;
-       this.blocked = true; //block copy actions not originating from this command
-};
-
-Clipboard.prototype.initialize = function () {
-       var _this = this;
-
-       this.mode = this.table.options.clipboard;
-
-       this.rowRange = this.table.options.clipboardCopyRowRange;
-
-       if (this.mode === true || this.mode === "copy") {
-               this.table.element.addEventListener("copy", function (e) {
-                       var plain, html;
-
-                       if (!_this.blocked) {
-                               e.preventDefault();
-
-                               if (_this.customSelection) {
-                                       plain = _this.customSelection;
-
-                                       if (_this.table.options.clipboardCopyFormatter) {
-                                               plain = _this.table.options.clipboardCopyFormatter("plain", plain);
-                                       }
-                               } else {
-                                       html = _this.table.modules.export.getHtml(_this.rowRange, _this.table.options.clipboardCopyStyled, _this.table.options.clipboardCopyConfig, "clipboard");
-                                       plain = html ? _this.generatePlainContent(html) : "";
-
-                                       if (_this.table.options.clipboardCopyFormatter) {
-                                               plain = _this.table.options.clipboardCopyFormatter("plain", plain);
-                                               html = _this.table.options.clipboardCopyFormatter("html", html);
-                                       }
-                               }
-
-                               if (window.clipboardData && window.clipboardData.setData) {
-                                       window.clipboardData.setData('Text', plain);
-                               } else if (e.clipboardData && e.clipboardData.setData) {
-                                       e.clipboardData.setData('text/plain', plain);
-                                       if (html) {
-                                               e.clipboardData.setData('text/html', html);
-                                       }
-                               } else if (e.originalEvent && e.originalEvent.clipboardData.setData) {
-                                       e.originalEvent.clipboardData.setData('text/plain', plain);
-                                       if (html) {
-                                               e.originalEvent.clipboardData.setData('text/html', html);
-                                       }
-                               }
-
-                               _this.table.options.clipboardCopied.call(_this.table, plain, html);
-
-                               _this.reset();
-                       }
-               });
-       }
-
-       if (this.mode === true || this.mode === "paste") {
-               this.table.element.addEventListener("paste", function (e) {
-                       _this.paste(e);
-               });
-       }
-
-       this.setPasteParser(this.table.options.clipboardPasteParser);
-       this.setPasteAction(this.table.options.clipboardPasteAction);
-};
-
-Clipboard.prototype.reset = function () {
-       this.blocked = false;
-       this.originalSelectionText = "";
-};
-
-Clipboard.prototype.generatePlainContent = function (html) {
-       var output = [];
-
-       var holder = document.createElement("div");
-       holder.innerHTML = html;
-
-       var table = holder.getElementsByTagName("table")[0];
-       var rows = Array.prototype.slice.call(table.getElementsByTagName("tr"));
-
-       rows.forEach(function (row) {
-               var rowData = [];
-
-               var headers = Array.prototype.slice.call(row.getElementsByTagName("th"));
-               var cells = Array.prototype.slice.call(row.getElementsByTagName("td"));
-
-               cells = cells.concat(headers);
-
-               cells.forEach(function (cell) {
-                       var val = cell.innerHTML;
-
-                       val = val == "&nbsp;" ? "" : val;
-
-                       rowData.push(val);
-               });
-
-               output.push(rowData.join("\t"));
-       });
-
-       return output.join("\n");
-};
-
-Clipboard.prototype.copy = function (range, internal) {
-       var range, sel, textRange;
-       this.blocked = false;
-       this.customSelection = false;
-
-       if (this.mode === true || this.mode === "copy") {
-
-               this.rowRange = range || this.table.options.clipboardCopyRowRange;
-
-               if (typeof window.getSelection != "undefined" && typeof document.createRange != "undefined") {
-                       range = document.createRange();
-                       range.selectNodeContents(this.table.element);
-                       sel = window.getSelection();
-
-                       if (sel.toString() && internal) {
-                               this.customSelection = sel.toString();
-                       }
-
-                       sel.removeAllRanges();
-                       sel.addRange(range);
-               } else if (typeof document.selection != "undefined" && typeof document.body.createTextRange != "undefined") {
-                       textRange = document.body.createTextRange();
-                       textRange.moveToElementText(this.table.element);
-                       textRange.select();
-               }
-
-               document.execCommand('copy');
-
-               if (sel) {
-                       sel.removeAllRanges();
-               }
-       }
-};
-
-//PASTE EVENT HANDLING
-
-Clipboard.prototype.setPasteAction = function (action) {
-
-       switch (typeof action === "undefined" ? "undefined" : _typeof(action)) {
-               case "string":
-                       this.pasteAction = this.pasteActions[action];
-
-                       if (!this.pasteAction) {
-                               console.warn("Clipboard Error - No such paste action found:", action);
-                       }
-                       break;
-
-               case "function":
-                       this.pasteAction = action;
-                       break;
-       }
-};
-
-Clipboard.prototype.setPasteParser = function (parser) {
-       switch (typeof parser === "undefined" ? "undefined" : _typeof(parser)) {
-               case "string":
-                       this.pasteParser = this.pasteParsers[parser];
-
-                       if (!this.pasteParser) {
-                               console.warn("Clipboard Error - No such paste parser found:", parser);
-                       }
-                       break;
-
-               case "function":
-                       this.pasteParser = parser;
-                       break;
-       }
-};
-
-Clipboard.prototype.paste = function (e) {
-       var data, rowData, rows;
-
-       if (this.checkPaseOrigin(e)) {
-
-               data = this.getPasteData(e);
-
-               rowData = this.pasteParser.call(this, data);
-
-               if (rowData) {
-                       e.preventDefault();
-
-                       if (this.table.modExists("mutator")) {
-                               rowData = this.mutateData(rowData);
-                       }
-
-                       rows = this.pasteAction.call(this, rowData);
-                       this.table.options.clipboardPasted.call(this.table, data, rowData, rows);
-               } else {
-                       this.table.options.clipboardPasteError.call(this.table, data);
-               }
-       }
-};
-
-Clipboard.prototype.mutateData = function (data) {
-       var self = this,
-           output = [];
-
-       if (Array.isArray(data)) {
-               data.forEach(function (row) {
-                       output.push(self.table.modules.mutator.transformRow(row, "clipboard"));
-               });
-       } else {
-               output = data;
-       }
-
-       return output;
-};
-
-Clipboard.prototype.checkPaseOrigin = function (e) {
-       var valid = true;
-
-       if (e.target.tagName != "DIV" || this.table.modules.edit.currentCell) {
-               valid = false;
-       }
-
-       return valid;
-};
-
-Clipboard.prototype.getPasteData = function (e) {
-       var data;
-
-       if (window.clipboardData && window.clipboardData.getData) {
-               data = window.clipboardData.getData('Text');
-       } else if (e.clipboardData && e.clipboardData.getData) {
-               data = e.clipboardData.getData('text/plain');
-       } else if (e.originalEvent && e.originalEvent.clipboardData.getData) {
-               data = e.originalEvent.clipboardData.getData('text/plain');
-       }
-
-       return data;
-};
-
-Clipboard.prototype.pasteParsers = {
-       table: function table(clipboard) {
-               var data = [],
-                   success = false,
-                   headerFindSuccess = true,
-                   columns = this.table.columnManager.columns,
-                   columnMap = [],
-                   rows = [];
-
-               //get data from clipboard into array of columns and rows.
-               clipboard = clipboard.split("\n");
-
-               clipboard.forEach(function (row) {
-                       data.push(row.split("\t"));
-               });
-
-               if (data.length && !(data.length === 1 && data[0].length < 2)) {
-                       success = true;
-
-                       //check if headers are present by title
-                       data[0].forEach(function (value) {
-                               var column = columns.find(function (column) {
-                                       return value && column.definition.title && value.trim() && column.definition.title.trim() === value.trim();
-                               });
-
-                               if (column) {
-                                       columnMap.push(column);
-                               } else {
-                                       headerFindSuccess = false;
-                               }
-                       });
-
-                       //check if column headers are present by field
-                       if (!headerFindSuccess) {
-                               headerFindSuccess = true;
-                               columnMap = [];
-
-                               data[0].forEach(function (value) {
-                                       var column = columns.find(function (column) {
-                                               return value && column.field && value.trim() && column.field.trim() === value.trim();
-                                       });
-
-                                       if (column) {
-                                               columnMap.push(column);
-                                       } else {
-                                               headerFindSuccess = false;
-                                       }
-                               });
-
-                               if (!headerFindSuccess) {
-                                       columnMap = this.table.columnManager.columnsByIndex;
-                               }
-                       }
-
-                       //remove header row if found
-                       if (headerFindSuccess) {
-                               data.shift();
-                       }
-
-                       data.forEach(function (item) {
-                               var row = {};
-
-                               item.forEach(function (value, i) {
-                                       if (columnMap[i]) {
-                                               row[columnMap[i].field] = value;
-                                       }
-                               });
-
-                               rows.push(row);
-                       });
-
-                       return rows;
-               } else {
-                       return false;
-               }
-       }
-};
-
-Clipboard.prototype.pasteActions = {
-       replace: function replace(rows) {
-               return this.table.setData(rows);
-       },
-       update: function update(rows) {
-               return this.table.updateOrAddData(rows);
-       },
-       insert: function insert(rows) {
-               return this.table.addData(rows);
-       }
-};
-
-Tabulator.prototype.registerModule("clipboard", Clipboard);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/clipboard.min.js b/app/static/vendors/tabulator/js.old/modules/clipboard.min.js
deleted file mode 100644 (file)
index 639c3b0..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Clipboard=function(t){this.table=t,this.mode=!0,this.pasteParser=function(){},this.pasteAction=function(){},this.customSelection=!1,this.rowRange=!1,this.blocked=!0};Clipboard.prototype.initialize=function(){var t=this;this.mode=this.table.options.clipboard,this.rowRange=this.table.options.clipboardCopyRowRange,!0!==this.mode&&"copy"!==this.mode||this.table.element.addEventListener("copy",function(e){var a,o;t.blocked||(e.preventDefault(),t.customSelection?(a=t.customSelection,t.table.options.clipboardCopyFormatter&&(a=t.table.options.clipboardCopyFormatter("plain",a))):(o=t.table.modules.export.getHtml(t.rowRange,t.table.options.clipboardCopyStyled,t.table.options.clipboardCopyConfig,"clipboard"),a=o?t.generatePlainContent(o):"",t.table.options.clipboardCopyFormatter&&(a=t.table.options.clipboardCopyFormatter("plain",a),o=t.table.options.clipboardCopyFormatter("html",o))),window.clipboardData&&window.clipboardData.setData?window.clipboardData.setData("Text",a):e.clipboardData&&e.clipboardData.setData?(e.clipboardData.setData("text/plain",a),o&&e.clipboardData.setData("text/html",o)):e.originalEvent&&e.originalEvent.clipboardData.setData&&(e.originalEvent.clipboardData.setData("text/plain",a),o&&e.originalEvent.clipboardData.setData("text/html",o)),t.table.options.clipboardCopied.call(t.table,a,o),t.reset())}),!0!==this.mode&&"paste"!==this.mode||this.table.element.addEventListener("paste",function(e){t.paste(e)}),this.setPasteParser(this.table.options.clipboardPasteParser),this.setPasteAction(this.table.options.clipboardPasteAction)},Clipboard.prototype.reset=function(){this.blocked=!1,this.originalSelectionText=""},Clipboard.prototype.generatePlainContent=function(t){var e=[],a=document.createElement("div");a.innerHTML=t;var o=a.getElementsByTagName("table")[0];return Array.prototype.slice.call(o.getElementsByTagName("tr")).forEach(function(t){var a=[],o=Array.prototype.slice.call(t.getElementsByTagName("th")),i=Array.prototype.slice.call(t.getElementsByTagName("td"));i=i.concat(o),i.forEach(function(t){var e=t.innerHTML;e="&nbsp;"==e?"":e,a.push(e)}),e.push(a.join("\t"))}),e.join("\n")},Clipboard.prototype.copy=function(t,e){var t,a,o;this.blocked=!1,this.customSelection=!1,!0!==this.mode&&"copy"!==this.mode||(this.rowRange=t||this.table.options.clipboardCopyRowRange,void 0!==window.getSelection&&void 0!==document.createRange?(t=document.createRange(),t.selectNodeContents(this.table.element),a=window.getSelection(),a.toString()&&e&&(this.customSelection=a.toString()),a.removeAllRanges(),a.addRange(t)):void 0!==document.selection&&void 0!==document.body.createTextRange&&(o=document.body.createTextRange(),o.moveToElementText(this.table.element),o.select()),document.execCommand("copy"),a&&a.removeAllRanges())},Clipboard.prototype.setPasteAction=function(t){switch(void 0===t?"undefined":_typeof(t)){case"string":this.pasteAction=this.pasteActions[t],this.pasteAction||console.warn("Clipboard Error - No such paste action found:",t);break;case"function":this.pasteAction=t}},Clipboard.prototype.setPasteParser=function(t){switch(void 0===t?"undefined":_typeof(t)){case"string":this.pasteParser=this.pasteParsers[t],this.pasteParser||console.warn("Clipboard Error - No such paste parser found:",t);break;case"function":this.pasteParser=t}},Clipboard.prototype.paste=function(t){var e,a,o;this.checkPaseOrigin(t)&&(e=this.getPasteData(t),a=this.pasteParser.call(this,e),a?(t.preventDefault(),this.table.modExists("mutator")&&(a=this.mutateData(a)),o=this.pasteAction.call(this,a),this.table.options.clipboardPasted.call(this.table,e,a,o)):this.table.options.clipboardPasteError.call(this.table,e))},Clipboard.prototype.mutateData=function(t){var e=this,a=[];return Array.isArray(t)?t.forEach(function(t){a.push(e.table.modules.mutator.transformRow(t,"clipboard"))}):a=t,a},Clipboard.prototype.checkPaseOrigin=function(t){var e=!0;return("DIV"!=t.target.tagName||this.table.modules.edit.currentCell)&&(e=!1),e},Clipboard.prototype.getPasteData=function(t){var e;return window.clipboardData&&window.clipboardData.getData?e=window.clipboardData.getData("Text"):t.clipboardData&&t.clipboardData.getData?e=t.clipboardData.getData("text/plain"):t.originalEvent&&t.originalEvent.clipboardData.getData&&(e=t.originalEvent.clipboardData.getData("text/plain")),e},Clipboard.prototype.pasteParsers={table:function(t){var e=[],a=!0,o=this.table.columnManager.columns,i=[],n=[];return t=t.split("\n"),t.forEach(function(t){e.push(t.split("\t"))}),!(!e.length||1===e.length&&e[0].length<2)&&(!0,e[0].forEach(function(t){var e=o.find(function(e){return t&&e.definition.title&&t.trim()&&e.definition.title.trim()===t.trim()});e?i.push(e):a=!1}),a||(a=!0,i=[],e[0].forEach(function(t){var e=o.find(function(e){return t&&e.field&&t.trim()&&e.field.trim()===t.trim()});e?i.push(e):a=!1}),a||(i=this.table.columnManager.columnsByIndex)),a&&e.shift(),e.forEach(function(t){var e={};t.forEach(function(t,a){i[a]&&(e[i[a].field]=t)}),n.push(e)}),n)}},Clipboard.prototype.pasteActions={replace:function(t){return this.table.setData(t)},update:function(t){return this.table.updateOrAddData(t)},insert:function(t){return this.table.addData(t)}},Tabulator.prototype.registerModule("clipboard",Clipboard);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/data_tree.js b/app/static/vendors/tabulator/js.old/modules/data_tree.js
deleted file mode 100644 (file)
index 03e2518..0000000
+++ /dev/null
@@ -1,386 +0,0 @@
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-
-var DataTree = function DataTree(table) {
-       this.table = table;
-       this.indent = 10;
-       this.field = "";
-       this.collapseEl = null;
-       this.expandEl = null;
-       this.branchEl = null;
-       this.elementField = false;
-
-       this.startOpen = function () {};
-
-       this.displayIndex = 0;
-};
-
-DataTree.prototype.initialize = function () {
-       var dummyEl = null,
-           firstCol = this.table.columnManager.getFirstVisibileColumn(),
-           options = this.table.options;
-
-       this.field = options.dataTreeChildField;
-       this.indent = options.dataTreeChildIndent;
-       this.elementField = options.dataTreeElementColumn || (firstCol ? firstCol.field : false);
-
-       if (options.dataTreeBranchElement) {
-
-               if (options.dataTreeBranchElement === true) {
-                       this.branchEl = document.createElement("div");
-                       this.branchEl.classList.add("tabulator-data-tree-branch");
-               } else {
-                       if (typeof options.dataTreeBranchElement === "string") {
-                               dummyEl = document.createElement("div");
-                               dummyEl.innerHTML = options.dataTreeBranchElement;
-                               this.branchEl = dummyEl.firstChild;
-                       } else {
-                               this.branchEl = options.dataTreeBranchElement;
-                       }
-               }
-       }
-
-       if (options.dataTreeCollapseElement) {
-               if (typeof options.dataTreeCollapseElement === "string") {
-                       dummyEl = document.createElement("div");
-                       dummyEl.innerHTML = options.dataTreeCollapseElement;
-                       this.collapseEl = dummyEl.firstChild;
-               } else {
-                       this.collapseEl = options.dataTreeCollapseElement;
-               }
-       } else {
-               this.collapseEl = document.createElement("div");
-               this.collapseEl.classList.add("tabulator-data-tree-control");
-               this.collapseEl.tabIndex = 0;
-               this.collapseEl.innerHTML = "<div class='tabulator-data-tree-control-collapse'></div>";
-       }
-
-       if (options.dataTreeExpandElement) {
-               if (typeof options.dataTreeExpandElement === "string") {
-                       dummyEl = document.createElement("div");
-                       dummyEl.innerHTML = options.dataTreeExpandElement;
-                       this.expandEl = dummyEl.firstChild;
-               } else {
-                       this.expandEl = options.dataTreeExpandElement;
-               }
-       } else {
-               this.expandEl = document.createElement("div");
-               this.expandEl.classList.add("tabulator-data-tree-control");
-               this.expandEl.tabIndex = 0;
-               this.expandEl.innerHTML = "<div class='tabulator-data-tree-control-expand'></div>";
-       }
-
-       switch (_typeof(options.dataTreeStartExpanded)) {
-               case "boolean":
-                       this.startOpen = function (row, index) {
-                               return options.dataTreeStartExpanded;
-                       };
-                       break;
-
-               case "function":
-                       this.startOpen = options.dataTreeStartExpanded;
-                       break;
-
-               default:
-                       this.startOpen = function (row, index) {
-                               return options.dataTreeStartExpanded[index];
-                       };
-                       break;
-       }
-};
-
-DataTree.prototype.initializeRow = function (row) {
-       var childArray = row.getData()[this.field];
-       var isArray = Array.isArray(childArray);
-
-       var children = isArray || !isArray && (typeof childArray === "undefined" ? "undefined" : _typeof(childArray)) === "object" && childArray !== null;
-
-       if (!children && row.modules.dataTree && row.modules.dataTree.branchEl) {
-               row.modules.dataTree.branchEl.parentNode.removeChild(row.modules.dataTree.branchEl);
-       }
-
-       if (!children && row.modules.dataTree && row.modules.dataTree.controlEl) {
-               row.modules.dataTree.controlEl.parentNode.removeChild(row.modules.dataTree.controlEl);
-       }
-
-       row.modules.dataTree = {
-               index: row.modules.dataTree ? row.modules.dataTree.index : 0,
-               open: children ? row.modules.dataTree ? row.modules.dataTree.open : this.startOpen(row.getComponent(), 0) : false,
-               controlEl: row.modules.dataTree && children ? row.modules.dataTree.controlEl : false,
-               branchEl: row.modules.dataTree && children ? row.modules.dataTree.branchEl : false,
-               parent: row.modules.dataTree ? row.modules.dataTree.parent : false,
-               children: children
-       };
-};
-
-DataTree.prototype.layoutRow = function (row) {
-       var cell = this.elementField ? row.getCell(this.elementField) : row.getCells()[0],
-           el = cell.getElement(),
-           config = row.modules.dataTree;
-
-       if (config.branchEl) {
-               if (config.branchEl.parentNode) {
-                       config.branchEl.parentNode.removeChild(config.branchEl);
-               }
-               config.branchEl = false;
-       }
-
-       if (config.controlEl) {
-               if (config.controlEl.parentNode) {
-                       config.controlEl.parentNode.removeChild(config.controlEl);
-               }
-               config.controlEl = false;
-       }
-
-       this.generateControlElement(row, el);
-
-       row.element.classList.add("tabulator-tree-level-" + config.index);
-
-       if (config.index) {
-               if (this.branchEl) {
-                       config.branchEl = this.branchEl.cloneNode(true);
-                       el.insertBefore(config.branchEl, el.firstChild);
-                       config.branchEl.style.marginLeft = (config.branchEl.offsetWidth + config.branchEl.style.marginRight) * (config.index - 1) + config.index * this.indent + "px";
-               } else {
-                       el.style.paddingLeft = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + config.index * this.indent + "px";
-               }
-       }
-};
-
-DataTree.prototype.generateControlElement = function (row, el) {
-       var _this = this;
-
-       var config = row.modules.dataTree,
-           el = el || row.getCells()[0].getElement(),
-           oldControl = config.controlEl;
-
-       if (config.children !== false) {
-
-               if (config.open) {
-                       config.controlEl = this.collapseEl.cloneNode(true);
-                       config.controlEl.addEventListener("click", function (e) {
-                               e.stopPropagation();
-                               _this.collapseRow(row);
-                       });
-               } else {
-                       config.controlEl = this.expandEl.cloneNode(true);
-                       config.controlEl.addEventListener("click", function (e) {
-                               e.stopPropagation();
-                               _this.expandRow(row);
-                       });
-               }
-
-               config.controlEl.addEventListener("mousedown", function (e) {
-                       e.stopPropagation();
-               });
-
-               if (oldControl && oldControl.parentNode === el) {
-                       oldControl.parentNode.replaceChild(config.controlEl, oldControl);
-               } else {
-                       el.insertBefore(config.controlEl, el.firstChild);
-               }
-       }
-};
-
-DataTree.prototype.setDisplayIndex = function (index) {
-       this.displayIndex = index;
-};
-
-DataTree.prototype.getDisplayIndex = function () {
-       return this.displayIndex;
-};
-
-DataTree.prototype.getRows = function (rows) {
-       var _this2 = this;
-
-       var output = [];
-
-       rows.forEach(function (row, i) {
-               var config, children;
-
-               output.push(row);
-
-               if (row instanceof Row) {
-
-                       config = row.modules.dataTree.children;
-
-                       if (!config.index && config.children !== false) {
-                               children = _this2.getChildren(row);
-
-                               children.forEach(function (child) {
-                                       output.push(child);
-                               });
-                       }
-               }
-       });
-
-       return output;
-};
-
-DataTree.prototype.getChildren = function (row) {
-       var _this3 = this;
-
-       var config = row.modules.dataTree,
-           children = [],
-           output = [];
-
-       if (config.children !== false && config.open) {
-               if (!Array.isArray(config.children)) {
-                       config.children = this.generateChildren(row);
-               }
-
-               if (this.table.modExists("filter")) {
-                       children = this.table.modules.filter.filter(config.children);
-               } else {
-                       children = config.children;
-               }
-
-               if (this.table.modExists("sort")) {
-                       this.table.modules.sort.sort(children);
-               }
-
-               children.forEach(function (child) {
-                       output.push(child);
-
-                       var subChildren = _this3.getChildren(child);
-
-                       subChildren.forEach(function (sub) {
-                               output.push(sub);
-                       });
-               });
-       }
-
-       return output;
-};
-
-DataTree.prototype.generateChildren = function (row) {
-       var _this4 = this;
-
-       var children = [];
-
-       var childArray = row.getData()[this.field];
-
-       if (!Array.isArray(childArray)) {
-               childArray = [childArray];
-       }
-
-       childArray.forEach(function (childData) {
-               var childRow = new Row(childData || {}, _this4.table.rowManager);
-               childRow.modules.dataTree.index = row.modules.dataTree.index + 1;
-               childRow.modules.dataTree.parent = row;
-               if (childRow.modules.dataTree.children) {
-                       childRow.modules.dataTree.open = _this4.startOpen(childRow.getComponent(), childRow.modules.dataTree.index);
-               }
-               children.push(childRow);
-       });
-
-       return children;
-};
-
-DataTree.prototype.expandRow = function (row, silent) {
-       var config = row.modules.dataTree;
-
-       if (config.children !== false) {
-               config.open = true;
-
-               row.reinitialize();
-
-               this.table.rowManager.refreshActiveData("tree", false, true);
-
-               this.table.options.dataTreeRowExpanded(row.getComponent(), row.modules.dataTree.index);
-       }
-};
-
-DataTree.prototype.collapseRow = function (row) {
-       var config = row.modules.dataTree;
-
-       if (config.children !== false) {
-               config.open = false;
-
-               row.reinitialize();
-
-               this.table.rowManager.refreshActiveData("tree", false, true);
-
-               this.table.options.dataTreeRowCollapsed(row.getComponent(), row.modules.dataTree.index);
-       }
-};
-
-DataTree.prototype.toggleRow = function (row) {
-       var config = row.modules.dataTree;
-
-       if (config.children !== false) {
-               if (config.open) {
-                       this.collapseRow(row);
-               } else {
-                       this.expandRow(row);
-               }
-       }
-};
-
-DataTree.prototype.getTreeParent = function (row) {
-       return row.modules.dataTree.parent ? row.modules.dataTree.parent.getComponent() : false;
-};
-
-DataTree.prototype.getFilteredTreeChildren = function (row) {
-       var config = row.modules.dataTree,
-           output = [],
-           children;
-
-       if (config.children) {
-
-               if (!Array.isArray(config.children)) {
-                       config.children = this.generateChildren(row);
-               }
-
-               if (this.table.modExists("filter")) {
-                       children = this.table.modules.filter.filter(config.children);
-               } else {
-                       children = config.children;
-               }
-
-               children.forEach(function (childRow) {
-                       if (childRow instanceof Row) {
-                               output.push(childRow);
-                       }
-               });
-       }
-
-       return output;
-};
-
-DataTree.prototype.getTreeChildren = function (row) {
-       var config = row.modules.dataTree,
-           output = [];
-
-       if (config.children) {
-
-               if (!Array.isArray(config.children)) {
-                       config.children = this.generateChildren(row);
-               }
-
-               config.children.forEach(function (childRow) {
-                       if (childRow instanceof Row) {
-                               output.push(childRow.getComponent());
-                       }
-               });
-       }
-
-       return output;
-};
-
-DataTree.prototype.checkForRestyle = function (cell) {
-       if (!cell.row.cells.indexOf(cell)) {
-               cell.row.reinitialize();
-       }
-};
-
-DataTree.prototype.getChildField = function () {
-       return this.field;
-};
-
-DataTree.prototype.redrawNeeded = function (data) {
-       return (this.field ? typeof data[this.field] !== "undefined" : false) || (this.elementField ? typeof data[this.elementField] !== "undefined" : false);
-};
-
-Tabulator.prototype.registerModule("dataTree", DataTree);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/data_tree.min.js b/app/static/vendors/tabulator/js.old/modules/data_tree.min.js
deleted file mode 100644 (file)
index 25c9ef0..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},DataTree=function(e){this.table=e,this.indent=10,this.field="",this.collapseEl=null,this.expandEl=null,this.branchEl=null,this.elementField=!1,this.startOpen=function(){},this.displayIndex=0};DataTree.prototype.initialize=function(){var e=null,t=this.table.columnManager.getFirstVisibileColumn(),a=this.table.options;switch(this.field=a.dataTreeChildField,this.indent=a.dataTreeChildIndent,this.elementField=a.dataTreeElementColumn||!!t&&t.field,a.dataTreeBranchElement&&(!0===a.dataTreeBranchElement?(this.branchEl=document.createElement("div"),this.branchEl.classList.add("tabulator-data-tree-branch")):"string"==typeof a.dataTreeBranchElement?(e=document.createElement("div"),e.innerHTML=a.dataTreeBranchElement,this.branchEl=e.firstChild):this.branchEl=a.dataTreeBranchElement),a.dataTreeCollapseElement?"string"==typeof a.dataTreeCollapseElement?(e=document.createElement("div"),e.innerHTML=a.dataTreeCollapseElement,this.collapseEl=e.firstChild):this.collapseEl=a.dataTreeCollapseElement:(this.collapseEl=document.createElement("div"),this.collapseEl.classList.add("tabulator-data-tree-control"),this.collapseEl.tabIndex=0,this.collapseEl.innerHTML="<div class='tabulator-data-tree-control-collapse'></div>"),a.dataTreeExpandElement?"string"==typeof a.dataTreeExpandElement?(e=document.createElement("div"),e.innerHTML=a.dataTreeExpandElement,this.expandEl=e.firstChild):this.expandEl=a.dataTreeExpandElement:(this.expandEl=document.createElement("div"),this.expandEl.classList.add("tabulator-data-tree-control"),this.expandEl.tabIndex=0,this.expandEl.innerHTML="<div class='tabulator-data-tree-control-expand'></div>"),_typeof(a.dataTreeStartExpanded)){case"boolean":this.startOpen=function(e,t){return a.dataTreeStartExpanded};break;case"function":this.startOpen=a.dataTreeStartExpanded;break;default:this.startOpen=function(e,t){return a.dataTreeStartExpanded[t]}}},DataTree.prototype.initializeRow=function(e){var t=e.getData()[this.field],a=Array.isArray(t),r=a||!a&&"object"===(void 0===t?"undefined":_typeof(t))&&null!==t;!r&&e.modules.dataTree&&e.modules.dataTree.branchEl&&e.modules.dataTree.branchEl.parentNode.removeChild(e.modules.dataTree.branchEl),!r&&e.modules.dataTree&&e.modules.dataTree.controlEl&&e.modules.dataTree.controlEl.parentNode.removeChild(e.modules.dataTree.controlEl),e.modules.dataTree={index:e.modules.dataTree?e.modules.dataTree.index:0,open:!!r&&(e.modules.dataTree?e.modules.dataTree.open:this.startOpen(e.getComponent(),0)),controlEl:!(!e.modules.dataTree||!r)&&e.modules.dataTree.controlEl,branchEl:!(!e.modules.dataTree||!r)&&e.modules.dataTree.branchEl,parent:!!e.modules.dataTree&&e.modules.dataTree.parent,children:r}},DataTree.prototype.layoutRow=function(e){var t=this.elementField?e.getCell(this.elementField):e.getCells()[0],a=t.getElement(),r=e.modules.dataTree;r.branchEl&&(r.branchEl.parentNode&&r.branchEl.parentNode.removeChild(r.branchEl),r.branchEl=!1),r.controlEl&&(r.controlEl.parentNode&&r.controlEl.parentNode.removeChild(r.controlEl),r.controlEl=!1),this.generateControlElement(e,a),e.element.classList.add("tabulator-tree-level-"+r.index),r.index&&(this.branchEl?(r.branchEl=this.branchEl.cloneNode(!0),a.insertBefore(r.branchEl,a.firstChild),r.branchEl.style.marginLeft=(r.branchEl.offsetWidth+r.branchEl.style.marginRight)*(r.index-1)+r.index*this.indent+"px"):a.style.paddingLeft=parseInt(window.getComputedStyle(a,null).getPropertyValue("padding-left"))+r.index*this.indent+"px")},DataTree.prototype.generateControlElement=function(e,t){var a=this,r=e.modules.dataTree,t=t||e.getCells()[0].getElement(),n=r.controlEl;!1!==r.children&&(r.open?(r.controlEl=this.collapseEl.cloneNode(!0),r.controlEl.addEventListener("click",function(t){t.stopPropagation(),a.collapseRow(e)})):(r.controlEl=this.expandEl.cloneNode(!0),r.controlEl.addEventListener("click",function(t){t.stopPropagation(),a.expandRow(e)})),r.controlEl.addEventListener("mousedown",function(e){e.stopPropagation()}),n&&n.parentNode===t?n.parentNode.replaceChild(r.controlEl,n):t.insertBefore(r.controlEl,t.firstChild))},DataTree.prototype.setDisplayIndex=function(e){this.displayIndex=e},DataTree.prototype.getDisplayIndex=function(){return this.displayIndex},DataTree.prototype.getRows=function(e){var t=this,a=[];return e.forEach(function(e,r){var n,l;a.push(e),e instanceof Row&&(n=e.modules.dataTree.children,n.index||!1===n.children||(l=t.getChildren(e),l.forEach(function(e){a.push(e)})))}),a},DataTree.prototype.getChildren=function(e){var t=this,a=e.modules.dataTree,r=[],n=[];return!1!==a.children&&a.open&&(Array.isArray(a.children)||(a.children=this.generateChildren(e)),r=this.table.modExists("filter")?this.table.modules.filter.filter(a.children):a.children,this.table.modExists("sort")&&this.table.modules.sort.sort(r),r.forEach(function(e){n.push(e),t.getChildren(e).forEach(function(e){n.push(e)})})),n},DataTree.prototype.generateChildren=function(e){var t=this,a=[],r=e.getData()[this.field];return Array.isArray(r)||(r=[r]),r.forEach(function(r){var n=new Row(r||{},t.table.rowManager);n.modules.dataTree.index=e.modules.dataTree.index+1,n.modules.dataTree.parent=e,n.modules.dataTree.children&&(n.modules.dataTree.open=t.startOpen(n.getComponent(),n.modules.dataTree.index)),a.push(n)}),a},DataTree.prototype.expandRow=function(e,t){var a=e.modules.dataTree;!1!==a.children&&(a.open=!0,e.reinitialize(),this.table.rowManager.refreshActiveData("tree",!1,!0),this.table.options.dataTreeRowExpanded(e.getComponent(),e.modules.dataTree.index))},DataTree.prototype.collapseRow=function(e){var t=e.modules.dataTree;!1!==t.children&&(t.open=!1,e.reinitialize(),this.table.rowManager.refreshActiveData("tree",!1,!0),this.table.options.dataTreeRowCollapsed(e.getComponent(),e.modules.dataTree.index))},DataTree.prototype.toggleRow=function(e){var t=e.modules.dataTree;!1!==t.children&&(t.open?this.collapseRow(e):this.expandRow(e))},DataTree.prototype.getTreeParent=function(e){return!!e.modules.dataTree.parent&&e.modules.dataTree.parent.getComponent()},DataTree.prototype.getFilteredTreeChildren=function(e){var t,a=e.modules.dataTree,r=[];return a.children&&(Array.isArray(a.children)||(a.children=this.generateChildren(e)),t=this.table.modExists("filter")?this.table.modules.filter.filter(a.children):a.children,t.forEach(function(e){e instanceof Row&&r.push(e)})),r},DataTree.prototype.getTreeChildren=function(e){var t=e.modules.dataTree,a=[];return t.children&&(Array.isArray(t.children)||(t.children=this.generateChildren(e)),t.children.forEach(function(e){e instanceof Row&&a.push(e.getComponent())})),a},DataTree.prototype.checkForRestyle=function(e){e.row.cells.indexOf(e)||e.row.reinitialize()},DataTree.prototype.getChildField=function(){return this.field},DataTree.prototype.redrawNeeded=function(e){return!!this.field&&void 0!==e[this.field]||!!this.elementField&&void 0!==e[this.elementField]},Tabulator.prototype.registerModule("dataTree",DataTree);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/download.js b/app/static/vendors/tabulator/js.old/modules/download.js
deleted file mode 100644 (file)
index cf576be..0000000
+++ /dev/null
@@ -1,949 +0,0 @@
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-
-var Download = function Download(table) {
-       this.table = table; //hold Tabulator object
-       this.fields = {}; //hold filed multi dimension arrays
-       this.columnsByIndex = []; //hold columns in their order in the table
-       this.columnsByField = {}; //hold columns with lookup by field name
-       this.config = {};
-       this.active = false;
-};
-
-//trigger file download
-Download.prototype.download = function (type, filename, options, active, interceptCallback) {
-       var self = this,
-           downloadFunc = false;
-       this.processConfig();
-       this.active = active;
-
-       function buildLink(data, mime) {
-               if (interceptCallback) {
-                       if (interceptCallback === true) {
-                               self.triggerDownload(data, mime, type, filename, true);
-                       } else {
-                               interceptCallback(data);
-                       }
-               } else {
-                       self.triggerDownload(data, mime, type, filename);
-               }
-       }
-
-       if (typeof type == "function") {
-               downloadFunc = type;
-       } else {
-               if (self.downloaders[type]) {
-                       downloadFunc = self.downloaders[type];
-               } else {
-                       console.warn("Download Error - No such download type found: ", type);
-               }
-       }
-
-       this.processColumns();
-
-       if (downloadFunc) {
-               downloadFunc.call(this, self.processDefinitions(), self.processData(active || "active"), options || {}, buildLink, this.config);
-       }
-};
-
-Download.prototype.processConfig = function () {
-       var config = { //download config
-               columnGroups: true,
-               rowGroups: true,
-               columnCalcs: true,
-               dataTree: true
-       };
-
-       if (this.table.options.downloadConfig) {
-               for (var key in this.table.options.downloadConfig) {
-                       config[key] = this.table.options.downloadConfig[key];
-               }
-       }
-
-       this.config.rowGroups = config.rowGroups && this.table.options.groupBy && this.table.modExists("groupRows");
-
-       if (config.columnGroups && this.table.columnManager.columns.length != this.table.columnManager.columnsByIndex.length) {
-               this.config.columnGroups = true;
-       }
-
-       if (config.columnCalcs && this.table.modExists("columnCalcs")) {
-               this.config.columnCalcs = true;
-       }
-
-       if (config.dataTree && this.table.options.dataTree && this.table.modExists("dataTree")) {
-               this.config.dataTree = true;
-       }
-};
-
-Download.prototype.processColumns = function () {
-       var self = this;
-
-       self.columnsByIndex = [];
-       self.columnsByField = {};
-
-       self.table.columnManager.columnsByIndex.forEach(function (column) {
-
-               if (column.field && column.definition.download !== false && (column.visible || !column.visible && column.definition.download)) {
-                       self.columnsByIndex.push(column);
-                       self.columnsByField[column.field] = column;
-               }
-       });
-};
-
-Download.prototype.processDefinitions = function () {
-       var self = this,
-           processedDefinitions = [];
-
-       if (this.config.columnGroups) {
-               self.table.columnManager.columns.forEach(function (column) {
-                       var colData = self.processColumnGroup(column);
-
-                       if (colData) {
-                               processedDefinitions.push(colData);
-                       }
-               });
-       } else {
-               self.columnsByIndex.forEach(function (column) {
-                       if (column.download !== false) {
-                               //isolate definiton from defintion object
-                               processedDefinitions.push(self.processDefinition(column));
-                       }
-               });
-       }
-
-       return processedDefinitions;
-};
-
-Download.prototype.processColumnGroup = function (column) {
-       var _this = this;
-
-       var subGroups = column.columns,
-           maxDepth = 0;
-       var processedColumn = this.processDefinition(column);
-       var groupData = {
-               type: "group",
-               title: processedColumn.title,
-               depth: 1
-       };
-
-       if (subGroups.length) {
-               groupData.subGroups = [];
-               groupData.width = 0;
-
-               subGroups.forEach(function (subGroup) {
-                       var subGroupData = _this.processColumnGroup(subGroup);
-
-                       if (subGroupData.depth > maxDepth) {
-                               maxDepth = subGroupData.depth;
-                       }
-
-                       if (subGroupData) {
-                               groupData.width += subGroupData.width;
-                               groupData.subGroups.push(subGroupData);
-                       }
-               });
-
-               groupData.depth += maxDepth;
-
-               if (!groupData.width) {
-                       return false;
-               }
-       } else {
-               if (column.field && column.definition.download !== false && (column.visible || !column.visible && column.definition.download)) {
-                       groupData.width = 1;
-                       groupData.definition = processedColumn;
-               } else {
-                       return false;
-               }
-       }
-
-       return groupData;
-};
-
-Download.prototype.processDefinition = function (column) {
-       var def = {};
-
-       for (var key in column.definition) {
-               def[key] = column.definition[key];
-       }
-
-       if (typeof column.definition.downloadTitle != "undefined") {
-               def.title = column.definition.downloadTitle;
-       }
-
-       return def;
-};
-
-Download.prototype.processData = function (active) {
-       var _this2 = this;
-
-       var self = this,
-           data = [],
-           groups = [],
-           rows = false,
-           calcs = {};
-
-       if (this.config.rowGroups) {
-
-               if (active == "visible") {
-
-                       rows = self.table.rowManager.getRows(active);
-
-                       rows.forEach(function (row) {
-                               if (row.type == "row") {
-                                       var group = row.getGroup();
-
-                                       if (groups.indexOf(group) === -1) {
-                                               groups.push(group);
-                                       }
-                               }
-                       });
-               } else {
-                       groups = this.table.modules.groupRows.getGroups();
-               }
-
-               groups.forEach(function (group) {
-                       data.push(_this2.processGroupData(group, rows));
-               });
-       } else {
-               if (this.config.dataTree) {
-                       active = active = "active" ? "display" : active;
-               }
-               data = self.table.rowManager.getData(active, "download");
-       }
-
-       if (this.config.columnCalcs) {
-               calcs = this.table.getCalcResults();
-
-               data = {
-                       calcs: calcs,
-                       data: data
-               };
-       }
-
-       //bulk data processing
-       if (typeof self.table.options.downloadDataFormatter == "function") {
-               data = self.table.options.downloadDataFormatter(data);
-       }
-
-       return data;
-};
-
-Download.prototype.processGroupData = function (group, visRows) {
-       var _this3 = this;
-
-       var subGroups = group.getSubGroups();
-
-       var groupData = {
-               type: "group",
-               key: group.key
-       };
-
-       if (subGroups.length) {
-               groupData.subGroups = [];
-
-               subGroups.forEach(function (subGroup) {
-                       groupData.subGroups.push(_this3.processGroupData(subGroup, visRows));
-               });
-       } else {
-               if (visRows) {
-                       groupData.rows = [];
-
-                       group.rows.forEach(function (row) {
-                               if (visRows.indexOf(row) > -1) {
-                                       groupData.rows.push(row.getData("download"));
-                               }
-                       });
-               } else {
-                       groupData.rows = group.getData(true, "download");
-               }
-       }
-
-       return groupData;
-};
-
-Download.prototype.triggerDownload = function (data, mime, type, filename, newTab) {
-       var element = document.createElement('a'),
-           blob = new Blob([data], { type: mime }),
-           filename = filename || "Tabulator." + (typeof type === "function" ? "txt" : type);
-
-       blob = this.table.options.downloadReady.call(this.table, data, blob);
-
-       if (blob) {
-
-               if (newTab) {
-                       window.open(window.URL.createObjectURL(blob));
-               } else {
-                       if (navigator.msSaveOrOpenBlob) {
-                               navigator.msSaveOrOpenBlob(blob, filename);
-                       } else {
-                               element.setAttribute('href', window.URL.createObjectURL(blob));
-
-                               //set file title
-                               element.setAttribute('download', filename);
-
-                               //trigger download
-                               element.style.display = 'none';
-                               document.body.appendChild(element);
-                               element.click();
-
-                               //remove temporary link element
-                               document.body.removeChild(element);
-                       }
-               }
-
-               if (this.table.options.downloadComplete) {
-                       this.table.options.downloadComplete();
-               }
-       }
-};
-
-//nested field lookup
-Download.prototype.getFieldValue = function (field, data) {
-       var column = this.columnsByField[field];
-
-       if (column) {
-               return column.getFieldValue(data);
-       }
-
-       return false;
-};
-
-Download.prototype.commsReceived = function (table, action, data) {
-       switch (action) {
-               case "intercept":
-                       this.download(data.type, "", data.options, data.active, data.intercept);
-                       break;
-       }
-};
-
-//downloaders
-Download.prototype.downloaders = {
-       csv: function csv(columns, data, options, setFileContents, config) {
-               var self = this,
-                   titles = [],
-                   fields = [],
-                   delimiter = options && options.delimiter ? options.delimiter : ",",
-                   fileContents,
-                   output;
-
-               //build column headers
-               function parseSimpleTitles() {
-                       columns.forEach(function (column) {
-                               titles.push('"' + String(column.title).split('"').join('""') + '"');
-                               fields.push(column.field);
-                       });
-               }
-
-               function parseColumnGroup(column, level) {
-                       if (column.subGroups) {
-                               column.subGroups.forEach(function (subGroup) {
-                                       parseColumnGroup(subGroup, level + 1);
-                               });
-                       } else {
-                               titles.push('"' + String(column.title).split('"').join('""') + '"');
-                               fields.push(column.definition.field);
-                       }
-               }
-
-               if (config.columnGroups) {
-                       console.warn("Download Warning - CSV downloader cannot process column groups");
-
-                       columns.forEach(function (column) {
-                               parseColumnGroup(column, 0);
-                       });
-               } else {
-                       parseSimpleTitles();
-               }
-
-               //generate header row
-               fileContents = [titles.join(delimiter)];
-
-               function parseRows(data) {
-                       //generate each row of the table
-                       data.forEach(function (row) {
-                               var rowData = [];
-
-                               fields.forEach(function (field) {
-                                       var value = self.getFieldValue(field, row);
-
-                                       switch (typeof value === "undefined" ? "undefined" : _typeof(value)) {
-                                               case "object":
-                                                       value = JSON.stringify(value);
-                                                       break;
-
-                                               case "undefined":
-                                               case "null":
-                                                       value = "";
-                                                       break;
-
-                                               default:
-                                                       value = value;
-                                       }
-
-                                       //escape quotation marks
-                                       rowData.push('"' + String(value).split('"').join('""') + '"');
-                               });
-
-                               fileContents.push(rowData.join(delimiter));
-                       });
-               }
-
-               function parseGroup(group) {
-                       if (group.subGroups) {
-                               group.subGroups.forEach(function (subGroup) {
-                                       parseGroup(subGroup);
-                               });
-                       } else {
-                               parseRows(group.rows);
-                       }
-               }
-
-               if (config.columnCalcs) {
-                       console.warn("Download Warning - CSV downloader cannot process column calculations");
-                       data = data.data;
-               }
-
-               if (config.rowGroups) {
-                       console.warn("Download Warning - CSV downloader cannot process row groups");
-
-                       data.forEach(function (group) {
-                               parseGroup(group);
-                       });
-               } else {
-                       parseRows(data);
-               }
-
-               output = fileContents.join("\n");
-
-               if (options.bom) {
-                       output = "\uFEFF" + output;
-               }
-
-               setFileContents(output, "text/csv");
-       },
-
-       json: function json(columns, data, options, setFileContents, config) {
-               var fileContents;
-
-               if (config.columnCalcs) {
-                       console.warn("Download Warning - CSV downloader cannot process column calculations");
-                       data = data.data;
-               }
-
-               fileContents = JSON.stringify(data, null, '\t');
-
-               setFileContents(fileContents, "application/json");
-       },
-
-       pdf: function pdf(columns, data, options, setFileContents, config) {
-               var self = this,
-                   fields = [],
-                   header = [],
-                   body = [],
-                   calcs = {},
-                   headerDepth = 1,
-                   table = "",
-                   autoTableParams = {},
-                   rowGroupStyles = options.rowGroupStyles || {
-                       fontStyle: "bold",
-                       fontSize: 12,
-                       cellPadding: 6,
-                       fillColor: 220
-               },
-                   rowCalcStyles = options.rowCalcStyles || {
-                       fontStyle: "bold",
-                       fontSize: 10,
-                       cellPadding: 4,
-                       fillColor: 232
-               },
-                   jsPDFParams = options.jsPDF || {},
-                   title = options && options.title ? options.title : "";
-
-               if (config.columnCalcs) {
-                       calcs = data.calcs;
-                       data = data.data;
-               }
-
-               if (!jsPDFParams.orientation) {
-                       jsPDFParams.orientation = options.orientation || "landscape";
-               }
-
-               if (!jsPDFParams.unit) {
-                       jsPDFParams.unit = "pt";
-               }
-
-               //build column headers
-               function parseSimpleTitles() {
-                       columns.forEach(function (column) {
-                               if (column.field) {
-                                       header.push(column.title || "");
-                                       fields.push(column.field);
-                               }
-                       });
-
-                       header = [header];
-               }
-
-               function parseColumnGroup(column, level) {
-                       var colSpan = column.width,
-                           rowSpan = 1,
-                           col = {
-                               content: column.title || ""
-                       };
-
-                       if (column.subGroups) {
-                               column.subGroups.forEach(function (subGroup) {
-                                       parseColumnGroup(subGroup, level + 1);
-                               });
-                               rowSpan = 1;
-                       } else {
-                               fields.push(column.definition.field);
-                               rowSpan = headerDepth - level;
-                       }
-
-                       col.rowSpan = rowSpan;
-                       // col.colSpan = colSpan;
-
-                       header[level].push(col);
-
-                       colSpan--;
-
-                       if (rowSpan > 1) {
-                               for (var i = level + 1; i < headerDepth; i++) {
-                                       header[i].push("");
-                               }
-                       }
-
-                       for (var i = 0; i < colSpan; i++) {
-                               header[level].push("");
-                       }
-               }
-
-               if (config.columnGroups) {
-                       columns.forEach(function (column) {
-                               if (column.depth > headerDepth) {
-                                       headerDepth = column.depth;
-                               }
-                       });
-
-                       for (var i = 0; i < headerDepth; i++) {
-                               header.push([]);
-                       }
-
-                       columns.forEach(function (column) {
-                               parseColumnGroup(column, 0);
-                       });
-               } else {
-                       parseSimpleTitles();
-               }
-
-               function parseValue(value) {
-                       switch (typeof value === "undefined" ? "undefined" : _typeof(value)) {
-                               case "object":
-                                       value = JSON.stringify(value);
-                                       break;
-
-                               case "undefined":
-                               case "null":
-                                       value = "";
-                                       break;
-
-                               default:
-                                       value = value;
-                       }
-
-                       return value;
-               }
-
-               function parseRows(data) {
-                       //build table rows
-                       data.forEach(function (row) {
-                               body.push(parseRow(row));
-                       });
-               }
-
-               function parseRow(row, styles) {
-                       var rowData = [];
-
-                       fields.forEach(function (field) {
-                               var value = self.getFieldValue(field, row);
-                               value = parseValue(value);
-
-                               if (styles) {
-                                       rowData.push({
-                                               content: value,
-                                               styles: styles
-                                       });
-                               } else {
-                                       rowData.push(value);
-                               }
-                       });
-
-                       return rowData;
-               }
-
-               function parseGroup(group, calcObj) {
-                       var groupData = [];
-
-                       groupData.push({ content: parseValue(group.key), colSpan: fields.length, styles: rowGroupStyles });
-
-                       body.push(groupData);
-
-                       if (group.subGroups) {
-                               group.subGroups.forEach(function (subGroup) {
-                                       parseGroup(subGroup, calcObj[group.key] ? calcObj[group.key].groups || {} : {});
-                               });
-                       } else {
-
-                               if (config.columnCalcs) {
-                                       addCalcRow(calcObj, group.key, "top");
-                               }
-
-                               parseRows(group.rows);
-
-                               if (config.columnCalcs) {
-                                       addCalcRow(calcObj, group.key, "bottom");
-                               }
-                       }
-               }
-
-               function addCalcRow(calcs, selector, pos) {
-                       var calcData = calcs[selector];
-
-                       if (calcData) {
-                               if (pos) {
-                                       calcData = calcData[pos];
-                               }
-
-                               if (Object.keys(calcData).length) {
-                                       body.push(parseRow(calcData, rowCalcStyles));
-                               }
-                       }
-               }
-
-               if (config.rowGroups) {
-                       data.forEach(function (group) {
-                               parseGroup(group, calcs);
-                       });
-               } else {
-                       if (config.columnCalcs) {
-                               addCalcRow(calcs, "top");
-                       }
-
-                       parseRows(data);
-
-                       if (config.columnCalcs) {
-                               addCalcRow(calcs, "bottom");
-                       }
-               }
-
-               var doc = new jsPDF(jsPDFParams); //set document to landscape, better for most tables
-
-               if (options && options.autoTable) {
-                       if (typeof options.autoTable === "function") {
-                               autoTableParams = options.autoTable(doc) || {};
-                       } else {
-                               autoTableParams = options.autoTable;
-                       }
-               }
-
-               if (title) {
-                       autoTableParams.addPageContent = function (data) {
-                               doc.text(title, 40, 30);
-                       };
-               }
-
-               autoTableParams.head = header;
-               autoTableParams.body = body;
-
-               doc.autoTable(autoTableParams);
-
-               if (options && options.documentProcessing) {
-                       options.documentProcessing(doc);
-               }
-
-               setFileContents(doc.output("arraybuffer"), "application/pdf");
-       },
-
-       xlsx: function xlsx(columns, data, options, setFileContents, config) {
-               var self = this,
-                   sheetName = options.sheetName || "Sheet1",
-                   workbook = XLSX.utils.book_new(),
-                   calcs = {},
-                   groupRowIndexs = [],
-                   groupColumnIndexs = [],
-                   calcRowIndexs = [],
-                   output;
-
-               workbook.SheetNames = [];
-               workbook.Sheets = {};
-
-               if (config.columnCalcs) {
-                       calcs = data.calcs;
-                       data = data.data;
-               }
-
-               function generateSheet() {
-                       var titles = [],
-                           fields = [],
-                           rows = [],
-                           worksheet;
-
-                       //convert rows to worksheet
-                       function rowsToSheet() {
-                               var sheet = {};
-                               var range = { s: { c: 0, r: 0 }, e: { c: fields.length, r: rows.length } };
-
-                               XLSX.utils.sheet_add_aoa(sheet, rows);
-
-                               sheet['!ref'] = XLSX.utils.encode_range(range);
-
-                               var merges = generateMerges();
-
-                               if (merges.length) {
-                                       sheet["!merges"] = merges;
-                               }
-
-                               return sheet;
-                       }
-
-                       function parseSimpleTitles() {
-                               //get field lists
-                               columns.forEach(function (column) {
-                                       titles.push(column.title);
-                                       fields.push(column.field);
-                               });
-
-                               rows.push(titles);
-                       }
-
-                       function parseColumnGroup(column, level) {
-
-                               if (typeof titles[level] === "undefined") {
-                                       titles[level] = [];
-                               }
-
-                               if (typeof groupColumnIndexs[level] === "undefined") {
-                                       groupColumnIndexs[level] = [];
-                               }
-
-                               if (column.width > 1) {
-
-                                       groupColumnIndexs[level].push({
-                                               type: "hoz",
-                                               start: titles[level].length,
-                                               end: titles[level].length + column.width - 1
-                                       });
-                               }
-
-                               titles[level].push(column.title);
-
-                               if (column.subGroups) {
-                                       column.subGroups.forEach(function (subGroup) {
-                                               parseColumnGroup(subGroup, level + 1);
-                                       });
-                               } else {
-                                       fields.push(column.definition.field);
-                                       padColumnTitles(fields.length - 1, level);
-
-                                       groupColumnIndexs[level].push({
-                                               type: "vert",
-                                               start: fields.length - 1
-                                       });
-                               }
-                       }
-
-                       function padColumnTitles() {
-                               var max = 0;
-
-                               titles.forEach(function (title) {
-                                       var len = title.length;
-                                       if (len > max) {
-                                               max = len;
-                                       }
-                               });
-
-                               titles.forEach(function (title) {
-                                       var len = title.length;
-                                       if (len < max) {
-                                               for (var i = len; i < max; i++) {
-                                                       title.push("");
-                                               }
-                                       }
-                               });
-                       }
-
-                       if (config.columnGroups) {
-                               columns.forEach(function (column) {
-                                       parseColumnGroup(column, 0);
-                               });
-
-                               titles.forEach(function (title) {
-                                       rows.push(title);
-                               });
-                       } else {
-                               parseSimpleTitles();
-                       }
-
-                       function generateMerges() {
-                               var output = [];
-
-                               groupRowIndexs.forEach(function (index) {
-                                       output.push({ s: { r: index, c: 0 }, e: { r: index, c: fields.length - 1 } });
-                               });
-
-                               groupColumnIndexs.forEach(function (merges, level) {
-                                       merges.forEach(function (merge) {
-                                               if (merge.type === "hoz") {
-                                                       output.push({ s: { r: level, c: merge.start }, e: { r: level, c: merge.end } });
-                                               } else {
-                                                       if (level != titles.length - 1) {
-                                                               output.push({ s: { r: level, c: merge.start }, e: { r: titles.length - 1, c: merge.start } });
-                                                       }
-                                               }
-                                       });
-                               });
-
-                               return output;
-                       }
-
-                       //generate each row of the table
-                       function parseRows(data) {
-                               data.forEach(function (row) {
-                                       rows.push(parseRow(row));
-                               });
-                       }
-
-                       function parseRow(row) {
-                               var rowData = [];
-
-                               fields.forEach(function (field) {
-                                       var value = self.getFieldValue(field, row);
-                                       rowData.push(!(value instanceof Date) && (typeof value === "undefined" ? "undefined" : _typeof(value)) === "object" ? JSON.stringify(value) : value);
-                               });
-
-                               return rowData;
-                       }
-
-                       function addCalcRow(calcs, selector, pos) {
-                               var calcData = calcs[selector];
-
-                               if (calcData) {
-                                       if (pos) {
-                                               calcData = calcData[pos];
-                                       }
-
-                                       if (Object.keys(calcData).length) {
-                                               calcRowIndexs.push(rows.length);
-                                               rows.push(parseRow(calcData));
-                                       }
-                               }
-                       }
-
-                       function parseGroup(group, calcObj) {
-                               var groupData = [];
-
-                               groupData.push(group.key);
-
-                               groupRowIndexs.push(rows.length);
-
-                               rows.push(groupData);
-
-                               if (group.subGroups) {
-                                       group.subGroups.forEach(function (subGroup) {
-                                               parseGroup(subGroup, calcObj[group.key] ? calcObj[group.key].groups || {} : {});
-                                       });
-                               } else {
-
-                                       if (config.columnCalcs) {
-                                               addCalcRow(calcObj, group.key, "top");
-                                       }
-
-                                       parseRows(group.rows);
-
-                                       if (config.columnCalcs) {
-                                               addCalcRow(calcObj, group.key, "bottom");
-                                       }
-                               }
-                       }
-
-                       if (config.rowGroups) {
-                               data.forEach(function (group) {
-                                       parseGroup(group, calcs);
-                               });
-                       } else {
-                               if (config.columnCalcs) {
-                                       addCalcRow(calcs, "top");
-                               }
-
-                               parseRows(data);
-
-                               if (config.columnCalcs) {
-                                       addCalcRow(calcs, "bottom");
-                               }
-                       }
-
-                       worksheet = rowsToSheet();
-
-                       return worksheet;
-               }
-
-               if (options.sheetOnly) {
-                       setFileContents(generateSheet());
-                       return;
-               }
-
-               if (options.sheets) {
-                       for (var sheet in options.sheets) {
-
-                               if (options.sheets[sheet] === true) {
-                                       workbook.SheetNames.push(sheet);
-                                       workbook.Sheets[sheet] = generateSheet();
-                               } else {
-
-                                       workbook.SheetNames.push(sheet);
-
-                                       this.table.modules.comms.send(options.sheets[sheet], "download", "intercept", {
-                                               type: "xlsx",
-                                               options: { sheetOnly: true },
-                                               active: self.active,
-                                               intercept: function intercept(data) {
-                                                       workbook.Sheets[sheet] = data;
-                                               }
-                                       });
-                               }
-                       }
-               } else {
-                       workbook.SheetNames.push(sheetName);
-                       workbook.Sheets[sheetName] = generateSheet();
-               }
-
-               if (options.documentProcessing) {
-                       workbook = options.documentProcessing(workbook);
-               }
-
-               //convert workbook to binary array
-               function s2ab(s) {
-                       var buf = new ArrayBuffer(s.length);
-                       var view = new Uint8Array(buf);
-                       for (var i = 0; i != s.length; ++i) {
-                               view[i] = s.charCodeAt(i) & 0xFF;
-                       }return buf;
-               }
-
-               output = XLSX.write(workbook, { bookType: 'xlsx', bookSST: true, type: 'binary' });
-
-               setFileContents(s2ab(output), "application/octet-stream");
-       },
-
-       html: function html(columns, data, options, setFileContents, config) {
-               if (this.table.modExists("export", true)) {
-                       setFileContents(this.table.modules.export.getHtml(true, options.style, config), "text/html");
-               }
-       }
-
-};
-
-Tabulator.prototype.registerModule("download", Download);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/download.min.js b/app/static/vendors/tabulator/js.old/modules/download.min.js
deleted file mode 100644 (file)
index 76357da..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},Download=function(o){this.table=o,this.fields={},this.columnsByIndex=[],this.columnsByField={},this.config={},this.active=!1};Download.prototype.download=function(o,t,n,e,i){function s(n,e){i?!0===i?a.triggerDownload(n,e,o,t,!0):i(n):a.triggerDownload(n,e,o,t)}var a=this,r=!1;this.processConfig(),this.active=e,"function"==typeof o?r=o:a.downloaders[o]?r=a.downloaders[o]:console.warn("Download Error - No such download type found: ",o),this.processColumns(),r&&r.call(this,a.processDefinitions(),a.processData(e||"active"),n||{},s,this.config)},Download.prototype.processConfig=function(){var o={columnGroups:!0,rowGroups:!0,columnCalcs:!0,dataTree:!0};if(this.table.options.downloadConfig)for(var t in this.table.options.downloadConfig)o[t]=this.table.options.downloadConfig[t];this.config.rowGroups=o.rowGroups&&this.table.options.groupBy&&this.table.modExists("groupRows"),o.columnGroups&&this.table.columnManager.columns.length!=this.table.columnManager.columnsByIndex.length&&(this.config.columnGroups=!0),o.columnCalcs&&this.table.modExists("columnCalcs")&&(this.config.columnCalcs=!0),o.dataTree&&this.table.options.dataTree&&this.table.modExists("dataTree")&&(this.config.dataTree=!0)},Download.prototype.processColumns=function(){var o=this;o.columnsByIndex=[],o.columnsByField={},o.table.columnManager.columnsByIndex.forEach(function(t){t.field&&!1!==t.definition.download&&(t.visible||!t.visible&&t.definition.download)&&(o.columnsByIndex.push(t),o.columnsByField[t.field]=t)})},Download.prototype.processDefinitions=function(){var o=this,t=[];return this.config.columnGroups?o.table.columnManager.columns.forEach(function(n){var e=o.processColumnGroup(n);e&&t.push(e)}):o.columnsByIndex.forEach(function(n){!1!==n.download&&t.push(o.processDefinition(n))}),t},Download.prototype.processColumnGroup=function(o){var t=this,n=o.columns,e=0,i=this.processDefinition(o),s={type:"group",title:i.title,depth:1};if(n.length){if(s.subGroups=[],s.width=0,n.forEach(function(o){var n=t.processColumnGroup(o);n.depth>e&&(e=n.depth),n&&(s.width+=n.width,s.subGroups.push(n))}),s.depth+=e,!s.width)return!1}else{if(!o.field||!1===o.definition.download||!(o.visible||!o.visible&&o.definition.download))return!1;s.width=1,s.definition=i}return s},Download.prototype.processDefinition=function(o){var t={};for(var n in o.definition)t[n]=o.definition[n];return void 0!==o.definition.downloadTitle&&(t.title=o.definition.downloadTitle),t},Download.prototype.processData=function(o){var t=this,n=this,e=[],i=[],s=!1,a={};return this.config.rowGroups?("visible"==o?(s=n.table.rowManager.getRows(o),s.forEach(function(o){if("row"==o.type){var t=o.getGroup();-1===i.indexOf(t)&&i.push(t)}})):i=this.table.modules.groupRows.getGroups(),i.forEach(function(o){e.push(t.processGroupData(o,s))})):(this.config.dataTree&&(o=o="display"),e=n.table.rowManager.getData(o,"download")),this.config.columnCalcs&&(a=this.table.getCalcResults(),e={calcs:a,data:e}),"function"==typeof n.table.options.downloadDataFormatter&&(e=n.table.options.downloadDataFormatter(e)),e},Download.prototype.processGroupData=function(o,t){var n=this,e=o.getSubGroups(),i={type:"group",key:o.key};return e.length?(i.subGroups=[],e.forEach(function(o){i.subGroups.push(n.processGroupData(o,t))})):t?(i.rows=[],o.rows.forEach(function(o){t.indexOf(o)>-1&&i.rows.push(o.getData("download"))})):i.rows=o.getData(!0,"download"),i},Download.prototype.triggerDownload=function(o,t,n,e,i){var s=document.createElement("a"),a=new Blob([o],{type:t}),e=e||"Tabulator."+("function"==typeof n?"txt":n);(a=this.table.options.downloadReady.call(this.table,o,a))&&(i?window.open(window.URL.createObjectURL(a)):navigator.msSaveOrOpenBlob?navigator.msSaveOrOpenBlob(a,e):(s.setAttribute("href",window.URL.createObjectURL(a)),s.setAttribute("download",e),s.style.display="none",document.body.appendChild(s),s.click(),document.body.removeChild(s)),this.table.options.downloadComplete&&this.table.options.downloadComplete())},Download.prototype.getFieldValue=function(o,t){var n=this.columnsByField[o];return!!n&&n.getFieldValue(t)},Download.prototype.commsReceived=function(o,t,n){switch(t){case"intercept":this.download(n.type,"",n.options,n.active,n.intercept)}},Download.prototype.downloaders={csv:function(o,t,n,e,i){function s(o,t){o.subGroups?o.subGroups.forEach(function(o){s(o,t+1)}):(f.push('"'+String(o.title).split('"').join('""')+'"'),p.push(o.definition.field))}function a(o){o.forEach(function(o){var t=[];p.forEach(function(n){var e=c.getFieldValue(n,o);switch(void 0===e?"undefined":_typeof(e)){case"object":e=JSON.stringify(e);break;case"undefined":case"null":e="";break;default:e=e}t.push('"'+String(e).split('"').join('""')+'"')}),u.push(t.join(d))})}function r(o){o.subGroups?o.subGroups.forEach(function(o){r(o)}):a(o.rows)}var u,l,c=this,f=[],p=[],d=n&&n.delimiter?n.delimiter:",";i.columnGroups?(console.warn("Download Warning - CSV downloader cannot process column groups"),o.forEach(function(o){s(o,0)})):function(){o.forEach(function(o){f.push('"'+String(o.title).split('"').join('""')+'"'),p.push(o.field)})}(),u=[f.join(d)],i.columnCalcs&&(console.warn("Download Warning - CSV downloader cannot process column calculations"),t=t.data),i.rowGroups?(console.warn("Download Warning - CSV downloader cannot process row groups"),t.forEach(function(o){r(o)})):a(t),l=u.join("\n"),n.bom&&(l="\ufeff"+l),e(l,"text/csv")},json:function(o,t,n,e,i){var s;i.columnCalcs&&(console.warn("Download Warning - CSV downloader cannot process column calculations"),t=t.data),s=JSON.stringify(t,null,"\t"),e(s,"application/json")},pdf:function(o,t,n,e,i){function s(o,t){var n=o.width,e=1,i={content:o.title||""};if(o.subGroups?(o.subGroups.forEach(function(o){s(o,t+1)}),e=1):(p.push(o.definition.field),e=m-t),i.rowSpan=e,d[t].push(i),n--,e>1)for(var a=t+1;a<m;a++)d[a].push("");for(var a=0;a<n;a++)d[t].push("")}function a(o){switch(void 0===o?"undefined":_typeof(o)){case"object":o=JSON.stringify(o);break;case"undefined":case"null":o="";break;default:o=o}return o}function r(o){o.forEach(function(o){h.push(u(o))})}function u(o,t){var n=[];return p.forEach(function(e){var i=f.getFieldValue(e,o);i=a(i),t?n.push({content:i,styles:t}):n.push(i)}),n}function l(o,t){var n=[];n.push({content:a(o.key),colSpan:p.length,styles:y}),h.push(n),o.subGroups?o.subGroups.forEach(function(n){l(n,t[o.key]?t[o.key].groups||{}:{})}):(i.columnCalcs&&c(t,o.key,"top"),r(o.rows),i.columnCalcs&&c(t,o.key,"bottom"))}function c(o,t,n){var e=o[t];e&&(n&&(e=e[n]),Object.keys(e).length&&h.push(u(e,b)))}var f=this,p=[],d=[],h=[],w={},m=1,g={},y=n.rowGroupStyles||{fontStyle:"bold",fontSize:12,cellPadding:6,fillColor:220},b=n.rowCalcStyles||{fontStyle:"bold",fontSize:10,cellPadding:4,fillColor:232},v=n.jsPDF||{},E=n&&n.title?n.title:"";if(i.columnCalcs&&(w=t.calcs,t=t.data),v.orientation||(v.orientation=n.orientation||"landscape"),v.unit||(v.unit="pt"),i.columnGroups){o.forEach(function(o){o.depth>m&&(m=o.depth)});for(var S=0;S<m;S++)d.push([]);o.forEach(function(o){s(o,0)})}else!function(){o.forEach(function(o){o.field&&(d.push(o.title||""),p.push(o.field))}),d=[d]}();i.rowGroups?t.forEach(function(o){l(o,w)}):(i.columnCalcs&&c(w,"top"),r(t),i.columnCalcs&&c(w,"bottom"));var C=new jsPDF(v);n&&n.autoTable&&(g="function"==typeof n.autoTable?n.autoTable(C)||{}:n.autoTable),E&&(g.addPageContent=function(o){C.text(E,40,30)}),g.head=d,g.body=h,C.autoTable(g),n&&n.documentProcessing&&n.documentProcessing(C),e(C.output("arraybuffer"),"application/pdf")},xlsx:function(o,t,n,e,i){function s(){function n(o,t){void 0===w[t]&&(w[t]=[]),void 0===p[t]&&(p[t]=[]),o.width>1&&p[t].push({type:"hoz",start:w[t].length,end:w[t].length+o.width-1}),w[t].push(o.title),o.subGroups?o.subGroups.forEach(function(o){n(o,t+1)}):(m.push(o.definition.field),e(m.length),p[t].push({type:"vert",start:m.length-1}))}function e(){var o=0;w.forEach(function(t){var n=t.length;n>o&&(o=n)}),w.forEach(function(t){var n=t.length;if(n<o)for(var e=n;e<o;e++)t.push("")})}function s(){var o=[];return f.forEach(function(t){o.push({s:{r:t,c:0},e:{r:t,c:m.length-1}})}),p.forEach(function(t,n){t.forEach(function(t){"hoz"===t.type?o.push({s:{r:n,c:t.start},e:{r:n,c:t.end}}):n!=w.length-1&&o.push({s:{r:n,c:t.start},e:{r:w.length-1,c:t.start}})})}),o}function a(o){o.forEach(function(o){g.push(u(o))})}function u(o){var t=[];return m.forEach(function(n){var e=r.getFieldValue(n,o);t.push(e instanceof Date||"object"!==(void 0===e?"undefined":_typeof(e))?e:JSON.stringify(e))}),t}function l(o,t,n){var e=o[t];e&&(n&&(e=e[n]),Object.keys(e).length&&(d.push(g.length),g.push(u(e))))}function h(o,t){var n=[];n.push(o.key),f.push(g.length),g.push(n),o.subGroups?o.subGroups.forEach(function(n){h(n,t[o.key]?t[o.key].groups||{}:{})}):(i.columnCalcs&&l(t,o.key,"top"),a(o.rows),i.columnCalcs&&l(t,o.key,"bottom"))}var w=[],m=[],g=[];return i.columnGroups?(o.forEach(function(o){n(o,0)}),w.forEach(function(o){g.push(o)})):function(){o.forEach(function(o){w.push(o.title),m.push(o.field)}),g.push(w)}(),i.rowGroups?t.forEach(function(o){h(o,c)}):(i.columnCalcs&&l(c,"top"),a(t),i.columnCalcs&&l(c,"bottom")),function(){var o={},t={s:{c:0,r:0},e:{c:m.length,r:g.length}};XLSX.utils.sheet_add_aoa(o,g),o["!ref"]=XLSX.utils.encode_range(t);var n=s();return n.length&&(o["!merges"]=n),o}()}var a,r=this,u=n.sheetName||"Sheet1",l=XLSX.utils.book_new(),c={},f=[],p=[],d=[];if(l.SheetNames=[],l.Sheets={},i.columnCalcs&&(c=t.calcs,t=t.data),n.sheetOnly)return void e(s());if(n.sheets)for(var h in n.sheets)!0===n.sheets[h]?(l.SheetNames.push(h),l.Sheets[h]=s()):(l.SheetNames.push(h),this.table.modules.comms.send(n.sheets[h],"download","intercept",{type:"xlsx",options:{sheetOnly:!0},active:r.active,intercept:function(o){l.Sheets[h]=o}}));else l.SheetNames.push(u),l.Sheets[u]=s();n.documentProcessing&&(l=n.documentProcessing(l)),a=XLSX.write(l,{bookType:"xlsx",bookSST:!0,type:"binary"}),e(function(o){for(var t=new ArrayBuffer(o.length),n=new Uint8Array(t),e=0;e!=o.length;++e)n[e]=255&o.charCodeAt(e);return t}(a),"application/octet-stream")},html:function(o,t,n,e,i){this.table.modExists("export",!0)&&e(this.table.modules.export.getHtml(!0,n.style,i),"text/html")}},Tabulator.prototype.registerModule("download",Download);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/edit.js b/app/static/vendors/tabulator/js.old/modules/edit.js
deleted file mode 100644 (file)
index c13d678..0000000
+++ /dev/null
@@ -1,1917 +0,0 @@
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-
-var Edit = function Edit(table) {
-       this.table = table; //hold Tabulator object
-       this.currentCell = false; //hold currently editing cell
-       this.mouseClick = false; //hold mousedown state to prevent click binding being overriden by editor opening
-       this.recursionBlock = false; //prevent focus recursion
-       this.invalidEdit = false;
-};
-
-//initialize column editor
-Edit.prototype.initializeColumn = function (column) {
-       var self = this,
-           config = {
-               editor: false,
-               blocked: false,
-               check: column.definition.editable,
-               params: column.definition.editorParams || {}
-       };
-
-       //set column editor
-       switch (_typeof(column.definition.editor)) {
-               case "string":
-
-                       if (column.definition.editor === "tick") {
-                               column.definition.editor = "tickCross";
-                               console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor");
-                       }
-
-                       if (self.editors[column.definition.editor]) {
-                               config.editor = self.editors[column.definition.editor];
-                       } else {
-                               console.warn("Editor Error - No such editor found: ", column.definition.editor);
-                       }
-                       break;
-
-               case "function":
-                       config.editor = column.definition.editor;
-                       break;
-
-               case "boolean":
-
-                       if (column.definition.editor === true) {
-
-                               if (typeof column.definition.formatter !== "function") {
-
-                                       if (column.definition.formatter === "tick") {
-                                               column.definition.formatter = "tickCross";
-                                               console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor");
-                                       }
-
-                                       if (self.editors[column.definition.formatter]) {
-                                               config.editor = self.editors[column.definition.formatter];
-                                       } else {
-                                               config.editor = self.editors["input"];
-                                       }
-                               } else {
-                                       console.warn("Editor Error - Cannot auto lookup editor for a custom formatter: ", column.definition.formatter);
-                               }
-                       }
-                       break;
-       }
-
-       if (config.editor) {
-               column.modules.edit = config;
-       }
-};
-
-Edit.prototype.getCurrentCell = function () {
-       return this.currentCell ? this.currentCell.getComponent() : false;
-};
-
-Edit.prototype.clearEditor = function () {
-       var cell = this.currentCell,
-           cellEl;
-
-       this.invalidEdit = false;
-
-       if (cell) {
-               this.currentCell = false;
-
-               cellEl = cell.getElement();
-               cellEl.classList.remove("tabulator-validation-fail");
-               cellEl.classList.remove("tabulator-editing");
-               while (cellEl.firstChild) {
-                       cellEl.removeChild(cellEl.firstChild);
-               }cell.row.getElement().classList.remove("tabulator-row-editing");
-       }
-};
-
-Edit.prototype.cancelEdit = function () {
-
-       if (this.currentCell) {
-               var cell = this.currentCell;
-               var component = this.currentCell.getComponent();
-
-               this.clearEditor();
-               cell.setValueActual(cell.getValue());
-               cell.cellRendered();
-
-               if (cell.column.cellEvents.cellEditCancelled) {
-                       cell.column.cellEvents.cellEditCancelled.call(this.table, component);
-               }
-
-               this.table.options.cellEditCancelled.call(this.table, component);
-       }
-};
-
-//return a formatted value for a cell
-Edit.prototype.bindEditor = function (cell) {
-       var self = this,
-           element = cell.getElement();
-
-       element.setAttribute("tabindex", 0);
-
-       element.addEventListener("click", function (e) {
-               if (!element.classList.contains("tabulator-editing")) {
-                       element.focus({ preventScroll: true });
-               }
-       });
-
-       element.addEventListener("mousedown", function (e) {
-               self.mouseClick = true;
-       });
-
-       element.addEventListener("focus", function (e) {
-               if (!self.recursionBlock) {
-                       self.edit(cell, e, false);
-               }
-       });
-};
-
-Edit.prototype.focusCellNoEvent = function (cell, block) {
-       this.recursionBlock = true;
-       if (!(block && this.table.browser === "ie")) {
-               cell.getElement().focus({ preventScroll: true });
-       }
-       this.recursionBlock = false;
-};
-
-Edit.prototype.editCell = function (cell, forceEdit) {
-       this.focusCellNoEvent(cell);
-       this.edit(cell, false, forceEdit);
-};
-
-Edit.prototype.focusScrollAdjust = function (cell) {
-       if (this.table.rowManager.getRenderMode() == "virtual") {
-               var topEdge = this.table.rowManager.element.scrollTop,
-                   bottomEdge = this.table.rowManager.element.clientHeight + this.table.rowManager.element.scrollTop,
-                   rowEl = cell.row.getElement(),
-                   offset = rowEl.offsetTop;
-
-               if (rowEl.offsetTop < topEdge) {
-                       this.table.rowManager.element.scrollTop -= topEdge - rowEl.offsetTop;
-               } else {
-                       if (rowEl.offsetTop + rowEl.offsetHeight > bottomEdge) {
-                               this.table.rowManager.element.scrollTop += rowEl.offsetTop + rowEl.offsetHeight - bottomEdge;
-                       }
-               }
-       }
-};
-
-Edit.prototype.edit = function (cell, e, forceEdit) {
-       var self = this,
-           allowEdit = true,
-           rendered = function rendered() {},
-           element = cell.getElement(),
-           cellEditor,
-           component,
-           params;
-
-       //prevent editing if another cell is refusing to leave focus (eg. validation fail)
-       if (this.currentCell) {
-               if (!this.invalidEdit) {
-                       this.cancelEdit();
-               }
-               return;
-       }
-
-       //handle successfull value change
-       function success(value) {
-               if (self.currentCell === cell) {
-                       var valid = true;
-
-                       if (cell.column.modules.validate && self.table.modExists("validate")) {
-                               valid = self.table.modules.validate.validate(cell.column.modules.validate, cell.getComponent(), value);
-                       }
-
-                       if (valid === true) {
-                               self.clearEditor();
-                               cell.setValue(value, true);
-
-                               if (self.table.options.dataTree && self.table.modExists("dataTree")) {
-                                       self.table.modules.dataTree.checkForRestyle(cell);
-                               }
-
-                               return true;
-                       } else {
-                               self.invalidEdit = true;
-                               element.classList.add("tabulator-validation-fail");
-                               self.focusCellNoEvent(cell, true);
-                               rendered();
-                               self.table.options.validationFailed.call(self.table, cell.getComponent(), value, valid);
-
-                               return false;
-                       }
-               } else {
-                       // console.warn("Edit Success Error - cannot call success on a cell that is no longer being edited");
-               }
-       }
-
-       //handle aborted edit
-       function cancel() {
-               if (self.currentCell === cell) {
-                       self.cancelEdit();
-
-                       if (self.table.options.dataTree && self.table.modExists("dataTree")) {
-                               self.table.modules.dataTree.checkForRestyle(cell);
-                       }
-               } else {
-                       // console.warn("Edit Success Error - cannot call cancel on a cell that is no longer being edited");
-               }
-       }
-
-       function onRendered(callback) {
-               rendered = callback;
-       }
-
-       if (!cell.column.modules.edit.blocked) {
-               if (e) {
-                       e.stopPropagation();
-               }
-
-               switch (_typeof(cell.column.modules.edit.check)) {
-                       case "function":
-                               allowEdit = cell.column.modules.edit.check(cell.getComponent());
-                               break;
-
-                       case "boolean":
-                               allowEdit = cell.column.modules.edit.check;
-                               break;
-               }
-
-               if (allowEdit || forceEdit) {
-
-                       self.cancelEdit();
-
-                       self.currentCell = cell;
-
-                       this.focusScrollAdjust(cell);
-
-                       component = cell.getComponent();
-
-                       if (this.mouseClick) {
-                               this.mouseClick = false;
-
-                               if (cell.column.cellEvents.cellClick) {
-                                       cell.column.cellEvents.cellClick.call(this.table, e, component);
-                               }
-                       }
-
-                       if (cell.column.cellEvents.cellEditing) {
-                               cell.column.cellEvents.cellEditing.call(this.table, component);
-                       }
-
-                       self.table.options.cellEditing.call(this.table, component);
-
-                       params = typeof cell.column.modules.edit.params === "function" ? cell.column.modules.edit.params(component) : cell.column.modules.edit.params;
-
-                       cellEditor = cell.column.modules.edit.editor.call(self, component, onRendered, success, cancel, params);
-
-                       //if editor returned, add to DOM, if false, abort edit
-                       if (cellEditor !== false) {
-
-                               if (cellEditor instanceof Node) {
-                                       element.classList.add("tabulator-editing");
-                                       cell.row.getElement().classList.add("tabulator-row-editing");
-                                       while (element.firstChild) {
-                                               element.removeChild(element.firstChild);
-                                       }element.appendChild(cellEditor);
-
-                                       //trigger onRendered Callback
-                                       rendered();
-
-                                       //prevent editing from triggering rowClick event
-                                       var children = element.children;
-
-                                       for (var i = 0; i < children.length; i++) {
-                                               children[i].addEventListener("click", function (e) {
-                                                       e.stopPropagation();
-                                               });
-                                       }
-                               } else {
-                                       console.warn("Edit Error - Editor should return an instance of Node, the editor returned:", cellEditor);
-                                       element.blur();
-                                       return false;
-                               }
-                       } else {
-                               element.blur();
-                               return false;
-                       }
-
-                       return true;
-               } else {
-                       this.mouseClick = false;
-                       element.blur();
-                       return false;
-               }
-       } else {
-               this.mouseClick = false;
-               element.blur();
-               return false;
-       }
-};
-
-Edit.prototype.maskInput = function (el, options) {
-       var mask = options.mask,
-           maskLetter = typeof options.maskLetterChar !== "undefined" ? options.maskLetterChar : "A",
-           maskNumber = typeof options.maskNumberChar !== "undefined" ? options.maskNumberChar : "9",
-           maskWildcard = typeof options.maskWildcardChar !== "undefined" ? options.maskWildcardChar : "*",
-           success = false;
-
-       function fillSymbols(index) {
-               var symbol = mask[index];
-               if (typeof symbol !== "undefined" && symbol !== maskWildcard && symbol !== maskLetter && symbol !== maskNumber) {
-                       el.value = el.value + "" + symbol;
-                       fillSymbols(index + 1);
-               }
-       }
-
-       el.addEventListener("keydown", function (e) {
-               var index = el.value.length,
-                   char = e.key;
-
-               if (e.keyCode > 46) {
-                       if (index >= mask.length) {
-                               e.preventDefault();
-                               e.stopPropagation();
-                               success = false;
-                               return false;
-                       } else {
-                               switch (mask[index]) {
-                                       case maskLetter:
-                                               if (char.toUpperCase() == char.toLowerCase()) {
-                                                       e.preventDefault();
-                                                       e.stopPropagation();
-                                                       success = false;
-                                                       return false;
-                                               }
-                                               break;
-
-                                       case maskNumber:
-                                               if (isNaN(char)) {
-                                                       e.preventDefault();
-                                                       e.stopPropagation();
-                                                       success = false;
-                                                       return false;
-                                               }
-                                               break;
-
-                                       case maskWildcard:
-                                               break;
-
-                                       default:
-                                               if (char !== mask[index]) {
-                                                       e.preventDefault();
-                                                       e.stopPropagation();
-                                                       success = false;
-                                                       return false;
-                                               }
-                               }
-                       }
-
-                       success = true;
-               }
-
-               return;
-       });
-
-       el.addEventListener("keyup", function (e) {
-               if (e.keyCode > 46) {
-                       if (options.maskAutoFill) {
-                               fillSymbols(el.value.length);
-                       }
-               }
-       });
-
-       if (!el.placeholder) {
-               el.placeholder = mask;
-       }
-
-       if (options.maskAutoFill) {
-               fillSymbols(el.value.length);
-       }
-};
-
-//default data editors
-Edit.prototype.editors = {
-
-       //input element
-       input: function input(cell, onRendered, success, cancel, editorParams) {
-
-               //create and style input
-               var cellValue = cell.getValue(),
-                   input = document.createElement("input");
-
-               input.setAttribute("type", editorParams.search ? "search" : "text");
-
-               input.style.padding = "4px";
-               input.style.width = "100%";
-               input.style.boxSizing = "border-box";
-
-               if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
-                       for (var key in editorParams.elementAttributes) {
-                               if (key.charAt(0) == "+") {
-                                       key = key.slice(1);
-                                       input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
-                               } else {
-                                       input.setAttribute(key, editorParams.elementAttributes[key]);
-                               }
-                       }
-               }
-
-               input.value = typeof cellValue !== "undefined" ? cellValue : "";
-
-               onRendered(function () {
-                       input.focus({ preventScroll: true });
-                       input.style.height = "100%";
-               });
-
-               function onChange(e) {
-                       if ((cellValue === null || typeof cellValue === "undefined") && input.value !== "" || input.value !== cellValue) {
-                               if (success(input.value)) {
-                                       cellValue = input.value; //persist value if successfully validated incase editor is used as header filter
-                               }
-                       } else {
-                               cancel();
-                       }
-               }
-
-               //submit new value on blur or change
-               input.addEventListener("change", onChange);
-               input.addEventListener("blur", onChange);
-
-               //submit new value on enter
-               input.addEventListener("keydown", function (e) {
-                       switch (e.keyCode) {
-                               // case 9:
-                               case 13:
-                                       onChange(e);
-                                       break;
-
-                               case 27:
-                                       cancel();
-                                       break;
-                       }
-               });
-
-               if (editorParams.mask) {
-                       this.table.modules.edit.maskInput(input, editorParams);
-               }
-
-               return input;
-       },
-
-       //resizable text area element
-       textarea: function textarea(cell, onRendered, success, cancel, editorParams) {
-               var self = this,
-                   cellValue = cell.getValue(),
-                   vertNav = editorParams.verticalNavigation || "hybrid",
-                   value = String(cellValue !== null && typeof cellValue !== "undefined" ? cellValue : ""),
-                   count = (value.match(/(?:\r\n|\r|\n)/g) || []).length + 1,
-                   input = document.createElement("textarea"),
-                   scrollHeight = 0;
-
-               //create and style input
-               input.style.display = "block";
-               input.style.padding = "2px";
-               input.style.height = "100%";
-               input.style.width = "100%";
-               input.style.boxSizing = "border-box";
-               input.style.whiteSpace = "pre-wrap";
-               input.style.resize = "none";
-
-               if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
-                       for (var key in editorParams.elementAttributes) {
-                               if (key.charAt(0) == "+") {
-                                       key = key.slice(1);
-                                       input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
-                               } else {
-                                       input.setAttribute(key, editorParams.elementAttributes[key]);
-                               }
-                       }
-               }
-
-               input.value = value;
-
-               onRendered(function () {
-                       input.focus({ preventScroll: true });
-                       input.style.height = "100%";
-               });
-
-               function onChange(e) {
-
-                       if ((cellValue === null || typeof cellValue === "undefined") && input.value !== "" || input.value !== cellValue) {
-
-                               if (success(input.value)) {
-                                       cellValue = input.value; //persist value if successfully validated incase editor is used as header filter
-                               }
-
-                               setTimeout(function () {
-                                       cell.getRow().normalizeHeight();
-                               }, 300);
-                       } else {
-                               cancel();
-                       }
-               }
-
-               //submit new value on blur or change
-               input.addEventListener("change", onChange);
-               input.addEventListener("blur", onChange);
-
-               input.addEventListener("keyup", function () {
-
-                       input.style.height = "";
-
-                       var heightNow = input.scrollHeight;
-
-                       input.style.height = heightNow + "px";
-
-                       if (heightNow != scrollHeight) {
-                               scrollHeight = heightNow;
-                               cell.getRow().normalizeHeight();
-                       }
-               });
-
-               input.addEventListener("keydown", function (e) {
-
-                       switch (e.keyCode) {
-                               case 27:
-                                       cancel();
-                                       break;
-
-                               case 38:
-                                       //up arrow
-                                       if (vertNav == "editor" || vertNav == "hybrid" && input.selectionStart) {
-                                               e.stopImmediatePropagation();
-                                               e.stopPropagation();
-                                       }
-
-                                       break;
-
-                               case 40:
-                                       //down arrow
-                                       if (vertNav == "editor" || vertNav == "hybrid" && input.selectionStart !== input.value.length) {
-                                               e.stopImmediatePropagation();
-                                               e.stopPropagation();
-                                       }
-                                       break;
-                       }
-               });
-
-               if (editorParams.mask) {
-                       this.table.modules.edit.maskInput(input, editorParams);
-               }
-
-               return input;
-       },
-
-       //input element with type of number
-       number: function number(cell, onRendered, success, cancel, editorParams) {
-
-               var cellValue = cell.getValue(),
-                   vertNav = editorParams.verticalNavigation || "editor",
-                   input = document.createElement("input");
-
-               input.setAttribute("type", "number");
-
-               if (typeof editorParams.max != "undefined") {
-                       input.setAttribute("max", editorParams.max);
-               }
-
-               if (typeof editorParams.min != "undefined") {
-                       input.setAttribute("min", editorParams.min);
-               }
-
-               if (typeof editorParams.step != "undefined") {
-                       input.setAttribute("step", editorParams.step);
-               }
-
-               //create and style input
-               input.style.padding = "4px";
-               input.style.width = "100%";
-               input.style.boxSizing = "border-box";
-
-               if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
-                       for (var key in editorParams.elementAttributes) {
-                               if (key.charAt(0) == "+") {
-                                       key = key.slice(1);
-                                       input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
-                               } else {
-                                       input.setAttribute(key, editorParams.elementAttributes[key]);
-                               }
-                       }
-               }
-
-               input.value = cellValue;
-
-               var blurFunc = function blurFunc(e) {
-                       onChange();
-               };
-
-               onRendered(function () {
-                       //submit new value on blur
-                       input.removeEventListener("blur", blurFunc);
-
-                       input.focus({ preventScroll: true });
-                       input.style.height = "100%";
-
-                       //submit new value on blur
-                       input.addEventListener("blur", blurFunc);
-               });
-
-               function onChange() {
-                       var value = input.value;
-
-                       if (!isNaN(value) && value !== "") {
-                               value = Number(value);
-                       }
-
-                       if (value !== cellValue) {
-                               if (success(value)) {
-                                       cellValue = value; //persist value if successfully validated incase editor is used as header filter
-                               }
-                       } else {
-                               cancel();
-                       }
-               }
-
-               //submit new value on enter
-               input.addEventListener("keydown", function (e) {
-                       switch (e.keyCode) {
-                               case 13:
-                                       // case 9:
-                                       onChange();
-                                       break;
-
-                               case 27:
-                                       cancel();
-                                       break;
-
-                               case 38: //up arrow
-                               case 40:
-                                       //down arrow
-                                       if (vertNav == "editor") {
-                                               e.stopImmediatePropagation();
-                                               e.stopPropagation();
-                                       }
-                                       break;
-                       }
-               });
-
-               if (editorParams.mask) {
-                       this.table.modules.edit.maskInput(input, editorParams);
-               }
-
-               return input;
-       },
-
-       //input element with type of number
-       range: function range(cell, onRendered, success, cancel, editorParams) {
-
-               var cellValue = cell.getValue(),
-                   input = document.createElement("input");
-
-               input.setAttribute("type", "range");
-
-               if (typeof editorParams.max != "undefined") {
-                       input.setAttribute("max", editorParams.max);
-               }
-
-               if (typeof editorParams.min != "undefined") {
-                       input.setAttribute("min", editorParams.min);
-               }
-
-               if (typeof editorParams.step != "undefined") {
-                       input.setAttribute("step", editorParams.step);
-               }
-
-               //create and style input
-               input.style.padding = "4px";
-               input.style.width = "100%";
-               input.style.boxSizing = "border-box";
-
-               if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
-                       for (var key in editorParams.elementAttributes) {
-                               if (key.charAt(0) == "+") {
-                                       key = key.slice(1);
-                                       input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
-                               } else {
-                                       input.setAttribute(key, editorParams.elementAttributes[key]);
-                               }
-                       }
-               }
-
-               input.value = cellValue;
-
-               onRendered(function () {
-                       input.focus({ preventScroll: true });
-                       input.style.height = "100%";
-               });
-
-               function onChange() {
-                       var value = input.value;
-
-                       if (!isNaN(value) && value !== "") {
-                               value = Number(value);
-                       }
-
-                       if (value != cellValue) {
-                               if (success(value)) {
-                                       cellValue = value; //persist value if successfully validated incase editor is used as header filter
-                               }
-                       } else {
-                               cancel();
-                       }
-               }
-
-               //submit new value on blur
-               input.addEventListener("blur", function (e) {
-                       onChange();
-               });
-
-               //submit new value on enter
-               input.addEventListener("keydown", function (e) {
-                       switch (e.keyCode) {
-                               case 13:
-                               case 9:
-                                       onChange();
-                                       break;
-
-                               case 27:
-                                       cancel();
-                                       break;
-                       }
-               });
-
-               return input;
-       },
-
-       //select
-       select: function select(cell, onRendered, success, cancel, editorParams) {
-               var self = this,
-                   cellEl = cell.getElement(),
-                   initialValue = cell.getValue(),
-                   vertNav = editorParams.verticalNavigation || "editor",
-                   initialDisplayValue = typeof initialValue !== "undefined" || initialValue === null ? initialValue : typeof editorParams.defaultValue !== "undefined" ? editorParams.defaultValue : "",
-                   input = document.createElement("input"),
-                   listEl = document.createElement("div"),
-                   dataItems = [],
-                   displayItems = [],
-                   currentItem = {},
-                   blurable = true;
-
-               this.table.rowManager.element.addEventListener("scroll", cancelItem);
-
-               if (Array.isArray(editorParams) || !Array.isArray(editorParams) && (typeof editorParams === "undefined" ? "undefined" : _typeof(editorParams)) === "object" && !editorParams.values) {
-                       console.warn("DEPRECATION WARNING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object");
-                       editorParams = { values: editorParams };
-               }
-
-               function getUniqueColumnValues(field) {
-                       var output = {},
-                           data = self.table.getData(),
-                           column;
-
-                       if (field) {
-                               column = self.table.columnManager.getColumnByField(field);
-                       } else {
-                               column = cell.getColumn()._getSelf();
-                       }
-
-                       if (column) {
-                               data.forEach(function (row) {
-                                       var val = column.getFieldValue(row);
-
-                                       if (val !== null && typeof val !== "undefined" && val !== "") {
-                                               output[val] = true;
-                                       }
-                               });
-
-                               if (editorParams.sortValuesList) {
-                                       if (editorParams.sortValuesList == "asc") {
-                                               output = Object.keys(output).sort();
-                                       } else {
-                                               output = Object.keys(output).sort().reverse();
-                                       }
-                               } else {
-                                       output = Object.keys(output);
-                               }
-                       } else {
-                               console.warn("unable to find matching column to create select lookup list:", field);
-                       }
-
-                       return output;
-               }
-
-               function parseItems(inputValues, curentValue) {
-                       var dataList = [];
-                       var displayList = [];
-
-                       function processComplexListItem(item) {
-                               var item = {
-                                       label: editorParams.listItemFormatter ? editorParams.listItemFormatter(item.value, item.label) : item.label,
-                                       value: item.value,
-                                       element: false
-                               };
-
-                               if (item.value === curentValue || !isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue)) {
-                                       setCurrentItem(item);
-                               }
-
-                               dataList.push(item);
-                               displayList.push(item);
-
-                               return item;
-                       }
-
-                       if (typeof inputValues == "function") {
-                               inputValues = inputValues(cell);
-                       }
-
-                       if (Array.isArray(inputValues)) {
-                               inputValues.forEach(function (value) {
-                                       var item;
-
-                                       if ((typeof value === "undefined" ? "undefined" : _typeof(value)) === "object") {
-
-                                               if (value.options) {
-                                                       item = {
-                                                               label: value.label,
-                                                               group: true,
-                                                               element: false
-                                                       };
-
-                                                       displayList.push(item);
-
-                                                       value.options.forEach(function (item) {
-                                                               processComplexListItem(item);
-                                                       });
-                                               } else {
-                                                       processComplexListItem(value);
-                                               }
-                                       } else {
-
-                                               item = {
-                                                       label: editorParams.listItemFormatter ? editorParams.listItemFormatter(value, value) : value,
-                                                       value: value,
-                                                       element: false
-                                               };
-
-                                               if (item.value === curentValue || !isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue)) {
-                                                       setCurrentItem(item);
-                                               }
-
-                                               dataList.push(item);
-                                               displayList.push(item);
-                                       }
-                               });
-                       } else {
-                               for (var key in inputValues) {
-                                       var item = {
-                                               label: editorParams.listItemFormatter ? editorParams.listItemFormatter(key, inputValues[key]) : inputValues[key],
-                                               value: key,
-                                               element: false
-                                       };
-
-                                       if (item.value === curentValue || !isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue)) {
-                                               setCurrentItem(item);
-                                       }
-
-                                       dataList.push(item);
-                                       displayList.push(item);
-                               }
-                       }
-
-                       dataItems = dataList;
-                       displayItems = displayList;
-
-                       fillList();
-               }
-
-               function fillList() {
-                       while (listEl.firstChild) {
-                               listEl.removeChild(listEl.firstChild);
-                       }displayItems.forEach(function (item) {
-                               var el = item.element;
-
-                               if (!el) {
-
-                                       if (item.group) {
-                                               el = document.createElement("div");
-                                               el.classList.add("tabulator-edit-select-list-group");
-                                               el.tabIndex = 0;
-                                               el.innerHTML = item.label === "" ? "&nbsp;" : item.label;
-                                       } else {
-                                               el = document.createElement("div");
-                                               el.classList.add("tabulator-edit-select-list-item");
-                                               el.tabIndex = 0;
-                                               el.innerHTML = item.label === "" ? "&nbsp;" : item.label;
-
-                                               el.addEventListener("click", function () {
-                                                       setCurrentItem(item);
-                                                       chooseItem();
-                                               });
-
-                                               if (item === currentItem) {
-                                                       el.classList.add("active");
-                                               }
-                                       }
-
-                                       el.addEventListener("mousedown", function () {
-                                               blurable = false;
-
-                                               setTimeout(function () {
-                                                       blurable = true;
-                                               }, 10);
-                                       });
-
-                                       item.element = el;
-                               }
-
-                               listEl.appendChild(el);
-                       });
-               }
-
-               function setCurrentItem(item) {
-
-                       if (currentItem && currentItem.element) {
-                               currentItem.element.classList.remove("active");
-                       }
-
-                       currentItem = item;
-                       input.value = item.label === "&nbsp;" ? "" : item.label;
-
-                       if (item.element) {
-                               item.element.classList.add("active");
-                       }
-               }
-
-               function chooseItem() {
-                       hideList();
-
-                       if (initialValue !== currentItem.value) {
-                               initialValue = currentItem.value;
-                               success(currentItem.value);
-                       } else {
-                               cancel();
-                       }
-               }
-
-               function cancelItem() {
-                       hideList();
-                       cancel();
-               }
-
-               function showList() {
-                       if (!listEl.parentNode) {
-
-                               if (editorParams.values === true) {
-                                       parseItems(getUniqueColumnValues(), initialDisplayValue);
-                               } else if (typeof editorParams.values === "string") {
-                                       parseItems(getUniqueColumnValues(editorParams.values), initialDisplayValue);
-                               } else {
-                                       parseItems(editorParams.values || [], initialDisplayValue);
-                               }
-
-                               var offset = Tabulator.prototype.helpers.elOffset(cellEl);
-
-                               listEl.style.minWidth = cellEl.offsetWidth + "px";
-
-                               listEl.style.top = offset.top + cellEl.offsetHeight + "px";
-                               listEl.style.left = offset.left + "px";
-
-                               listEl.addEventListener("mousedown", function (e) {
-                                       blurable = false;
-
-                                       setTimeout(function () {
-                                               blurable = true;
-                                       }, 10);
-                               });
-
-                               document.body.appendChild(listEl);
-                       }
-               }
-
-               function hideList() {
-                       if (listEl.parentNode) {
-                               listEl.parentNode.removeChild(listEl);
-                       }
-
-                       removeScrollListener();
-               }
-
-               function removeScrollListener() {
-                       self.table.rowManager.element.removeEventListener("scroll", cancelItem);
-               }
-
-               //style input
-               input.setAttribute("type", "text");
-
-               input.style.padding = "4px";
-               input.style.width = "100%";
-               input.style.boxSizing = "border-box";
-               input.style.cursor = "default";
-               input.readOnly = this.currentCell != false;
-
-               if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
-                       for (var key in editorParams.elementAttributes) {
-                               if (key.charAt(0) == "+") {
-                                       key = key.slice(1);
-                                       input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
-                               } else {
-                                       input.setAttribute(key, editorParams.elementAttributes[key]);
-                               }
-                       }
-               }
-
-               input.value = typeof initialValue !== "undefined" || initialValue === null ? initialValue : "";
-
-               // if(editorParams.values === true){
-               //      parseItems(getUniqueColumnValues(), initialValue);
-               // }else if(typeof editorParams.values === "string"){
-               //      parseItems(getUniqueColumnValues(editorParams.values), initialValue);
-               // }else{
-               //      parseItems(editorParams.values || [], initialValue);
-               // }
-
-               //allow key based navigation
-               input.addEventListener("keydown", function (e) {
-                       var index;
-
-                       switch (e.keyCode) {
-                               case 38:
-                                       //up arrow
-                                       index = dataItems.indexOf(currentItem);
-
-                                       if (vertNav == "editor" || vertNav == "hybrid" && index) {
-                                               e.stopImmediatePropagation();
-                                               e.stopPropagation();
-                                               e.preventDefault();
-
-                                               if (index > 0) {
-                                                       setCurrentItem(dataItems[index - 1]);
-                                               }
-                                       }
-                                       break;
-
-                               case 40:
-                                       //down arrow
-                                       index = dataItems.indexOf(currentItem);
-
-                                       if (vertNav == "editor" || vertNav == "hybrid" && index < dataItems.length - 1) {
-                                               e.stopImmediatePropagation();
-                                               e.stopPropagation();
-                                               e.preventDefault();
-
-                                               if (index < dataItems.length - 1) {
-                                                       if (index == -1) {
-                                                               setCurrentItem(dataItems[0]);
-                                                       } else {
-                                                               setCurrentItem(dataItems[index + 1]);
-                                                       }
-                                               }
-                                       }
-                                       break;
-
-                               case 37: //left arrow
-                               case 39:
-                                       //right arrow
-                                       e.stopImmediatePropagation();
-                                       e.stopPropagation();
-                                       e.preventDefault();
-                                       break;
-
-                               case 13:
-                                       //enter
-                                       chooseItem();
-                                       break;
-
-                               case 27:
-                                       //escape
-                                       cancelItem();
-                                       break;
-                       }
-               });
-
-               input.addEventListener("blur", function (e) {
-                       if (blurable) {
-                               cancelItem();
-                       }
-               });
-
-               input.addEventListener("focus", function (e) {
-                       showList();
-               });
-
-               //style list element
-               listEl = document.createElement("div");
-               listEl.classList.add("tabulator-edit-select-list");
-
-               onRendered(function () {
-                       input.style.height = "100%";
-                       input.focus({ preventScroll: true });
-               });
-
-               return input;
-       },
-
-       //autocomplete
-       autocomplete: function autocomplete(cell, onRendered, success, cancel, editorParams) {
-               var self = this,
-                   cellEl = cell.getElement(),
-                   initialValue = cell.getValue(),
-                   vertNav = editorParams.verticalNavigation || "editor",
-                   initialDisplayValue = typeof initialValue !== "undefined" || initialValue === null ? initialValue : typeof editorParams.defaultValue !== "undefined" ? editorParams.defaultValue : "",
-                   input = document.createElement("input"),
-                   listEl = document.createElement("div"),
-                   allItems = [],
-                   displayItems = [],
-                   values = [],
-                   currentItem = false,
-                   blurable = true;
-
-               this.table.rowManager.element.addEventListener("scroll", cancelItem);
-
-               //style input
-               input.setAttribute("type", "search");
-
-               input.style.padding = "4px";
-               input.style.width = "100%";
-               input.style.boxSizing = "border-box";
-
-               if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
-                       for (var key in editorParams.elementAttributes) {
-                               if (key.charAt(0) == "+") {
-                                       key = key.slice(1);
-                                       input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
-                               } else {
-                                       input.setAttribute(key, editorParams.elementAttributes[key]);
-                               }
-                       }
-               }
-
-               //style list element
-               listEl.classList.add("tabulator-edit-select-list");
-
-               listEl.addEventListener("mousedown", function (e) {
-                       blurable = false;
-
-                       setTimeout(function () {
-                               blurable = true;
-                       }, 10);
-               });
-
-               function getUniqueColumnValues(field) {
-                       var output = {},
-                           data = self.table.getData(),
-                           column;
-
-                       if (field) {
-                               column = self.table.columnManager.getColumnByField(field);
-                       } else {
-                               column = cell.getColumn()._getSelf();
-                       }
-
-                       if (column) {
-                               data.forEach(function (row) {
-                                       var val = column.getFieldValue(row);
-
-                                       if (val !== null && typeof val !== "undefined" && val !== "") {
-                                               output[val] = true;
-                                       }
-                               });
-
-                               if (editorParams.sortValuesList) {
-                                       if (editorParams.sortValuesList == "asc") {
-                                               output = Object.keys(output).sort();
-                                       } else {
-                                               output = Object.keys(output).sort().reverse();
-                                       }
-                               } else {
-                                       output = Object.keys(output);
-                               }
-                       } else {
-                               console.warn("unable to find matching column to create autocomplete lookup list:", field);
-                       }
-
-                       return output;
-               }
-
-               function filterList(term, intialLoad) {
-                       var matches = [],
-                           values,
-                           items,
-                           searchEl;
-
-                       //lookup base values list
-                       if (editorParams.values === true) {
-                               values = getUniqueColumnValues();
-                       } else if (typeof editorParams.values === "string") {
-                               values = getUniqueColumnValues(editorParams.values);
-                       } else {
-                               values = editorParams.values || [];
-                       }
-
-                       if (editorParams.searchFunc) {
-                               matches = editorParams.searchFunc(term, values);
-
-                               if (matches instanceof Promise) {
-
-                                       addNotice(typeof editorParams.searchingPlaceholder !== "undefined" ? editorParams.searchingPlaceholder : "Searching...");
-
-                                       matches.then(function (result) {
-                                               fillListIfNotEmpty(parseItems(result), intialLoad);
-                                       }).catch(function (err) {
-                                               console.err("error in autocomplete search promise:", err);
-                                       });
-                               } else {
-                                       fillListIfNotEmpty(parseItems(matches), intialLoad);
-                               }
-                       } else {
-                               items = parseItems(values);
-
-                               if (term === "") {
-                                       if (editorParams.showListOnEmpty) {
-                                               matches = items;
-                                       }
-                               } else {
-                                       items.forEach(function (item) {
-                                               if (item.value !== null || typeof item.value !== "undefined") {
-                                                       if (String(item.value).toLowerCase().indexOf(String(term).toLowerCase()) > -1 || String(item.title).toLowerCase().indexOf(String(term).toLowerCase()) > -1) {
-                                                               matches.push(item);
-                                                       }
-                                               }
-                                       });
-                               }
-
-                               fillListIfNotEmpty(matches, intialLoad);
-                       }
-               }
-
-               function addNotice(notice) {
-                       var searchEl = document.createElement("div");
-
-                       clearList();
-
-                       if (notice !== false) {
-                               searchEl.classList.add("tabulator-edit-select-list-notice");
-                               searchEl.tabIndex = 0;
-
-                               if (notice instanceof Node) {
-                                       searchEl.appendChild(notice);
-                               } else {
-                                       searchEl.innerHTML = notice;
-                               }
-
-                               listEl.appendChild(searchEl);
-                       }
-               }
-
-               function parseItems(inputValues) {
-                       var itemList = [];
-
-                       if (Array.isArray(inputValues)) {
-                               inputValues.forEach(function (value) {
-                                       var item = {
-                                               title: editorParams.listItemFormatter ? editorParams.listItemFormatter(value, value) : value,
-                                               value: value
-                                       };
-
-                                       itemList.push(item);
-                               });
-                       } else {
-                               for (var key in inputValues) {
-                                       var item = {
-                                               title: editorParams.listItemFormatter ? editorParams.listItemFormatter(key, inputValues[key]) : inputValues[key],
-                                               value: key
-                                       };
-
-                                       itemList.push(item);
-                               }
-                       }
-
-                       return itemList;
-               }
-
-               function clearList() {
-                       while (listEl.firstChild) {
-                               listEl.removeChild(listEl.firstChild);
-                       }
-               }
-
-               function fillListIfNotEmpty(items, intialLoad) {
-                       if (items.length) {
-                               fillList(items, intialLoad);
-                       } else {
-                               if (editorParams.emptyPlaceholder) {
-                                       addNotice(editorParams.emptyPlaceholder);
-                               }
-                       }
-               }
-
-               function fillList(items, intialLoad) {
-                       var current = false;
-
-                       clearList();
-
-                       displayItems = items;
-
-                       displayItems.forEach(function (item) {
-                               var el = item.element;
-
-                               if (!el) {
-                                       el = document.createElement("div");
-                                       el.classList.add("tabulator-edit-select-list-item");
-                                       el.tabIndex = 0;
-                                       el.innerHTML = item.title;
-
-                                       el.addEventListener("click", function (e) {
-                                               setCurrentItem(item);
-                                               chooseItem();
-                                       });
-
-                                       el.addEventListener("mousedown", function (e) {
-                                               blurable = false;
-
-                                               setTimeout(function () {
-                                                       blurable = true;
-                                               }, 10);
-                                       });
-
-                                       item.element = el;
-
-                                       if (intialLoad && item.value == initialValue) {
-                                               input.value = item.title;
-                                               item.element.classList.add("active");
-                                               current = true;
-                                       }
-
-                                       if (item === currentItem) {
-                                               item.element.classList.add("active");
-                                               current = true;
-                                       }
-                               }
-
-                               listEl.appendChild(el);
-                       });
-
-                       if (!current) {
-                               setCurrentItem(false);
-                       }
-               }
-
-               function chooseItem() {
-                       hideList();
-
-                       if (currentItem) {
-                               if (initialValue !== currentItem.value) {
-                                       initialValue = currentItem.value;
-                                       input.value = currentItem.title;
-                                       success(currentItem.value);
-                               } else {
-                                       cancel();
-                               }
-                       } else {
-                               if (editorParams.freetext) {
-                                       initialValue = input.value;
-                                       success(input.value);
-                               } else {
-                                       if (editorParams.allowEmpty && input.value === "") {
-                                               initialValue = input.value;
-                                               success(input.value);
-                                       } else {
-                                               cancel();
-                                       }
-                               }
-                       }
-               }
-
-               function showList() {
-                       if (!listEl.parentNode) {
-                               while (listEl.firstChild) {
-                                       listEl.removeChild(listEl.firstChild);
-                               }var offset = Tabulator.prototype.helpers.elOffset(cellEl);
-
-                               listEl.style.minWidth = cellEl.offsetWidth + "px";
-
-                               listEl.style.top = offset.top + cellEl.offsetHeight + "px";
-                               listEl.style.left = offset.left + "px";
-                               document.body.appendChild(listEl);
-                       }
-               }
-
-               function setCurrentItem(item, showInputValue) {
-                       if (currentItem && currentItem.element) {
-                               currentItem.element.classList.remove("active");
-                       }
-
-                       currentItem = item;
-
-                       if (item && item.element) {
-                               item.element.classList.add("active");
-                       }
-               }
-
-               function hideList() {
-                       if (listEl.parentNode) {
-                               listEl.parentNode.removeChild(listEl);
-                       }
-
-                       removeScrollListener();
-               }
-
-               function cancelItem() {
-                       hideList();
-                       cancel();
-               }
-
-               function removeScrollListener() {
-                       self.table.rowManager.element.removeEventListener("scroll", cancelItem);
-               }
-
-               //allow key based navigation
-               input.addEventListener("keydown", function (e) {
-                       var index;
-
-                       switch (e.keyCode) {
-                               case 38:
-                                       //up arrow
-                                       index = displayItems.indexOf(currentItem);
-
-                                       if (vertNav == "editor" || vertNav == "hybrid" && index) {
-                                               e.stopImmediatePropagation();
-                                               e.stopPropagation();
-                                               e.preventDefault();
-
-                                               if (index > 0) {
-                                                       setCurrentItem(displayItems[index - 1]);
-                                               } else {
-                                                       setCurrentItem(false);
-                                               }
-                                       }
-                                       break;
-
-                               case 40:
-                                       //down arrow
-
-                                       index = displayItems.indexOf(currentItem);
-
-                                       if (vertNav == "editor" || vertNav == "hybrid" && index < displayItems.length - 1) {
-
-                                               e.stopImmediatePropagation();
-                                               e.stopPropagation();
-                                               e.preventDefault();
-
-                                               if (index < displayItems.length - 1) {
-                                                       if (index == -1) {
-                                                               setCurrentItem(displayItems[0]);
-                                                       } else {
-                                                               setCurrentItem(displayItems[index + 1]);
-                                                       }
-                                               }
-                                       }
-                                       break;
-
-                               case 37: //left arrow
-                               case 39:
-                                       //right arrow
-                                       e.stopImmediatePropagation();
-                                       e.stopPropagation();
-                                       e.preventDefault();
-                                       break;
-
-                               case 13:
-                                       //enter
-                                       chooseItem();
-                                       break;
-
-                               case 27:
-                                       //escape
-                                       cancelItem();
-                                       break;
-
-                               case 36: //home
-                               case 35:
-                                       //end
-                                       //prevent table navigation while using input element
-                                       e.stopImmediatePropagation();
-                                       break;
-                       }
-               });
-
-               input.addEventListener("keyup", function (e) {
-
-                       switch (e.keyCode) {
-                               case 38: //up arrow
-                               case 37: //left arrow
-                               case 39: //up arrow
-                               case 40: //right arrow
-                               case 13: //enter
-                               case 27:
-                                       //escape
-                                       break;
-
-                               default:
-                                       filterList(input.value);
-                       }
-               });
-
-               input.addEventListener("search", function (e) {
-                       filterList(input.value);
-               });
-
-               input.addEventListener("blur", function (e) {
-                       if (blurable) {
-                               chooseItem();
-                       }
-               });
-
-               input.addEventListener("focus", function (e) {
-                       var value = initialDisplayValue;
-                       showList();
-                       input.value = value;
-                       filterList(value, true);
-               });
-
-               onRendered(function () {
-                       input.style.height = "100%";
-                       input.focus({ preventScroll: true });
-               });
-
-               if (editorParams.mask) {
-                       this.table.modules.edit.maskInput(input, editorParams);
-               }
-
-               return input;
-       },
-
-       //start rating
-       star: function star(cell, onRendered, success, cancel, editorParams) {
-               var self = this,
-                   element = cell.getElement(),
-                   value = cell.getValue(),
-                   maxStars = element.getElementsByTagName("svg").length || 5,
-                   size = element.getElementsByTagName("svg")[0] ? element.getElementsByTagName("svg")[0].getAttribute("width") : 14,
-                   stars = [],
-                   starsHolder = document.createElement("div"),
-                   star = document.createElementNS('http://www.w3.org/2000/svg', "svg");
-
-               //change star type
-               function starChange(val) {
-                       stars.forEach(function (star, i) {
-                               if (i < val) {
-                                       if (self.table.browser == "ie") {
-                                               star.setAttribute("class", "tabulator-star-active");
-                                       } else {
-                                               star.classList.replace("tabulator-star-inactive", "tabulator-star-active");
-                                       }
-
-                                       star.innerHTML = '<polygon fill="#488CE9" stroke="#014AAE" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>';
-                               } else {
-                                       if (self.table.browser == "ie") {
-                                               star.setAttribute("class", "tabulator-star-inactive");
-                                       } else {
-                                               star.classList.replace("tabulator-star-active", "tabulator-star-inactive");
-                                       }
-
-                                       star.innerHTML = '<polygon fill="#010155" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>';
-                               }
-                       });
-               }
-
-               //build stars
-               function buildStar(i) {
-
-                       var starHolder = document.createElement("span");
-                       var nextStar = star.cloneNode(true);
-
-                       stars.push(nextStar);
-
-                       starHolder.addEventListener("mouseenter", function (e) {
-                               e.stopPropagation();
-                               e.stopImmediatePropagation();
-                               starChange(i);
-                       });
-
-                       starHolder.addEventListener("mousemove", function (e) {
-                               e.stopPropagation();
-                               e.stopImmediatePropagation();
-                       });
-
-                       starHolder.addEventListener("click", function (e) {
-                               e.stopPropagation();
-                               e.stopImmediatePropagation();
-                               success(i);
-                       });
-
-                       starHolder.appendChild(nextStar);
-                       starsHolder.appendChild(starHolder);
-               }
-
-               //handle keyboard navigation value change
-               function changeValue(val) {
-                       value = val;
-                       starChange(val);
-               }
-
-               //style cell
-               element.style.whiteSpace = "nowrap";
-               element.style.overflow = "hidden";
-               element.style.textOverflow = "ellipsis";
-
-               //style holding element
-               starsHolder.style.verticalAlign = "middle";
-               starsHolder.style.display = "inline-block";
-               starsHolder.style.padding = "4px";
-
-               //style star
-               star.setAttribute("width", size);
-               star.setAttribute("height", size);
-               star.setAttribute("viewBox", "0 0 512 512");
-               star.setAttribute("xml:space", "preserve");
-               star.style.padding = "0 1px";
-
-               if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
-                       for (var key in editorParams.elementAttributes) {
-                               if (key.charAt(0) == "+") {
-                                       key = key.slice(1);
-                                       starsHolder.setAttribute(key, starsHolder.getAttribute(key) + editorParams.elementAttributes["+" + key]);
-                               } else {
-                                       starsHolder.setAttribute(key, editorParams.elementAttributes[key]);
-                               }
-                       }
-               }
-
-               //create correct number of stars
-               for (var i = 1; i <= maxStars; i++) {
-                       buildStar(i);
-               }
-
-               //ensure value does not exceed number of stars
-               value = Math.min(parseInt(value), maxStars);
-
-               // set initial styling of stars
-               starChange(value);
-
-               starsHolder.addEventListener("mousemove", function (e) {
-                       starChange(0);
-               });
-
-               starsHolder.addEventListener("click", function (e) {
-                       success(0);
-               });
-
-               element.addEventListener("blur", function (e) {
-                       cancel();
-               });
-
-               //allow key based navigation
-               element.addEventListener("keydown", function (e) {
-                       switch (e.keyCode) {
-                               case 39:
-                                       //right arrow
-                                       changeValue(value + 1);
-                                       break;
-
-                               case 37:
-                                       //left arrow
-                                       changeValue(value - 1);
-                                       break;
-
-                               case 13:
-                                       //enter
-                                       success(value);
-                                       break;
-
-                               case 27:
-                                       //escape
-                                       cancel();
-                                       break;
-                       }
-               });
-
-               return starsHolder;
-       },
-
-       //draggable progress bar
-       progress: function progress(cell, onRendered, success, cancel, editorParams) {
-               var element = cell.getElement(),
-                   max = typeof editorParams.max === "undefined" ? element.getElementsByTagName("div")[0].getAttribute("max") || 100 : editorParams.max,
-                   min = typeof editorParams.min === "undefined" ? element.getElementsByTagName("div")[0].getAttribute("min") || 0 : editorParams.min,
-                   percent = (max - min) / 100,
-                   value = cell.getValue() || 0,
-                   handle = document.createElement("div"),
-                   bar = document.createElement("div"),
-                   mouseDrag,
-                   mouseDragWidth;
-
-               //set new value
-               function updateValue() {
-                       var calcVal = percent * Math.round(bar.offsetWidth / (element.clientWidth / 100)) + min;
-                       success(calcVal);
-                       element.setAttribute("aria-valuenow", calcVal);
-                       element.setAttribute("aria-label", value);
-               }
-
-               //style handle
-               handle.style.position = "absolute";
-               handle.style.right = "0";
-               handle.style.top = "0";
-               handle.style.bottom = "0";
-               handle.style.width = "5px";
-               handle.classList.add("tabulator-progress-handle");
-
-               //style bar
-               bar.style.display = "inline-block";
-               bar.style.position = "relative";
-               // bar.style.top = "8px";
-               // bar.style.bottom = "8px";
-               // bar.style.left = "4px";
-               // bar.style.marginRight = "4px";
-               bar.style.height = "100%";
-               bar.style.backgroundColor = "#488CE9";
-               bar.style.maxWidth = "100%";
-               bar.style.minWidth = "0%";
-
-               if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
-                       for (var key in editorParams.elementAttributes) {
-                               if (key.charAt(0) == "+") {
-                                       key = key.slice(1);
-                                       bar.setAttribute(key, bar.getAttribute(key) + editorParams.elementAttributes["+" + key]);
-                               } else {
-                                       bar.setAttribute(key, editorParams.elementAttributes[key]);
-                               }
-                       }
-               }
-
-               //style cell
-               element.style.padding = "4px 4px";
-
-               //make sure value is in range
-               value = Math.min(parseFloat(value), max);
-               value = Math.max(parseFloat(value), min);
-
-               //workout percentage
-               value = Math.round((value - min) / percent);
-               // bar.style.right = value + "%";
-               bar.style.width = value + "%";
-
-               element.setAttribute("aria-valuemin", min);
-               element.setAttribute("aria-valuemax", max);
-
-               bar.appendChild(handle);
-
-               handle.addEventListener("mousedown", function (e) {
-                       mouseDrag = e.screenX;
-                       mouseDragWidth = bar.offsetWidth;
-               });
-
-               handle.addEventListener("mouseover", function () {
-                       handle.style.cursor = "ew-resize";
-               });
-
-               element.addEventListener("mousemove", function (e) {
-                       if (mouseDrag) {
-                               bar.style.width = mouseDragWidth + e.screenX - mouseDrag + "px";
-                       }
-               });
-
-               element.addEventListener("mouseup", function (e) {
-                       if (mouseDrag) {
-                               e.stopPropagation();
-                               e.stopImmediatePropagation();
-
-                               mouseDrag = false;
-                               mouseDragWidth = false;
-
-                               updateValue();
-                       }
-               });
-
-               //allow key based navigation
-               element.addEventListener("keydown", function (e) {
-                       switch (e.keyCode) {
-                               case 39:
-                                       //right arrow
-                                       e.preventDefault();
-                                       bar.style.width = bar.clientWidth + element.clientWidth / 100 + "px";
-                                       break;
-
-                               case 37:
-                                       //left arrow
-                                       e.preventDefault();
-                                       bar.style.width = bar.clientWidth - element.clientWidth / 100 + "px";
-                                       break;
-
-                               case 9: //tab
-                               case 13:
-                                       //enter
-                                       updateValue();
-                                       break;
-
-                               case 27:
-                                       //escape
-                                       cancel();
-                                       break;
-
-                       }
-               });
-
-               element.addEventListener("blur", function () {
-                       cancel();
-               });
-
-               return bar;
-       },
-
-       //checkbox
-       tickCross: function tickCross(cell, onRendered, success, cancel, editorParams) {
-               var value = cell.getValue(),
-                   input = document.createElement("input"),
-                   tristate = editorParams.tristate,
-                   indetermValue = typeof editorParams.indeterminateValue === "undefined" ? null : editorParams.indeterminateValue,
-                   indetermState = false;
-
-               input.setAttribute("type", "checkbox");
-               input.style.marginTop = "5px";
-               input.style.boxSizing = "border-box";
-
-               if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
-                       for (var key in editorParams.elementAttributes) {
-                               if (key.charAt(0) == "+") {
-                                       key = key.slice(1);
-                                       input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
-                               } else {
-                                       input.setAttribute(key, editorParams.elementAttributes[key]);
-                               }
-                       }
-               }
-
-               input.value = value;
-
-               if (tristate && (typeof value === "undefined" || value === indetermValue || value === "")) {
-                       indetermState = true;
-                       input.indeterminate = true;
-               }
-
-               if (this.table.browser != "firefox") {
-                       //prevent blur issue on mac firefox
-                       onRendered(function () {
-                               input.focus({ preventScroll: true });
-                       });
-               }
-
-               input.checked = value === true || value === "true" || value === "True" || value === 1;
-
-               function setValue(blur) {
-                       if (tristate) {
-                               if (!blur) {
-                                       if (input.checked && !indetermState) {
-                                               input.checked = false;
-                                               input.indeterminate = true;
-                                               indetermState = true;
-                                               return indetermValue;
-                                       } else {
-                                               indetermState = false;
-                                               return input.checked;
-                                       }
-                               } else {
-                                       if (indetermState) {
-                                               return indetermValue;
-                                       } else {
-                                               return input.checked;
-                                       }
-                               }
-                       } else {
-                               return input.checked;
-                       }
-               }
-
-               //submit new value on blur
-               input.addEventListener("change", function (e) {
-                       success(setValue());
-               });
-
-               input.addEventListener("blur", function (e) {
-                       success(setValue(true));
-               });
-
-               //submit new value on enter
-               input.addEventListener("keydown", function (e) {
-                       if (e.keyCode == 13) {
-                               success(setValue());
-                       }
-                       if (e.keyCode == 27) {
-                               cancel();
-                       }
-               });
-
-               return input;
-       }
-};
-
-Tabulator.prototype.registerModule("edit", Edit);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/edit.min.js b/app/static/vendors/tabulator/js.old/modules/edit.min.js
deleted file mode 100644 (file)
index 06a11a9..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Edit=function(e){this.table=e,this.currentCell=!1,this.mouseClick=!1,this.recursionBlock=!1,this.invalidEdit=!1};Edit.prototype.initializeColumn=function(e){var t=this,i={editor:!1,blocked:!1,check:e.definition.editable,params:e.definition.editorParams||{}};switch(_typeof(e.definition.editor)){case"string":"tick"===e.definition.editor&&(e.definition.editor="tickCross",console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor")),t.editors[e.definition.editor]?i.editor=t.editors[e.definition.editor]:console.warn("Editor Error - No such editor found: ",e.definition.editor);break;case"function":i.editor=e.definition.editor;break;case"boolean":!0===e.definition.editor&&("function"!=typeof e.definition.formatter?("tick"===e.definition.formatter&&(e.definition.formatter="tickCross",console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor")),t.editors[e.definition.formatter]?i.editor=t.editors[e.definition.formatter]:i.editor=t.editors.input):console.warn("Editor Error - Cannot auto lookup editor for a custom formatter: ",e.definition.formatter))}i.editor&&(e.modules.edit=i)},Edit.prototype.getCurrentCell=function(){return!!this.currentCell&&this.currentCell.getComponent()},Edit.prototype.clearEditor=function(){var e,t=this.currentCell;if(this.invalidEdit=!1,t){for(this.currentCell=!1,e=t.getElement(),e.classList.remove("tabulator-validation-fail"),e.classList.remove("tabulator-editing");e.firstChild;)e.removeChild(e.firstChild);t.row.getElement().classList.remove("tabulator-row-editing")}},Edit.prototype.cancelEdit=function(){if(this.currentCell){var e=this.currentCell,t=this.currentCell.getComponent();this.clearEditor(),e.setValueActual(e.getValue()),e.cellRendered(),e.column.cellEvents.cellEditCancelled&&e.column.cellEvents.cellEditCancelled.call(this.table,t),this.table.options.cellEditCancelled.call(this.table,t)}},Edit.prototype.bindEditor=function(e){var t=this,i=e.getElement();i.setAttribute("tabindex",0),i.addEventListener("click",function(e){i.classList.contains("tabulator-editing")||i.focus({preventScroll:!0})}),i.addEventListener("mousedown",function(e){t.mouseClick=!0}),i.addEventListener("focus",function(i){t.recursionBlock||t.edit(e,i,!1)})},Edit.prototype.focusCellNoEvent=function(e,t){this.recursionBlock=!0,t&&"ie"===this.table.browser||e.getElement().focus({preventScroll:!0}),this.recursionBlock=!1},Edit.prototype.editCell=function(e,t){this.focusCellNoEvent(e),this.edit(e,!1,t)},Edit.prototype.focusScrollAdjust=function(e){if("virtual"==this.table.rowManager.getRenderMode()){var t=this.table.rowManager.element.scrollTop,i=this.table.rowManager.element.clientHeight+this.table.rowManager.element.scrollTop,n=e.row.getElement();n.offsetTop;n.offsetTop<t?this.table.rowManager.element.scrollTop-=t-n.offsetTop:n.offsetTop+n.offsetHeight>i&&(this.table.rowManager.element.scrollTop+=n.offsetTop+n.offsetHeight-i)}},Edit.prototype.edit=function(e,t,i){function n(t){if(u.currentCell===e){var i=!0;return e.column.modules.validate&&u.table.modExists("validate")&&(i=u.table.modules.validate.validate(e.column.modules.validate,e.getComponent(),t)),!0===i?(u.clearEditor(),e.setValue(t,!0),u.table.options.dataTree&&u.table.modExists("dataTree")&&u.table.modules.dataTree.checkForRestyle(e),!0):(u.invalidEdit=!0,m.classList.add("tabulator-validation-fail"),u.focusCellNoEvent(e,!0),c(),u.table.options.validationFailed.call(u.table,e.getComponent(),t,i),!1)}}function a(){u.currentCell===e&&(u.cancelEdit(),u.table.options.dataTree&&u.table.modExists("dataTree")&&u.table.modules.dataTree.checkForRestyle(e))}function o(e){c=e}var r,l,s,u=this,d=!0,c=function(){},m=e.getElement();if(this.currentCell)return void(this.invalidEdit||this.cancelEdit());if(e.column.modules.edit.blocked)return this.mouseClick=!1,m.blur(),!1;switch(t&&t.stopPropagation(),_typeof(e.column.modules.edit.check)){case"function":d=e.column.modules.edit.check(e.getComponent());break;case"boolean":d=e.column.modules.edit.check}if(d||i){if(u.cancelEdit(),u.currentCell=e,this.focusScrollAdjust(e),l=e.getComponent(),this.mouseClick&&(this.mouseClick=!1,e.column.cellEvents.cellClick&&e.column.cellEvents.cellClick.call(this.table,t,l)),e.column.cellEvents.cellEditing&&e.column.cellEvents.cellEditing.call(this.table,l),u.table.options.cellEditing.call(this.table,l),s="function"==typeof e.column.modules.edit.params?e.column.modules.edit.params(l):e.column.modules.edit.params,!1===(r=e.column.modules.edit.editor.call(u,l,o,n,a,s)))return m.blur(),!1;if(!(r instanceof Node))return console.warn("Edit Error - Editor should return an instance of Node, the editor returned:",r),m.blur(),!1;for(m.classList.add("tabulator-editing"),e.row.getElement().classList.add("tabulator-row-editing");m.firstChild;)m.removeChild(m.firstChild);m.appendChild(r),c();for(var f=m.children,p=0;p<f.length;p++)f[p].addEventListener("click",function(e){e.stopPropagation()});return!0}return this.mouseClick=!1,m.blur(),!1},Edit.prototype.maskInput=function(e,t){function i(t){var l=n[t];void 0!==l&&l!==r&&l!==a&&l!==o&&(e.value=e.value+""+l,i(t+1))}var n=t.mask,a=void 0!==t.maskLetterChar?t.maskLetterChar:"A",o=void 0!==t.maskNumberChar?t.maskNumberChar:"9",r=void 0!==t.maskWildcardChar?t.maskWildcardChar:"*",l=!1;e.addEventListener("keydown",function(t){var i=e.value.length,s=t.key;if(t.keyCode>46){if(i>=n.length)return t.preventDefault(),t.stopPropagation(),l=!1,!1;switch(n[i]){case a:if(s.toUpperCase()==s.toLowerCase())return t.preventDefault(),t.stopPropagation(),l=!1,!1;break;case o:if(isNaN(s))return t.preventDefault(),t.stopPropagation(),l=!1,!1;break;case r:break;default:if(s!==n[i])return t.preventDefault(),t.stopPropagation(),l=!1,!1}l=!0}}),e.addEventListener("keyup",function(n){n.keyCode>46&&t.maskAutoFill&&i(e.value.length)}),e.placeholder||(e.placeholder=n),t.maskAutoFill&&i(e.value.length)},Edit.prototype.editors={input:function(e,t,i,n,a){function o(e){(null===r||void 0===r)&&""!==l.value||l.value!==r?i(l.value)&&(r=l.value):n()}var r=e.getValue(),l=document.createElement("input");if(l.setAttribute("type",a.search?"search":"text"),l.style.padding="4px",l.style.width="100%",l.style.boxSizing="border-box",a.elementAttributes&&"object"==_typeof(a.elementAttributes))for(var s in a.elementAttributes)"+"==s.charAt(0)?(s=s.slice(1),l.setAttribute(s,l.getAttribute(s)+a.elementAttributes["+"+s])):l.setAttribute(s,a.elementAttributes[s]);return l.value=void 0!==r?r:"",t(function(){l.focus({preventScroll:!0}),l.style.height="100%"}),l.addEventListener("change",o),l.addEventListener("blur",o),l.addEventListener("keydown",function(e){switch(e.keyCode){case 13:o(e);break;case 27:n()}}),a.mask&&this.table.modules.edit.maskInput(l,a),l},textarea:function(e,t,i,n,a){function o(t){(null===r||void 0===r)&&""!==u.value||u.value!==r?(i(u.value)&&(r=u.value),setTimeout(function(){e.getRow().normalizeHeight()},300)):n()}var r=e.getValue(),l=a.verticalNavigation||"hybrid",s=String(null!==r&&void 0!==r?r:""),u=(s.match(/(?:\r\n|\r|\n)/g),document.createElement("textarea")),d=0;if(u.style.display="block",u.style.padding="2px",u.style.height="100%",u.style.width="100%",u.style.boxSizing="border-box",u.style.whiteSpace="pre-wrap",u.style.resize="none",a.elementAttributes&&"object"==_typeof(a.elementAttributes))for(var c in a.elementAttributes)"+"==c.charAt(0)?(c=c.slice(1),u.setAttribute(c,u.getAttribute(c)+a.elementAttributes["+"+c])):u.setAttribute(c,a.elementAttributes[c]);return u.value=s,t(function(){u.focus({preventScroll:!0}),u.style.height="100%"}),u.addEventListener("change",o),u.addEventListener("blur",o),u.addEventListener("keyup",function(){u.style.height="";var t=u.scrollHeight;u.style.height=t+"px",t!=d&&(d=t,e.getRow().normalizeHeight())}),u.addEventListener("keydown",function(e){switch(e.keyCode){case 27:n();break;case 38:("editor"==l||"hybrid"==l&&u.selectionStart)&&(e.stopImmediatePropagation(),e.stopPropagation());break;case 40:("editor"==l||"hybrid"==l&&u.selectionStart!==u.value.length)&&(e.stopImmediatePropagation(),e.stopPropagation())}}),a.mask&&this.table.modules.edit.maskInput(u,a),u},number:function(e,t,i,n,a){function o(){var e=s.value;isNaN(e)||""===e||(e=Number(e)),e!==r?i(e)&&(r=e):n()}var r=e.getValue(),l=a.verticalNavigation||"editor",s=document.createElement("input");if(s.setAttribute("type","number"),void 0!==a.max&&s.setAttribute("max",a.max),void 0!==a.min&&s.setAttribute("min",a.min),void 0!==a.step&&s.setAttribute("step",a.step),s.style.padding="4px",s.style.width="100%",s.style.boxSizing="border-box",a.elementAttributes&&"object"==_typeof(a.elementAttributes))for(var u in a.elementAttributes)"+"==u.charAt(0)?(u=u.slice(1),s.setAttribute(u,s.getAttribute(u)+a.elementAttributes["+"+u])):s.setAttribute(u,a.elementAttributes[u]);s.value=r;var d=function(e){o()};return t(function(){s.removeEventListener("blur",d),s.focus({preventScroll:!0}),s.style.height="100%",s.addEventListener("blur",d)}),s.addEventListener("keydown",function(e){switch(e.keyCode){case 13:o();break;case 27:n();break;case 38:case 40:"editor"==l&&(e.stopImmediatePropagation(),e.stopPropagation())}}),a.mask&&this.table.modules.edit.maskInput(s,a),s},range:function(e,t,i,n,a){function o(){var e=l.value;isNaN(e)||""===e||(e=Number(e)),e!=r?i(e)&&(r=e):n()}var r=e.getValue(),l=document.createElement("input");if(l.setAttribute("type","range"),void 0!==a.max&&l.setAttribute("max",a.max),void 0!==a.min&&l.setAttribute("min",a.min),void 0!==a.step&&l.setAttribute("step",a.step),l.style.padding="4px",l.style.width="100%",l.style.boxSizing="border-box",a.elementAttributes&&"object"==_typeof(a.elementAttributes))for(var s in a.elementAttributes)"+"==s.charAt(0)?(s=s.slice(1),l.setAttribute(s,l.getAttribute(s)+a.elementAttributes["+"+s])):l.setAttribute(s,a.elementAttributes[s]);return l.value=r,t(function(){l.focus({preventScroll:!0}),l.style.height="100%"}),l.addEventListener("blur",function(e){o()}),l.addEventListener("keydown",function(e){switch(e.keyCode){case 13:case 9:o();break;case 27:n()}}),l},select:function(e,t,i,n,a){function o(t){var i,n={},o=p.table.getData();return i=t?p.table.columnManager.getColumnByField(t):e.getColumn()._getSelf(),i?(o.forEach(function(e){var t=i.getFieldValue(e);null!==t&&void 0!==t&&""!==t&&(n[t]=!0)}),n=a.sortValuesList?"asc"==a.sortValuesList?Object.keys(n).sort():Object.keys(n).sort().reverse():Object.keys(n)):console.warn("unable to find matching column to create select lookup list:",t),n}function r(t,i){function n(e){var e={label:a.listItemFormatter?a.listItemFormatter(e.value,e.label):e.label,value:e.value,element:!1};return e.value!==i&&(isNaN(parseFloat(e.value))||isNaN(parseFloat(e.value))||parseFloat(e.value)!==parseFloat(i))||s(e),o.push(e),r.push(e),e}var o=[],r=[];if("function"==typeof t&&(t=t(e)),Array.isArray(t))t.forEach(function(e){var t;"object"===(void 0===e?"undefined":_typeof(e))?e.options?(t={label:e.label,group:!0,element:!1},r.push(t),e.options.forEach(function(e){n(e)})):n(e):(t={label:a.listItemFormatter?a.listItemFormatter(e,e):e,value:e,element:!1},t.value!==i&&(isNaN(parseFloat(t.value))||isNaN(parseFloat(t.value))||parseFloat(t.value)!==parseFloat(i))||s(t),o.push(t),r.push(t))});else for(var u in t){var d={label:a.listItemFormatter?a.listItemFormatter(u,t[u]):t[u],value:u,element:!1};d.value!==i&&(isNaN(parseFloat(d.value))||isNaN(parseFloat(d.value))||parseFloat(d.value)!==parseFloat(i))||s(d),o.push(d),r.push(d)}k=o,A=r,l()}function l(){for(;E.firstChild;)E.removeChild(E.firstChild);A.forEach(function(e){var t=e.element;t||(e.group?(t=document.createElement("div"),t.classList.add("tabulator-edit-select-list-group"),t.tabIndex=0,t.innerHTML=""===e.label?"&nbsp;":e.label):(t=document.createElement("div"),t.classList.add("tabulator-edit-select-list-item"),t.tabIndex=0,t.innerHTML=""===e.label?"&nbsp;":e.label,t.addEventListener("click",function(){s(e),u()}),e===C&&t.classList.add("active")),t.addEventListener("mousedown",function(){w=!1,setTimeout(function(){w=!0},10)}),e.element=t),E.appendChild(t)})}function s(e){C&&C.element&&C.element.classList.remove("active"),C=e,y.value="&nbsp;"===e.label?"":e.label,e.element&&e.element.classList.add("active")}function u(){m(),b!==C.value?(b=C.value,i(C.value)):n()}function d(){m(),n()}function c(){if(!E.parentNode){!0===a.values?r(o(),g):"string"==typeof a.values?r(o(a.values),g):r(a.values||[],g);var e=Tabulator.prototype.helpers.elOffset(v);E.style.minWidth=v.offsetWidth+"px",E.style.top=e.top+v.offsetHeight+"px",E.style.left=e.left+"px",E.addEventListener("mousedown",function(e){w=!1,setTimeout(function(){w=!0},10)}),document.body.appendChild(E)}}function m(){E.parentNode&&E.parentNode.removeChild(E),f()}function f(){p.table.rowManager.element.removeEventListener("scroll",d)}var p=this,v=e.getElement(),b=e.getValue(),h=a.verticalNavigation||"editor",g=void 0!==b||null===b?b:void 0!==a.defaultValue?a.defaultValue:"",y=document.createElement("input"),E=document.createElement("div"),k=[],A=[],C={},w=!0;if(this.table.rowManager.element.addEventListener("scroll",d),(Array.isArray(a)||!Array.isArray(a)&&"object"===(void 0===a?"undefined":_typeof(a))&&!a.values)&&(console.warn("DEPRECATION WARNING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object"),a={values:a}),y.setAttribute("type","text"),y.style.padding="4px",y.style.width="100%",y.style.boxSizing="border-box",y.style.cursor="default",y.readOnly=0!=this.currentCell,a.elementAttributes&&"object"==_typeof(a.elementAttributes))for(var L in a.elementAttributes)"+"==L.charAt(0)?(L=L.slice(1),y.setAttribute(L,y.getAttribute(L)+a.elementAttributes["+"+L])):y.setAttribute(L,a.elementAttributes[L]);return y.value=void 0!==b||null===b?b:"",y.addEventListener("keydown",function(e){var t;switch(e.keyCode){case 38:t=k.indexOf(C),("editor"==h||"hybrid"==h&&t)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t>0&&s(k[t-1]));break;case 40:t=k.indexOf(C),("editor"==h||"hybrid"==h&&t<k.length-1)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t<k.length-1&&s(-1==t?k[0]:k[t+1]));break;case 37:case 39:e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault();break;case 13:u();break;case 27:d()}}),y.addEventListener("blur",function(e){w&&d()}),y.addEventListener("focus",function(e){c()}),E=document.createElement("div"),E.classList.add("tabulator-edit-select-list"),t(function(){y.style.height="100%",y.focus({preventScroll:!0})}),y},autocomplete:function(e,t,i,n,a){function o(t){var i,n={},o=g.table.getData();return i=t?g.table.columnManager.getColumnByField(t):e.getColumn()._getSelf(),i?(o.forEach(function(e){var t=i.getFieldValue(e);null!==t&&void 0!==t&&""!==t&&(n[t]=!0)}),n=a.sortValuesList?"asc"==a.sortValuesList?Object.keys(n).sort():Object.keys(n).sort().reverse():Object.keys(n)):console.warn("unable to find matching column to create autocomplete lookup list:",t),n}function r(e,t){var i,n,r=[];i=!0===a.values?o():"string"==typeof a.values?o(a.values):a.values||[],a.searchFunc?(r=a.searchFunc(e,i),r instanceof Promise?(l(void 0!==a.searchingPlaceholder?a.searchingPlaceholder:"Searching..."),r.then(function(e){d(s(e),t)}).catch(function(e){console.err("error in autocomplete search promise:",e)})):d(s(r),t)):(n=s(i),""===e?a.showListOnEmpty&&(r=n):n.forEach(function(t){null===t.value&&void 0===t.value||(String(t.value).toLowerCase().indexOf(String(e).toLowerCase())>-1||String(t.title).toLowerCase().indexOf(String(e).toLowerCase())>-1)&&r.push(t)}),d(r,t))}function l(e){var t=document.createElement("div");u(),!1!==e&&(t.classList.add("tabulator-edit-select-list-notice"),t.tabIndex=0,e instanceof Node?t.appendChild(e):t.innerHTML=e,w.appendChild(t))}function s(e){var t=[];if(Array.isArray(e))e.forEach(function(e){var i={title:a.listItemFormatter?a.listItemFormatter(e,e):e,value:e};t.push(i)});else for(var i in e){var n={title:a.listItemFormatter?a.listItemFormatter(i,e[i]):e[i],value:i};t.push(n)}return t}function u(){for(;w.firstChild;)w.removeChild(w.firstChild)}function d(e,t){e.length?c(e,t):a.emptyPlaceholder&&l(a.emptyPlaceholder)}function c(e,t){var i=!1;u(),L=e,L.forEach(function(e){var n=e.element;n||(n=document.createElement("div"),n.classList.add("tabulator-edit-select-list-item"),n.tabIndex=0,n.innerHTML=e.title,n.addEventListener("click",function(t){p(e),m()}),n.addEventListener("mousedown",function(e){N=!1,setTimeout(function(){N=!0},10)}),e.element=n,t&&e.value==E&&(C.value=e.title,e.element.classList.add("active"),i=!0),e===x&&(e.element.classList.add("active"),i=!0)),w.appendChild(n)}),i||p(!1)}function m(){v(),x?E!==x.value?(E=x.value,C.value=x.title,i(x.value)):n():a.freetext?(E=C.value,i(C.value)):a.allowEmpty&&""===C.value?(E=C.value,i(C.value)):n()}function f(){if(!w.parentNode){for(;w.firstChild;)w.removeChild(w.firstChild);var e=Tabulator.prototype.helpers.elOffset(y);w.style.minWidth=y.offsetWidth+"px",w.style.top=e.top+y.offsetHeight+"px",w.style.left=e.left+"px",document.body.appendChild(w)}}function p(e,t){x&&x.element&&x.element.classList.remove("active"),x=e,e&&e.element&&e.element.classList.add("active")}function v(){w.parentNode&&w.parentNode.removeChild(w),h()}function b(){v(),n()}function h(){g.table.rowManager.element.removeEventListener("scroll",b)}var g=this,y=e.getElement(),E=e.getValue(),k=a.verticalNavigation||"editor",A=void 0!==E||null===E?E:void 0!==a.defaultValue?a.defaultValue:"",C=document.createElement("input"),w=document.createElement("div"),L=[],x=!1,N=!0;if(this.table.rowManager.element.addEventListener("scroll",b),C.setAttribute("type","search"),C.style.padding="4px",C.style.width="100%",C.style.boxSizing="border-box",a.elementAttributes&&"object"==_typeof(a.elementAttributes))for(var P in a.elementAttributes)"+"==P.charAt(0)?(P=P.slice(1),C.setAttribute(P,C.getAttribute(P)+a.elementAttributes["+"+P])):C.setAttribute(P,a.elementAttributes[P]);return w.classList.add("tabulator-edit-select-list"),w.addEventListener("mousedown",function(e){N=!1,setTimeout(function(){N=!0},10)}),C.addEventListener("keydown",function(e){var t;switch(e.keyCode){case 38:t=L.indexOf(x),("editor"==k||"hybrid"==k&&t)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),p(t>0?L[t-1]:!1));break;case 40:t=L.indexOf(x),("editor"==k||"hybrid"==k&&t<L.length-1)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t<L.length-1&&p(-1==t?L[0]:L[t+1]));break;case 37:case 39:e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault();break;case 13:m();break;case 27:b();break;case 36:case 35:e.stopImmediatePropagation()}}),C.addEventListener("keyup",function(e){switch(e.keyCode){case 38:case 37:case 39:case 40:case 13:case 27:break;default:r(C.value)}}),C.addEventListener("search",function(e){r(C.value)}),C.addEventListener("blur",function(e){N&&m()}),C.addEventListener("focus",function(e){var t=A;f(),C.value=t,r(t,!0)}),t(function(){C.style.height="100%",C.focus({preventScroll:!0})}),a.mask&&this.table.modules.edit.maskInput(C,a),C},star:function(e,t,i,n,a){function o(e){m.forEach(function(t,i){i<e?("ie"==l.table.browser?t.setAttribute("class","tabulator-star-active"):t.classList.replace("tabulator-star-inactive","tabulator-star-active"),t.innerHTML='<polygon fill="#488CE9" stroke="#014AAE" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>'):("ie"==l.table.browser?t.setAttribute("class","tabulator-star-inactive"):t.classList.replace("tabulator-star-active","tabulator-star-inactive"),t.innerHTML='<polygon fill="#010155" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>')})}function r(e){u=e,o(e)}var l=this,s=e.getElement(),u=e.getValue(),d=s.getElementsByTagName("svg").length||5,c=s.getElementsByTagName("svg")[0]?s.getElementsByTagName("svg")[0].getAttribute("width"):14,m=[],f=document.createElement("div"),p=document.createElementNS("http://www.w3.org/2000/svg","svg");if(s.style.whiteSpace="nowrap",s.style.overflow="hidden",s.style.textOverflow="ellipsis",f.style.verticalAlign="middle",f.style.display="inline-block",f.style.padding="4px",p.setAttribute("width",c),p.setAttribute("height",c),p.setAttribute("viewBox","0 0 512 512"),p.setAttribute("xml:space","preserve"),p.style.padding="0 1px",a.elementAttributes&&"object"==_typeof(a.elementAttributes))for(var v in a.elementAttributes)"+"==v.charAt(0)?(v=v.slice(1),f.setAttribute(v,f.getAttribute(v)+a.elementAttributes["+"+v])):f.setAttribute(v,a.elementAttributes[v]);for(var b=1;b<=d;b++)!function(e){var t=document.createElement("span"),n=p.cloneNode(!0);m.push(n),t.addEventListener("mouseenter",function(t){t.stopPropagation(),t.stopImmediatePropagation(),o(e)}),t.addEventListener("mousemove",function(e){e.stopPropagation(),e.stopImmediatePropagation()}),t.addEventListener("click",function(t){t.stopPropagation(),t.stopImmediatePropagation(),i(e)}),t.appendChild(n),f.appendChild(t)}(b);return u=Math.min(parseInt(u),d),o(u),f.addEventListener("mousemove",function(e){o(0)}),f.addEventListener("click",function(e){i(0)}),s.addEventListener("blur",function(e){n()}),s.addEventListener("keydown",function(e){switch(e.keyCode){case 39:r(u+1);break;case 37:r(u-1);break;case 13:i(u);break;case 27:n()}}),f},progress:function(e,t,i,n,a){function o(){var e=c*Math.round(p.offsetWidth/(s.clientWidth/100))+d;i(e),s.setAttribute("aria-valuenow",e),s.setAttribute("aria-label",m)}var r,l,s=e.getElement(),u=void 0===a.max?s.getElementsByTagName("div")[0].getAttribute("max")||100:a.max,d=void 0===a.min?s.getElementsByTagName("div")[0].getAttribute("min")||0:a.min,c=(u-d)/100,m=e.getValue()||0,f=document.createElement("div"),p=document.createElement("div");if(f.style.position="absolute",f.style.right="0",f.style.top="0",f.style.bottom="0",f.style.width="5px",f.classList.add("tabulator-progress-handle"),p.style.display="inline-block",p.style.position="relative",p.style.height="100%",p.style.backgroundColor="#488CE9",p.style.maxWidth="100%",p.style.minWidth="0%",a.elementAttributes&&"object"==_typeof(a.elementAttributes))for(var v in a.elementAttributes)"+"==v.charAt(0)?(v=v.slice(1),p.setAttribute(v,p.getAttribute(v)+a.elementAttributes["+"+v])):p.setAttribute(v,a.elementAttributes[v]);return s.style.padding="4px 4px",m=Math.min(parseFloat(m),u),m=Math.max(parseFloat(m),d),m=Math.round((m-d)/c),p.style.width=m+"%",s.setAttribute("aria-valuemin",d),s.setAttribute("aria-valuemax",u),p.appendChild(f),f.addEventListener("mousedown",function(e){r=e.screenX,l=p.offsetWidth}),f.addEventListener("mouseover",function(){f.style.cursor="ew-resize"}),s.addEventListener("mousemove",function(e){r&&(p.style.width=l+e.screenX-r+"px")}),s.addEventListener("mouseup",function(e){r&&(e.stopPropagation(),e.stopImmediatePropagation(),r=!1,l=!1,o())}),s.addEventListener("keydown",function(e){switch(e.keyCode){case 39:e.preventDefault(),p.style.width=p.clientWidth+s.clientWidth/100+"px";break;case 37:e.preventDefault(),p.style.width=p.clientWidth-s.clientWidth/100+"px";break;case 9:case 13:o();break;case 27:n()}}),s.addEventListener("blur",function(){n()}),p},tickCross:function(e,t,i,n,a){function o(e){return s?e?d?u:l.checked:l.checked&&!d?(l.checked=!1,l.indeterminate=!0,d=!0,u):(d=!1,l.checked):l.checked}var r=e.getValue(),l=document.createElement("input"),s=a.tristate,u=void 0===a.indeterminateValue?null:a.indeterminateValue,d=!1;if(l.setAttribute("type","checkbox"),l.style.marginTop="5px",l.style.boxSizing="border-box",a.elementAttributes&&"object"==_typeof(a.elementAttributes))for(var c in a.elementAttributes)"+"==c.charAt(0)?(c=c.slice(1),l.setAttribute(c,l.getAttribute(c)+a.elementAttributes["+"+c])):l.setAttribute(c,a.elementAttributes[c]);return l.value=r,!s||void 0!==r&&r!==u&&""!==r||(d=!0,l.indeterminate=!0),"firefox"!=this.table.browser&&t(function(){l.focus({preventScroll:!0})}),l.checked=!0===r||"true"===r||"True"===r||1===r,l.addEventListener("change",function(e){i(o())}),l.addEventListener("blur",function(e){i(o(!0))}),l.addEventListener("keydown",function(e){13==e.keyCode&&i(o()),27==e.keyCode&&n()}),l}},Tabulator.prototype.registerModule("edit",Edit);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/export.js b/app/static/vendors/tabulator/js.old/modules/export.js
deleted file mode 100644 (file)
index b0184de..0000000
+++ /dev/null
@@ -1,471 +0,0 @@
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-
-var Export = function Export(table) {
-       this.table = table; //hold Tabulator object
-       this.config = {};
-       this.cloneTableStyle = true;
-       this.colVisProp = "";
-};
-
-Export.prototype.genereateTable = function (config, style, range, colVisProp) {
-       this.cloneTableStyle = style;
-       this.config = config || {};
-       this.colVisProp = colVisProp;
-
-       var table = document.createElement("table");
-       table.classList.add("tabulator-print-table");
-
-       if (this.config.columnHeaders !== false) {
-               table.appendChild(this.generateHeaderElements());
-       }
-
-       table.appendChild(this.generateBodyElements(this.rowLookup(range)));
-
-       this.mapElementStyles(this.table.element, table, ["border-top", "border-left", "border-right", "border-bottom"]);
-
-       return table;
-};
-
-Export.prototype.rowLookup = function (range) {
-       var _this = this;
-
-       var rows = [];
-
-       if (typeof range == "function") {
-               range.call(this.table).forEach(function (row) {
-                       row = _this.table.rowManager.findRow(row);
-
-                       if (row) {
-                               rows.push(row);
-                       }
-               });
-       } else {
-               switch (range) {
-                       case true:
-                       case "visible":
-                               rows = this.table.rowManager.getVisibleRows(true);
-                               break;
-
-                       case "all":
-                               rows = this.table.rowManager.rows;
-                               break;
-
-                       case "selected":
-                               rows = this.table.modules.selectRow.selectedRows;
-                               break;
-
-                       case "active":
-                       default:
-                               rows = this.table.rowManager.getDisplayRows();
-               }
-       }
-
-       return Object.assign([], rows);
-};
-
-Export.prototype.generateColumnGroupHeaders = function () {
-       var _this2 = this;
-
-       var output = [];
-
-       var columns = this.config.columnGroups !== false ? this.table.columnManager.columns : this.table.columnManager.columnsByIndex;
-
-       columns.forEach(function (column) {
-               var colData = _this2.processColumnGroup(column);
-
-               if (colData) {
-                       output.push(colData);
-               }
-       });
-
-       return output;
-};
-
-Export.prototype.processColumnGroup = function (column) {
-       var _this3 = this;
-
-       var subGroups = column.columns,
-           maxDepth = 0;
-
-       var groupData = {
-               title: column.definition.title,
-               column: column,
-               depth: 1
-       };
-
-       if (subGroups.length) {
-               groupData.subGroups = [];
-               groupData.width = 0;
-
-               subGroups.forEach(function (subGroup) {
-                       var subGroupData = _this3.processColumnGroup(subGroup);
-
-                       if (subGroupData) {
-                               groupData.width += subGroupData.width;
-                               groupData.subGroups.push(subGroupData);
-
-                               if (subGroupData.depth > maxDepth) {
-                                       maxDepth = subGroupData.depth;
-                               }
-                       }
-               });
-
-               groupData.depth += maxDepth;
-
-               if (!groupData.width) {
-                       return false;
-               }
-       } else {
-               if (this.columnVisCheck(column)) {
-                       groupData.width = 1;
-               } else {
-                       return false;
-               }
-       }
-
-       return groupData;
-};
-
-Export.prototype.groupHeadersToRows = function (columns) {
-
-       var headers = [],
-           headerDepth = 0;
-
-       function parseColumnGroup(column, level) {
-
-               var depth = headerDepth - level;
-
-               if (typeof headers[level] === "undefined") {
-                       headers[level] = [];
-               }
-
-               column.height = column.subGroups ? 1 : depth - column.depth + 1;
-
-               headers[level].push(column);
-
-               if (column.subGroups) {
-                       column.subGroups.forEach(function (subGroup) {
-                               parseColumnGroup(subGroup, level + 1);
-                       });
-               }
-       }
-
-       //calculate maximum header debth
-       columns.forEach(function (column) {
-               if (column.depth > headerDepth) {
-                       headerDepth = column.depth;
-               }
-       });
-
-       columns.forEach(function (column) {
-               parseColumnGroup(column, 0);
-       });
-
-       return headers;
-};
-
-Export.prototype.generateHeaderElements = function () {
-       var _this4 = this;
-
-       var headerEl = document.createElement("thead");
-
-       var rows = this.groupHeadersToRows(this.generateColumnGroupHeaders());
-
-       rows.forEach(function (row) {
-               var rowEl = document.createElement("tr");
-
-               _this4.mapElementStyles(_this4.table.columnManager.getHeadersElement(), headerEl, ["border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]);
-
-               row.forEach(function (column) {
-                       var cellEl = document.createElement("th");
-                       var classNames = column.column.definition.cssClass ? column.column.definition.cssClass.split(" ") : [];
-
-                       cellEl.colSpan = column.width;
-                       cellEl.rowSpan = column.height;
-
-                       cellEl.innerHTML = column.column.definition.title;
-
-                       if (_this4.cloneTableStyle) {
-                               cellEl.style.boxSizing = "border-box";
-                       }
-
-                       classNames.forEach(function (className) {
-                               cellEl.classList.add(className);
-                       });
-
-                       _this4.mapElementStyles(column.column.getElement(), cellEl, ["text-align", "border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]);
-                       _this4.mapElementStyles(column.column.contentElement, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom"]);
-
-                       if (column.column.visible) {
-                               _this4.mapElementStyles(column.column.getElement(), cellEl, ["width"]);
-                       } else {
-                               if (column.column.definition.width) {
-                                       cellEl.style.width = column.column.definition.width + "px";
-                               }
-                       }
-
-                       if (column.column.parent) {
-                               _this4.mapElementStyles(column.column.parent.groupElement, cellEl, ["border-top"]);
-                       }
-
-                       rowEl.appendChild(cellEl);
-               });
-
-               headerEl.appendChild(rowEl);
-       });
-
-       return headerEl;
-};
-
-Export.prototype.generateBodyElements = function (rows) {};
-
-Export.prototype.generateBodyElements = function (rows) {
-       var _this5 = this;
-
-       var oddRow, evenRow, calcRow, firstRow, firstCell, firstGroup, lastCell, styleCells, styleRow, treeElementField, rowFormatter;
-
-       //assign row formatter
-       rowFormatter = this.table.options["rowFormatter" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))];
-       rowFormatter = rowFormatter !== null ? rowFormatter : this.table.options.rowFormatter;
-
-       //lookup row styles
-       if (this.cloneTableStyle && window.getComputedStyle) {
-               oddRow = this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)");
-               evenRow = this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)");
-               calcRow = this.table.element.querySelector(".tabulator-row.tabulator-calcs");
-               firstRow = this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)");
-               firstGroup = this.table.element.getElementsByClassName("tabulator-group")[0];
-
-               if (firstRow) {
-                       styleCells = firstRow.getElementsByClassName("tabulator-cell");
-                       firstCell = styleCells[0];
-                       lastCell = styleCells[styleCells.length - 1];
-               }
-       }
-
-       var bodyEl = document.createElement("tbody");
-
-       var columns = [];
-
-       if (this.config.columnCalcs !== false && this.table.modExists("columnCalcs")) {
-               if (this.table.modules.columnCalcs.topInitialized) {
-                       rows.unshift(this.table.modules.columnCalcs.topRow);
-               }
-
-               if (this.table.modules.columnCalcs.botInitialized) {
-                       rows.push(this.table.modules.columnCalcs.botRow);
-               }
-       }
-
-       this.table.columnManager.columnsByIndex.forEach(function (column) {
-               if (_this5.columnVisCheck(column)) {
-                       columns.push(column);
-               }
-       });
-
-       if (this.table.options.dataTree && this.config.dataTree !== false && this.table.modExists("columnCalcs")) {
-               treeElementField = this.table.modules.dataTree.elementField;
-       }
-
-       rows = rows.filter(function (row) {
-               switch (row.type) {
-                       case "group":
-                               return _this5.config.rowGroups !== false;
-                               break;
-
-                       case "calc":
-                               return _this5.config.columnCalcs !== false;
-                               break;
-               }
-
-               return true;
-       });
-
-       if (rows.length > 1000) {
-               console.warn("It may take a long time to render an HTML table with more than 1000 rows");
-       }
-
-       rows.forEach(function (row, i) {
-               var rowData = row.getData(_this5.colVisProp);
-
-               var rowEl = document.createElement("tr");
-               rowEl.classList.add("tabulator-print-table-row");
-
-               switch (row.type) {
-                       case "group":
-                               var cellEl = document.createElement("td");
-                               cellEl.colSpan = columns.length;
-                               cellEl.innerHTML = row.key;
-
-                               rowEl.classList.add("tabulator-print-table-group");
-
-                               _this5.mapElementStyles(firstGroup, rowEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "background-color"]);
-                               _this5.mapElementStyles(firstGroup, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom"]);
-                               rowEl.appendChild(cellEl);
-                               break;
-
-                       case "calc":
-                               rowEl.classList.add("tabulator-print-table-calcs");
-
-                       case "row":
-
-                               if (_this5.table.options.dataTree && _this5.config.dataTree === false && row.modules.dataTree.parent) {
-                                       return;
-                               }
-
-                               columns.forEach(function (column, i) {
-                                       var cellEl = document.createElement("td");
-
-                                       var value = column.getFieldValue(rowData);
-
-                                       var cellWrapper = {
-                                               modules: {},
-                                               getValue: function getValue() {
-                                                       return value;
-                                               },
-                                               getField: function getField() {
-                                                       return column.definition.field;
-                                               },
-                                               getElement: function getElement() {
-                                                       return cellEl;
-                                               },
-                                               getColumn: function getColumn() {
-                                                       return column.getComponent();
-                                               },
-                                               getData: function getData() {
-                                                       return rowData;
-                                               },
-                                               getRow: function getRow() {
-                                                       return row.getComponent();
-                                               },
-                                               getComponent: function getComponent() {
-                                                       return cellWrapper;
-                                               },
-                                               column: column
-                                       };
-
-                                       var classNames = column.definition.cssClass ? column.definition.cssClass.split(" ") : [];
-
-                                       classNames.forEach(function (className) {
-                                               cellEl.classList.add(className);
-                                       });
-
-                                       if (_this5.table.modExists("format") && _this5.config.formatCells !== false) {
-                                               value = _this5.table.modules.format.formatExportValue(cellWrapper, _this5.colVisProp);
-                                       } else {
-                                               switch (typeof value === "undefined" ? "undefined" : _typeof(value)) {
-                                                       case "object":
-                                                               value = JSON.stringify(value);
-                                                               break;
-
-                                                       case "undefined":
-                                                       case "null":
-                                                               value = "";
-                                                               break;
-
-                                                       default:
-                                                               value = value;
-                                               }
-                                       }
-
-                                       if (value instanceof Node) {
-                                               cellEl.appendChild(value);
-                                       } else {
-                                               cellEl.innerHTML = value;
-                                       }
-
-                                       if (firstCell) {
-                                               _this5.mapElementStyles(firstCell, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom", "border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size"]);
-
-                                               if (column.definition.align) {
-                                                       cellEl.style.textAlign = column.definition.align;
-                                               }
-                                       }
-
-                                       if (_this5.table.options.dataTree && _this5.config.dataTree !== false) {
-                                               if (treeElementField && treeElementField == column.field || !treeElementField && i == 0) {
-                                                       if (row.modules.dataTree.controlEl) {
-                                                               cellEl.insertBefore(row.modules.dataTree.controlEl.cloneNode(true), cellEl.firstChild);
-                                                       }
-                                                       if (row.modules.dataTree.branchEl) {
-                                                               cellEl.insertBefore(row.modules.dataTree.branchEl.cloneNode(true), cellEl.firstChild);
-                                                       }
-                                               }
-                                       }
-
-                                       rowEl.appendChild(cellEl);
-
-                                       if (cellWrapper.modules.format && cellWrapper.modules.format.renderedCallback) {
-                                               cellWrapper.modules.format.renderedCallback();
-                                       }
-                               });
-
-                               styleRow = row.type == "calc" ? calcRow : i % 2 && evenRow ? evenRow : oddRow;
-
-                               _this5.mapElementStyles(styleRow, rowEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "background-color"]);
-
-                               if (rowFormatter && _this5.config.formatCells !== false) {
-                                       var rowComponent = row.getComponent();
-
-                                       rowComponent.getElement = function () {
-                                               return rowEl;
-                                       };
-
-                                       rowFormatter(rowComponent);
-                               }
-
-                               break;
-               }
-
-               bodyEl.appendChild(rowEl);
-       });
-
-       return bodyEl;
-};
-
-Export.prototype.columnVisCheck = function (column) {
-       return column.definition[this.colVisProp] !== false && (column.visible || !column.visible && column.definition[this.colVisProp]);
-};
-
-Export.prototype.getHtml = function (visible, style, config, colVisProp) {
-       var holder = document.createElement("div");
-
-       holder.appendChild(this.genereateTable(config || this.table.options.htmlOutputConfig, style, visible, colVisProp || "htmlOutput"));
-
-       return holder.innerHTML;
-};
-
-Export.prototype.mapElementStyles = function (from, to, props) {
-       if (this.cloneTableStyle && from && to) {
-
-               var lookup = {
-                       "background-color": "backgroundColor",
-                       "color": "fontColor",
-                       "width": "width",
-                       "font-weight": "fontWeight",
-                       "font-family": "fontFamily",
-                       "font-size": "fontSize",
-                       "text-align": "textAlign",
-                       "border-top": "borderTop",
-                       "border-left": "borderLeft",
-                       "border-right": "borderRight",
-                       "border-bottom": "borderBottom",
-                       "padding-top": "paddingTop",
-                       "padding-left": "paddingLeft",
-                       "padding-right": "paddingRight",
-                       "padding-bottom": "paddingBottom"
-               };
-
-               if (window.getComputedStyle) {
-                       var fromStyle = window.getComputedStyle(from);
-
-                       props.forEach(function (prop) {
-                               to.style[lookup[prop]] = fromStyle.getPropertyValue(prop);
-                       });
-               }
-       }
-};
-
-Tabulator.prototype.registerModule("export", Export);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/export.min.js b/app/static/vendors/tabulator/js.old/modules/export.min.js
deleted file mode 100644 (file)
index 246d149..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Export=function(t){this.table=t,this.config={},this.cloneTableStyle=!0,this.colVisProp=""};Export.prototype.genereateTable=function(t,e,o,n){this.cloneTableStyle=e,this.config=t||{},this.colVisProp=n;var r=document.createElement("table");return r.classList.add("tabulator-print-table"),!1!==this.config.columnHeaders&&r.appendChild(this.generateHeaderElements()),r.appendChild(this.generateBodyElements(this.rowLookup(o))),this.mapElementStyles(this.table.element,r,["border-top","border-left","border-right","border-bottom"]),r},Export.prototype.rowLookup=function(t){var e=this,o=[];if("function"==typeof t)t.call(this.table).forEach(function(t){(t=e.table.rowManager.findRow(t))&&o.push(t)});else switch(t){case!0:case"visible":o=this.table.rowManager.getVisibleRows(!0);break;case"all":o=this.table.rowManager.rows;break;case"selected":o=this.table.modules.selectRow.selectedRows;break;case"active":default:o=this.table.rowManager.getDisplayRows()}return Object.assign([],o)},Export.prototype.generateColumnGroupHeaders=function(){var t=this,e=[];return(!1!==this.config.columnGroups?this.table.columnManager.columns:this.table.columnManager.columnsByIndex).forEach(function(o){var n=t.processColumnGroup(o);n&&e.push(n)}),e},Export.prototype.processColumnGroup=function(t){var e=this,o=t.columns,n=0,r={title:t.definition.title,column:t,depth:1};if(o.length){if(r.subGroups=[],r.width=0,o.forEach(function(t){var o=e.processColumnGroup(t);o&&(r.width+=o.width,r.subGroups.push(o),o.depth>n&&(n=o.depth))}),r.depth+=n,!r.width)return!1}else{if(!this.columnVisCheck(t))return!1;r.width=1}return r},Export.prototype.groupHeadersToRows=function(t){function e(t,r){var l=n-r;void 0===o[r]&&(o[r]=[]),t.height=t.subGroups?1:l-t.depth+1,o[r].push(t),t.subGroups&&t.subGroups.forEach(function(t){e(t,r+1)})}var o=[],n=0;return t.forEach(function(t){t.depth>n&&(n=t.depth)}),t.forEach(function(t){e(t,0)}),o},Export.prototype.generateHeaderElements=function(){var t=this,e=document.createElement("thead");return this.groupHeadersToRows(this.generateColumnGroupHeaders()).forEach(function(o){var n=document.createElement("tr");t.mapElementStyles(t.table.columnManager.getHeadersElement(),e,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),o.forEach(function(e){var o=document.createElement("th"),r=e.column.definition.cssClass?e.column.definition.cssClass.split(" "):[];o.colSpan=e.width,o.rowSpan=e.height,o.innerHTML=e.column.definition.title,t.cloneTableStyle&&(o.style.boxSizing="border-box"),r.forEach(function(t){o.classList.add(t)}),t.mapElementStyles(e.column.getElement(),o,["text-align","border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),t.mapElementStyles(e.column.contentElement,o,["padding-top","padding-left","padding-right","padding-bottom"]),e.column.visible?t.mapElementStyles(e.column.getElement(),o,["width"]):e.column.definition.width&&(o.style.width=e.column.definition.width+"px"),e.column.parent&&t.mapElementStyles(e.column.parent.groupElement,o,["border-top"]),n.appendChild(o)}),e.appendChild(n)}),e},Export.prototype.generateBodyElements=function(t){},Export.prototype.generateBodyElements=function(t){var e,o,n,r,l,a,i,s,d,c,u=this;c=this.table.options["rowFormatter"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))],c=null!==c?c:this.table.options.rowFormatter,this.cloneTableStyle&&window.getComputedStyle&&(e=this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)"),o=this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)"),n=this.table.element.querySelector(".tabulator-row.tabulator-calcs"),r=this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)"),a=this.table.element.getElementsByClassName("tabulator-group")[0],r&&(i=r.getElementsByClassName("tabulator-cell"),l=i[0],i[i.length-1]));var p=document.createElement("tbody"),m=[];return!1!==this.config.columnCalcs&&this.table.modExists("columnCalcs")&&(this.table.modules.columnCalcs.topInitialized&&t.unshift(this.table.modules.columnCalcs.topRow),this.table.modules.columnCalcs.botInitialized&&t.push(this.table.modules.columnCalcs.botRow)),this.table.columnManager.columnsByIndex.forEach(function(t){u.columnVisCheck(t)&&m.push(t)}),this.table.options.dataTree&&!1!==this.config.dataTree&&this.table.modExists("columnCalcs")&&(d=this.table.modules.dataTree.elementField),t=t.filter(function(t){switch(t.type){case"group":return!1!==u.config.rowGroups;case"calc":return!1!==u.config.columnCalcs}return!0}),t.length>1e3&&console.warn("It may take a long time to render an HTML table with more than 1000 rows"),t.forEach(function(t,r){var i=t.getData(u.colVisProp),f=document.createElement("tr");switch(f.classList.add("tabulator-print-table-row"),t.type){case"group":var h=document.createElement("td");h.colSpan=m.length,h.innerHTML=t.key,f.classList.add("tabulator-print-table-group"),u.mapElementStyles(a,f,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),u.mapElementStyles(a,h,["padding-top","padding-left","padding-right","padding-bottom"]),f.appendChild(h);break;case"calc":f.classList.add("tabulator-print-table-calcs");case"row":if(u.table.options.dataTree&&!1===u.config.dataTree&&t.modules.dataTree.parent)return;if(m.forEach(function(e,o){var n=document.createElement("td"),r=e.getFieldValue(i),a={modules:{},getValue:function(){return r},getField:function(){return e.definition.field},getElement:function(){return n},getColumn:function(){return e.getComponent()},getData:function(){return i},getRow:function(){return t.getComponent()},getComponent:function(){return a},column:e};if((e.definition.cssClass?e.definition.cssClass.split(" "):[]).forEach(function(t){n.classList.add(t)}),u.table.modExists("format")&&!1!==u.config.formatCells)r=u.table.modules.format.formatExportValue(a,u.colVisProp);else switch(void 0===r?"undefined":_typeof(r)){case"object":r=JSON.stringify(r);break;case"undefined":case"null":r="";break;default:r=r}r instanceof Node?n.appendChild(r):n.innerHTML=r,l&&(u.mapElementStyles(l,n,["padding-top","padding-left","padding-right","padding-bottom","border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size"]),e.definition.align&&(n.style.textAlign=e.definition.align)),u.table.options.dataTree&&!1!==u.config.dataTree&&(d&&d==e.field||!d&&0==o)&&(t.modules.dataTree.controlEl&&n.insertBefore(t.modules.dataTree.controlEl.cloneNode(!0),n.firstChild),t.modules.dataTree.branchEl&&n.insertBefore(t.modules.dataTree.branchEl.cloneNode(!0),n.firstChild)),f.appendChild(n),a.modules.format&&a.modules.format.renderedCallback&&a.modules.format.renderedCallback()}),s="calc"==t.type?n:r%2&&o?o:e,u.mapElementStyles(s,f,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),c&&!1!==u.config.formatCells){var b=t.getComponent();b.getElement=function(){return f},c(b)}}p.appendChild(f)}),p},Export.prototype.columnVisCheck=function(t){return!1!==t.definition[this.colVisProp]&&(t.visible||!t.visible&&t.definition[this.colVisProp])},Export.prototype.getHtml=function(t,e,o,n){var r=document.createElement("div");return r.appendChild(this.genereateTable(o||this.table.options.htmlOutputConfig,e,t,n||"htmlOutput")),r.innerHTML},Export.prototype.mapElementStyles=function(t,e,o){if(this.cloneTableStyle&&t&&e){var n={"background-color":"backgroundColor",color:"fontColor",width:"width","font-weight":"fontWeight","font-family":"fontFamily","font-size":"fontSize","text-align":"textAlign","border-top":"borderTop","border-left":"borderLeft","border-right":"borderRight","border-bottom":"borderBottom","padding-top":"paddingTop","padding-left":"paddingLeft","padding-right":"paddingRight","padding-bottom":"paddingBottom"};if(window.getComputedStyle){var r=window.getComputedStyle(t);o.forEach(function(t){e.style[n[t]]=r.getPropertyValue(t)})}}},Tabulator.prototype.registerModule("export",Export);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/filter.js b/app/static/vendors/tabulator/js.old/modules/filter.js
deleted file mode 100644 (file)
index acb5ba5..0000000
+++ /dev/null
@@ -1,766 +0,0 @@
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-
-var Filter = function Filter(table) {
-
-       this.table = table; //hold Tabulator object
-
-       this.filterList = []; //hold filter list
-       this.headerFilters = {}; //hold column filters
-       this.headerFilterColumns = []; //hold columns that use header filters
-
-       this.prevHeaderFilterChangeCheck = "";
-       this.prevHeaderFilterChangeCheck = "{}";
-
-       this.changed = false; //has filtering changed since last render
-};
-
-//initialize column header filter
-Filter.prototype.initializeColumn = function (column, value) {
-       var self = this,
-           field = column.getField(),
-           params;
-
-       //handle successfull value change
-       function success(value) {
-               var filterType = column.modules.filter.tagType == "input" && column.modules.filter.attrType == "text" || column.modules.filter.tagType == "textarea" ? "partial" : "match",
-                   type = "",
-                   filterChangeCheck = "",
-                   filterFunc;
-
-               if (typeof column.modules.filter.prevSuccess === "undefined" || column.modules.filter.prevSuccess !== value) {
-
-                       column.modules.filter.prevSuccess = value;
-
-                       if (!column.modules.filter.emptyFunc(value)) {
-                               column.modules.filter.value = value;
-
-                               switch (_typeof(column.definition.headerFilterFunc)) {
-                                       case "string":
-                                               if (self.filters[column.definition.headerFilterFunc]) {
-                                                       type = column.definition.headerFilterFunc;
-                                                       filterFunc = function filterFunc(data) {
-                                                               var params = column.definition.headerFilterFuncParams || {};
-                                                               var fieldVal = column.getFieldValue(data);
-
-                                                               params = typeof params === "function" ? params(value, fieldVal, data) : params;
-
-                                                               return self.filters[column.definition.headerFilterFunc](value, fieldVal, data, params);
-                                                       };
-                                               } else {
-                                                       console.warn("Header Filter Error - Matching filter function not found: ", column.definition.headerFilterFunc);
-                                               }
-                                               break;
-
-                                       case "function":
-                                               filterFunc = function filterFunc(data) {
-                                                       var params = column.definition.headerFilterFuncParams || {};
-                                                       var fieldVal = column.getFieldValue(data);
-
-                                                       params = typeof params === "function" ? params(value, fieldVal, data) : params;
-
-                                                       return column.definition.headerFilterFunc(value, fieldVal, data, params);
-                                               };
-
-                                               type = filterFunc;
-                                               break;
-                               }
-
-                               if (!filterFunc) {
-                                       switch (filterType) {
-                                               case "partial":
-                                                       filterFunc = function filterFunc(data) {
-                                                               var colVal = column.getFieldValue(data);
-
-                                                               if (typeof colVal !== 'undefined' && colVal !== null) {
-                                                                       return String(colVal).toLowerCase().indexOf(String(value).toLowerCase()) > -1;
-                                                               } else {
-                                                                       return false;
-                                                               }
-                                                       };
-                                                       type = "like";
-                                                       break;
-
-                                               default:
-                                                       filterFunc = function filterFunc(data) {
-                                                               return column.getFieldValue(data) == value;
-                                                       };
-                                                       type = "=";
-                                       }
-                               }
-
-                               self.headerFilters[field] = { value: value, func: filterFunc, type: type };
-                       } else {
-                               delete self.headerFilters[field];
-                       }
-
-                       filterChangeCheck = JSON.stringify(self.headerFilters);
-
-                       if (self.prevHeaderFilterChangeCheck !== filterChangeCheck) {
-                               self.prevHeaderFilterChangeCheck = filterChangeCheck;
-
-                               self.changed = true;
-                               self.table.rowManager.filterRefresh();
-                       }
-               }
-
-               return true;
-       }
-
-       column.modules.filter = {
-               success: success,
-               attrType: false,
-               tagType: false,
-               emptyFunc: false
-       };
-
-       this.generateHeaderFilterElement(column);
-};
-
-Filter.prototype.generateHeaderFilterElement = function (column, initialValue, reinitialize) {
-       var _this = this;
-
-       var self = this,
-           success = column.modules.filter.success,
-           field = column.getField(),
-           filterElement,
-           editor,
-           editorElement,
-           cellWrapper,
-           typingTimer,
-           searchTrigger,
-           params;
-
-       //handle aborted edit
-       function cancel() {}
-
-       if (column.modules.filter.headerElement && column.modules.filter.headerElement.parentNode) {
-               column.contentElement.removeChild(column.modules.filter.headerElement.parentNode);
-       }
-
-       if (field) {
-
-               //set empty value function
-               column.modules.filter.emptyFunc = column.definition.headerFilterEmptyCheck || function (value) {
-                       return !value && value !== "0";
-               };
-
-               filterElement = document.createElement("div");
-               filterElement.classList.add("tabulator-header-filter");
-
-               //set column editor
-               switch (_typeof(column.definition.headerFilter)) {
-                       case "string":
-                               if (self.table.modules.edit.editors[column.definition.headerFilter]) {
-                                       editor = self.table.modules.edit.editors[column.definition.headerFilter];
-
-                                       if ((column.definition.headerFilter === "tick" || column.definition.headerFilter === "tickCross") && !column.definition.headerFilterEmptyCheck) {
-                                               column.modules.filter.emptyFunc = function (value) {
-                                                       return value !== true && value !== false;
-                                               };
-                                       }
-                               } else {
-                                       console.warn("Filter Error - Cannot build header filter, No such editor found: ", column.definition.editor);
-                               }
-                               break;
-
-                       case "function":
-                               editor = column.definition.headerFilter;
-                               break;
-
-                       case "boolean":
-                               if (column.modules.edit && column.modules.edit.editor) {
-                                       editor = column.modules.edit.editor;
-                               } else {
-                                       if (column.definition.formatter && self.table.modules.edit.editors[column.definition.formatter]) {
-                                               editor = self.table.modules.edit.editors[column.definition.formatter];
-
-                                               if ((column.definition.formatter === "tick" || column.definition.formatter === "tickCross") && !column.definition.headerFilterEmptyCheck) {
-                                                       column.modules.filter.emptyFunc = function (value) {
-                                                               return value !== true && value !== false;
-                                                       };
-                                               }
-                                       } else {
-                                               editor = self.table.modules.edit.editors["input"];
-                                       }
-                               }
-                               break;
-               }
-
-               if (editor) {
-
-                       cellWrapper = {
-                               getValue: function getValue() {
-                                       return typeof initialValue !== "undefined" ? initialValue : "";
-                               },
-                               getField: function getField() {
-                                       return column.definition.field;
-                               },
-                               getElement: function getElement() {
-                                       return filterElement;
-                               },
-                               getColumn: function getColumn() {
-                                       return column.getComponent();
-                               },
-                               getRow: function getRow() {
-                                       return {
-                                               normalizeHeight: function normalizeHeight() {}
-                                       };
-                               }
-                       };
-
-                       params = column.definition.headerFilterParams || {};
-
-                       params = typeof params === "function" ? params.call(self.table) : params;
-
-                       editorElement = editor.call(this.table.modules.edit, cellWrapper, function () {}, success, cancel, params);
-
-                       if (!editorElement) {
-                               console.warn("Filter Error - Cannot add filter to " + field + " column, editor returned a value of false");
-                               return;
-                       }
-
-                       if (!(editorElement instanceof Node)) {
-                               console.warn("Filter Error - Cannot add filter to " + field + " column, editor should return an instance of Node, the editor returned:", editorElement);
-                               return;
-                       }
-
-                       //set Placeholder Text
-                       if (field) {
-                               self.table.modules.localize.bind("headerFilters|columns|" + column.definition.field, function (value) {
-                                       editorElement.setAttribute("placeholder", typeof value !== "undefined" && value ? value : self.table.modules.localize.getText("headerFilters|default"));
-                               });
-                       } else {
-                               self.table.modules.localize.bind("headerFilters|default", function (value) {
-                                       editorElement.setAttribute("placeholder", typeof self.column.definition.headerFilterPlaceholder !== "undefined" && self.column.definition.headerFilterPlaceholder ? self.column.definition.headerFilterPlaceholder : value);
-                               });
-                       }
-
-                       //focus on element on click
-                       editorElement.addEventListener("click", function (e) {
-                               e.stopPropagation();
-                               editorElement.focus();
-                       });
-
-                       editorElement.addEventListener("focus", function (e) {
-                               var left = _this.table.columnManager.element.scrollLeft;
-
-                               if (left !== _this.table.rowManager.element.scrollLeft) {
-                                       _this.table.rowManager.scrollHorizontal(left);
-                                       _this.table.columnManager.scrollHorizontal(left);
-                               }
-                       });
-
-                       //live update filters as user types
-                       typingTimer = false;
-
-                       searchTrigger = function searchTrigger(e) {
-                               if (typingTimer) {
-                                       clearTimeout(typingTimer);
-                               }
-
-                               typingTimer = setTimeout(function () {
-                                       success(editorElement.value);
-                               }, self.table.options.headerFilterLiveFilterDelay);
-                       };
-
-                       column.modules.filter.headerElement = editorElement;
-                       column.modules.filter.attrType = editorElement.hasAttribute("type") ? editorElement.getAttribute("type").toLowerCase() : "";
-                       column.modules.filter.tagType = editorElement.tagName.toLowerCase();
-
-                       if (column.definition.headerFilterLiveFilter !== false) {
-
-                               if (!(column.definition.headerFilter === 'autocomplete' || column.definition.headerFilter === 'tickCross' || (column.definition.editor === 'autocomplete' || column.definition.editor === 'tickCross') && column.definition.headerFilter === true)) {
-                                       editorElement.addEventListener("keyup", searchTrigger);
-                                       editorElement.addEventListener("search", searchTrigger);
-
-                                       //update number filtered columns on change
-                                       if (column.modules.filter.attrType == "number") {
-                                               editorElement.addEventListener("change", function (e) {
-                                                       success(editorElement.value);
-                                               });
-                                       }
-
-                                       //change text inputs to search inputs to allow for clearing of field
-                                       if (column.modules.filter.attrType == "text" && this.table.browser !== "ie") {
-                                               editorElement.setAttribute("type", "search");
-                                               // editorElement.off("change blur"); //prevent blur from triggering filter and preventing selection click
-                                       }
-                               }
-
-                               //prevent input and select elements from propegating click to column sorters etc
-                               if (column.modules.filter.tagType == "input" || column.modules.filter.tagType == "select" || column.modules.filter.tagType == "textarea") {
-                                       editorElement.addEventListener("mousedown", function (e) {
-                                               e.stopPropagation();
-                                       });
-                               }
-                       }
-
-                       filterElement.appendChild(editorElement);
-
-                       column.contentElement.appendChild(filterElement);
-
-                       if (!reinitialize) {
-                               self.headerFilterColumns.push(column);
-                       }
-               }
-       } else {
-               console.warn("Filter Error - Cannot add header filter, column has no field set:", column.definition.title);
-       }
-};
-
-//hide all header filter elements (used to ensure correct column widths in "fitData" layout mode)
-Filter.prototype.hideHeaderFilterElements = function () {
-       this.headerFilterColumns.forEach(function (column) {
-               if (column.modules.filter && column.modules.filter.headerElement) {
-                       column.modules.filter.headerElement.style.display = 'none';
-               }
-       });
-};
-
-//show all header filter elements (used to ensure correct column widths in "fitData" layout mode)
-Filter.prototype.showHeaderFilterElements = function () {
-       this.headerFilterColumns.forEach(function (column) {
-               if (column.modules.filter && column.modules.filter.headerElement) {
-                       column.modules.filter.headerElement.style.display = '';
-               }
-       });
-};
-
-//programatically set focus of header filter
-Filter.prototype.setHeaderFilterFocus = function (column) {
-       if (column.modules.filter && column.modules.filter.headerElement) {
-               column.modules.filter.headerElement.focus();
-       } else {
-               console.warn("Column Filter Focus Error - No header filter set on column:", column.getField());
-       }
-};
-
-//programmatically get value of header filter
-Filter.prototype.getHeaderFilterValue = function (column) {
-       if (column.modules.filter && column.modules.filter.headerElement) {
-               return column.modules.filter.headerElement.value;
-       } else {
-               console.warn("Column Filter Error - No header filter set on column:", column.getField());
-       }
-};
-
-//programatically set value of header filter
-Filter.prototype.setHeaderFilterValue = function (column, value) {
-       if (column) {
-               if (column.modules.filter && column.modules.filter.headerElement) {
-                       this.generateHeaderFilterElement(column, value, true);
-                       column.modules.filter.success(value);
-               } else {
-                       console.warn("Column Filter Error - No header filter set on column:", column.getField());
-               }
-       }
-};
-
-Filter.prototype.reloadHeaderFilter = function (column) {
-       if (column) {
-               if (column.modules.filter && column.modules.filter.headerElement) {
-                       this.generateHeaderFilterElement(column, column.modules.filter.value, true);
-               } else {
-                       console.warn("Column Filter Error - No header filter set on column:", column.getField());
-               }
-       }
-};
-
-//check if the filters has changed since last use
-Filter.prototype.hasChanged = function () {
-       var changed = this.changed;
-       this.changed = false;
-       return changed;
-};
-
-//set standard filters
-Filter.prototype.setFilter = function (field, type, value) {
-       var self = this;
-
-       self.filterList = [];
-
-       if (!Array.isArray(field)) {
-               field = [{ field: field, type: type, value: value }];
-       }
-
-       self.addFilter(field);
-};
-
-//add filter to array
-Filter.prototype.addFilter = function (field, type, value) {
-       var self = this;
-
-       if (!Array.isArray(field)) {
-               field = [{ field: field, type: type, value: value }];
-       }
-
-       field.forEach(function (filter) {
-
-               filter = self.findFilter(filter);
-
-               if (filter) {
-                       self.filterList.push(filter);
-
-                       self.changed = true;
-               }
-       });
-
-       if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.filter) {
-               this.table.modules.persistence.save("filter");
-       }
-};
-
-Filter.prototype.findFilter = function (filter) {
-       var self = this,
-           column;
-
-       if (Array.isArray(filter)) {
-               return this.findSubFilters(filter);
-       }
-
-       var filterFunc = false;
-
-       if (typeof filter.field == "function") {
-               filterFunc = function filterFunc(data) {
-                       return filter.field(data, filter.type || {}); // pass params to custom filter function
-               };
-       } else {
-
-               if (self.filters[filter.type]) {
-
-                       column = self.table.columnManager.getColumnByField(filter.field);
-
-                       if (column) {
-                               filterFunc = function filterFunc(data) {
-                                       return self.filters[filter.type](filter.value, column.getFieldValue(data));
-                               };
-                       } else {
-                               filterFunc = function filterFunc(data) {
-                                       return self.filters[filter.type](filter.value, data[filter.field]);
-                               };
-                       }
-               } else {
-                       console.warn("Filter Error - No such filter type found, ignoring: ", filter.type);
-               }
-       }
-
-       filter.func = filterFunc;
-
-       return filter.func ? filter : false;
-};
-
-Filter.prototype.findSubFilters = function (filters) {
-       var self = this,
-           output = [];
-
-       filters.forEach(function (filter) {
-               filter = self.findFilter(filter);
-
-               if (filter) {
-                       output.push(filter);
-               }
-       });
-
-       return output.length ? output : false;
-};
-
-//get all filters
-Filter.prototype.getFilters = function (all, ajax) {
-       var output = [];
-
-       if (all) {
-               output = this.getHeaderFilters();
-       }
-
-       if (ajax) {
-               output.forEach(function (item) {
-                       if (typeof item.type == "function") {
-                               item.type = "function";
-                       }
-               });
-       }
-
-       output = output.concat(this.filtersToArray(this.filterList, ajax));
-
-       return output;
-};
-
-//filter to Object
-Filter.prototype.filtersToArray = function (filterList, ajax) {
-       var _this2 = this;
-
-       var output = [];
-
-       filterList.forEach(function (filter) {
-               var item;
-
-               if (Array.isArray(filter)) {
-                       output.push(_this2.filtersToArray(filter, ajax));
-               } else {
-                       item = { field: filter.field, type: filter.type, value: filter.value };
-
-                       if (ajax) {
-                               if (typeof item.type == "function") {
-                                       item.type = "function";
-                               }
-                       }
-
-                       output.push(item);
-               }
-       });
-
-       return output;
-};
-
-//get all filters
-Filter.prototype.getHeaderFilters = function () {
-       var self = this,
-           output = [];
-
-       for (var key in this.headerFilters) {
-               output.push({ field: key, type: this.headerFilters[key].type, value: this.headerFilters[key].value });
-       }
-
-       return output;
-};
-
-//remove filter from array
-Filter.prototype.removeFilter = function (field, type, value) {
-       var self = this;
-
-       if (!Array.isArray(field)) {
-               field = [{ field: field, type: type, value: value }];
-       }
-
-       field.forEach(function (filter) {
-               var index = -1;
-
-               if (_typeof(filter.field) == "object") {
-                       index = self.filterList.findIndex(function (element) {
-                               return filter === element;
-                       });
-               } else {
-                       index = self.filterList.findIndex(function (element) {
-                               return filter.field === element.field && filter.type === element.type && filter.value === element.value;
-                       });
-               }
-
-               if (index > -1) {
-                       self.filterList.splice(index, 1);
-                       self.changed = true;
-               } else {
-                       console.warn("Filter Error - No matching filter type found, ignoring: ", filter.type);
-               }
-       });
-
-       if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.filter) {
-               this.table.modules.persistence.save("filter");
-       }
-};
-
-//clear filters
-Filter.prototype.clearFilter = function (all) {
-       this.filterList = [];
-
-       if (all) {
-               this.clearHeaderFilter();
-       }
-
-       this.changed = true;
-
-       if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.filter) {
-               this.table.modules.persistence.save("filter");
-       }
-};
-
-//clear header filters
-Filter.prototype.clearHeaderFilter = function () {
-       var self = this;
-
-       this.headerFilters = {};
-       self.prevHeaderFilterChangeCheck = "{}";
-
-       this.headerFilterColumns.forEach(function (column) {
-               column.modules.filter.value = null;
-               column.modules.filter.prevSuccess = undefined;
-               self.reloadHeaderFilter(column);
-       });
-
-       this.changed = true;
-};
-
-//search data and return matching rows
-Filter.prototype.search = function (searchType, field, type, value) {
-       var self = this,
-           activeRows = [],
-           filterList = [];
-
-       if (!Array.isArray(field)) {
-               field = [{ field: field, type: type, value: value }];
-       }
-
-       field.forEach(function (filter) {
-               filter = self.findFilter(filter);
-
-               if (filter) {
-                       filterList.push(filter);
-               }
-       });
-
-       this.table.rowManager.rows.forEach(function (row) {
-               var match = true;
-
-               filterList.forEach(function (filter) {
-                       if (!self.filterRecurse(filter, row.getData())) {
-                               match = false;
-                       }
-               });
-
-               if (match) {
-                       activeRows.push(searchType === "data" ? row.getData("data") : row.getComponent());
-               }
-       });
-
-       return activeRows;
-};
-
-//filter row array
-Filter.prototype.filter = function (rowList, filters) {
-       var self = this,
-           activeRows = [],
-           activeRowComponents = [];
-
-       if (self.table.options.dataFiltering) {
-               self.table.options.dataFiltering.call(self.table, self.getFilters());
-       }
-
-       if (!self.table.options.ajaxFiltering && (self.filterList.length || Object.keys(self.headerFilters).length)) {
-
-               rowList.forEach(function (row) {
-                       if (self.filterRow(row)) {
-                               activeRows.push(row);
-                       }
-               });
-       } else {
-               activeRows = rowList.slice(0);
-       }
-
-       if (self.table.options.dataFiltered) {
-
-               activeRows.forEach(function (row) {
-                       activeRowComponents.push(row.getComponent());
-               });
-
-               self.table.options.dataFiltered.call(self.table, self.getFilters(), activeRowComponents);
-       }
-
-       return activeRows;
-};
-
-//filter individual row
-Filter.prototype.filterRow = function (row, filters) {
-       var self = this,
-           match = true,
-           data = row.getData();
-
-       self.filterList.forEach(function (filter) {
-               if (!self.filterRecurse(filter, data)) {
-                       match = false;
-               }
-       });
-
-       for (var field in self.headerFilters) {
-               if (!self.headerFilters[field].func(data)) {
-                       match = false;
-               }
-       }
-
-       return match;
-};
-
-Filter.prototype.filterRecurse = function (filter, data) {
-       var self = this,
-           match = false;
-
-       if (Array.isArray(filter)) {
-               filter.forEach(function (subFilter) {
-                       if (self.filterRecurse(subFilter, data)) {
-                               match = true;
-                       }
-               });
-       } else {
-               match = filter.func(data);
-       }
-
-       return match;
-};
-
-//list of available filters
-Filter.prototype.filters = {
-
-       //equal to
-       "=": function _(filterVal, rowVal, rowData, filterParams) {
-               return rowVal == filterVal ? true : false;
-       },
-
-       //less than
-       "<": function _(filterVal, rowVal, rowData, filterParams) {
-               return rowVal < filterVal ? true : false;
-       },
-
-       //less than or equal to
-       "<=": function _(filterVal, rowVal, rowData, filterParams) {
-               return rowVal <= filterVal ? true : false;
-       },
-
-       //greater than
-       ">": function _(filterVal, rowVal, rowData, filterParams) {
-               return rowVal > filterVal ? true : false;
-       },
-
-       //greater than or equal to
-       ">=": function _(filterVal, rowVal, rowData, filterParams) {
-               return rowVal >= filterVal ? true : false;
-       },
-
-       //not equal to
-       "!=": function _(filterVal, rowVal, rowData, filterParams) {
-               return rowVal != filterVal ? true : false;
-       },
-
-       "regex": function regex(filterVal, rowVal, rowData, filterParams) {
-
-               if (typeof filterVal == "string") {
-                       filterVal = new RegExp(filterVal);
-               }
-
-               return filterVal.test(rowVal);
-       },
-
-       //contains the string
-       "like": function like(filterVal, rowVal, rowData, filterParams) {
-               if (filterVal === null || typeof filterVal === "undefined") {
-                       return rowVal === filterVal ? true : false;
-               } else {
-                       if (typeof rowVal !== 'undefined' && rowVal !== null) {
-                               return String(rowVal).toLowerCase().indexOf(filterVal.toLowerCase()) > -1;
-                       } else {
-                               return false;
-                       }
-               }
-       },
-
-       //in array
-       "in": function _in(filterVal, rowVal, rowData, filterParams) {
-               if (Array.isArray(filterVal)) {
-                       return filterVal.indexOf(rowVal) > -1;
-               } else {
-                       console.warn("Filter Error - filter value is not an array:", filterVal);
-                       return false;
-               }
-       }
-};
-
-Tabulator.prototype.registerModule("filter", Filter);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/filter.min.js b/app/static/vendors/tabulator/js.old/modules/filter.min.js
deleted file mode 100644 (file)
index ba522dd..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Filter=function(e){this.table=e,this.filterList=[],this.headerFilters={},this.headerFilterColumns=[],this.prevHeaderFilterChangeCheck="",this.prevHeaderFilterChangeCheck="{}",this.changed=!1};Filter.prototype.initializeColumn=function(e,t){function r(t){var r,l="input"==e.modules.filter.tagType&&"text"==e.modules.filter.attrType||"textarea"==e.modules.filter.tagType?"partial":"match",o="",a="";if(void 0===e.modules.filter.prevSuccess||e.modules.filter.prevSuccess!==t){if(e.modules.filter.prevSuccess=t,e.modules.filter.emptyFunc(t))delete i.headerFilters[n];else{switch(e.modules.filter.value=t,_typeof(e.definition.headerFilterFunc)){case"string":i.filters[e.definition.headerFilterFunc]?(o=e.definition.headerFilterFunc,r=function(r){var n=e.definition.headerFilterFuncParams||{},l=e.getFieldValue(r);return n="function"==typeof n?n(t,l,r):n,i.filters[e.definition.headerFilterFunc](t,l,r,n)}):console.warn("Header Filter Error - Matching filter function not found: ",e.definition.headerFilterFunc);break;case"function":r=function(r){var i=e.definition.headerFilterFuncParams||{},n=e.getFieldValue(r);return i="function"==typeof i?i(t,n,r):i,e.definition.headerFilterFunc(t,n,r,i)},o=r}if(!r)switch(l){case"partial":r=function(r){var i=e.getFieldValue(r);return void 0!==i&&null!==i&&String(i).toLowerCase().indexOf(String(t).toLowerCase())>-1},o="like";break;default:r=function(r){return e.getFieldValue(r)==t},o="="}i.headerFilters[n]={value:t,func:r,type:o}}a=JSON.stringify(i.headerFilters),i.prevHeaderFilterChangeCheck!==a&&(i.prevHeaderFilterChangeCheck=a,i.changed=!0,i.table.rowManager.filterRefresh())}return!0}var i=this,n=e.getField();e.modules.filter={success:r,attrType:!1,tagType:!1,emptyFunc:!1},this.generateHeaderFilterElement(e)},Filter.prototype.generateHeaderFilterElement=function(e,t,r){function i(){}var n,l,o,a,s,d,u,f=this,c=this,h=e.modules.filter.success,p=e.getField();if(e.modules.filter.headerElement&&e.modules.filter.headerElement.parentNode&&e.contentElement.removeChild(e.modules.filter.headerElement.parentNode),p){switch(e.modules.filter.emptyFunc=e.definition.headerFilterEmptyCheck||function(e){return!e&&"0"!==e},n=document.createElement("div"),n.classList.add("tabulator-header-filter"),_typeof(e.definition.headerFilter)){case"string":c.table.modules.edit.editors[e.definition.headerFilter]?(l=c.table.modules.edit.editors[e.definition.headerFilter],"tick"!==e.definition.headerFilter&&"tickCross"!==e.definition.headerFilter||e.definition.headerFilterEmptyCheck||(e.modules.filter.emptyFunc=function(e){return!0!==e&&!1!==e})):console.warn("Filter Error - Cannot build header filter, No such editor found: ",e.definition.editor);break;case"function":l=e.definition.headerFilter;break;case"boolean":e.modules.edit&&e.modules.edit.editor?l=e.modules.edit.editor:e.definition.formatter&&c.table.modules.edit.editors[e.definition.formatter]?(l=c.table.modules.edit.editors[e.definition.formatter],"tick"!==e.definition.formatter&&"tickCross"!==e.definition.formatter||e.definition.headerFilterEmptyCheck||(e.modules.filter.emptyFunc=function(e){return!0!==e&&!1!==e})):l=c.table.modules.edit.editors.input}if(l){if(a={getValue:function(){return void 0!==t?t:""},getField:function(){return e.definition.field},getElement:function(){return n},getColumn:function(){return e.getComponent()},getRow:function(){return{normalizeHeight:function(){}}}},u=e.definition.headerFilterParams||{},u="function"==typeof u?u.call(c.table):u,!(o=l.call(this.table.modules.edit,a,function(){},h,i,u)))return void console.warn("Filter Error - Cannot add filter to "+p+" column, editor returned a value of false");if(!(o instanceof Node))return void console.warn("Filter Error - Cannot add filter to "+p+" column, editor should return an instance of Node, the editor returned:",o);p?c.table.modules.localize.bind("headerFilters|columns|"+e.definition.field,function(e){o.setAttribute("placeholder",void 0!==e&&e?e:c.table.modules.localize.getText("headerFilters|default"))}):c.table.modules.localize.bind("headerFilters|default",function(e){o.setAttribute("placeholder",void 0!==c.column.definition.headerFilterPlaceholder&&c.column.definition.headerFilterPlaceholder?c.column.definition.headerFilterPlaceholder:e)}),o.addEventListener("click",function(e){e.stopPropagation(),o.focus()}),o.addEventListener("focus",function(e){var t=f.table.columnManager.element.scrollLeft;t!==f.table.rowManager.element.scrollLeft&&(f.table.rowManager.scrollHorizontal(t),f.table.columnManager.scrollHorizontal(t))}),s=!1,d=function(e){s&&clearTimeout(s),s=setTimeout(function(){h(o.value)},c.table.options.headerFilterLiveFilterDelay)},e.modules.filter.headerElement=o,e.modules.filter.attrType=o.hasAttribute("type")?o.getAttribute("type").toLowerCase():"",e.modules.filter.tagType=o.tagName.toLowerCase(),!1!==e.definition.headerFilterLiveFilter&&("autocomplete"!==e.definition.headerFilter&&"tickCross"!==e.definition.headerFilter&&("autocomplete"!==e.definition.editor&&"tickCross"!==e.definition.editor||!0!==e.definition.headerFilter)&&(o.addEventListener("keyup",d),o.addEventListener("search",d),"number"==e.modules.filter.attrType&&o.addEventListener("change",function(e){h(o.value)}),"text"==e.modules.filter.attrType&&"ie"!==this.table.browser&&o.setAttribute("type","search")),"input"!=e.modules.filter.tagType&&"select"!=e.modules.filter.tagType&&"textarea"!=e.modules.filter.tagType||o.addEventListener("mousedown",function(e){e.stopPropagation()})),n.appendChild(o),e.contentElement.appendChild(n),r||c.headerFilterColumns.push(e)}}else console.warn("Filter Error - Cannot add header filter, column has no field set:",e.definition.title)},Filter.prototype.hideHeaderFilterElements=function(){this.headerFilterColumns.forEach(function(e){e.modules.filter&&e.modules.filter.headerElement&&(e.modules.filter.headerElement.style.display="none")})},Filter.prototype.showHeaderFilterElements=function(){this.headerFilterColumns.forEach(function(e){e.modules.filter&&e.modules.filter.headerElement&&(e.modules.filter.headerElement.style.display="")})},Filter.prototype.setHeaderFilterFocus=function(e){e.modules.filter&&e.modules.filter.headerElement?e.modules.filter.headerElement.focus():console.warn("Column Filter Focus Error - No header filter set on column:",e.getField())},Filter.prototype.getHeaderFilterValue=function(e){if(e.modules.filter&&e.modules.filter.headerElement)return e.modules.filter.headerElement.value;console.warn("Column Filter Error - No header filter set on column:",e.getField())},Filter.prototype.setHeaderFilterValue=function(e,t){e&&(e.modules.filter&&e.modules.filter.headerElement?(this.generateHeaderFilterElement(e,t,!0),e.modules.filter.success(t)):console.warn("Column Filter Error - No header filter set on column:",e.getField()))},Filter.prototype.reloadHeaderFilter=function(e){e&&(e.modules.filter&&e.modules.filter.headerElement?this.generateHeaderFilterElement(e,e.modules.filter.value,!0):console.warn("Column Filter Error - No header filter set on column:",e.getField()))},Filter.prototype.hasChanged=function(){var e=this.changed;return this.changed=!1,e},Filter.prototype.setFilter=function(e,t,r){var i=this;i.filterList=[],Array.isArray(e)||(e=[{field:e,type:t,value:r}]),i.addFilter(e)},Filter.prototype.addFilter=function(e,t,r){var i=this;Array.isArray(e)||(e=[{field:e,type:t,value:r}]),e.forEach(function(e){(e=i.findFilter(e))&&(i.filterList.push(e),i.changed=!0)}),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.filter&&this.table.modules.persistence.save("filter")},Filter.prototype.findFilter=function(e){var t,r=this;if(Array.isArray(e))return this.findSubFilters(e);var i=!1;return"function"==typeof e.field?i=function(t){return e.field(t,e.type||{})}:r.filters[e.type]?(t=r.table.columnManager.getColumnByField(e.field),i=t?function(i){return r.filters[e.type](e.value,t.getFieldValue(i))}:function(t){return r.filters[e.type](e.value,t[e.field])}):console.warn("Filter Error - No such filter type found, ignoring: ",e.type),e.func=i,!!e.func&&e},Filter.prototype.findSubFilters=function(e){var t=this,r=[];return e.forEach(function(e){(e=t.findFilter(e))&&r.push(e)}),!!r.length&&r},Filter.prototype.getFilters=function(e,t){var r=[];return e&&(r=this.getHeaderFilters()),t&&r.forEach(function(e){"function"==typeof e.type&&(e.type="function")}),r=r.concat(this.filtersToArray(this.filterList,t))},Filter.prototype.filtersToArray=function(e,t){var r=this,i=[];return e.forEach(function(e){var n;Array.isArray(e)?i.push(r.filtersToArray(e,t)):(n={field:e.field,type:e.type,value:e.value},t&&"function"==typeof n.type&&(n.type="function"),i.push(n))}),i},Filter.prototype.getHeaderFilters=function(){var e=[];for(var t in this.headerFilters)e.push({field:t,type:this.headerFilters[t].type,value:this.headerFilters[t].value});return e},Filter.prototype.removeFilter=function(e,t,r){var i=this;Array.isArray(e)||(e=[{field:e,type:t,value:r}]),e.forEach(function(e){var t=-1;t="object"==_typeof(e.field)?i.filterList.findIndex(function(t){return e===t}):i.filterList.findIndex(function(t){return e.field===t.field&&e.type===t.type&&e.value===t.value}),t>-1?(i.filterList.splice(t,1),i.changed=!0):console.warn("Filter Error - No matching filter type found, ignoring: ",e.type)}),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.filter&&this.table.modules.persistence.save("filter")},Filter.prototype.clearFilter=function(e){this.filterList=[],e&&this.clearHeaderFilter(),this.changed=!0,this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.filter&&this.table.modules.persistence.save("filter")},Filter.prototype.clearHeaderFilter=function(){var e=this;this.headerFilters={},e.prevHeaderFilterChangeCheck="{}",this.headerFilterColumns.forEach(function(t){t.modules.filter.value=null,t.modules.filter.prevSuccess=void 0,e.reloadHeaderFilter(t)}),this.changed=!0},Filter.prototype.search=function(e,t,r,i){var n=this,l=[],o=[];return Array.isArray(t)||(t=[{field:t,type:r,value:i}]),t.forEach(function(e){(e=n.findFilter(e))&&o.push(e)}),this.table.rowManager.rows.forEach(function(t){var r=!0;o.forEach(function(e){n.filterRecurse(e,t.getData())||(r=!1)}),r&&l.push("data"===e?t.getData("data"):t.getComponent())}),l},Filter.prototype.filter=function(e,t){var r=this,i=[],n=[];return r.table.options.dataFiltering&&r.table.options.dataFiltering.call(r.table,r.getFilters()),r.table.options.ajaxFiltering||!r.filterList.length&&!Object.keys(r.headerFilters).length?i=e.slice(0):e.forEach(function(e){r.filterRow(e)&&i.push(e)}),r.table.options.dataFiltered&&(i.forEach(function(e){n.push(e.getComponent())}),r.table.options.dataFiltered.call(r.table,r.getFilters(),n)),i},Filter.prototype.filterRow=function(e,t){var r=this,i=!0,n=e.getData();r.filterList.forEach(function(e){r.filterRecurse(e,n)||(i=!1)});for(var l in r.headerFilters)r.headerFilters[l].func(n)||(i=!1);return i},Filter.prototype.filterRecurse=function(e,t){var r=this,i=!1;return Array.isArray(e)?e.forEach(function(e){r.filterRecurse(e,t)&&(i=!0)}):i=e.func(t),i},Filter.prototype.filters={"=":function(e,t,r,i){return t==e},"<":function(e,t,r,i){return t<e},"<=":function(e,t,r,i){return t<=e},">":function(e,t,r,i){return t>e},">=":function(e,t,r,i){return t>=e},"!=":function(e,t,r,i){return t!=e},regex:function(e,t,r,i){return"string"==typeof e&&(e=new RegExp(e)),e.test(t)},like:function(e,t,r,i){return null===e||void 0===e?t===e:void 0!==t&&null!==t&&String(t).toLowerCase().indexOf(e.toLowerCase())>-1},in:function(e,t,r,i){return Array.isArray(e)?e.indexOf(t)>-1:(console.warn("Filter Error - filter value is not an array:",e),!1)}},Tabulator.prototype.registerModule("filter",Filter);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/format.js b/app/static/vendors/tabulator/js.old/modules/format.js
deleted file mode 100644 (file)
index 07247a4..0000000
+++ /dev/null
@@ -1,725 +0,0 @@
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-
-var Format = function Format(table) {
-       this.table = table; //hold Tabulator object
-};
-
-//initialize column formatter
-Format.prototype.initializeColumn = function (column) {
-       column.modules.format = this.lookupFormatter(column, "");
-
-       if (typeof column.definition.formatterPrint !== "undefined") {
-               column.modules.format.print = this.lookupFormatter(column, "Print");
-       }
-
-       if (typeof column.definition.formatterClipboard !== "undefined") {
-               column.modules.format.clipboard = this.lookupFormatter(column, "Clipboard");
-       }
-
-       if (typeof column.definition.formatterHtmlOutput !== "undefined") {
-               column.modules.format.htmlOutput = this.lookupFormatter(column, "HtmlOutput");
-       }
-};
-
-Format.prototype.lookupFormatter = function (column, type) {
-       var config = { params: column.definition["formatter" + type + "Params"] || {} },
-           formatter = column.definition["formatter" + type];
-
-       //set column formatter
-       switch (typeof formatter === "undefined" ? "undefined" : _typeof(formatter)) {
-               case "string":
-
-                       if (formatter === "tick") {
-                               formatter = "tickCross";
-
-                               if (typeof config.params.crossElement == "undefined") {
-                                       config.params.crossElement = false;
-                               }
-
-                               console.warn("DEPRECATION WARNING - the tick formatter has been deprecated, please use the tickCross formatter with the crossElement param set to false");
-                       }
-
-                       if (this.formatters[formatter]) {
-                               config.formatter = this.formatters[formatter];
-                       } else {
-                               console.warn("Formatter Error - No such formatter found: ", formatter);
-                               config.formatter = this.formatters.plaintext;
-                       }
-                       break;
-
-               case "function":
-                       config.formatter = formatter;
-                       break;
-
-               default:
-                       config.formatter = this.formatters.plaintext;
-                       break;
-       }
-
-       return config;
-};
-
-Format.prototype.cellRendered = function (cell) {
-       if (cell.modules.format && cell.modules.format.renderedCallback) {
-               cell.modules.format.renderedCallback();
-       }
-};
-
-//return a formatted value for a cell
-Format.prototype.formatValue = function (cell) {
-       var component = cell.getComponent(),
-           params = typeof cell.column.modules.format.params === "function" ? cell.column.modules.format.params(component) : cell.column.modules.format.params;
-
-       function onRendered(callback) {
-               if (!cell.modules.format) {
-                       cell.modules.format = {};
-               }
-
-               cell.modules.format.renderedCallback = callback;
-       }
-
-       return cell.column.modules.format.formatter.call(this, component, params, onRendered);
-};
-
-Format.prototype.formatExportValue = function (cell, type) {
-       var formatter = cell.column.modules.format[type],
-           params;
-
-       if (formatter) {
-               var onRendered = function onRendered(callback) {
-                       if (!cell.modules.format) {
-                               cell.modules.format = {};
-                       }
-
-                       cell.modules.format.renderedCallback = callback;
-               };
-
-               params = typeof formatter.params === "function" ? formatter.params(component) : formatter.params;
-
-               return formatter.formatter.call(this, cell.getComponent(), params, onRendered);
-       } else {
-               return this.formatValue(cell);
-       }
-};
-
-Format.prototype.sanitizeHTML = function (value) {
-       if (value) {
-               var entityMap = {
-                       '&': '&amp;',
-                       '<': '&lt;',
-                       '>': '&gt;',
-                       '"': '&quot;',
-                       "'": '&#39;',
-                       '/': '&#x2F;',
-                       '`': '&#x60;',
-                       '=': '&#x3D;'
-               };
-
-               return String(value).replace(/[&<>"'`=\/]/g, function (s) {
-                       return entityMap[s];
-               });
-       } else {
-               return value;
-       }
-};
-
-Format.prototype.emptyToSpace = function (value) {
-       return value === null || typeof value === "undefined" || value === "" ? "&nbsp;" : value;
-};
-
-//get formatter for cell
-Format.prototype.getFormatter = function (formatter) {
-       var formatter;
-
-       switch (typeof formatter === "undefined" ? "undefined" : _typeof(formatter)) {
-               case "string":
-                       if (this.formatters[formatter]) {
-                               formatter = this.formatters[formatter];
-                       } else {
-                               console.warn("Formatter Error - No such formatter found: ", formatter);
-                               formatter = this.formatters.plaintext;
-                       }
-                       break;
-
-               case "function":
-                       formatter = formatter;
-                       break;
-
-               default:
-                       formatter = this.formatters.plaintext;
-                       break;
-       }
-
-       return formatter;
-};
-
-//default data formatters
-Format.prototype.formatters = {
-       //plain text value
-       plaintext: function plaintext(cell, formatterParams, onRendered) {
-               return this.emptyToSpace(this.sanitizeHTML(cell.getValue()));
-       },
-
-       //html text value
-       html: function html(cell, formatterParams, onRendered) {
-               return cell.getValue();
-       },
-
-       //multiline text area
-       textarea: function textarea(cell, formatterParams, onRendered) {
-               cell.getElement().style.whiteSpace = "pre-wrap";
-               return this.emptyToSpace(this.sanitizeHTML(cell.getValue()));
-       },
-
-       //currency formatting
-       money: function money(cell, formatterParams, onRendered) {
-               var floatVal = parseFloat(cell.getValue()),
-                   number,
-                   integer,
-                   decimal,
-                   rgx;
-
-               var decimalSym = formatterParams.decimal || ".";
-               var thousandSym = formatterParams.thousand || ",";
-               var symbol = formatterParams.symbol || "";
-               var after = !!formatterParams.symbolAfter;
-               var precision = typeof formatterParams.precision !== "undefined" ? formatterParams.precision : 2;
-
-               if (isNaN(floatVal)) {
-                       return this.emptyToSpace(this.sanitizeHTML(cell.getValue()));
-               }
-
-               number = precision !== false ? floatVal.toFixed(precision) : floatVal;
-               number = String(number).split(".");
-
-               integer = number[0];
-               decimal = number.length > 1 ? decimalSym + number[1] : "";
-
-               rgx = /(\d+)(\d{3})/;
-
-               while (rgx.test(integer)) {
-                       integer = integer.replace(rgx, "$1" + thousandSym + "$2");
-               }
-
-               return after ? integer + decimal + symbol : symbol + integer + decimal;
-       },
-
-       //clickable anchor tag
-       link: function link(cell, formatterParams, onRendered) {
-               var value = cell.getValue(),
-                   urlPrefix = formatterParams.urlPrefix || "",
-                   download = formatterParams.download,
-                   label = value,
-                   el = document.createElement("a"),
-                   data;
-
-               if (formatterParams.labelField) {
-                       data = cell.getData();
-                       label = data[formatterParams.labelField];
-               }
-
-               if (formatterParams.label) {
-                       switch (_typeof(formatterParams.label)) {
-                               case "string":
-                                       label = formatterParams.label;
-                                       break;
-
-                               case "function":
-                                       label = formatterParams.label(cell);
-                                       break;
-                       }
-               }
-
-               if (label) {
-                       if (formatterParams.urlField) {
-                               data = cell.getData();
-                               value = data[formatterParams.urlField];
-                       }
-
-                       if (formatterParams.url) {
-                               switch (_typeof(formatterParams.url)) {
-                                       case "string":
-                                               value = formatterParams.url;
-                                               break;
-
-                                       case "function":
-                                               value = formatterParams.url(cell);
-                                               break;
-                               }
-                       }
-
-                       el.setAttribute("href", urlPrefix + value);
-
-                       if (formatterParams.target) {
-                               el.setAttribute("target", formatterParams.target);
-                       }
-
-                       if (formatterParams.download) {
-
-                               if (typeof download == "function") {
-                                       download = download(cell);
-                               } else {
-                                       download = download === true ? "" : download;
-                               }
-
-                               el.setAttribute("download", download);
-                       }
-
-                       el.innerHTML = this.emptyToSpace(this.sanitizeHTML(label));
-
-                       return el;
-               } else {
-                       return "&nbsp;";
-               }
-       },
-
-       //image element
-       image: function image(cell, formatterParams, onRendered) {
-               var el = document.createElement("img");
-               el.setAttribute("src", cell.getValue());
-
-               switch (_typeof(formatterParams.height)) {
-                       case "number":
-                               el.style.height = formatterParams.height + "px";
-                               break;
-
-                       case "string":
-                               el.style.height = formatterParams.height;
-                               break;
-               }
-
-               switch (_typeof(formatterParams.width)) {
-                       case "number":
-                               el.style.width = formatterParams.width + "px";
-                               break;
-
-                       case "string":
-                               el.style.width = formatterParams.width;
-                               break;
-               }
-
-               el.addEventListener("load", function () {
-                       cell.getRow().normalizeHeight();
-               });
-
-               return el;
-       },
-
-       //tick or cross
-       tickCross: function tickCross(cell, formatterParams, onRendered) {
-               var value = cell.getValue(),
-                   element = cell.getElement(),
-                   empty = formatterParams.allowEmpty,
-                   truthy = formatterParams.allowTruthy,
-                   tick = typeof formatterParams.tickElement !== "undefined" ? formatterParams.tickElement : '<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34  c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351  l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07  l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>',
-                   cross = typeof formatterParams.crossElement !== "undefined" ? formatterParams.crossElement : '<svg enable-background="new 0 0 24 24" height="14" width="14"  viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272  c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0  l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269  c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73  L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>';
-
-               if (truthy && value || value === true || value === "true" || value === "True" || value === 1 || value === "1") {
-                       element.setAttribute("aria-checked", true);
-                       return tick || "";
-               } else {
-                       if (empty && (value === "null" || value === "" || value === null || typeof value === "undefined")) {
-                               element.setAttribute("aria-checked", "mixed");
-                               return "";
-                       } else {
-                               element.setAttribute("aria-checked", false);
-                               return cross || "";
-                       }
-               }
-       },
-
-       datetime: function datetime(cell, formatterParams, onRendered) {
-               var inputFormat = formatterParams.inputFormat || "YYYY-MM-DD hh:mm:ss";
-               var outputFormat = formatterParams.outputFormat || "DD/MM/YYYY hh:mm:ss";
-               var invalid = typeof formatterParams.invalidPlaceholder !== "undefined" ? formatterParams.invalidPlaceholder : "";
-               var value = cell.getValue();
-
-               var newDatetime = moment(value, inputFormat);
-
-               if (newDatetime.isValid()) {
-                       return newDatetime.format(outputFormat);
-               } else {
-
-                       if (invalid === true) {
-                               return value;
-                       } else if (typeof invalid === "function") {
-                               return invalid(value);
-                       } else {
-                               return invalid;
-                       }
-               }
-       },
-
-       datetimediff: function datetime(cell, formatterParams, onRendered) {
-               var inputFormat = formatterParams.inputFormat || "YYYY-MM-DD hh:mm:ss";
-               var invalid = typeof formatterParams.invalidPlaceholder !== "undefined" ? formatterParams.invalidPlaceholder : "";
-               var suffix = typeof formatterParams.suffix !== "undefined" ? formatterParams.suffix : false;
-               var unit = typeof formatterParams.unit !== "undefined" ? formatterParams.unit : undefined;
-               var humanize = typeof formatterParams.humanize !== "undefined" ? formatterParams.humanize : false;
-               var date = typeof formatterParams.date !== "undefined" ? formatterParams.date : moment();
-               var value = cell.getValue();
-
-               var newDatetime = moment(value, inputFormat);
-
-               if (newDatetime.isValid()) {
-                       if (humanize) {
-                               return moment.duration(newDatetime.diff(date)).humanize(suffix);
-                       } else {
-                               return newDatetime.diff(date, unit) + (suffix ? " " + suffix : "");
-                       }
-               } else {
-
-                       if (invalid === true) {
-                               return value;
-                       } else if (typeof invalid === "function") {
-                               return invalid(value);
-                       } else {
-                               return invalid;
-                       }
-               }
-       },
-
-       //select
-       lookup: function lookup(cell, formatterParams, onRendered) {
-               var value = cell.getValue();
-
-               if (typeof formatterParams[value] === "undefined") {
-                       console.warn('Missing display value for ' + value);
-                       return value;
-               }
-
-               return formatterParams[value];
-       },
-
-       //star rating
-       star: function star(cell, formatterParams, onRendered) {
-               var value = cell.getValue(),
-                   element = cell.getElement(),
-                   maxStars = formatterParams && formatterParams.stars ? formatterParams.stars : 5,
-                   stars = document.createElement("span"),
-                   star = document.createElementNS('http://www.w3.org/2000/svg', "svg"),
-                   starActive = '<polygon fill="#FFEA00" stroke="#C1AB60" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>',
-                   starInactive = '<polygon fill="#D2D2D2" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>';
-
-               //style stars holder
-               stars.style.verticalAlign = "middle";
-
-               //style star
-               star.setAttribute("width", "14");
-               star.setAttribute("height", "14");
-               star.setAttribute("viewBox", "0 0 512 512");
-               star.setAttribute("xml:space", "preserve");
-               star.style.padding = "0 1px";
-
-               value = value && !isNaN(value) ? parseInt(value) : 0;
-
-               value = Math.max(0, Math.min(value, maxStars));
-
-               for (var i = 1; i <= maxStars; i++) {
-                       var nextStar = star.cloneNode(true);
-                       nextStar.innerHTML = i <= value ? starActive : starInactive;
-
-                       stars.appendChild(nextStar);
-               }
-
-               element.style.whiteSpace = "nowrap";
-               element.style.overflow = "hidden";
-               element.style.textOverflow = "ellipsis";
-
-               element.setAttribute("aria-label", value);
-
-               return stars;
-       },
-
-       traffic: function traffic(cell, formatterParams, onRendered) {
-               var value = this.sanitizeHTML(cell.getValue()) || 0,
-                   el = document.createElement("span"),
-                   max = formatterParams && formatterParams.max ? formatterParams.max : 100,
-                   min = formatterParams && formatterParams.min ? formatterParams.min : 0,
-                   colors = formatterParams && typeof formatterParams.color !== "undefined" ? formatterParams.color : ["red", "orange", "green"],
-                   color = "#666666",
-                   percent,
-                   percentValue;
-
-               if (isNaN(value) || typeof cell.getValue() === "undefined") {
-                       return;
-               }
-
-               el.classList.add("tabulator-traffic-light");
-
-               //make sure value is in range
-               percentValue = parseFloat(value) <= max ? parseFloat(value) : max;
-               percentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;
-
-               //workout percentage
-               percent = (max - min) / 100;
-               percentValue = Math.round((percentValue - min) / percent);
-
-               //set color
-               switch (typeof colors === "undefined" ? "undefined" : _typeof(colors)) {
-                       case "string":
-                               color = colors;
-                               break;
-                       case "function":
-                               color = colors(value);
-                               break;
-                       case "object":
-                               if (Array.isArray(colors)) {
-                                       var unit = 100 / colors.length;
-                                       var index = Math.floor(percentValue / unit);
-
-                                       index = Math.min(index, colors.length - 1);
-                                       index = Math.max(index, 0);
-                                       color = colors[index];
-                                       break;
-                               }
-               }
-
-               el.style.backgroundColor = color;
-
-               return el;
-       },
-
-       //progress bar
-       progress: function progress(cell, formatterParams, onRendered) {
-               //progress bar
-               var value = this.sanitizeHTML(cell.getValue()) || 0,
-                   element = cell.getElement(),
-                   max = formatterParams && formatterParams.max ? formatterParams.max : 100,
-                   min = formatterParams && formatterParams.min ? formatterParams.min : 0,
-                   legendAlign = formatterParams && formatterParams.legendAlign ? formatterParams.legendAlign : "center",
-                   percent,
-                   percentValue,
-                   color,
-                   legend,
-                   legendColor,
-                   top,
-                   left,
-                   right,
-                   bottom;
-
-               //make sure value is in range
-               percentValue = parseFloat(value) <= max ? parseFloat(value) : max;
-               percentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;
-
-               //workout percentage
-               percent = (max - min) / 100;
-               percentValue = Math.round((percentValue - min) / percent);
-
-               //set bar color
-               switch (_typeof(formatterParams.color)) {
-                       case "string":
-                               color = formatterParams.color;
-                               break;
-                       case "function":
-                               color = formatterParams.color(value);
-                               break;
-                       case "object":
-                               if (Array.isArray(formatterParams.color)) {
-                                       var unit = 100 / formatterParams.color.length;
-                                       var index = Math.floor(percentValue / unit);
-
-                                       index = Math.min(index, formatterParams.color.length - 1);
-                                       index = Math.max(index, 0);
-                                       color = formatterParams.color[index];
-                                       break;
-                               }
-                       default:
-                               color = "#2DC214";
-               }
-
-               //generate legend
-               switch (_typeof(formatterParams.legend)) {
-                       case "string":
-                               legend = formatterParams.legend;
-                               break;
-                       case "function":
-                               legend = formatterParams.legend(value);
-                               break;
-                       case "boolean":
-                               legend = value;
-                               break;
-                       default:
-                               legend = false;
-               }
-
-               //set legend color
-               switch (_typeof(formatterParams.legendColor)) {
-                       case "string":
-                               legendColor = formatterParams.legendColor;
-                               break;
-                       case "function":
-                               legendColor = formatterParams.legendColor(value);
-                               break;
-                       case "object":
-                               if (Array.isArray(formatterParams.legendColor)) {
-                                       var unit = 100 / formatterParams.legendColor.length;
-                                       var index = Math.floor(percentValue / unit);
-
-                                       index = Math.min(index, formatterParams.legendColor.length - 1);
-                                       index = Math.max(index, 0);
-                                       legendColor = formatterParams.legendColor[index];
-                               }
-                               break;
-                       default:
-                               legendColor = "#000";
-               }
-
-               element.style.minWidth = "30px";
-               element.style.position = "relative";
-
-               element.setAttribute("aria-label", percentValue);
-
-               var barEl = document.createElement("div");
-               barEl.style.display = "inline-block";
-               barEl.style.position = "relative";
-               barEl.style.width = percentValue + "%";
-               barEl.style.backgroundColor = color;
-               barEl.style.height = "100%";
-
-               barEl.setAttribute('data-max', max);
-               barEl.setAttribute('data-min', min);
-
-               if (legend) {
-                       var legendEl = document.createElement("div");
-                       legendEl.style.position = "absolute";
-                       legendEl.style.top = "4px";
-                       legendEl.style.left = 0;
-                       legendEl.style.textAlign = legendAlign;
-                       legendEl.style.width = "100%";
-                       legendEl.style.color = legendColor;
-                       legendEl.innerHTML = legend;
-               }
-
-               onRendered(function () {
-
-                       //handle custom element needed if formatter is to be included in printed/downloaded output
-                       if (!(cell instanceof CellComponent)) {
-                               var holderEl = document.createElement("div");
-                               holderEl.style.position = "absolute";
-                               holderEl.style.top = "4px";
-                               holderEl.style.bottom = "4px";
-                               holderEl.style.left = "4px";
-                               holderEl.style.right = "4px";
-
-                               element.appendChild(holderEl);
-
-                               element = holderEl;
-                       }
-
-                       element.appendChild(barEl);
-
-                       if (legend) {
-                               element.appendChild(legendEl);
-                       }
-               });
-
-               return "";
-       },
-
-       //background color
-       color: function color(cell, formatterParams, onRendered) {
-               cell.getElement().style.backgroundColor = this.sanitizeHTML(cell.getValue());
-               return "";
-       },
-
-       //tick icon
-       buttonTick: function buttonTick(cell, formatterParams, onRendered) {
-               return '<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34  c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351  l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07  l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>';
-       },
-
-       //cross icon
-       buttonCross: function buttonCross(cell, formatterParams, onRendered) {
-               return '<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272  c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0  l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269  c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73  L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>';
-       },
-
-       //current row number
-       rownum: function rownum(cell, formatterParams, onRendered) {
-               return this.table.rowManager.activeRows.indexOf(cell.getRow()._getSelf()) + 1;
-       },
-
-       //row handle
-       handle: function handle(cell, formatterParams, onRendered) {
-               cell.getElement().classList.add("tabulator-row-handle");
-               return "<div class='tabulator-row-handle-box'><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div></div>";
-       },
-
-       responsiveCollapse: function responsiveCollapse(cell, formatterParams, onRendered) {
-               var self = this,
-                   open = false,
-                   el = document.createElement("div"),
-                   config = cell.getRow()._row.modules.responsiveLayout;
-
-               el.classList.add("tabulator-responsive-collapse-toggle");
-               el.innerHTML = "<span class='tabulator-responsive-collapse-toggle-open'>+</span><span class='tabulator-responsive-collapse-toggle-close'>-</span>";
-
-               cell.getElement().classList.add("tabulator-row-handle");
-
-               function toggleList(isOpen) {
-                       var collapseEl = config.element;
-
-                       config.open = isOpen;
-
-                       if (collapseEl) {
-
-                               if (config.open) {
-                                       el.classList.add("open");
-                                       collapseEl.style.display = '';
-                               } else {
-                                       el.classList.remove("open");
-                                       collapseEl.style.display = 'none';
-                               }
-                       }
-               }
-
-               el.addEventListener("click", function (e) {
-                       e.stopImmediatePropagation();
-                       toggleList(!config.open);
-               });
-
-               toggleList(config.open);
-
-               return el;
-       },
-
-       rowSelection: function rowSelection(cell) {
-               var _this = this;
-
-               var checkbox = document.createElement("input");
-
-               checkbox.type = 'checkbox';
-
-               if (this.table.modExists("selectRow", true)) {
-
-                       checkbox.addEventListener("click", function (e) {
-                               e.stopPropagation();
-                       });
-
-                       if (typeof cell.getRow == 'function') {
-                               var row = cell.getRow();
-
-                               checkbox.addEventListener("change", function (e) {
-                                       row.toggleSelect();
-                               });
-
-                               checkbox.checked = row.isSelected();
-                               this.table.modules.selectRow.registerRowSelectCheckbox(row, checkbox);
-                       } else {
-                               checkbox.addEventListener("change", function (e) {
-                                       if (_this.table.modules.selectRow.selectedRows.length) {
-                                               _this.table.deselectRow();
-                                       } else {
-                                               _this.table.selectRow();
-                                       }
-                               });
-
-                               this.table.modules.selectRow.registerHeaderSelectCheckbox(checkbox);
-                       }
-               }
-               return checkbox;
-       }
-};
-
-Tabulator.prototype.registerModule("format", Format);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/format.min.js b/app/static/vendors/tabulator/js.old/modules/format.min.js
deleted file mode 100644 (file)
index f43eab5..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Format=function(e){this.table=e};Format.prototype.initializeColumn=function(e){e.modules.format=this.lookupFormatter(e,""),void 0!==e.definition.formatterPrint&&(e.modules.format.print=this.lookupFormatter(e,"Print")),void 0!==e.definition.formatterClipboard&&(e.modules.format.clipboard=this.lookupFormatter(e,"Clipboard")),void 0!==e.definition.formatterHtmlOutput&&(e.modules.format.htmlOutput=this.lookupFormatter(e,"HtmlOutput"))},Format.prototype.lookupFormatter=function(e,t){var o={params:e.definition["formatter"+t+"Params"]||{}},r=e.definition["formatter"+t];switch(void 0===r?"undefined":_typeof(r)){case"string":"tick"===r&&(r="tickCross",void 0===o.params.crossElement&&(o.params.crossElement=!1),console.warn("DEPRECATION WARNING - the tick formatter has been deprecated, please use the tickCross formatter with the crossElement param set to false")),this.formatters[r]?o.formatter=this.formatters[r]:(console.warn("Formatter Error - No such formatter found: ",r),o.formatter=this.formatters.plaintext);break;case"function":o.formatter=r;break;default:o.formatter=this.formatters.plaintext}return o},Format.prototype.cellRendered=function(e){e.modules.format&&e.modules.format.renderedCallback&&e.modules.format.renderedCallback()},Format.prototype.formatValue=function(e){function t(t){e.modules.format||(e.modules.format={}),e.modules.format.renderedCallback=t}var o=e.getComponent(),r="function"==typeof e.column.modules.format.params?e.column.modules.format.params(o):e.column.modules.format.params;return e.column.modules.format.formatter.call(this,o,r,t)},Format.prototype.formatExportValue=function(e,t){var o,r=e.column.modules.format[t];if(r){var a=function(t){e.modules.format||(e.modules.format={}),e.modules.format.renderedCallback=t};return o="function"==typeof r.params?r.params(component):r.params,r.formatter.call(this,e.getComponent(),o,a)}return this.formatValue(e)},Format.prototype.sanitizeHTML=function(e){if(e){var t={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;","`":"&#x60;","=":"&#x3D;"};return String(e).replace(/[&<>"'`=\/]/g,function(e){return t[e]})}return e},Format.prototype.emptyToSpace=function(e){return null===e||void 0===e||""===e?"&nbsp;":e},Format.prototype.getFormatter=function(e){var e;switch(void 0===e?"undefined":_typeof(e)){case"string":this.formatters[e]?e=this.formatters[e]:(console.warn("Formatter Error - No such formatter found: ",e),e=this.formatters.plaintext);break;case"function":e=e;break;default:e=this.formatters.plaintext}return e},Format.prototype.formatters={plaintext:function(e,t,o){return this.emptyToSpace(this.sanitizeHTML(e.getValue()))},html:function(e,t,o){return e.getValue()},textarea:function(e,t,o){return e.getElement().style.whiteSpace="pre-wrap",this.emptyToSpace(this.sanitizeHTML(e.getValue()))},money:function(e,t,o){var r,a,l,n,i=parseFloat(e.getValue()),s=t.decimal||".",c=t.thousand||",",u=t.symbol||"",d=!!t.symbolAfter,m=void 0!==t.precision?t.precision:2;if(isNaN(i))return this.emptyToSpace(this.sanitizeHTML(e.getValue()));for(r=!1!==m?i.toFixed(m):i,r=String(r).split("."),a=r[0],l=r.length>1?s+r[1]:"",n=/(\d+)(\d{3})/;n.test(a);)a=a.replace(n,"$1"+c+"$2");return d?a+l+u:u+a+l},link:function(e,t,o){var r,a=e.getValue(),l=t.urlPrefix||"",n=t.download,i=a,s=document.createElement("a");if(t.labelField&&(r=e.getData(),i=r[t.labelField]),t.label)switch(_typeof(t.label)){case"string":i=t.label;break;case"function":i=t.label(e)}if(i){if(t.urlField&&(r=e.getData(),a=r[t.urlField]),t.url)switch(_typeof(t.url)){case"string":a=t.url;break;case"function":a=t.url(e)}return s.setAttribute("href",l+a),t.target&&s.setAttribute("target",t.target),t.download&&(n="function"==typeof n?n(e):!0===n?"":n,s.setAttribute("download",n)),s.innerHTML=this.emptyToSpace(this.sanitizeHTML(i)),s}return"&nbsp;"},image:function(e,t,o){var r=document.createElement("img");switch(r.setAttribute("src",e.getValue()),_typeof(t.height)){case"number":r.style.height=t.height+"px";break;case"string":r.style.height=t.height}switch(_typeof(t.width)){case"number":r.style.width=t.width+"px";break;case"string":r.style.width=t.width}return r.addEventListener("load",function(){e.getRow().normalizeHeight()}),r},tickCross:function(e,t,o){var r=e.getValue(),a=e.getElement(),l=t.allowEmpty,n=t.allowTruthy,i=void 0!==t.tickElement?t.tickElement:'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34  c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351  l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07  l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>',s=void 0!==t.crossElement?t.crossElement:'<svg enable-background="new 0 0 24 24" height="14" width="14"  viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272  c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0  l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269  c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73  L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>';return n&&r||!0===r||"true"===r||"True"===r||1===r||"1"===r?(a.setAttribute("aria-checked",!0),i||""):!l||"null"!==r&&""!==r&&null!==r&&void 0!==r?(a.setAttribute("aria-checked",!1),s||""):(a.setAttribute("aria-checked","mixed"),"")},datetime:function(e,t,o){var r=t.inputFormat||"YYYY-MM-DD hh:mm:ss",a=t.outputFormat||"DD/MM/YYYY hh:mm:ss",l=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",n=e.getValue(),i=moment(n,r);return i.isValid()?i.format(a):!0===l?n:"function"==typeof l?l(n):l},datetimediff:function(e,t,o){var r=t.inputFormat||"YYYY-MM-DD hh:mm:ss",a=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",l=void 0!==t.suffix&&t.suffix,n=void 0!==t.unit?t.unit:void 0,i=void 0!==t.humanize&&t.humanize,s=void 0!==t.date?t.date:moment(),c=e.getValue(),u=moment(c,r);return u.isValid()?i?moment.duration(u.diff(s)).humanize(l):u.diff(s,n)+(l?" "+l:""):!0===a?c:"function"==typeof a?a(c):a},lookup:function(e,t,o){var r=e.getValue();return void 0===t[r]?(console.warn("Missing display value for "+r),r):t[r]},star:function(e,t,o){var r=e.getValue(),a=e.getElement(),l=t&&t.stars?t.stars:5,n=document.createElement("span"),i=document.createElementNS("http://www.w3.org/2000/svg","svg");n.style.verticalAlign="middle",i.setAttribute("width","14"),i.setAttribute("height","14"),i.setAttribute("viewBox","0 0 512 512"),i.setAttribute("xml:space","preserve"),i.style.padding="0 1px",r=r&&!isNaN(r)?parseInt(r):0,r=Math.max(0,Math.min(r,l));for(var s=1;s<=l;s++){var c=i.cloneNode(!0);c.innerHTML=s<=r?'<polygon fill="#FFEA00" stroke="#C1AB60" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>':'<polygon fill="#D2D2D2" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>',n.appendChild(c)}return a.style.whiteSpace="nowrap",a.style.overflow="hidden",a.style.textOverflow="ellipsis",a.setAttribute("aria-label",r),n},traffic:function(e,t,o){var r,a,l=this.sanitizeHTML(e.getValue())||0,n=document.createElement("span"),i=t&&t.max?t.max:100,s=t&&t.min?t.min:0,c=t&&void 0!==t.color?t.color:["red","orange","green"],u="#666666";if(!isNaN(l)&&void 0!==e.getValue()){switch(n.classList.add("tabulator-traffic-light"),a=parseFloat(l)<=i?parseFloat(l):i,a=parseFloat(a)>=s?parseFloat(a):s,r=(i-s)/100,a=Math.round((a-s)/r),void 0===c?"undefined":_typeof(c)){case"string":u=c;break;case"function":u=c(l);break;case"object":if(Array.isArray(c)){var d=100/c.length,m=Math.floor(a/d);m=Math.min(m,c.length-1),m=Math.max(m,0),u=c[m];break}}return n.style.backgroundColor=u,n}},progress:function(e,t,o){var r,a,l,n,i,s=this.sanitizeHTML(e.getValue())||0,c=e.getElement(),u=t&&t.max?t.max:100,d=t&&t.min?t.min:0,m=t&&t.legendAlign?t.legendAlign:"center";switch(a=parseFloat(s)<=u?parseFloat(s):u,a=parseFloat(a)>=d?parseFloat(a):d,r=(u-d)/100,a=Math.round((a-d)/r),_typeof(t.color)){case"string":l=t.color;break;case"function":l=t.color(s);break;case"object":if(Array.isArray(t.color)){var p=100/t.color.length,f=Math.floor(a/p);f=Math.min(f,t.color.length-1),f=Math.max(f,0),l=t.color[f];break}default:l="#2DC214"}switch(_typeof(t.legend)){case"string":n=t.legend;break;case"function":n=t.legend(s);break;case"boolean":n=s;break;default:n=!1}switch(_typeof(t.legendColor)){case"string":i=t.legendColor;break;case"function":i=t.legendColor(s);break;case"object":if(Array.isArray(t.legendColor)){var p=100/t.legendColor.length,f=Math.floor(a/p);f=Math.min(f,t.legendColor.length-1),f=Math.max(f,0),i=t.legendColor[f]}break;default:i="#000"}c.style.minWidth="30px",c.style.position="relative",c.setAttribute("aria-label",a);var h=document.createElement("div");if(h.style.display="inline-block",h.style.position="relative",h.style.width=a+"%",h.style.backgroundColor=l,h.style.height="100%",h.setAttribute("data-max",u),h.setAttribute("data-min",d),n){var g=document.createElement("div");g.style.position="absolute",g.style.top="4px",g.style.left=0,g.style.textAlign=m,g.style.width="100%",g.style.color=i,g.innerHTML=n}return o(function(){if(!(e instanceof CellComponent)){var t=document.createElement("div");t.style.position="absolute",t.style.top="4px",t.style.bottom="4px",t.style.left="4px",t.style.right="4px",c.appendChild(t),c=t}c.appendChild(h),n&&c.appendChild(g)}),""},color:function(e,t,o){return e.getElement().style.backgroundColor=this.sanitizeHTML(e.getValue()),""},buttonTick:function(e,t,o){return'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34  c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351  l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07  l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>'},buttonCross:function(e,t,o){return'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272  c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0  l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269  c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73  L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>'},rownum:function(e,t,o){return this.table.rowManager.activeRows.indexOf(e.getRow()._getSelf())+1},handle:function(e,t,o){return e.getElement().classList.add("tabulator-row-handle"),"<div class='tabulator-row-handle-box'><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div></div>"},responsiveCollapse:function(e,t,o){function r(e){var t=l.element;l.open=e,t&&(l.open?(a.classList.add("open"),t.style.display=""):(a.classList.remove("open"),t.style.display="none"))}var a=document.createElement("div"),l=e.getRow()._row.modules.responsiveLayout;return a.classList.add("tabulator-responsive-collapse-toggle"),a.innerHTML="<span class='tabulator-responsive-collapse-toggle-open'>+</span><span class='tabulator-responsive-collapse-toggle-close'>-</span>",e.getElement().classList.add("tabulator-row-handle"),a.addEventListener("click",function(e){e.stopImmediatePropagation(),r(!l.open)}),r(l.open),a},rowSelection:function(e){var t=this,o=document.createElement("input");if(o.type="checkbox",this.table.modExists("selectRow",!0))if(o.addEventListener("click",function(e){e.stopPropagation()}),"function"==typeof e.getRow){var r=e.getRow();o.addEventListener("change",function(e){r.toggleSelect()}),o.checked=r.isSelected(),this.table.modules.selectRow.registerRowSelectCheckbox(r,o)}else o.addEventListener("change",function(e){t.table.modules.selectRow.selectedRows.length?t.table.deselectRow():t.table.selectRow()}),this.table.modules.selectRow.registerHeaderSelectCheckbox(o);return o}},Tabulator.prototype.registerModule("format",Format);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/frozen_columns.js b/app/static/vendors/tabulator/js.old/modules/frozen_columns.js
deleted file mode 100644 (file)
index 9e081d0..0000000
+++ /dev/null
@@ -1,275 +0,0 @@
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-
-var FrozenColumns = function FrozenColumns(table) {
-       this.table = table; //hold Tabulator object
-       this.leftColumns = [];
-       this.rightColumns = [];
-       this.leftMargin = 0;
-       this.rightMargin = 0;
-       this.rightPadding = 0;
-       this.initializationMode = "left";
-       this.active = false;
-       this.scrollEndTimer = false;
-};
-
-//reset initial state
-FrozenColumns.prototype.reset = function () {
-       this.initializationMode = "left";
-       this.leftColumns = [];
-       this.rightColumns = [];
-       this.leftMargin = 0;
-       this.rightMargin = 0;
-       this.rightMargin = 0;
-       this.active = false;
-
-       this.table.columnManager.headersElement.style.marginLeft = 0;
-       this.table.columnManager.element.style.paddingRight = 0;
-};
-
-//initialize specific column
-FrozenColumns.prototype.initializeColumn = function (column) {
-       var config = { margin: 0, edge: false };
-
-       if (!column.isGroup) {
-
-               if (this.frozenCheck(column)) {
-
-                       config.position = this.initializationMode;
-
-                       if (this.initializationMode == "left") {
-                               this.leftColumns.push(column);
-                       } else {
-                               this.rightColumns.unshift(column);
-                       }
-
-                       this.active = true;
-
-                       column.modules.frozen = config;
-               } else {
-                       this.initializationMode = "right";
-               }
-       }
-};
-
-FrozenColumns.prototype.frozenCheck = function (column) {
-       var frozen = false;
-
-       if (column.parent.isGroup && column.definition.frozen) {
-               console.warn("Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups");
-       }
-
-       if (column.parent.isGroup) {
-               return this.frozenCheck(column.parent);
-       } else {
-               return column.definition.frozen;
-       }
-
-       return frozen;
-};
-
-//quick layout to smooth horizontal scrolling
-FrozenColumns.prototype.scrollHorizontal = function () {
-       var _this = this;
-
-       var rows;
-
-       if (this.active) {
-               clearTimeout(this.scrollEndTimer);
-
-               //layout all rows after scroll is complete
-               this.scrollEndTimer = setTimeout(function () {
-                       _this.layout();
-               }, 100);
-
-               rows = this.table.rowManager.getVisibleRows();
-
-               this.calcMargins();
-
-               this.layoutColumnPosition();
-
-               this.layoutCalcRows();
-
-               rows.forEach(function (row) {
-                       if (row.type === "row") {
-                               _this.layoutRow(row);
-                       }
-               });
-
-               this.table.rowManager.tableElement.style.marginRight = this.rightMargin;
-       }
-};
-
-//calculate margins for rows
-FrozenColumns.prototype.calcMargins = function () {
-       this.leftMargin = this._calcSpace(this.leftColumns, this.leftColumns.length) + "px";
-       this.table.columnManager.headersElement.style.marginLeft = this.leftMargin;
-
-       this.rightMargin = this._calcSpace(this.rightColumns, this.rightColumns.length) + "px";
-       this.table.columnManager.element.style.paddingRight = this.rightMargin;
-
-       //calculate right frozen columns
-       this.rightPadding = this.table.rowManager.element.clientWidth + this.table.columnManager.scrollLeft;
-};
-
-//layout calculation rows
-FrozenColumns.prototype.layoutCalcRows = function () {
-       if (this.table.modExists("columnCalcs")) {
-               if (this.table.modules.columnCalcs.topInitialized && this.table.modules.columnCalcs.topRow) {
-                       this.layoutRow(this.table.modules.columnCalcs.topRow);
-               }
-               if (this.table.modules.columnCalcs.botInitialized && this.table.modules.columnCalcs.botRow) {
-                       this.layoutRow(this.table.modules.columnCalcs.botRow);
-               }
-       }
-};
-
-//calculate column positions and layout headers
-FrozenColumns.prototype.layoutColumnPosition = function (allCells) {
-       var _this2 = this;
-
-       var leftParents = [];
-
-       this.leftColumns.forEach(function (column, i) {
-               column.modules.frozen.margin = _this2._calcSpace(_this2.leftColumns, i) + _this2.table.columnManager.scrollLeft + "px";
-
-               if (i == _this2.leftColumns.length - 1) {
-                       column.modules.frozen.edge = true;
-               } else {
-                       column.modules.frozen.edge = false;
-               }
-
-               if (column.parent.isGroup) {
-                       var parentEl = _this2.getColGroupParentElement(column);
-                       if (!leftParents.includes(parentEl)) {
-                               _this2.layoutElement(parentEl, column);
-                               leftParents.push(parentEl);
-                       }
-
-                       if (column.modules.frozen.edge) {
-                               parentEl.classList.add("tabulator-frozen-" + column.modules.frozen.position);
-                       }
-               } else {
-                       _this2.layoutElement(column.getElement(), column);
-               }
-
-               if (allCells) {
-                       column.cells.forEach(function (cell) {
-                               _this2.layoutElement(cell.getElement(), column);
-                       });
-               }
-       });
-
-       this.rightColumns.forEach(function (column, i) {
-               column.modules.frozen.margin = _this2.rightPadding - _this2._calcSpace(_this2.rightColumns, i + 1) + "px";
-
-               if (i == _this2.rightColumns.length - 1) {
-                       column.modules.frozen.edge = true;
-               } else {
-                       column.modules.frozen.edge = false;
-               }
-
-               if (column.parent.isGroup) {
-                       _this2.layoutElement(_this2.getColGroupParentElement(column), column);
-               } else {
-                       _this2.layoutElement(column.getElement(), column);
-               }
-
-               if (allCells) {
-                       column.cells.forEach(function (cell) {
-                               _this2.layoutElement(cell.getElement(), column);
-                       });
-               }
-       });
-};
-
-FrozenColumns.prototype.getColGroupParentElement = function (column) {
-       return column.parent.isGroup ? this.getColGroupParentElement(column.parent) : column.getElement();
-};
-
-//layout columns appropropriatly
-FrozenColumns.prototype.layout = function () {
-       var self = this,
-           rightMargin = 0;
-
-       if (self.active) {
-
-               //calculate row padding
-               this.calcMargins();
-
-               // self.table.rowManager.activeRows.forEach(function(row){
-               //      self.layoutRow(row);
-               // });
-
-               // if(self.table.options.dataTree){
-               self.table.rowManager.getDisplayRows().forEach(function (row) {
-                       if (row.type === "row") {
-                               self.layoutRow(row);
-                       }
-               });
-               // }
-
-               this.layoutCalcRows();
-
-               //calculate left columns
-               this.layoutColumnPosition(true);
-
-               // if(tableHolder.scrollHeight > tableHolder.clientHeight){
-               //      rightMargin -= tableHolder.offsetWidth - tableHolder.clientWidth;
-               // }
-
-               this.table.rowManager.tableElement.style.marginRight = this.rightMargin;
-       }
-};
-
-FrozenColumns.prototype.layoutRow = function (row) {
-       var _this3 = this;
-
-       var rowEl = row.getElement();
-
-       rowEl.style.paddingLeft = this.leftMargin;
-       // rowEl.style.paddingRight = this.rightMargin + "px";
-
-       this.leftColumns.forEach(function (column) {
-               var cell = row.getCell(column);
-
-               if (cell) {
-                       _this3.layoutElement(cell.getElement(), column);
-               }
-       });
-
-       this.rightColumns.forEach(function (column) {
-               var cell = row.getCell(column);
-
-               if (cell) {
-                       _this3.layoutElement(cell.getElement(), column);
-               }
-       });
-};
-
-FrozenColumns.prototype.layoutElement = function (element, column) {
-
-       if (column.modules.frozen) {
-               element.style.position = "absolute";
-               element.style.left = column.modules.frozen.margin;
-
-               element.classList.add("tabulator-frozen");
-
-               if (column.modules.frozen.edge) {
-                       element.classList.add("tabulator-frozen-" + column.modules.frozen.position);
-               }
-       }
-};
-
-FrozenColumns.prototype._calcSpace = function (columns, index) {
-       var width = 0;
-
-       for (var i = 0; i < index; i++) {
-               if (columns[i].visible) {
-                       width += columns[i].getWidth();
-               }
-       }
-
-       return width;
-};
-
-Tabulator.prototype.registerModule("frozenColumns", FrozenColumns);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/frozen_columns.min.js b/app/static/vendors/tabulator/js.old/modules/frozen_columns.min.js
deleted file mode 100644 (file)
index 9195faa..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-var FrozenColumns=function(t){this.table=t,this.leftColumns=[],this.rightColumns=[],this.leftMargin=0,this.rightMargin=0,this.rightPadding=0,this.initializationMode="left",this.active=!1,this.scrollEndTimer=!1};FrozenColumns.prototype.reset=function(){this.initializationMode="left",this.leftColumns=[],this.rightColumns=[],this.leftMargin=0,this.rightMargin=0,this.rightMargin=0,this.active=!1,this.table.columnManager.headersElement.style.marginLeft=0,this.table.columnManager.element.style.paddingRight=0},FrozenColumns.prototype.initializeColumn=function(t){var e={margin:0,edge:!1};t.isGroup||(this.frozenCheck(t)?(e.position=this.initializationMode,"left"==this.initializationMode?this.leftColumns.push(t):this.rightColumns.unshift(t),this.active=!0,t.modules.frozen=e):this.initializationMode="right")},FrozenColumns.prototype.frozenCheck=function(t){return t.parent.isGroup&&t.definition.frozen&&console.warn("Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups"),t.parent.isGroup?this.frozenCheck(t.parent):t.definition.frozen},FrozenColumns.prototype.scrollHorizontal=function(){var t,e=this;this.active&&(clearTimeout(this.scrollEndTimer),this.scrollEndTimer=setTimeout(function(){e.layout()},100),t=this.table.rowManager.getVisibleRows(),this.calcMargins(),this.layoutColumnPosition(),this.layoutCalcRows(),t.forEach(function(t){"row"===t.type&&e.layoutRow(t)}),this.table.rowManager.tableElement.style.marginRight=this.rightMargin)},FrozenColumns.prototype.calcMargins=function(){this.leftMargin=this._calcSpace(this.leftColumns,this.leftColumns.length)+"px",this.table.columnManager.headersElement.style.marginLeft=this.leftMargin,this.rightMargin=this._calcSpace(this.rightColumns,this.rightColumns.length)+"px",this.table.columnManager.element.style.paddingRight=this.rightMargin,this.rightPadding=this.table.rowManager.element.clientWidth+this.table.columnManager.scrollLeft},FrozenColumns.prototype.layoutCalcRows=function(){this.table.modExists("columnCalcs")&&(this.table.modules.columnCalcs.topInitialized&&this.table.modules.columnCalcs.topRow&&this.layoutRow(this.table.modules.columnCalcs.topRow),this.table.modules.columnCalcs.botInitialized&&this.table.modules.columnCalcs.botRow&&this.layoutRow(this.table.modules.columnCalcs.botRow))},FrozenColumns.prototype.layoutColumnPosition=function(t){var e=this,o=[];this.leftColumns.forEach(function(n,l){if(n.modules.frozen.margin=e._calcSpace(e.leftColumns,l)+e.table.columnManager.scrollLeft+"px",l==e.leftColumns.length-1?n.modules.frozen.edge=!0:n.modules.frozen.edge=!1,n.parent.isGroup){var i=e.getColGroupParentElement(n);o.includes(i)||(e.layoutElement(i,n),o.push(i)),n.modules.frozen.edge&&i.classList.add("tabulator-frozen-"+n.modules.frozen.position)}else e.layoutElement(n.getElement(),n);t&&n.cells.forEach(function(t){e.layoutElement(t.getElement(),n)})}),this.rightColumns.forEach(function(o,n){o.modules.frozen.margin=e.rightPadding-e._calcSpace(e.rightColumns,n+1)+"px",n==e.rightColumns.length-1?o.modules.frozen.edge=!0:o.modules.frozen.edge=!1,o.parent.isGroup?e.layoutElement(e.getColGroupParentElement(o),o):e.layoutElement(o.getElement(),o),t&&o.cells.forEach(function(t){e.layoutElement(t.getElement(),o)})})},FrozenColumns.prototype.getColGroupParentElement=function(t){return t.parent.isGroup?this.getColGroupParentElement(t.parent):t.getElement()},FrozenColumns.prototype.layout=function(){var t=this;t.active&&(this.calcMargins(),t.table.rowManager.getDisplayRows().forEach(function(e){"row"===e.type&&t.layoutRow(e)}),this.layoutCalcRows(),this.layoutColumnPosition(!0),this.table.rowManager.tableElement.style.marginRight=this.rightMargin)},FrozenColumns.prototype.layoutRow=function(t){var e=this;t.getElement().style.paddingLeft=this.leftMargin,this.leftColumns.forEach(function(o){var n=t.getCell(o);n&&e.layoutElement(n.getElement(),o)}),this.rightColumns.forEach(function(o){var n=t.getCell(o);n&&e.layoutElement(n.getElement(),o)})},FrozenColumns.prototype.layoutElement=function(t,e){e.modules.frozen&&(t.style.position="absolute",t.style.left=e.modules.frozen.margin,t.classList.add("tabulator-frozen"),e.modules.frozen.edge&&t.classList.add("tabulator-frozen-"+e.modules.frozen.position))},FrozenColumns.prototype._calcSpace=function(t,e){for(var o=0,n=0;n<e;n++)t[n].visible&&(o+=t[n].getWidth());return o},Tabulator.prototype.registerModule("frozenColumns",FrozenColumns);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/frozen_rows.js b/app/static/vendors/tabulator/js.old/modules/frozen_rows.js
deleted file mode 100644 (file)
index 6d2d352..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-
-var FrozenRows = function FrozenRows(table) {
-       this.table = table; //hold Tabulator object
-       this.topElement = document.createElement("div");
-       this.rows = [];
-       this.displayIndex = 0; //index in display pipeline
-};
-
-FrozenRows.prototype.initialize = function () {
-       this.rows = [];
-
-       this.topElement.classList.add("tabulator-frozen-rows-holder");
-
-       // this.table.columnManager.element.append(this.topElement);
-       this.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);
-};
-
-FrozenRows.prototype.setDisplayIndex = function (index) {
-       this.displayIndex = index;
-};
-
-FrozenRows.prototype.getDisplayIndex = function () {
-       return this.displayIndex;
-};
-
-FrozenRows.prototype.isFrozen = function () {
-       return !!this.rows.length;
-};
-
-//filter frozen rows out of display data
-FrozenRows.prototype.getRows = function (rows) {
-       var self = this,
-           frozen = [],
-           output = rows.slice(0);
-
-       this.rows.forEach(function (row) {
-               var index = output.indexOf(row);
-
-               if (index > -1) {
-                       output.splice(index, 1);
-               }
-       });
-
-       return output;
-};
-
-FrozenRows.prototype.freezeRow = function (row) {
-       if (!row.modules.frozen) {
-               row.modules.frozen = true;
-               this.topElement.appendChild(row.getElement());
-               row.initialize();
-               row.normalizeHeight();
-               this.table.rowManager.adjustTableSize();
-
-               this.rows.push(row);
-
-               this.table.rowManager.refreshActiveData("display");
-
-               this.styleRows();
-       } else {
-               console.warn("Freeze Error - Row is already frozen");
-       }
-};
-
-FrozenRows.prototype.unfreezeRow = function (row) {
-       var index = this.rows.indexOf(row);
-
-       if (row.modules.frozen) {
-
-               row.modules.frozen = false;
-
-               var rowEl = row.getElement();
-               rowEl.parentNode.removeChild(rowEl);
-
-               this.table.rowManager.adjustTableSize();
-
-               this.rows.splice(index, 1);
-
-               this.table.rowManager.refreshActiveData("display");
-
-               if (this.rows.length) {
-                       this.styleRows();
-               }
-       } else {
-               console.warn("Freeze Error - Row is already unfrozen");
-       }
-};
-
-FrozenRows.prototype.styleRows = function (row) {
-       var self = this;
-
-       this.rows.forEach(function (row, i) {
-               self.table.rowManager.styleRow(row, i);
-       });
-};
-
-Tabulator.prototype.registerModule("frozenRows", FrozenRows);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/frozen_rows.min.js b/app/static/vendors/tabulator/js.old/modules/frozen_rows.min.js
deleted file mode 100644 (file)
index 2c61d7b..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-var FrozenRows=function(e){this.table=e,this.topElement=document.createElement("div"),this.rows=[],this.displayIndex=0};FrozenRows.prototype.initialize=function(){this.rows=[],this.topElement.classList.add("tabulator-frozen-rows-holder"),this.table.columnManager.getElement().insertBefore(this.topElement,this.table.columnManager.headersElement.nextSibling)},FrozenRows.prototype.setDisplayIndex=function(e){this.displayIndex=e},FrozenRows.prototype.getDisplayIndex=function(){return this.displayIndex},FrozenRows.prototype.isFrozen=function(){return!!this.rows.length},FrozenRows.prototype.getRows=function(e){var o=e.slice(0);return this.rows.forEach(function(e){var t=o.indexOf(e);t>-1&&o.splice(t,1)}),o},FrozenRows.prototype.freezeRow=function(e){e.modules.frozen?console.warn("Freeze Error - Row is already frozen"):(e.modules.frozen=!0,this.topElement.appendChild(e.getElement()),e.initialize(),e.normalizeHeight(),this.table.rowManager.adjustTableSize(),this.rows.push(e),this.table.rowManager.refreshActiveData("display"),this.styleRows())},FrozenRows.prototype.unfreezeRow=function(e){var o=this.rows.indexOf(e);if(e.modules.frozen){e.modules.frozen=!1;var t=e.getElement();t.parentNode.removeChild(t),this.table.rowManager.adjustTableSize(),this.rows.splice(o,1),this.table.rowManager.refreshActiveData("display"),this.rows.length&&this.styleRows()}else console.warn("Freeze Error - Row is already unfrozen")},FrozenRows.prototype.styleRows=function(e){var o=this;this.rows.forEach(function(e,t){o.table.rowManager.styleRow(e,t)})},Tabulator.prototype.registerModule("frozenRows",FrozenRows);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/group_rows.js b/app/static/vendors/tabulator/js.old/modules/group_rows.js
deleted file mode 100644 (file)
index d5ad938..0000000
+++ /dev/null
@@ -1,1072 +0,0 @@
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-
-//public group object
-var GroupComponent = function GroupComponent(group) {
-       this._group = group;
-       this.type = "GroupComponent";
-};
-
-GroupComponent.prototype.getKey = function () {
-       return this._group.key;
-};
-
-GroupComponent.prototype.getField = function () {
-       return this._group.field;
-};
-
-GroupComponent.prototype.getElement = function () {
-       return this._group.element;
-};
-
-GroupComponent.prototype.getRows = function () {
-       return this._group.getRows(true);
-};
-
-GroupComponent.prototype.getSubGroups = function () {
-       return this._group.getSubGroups(true);
-};
-
-GroupComponent.prototype.getParentGroup = function () {
-       return this._group.parent ? this._group.parent.getComponent() : false;
-};
-
-GroupComponent.prototype.getVisibility = function () {
-       return this._group.visible;
-};
-
-GroupComponent.prototype.show = function () {
-       this._group.show();
-};
-
-GroupComponent.prototype.hide = function () {
-       this._group.hide();
-};
-
-GroupComponent.prototype.toggle = function () {
-       this._group.toggleVisibility();
-};
-
-GroupComponent.prototype._getSelf = function () {
-       return this._group;
-};
-
-GroupComponent.prototype.getTable = function () {
-       return this._group.groupManager.table;
-};
-
-//////////////////////////////////////////////////
-//////////////// Group Functions /////////////////
-//////////////////////////////////////////////////
-
-var Group = function Group(groupManager, parent, level, key, field, generator, oldGroup) {
-
-       this.groupManager = groupManager;
-       this.parent = parent;
-       this.key = key;
-       this.level = level;
-       this.field = field;
-       this.hasSubGroups = level < groupManager.groupIDLookups.length - 1;
-       this.addRow = this.hasSubGroups ? this._addRowToGroup : this._addRow;
-       this.type = "group"; //type of element
-       this.old = oldGroup;
-       this.rows = [];
-       this.groups = [];
-       this.groupList = [];
-       this.generator = generator;
-       this.elementContents = false;
-       this.height = 0;
-       this.outerHeight = 0;
-       this.initialized = false;
-       this.calcs = {};
-       this.initialized = false;
-       this.modules = {};
-       this.arrowElement = false;
-
-       this.visible = oldGroup ? oldGroup.visible : typeof groupManager.startOpen[level] !== "undefined" ? groupManager.startOpen[level] : groupManager.startOpen[0];
-
-       this.createElements();
-       this.addBindings();
-
-       this.createValueGroups();
-};
-
-Group.prototype.wipe = function () {
-       if (this.groupList.length) {
-               this.groupList.forEach(function (group) {
-                       group.wipe();
-               });
-       } else {
-               this.element = false;
-               this.arrowElement = false;
-               this.elementContents = false;
-       }
-};
-
-Group.prototype.createElements = function () {
-       var arrow = document.createElement("div");
-       arrow.classList.add("tabulator-arrow");
-
-       this.element = document.createElement("div");
-       this.element.classList.add("tabulator-row");
-       this.element.classList.add("tabulator-group");
-       this.element.classList.add("tabulator-group-level-" + this.level);
-       this.element.setAttribute("role", "rowgroup");
-
-       this.arrowElement = document.createElement("div");
-       this.arrowElement.classList.add("tabulator-group-toggle");
-       this.arrowElement.appendChild(arrow);
-
-       //setup movable rows
-       if (this.groupManager.table.options.movableRows !== false && this.groupManager.table.modExists("moveRow")) {
-               this.groupManager.table.modules.moveRow.initializeGroupHeader(this);
-       }
-};
-
-Group.prototype.createValueGroups = function () {
-       var _this = this;
-
-       var level = this.level + 1;
-       if (this.groupManager.allowedValues && this.groupManager.allowedValues[level]) {
-               this.groupManager.allowedValues[level].forEach(function (value) {
-                       _this._createGroup(value, level);
-               });
-       }
-};
-
-Group.prototype.addBindings = function () {
-       var self = this,
-           dblTap,
-           tapHold,
-           tap,
-           toggleElement;
-
-       //handle group click events
-       if (self.groupManager.table.options.groupClick) {
-               self.element.addEventListener("click", function (e) {
-                       self.groupManager.table.options.groupClick.call(self.groupManager.table, e, self.getComponent());
-               });
-       }
-
-       if (self.groupManager.table.options.groupDblClick) {
-               self.element.addEventListener("dblclick", function (e) {
-                       self.groupManager.table.options.groupDblClick.call(self.groupManager.table, e, self.getComponent());
-               });
-       }
-
-       if (self.groupManager.table.options.groupContext) {
-               self.element.addEventListener("contextmenu", function (e) {
-                       self.groupManager.table.options.groupContext.call(self.groupManager.table, e, self.getComponent());
-               });
-       }
-
-       if (self.groupManager.table.options.groupTap) {
-
-               tap = false;
-
-               self.element.addEventListener("touchstart", function (e) {
-                       tap = true;
-               }, { passive: true });
-
-               self.element.addEventListener("touchend", function (e) {
-                       if (tap) {
-                               self.groupManager.table.options.groupTap(e, self.getComponent());
-                       }
-
-                       tap = false;
-               });
-       }
-
-       if (self.groupManager.table.options.groupDblTap) {
-
-               dblTap = null;
-
-               self.element.addEventListener("touchend", function (e) {
-
-                       if (dblTap) {
-                               clearTimeout(dblTap);
-                               dblTap = null;
-
-                               self.groupManager.table.options.groupDblTap(e, self.getComponent());
-                       } else {
-
-                               dblTap = setTimeout(function () {
-                                       clearTimeout(dblTap);
-                                       dblTap = null;
-                               }, 300);
-                       }
-               });
-       }
-
-       if (self.groupManager.table.options.groupTapHold) {
-
-               tapHold = null;
-
-               self.element.addEventListener("touchstart", function (e) {
-                       clearTimeout(tapHold);
-
-                       tapHold = setTimeout(function () {
-                               clearTimeout(tapHold);
-                               tapHold = null;
-                               tap = false;
-                               self.groupManager.table.options.groupTapHold(e, self.getComponent());
-                       }, 1000);
-               }, { passive: true });
-
-               self.element.addEventListener("touchend", function (e) {
-                       clearTimeout(tapHold);
-                       tapHold = null;
-               });
-       }
-
-       if (self.groupManager.table.options.groupToggleElement) {
-               toggleElement = self.groupManager.table.options.groupToggleElement == "arrow" ? self.arrowElement : self.element;
-
-               toggleElement.addEventListener("click", function (e) {
-                       e.stopPropagation();
-                       e.stopImmediatePropagation();
-                       self.toggleVisibility();
-               });
-       }
-};
-
-Group.prototype._createGroup = function (groupID, level) {
-       var groupKey = level + "_" + groupID;
-       var group = new Group(this.groupManager, this, level, groupID, this.groupManager.groupIDLookups[level].field, this.groupManager.headerGenerator[level] || this.groupManager.headerGenerator[0], this.old ? this.old.groups[groupKey] : false);
-
-       this.groups[groupKey] = group;
-       this.groupList.push(group);
-};
-
-Group.prototype._addRowToGroup = function (row) {
-
-       var level = this.level + 1;
-
-       if (this.hasSubGroups) {
-               var groupID = this.groupManager.groupIDLookups[level].func(row.getData()),
-                   groupKey = level + "_" + groupID;
-
-               if (this.groupManager.allowedValues && this.groupManager.allowedValues[level]) {
-                       if (this.groups[groupKey]) {
-                               this.groups[groupKey].addRow(row);
-                       }
-               } else {
-                       if (!this.groups[groupKey]) {
-                               this._createGroup(groupID, level);
-                       }
-
-                       this.groups[groupKey].addRow(row);
-               }
-       }
-};
-
-Group.prototype._addRow = function (row) {
-       this.rows.push(row);
-       row.modules.group = this;
-};
-
-Group.prototype.insertRow = function (row, to, after) {
-       var data = this.conformRowData({});
-
-       row.updateData(data);
-
-       var toIndex = this.rows.indexOf(to);
-
-       if (toIndex > -1) {
-               if (after) {
-                       this.rows.splice(toIndex + 1, 0, row);
-               } else {
-                       this.rows.splice(toIndex, 0, row);
-               }
-       } else {
-               if (after) {
-                       this.rows.push(row);
-               } else {
-                       this.rows.unshift(row);
-               }
-       }
-
-       row.modules.group = this;
-
-       this.generateGroupHeaderContents();
-
-       if (this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.options.columnCalcs != "table") {
-               this.groupManager.table.modules.columnCalcs.recalcGroup(this);
-       }
-
-       this.groupManager.updateGroupRows(true);
-};
-
-Group.prototype.scrollHeader = function (left) {
-       this.arrowElement.style.marginLeft = left;
-
-       this.groupList.forEach(function (child) {
-               child.scrollHeader(left);
-       });
-};
-
-Group.prototype.getRowIndex = function (row) {};
-
-//update row data to match grouping contraints
-Group.prototype.conformRowData = function (data) {
-       if (this.field) {
-               data[this.field] = this.key;
-       } else {
-               console.warn("Data Conforming Error - Cannot conform row data to match new group as groupBy is a function");
-       }
-
-       if (this.parent) {
-               data = this.parent.conformRowData(data);
-       }
-
-       return data;
-};
-
-Group.prototype.removeRow = function (row) {
-       var index = this.rows.indexOf(row);
-       var el = row.getElement();
-
-       if (index > -1) {
-               this.rows.splice(index, 1);
-       }
-
-       if (!this.groupManager.table.options.groupValues && !this.rows.length) {
-               if (this.parent) {
-                       this.parent.removeGroup(this);
-               } else {
-                       this.groupManager.removeGroup(this);
-               }
-
-               this.groupManager.updateGroupRows(true);
-       } else {
-
-               if (el.parentNode) {
-                       el.parentNode.removeChild(el);
-               }
-
-               this.generateGroupHeaderContents();
-
-               if (this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.options.columnCalcs != "table") {
-                       this.groupManager.table.modules.columnCalcs.recalcGroup(this);
-               }
-       }
-};
-
-Group.prototype.removeGroup = function (group) {
-       var groupKey = group.level + "_" + group.key,
-           index;
-
-       if (this.groups[groupKey]) {
-               delete this.groups[groupKey];
-
-               index = this.groupList.indexOf(group);
-
-               if (index > -1) {
-                       this.groupList.splice(index, 1);
-               }
-
-               if (!this.groupList.length) {
-                       if (this.parent) {
-                               this.parent.removeGroup(this);
-                       } else {
-                               this.groupManager.removeGroup(this);
-                       }
-               }
-       }
-};
-
-Group.prototype.getHeadersAndRows = function (noCalc) {
-       var output = [];
-
-       output.push(this);
-
-       this._visSet();
-
-       if (this.visible) {
-               if (this.groupList.length) {
-                       this.groupList.forEach(function (group) {
-                               output = output.concat(group.getHeadersAndRows(noCalc));
-                       });
-               } else {
-                       if (!noCalc && this.groupManager.table.options.columnCalcs != "table" && this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.modules.columnCalcs.hasTopCalcs()) {
-                               if (this.calcs.top) {
-                                       this.calcs.top.detachElement();
-                                       this.calcs.top.deleteCells();
-                               }
-
-                               this.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);
-                               output.push(this.calcs.top);
-                       }
-
-                       output = output.concat(this.rows);
-
-                       if (!noCalc && this.groupManager.table.options.columnCalcs != "table" && this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()) {
-                               if (this.calcs.bottom) {
-                                       this.calcs.bottom.detachElement();
-                                       this.calcs.bottom.deleteCells();
-                               }
-
-                               this.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);
-                               output.push(this.calcs.bottom);
-                       }
-               }
-       } else {
-               if (!this.groupList.length && this.groupManager.table.options.columnCalcs != "table") {
-
-                       if (this.groupManager.table.modExists("columnCalcs")) {
-
-                               if (!noCalc && this.groupManager.table.modules.columnCalcs.hasTopCalcs()) {
-                                       if (this.calcs.top) {
-                                               this.calcs.top.detachElement();
-                                               this.calcs.top.deleteCells();
-                                       }
-
-                                       if (this.groupManager.table.options.groupClosedShowCalcs) {
-                                               this.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);
-                                               output.push(this.calcs.top);
-                                       }
-                               }
-
-                               if (!noCalc && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()) {
-                                       if (this.calcs.bottom) {
-                                               this.calcs.bottom.detachElement();
-                                               this.calcs.bottom.deleteCells();
-                                       }
-
-                                       if (this.groupManager.table.options.groupClosedShowCalcs) {
-                                               this.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);
-                                               output.push(this.calcs.bottom);
-                                       }
-                               }
-                       }
-               }
-       }
-
-       return output;
-};
-
-Group.prototype.getData = function (visible, transform) {
-       var self = this,
-           output = [];
-
-       this._visSet();
-
-       if (!visible || visible && this.visible) {
-               this.rows.forEach(function (row) {
-                       output.push(row.getData(transform || "data"));
-               });
-       }
-
-       return output;
-};
-
-// Group.prototype.getRows = function(){
-//     this._visSet();
-
-//     return this.visible ? this.rows : [];
-// };
-
-Group.prototype.getRowCount = function () {
-       var count = 0;
-
-       if (this.groupList.length) {
-               this.groupList.forEach(function (group) {
-                       count += group.getRowCount();
-               });
-       } else {
-               count = this.rows.length;
-       }
-       return count;
-};
-
-Group.prototype.toggleVisibility = function () {
-       if (this.visible) {
-               this.hide();
-       } else {
-               this.show();
-       }
-};
-
-Group.prototype.hide = function () {
-       this.visible = false;
-
-       if (this.groupManager.table.rowManager.getRenderMode() == "classic" && !this.groupManager.table.options.pagination) {
-
-               this.element.classList.remove("tabulator-group-visible");
-
-               if (this.groupList.length) {
-                       this.groupList.forEach(function (group) {
-
-                               var rows = group.getHeadersAndRows();
-
-                               rows.forEach(function (row) {
-                                       row.detachElement();
-                               });
-                       });
-               } else {
-                       this.rows.forEach(function (row) {
-                               var rowEl = row.getElement();
-                               rowEl.parentNode.removeChild(rowEl);
-                       });
-               }
-
-               this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());
-
-               this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();
-       } else {
-               this.groupManager.updateGroupRows(true);
-       }
-
-       this.groupManager.table.options.groupVisibilityChanged.call(this.table, this.getComponent(), false);
-};
-
-Group.prototype.show = function () {
-       var self = this;
-
-       self.visible = true;
-
-       if (this.groupManager.table.rowManager.getRenderMode() == "classic" && !this.groupManager.table.options.pagination) {
-
-               this.element.classList.add("tabulator-group-visible");
-
-               var prev = self.getElement();
-
-               if (this.groupList.length) {
-                       this.groupList.forEach(function (group) {
-                               var rows = group.getHeadersAndRows();
-
-                               rows.forEach(function (row) {
-                                       var rowEl = row.getElement();
-                                       prev.parentNode.insertBefore(rowEl, prev.nextSibling);
-                                       row.initialize();
-                                       prev = rowEl;
-                               });
-                       });
-               } else {
-                       self.rows.forEach(function (row) {
-                               var rowEl = row.getElement();
-                               prev.parentNode.insertBefore(rowEl, prev.nextSibling);
-                               row.initialize();
-                               prev = rowEl;
-                       });
-               }
-
-               this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());
-
-               this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();
-       } else {
-               this.groupManager.updateGroupRows(true);
-       }
-
-       this.groupManager.table.options.groupVisibilityChanged.call(this.table, this.getComponent(), true);
-};
-
-Group.prototype._visSet = function () {
-       var data = [];
-
-       if (typeof this.visible == "function") {
-
-               this.rows.forEach(function (row) {
-                       data.push(row.getData());
-               });
-
-               this.visible = this.visible(this.key, this.getRowCount(), data, this.getComponent());
-       }
-};
-
-Group.prototype.getRowGroup = function (row) {
-       var match = false;
-       if (this.groupList.length) {
-               this.groupList.forEach(function (group) {
-                       var result = group.getRowGroup(row);
-
-                       if (result) {
-                               match = result;
-                       }
-               });
-       } else {
-               if (this.rows.find(function (item) {
-                       return item === row;
-               })) {
-                       match = this;
-               }
-       }
-
-       return match;
-};
-
-Group.prototype.getSubGroups = function (component) {
-       var output = [];
-
-       this.groupList.forEach(function (child) {
-               output.push(component ? child.getComponent() : child);
-       });
-
-       return output;
-};
-
-Group.prototype.getRows = function (compoment) {
-       var output = [];
-
-       this.rows.forEach(function (row) {
-               output.push(compoment ? row.getComponent() : row);
-       });
-
-       return output;
-};
-
-Group.prototype.generateGroupHeaderContents = function () {
-       var data = [];
-
-       this.rows.forEach(function (row) {
-               data.push(row.getData());
-       });
-
-       this.elementContents = this.generator(this.key, this.getRowCount(), data, this.getComponent());
-
-       while (this.element.firstChild) {
-               this.element.removeChild(this.element.firstChild);
-       }if (typeof this.elementContents === "string") {
-               this.element.innerHTML = this.elementContents;
-       } else {
-               this.element.appendChild(this.elementContents);
-       }
-
-       this.element.insertBefore(this.arrowElement, this.element.firstChild);
-};
-
-////////////// Standard Row Functions //////////////
-
-Group.prototype.getElement = function () {
-       this.addBindingsd = false;
-
-       this._visSet();
-
-       if (this.visible) {
-               this.element.classList.add("tabulator-group-visible");
-       } else {
-               this.element.classList.remove("tabulator-group-visible");
-       }
-
-       for (var i = 0; i < this.element.childNodes.length; ++i) {
-               this.element.childNodes[i].parentNode.removeChild(this.element.childNodes[i]);
-       }
-
-       this.generateGroupHeaderContents();
-
-       // this.addBindings();
-
-       return this.element;
-};
-
-Group.prototype.detachElement = function () {
-       if (this.element && this.element.parentNode) {
-               this.element.parentNode.removeChild(this.element);
-       }
-};
-
-//normalize the height of elements in the row
-Group.prototype.normalizeHeight = function () {
-       this.setHeight(this.element.clientHeight);
-};
-
-Group.prototype.initialize = function (force) {
-       if (!this.initialized || force) {
-               this.normalizeHeight();
-               this.initialized = true;
-       }
-};
-
-Group.prototype.reinitialize = function () {
-       this.initialized = false;
-       this.height = 0;
-
-       if (Tabulator.prototype.helpers.elVisible(this.element)) {
-               this.initialize(true);
-       }
-};
-
-Group.prototype.setHeight = function (height) {
-       if (this.height != height) {
-               this.height = height;
-               this.outerHeight = this.element.offsetHeight;
-       }
-};
-
-//return rows outer height
-Group.prototype.getHeight = function () {
-       return this.outerHeight;
-};
-
-Group.prototype.getGroup = function () {
-       return this;
-};
-
-Group.prototype.reinitializeHeight = function () {};
-Group.prototype.calcHeight = function () {};
-Group.prototype.setCellHeight = function () {};
-Group.prototype.clearCellHeight = function () {};
-
-//////////////// Object Generation /////////////////
-Group.prototype.getComponent = function () {
-       return new GroupComponent(this);
-};
-
-//////////////////////////////////////////////////
-////////////// Group Row Extension ///////////////
-//////////////////////////////////////////////////
-
-var GroupRows = function GroupRows(table) {
-
-       this.table = table; //hold Tabulator object
-
-       this.groupIDLookups = false; //enable table grouping and set field to group by
-       this.startOpen = [function () {
-               return false;
-       }]; //starting state of group
-       this.headerGenerator = [function () {
-               return "";
-       }];
-       this.groupList = []; //ordered list of groups
-       this.allowedValues = false;
-       this.groups = {}; //hold row groups
-       this.displayIndex = 0; //index in display pipeline
-};
-
-//initialize group configuration
-GroupRows.prototype.initialize = function () {
-       var self = this,
-           groupBy = self.table.options.groupBy,
-           startOpen = self.table.options.groupStartOpen,
-           groupHeader = self.table.options.groupHeader;
-
-       this.allowedValues = self.table.options.groupValues;
-
-       if (Array.isArray(groupBy) && Array.isArray(groupHeader) && groupBy.length > groupHeader.length) {
-               console.warn("Error creating group headers, groupHeader array is shorter than groupBy array");
-       }
-
-       self.headerGenerator = [function () {
-               return "";
-       }];
-       this.startOpen = [function () {
-               return false;
-       }]; //starting state of group
-
-       self.table.modules.localize.bind("groups|item", function (langValue, lang) {
-               self.headerGenerator[0] = function (value, count, data) {
-                       //header layout function
-                       return (typeof value === "undefined" ? "" : value) + "<span>(" + count + " " + (count === 1 ? langValue : lang.groups.items) + ")</span>";
-               };
-       });
-
-       this.groupIDLookups = [];
-
-       if (Array.isArray(groupBy) || groupBy) {
-               if (this.table.modExists("columnCalcs") && this.table.options.columnCalcs != "table" && this.table.options.columnCalcs != "both") {
-                       this.table.modules.columnCalcs.removeCalcs();
-               }
-       } else {
-               if (this.table.modExists("columnCalcs") && this.table.options.columnCalcs != "group") {
-
-                       var cols = this.table.columnManager.getRealColumns();
-
-                       cols.forEach(function (col) {
-                               if (col.definition.topCalc) {
-                                       self.table.modules.columnCalcs.initializeTopRow();
-                               }
-
-                               if (col.definition.bottomCalc) {
-                                       self.table.modules.columnCalcs.initializeBottomRow();
-                               }
-                       });
-               }
-       }
-
-       if (!Array.isArray(groupBy)) {
-               groupBy = [groupBy];
-       }
-
-       groupBy.forEach(function (group, i) {
-               var lookupFunc, column;
-
-               if (typeof group == "function") {
-                       lookupFunc = group;
-               } else {
-                       column = self.table.columnManager.getColumnByField(group);
-
-                       if (column) {
-                               lookupFunc = function lookupFunc(data) {
-                                       return column.getFieldValue(data);
-                               };
-                       } else {
-                               lookupFunc = function lookupFunc(data) {
-                                       return data[group];
-                               };
-                       }
-               }
-
-               self.groupIDLookups.push({
-                       field: typeof group === "function" ? false : group,
-                       func: lookupFunc,
-                       values: self.allowedValues ? self.allowedValues[i] : false
-               });
-       });
-
-       if (startOpen) {
-
-               if (!Array.isArray(startOpen)) {
-                       startOpen = [startOpen];
-               }
-
-               startOpen.forEach(function (level) {
-                       level = typeof level == "function" ? level : function () {
-                               return true;
-                       };
-               });
-
-               self.startOpen = startOpen;
-       }
-
-       if (groupHeader) {
-               self.headerGenerator = Array.isArray(groupHeader) ? groupHeader : [groupHeader];
-       }
-
-       this.initialized = true;
-};
-
-GroupRows.prototype.setDisplayIndex = function (index) {
-       this.displayIndex = index;
-};
-
-GroupRows.prototype.getDisplayIndex = function () {
-       return this.displayIndex;
-};
-
-//return appropriate rows with group headers
-GroupRows.prototype.getRows = function (rows) {
-       if (this.groupIDLookups.length) {
-
-               this.table.options.dataGrouping.call(this.table);
-
-               this.generateGroups(rows);
-
-               if (this.table.options.dataGrouped) {
-                       this.table.options.dataGrouped.call(this.table, this.getGroups(true));
-               }
-
-               return this.updateGroupRows();
-       } else {
-               return rows.slice(0);
-       }
-};
-
-GroupRows.prototype.getGroups = function (compoment) {
-       var groupComponents = [];
-
-       this.groupList.forEach(function (group) {
-               groupComponents.push(compoment ? group.getComponent() : group);
-       });
-
-       return groupComponents;
-};
-
-GroupRows.prototype.getChildGroups = function (group) {
-       var _this2 = this;
-
-       var groupComponents = [];
-
-       if (!group) {
-               group = this;
-       }
-
-       group.groupList.forEach(function (child) {
-               if (child.groupList.length) {
-                       groupComponents = groupComponents.concat(_this2.getChildGroups(child));
-               } else {
-                       groupComponents.push(child);
-               }
-       });
-
-       return groupComponents;
-};
-
-GroupRows.prototype.wipe = function () {
-       this.groupList.forEach(function (group) {
-               group.wipe();
-       });
-};
-
-GroupRows.prototype.pullGroupListData = function (groupList) {
-       var self = this;
-       var groupListData = [];
-
-       groupList.forEach(function (group) {
-               var groupHeader = {};
-               groupHeader.level = 0;
-               groupHeader.rowCount = 0;
-               groupHeader.headerContent = "";
-               var childData = [];
-
-               if (group.hasSubGroups) {
-                       childData = self.pullGroupListData(group.groupList);
-
-                       groupHeader.level = group.level;
-                       groupHeader.rowCount = childData.length - group.groupList.length; // data length minus number of sub-headers
-                       groupHeader.headerContent = group.generator(group.key, groupHeader.rowCount, group.rows, group);
-
-                       groupListData.push(groupHeader);
-                       groupListData = groupListData.concat(childData);
-               } else {
-                       groupHeader.level = group.level;
-                       groupHeader.headerContent = group.generator(group.key, group.rows.length, group.rows, group);
-                       groupHeader.rowCount = group.getRows().length;
-
-                       groupListData.push(groupHeader);
-
-                       group.getRows().forEach(function (row) {
-                               groupListData.push(row.getData("data"));
-                       });
-               }
-       });
-
-       return groupListData;
-};
-
-GroupRows.prototype.getGroupedData = function () {
-
-       return this.pullGroupListData(this.groupList);
-};
-
-GroupRows.prototype.getRowGroup = function (row) {
-       var match = false;
-
-       this.groupList.forEach(function (group) {
-               var result = group.getRowGroup(row);
-
-               if (result) {
-                       match = result;
-               }
-       });
-
-       return match;
-};
-
-GroupRows.prototype.countGroups = function () {
-       return this.groupList.length;
-};
-
-GroupRows.prototype.generateGroups = function (rows) {
-       var self = this,
-           oldGroups = self.groups;
-
-       self.groups = {};
-       self.groupList = [];
-
-       if (this.allowedValues && this.allowedValues[0]) {
-               this.allowedValues[0].forEach(function (value) {
-                       self.createGroup(value, 0, oldGroups);
-               });
-
-               rows.forEach(function (row) {
-                       self.assignRowToExistingGroup(row, oldGroups);
-               });
-       } else {
-               rows.forEach(function (row) {
-                       self.assignRowToGroup(row, oldGroups);
-               });
-       }
-};
-
-GroupRows.prototype.createGroup = function (groupID, level, oldGroups) {
-       var groupKey = level + "_" + groupID,
-           group;
-
-       oldGroups = oldGroups || [];
-
-       group = new Group(this, false, level, groupID, this.groupIDLookups[0].field, this.headerGenerator[0], oldGroups[groupKey]);
-
-       this.groups[groupKey] = group;
-       this.groupList.push(group);
-};
-
-// GroupRows.prototype.assignRowToGroup = function(row, oldGroups){
-//     var groupID = this.groupIDLookups[0].func(row.getData()),
-//     groupKey = "0_" + groupID;
-
-//     if(!this.groups[groupKey]){
-//             this.createGroup(groupID, 0, oldGroups);
-//     }
-
-//     this.groups[groupKey].addRow(row);
-// };
-
-GroupRows.prototype.assignRowToExistingGroup = function (row, oldGroups) {
-       var groupID = this.groupIDLookups[0].func(row.getData()),
-           groupKey = "0_" + groupID;
-
-       if (this.groups[groupKey]) {
-               this.groups[groupKey].addRow(row);
-       }
-};
-
-GroupRows.prototype.assignRowToGroup = function (row, oldGroups) {
-       var groupID = this.groupIDLookups[0].func(row.getData()),
-           newGroupNeeded = !this.groups["0_" + groupID];
-
-       if (newGroupNeeded) {
-               this.createGroup(groupID, 0, oldGroups);
-       }
-
-       this.groups["0_" + groupID].addRow(row);
-
-       return !newGroupNeeded;
-};
-
-GroupRows.prototype.updateGroupRows = function (force) {
-       var self = this,
-           output = [],
-           oldRowCount;
-
-       self.groupList.forEach(function (group) {
-               output = output.concat(group.getHeadersAndRows());
-       });
-
-       //force update of table display
-       if (force) {
-
-               var displayIndex = self.table.rowManager.setDisplayRows(output, this.getDisplayIndex());
-
-               if (displayIndex !== true) {
-                       this.setDisplayIndex(displayIndex);
-               }
-
-               self.table.rowManager.refreshActiveData("group", true, true);
-       }
-
-       return output;
-};
-
-GroupRows.prototype.scrollHeaders = function (left) {
-       left = left + "px";
-
-       this.groupList.forEach(function (group) {
-               group.scrollHeader(left);
-       });
-};
-
-GroupRows.prototype.removeGroup = function (group) {
-       var groupKey = group.level + "_" + group.key,
-           index;
-
-       if (this.groups[groupKey]) {
-               delete this.groups[groupKey];
-
-               index = this.groupList.indexOf(group);
-
-               if (index > -1) {
-                       this.groupList.splice(index, 1);
-               }
-       }
-};
-
-Tabulator.prototype.registerModule("groupRows", GroupRows);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/group_rows.min.js b/app/static/vendors/tabulator/js.old/modules/group_rows.min.js
deleted file mode 100644 (file)
index 5ae3daf..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-var GroupComponent=function(t){this._group=t,this.type="GroupComponent"};GroupComponent.prototype.getKey=function(){return this._group.key},GroupComponent.prototype.getField=function(){return this._group.field},GroupComponent.prototype.getElement=function(){return this._group.element},GroupComponent.prototype.getRows=function(){return this._group.getRows(!0)},GroupComponent.prototype.getSubGroups=function(){return this._group.getSubGroups(!0)},GroupComponent.prototype.getParentGroup=function(){return!!this._group.parent&&this._group.parent.getComponent()},GroupComponent.prototype.getVisibility=function(){return this._group.visible},GroupComponent.prototype.show=function(){this._group.show()},GroupComponent.prototype.hide=function(){this._group.hide()},GroupComponent.prototype.toggle=function(){this._group.toggleVisibility()},GroupComponent.prototype._getSelf=function(){return this._group},GroupComponent.prototype.getTable=function(){return this._group.groupManager.table};var Group=function(t,o,e,r,i,s,n){this.groupManager=t,this.parent=o,this.key=r,this.level=e,this.field=i,this.hasSubGroups=e<t.groupIDLookups.length-1,this.addRow=this.hasSubGroups?this._addRowToGroup:this._addRow,this.type="group",this.old=n,this.rows=[],this.groups=[],this.groupList=[],this.generator=s,this.elementContents=!1,this.height=0,this.outerHeight=0,this.initialized=!1,this.calcs={},this.initialized=!1,this.modules={},this.arrowElement=!1,this.visible=n?n.visible:void 0!==t.startOpen[e]?t.startOpen[e]:t.startOpen[0],this.createElements(),this.addBindings(),this.createValueGroups()};Group.prototype.wipe=function(){this.groupList.length?this.groupList.forEach(function(t){t.wipe()}):(this.element=!1,this.arrowElement=!1,this.elementContents=!1)},Group.prototype.createElements=function(){var t=document.createElement("div");t.classList.add("tabulator-arrow"),this.element=document.createElement("div"),this.element.classList.add("tabulator-row"),this.element.classList.add("tabulator-group"),this.element.classList.add("tabulator-group-level-"+this.level),this.element.setAttribute("role","rowgroup"),this.arrowElement=document.createElement("div"),this.arrowElement.classList.add("tabulator-group-toggle"),this.arrowElement.appendChild(t),!1!==this.groupManager.table.options.movableRows&&this.groupManager.table.modExists("moveRow")&&this.groupManager.table.modules.moveRow.initializeGroupHeader(this)},Group.prototype.createValueGroups=function(){var t=this,o=this.level+1;this.groupManager.allowedValues&&this.groupManager.allowedValues[o]&&this.groupManager.allowedValues[o].forEach(function(e){t._createGroup(e,o)})},Group.prototype.addBindings=function(){var t,o,e,r,i=this;i.groupManager.table.options.groupClick&&i.element.addEventListener("click",function(t){i.groupManager.table.options.groupClick.call(i.groupManager.table,t,i.getComponent())}),i.groupManager.table.options.groupDblClick&&i.element.addEventListener("dblclick",function(t){i.groupManager.table.options.groupDblClick.call(i.groupManager.table,t,i.getComponent())}),i.groupManager.table.options.groupContext&&i.element.addEventListener("contextmenu",function(t){i.groupManager.table.options.groupContext.call(i.groupManager.table,t,i.getComponent())}),i.groupManager.table.options.groupTap&&(e=!1,i.element.addEventListener("touchstart",function(t){e=!0},{passive:!0}),i.element.addEventListener("touchend",function(t){e&&i.groupManager.table.options.groupTap(t,i.getComponent()),e=!1})),i.groupManager.table.options.groupDblTap&&(t=null,i.element.addEventListener("touchend",function(o){t?(clearTimeout(t),t=null,i.groupManager.table.options.groupDblTap(o,i.getComponent())):t=setTimeout(function(){clearTimeout(t),t=null},300)})),i.groupManager.table.options.groupTapHold&&(o=null,i.element.addEventListener("touchstart",function(t){clearTimeout(o),o=setTimeout(function(){clearTimeout(o),o=null,e=!1,i.groupManager.table.options.groupTapHold(t,i.getComponent())},1e3)},{passive:!0}),i.element.addEventListener("touchend",function(t){clearTimeout(o),o=null})),i.groupManager.table.options.groupToggleElement&&(r="arrow"==i.groupManager.table.options.groupToggleElement?i.arrowElement:i.element,r.addEventListener("click",function(t){t.stopPropagation(),t.stopImmediatePropagation(),i.toggleVisibility()}))},Group.prototype._createGroup=function(t,o){var e=o+"_"+t,r=new Group(this.groupManager,this,o,t,this.groupManager.groupIDLookups[o].field,this.groupManager.headerGenerator[o]||this.groupManager.headerGenerator[0],!!this.old&&this.old.groups[e]);this.groups[e]=r,this.groupList.push(r)},Group.prototype._addRowToGroup=function(t){var o=this.level+1;if(this.hasSubGroups){var e=this.groupManager.groupIDLookups[o].func(t.getData()),r=o+"_"+e;this.groupManager.allowedValues&&this.groupManager.allowedValues[o]?this.groups[r]&&this.groups[r].addRow(t):(this.groups[r]||this._createGroup(e,o),this.groups[r].addRow(t))}},Group.prototype._addRow=function(t){this.rows.push(t),t.modules.group=this},Group.prototype.insertRow=function(t,o,e){var r=this.conformRowData({});t.updateData(r);var i=this.rows.indexOf(o);i>-1?e?this.rows.splice(i+1,0,t):this.rows.splice(i,0,t):e?this.rows.push(t):this.rows.unshift(t),t.modules.group=this,this.generateGroupHeaderContents(),this.groupManager.table.modExists("columnCalcs")&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modules.columnCalcs.recalcGroup(this),this.groupManager.updateGroupRows(!0)},Group.prototype.scrollHeader=function(t){this.arrowElement.style.marginLeft=t,this.groupList.forEach(function(o){o.scrollHeader(t)})},Group.prototype.getRowIndex=function(t){},Group.prototype.conformRowData=function(t){return this.field?t[this.field]=this.key:console.warn("Data Conforming Error - Cannot conform row data to match new group as groupBy is a function"),this.parent&&(t=this.parent.conformRowData(t)),t},Group.prototype.removeRow=function(t){var o=this.rows.indexOf(t),e=t.getElement();o>-1&&this.rows.splice(o,1),this.groupManager.table.options.groupValues||this.rows.length?(e.parentNode&&e.parentNode.removeChild(e),this.generateGroupHeaderContents(),this.groupManager.table.modExists("columnCalcs")&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modules.columnCalcs.recalcGroup(this)):(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this),this.groupManager.updateGroupRows(!0))},Group.prototype.removeGroup=function(t){var o,e=t.level+"_"+t.key;this.groups[e]&&(delete this.groups[e],o=this.groupList.indexOf(t),o>-1&&this.groupList.splice(o,1),this.groupList.length||(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this)))},Group.prototype.getHeadersAndRows=function(t){var o=[];return o.push(this),this._visSet(),this.visible?this.groupList.length?this.groupList.forEach(function(e){o=o.concat(e.getHeadersAndRows(t))}):(!t&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),o.push(this.calcs.top)),o=o.concat(this.rows),!t&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),o.push(this.calcs.bottom))):this.groupList.length||"table"==this.groupManager.table.options.columnCalcs||this.groupManager.table.modExists("columnCalcs")&&(!t&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),o.push(this.calcs.top))),!t&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),o.push(this.calcs.bottom)))),o},Group.prototype.getData=function(t,o){var e=[];return this._visSet(),(!t||t&&this.visible)&&this.rows.forEach(function(t){e.push(t.getData(o||"data"))}),e},Group.prototype.getRowCount=function(){var t=0;return this.groupList.length?this.groupList.forEach(function(o){t+=o.getRowCount()}):t=this.rows.length,t},Group.prototype.toggleVisibility=function(){this.visible?this.hide():this.show()},Group.prototype.hide=function(){this.visible=!1,"classic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination?this.groupManager.updateGroupRows(!0):(this.element.classList.remove("tabulator-group-visible"),this.groupList.length?this.groupList.forEach(function(t){t.getHeadersAndRows().forEach(function(t){t.detachElement()})}):this.rows.forEach(function(t){var o=t.getElement();o.parentNode.removeChild(o)}),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()),this.groupManager.table.options.groupVisibilityChanged.call(this.table,this.getComponent(),!1)},Group.prototype.show=function(){var t=this;if(t.visible=!0,"classic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination)this.groupManager.updateGroupRows(!0);else{this.element.classList.add("tabulator-group-visible");var o=t.getElement();this.groupList.length?this.groupList.forEach(function(t){t.getHeadersAndRows().forEach(function(t){var e=t.getElement();o.parentNode.insertBefore(e,o.nextSibling),t.initialize(),o=e})}):t.rows.forEach(function(t){var e=t.getElement();o.parentNode.insertBefore(e,o.nextSibling),t.initialize(),o=e}),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()}this.groupManager.table.options.groupVisibilityChanged.call(this.table,this.getComponent(),!0)},Group.prototype._visSet=function(){var t=[];"function"==typeof this.visible&&(this.rows.forEach(function(o){t.push(o.getData())}),this.visible=this.visible(this.key,this.getRowCount(),t,this.getComponent()))},Group.prototype.getRowGroup=function(t){var o=!1;return this.groupList.length?this.groupList.forEach(function(e){var r=e.getRowGroup(t);r&&(o=r)}):this.rows.find(function(o){return o===t})&&(o=this),o},Group.prototype.getSubGroups=function(t){var o=[];return this.groupList.forEach(function(e){o.push(t?e.getComponent():e)}),o},Group.prototype.getRows=function(t){var o=[];return this.rows.forEach(function(e){o.push(t?e.getComponent():e)}),o},Group.prototype.generateGroupHeaderContents=function(){var t=[];for(this.rows.forEach(function(o){t.push(o.getData())}),this.elementContents=this.generator(this.key,this.getRowCount(),t,this.getComponent());this.element.firstChild;)this.element.removeChild(this.element.firstChild);"string"==typeof this.elementContents?this.element.innerHTML=this.elementContents:this.element.appendChild(this.elementContents),this.element.insertBefore(this.arrowElement,this.element.firstChild)},Group.prototype.getElement=function(){this.addBindingsd=!1,this._visSet(),this.visible?this.element.classList.add("tabulator-group-visible"):this.element.classList.remove("tabulator-group-visible");for(var t=0;t<this.element.childNodes.length;++t)this.element.childNodes[t].parentNode.removeChild(this.element.childNodes[t]);return this.generateGroupHeaderContents(),this.element},Group.prototype.detachElement=function(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)},Group.prototype.normalizeHeight=function(){this.setHeight(this.element.clientHeight)},Group.prototype.initialize=function(t){this.initialized&&!t||(this.normalizeHeight(),this.initialized=!0)},Group.prototype.reinitialize=function(){this.initialized=!1,this.height=0,Tabulator.prototype.helpers.elVisible(this.element)&&this.initialize(!0)},Group.prototype.setHeight=function(t){this.height!=t&&(this.height=t,this.outerHeight=this.element.offsetHeight)},Group.prototype.getHeight=function(){return this.outerHeight},Group.prototype.getGroup=function(){return this},Group.prototype.reinitializeHeight=function(){},Group.prototype.calcHeight=function(){},Group.prototype.setCellHeight=function(){},Group.prototype.clearCellHeight=function(){},Group.prototype.getComponent=function(){return new GroupComponent(this)};var GroupRows=function(t){this.table=t,this.groupIDLookups=!1,this.startOpen=[function(){return!1}],this.headerGenerator=[function(){return""}],this.groupList=[],this.allowedValues=!1,this.groups={},this.displayIndex=0};GroupRows.prototype.initialize=function(){var t=this,o=t.table.options.groupBy,e=t.table.options.groupStartOpen,r=t.table.options.groupHeader;if(this.allowedValues=t.table.options.groupValues,Array.isArray(o)&&Array.isArray(r)&&o.length>r.length&&console.warn("Error creating group headers, groupHeader array is shorter than groupBy array"),t.headerGenerator=[function(){return""}],this.startOpen=[function(){return!1}],t.table.modules.localize.bind("groups|item",function(o,e){t.headerGenerator[0]=function(t,r,i){return(void 0===t?"":t)+"<span>("+r+" "+(1===r?o:e.groups.items)+")</span>"}}),this.groupIDLookups=[],Array.isArray(o)||o)this.table.modExists("columnCalcs")&&"table"!=this.table.options.columnCalcs&&"both"!=this.table.options.columnCalcs&&this.table.modules.columnCalcs.removeCalcs();else if(this.table.modExists("columnCalcs")&&"group"!=this.table.options.columnCalcs){var i=this.table.columnManager.getRealColumns();i.forEach(function(o){o.definition.topCalc&&t.table.modules.columnCalcs.initializeTopRow(),o.definition.bottomCalc&&t.table.modules.columnCalcs.initializeBottomRow()})}Array.isArray(o)||(o=[o]),o.forEach(function(o,e){var r,i;"function"==typeof o?r=o:(i=t.table.columnManager.getColumnByField(o),r=i?function(t){return i.getFieldValue(t)}:function(t){return t[o]}),t.groupIDLookups.push({field:"function"!=typeof o&&o,func:r,values:!!t.allowedValues&&t.allowedValues[e]})}),e&&(Array.isArray(e)||(e=[e]),e.forEach(function(t){t="function"==typeof t?t:function(){return!0}}),t.startOpen=e),r&&(t.headerGenerator=Array.isArray(r)?r:[r]),this.initialized=!0},GroupRows.prototype.setDisplayIndex=function(t){this.displayIndex=t},GroupRows.prototype.getDisplayIndex=function(){return this.displayIndex},GroupRows.prototype.getRows=function(t){return this.groupIDLookups.length?(this.table.options.dataGrouping.call(this.table),this.generateGroups(t),this.table.options.dataGrouped&&this.table.options.dataGrouped.call(this.table,this.getGroups(!0)),this.updateGroupRows()):t.slice(0)},GroupRows.prototype.getGroups=function(t){var o=[];return this.groupList.forEach(function(e){o.push(t?e.getComponent():e)}),o},GroupRows.prototype.getChildGroups=function(t){var o=this,e=[];return t||(t=this),t.groupList.forEach(function(t){t.groupList.length?e=e.concat(o.getChildGroups(t)):e.push(t)}),e},GroupRows.prototype.wipe=function(){this.groupList.forEach(function(t){t.wipe()})},GroupRows.prototype.pullGroupListData=function(t){var o=this,e=[];return t.forEach(function(t){var r={};r.level=0,r.rowCount=0,r.headerContent="";var i=[];t.hasSubGroups?(i=o.pullGroupListData(t.groupList),r.level=t.level,r.rowCount=i.length-t.groupList.length,r.headerContent=t.generator(t.key,r.rowCount,t.rows,t),e.push(r),e=e.concat(i)):(r.level=t.level,r.headerContent=t.generator(t.key,t.rows.length,t.rows,t),r.rowCount=t.getRows().length,e.push(r),t.getRows().forEach(function(t){e.push(t.getData("data"))}))}),e},GroupRows.prototype.getGroupedData=function(){return this.pullGroupListData(this.groupList)},GroupRows.prototype.getRowGroup=function(t){var o=!1;return this.groupList.forEach(function(e){var r=e.getRowGroup(t);r&&(o=r)}),o},GroupRows.prototype.countGroups=function(){return this.groupList.length},GroupRows.prototype.generateGroups=function(t){var o=this,e=o.groups;o.groups={},o.groupList=[],this.allowedValues&&this.allowedValues[0]?(this.allowedValues[0].forEach(function(t){o.createGroup(t,0,e)}),t.forEach(function(t){o.assignRowToExistingGroup(t,e)})):t.forEach(function(t){o.assignRowToGroup(t,e)})},GroupRows.prototype.createGroup=function(t,o,e){var r,i=o+"_"+t;e=e||[],r=new Group(this,!1,o,t,this.groupIDLookups[0].field,this.headerGenerator[0],e[i]),this.groups[i]=r,this.groupList.push(r)},GroupRows.prototype.assignRowToExistingGroup=function(t,o){var e=this.groupIDLookups[0].func(t.getData()),r="0_"+e;this.groups[r]&&this.groups[r].addRow(t)},GroupRows.prototype.assignRowToGroup=function(t,o){var e=this.groupIDLookups[0].func(t.getData()),r=!this.groups["0_"+e];return r&&this.createGroup(e,0,o),this.groups["0_"+e].addRow(t),!r},GroupRows.prototype.updateGroupRows=function(t){var o=this,e=[];if(o.groupList.forEach(function(t){e=e.concat(t.getHeadersAndRows())}),t){var r=o.table.rowManager.setDisplayRows(e,this.getDisplayIndex());!0!==r&&this.setDisplayIndex(r),o.table.rowManager.refreshActiveData("group",!0,!0)}return e},GroupRows.prototype.scrollHeaders=function(t){t+="px",this.groupList.forEach(function(o){o.scrollHeader(t)})},GroupRows.prototype.removeGroup=function(t){var o,e=t.level+"_"+t.key;this.groups[e]&&(delete this.groups[e],(o=this.groupList.indexOf(t))>-1&&this.groupList.splice(o,1))},Tabulator.prototype.registerModule("groupRows",GroupRows);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/history.js b/app/static/vendors/tabulator/js.old/modules/history.js
deleted file mode 100644 (file)
index 879e006..0000000
+++ /dev/null
@@ -1,141 +0,0 @@
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-
-var History = function History(table) {
-       this.table = table; //hold Tabulator object
-
-       this.history = [];
-       this.index = -1;
-};
-
-History.prototype.clear = function () {
-       this.history = [];
-       this.index = -1;
-};
-
-History.prototype.action = function (type, component, data) {
-
-       this.history = this.history.slice(0, this.index + 1);
-
-       this.history.push({
-               type: type,
-               component: component,
-               data: data
-       });
-
-       this.index++;
-};
-
-History.prototype.getHistoryUndoSize = function () {
-       return this.index + 1;
-};
-
-History.prototype.getHistoryRedoSize = function () {
-       return this.history.length - (this.index + 1);
-};
-
-History.prototype.undo = function () {
-
-       if (this.index > -1) {
-               var action = this.history[this.index];
-
-               this.undoers[action.type].call(this, action);
-
-               this.index--;
-
-               this.table.options.historyUndo.call(this.table, action.type, action.component.getComponent(), action.data);
-
-               return true;
-       } else {
-               console.warn("History Undo Error - No more history to undo");
-               return false;
-       }
-};
-
-History.prototype.redo = function () {
-       if (this.history.length - 1 > this.index) {
-
-               this.index++;
-
-               var action = this.history[this.index];
-
-               this.redoers[action.type].call(this, action);
-
-               this.table.options.historyRedo.call(this.table, action.type, action.component.getComponent(), action.data);
-
-               return true;
-       } else {
-               console.warn("History Redo Error - No more history to redo");
-               return false;
-       }
-};
-
-History.prototype.undoers = {
-       cellEdit: function cellEdit(action) {
-               action.component.setValueProcessData(action.data.oldValue);
-       },
-
-       rowAdd: function rowAdd(action) {
-               action.component.deleteActual();
-       },
-
-       rowDelete: function rowDelete(action) {
-               var newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);
-
-               if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-                       this.table.modules.groupRows.updateGroupRows(true);
-               }
-
-               this._rebindRow(action.component, newRow);
-       },
-
-       rowMove: function rowMove(action) {
-               this.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.posFrom], !action.data.after);
-               this.table.rowManager.redraw();
-       }
-};
-
-History.prototype.redoers = {
-       cellEdit: function cellEdit(action) {
-               action.component.setValueProcessData(action.data.newValue);
-       },
-
-       rowAdd: function rowAdd(action) {
-               var newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);
-
-               if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-                       this.table.modules.groupRows.updateGroupRows(true);
-               }
-
-               this._rebindRow(action.component, newRow);
-       },
-
-       rowDelete: function rowDelete(action) {
-               action.component.deleteActual();
-       },
-
-       rowMove: function rowMove(action) {
-               this.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.posTo], action.data.after);
-               this.table.rowManager.redraw();
-       }
-};
-
-//rebind rows to new element after deletion
-History.prototype._rebindRow = function (oldRow, newRow) {
-       this.history.forEach(function (action) {
-               if (action.component instanceof Row) {
-                       if (action.component === oldRow) {
-                               action.component = newRow;
-                       }
-               } else if (action.component instanceof Cell) {
-                       if (action.component.row === oldRow) {
-                               var field = action.component.column.getField();
-
-                               if (field) {
-                                       action.component = newRow.getCell(field);
-                               }
-                       }
-               }
-       });
-};
-
-Tabulator.prototype.registerModule("history", History);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/history.min.js b/app/static/vendors/tabulator/js.old/modules/history.min.js
deleted file mode 100644 (file)
index 68512ed..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-var History=function(t){this.table=t,this.history=[],this.index=-1};History.prototype.clear=function(){this.history=[],this.index=-1},History.prototype.action=function(t,o,e){this.history=this.history.slice(0,this.index+1),this.history.push({type:t,component:o,data:e}),this.index++},History.prototype.getHistoryUndoSize=function(){return this.index+1},History.prototype.getHistoryRedoSize=function(){return this.history.length-(this.index+1)},History.prototype.undo=function(){if(this.index>-1){var t=this.history[this.index];return this.undoers[t.type].call(this,t),this.index--,this.table.options.historyUndo.call(this.table,t.type,t.component.getComponent(),t.data),!0}return console.warn("History Undo Error - No more history to undo"),!1},History.prototype.redo=function(){if(this.history.length-1>this.index){this.index++;var t=this.history[this.index];return this.redoers[t.type].call(this,t),this.table.options.historyRedo.call(this.table,t.type,t.component.getComponent(),t.data),!0}return console.warn("History Redo Error - No more history to redo"),!1},History.prototype.undoers={cellEdit:function(t){t.component.setValueProcessData(t.data.oldValue)},rowAdd:function(t){t.component.deleteActual()},rowDelete:function(t){var o=this.table.rowManager.addRowActual(t.data.data,t.data.pos,t.data.index);this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.updateGroupRows(!0),this._rebindRow(t.component,o)},rowMove:function(t){this.table.rowManager.moveRowActual(t.component,this.table.rowManager.rows[t.data.posFrom],!t.data.after),this.table.rowManager.redraw()}},History.prototype.redoers={cellEdit:function(t){t.component.setValueProcessData(t.data.newValue)},rowAdd:function(t){var o=this.table.rowManager.addRowActual(t.data.data,t.data.pos,t.data.index);this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.updateGroupRows(!0),this._rebindRow(t.component,o)},rowDelete:function(t){t.component.deleteActual()},rowMove:function(t){this.table.rowManager.moveRowActual(t.component,this.table.rowManager.rows[t.data.posTo],t.data.after),this.table.rowManager.redraw()}},History.prototype._rebindRow=function(t,o){this.history.forEach(function(e){if(e.component instanceof Row)e.component===t&&(e.component=o);else if(e.component instanceof Cell&&e.component.row===t){var i=e.component.column.getField();i&&(e.component=o.getCell(i))}})},Tabulator.prototype.registerModule("history",History);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/html_table_import.js b/app/static/vendors/tabulator/js.old/modules/html_table_import.js
deleted file mode 100644 (file)
index c2e2eb2..0000000
+++ /dev/null
@@ -1,191 +0,0 @@
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-
-var HtmlTableImport = function HtmlTableImport(table) {
-       this.table = table; //hold Tabulator object
-       this.fieldIndex = [];
-       this.hasIndex = false;
-};
-
-HtmlTableImport.prototype.parseTable = function () {
-       var self = this,
-           element = self.table.element,
-           options = self.table.options,
-           columns = options.columns,
-           headers = element.getElementsByTagName("th"),
-           rows = element.getElementsByTagName("tbody")[0],
-           data = [],
-           newTable;
-
-       self.hasIndex = false;
-
-       self.table.options.htmlImporting.call(this.table);
-
-       rows = rows ? rows.getElementsByTagName("tr") : [];
-
-       //check for tablator inline options
-       self._extractOptions(element, options);
-
-       if (headers.length) {
-               self._extractHeaders(headers, rows);
-       } else {
-               self._generateBlankHeaders(headers, rows);
-       }
-
-       //iterate through table rows and build data set
-       for (var index = 0; index < rows.length; index++) {
-               var row = rows[index],
-                   cells = row.getElementsByTagName("td"),
-                   item = {};
-
-               //create index if the dont exist in table
-               if (!self.hasIndex) {
-                       item[options.index] = index;
-               }
-
-               for (var i = 0; i < cells.length; i++) {
-                       var cell = cells[i];
-                       if (typeof this.fieldIndex[i] !== "undefined") {
-                               item[this.fieldIndex[i]] = cell.innerHTML;
-                       }
-               }
-
-               //add row data to item
-               data.push(item);
-       }
-
-       //create new element
-       var newElement = document.createElement("div");
-
-       //transfer attributes to new element
-       var attributes = element.attributes;
-
-       // loop through attributes and apply them on div
-
-       for (var i in attributes) {
-               if (_typeof(attributes[i]) == "object") {
-                       newElement.setAttribute(attributes[i].name, attributes[i].value);
-               }
-       }
-
-       // replace table with div element
-       element.parentNode.replaceChild(newElement, element);
-
-       options.data = data;
-
-       self.table.options.htmlImported.call(this.table);
-
-       // // newElement.tabulator(options);
-
-       this.table.element = newElement;
-};
-
-//extract tabulator attribute options
-HtmlTableImport.prototype._extractOptions = function (element, options, defaultOptions) {
-       var attributes = element.attributes;
-       var optionsArr = defaultOptions ? Object.assign([], defaultOptions) : Object.keys(options);
-       var optionsList = {};
-
-       optionsArr.forEach(function (item) {
-               optionsList[item.toLowerCase()] = item;
-       });
-
-       for (var index in attributes) {
-               var attrib = attributes[index];
-               var name;
-
-               if (attrib && (typeof attrib === "undefined" ? "undefined" : _typeof(attrib)) == "object" && attrib.name && attrib.name.indexOf("tabulator-") === 0) {
-                       name = attrib.name.replace("tabulator-", "");
-
-                       if (typeof optionsList[name] !== "undefined") {
-                               options[optionsList[name]] = this._attribValue(attrib.value);
-                       }
-               }
-       }
-};
-
-//get value of attribute
-HtmlTableImport.prototype._attribValue = function (value) {
-       if (value === "true") {
-               return true;
-       }
-
-       if (value === "false") {
-               return false;
-       }
-
-       return value;
-};
-
-//find column if it has already been defined
-HtmlTableImport.prototype._findCol = function (title) {
-       var match = this.table.options.columns.find(function (column) {
-               return column.title === title;
-       });
-
-       return match || false;
-};
-
-//extract column from headers
-HtmlTableImport.prototype._extractHeaders = function (headers, rows) {
-       for (var index = 0; index < headers.length; index++) {
-               var header = headers[index],
-                   exists = false,
-                   col = this._findCol(header.textContent),
-                   width,
-                   attributes;
-
-               if (col) {
-                       exists = true;
-               } else {
-                       col = { title: header.textContent.trim() };
-               }
-
-               if (!col.field) {
-                       col.field = header.textContent.trim().toLowerCase().replace(" ", "_");
-               }
-
-               width = header.getAttribute("width");
-
-               if (width && !col.width) {
-                       col.width = width;
-               }
-
-               //check for tablator inline options
-               attributes = header.attributes;
-
-               // //check for tablator inline options
-               this._extractOptions(header, col, Column.prototype.defaultOptionList);
-
-               this.fieldIndex[index] = col.field;
-
-               if (col.field == this.table.options.index) {
-                       this.hasIndex = true;
-               }
-
-               if (!exists) {
-                       this.table.options.columns.push(col);
-               }
-       }
-};
-
-//generate blank headers
-HtmlTableImport.prototype._generateBlankHeaders = function (headers, rows) {
-       for (var index = 0; index < headers.length; index++) {
-               var header = headers[index],
-                   col = { title: "", field: "col" + index };
-
-               this.fieldIndex[index] = col.field;
-
-               var width = header.getAttribute("width");
-
-               if (width) {
-                       col.width = width;
-               }
-
-               this.table.options.columns.push(col);
-       }
-};
-
-Tabulator.prototype.registerModule("htmlTableImport", HtmlTableImport);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/html_table_import.min.js b/app/static/vendors/tabulator/js.old/modules/html_table_import.min.js
deleted file mode 100644 (file)
index 0f62235..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},HtmlTableImport=function(t){this.table=t,this.fieldIndex=[],this.hasIndex=!1};HtmlTableImport.prototype.parseTable=function(){var t=this,e=t.table.element,o=t.table.options,a=(o.columns,e.getElementsByTagName("th")),n=e.getElementsByTagName("tbody")[0],l=[];t.hasIndex=!1,t.table.options.htmlImporting.call(this.table),n=n?n.getElementsByTagName("tr"):[],t._extractOptions(e,o),a.length?t._extractHeaders(a,n):t._generateBlankHeaders(a,n);for(var r=0;r<n.length;r++){var i=n[r],s=i.getElementsByTagName("td"),p={};t.hasIndex||(p[o.index]=r);for(var m=0;m<s.length;m++){var d=s[m];void 0!==this.fieldIndex[m]&&(p[this.fieldIndex[m]]=d.innerHTML)}l.push(p)}var f=document.createElement("div"),b=e.attributes;for(var m in b)"object"==_typeof(b[m])&&f.setAttribute(b[m].name,b[m].value);e.parentNode.replaceChild(f,e),o.data=l,t.table.options.htmlImported.call(this.table),this.table.element=f},HtmlTableImport.prototype._extractOptions=function(t,e,o){var a=t.attributes,n=o?Object.assign([],o):Object.keys(e),l={};n.forEach(function(t){l[t.toLowerCase()]=t});for(var r in a){var i,s=a[r];s&&"object"==(void 0===s?"undefined":_typeof(s))&&s.name&&0===s.name.indexOf("tabulator-")&&(i=s.name.replace("tabulator-",""),void 0!==l[i]&&(e[l[i]]=this._attribValue(s.value)))}},HtmlTableImport.prototype._attribValue=function(t){return"true"===t||"false"!==t&&t},HtmlTableImport.prototype._findCol=function(t){return this.table.options.columns.find(function(e){return e.title===t})||!1},HtmlTableImport.prototype._extractHeaders=function(t,e){for(var o=0;o<t.length;o++){var a,n=t[o],l=!1,r=this._findCol(n.textContent);r?l=!0:r={title:n.textContent.trim()},r.field||(r.field=n.textContent.trim().toLowerCase().replace(" ","_")),a=n.getAttribute("width"),a&&!r.width&&(r.width=a),n.attributes,this._extractOptions(n,r,Column.prototype.defaultOptionList),this.fieldIndex[o]=r.field,r.field==this.table.options.index&&(this.hasIndex=!0),l||this.table.options.columns.push(r)}},HtmlTableImport.prototype._generateBlankHeaders=function(t,e){for(var o=0;o<t.length;o++){var a=t[o],n={title:"",field:"col"+o};this.fieldIndex[o]=n.field;var l=a.getAttribute("width");l&&(n.width=l),this.table.options.columns.push(n)}},Tabulator.prototype.registerModule("htmlTableImport",HtmlTableImport);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/keybindings.js b/app/static/vendors/tabulator/js.old/modules/keybindings.js
deleted file mode 100644 (file)
index e1d64a0..0000000
+++ /dev/null
@@ -1,392 +0,0 @@
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-
-var Keybindings = function Keybindings(table) {
-       this.table = table; //hold Tabulator object
-       this.watchKeys = null;
-       this.pressedKeys = null;
-       this.keyupBinding = false;
-       this.keydownBinding = false;
-};
-
-Keybindings.prototype.initialize = function () {
-       var bindings = this.table.options.keybindings,
-           mergedBindings = {};
-
-       this.watchKeys = {};
-       this.pressedKeys = [];
-
-       if (bindings !== false) {
-
-               for (var key in this.bindings) {
-                       mergedBindings[key] = this.bindings[key];
-               }
-
-               if (Object.keys(bindings).length) {
-
-                       for (var _key in bindings) {
-                               mergedBindings[_key] = bindings[_key];
-                       }
-               }
-
-               this.mapBindings(mergedBindings);
-               this.bindEvents();
-       }
-};
-
-Keybindings.prototype.mapBindings = function (bindings) {
-       var _this = this;
-
-       var self = this;
-
-       var _loop = function _loop(key) {
-
-               if (_this.actions[key]) {
-
-                       if (bindings[key]) {
-
-                               if (_typeof(bindings[key]) !== "object") {
-                                       bindings[key] = [bindings[key]];
-                               }
-
-                               bindings[key].forEach(function (binding) {
-                                       self.mapBinding(key, binding);
-                               });
-                       }
-               } else {
-                       console.warn("Key Binding Error - no such action:", key);
-               }
-       };
-
-       for (var key in bindings) {
-               _loop(key);
-       }
-};
-
-Keybindings.prototype.mapBinding = function (action, symbolsList) {
-       var self = this;
-
-       var binding = {
-               action: this.actions[action],
-               keys: [],
-               ctrl: false,
-               shift: false,
-               meta: false
-       };
-
-       var symbols = symbolsList.toString().toLowerCase().split(" ").join("").split("+");
-
-       symbols.forEach(function (symbol) {
-               switch (symbol) {
-                       case "ctrl":
-                               binding.ctrl = true;
-                               break;
-
-                       case "shift":
-                               binding.shift = true;
-                               break;
-
-                       case "meta":
-                               binding.meta = true;
-                               break;
-
-                       default:
-                               symbol = parseInt(symbol);
-                               binding.keys.push(symbol);
-
-                               if (!self.watchKeys[symbol]) {
-                                       self.watchKeys[symbol] = [];
-                               }
-
-                               self.watchKeys[symbol].push(binding);
-               }
-       });
-};
-
-Keybindings.prototype.bindEvents = function () {
-       var self = this;
-
-       this.keyupBinding = function (e) {
-               var code = e.keyCode;
-               var bindings = self.watchKeys[code];
-
-               if (bindings) {
-
-                       self.pressedKeys.push(code);
-
-                       bindings.forEach(function (binding) {
-                               self.checkBinding(e, binding);
-                       });
-               }
-       };
-
-       this.keydownBinding = function (e) {
-               var code = e.keyCode;
-               var bindings = self.watchKeys[code];
-
-               if (bindings) {
-
-                       var index = self.pressedKeys.indexOf(code);
-
-                       if (index > -1) {
-                               self.pressedKeys.splice(index, 1);
-                       }
-               }
-       };
-
-       this.table.element.addEventListener("keydown", this.keyupBinding);
-
-       this.table.element.addEventListener("keyup", this.keydownBinding);
-};
-
-Keybindings.prototype.clearBindings = function () {
-       if (this.keyupBinding) {
-               this.table.element.removeEventListener("keydown", this.keyupBinding);
-       }
-
-       if (this.keydownBinding) {
-               this.table.element.removeEventListener("keyup", this.keydownBinding);
-       }
-};
-
-Keybindings.prototype.checkBinding = function (e, binding) {
-       var self = this,
-           match = true;
-
-       if (e.ctrlKey == binding.ctrl && e.shiftKey == binding.shift && e.metaKey == binding.meta) {
-               binding.keys.forEach(function (key) {
-                       var index = self.pressedKeys.indexOf(key);
-
-                       if (index == -1) {
-                               match = false;
-                       }
-               });
-
-               if (match) {
-                       binding.action.call(self, e);
-               }
-
-               return true;
-       }
-
-       return false;
-};
-
-//default bindings
-Keybindings.prototype.bindings = {
-       navPrev: "shift + 9",
-       navNext: 9,
-       navUp: 38,
-       navDown: 40,
-       scrollPageUp: 33,
-       scrollPageDown: 34,
-       scrollToStart: 36,
-       scrollToEnd: 35,
-       undo: "ctrl + 90",
-       redo: "ctrl + 89",
-       copyToClipboard: "ctrl + 67"
-};
-
-//default actions
-Keybindings.prototype.actions = {
-       keyBlock: function keyBlock(e) {
-               e.stopPropagation();
-               e.preventDefault();
-       },
-       scrollPageUp: function scrollPageUp(e) {
-               var rowManager = this.table.rowManager,
-                   newPos = rowManager.scrollTop - rowManager.height,
-                   scrollMax = rowManager.element.scrollHeight;
-
-               e.preventDefault();
-
-               if (rowManager.displayRowsCount) {
-                       if (newPos >= 0) {
-                               rowManager.element.scrollTop = newPos;
-                       } else {
-                               rowManager.scrollToRow(rowManager.getDisplayRows()[0]);
-                       }
-               }
-
-               this.table.element.focus();
-       },
-       scrollPageDown: function scrollPageDown(e) {
-               var rowManager = this.table.rowManager,
-                   newPos = rowManager.scrollTop + rowManager.height,
-                   scrollMax = rowManager.element.scrollHeight;
-
-               e.preventDefault();
-
-               if (rowManager.displayRowsCount) {
-                       if (newPos <= scrollMax) {
-                               rowManager.element.scrollTop = newPos;
-                       } else {
-                               rowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);
-                       }
-               }
-
-               this.table.element.focus();
-       },
-       scrollToStart: function scrollToStart(e) {
-               var rowManager = this.table.rowManager;
-
-               e.preventDefault();
-
-               if (rowManager.displayRowsCount) {
-                       rowManager.scrollToRow(rowManager.getDisplayRows()[0]);
-               }
-
-               this.table.element.focus();
-       },
-       scrollToEnd: function scrollToEnd(e) {
-               var rowManager = this.table.rowManager;
-
-               e.preventDefault();
-
-               if (rowManager.displayRowsCount) {
-                       rowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);
-               }
-
-               this.table.element.focus();
-       },
-       navPrev: function navPrev(e) {
-               var cell = false;
-
-               if (this.table.modExists("edit")) {
-                       cell = this.table.modules.edit.currentCell;
-
-                       if (cell) {
-                               e.preventDefault();
-                               cell.nav().prev();
-                       }
-               }
-       },
-
-       navNext: function navNext(e) {
-               var cell = false;
-               var newRow = this.table.options.tabEndNewRow;
-               var nav;
-
-               if (this.table.modExists("edit")) {
-                       cell = this.table.modules.edit.currentCell;
-
-                       if (cell) {
-                               e.preventDefault();
-
-                               nav = cell.nav();
-
-                               if (!nav.next()) {
-                                       if (newRow) {
-
-                                               cell.getElement().firstChild.blur();
-
-                                               if (newRow === true) {
-                                                       newRow = this.table.addRow({});
-                                               } else {
-                                                       if (typeof newRow == "function") {
-                                                               newRow = this.table.addRow(newRow(cell.row.getComponent()));
-                                                       } else {
-                                                               newRow = this.table.addRow(newRow);
-                                                       }
-                                               }
-
-                                               newRow.then(function () {
-                                                       setTimeout(function () {
-                                                               nav.next();
-                                                       });
-                                               });
-                                       }
-                               }
-                       }
-               }
-       },
-
-       navLeft: function navLeft(e) {
-               var cell = false;
-
-               if (this.table.modExists("edit")) {
-                       cell = this.table.modules.edit.currentCell;
-
-                       if (cell) {
-                               e.preventDefault();
-                               cell.nav().left();
-                       }
-               }
-       },
-
-       navRight: function navRight(e) {
-               var cell = false;
-
-               if (this.table.modExists("edit")) {
-                       cell = this.table.modules.edit.currentCell;
-
-                       if (cell) {
-                               e.preventDefault();
-                               cell.nav().right();
-                       }
-               }
-       },
-
-       navUp: function navUp(e) {
-               var cell = false;
-
-               if (this.table.modExists("edit")) {
-                       cell = this.table.modules.edit.currentCell;
-
-                       if (cell) {
-                               e.preventDefault();
-                               cell.nav().up();
-                       }
-               }
-       },
-
-       navDown: function navDown(e) {
-               var cell = false;
-
-               if (this.table.modExists("edit")) {
-                       cell = this.table.modules.edit.currentCell;
-
-                       if (cell) {
-                               e.preventDefault();
-                               cell.nav().down();
-                       }
-               }
-       },
-
-       undo: function undo(e) {
-               var cell = false;
-               if (this.table.options.history && this.table.modExists("history") && this.table.modExists("edit")) {
-
-                       cell = this.table.modules.edit.currentCell;
-
-                       if (!cell) {
-                               e.preventDefault();
-                               this.table.modules.history.undo();
-                       }
-               }
-       },
-
-       redo: function redo(e) {
-               var cell = false;
-               if (this.table.options.history && this.table.modExists("history") && this.table.modExists("edit")) {
-
-                       cell = this.table.modules.edit.currentCell;
-
-                       if (!cell) {
-                               e.preventDefault();
-                               this.table.modules.history.redo();
-                       }
-               }
-       },
-
-       copyToClipboard: function copyToClipboard(e) {
-               if (!this.table.modules.edit.currentCell) {
-                       if (this.table.modExists("clipboard", true)) {
-                               this.table.modules.clipboard.copy(false, true);
-                       }
-               }
-       }
-};
-
-Tabulator.prototype.registerModule("keybindings", Keybindings);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/keybindings.min.js b/app/static/vendors/tabulator/js.old/modules/keybindings.min.js
deleted file mode 100644 (file)
index 606f349..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Keybindings=function(t){this.table=t,this.watchKeys=null,this.pressedKeys=null,this.keyupBinding=!1,this.keydownBinding=!1};Keybindings.prototype.initialize=function(){var t=this.table.options.keybindings,e={};if(this.watchKeys={},this.pressedKeys=[],!1!==t){for(var i in this.bindings)e[i]=this.bindings[i];if(Object.keys(t).length)for(var n in t)e[n]=t[n];this.mapBindings(e),this.bindEvents()}},Keybindings.prototype.mapBindings=function(t){var e=this,i=this;for(var n in t)!function(n){e.actions[n]?t[n]&&("object"!==_typeof(t[n])&&(t[n]=[t[n]]),t[n].forEach(function(t){i.mapBinding(n,t)})):console.warn("Key Binding Error - no such action:",n)}(n)},Keybindings.prototype.mapBinding=function(t,e){var i=this,n={action:this.actions[t],keys:[],ctrl:!1,shift:!1,meta:!1};e.toString().toLowerCase().split(" ").join("").split("+").forEach(function(t){switch(t){case"ctrl":n.ctrl=!0;break;case"shift":n.shift=!0;break;case"meta":n.meta=!0;break;default:t=parseInt(t),n.keys.push(t),i.watchKeys[t]||(i.watchKeys[t]=[]),i.watchKeys[t].push(n)}})},Keybindings.prototype.bindEvents=function(){var t=this;this.keyupBinding=function(e){var i=e.keyCode,n=t.watchKeys[i];n&&(t.pressedKeys.push(i),n.forEach(function(i){t.checkBinding(e,i)}))},this.keydownBinding=function(e){var i=e.keyCode;if(t.watchKeys[i]){var n=t.pressedKeys.indexOf(i);n>-1&&t.pressedKeys.splice(n,1)}},this.table.element.addEventListener("keydown",this.keyupBinding),this.table.element.addEventListener("keyup",this.keydownBinding)},Keybindings.prototype.clearBindings=function(){this.keyupBinding&&this.table.element.removeEventListener("keydown",this.keyupBinding),this.keydownBinding&&this.table.element.removeEventListener("keyup",this.keydownBinding)},Keybindings.prototype.checkBinding=function(t,e){var i=this,n=!0;return t.ctrlKey==e.ctrl&&t.shiftKey==e.shift&&t.metaKey==e.meta&&(e.keys.forEach(function(t){-1==i.pressedKeys.indexOf(t)&&(n=!1)}),n&&e.action.call(i,t),!0)},Keybindings.prototype.bindings={navPrev:"shift + 9",navNext:9,navUp:38,navDown:40,scrollPageUp:33,scrollPageDown:34,scrollToStart:36,scrollToEnd:35,undo:"ctrl + 90",redo:"ctrl + 89",copyToClipboard:"ctrl + 67"},Keybindings.prototype.actions={keyBlock:function(t){t.stopPropagation(),t.preventDefault()},scrollPageUp:function(t){var e=this.table.rowManager,i=e.scrollTop-e.height;e.element.scrollHeight;t.preventDefault(),e.displayRowsCount&&(i>=0?e.element.scrollTop=i:e.scrollToRow(e.getDisplayRows()[0])),this.table.element.focus()},scrollPageDown:function(t){var e=this.table.rowManager,i=e.scrollTop+e.height,n=e.element.scrollHeight;t.preventDefault(),e.displayRowsCount&&(i<=n?e.element.scrollTop=i:e.scrollToRow(e.getDisplayRows()[e.displayRowsCount-1])),this.table.element.focus()},scrollToStart:function(t){var e=this.table.rowManager;t.preventDefault(),e.displayRowsCount&&e.scrollToRow(e.getDisplayRows()[0]),this.table.element.focus()},scrollToEnd:function(t){var e=this.table.rowManager;t.preventDefault(),e.displayRowsCount&&e.scrollToRow(e.getDisplayRows()[e.displayRowsCount-1]),this.table.element.focus()},navPrev:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().prev())},navNext:function(t){var e,i=!1,n=this.table.options.tabEndNewRow;this.table.modExists("edit")&&(i=this.table.modules.edit.currentCell)&&(t.preventDefault(),e=i.nav(),e.next()||n&&(i.getElement().firstChild.blur(),n=!0===n?this.table.addRow({}):"function"==typeof n?this.table.addRow(n(i.row.getComponent())):this.table.addRow(n),n.then(function(){setTimeout(function(){e.next()})})))},navLeft:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().left())},navRight:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().right())},navUp:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().up())},navDown:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().down())},undo:function(t){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(t.preventDefault(),this.table.modules.history.undo()))},redo:function(t){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(t.preventDefault(),this.table.modules.history.redo()))},copyToClipboard:function(t){this.table.modules.edit.currentCell||this.table.modExists("clipboard",!0)&&this.table.modules.clipboard.copy(!1,!0)}},Tabulator.prototype.registerModule("keybindings",Keybindings);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/menu.js b/app/static/vendors/tabulator/js.old/modules/menu.js
deleted file mode 100644 (file)
index 7c33edc..0000000
+++ /dev/null
@@ -1,161 +0,0 @@
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-
-var Menu = function Menu(table) {
-       this.table = table; //hold Tabulator object
-       this.menuEl = false;
-       this.blurEvent = this.hideMenu.bind(this);
-};
-
-Menu.prototype.initializeColumnHeader = function (column) {
-       var _this = this;
-
-       var headerMenuEl;
-
-       if (column.definition.headerContextMenu) {
-               column.getElement().addEventListener("contextmenu", function (e) {
-                       var menu = typeof column.definition.headerContextMenu == "function" ? column.definition.headerContextMenu(column.getComponent()) : column.definition.headerContextMenu;
-
-                       e.preventDefault();
-
-                       _this.loadMenu(e, column, menu);
-               });
-       }
-
-       if (column.definition.headerMenu) {
-
-               headerMenuEl = document.createElement("span");
-               headerMenuEl.classList.add("tabulator-header-menu-button");
-               headerMenuEl.innerHTML = "&vellip;";
-
-               headerMenuEl.addEventListener("click", function (e) {
-                       var menu = typeof column.definition.headerMenu == "function" ? column.definition.headerMenu(column.getComponent()) : column.definition.headerMenu;
-                       e.stopPropagation();
-                       e.preventDefault();
-
-                       _this.loadMenu(e, column, menu);
-               });
-
-               column.titleElement.insertBefore(headerMenuEl, column.titleElement.firstChild);
-       }
-};
-
-Menu.prototype.initializeCell = function (cell) {
-       var _this2 = this;
-
-       cell.getElement().addEventListener("contextmenu", function (e) {
-               var menu = typeof cell.column.definition.contextMenu == "function" ? cell.column.definition.contextMenu(cell.getComponent()) : cell.column.definition.contextMenu;
-
-               e.preventDefault();
-
-               _this2.loadMenu(e, cell, menu);
-       });
-};
-
-Menu.prototype.initializeRow = function (row) {
-       var _this3 = this;
-
-       row.getElement().addEventListener("contextmenu", function (e) {
-               var menu = typeof _this3.table.options.rowContextMenu == "function" ? _this3.table.options.rowContextMenu(row.getComponent()) : _this3.table.options.rowContextMenu;
-
-               e.preventDefault();
-
-               _this3.loadMenu(e, row, menu);
-       });
-};
-
-Menu.prototype.loadMenu = function (e, component, menu) {
-       var _this4 = this;
-
-       var docHeight = Math.max(document.body.offsetHeight, window.innerHeight);
-
-       //abort if no menu set
-       if (!menu || !menu.length) {
-               return;
-       }
-
-       this.hideMenu();
-
-       this.menuEl = document.createElement("div");
-       this.menuEl.classList.add("tabulator-menu");
-
-       menu.forEach(function (item) {
-               var itemEl = document.createElement("div");
-               var label = item.label;
-               var disabled = item.disabled;
-
-               if (item.separator) {
-                       itemEl.classList.add("tabulator-menu-separator");
-               } else {
-                       itemEl.classList.add("tabulator-menu-item");
-
-                       if (typeof label == "function") {
-                               label = label(component.getComponent());
-                       }
-
-                       if (label instanceof Node) {
-                               itemEl.appendChild(label);
-                       } else {
-                               itemEl.innerHTML = label;
-                       }
-
-                       if (typeof disabled == "function") {
-                               disabled = disabled(component.getComponent());
-                       }
-
-                       if (disabled) {
-                               itemEl.classList.add("tabulator-menu-item-disabled");
-                               itemEl.addEventListener("click", function (e) {
-                                       e.stopPropagation();
-                               });
-                       } else {
-                               itemEl.addEventListener("click", function (e) {
-                                       _this4.hideMenu();
-                                       item.action(e, component.getComponent());
-                               });
-                       }
-               }
-
-               _this4.menuEl.appendChild(itemEl);
-       });
-
-       this.menuEl.style.top = e.pageY + "px";
-       this.menuEl.style.left = e.pageX + "px";
-
-       document.body.addEventListener("click", this.blurEvent);
-       this.table.rowManager.element.addEventListener("scroll", this.blurEvent);
-
-       setTimeout(function () {
-               document.body.addEventListener("contextmenu", _this4.blurEvent);
-       }, 100);
-
-       document.body.appendChild(this.menuEl);
-
-       //move menu to start on right edge if it is too close to the edge of the screen
-       if (e.pageX + this.menuEl.offsetWidth >= document.body.offsetWidth) {
-               this.menuEl.style.left = "";
-               this.menuEl.style.right = document.body.offsetWidth - e.pageX + "px";
-       }
-
-       //move menu to start on bottom edge if it is too close to the edge of the screen
-       if (e.pageY + this.menuEl.offsetHeight >= docHeight) {
-               this.menuEl.style.top = "";
-               this.menuEl.style.bottom = docHeight - e.pageY + "px";
-       }
-};
-
-Menu.prototype.hideMenu = function () {
-       if (this.menuEl.parentNode) {
-               this.menuEl.parentNode.removeChild(this.menuEl);
-       }
-
-       if (this.blurEvent) {
-               document.body.removeEventListener("click", this.blurEvent);
-               document.body.removeEventListener("contextmenu", this.blurEvent);
-               this.table.rowManager.element.removeEventListener("scroll", this.blurEvent);
-       }
-};
-
-//default accessors
-Menu.prototype.menus = {};
-
-Tabulator.prototype.registerModule("menu", Menu);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/menu.min.js b/app/static/vendors/tabulator/js.old/modules/menu.min.js
deleted file mode 100644 (file)
index dbb2bc1..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-var Menu=function(e){this.table=e,this.menuEl=!1,this.blurEvent=this.hideMenu.bind(this)};Menu.prototype.initializeColumnHeader=function(e){var t,n=this;e.definition.headerContextMenu&&e.getElement().addEventListener("contextmenu",function(t){var i="function"==typeof e.definition.headerContextMenu?e.definition.headerContextMenu(e.getComponent()):e.definition.headerContextMenu;t.preventDefault(),n.loadMenu(t,e,i)}),e.definition.headerMenu&&(t=document.createElement("span"),t.classList.add("tabulator-header-menu-button"),t.innerHTML="&vellip;",t.addEventListener("click",function(t){var i="function"==typeof e.definition.headerMenu?e.definition.headerMenu(e.getComponent()):e.definition.headerMenu;t.stopPropagation(),t.preventDefault(),n.loadMenu(t,e,i)}),e.titleElement.insertBefore(t,e.titleElement.firstChild))},Menu.prototype.initializeCell=function(e){var t=this;e.getElement().addEventListener("contextmenu",function(n){var i="function"==typeof e.column.definition.contextMenu?e.column.definition.contextMenu(e.getComponent()):e.column.definition.contextMenu;n.preventDefault(),t.loadMenu(n,e,i)})},Menu.prototype.initializeRow=function(e){var t=this;e.getElement().addEventListener("contextmenu",function(n){var i="function"==typeof t.table.options.rowContextMenu?t.table.options.rowContextMenu(e.getComponent()):t.table.options.rowContextMenu;n.preventDefault(),t.loadMenu(n,e,i)})},Menu.prototype.loadMenu=function(e,t,n){var i=this,o=Math.max(document.body.offsetHeight,window.innerHeight);n&&n.length&&(this.hideMenu(),this.menuEl=document.createElement("div"),this.menuEl.classList.add("tabulator-menu"),n.forEach(function(e){var n=document.createElement("div"),o=e.label,u=e.disabled;e.separator?n.classList.add("tabulator-menu-separator"):(n.classList.add("tabulator-menu-item"),"function"==typeof o&&(o=o(t.getComponent())),o instanceof Node?n.appendChild(o):n.innerHTML=o,"function"==typeof u&&(u=u(t.getComponent())),u?(n.classList.add("tabulator-menu-item-disabled"),n.addEventListener("click",function(e){e.stopPropagation()})):n.addEventListener("click",function(n){i.hideMenu(),e.action(n,t.getComponent())})),i.menuEl.appendChild(n)}),this.menuEl.style.top=e.pageY+"px",this.menuEl.style.left=e.pageX+"px",document.body.addEventListener("click",this.blurEvent),this.table.rowManager.element.addEventListener("scroll",this.blurEvent),setTimeout(function(){document.body.addEventListener("contextmenu",i.blurEvent)},100),document.body.appendChild(this.menuEl),e.pageX+this.menuEl.offsetWidth>=document.body.offsetWidth&&(this.menuEl.style.left="",this.menuEl.style.right=document.body.offsetWidth-e.pageX+"px"),e.pageY+this.menuEl.offsetHeight>=o&&(this.menuEl.style.top="",this.menuEl.style.bottom=o-e.pageY+"px"))},Menu.prototype.hideMenu=function(){this.menuEl.parentNode&&this.menuEl.parentNode.removeChild(this.menuEl),this.blurEvent&&(document.body.removeEventListener("click",this.blurEvent),document.body.removeEventListener("contextmenu",this.blurEvent),this.table.rowManager.element.removeEventListener("scroll",this.blurEvent))},Menu.prototype.menus={},Tabulator.prototype.registerModule("menu",Menu);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/moveable_columns.js b/app/static/vendors/tabulator/js.old/modules/moveable_columns.js
deleted file mode 100644 (file)
index 081ba8e..0000000
+++ /dev/null
@@ -1,289 +0,0 @@
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-
-var MoveColumns = function MoveColumns(table) {
-       this.table = table; //hold Tabulator object
-       this.placeholderElement = this.createPlaceholderElement();
-       this.hoverElement = false; //floating column header element
-       this.checkTimeout = false; //click check timeout holder
-       this.checkPeriod = 250; //period to wait on mousedown to consider this a move and not a click
-       this.moving = false; //currently moving column
-       this.toCol = false; //destination column
-       this.toColAfter = false; //position of moving column relative to the desitnation column
-       this.startX = 0; //starting position within header element
-       this.autoScrollMargin = 40; //auto scroll on edge when within margin
-       this.autoScrollStep = 5; //auto scroll distance in pixels
-       this.autoScrollTimeout = false; //auto scroll timeout
-       this.touchMove = false;
-
-       this.moveHover = this.moveHover.bind(this);
-       this.endMove = this.endMove.bind(this);
-};
-
-MoveColumns.prototype.createPlaceholderElement = function () {
-       var el = document.createElement("div");
-
-       el.classList.add("tabulator-col");
-       el.classList.add("tabulator-col-placeholder");
-
-       return el;
-};
-
-MoveColumns.prototype.initializeColumn = function (column) {
-       var self = this,
-           config = {},
-           colEl;
-
-       if (!column.modules.frozen) {
-
-               colEl = column.getElement();
-
-               config.mousemove = function (e) {
-                       if (column.parent === self.moving.parent) {
-                               if ((self.touchMove ? e.touches[0].pageX : e.pageX) - Tabulator.prototype.helpers.elOffset(colEl).left + self.table.columnManager.element.scrollLeft > column.getWidth() / 2) {
-                                       if (self.toCol !== column || !self.toColAfter) {
-                                               colEl.parentNode.insertBefore(self.placeholderElement, colEl.nextSibling);
-                                               self.moveColumn(column, true);
-                                       }
-                               } else {
-                                       if (self.toCol !== column || self.toColAfter) {
-                                               colEl.parentNode.insertBefore(self.placeholderElement, colEl);
-                                               self.moveColumn(column, false);
-                                       }
-                               }
-                       }
-               }.bind(self);
-
-               colEl.addEventListener("mousedown", function (e) {
-                       self.touchMove = false;
-                       if (e.which === 1) {
-                               self.checkTimeout = setTimeout(function () {
-                                       self.startMove(e, column);
-                               }, self.checkPeriod);
-                       }
-               });
-
-               colEl.addEventListener("mouseup", function (e) {
-                       if (e.which === 1) {
-                               if (self.checkTimeout) {
-                                       clearTimeout(self.checkTimeout);
-                               }
-                       }
-               });
-
-               self.bindTouchEvents(column);
-       }
-
-       column.modules.moveColumn = config;
-};
-
-MoveColumns.prototype.bindTouchEvents = function (column) {
-       var self = this,
-           colEl = column.getElement(),
-           startXMove = false,
-           //shifting center position of the cell
-       dir = false,
-           currentCol,
-           nextCol,
-           prevCol,
-           nextColWidth,
-           prevColWidth,
-           nextColWidthLast,
-           prevColWidthLast;
-
-       colEl.addEventListener("touchstart", function (e) {
-               self.checkTimeout = setTimeout(function () {
-                       self.touchMove = true;
-                       currentCol = column;
-                       nextCol = column.nextColumn();
-                       nextColWidth = nextCol ? nextCol.getWidth() / 2 : 0;
-                       prevCol = column.prevColumn();
-                       prevColWidth = prevCol ? prevCol.getWidth() / 2 : 0;
-                       nextColWidthLast = 0;
-                       prevColWidthLast = 0;
-                       startXMove = false;
-
-                       self.startMove(e, column);
-               }, self.checkPeriod);
-       }, { passive: true });
-
-       colEl.addEventListener("touchmove", function (e) {
-               var halfCol, diff, moveToCol;
-
-               if (self.moving) {
-                       self.moveHover(e);
-
-                       if (!startXMove) {
-                               startXMove = e.touches[0].pageX;
-                       }
-
-                       diff = e.touches[0].pageX - startXMove;
-
-                       if (diff > 0) {
-                               if (nextCol && diff - nextColWidthLast > nextColWidth) {
-                                       moveToCol = nextCol;
-
-                                       if (moveToCol !== column) {
-                                               startXMove = e.touches[0].pageX;
-                                               moveToCol.getElement().parentNode.insertBefore(self.placeholderElement, moveToCol.getElement().nextSibling);
-                                               self.moveColumn(moveToCol, true);
-                                       }
-                               }
-                       } else {
-                               if (prevCol && -diff - prevColWidthLast > prevColWidth) {
-                                       moveToCol = prevCol;
-
-                                       if (moveToCol !== column) {
-                                               startXMove = e.touches[0].pageX;
-                                               moveToCol.getElement().parentNode.insertBefore(self.placeholderElement, moveToCol.getElement());
-                                               self.moveColumn(moveToCol, false);
-                                       }
-                               }
-                       }
-
-                       if (moveToCol) {
-                               currentCol = moveToCol;
-                               nextCol = moveToCol.nextColumn();
-                               nextColWidthLast = nextColWidth;
-                               nextColWidth = nextCol ? nextCol.getWidth() / 2 : 0;
-                               prevCol = moveToCol.prevColumn();
-                               prevColWidthLast = prevColWidth;
-                               prevColWidth = prevCol ? prevCol.getWidth() / 2 : 0;
-                       }
-               }
-       }, { passive: true });
-
-       colEl.addEventListener("touchend", function (e) {
-               if (self.checkTimeout) {
-                       clearTimeout(self.checkTimeout);
-               }
-               if (self.moving) {
-                       self.endMove(e);
-               }
-       });
-};
-
-MoveColumns.prototype.startMove = function (e, column) {
-       var element = column.getElement();
-
-       this.moving = column;
-       this.startX = (this.touchMove ? e.touches[0].pageX : e.pageX) - Tabulator.prototype.helpers.elOffset(element).left;
-
-       this.table.element.classList.add("tabulator-block-select");
-
-       //create placeholder
-       this.placeholderElement.style.width = column.getWidth() + "px";
-       this.placeholderElement.style.height = column.getHeight() + "px";
-
-       element.parentNode.insertBefore(this.placeholderElement, element);
-       element.parentNode.removeChild(element);
-
-       //create hover element
-       this.hoverElement = element.cloneNode(true);
-       this.hoverElement.classList.add("tabulator-moving");
-
-       this.table.columnManager.getElement().appendChild(this.hoverElement);
-
-       this.hoverElement.style.left = "0";
-       this.hoverElement.style.bottom = "0";
-
-       if (!this.touchMove) {
-               this._bindMouseMove();
-
-               document.body.addEventListener("mousemove", this.moveHover);
-               document.body.addEventListener("mouseup", this.endMove);
-       }
-
-       this.moveHover(e);
-};
-
-MoveColumns.prototype._bindMouseMove = function () {
-       this.table.columnManager.columnsByIndex.forEach(function (column) {
-               if (column.modules.moveColumn.mousemove) {
-                       column.getElement().addEventListener("mousemove", column.modules.moveColumn.mousemove);
-               }
-       });
-};
-
-MoveColumns.prototype._unbindMouseMove = function () {
-       this.table.columnManager.columnsByIndex.forEach(function (column) {
-               if (column.modules.moveColumn.mousemove) {
-                       column.getElement().removeEventListener("mousemove", column.modules.moveColumn.mousemove);
-               }
-       });
-};
-
-MoveColumns.prototype.moveColumn = function (column, after) {
-       var movingCells = this.moving.getCells();
-
-       this.toCol = column;
-       this.toColAfter = after;
-
-       if (after) {
-               column.getCells().forEach(function (cell, i) {
-                       var cellEl = cell.getElement();
-                       cellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl.nextSibling);
-               });
-       } else {
-               column.getCells().forEach(function (cell, i) {
-                       var cellEl = cell.getElement();
-                       cellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl);
-               });
-       }
-};
-
-MoveColumns.prototype.endMove = function (e) {
-       if (e.which === 1 || this.touchMove) {
-               this._unbindMouseMove();
-
-               this.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);
-               this.placeholderElement.parentNode.removeChild(this.placeholderElement);
-               this.hoverElement.parentNode.removeChild(this.hoverElement);
-
-               this.table.element.classList.remove("tabulator-block-select");
-
-               if (this.toCol) {
-                       this.table.columnManager.moveColumnActual(this.moving, this.toCol, this.toColAfter);
-               }
-
-               this.moving = false;
-               this.toCol = false;
-               this.toColAfter = false;
-
-               if (!this.touchMove) {
-                       document.body.removeEventListener("mousemove", this.moveHover);
-                       document.body.removeEventListener("mouseup", this.endMove);
-               }
-       }
-};
-
-MoveColumns.prototype.moveHover = function (e) {
-       var self = this,
-           columnHolder = self.table.columnManager.getElement(),
-           scrollLeft = columnHolder.scrollLeft,
-           xPos = (self.touchMove ? e.touches[0].pageX : e.pageX) - Tabulator.prototype.helpers.elOffset(columnHolder).left + scrollLeft,
-           scrollPos;
-
-       self.hoverElement.style.left = xPos - self.startX + "px";
-
-       if (xPos - scrollLeft < self.autoScrollMargin) {
-               if (!self.autoScrollTimeout) {
-                       self.autoScrollTimeout = setTimeout(function () {
-                               scrollPos = Math.max(0, scrollLeft - 5);
-                               self.table.rowManager.getElement().scrollLeft = scrollPos;
-                               self.autoScrollTimeout = false;
-                       }, 1);
-               }
-       }
-
-       if (scrollLeft + columnHolder.clientWidth - xPos < self.autoScrollMargin) {
-               if (!self.autoScrollTimeout) {
-                       self.autoScrollTimeout = setTimeout(function () {
-                               scrollPos = Math.min(columnHolder.clientWidth, scrollLeft + 5);
-                               self.table.rowManager.getElement().scrollLeft = scrollPos;
-                               self.autoScrollTimeout = false;
-                       }, 1);
-               }
-       }
-};
-
-Tabulator.prototype.registerModule("moveColumn", MoveColumns);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/moveable_columns.min.js b/app/static/vendors/tabulator/js.old/modules/moveable_columns.min.js
deleted file mode 100644 (file)
index a742cf9..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-var MoveColumns=function(e){this.table=e,this.placeholderElement=this.createPlaceholderElement(),this.hoverElement=!1,this.checkTimeout=!1,this.checkPeriod=250,this.moving=!1,this.toCol=!1,this.toColAfter=!1,this.startX=0,this.autoScrollMargin=40,this.autoScrollStep=5,this.autoScrollTimeout=!1,this.touchMove=!1,this.moveHover=this.moveHover.bind(this),this.endMove=this.endMove.bind(this)};MoveColumns.prototype.createPlaceholderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-col"),e.classList.add("tabulator-col-placeholder"),e},MoveColumns.prototype.initializeColumn=function(e){var t,o=this,n={};e.modules.frozen||(t=e.getElement(),n.mousemove=function(n){e.parent===o.moving.parent&&((o.touchMove?n.touches[0].pageX:n.pageX)-Tabulator.prototype.helpers.elOffset(t).left+o.table.columnManager.element.scrollLeft>e.getWidth()/2?o.toCol===e&&o.toColAfter||(t.parentNode.insertBefore(o.placeholderElement,t.nextSibling),o.moveColumn(e,!0)):(o.toCol!==e||o.toColAfter)&&(t.parentNode.insertBefore(o.placeholderElement,t),o.moveColumn(e,!1)))}.bind(o),t.addEventListener("mousedown",function(t){o.touchMove=!1,1===t.which&&(o.checkTimeout=setTimeout(function(){o.startMove(t,e)},o.checkPeriod))}),t.addEventListener("mouseup",function(e){1===e.which&&o.checkTimeout&&clearTimeout(o.checkTimeout)}),o.bindTouchEvents(e)),e.modules.moveColumn=n},MoveColumns.prototype.bindTouchEvents=function(e){var t,o,n,l,i,s,m,r=this,u=e.getElement(),h=!1;u.addEventListener("touchstart",function(u){r.checkTimeout=setTimeout(function(){r.touchMove=!0,t=e,o=e.nextColumn(),l=o?o.getWidth()/2:0,n=e.prevColumn(),i=n?n.getWidth()/2:0,s=0,m=0,h=!1,r.startMove(u,e)},r.checkPeriod)},{passive:!0}),u.addEventListener("touchmove",function(u){var a,c;r.moving&&(r.moveHover(u),h||(h=u.touches[0].pageX),a=u.touches[0].pageX-h,a>0?o&&a-s>l&&(c=o)!==e&&(h=u.touches[0].pageX,c.getElement().parentNode.insertBefore(r.placeholderElement,c.getElement().nextSibling),r.moveColumn(c,!0)):n&&-a-m>i&&(c=n)!==e&&(h=u.touches[0].pageX,c.getElement().parentNode.insertBefore(r.placeholderElement,c.getElement()),r.moveColumn(c,!1)),c&&(t=c,o=c.nextColumn(),s=l,l=o?o.getWidth()/2:0,n=c.prevColumn(),m=i,i=n?n.getWidth()/2:0))},{passive:!0}),u.addEventListener("touchend",function(e){r.checkTimeout&&clearTimeout(r.checkTimeout),r.moving&&r.endMove(e)})},MoveColumns.prototype.startMove=function(e,t){var o=t.getElement();this.moving=t,this.startX=(this.touchMove?e.touches[0].pageX:e.pageX)-Tabulator.prototype.helpers.elOffset(o).left,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=t.getWidth()+"px",this.placeholderElement.style.height=t.getHeight()+"px",o.parentNode.insertBefore(this.placeholderElement,o),o.parentNode.removeChild(o),this.hoverElement=o.cloneNode(!0),this.hoverElement.classList.add("tabulator-moving"),this.table.columnManager.getElement().appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.bottom="0",this.touchMove||(this._bindMouseMove(),document.body.addEventListener("mousemove",this.moveHover),document.body.addEventListener("mouseup",this.endMove)),this.moveHover(e)},MoveColumns.prototype._bindMouseMove=function(){this.table.columnManager.columnsByIndex.forEach(function(e){e.modules.moveColumn.mousemove&&e.getElement().addEventListener("mousemove",e.modules.moveColumn.mousemove)})},MoveColumns.prototype._unbindMouseMove=function(){this.table.columnManager.columnsByIndex.forEach(function(e){e.modules.moveColumn.mousemove&&e.getElement().removeEventListener("mousemove",e.modules.moveColumn.mousemove)})},MoveColumns.prototype.moveColumn=function(e,t){var o=this.moving.getCells();this.toCol=e,this.toColAfter=t,t?e.getCells().forEach(function(e,t){var n=e.getElement();n.parentNode.insertBefore(o[t].getElement(),n.nextSibling)}):e.getCells().forEach(function(e,t){var n=e.getElement();n.parentNode.insertBefore(o[t].getElement(),n)})},MoveColumns.prototype.endMove=function(e){(1===e.which||this.touchMove)&&(this._unbindMouseMove(),this.placeholderElement.parentNode.insertBefore(this.moving.getElement(),this.placeholderElement.nextSibling),this.placeholderElement.parentNode.removeChild(this.placeholderElement),this.hoverElement.parentNode.removeChild(this.hoverElement),this.table.element.classList.remove("tabulator-block-select"),this.toCol&&this.table.columnManager.moveColumnActual(this.moving,this.toCol,this.toColAfter),this.moving=!1,this.toCol=!1,this.toColAfter=!1,this.touchMove||(document.body.removeEventListener("mousemove",this.moveHover),document.body.removeEventListener("mouseup",this.endMove)))},MoveColumns.prototype.moveHover=function(e){var t,o=this,n=o.table.columnManager.getElement(),l=n.scrollLeft,i=(o.touchMove?e.touches[0].pageX:e.pageX)-Tabulator.prototype.helpers.elOffset(n).left+l;o.hoverElement.style.left=i-o.startX+"px",i-l<o.autoScrollMargin&&(o.autoScrollTimeout||(o.autoScrollTimeout=setTimeout(function(){t=Math.max(0,l-5),o.table.rowManager.getElement().scrollLeft=t,o.autoScrollTimeout=!1},1))),l+n.clientWidth-i<o.autoScrollMargin&&(o.autoScrollTimeout||(o.autoScrollTimeout=setTimeout(function(){t=Math.min(n.clientWidth,l+5),o.table.rowManager.getElement().scrollLeft=t,o.autoScrollTimeout=!1},1)))},Tabulator.prototype.registerModule("moveColumn",MoveColumns);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/moveable_rows.js b/app/static/vendors/tabulator/js.old/modules/moveable_rows.js
deleted file mode 100644 (file)
index e9063c4..0000000
+++ /dev/null
@@ -1,580 +0,0 @@
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-
-var MoveRows = function MoveRows(table) {
-
-       this.table = table; //hold Tabulator object
-       this.placeholderElement = this.createPlaceholderElement();
-       this.hoverElement = false; //floating row header element
-       this.checkTimeout = false; //click check timeout holder
-       this.checkPeriod = 150; //period to wait on mousedown to consider this a move and not a click
-       this.moving = false; //currently moving row
-       this.toRow = false; //destination row
-       this.toRowAfter = false; //position of moving row relative to the desitnation row
-       this.hasHandle = false; //row has handle instead of fully movable row
-       this.startY = 0; //starting Y position within header element
-       this.startX = 0; //starting X position within header element
-
-       this.moveHover = this.moveHover.bind(this);
-       this.endMove = this.endMove.bind(this);
-       this.tableRowDropEvent = false;
-
-       this.touchMove = false;
-
-       this.connection = false;
-       this.connections = [];
-
-       this.connectedTable = false;
-       this.connectedRow = false;
-};
-
-MoveRows.prototype.createPlaceholderElement = function () {
-       var el = document.createElement("div");
-
-       el.classList.add("tabulator-row");
-       el.classList.add("tabulator-row-placeholder");
-
-       return el;
-};
-
-MoveRows.prototype.initialize = function (handle) {
-       this.connection = this.table.options.movableRowsConnectedTables;
-};
-
-MoveRows.prototype.setHandle = function (handle) {
-       this.hasHandle = handle;
-};
-
-MoveRows.prototype.initializeGroupHeader = function (group) {
-       var self = this,
-           config = {},
-           rowEl;
-
-       //inter table drag drop
-       config.mouseup = function (e) {
-               self.tableRowDrop(e, row);
-       }.bind(self);
-
-       //same table drag drop
-       config.mousemove = function (e) {
-               if (e.pageY - Tabulator.prototype.helpers.elOffset(group.element).top + self.table.rowManager.element.scrollTop > group.getHeight() / 2) {
-                       if (self.toRow !== group || !self.toRowAfter) {
-                               var rowEl = group.getElement();
-                               rowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);
-                               self.moveRow(group, true);
-                       }
-               } else {
-                       if (self.toRow !== group || self.toRowAfter) {
-                               var rowEl = group.getElement();
-                               if (rowEl.previousSibling) {
-                                       rowEl.parentNode.insertBefore(self.placeholderElement, rowEl);
-                                       self.moveRow(group, false);
-                               }
-                       }
-               }
-       }.bind(self);
-
-       group.modules.moveRow = config;
-};
-
-MoveRows.prototype.initializeRow = function (row) {
-       var self = this,
-           config = {},
-           rowEl;
-
-       //inter table drag drop
-       config.mouseup = function (e) {
-               self.tableRowDrop(e, row);
-       }.bind(self);
-
-       //same table drag drop
-       config.mousemove = function (e) {
-               if (e.pageY - Tabulator.prototype.helpers.elOffset(row.element).top + self.table.rowManager.element.scrollTop > row.getHeight() / 2) {
-                       if (self.toRow !== row || !self.toRowAfter) {
-                               var rowEl = row.getElement();
-                               rowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);
-                               self.moveRow(row, true);
-                       }
-               } else {
-                       if (self.toRow !== row || self.toRowAfter) {
-                               var rowEl = row.getElement();
-                               rowEl.parentNode.insertBefore(self.placeholderElement, rowEl);
-                               self.moveRow(row, false);
-                       }
-               }
-       }.bind(self);
-
-       if (!this.hasHandle) {
-
-               rowEl = row.getElement();
-
-               rowEl.addEventListener("mousedown", function (e) {
-                       if (e.which === 1) {
-                               self.checkTimeout = setTimeout(function () {
-                                       self.startMove(e, row);
-                               }, self.checkPeriod);
-                       }
-               });
-
-               rowEl.addEventListener("mouseup", function (e) {
-                       if (e.which === 1) {
-                               if (self.checkTimeout) {
-                                       clearTimeout(self.checkTimeout);
-                               }
-                       }
-               });
-
-               this.bindTouchEvents(row, row.getElement());
-       }
-
-       row.modules.moveRow = config;
-};
-
-MoveRows.prototype.initializeCell = function (cell) {
-       var self = this,
-           cellEl = cell.getElement();
-
-       cellEl.addEventListener("mousedown", function (e) {
-               if (e.which === 1) {
-                       self.checkTimeout = setTimeout(function () {
-                               self.startMove(e, cell.row);
-                       }, self.checkPeriod);
-               }
-       });
-
-       cellEl.addEventListener("mouseup", function (e) {
-               if (e.which === 1) {
-                       if (self.checkTimeout) {
-                               clearTimeout(self.checkTimeout);
-                       }
-               }
-       });
-
-       this.bindTouchEvents(cell.row, cell.getElement());
-};
-
-MoveRows.prototype.bindTouchEvents = function (row, element) {
-       var self = this,
-           startYMove = false,
-           //shifting center position of the cell
-       dir = false,
-           currentRow,
-           nextRow,
-           prevRow,
-           nextRowHeight,
-           prevRowHeight,
-           nextRowHeightLast,
-           prevRowHeightLast;
-
-       element.addEventListener("touchstart", function (e) {
-               self.checkTimeout = setTimeout(function () {
-                       self.touchMove = true;
-                       currentRow = row;
-                       nextRow = row.nextRow();
-                       nextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0;
-                       prevRow = row.prevRow();
-                       prevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0;
-                       nextRowHeightLast = 0;
-                       prevRowHeightLast = 0;
-                       startYMove = false;
-
-                       self.startMove(e, row);
-               }, self.checkPeriod);
-       }, { passive: true });
-       this.moving, this.toRow, this.toRowAfter;
-       element.addEventListener("touchmove", function (e) {
-
-               var halfCol, diff, moveToRow;
-
-               if (self.moving) {
-                       e.preventDefault();
-
-                       self.moveHover(e);
-
-                       if (!startYMove) {
-                               startYMove = e.touches[0].pageY;
-                       }
-
-                       diff = e.touches[0].pageY - startYMove;
-
-                       if (diff > 0) {
-                               if (nextRow && diff - nextRowHeightLast > nextRowHeight) {
-                                       moveToRow = nextRow;
-
-                                       if (moveToRow !== row) {
-                                               startYMove = e.touches[0].pageY;
-                                               moveToRow.getElement().parentNode.insertBefore(self.placeholderElement, moveToRow.getElement().nextSibling);
-                                               self.moveRow(moveToRow, true);
-                                       }
-                               }
-                       } else {
-                               if (prevRow && -diff - prevRowHeightLast > prevRowHeight) {
-                                       moveToRow = prevRow;
-
-                                       if (moveToRow !== row) {
-                                               startYMove = e.touches[0].pageY;
-                                               moveToRow.getElement().parentNode.insertBefore(self.placeholderElement, moveToRow.getElement());
-                                               self.moveRow(moveToRow, false);
-                                       }
-                               }
-                       }
-
-                       if (moveToRow) {
-                               currentRow = moveToRow;
-                               nextRow = moveToRow.nextRow();
-                               nextRowHeightLast = nextRowHeight;
-                               nextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0;
-                               prevRow = moveToRow.prevRow();
-                               prevRowHeightLast = prevRowHeight;
-                               prevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0;
-                       }
-               }
-       });
-
-       element.addEventListener("touchend", function (e) {
-               if (self.checkTimeout) {
-                       clearTimeout(self.checkTimeout);
-               }
-               if (self.moving) {
-                       self.endMove(e);
-                       self.touchMove = false;
-               }
-       });
-};
-
-MoveRows.prototype._bindMouseMove = function () {
-       var self = this;
-
-       self.table.rowManager.getDisplayRows().forEach(function (row) {
-               if ((row.type === "row" || row.type === "group") && row.modules.moveRow.mousemove) {
-                       row.getElement().addEventListener("mousemove", row.modules.moveRow.mousemove);
-               }
-       });
-};
-
-MoveRows.prototype._unbindMouseMove = function () {
-       var self = this;
-
-       self.table.rowManager.getDisplayRows().forEach(function (row) {
-               if ((row.type === "row" || row.type === "group") && row.modules.moveRow.mousemove) {
-                       row.getElement().removeEventListener("mousemove", row.modules.moveRow.mousemove);
-               }
-       });
-};
-
-MoveRows.prototype.startMove = function (e, row) {
-       var element = row.getElement();
-
-       this.setStartPosition(e, row);
-
-       this.moving = row;
-
-       this.table.element.classList.add("tabulator-block-select");
-
-       //create placeholder
-       this.placeholderElement.style.width = row.getWidth() + "px";
-       this.placeholderElement.style.height = row.getHeight() + "px";
-
-       if (!this.connection) {
-               element.parentNode.insertBefore(this.placeholderElement, element);
-               element.parentNode.removeChild(element);
-       } else {
-               this.table.element.classList.add("tabulator-movingrow-sending");
-               this.connectToTables(row);
-       }
-
-       //create hover element
-       this.hoverElement = element.cloneNode(true);
-       this.hoverElement.classList.add("tabulator-moving");
-
-       if (this.connection) {
-               document.body.appendChild(this.hoverElement);
-               this.hoverElement.style.left = "0";
-               this.hoverElement.style.top = "0";
-               this.hoverElement.style.width = this.table.element.clientWidth + "px";
-               this.hoverElement.style.whiteSpace = "nowrap";
-               this.hoverElement.style.overflow = "hidden";
-               this.hoverElement.style.pointerEvents = "none";
-       } else {
-               this.table.rowManager.getTableElement().appendChild(this.hoverElement);
-
-               this.hoverElement.style.left = "0";
-               this.hoverElement.style.top = "0";
-
-               this._bindMouseMove();
-       }
-
-       document.body.addEventListener("mousemove", this.moveHover);
-       document.body.addEventListener("mouseup", this.endMove);
-
-       this.moveHover(e);
-};
-
-MoveRows.prototype.setStartPosition = function (e, row) {
-       var pageX = this.touchMove ? e.touches[0].pageX : e.pageX,
-           pageY = this.touchMove ? e.touches[0].pageY : e.pageY,
-           element,
-           position;
-
-       element = row.getElement();
-       if (this.connection) {
-               position = element.getBoundingClientRect();
-
-               this.startX = position.left - pageX + window.pageXOffset;
-               this.startY = position.top - pageY + window.pageYOffset;
-       } else {
-               this.startY = pageY - element.getBoundingClientRect().top;
-       }
-};
-
-MoveRows.prototype.endMove = function (e) {
-       if (!e || e.which === 1 || this.touchMove) {
-               this._unbindMouseMove();
-
-               if (!this.connection) {
-                       this.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);
-                       this.placeholderElement.parentNode.removeChild(this.placeholderElement);
-               }
-
-               this.hoverElement.parentNode.removeChild(this.hoverElement);
-
-               this.table.element.classList.remove("tabulator-block-select");
-
-               if (this.toRow) {
-                       this.table.rowManager.moveRow(this.moving, this.toRow, this.toRowAfter);
-               }
-
-               this.moving = false;
-               this.toRow = false;
-               this.toRowAfter = false;
-
-               document.body.removeEventListener("mousemove", this.moveHover);
-               document.body.removeEventListener("mouseup", this.endMove);
-
-               if (this.connection) {
-                       this.table.element.classList.remove("tabulator-movingrow-sending");
-                       this.disconnectFromTables();
-               }
-       }
-};
-
-MoveRows.prototype.moveRow = function (row, after) {
-       this.toRow = row;
-       this.toRowAfter = after;
-};
-
-MoveRows.prototype.moveHover = function (e) {
-       if (this.connection) {
-               this.moveHoverConnections.call(this, e);
-       } else {
-               this.moveHoverTable.call(this, e);
-       }
-};
-
-MoveRows.prototype.moveHoverTable = function (e) {
-       var rowHolder = this.table.rowManager.getElement(),
-           scrollTop = rowHolder.scrollTop,
-           yPos = (this.touchMove ? e.touches[0].pageY : e.pageY) - rowHolder.getBoundingClientRect().top + scrollTop,
-           scrollPos;
-
-       this.hoverElement.style.top = yPos - this.startY + "px";
-};
-
-MoveRows.prototype.moveHoverConnections = function (e) {
-       this.hoverElement.style.left = this.startX + (this.touchMove ? e.touches[0].pageX : e.pageX) + "px";
-       this.hoverElement.style.top = this.startY + (this.touchMove ? e.touches[0].pageY : e.pageY) + "px";
-};
-
-//establish connection with other tables
-MoveRows.prototype.connectToTables = function (row) {
-       var self = this,
-           connections = this.table.modules.comms.getConnections(this.connection);
-
-       this.table.options.movableRowsSendingStart.call(this.table, connections);
-
-       this.table.modules.comms.send(this.connection, "moveRow", "connect", {
-               row: row
-       });
-};
-
-//disconnect from other tables
-MoveRows.prototype.disconnectFromTables = function () {
-       var self = this,
-           connections = this.table.modules.comms.getConnections(this.connection);
-
-       this.table.options.movableRowsSendingStop.call(this.table, connections);
-
-       this.table.modules.comms.send(this.connection, "moveRow", "disconnect");
-};
-
-//accept incomming connection
-MoveRows.prototype.connect = function (table, row) {
-       var self = this;
-       if (!this.connectedTable) {
-               this.connectedTable = table;
-               this.connectedRow = row;
-
-               this.table.element.classList.add("tabulator-movingrow-receiving");
-
-               self.table.rowManager.getDisplayRows().forEach(function (row) {
-                       if (row.type === "row" && row.modules.moveRow && row.modules.moveRow.mouseup) {
-                               row.getElement().addEventListener("mouseup", row.modules.moveRow.mouseup);
-                       }
-               });
-
-               self.tableRowDropEvent = self.tableRowDrop.bind(self);
-
-               self.table.element.addEventListener("mouseup", self.tableRowDropEvent);
-
-               this.table.options.movableRowsReceivingStart.call(this.table, row, table);
-
-               return true;
-       } else {
-               console.warn("Move Row Error - Table cannot accept connection, already connected to table:", this.connectedTable);
-               return false;
-       }
-};
-
-//close incomming connection
-MoveRows.prototype.disconnect = function (table) {
-       var self = this;
-       if (table === this.connectedTable) {
-               this.connectedTable = false;
-               this.connectedRow = false;
-
-               this.table.element.classList.remove("tabulator-movingrow-receiving");
-
-               self.table.rowManager.getDisplayRows().forEach(function (row) {
-                       if (row.type === "row" && row.modules.moveRow && row.modules.moveRow.mouseup) {
-                               row.getElement().removeEventListener("mouseup", row.modules.moveRow.mouseup);
-                       }
-               });
-
-               self.table.element.removeEventListener("mouseup", self.tableRowDropEvent);
-
-               this.table.options.movableRowsReceivingStop.call(this.table, table);
-       } else {
-               console.warn("Move Row Error - trying to disconnect from non connected table");
-       }
-};
-
-MoveRows.prototype.dropComplete = function (table, row, success) {
-       var sender = false;
-
-       if (success) {
-
-               switch (_typeof(this.table.options.movableRowsSender)) {
-                       case "string":
-                               sender = this.senders[this.table.options.movableRowsSender];
-                               break;
-
-                       case "function":
-                               sender = this.table.options.movableRowsSender;
-                               break;
-               }
-
-               if (sender) {
-                       sender.call(this, this.moving.getComponent(), row ? row.getComponent() : undefined, table);
-               } else {
-                       if (this.table.options.movableRowsSender) {
-                               console.warn("Mover Row Error - no matching sender found:", this.table.options.movableRowsSender);
-                       }
-               }
-
-               this.table.options.movableRowsSent.call(this.table, this.moving.getComponent(), row ? row.getComponent() : undefined, table);
-       } else {
-               this.table.options.movableRowsSentFailed.call(this.table, this.moving.getComponent(), row ? row.getComponent() : undefined, table);
-       }
-
-       this.endMove();
-};
-
-MoveRows.prototype.tableRowDrop = function (e, row) {
-       var receiver = false,
-           success = false;
-
-       e.stopImmediatePropagation();
-
-       switch (_typeof(this.table.options.movableRowsReceiver)) {
-               case "string":
-                       receiver = this.receivers[this.table.options.movableRowsReceiver];
-                       break;
-
-               case "function":
-                       receiver = this.table.options.movableRowsReceiver;
-                       break;
-       }
-
-       if (receiver) {
-               success = receiver.call(this, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);
-       } else {
-               console.warn("Mover Row Error - no matching receiver found:", this.table.options.movableRowsReceiver);
-       }
-
-       if (success) {
-               this.table.options.movableRowsReceived.call(this.table, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);
-       } else {
-               this.table.options.movableRowsReceivedFailed.call(this.table, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);
-       }
-
-       this.table.modules.comms.send(this.connectedTable, "moveRow", "dropcomplete", {
-               row: row,
-               success: success
-       });
-};
-
-MoveRows.prototype.receivers = {
-       insert: function insert(fromRow, toRow, fromTable) {
-               this.table.addRow(fromRow.getData(), undefined, toRow);
-               return true;
-       },
-
-       add: function add(fromRow, toRow, fromTable) {
-               this.table.addRow(fromRow.getData());
-               return true;
-       },
-
-       update: function update(fromRow, toRow, fromTable) {
-               if (toRow) {
-                       toRow.update(fromRow.getData());
-                       return true;
-               }
-
-               return false;
-       },
-
-       replace: function replace(fromRow, toRow, fromTable) {
-               if (toRow) {
-                       this.table.addRow(fromRow.getData(), undefined, toRow);
-                       toRow.delete();
-                       return true;
-               }
-
-               return false;
-       }
-};
-
-MoveRows.prototype.senders = {
-       delete: function _delete(fromRow, toRow, toTable) {
-               fromRow.delete();
-       }
-};
-
-MoveRows.prototype.commsReceived = function (table, action, data) {
-       switch (action) {
-               case "connect":
-                       return this.connect(table, data.row);
-                       break;
-
-               case "disconnect":
-                       return this.disconnect(table);
-                       break;
-
-               case "dropcomplete":
-                       return this.dropComplete(table, data.row, data.success);
-                       break;
-       }
-};
-
-Tabulator.prototype.registerModule("moveRow", MoveRows);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/moveable_rows.min.js b/app/static/vendors/tabulator/js.old/modules/moveable_rows.min.js
deleted file mode 100644 (file)
index 8a80e50..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},MoveRows=function(e){this.table=e,this.placeholderElement=this.createPlaceholderElement(),this.hoverElement=!1,this.checkTimeout=!1,this.checkPeriod=150,this.moving=!1,this.toRow=!1,this.toRowAfter=!1,this.hasHandle=!1,this.startY=0,this.startX=0,this.moveHover=this.moveHover.bind(this),this.endMove=this.endMove.bind(this),this.tableRowDropEvent=!1,this.touchMove=!1,this.connection=!1,this.connections=[],this.connectedTable=!1,this.connectedRow=!1};MoveRows.prototype.createPlaceholderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-row"),e.classList.add("tabulator-row-placeholder"),e},MoveRows.prototype.initialize=function(e){this.connection=this.table.options.movableRowsConnectedTables},MoveRows.prototype.setHandle=function(e){this.hasHandle=e},MoveRows.prototype.initializeGroupHeader=function(e){var t=this,o={};o.mouseup=function(e){t.tableRowDrop(e,row)}.bind(t),o.mousemove=function(o){if(o.pageY-Tabulator.prototype.helpers.elOffset(e.element).top+t.table.rowManager.element.scrollTop>e.getHeight()/2){if(t.toRow!==e||!t.toRowAfter){var n=e.getElement();n.parentNode.insertBefore(t.placeholderElement,n.nextSibling),t.moveRow(e,!0)}}else if(t.toRow!==e||t.toRowAfter){var n=e.getElement();n.previousSibling&&(n.parentNode.insertBefore(t.placeholderElement,n),t.moveRow(e,!1))}}.bind(t),e.modules.moveRow=o},MoveRows.prototype.initializeRow=function(e){var t,o=this,n={};n.mouseup=function(t){o.tableRowDrop(t,e)}.bind(o),n.mousemove=function(t){if(t.pageY-Tabulator.prototype.helpers.elOffset(e.element).top+o.table.rowManager.element.scrollTop>e.getHeight()/2){if(o.toRow!==e||!o.toRowAfter){var n=e.getElement();n.parentNode.insertBefore(o.placeholderElement,n.nextSibling),o.moveRow(e,!0)}}else if(o.toRow!==e||o.toRowAfter){var n=e.getElement();n.parentNode.insertBefore(o.placeholderElement,n),o.moveRow(e,!1)}}.bind(o),this.hasHandle||(t=e.getElement(),t.addEventListener("mousedown",function(t){1===t.which&&(o.checkTimeout=setTimeout(function(){o.startMove(t,e)},o.checkPeriod))}),t.addEventListener("mouseup",function(e){1===e.which&&o.checkTimeout&&clearTimeout(o.checkTimeout)}),this.bindTouchEvents(e,e.getElement())),e.modules.moveRow=n},MoveRows.prototype.initializeCell=function(e){var t=this,o=e.getElement();o.addEventListener("mousedown",function(o){1===o.which&&(t.checkTimeout=setTimeout(function(){t.startMove(o,e.row)},t.checkPeriod))}),o.addEventListener("mouseup",function(e){1===e.which&&t.checkTimeout&&clearTimeout(t.checkTimeout)}),this.bindTouchEvents(e.row,e.getElement())},MoveRows.prototype.bindTouchEvents=function(e,t){var o,n,i,s,l,r,a,c=this,h=!1;t.addEventListener("touchstart",function(t){c.checkTimeout=setTimeout(function(){c.touchMove=!0,o=e,n=e.nextRow(),s=n?n.getHeight()/2:0,i=e.prevRow(),l=i?i.getHeight()/2:0,r=0,a=0,h=!1,c.startMove(t,e)},c.checkPeriod)},{passive:!0}),this.moving,this.toRow,this.toRowAfter,t.addEventListener("touchmove",function(t){var m,v;c.moving&&(t.preventDefault(),c.moveHover(t),h||(h=t.touches[0].pageY),m=t.touches[0].pageY-h,m>0?n&&m-r>s&&(v=n)!==e&&(h=t.touches[0].pageY,v.getElement().parentNode.insertBefore(c.placeholderElement,v.getElement().nextSibling),c.moveRow(v,!0)):i&&-m-a>l&&(v=i)!==e&&(h=t.touches[0].pageY,v.getElement().parentNode.insertBefore(c.placeholderElement,v.getElement()),c.moveRow(v,!1)),v&&(o=v,n=v.nextRow(),r=s,s=n?n.getHeight()/2:0,i=v.prevRow(),a=l,l=i?i.getHeight()/2:0))}),t.addEventListener("touchend",function(e){c.checkTimeout&&clearTimeout(c.checkTimeout),c.moving&&(c.endMove(e),c.touchMove=!1)})},MoveRows.prototype._bindMouseMove=function(){this.table.rowManager.getDisplayRows().forEach(function(e){"row"!==e.type&&"group"!==e.type||!e.modules.moveRow.mousemove||e.getElement().addEventListener("mousemove",e.modules.moveRow.mousemove)})},MoveRows.prototype._unbindMouseMove=function(){this.table.rowManager.getDisplayRows().forEach(function(e){"row"!==e.type&&"group"!==e.type||!e.modules.moveRow.mousemove||e.getElement().removeEventListener("mousemove",e.modules.moveRow.mousemove)})},MoveRows.prototype.startMove=function(e,t){var o=t.getElement();this.setStartPosition(e,t),this.moving=t,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=t.getWidth()+"px",this.placeholderElement.style.height=t.getHeight()+"px",this.connection?(this.table.element.classList.add("tabulator-movingrow-sending"),this.connectToTables(t)):(o.parentNode.insertBefore(this.placeholderElement,o),o.parentNode.removeChild(o)),this.hoverElement=o.cloneNode(!0),this.hoverElement.classList.add("tabulator-moving"),this.connection?(document.body.appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.top="0",this.hoverElement.style.width=this.table.element.clientWidth+"px",this.hoverElement.style.whiteSpace="nowrap",this.hoverElement.style.overflow="hidden",this.hoverElement.style.pointerEvents="none"):(this.table.rowManager.getTableElement().appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.top="0",this._bindMouseMove()),document.body.addEventListener("mousemove",this.moveHover),document.body.addEventListener("mouseup",this.endMove),this.moveHover(e)},MoveRows.prototype.setStartPosition=function(e,t){var o,n,i=this.touchMove?e.touches[0].pageX:e.pageX,s=this.touchMove?e.touches[0].pageY:e.pageY;o=t.getElement(),this.connection?(n=o.getBoundingClientRect(),this.startX=n.left-i+window.pageXOffset,this.startY=n.top-s+window.pageYOffset):this.startY=s-o.getBoundingClientRect().top},MoveRows.prototype.endMove=function(e){e&&1!==e.which&&!this.touchMove||(this._unbindMouseMove(),this.connection||(this.placeholderElement.parentNode.insertBefore(this.moving.getElement(),this.placeholderElement.nextSibling),this.placeholderElement.parentNode.removeChild(this.placeholderElement)),this.hoverElement.parentNode.removeChild(this.hoverElement),this.table.element.classList.remove("tabulator-block-select"),this.toRow&&this.table.rowManager.moveRow(this.moving,this.toRow,this.toRowAfter),this.moving=!1,this.toRow=!1,this.toRowAfter=!1,document.body.removeEventListener("mousemove",this.moveHover),document.body.removeEventListener("mouseup",this.endMove),this.connection&&(this.table.element.classList.remove("tabulator-movingrow-sending"),this.disconnectFromTables()))},MoveRows.prototype.moveRow=function(e,t){this.toRow=e,this.toRowAfter=t},MoveRows.prototype.moveHover=function(e){this.connection?this.moveHoverConnections.call(this,e):this.moveHoverTable.call(this,e)},MoveRows.prototype.moveHoverTable=function(e){var t=this.table.rowManager.getElement(),o=t.scrollTop,n=(this.touchMove?e.touches[0].pageY:e.pageY)-t.getBoundingClientRect().top+o;this.hoverElement.style.top=n-this.startY+"px"},MoveRows.prototype.moveHoverConnections=function(e){this.hoverElement.style.left=this.startX+(this.touchMove?e.touches[0].pageX:e.pageX)+"px",this.hoverElement.style.top=this.startY+(this.touchMove?e.touches[0].pageY:e.pageY)+"px"},MoveRows.prototype.connectToTables=function(e){var t=this.table.modules.comms.getConnections(this.connection);this.table.options.movableRowsSendingStart.call(this.table,t),this.table.modules.comms.send(this.connection,"moveRow","connect",{row:e})},MoveRows.prototype.disconnectFromTables=function(){var e=this.table.modules.comms.getConnections(this.connection);this.table.options.movableRowsSendingStop.call(this.table,e),this.table.modules.comms.send(this.connection,"moveRow","disconnect")},MoveRows.prototype.connect=function(e,t){var o=this;return this.connectedTable?(console.warn("Move Row Error - Table cannot accept connection, already connected to table:",this.connectedTable),!1):(this.connectedTable=e,this.connectedRow=t,this.table.element.classList.add("tabulator-movingrow-receiving"),o.table.rowManager.getDisplayRows().forEach(function(e){"row"===e.type&&e.modules.moveRow&&e.modules.moveRow.mouseup&&e.getElement().addEventListener("mouseup",e.modules.moveRow.mouseup)}),o.tableRowDropEvent=o.tableRowDrop.bind(o),o.table.element.addEventListener("mouseup",o.tableRowDropEvent),this.table.options.movableRowsReceivingStart.call(this.table,t,e),!0)},MoveRows.prototype.disconnect=function(e){var t=this;e===this.connectedTable?(this.connectedTable=!1,this.connectedRow=!1,this.table.element.classList.remove("tabulator-movingrow-receiving"),t.table.rowManager.getDisplayRows().forEach(function(e){"row"===e.type&&e.modules.moveRow&&e.modules.moveRow.mouseup&&e.getElement().removeEventListener("mouseup",e.modules.moveRow.mouseup)}),t.table.element.removeEventListener("mouseup",t.tableRowDropEvent),this.table.options.movableRowsReceivingStop.call(this.table,e)):console.warn("Move Row Error - trying to disconnect from non connected table")},MoveRows.prototype.dropComplete=function(e,t,o){var n=!1;if(o){switch(_typeof(this.table.options.movableRowsSender)){case"string":n=this.senders[this.table.options.movableRowsSender];break;case"function":n=this.table.options.movableRowsSender}n?n.call(this,this.moving.getComponent(),t?t.getComponent():void 0,e):this.table.options.movableRowsSender&&console.warn("Mover Row Error - no matching sender found:",this.table.options.movableRowsSender),this.table.options.movableRowsSent.call(this.table,this.moving.getComponent(),t?t.getComponent():void 0,e)}else this.table.options.movableRowsSentFailed.call(this.table,this.moving.getComponent(),t?t.getComponent():void 0,e);this.endMove()},MoveRows.prototype.tableRowDrop=function(e,t){var o=!1,n=!1;switch(e.stopImmediatePropagation(),_typeof(this.table.options.movableRowsReceiver)){case"string":o=this.receivers[this.table.options.movableRowsReceiver];break;case"function":o=this.table.options.movableRowsReceiver}o?n=o.call(this,this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable):console.warn("Mover Row Error - no matching receiver found:",this.table.options.movableRowsReceiver),n?this.table.options.movableRowsReceived.call(this.table,this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable):this.table.options.movableRowsReceivedFailed.call(this.table,this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable),this.table.modules.comms.send(this.connectedTable,"moveRow","dropcomplete",{row:t,success:n})},MoveRows.prototype.receivers={insert:function(e,t,o){return this.table.addRow(e.getData(),void 0,t),!0},add:function(e,t,o){return this.table.addRow(e.getData()),!0},update:function(e,t,o){return!!t&&(t.update(e.getData()),!0)},replace:function(e,t,o){return!!t&&(this.table.addRow(e.getData(),void 0,t),t.delete(),!0)}},MoveRows.prototype.senders={delete:function(e,t,o){e.delete()}},MoveRows.prototype.commsReceived=function(e,t,o){switch(t){case"connect":return this.connect(e,o.row);case"disconnect":return this.disconnect(e);case"dropcomplete":return this.dropComplete(e,o.row,o.success)}},Tabulator.prototype.registerModule("moveRow",MoveRows);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/mutator.js b/app/static/vendors/tabulator/js.old/modules/mutator.js
deleted file mode 100644 (file)
index b2f7a39..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-
-var Mutator = function Mutator(table) {
-       this.table = table; //hold Tabulator object
-       this.allowedTypes = ["", "data", "edit", "clipboard"]; //list of muatation types
-       this.enabled = true;
-};
-
-//initialize column mutator
-Mutator.prototype.initializeColumn = function (column) {
-       var self = this,
-           match = false,
-           config = {};
-
-       this.allowedTypes.forEach(function (type) {
-               var key = "mutator" + (type.charAt(0).toUpperCase() + type.slice(1)),
-                   mutator;
-
-               if (column.definition[key]) {
-                       mutator = self.lookupMutator(column.definition[key]);
-
-                       if (mutator) {
-                               match = true;
-
-                               config[key] = {
-                                       mutator: mutator,
-                                       params: column.definition[key + "Params"] || {}
-                               };
-                       }
-               }
-       });
-
-       if (match) {
-               column.modules.mutate = config;
-       }
-};
-
-Mutator.prototype.lookupMutator = function (value) {
-       var mutator = false;
-
-       //set column mutator
-       switch (typeof value === "undefined" ? "undefined" : _typeof(value)) {
-               case "string":
-                       if (this.mutators[value]) {
-                               mutator = this.mutators[value];
-                       } else {
-                               console.warn("Mutator Error - No such mutator found, ignoring: ", value);
-                       }
-                       break;
-
-               case "function":
-                       mutator = value;
-                       break;
-       }
-
-       return mutator;
-};
-
-//apply mutator to row
-Mutator.prototype.transformRow = function (data, type, updatedData) {
-       var self = this,
-           key = "mutator" + (type.charAt(0).toUpperCase() + type.slice(1)),
-           value;
-
-       if (this.enabled) {
-
-               self.table.columnManager.traverse(function (column) {
-                       var mutator, params, component;
-
-                       if (column.modules.mutate) {
-                               mutator = column.modules.mutate[key] || column.modules.mutate.mutator || false;
-
-                               if (mutator) {
-                                       value = column.getFieldValue(typeof updatedData !== "undefined" ? updatedData : data);
-
-                                       if (type == "data" || typeof value !== "undefined") {
-                                               component = column.getComponent();
-                                               params = typeof mutator.params === "function" ? mutator.params(value, data, type, component) : mutator.params;
-                                               column.setFieldValue(data, mutator.mutator(value, data, type, params, component));
-                                       }
-                               }
-                       }
-               });
-       }
-
-       return data;
-};
-
-//apply mutator to new cell value
-Mutator.prototype.transformCell = function (cell, value) {
-       var mutator = cell.column.modules.mutate.mutatorEdit || cell.column.modules.mutate.mutator || false,
-           tempData = {};
-
-       if (mutator) {
-               tempData = Object.assign(tempData, cell.row.getData());
-               cell.column.setFieldValue(tempData, value);
-               return mutator.mutator(value, tempData, "edit", mutator.params, cell.getComponent());
-       } else {
-               return value;
-       }
-};
-
-Mutator.prototype.enable = function () {
-       this.enabled = true;
-};
-
-Mutator.prototype.disable = function () {
-       this.enabled = false;
-};
-
-//default mutators
-Mutator.prototype.mutators = {};
-
-Tabulator.prototype.registerModule("mutator", Mutator);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/mutator.min.js b/app/static/vendors/tabulator/js.old/modules/mutator.min.js
deleted file mode 100644 (file)
index fa6b50a..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Mutator=function(t){this.table=t,this.allowedTypes=["","data","edit","clipboard"],this.enabled=!0};Mutator.prototype.initializeColumn=function(t){var o=this,e=!1,a={};this.allowedTypes.forEach(function(r){var u,n="mutator"+(r.charAt(0).toUpperCase()+r.slice(1));t.definition[n]&&(u=o.lookupMutator(t.definition[n]))&&(e=!0,a[n]={mutator:u,params:t.definition[n+"Params"]||{}})}),e&&(t.modules.mutate=a)},Mutator.prototype.lookupMutator=function(t){var o=!1;switch(void 0===t?"undefined":_typeof(t)){case"string":this.mutators[t]?o=this.mutators[t]:console.warn("Mutator Error - No such mutator found, ignoring: ",t);break;case"function":o=t}return o},Mutator.prototype.transformRow=function(t,o,e){var a,r=this,u="mutator"+(o.charAt(0).toUpperCase()+o.slice(1));return this.enabled&&r.table.columnManager.traverse(function(r){var n,i,s;r.modules.mutate&&(n=r.modules.mutate[u]||r.modules.mutate.mutator||!1)&&(a=r.getFieldValue(void 0!==e?e:t),"data"!=o&&void 0===a||(s=r.getComponent(),i="function"==typeof n.params?n.params(a,t,o,s):n.params,r.setFieldValue(t,n.mutator(a,t,o,i,s))))}),t},Mutator.prototype.transformCell=function(t,o){var e=t.column.modules.mutate.mutatorEdit||t.column.modules.mutate.mutator||!1,a={};return e?(a=Object.assign(a,t.row.getData()),t.column.setFieldValue(a,o),e.mutator(o,a,"edit",e.params,t.getComponent())):o},Mutator.prototype.enable=function(){this.enabled=!0},Mutator.prototype.disable=function(){this.enabled=!1},Mutator.prototype.mutators={},Tabulator.prototype.registerModule("mutator",Mutator);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/page.js b/app/static/vendors/tabulator/js.old/modules/page.js
deleted file mode 100644 (file)
index 52ee487..0000000
+++ /dev/null
@@ -1,693 +0,0 @@
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-
-var Page = function Page(table) {
-
-       this.table = table; //hold Tabulator object
-
-       this.mode = "local";
-       this.progressiveLoad = false;
-
-       this.size = 0;
-       this.page = 1;
-       this.count = 5;
-       this.max = 1;
-
-       this.displayIndex = 0; //index in display pipeline
-
-       this.initialLoad = true;
-
-       this.pageSizes = [];
-
-       this.dataReceivedNames = {};
-       this.dataSentNames = {};
-
-       this.createElements();
-};
-
-Page.prototype.createElements = function () {
-
-       var button;
-
-       this.element = document.createElement("span");
-       this.element.classList.add("tabulator-paginator");
-
-       this.pagesElement = document.createElement("span");
-       this.pagesElement.classList.add("tabulator-pages");
-
-       button = document.createElement("button");
-       button.classList.add("tabulator-page");
-       button.setAttribute("type", "button");
-       button.setAttribute("role", "button");
-       button.setAttribute("aria-label", "");
-       button.setAttribute("title", "");
-
-       this.firstBut = button.cloneNode(true);
-       this.firstBut.setAttribute("data-page", "first");
-
-       this.prevBut = button.cloneNode(true);
-       this.prevBut.setAttribute("data-page", "prev");
-
-       this.nextBut = button.cloneNode(true);
-       this.nextBut.setAttribute("data-page", "next");
-
-       this.lastBut = button.cloneNode(true);
-       this.lastBut.setAttribute("data-page", "last");
-
-       if (this.table.options.paginationSizeSelector) {
-               this.pageSizeSelect = document.createElement("select");
-               this.pageSizeSelect.classList.add("tabulator-page-size");
-       }
-};
-
-Page.prototype.generatePageSizeSelectList = function () {
-       var _this = this;
-
-       var pageSizes = [];
-
-       if (this.pageSizeSelect) {
-
-               if (Array.isArray(this.table.options.paginationSizeSelector)) {
-                       pageSizes = this.table.options.paginationSizeSelector;
-                       this.pageSizes = pageSizes;
-
-                       if (this.pageSizes.indexOf(this.size) == -1) {
-                               pageSizes.unshift(this.size);
-                       }
-               } else {
-
-                       if (this.pageSizes.indexOf(this.size) == -1) {
-                               pageSizes = [];
-
-                               for (var i = 1; i < 5; i++) {
-                                       pageSizes.push(this.size * i);
-                               }
-
-                               this.pageSizes = pageSizes;
-                       } else {
-                               pageSizes = this.pageSizes;
-                       }
-               }
-
-               while (this.pageSizeSelect.firstChild) {
-                       this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);
-               }pageSizes.forEach(function (item) {
-                       var itemEl = document.createElement("option");
-                       itemEl.value = item;
-                       itemEl.innerHTML = item;
-
-                       _this.pageSizeSelect.appendChild(itemEl);
-               });
-
-               this.pageSizeSelect.value = this.size;
-       }
-};
-
-//setup pageination
-Page.prototype.initialize = function (hidden) {
-       var self = this,
-           pageSelectLabel,
-           testElRow,
-           testElCell;
-
-       //update param names
-       this.dataSentNames = Object.assign({}, this.paginationDataSentNames);
-       this.dataSentNames = Object.assign(this.dataSentNames, this.table.options.paginationDataSent);
-
-       this.dataReceivedNames = Object.assign({}, this.paginationDataReceivedNames);
-       this.dataReceivedNames = Object.assign(this.dataReceivedNames, this.table.options.paginationDataReceived);
-
-       //build pagination element
-
-       //bind localizations
-       self.table.modules.localize.bind("pagination|first", function (value) {
-               self.firstBut.innerHTML = value;
-       });
-
-       self.table.modules.localize.bind("pagination|first_title", function (value) {
-               self.firstBut.setAttribute("aria-label", value);
-               self.firstBut.setAttribute("title", value);
-       });
-
-       self.table.modules.localize.bind("pagination|prev", function (value) {
-               self.prevBut.innerHTML = value;
-       });
-
-       self.table.modules.localize.bind("pagination|prev_title", function (value) {
-               self.prevBut.setAttribute("aria-label", value);
-               self.prevBut.setAttribute("title", value);
-       });
-
-       self.table.modules.localize.bind("pagination|next", function (value) {
-               self.nextBut.innerHTML = value;
-       });
-
-       self.table.modules.localize.bind("pagination|next_title", function (value) {
-               self.nextBut.setAttribute("aria-label", value);
-               self.nextBut.setAttribute("title", value);
-       });
-
-       self.table.modules.localize.bind("pagination|last", function (value) {
-               self.lastBut.innerHTML = value;
-       });
-
-       self.table.modules.localize.bind("pagination|last_title", function (value) {
-               self.lastBut.setAttribute("aria-label", value);
-               self.lastBut.setAttribute("title", value);
-       });
-
-       //click bindings
-       self.firstBut.addEventListener("click", function () {
-               self.setPage(1);
-       });
-
-       self.prevBut.addEventListener("click", function () {
-               self.previousPage();
-       });
-
-       self.nextBut.addEventListener("click", function () {
-               self.nextPage().then(function () {}).catch(function () {});
-       });
-
-       self.lastBut.addEventListener("click", function () {
-               self.setPage(self.max);
-       });
-
-       if (self.table.options.paginationElement) {
-               self.element = self.table.options.paginationElement;
-       }
-
-       if (this.pageSizeSelect) {
-               pageSelectLabel = document.createElement("label");
-
-               self.table.modules.localize.bind("pagination|page_size", function (value) {
-                       self.pageSizeSelect.setAttribute("aria-label", value);
-                       self.pageSizeSelect.setAttribute("title", value);
-                       pageSelectLabel.innerHTML = value;
-               });
-
-               self.element.appendChild(pageSelectLabel);
-               self.element.appendChild(self.pageSizeSelect);
-
-               self.pageSizeSelect.addEventListener("change", function (e) {
-                       self.setPageSize(self.pageSizeSelect.value);
-                       self.setPage(1).then(function () {}).catch(function () {});
-               });
-       }
-
-       //append to DOM
-       self.element.appendChild(self.firstBut);
-       self.element.appendChild(self.prevBut);
-       self.element.appendChild(self.pagesElement);
-       self.element.appendChild(self.nextBut);
-       self.element.appendChild(self.lastBut);
-
-       if (!self.table.options.paginationElement && !hidden) {
-               self.table.footerManager.append(self.element, self);
-       }
-
-       //set default values
-       self.mode = self.table.options.pagination;
-
-       if (self.table.options.paginationSize) {
-               self.size = self.table.options.paginationSize;
-       } else {
-               testElRow = document.createElement("div");
-               testElRow.classList.add("tabulator-row");
-               testElRow.style.visibility = hidden;
-
-               testElCell = document.createElement("div");
-               testElCell.classList.add("tabulator-cell");
-               testElCell.innerHTML = "Page Row Test";
-
-               testElRow.appendChild(testElCell);
-
-               self.table.rowManager.getTableElement().appendChild(testElRow);
-
-               self.size = Math.floor(self.table.rowManager.getElement().clientHeight / testElRow.offsetHeight);
-
-               self.table.rowManager.getTableElement().removeChild(testElRow);
-       }
-
-       // self.page = self.table.options.paginationInitialPage || 1;
-       self.count = self.table.options.paginationButtonCount;
-
-       self.generatePageSizeSelectList();
-};
-
-Page.prototype.initializeProgressive = function (mode) {
-       this.initialize(true);
-       this.mode = "progressive_" + mode;
-       this.progressiveLoad = true;
-};
-
-Page.prototype.setDisplayIndex = function (index) {
-       this.displayIndex = index;
-};
-
-Page.prototype.getDisplayIndex = function () {
-       return this.displayIndex;
-};
-
-//calculate maximum page from number of rows
-Page.prototype.setMaxRows = function (rowCount) {
-       if (!rowCount) {
-               this.max = 1;
-       } else {
-               this.max = Math.ceil(rowCount / this.size);
-       }
-
-       if (this.page > this.max) {
-               this.page = this.max;
-       }
-};
-
-//reset to first page without triggering action
-Page.prototype.reset = function (force, columnsChanged) {
-       if (this.mode == "local" || force) {
-               this.page = 1;
-       }
-
-       if (columnsChanged) {
-               this.initialLoad = true;
-       }
-
-       return true;
-};
-
-//set the maxmum page
-Page.prototype.setMaxPage = function (max) {
-
-       max = parseInt(max);
-
-       this.max = max || 1;
-
-       if (this.page > this.max) {
-               this.page = this.max;
-               this.trigger();
-       }
-};
-
-//set current page number
-Page.prototype.setPage = function (page) {
-       var _this2 = this;
-
-       var self = this;
-
-       return new Promise(function (resolve, reject) {
-
-               page = parseInt(page);
-
-               if (page > 0 && page <= _this2.max) {
-                       _this2.page = page;
-                       _this2.trigger().then(function () {
-                               resolve();
-                       }).catch(function () {
-                               reject();
-                       });
-
-                       if (self.table.options.persistence && self.table.modExists("persistence", true) && self.table.modules.persistence.config.page) {
-                               self.table.modules.persistence.save("page");
-                       }
-               } else {
-                       console.warn("Pagination Error - Requested page is out of range of 1 - " + _this2.max + ":", page);
-                       reject();
-               }
-       });
-};
-
-Page.prototype.setPageToRow = function (row) {
-       var _this3 = this;
-
-       return new Promise(function (resolve, reject) {
-
-               var rows = _this3.table.rowManager.getDisplayRows(_this3.displayIndex - 1);
-               var index = rows.indexOf(row);
-
-               if (index > -1) {
-                       var page = Math.ceil((index + 1) / _this3.size);
-
-                       _this3.setPage(page).then(function () {
-                               resolve();
-                       }).catch(function () {
-                               reject();
-                       });
-               } else {
-                       console.warn("Pagination Error - Requested row is not visible");
-                       reject();
-               }
-       });
-};
-
-Page.prototype.setPageSize = function (size) {
-       size = parseInt(size);
-
-       if (size > 0) {
-               this.size = size;
-       }
-
-       if (this.pageSizeSelect) {
-               // this.pageSizeSelect.value = size;
-               this.generatePageSizeSelectList();
-       }
-
-       if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.page) {
-               this.table.modules.persistence.save("page");
-       }
-};
-
-//setup the pagination buttons
-Page.prototype._setPageButtons = function () {
-       var self = this;
-
-       var leftSize = Math.floor((this.count - 1) / 2);
-       var rightSize = Math.ceil((this.count - 1) / 2);
-       var min = this.max - this.page + leftSize + 1 < this.count ? this.max - this.count + 1 : Math.max(this.page - leftSize, 1);
-       var max = this.page <= rightSize ? Math.min(this.count, this.max) : Math.min(this.page + rightSize, this.max);
-
-       while (self.pagesElement.firstChild) {
-               self.pagesElement.removeChild(self.pagesElement.firstChild);
-       }if (self.page == 1) {
-               self.firstBut.disabled = true;
-               self.prevBut.disabled = true;
-       } else {
-               self.firstBut.disabled = false;
-               self.prevBut.disabled = false;
-       }
-
-       if (self.page == self.max) {
-               self.lastBut.disabled = true;
-               self.nextBut.disabled = true;
-       } else {
-               self.lastBut.disabled = false;
-               self.nextBut.disabled = false;
-       }
-
-       for (var i = min; i <= max; i++) {
-               if (i > 0 && i <= self.max) {
-                       self.pagesElement.appendChild(self._generatePageButton(i));
-               }
-       }
-
-       this.footerRedraw();
-};
-
-Page.prototype._generatePageButton = function (page) {
-       var self = this,
-           button = document.createElement("button");
-
-       button.classList.add("tabulator-page");
-       if (page == self.page) {
-               button.classList.add("active");
-       }
-
-       button.setAttribute("type", "button");
-       button.setAttribute("role", "button");
-       button.setAttribute("aria-label", "Show Page " + page);
-       button.setAttribute("title", "Show Page " + page);
-       button.setAttribute("data-page", page);
-       button.textContent = page;
-
-       button.addEventListener("click", function (e) {
-               self.setPage(page);
-       });
-
-       return button;
-};
-
-//previous page
-Page.prototype.previousPage = function () {
-       var _this4 = this;
-
-       return new Promise(function (resolve, reject) {
-               if (_this4.page > 1) {
-                       _this4.page--;
-                       _this4.trigger().then(function () {
-                               resolve();
-                       }).catch(function () {
-                               reject();
-                       });
-
-                       if (_this4.table.options.persistence && _this4.table.modExists("persistence", true) && _this4.table.modules.persistence.config.page) {
-                               _this4.table.modules.persistence.save("page");
-                       }
-               } else {
-                       console.warn("Pagination Error - Previous page would be less than page 1:", 0);
-                       reject();
-               }
-       });
-};
-
-//next page
-Page.prototype.nextPage = function () {
-       var _this5 = this;
-
-       return new Promise(function (resolve, reject) {
-               if (_this5.page < _this5.max) {
-                       _this5.page++;
-                       _this5.trigger().then(function () {
-                               resolve();
-                       }).catch(function () {
-                               reject();
-                       });
-
-                       if (_this5.table.options.persistence && _this5.table.modExists("persistence", true) && _this5.table.modules.persistence.config.page) {
-                               _this5.table.modules.persistence.save("page");
-                       }
-               } else {
-                       if (!_this5.progressiveLoad) {
-                               console.warn("Pagination Error - Next page would be greater than maximum page of " + _this5.max + ":", _this5.max + 1);
-                       }
-                       reject();
-               }
-       });
-};
-
-//return current page number
-Page.prototype.getPage = function () {
-       return this.page;
-};
-
-//return max page number
-Page.prototype.getPageMax = function () {
-       return this.max;
-};
-
-Page.prototype.getPageSize = function (size) {
-       return this.size;
-};
-
-Page.prototype.getMode = function () {
-       return this.mode;
-};
-
-//return appropriate rows for current page
-Page.prototype.getRows = function (data) {
-       var output, start, end;
-
-       if (this.mode == "local") {
-               output = [];
-               start = this.size * (this.page - 1);
-               end = start + parseInt(this.size);
-
-               this._setPageButtons();
-
-               for (var i = start; i < end; i++) {
-                       if (data[i]) {
-                               output.push(data[i]);
-                       }
-               }
-
-               return output;
-       } else {
-
-               this._setPageButtons();
-
-               return data.slice(0);
-       }
-};
-
-Page.prototype.trigger = function () {
-       var _this6 = this;
-
-       var left;
-
-       return new Promise(function (resolve, reject) {
-
-               switch (_this6.mode) {
-                       case "local":
-                               left = _this6.table.rowManager.scrollLeft;
-
-                               _this6.table.rowManager.refreshActiveData("page");
-                               _this6.table.rowManager.scrollHorizontal(left);
-
-                               _this6.table.options.pageLoaded.call(_this6.table, _this6.getPage());
-                               resolve();
-                               break;
-
-                       case "remote":
-                       case "progressive_load":
-                       case "progressive_scroll":
-                               _this6.table.modules.ajax.blockActiveRequest();
-                               _this6._getRemotePage().then(function () {
-                                       resolve();
-                               }).catch(function () {
-                                       reject();
-                               });
-                               break;
-
-                       default:
-                               console.warn("Pagination Error - no such pagination mode:", _this6.mode);
-                               reject();
-               }
-       });
-};
-
-Page.prototype._getRemotePage = function () {
-       var _this7 = this;
-
-       var self = this,
-           oldParams,
-           pageParams;
-
-       return new Promise(function (resolve, reject) {
-
-               if (!self.table.modExists("ajax", true)) {
-                       reject();
-               }
-
-               //record old params and restore after request has been made
-               oldParams = Tabulator.prototype.helpers.deepClone(self.table.modules.ajax.getParams() || {});
-               pageParams = self.table.modules.ajax.getParams();
-
-               //configure request params
-               pageParams[_this7.dataSentNames.page] = self.page;
-
-               //set page size if defined
-               if (_this7.size) {
-                       pageParams[_this7.dataSentNames.size] = _this7.size;
-               }
-
-               //set sort data if defined
-               if (_this7.table.options.ajaxSorting && _this7.table.modExists("sort")) {
-                       var sorters = self.table.modules.sort.getSort();
-
-                       sorters.forEach(function (item) {
-                               delete item.column;
-                       });
-
-                       pageParams[_this7.dataSentNames.sorters] = sorters;
-               }
-
-               //set filter data if defined
-               if (_this7.table.options.ajaxFiltering && _this7.table.modExists("filter")) {
-                       var filters = self.table.modules.filter.getFilters(true, true);
-                       pageParams[_this7.dataSentNames.filters] = filters;
-               }
-
-               self.table.modules.ajax.setParams(pageParams);
-
-               self.table.modules.ajax.sendRequest(_this7.progressiveLoad).then(function (data) {
-                       self._parseRemoteData(data);
-                       resolve();
-               }).catch(function (e) {
-                       reject();
-               });
-
-               self.table.modules.ajax.setParams(oldParams);
-       });
-};
-
-Page.prototype._parseRemoteData = function (data) {
-       var self = this,
-           left,
-           data,
-           margin;
-
-       if (typeof data[this.dataReceivedNames.last_page] === "undefined") {
-               console.warn("Remote Pagination Error - Server response missing '" + this.dataReceivedNames.last_page + "' property");
-       }
-
-       if (data[this.dataReceivedNames.data]) {
-               this.max = parseInt(data[this.dataReceivedNames.last_page]) || 1;
-
-               if (this.progressiveLoad) {
-                       switch (this.mode) {
-                               case "progressive_load":
-
-                                       if (this.page == 1) {
-                                               this.table.rowManager.setData(data[this.dataReceivedNames.data], false, this.initialLoad && this.page == 1);
-                                       } else {
-                                               this.table.rowManager.addRows(data[this.dataReceivedNames.data]);
-                                       }
-
-                                       if (this.page < this.max) {
-                                               setTimeout(function () {
-                                                       self.nextPage().then(function () {}).catch(function () {});
-                                               }, self.table.options.ajaxProgressiveLoadDelay);
-                                       }
-                                       break;
-
-                               case "progressive_scroll":
-                                       data = this.table.rowManager.getData().concat(data[this.dataReceivedNames.data]);
-
-                                       this.table.rowManager.setData(data, true, this.initialLoad && this.page == 1);
-
-                                       margin = this.table.options.ajaxProgressiveLoadScrollMargin || this.table.rowManager.element.clientHeight * 2;
-
-                                       if (self.table.rowManager.element.scrollHeight <= self.table.rowManager.element.clientHeight + margin) {
-                                               self.nextPage().then(function () {}).catch(function () {});
-                                       }
-                                       break;
-                       }
-               } else {
-                       left = this.table.rowManager.scrollLeft;
-
-                       this.table.rowManager.setData(data[this.dataReceivedNames.data], false, this.initialLoad && this.page == 1);
-
-                       this.table.rowManager.scrollHorizontal(left);
-
-                       this.table.columnManager.scrollHorizontal(left);
-
-                       this.table.options.pageLoaded.call(this.table, this.getPage());
-               }
-
-               this.initialLoad = false;
-       } else {
-               console.warn("Remote Pagination Error - Server response missing '" + this.dataReceivedNames.data + "' property");
-       }
-};
-
-//handle the footer element being redrawn
-Page.prototype.footerRedraw = function () {
-       var footer = this.table.footerManager.element;
-
-       if (Math.ceil(footer.clientWidth) - footer.scrollWidth < 0) {
-               this.pagesElement.style.display = 'none';
-       } else {
-               this.pagesElement.style.display = '';
-
-               if (Math.ceil(footer.clientWidth) - footer.scrollWidth < 0) {
-                       this.pagesElement.style.display = 'none';
-               }
-       }
-};
-
-//set the paramter names for pagination requests
-Page.prototype.paginationDataSentNames = {
-       "page": "page",
-       "size": "size",
-       "sorters": "sorters",
-       // "sort_dir":"sort_dir",
-       "filters": "filters"
-       // "filter_value":"filter_value",
-       // "filter_type":"filter_type",
-};
-
-//set the property names for pagination responses
-Page.prototype.paginationDataReceivedNames = {
-       "current_page": "current_page",
-       "last_page": "last_page",
-       "data": "data"
-};
-
-Tabulator.prototype.registerModule("page", Page);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/page.min.js b/app/static/vendors/tabulator/js.old/modules/page.min.js
deleted file mode 100644 (file)
index 300eb4f..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-var Page=function(e){this.table=e,this.mode="local",this.progressiveLoad=!1,this.size=0,this.page=1,this.count=5,this.max=1,this.displayIndex=0,this.initialLoad=!0,this.pageSizes=[],this.dataReceivedNames={},this.dataSentNames={},this.createElements()};Page.prototype.createElements=function(){var e;this.element=document.createElement("span"),this.element.classList.add("tabulator-paginator"),this.pagesElement=document.createElement("span"),this.pagesElement.classList.add("tabulator-pages"),e=document.createElement("button"),e.classList.add("tabulator-page"),e.setAttribute("type","button"),e.setAttribute("role","button"),e.setAttribute("aria-label",""),e.setAttribute("title",""),this.firstBut=e.cloneNode(!0),this.firstBut.setAttribute("data-page","first"),this.prevBut=e.cloneNode(!0),this.prevBut.setAttribute("data-page","prev"),this.nextBut=e.cloneNode(!0),this.nextBut.setAttribute("data-page","next"),this.lastBut=e.cloneNode(!0),this.lastBut.setAttribute("data-page","last"),this.table.options.paginationSizeSelector&&(this.pageSizeSelect=document.createElement("select"),this.pageSizeSelect.classList.add("tabulator-page-size"))},Page.prototype.generatePageSizeSelectList=function(){var e=this,t=[];if(this.pageSizeSelect){if(Array.isArray(this.table.options.paginationSizeSelector))t=this.table.options.paginationSizeSelector,this.pageSizes=t,-1==this.pageSizes.indexOf(this.size)&&t.unshift(this.size);else if(-1==this.pageSizes.indexOf(this.size)){t=[];for(var a=1;a<5;a++)t.push(this.size*a);this.pageSizes=t}else t=this.pageSizes;for(;this.pageSizeSelect.firstChild;)this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);t.forEach(function(t){var a=document.createElement("option");a.value=t,a.innerHTML=t,e.pageSizeSelect.appendChild(a)}),this.pageSizeSelect.value=this.size}},Page.prototype.initialize=function(e){var t,a,i,s=this;this.dataSentNames=Object.assign({},this.paginationDataSentNames),this.dataSentNames=Object.assign(this.dataSentNames,this.table.options.paginationDataSent),this.dataReceivedNames=Object.assign({},this.paginationDataReceivedNames),this.dataReceivedNames=Object.assign(this.dataReceivedNames,this.table.options.paginationDataReceived),s.table.modules.localize.bind("pagination|first",function(e){s.firstBut.innerHTML=e}),s.table.modules.localize.bind("pagination|first_title",function(e){s.firstBut.setAttribute("aria-label",e),s.firstBut.setAttribute("title",e)}),s.table.modules.localize.bind("pagination|prev",function(e){s.prevBut.innerHTML=e}),s.table.modules.localize.bind("pagination|prev_title",function(e){s.prevBut.setAttribute("aria-label",e),s.prevBut.setAttribute("title",e)}),s.table.modules.localize.bind("pagination|next",function(e){s.nextBut.innerHTML=e}),s.table.modules.localize.bind("pagination|next_title",function(e){s.nextBut.setAttribute("aria-label",e),s.nextBut.setAttribute("title",e)}),s.table.modules.localize.bind("pagination|last",function(e){s.lastBut.innerHTML=e}),s.table.modules.localize.bind("pagination|last_title",function(e){s.lastBut.setAttribute("aria-label",e),s.lastBut.setAttribute("title",e)}),s.firstBut.addEventListener("click",function(){s.setPage(1)}),s.prevBut.addEventListener("click",function(){s.previousPage()}),s.nextBut.addEventListener("click",function(){s.nextPage().then(function(){}).catch(function(){})}),s.lastBut.addEventListener("click",function(){s.setPage(s.max)}),s.table.options.paginationElement&&(s.element=s.table.options.paginationElement),this.pageSizeSelect&&(t=document.createElement("label"),s.table.modules.localize.bind("pagination|page_size",function(e){s.pageSizeSelect.setAttribute("aria-label",e),s.pageSizeSelect.setAttribute("title",e),t.innerHTML=e}),s.element.appendChild(t),s.element.appendChild(s.pageSizeSelect),s.pageSizeSelect.addEventListener("change",function(e){s.setPageSize(s.pageSizeSelect.value),s.setPage(1).then(function(){}).catch(function(){})})),s.element.appendChild(s.firstBut),s.element.appendChild(s.prevBut),s.element.appendChild(s.pagesElement),s.element.appendChild(s.nextBut),s.element.appendChild(s.lastBut),s.table.options.paginationElement||e||s.table.footerManager.append(s.element,s),s.mode=s.table.options.pagination,s.table.options.paginationSize?s.size=s.table.options.paginationSize:(a=document.createElement("div"),a.classList.add("tabulator-row"),a.style.visibility=e,i=document.createElement("div"),i.classList.add("tabulator-cell"),i.innerHTML="Page Row Test",a.appendChild(i),s.table.rowManager.getTableElement().appendChild(a),s.size=Math.floor(s.table.rowManager.getElement().clientHeight/a.offsetHeight),s.table.rowManager.getTableElement().removeChild(a)),s.count=s.table.options.paginationButtonCount,s.generatePageSizeSelectList()},Page.prototype.initializeProgressive=function(e){this.initialize(!0),this.mode="progressive_"+e,this.progressiveLoad=!0},Page.prototype.setDisplayIndex=function(e){this.displayIndex=e},Page.prototype.getDisplayIndex=function(){return this.displayIndex},Page.prototype.setMaxRows=function(e){this.max=e?Math.ceil(e/this.size):1,this.page>this.max&&(this.page=this.max)},Page.prototype.reset=function(e,t){return("local"==this.mode||e)&&(this.page=1),t&&(this.initialLoad=!0),!0},Page.prototype.setMaxPage=function(e){e=parseInt(e),this.max=e||1,this.page>this.max&&(this.page=this.max,this.trigger())},Page.prototype.setPage=function(e){var t=this,a=this;return new Promise(function(i,s){e=parseInt(e),e>0&&e<=t.max?(t.page=e,t.trigger().then(function(){i()}).catch(function(){s()}),a.table.options.persistence&&a.table.modExists("persistence",!0)&&a.table.modules.persistence.config.page&&a.table.modules.persistence.save("page")):(console.warn("Pagination Error - Requested page is out of range of 1 - "+t.max+":",e),s())})},Page.prototype.setPageToRow=function(e){var t=this;return new Promise(function(a,i){var s=t.table.rowManager.getDisplayRows(t.displayIndex-1),n=s.indexOf(e);if(n>-1){var o=Math.ceil((n+1)/t.size);t.setPage(o).then(function(){a()}).catch(function(){i()})}else console.warn("Pagination Error - Requested row is not visible"),i()})},Page.prototype.setPageSize=function(e){e=parseInt(e),e>0&&(this.size=e),this.pageSizeSelect&&this.generatePageSizeSelectList(),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.page&&this.table.modules.persistence.save("page")},Page.prototype._setPageButtons=function(){for(var e=this,t=Math.floor((this.count-1)/2),a=Math.ceil((this.count-1)/2),i=this.max-this.page+t+1<this.count?this.max-this.count+1:Math.max(this.page-t,1),s=this.page<=a?Math.min(this.count,this.max):Math.min(this.page+a,this.max);e.pagesElement.firstChild;)e.pagesElement.removeChild(e.pagesElement.firstChild);1==e.page?(e.firstBut.disabled=!0,e.prevBut.disabled=!0):(e.firstBut.disabled=!1,e.prevBut.disabled=!1),e.page==e.max?(e.lastBut.disabled=!0,e.nextBut.disabled=!0):(e.lastBut.disabled=!1,e.nextBut.disabled=!1);for(var n=i;n<=s;n++)n>0&&n<=e.max&&e.pagesElement.appendChild(e._generatePageButton(n));this.footerRedraw()},Page.prototype._generatePageButton=function(e){var t=this,a=document.createElement("button");return a.classList.add("tabulator-page"),e==t.page&&a.classList.add("active"),a.setAttribute("type","button"),a.setAttribute("role","button"),a.setAttribute("aria-label","Show Page "+e),a.setAttribute("title","Show Page "+e),a.setAttribute("data-page",e),a.textContent=e,a.addEventListener("click",function(a){t.setPage(e)}),a},Page.prototype.previousPage=function(){var e=this;return new Promise(function(t,a){e.page>1?(e.page--,e.trigger().then(function(){t()}).catch(function(){a()}),e.table.options.persistence&&e.table.modExists("persistence",!0)&&e.table.modules.persistence.config.page&&e.table.modules.persistence.save("page")):(console.warn("Pagination Error - Previous page would be less than page 1:",0),a())})},Page.prototype.nextPage=function(){var e=this;return new Promise(function(t,a){e.page<e.max?(e.page++,e.trigger().then(function(){t()}).catch(function(){a()}),e.table.options.persistence&&e.table.modExists("persistence",!0)&&e.table.modules.persistence.config.page&&e.table.modules.persistence.save("page")):(e.progressiveLoad||console.warn("Pagination Error - Next page would be greater than maximum page of "+e.max+":",e.max+1),a())})},Page.prototype.getPage=function(){return this.page},Page.prototype.getPageMax=function(){return this.max},Page.prototype.getPageSize=function(e){return this.size},Page.prototype.getMode=function(){return this.mode},Page.prototype.getRows=function(e){var t,a,i;if("local"==this.mode){t=[],a=this.size*(this.page-1),i=a+parseInt(this.size),this._setPageButtons();for(var s=a;s<i;s++)e[s]&&t.push(e[s]);return t}return this._setPageButtons(),e.slice(0)},Page.prototype.trigger=function(){var e,t=this;return new Promise(function(a,i){switch(t.mode){case"local":e=t.table.rowManager.scrollLeft,t.table.rowManager.refreshActiveData("page"),t.table.rowManager.scrollHorizontal(e),t.table.options.pageLoaded.call(t.table,t.getPage()),a();break;case"remote":case"progressive_load":case"progressive_scroll":t.table.modules.ajax.blockActiveRequest(),t._getRemotePage().then(function(){a()}).catch(function(){i()});break;default:console.warn("Pagination Error - no such pagination mode:",t.mode),i()}})},Page.prototype._getRemotePage=function(){var e,t,a=this,i=this;return new Promise(function(s,n){if(i.table.modExists("ajax",!0)||n(),e=Tabulator.prototype.helpers.deepClone(i.table.modules.ajax.getParams()||{}),t=i.table.modules.ajax.getParams(),t[a.dataSentNames.page]=i.page,a.size&&(t[a.dataSentNames.size]=a.size),a.table.options.ajaxSorting&&a.table.modExists("sort")){var o=i.table.modules.sort.getSort();o.forEach(function(e){delete e.column}),t[a.dataSentNames.sorters]=o}if(a.table.options.ajaxFiltering&&a.table.modExists("filter")){var r=i.table.modules.filter.getFilters(!0,!0);t[a.dataSentNames.filters]=r}i.table.modules.ajax.setParams(t),i.table.modules.ajax.sendRequest(a.progressiveLoad).then(function(e){i._parseRemoteData(e),s()}).catch(function(e){n()}),i.table.modules.ajax.setParams(e)})},Page.prototype._parseRemoteData=function(e){var t,e,a,i=this;if(void 0===e[this.dataReceivedNames.last_page]&&console.warn("Remote Pagination Error - Server response missing '"+this.dataReceivedNames.last_page+"' property"),e[this.dataReceivedNames.data]){if(this.max=parseInt(e[this.dataReceivedNames.last_page])||1,this.progressiveLoad)switch(this.mode){case"progressive_load":1==this.page?this.table.rowManager.setData(e[this.dataReceivedNames.data],!1,this.initialLoad&&1==this.page):this.table.rowManager.addRows(e[this.dataReceivedNames.data]),this.page<this.max&&setTimeout(function(){i.nextPage().then(function(){}).catch(function(){})},i.table.options.ajaxProgressiveLoadDelay);break;case"progressive_scroll":e=this.table.rowManager.getData().concat(e[this.dataReceivedNames.data]),this.table.rowManager.setData(e,!0,this.initialLoad&&1==this.page),a=this.table.options.ajaxProgressiveLoadScrollMargin||2*this.table.rowManager.element.clientHeight,i.table.rowManager.element.scrollHeight<=i.table.rowManager.element.clientHeight+a&&i.nextPage().then(function(){}).catch(function(){})}else t=this.table.rowManager.scrollLeft,this.table.rowManager.setData(e[this.dataReceivedNames.data],!1,this.initialLoad&&1==this.page),this.table.rowManager.scrollHorizontal(t),this.table.columnManager.scrollHorizontal(t),this.table.options.pageLoaded.call(this.table,this.getPage());this.initialLoad=!1}else console.warn("Remote Pagination Error - Server response missing '"+this.dataReceivedNames.data+"' property")},Page.prototype.footerRedraw=function(){var e=this.table.footerManager.element;Math.ceil(e.clientWidth)-e.scrollWidth<0?this.pagesElement.style.display="none":(this.pagesElement.style.display="",Math.ceil(e.clientWidth)-e.scrollWidth<0&&(this.pagesElement.style.display="none"))},Page.prototype.paginationDataSentNames={page:"page",size:"size",sorters:"sorters",filters:"filters"},Page.prototype.paginationDataReceivedNames={current_page:"current_page",last_page:"last_page",data:"data"},Tabulator.prototype.registerModule("page",Page);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/persistence.js b/app/static/vendors/tabulator/js.old/modules/persistence.js
deleted file mode 100644 (file)
index 1694618..0000000
+++ /dev/null
@@ -1,411 +0,0 @@
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-
-var Persistence = function Persistence(table) {
-       this.table = table; //hold Tabulator object
-       this.mode = "";
-       this.id = "";
-       // this.persistProps = ["field", "width", "visible"];
-       this.defWatcherBlock = false;
-       this.config = {};
-       this.readFunc = false;
-       this.writeFunc = false;
-};
-
-// Test for whether localStorage is available for use.
-Persistence.prototype.localStorageTest = function () {
-       var testKey = "_tabulator_test";
-
-       try {
-               window.localStorage.setItem(testKey, testKey);
-               window.localStorage.removeItem(testKey);
-               return true;
-       } catch (e) {
-               return false;
-       }
-};
-
-//setup parameters
-Persistence.prototype.initialize = function () {
-       //determine persistent layout storage type
-
-       var mode = this.table.options.persistenceMode,
-           id = this.table.options.persistenceID,
-           retreivedData;
-
-       this.mode = mode !== true ? mode : this.localStorageTest() ? "local" : "cookie";
-
-       if (this.table.options.persistenceReaderFunc) {
-               if (typeof this.table.options.persistenceReaderFunc === "function") {
-                       this.readFunc = this.table.options.persistenceReaderFunc;
-               } else {
-                       if (this.readers[this.table.options.persistenceReaderFunc]) {
-                               this.readFunc = this.readers[this.table.options.persistenceReaderFunc];
-                       } else {
-                               console.warn("Persistence Read Error - invalid reader set", this.table.options.persistenceReaderFunc);
-                       }
-               }
-       } else {
-               if (this.readers[this.mode]) {
-                       this.readFunc = this.readers[this.mode];
-               } else {
-                       console.warn("Persistence Read Error - invalid reader set", this.mode);
-               }
-       }
-
-       if (this.table.options.persistenceWriterFunc) {
-               if (typeof this.table.options.persistenceWriterFunc === "function") {
-                       this.writeFunc = this.table.options.persistenceWriterFunc;
-               } else {
-                       if (this.readers[this.table.options.persistenceWriterFunc]) {
-                               this.writeFunc = this.readers[this.table.options.persistenceWriterFunc];
-                       } else {
-                               console.warn("Persistence Write Error - invalid reader set", this.table.options.persistenceWriterFunc);
-                       }
-               }
-       } else {
-               if (this.writers[this.mode]) {
-                       this.writeFunc = this.writers[this.mode];
-               } else {
-                       console.warn("Persistence Write Error - invalid writer set", this.mode);
-               }
-       }
-
-       //set storage tag
-       this.id = "tabulator-" + (id || this.table.element.getAttribute("id") || "");
-
-       this.config = {
-               sort: this.table.options.persistence === true || this.table.options.persistence.sort,
-               filter: this.table.options.persistence === true || this.table.options.persistence.filter,
-               group: this.table.options.persistence === true || this.table.options.persistence.group,
-               page: this.table.options.persistence === true || this.table.options.persistence.page,
-               columns: this.table.options.persistence === true ? ["title", "width", "visible"] : this.table.options.persistence.columns
-       };
-
-       //load pagination data if needed
-       if (this.config.page) {
-               retreivedData = this.retreiveData("page");
-
-               if (retreivedData) {
-                       if (typeof retreivedData.paginationSize !== "undefined" && (this.config.page === true || this.config.page.size)) {
-                               this.table.options.paginationSize = retreivedData.paginationSize;
-                       }
-
-                       if (typeof retreivedData.paginationInitialPage !== "undefined" && (this.config.page === true || this.config.page.page)) {
-                               this.table.options.paginationInitialPage = retreivedData.paginationInitialPage;
-                       }
-               }
-       }
-
-       //load group data if needed
-       if (this.config.group) {
-               retreivedData = this.retreiveData("group");
-
-               if (retreivedData) {
-                       if (typeof retreivedData.groupBy !== "undefined" && (this.config.group === true || this.config.group.groupBy)) {
-                               this.table.options.groupBy = retreivedData.groupBy;
-                       }
-                       if (typeof retreivedData.groupStartOpen !== "undefined" && (this.config.group === true || this.config.group.groupStartOpen)) {
-                               this.table.options.groupStartOpen = retreivedData.groupStartOpen;
-                       }
-                       if (typeof retreivedData.groupHeader !== "undefined" && (this.config.group === true || this.config.group.groupHeader)) {
-                               this.table.options.groupHeader = retreivedData.groupHeader;
-                       }
-               }
-       }
-};
-
-Persistence.prototype.initializeColumn = function (column) {
-       var self = this,
-           def,
-           keys;
-
-       if (this.config.columns) {
-               this.defWatcherBlock = true;
-
-               def = column.getDefinition();
-
-               keys = this.config.columns === true ? Object.keys(def) : this.config.columns;
-
-               keys.forEach(function (key) {
-                       var props = Object.getOwnPropertyDescriptor(def, key);
-                       var value = def[key];
-                       if (props) {
-                               Object.defineProperty(def, key, {
-                                       set: function set(newValue) {
-                                               value = newValue;
-
-                                               if (!self.defWatcherBlock) {
-                                                       self.save("columns");
-                                               }
-
-                                               if (props.set) {
-                                                       props.set(newValue);
-                                               }
-                                       },
-                                       get: function get() {
-                                               if (props.get) {
-                                                       props.get();
-                                               }
-                                               return value;
-                                       }
-                               });
-                       }
-               });
-
-               this.defWatcherBlock = false;
-       }
-};
-
-//load saved definitions
-Persistence.prototype.load = function (type, current) {
-       var data = this.retreiveData(type);
-
-       if (current) {
-               data = data ? this.mergeDefinition(current, data) : current;
-       }
-
-       return data;
-};
-
-//retreive data from memory
-Persistence.prototype.retreiveData = function (type) {
-       return this.readFunc ? this.readFunc(this.id, type) : false;
-};
-
-//merge old and new column definitions
-Persistence.prototype.mergeDefinition = function (oldCols, newCols) {
-       var self = this,
-           output = [];
-
-       // oldCols = oldCols || [];
-       newCols = newCols || [];
-
-       newCols.forEach(function (column, to) {
-
-               var from = self._findColumn(oldCols, column),
-                   keys;
-
-               if (from) {
-
-                       if (self.config.columns === true || self.config.columns == undefined) {
-                               keys = Object.keys(from);
-                               keys.push("width");
-                       } else {
-                               keys = self.config.columns;
-                       }
-
-                       keys.forEach(function (key) {
-                               if (typeof column[key] !== "undefined") {
-                                       from[key] = column[key];
-                               }
-                       });
-
-                       if (from.columns) {
-                               from.columns = self.mergeDefinition(from.columns, column.columns);
-                       }
-
-                       output.push(from);
-               }
-       });
-
-       oldCols.forEach(function (column, i) {
-               var from = self._findColumn(newCols, column);
-               if (!from) {
-                       if (output.length > i) {
-                               output.splice(i, 0, column);
-                       } else {
-                               output.push(column);
-                       }
-               }
-       });
-
-       return output;
-};
-
-//find matching columns
-Persistence.prototype._findColumn = function (columns, subject) {
-       var type = subject.columns ? "group" : subject.field ? "field" : "object";
-
-       return columns.find(function (col) {
-               switch (type) {
-                       case "group":
-                               return col.title === subject.title && col.columns.length === subject.columns.length;
-                               break;
-
-                       case "field":
-                               return col.field === subject.field;
-                               break;
-
-                       case "object":
-                               return col === subject;
-                               break;
-               }
-       });
-};
-
-//save data
-Persistence.prototype.save = function (type) {
-       var data = {};
-
-       switch (type) {
-               case "columns":
-                       data = this.parseColumns(this.table.columnManager.getColumns());
-                       break;
-
-               case "filter":
-                       data = this.table.modules.filter.getFilters();
-                       break;
-
-               case "sort":
-                       data = this.validateSorters(this.table.modules.sort.getSort());
-                       break;
-
-               case "group":
-                       data = this.getGroupConfig();
-                       break;
-
-               case "page":
-                       data = this.getPageConfig();
-                       break;
-       }
-
-       if (this.writeFunc) {
-               this.writeFunc(this.id, type, data);
-       }
-};
-
-//ensure sorters contain no function data
-Persistence.prototype.validateSorters = function (data) {
-       data.forEach(function (item) {
-               item.column = item.field;
-               delete item.field;
-       });
-
-       return data;
-};
-
-Persistence.prototype.getGroupConfig = function () {
-       if (this.config.group) {
-               if (this.config.group === true || this.config.group.groupBy) {
-                       data.groupBy = this.table.options.groupBy;
-               }
-
-               if (this.config.group === true || this.config.group.groupStartOpen) {
-                       data.groupStartOpen = this.table.options.groupStartOpen;
-               }
-
-               if (this.config.group === true || this.config.group.groupHeader) {
-                       data.groupHeader = this.table.options.groupHeader;
-               }
-       }
-
-       return data;
-};
-
-Persistence.prototype.getPageConfig = function () {
-       var data = {};
-
-       if (this.config.page) {
-               if (this.config.page === true || this.config.page.size) {
-                       data.paginationSize = this.table.modules.page.getPageSize();
-               }
-
-               if (this.config.page === true || this.config.page.page) {
-                       data.paginationInitialPage = this.table.modules.page.getPage();
-               }
-       }
-
-       return data;
-};
-
-//parse columns for data to store
-Persistence.prototype.parseColumns = function (columns) {
-       var self = this,
-           definitions = [];
-
-       columns.forEach(function (column) {
-               var defStore = {},
-                   colDef = column.getDefinition(),
-                   keys;
-
-               if (column.isGroup) {
-                       defStore.title = colDef.title;
-                       defStore.columns = self.parseColumns(column.getColumns());
-               } else {
-                       defStore.field = column.getField();
-
-                       if (self.config.columns === true || self.config.columns == undefined) {
-                               keys = Object.keys(colDef);
-                               keys.push("width");
-                       } else {
-                               keys = self.config.columns;
-                       }
-
-                       keys.forEach(function (key) {
-
-                               switch (key) {
-                                       case "width":
-                                               defStore.width = column.getWidth();
-                                               break;
-                                       case "visible":
-                                               defStore.visible = column.visible;
-                                               break;
-
-                                       default:
-                                               defStore[key] = colDef[key];
-                               }
-                       });
-               }
-
-               definitions.push(defStore);
-       });
-
-       return definitions;
-};
-
-// read peristence information from storage
-Persistence.prototype.readers = {
-       local: function local(id, type) {
-               var data = localStorage.getItem(id + "-" + type);
-
-               return data ? JSON.parse(data) : false;
-       },
-       cookie: function cookie(id, type) {
-               var cookie = document.cookie,
-                   key = id + "-" + type,
-                   cookiePos = cookie.indexOf(key + "="),
-                   end,
-                   data;
-
-               //if cookie exists, decode and load column data into tabulator
-               if (cookiePos > -1) {
-                       cookie = cookie.substr(cookiePos);
-
-                       end = cookie.indexOf(";");
-
-                       if (end > -1) {
-                               cookie = cookie.substr(0, end);
-                       }
-
-                       data = cookie.replace(key + "=", "");
-               }
-
-               return data ? JSON.parse(data) : false;
-       }
-};
-
-//write persistence information to storage
-Persistence.prototype.writers = {
-       local: function local(id, type, data) {
-               localStorage.setItem(id + "-" + type, JSON.stringify(data));
-       },
-       cookie: function cookie(id, type, data) {
-               var expireDate = new Date();
-
-               expireDate.setDate(expireDate.getDate() + 10000);
-
-               document.cookie = id + "-" + type + "=" + JSON.stringify(data) + "; expires=" + expireDate.toUTCString();
-       }
-};
-
-Tabulator.prototype.registerModule("persistence", Persistence);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/persistence.min.js b/app/static/vendors/tabulator/js.old/modules/persistence.min.js
deleted file mode 100644 (file)
index 4dd8319..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-var Persistence=function(e){this.table=e,this.mode="",this.id="",this.defWatcherBlock=!1,this.config={},this.readFunc=!1,this.writeFunc=!1};Persistence.prototype.localStorageTest=function(){var e="_tabulator_test";try{return window.localStorage.setItem(e,e),window.localStorage.removeItem(e),!0}catch(e){return!1}},Persistence.prototype.initialize=function(){var e,t=this.table.options.persistenceMode,i=this.table.options.persistenceID;this.mode=!0!==t?t:this.localStorageTest()?"local":"cookie",this.table.options.persistenceReaderFunc?"function"==typeof this.table.options.persistenceReaderFunc?this.readFunc=this.table.options.persistenceReaderFunc:this.readers[this.table.options.persistenceReaderFunc]?this.readFunc=this.readers[this.table.options.persistenceReaderFunc]:console.warn("Persistence Read Error - invalid reader set",this.table.options.persistenceReaderFunc):this.readers[this.mode]?this.readFunc=this.readers[this.mode]:console.warn("Persistence Read Error - invalid reader set",this.mode),this.table.options.persistenceWriterFunc?"function"==typeof this.table.options.persistenceWriterFunc?this.writeFunc=this.table.options.persistenceWriterFunc:this.readers[this.table.options.persistenceWriterFunc]?this.writeFunc=this.readers[this.table.options.persistenceWriterFunc]:console.warn("Persistence Write Error - invalid reader set",this.table.options.persistenceWriterFunc):this.writers[this.mode]?this.writeFunc=this.writers[this.mode]:console.warn("Persistence Write Error - invalid writer set",this.mode),this.id="tabulator-"+(i||this.table.element.getAttribute("id")||""),this.config={sort:!0===this.table.options.persistence||this.table.options.persistence.sort,filter:!0===this.table.options.persistence||this.table.options.persistence.filter,group:!0===this.table.options.persistence||this.table.options.persistence.group,page:!0===this.table.options.persistence||this.table.options.persistence.page,columns:!0===this.table.options.persistence?["title","width","visible"]:this.table.options.persistence.columns},this.config.page&&(e=this.retreiveData("page"))&&(void 0===e.paginationSize||!0!==this.config.page&&!this.config.page.size||(this.table.options.paginationSize=e.paginationSize),void 0===e.paginationInitialPage||!0!==this.config.page&&!this.config.page.page||(this.table.options.paginationInitialPage=e.paginationInitialPage)),this.config.group&&(e=this.retreiveData("group"))&&(void 0===e.groupBy||!0!==this.config.group&&!this.config.group.groupBy||(this.table.options.groupBy=e.groupBy),void 0===e.groupStartOpen||!0!==this.config.group&&!this.config.group.groupStartOpen||(this.table.options.groupStartOpen=e.groupStartOpen),void 0===e.groupHeader||!0!==this.config.group&&!this.config.group.groupHeader||(this.table.options.groupHeader=e.groupHeader))},Persistence.prototype.initializeColumn=function(e){var t,i,s=this;this.config.columns&&(this.defWatcherBlock=!0,t=e.getDefinition(),i=!0===this.config.columns?Object.keys(t):this.config.columns,i.forEach(function(e){var i=Object.getOwnPropertyDescriptor(t,e),o=t[e];i&&Object.defineProperty(t,e,{set:function(e){o=e,s.defWatcherBlock||s.save("columns"),i.set&&i.set(e)},get:function(){return i.get&&i.get(),o}})}),this.defWatcherBlock=!1)},Persistence.prototype.load=function(e,t){var i=this.retreiveData(e);return t&&(i=i?this.mergeDefinition(t,i):t),i},Persistence.prototype.retreiveData=function(e){return!!this.readFunc&&this.readFunc(this.id,e)},Persistence.prototype.mergeDefinition=function(e,t){var i=this,s=[];return t=t||[],t.forEach(function(t,o){var n,r=i._findColumn(e,t);r&&(!0===i.config.columns||void 0==i.config.columns?(n=Object.keys(r),n.push("width")):n=i.config.columns,n.forEach(function(e){void 0!==t[e]&&(r[e]=t[e])}),r.columns&&(r.columns=i.mergeDefinition(r.columns,t.columns)),s.push(r))}),e.forEach(function(e,o){i._findColumn(t,e)||(s.length>o?s.splice(o,0,e):s.push(e))}),s},Persistence.prototype._findColumn=function(e,t){var i=t.columns?"group":t.field?"field":"object";return e.find(function(e){switch(i){case"group":return e.title===t.title&&e.columns.length===t.columns.length;case"field":return e.field===t.field;case"object":return e===t}})},Persistence.prototype.save=function(e){var t={};switch(e){case"columns":t=this.parseColumns(this.table.columnManager.getColumns());break;case"filter":t=this.table.modules.filter.getFilters();break;case"sort":t=this.validateSorters(this.table.modules.sort.getSort());break;case"group":t=this.getGroupConfig();break;case"page":t=this.getPageConfig()}this.writeFunc&&this.writeFunc(this.id,e,t)},Persistence.prototype.validateSorters=function(e){return e.forEach(function(e){e.column=e.field,delete e.field}),e},Persistence.prototype.getGroupConfig=function(){return this.config.group&&((!0===this.config.group||this.config.group.groupBy)&&(data.groupBy=this.table.options.groupBy),(!0===this.config.group||this.config.group.groupStartOpen)&&(data.groupStartOpen=this.table.options.groupStartOpen),(!0===this.config.group||this.config.group.groupHeader)&&(data.groupHeader=this.table.options.groupHeader)),data},Persistence.prototype.getPageConfig=function(){var e={};return this.config.page&&((!0===this.config.page||this.config.page.size)&&(e.paginationSize=this.table.modules.page.getPageSize()),(!0===this.config.page||this.config.page.page)&&(e.paginationInitialPage=this.table.modules.page.getPage())),e},Persistence.prototype.parseColumns=function(e){var t=this,i=[];return e.forEach(function(e){var s,o={},n=e.getDefinition();e.isGroup?(o.title=n.title,o.columns=t.parseColumns(e.getColumns())):(o.field=e.getField(),!0===t.config.columns||void 0==t.config.columns?(s=Object.keys(n),s.push("width")):s=t.config.columns,s.forEach(function(t){switch(t){case"width":o.width=e.getWidth();break;case"visible":o.visible=e.visible;break;default:o[t]=n[t]}})),i.push(o)}),i},Persistence.prototype.readers={local:function(e,t){var i=localStorage.getItem(e+"-"+t);return!!i&&JSON.parse(i)},cookie:function(e,t){var i,s,o=document.cookie,n=e+"-"+t,r=o.indexOf(n+"=");return r>-1&&(o=o.substr(r),i=o.indexOf(";"),i>-1&&(o=o.substr(0,i)),s=o.replace(n+"=","")),!!s&&JSON.parse(s)}},Persistence.prototype.writers={local:function(e,t,i){localStorage.setItem(e+"-"+t,JSON.stringify(i))},cookie:function(e,t,i){var s=new Date;s.setDate(s.getDate()+1e4),document.cookie=e+"-"+t+"="+JSON.stringify(i)+"; expires="+s.toUTCString()}},Tabulator.prototype.registerModule("persistence",Persistence);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/print.js b/app/static/vendors/tabulator/js.old/modules/print.js
deleted file mode 100644 (file)
index 7588094..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-
-var Print = function Print(table) {
-       this.table = table; //hold Tabulator object
-       this.element = false;
-       this.manualBlock = false;
-};
-
-Print.prototype.initialize = function () {
-       window.addEventListener("beforeprint", this.replaceTable.bind(this));
-       window.addEventListener("afterprint", this.cleanup.bind(this));
-};
-
-Print.prototype.replaceTable = function () {
-       if (!this.manualBlock) {
-               this.element = document.createElement("div");
-               this.element.classList.add("tabulator-print-table");
-
-               this.element.appendChild(this.table.modules.export.genereateTable(this.table.options.printConfig, this.table.options.printStyled, this.table.options.printRowRange, "print"));
-
-               this.table.element.style.display = "none";
-
-               this.table.element.parentNode.insertBefore(this.element, this.table.element);
-       }
-};
-
-Print.prototype.cleanup = function () {
-       document.body.classList.remove("tabulator-print-fullscreen-hide");
-
-       if (this.element && this.element.parentNode) {
-               this.element.parentNode.removeChild(this.element);
-               this.table.element.style.display = "";
-       }
-};
-
-Print.prototype.printFullscreen = function (visible, style, config) {
-       var scrollX = window.scrollX,
-           scrollY = window.scrollY,
-           headerEl = document.createElement("div"),
-           footerEl = document.createElement("div"),
-           tableEl = this.table.modules.export.genereateTable(typeof config != "undefined" ? config : this.table.options.printConfig, typeof style != "undefined" ? style : this.table.options.printStyled, visible, "print"),
-           headerContent,
-           footerContent;
-
-       this.manualBlock = true;
-
-       this.element = document.createElement("div");
-       this.element.classList.add("tabulator-print-fullscreen");
-
-       if (this.table.options.printHeader) {
-               headerEl.classList.add("tabulator-print-header");
-
-               headerContent = typeof this.table.options.printHeader == "function" ? this.table.options.printHeader.call(this.table) : this.table.options.printHeader;
-
-               if (typeof headerContent == "string") {
-                       headerEl.innerHTML = headerContent;
-               } else {
-                       headerEl.appendChild(headerContent);
-               }
-
-               this.element.appendChild(headerEl);
-       }
-
-       this.element.appendChild(tableEl);
-
-       if (this.table.options.printFooter) {
-               footerEl.classList.add("tabulator-print-footer");
-
-               footerContent = typeof this.table.options.printFooter == "function" ? this.table.options.printFooter.call(this.table) : this.table.options.printFooter;
-
-               if (typeof footerContent == "string") {
-                       footerEl.innerHTML = footerContent;
-               } else {
-                       footerEl.appendChild(footerContent);
-               }
-
-               this.element.appendChild(footerEl);
-       }
-
-       document.body.classList.add("tabulator-print-fullscreen-hide");
-       document.body.appendChild(this.element);
-
-       if (this.table.options.printFormatter) {
-               this.table.options.printFormatter(this.element, tableEl);
-       }
-
-       window.print();
-
-       this.cleanup();
-
-       window.scrollTo(scrollX, scrollY);
-
-       this.manualBlock = false;
-};
-
-Tabulator.prototype.registerModule("print", Print);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/print.min.js b/app/static/vendors/tabulator/js.old/modules/print.min.js
deleted file mode 100644 (file)
index fda1db2..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-var Print=function(t){this.table=t,this.element=!1,this.manualBlock=!1};Print.prototype.initialize=function(){window.addEventListener("beforeprint",this.replaceTable.bind(this)),window.addEventListener("afterprint",this.cleanup.bind(this))},Print.prototype.replaceTable=function(){this.manualBlock||(this.element=document.createElement("div"),this.element.classList.add("tabulator-print-table"),this.element.appendChild(this.table.modules.export.genereateTable(this.table.options.printConfig,this.table.options.printStyled,this.table.options.printRowRange,"print")),this.table.element.style.display="none",this.table.element.parentNode.insertBefore(this.element,this.table.element))},Print.prototype.cleanup=function(){document.body.classList.remove("tabulator-print-fullscreen-hide"),this.element&&this.element.parentNode&&(this.element.parentNode.removeChild(this.element),this.table.element.style.display="")},Print.prototype.printFullscreen=function(t,e,i){var n,l,o=window.scrollX,a=window.scrollY,s=document.createElement("div"),r=document.createElement("div"),p=this.table.modules.export.genereateTable(void 0!==i?i:this.table.options.printConfig,void 0!==e?e:this.table.options.printStyled,t,"print");this.manualBlock=!0,this.element=document.createElement("div"),this.element.classList.add("tabulator-print-fullscreen"),this.table.options.printHeader&&(s.classList.add("tabulator-print-header"),n="function"==typeof this.table.options.printHeader?this.table.options.printHeader.call(this.table):this.table.options.printHeader,"string"==typeof n?s.innerHTML=n:s.appendChild(n),this.element.appendChild(s)),this.element.appendChild(p),this.table.options.printFooter&&(r.classList.add("tabulator-print-footer"),l="function"==typeof this.table.options.printFooter?this.table.options.printFooter.call(this.table):this.table.options.printFooter,"string"==typeof l?r.innerHTML=l:r.appendChild(l),this.element.appendChild(r)),document.body.classList.add("tabulator-print-fullscreen-hide"),document.body.appendChild(this.element),this.table.options.printFormatter&&this.table.options.printFormatter(this.element,p),window.print(),this.cleanup(),window.scrollTo(o,a),this.manualBlock=!1},Tabulator.prototype.registerModule("print",Print);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/reactive_data.js b/app/static/vendors/tabulator/js.old/modules/reactive_data.js
deleted file mode 100644 (file)
index e173aa9..0000000
+++ /dev/null
@@ -1,235 +0,0 @@
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-
-var ReactiveData = function ReactiveData(table) {
-       this.table = table; //hold Tabulator object
-       this.data = false;
-       this.blocked = false; //block reactivity while performing update
-       this.origFuncs = {}; // hold original data array functions to allow replacement after data is done with
-       this.currentVersion = 0;
-};
-
-ReactiveData.prototype.watchData = function (data) {
-       var self = this,
-           pushFunc,
-           version;
-
-       this.currentVersion++;
-
-       version = this.currentVersion;
-
-       self.unwatchData();
-
-       self.data = data;
-
-       //override array push function
-       self.origFuncs.push = data.push;
-
-       Object.defineProperty(self.data, "push", {
-               enumerable: false,
-               configurable: true,
-               value: function value() {
-                       var args = Array.from(arguments);
-
-                       if (!self.blocked && version === self.currentVersion) {
-                               args.forEach(function (arg) {
-                                       self.table.rowManager.addRowActual(arg, false);
-                               });
-                       }
-
-                       return self.origFuncs.push.apply(data, arguments);
-               }
-       });
-
-       //override array unshift function
-       self.origFuncs.unshift = data.unshift;
-
-       Object.defineProperty(self.data, "unshift", {
-               enumerable: false,
-               configurable: true,
-               value: function value() {
-                       var args = Array.from(arguments);
-
-                       if (!self.blocked && version === self.currentVersion) {
-                               args.forEach(function (arg) {
-                                       self.table.rowManager.addRowActual(arg, true);
-                               });
-                       }
-
-                       return self.origFuncs.unshift.apply(data, arguments);
-               }
-       });
-
-       //override array shift function
-       self.origFuncs.shift = data.shift;
-
-       Object.defineProperty(self.data, "shift", {
-               enumerable: false,
-               configurable: true,
-               value: function value() {
-                       var row;
-
-                       if (!self.blocked && version === self.currentVersion) {
-                               if (self.data.length) {
-                                       row = self.table.rowManager.getRowFromDataObject(self.data[0]);
-
-                                       if (row) {
-                                               row.deleteActual();
-                                       }
-                               }
-                       }
-
-                       return self.origFuncs.shift.call(data);
-               }
-       });
-
-       //override array pop function
-       self.origFuncs.pop = data.pop;
-
-       Object.defineProperty(self.data, "pop", {
-               enumerable: false,
-               configurable: true,
-               value: function value() {
-                       var row;
-                       if (!self.blocked && version === self.currentVersion) {
-                               if (self.data.length) {
-                                       row = self.table.rowManager.getRowFromDataObject(self.data[self.data.length - 1]);
-
-                                       if (row) {
-                                               row.deleteActual();
-                                       }
-                               }
-                       }
-                       return self.origFuncs.pop.call(data);
-               }
-       });
-
-       //override array splice function
-       self.origFuncs.splice = data.splice;
-
-       Object.defineProperty(self.data, "splice", {
-               enumerable: false,
-               configurable: true,
-               value: function value() {
-                       var args = Array.from(arguments),
-                           start = args[0] < 0 ? data.length + args[0] : args[0],
-                           end = args[1],
-                           newRows = args[2] ? args.slice(2) : false,
-                           startRow;
-
-                       if (!self.blocked && version === self.currentVersion) {
-
-                               //add new rows
-                               if (newRows) {
-                                       startRow = data[start] ? self.table.rowManager.getRowFromDataObject(data[start]) : false;
-
-                                       if (startRow) {
-                                               newRows.forEach(function (rowData) {
-                                                       self.table.rowManager.addRowActual(rowData, true, startRow, true);
-                                               });
-                                       } else {
-                                               newRows = newRows.slice().reverse();
-
-                                               newRows.forEach(function (rowData) {
-                                                       self.table.rowManager.addRowActual(rowData, true, false, true);
-                                               });
-                                       }
-                               }
-
-                               //delete removed rows
-                               if (end !== 0) {
-                                       var oldRows = data.slice(start, typeof args[1] === "undefined" ? args[1] : start + end);
-
-                                       oldRows.forEach(function (rowData, i) {
-                                               var row = self.table.rowManager.getRowFromDataObject(rowData);
-
-                                               if (row) {
-                                                       row.deleteActual(i !== oldRows.length - 1);
-                                               }
-                                       });
-                               }
-
-                               if (newRows || end !== 0) {
-                                       self.table.rowManager.reRenderInPosition();
-                               }
-                       }
-
-                       return self.origFuncs.splice.apply(data, arguments);
-               }
-       });
-};
-
-ReactiveData.prototype.unwatchData = function () {
-       if (this.data !== false) {
-               for (var key in this.origFuncs) {
-                       Object.defineProperty(this.data, key, {
-                               enumerable: true,
-                               configurable: true,
-                               writable: true,
-                               value: this.origFuncs.key
-                       });
-               }
-       }
-};
-
-ReactiveData.prototype.watchRow = function (row) {
-       var self = this,
-           data = row.getData();
-
-       this.blocked = true;
-
-       for (var key in data) {
-               this.watchKey(row, data, key);
-       }
-
-       this.blocked = false;
-};
-
-ReactiveData.prototype.watchKey = function (row, data, key) {
-       var self = this,
-           props = Object.getOwnPropertyDescriptor(data, key),
-           value = data[key],
-           version = this.currentVersion;
-
-       Object.defineProperty(data, key, {
-               set: function set(newValue) {
-                       value = newValue;
-                       if (!self.blocked && version === self.currentVersion) {
-                               var update = {};
-                               update[key] = newValue;
-                               row.updateData(update);
-                       }
-
-                       if (props.set) {
-                               props.set(newValue);
-                       }
-               },
-               get: function get() {
-
-                       if (props.get) {
-                               props.get();
-                       }
-
-                       return value;
-               }
-       });
-};
-
-ReactiveData.prototype.unwatchRow = function (row) {
-       var data = row.getData();
-
-       for (var key in data) {
-               Object.defineProperty(data, key, {
-                       value: data[key]
-               });
-       }
-};
-
-ReactiveData.prototype.block = function () {
-       this.blocked = true;
-};
-
-ReactiveData.prototype.unblock = function () {
-       this.blocked = false;
-};
-
-Tabulator.prototype.registerModule("reactiveData", ReactiveData);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/reactive_data.min.js b/app/static/vendors/tabulator/js.old/modules/reactive_data.min.js
deleted file mode 100644 (file)
index dd4e33b..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-var ReactiveData=function(e){this.table=e,this.data=!1,this.blocked=!1,this.origFuncs={},this.currentVersion=0};ReactiveData.prototype.watchData=function(e){var t,a=this;this.currentVersion++,t=this.currentVersion,a.unwatchData(),a.data=e,a.origFuncs.push=e.push,Object.defineProperty(a.data,"push",{enumerable:!1,configurable:!0,value:function(){var r=Array.from(arguments);return a.blocked||t!==a.currentVersion||r.forEach(function(e){a.table.rowManager.addRowActual(e,!1)}),a.origFuncs.push.apply(e,arguments)}}),a.origFuncs.unshift=e.unshift,Object.defineProperty(a.data,"unshift",{enumerable:!1,configurable:!0,value:function(){var r=Array.from(arguments);return a.blocked||t!==a.currentVersion||r.forEach(function(e){a.table.rowManager.addRowActual(e,!0)}),a.origFuncs.unshift.apply(e,arguments)}}),a.origFuncs.shift=e.shift,Object.defineProperty(a.data,"shift",{enumerable:!1,configurable:!0,value:function(){var r;return a.blocked||t!==a.currentVersion||a.data.length&&(r=a.table.rowManager.getRowFromDataObject(a.data[0]))&&r.deleteActual(),a.origFuncs.shift.call(e)}}),a.origFuncs.pop=e.pop,Object.defineProperty(a.data,"pop",{enumerable:!1,configurable:!0,value:function(){var r;return a.blocked||t!==a.currentVersion||a.data.length&&(r=a.table.rowManager.getRowFromDataObject(a.data[a.data.length-1]))&&r.deleteActual(),a.origFuncs.pop.call(e)}}),a.origFuncs.splice=e.splice,Object.defineProperty(a.data,"splice",{enumerable:!1,configurable:!0,value:function(){var r,o=Array.from(arguments),n=o[0]<0?e.length+o[0]:o[0],c=o[1],i=!!o[2]&&o.slice(2);if(!a.blocked&&t===a.currentVersion){if(i&&(r=!!e[n]&&a.table.rowManager.getRowFromDataObject(e[n]),r?i.forEach(function(e){a.table.rowManager.addRowActual(e,!0,r,!0)}):(i=i.slice().reverse(),i.forEach(function(e){a.table.rowManager.addRowActual(e,!0,!1,!0)}))),0!==c){var u=e.slice(n,void 0===o[1]?o[1]:n+c);u.forEach(function(e,t){var r=a.table.rowManager.getRowFromDataObject(e);r&&r.deleteActual(t!==u.length-1)})}(i||0!==c)&&a.table.rowManager.reRenderInPosition()}return a.origFuncs.splice.apply(e,arguments)}})},ReactiveData.prototype.unwatchData=function(){if(!1!==this.data)for(var e in this.origFuncs)Object.defineProperty(this.data,e,{enumerable:!0,configurable:!0,writable:!0,value:this.origFuncs.key})},ReactiveData.prototype.watchRow=function(e){var t=e.getData();this.blocked=!0;for(var a in t)this.watchKey(e,t,a);this.blocked=!1},ReactiveData.prototype.watchKey=function(e,t,a){var r=this,o=Object.getOwnPropertyDescriptor(t,a),n=t[a],c=this.currentVersion;Object.defineProperty(t,a,{set:function(t){if(n=t,!r.blocked&&c===r.currentVersion){var i={};i[a]=t,e.updateData(i)}o.set&&o.set(t)},get:function(){return o.get&&o.get(),n}})},ReactiveData.prototype.unwatchRow=function(e){var t=e.getData();for(var a in t)Object.defineProperty(t,a,{value:t[a]})},ReactiveData.prototype.block=function(){this.blocked=!0},ReactiveData.prototype.unblock=function(){this.blocked=!1},Tabulator.prototype.registerModule("reactiveData",ReactiveData);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/resize_columns.js b/app/static/vendors/tabulator/js.old/modules/resize_columns.js
deleted file mode 100644 (file)
index 69bcf04..0000000
+++ /dev/null
@@ -1,163 +0,0 @@
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-
-var ResizeColumns = function ResizeColumns(table) {
-       this.table = table; //hold Tabulator object
-       this.startColumn = false;
-       this.startX = false;
-       this.startWidth = false;
-       this.handle = null;
-       this.prevHandle = null;
-};
-
-ResizeColumns.prototype.initializeColumn = function (type, column, element) {
-       var self = this,
-           variableHeight = false,
-           mode = this.table.options.resizableColumns;
-
-       //set column resize mode
-       if (type === "header") {
-               variableHeight = column.definition.formatter == "textarea" || column.definition.variableHeight;
-               column.modules.resize = { variableHeight: variableHeight };
-       }
-
-       if (mode === true || mode == type) {
-
-               var handle = document.createElement('div');
-               handle.className = "tabulator-col-resize-handle";
-
-               var prevHandle = document.createElement('div');
-               prevHandle.className = "tabulator-col-resize-handle prev";
-
-               handle.addEventListener("click", function (e) {
-                       e.stopPropagation();
-               });
-
-               var handleDown = function handleDown(e) {
-                       var nearestColumn = column.getLastColumn();
-
-                       if (nearestColumn && self._checkResizability(nearestColumn)) {
-                               self.startColumn = column;
-                               self._mouseDown(e, nearestColumn, handle);
-                       }
-               };
-
-               handle.addEventListener("mousedown", handleDown);
-               handle.addEventListener("touchstart", handleDown, { passive: true });
-
-               //reszie column on  double click
-               handle.addEventListener("dblclick", function (e) {
-                       var col = column.getLastColumn();
-
-                       if (col && self._checkResizability(col)) {
-                               e.stopPropagation();
-                               col.reinitializeWidth(true);
-                       }
-               });
-
-               prevHandle.addEventListener("click", function (e) {
-                       e.stopPropagation();
-               });
-
-               var prevHandleDown = function prevHandleDown(e) {
-                       var nearestColumn, colIndex, prevColumn;
-
-                       nearestColumn = column.getFirstColumn();
-
-                       if (nearestColumn) {
-                               colIndex = self.table.columnManager.findColumnIndex(nearestColumn);
-                               prevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;
-
-                               if (prevColumn && self._checkResizability(prevColumn)) {
-                                       self.startColumn = column;
-                                       self._mouseDown(e, prevColumn, prevHandle);
-                               }
-                       }
-               };
-
-               prevHandle.addEventListener("mousedown", prevHandleDown);
-               prevHandle.addEventListener("touchstart", prevHandleDown, { passive: true });
-
-               //resize column on double click
-               prevHandle.addEventListener("dblclick", function (e) {
-                       var nearestColumn, colIndex, prevColumn;
-
-                       nearestColumn = column.getFirstColumn();
-
-                       if (nearestColumn) {
-                               colIndex = self.table.columnManager.findColumnIndex(nearestColumn);
-                               prevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;
-
-                               if (prevColumn && self._checkResizability(prevColumn)) {
-                                       e.stopPropagation();
-                                       prevColumn.reinitializeWidth(true);
-                               }
-                       }
-               });
-
-               element.appendChild(handle);
-               element.appendChild(prevHandle);
-       }
-};
-
-ResizeColumns.prototype._checkResizability = function (column) {
-       return typeof column.definition.resizable != "undefined" ? column.definition.resizable : this.table.options.resizableColumns;
-};
-
-ResizeColumns.prototype._mouseDown = function (e, column, handle) {
-       var self = this;
-
-       self.table.element.classList.add("tabulator-block-select");
-
-       function mouseMove(e) {
-               // self.table.columnManager.tempScrollBlock();
-
-               column.setWidth(self.startWidth + ((typeof e.screenX === "undefined" ? e.touches[0].screenX : e.screenX) - self.startX));
-
-               if (!self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight) {
-                       column.checkCellHeights();
-               }
-       }
-
-       function mouseUp(e) {
-
-               //block editor from taking action while resizing is taking place
-               if (self.startColumn.modules.edit) {
-                       self.startColumn.modules.edit.blocked = false;
-               }
-
-               if (self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight) {
-                       column.checkCellHeights();
-               }
-
-               document.body.removeEventListener("mouseup", mouseUp);
-               document.body.removeEventListener("mousemove", mouseMove);
-
-               handle.removeEventListener("touchmove", mouseMove);
-               handle.removeEventListener("touchend", mouseUp);
-
-               self.table.element.classList.remove("tabulator-block-select");
-
-               if (self.table.options.persistence && self.table.modExists("persistence", true) && self.table.modules.persistence.config.columns) {
-                       self.table.modules.persistence.save("columns");
-               }
-
-               self.table.options.columnResized.call(self.table, column.getComponent());
-       }
-
-       e.stopPropagation(); //prevent resize from interfereing with movable columns
-
-       //block editor from taking action while resizing is taking place
-       if (self.startColumn.modules.edit) {
-               self.startColumn.modules.edit.blocked = true;
-       }
-
-       self.startX = typeof e.screenX === "undefined" ? e.touches[0].screenX : e.screenX;
-       self.startWidth = column.getWidth();
-
-       document.body.addEventListener("mousemove", mouseMove);
-       document.body.addEventListener("mouseup", mouseUp);
-       handle.addEventListener("touchmove", mouseMove, { passive: true });
-       handle.addEventListener("touchend", mouseUp);
-};
-
-Tabulator.prototype.registerModule("resizeColumns", ResizeColumns);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/resize_columns.min.js b/app/static/vendors/tabulator/js.old/modules/resize_columns.min.js
deleted file mode 100644 (file)
index 5927aed..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-var ResizeColumns=function(e){this.table=e,this.startColumn=!1,this.startX=!1,this.startWidth=!1,this.handle=null,this.prevHandle=null};ResizeColumns.prototype.initializeColumn=function(e,t,n){var o=this,i=!1,s=this.table.options.resizableColumns;if("header"===e&&(i="textarea"==t.definition.formatter||t.definition.variableHeight,t.modules.resize={variableHeight:i}),!0===s||s==e){var a=document.createElement("div");a.className="tabulator-col-resize-handle";var l=document.createElement("div");l.className="tabulator-col-resize-handle prev",a.addEventListener("click",function(e){e.stopPropagation()});var r=function(e){var n=t.getLastColumn();n&&o._checkResizability(n)&&(o.startColumn=t,o._mouseDown(e,n,a))};a.addEventListener("mousedown",r),a.addEventListener("touchstart",r,{passive:!0}),a.addEventListener("dblclick",function(e){var n=t.getLastColumn();n&&o._checkResizability(n)&&(e.stopPropagation(),n.reinitializeWidth(!0))}),l.addEventListener("click",function(e){e.stopPropagation()});var d=function(e){var n,i,s;(n=t.getFirstColumn())&&(i=o.table.columnManager.findColumnIndex(n),(s=i>0&&o.table.columnManager.getColumnByIndex(i-1))&&o._checkResizability(s)&&(o.startColumn=t,o._mouseDown(e,s,l)))};l.addEventListener("mousedown",d),l.addEventListener("touchstart",d,{passive:!0}),l.addEventListener("dblclick",function(e){var n,i,s;(n=t.getFirstColumn())&&(i=o.table.columnManager.findColumnIndex(n),(s=i>0&&o.table.columnManager.getColumnByIndex(i-1))&&o._checkResizability(s)&&(e.stopPropagation(),s.reinitializeWidth(!0)))}),n.appendChild(a),n.appendChild(l)}},ResizeColumns.prototype._checkResizability=function(e){return void 0!==e.definition.resizable?e.definition.resizable:this.table.options.resizableColumns},ResizeColumns.prototype._mouseDown=function(e,t,n){function o(e){t.setWidth(s.startWidth+((void 0===e.screenX?e.touches[0].screenX:e.screenX)-s.startX)),!s.table.browserSlow&&t.modules.resize&&t.modules.resize.variableHeight&&t.checkCellHeights()}function i(e){s.startColumn.modules.edit&&(s.startColumn.modules.edit.blocked=!1),s.table.browserSlow&&t.modules.resize&&t.modules.resize.variableHeight&&t.checkCellHeights(),document.body.removeEventListener("mouseup",i),document.body.removeEventListener("mousemove",o),n.removeEventListener("touchmove",o),n.removeEventListener("touchend",i),s.table.element.classList.remove("tabulator-block-select"),s.table.options.persistence&&s.table.modExists("persistence",!0)&&s.table.modules.persistence.config.columns&&s.table.modules.persistence.save("columns"),s.table.options.columnResized.call(s.table,t.getComponent())}var s=this;s.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),s.startColumn.modules.edit&&(s.startColumn.modules.edit.blocked=!0),s.startX=void 0===e.screenX?e.touches[0].screenX:e.screenX,s.startWidth=t.getWidth(),document.body.addEventListener("mousemove",o),document.body.addEventListener("mouseup",i),n.addEventListener("touchmove",o,{passive:!0}),n.addEventListener("touchend",i)},Tabulator.prototype.registerModule("resizeColumns",ResizeColumns);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/resize_rows.js b/app/static/vendors/tabulator/js.old/modules/resize_rows.js
deleted file mode 100644 (file)
index 8cb1de2..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-
-var ResizeRows = function ResizeRows(table) {
-       this.table = table; //hold Tabulator object
-       this.startColumn = false;
-       this.startY = false;
-       this.startHeight = false;
-       this.handle = null;
-       this.prevHandle = null;
-};
-
-ResizeRows.prototype.initializeRow = function (row) {
-       var self = this,
-           rowEl = row.getElement();
-
-       var handle = document.createElement('div');
-       handle.className = "tabulator-row-resize-handle";
-
-       var prevHandle = document.createElement('div');
-       prevHandle.className = "tabulator-row-resize-handle prev";
-
-       handle.addEventListener("click", function (e) {
-               e.stopPropagation();
-       });
-
-       var handleDown = function handleDown(e) {
-               self.startRow = row;
-               self._mouseDown(e, row, handle);
-       };
-
-       handle.addEventListener("mousedown", handleDown);
-       handle.addEventListener("touchstart", handleDown, { passive: true });
-
-       prevHandle.addEventListener("click", function (e) {
-               e.stopPropagation();
-       });
-
-       var prevHandleDown = function prevHandleDown(e) {
-               var prevRow = self.table.rowManager.prevDisplayRow(row);
-
-               if (prevRow) {
-                       self.startRow = prevRow;
-                       self._mouseDown(e, prevRow, prevHandle);
-               }
-       };
-
-       prevHandle.addEventListener("mousedown", prevHandleDown);
-       prevHandle.addEventListener("touchstart", prevHandleDown, { passive: true });
-
-       rowEl.appendChild(handle);
-       rowEl.appendChild(prevHandle);
-};
-
-ResizeRows.prototype._mouseDown = function (e, row, handle) {
-       var self = this;
-
-       self.table.element.classList.add("tabulator-block-select");
-
-       function mouseMove(e) {
-               row.setHeight(self.startHeight + ((typeof e.screenY === "undefined" ? e.touches[0].screenY : e.screenY) - self.startY));
-       }
-
-       function mouseUp(e) {
-
-               // //block editor from taking action while resizing is taking place
-               // if(self.startColumn.modules.edit){
-               //      self.startColumn.modules.edit.blocked = false;
-               // }
-
-               document.body.removeEventListener("mouseup", mouseMove);
-               document.body.removeEventListener("mousemove", mouseMove);
-
-               handle.removeEventListener("touchmove", mouseMove);
-               handle.removeEventListener("touchend", mouseUp);
-
-               self.table.element.classList.remove("tabulator-block-select");
-
-               self.table.options.rowResized.call(this.table, row.getComponent());
-       }
-
-       e.stopPropagation(); //prevent resize from interfereing with movable columns
-
-       //block editor from taking action while resizing is taking place
-       // if(self.startColumn.modules.edit){
-       //      self.startColumn.modules.edit.blocked = true;
-       // }
-
-       self.startY = typeof e.screenY === "undefined" ? e.touches[0].screenY : e.screenY;
-       self.startHeight = row.getHeight();
-
-       document.body.addEventListener("mousemove", mouseMove);
-       document.body.addEventListener("mouseup", mouseUp);
-
-       handle.addEventListener("touchmove", mouseMove, { passive: true });
-       handle.addEventListener("touchend", mouseUp);
-};
-
-Tabulator.prototype.registerModule("resizeRows", ResizeRows);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/resize_rows.min.js b/app/static/vendors/tabulator/js.old/modules/resize_rows.min.js
deleted file mode 100644 (file)
index e8304e2..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-var ResizeRows=function(e){this.table=e,this.startColumn=!1,this.startY=!1,this.startHeight=!1,this.handle=null,this.prevHandle=null};ResizeRows.prototype.initializeRow=function(e){var t=this,o=e.getElement(),s=document.createElement("div");s.className="tabulator-row-resize-handle";var n=document.createElement("div");n.className="tabulator-row-resize-handle prev",s.addEventListener("click",function(e){e.stopPropagation()});var a=function(o){t.startRow=e,t._mouseDown(o,e,s)};s.addEventListener("mousedown",a),s.addEventListener("touchstart",a,{passive:!0}),n.addEventListener("click",function(e){e.stopPropagation()});var r=function(o){var s=t.table.rowManager.prevDisplayRow(e);s&&(t.startRow=s,t._mouseDown(o,s,n))};n.addEventListener("mousedown",r),n.addEventListener("touchstart",r,{passive:!0}),o.appendChild(s),o.appendChild(n)},ResizeRows.prototype._mouseDown=function(e,t,o){function s(e){t.setHeight(a.startHeight+((void 0===e.screenY?e.touches[0].screenY:e.screenY)-a.startY))}function n(e){document.body.removeEventListener("mouseup",s),document.body.removeEventListener("mousemove",s),o.removeEventListener("touchmove",s),o.removeEventListener("touchend",n),a.table.element.classList.remove("tabulator-block-select"),a.table.options.rowResized.call(this.table,t.getComponent())}var a=this;a.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),a.startY=void 0===e.screenY?e.touches[0].screenY:e.screenY,a.startHeight=t.getHeight(),document.body.addEventListener("mousemove",s),document.body.addEventListener("mouseup",n),o.addEventListener("touchmove",s,{passive:!0}),o.addEventListener("touchend",n)},Tabulator.prototype.registerModule("resizeRows",ResizeRows);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/resize_table.js b/app/static/vendors/tabulator/js.old/modules/resize_table.js
deleted file mode 100644 (file)
index a2a899e..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-
-var ResizeTable = function ResizeTable(table) {
-       this.table = table; //hold Tabulator object
-       this.binding = false;
-       this.observer = false;
-       this.containerObserver = false;
-
-       this.tableHeight = 0;
-       this.tableWidth = 0;
-       this.containerHeight = 0;
-       this.containerWidth = 0;
-
-       this.autoResize = false;
-};
-
-ResizeTable.prototype.initialize = function (row) {
-       var _this = this;
-
-       var table = this.table,
-           tableStyle;
-
-       this.tableHeight = table.element.clientHeight;
-       this.tableWidth = table.element.clientWidth;
-
-       if (table.element.parentNode) {
-               this.containerHeight = table.element.parentNode.clientHeight;
-               this.containerWidth = table.element.parentNode.clientWidth;
-       }
-
-       if (typeof ResizeObserver !== "undefined" && table.rowManager.getRenderMode() === "virtual") {
-
-               this.autoResize = true;
-
-               this.observer = new ResizeObserver(function (entry) {
-                       if (!table.browserMobile || table.browserMobile && !table.modules.edit.currentCell) {
-
-                               var nodeHeight = Math.floor(entry[0].contentRect.height);
-                               var nodeWidth = Math.floor(entry[0].contentRect.width);
-
-                               if (_this.tableHeight != nodeHeight || _this.tableWidth != nodeWidth) {
-                                       _this.tableHeight = nodeHeight;
-                                       _this.tableWidth = nodeWidth;
-
-                                       if (table.element.parentNode) {
-                                               _this.containerHeight = table.element.parentNode.clientHeight;
-                                               _this.containerWidth = table.element.parentNode.clientWidth;
-                                       }
-
-                                       table.redraw();
-                               }
-                       }
-               });
-
-               this.observer.observe(table.element);
-
-               tableStyle = window.getComputedStyle(table.element);
-
-               if (this.table.element.parentNode && !this.table.rowManager.fixedHeight && (tableStyle.getPropertyValue("max-height") || tableStyle.getPropertyValue("min-height"))) {
-
-                       this.containerObserver = new ResizeObserver(function (entry) {
-                               if (!table.browserMobile || table.browserMobile && !table.modules.edit.currentCell) {
-
-                                       var nodeHeight = Math.floor(entry[0].contentRect.height);
-                                       var nodeWidth = Math.floor(entry[0].contentRect.width);
-
-                                       if (_this.containerHeight != nodeHeight || _this.containerWidth != nodeWidth) {
-                                               _this.containerHeight = nodeHeight;
-                                               _this.containerWidth = nodeWidth;
-                                               _this.tableHeight = table.element.clientHeight;
-                                               _this.tableWidth = table.element.clientWidth;
-
-                                               table.redraw();
-                                       }
-
-                                       table.redraw();
-                               }
-                       });
-
-                       this.containerObserver.observe(this.table.element.parentNode);
-               }
-       } else {
-               this.binding = function () {
-                       if (!table.browserMobile || table.browserMobile && !table.modules.edit.currentCell) {
-                               table.redraw();
-                       }
-               };
-
-               window.addEventListener("resize", this.binding);
-       }
-};
-
-ResizeTable.prototype.clearBindings = function (row) {
-       if (this.binding) {
-               window.removeEventListener("resize", this.binding);
-       }
-
-       if (this.observer) {
-               this.observer.unobserve(this.table.element);
-       }
-
-       if (this.containerObserver) {
-               this.containerObserver.unobserve(this.table.element.parentNode);
-       }
-};
-
-Tabulator.prototype.registerModule("resizeTable", ResizeTable);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/resize_table.min.js b/app/static/vendors/tabulator/js.old/modules/resize_table.min.js
deleted file mode 100644 (file)
index 8d1be93..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-var ResizeTable=function(e){this.table=e,this.binding=!1,this.observer=!1,this.containerObserver=!1,this.tableHeight=0,this.tableWidth=0,this.containerHeight=0,this.containerWidth=0,this.autoResize=!1};ResizeTable.prototype.initialize=function(e){var t,i=this,n=this.table;this.tableHeight=n.element.clientHeight,this.tableWidth=n.element.clientWidth,n.element.parentNode&&(this.containerHeight=n.element.parentNode.clientHeight,this.containerWidth=n.element.parentNode.clientWidth),"undefined"!=typeof ResizeObserver&&"virtual"===n.rowManager.getRenderMode()?(this.autoResize=!0,this.observer=new ResizeObserver(function(e){if(!n.browserMobile||n.browserMobile&&!n.modules.edit.currentCell){var t=Math.floor(e[0].contentRect.height),r=Math.floor(e[0].contentRect.width);i.tableHeight==t&&i.tableWidth==r||(i.tableHeight=t,i.tableWidth=r,n.element.parentNode&&(i.containerHeight=n.element.parentNode.clientHeight,i.containerWidth=n.element.parentNode.clientWidth),n.redraw())}}),this.observer.observe(n.element),t=window.getComputedStyle(n.element),this.table.element.parentNode&&!this.table.rowManager.fixedHeight&&(t.getPropertyValue("max-height")||t.getPropertyValue("min-height"))&&(this.containerObserver=new ResizeObserver(function(e){if(!n.browserMobile||n.browserMobile&&!n.modules.edit.currentCell){var t=Math.floor(e[0].contentRect.height),r=Math.floor(e[0].contentRect.width);i.containerHeight==t&&i.containerWidth==r||(i.containerHeight=t,i.containerWidth=r,i.tableHeight=n.element.clientHeight,i.tableWidth=n.element.clientWidth,n.redraw()),n.redraw()}}),this.containerObserver.observe(this.table.element.parentNode))):(this.binding=function(){(!n.browserMobile||n.browserMobile&&!n.modules.edit.currentCell)&&n.redraw()},window.addEventListener("resize",this.binding))},ResizeTable.prototype.clearBindings=function(e){this.binding&&window.removeEventListener("resize",this.binding),this.observer&&this.observer.unobserve(this.table.element),this.containerObserver&&this.containerObserver.unobserve(this.table.element.parentNode)},Tabulator.prototype.registerModule("resizeTable",ResizeTable);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/responsive_layout.js b/app/static/vendors/tabulator/js.old/modules/responsive_layout.js
deleted file mode 100644 (file)
index 99f1ff4..0000000
+++ /dev/null
@@ -1,301 +0,0 @@
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-
-var ResponsiveLayout = function ResponsiveLayout(table) {
-       this.table = table; //hold Tabulator object
-       this.columns = [];
-       this.hiddenColumns = [];
-       this.mode = "";
-       this.index = 0;
-       this.collapseFormatter = [];
-       this.collapseStartOpen = true;
-       this.collapseHandleColumn = false;
-};
-
-//generate resposive columns list
-ResponsiveLayout.prototype.initialize = function () {
-       var self = this,
-           columns = [];
-
-       this.mode = this.table.options.responsiveLayout;
-       this.collapseFormatter = this.table.options.responsiveLayoutCollapseFormatter || this.formatCollapsedData;
-       this.collapseStartOpen = this.table.options.responsiveLayoutCollapseStartOpen;
-       this.hiddenColumns = [];
-
-       //detemine level of responsivity for each column
-       this.table.columnManager.columnsByIndex.forEach(function (column, i) {
-               if (column.modules.responsive) {
-                       if (column.modules.responsive.order && column.modules.responsive.visible) {
-                               column.modules.responsive.index = i;
-                               columns.push(column);
-
-                               if (!column.visible && self.mode === "collapse") {
-                                       self.hiddenColumns.push(column);
-                               }
-                       }
-               }
-       });
-
-       //sort list by responsivity
-       columns = columns.reverse();
-       columns = columns.sort(function (a, b) {
-               var diff = b.modules.responsive.order - a.modules.responsive.order;
-               return diff || b.modules.responsive.index - a.modules.responsive.index;
-       });
-
-       this.columns = columns;
-
-       if (this.mode === "collapse") {
-               this.generateCollapsedContent();
-       }
-
-       //assign collapse column
-       for (var _iterator = this.table.columnManager.columnsByIndex, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
-               var _ref;
-
-               if (_isArray) {
-                       if (_i >= _iterator.length) break;
-                       _ref = _iterator[_i++];
-               } else {
-                       _i = _iterator.next();
-                       if (_i.done) break;
-                       _ref = _i.value;
-               }
-
-               var col = _ref;
-
-               if (col.definition.formatter == "responsiveCollapse") {
-                       this.collapseHandleColumn = col;
-                       break;
-               }
-       }
-
-       if (this.collapseHandleColumn) {
-               if (this.hiddenColumns.length) {
-                       this.collapseHandleColumn.show();
-               } else {
-                       this.collapseHandleColumn.hide();
-               }
-       }
-};
-
-//define layout information
-ResponsiveLayout.prototype.initializeColumn = function (column) {
-       var def = column.getDefinition();
-
-       column.modules.responsive = { order: typeof def.responsive === "undefined" ? 1 : def.responsive, visible: def.visible === false ? false : true };
-};
-
-ResponsiveLayout.prototype.initializeRow = function (row) {
-       var el;
-
-       if (row.type !== "calc") {
-               el = document.createElement("div");
-               el.classList.add("tabulator-responsive-collapse");
-
-               row.modules.responsiveLayout = {
-                       element: el,
-                       open: this.collapseStartOpen
-               };
-
-               if (!this.collapseStartOpen) {
-                       el.style.display = 'none';
-               }
-       }
-};
-
-ResponsiveLayout.prototype.layoutRow = function (row) {
-       var rowEl = row.getElement();
-
-       if (row.modules.responsiveLayout) {
-               rowEl.appendChild(row.modules.responsiveLayout.element);
-               this.generateCollapsedRowContent(row);
-       }
-};
-
-//update column visibility
-ResponsiveLayout.prototype.updateColumnVisibility = function (column, visible) {
-       var index;
-       if (column.modules.responsive) {
-               column.modules.responsive.visible = visible;
-               this.initialize();
-       }
-};
-
-ResponsiveLayout.prototype.hideColumn = function (column) {
-       var colCount = this.hiddenColumns.length;
-
-       column.hide(false, true);
-
-       if (this.mode === "collapse") {
-               this.hiddenColumns.unshift(column);
-               this.generateCollapsedContent();
-
-               if (this.collapseHandleColumn && !colCount) {
-                       this.collapseHandleColumn.show();
-               }
-       }
-};
-
-ResponsiveLayout.prototype.showColumn = function (column) {
-       var index;
-
-       column.show(false, true);
-       //set column width to prevent calculation loops on uninitialized columns
-       column.setWidth(column.getWidth());
-
-       if (this.mode === "collapse") {
-               index = this.hiddenColumns.indexOf(column);
-
-               if (index > -1) {
-                       this.hiddenColumns.splice(index, 1);
-               }
-
-               this.generateCollapsedContent();
-
-               if (this.collapseHandleColumn && !this.hiddenColumns.length) {
-                       this.collapseHandleColumn.hide();
-               }
-       }
-};
-
-//redraw columns to fit space
-ResponsiveLayout.prototype.update = function () {
-       var self = this,
-           working = true;
-
-       while (working) {
-
-               var width = self.table.modules.layout.getMode() == "fitColumns" ? self.table.columnManager.getFlexBaseWidth() : self.table.columnManager.getWidth();
-
-               var diff = (self.table.options.headerVisible ? self.table.columnManager.element.clientWidth : self.table.element.clientWidth) - width;
-
-               if (diff < 0) {
-                       //table is too wide
-                       var column = self.columns[self.index];
-
-                       if (column) {
-                               self.hideColumn(column);
-                               self.index++;
-                       } else {
-                               working = false;
-                       }
-               } else {
-
-                       //table has spare space
-                       var _column = self.columns[self.index - 1];
-
-                       if (_column) {
-                               if (diff > 0) {
-                                       if (diff >= _column.getWidth()) {
-                                               self.showColumn(_column);
-                                               self.index--;
-                                       } else {
-                                               working = false;
-                                       }
-                               } else {
-                                       working = false;
-                               }
-                       } else {
-                               working = false;
-                       }
-               }
-
-               if (!self.table.rowManager.activeRowsCount) {
-                       self.table.rowManager.renderEmptyScroll();
-               }
-       }
-};
-
-ResponsiveLayout.prototype.generateCollapsedContent = function () {
-       var self = this,
-           rows = this.table.rowManager.getDisplayRows();
-
-       rows.forEach(function (row) {
-               self.generateCollapsedRowContent(row);
-       });
-};
-
-ResponsiveLayout.prototype.generateCollapsedRowContent = function (row) {
-       var el, contents;
-
-       if (row.modules.responsiveLayout) {
-               el = row.modules.responsiveLayout.element;
-
-               while (el.firstChild) {
-                       el.removeChild(el.firstChild);
-               }contents = this.collapseFormatter(this.generateCollapsedRowData(row));
-               if (contents) {
-                       el.appendChild(contents);
-               }
-       }
-};
-
-ResponsiveLayout.prototype.generateCollapsedRowData = function (row) {
-       var self = this,
-           data = row.getData(),
-           output = [],
-           mockCellComponent;
-
-       this.hiddenColumns.forEach(function (column) {
-               var value = column.getFieldValue(data);
-
-               if (column.definition.title && column.field) {
-                       if (column.modules.format && self.table.options.responsiveLayoutCollapseUseFormatters) {
-
-                               mockCellComponent = {
-                                       value: false,
-                                       data: {},
-                                       getValue: function getValue() {
-                                               return value;
-                                       },
-                                       getData: function getData() {
-                                               return data;
-                                       },
-                                       getElement: function getElement() {
-                                               return document.createElement("div");
-                                       },
-                                       getRow: function getRow() {
-                                               return row.getComponent();
-                                       },
-                                       getColumn: function getColumn() {
-                                               return column.getComponent();
-                                       }
-                               };
-
-                               output.push({
-                                       title: column.definition.title,
-                                       value: column.modules.format.formatter.call(self.table.modules.format, mockCellComponent, column.modules.format.params)
-                               });
-                       } else {
-                               output.push({
-                                       title: column.definition.title,
-                                       value: value
-                               });
-                       }
-               }
-       });
-
-       return output;
-};
-
-ResponsiveLayout.prototype.formatCollapsedData = function (data) {
-       var list = document.createElement("table"),
-           listContents = "";
-
-       data.forEach(function (item) {
-               var div = document.createElement("div");
-
-               if (item.value instanceof Node) {
-                       div.appendChild(item.value);
-                       item.value = div.innerHTML;
-               }
-
-               listContents += "<tr><td><strong>" + item.title + "</strong></td><td>" + item.value + "</td></tr>";
-       });
-
-       list.innerHTML = listContents;
-
-       return Object.keys(data).length ? list : "";
-};
-
-Tabulator.prototype.registerModule("responsiveLayout", ResponsiveLayout);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/responsive_layout.min.js b/app/static/vendors/tabulator/js.old/modules/responsive_layout.min.js
deleted file mode 100644 (file)
index 427b1e9..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-var ResponsiveLayout=function(e){this.table=e,this.columns=[],this.hiddenColumns=[],this.mode="",this.index=0,this.collapseFormatter=[],this.collapseStartOpen=!0,this.collapseHandleColumn=!1};ResponsiveLayout.prototype.initialize=function(){var e=this,t=[];this.mode=this.table.options.responsiveLayout,this.collapseFormatter=this.table.options.responsiveLayoutCollapseFormatter||this.formatCollapsedData,this.collapseStartOpen=this.table.options.responsiveLayoutCollapseStartOpen,this.hiddenColumns=[],this.table.columnManager.columnsByIndex.forEach(function(o,n){o.modules.responsive&&o.modules.responsive.order&&o.modules.responsive.visible&&(o.modules.responsive.index=n,t.push(o),o.visible||"collapse"!==e.mode||e.hiddenColumns.push(o))}),t=t.reverse(),t=t.sort(function(e,t){return t.modules.responsive.order-e.modules.responsive.order||t.modules.responsive.index-e.modules.responsive.index}),this.columns=t,"collapse"===this.mode&&this.generateCollapsedContent();for(var o=this.table.columnManager.columnsByIndex,n=Array.isArray(o),s=0,o=n?o:o[Symbol.iterator]();;){var i;if(n){if(s>=o.length)break;i=o[s++]}else{if(s=o.next(),s.done)break;i=s.value}var l=i;if("responsiveCollapse"==l.definition.formatter){this.collapseHandleColumn=l;break}}this.collapseHandleColumn&&(this.hiddenColumns.length?this.collapseHandleColumn.show():this.collapseHandleColumn.hide())},ResponsiveLayout.prototype.initializeColumn=function(e){var t=e.getDefinition();e.modules.responsive={order:void 0===t.responsive?1:t.responsive,visible:!1!==t.visible}},ResponsiveLayout.prototype.initializeRow=function(e){var t;"calc"!==e.type&&(t=document.createElement("div"),t.classList.add("tabulator-responsive-collapse"),e.modules.responsiveLayout={element:t,open:this.collapseStartOpen},this.collapseStartOpen||(t.style.display="none"))},ResponsiveLayout.prototype.layoutRow=function(e){var t=e.getElement();e.modules.responsiveLayout&&(t.appendChild(e.modules.responsiveLayout.element),this.generateCollapsedRowContent(e))},ResponsiveLayout.prototype.updateColumnVisibility=function(e,t){e.modules.responsive&&(e.modules.responsive.visible=t,this.initialize())},ResponsiveLayout.prototype.hideColumn=function(e){var t=this.hiddenColumns.length;e.hide(!1,!0),"collapse"===this.mode&&(this.hiddenColumns.unshift(e),this.generateCollapsedContent(),this.collapseHandleColumn&&!t&&this.collapseHandleColumn.show())},ResponsiveLayout.prototype.showColumn=function(e){var t;e.show(!1,!0),e.setWidth(e.getWidth()),"collapse"===this.mode&&(t=this.hiddenColumns.indexOf(e),t>-1&&this.hiddenColumns.splice(t,1),this.generateCollapsedContent(),this.collapseHandleColumn&&!this.hiddenColumns.length&&this.collapseHandleColumn.hide())},ResponsiveLayout.prototype.update=function(){for(var e=this,t=!0;t;){var o="fitColumns"==e.table.modules.layout.getMode()?e.table.columnManager.getFlexBaseWidth():e.table.columnManager.getWidth(),n=(e.table.options.headerVisible?e.table.columnManager.element.clientWidth:e.table.element.clientWidth)-o;if(n<0){var s=e.columns[e.index];s?(e.hideColumn(s),e.index++):t=!1}else{var i=e.columns[e.index-1];i&&n>0&&n>=i.getWidth()?(e.showColumn(i),e.index--):t=!1}e.table.rowManager.activeRowsCount||e.table.rowManager.renderEmptyScroll()}},ResponsiveLayout.prototype.generateCollapsedContent=function(){var e=this;this.table.rowManager.getDisplayRows().forEach(function(t){e.generateCollapsedRowContent(t)})},ResponsiveLayout.prototype.generateCollapsedRowContent=function(e){var t,o;if(e.modules.responsiveLayout){for(t=e.modules.responsiveLayout.element;t.firstChild;)t.removeChild(t.firstChild);o=this.collapseFormatter(this.generateCollapsedRowData(e)),o&&t.appendChild(o)}},ResponsiveLayout.prototype.generateCollapsedRowData=function(e){var t,o=this,n=e.getData(),s=[];return this.hiddenColumns.forEach(function(i){var l=i.getFieldValue(n);i.definition.title&&i.field&&(i.modules.format&&o.table.options.responsiveLayoutCollapseUseFormatters?(t={value:!1,data:{},getValue:function(){return l},getData:function(){return n},getElement:function(){return document.createElement("div")},getRow:function(){return e.getComponent()},getColumn:function(){return i.getComponent()}},s.push({title:i.definition.title,value:i.modules.format.formatter.call(o.table.modules.format,t,i.modules.format.params)})):s.push({title:i.definition.title,value:l}))}),s},ResponsiveLayout.prototype.formatCollapsedData=function(e){var t=document.createElement("table"),o="";return e.forEach(function(e){var t=document.createElement("div");e.value instanceof Node&&(t.appendChild(e.value),e.value=t.innerHTML),o+="<tr><td><strong>"+e.title+"</strong></td><td>"+e.value+"</td></tr>"}),t.innerHTML=o,Object.keys(e).length?t:""},Tabulator.prototype.registerModule("responsiveLayout",ResponsiveLayout);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/select_row.js b/app/static/vendors/tabulator/js.old/modules/select_row.js
deleted file mode 100644 (file)
index 6da6884..0000000
+++ /dev/null
@@ -1,417 +0,0 @@
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-
-var SelectRow = function SelectRow(table) {
-       this.table = table; //hold Tabulator object
-       this.selecting = false; //flag selecting in progress
-       this.lastClickedRow = false; //last clicked row
-       this.selectPrev = []; //hold previously selected element for drag drop selection
-       this.selectedRows = []; //hold selected rows
-       this.headerCheckboxElement = null; // hold header select element
-};
-
-SelectRow.prototype.clearSelectionData = function (silent) {
-       this.selecting = false;
-       this.lastClickedRow = false;
-       this.selectPrev = [];
-       this.selectedRows = [];
-
-       if (!silent) {
-               this._rowSelectionChanged();
-       }
-};
-
-SelectRow.prototype.initializeRow = function (row) {
-       var self = this,
-           element = row.getElement();
-
-       // trigger end of row selection
-       var endSelect = function endSelect() {
-
-               setTimeout(function () {
-                       self.selecting = false;
-               }, 50);
-
-               document.body.removeEventListener("mouseup", endSelect);
-       };
-
-       row.modules.select = { selected: false };
-
-       //set row selection class
-       if (self.table.options.selectableCheck.call(this.table, row.getComponent())) {
-               element.classList.add("tabulator-selectable");
-               element.classList.remove("tabulator-unselectable");
-
-               if (self.table.options.selectable && self.table.options.selectable != "highlight") {
-                       if (self.table.options.selectableRangeMode === "click") {
-                               element.addEventListener("click", function (e) {
-                                       if (e.shiftKey) {
-                                               self.table._clearSelection();
-                                               self.lastClickedRow = self.lastClickedRow || row;
-
-                                               var lastClickedRowIdx = self.table.rowManager.getDisplayRowIndex(self.lastClickedRow);
-                                               var rowIdx = self.table.rowManager.getDisplayRowIndex(row);
-
-                                               var fromRowIdx = lastClickedRowIdx <= rowIdx ? lastClickedRowIdx : rowIdx;
-                                               var toRowIdx = lastClickedRowIdx >= rowIdx ? lastClickedRowIdx : rowIdx;
-
-                                               var rows = self.table.rowManager.getDisplayRows().slice(0);
-                                               var toggledRows = rows.splice(fromRowIdx, toRowIdx - fromRowIdx + 1);
-
-                                               if (e.ctrlKey || e.metaKey) {
-                                                       toggledRows.forEach(function (toggledRow) {
-                                                               if (toggledRow !== self.lastClickedRow) {
-
-                                                                       if (self.table.options.selectable !== true && !self.isRowSelected(row)) {
-                                                                               if (self.selectedRows.length < self.table.options.selectable) {
-                                                                                       self.toggleRow(toggledRow);
-                                                                               }
-                                                                       } else {
-                                                                               self.toggleRow(toggledRow);
-                                                                       }
-                                                               }
-                                                       });
-                                                       self.lastClickedRow = row;
-                                               } else {
-                                                       self.deselectRows(undefined, true);
-
-                                                       if (self.table.options.selectable !== true) {
-                                                               if (toggledRows.length > self.table.options.selectable) {
-                                                                       toggledRows = toggledRows.slice(0, self.table.options.selectable);
-                                                               }
-                                                       }
-
-                                                       self.selectRows(toggledRows);
-                                               }
-                                               self.table._clearSelection();
-                                       } else if (e.ctrlKey || e.metaKey) {
-                                               self.toggleRow(row);
-                                               self.lastClickedRow = row;
-                                       } else {
-                                               self.deselectRows(undefined, true);
-                                               self.selectRows(row);
-                                               self.lastClickedRow = row;
-                                       }
-                               });
-                       } else {
-                               element.addEventListener("click", function (e) {
-                                       if (!self.table.modExists("edit") || !self.table.modules.edit.getCurrentCell()) {
-                                               self.table._clearSelection();
-                                       }
-
-                                       if (!self.selecting) {
-                                               self.toggleRow(row);
-                                       }
-                               });
-
-                               element.addEventListener("mousedown", function (e) {
-                                       if (e.shiftKey) {
-                                               self.table._clearSelection();
-
-                                               self.selecting = true;
-
-                                               self.selectPrev = [];
-
-                                               document.body.addEventListener("mouseup", endSelect);
-                                               document.body.addEventListener("keyup", endSelect);
-
-                                               self.toggleRow(row);
-
-                                               return false;
-                                       }
-                               });
-
-                               element.addEventListener("mouseenter", function (e) {
-                                       if (self.selecting) {
-                                               self.table._clearSelection();
-                                               self.toggleRow(row);
-
-                                               if (self.selectPrev[1] == row) {
-                                                       self.toggleRow(self.selectPrev[0]);
-                                               }
-                                       }
-                               });
-
-                               element.addEventListener("mouseout", function (e) {
-                                       if (self.selecting) {
-                                               self.table._clearSelection();
-                                               self.selectPrev.unshift(row);
-                                       }
-                               });
-                       }
-               }
-       } else {
-               element.classList.add("tabulator-unselectable");
-               element.classList.remove("tabulator-selectable");
-       }
-};
-
-//toggle row selection
-SelectRow.prototype.toggleRow = function (row) {
-       if (this.table.options.selectableCheck.call(this.table, row.getComponent())) {
-               if (row.modules.select && row.modules.select.selected) {
-                       this._deselectRow(row);
-               } else {
-                       this._selectRow(row);
-               }
-       }
-};
-
-//select a number of rows
-SelectRow.prototype.selectRows = function (rows) {
-       var _this = this;
-
-       var rowMatch;
-
-       switch (typeof rows === "undefined" ? "undefined" : _typeof(rows)) {
-               case "undefined":
-                       this.table.rowManager.rows.forEach(function (row) {
-                               _this._selectRow(row, true, true);
-                       });
-
-                       this._rowSelectionChanged();
-                       break;
-
-               case "string":
-
-                       rowMatch = this.table.rowManager.findRow(rows);
-
-                       if (rowMatch) {
-                               this._selectRow(rowMatch, true, true);
-                       } else {
-                               this.table.rowManager.getRows(rows).forEach(function (row) {
-                                       _this._selectRow(row, true, true);
-                               });
-                       }
-
-                       this._rowSelectionChanged();
-                       break;
-
-               default:
-                       if (Array.isArray(rows)) {
-                               rows.forEach(function (row) {
-                                       _this._selectRow(row, true, true);
-                               });
-
-                               this._rowSelectionChanged();
-                       } else {
-                               this._selectRow(rows, false, true);
-                       }
-                       break;
-       }
-};
-
-//select an individual row
-SelectRow.prototype._selectRow = function (rowInfo, silent, force) {
-       var index;
-
-       //handle max row count
-       if (!isNaN(this.table.options.selectable) && this.table.options.selectable !== true && !force) {
-               if (this.selectedRows.length >= this.table.options.selectable) {
-                       if (this.table.options.selectableRollingSelection) {
-                               this._deselectRow(this.selectedRows[0]);
-                       } else {
-                               return false;
-                       }
-               }
-       }
-
-       var row = this.table.rowManager.findRow(rowInfo);
-
-       if (row) {
-               if (this.selectedRows.indexOf(row) == -1) {
-                       if (!row.modules.select) {
-                               row.modules.select = {};
-                       }
-
-                       row.modules.select.selected = true;
-                       if (row.modules.select.checkboxEl) {
-                               row.modules.select.checkboxEl.checked = true;
-                       }
-                       row.getElement().classList.add("tabulator-selected");
-
-                       this.selectedRows.push(row);
-
-                       if (this.table.options.dataTreeSelectPropagate) {
-                               this.childRowSelection(row, true);
-                       }
-
-                       if (!silent) {
-                               this.table.options.rowSelected.call(this.table, row.getComponent());
-                       }
-
-                       this._rowSelectionChanged(silent);
-               }
-       } else {
-               if (!silent) {
-                       console.warn("Selection Error - No such row found, ignoring selection:" + rowInfo);
-               }
-       }
-};
-
-SelectRow.prototype.isRowSelected = function (row) {
-       return this.selectedRows.indexOf(row) !== -1;
-};
-
-//deselect a number of rows
-SelectRow.prototype.deselectRows = function (rows, silent) {
-       var self = this,
-           rowCount;
-
-       if (typeof rows == "undefined") {
-
-               rowCount = self.selectedRows.length;
-
-               for (var i = 0; i < rowCount; i++) {
-                       self._deselectRow(self.selectedRows[0], true);
-               }
-
-               self._rowSelectionChanged(silent);
-       } else {
-               if (Array.isArray(rows)) {
-                       rows.forEach(function (row) {
-                               self._deselectRow(row, true);
-                       });
-
-                       self._rowSelectionChanged(silent);
-               } else {
-                       self._deselectRow(rows, silent);
-               }
-       }
-};
-
-//deselect an individual row
-SelectRow.prototype._deselectRow = function (rowInfo, silent) {
-       var self = this,
-           row = self.table.rowManager.findRow(rowInfo),
-           index;
-
-       if (row) {
-               index = self.selectedRows.findIndex(function (selectedRow) {
-                       return selectedRow == row;
-               });
-
-               if (index > -1) {
-
-                       if (!row.modules.select) {
-                               row.modules.select = {};
-                       }
-
-                       row.modules.select.selected = false;
-                       if (row.modules.select.checkboxEl) {
-                               row.modules.select.checkboxEl.checked = false;
-                       }
-                       row.getElement().classList.remove("tabulator-selected");
-                       self.selectedRows.splice(index, 1);
-
-                       if (this.table.options.dataTreeSelectPropagate) {
-                               this.childRowSelection(row, false);
-                       }
-
-                       if (!silent) {
-                               self.table.options.rowDeselected.call(this.table, row.getComponent());
-                       }
-
-                       self._rowSelectionChanged(silent);
-               }
-       } else {
-               if (!silent) {
-                       console.warn("Deselection Error - No such row found, ignoring selection:" + rowInfo);
-               }
-       }
-};
-
-SelectRow.prototype.getSelectedData = function () {
-       var data = [];
-
-       this.selectedRows.forEach(function (row) {
-               data.push(row.getData());
-       });
-
-       return data;
-};
-
-SelectRow.prototype.getSelectedRows = function () {
-
-       var rows = [];
-
-       this.selectedRows.forEach(function (row) {
-               rows.push(row.getComponent());
-       });
-
-       return rows;
-};
-
-SelectRow.prototype._rowSelectionChanged = function (silent) {
-       if (this.headerCheckboxElement) {
-               if (this.selectedRows.length === 0) {
-                       this.headerCheckboxElement.checked = false;
-                       this.headerCheckboxElement.indeterminate = false;
-               } else if (this.table.rowManager.rows.length === this.selectedRows.length) {
-                       this.headerCheckboxElement.checked = true;
-                       this.headerCheckboxElement.indeterminate = false;
-               } else {
-                       this.headerCheckboxElement.indeterminate = true;
-                       this.headerCheckboxElement.checked = false;
-               }
-       }
-
-       if (!silent) {
-               this.table.options.rowSelectionChanged.call(this.table, this.getSelectedData(), this.getSelectedRows());
-       }
-};
-
-SelectRow.prototype.registerRowSelectCheckbox = function (row, element) {
-       if (!row._row.modules.select) {
-               row._row.modules.select = {};
-       }
-
-       row._row.modules.select.checkboxEl = element;
-};
-
-SelectRow.prototype.registerHeaderSelectCheckbox = function (element) {
-       this.headerCheckboxElement = element;
-};
-
-SelectRow.prototype.childRowSelection = function (row, select) {
-       var children = this.table.modules.dataTree.getChildren(row);
-
-       if (select) {
-               for (var _iterator = children, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
-                       var _ref;
-
-                       if (_isArray) {
-                               if (_i >= _iterator.length) break;
-                               _ref = _iterator[_i++];
-                       } else {
-                               _i = _iterator.next();
-                               if (_i.done) break;
-                               _ref = _i.value;
-                       }
-
-                       var child = _ref;
-
-                       this._selectRow(child, true);
-               }
-       } else {
-               for (var _iterator2 = children, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
-                       var _ref2;
-
-                       if (_isArray2) {
-                               if (_i2 >= _iterator2.length) break;
-                               _ref2 = _iterator2[_i2++];
-                       } else {
-                               _i2 = _iterator2.next();
-                               if (_i2.done) break;
-                               _ref2 = _i2.value;
-                       }
-
-                       var _child = _ref2;
-
-                       this._deselectRow(_child, true);
-               }
-       }
-};
-
-Tabulator.prototype.registerModule("selectRow", SelectRow);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/select_row.min.js b/app/static/vendors/tabulator/js.old/modules/select_row.min.js
deleted file mode 100644 (file)
index 1b115da..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},SelectRow=function(e){this.table=e,this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],this.headerCheckboxElement=null};SelectRow.prototype.clearSelectionData=function(e){this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],e||this._rowSelectionChanged()},SelectRow.prototype.initializeRow=function(e){var t=this,o=e.getElement(),l=function e(){setTimeout(function(){t.selecting=!1},50),document.body.removeEventListener("mouseup",e)};e.modules.select={selected:!1},t.table.options.selectableCheck.call(this.table,e.getComponent())?(o.classList.add("tabulator-selectable"),o.classList.remove("tabulator-unselectable"),t.table.options.selectable&&"highlight"!=t.table.options.selectable&&("click"===t.table.options.selectableRangeMode?o.addEventListener("click",function(o){if(o.shiftKey){t.table._clearSelection(),t.lastClickedRow=t.lastClickedRow||e;var l=t.table.rowManager.getDisplayRowIndex(t.lastClickedRow),s=t.table.rowManager.getDisplayRowIndex(e),c=l<=s?l:s,i=l>=s?l:s,n=t.table.rowManager.getDisplayRows().slice(0),a=n.splice(c,i-c+1);o.ctrlKey||o.metaKey?(a.forEach(function(o){o!==t.lastClickedRow&&(!0===t.table.options.selectable||t.isRowSelected(e)?t.toggleRow(o):t.selectedRows.length<t.table.options.selectable&&t.toggleRow(o))}),t.lastClickedRow=e):(t.deselectRows(void 0,!0),!0!==t.table.options.selectable&&a.length>t.table.options.selectable&&(a=a.slice(0,t.table.options.selectable)),t.selectRows(a)),t.table._clearSelection()}else o.ctrlKey||o.metaKey?(t.toggleRow(e),t.lastClickedRow=e):(t.deselectRows(void 0,!0),t.selectRows(e),t.lastClickedRow=e)}):(o.addEventListener("click",function(o){t.table.modExists("edit")&&t.table.modules.edit.getCurrentCell()||t.table._clearSelection(),t.selecting||t.toggleRow(e)}),o.addEventListener("mousedown",function(o){if(o.shiftKey)return t.table._clearSelection(),t.selecting=!0,t.selectPrev=[],document.body.addEventListener("mouseup",l),document.body.addEventListener("keyup",l),t.toggleRow(e),!1}),o.addEventListener("mouseenter",function(o){t.selecting&&(t.table._clearSelection(),t.toggleRow(e),t.selectPrev[1]==e&&t.toggleRow(t.selectPrev[0]))}),o.addEventListener("mouseout",function(o){t.selecting&&(t.table._clearSelection(),t.selectPrev.unshift(e))})))):(o.classList.add("tabulator-unselectable"),o.classList.remove("tabulator-selectable"))},SelectRow.prototype.toggleRow=function(e){this.table.options.selectableCheck.call(this.table,e.getComponent())&&(e.modules.select&&e.modules.select.selected?this._deselectRow(e):this._selectRow(e))},SelectRow.prototype.selectRows=function(e){var t,o=this;switch(void 0===e?"undefined":_typeof(e)){case"undefined":this.table.rowManager.rows.forEach(function(e){o._selectRow(e,!0,!0)}),this._rowSelectionChanged();break;case"string":t=this.table.rowManager.findRow(e),t?this._selectRow(t,!0,!0):this.table.rowManager.getRows(e).forEach(function(e){o._selectRow(e,!0,!0)}),this._rowSelectionChanged();break;default:Array.isArray(e)?(e.forEach(function(e){o._selectRow(e,!0,!0)}),this._rowSelectionChanged()):this._selectRow(e,!1,!0)}},SelectRow.prototype._selectRow=function(e,t,o){if(!isNaN(this.table.options.selectable)&&!0!==this.table.options.selectable&&!o&&this.selectedRows.length>=this.table.options.selectable){if(!this.table.options.selectableRollingSelection)return!1;this._deselectRow(this.selectedRows[0])}var l=this.table.rowManager.findRow(e);l?-1==this.selectedRows.indexOf(l)&&(l.modules.select||(l.modules.select={}),l.modules.select.selected=!0,l.modules.select.checkboxEl&&(l.modules.select.checkboxEl.checked=!0),l.getElement().classList.add("tabulator-selected"),this.selectedRows.push(l),this.table.options.dataTreeSelectPropagate&&this.childRowSelection(l,!0),t||this.table.options.rowSelected.call(this.table,l.getComponent()),this._rowSelectionChanged(t)):t||console.warn("Selection Error - No such row found, ignoring selection:"+e)},SelectRow.prototype.isRowSelected=function(e){return-1!==this.selectedRows.indexOf(e)},SelectRow.prototype.deselectRows=function(e,t){var o,l=this;if(void 0===e){o=l.selectedRows.length;for(var s=0;s<o;s++)l._deselectRow(l.selectedRows[0],!0);l._rowSelectionChanged(t)}else Array.isArray(e)?(e.forEach(function(e){l._deselectRow(e,!0)}),l._rowSelectionChanged(t)):l._deselectRow(e,t)},SelectRow.prototype._deselectRow=function(e,t){var o,l=this,s=l.table.rowManager.findRow(e);s?(o=l.selectedRows.findIndex(function(e){return e==s}))>-1&&(s.modules.select||(s.modules.select={}),s.modules.select.selected=!1,s.modules.select.checkboxEl&&(s.modules.select.checkboxEl.checked=!1),s.getElement().classList.remove("tabulator-selected"),l.selectedRows.splice(o,1),this.table.options.dataTreeSelectPropagate&&this.childRowSelection(s,!1),t||l.table.options.rowDeselected.call(this.table,s.getComponent()),l._rowSelectionChanged(t)):t||console.warn("Deselection Error - No such row found, ignoring selection:"+e)},SelectRow.prototype.getSelectedData=function(){var e=[];return this.selectedRows.forEach(function(t){e.push(t.getData())}),e},SelectRow.prototype.getSelectedRows=function(){var e=[];return this.selectedRows.forEach(function(t){e.push(t.getComponent())}),e},SelectRow.prototype._rowSelectionChanged=function(e){this.headerCheckboxElement&&(0===this.selectedRows.length?(this.headerCheckboxElement.checked=!1,this.headerCheckboxElement.indeterminate=!1):this.table.rowManager.rows.length===this.selectedRows.length?(this.headerCheckboxElement.checked=!0,this.headerCheckboxElement.indeterminate=!1):(this.headerCheckboxElement.indeterminate=!0,this.headerCheckboxElement.checked=!1)),e||this.table.options.rowSelectionChanged.call(this.table,this.getSelectedData(),this.getSelectedRows())},SelectRow.prototype.registerRowSelectCheckbox=function(e,t){e._row.modules.select||(e._row.modules.select={}),e._row.modules.select.checkboxEl=t},SelectRow.prototype.registerHeaderSelectCheckbox=function(e){this.headerCheckboxElement=e},SelectRow.prototype.childRowSelection=function(e,t){var o=this.table.modules.dataTree.getChildren(e);if(t)for(var l=o,s=Array.isArray(l),c=0,l=s?l:l[Symbol.iterator]();;){var i;if(s){if(c>=l.length)break;i=l[c++]}else{if(c=l.next(),c.done)break;i=c.value}var n=i;this._selectRow(n,!0)}else for(var a=o,r=Array.isArray(a),d=0,a=r?a:a[Symbol.iterator]();;){var h;if(r){if(d>=a.length)break;h=a[d++]}else{if(d=a.next(),d.done)break;h=d.value}var w=h;this._deselectRow(w,!0)}},Tabulator.prototype.registerModule("selectRow",SelectRow);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/sort.js b/app/static/vendors/tabulator/js.old/modules/sort.js
deleted file mode 100644 (file)
index bd38387..0000000
+++ /dev/null
@@ -1,566 +0,0 @@
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-
-var Sort = function Sort(table) {
-       this.table = table; //hold Tabulator object
-       this.sortList = []; //holder current sort
-       this.changed = false; //has the sort changed since last render
-};
-
-//initialize column header for sorting
-Sort.prototype.initializeColumn = function (column, content) {
-       var self = this,
-           sorter = false,
-           colEl,
-           arrowEl;
-
-       switch (_typeof(column.definition.sorter)) {
-               case "string":
-                       if (self.sorters[column.definition.sorter]) {
-                               sorter = self.sorters[column.definition.sorter];
-                       } else {
-                               console.warn("Sort Error - No such sorter found: ", column.definition.sorter);
-                       }
-                       break;
-
-               case "function":
-                       sorter = column.definition.sorter;
-                       break;
-       }
-
-       column.modules.sort = {
-               sorter: sorter, dir: "none",
-               params: column.definition.sorterParams || {},
-               startingDir: column.definition.headerSortStartingDir || "asc",
-               tristate: typeof column.definition.headerSortTristate !== "undefined" ? column.definition.headerSortTristate : this.table.options.headerSortTristate
-       };
-
-       if (typeof column.definition.headerSort === "undefined" ? this.table.options.headerSort !== false : column.definition.headerSort !== false) {
-
-               colEl = column.getElement();
-
-               colEl.classList.add("tabulator-sortable");
-
-               arrowEl = document.createElement("div");
-               arrowEl.classList.add("tabulator-arrow");
-               //create sorter arrow
-               content.appendChild(arrowEl);
-
-               //sort on click
-               colEl.addEventListener("click", function (e) {
-                       var dir = "",
-                           sorters = [],
-                           match = false;
-
-                       if (column.modules.sort) {
-                               if (column.modules.sort.tristate) {
-                                       if (column.modules.sort.dir == "none") {
-                                               dir = column.modules.sort.startingDir;
-                                       } else {
-                                               if (column.modules.sort.dir == column.modules.sort.startingDir) {
-                                                       dir = column.modules.sort.dir == "asc" ? "desc" : "asc";
-                                               } else {
-                                                       dir = "none";
-                                               }
-                                       }
-                               } else {
-                                       switch (column.modules.sort.dir) {
-                                               case "asc":
-                                                       dir = "desc";
-                                                       break;
-
-                                               case "desc":
-                                                       dir = "asc";
-                                                       break;
-
-                                               default:
-                                                       dir = column.modules.sort.startingDir;
-                                       }
-                               }
-
-                               if (self.table.options.columnHeaderSortMulti && (e.shiftKey || e.ctrlKey)) {
-                                       sorters = self.getSort();
-
-                                       match = sorters.findIndex(function (sorter) {
-                                               return sorter.field === column.getField();
-                                       });
-
-                                       if (match > -1) {
-                                               sorters[match].dir = dir;
-
-                                               if (match != sorters.length - 1) {
-                                                       match = sorters.splice(match, 1)[0];
-                                                       if (dir != "none") {
-                                                               sorters.push(match);
-                                                       }
-                                               }
-                                       } else {
-                                               if (dir != "none") {
-                                                       sorters.push({ column: column, dir: dir });
-                                               }
-                                       }
-
-                                       //add to existing sort
-                                       self.setSort(sorters);
-                               } else {
-                                       if (dir == "none") {
-                                               self.clear();
-                                       } else {
-                                               //sort by column only
-                                               self.setSort(column, dir);
-                                       }
-                               }
-
-                               self.table.rowManager.sorterRefresh(!self.sortList.length);
-                       }
-               });
-       }
-};
-
-//check if the sorters have changed since last use
-Sort.prototype.hasChanged = function () {
-       var changed = this.changed;
-       this.changed = false;
-       return changed;
-};
-
-//return current sorters
-Sort.prototype.getSort = function () {
-       var self = this,
-           sorters = [];
-
-       self.sortList.forEach(function (item) {
-               if (item.column) {
-                       sorters.push({ column: item.column.getComponent(), field: item.column.getField(), dir: item.dir });
-               }
-       });
-
-       return sorters;
-};
-
-//change sort list and trigger sort
-Sort.prototype.setSort = function (sortList, dir) {
-       var self = this,
-           newSortList = [];
-
-       if (!Array.isArray(sortList)) {
-               sortList = [{ column: sortList, dir: dir }];
-       }
-
-       sortList.forEach(function (item) {
-               var column;
-
-               column = self.table.columnManager.findColumn(item.column);
-
-               if (column) {
-                       item.column = column;
-                       newSortList.push(item);
-                       self.changed = true;
-               } else {
-                       console.warn("Sort Warning - Sort field does not exist and is being ignored: ", item.column);
-               }
-       });
-
-       self.sortList = newSortList;
-
-       if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.sort) {
-               this.table.modules.persistence.save("sort");
-       }
-};
-
-//clear sorters
-Sort.prototype.clear = function () {
-       this.setSort([]);
-};
-
-//find appropriate sorter for column
-Sort.prototype.findSorter = function (column) {
-       var row = this.table.rowManager.activeRows[0],
-           sorter = "string",
-           field,
-           value;
-
-       if (row) {
-               row = row.getData();
-               field = column.getField();
-
-               if (field) {
-
-                       value = column.getFieldValue(row);
-
-                       switch (typeof value === "undefined" ? "undefined" : _typeof(value)) {
-                               case "undefined":
-                                       sorter = "string";
-                                       break;
-
-                               case "boolean":
-                                       sorter = "boolean";
-                                       break;
-
-                               default:
-                                       if (!isNaN(value) && value !== "") {
-                                               sorter = "number";
-                                       } else {
-                                               if (value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)) {
-                                                       sorter = "alphanum";
-                                               }
-                                       }
-                                       break;
-                       }
-               }
-       }
-
-       return this.sorters[sorter];
-};
-
-//work through sort list sorting data
-Sort.prototype.sort = function (data) {
-       var self = this,
-           sortList = this.table.options.sortOrderReverse ? self.sortList.slice().reverse() : self.sortList,
-           sortListActual = [],
-           lastSort;
-
-       if (self.table.options.dataSorting) {
-               self.table.options.dataSorting.call(self.table, self.getSort());
-       }
-
-       self.clearColumnHeaders();
-
-       if (!self.table.options.ajaxSorting) {
-
-               //build list of valid sorters and trigger column specific callbacks before sort begins
-               sortList.forEach(function (item, i) {
-                       var sortObj = item.column.modules.sort;
-
-                       if (item.column && sortObj) {
-
-                               //if no sorter has been defined, take a guess
-                               if (!sortObj.sorter) {
-                                       sortObj.sorter = self.findSorter(item.column);
-                               }
-
-                               item.params = typeof sortObj.params === "function" ? sortObj.params(item.column.getComponent(), item.dir) : sortObj.params;
-
-                               sortListActual.push(item);
-                       }
-
-                       self.setColumnHeader(item.column, item.dir);
-               });
-
-               //sort data
-               if (sortListActual.length) {
-                       self._sortItems(data, sortListActual);
-               }
-       } else {
-               sortList.forEach(function (item, i) {
-                       self.setColumnHeader(item.column, item.dir);
-               });
-       }
-
-       if (self.table.options.dataSorted) {
-               self.table.options.dataSorted.call(self.table, self.getSort(), self.table.rowManager.getComponents("active"));
-       }
-};
-
-//clear sort arrows on columns
-Sort.prototype.clearColumnHeaders = function () {
-       this.table.columnManager.getRealColumns().forEach(function (column) {
-               if (column.modules.sort) {
-                       column.modules.sort.dir = "none";
-                       column.getElement().setAttribute("aria-sort", "none");
-               }
-       });
-};
-
-//set the column header sort direction
-Sort.prototype.setColumnHeader = function (column, dir) {
-       column.modules.sort.dir = dir;
-       column.getElement().setAttribute("aria-sort", dir);
-};
-
-//sort each item in sort list
-Sort.prototype._sortItems = function (data, sortList) {
-       var _this = this;
-
-       var sorterCount = sortList.length - 1;
-
-       data.sort(function (a, b) {
-               var result;
-
-               for (var i = sorterCount; i >= 0; i--) {
-                       var sortItem = sortList[i];
-
-                       result = _this._sortRow(a, b, sortItem.column, sortItem.dir, sortItem.params);
-
-                       if (result !== 0) {
-                               break;
-                       }
-               }
-
-               return result;
-       });
-};
-
-//process individual rows for a sort function on active data
-Sort.prototype._sortRow = function (a, b, column, dir, params) {
-       var el1Comp, el2Comp, colComp;
-
-       //switch elements depending on search direction
-       var el1 = dir == "asc" ? a : b;
-       var el2 = dir == "asc" ? b : a;
-
-       a = column.getFieldValue(el1.getData());
-       b = column.getFieldValue(el2.getData());
-
-       a = typeof a !== "undefined" ? a : "";
-       b = typeof b !== "undefined" ? b : "";
-
-       el1Comp = el1.getComponent();
-       el2Comp = el2.getComponent();
-
-       return column.modules.sort.sorter.call(this, a, b, el1Comp, el2Comp, column.getComponent(), dir, params);
-};
-
-//default data sorters
-Sort.prototype.sorters = {
-
-       //sort numbers
-       number: function number(a, b, aRow, bRow, column, dir, params) {
-               var alignEmptyValues = params.alignEmptyValues;
-               var decimal = params.decimalSeparator || ".";
-               var thousand = params.thousandSeparator || ",";
-               var emptyAlign = 0;
-
-               a = parseFloat(String(a).split(thousand).join("").split(decimal).join("."));
-               b = parseFloat(String(b).split(thousand).join("").split(decimal).join("."));
-
-               //handle non numeric values
-               if (isNaN(a)) {
-                       emptyAlign = isNaN(b) ? 0 : -1;
-               } else if (isNaN(b)) {
-                       emptyAlign = 1;
-               } else {
-                       //compare valid values
-                       return a - b;
-               }
-
-               //fix empty values in position
-               if (alignEmptyValues === "top" && dir === "desc" || alignEmptyValues === "bottom" && dir === "asc") {
-                       emptyAlign *= -1;
-               }
-
-               return emptyAlign;
-       },
-
-       //sort strings
-       string: function string(a, b, aRow, bRow, column, dir, params) {
-               var alignEmptyValues = params.alignEmptyValues;
-               var emptyAlign = 0;
-               var locale;
-
-               //handle empty values
-               if (!a) {
-                       emptyAlign = !b ? 0 : -1;
-               } else if (!b) {
-                       emptyAlign = 1;
-               } else {
-                       //compare valid values
-                       switch (_typeof(params.locale)) {
-                               case "boolean":
-                                       if (params.locale) {
-                                               locale = this.table.modules.localize.getLocale();
-                                       }
-                                       break;
-                               case "string":
-                                       locale = params.locale;
-                                       break;
-                       }
-
-                       return String(a).toLowerCase().localeCompare(String(b).toLowerCase(), locale);
-               }
-
-               //fix empty values in position
-               if (alignEmptyValues === "top" && dir === "desc" || alignEmptyValues === "bottom" && dir === "asc") {
-                       emptyAlign *= -1;
-               }
-
-               return emptyAlign;
-       },
-
-       //sort date
-       date: function date(a, b, aRow, bRow, column, dir, params) {
-               if (!params.format) {
-                       params.format = "DD/MM/YYYY";
-               }
-
-               return this.sorters.datetime.call(this, a, b, aRow, bRow, column, dir, params);
-       },
-
-       //sort hh:mm formatted times
-       time: function time(a, b, aRow, bRow, column, dir, params) {
-               if (!params.format) {
-                       params.format = "hh:mm";
-               }
-
-               return this.sorters.datetime.call(this, a, b, aRow, bRow, column, dir, params);
-       },
-
-       //sort datetime
-       datetime: function datetime(a, b, aRow, bRow, column, dir, params) {
-               var format = params.format || "DD/MM/YYYY hh:mm:ss",
-                   alignEmptyValues = params.alignEmptyValues,
-                   emptyAlign = 0;
-
-               if (typeof moment != "undefined") {
-                       a = moment(a, format);
-                       b = moment(b, format);
-
-                       if (!a.isValid()) {
-                               emptyAlign = !b.isValid() ? 0 : -1;
-                       } else if (!b.isValid()) {
-                               emptyAlign = 1;
-                       } else {
-                               //compare valid values
-                               return a - b;
-                       }
-
-                       //fix empty values in position
-                       if (alignEmptyValues === "top" && dir === "desc" || alignEmptyValues === "bottom" && dir === "asc") {
-                               emptyAlign *= -1;
-                       }
-
-                       return emptyAlign;
-               } else {
-                       console.error("Sort Error - 'datetime' sorter is dependant on moment.js");
-               }
-       },
-
-       //sort booleans
-       boolean: function boolean(a, b, aRow, bRow, column, dir, params) {
-               var el1 = a === true || a === "true" || a === "True" || a === 1 ? 1 : 0;
-               var el2 = b === true || b === "true" || b === "True" || b === 1 ? 1 : 0;
-
-               return el1 - el2;
-       },
-
-       //sort if element contains any data
-       array: function array(a, b, aRow, bRow, column, dir, params) {
-               var el1 = 0;
-               var el2 = 0;
-               var type = params.type || "length";
-               var alignEmptyValues = params.alignEmptyValues;
-               var emptyAlign = 0;
-
-               function calc(value) {
-
-                       switch (type) {
-                               case "length":
-                                       return value.length;
-                                       break;
-
-                               case "sum":
-                                       return value.reduce(function (c, d) {
-                                               return c + d;
-                                       });
-                                       break;
-
-                               case "max":
-                                       return Math.max.apply(null, value);
-                                       break;
-
-                               case "min":
-                                       return Math.min.apply(null, value);
-                                       break;
-
-                               case "avg":
-                                       return value.reduce(function (c, d) {
-                                               return c + d;
-                                       }) / value.length;
-                                       break;
-                       }
-               }
-
-               //handle non array values
-               if (!Array.isArray(a)) {
-                       alignEmptyValues = !Array.isArray(b) ? 0 : -1;
-               } else if (!Array.isArray(b)) {
-                       alignEmptyValues = 1;
-               } else {
-
-                       //compare valid values
-                       el1 = a ? calc(a) : 0;
-                       el2 = b ? calc(b) : 0;
-
-                       return el1 - el2;
-               }
-
-               //fix empty values in position
-               if (alignEmptyValues === "top" && dir === "desc" || alignEmptyValues === "bottom" && dir === "asc") {
-                       emptyAlign *= -1;
-               }
-
-               return emptyAlign;
-       },
-
-       //sort if element contains any data
-       exists: function exists(a, b, aRow, bRow, column, dir, params) {
-               var el1 = typeof a == "undefined" ? 0 : 1;
-               var el2 = typeof b == "undefined" ? 0 : 1;
-
-               return el1 - el2;
-       },
-
-       //sort alpha numeric strings
-       alphanum: function alphanum(as, bs, aRow, bRow, column, dir, params) {
-               var a,
-                   b,
-                   a1,
-                   b1,
-                   i = 0,
-                   L,
-                   rx = /(\d+)|(\D+)/g,
-                   rd = /\d/;
-               var alignEmptyValues = params.alignEmptyValues;
-               var emptyAlign = 0;
-
-               //handle empty values
-               if (!as && as !== 0) {
-                       emptyAlign = !bs && bs !== 0 ? 0 : -1;
-               } else if (!bs && bs !== 0) {
-                       emptyAlign = 1;
-               } else {
-
-                       if (isFinite(as) && isFinite(bs)) return as - bs;
-                       a = String(as).toLowerCase();
-                       b = String(bs).toLowerCase();
-                       if (a === b) return 0;
-                       if (!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1;
-                       a = a.match(rx);
-                       b = b.match(rx);
-                       L = a.length > b.length ? b.length : a.length;
-                       while (i < L) {
-                               a1 = a[i];
-                               b1 = b[i++];
-                               if (a1 !== b1) {
-                                       if (isFinite(a1) && isFinite(b1)) {
-                                               if (a1.charAt(0) === "0") a1 = "." + a1;
-                                               if (b1.charAt(0) === "0") b1 = "." + b1;
-                                               return a1 - b1;
-                                       } else return a1 > b1 ? 1 : -1;
-                               }
-                       }
-
-                       return a.length > b.length;
-               }
-
-               //fix empty values in position
-               if (alignEmptyValues === "top" && dir === "desc" || alignEmptyValues === "bottom" && dir === "asc") {
-                       emptyAlign *= -1;
-               }
-
-               return emptyAlign;
-       }
-};
-
-Tabulator.prototype.registerModule("sort", Sort);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/sort.min.js b/app/static/vendors/tabulator/js.old/modules/sort.min.js
deleted file mode 100644 (file)
index 1e9855d..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Sort=function(t){this.table=t,this.sortList=[],this.changed=!1};Sort.prototype.initializeColumn=function(t,e){var r,o,n=this,i=!1;switch(_typeof(t.definition.sorter)){case"string":n.sorters[t.definition.sorter]?i=n.sorters[t.definition.sorter]:console.warn("Sort Error - No such sorter found: ",t.definition.sorter);break;case"function":i=t.definition.sorter}t.modules.sort={sorter:i,dir:"none",params:t.definition.sorterParams||{},startingDir:t.definition.headerSortStartingDir||"asc",tristate:void 0!==t.definition.headerSortTristate?t.definition.headerSortTristate:this.table.options.headerSortTristate},(void 0===t.definition.headerSort?!1!==this.table.options.headerSort:!1!==t.definition.headerSort)&&(r=t.getElement(),r.classList.add("tabulator-sortable"),o=document.createElement("div"),o.classList.add("tabulator-arrow"),e.appendChild(o),r.addEventListener("click",function(e){var r="",o=[],i=!1;if(t.modules.sort){if(t.modules.sort.tristate)r="none"==t.modules.sort.dir?t.modules.sort.startingDir:t.modules.sort.dir==t.modules.sort.startingDir?"asc"==t.modules.sort.dir?"desc":"asc":"none";else switch(t.modules.sort.dir){case"asc":r="desc";break;case"desc":r="asc";break;default:r=t.modules.sort.startingDir}n.table.options.columnHeaderSortMulti&&(e.shiftKey||e.ctrlKey)?(o=n.getSort(),i=o.findIndex(function(e){return e.field===t.getField()}),i>-1?(o[i].dir=r,i!=o.length-1&&(i=o.splice(i,1)[0],"none"!=r&&o.push(i))):"none"!=r&&o.push({column:t,dir:r}),n.setSort(o)):"none"==r?n.clear():n.setSort(t,r),n.table.rowManager.sorterRefresh(!n.sortList.length)}}))},Sort.prototype.hasChanged=function(){var t=this.changed;return this.changed=!1,t},Sort.prototype.getSort=function(){var t=this,e=[];return t.sortList.forEach(function(t){t.column&&e.push({column:t.column.getComponent(),field:t.column.getField(),dir:t.dir})}),e},Sort.prototype.setSort=function(t,e){var r=this,o=[];Array.isArray(t)||(t=[{column:t,dir:e}]),t.forEach(function(t){var e;e=r.table.columnManager.findColumn(t.column),e?(t.column=e,o.push(t),r.changed=!0):console.warn("Sort Warning - Sort field does not exist and is being ignored: ",t.column)}),r.sortList=o,this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.sort&&this.table.modules.persistence.save("sort")},Sort.prototype.clear=function(){this.setSort([])},Sort.prototype.findSorter=function(t){var e,r=this.table.rowManager.activeRows[0],o="string";if(r&&(r=r.getData(),t.getField()))switch(e=t.getFieldValue(r),void 0===e?"undefined":_typeof(e)){case"undefined":o="string";break;case"boolean":o="boolean";break;default:isNaN(e)||""===e?e.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)&&(o="alphanum"):o="number"}return this.sorters[o]},Sort.prototype.sort=function(t){var e=this,r=this.table.options.sortOrderReverse?e.sortList.slice().reverse():e.sortList,o=[];e.table.options.dataSorting&&e.table.options.dataSorting.call(e.table,e.getSort()),e.clearColumnHeaders(),e.table.options.ajaxSorting?r.forEach(function(t,r){e.setColumnHeader(t.column,t.dir)}):(r.forEach(function(t,r){var n=t.column.modules.sort;t.column&&n&&(n.sorter||(n.sorter=e.findSorter(t.column)),t.params="function"==typeof n.params?n.params(t.column.getComponent(),t.dir):n.params,o.push(t)),e.setColumnHeader(t.column,t.dir)}),o.length&&e._sortItems(t,o)),e.table.options.dataSorted&&e.table.options.dataSorted.call(e.table,e.getSort(),e.table.rowManager.getComponents("active"))},Sort.prototype.clearColumnHeaders=function(){this.table.columnManager.getRealColumns().forEach(function(t){t.modules.sort&&(t.modules.sort.dir="none",t.getElement().setAttribute("aria-sort","none"))})},Sort.prototype.setColumnHeader=function(t,e){t.modules.sort.dir=e,t.getElement().setAttribute("aria-sort",e)},Sort.prototype._sortItems=function(t,e){var r=this,o=e.length-1;t.sort(function(t,n){for(var i,s=o;s>=0;s--){var a=e[s];if(0!==(i=r._sortRow(t,n,a.column,a.dir,a.params)))break}return i})},Sort.prototype._sortRow=function(t,e,r,o,n){var i,s,a="asc"==o?t:e,l="asc"==o?e:t;return t=r.getFieldValue(a.getData()),e=r.getFieldValue(l.getData()),t=void 0!==t?t:"",e=void 0!==e?e:"",i=a.getComponent(),s=l.getComponent(),r.modules.sort.sorter.call(this,t,e,i,s,r.getComponent(),o,n)},Sort.prototype.sorters={number:function(t,e,r,o,n,i,s){var a=s.alignEmptyValues,l=s.decimalSeparator||".",u=s.thousandSeparator||",",c=0;if(t=parseFloat(String(t).split(u).join("").split(l).join(".")),e=parseFloat(String(e).split(u).join("").split(l).join(".")),isNaN(t))c=isNaN(e)?0:-1;else{if(!isNaN(e))return t-e;c=1}return("top"===a&&"desc"===i||"bottom"===a&&"asc"===i)&&(c*=-1),c},string:function(t,e,r,o,n,i,s){var a,l=s.alignEmptyValues,u=0;if(t){if(e){switch(_typeof(s.locale)){case"boolean":s.locale&&(a=this.table.modules.localize.getLocale());break;case"string":a=s.locale}return String(t).toLowerCase().localeCompare(String(e).toLowerCase(),a)}u=1}else u=e?-1:0;return("top"===l&&"desc"===i||"bottom"===l&&"asc"===i)&&(u*=-1),u},date:function(t,e,r,o,n,i,s){return s.format||(s.format="DD/MM/YYYY"),this.sorters.datetime.call(this,t,e,r,o,n,i,s)},time:function(t,e,r,o,n,i,s){return s.format||(s.format="hh:mm"),this.sorters.datetime.call(this,t,e,r,o,n,i,s)},datetime:function(t,e,r,o,n,i,s){var a=s.format||"DD/MM/YYYY hh:mm:ss",l=s.alignEmptyValues,u=0;if("undefined"!=typeof moment){if(t=moment(t,a),e=moment(e,a),t.isValid()){if(e.isValid())return t-e;u=1}else u=e.isValid()?-1:0;return("top"===l&&"desc"===i||"bottom"===l&&"asc"===i)&&(u*=-1),u}console.error("Sort Error - 'datetime' sorter is dependant on moment.js")},boolean:function(t,e,r,o,n,i,s){return(!0===t||"true"===t||"True"===t||1===t?1:0)-(!0===e||"true"===e||"True"===e||1===e?1:0)},array:function(t,e,r,o,n,i,s){function a(t){switch(c){case"length":return t.length;case"sum":return t.reduce(function(t,e){return t+e});case"max":return Math.max.apply(null,t);case"min":return Math.min.apply(null,t);case"avg":return t.reduce(function(t,e){return t+e})/t.length}}var l=0,u=0,c=s.type||"length",d=s.alignEmptyValues,m=0;if(Array.isArray(t)){if(Array.isArray(e))return l=t?a(t):0,u=e?a(e):0,l-u;d=1}else d=Array.isArray(e)?-1:0;return("top"===d&&"desc"===i||"bottom"===d&&"asc"===i)&&(m*=-1),m},exists:function(t,e,r,o,n,i,s){return(void 0===t?0:1)-(void 0===e?0:1)},alphanum:function(t,e,r,o,n,i,s){var a,l,u,c,d,m=0,f=/(\d+)|(\D+)/g,p=/\d/,h=s.alignEmptyValues,g=0;if(t||0===t){if(e||0===e){if(isFinite(t)&&isFinite(e))return t-e;if(a=String(t).toLowerCase(),l=String(e).toLowerCase(),a===l)return 0;if(!p.test(a)||!p.test(l))return a>l?1:-1;for(a=a.match(f),l=l.match(f),d=a.length>l.length?l.length:a.length;m<d;)if(u=a[m],c=l[m++],u!==c)return isFinite(u)&&isFinite(c)?("0"===u.charAt(0)&&(u="."+u),"0"===c.charAt(0)&&(c="."+c),u-c):u>c?1:-1;return a.length>l.length}g=1}else g=e||0===e?-1:0;return("top"===h&&"desc"===i||"bottom"===h&&"asc"===i)&&(g*=-1),g}},Tabulator.prototype.registerModule("sort",Sort);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/validate.js b/app/static/vendors/tabulator/js.old/modules/validate.js
deleted file mode 100644 (file)
index e4e6521..0000000
+++ /dev/null
@@ -1,217 +0,0 @@
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-
-var Validate = function Validate(table) {
-       this.table = table;
-};
-
-//validate
-Validate.prototype.initializeColumn = function (column) {
-       var self = this,
-           config = [],
-           validator;
-
-       if (column.definition.validator) {
-
-               if (Array.isArray(column.definition.validator)) {
-                       column.definition.validator.forEach(function (item) {
-                               validator = self._extractValidator(item);
-
-                               if (validator) {
-                                       config.push(validator);
-                               }
-                       });
-               } else {
-                       validator = this._extractValidator(column.definition.validator);
-
-                       if (validator) {
-                               config.push(validator);
-                       }
-               }
-
-               column.modules.validate = config.length ? config : false;
-       }
-};
-
-Validate.prototype._extractValidator = function (value) {
-       var type, params, pos;
-
-       switch (typeof value === "undefined" ? "undefined" : _typeof(value)) {
-               case "string":
-                       pos = value.indexOf(':');
-
-                       if (pos > -1) {
-                               type = value.substring(0, pos);
-                               params = value.substring(pos + 1);
-                       } else {
-                               type = value;
-                       }
-
-                       return this._buildValidator(type, params);
-                       break;
-
-               case "function":
-                       return this._buildValidator(value);
-                       break;
-
-               case "object":
-                       return this._buildValidator(value.type, value.parameters);
-                       break;
-       }
-};
-
-Validate.prototype._buildValidator = function (type, params) {
-
-       var func = typeof type == "function" ? type : this.validators[type];
-
-       if (!func) {
-               console.warn("Validator Setup Error - No matching validator found:", type);
-               return false;
-       } else {
-               return {
-                       type: typeof type == "function" ? "function" : type,
-                       func: func,
-                       params: params
-               };
-       }
-};
-
-Validate.prototype.validate = function (validators, cell, value) {
-       var self = this,
-           valid = [];
-
-       if (validators) {
-               validators.forEach(function (item) {
-                       if (!item.func.call(self, cell, value, item.params)) {
-                               valid.push({
-                                       type: item.type,
-                                       parameters: item.params
-                               });
-                       }
-               });
-       }
-
-       return valid.length ? valid : true;
-};
-
-Validate.prototype.validators = {
-
-       //is integer
-       integer: function integer(cell, value, parameters) {
-               if (value === "" || value === null || typeof value === "undefined") {
-                       return true;
-               }
-               value = Number(value);
-               return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;
-       },
-
-       //is float
-       float: function float(cell, value, parameters) {
-               if (value === "" || value === null || typeof value === "undefined") {
-                       return true;
-               }
-               value = Number(value);
-               return typeof value === 'number' && isFinite(value) && value % 1 !== 0;
-       },
-
-       //must be a number
-       numeric: function numeric(cell, value, parameters) {
-               if (value === "" || value === null || typeof value === "undefined") {
-                       return true;
-               }
-               return !isNaN(value);
-       },
-
-       //must be a string
-       string: function string(cell, value, parameters) {
-               if (value === "" || value === null || typeof value === "undefined") {
-                       return true;
-               }
-               return isNaN(value);
-       },
-
-       //maximum value
-       max: function max(cell, value, parameters) {
-               if (value === "" || value === null || typeof value === "undefined") {
-                       return true;
-               }
-               return parseFloat(value) <= parameters;
-       },
-
-       //minimum value
-       min: function min(cell, value, parameters) {
-               if (value === "" || value === null || typeof value === "undefined") {
-                       return true;
-               }
-               return parseFloat(value) >= parameters;
-       },
-
-       //minimum string length
-       minLength: function minLength(cell, value, parameters) {
-               if (value === "" || value === null || typeof value === "undefined") {
-                       return true;
-               }
-               return String(value).length >= parameters;
-       },
-
-       //maximum string length
-       maxLength: function maxLength(cell, value, parameters) {
-               if (value === "" || value === null || typeof value === "undefined") {
-                       return true;
-               }
-               return String(value).length <= parameters;
-       },
-
-       //in provided value list
-       in: function _in(cell, value, parameters) {
-               if (value === "" || value === null || typeof value === "undefined") {
-                       return true;
-               }
-               if (typeof parameters == "string") {
-                       parameters = parameters.split("|");
-               }
-
-               return value === "" || parameters.indexOf(value) > -1;
-       },
-
-       //must match provided regex
-       regex: function regex(cell, value, parameters) {
-               if (value === "" || value === null || typeof value === "undefined") {
-                       return true;
-               }
-               var reg = new RegExp(parameters);
-
-               return reg.test(value);
-       },
-
-       //value must be unique in this column
-       unique: function unique(cell, value, parameters) {
-               if (value === "" || value === null || typeof value === "undefined") {
-                       return true;
-               }
-               var unique = true;
-
-               var cellData = cell.getData();
-               var column = cell.getColumn()._getSelf();
-
-               this.table.rowManager.rows.forEach(function (row) {
-                       var data = row.getData();
-
-                       if (data !== cellData) {
-                               if (value == column.getFieldValue(data)) {
-                                       unique = false;
-                               }
-                       }
-               });
-
-               return unique;
-       },
-
-       //must have a value
-       required: function required(cell, value, parameters) {
-               return value !== "" && value !== null && typeof value !== "undefined";
-       }
-};
-
-Tabulator.prototype.registerModule("validate", Validate);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/modules/validate.min.js b/app/static/vendors/tabulator/js.old/modules/validate.min.js
deleted file mode 100644 (file)
index 466b853..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Validate=function(t){this.table=t};Validate.prototype.initializeColumn=function(t){var n,i=this,r=[];t.definition.validator&&(Array.isArray(t.definition.validator)?t.definition.validator.forEach(function(t){(n=i._extractValidator(t))&&r.push(n)}):(n=this._extractValidator(t.definition.validator))&&r.push(n),t.modules.validate=!!r.length&&r)},Validate.prototype._extractValidator=function(t){var n,i,r;switch(void 0===t?"undefined":_typeof(t)){case"string":return r=t.indexOf(":"),r>-1?(n=t.substring(0,r),i=t.substring(r+1)):n=t,this._buildValidator(n,i);case"function":return this._buildValidator(t);case"object":return this._buildValidator(t.type,t.parameters)}},Validate.prototype._buildValidator=function(t,n){var i="function"==typeof t?t:this.validators[t];return i?{type:"function"==typeof t?"function":t,func:i,params:n}:(console.warn("Validator Setup Error - No matching validator found:",t),!1)},Validate.prototype.validate=function(t,n,i){var r=this,o=[];return t&&t.forEach(function(t){t.func.call(r,n,i,t.params)||o.push({type:t.type,parameters:t.params})}),!o.length||o},Validate.prototype.validators={integer:function(t,n,i){return""===n||null===n||void 0===n||"number"==typeof(n=Number(n))&&isFinite(n)&&Math.floor(n)===n},float:function(t,n,i){return""===n||null===n||void 0===n||"number"==typeof(n=Number(n))&&isFinite(n)&&n%1!=0},numeric:function(t,n,i){return""===n||null===n||void 0===n||!isNaN(n)},string:function(t,n,i){return""===n||null===n||void 0===n||isNaN(n)},max:function(t,n,i){return""===n||null===n||void 0===n||parseFloat(n)<=i},min:function(t,n,i){return""===n||null===n||void 0===n||parseFloat(n)>=i},minLength:function(t,n,i){return""===n||null===n||void 0===n||String(n).length>=i},maxLength:function(t,n,i){return""===n||null===n||void 0===n||String(n).length<=i},in:function(t,n,i){return""===n||null===n||void 0===n||("string"==typeof i&&(i=i.split("|")),""===n||i.indexOf(n)>-1)},regex:function(t,n,i){return""===n||null===n||void 0===n||new RegExp(i).test(n)},unique:function(t,n,i){if(""===n||null===n||void 0===n)return!0;var r=!0,o=t.getData(),e=t.getColumn()._getSelf();return this.table.rowManager.rows.forEach(function(t){var i=t.getData();i!==o&&n==e.getFieldValue(i)&&(r=!1)}),r},required:function(t,n,i){return""!==n&&null!==n&&void 0!==n}},Tabulator.prototype.registerModule("validate",Validate);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/tabulator.js b/app/static/vendors/tabulator/js.old/tabulator.js
deleted file mode 100644 (file)
index b915007..0000000
+++ /dev/null
@@ -1,24238 +0,0 @@
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-
-;(function (global, factory) {
-       if ((typeof exports === 'undefined' ? 'undefined' : _typeof(exports)) === 'object' && typeof module !== 'undefined') {
-               module.exports = factory();
-       } else if (typeof define === 'function' && define.amd) {
-               define(factory);
-       } else {
-               global.Tabulator = factory();
-       }
-})(this, function () {
-
-       'use strict';
-
-       // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex
-
-
-       if (!Array.prototype.findIndex) {
-
-               Object.defineProperty(Array.prototype, 'findIndex', {
-
-                       value: function value(predicate) {
-
-                               // 1. Let O be ? ToObject(this value).
-
-
-                               if (this == null) {
-
-                                       throw new TypeError('"this" is null or not defined');
-                               }
-
-                               var o = Object(this);
-
-                               // 2. Let len be ? ToLength(? Get(O, "length")).
-
-
-                               var len = o.length >>> 0;
-
-                               // 3. If IsCallable(predicate) is false, throw a TypeError exception.
-
-
-                               if (typeof predicate !== 'function') {
-
-                                       throw new TypeError('predicate must be a function');
-                               }
-
-                               // 4. If thisArg was supplied, let T be thisArg; else let T be undefined.
-
-
-                               var thisArg = arguments[1];
-
-                               // 5. Let k be 0.
-
-
-                               var k = 0;
-
-                               // 6. Repeat, while k < len
-
-
-                               while (k < len) {
-
-                                       // a. Let Pk be ! ToString(k).
-
-
-                                       // b. Let kValue be ? Get(O, Pk).
-
-
-                                       // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).
-
-
-                                       // d. If testResult is true, return k.
-
-
-                                       var kValue = o[k];
-
-                                       if (predicate.call(thisArg, kValue, k, o)) {
-
-                                               return k;
-                                       }
-
-                                       // e. Increase k by 1.
-
-
-                                       k++;
-                               }
-
-                               // 7. Return -1.
-
-
-                               return -1;
-                       }
-
-               });
-       }
-
-       // https://tc39.github.io/ecma262/#sec-array.prototype.find
-
-
-       if (!Array.prototype.find) {
-
-               Object.defineProperty(Array.prototype, 'find', {
-
-                       value: function value(predicate) {
-
-                               // 1. Let O be ? ToObject(this value).
-
-
-                               if (this == null) {
-
-                                       throw new TypeError('"this" is null or not defined');
-                               }
-
-                               var o = Object(this);
-
-                               // 2. Let len be ? ToLength(? Get(O, "length")).
-
-
-                               var len = o.length >>> 0;
-
-                               // 3. If IsCallable(predicate) is false, throw a TypeError exception.
-
-
-                               if (typeof predicate !== 'function') {
-
-                                       throw new TypeError('predicate must be a function');
-                               }
-
-                               // 4. If thisArg was supplied, let T be thisArg; else let T be undefined.
-
-
-                               var thisArg = arguments[1];
-
-                               // 5. Let k be 0.
-
-
-                               var k = 0;
-
-                               // 6. Repeat, while k < len
-
-
-                               while (k < len) {
-
-                                       // a. Let Pk be ! ToString(k).
-
-
-                                       // b. Let kValue be ? Get(O, Pk).
-
-
-                                       // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).
-
-
-                                       // d. If testResult is true, return kValue.
-
-
-                                       var kValue = o[k];
-
-                                       if (predicate.call(thisArg, kValue, k, o)) {
-
-                                               return kValue;
-                                       }
-
-                                       // e. Increase k by 1.
-
-
-                                       k++;
-                               }
-
-                               // 7. Return undefined.
-
-
-                               return undefined;
-                       }
-
-               });
-       }
-
-       var ColumnManager = function ColumnManager(table) {
-
-               this.table = table; //hold parent table
-
-
-               this.blockHozScrollEvent = false;
-
-               this.headersElement = this.createHeadersElement();
-
-               this.element = this.createHeaderElement(); //containing element
-
-
-               this.rowManager = null; //hold row manager object
-
-
-               this.columns = []; // column definition object
-
-
-               this.columnsByIndex = []; //columns by index
-
-
-               this.columnsByField = {}; //columns by field
-
-
-               this.scrollLeft = 0;
-
-               this.element.insertBefore(this.headersElement, this.element.firstChild);
-       };
-
-       ////////////// Setup Functions /////////////////
-
-
-       ColumnManager.prototype.createHeadersElement = function () {
-
-               var el = document.createElement("div");
-
-               el.classList.add("tabulator-headers");
-
-               return el;
-       };
-
-       ColumnManager.prototype.createHeaderElement = function () {
-
-               var el = document.createElement("div");
-
-               el.classList.add("tabulator-header");
-
-               if (!this.table.options.headerVisible) {
-
-                       el.classList.add("tabulator-header-hidden");
-               }
-
-               return el;
-       };
-
-       ColumnManager.prototype.initialize = function () {
-
-               var self = this;
-
-               //scroll body along with header
-
-
-               // self.element.addEventListener("scroll", function(e){
-
-
-               //      if(!self.blockHozScrollEvent){
-
-
-               //              self.table.rowManager.scrollHorizontal(self.element.scrollLeft);
-
-
-               //      }
-
-
-               // });
-
-       };
-
-       //link to row manager
-
-
-       ColumnManager.prototype.setRowManager = function (manager) {
-
-               this.rowManager = manager;
-       };
-
-       //return containing element
-
-
-       ColumnManager.prototype.getElement = function () {
-
-               return this.element;
-       };
-
-       //return header containing element
-
-
-       ColumnManager.prototype.getHeadersElement = function () {
-
-               return this.headersElement;
-       };
-
-       // ColumnManager.prototype.tempScrollBlock = function(){
-
-
-       //      clearTimeout(this.blockHozScrollEvent);
-
-
-       //      this.blockHozScrollEvent = setTimeout(() => {this.blockHozScrollEvent = false;}, 50);
-
-
-       // }
-
-
-       //scroll horizontally to match table body
-
-
-       ColumnManager.prototype.scrollHorizontal = function (left) {
-
-               var hozAdjust = 0,
-                   scrollWidth = this.element.scrollWidth - this.table.element.clientWidth;
-
-               // this.tempScrollBlock();
-
-
-               this.element.scrollLeft = left;
-
-               //adjust for vertical scrollbar moving table when present
-
-
-               if (left > scrollWidth) {
-
-                       hozAdjust = left - scrollWidth;
-
-                       this.element.style.marginLeft = -hozAdjust + "px";
-               } else {
-
-                       this.element.style.marginLeft = 0;
-               }
-
-               //keep frozen columns fixed in position
-
-
-               //this._calcFrozenColumnsPos(hozAdjust + 3);
-
-
-               this.scrollLeft = left;
-
-               if (this.table.modExists("frozenColumns")) {
-
-                       this.table.modules.frozenColumns.scrollHorizontal();
-               }
-       };
-
-       ///////////// Column Setup Functions /////////////
-
-
-       ColumnManager.prototype.generateColumnsFromRowData = function (data) {
-
-               var cols = [],
-                   row,
-                   sorter;
-
-               if (data && data.length) {
-
-                       row = data[0];
-
-                       for (var key in row) {
-
-                               var col = {
-
-                                       field: key,
-
-                                       title: key
-
-                               };
-
-                               var value = row[key];
-
-                               switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
-
-                                       case "undefined":
-
-                                               sorter = "string";
-
-                                               break;
-
-                                       case "boolean":
-
-                                               sorter = "boolean";
-
-                                               break;
-
-                                       case "object":
-
-                                               if (Array.isArray(value)) {
-
-                                                       sorter = "array";
-                                               } else {
-
-                                                       sorter = "string";
-                                               }
-
-                                               break;
-
-                                       default:
-
-                                               if (!isNaN(value) && value !== "") {
-
-                                                       sorter = "number";
-                                               } else {
-
-                                                       if (value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)) {
-
-                                                               sorter = "alphanum";
-                                                       } else {
-
-                                                               sorter = "string";
-                                                       }
-                                               }
-
-                                               break;
-
-                               }
-
-                               col.sorter = sorter;
-
-                               cols.push(col);
-                       }
-
-                       this.table.options.columns = cols;
-
-                       this.setColumns(this.table.options.columns);
-               }
-       };
-
-       ColumnManager.prototype.setColumns = function (cols, row) {
-
-               var self = this;
-
-               while (self.headersElement.firstChild) {
-                       self.headersElement.removeChild(self.headersElement.firstChild);
-               }self.columns = [];
-
-               self.columnsByIndex = [];
-
-               self.columnsByField = {};
-
-               //reset frozen columns
-
-
-               if (self.table.modExists("frozenColumns")) {
-
-                       self.table.modules.frozenColumns.reset();
-               }
-
-               cols.forEach(function (def, i) {
-
-                       self._addColumn(def);
-               });
-
-               self._reIndexColumns();
-
-               if (self.table.options.responsiveLayout && self.table.modExists("responsiveLayout", true)) {
-
-                       self.table.modules.responsiveLayout.initialize();
-               }
-
-               self.redraw(true);
-       };
-
-       ColumnManager.prototype._addColumn = function (definition, before, nextToColumn) {
-
-               var column = new Column(definition, this),
-                   colEl = column.getElement(),
-                   index = nextToColumn ? this.findColumnIndex(nextToColumn) : nextToColumn;
-
-               if (nextToColumn && index > -1) {
-
-                       var parentIndex = this.columns.indexOf(nextToColumn.getTopColumn());
-
-                       var nextEl = nextToColumn.getElement();
-
-                       if (before) {
-
-                               this.columns.splice(parentIndex, 0, column);
-
-                               nextEl.parentNode.insertBefore(colEl, nextEl);
-                       } else {
-
-                               this.columns.splice(parentIndex + 1, 0, column);
-
-                               nextEl.parentNode.insertBefore(colEl, nextEl.nextSibling);
-                       }
-               } else {
-
-                       if (before) {
-
-                               this.columns.unshift(column);
-
-                               this.headersElement.insertBefore(column.getElement(), this.headersElement.firstChild);
-                       } else {
-
-                               this.columns.push(column);
-
-                               this.headersElement.appendChild(column.getElement());
-                       }
-
-                       column.columnRendered();
-               }
-
-               return column;
-       };
-
-       ColumnManager.prototype.registerColumnField = function (col) {
-
-               if (col.definition.field) {
-
-                       this.columnsByField[col.definition.field] = col;
-               }
-       };
-
-       ColumnManager.prototype.registerColumnPosition = function (col) {
-
-               this.columnsByIndex.push(col);
-       };
-
-       ColumnManager.prototype._reIndexColumns = function () {
-
-               this.columnsByIndex = [];
-
-               this.columns.forEach(function (column) {
-
-                       column.reRegisterPosition();
-               });
-       };
-
-       //ensure column headers take up the correct amount of space in column groups
-
-
-       ColumnManager.prototype._verticalAlignHeaders = function () {
-
-               var self = this,
-                   minHeight = 0;
-
-               self.columns.forEach(function (column) {
-
-                       var height;
-
-                       column.clearVerticalAlign();
-
-                       height = column.getHeight();
-
-                       if (height > minHeight) {
-
-                               minHeight = height;
-                       }
-               });
-
-               self.columns.forEach(function (column) {
-
-                       column.verticalAlign(self.table.options.columnHeaderVertAlign, minHeight);
-               });
-
-               self.rowManager.adjustTableSize();
-       };
-
-       //////////////// Column Details /////////////////
-
-
-       ColumnManager.prototype.findColumn = function (subject) {
-
-               var self = this;
-
-               if ((typeof subject === 'undefined' ? 'undefined' : _typeof(subject)) == "object") {
-
-                       if (subject instanceof Column) {
-
-                               //subject is column element
-
-
-                               return subject;
-                       } else if (subject instanceof ColumnComponent) {
-
-                               //subject is public column component
-
-
-                               return subject._getSelf() || false;
-                       } else if (typeof HTMLElement !== "undefined" && subject instanceof HTMLElement) {
-
-                               //subject is a HTML element of the column header
-
-
-                               var match = self.columns.find(function (column) {
-
-                                       return column.element === subject;
-                               });
-
-                               return match || false;
-                       }
-               } else {
-
-                       //subject should be treated as the field name of the column
-
-
-                       return this.columnsByField[subject] || false;
-               }
-
-               //catch all for any other type of input
-
-
-               return false;
-       };
-
-       ColumnManager.prototype.getColumnByField = function (field) {
-
-               return this.columnsByField[field];
-       };
-
-       ColumnManager.prototype.getColumnsByFieldRoot = function (root) {
-               var _this = this;
-
-               var matches = [];
-
-               Object.keys(this.columnsByField).forEach(function (field) {
-
-                       var fieldRoot = field.split(".")[0];
-
-                       if (fieldRoot === root) {
-
-                               matches.push(_this.columnsByField[field]);
-                       }
-               });
-
-               return matches;
-       };
-
-       ColumnManager.prototype.getColumnByIndex = function (index) {
-
-               return this.columnsByIndex[index];
-       };
-
-       ColumnManager.prototype.getFirstVisibileColumn = function (index) {
-
-               var index = this.columnsByIndex.findIndex(function (col) {
-
-                       return col.visible;
-               });
-
-               return index > -1 ? this.columnsByIndex[index] : false;
-       };
-
-       ColumnManager.prototype.getColumns = function () {
-
-               return this.columns;
-       };
-
-       ColumnManager.prototype.findColumnIndex = function (column) {
-
-               return this.columnsByIndex.findIndex(function (col) {
-
-                       return column === col;
-               });
-       };
-
-       //return all columns that are not groups
-
-
-       ColumnManager.prototype.getRealColumns = function () {
-
-               return this.columnsByIndex;
-       };
-
-       //travers across columns and call action
-
-
-       ColumnManager.prototype.traverse = function (callback) {
-
-               var self = this;
-
-               self.columnsByIndex.forEach(function (column, i) {
-
-                       callback(column, i);
-               });
-       };
-
-       //get defintions of actual columns
-
-
-       ColumnManager.prototype.getDefinitions = function (active) {
-
-               var self = this,
-                   output = [];
-
-               self.columnsByIndex.forEach(function (column) {
-
-                       if (!active || active && column.visible) {
-
-                               output.push(column.getDefinition());
-                       }
-               });
-
-               return output;
-       };
-
-       //get full nested definition tree
-
-
-       ColumnManager.prototype.getDefinitionTree = function () {
-
-               var self = this,
-                   output = [];
-
-               self.columns.forEach(function (column) {
-
-                       output.push(column.getDefinition(true));
-               });
-
-               return output;
-       };
-
-       ColumnManager.prototype.getComponents = function (structured) {
-
-               var self = this,
-                   output = [],
-                   columns = structured ? self.columns : self.columnsByIndex;
-
-               columns.forEach(function (column) {
-
-                       output.push(column.getComponent());
-               });
-
-               return output;
-       };
-
-       ColumnManager.prototype.getWidth = function () {
-
-               var width = 0;
-
-               this.columnsByIndex.forEach(function (column) {
-
-                       if (column.visible) {
-
-                               width += column.getWidth();
-                       }
-               });
-
-               return width;
-       };
-
-       ColumnManager.prototype.moveColumn = function (from, to, after) {
-
-               this.moveColumnActual(from, to, after);
-
-               if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-                       this.table.modules.responsiveLayout.initialize();
-               }
-
-               if (this.table.modExists("columnCalcs")) {
-
-                       this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
-               }
-
-               to.element.parentNode.insertBefore(from.element, to.element);
-
-               if (after) {
-
-                       to.element.parentNode.insertBefore(to.element, from.element);
-               }
-
-               this._verticalAlignHeaders();
-
-               this.table.rowManager.reinitialize();
-       };
-
-       ColumnManager.prototype.moveColumnActual = function (from, to, after) {
-
-               if (from.parent.isGroup) {
-
-                       this._moveColumnInArray(from.parent.columns, from, to, after);
-               } else {
-
-                       this._moveColumnInArray(this.columns, from, to, after);
-               }
-
-               this._moveColumnInArray(this.columnsByIndex, from, to, after, true);
-
-               if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-                       this.table.modules.responsiveLayout.initialize();
-               }
-
-               if (this.table.options.columnMoved) {
-
-                       this.table.options.columnMoved.call(this.table, from.getComponent(), this.table.columnManager.getComponents());
-               }
-
-               if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.columns) {
-
-                       this.table.modules.persistence.save("columns");
-               }
-       };
-
-       ColumnManager.prototype._moveColumnInArray = function (columns, from, to, after, updateRows) {
-
-               var fromIndex = columns.indexOf(from),
-                   toIndex;
-
-               if (fromIndex > -1) {
-
-                       columns.splice(fromIndex, 1);
-
-                       toIndex = columns.indexOf(to);
-
-                       if (toIndex > -1) {
-
-                               if (after) {
-
-                                       toIndex = toIndex + 1;
-                               }
-                       } else {
-
-                               toIndex = fromIndex;
-                       }
-
-                       columns.splice(toIndex, 0, from);
-
-                       if (updateRows) {
-
-                               this.table.rowManager.rows.forEach(function (row) {
-
-                                       if (row.cells.length) {
-
-                                               var cell = row.cells.splice(fromIndex, 1)[0];
-
-                                               row.cells.splice(toIndex, 0, cell);
-                                       }
-                               });
-                       }
-               }
-       };
-
-       ColumnManager.prototype.scrollToColumn = function (column, position, ifVisible) {
-               var _this2 = this;
-
-               var left = 0,
-                   offset = 0,
-                   adjust = 0,
-                   colEl = column.getElement();
-
-               return new Promise(function (resolve, reject) {
-
-                       if (typeof position === "undefined") {
-
-                               position = _this2.table.options.scrollToColumnPosition;
-                       }
-
-                       if (typeof ifVisible === "undefined") {
-
-                               ifVisible = _this2.table.options.scrollToColumnIfVisible;
-                       }
-
-                       if (column.visible) {
-
-                               //align to correct position
-
-
-                               switch (position) {
-
-                                       case "middle":
-
-                                       case "center":
-
-                                               adjust = -_this2.element.clientWidth / 2;
-
-                                               break;
-
-                                       case "right":
-
-                                               adjust = colEl.clientWidth - _this2.headersElement.clientWidth;
-
-                                               break;
-
-                               }
-
-                               //check column visibility
-
-
-                               if (!ifVisible) {
-
-                                       offset = colEl.offsetLeft;
-
-                                       if (offset > 0 && offset + colEl.offsetWidth < _this2.element.clientWidth) {
-
-                                               return false;
-                                       }
-                               }
-
-                               //calculate scroll position
-
-
-                               left = colEl.offsetLeft + _this2.element.scrollLeft + adjust;
-
-                               left = Math.max(Math.min(left, _this2.table.rowManager.element.scrollWidth - _this2.table.rowManager.element.clientWidth), 0);
-
-                               _this2.table.rowManager.scrollHorizontal(left);
-
-                               _this2.scrollHorizontal(left);
-
-                               resolve();
-                       } else {
-
-                               console.warn("Scroll Error - Column not visible");
-
-                               reject("Scroll Error - Column not visible");
-                       }
-               });
-       };
-
-       //////////////// Cell Management /////////////////
-
-
-       ColumnManager.prototype.generateCells = function (row) {
-
-               var self = this;
-
-               var cells = [];
-
-               self.columnsByIndex.forEach(function (column) {
-
-                       cells.push(column.generateCell(row));
-               });
-
-               return cells;
-       };
-
-       //////////////// Column Management /////////////////
-
-
-       ColumnManager.prototype.getFlexBaseWidth = function () {
-
-               var self = this,
-                   totalWidth = self.table.element.clientWidth,
-                   //table element width
-
-
-               fixedWidth = 0;
-
-               //adjust for vertical scrollbar if present
-
-
-               if (self.rowManager.element.scrollHeight > self.rowManager.element.clientHeight) {
-
-                       totalWidth -= self.rowManager.element.offsetWidth - self.rowManager.element.clientWidth;
-               }
-
-               this.columnsByIndex.forEach(function (column) {
-
-                       var width, minWidth, colWidth;
-
-                       if (column.visible) {
-
-                               width = column.definition.width || 0;
-
-                               minWidth = typeof column.minWidth == "undefined" ? self.table.options.columnMinWidth : parseInt(column.minWidth);
-
-                               if (typeof width == "string") {
-
-                                       if (width.indexOf("%") > -1) {
-
-                                               colWidth = totalWidth / 100 * parseInt(width);
-                                       } else {
-
-                                               colWidth = parseInt(width);
-                                       }
-                               } else {
-
-                                       colWidth = width;
-                               }
-
-                               fixedWidth += colWidth > minWidth ? colWidth : minWidth;
-                       }
-               });
-
-               return fixedWidth;
-       };
-
-       ColumnManager.prototype.addColumn = function (definition, before, nextToColumn) {
-               var _this3 = this;
-
-               return new Promise(function (resolve, reject) {
-
-                       var column = _this3._addColumn(definition, before, nextToColumn);
-
-                       _this3._reIndexColumns();
-
-                       if (_this3.table.options.responsiveLayout && _this3.table.modExists("responsiveLayout", true)) {
-
-                               _this3.table.modules.responsiveLayout.initialize();
-                       }
-
-                       if (_this3.table.modExists("columnCalcs")) {
-
-                               _this3.table.modules.columnCalcs.recalc(_this3.table.rowManager.activeRows);
-                       }
-
-                       _this3.redraw();
-
-                       if (_this3.table.modules.layout.getMode() != "fitColumns") {
-
-                               column.reinitializeWidth();
-                       }
-
-                       _this3._verticalAlignHeaders();
-
-                       _this3.table.rowManager.reinitialize();
-
-                       resolve(column);
-               });
-       };
-
-       //remove column from system
-
-
-       ColumnManager.prototype.deregisterColumn = function (column) {
-
-               var field = column.getField(),
-                   index;
-
-               //remove from field list
-
-
-               if (field) {
-
-                       delete this.columnsByField[field];
-               }
-
-               //remove from index list
-
-
-               index = this.columnsByIndex.indexOf(column);
-
-               if (index > -1) {
-
-                       this.columnsByIndex.splice(index, 1);
-               }
-
-               //remove from column list
-
-
-               index = this.columns.indexOf(column);
-
-               if (index > -1) {
-
-                       this.columns.splice(index, 1);
-               }
-
-               if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-                       this.table.modules.responsiveLayout.initialize();
-               }
-
-               this.redraw();
-       };
-
-       //redraw columns
-
-
-       ColumnManager.prototype.redraw = function (force) {
-
-               if (force) {
-
-                       if (Tabulator.prototype.helpers.elVisible(this.element)) {
-
-                               this._verticalAlignHeaders();
-                       }
-
-                       this.table.rowManager.resetScroll();
-
-                       this.table.rowManager.reinitialize();
-               }
-
-               if (["fitColumns", "fitDataStretch"].indexOf(this.table.modules.layout.getMode()) > -1) {
-
-                       this.table.modules.layout.layout();
-               } else {
-
-                       if (force) {
-
-                               this.table.modules.layout.layout();
-                       } else {
-
-                               if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-                                       this.table.modules.responsiveLayout.update();
-                               }
-                       }
-               }
-
-               if (this.table.modExists("frozenColumns")) {
-
-                       this.table.modules.frozenColumns.layout();
-               }
-
-               if (this.table.modExists("columnCalcs")) {
-
-                       this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
-               }
-
-               if (force) {
-
-                       if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.columns) {
-
-                               this.table.modules.persistence.save("columns");
-                       }
-
-                       if (this.table.modExists("columnCalcs")) {
-
-                               this.table.modules.columnCalcs.redraw();
-                       }
-               }
-
-               this.table.footerManager.redraw();
-       };
-
-       //public column object
-
-       var ColumnComponent = function ColumnComponent(column) {
-
-               this._column = column;
-
-               this.type = "ColumnComponent";
-       };
-
-       ColumnComponent.prototype.getElement = function () {
-
-               return this._column.getElement();
-       };
-
-       ColumnComponent.prototype.getDefinition = function () {
-
-               return this._column.getDefinition();
-       };
-
-       ColumnComponent.prototype.getField = function () {
-
-               return this._column.getField();
-       };
-
-       ColumnComponent.prototype.getCells = function () {
-
-               var cells = [];
-
-               this._column.cells.forEach(function (cell) {
-
-                       cells.push(cell.getComponent());
-               });
-
-               return cells;
-       };
-
-       ColumnComponent.prototype.getVisibility = function () {
-
-               return this._column.visible;
-       };
-
-       ColumnComponent.prototype.show = function () {
-
-               if (this._column.isGroup) {
-
-                       this._column.columns.forEach(function (column) {
-
-                               column.show();
-                       });
-               } else {
-
-                       this._column.show();
-               }
-       };
-
-       ColumnComponent.prototype.hide = function () {
-
-               if (this._column.isGroup) {
-
-                       this._column.columns.forEach(function (column) {
-
-                               column.hide();
-                       });
-               } else {
-
-                       this._column.hide();
-               }
-       };
-
-       ColumnComponent.prototype.toggle = function () {
-
-               if (this._column.visible) {
-
-                       this.hide();
-               } else {
-
-                       this.show();
-               }
-       };
-
-       ColumnComponent.prototype.delete = function () {
-
-               return this._column.delete();
-       };
-
-       ColumnComponent.prototype.getSubColumns = function () {
-
-               var output = [];
-
-               if (this._column.columns.length) {
-
-                       this._column.columns.forEach(function (column) {
-
-                               output.push(column.getComponent());
-                       });
-               }
-
-               return output;
-       };
-
-       ColumnComponent.prototype.getParentColumn = function () {
-
-               return this._column.parent instanceof Column ? this._column.parent.getComponent() : false;
-       };
-
-       ColumnComponent.prototype._getSelf = function () {
-
-               return this._column;
-       };
-
-       ColumnComponent.prototype.scrollTo = function () {
-
-               return this._column.table.columnManager.scrollToColumn(this._column);
-       };
-
-       ColumnComponent.prototype.getTable = function () {
-
-               return this._column.table;
-       };
-
-       ColumnComponent.prototype.headerFilterFocus = function () {
-
-               if (this._column.table.modExists("filter", true)) {
-
-                       this._column.table.modules.filter.setHeaderFilterFocus(this._column);
-               }
-       };
-
-       ColumnComponent.prototype.reloadHeaderFilter = function () {
-
-               if (this._column.table.modExists("filter", true)) {
-
-                       this._column.table.modules.filter.reloadHeaderFilter(this._column);
-               }
-       };
-
-       ColumnComponent.prototype.getHeaderFilterValue = function () {
-
-               if (this._column.table.modExists("filter", true)) {
-
-                       return this._column.table.modules.filter.getHeaderFilterValue(this._column);
-               }
-       };
-
-       ColumnComponent.prototype.setHeaderFilterValue = function (value) {
-
-               if (this._column.table.modExists("filter", true)) {
-
-                       this._column.table.modules.filter.setHeaderFilterValue(this._column, value);
-               }
-       };
-
-       ColumnComponent.prototype.move = function (to, after) {
-
-               var toColumn = this._column.table.columnManager.findColumn(to);
-
-               if (toColumn) {
-
-                       this._column.table.columnManager.moveColumn(this._column, toColumn, after);
-               } else {
-
-                       console.warn("Move Error - No matching column found:", toColumn);
-               }
-       };
-
-       ColumnComponent.prototype.getNextColumn = function () {
-
-               var nextCol = this._column.nextColumn();
-
-               return nextCol ? nextCol.getComponent() : false;
-       };
-
-       ColumnComponent.prototype.getPrevColumn = function () {
-
-               var prevCol = this._column.prevColumn();
-
-               return prevCol ? prevCol.getComponent() : false;
-       };
-
-       ColumnComponent.prototype.updateDefinition = function (updates) {
-
-               return this._column.updateDefinition(updates);
-       };
-
-       var Column = function Column(def, parent) {
-
-               var self = this;
-
-               this.table = parent.table;
-
-               this.definition = def; //column definition
-
-               this.parent = parent; //hold parent object
-
-               this.type = "column"; //type of element
-
-               this.columns = []; //child columns
-
-               this.cells = []; //cells bound to this column
-
-               this.element = this.createElement(); //column header element
-
-               this.contentElement = false;
-
-               this.titleElement = false;
-
-               this.groupElement = this.createGroupElement(); //column group holder element
-
-               this.isGroup = false;
-
-               this.tooltip = false; //hold column tooltip
-
-               this.hozAlign = ""; //horizontal text alignment
-
-               this.vertAlign = ""; //vert text alignment
-
-
-               //multi dimensional filed handling
-
-               this.field = "";
-
-               this.fieldStructure = "";
-
-               this.getFieldValue = "";
-
-               this.setFieldValue = "";
-
-               this.titleFormatterRendered = false;
-
-               this.setField(this.definition.field);
-
-               if (this.table.options.invalidOptionWarnings) {
-
-                       this.checkDefinition();
-               }
-
-               this.modules = {}; //hold module variables;
-
-
-               this.cellEvents = {
-
-                       cellClick: false,
-
-                       cellDblClick: false,
-
-                       cellContext: false,
-
-                       cellTap: false,
-
-                       cellDblTap: false,
-
-                       cellTapHold: false,
-
-                       cellMouseEnter: false,
-
-                       cellMouseLeave: false,
-
-                       cellMouseOver: false,
-
-                       cellMouseOut: false,
-
-                       cellMouseMove: false
-
-               };
-
-               this.width = null; //column width
-
-               this.widthStyled = ""; //column width prestyled to improve render efficiency
-
-               this.minWidth = null; //column minimum width
-
-               this.minWidthStyled = ""; //column minimum prestyled to improve render efficiency
-
-               this.widthFixed = false; //user has specified a width for this column
-
-
-               this.visible = true; //default visible state
-
-
-               this._mapDepricatedFunctionality();
-
-               //initialize column
-
-               if (def.columns) {
-
-                       this.isGroup = true;
-
-                       def.columns.forEach(function (def, i) {
-
-                               var newCol = new Column(def, self);
-
-                               self.attachColumn(newCol);
-                       });
-
-                       self.checkColumnVisibility();
-               } else {
-
-                       parent.registerColumnField(this);
-               }
-
-               if (def.rowHandle && this.table.options.movableRows !== false && this.table.modExists("moveRow")) {
-
-                       this.table.modules.moveRow.setHandle(true);
-               }
-
-               this._buildHeader();
-
-               this.bindModuleColumns();
-       };
-
-       Column.prototype.createElement = function () {
-
-               var el = document.createElement("div");
-
-               el.classList.add("tabulator-col");
-
-               el.setAttribute("role", "columnheader");
-
-               el.setAttribute("aria-sort", "none");
-
-               return el;
-       };
-
-       Column.prototype.createGroupElement = function () {
-
-               var el = document.createElement("div");
-
-               el.classList.add("tabulator-col-group-cols");
-
-               return el;
-       };
-
-       Column.prototype.checkDefinition = function () {
-               var _this4 = this;
-
-               Object.keys(this.definition).forEach(function (key) {
-
-                       if (_this4.defaultOptionList.indexOf(key) === -1) {
-
-                               console.warn("Invalid column definition option in '" + (_this4.field || _this4.definition.title) + "' column:", key);
-                       }
-               });
-       };
-
-       Column.prototype.setField = function (field) {
-
-               this.field = field;
-
-               this.fieldStructure = field ? this.table.options.nestedFieldSeparator ? field.split(this.table.options.nestedFieldSeparator) : [field] : [];
-
-               this.getFieldValue = this.fieldStructure.length > 1 ? this._getNestedData : this._getFlatData;
-
-               this.setFieldValue = this.fieldStructure.length > 1 ? this._setNestedData : this._setFlatData;
-       };
-
-       //register column position with column manager
-
-       Column.prototype.registerColumnPosition = function (column) {
-
-               this.parent.registerColumnPosition(column);
-       };
-
-       //register column position with column manager
-
-       Column.prototype.registerColumnField = function (column) {
-
-               this.parent.registerColumnField(column);
-       };
-
-       //trigger position registration
-
-       Column.prototype.reRegisterPosition = function () {
-
-               if (this.isGroup) {
-
-                       this.columns.forEach(function (column) {
-
-                               column.reRegisterPosition();
-                       });
-               } else {
-
-                       this.registerColumnPosition(this);
-               }
-       };
-
-       Column.prototype._mapDepricatedFunctionality = function () {
-
-               if (typeof this.definition.hideInHtml !== "undefined") {
-
-                       this.definition.htmlOutput = !this.definition.hideInHtml;
-
-                       console.warn("hideInHtml column definition property is deprecated, you should now use htmlOutput");
-               }
-
-               if (typeof this.definition.align !== "undefined") {
-
-                       this.definition.hozAlign = this.definition.align;
-
-                       console.warn("align column definition property is deprecated, you should now use hozAlign");
-               }
-       };
-
-       Column.prototype.setTooltip = function () {
-
-               var self = this,
-                   def = self.definition;
-
-               //set header tooltips
-
-               var tooltip = def.headerTooltip || def.tooltip === false ? def.headerTooltip : self.table.options.tooltipsHeader;
-
-               if (tooltip) {
-
-                       if (tooltip === true) {
-
-                               if (def.field) {
-
-                                       self.table.modules.localize.bind("columns|" + def.field, function (value) {
-
-                                               self.element.setAttribute("title", value || def.title);
-                                       });
-                               } else {
-
-                                       self.element.setAttribute("title", def.title);
-                               }
-                       } else {
-
-                               if (typeof tooltip == "function") {
-
-                                       tooltip = tooltip(self.getComponent());
-
-                                       if (tooltip === false) {
-
-                                               tooltip = "";
-                                       }
-                               }
-
-                               self.element.setAttribute("title", tooltip);
-                       }
-               } else {
-
-                       self.element.setAttribute("title", "");
-               }
-       };
-
-       //build header element
-
-       Column.prototype._buildHeader = function () {
-
-               var self = this,
-                   def = self.definition;
-
-               while (self.element.firstChild) {
-                       self.element.removeChild(self.element.firstChild);
-               }if (def.headerVertical) {
-
-                       self.element.classList.add("tabulator-col-vertical");
-
-                       if (def.headerVertical === "flip") {
-
-                               self.element.classList.add("tabulator-col-vertical-flip");
-                       }
-               }
-
-               self.contentElement = self._bindEvents();
-
-               self.contentElement = self._buildColumnHeaderContent();
-
-               self.element.appendChild(self.contentElement);
-
-               if (self.isGroup) {
-
-                       self._buildGroupHeader();
-               } else {
-
-                       self._buildColumnHeader();
-               }
-
-               self.setTooltip();
-
-               //set resizable handles
-
-               if (self.table.options.resizableColumns && self.table.modExists("resizeColumns")) {
-
-                       self.table.modules.resizeColumns.initializeColumn("header", self, self.element);
-               }
-
-               //set resizable handles
-
-               if (def.headerFilter && self.table.modExists("filter") && self.table.modExists("edit")) {
-
-                       if (typeof def.headerFilterPlaceholder !== "undefined" && def.field) {
-
-                               self.table.modules.localize.setHeaderFilterColumnPlaceholder(def.field, def.headerFilterPlaceholder);
-                       }
-
-                       self.table.modules.filter.initializeColumn(self);
-               }
-
-               //set resizable handles
-
-               if (self.table.modExists("frozenColumns")) {
-
-                       self.table.modules.frozenColumns.initializeColumn(self);
-               }
-
-               //set movable column
-
-               if (self.table.options.movableColumns && !self.isGroup && self.table.modExists("moveColumn")) {
-
-                       self.table.modules.moveColumn.initializeColumn(self);
-               }
-
-               //set calcs column
-
-               if ((def.topCalc || def.bottomCalc) && self.table.modExists("columnCalcs")) {
-
-                       self.table.modules.columnCalcs.initializeColumn(self);
-               }
-
-               //handle persistence
-
-               if (self.table.modExists("persistence") && self.table.modules.persistence.config.columns) {
-
-                       self.table.modules.persistence.initializeColumn(self);
-               }
-
-               //update header tooltip on mouse enter
-
-               self.element.addEventListener("mouseenter", function (e) {
-
-                       self.setTooltip();
-               });
-       };
-
-       Column.prototype._bindEvents = function () {
-
-               var self = this,
-                   def = self.definition,
-                   dblTap,
-                   tapHold,
-                   tap;
-
-               //setup header click event bindings
-
-               if (typeof def.headerClick == "function") {
-
-                       self.element.addEventListener("click", function (e) {
-                               def.headerClick(e, self.getComponent());
-                       });
-               }
-
-               if (typeof def.headerDblClick == "function") {
-
-                       self.element.addEventListener("dblclick", function (e) {
-                               def.headerDblClick(e, self.getComponent());
-                       });
-               }
-
-               if (typeof def.headerContext == "function") {
-
-                       self.element.addEventListener("contextmenu", function (e) {
-                               def.headerContext(e, self.getComponent());
-                       });
-               }
-
-               //setup header tap event bindings
-
-               if (typeof def.headerTap == "function") {
-
-                       tap = false;
-
-                       self.element.addEventListener("touchstart", function (e) {
-
-                               tap = true;
-                       }, { passive: true });
-
-                       self.element.addEventListener("touchend", function (e) {
-
-                               if (tap) {
-
-                                       def.headerTap(e, self.getComponent());
-                               }
-
-                               tap = false;
-                       });
-               }
-
-               if (typeof def.headerDblTap == "function") {
-
-                       dblTap = null;
-
-                       self.element.addEventListener("touchend", function (e) {
-
-                               if (dblTap) {
-
-                                       clearTimeout(dblTap);
-
-                                       dblTap = null;
-
-                                       def.headerDblTap(e, self.getComponent());
-                               } else {
-
-                                       dblTap = setTimeout(function () {
-
-                                               clearTimeout(dblTap);
-
-                                               dblTap = null;
-                                       }, 300);
-                               }
-                       });
-               }
-
-               if (typeof def.headerTapHold == "function") {
-
-                       tapHold = null;
-
-                       self.element.addEventListener("touchstart", function (e) {
-
-                               clearTimeout(tapHold);
-
-                               tapHold = setTimeout(function () {
-
-                                       clearTimeout(tapHold);
-
-                                       tapHold = null;
-
-                                       tap = false;
-
-                                       def.headerTapHold(e, self.getComponent());
-                               }, 1000);
-                       }, { passive: true });
-
-                       self.element.addEventListener("touchend", function (e) {
-
-                               clearTimeout(tapHold);
-
-                               tapHold = null;
-                       });
-               }
-
-               //store column cell click event bindings
-
-               if (typeof def.cellClick == "function") {
-
-                       self.cellEvents.cellClick = def.cellClick;
-               }
-
-               if (typeof def.cellDblClick == "function") {
-
-                       self.cellEvents.cellDblClick = def.cellDblClick;
-               }
-
-               if (typeof def.cellContext == "function") {
-
-                       self.cellEvents.cellContext = def.cellContext;
-               }
-
-               //store column mouse event bindings
-
-               if (typeof def.cellMouseEnter == "function") {
-
-                       self.cellEvents.cellMouseEnter = def.cellMouseEnter;
-               }
-
-               if (typeof def.cellMouseLeave == "function") {
-
-                       self.cellEvents.cellMouseLeave = def.cellMouseLeave;
-               }
-
-               if (typeof def.cellMouseOver == "function") {
-
-                       self.cellEvents.cellMouseOver = def.cellMouseOver;
-               }
-
-               if (typeof def.cellMouseOut == "function") {
-
-                       self.cellEvents.cellMouseOut = def.cellMouseOut;
-               }
-
-               if (typeof def.cellMouseMove == "function") {
-
-                       self.cellEvents.cellMouseMove = def.cellMouseMove;
-               }
-
-               //setup column cell tap event bindings
-
-               if (typeof def.cellTap == "function") {
-
-                       self.cellEvents.cellTap = def.cellTap;
-               }
-
-               if (typeof def.cellDblTap == "function") {
-
-                       self.cellEvents.cellDblTap = def.cellDblTap;
-               }
-
-               if (typeof def.cellTapHold == "function") {
-
-                       self.cellEvents.cellTapHold = def.cellTapHold;
-               }
-
-               //setup column cell edit callbacks
-
-               if (typeof def.cellEdited == "function") {
-
-                       self.cellEvents.cellEdited = def.cellEdited;
-               }
-
-               if (typeof def.cellEditing == "function") {
-
-                       self.cellEvents.cellEditing = def.cellEditing;
-               }
-
-               if (typeof def.cellEditCancelled == "function") {
-
-                       self.cellEvents.cellEditCancelled = def.cellEditCancelled;
-               }
-       };
-
-       //build header element for header
-
-       Column.prototype._buildColumnHeader = function () {
-
-               var self = this,
-                   def = self.definition,
-                   table = self.table,
-                   sortable;
-
-               //set column sorter
-
-               if (table.modExists("sort")) {
-
-                       table.modules.sort.initializeColumn(self, self.contentElement);
-               }
-
-               //set column header context menu
-
-               if ((def.headerContextMenu || def.headerMenu) && table.modExists("menu")) {
-
-                       table.modules.menu.initializeColumnHeader(self);
-               }
-
-               //set column formatter
-
-               if (table.modExists("format")) {
-
-                       table.modules.format.initializeColumn(self);
-               }
-
-               //set column editor
-
-               if (typeof def.editor != "undefined" && table.modExists("edit")) {
-
-                       table.modules.edit.initializeColumn(self);
-               }
-
-               //set colum validator
-
-               if (typeof def.validator != "undefined" && table.modExists("validate")) {
-
-                       table.modules.validate.initializeColumn(self);
-               }
-
-               //set column mutator
-
-               if (table.modExists("mutator")) {
-
-                       table.modules.mutator.initializeColumn(self);
-               }
-
-               //set column accessor
-
-               if (table.modExists("accessor")) {
-
-                       table.modules.accessor.initializeColumn(self);
-               }
-
-               //set respoviveLayout
-
-               if (_typeof(table.options.responsiveLayout) && table.modExists("responsiveLayout")) {
-
-                       table.modules.responsiveLayout.initializeColumn(self);
-               }
-
-               //set column visibility
-
-               if (typeof def.visible != "undefined") {
-
-                       if (def.visible) {
-
-                               self.show(true);
-                       } else {
-
-                               self.hide(true);
-                       }
-               }
-
-               //asign additional css classes to column header
-
-               if (def.cssClass) {
-
-                       var classeNames = def.cssClass.split(" ");
-
-                       classeNames.forEach(function (className) {
-
-                               self.element.classList.add(className);
-                       });
-               }
-
-               if (def.field) {
-
-                       this.element.setAttribute("tabulator-field", def.field);
-               }
-
-               //set min width if present
-
-               self.setMinWidth(typeof def.minWidth == "undefined" ? self.table.options.columnMinWidth : parseInt(def.minWidth));
-
-               self.reinitializeWidth();
-
-               //set tooltip if present
-
-               self.tooltip = self.definition.tooltip || self.definition.tooltip === false ? self.definition.tooltip : self.table.options.tooltips;
-
-               //set orizontal text alignment
-
-               self.hozAlign = typeof self.definition.hozAlign == "undefined" ? self.table.options.cellHozAlign : self.definition.hozAlign;
-
-               self.vertAlign = typeof self.definition.vertAlign == "undefined" ? self.table.options.cellVertAlign : self.definition.vertAlign;
-       };
-
-       Column.prototype._buildColumnHeaderContent = function () {
-
-               var def = this.definition,
-                   table = this.table;
-
-               var contentElement = document.createElement("div");
-
-               contentElement.classList.add("tabulator-col-content");
-
-               this.titleElement = this._buildColumnHeaderTitle();
-
-               contentElement.appendChild(this.titleElement);
-
-               return contentElement;
-       };
-
-       //build title element of column
-
-       Column.prototype._buildColumnHeaderTitle = function () {
-
-               var self = this,
-                   def = self.definition,
-                   table = self.table,
-                   title;
-
-               var titleHolderElement = document.createElement("div");
-
-               titleHolderElement.classList.add("tabulator-col-title");
-
-               if (def.editableTitle) {
-
-                       var titleElement = document.createElement("input");
-
-                       titleElement.classList.add("tabulator-title-editor");
-
-                       titleElement.addEventListener("click", function (e) {
-
-                               e.stopPropagation();
-
-                               titleElement.focus();
-                       });
-
-                       titleElement.addEventListener("change", function () {
-
-                               def.title = titleElement.value;
-
-                               table.options.columnTitleChanged.call(self.table, self.getComponent());
-                       });
-
-                       titleHolderElement.appendChild(titleElement);
-
-                       if (def.field) {
-
-                               table.modules.localize.bind("columns|" + def.field, function (text) {
-
-                                       titleElement.value = text || def.title || "&nbsp;";
-                               });
-                       } else {
-
-                               titleElement.value = def.title || "&nbsp;";
-                       }
-               } else {
-
-                       if (def.field) {
-
-                               table.modules.localize.bind("columns|" + def.field, function (text) {
-
-                                       self._formatColumnHeaderTitle(titleHolderElement, text || def.title || "&nbsp;");
-                               });
-                       } else {
-
-                               self._formatColumnHeaderTitle(titleHolderElement, def.title || "&nbsp;");
-                       }
-               }
-
-               return titleHolderElement;
-       };
-
-       Column.prototype._formatColumnHeaderTitle = function (el, title) {
-               var _this5 = this;
-
-               var formatter, contents, params, mockCell, onRendered;
-
-               if (this.definition.titleFormatter && this.table.modExists("format")) {
-
-                       formatter = this.table.modules.format.getFormatter(this.definition.titleFormatter);
-
-                       onRendered = function onRendered(callback) {
-
-                               _this5.titleFormatterRendered = callback;
-                       };
-
-                       mockCell = {
-
-                               getValue: function getValue() {
-
-                                       return title;
-                               },
-
-                               getElement: function getElement() {
-
-                                       return el;
-                               }
-
-                       };
-
-                       params = this.definition.titleFormatterParams || {};
-
-                       params = typeof params === "function" ? params() : params;
-
-                       contents = formatter.call(this.table.modules.format, mockCell, params, onRendered);
-
-                       switch (typeof contents === 'undefined' ? 'undefined' : _typeof(contents)) {
-
-                               case "object":
-
-                                       if (contents instanceof Node) {
-
-                                               el.appendChild(contents);
-                                       } else {
-
-                                               el.innerHTML = "";
-
-                                               console.warn("Format Error - Title formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:", contents);
-                                       }
-
-                                       break;
-
-                               case "undefined":
-
-                               case "null":
-
-                                       el.innerHTML = "";
-
-                                       break;
-
-                               default:
-
-                                       el.innerHTML = contents;
-
-                       }
-               } else {
-
-                       el.innerHTML = title;
-               }
-       };
-
-       //build header element for column group
-
-       Column.prototype._buildGroupHeader = function () {
-               var _this6 = this;
-
-               this.element.classList.add("tabulator-col-group");
-
-               this.element.setAttribute("role", "columngroup");
-
-               this.element.setAttribute("aria-title", this.definition.title);
-
-               //asign additional css classes to column header
-
-               if (this.definition.cssClass) {
-
-                       var classeNames = this.definition.cssClass.split(" ");
-
-                       classeNames.forEach(function (className) {
-
-                               _this6.element.classList.add(className);
-                       });
-               }
-
-               this.element.appendChild(this.groupElement);
-       };
-
-       //flat field lookup
-
-       Column.prototype._getFlatData = function (data) {
-
-               return data[this.field];
-       };
-
-       //nested field lookup
-
-       Column.prototype._getNestedData = function (data) {
-
-               var dataObj = data,
-                   structure = this.fieldStructure,
-                   length = structure.length,
-                   output;
-
-               for (var i = 0; i < length; i++) {
-
-                       dataObj = dataObj[structure[i]];
-
-                       output = dataObj;
-
-                       if (!dataObj) {
-
-                               break;
-                       }
-               }
-
-               return output;
-       };
-
-       //flat field set
-
-       Column.prototype._setFlatData = function (data, value) {
-
-               if (this.field) {
-
-                       data[this.field] = value;
-               }
-       };
-
-       //nested field set
-
-       Column.prototype._setNestedData = function (data, value) {
-
-               var dataObj = data,
-                   structure = this.fieldStructure,
-                   length = structure.length;
-
-               for (var i = 0; i < length; i++) {
-
-                       if (i == length - 1) {
-
-                               dataObj[structure[i]] = value;
-                       } else {
-
-                               if (!dataObj[structure[i]]) {
-
-                                       if (typeof value !== "undefined") {
-
-                                               dataObj[structure[i]] = {};
-                                       } else {
-
-                                               break;
-                                       }
-                               }
-
-                               dataObj = dataObj[structure[i]];
-                       }
-               }
-       };
-
-       //attach column to this group
-
-       Column.prototype.attachColumn = function (column) {
-
-               var self = this;
-
-               if (self.groupElement) {
-
-                       self.columns.push(column);
-
-                       self.groupElement.appendChild(column.getElement());
-               } else {
-
-                       console.warn("Column Warning - Column being attached to another column instead of column group");
-               }
-       };
-
-       //vertically align header in column
-
-       Column.prototype.verticalAlign = function (alignment, height) {
-
-               //calculate height of column header and group holder element
-
-               var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : height || this.parent.getHeadersElement().clientHeight;
-
-               // var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : this.parent.getHeadersElement().clientHeight;
-
-
-               this.element.style.height = parentHeight + "px";
-
-               if (this.isGroup) {
-
-                       this.groupElement.style.minHeight = parentHeight - this.contentElement.offsetHeight + "px";
-               }
-
-               //vertically align cell contents
-
-               if (!this.isGroup && alignment !== "top") {
-
-                       if (alignment === "bottom") {
-
-                               this.element.style.paddingTop = this.element.clientHeight - this.contentElement.offsetHeight + "px";
-                       } else {
-
-                               this.element.style.paddingTop = (this.element.clientHeight - this.contentElement.offsetHeight) / 2 + "px";
-                       }
-               }
-
-               this.columns.forEach(function (column) {
-
-                       column.verticalAlign(alignment);
-               });
-       };
-
-       //clear vertical alignmenet
-
-       Column.prototype.clearVerticalAlign = function () {
-
-               this.element.style.paddingTop = "";
-
-               this.element.style.height = "";
-
-               this.element.style.minHeight = "";
-
-               this.groupElement.style.minHeight = "";
-
-               this.columns.forEach(function (column) {
-
-                       column.clearVerticalAlign();
-               });
-       };
-
-       Column.prototype.bindModuleColumns = function () {
-
-               //check if rownum formatter is being used on a column
-
-               if (this.definition.formatter == "rownum") {
-
-                       this.table.rowManager.rowNumColumn = this;
-               }
-       };
-
-       //// Retreive Column Information ////
-
-
-       //return column header element
-
-       Column.prototype.getElement = function () {
-
-               return this.element;
-       };
-
-       //return colunm group element
-
-       Column.prototype.getGroupElement = function () {
-
-               return this.groupElement;
-       };
-
-       //return field name
-
-       Column.prototype.getField = function () {
-
-               return this.field;
-       };
-
-       //return the first column in a group
-
-       Column.prototype.getFirstColumn = function () {
-
-               if (!this.isGroup) {
-
-                       return this;
-               } else {
-
-                       if (this.columns.length) {
-
-                               return this.columns[0].getFirstColumn();
-                       } else {
-
-                               return false;
-                       }
-               }
-       };
-
-       //return the last column in a group
-
-       Column.prototype.getLastColumn = function () {
-
-               if (!this.isGroup) {
-
-                       return this;
-               } else {
-
-                       if (this.columns.length) {
-
-                               return this.columns[this.columns.length - 1].getLastColumn();
-                       } else {
-
-                               return false;
-                       }
-               }
-       };
-
-       //return all columns in a group
-
-       Column.prototype.getColumns = function () {
-
-               return this.columns;
-       };
-
-       //return all columns in a group
-
-       Column.prototype.getCells = function () {
-
-               return this.cells;
-       };
-
-       //retreive the top column in a group of columns
-
-       Column.prototype.getTopColumn = function () {
-
-               if (this.parent.isGroup) {
-
-                       return this.parent.getTopColumn();
-               } else {
-
-                       return this;
-               }
-       };
-
-       //return column definition object
-
-       Column.prototype.getDefinition = function (updateBranches) {
-
-               var colDefs = [];
-
-               if (this.isGroup && updateBranches) {
-
-                       this.columns.forEach(function (column) {
-
-                               colDefs.push(column.getDefinition(true));
-                       });
-
-                       this.definition.columns = colDefs;
-               }
-
-               return this.definition;
-       };
-
-       //////////////////// Actions ////////////////////
-
-
-       Column.prototype.checkColumnVisibility = function () {
-
-               var visible = false;
-
-               this.columns.forEach(function (column) {
-
-                       if (column.visible) {
-
-                               visible = true;
-                       }
-               });
-
-               if (visible) {
-
-                       this.show();
-
-                       this.parent.table.options.columnVisibilityChanged.call(this.table, this.getComponent(), false);
-               } else {
-
-                       this.hide();
-               }
-       };
-
-       //show column
-
-       Column.prototype.show = function (silent, responsiveToggle) {
-
-               if (!this.visible) {
-
-                       this.visible = true;
-
-                       this.element.style.display = "";
-
-                       if (this.parent.isGroup) {
-
-                               this.parent.checkColumnVisibility();
-                       }
-
-                       this.cells.forEach(function (cell) {
-
-                               cell.show();
-                       });
-
-                       if (!this.isGroup && this.width === null) {
-
-                               this.reinitializeWidth();
-                       }
-
-                       this.table.columnManager._verticalAlignHeaders();
-
-                       if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.columns) {
-
-                               this.table.modules.persistence.save("columns");
-                       }
-
-                       if (!responsiveToggle && this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-                               this.table.modules.responsiveLayout.updateColumnVisibility(this, this.visible);
-                       }
-
-                       if (!silent) {
-
-                               this.table.options.columnVisibilityChanged.call(this.table, this.getComponent(), true);
-                       }
-
-                       if (this.parent.isGroup) {
-
-                               this.parent.matchChildWidths();
-                       }
-               }
-       };
-
-       //hide column
-
-       Column.prototype.hide = function (silent, responsiveToggle) {
-
-               if (this.visible) {
-
-                       this.visible = false;
-
-                       this.element.style.display = "none";
-
-                       this.table.columnManager._verticalAlignHeaders();
-
-                       if (this.parent.isGroup) {
-
-                               this.parent.checkColumnVisibility();
-                       }
-
-                       this.cells.forEach(function (cell) {
-
-                               cell.hide();
-                       });
-
-                       if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.columns) {
-
-                               this.table.modules.persistence.save("columns");
-                       }
-
-                       if (!responsiveToggle && this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-                               this.table.modules.responsiveLayout.updateColumnVisibility(this, this.visible);
-                       }
-
-                       if (!silent) {
-
-                               this.table.options.columnVisibilityChanged.call(this.table, this.getComponent(), false);
-                       }
-
-                       if (this.parent.isGroup) {
-
-                               this.parent.matchChildWidths();
-                       }
-               }
-       };
-
-       Column.prototype.matchChildWidths = function () {
-
-               var childWidth = 0;
-
-               if (this.contentElement && this.columns.length) {
-
-                       this.columns.forEach(function (column) {
-
-                               if (column.visible) {
-
-                                       childWidth += column.getWidth();
-                               }
-                       });
-
-                       this.contentElement.style.maxWidth = childWidth - 1 + "px";
-
-                       if (this.parent.isGroup) {
-
-                               this.parent.matchChildWidths();
-                       }
-               }
-       };
-
-       Column.prototype.setWidth = function (width) {
-
-               this.widthFixed = true;
-
-               this.setWidthActual(width);
-       };
-
-       Column.prototype.setWidthActual = function (width) {
-
-               if (isNaN(width)) {
-
-                       width = Math.floor(this.table.element.clientWidth / 100 * parseInt(width));
-               }
-
-               width = Math.max(this.minWidth, width);
-
-               this.width = width;
-
-               this.widthStyled = width ? width + "px" : "";
-
-               this.element.style.width = this.widthStyled;
-
-               if (!this.isGroup) {
-
-                       this.cells.forEach(function (cell) {
-
-                               cell.setWidth();
-                       });
-               }
-
-               if (this.parent.isGroup) {
-
-                       this.parent.matchChildWidths();
-               }
-
-               //set resizable handles
-
-               if (this.table.modExists("frozenColumns")) {
-
-                       this.table.modules.frozenColumns.layout();
-               }
-       };
-
-       Column.prototype.checkCellHeights = function () {
-
-               var rows = [];
-
-               this.cells.forEach(function (cell) {
-
-                       if (cell.row.heightInitialized) {
-
-                               if (cell.row.getElement().offsetParent !== null) {
-
-                                       rows.push(cell.row);
-
-                                       cell.row.clearCellHeight();
-                               } else {
-
-                                       cell.row.heightInitialized = false;
-                               }
-                       }
-               });
-
-               rows.forEach(function (row) {
-
-                       row.calcHeight();
-               });
-
-               rows.forEach(function (row) {
-
-                       row.setCellHeight();
-               });
-       };
-
-       Column.prototype.getWidth = function () {
-
-               var width = 0;
-
-               if (this.isGroup) {
-
-                       this.columns.forEach(function (column) {
-
-                               if (column.visible) {
-
-                                       width += column.getWidth();
-                               }
-                       });
-               } else {
-
-                       width = this.width;
-               }
-
-               return width;
-       };
-
-       Column.prototype.getHeight = function () {
-
-               return this.element.offsetHeight;
-       };
-
-       Column.prototype.setMinWidth = function (minWidth) {
-
-               this.minWidth = minWidth;
-
-               this.minWidthStyled = minWidth ? minWidth + "px" : "";
-
-               this.element.style.minWidth = this.minWidthStyled;
-
-               this.cells.forEach(function (cell) {
-
-                       cell.setMinWidth();
-               });
-       };
-
-       Column.prototype.delete = function () {
-               var _this7 = this;
-
-               return new Promise(function (resolve, reject) {
-
-                       if (_this7.isGroup) {
-
-                               _this7.columns.forEach(function (column) {
-
-                                       column.delete();
-                               });
-                       }
-
-                       //cancel edit if column is currently being edited
-
-                       if (_this7.table.modExists("edit")) {
-
-                               if (_this7.table.modules.edit.currentCell.column === _this7) {
-
-                                       _this7.table.modules.edit.cancelEdit();
-                               }
-                       }
-
-                       var cellCount = _this7.cells.length;
-
-                       for (var i = 0; i < cellCount; i++) {
-
-                               _this7.cells[0].delete();
-                       }
-
-                       _this7.element.parentNode.removeChild(_this7.element);
-
-                       _this7.table.columnManager.deregisterColumn(_this7);
-
-                       resolve();
-               });
-       };
-
-       Column.prototype.columnRendered = function () {
-
-               if (this.titleFormatterRendered) {
-
-                       this.titleFormatterRendered();
-               }
-       };
-
-       //////////////// Cell Management /////////////////
-
-
-       //generate cell for this column
-
-       Column.prototype.generateCell = function (row) {
-
-               var self = this;
-
-               var cell = new Cell(self, row);
-
-               this.cells.push(cell);
-
-               return cell;
-       };
-
-       Column.prototype.nextColumn = function () {
-
-               var index = this.table.columnManager.findColumnIndex(this);
-
-               return index > -1 ? this._nextVisibleColumn(index + 1) : false;
-       };
-
-       Column.prototype._nextVisibleColumn = function (index) {
-
-               var column = this.table.columnManager.getColumnByIndex(index);
-
-               return !column || column.visible ? column : this._nextVisibleColumn(index + 1);
-       };
-
-       Column.prototype.prevColumn = function () {
-
-               var index = this.table.columnManager.findColumnIndex(this);
-
-               return index > -1 ? this._prevVisibleColumn(index - 1) : false;
-       };
-
-       Column.prototype._prevVisibleColumn = function (index) {
-
-               var column = this.table.columnManager.getColumnByIndex(index);
-
-               return !column || column.visible ? column : this._prevVisibleColumn(index - 1);
-       };
-
-       Column.prototype.reinitializeWidth = function (force) {
-
-               this.widthFixed = false;
-
-               //set width if present
-
-               if (typeof this.definition.width !== "undefined" && !force) {
-
-                       this.setWidth(this.definition.width);
-               }
-
-               //hide header filters to prevent them altering column width
-
-               if (this.table.modExists("filter")) {
-
-                       this.table.modules.filter.hideHeaderFilterElements();
-               }
-
-               this.fitToData();
-
-               //show header filters again after layout is complete
-
-               if (this.table.modExists("filter")) {
-
-                       this.table.modules.filter.showHeaderFilterElements();
-               }
-       };
-
-       //set column width to maximum cell width
-
-       Column.prototype.fitToData = function () {
-
-               var self = this;
-
-               if (!this.widthFixed) {
-
-                       this.element.style.width = "";
-
-                       self.cells.forEach(function (cell) {
-
-                               cell.clearWidth();
-                       });
-               }
-
-               var maxWidth = this.element.offsetWidth;
-
-               if (!self.width || !this.widthFixed) {
-
-                       self.cells.forEach(function (cell) {
-
-                               var width = cell.getWidth();
-
-                               if (width > maxWidth) {
-
-                                       maxWidth = width;
-                               }
-                       });
-
-                       if (maxWidth) {
-
-                               self.setWidthActual(maxWidth + 1);
-                       }
-               }
-       };
-
-       Column.prototype.updateDefinition = function (updates) {
-               var _this8 = this;
-
-               return new Promise(function (resolve, reject) {
-
-                       var definition;
-
-                       if (!_this8.isGroup) {
-
-                               definition = Object.assign({}, _this8.getDefinition());
-
-                               definition = Object.assign(definition, updates);
-
-                               _this8.table.columnManager.addColumn(definition, false, _this8).then(function (column) {
-
-                                       if (definition.field == _this8.field) {
-
-                                               _this8.field = false; //cleair field name to prevent deletion of duplicate column from arrays
-                                       }
-
-                                       _this8.delete().then(function () {
-
-                                               resolve(column.getComponent());
-                                       }).catch(function (err) {
-
-                                               reject(err);
-                                       });
-                               }).catch(function (err) {
-
-                                       reject(err);
-                               });
-                       } else {
-
-                               console.warn("Column Update Error - The updateDefintion function is only available on columns, not column groups");
-
-                               reject("Column Update Error - The updateDefintion function is only available on columns, not column groups");
-                       }
-               });
-       };
-
-       Column.prototype.deleteCell = function (cell) {
-
-               var index = this.cells.indexOf(cell);
-
-               if (index > -1) {
-
-                       this.cells.splice(index, 1);
-               }
-       };
-
-       Column.prototype.defaultOptionList = ["title", "field", "columns", "visible", "align", "hozAlign", "vertAlign", "width", "minWidth", "widthGrow", "widthShrink", "resizable", "frozen", "responsive", "tooltip", "cssClass", "rowHandle", "hideInHtml", "print", "htmlOutput", "sorter", "sorterParams", "formatter", "formatterParams", "variableHeight", "editable", "editor", "editorParams", "validator", "mutator", "mutatorParams", "mutatorData", "mutatorDataParams", "mutatorEdit", "mutatorEditParams", "mutatorClipboard", "mutatorClipboardParams", "accessor", "accessorParams", "accessorData", "accessorDataParams", "accessorDownload", "accessorDownloadParams", "accessorClipboard", "accessorClipboardParams", "accessorPrint", "accessorPrintParams", "accessorHtmlOutput", "accessorHtmlOutputParams", "clipboard", "download", "downloadTitle", "topCalc", "topCalcParams", "topCalcFormatter", "topCalcFormatterParams", "bottomCalc", "bottomCalcParams", "bottomCalcFormatter", "bottomCalcFormatterParams", "cellClick", "cellDblClick", "cellContext", "cellTap", "cellDblTap", "cellTapHold", "cellMouseEnter", "cellMouseLeave", "cellMouseOver", "cellMouseOut", "cellMouseMove", "cellEditing", "cellEdited", "cellEditCancelled", "headerSort", "headerSortStartingDir", "headerSortTristate", "headerClick", "headerDblClick", "headerContext", "headerTap", "headerDblTap", "headerTapHold", "headerTooltip", "headerVertical", "editableTitle", "titleFormatter", "titleFormatterParams", "headerFilter", "headerFilterPlaceholder", "headerFilterParams", "headerFilterEmptyCheck", "headerFilterFunc", "headerFilterFuncParams", "headerFilterLiveFilter", "print", "headerContextMenu", "headerMenu", "contextMenu", "formatterPrint", "formatterPrintParams", "formatterClipboard", "formatterClipboardParams", "formatterHtmlOutput", "formatterHtmlOutputParams"];
-
-       //////////////// Event Bindings /////////////////
-
-
-       //////////////// Object Generation /////////////////
-
-       Column.prototype.getComponent = function () {
-
-               return new ColumnComponent(this);
-       };
-
-       var RowManager = function RowManager(table) {
-
-               this.table = table;
-
-               this.element = this.createHolderElement(); //containing element
-
-               this.tableElement = this.createTableElement(); //table element
-
-               this.heightFixer = this.createTableElement(); //table element
-
-               this.columnManager = null; //hold column manager object
-
-               this.height = 0; //hold height of table element
-
-
-               this.firstRender = false; //handle first render
-
-               this.renderMode = "virtual"; //current rendering mode
-
-               this.fixedHeight = false; //current rendering mode
-
-
-               this.rows = []; //hold row data objects
-
-               this.activeRows = []; //rows currently available to on display in the table
-
-               this.activeRowsCount = 0; //count of active rows
-
-
-               this.displayRows = []; //rows currently on display in the table
-
-               this.displayRowsCount = 0; //count of display rows
-
-
-               this.scrollTop = 0;
-
-               this.scrollLeft = 0;
-
-               this.vDomRowHeight = 20; //approximation of row heights for padding
-
-
-               this.vDomTop = 0; //hold position for first rendered row in the virtual DOM
-
-               this.vDomBottom = 0; //hold possition for last rendered row in the virtual DOM
-
-
-               this.vDomScrollPosTop = 0; //last scroll position of the vDom top;
-
-               this.vDomScrollPosBottom = 0; //last scroll position of the vDom bottom;
-
-
-               this.vDomTopPad = 0; //hold value of padding for top of virtual DOM
-
-               this.vDomBottomPad = 0; //hold value of padding for bottom of virtual DOM
-
-
-               this.vDomMaxRenderChain = 90; //the maximum number of dom elements that can be rendered in 1 go
-
-
-               this.vDomWindowBuffer = 0; //window row buffer before removing elements, to smooth scrolling
-
-
-               this.vDomWindowMinTotalRows = 20; //minimum number of rows to be generated in virtual dom (prevent buffering issues on tables with tall rows)
-
-               this.vDomWindowMinMarginRows = 5; //minimum number of rows to be generated in virtual dom margin
-
-
-               this.vDomTopNewRows = []; //rows to normalize after appending to optimize render speed
-
-               this.vDomBottomNewRows = []; //rows to normalize after appending to optimize render speed
-
-
-               this.rowNumColumn = false; //hold column component for row number column
-
-
-               this.redrawBlock = false; //prevent redraws to allow multiple data manipulations becore continuing
-
-               this.redrawBlockRestoreConfig = false; //store latest redraw function calls for when redraw is needed
-
-               this.redrawBlockRederInPosition = false; //store latest redraw function calls for when redraw is needed
-       };
-
-       //////////////// Setup Functions /////////////////
-
-
-       RowManager.prototype.createHolderElement = function () {
-
-               var el = document.createElement("div");
-
-               el.classList.add("tabulator-tableHolder");
-
-               el.setAttribute("tabindex", 0);
-
-               return el;
-       };
-
-       RowManager.prototype.createTableElement = function () {
-
-               var el = document.createElement("div");
-
-               el.classList.add("tabulator-table");
-
-               return el;
-       };
-
-       //return containing element
-
-       RowManager.prototype.getElement = function () {
-
-               return this.element;
-       };
-
-       //return table element
-
-       RowManager.prototype.getTableElement = function () {
-
-               return this.tableElement;
-       };
-
-       //return position of row in table
-
-       RowManager.prototype.getRowPosition = function (row, active) {
-
-               if (active) {
-
-                       return this.activeRows.indexOf(row);
-               } else {
-
-                       return this.rows.indexOf(row);
-               }
-       };
-
-       //link to column manager
-
-       RowManager.prototype.setColumnManager = function (manager) {
-
-               this.columnManager = manager;
-       };
-
-       RowManager.prototype.initialize = function () {
-
-               var self = this;
-
-               self.setRenderMode();
-
-               //initialize manager
-
-               self.element.appendChild(self.tableElement);
-
-               self.firstRender = true;
-
-               //scroll header along with table body
-
-               self.element.addEventListener("scroll", function () {
-
-                       var left = self.element.scrollLeft;
-
-                       //handle horizontal scrolling
-
-                       if (self.scrollLeft != left) {
-
-                               self.columnManager.scrollHorizontal(left);
-
-                               if (self.table.options.groupBy) {
-
-                                       self.table.modules.groupRows.scrollHeaders(left);
-                               }
-
-                               if (self.table.modExists("columnCalcs")) {
-
-                                       self.table.modules.columnCalcs.scrollHorizontal(left);
-                               }
-
-                               self.table.options.scrollHorizontal(left);
-                       }
-
-                       self.scrollLeft = left;
-               });
-
-               //handle virtual dom scrolling
-
-               if (this.renderMode === "virtual") {
-
-                       self.element.addEventListener("scroll", function () {
-
-                               var top = self.element.scrollTop;
-
-                               var dir = self.scrollTop > top;
-
-                               //handle verical scrolling
-
-                               if (self.scrollTop != top) {
-
-                                       self.scrollTop = top;
-
-                                       self.scrollVertical(dir);
-
-                                       if (self.table.options.ajaxProgressiveLoad == "scroll") {
-
-                                               self.table.modules.ajax.nextPage(self.element.scrollHeight - self.element.clientHeight - top);
-                                       }
-
-                                       self.table.options.scrollVertical(top);
-                               } else {
-
-                                       self.scrollTop = top;
-                               }
-                       });
-               }
-       };
-
-       ////////////////// Row Manipulation //////////////////
-
-
-       RowManager.prototype.findRow = function (subject) {
-
-               var self = this;
-
-               if ((typeof subject === 'undefined' ? 'undefined' : _typeof(subject)) == "object") {
-
-                       if (subject instanceof Row) {
-
-                               //subject is row element
-
-                               return subject;
-                       } else if (subject instanceof RowComponent) {
-
-                               //subject is public row component
-
-                               return subject._getSelf() || false;
-                       } else if (typeof HTMLElement !== "undefined" && subject instanceof HTMLElement) {
-
-                               //subject is a HTML element of the row
-
-                               var match = self.rows.find(function (row) {
-
-                                       return row.element === subject;
-                               });
-
-                               return match || false;
-                       }
-               } else if (typeof subject == "undefined" || subject === null) {
-
-                       return false;
-               } else {
-
-                       //subject should be treated as the index of the row
-
-                       var _match = self.rows.find(function (row) {
-
-                               return row.data[self.table.options.index] == subject;
-                       });
-
-                       return _match || false;
-               }
-
-               //catch all for any other type of input
-
-
-               return false;
-       };
-
-       RowManager.prototype.getRowFromDataObject = function (data) {
-
-               var match = this.rows.find(function (row) {
-
-                       return row.data === data;
-               });
-
-               return match || false;
-       };
-
-       RowManager.prototype.getRowFromPosition = function (position, active) {
-
-               if (active) {
-
-                       return this.activeRows[position];
-               } else {
-
-                       return this.rows[position];
-               }
-       };
-
-       RowManager.prototype.scrollToRow = function (row, position, ifVisible) {
-               var _this9 = this;
-
-               var rowIndex = this.getDisplayRows().indexOf(row),
-                   rowEl = row.getElement(),
-                   rowTop,
-                   offset = 0;
-
-               return new Promise(function (resolve, reject) {
-
-                       if (rowIndex > -1) {
-
-                               if (typeof position === "undefined") {
-
-                                       position = _this9.table.options.scrollToRowPosition;
-                               }
-
-                               if (typeof ifVisible === "undefined") {
-
-                                       ifVisible = _this9.table.options.scrollToRowIfVisible;
-                               }
-
-                               if (position === "nearest") {
-
-                                       switch (_this9.renderMode) {
-
-                                               case "classic":
-
-                                                       rowTop = Tabulator.prototype.helpers.elOffset(rowEl).top;
-
-                                                       position = Math.abs(_this9.element.scrollTop - rowTop) > Math.abs(_this9.element.scrollTop + _this9.element.clientHeight - rowTop) ? "bottom" : "top";
-
-                                                       break;
-
-                                               case "virtual":
-
-                                                       position = Math.abs(_this9.vDomTop - rowIndex) > Math.abs(_this9.vDomBottom - rowIndex) ? "bottom" : "top";
-
-                                                       break;
-
-                                       }
-                               }
-
-                               //check row visibility
-
-                               if (!ifVisible) {
-
-                                       if (Tabulator.prototype.helpers.elVisible(rowEl)) {
-
-                                               offset = Tabulator.prototype.helpers.elOffset(rowEl).top - Tabulator.prototype.helpers.elOffset(_this9.element).top;
-
-                                               if (offset > 0 && offset < _this9.element.clientHeight - rowEl.offsetHeight) {
-
-                                                       return false;
-                                               }
-                                       }
-                               }
-
-                               //scroll to row
-
-                               switch (_this9.renderMode) {
-
-                                       case "classic":
-
-                                               _this9.element.scrollTop = Tabulator.prototype.helpers.elOffset(rowEl).top - Tabulator.prototype.helpers.elOffset(_this9.element).top + _this9.element.scrollTop;
-
-                                               break;
-
-                                       case "virtual":
-
-                                               _this9._virtualRenderFill(rowIndex, true);
-
-                                               break;
-
-                               }
-
-                               //align to correct position
-
-                               switch (position) {
-
-                                       case "middle":
-
-                                       case "center":
-
-                                               if (_this9.element.scrollHeight - _this9.element.scrollTop == _this9.element.clientHeight) {
-
-                                                       _this9.element.scrollTop = _this9.element.scrollTop + (rowEl.offsetTop - _this9.element.scrollTop) - (_this9.element.scrollHeight - rowEl.offsetTop) / 2;
-                                               } else {
-
-                                                       _this9.element.scrollTop = _this9.element.scrollTop - _this9.element.clientHeight / 2;
-                                               }
-
-                                               break;
-
-                                       case "bottom":
-
-                                               if (_this9.element.scrollHeight - _this9.element.scrollTop == _this9.element.clientHeight) {
-
-                                                       _this9.element.scrollTop = _this9.element.scrollTop - (_this9.element.scrollHeight - rowEl.offsetTop) + rowEl.offsetHeight;
-                                               } else {
-
-                                                       _this9.element.scrollTop = _this9.element.scrollTop - _this9.element.clientHeight + rowEl.offsetHeight;
-                                               }
-
-                                               break;
-
-                               }
-
-                               resolve();
-                       } else {
-
-                               console.warn("Scroll Error - Row not visible");
-
-                               reject("Scroll Error - Row not visible");
-                       }
-               });
-       };
-
-       ////////////////// Data Handling //////////////////
-
-
-       RowManager.prototype.setData = function (data, renderInPosition, columnsChanged) {
-               var _this10 = this;
-
-               var self = this;
-
-               return new Promise(function (resolve, reject) {
-
-                       if (renderInPosition && _this10.getDisplayRows().length) {
-
-                               if (self.table.options.pagination) {
-
-                                       self._setDataActual(data, true);
-                               } else {
-
-                                       _this10.reRenderInPosition(function () {
-
-                                               self._setDataActual(data);
-                                       });
-                               }
-                       } else {
-
-                               if (_this10.table.options.autoColumns && columnsChanged) {
-
-                                       _this10.table.columnManager.generateColumnsFromRowData(data);
-                               }
-
-                               _this10.resetScroll();
-
-                               _this10._setDataActual(data);
-                       }
-
-                       resolve();
-               });
-       };
-
-       RowManager.prototype._setDataActual = function (data, renderInPosition) {
-
-               var self = this;
-
-               self.table.options.dataLoading.call(this.table, data);
-
-               this._wipeElements();
-
-               if (this.table.options.history && this.table.modExists("history")) {
-
-                       this.table.modules.history.clear();
-               }
-
-               if (Array.isArray(data)) {
-
-                       if (this.table.modExists("selectRow")) {
-
-                               this.table.modules.selectRow.clearSelectionData();
-                       }
-
-                       if (this.table.options.reactiveData && this.table.modExists("reactiveData", true)) {
-
-                               this.table.modules.reactiveData.watchData(data);
-                       }
-
-                       data.forEach(function (def, i) {
-
-                               if (def && (typeof def === 'undefined' ? 'undefined' : _typeof(def)) === "object") {
-
-                                       var row = new Row(def, self);
-
-                                       self.rows.push(row);
-                               } else {
-
-                                       console.warn("Data Loading Warning - Invalid row data detected and ignored, expecting object but received:", def);
-                               }
-                       });
-
-                       self.table.options.dataLoaded.call(this.table, data);
-
-                       self.refreshActiveData(false, false, renderInPosition);
-               } else {
-
-                       console.error("Data Loading Error - Unable to process data due to invalid data type \nExpecting: array \nReceived: ", typeof data === 'undefined' ? 'undefined' : _typeof(data), "\nData:     ", data);
-               }
-       };
-
-       RowManager.prototype._wipeElements = function () {
-
-               this.rows.forEach(function (row) {
-
-                       row.wipe();
-               });
-
-               if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-
-                       this.table.modules.groupRows.wipe();
-               }
-
-               this.rows = [];
-       };
-
-       RowManager.prototype.deleteRow = function (row, blockRedraw) {
-
-               var allIndex = this.rows.indexOf(row),
-                   activeIndex = this.activeRows.indexOf(row);
-
-               if (activeIndex > -1) {
-
-                       this.activeRows.splice(activeIndex, 1);
-               }
-
-               if (allIndex > -1) {
-
-                       this.rows.splice(allIndex, 1);
-               }
-
-               this.setActiveRows(this.activeRows);
-
-               this.displayRowIterator(function (rows) {
-
-                       var displayIndex = rows.indexOf(row);
-
-                       if (displayIndex > -1) {
-
-                               rows.splice(displayIndex, 1);
-                       }
-               });
-
-               if (!blockRedraw) {
-
-                       this.reRenderInPosition();
-               }
-
-               this.regenerateRowNumbers();
-
-               this.table.options.rowDeleted.call(this.table, row.getComponent());
-
-               this.table.options.dataEdited.call(this.table, this.getData());
-
-               if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-
-                       this.table.modules.groupRows.updateGroupRows(true);
-               } else if (this.table.options.pagination && this.table.modExists("page")) {
-
-                       this.refreshActiveData(false, false, true);
-               } else {
-
-                       if (this.table.options.pagination && this.table.modExists("page")) {
-
-                               this.refreshActiveData("page");
-                       }
-               }
-       };
-
-       RowManager.prototype.addRow = function (data, pos, index, blockRedraw) {
-
-               var row = this.addRowActual(data, pos, index, blockRedraw);
-
-               if (this.table.options.history && this.table.modExists("history")) {
-
-                       this.table.modules.history.action("rowAdd", row, { data: data, pos: pos, index: index });
-               }
-
-               return row;
-       };
-
-       //add multiple rows
-
-       RowManager.prototype.addRows = function (data, pos, index) {
-               var _this11 = this;
-
-               var self = this,
-                   length = 0,
-                   rows = [];
-
-               return new Promise(function (resolve, reject) {
-
-                       pos = _this11.findAddRowPos(pos);
-
-                       if (!Array.isArray(data)) {
-
-                               data = [data];
-                       }
-
-                       length = data.length - 1;
-
-                       if (typeof index == "undefined" && pos || typeof index !== "undefined" && !pos) {
-
-                               data.reverse();
-                       }
-
-                       data.forEach(function (item, i) {
-
-                               var row = self.addRow(item, pos, index, true);
-
-                               rows.push(row);
-                       });
-
-                       if (_this11.table.options.groupBy && _this11.table.modExists("groupRows")) {
-
-                               _this11.table.modules.groupRows.updateGroupRows(true);
-                       } else if (_this11.table.options.pagination && _this11.table.modExists("page")) {
-
-                               _this11.refreshActiveData(false, false, true);
-                       } else {
-
-                               _this11.reRenderInPosition();
-                       }
-
-                       //recalc column calculations if present
-
-                       if (_this11.table.modExists("columnCalcs")) {
-
-                               _this11.table.modules.columnCalcs.recalc(_this11.table.rowManager.activeRows);
-                       }
-
-                       _this11.regenerateRowNumbers();
-
-                       resolve(rows);
-               });
-       };
-
-       RowManager.prototype.findAddRowPos = function (pos) {
-
-               if (typeof pos === "undefined") {
-
-                       pos = this.table.options.addRowPos;
-               }
-
-               if (pos === "pos") {
-
-                       pos = true;
-               }
-
-               if (pos === "bottom") {
-
-                       pos = false;
-               }
-
-               return pos;
-       };
-
-       RowManager.prototype.addRowActual = function (data, pos, index, blockRedraw) {
-
-               var row = data instanceof Row ? data : new Row(data || {}, this),
-                   top = this.findAddRowPos(pos),
-                   allIndex = -1,
-                   activeIndex,
-                   dispRows;
-
-               if (!index && this.table.options.pagination && this.table.options.paginationAddRow == "page") {
-
-                       dispRows = this.getDisplayRows();
-
-                       if (top) {
-
-                               if (dispRows.length) {
-
-                                       index = dispRows[0];
-                               } else {
-
-                                       if (this.activeRows.length) {
-
-                                               index = this.activeRows[this.activeRows.length - 1];
-
-                                               top = false;
-                                       }
-                               }
-                       } else {
-
-                               if (dispRows.length) {
-
-                                       index = dispRows[dispRows.length - 1];
-
-                                       top = dispRows.length < this.table.modules.page.getPageSize() ? false : true;
-                               }
-                       }
-               }
-
-               if (typeof index !== "undefined") {
-
-                       index = this.findRow(index);
-               }
-
-               if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-
-                       this.table.modules.groupRows.assignRowToGroup(row);
-
-                       var groupRows = row.getGroup().rows;
-
-                       if (groupRows.length > 1) {
-
-                               if (!index || index && groupRows.indexOf(index) == -1) {
-
-                                       if (top) {
-
-                                               if (groupRows[0] !== row) {
-
-                                                       index = groupRows[0];
-
-                                                       this._moveRowInArray(row.getGroup().rows, row, index, !top);
-                                               }
-                                       } else {
-
-                                               if (groupRows[groupRows.length - 1] !== row) {
-
-                                                       index = groupRows[groupRows.length - 1];
-
-                                                       this._moveRowInArray(row.getGroup().rows, row, index, !top);
-                                               }
-                                       }
-                               } else {
-
-                                       this._moveRowInArray(row.getGroup().rows, row, index, !top);
-                               }
-                       }
-               }
-
-               if (index) {
-
-                       allIndex = this.rows.indexOf(index);
-               }
-
-               if (index && allIndex > -1) {
-
-                       activeIndex = this.activeRows.indexOf(index);
-
-                       this.displayRowIterator(function (rows) {
-
-                               var displayIndex = rows.indexOf(index);
-
-                               if (displayIndex > -1) {
-
-                                       rows.splice(top ? displayIndex : displayIndex + 1, 0, row);
-                               }
-                       });
-
-                       if (activeIndex > -1) {
-
-                               this.activeRows.splice(top ? activeIndex : activeIndex + 1, 0, row);
-                       }
-
-                       this.rows.splice(top ? allIndex : allIndex + 1, 0, row);
-               } else {
-
-                       if (top) {
-
-                               this.displayRowIterator(function (rows) {
-
-                                       rows.unshift(row);
-                               });
-
-                               this.activeRows.unshift(row);
-
-                               this.rows.unshift(row);
-                       } else {
-
-                               this.displayRowIterator(function (rows) {
-
-                                       rows.push(row);
-                               });
-
-                               this.activeRows.push(row);
-
-                               this.rows.push(row);
-                       }
-               }
-
-               this.setActiveRows(this.activeRows);
-
-               this.table.options.rowAdded.call(this.table, row.getComponent());
-
-               this.table.options.dataEdited.call(this.table, this.getData());
-
-               if (!blockRedraw) {
-
-                       this.reRenderInPosition();
-               }
-
-               return row;
-       };
-
-       RowManager.prototype.moveRow = function (from, to, after) {
-
-               if (this.table.options.history && this.table.modExists("history")) {
-
-                       this.table.modules.history.action("rowMove", from, { posFrom: this.getRowPosition(from), posTo: this.getRowPosition(to), to: to, after: after });
-               }
-
-               this.moveRowActual(from, to, after);
-
-               this.regenerateRowNumbers();
-
-               this.table.options.rowMoved.call(this.table, from.getComponent());
-       };
-
-       RowManager.prototype.moveRowActual = function (from, to, after) {
-               var _this12 = this;
-
-               this._moveRowInArray(this.rows, from, to, after);
-
-               this._moveRowInArray(this.activeRows, from, to, after);
-
-               this.displayRowIterator(function (rows) {
-
-                       _this12._moveRowInArray(rows, from, to, after);
-               });
-
-               if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-
-                       if (!after && to instanceof Group) {
-
-                               to = this.table.rowManager.prevDisplayRow(from) || to;
-                       }
-
-                       var toGroup = to.getGroup();
-
-                       var fromGroup = from.getGroup();
-
-                       if (toGroup === fromGroup) {
-
-                               this._moveRowInArray(toGroup.rows, from, to, after);
-                       } else {
-
-                               if (fromGroup) {
-
-                                       fromGroup.removeRow(from);
-                               }
-
-                               toGroup.insertRow(from, to, after);
-                       }
-               }
-       };
-
-       RowManager.prototype._moveRowInArray = function (rows, from, to, after) {
-
-               var fromIndex, toIndex, start, end;
-
-               if (from !== to) {
-
-                       fromIndex = rows.indexOf(from);
-
-                       if (fromIndex > -1) {
-
-                               rows.splice(fromIndex, 1);
-
-                               toIndex = rows.indexOf(to);
-
-                               if (toIndex > -1) {
-
-                                       if (after) {
-
-                                               rows.splice(toIndex + 1, 0, from);
-                                       } else {
-
-                                               rows.splice(toIndex, 0, from);
-                                       }
-                               } else {
-
-                                       rows.splice(fromIndex, 0, from);
-                               }
-                       }
-
-                       //restyle rows
-
-                       if (rows === this.getDisplayRows()) {
-
-                               start = fromIndex < toIndex ? fromIndex : toIndex;
-
-                               end = toIndex > fromIndex ? toIndex : fromIndex + 1;
-
-                               for (var i = start; i <= end; i++) {
-
-                                       if (rows[i]) {
-
-                                               this.styleRow(rows[i], i);
-                                       }
-                               }
-                       }
-               }
-       };
-
-       RowManager.prototype.clearData = function () {
-
-               this.setData([]);
-       };
-
-       RowManager.prototype.getRowIndex = function (row) {
-
-               return this.findRowIndex(row, this.rows);
-       };
-
-       RowManager.prototype.getDisplayRowIndex = function (row) {
-
-               var index = this.getDisplayRows().indexOf(row);
-
-               return index > -1 ? index : false;
-       };
-
-       RowManager.prototype.nextDisplayRow = function (row, rowOnly) {
-
-               var index = this.getDisplayRowIndex(row),
-                   nextRow = false;
-
-               if (index !== false && index < this.displayRowsCount - 1) {
-
-                       nextRow = this.getDisplayRows()[index + 1];
-               }
-
-               if (nextRow && (!(nextRow instanceof Row) || nextRow.type != "row")) {
-
-                       return this.nextDisplayRow(nextRow, rowOnly);
-               }
-
-               return nextRow;
-       };
-
-       RowManager.prototype.prevDisplayRow = function (row, rowOnly) {
-
-               var index = this.getDisplayRowIndex(row),
-                   prevRow = false;
-
-               if (index) {
-
-                       prevRow = this.getDisplayRows()[index - 1];
-               }
-
-               if (rowOnly && prevRow && (!(prevRow instanceof Row) || prevRow.type != "row")) {
-
-                       return this.prevDisplayRow(prevRow, rowOnly);
-               }
-
-               return prevRow;
-       };
-
-       RowManager.prototype.findRowIndex = function (row, list) {
-
-               var rowIndex;
-
-               row = this.findRow(row);
-
-               if (row) {
-
-                       rowIndex = list.indexOf(row);
-
-                       if (rowIndex > -1) {
-
-                               return rowIndex;
-                       }
-               }
-
-               return false;
-       };
-
-       RowManager.prototype.getData = function (active, transform) {
-
-               var output = [],
-                   rows = this.getRows(active);
-
-               rows.forEach(function (row) {
-
-                       if (row.type == "row") {
-
-                               output.push(row.getData(transform || "data"));
-                       }
-               });
-
-               return output;
-       };
-
-       RowManager.prototype.getComponents = function (active) {
-
-               var output = [],
-                   rows = this.getRows(active);
-
-               rows.forEach(function (row) {
-
-                       output.push(row.getComponent());
-               });
-
-               return output;
-       };
-
-       RowManager.prototype.getDataCount = function (active) {
-
-               var rows = this.getRows(active);
-
-               return rows.length;
-       };
-
-       RowManager.prototype._genRemoteRequest = function () {
-               var _this13 = this;
-
-               var table = this.table,
-                   options = table.options,
-                   params = {};
-
-               if (table.modExists("page")) {
-
-                       //set sort data if defined
-
-                       if (options.ajaxSorting) {
-
-                               var sorters = this.table.modules.sort.getSort();
-
-                               sorters.forEach(function (item) {
-
-                                       delete item.column;
-                               });
-
-                               params[this.table.modules.page.paginationDataSentNames.sorters] = sorters;
-                       }
-
-                       //set filter data if defined
-
-                       if (options.ajaxFiltering) {
-
-                               var filters = this.table.modules.filter.getFilters(true, true);
-
-                               params[this.table.modules.page.paginationDataSentNames.filters] = filters;
-                       }
-
-                       this.table.modules.ajax.setParams(params, true);
-               }
-
-               table.modules.ajax.sendRequest().then(function (data) {
-
-                       _this13._setDataActual(data, true);
-               }).catch(function (e) {});
-       };
-
-       //choose the path to refresh data after a filter update
-
-       RowManager.prototype.filterRefresh = function () {
-
-               var table = this.table,
-                   options = table.options,
-                   left = this.scrollLeft;
-
-               if (options.ajaxFiltering) {
-
-                       if (options.pagination == "remote" && table.modExists("page")) {
-
-                               table.modules.page.reset(true);
-
-                               table.modules.page.setPage(1).then(function () {}).catch(function () {});
-                       } else if (options.ajaxProgressiveLoad) {
-
-                               table.modules.ajax.loadData().then(function () {}).catch(function () {});
-                       } else {
-
-                               //assume data is url, make ajax call to url to get data
-
-                               this._genRemoteRequest();
-                       }
-               } else {
-
-                       this.refreshActiveData("filter");
-               }
-
-               this.scrollHorizontal(left);
-       };
-
-       //choose the path to refresh data after a sorter update
-
-       RowManager.prototype.sorterRefresh = function (loadOrignalData) {
-
-               var table = this.table,
-                   options = this.table.options,
-                   left = this.scrollLeft;
-
-               if (options.ajaxSorting) {
-
-                       if ((options.pagination == "remote" || options.progressiveLoad) && table.modExists("page")) {
-
-                               table.modules.page.reset(true);
-
-                               table.modules.page.setPage(1).then(function () {}).catch(function () {});
-                       } else if (options.ajaxProgressiveLoad) {
-
-                               table.modules.ajax.loadData().then(function () {}).catch(function () {});
-                       } else {
-
-                               //assume data is url, make ajax call to url to get data
-
-                               this._genRemoteRequest();
-                       }
-               } else {
-
-                       this.refreshActiveData(loadOrignalData ? "filter" : "sort");
-               }
-
-               this.scrollHorizontal(left);
-       };
-
-       RowManager.prototype.scrollHorizontal = function (left) {
-
-               this.scrollLeft = left;
-
-               this.element.scrollLeft = left;
-
-               if (this.table.options.groupBy) {
-
-                       this.table.modules.groupRows.scrollHeaders(left);
-               }
-
-               if (this.table.modExists("columnCalcs")) {
-
-                       this.table.modules.columnCalcs.scrollHorizontal(left);
-               }
-       };
-
-       //set active data set
-
-       RowManager.prototype.refreshActiveData = function (stage, skipStage, renderInPosition) {
-
-               var self = this,
-                   table = this.table,
-                   cascadeOrder = ["all", "filter", "sort", "display", "freeze", "group", "tree", "page"],
-                   displayIndex;
-
-               if (this.redrawBlock) {
-
-                       if (!this.redrawBlockRestoreConfig || cascadeOrder.indexOf(stage) < cascadeOrder.indexOf(this.redrawBlockRestoreConfig.stage)) {
-
-                               this.redrawBlockRestoreConfig = {
-
-                                       stage: stage,
-
-                                       skipStage: skipStage,
-
-                                       renderInPosition: renderInPosition
-
-                               };
-                       }
-
-                       return;
-               } else {
-
-                       if (self.table.modExists("edit")) {
-
-                               self.table.modules.edit.cancelEdit();
-                       }
-
-                       if (!stage) {
-
-                               stage = "all";
-                       }
-
-                       if (table.options.selectable && !table.options.selectablePersistence && table.modExists("selectRow")) {
-
-                               table.modules.selectRow.deselectRows();
-                       }
-
-                       //cascade through data refresh stages
-
-                       switch (stage) {
-
-                               case "all":
-
-                               case "filter":
-
-                                       if (!skipStage) {
-
-                                               if (table.modExists("filter")) {
-
-                                                       self.setActiveRows(table.modules.filter.filter(self.rows));
-                                               } else {
-
-                                                       self.setActiveRows(self.rows.slice(0));
-                                               }
-                                       } else {
-
-                                               skipStage = false;
-                                       }
-
-                               case "sort":
-
-                                       if (!skipStage) {
-
-                                               if (table.modExists("sort")) {
-
-                                                       table.modules.sort.sort(this.activeRows);
-                                               }
-                                       } else {
-
-                                               skipStage = false;
-                                       }
-
-                                       //regenerate row numbers for row number formatter if in use
-
-                                       this.regenerateRowNumbers();
-
-                               //generic stage to allow for pipeline trigger after the data manipulation stage
-
-                               case "display":
-
-                                       this.resetDisplayRows();
-
-                               case "freeze":
-
-                                       if (!skipStage) {
-
-                                               if (this.table.modExists("frozenRows")) {
-
-                                                       if (table.modules.frozenRows.isFrozen()) {
-
-                                                               if (!table.modules.frozenRows.getDisplayIndex()) {
-
-                                                                       table.modules.frozenRows.setDisplayIndex(this.getNextDisplayIndex());
-                                                               }
-
-                                                               displayIndex = table.modules.frozenRows.getDisplayIndex();
-
-                                                               displayIndex = self.setDisplayRows(table.modules.frozenRows.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
-
-                                                               if (displayIndex !== true) {
-
-                                                                       table.modules.frozenRows.setDisplayIndex(displayIndex);
-                                                               }
-                                                       }
-                                               }
-                                       } else {
-
-                                               skipStage = false;
-                                       }
-
-                               case "group":
-
-                                       if (!skipStage) {
-
-                                               if (table.options.groupBy && table.modExists("groupRows")) {
-
-                                                       if (!table.modules.groupRows.getDisplayIndex()) {
-
-                                                               table.modules.groupRows.setDisplayIndex(this.getNextDisplayIndex());
-                                                       }
-
-                                                       displayIndex = table.modules.groupRows.getDisplayIndex();
-
-                                                       displayIndex = self.setDisplayRows(table.modules.groupRows.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
-
-                                                       if (displayIndex !== true) {
-
-                                                               table.modules.groupRows.setDisplayIndex(displayIndex);
-                                                       }
-                                               }
-                                       } else {
-
-                                               skipStage = false;
-                                       }
-
-                               case "tree":
-
-                                       if (!skipStage) {
-
-                                               if (table.options.dataTree && table.modExists("dataTree")) {
-
-                                                       if (!table.modules.dataTree.getDisplayIndex()) {
-
-                                                               table.modules.dataTree.setDisplayIndex(this.getNextDisplayIndex());
-                                                       }
-
-                                                       displayIndex = table.modules.dataTree.getDisplayIndex();
-
-                                                       displayIndex = self.setDisplayRows(table.modules.dataTree.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
-
-                                                       if (displayIndex !== true) {
-
-                                                               table.modules.dataTree.setDisplayIndex(displayIndex);
-                                                       }
-                                               }
-                                       } else {
-
-                                               skipStage = false;
-                                       }
-
-                                       if (table.options.pagination && table.modExists("page") && !renderInPosition) {
-
-                                               if (table.modules.page.getMode() == "local") {
-
-                                                       table.modules.page.reset();
-                                               }
-                                       }
-
-                               case "page":
-
-                                       if (!skipStage) {
-
-                                               if (table.options.pagination && table.modExists("page")) {
-
-                                                       if (!table.modules.page.getDisplayIndex()) {
-
-                                                               table.modules.page.setDisplayIndex(this.getNextDisplayIndex());
-                                                       }
-
-                                                       displayIndex = table.modules.page.getDisplayIndex();
-
-                                                       if (table.modules.page.getMode() == "local") {
-
-                                                               table.modules.page.setMaxRows(this.getDisplayRows(displayIndex - 1).length);
-                                                       }
-
-                                                       displayIndex = self.setDisplayRows(table.modules.page.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
-
-                                                       if (displayIndex !== true) {
-
-                                                               table.modules.page.setDisplayIndex(displayIndex);
-                                                       }
-                                               }
-                                       } else {
-
-                                               skipStage = false;
-                                       }
-
-                       }
-
-                       if (Tabulator.prototype.helpers.elVisible(self.element)) {
-
-                               if (renderInPosition) {
-
-                                       self.reRenderInPosition();
-                               } else {
-
-                                       self.renderTable();
-
-                                       if (table.options.layoutColumnsOnNewData) {
-
-                                               self.table.columnManager.redraw(true);
-                                       }
-                               }
-                       }
-
-                       if (table.modExists("columnCalcs")) {
-
-                               table.modules.columnCalcs.recalc(this.activeRows);
-                       }
-               }
-       };
-
-       //regenerate row numbers for row number formatter if in use
-
-       RowManager.prototype.regenerateRowNumbers = function () {
-               var _this14 = this;
-
-               if (this.rowNumColumn) {
-
-                       this.activeRows.forEach(function (row) {
-
-                               var cell = row.getCell(_this14.rowNumColumn);
-
-                               if (cell) {
-
-                                       cell._generateContents();
-                               }
-                       });
-               }
-       };
-
-       RowManager.prototype.setActiveRows = function (activeRows) {
-
-               this.activeRows = activeRows;
-
-               this.activeRowsCount = this.activeRows.length;
-       };
-
-       //reset display rows array
-
-       RowManager.prototype.resetDisplayRows = function () {
-
-               this.displayRows = [];
-
-               this.displayRows.push(this.activeRows.slice(0));
-
-               this.displayRowsCount = this.displayRows[0].length;
-
-               if (this.table.modExists("frozenRows")) {
-
-                       this.table.modules.frozenRows.setDisplayIndex(0);
-               }
-
-               if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-
-                       this.table.modules.groupRows.setDisplayIndex(0);
-               }
-
-               if (this.table.options.pagination && this.table.modExists("page")) {
-
-                       this.table.modules.page.setDisplayIndex(0);
-               }
-       };
-
-       RowManager.prototype.getNextDisplayIndex = function () {
-
-               return this.displayRows.length;
-       };
-
-       //set display row pipeline data
-
-       RowManager.prototype.setDisplayRows = function (displayRows, index) {
-
-               var output = true;
-
-               if (index && typeof this.displayRows[index] != "undefined") {
-
-                       this.displayRows[index] = displayRows;
-
-                       output = true;
-               } else {
-
-                       this.displayRows.push(displayRows);
-
-                       output = index = this.displayRows.length - 1;
-               }
-
-               if (index == this.displayRows.length - 1) {
-
-                       this.displayRowsCount = this.displayRows[this.displayRows.length - 1].length;
-               }
-
-               return output;
-       };
-
-       RowManager.prototype.getDisplayRows = function (index) {
-
-               if (typeof index == "undefined") {
-
-                       return this.displayRows.length ? this.displayRows[this.displayRows.length - 1] : [];
-               } else {
-
-                       return this.displayRows[index] || [];
-               }
-       };
-
-       RowManager.prototype.getVisibleRows = function (viewable) {
-
-               var topEdge = this.element.scrollTop,
-                   bottomEdge = this.element.clientHeight + topEdge,
-                   topFound = false,
-                   topRow = 0,
-                   bottomRow = 0,
-                   rows = this.getDisplayRows();
-
-               if (viewable) {
-
-                       this.getDisplayRows();
-
-                       for (var i = this.vDomTop; i <= this.vDomBottom; i++) {
-
-                               if (rows[i]) {
-
-                                       if (!topFound) {
-
-                                               if (topEdge - rows[i].getElement().offsetTop >= 0) {
-
-                                                       topRow = i;
-                                               } else {
-
-                                                       topFound = true;
-
-                                                       if (bottomEdge - rows[i].getElement().offsetTop >= 0) {
-
-                                                               bottomRow = i;
-                                                       } else {
-
-                                                               break;
-                                                       }
-                                               }
-                                       } else {
-
-                                               if (bottomEdge - rows[i].getElement().offsetTop >= 0) {
-
-                                                       bottomRow = i;
-                                               } else {
-
-                                                       break;
-                                               }
-                                       }
-                               }
-                       }
-               } else {
-
-                       topRow = this.vDomTop;
-
-                       bottomRow = this.vDomBottom;
-               }
-
-               return rows.slice(topRow, bottomRow + 1);
-       };
-
-       //repeat action accross display rows
-
-       RowManager.prototype.displayRowIterator = function (callback) {
-
-               this.displayRows.forEach(callback);
-
-               this.displayRowsCount = this.displayRows[this.displayRows.length - 1].length;
-       };
-
-       //return only actual rows (not group headers etc)
-
-       RowManager.prototype.getRows = function (active) {
-
-               var rows;
-
-               switch (active) {
-
-                       case "active":
-
-                               rows = this.activeRows;
-
-                               break;
-
-                       case "display":
-
-                               rows = this.table.rowManager.getDisplayRows();
-
-                               break;
-
-                       case "visible":
-
-                               rows = this.getVisibleRows(true);
-
-                               break;
-
-                       default:
-
-                               rows = this.rows;
-
-               }
-
-               return rows;
-       };
-
-       ///////////////// Table Rendering /////////////////
-
-
-       //trigger rerender of table in current position
-
-       RowManager.prototype.reRenderInPosition = function (callback) {
-
-               if (this.getRenderMode() == "virtual") {
-
-                       if (this.redrawBlock) {
-
-                               if (callback) {
-
-                                       callback();
-                               } else {
-
-                                       this.redrawBlockRederInPosition = true;
-                               }
-                       } else {
-
-                               var scrollTop = this.element.scrollTop;
-
-                               var topRow = false;
-
-                               var topOffset = false;
-
-                               var left = this.scrollLeft;
-
-                               var rows = this.getDisplayRows();
-
-                               for (var i = this.vDomTop; i <= this.vDomBottom; i++) {
-
-                                       if (rows[i]) {
-
-                                               var diff = scrollTop - rows[i].getElement().offsetTop;
-
-                                               if (topOffset === false || Math.abs(diff) < topOffset) {
-
-                                                       topOffset = diff;
-
-                                                       topRow = i;
-                                               } else {
-
-                                                       break;
-                                               }
-                                       }
-                               }
-
-                               if (callback) {
-
-                                       callback();
-                               }
-
-                               this._virtualRenderFill(topRow === false ? this.displayRowsCount - 1 : topRow, true, topOffset || 0);
-
-                               this.scrollHorizontal(left);
-                       }
-               } else {
-
-                       this.renderTable();
-
-                       if (callback) {
-
-                               callback();
-                       }
-               }
-       };
-
-       RowManager.prototype.setRenderMode = function () {
-
-               if (this.table.options.virtualDom) {
-
-                       this.renderMode = "virtual";
-
-                       if (this.table.element.clientHeight || this.table.options.height) {
-
-                               this.fixedHeight = true;
-                       } else {
-
-                               this.fixedHeight = false;
-                       }
-               } else {
-
-                       this.renderMode = "classic";
-               }
-       };
-
-       RowManager.prototype.getRenderMode = function () {
-
-               return this.renderMode;
-       };
-
-       RowManager.prototype.renderTable = function () {
-
-               this.table.options.renderStarted.call(this.table);
-
-               this.element.scrollTop = 0;
-
-               switch (this.renderMode) {
-
-                       case "classic":
-
-                               this._simpleRender();
-
-                               break;
-
-                       case "virtual":
-
-                               this._virtualRenderFill();
-
-                               break;
-
-               }
-
-               if (this.firstRender) {
-
-                       if (this.displayRowsCount) {
-
-                               this.firstRender = false;
-
-                               this.table.modules.layout.layout();
-                       } else {
-
-                               this.renderEmptyScroll();
-                       }
-               }
-
-               if (this.table.modExists("frozenColumns")) {
-
-                       this.table.modules.frozenColumns.layout();
-               }
-
-               if (!this.displayRowsCount) {
-
-                       if (this.table.options.placeholder) {
-
-                               this.table.options.placeholder.setAttribute("tabulator-render-mode", this.renderMode);
-
-                               this.getElement().appendChild(this.table.options.placeholder);
-
-                               this.table.options.placeholder.style.width = this.table.columnManager.getWidth() + "px";
-                       }
-               }
-
-               this.table.options.renderComplete.call(this.table);
-       };
-
-       //simple render on heightless table
-
-       RowManager.prototype._simpleRender = function () {
-
-               this._clearVirtualDom();
-
-               if (this.displayRowsCount) {
-
-                       this.checkClassicModeGroupHeaderWidth();
-               } else {
-
-                       this.renderEmptyScroll();
-               }
-       };
-
-       RowManager.prototype.checkClassicModeGroupHeaderWidth = function () {
-
-               var self = this,
-                   element = this.tableElement,
-                   onlyGroupHeaders = true;
-
-               self.getDisplayRows().forEach(function (row, index) {
-
-                       self.styleRow(row, index);
-
-                       element.appendChild(row.getElement());
-
-                       row.initialize(true);
-
-                       if (row.type !== "group") {
-
-                               onlyGroupHeaders = false;
-                       }
-               });
-
-               if (onlyGroupHeaders) {
-
-                       element.style.minWidth = self.table.columnManager.getWidth() + "px";
-               } else {
-
-                       element.style.minWidth = "";
-               }
-       };
-
-       //show scrollbars on empty table div
-
-       RowManager.prototype.renderEmptyScroll = function () {
-
-               if (this.table.options.placeholder) {
-
-                       this.tableElement.style.display = "none";
-               } else {
-
-                       this.tableElement.style.minWidth = this.table.columnManager.getWidth() + "px";
-
-                       this.tableElement.style.minHeight = "1px";
-
-                       this.tableElement.style.visibility = "hidden";
-               }
-       };
-
-       RowManager.prototype._clearVirtualDom = function () {
-
-               var element = this.tableElement;
-
-               if (this.table.options.placeholder && this.table.options.placeholder.parentNode) {
-
-                       this.table.options.placeholder.parentNode.removeChild(this.table.options.placeholder);
-               }
-
-               // element.children.detach();
-
-               while (element.firstChild) {
-                       element.removeChild(element.firstChild);
-               }element.style.paddingTop = "";
-
-               element.style.paddingBottom = "";
-
-               element.style.minWidth = "";
-
-               element.style.minHeight = "";
-
-               element.style.display = "";
-
-               element.style.visibility = "";
-
-               this.scrollTop = 0;
-
-               this.scrollLeft = 0;
-
-               this.vDomTop = 0;
-
-               this.vDomBottom = 0;
-
-               this.vDomTopPad = 0;
-
-               this.vDomBottomPad = 0;
-       };
-
-       RowManager.prototype.styleRow = function (row, index) {
-
-               var rowEl = row.getElement();
-
-               if (index % 2) {
-
-                       rowEl.classList.add("tabulator-row-even");
-
-                       rowEl.classList.remove("tabulator-row-odd");
-               } else {
-
-                       rowEl.classList.add("tabulator-row-odd");
-
-                       rowEl.classList.remove("tabulator-row-even");
-               }
-       };
-
-       //full virtual render
-
-       RowManager.prototype._virtualRenderFill = function (position, forceMove, offset) {
-
-               var self = this,
-                   element = self.tableElement,
-                   holder = self.element,
-                   topPad = 0,
-                   rowsHeight = 0,
-                   topPadHeight = 0,
-                   i = 0,
-                   onlyGroupHeaders = true,
-                   rows = self.getDisplayRows();
-
-               position = position || 0;
-
-               offset = offset || 0;
-
-               if (!position) {
-
-                       self._clearVirtualDom();
-               } else {
-
-                       while (element.firstChild) {
-                               element.removeChild(element.firstChild);
-                       } //check if position is too close to bottom of table
-
-                       var heightOccupied = (self.displayRowsCount - position + 1) * self.vDomRowHeight;
-
-                       if (heightOccupied < self.height) {
-
-                               position -= Math.ceil((self.height - heightOccupied) / self.vDomRowHeight);
-
-                               if (position < 0) {
-
-                                       position = 0;
-                               }
-                       }
-
-                       //calculate initial pad
-
-                       topPad = Math.min(Math.max(Math.floor(self.vDomWindowBuffer / self.vDomRowHeight), self.vDomWindowMinMarginRows), position);
-
-                       position -= topPad;
-               }
-
-               if (self.displayRowsCount && Tabulator.prototype.helpers.elVisible(self.element)) {
-
-                       self.vDomTop = position;
-
-                       self.vDomBottom = position - 1;
-
-                       while ((rowsHeight <= self.height + self.vDomWindowBuffer || i < self.vDomWindowMinTotalRows) && self.vDomBottom < self.displayRowsCount - 1) {
-
-                               var index = self.vDomBottom + 1,
-                                   row = rows[index],
-                                   rowHeight = 0;
-
-                               self.styleRow(row, index);
-
-                               element.appendChild(row.getElement());
-
-                               if (!row.initialized) {
-
-                                       row.initialize(true);
-                               } else {
-
-                                       if (!row.heightInitialized) {
-
-                                               row.normalizeHeight(true);
-                                       }
-                               }
-
-                               rowHeight = row.getHeight();
-
-                               if (i < topPad) {
-
-                                       topPadHeight += rowHeight;
-                               } else {
-
-                                       rowsHeight += rowHeight;
-                               }
-
-                               if (rowHeight > this.vDomWindowBuffer) {
-
-                                       this.vDomWindowBuffer = rowHeight * 2;
-                               }
-
-                               if (row.type !== "group") {
-
-                                       onlyGroupHeaders = false;
-                               }
-
-                               self.vDomBottom++;
-
-                               i++;
-                       }
-
-                       if (!position) {
-
-                               this.vDomTopPad = 0;
-
-                               //adjust rowheight to match average of rendered elements
-
-                               self.vDomRowHeight = Math.floor((rowsHeight + topPadHeight) / i);
-
-                               self.vDomBottomPad = self.vDomRowHeight * (self.displayRowsCount - self.vDomBottom - 1);
-
-                               self.vDomScrollHeight = topPadHeight + rowsHeight + self.vDomBottomPad - self.height;
-                       } else {
-
-                               self.vDomTopPad = !forceMove ? self.scrollTop - topPadHeight : self.vDomRowHeight * this.vDomTop + offset;
-
-                               self.vDomBottomPad = self.vDomBottom == self.displayRowsCount - 1 ? 0 : Math.max(self.vDomScrollHeight - self.vDomTopPad - rowsHeight - topPadHeight, 0);
-                       }
-
-                       element.style.paddingTop = self.vDomTopPad + "px";
-
-                       element.style.paddingBottom = self.vDomBottomPad + "px";
-
-                       if (forceMove) {
-
-                               this.scrollTop = self.vDomTopPad + topPadHeight + offset - (this.element.scrollWidth > this.element.clientWidth ? this.element.offsetHeight - this.element.clientHeight : 0);
-                       }
-
-                       this.scrollTop = Math.min(this.scrollTop, this.element.scrollHeight - this.height);
-
-                       //adjust for horizontal scrollbar if present (and not at top of table)
-
-                       if (this.element.scrollWidth > this.element.offsetWidth && forceMove) {
-
-                               this.scrollTop += this.element.offsetHeight - this.element.clientHeight;
-                       }
-
-                       this.vDomScrollPosTop = this.scrollTop;
-
-                       this.vDomScrollPosBottom = this.scrollTop;
-
-                       holder.scrollTop = this.scrollTop;
-
-                       element.style.minWidth = onlyGroupHeaders ? self.table.columnManager.getWidth() + "px" : "";
-
-                       if (self.table.options.groupBy) {
-
-                               if (self.table.modules.layout.getMode() != "fitDataFill" && self.displayRowsCount == self.table.modules.groupRows.countGroups()) {
-
-                                       self.tableElement.style.minWidth = self.table.columnManager.getWidth();
-                               }
-                       }
-               } else {
-
-                       this.renderEmptyScroll();
-               }
-
-               if (!this.fixedHeight) {
-
-                       this.adjustTableSize();
-               }
-       };
-
-       //handle vertical scrolling
-
-       RowManager.prototype.scrollVertical = function (dir) {
-
-               var topDiff = this.scrollTop - this.vDomScrollPosTop;
-
-               var bottomDiff = this.scrollTop - this.vDomScrollPosBottom;
-
-               var margin = this.vDomWindowBuffer * 2;
-
-               if (-topDiff > margin || bottomDiff > margin) {
-
-                       //if big scroll redraw table;
-
-                       var left = this.scrollLeft;
-
-                       this._virtualRenderFill(Math.floor(this.element.scrollTop / this.element.scrollHeight * this.displayRowsCount));
-
-                       this.scrollHorizontal(left);
-               } else {
-
-                       if (dir) {
-
-                               //scrolling up
-
-                               if (topDiff < 0) {
-
-                                       this._addTopRow(-topDiff);
-                               }
-
-                               if (bottomDiff < 0) {
-
-                                       //hide bottom row if needed
-
-                                       if (this.vDomScrollHeight - this.scrollTop > this.vDomWindowBuffer) {
-
-                                               this._removeBottomRow(-bottomDiff);
-                                       } else {
-
-                                               this.vDomScrollPosBottom = this.scrollTop;
-                                       }
-                               }
-                       } else {
-
-                               //scrolling down
-
-                               if (topDiff >= 0) {
-
-                                       //hide top row if needed
-
-                                       if (this.scrollTop > this.vDomWindowBuffer) {
-
-                                               this._removeTopRow(topDiff);
-                                       } else {
-
-                                               this.vDomScrollPosTop = this.scrollTop;
-                                       }
-                               }
-
-                               if (bottomDiff >= 0) {
-
-                                       this._addBottomRow(bottomDiff);
-                               }
-                       }
-               }
-       };
-
-       RowManager.prototype._addTopRow = function (topDiff) {
-               var i = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
-
-
-               var table = this.tableElement,
-                   rows = this.getDisplayRows();
-
-               if (this.vDomTop) {
-
-                       var index = this.vDomTop - 1,
-                           topRow = rows[index],
-                           topRowHeight = topRow.getHeight() || this.vDomRowHeight;
-
-                       //hide top row if needed
-
-                       if (topDiff >= topRowHeight) {
-
-                               this.styleRow(topRow, index);
-
-                               table.insertBefore(topRow.getElement(), table.firstChild);
-
-                               if (!topRow.initialized || !topRow.heightInitialized) {
-
-                                       this.vDomTopNewRows.push(topRow);
-
-                                       if (!topRow.heightInitialized) {
-
-                                               topRow.clearCellHeight();
-                                       }
-                               }
-
-                               topRow.initialize();
-
-                               this.vDomTopPad -= topRowHeight;
-
-                               if (this.vDomTopPad < 0) {
-
-                                       this.vDomTopPad = index * this.vDomRowHeight;
-                               }
-
-                               if (!index) {
-
-                                       this.vDomTopPad = 0;
-                               }
-
-                               table.style.paddingTop = this.vDomTopPad + "px";
-
-                               this.vDomScrollPosTop -= topRowHeight;
-
-                               this.vDomTop--;
-                       }
-
-                       topDiff = -(this.scrollTop - this.vDomScrollPosTop);
-
-                       if (topRow.getHeight() > this.vDomWindowBuffer) {
-
-                               this.vDomWindowBuffer = topRow.getHeight() * 2;
-                       }
-
-                       if (i < this.vDomMaxRenderChain && this.vDomTop && topDiff >= (rows[this.vDomTop - 1].getHeight() || this.vDomRowHeight)) {
-
-                               this._addTopRow(topDiff, i + 1);
-                       } else {
-
-                               this._quickNormalizeRowHeight(this.vDomTopNewRows);
-                       }
-               }
-       };
-
-       RowManager.prototype._removeTopRow = function (topDiff) {
-
-               var table = this.tableElement,
-                   topRow = this.getDisplayRows()[this.vDomTop],
-                   topRowHeight = topRow.getHeight() || this.vDomRowHeight;
-
-               if (topDiff >= topRowHeight) {
-
-                       var rowEl = topRow.getElement();
-
-                       rowEl.parentNode.removeChild(rowEl);
-
-                       this.vDomTopPad += topRowHeight;
-
-                       table.style.paddingTop = this.vDomTopPad + "px";
-
-                       this.vDomScrollPosTop += this.vDomTop ? topRowHeight : topRowHeight + this.vDomWindowBuffer;
-
-                       this.vDomTop++;
-
-                       topDiff = this.scrollTop - this.vDomScrollPosTop;
-
-                       this._removeTopRow(topDiff);
-               }
-       };
-
-       RowManager.prototype._addBottomRow = function (bottomDiff) {
-               var i = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
-
-
-               var table = this.tableElement,
-                   rows = this.getDisplayRows();
-
-               if (this.vDomBottom < this.displayRowsCount - 1) {
-
-                       var index = this.vDomBottom + 1,
-                           bottomRow = rows[index],
-                           bottomRowHeight = bottomRow.getHeight() || this.vDomRowHeight;
-
-                       //hide bottom row if needed
-
-                       if (bottomDiff >= bottomRowHeight) {
-
-                               this.styleRow(bottomRow, index);
-
-                               table.appendChild(bottomRow.getElement());
-
-                               if (!bottomRow.initialized || !bottomRow.heightInitialized) {
-
-                                       this.vDomBottomNewRows.push(bottomRow);
-
-                                       if (!bottomRow.heightInitialized) {
-
-                                               bottomRow.clearCellHeight();
-                                       }
-                               }
-
-                               bottomRow.initialize();
-
-                               this.vDomBottomPad -= bottomRowHeight;
-
-                               if (this.vDomBottomPad < 0 || index == this.displayRowsCount - 1) {
-
-                                       this.vDomBottomPad = 0;
-                               }
-
-                               table.style.paddingBottom = this.vDomBottomPad + "px";
-
-                               this.vDomScrollPosBottom += bottomRowHeight;
-
-                               this.vDomBottom++;
-                       }
-
-                       bottomDiff = this.scrollTop - this.vDomScrollPosBottom;
-
-                       if (bottomRow.getHeight() > this.vDomWindowBuffer) {
-
-                               this.vDomWindowBuffer = bottomRow.getHeight() * 2;
-                       }
-
-                       if (i < this.vDomMaxRenderChain && this.vDomBottom < this.displayRowsCount - 1 && bottomDiff >= (rows[this.vDomBottom + 1].getHeight() || this.vDomRowHeight)) {
-
-                               this._addBottomRow(bottomDiff, i + 1);
-                       } else {
-
-                               this._quickNormalizeRowHeight(this.vDomBottomNewRows);
-                       }
-               }
-       };
-
-       RowManager.prototype._removeBottomRow = function (bottomDiff) {
-
-               var table = this.tableElement,
-                   bottomRow = this.getDisplayRows()[this.vDomBottom],
-                   bottomRowHeight = bottomRow.getHeight() || this.vDomRowHeight;
-
-               if (bottomDiff >= bottomRowHeight) {
-
-                       var rowEl = bottomRow.getElement();
-
-                       if (rowEl.parentNode) {
-
-                               rowEl.parentNode.removeChild(rowEl);
-                       }
-
-                       this.vDomBottomPad += bottomRowHeight;
-
-                       if (this.vDomBottomPad < 0) {
-
-                               this.vDomBottomPad = 0;
-                       }
-
-                       table.style.paddingBottom = this.vDomBottomPad + "px";
-
-                       this.vDomScrollPosBottom -= bottomRowHeight;
-
-                       this.vDomBottom--;
-
-                       bottomDiff = -(this.scrollTop - this.vDomScrollPosBottom);
-
-                       this._removeBottomRow(bottomDiff);
-               }
-       };
-
-       RowManager.prototype._quickNormalizeRowHeight = function (rows) {
-
-               rows.forEach(function (row) {
-
-                       row.calcHeight();
-               });
-
-               rows.forEach(function (row) {
-
-                       row.setCellHeight();
-               });
-
-               rows.length = 0;
-       };
-
-       //normalize height of active rows
-
-       RowManager.prototype.normalizeHeight = function () {
-
-               this.activeRows.forEach(function (row) {
-
-                       row.normalizeHeight();
-               });
-       };
-
-       //adjust the height of the table holder to fit in the Tabulator element
-
-       RowManager.prototype.adjustTableSize = function () {
-
-               var initialHeight = this.element.clientHeight,
-                   modExists;
-
-               if (this.renderMode === "virtual") {
-
-                       var otherHeight = this.columnManager.getElement().offsetHeight + (this.table.footerManager && !this.table.footerManager.external ? this.table.footerManager.getElement().offsetHeight : 0);
-
-                       if (this.fixedHeight) {
-
-                               this.element.style.minHeight = "calc(100% - " + otherHeight + "px)";
-
-                               this.element.style.height = "calc(100% - " + otherHeight + "px)";
-
-                               this.element.style.maxHeight = "calc(100% - " + otherHeight + "px)";
-                       } else {
-
-                               this.element.style.height = "";
-
-                               this.element.style.height = this.table.element.clientHeight - otherHeight + "px";
-
-                               this.element.scrollTop = this.scrollTop;
-                       }
-
-                       this.height = this.element.clientHeight;
-
-                       this.vDomWindowBuffer = this.table.options.virtualDomBuffer || this.height;
-
-                       //check if the table has changed size when dealing with variable height tables
-
-                       if (!this.fixedHeight && initialHeight != this.element.clientHeight) {
-
-                               modExists = this.table.modExists("resizeTable");
-
-                               if (modExists && !this.table.modules.resizeTable.autoResize || !modExists) {
-
-                                       this.redraw();
-                               }
-                       }
-               }
-       };
-
-       //renitialize all rows
-
-       RowManager.prototype.reinitialize = function () {
-
-               this.rows.forEach(function (row) {
-
-                       row.reinitialize();
-               });
-       };
-
-       //prevent table from being redrawn
-
-       RowManager.prototype.blockRedraw = function () {
-
-               this.redrawBlock = true;
-
-               this.redrawBlockRestoreConfig = false;
-       };
-
-       //restore table redrawing
-
-       RowManager.prototype.restoreRedraw = function () {
-
-               this.redrawBlock = false;
-
-               if (this.redrawBlockRestoreConfig) {
-
-                       this.refreshActiveData(this.redrawBlockRestoreConfig.stage, this.redrawBlockRestoreConfig.skipStage, this.redrawBlockRestoreConfig.renderInPosition);
-
-                       this.redrawBlockRestoreConfig = false;
-               } else {
-
-                       if (this.redrawBlockRederInPosition) {
-
-                               this.reRenderInPosition();
-                       }
-               }
-
-               this.redrawBlockRederInPosition = false;
-       };
-
-       //redraw table
-
-       RowManager.prototype.redraw = function (force) {
-
-               var pos = 0,
-                   left = this.scrollLeft;
-
-               this.adjustTableSize();
-
-               this.table.tableWidth = this.table.element.clientWidth;
-
-               if (!force) {
-
-                       if (this.renderMode == "classic") {
-
-                               if (this.table.options.groupBy) {
-
-                                       this.refreshActiveData("group", false, false);
-                               } else {
-
-                                       this._simpleRender();
-                               }
-                       } else {
-
-                               this.reRenderInPosition();
-
-                               this.scrollHorizontal(left);
-                       }
-
-                       if (!this.displayRowsCount) {
-
-                               if (this.table.options.placeholder) {
-
-                                       this.getElement().appendChild(this.table.options.placeholder);
-                               }
-                       }
-               } else {
-
-                       this.renderTable();
-               }
-       };
-
-       RowManager.prototype.resetScroll = function () {
-
-               this.element.scrollLeft = 0;
-
-               this.element.scrollTop = 0;
-
-               if (this.table.browser === "ie") {
-
-                       var event = document.createEvent("Event");
-
-                       event.initEvent("scroll", false, true);
-
-                       this.element.dispatchEvent(event);
-               } else {
-
-                       this.element.dispatchEvent(new Event('scroll'));
-               }
-       };
-
-       //public row object
-
-       var RowComponent = function RowComponent(row) {
-
-               this._row = row;
-       };
-
-       RowComponent.prototype.getData = function (transform) {
-
-               return this._row.getData(transform);
-       };
-
-       RowComponent.prototype.getElement = function () {
-
-               return this._row.getElement();
-       };
-
-       RowComponent.prototype.getCells = function () {
-
-               var cells = [];
-
-               this._row.getCells().forEach(function (cell) {
-
-                       cells.push(cell.getComponent());
-               });
-
-               return cells;
-       };
-
-       RowComponent.prototype.getCell = function (column) {
-
-               var cell = this._row.getCell(column);
-
-               return cell ? cell.getComponent() : false;
-       };
-
-       RowComponent.prototype.getIndex = function () {
-
-               return this._row.getData("data")[this._row.table.options.index];
-       };
-
-       RowComponent.prototype.getPosition = function (active) {
-
-               return this._row.table.rowManager.getRowPosition(this._row, active);
-       };
-
-       RowComponent.prototype.delete = function () {
-
-               return this._row.delete();
-       };
-
-       RowComponent.prototype.scrollTo = function () {
-
-               return this._row.table.rowManager.scrollToRow(this._row);
-       };
-
-       RowComponent.prototype.pageTo = function () {
-
-               if (this._row.table.modExists("page", true)) {
-
-                       return this._row.table.modules.page.setPageToRow(this._row);
-               }
-       };
-
-       RowComponent.prototype.move = function (to, after) {
-
-               this._row.moveToRow(to, after);
-       };
-
-       RowComponent.prototype.update = function (data) {
-
-               return this._row.updateData(data);
-       };
-
-       RowComponent.prototype.normalizeHeight = function () {
-
-               this._row.normalizeHeight(true);
-       };
-
-       RowComponent.prototype.select = function () {
-
-               this._row.table.modules.selectRow.selectRows(this._row);
-       };
-
-       RowComponent.prototype.deselect = function () {
-
-               this._row.table.modules.selectRow.deselectRows(this._row);
-       };
-
-       RowComponent.prototype.toggleSelect = function () {
-
-               this._row.table.modules.selectRow.toggleRow(this._row);
-       };
-
-       RowComponent.prototype.isSelected = function () {
-
-               return this._row.table.modules.selectRow.isRowSelected(this._row);
-       };
-
-       RowComponent.prototype._getSelf = function () {
-
-               return this._row;
-       };
-
-       RowComponent.prototype.freeze = function () {
-
-               if (this._row.table.modExists("frozenRows", true)) {
-
-                       this._row.table.modules.frozenRows.freezeRow(this._row);
-               }
-       };
-
-       RowComponent.prototype.unfreeze = function () {
-
-               if (this._row.table.modExists("frozenRows", true)) {
-
-                       this._row.table.modules.frozenRows.unfreezeRow(this._row);
-               }
-       };
-
-       RowComponent.prototype.treeCollapse = function () {
-
-               if (this._row.table.modExists("dataTree", true)) {
-
-                       this._row.table.modules.dataTree.collapseRow(this._row);
-               }
-       };
-
-       RowComponent.prototype.treeExpand = function () {
-
-               if (this._row.table.modExists("dataTree", true)) {
-
-                       this._row.table.modules.dataTree.expandRow(this._row);
-               }
-       };
-
-       RowComponent.prototype.treeToggle = function () {
-
-               if (this._row.table.modExists("dataTree", true)) {
-
-                       this._row.table.modules.dataTree.toggleRow(this._row);
-               }
-       };
-
-       RowComponent.prototype.getTreeParent = function () {
-
-               if (this._row.table.modExists("dataTree", true)) {
-
-                       return this._row.table.modules.dataTree.getTreeParent(this._row);
-               }
-
-               return false;
-       };
-
-       RowComponent.prototype.getTreeChildren = function () {
-
-               if (this._row.table.modExists("dataTree", true)) {
-
-                       return this._row.table.modules.dataTree.getTreeChildren(this._row);
-               }
-
-               return false;
-       };
-
-       RowComponent.prototype.reformat = function () {
-
-               return this._row.reinitialize();
-       };
-
-       RowComponent.prototype.getGroup = function () {
-
-               return this._row.getGroup().getComponent();
-       };
-
-       RowComponent.prototype.getTable = function () {
-
-               return this._row.table;
-       };
-
-       RowComponent.prototype.getNextRow = function () {
-
-               var row = this._row.nextRow();
-
-               return row ? row.getComponent() : row;
-       };
-
-       RowComponent.prototype.getPrevRow = function () {
-
-               var row = this._row.prevRow();
-
-               return row ? row.getComponent() : row;
-       };
-
-       var Row = function Row(data, parent) {
-               var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "row";
-
-
-               this.table = parent.table;
-
-               this.parent = parent;
-
-               this.data = {};
-
-               this.type = type; //type of element
-
-               this.element = this.createElement();
-
-               this.modules = {}; //hold module variables;
-
-               this.cells = [];
-
-               this.height = 0; //hold element height
-
-               this.heightStyled = ""; //hold element height prestyled to improve render efficiency
-
-               this.manualHeight = false; //user has manually set row height
-
-               this.outerHeight = 0; //holde lements outer height
-
-               this.initialized = false; //element has been rendered
-
-               this.heightInitialized = false; //element has resized cells to fit
-
-
-               this.setData(data);
-
-               this.generateElement();
-       };
-
-       Row.prototype.createElement = function () {
-
-               var el = document.createElement("div");
-
-               el.classList.add("tabulator-row");
-
-               el.setAttribute("role", "row");
-
-               return el;
-       };
-
-       Row.prototype.getElement = function () {
-
-               return this.element;
-       };
-
-       Row.prototype.detachElement = function () {
-
-               if (this.element && this.element.parentNode) {
-
-                       this.element.parentNode.removeChild(this.element);
-               }
-       };
-
-       Row.prototype.generateElement = function () {
-
-               var self = this,
-                   dblTap,
-                   tapHold,
-                   tap;
-
-               //set row selection characteristics
-
-               if (self.table.options.selectable !== false && self.table.modExists("selectRow")) {
-
-                       self.table.modules.selectRow.initializeRow(this);
-               }
-
-               //setup movable rows
-
-               if (self.table.options.movableRows !== false && self.table.modExists("moveRow")) {
-
-                       self.table.modules.moveRow.initializeRow(this);
-               }
-
-               //setup data tree
-
-               if (self.table.options.dataTree !== false && self.table.modExists("dataTree")) {
-
-                       self.table.modules.dataTree.initializeRow(this);
-               }
-
-               //setup column colapse container
-
-               if (self.table.options.responsiveLayout === "collapse" && self.table.modExists("responsiveLayout")) {
-
-                       self.table.modules.responsiveLayout.initializeRow(this);
-               }
-
-               //set column menu
-
-               if (self.table.options.rowContextMenu && this.table.modExists("menu")) {
-
-                       self.table.modules.menu.initializeRow(this);
-               }
-
-               //handle row click events
-
-               if (self.table.options.rowClick) {
-
-                       self.element.addEventListener("click", function (e) {
-
-                               self.table.options.rowClick(e, self.getComponent());
-                       });
-               }
-
-               if (self.table.options.rowDblClick) {
-
-                       self.element.addEventListener("dblclick", function (e) {
-
-                               self.table.options.rowDblClick(e, self.getComponent());
-                       });
-               }
-
-               if (self.table.options.rowContext) {
-
-                       self.element.addEventListener("contextmenu", function (e) {
-
-                               self.table.options.rowContext(e, self.getComponent());
-                       });
-               }
-
-               //handle mouse events
-
-               if (self.table.options.rowMouseEnter) {
-
-                       self.element.addEventListener("mouseenter", function (e) {
-
-                               self.table.options.rowMouseEnter(e, self.getComponent());
-                       });
-               }
-
-               if (self.table.options.rowMouseLeave) {
-
-                       self.element.addEventListener("mouseleave", function (e) {
-
-                               self.table.options.rowMouseLeave(e, self.getComponent());
-                       });
-               }
-
-               if (self.table.options.rowMouseOver) {
-
-                       self.element.addEventListener("mouseover", function (e) {
-
-                               self.table.options.rowMouseOver(e, self.getComponent());
-                       });
-               }
-
-               if (self.table.options.rowMouseOut) {
-
-                       self.element.addEventListener("mouseout", function (e) {
-
-                               self.table.options.rowMouseOut(e, self.getComponent());
-                       });
-               }
-
-               if (self.table.options.rowMouseMove) {
-
-                       self.element.addEventListener("mousemove", function (e) {
-
-                               self.table.options.rowMouseMove(e, self.getComponent());
-                       });
-               }
-
-               if (self.table.options.rowTap) {
-
-                       tap = false;
-
-                       self.element.addEventListener("touchstart", function (e) {
-
-                               tap = true;
-                       }, { passive: true });
-
-                       self.element.addEventListener("touchend", function (e) {
-
-                               if (tap) {
-
-                                       self.table.options.rowTap(e, self.getComponent());
-                               }
-
-                               tap = false;
-                       });
-               }
-
-               if (self.table.options.rowDblTap) {
-
-                       dblTap = null;
-
-                       self.element.addEventListener("touchend", function (e) {
-
-                               if (dblTap) {
-
-                                       clearTimeout(dblTap);
-
-                                       dblTap = null;
-
-                                       self.table.options.rowDblTap(e, self.getComponent());
-                               } else {
-
-                                       dblTap = setTimeout(function () {
-
-                                               clearTimeout(dblTap);
-
-                                               dblTap = null;
-                                       }, 300);
-                               }
-                       });
-               }
-
-               if (self.table.options.rowTapHold) {
-
-                       tapHold = null;
-
-                       self.element.addEventListener("touchstart", function (e) {
-
-                               clearTimeout(tapHold);
-
-                               tapHold = setTimeout(function () {
-
-                                       clearTimeout(tapHold);
-
-                                       tapHold = null;
-
-                                       tap = false;
-
-                                       self.table.options.rowTapHold(e, self.getComponent());
-                               }, 1000);
-                       }, { passive: true });
-
-                       self.element.addEventListener("touchend", function (e) {
-
-                               clearTimeout(tapHold);
-
-                               tapHold = null;
-                       });
-               }
-       };
-
-       Row.prototype.generateCells = function () {
-
-               this.cells = this.table.columnManager.generateCells(this);
-       };
-
-       //functions to setup on first render
-
-       Row.prototype.initialize = function (force) {
-
-               var self = this;
-
-               if (!self.initialized || force) {
-
-                       self.deleteCells();
-
-                       while (self.element.firstChild) {
-                               self.element.removeChild(self.element.firstChild);
-                       } //handle frozen cells
-
-                       if (this.table.modExists("frozenColumns")) {
-
-                               this.table.modules.frozenColumns.layoutRow(this);
-                       }
-
-                       this.generateCells();
-
-                       self.cells.forEach(function (cell) {
-
-                               self.element.appendChild(cell.getElement());
-
-                               cell.cellRendered();
-                       });
-
-                       if (force) {
-
-                               self.normalizeHeight();
-                       }
-
-                       //setup movable rows
-
-                       if (self.table.options.dataTree && self.table.modExists("dataTree")) {
-
-                               self.table.modules.dataTree.layoutRow(this);
-                       }
-
-                       //setup column colapse container
-
-                       if (self.table.options.responsiveLayout === "collapse" && self.table.modExists("responsiveLayout")) {
-
-                               self.table.modules.responsiveLayout.layoutRow(this);
-                       }
-
-                       if (self.table.options.rowFormatter) {
-
-                               self.table.options.rowFormatter(self.getComponent());
-                       }
-
-                       //set resizable handles
-
-                       if (self.table.options.resizableRows && self.table.modExists("resizeRows")) {
-
-                               self.table.modules.resizeRows.initializeRow(self);
-                       }
-
-                       self.initialized = true;
-               }
-       };
-
-       Row.prototype.reinitializeHeight = function () {
-
-               this.heightInitialized = false;
-
-               if (this.element.offsetParent !== null) {
-
-                       this.normalizeHeight(true);
-               }
-       };
-
-       Row.prototype.reinitialize = function () {
-
-               this.initialized = false;
-
-               this.heightInitialized = false;
-
-               if (!this.manualHeight) {
-
-                       this.height = 0;
-
-                       this.heightStyled = "";
-               }
-
-               if (this.element.offsetParent !== null) {
-
-                       this.initialize(true);
-               }
-       };
-
-       //get heights when doing bulk row style calcs in virtual DOM
-
-       Row.prototype.calcHeight = function (force) {
-
-               var maxHeight = 0,
-                   minHeight = this.table.options.resizableRows ? this.element.clientHeight : 0;
-
-               this.cells.forEach(function (cell) {
-
-                       var height = cell.getHeight();
-
-                       if (height > maxHeight) {
-
-                               maxHeight = height;
-                       }
-               });
-
-               if (force) {
-
-                       this.height = Math.max(maxHeight, minHeight);
-               } else {
-
-                       this.height = this.manualHeight ? this.height : Math.max(maxHeight, minHeight);
-               }
-
-               this.heightStyled = this.height ? this.height + "px" : "";
-
-               this.outerHeight = this.element.offsetHeight;
-       };
-
-       //set of cells
-
-       Row.prototype.setCellHeight = function () {
-
-               this.cells.forEach(function (cell) {
-
-                       cell.setHeight();
-               });
-
-               this.heightInitialized = true;
-       };
-
-       Row.prototype.clearCellHeight = function () {
-
-               this.cells.forEach(function (cell) {
-
-                       cell.clearHeight();
-               });
-       };
-
-       //normalize the height of elements in the row
-
-       Row.prototype.normalizeHeight = function (force) {
-
-               if (force) {
-
-                       this.clearCellHeight();
-               }
-
-               this.calcHeight(force);
-
-               this.setCellHeight();
-       };
-
-       // Row.prototype.setHeight = function(height){
-
-       //      this.height = height;
-
-
-       //      this.setCellHeight();
-
-       // };
-
-
-       //set height of rows
-
-       Row.prototype.setHeight = function (height, force) {
-
-               if (this.height != height || force) {
-
-                       this.manualHeight = true;
-
-                       this.height = height;
-
-                       this.heightStyled = height ? height + "px" : "";
-
-                       this.setCellHeight();
-
-                       // this.outerHeight = this.element.outerHeight();
-
-                       this.outerHeight = this.element.offsetHeight;
-               }
-       };
-
-       //return rows outer height
-
-       Row.prototype.getHeight = function () {
-
-               return this.outerHeight;
-       };
-
-       //return rows outer Width
-
-       Row.prototype.getWidth = function () {
-
-               return this.element.offsetWidth;
-       };
-
-       //////////////// Cell Management /////////////////
-
-
-       Row.prototype.deleteCell = function (cell) {
-
-               var index = this.cells.indexOf(cell);
-
-               if (index > -1) {
-
-                       this.cells.splice(index, 1);
-               }
-       };
-
-       //////////////// Data Management /////////////////
-
-
-       Row.prototype.setData = function (data) {
-
-               if (this.table.modExists("mutator")) {
-
-                       data = this.table.modules.mutator.transformRow(data, "data");
-               }
-
-               this.data = data;
-
-               if (this.table.options.reactiveData && this.table.modExists("reactiveData", true)) {
-
-                       this.table.modules.reactiveData.watchRow(this);
-               }
-       };
-
-       //update the rows data
-
-       Row.prototype.updateData = function (updatedData) {
-               var _this15 = this;
-
-               var visible = Tabulator.prototype.helpers.elVisible(this.element),
-                   tempData = {},
-                   newRowData;
-
-               return new Promise(function (resolve, reject) {
-
-                       if (typeof updatedData === "string") {
-
-                               updatedData = JSON.parse(updatedData);
-                       }
-
-                       if (_this15.table.options.reactiveData && _this15.table.modExists("reactiveData", true)) {
-
-                               _this15.table.modules.reactiveData.block();
-                       }
-
-                       //mutate incomming data if needed
-
-                       if (_this15.table.modExists("mutator")) {
-
-                               tempData = Object.assign(tempData, _this15.data);
-
-                               tempData = Object.assign(tempData, updatedData);
-
-                               newRowData = _this15.table.modules.mutator.transformRow(tempData, "data", updatedData);
-                       } else {
-
-                               newRowData = updatedData;
-                       }
-
-                       //set data
-
-                       for (var attrname in newRowData) {
-
-                               _this15.data[attrname] = newRowData[attrname];
-                       }
-
-                       if (_this15.table.options.reactiveData && _this15.table.modExists("reactiveData", true)) {
-
-                               _this15.table.modules.reactiveData.unblock();
-                       }
-
-                       //update affected cells only
-
-                       for (var attrname in updatedData) {
-
-                               var columns = _this15.table.columnManager.getColumnsByFieldRoot(attrname);
-
-                               columns.forEach(function (column) {
-
-                                       var cell = _this15.getCell(column.getField());
-
-                                       if (cell) {
-
-                                               var value = column.getFieldValue(newRowData);
-
-                                               if (cell.getValue() != value) {
-
-                                                       cell.setValueProcessData(value);
-
-                                                       if (visible) {
-
-                                                               cell.cellRendered();
-                                                       }
-                                               }
-                                       }
-                               });
-                       }
-
-                       //Partial reinitialization if visible
-
-                       if (visible) {
-
-                               _this15.normalizeHeight(true);
-
-                               if (_this15.table.options.rowFormatter) {
-
-                                       _this15.table.options.rowFormatter(_this15.getComponent());
-                               }
-                       } else {
-
-                               _this15.initialized = false;
-
-                               _this15.height = 0;
-
-                               _this15.heightStyled = "";
-                       }
-
-                       if (_this15.table.options.dataTree !== false && _this15.table.modExists("dataTree") && _this15.table.modules.dataTree.redrawNeeded(updatedData)) {
-
-                               _this15.table.modules.dataTree.initializeRow(_this15);
-
-                               _this15.table.modules.dataTree.layoutRow(_this15);
-
-                               _this15.table.rowManager.refreshActiveData("tree", false, true);
-                       }
-
-                       //this.reinitialize();
-
-
-                       _this15.table.options.rowUpdated.call(_this15.table, _this15.getComponent());
-
-                       resolve();
-               });
-       };
-
-       Row.prototype.getData = function (transform) {
-
-               var self = this;
-
-               if (transform) {
-
-                       if (self.table.modExists("accessor")) {
-
-                               return self.table.modules.accessor.transformRow(self.data, transform);
-                       }
-               } else {
-
-                       return this.data;
-               }
-       };
-
-       Row.prototype.getCell = function (column) {
-
-               var match = false;
-
-               column = this.table.columnManager.findColumn(column);
-
-               match = this.cells.find(function (cell) {
-
-                       return cell.column === column;
-               });
-
-               return match;
-       };
-
-       Row.prototype.getCellIndex = function (findCell) {
-
-               return this.cells.findIndex(function (cell) {
-
-                       return cell === findCell;
-               });
-       };
-
-       Row.prototype.findNextEditableCell = function (index) {
-
-               var nextCell = false;
-
-               if (index < this.cells.length - 1) {
-
-                       for (var i = index + 1; i < this.cells.length; i++) {
-
-                               var cell = this.cells[i];
-
-                               if (cell.column.modules.edit && Tabulator.prototype.helpers.elVisible(cell.getElement())) {
-
-                                       var allowEdit = true;
-
-                                       if (typeof cell.column.modules.edit.check == "function") {
-
-                                               allowEdit = cell.column.modules.edit.check(cell.getComponent());
-                                       }
-
-                                       if (allowEdit) {
-
-                                               nextCell = cell;
-
-                                               break;
-                                       }
-                               }
-                       }
-               }
-
-               return nextCell;
-       };
-
-       Row.prototype.findPrevEditableCell = function (index) {
-
-               var prevCell = false;
-
-               if (index > 0) {
-
-                       for (var i = index - 1; i >= 0; i--) {
-
-                               var cell = this.cells[i],
-                                   allowEdit = true;
-
-                               if (cell.column.modules.edit && Tabulator.prototype.helpers.elVisible(cell.getElement())) {
-
-                                       if (typeof cell.column.modules.edit.check == "function") {
-
-                                               allowEdit = cell.column.modules.edit.check(cell.getComponent());
-                                       }
-
-                                       if (allowEdit) {
-
-                                               prevCell = cell;
-
-                                               break;
-                                       }
-                               }
-                       }
-               }
-
-               return prevCell;
-       };
-
-       Row.prototype.getCells = function () {
-
-               return this.cells;
-       };
-
-       Row.prototype.nextRow = function () {
-
-               var row = this.table.rowManager.nextDisplayRow(this, true);
-
-               return row || false;
-       };
-
-       Row.prototype.prevRow = function () {
-
-               var row = this.table.rowManager.prevDisplayRow(this, true);
-
-               return row || false;
-       };
-
-       Row.prototype.moveToRow = function (to, before) {
-
-               var toRow = this.table.rowManager.findRow(to);
-
-               if (toRow) {
-
-                       this.table.rowManager.moveRowActual(this, toRow, !before);
-
-                       this.table.rowManager.refreshActiveData("display", false, true);
-               } else {
-
-                       console.warn("Move Error - No matching row found:", to);
-               }
-       };
-
-       ///////////////////// Actions  /////////////////////
-
-
-       Row.prototype.delete = function () {
-               var _this16 = this;
-
-               return new Promise(function (resolve, reject) {
-
-                       var index, rows;
-
-                       if (_this16.table.options.history && _this16.table.modExists("history")) {
-
-                               if (_this16.table.options.groupBy && _this16.table.modExists("groupRows")) {
-
-                                       rows = _this16.getGroup().rows;
-
-                                       index = rows.indexOf(_this16);
-
-                                       if (index) {
-
-                                               index = rows[index - 1];
-                                       }
-                               } else {
-
-                                       index = _this16.table.rowManager.getRowIndex(_this16);
-
-                                       if (index) {
-
-                                               index = _this16.table.rowManager.rows[index - 1];
-                                       }
-                               }
-
-                               _this16.table.modules.history.action("rowDelete", _this16, { data: _this16.getData(), pos: !index, index: index });
-                       }
-
-                       _this16.deleteActual();
-
-                       resolve();
-               });
-       };
-
-       Row.prototype.deleteActual = function (blockRedraw) {
-
-               var index = this.table.rowManager.getRowIndex(this);
-
-               //deselect row if it is selected
-
-               if (this.table.modExists("selectRow")) {
-
-                       this.table.modules.selectRow._deselectRow(this, true);
-               }
-
-               //cancel edit if row is currently being edited
-
-               if (this.table.modExists("edit")) {
-
-                       if (this.table.modules.edit.currentCell.row === this) {
-
-                               this.table.modules.edit.cancelEdit();
-                       }
-               }
-
-               // if(this.table.options.dataTree && this.table.modExists("dataTree")){
-
-               //      this.table.modules.dataTree.collapseRow(this, true);
-
-               // }
-
-
-               //remove any reactive data watchers from row object
-
-               if (this.table.options.reactiveData && this.table.modExists("reactiveData", true)) {}
-
-               // this.table.modules.reactiveData.unwatchRow(this);
-
-               //remove from group
-
-               if (this.modules.group) {
-
-                       this.modules.group.removeRow(this);
-               }
-
-               this.table.rowManager.deleteRow(this, blockRedraw);
-
-               this.deleteCells();
-
-               this.initialized = false;
-
-               this.heightInitialized = false;
-
-               //recalc column calculations if present
-
-               if (this.table.modExists("columnCalcs")) {
-
-                       if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-
-                               this.table.modules.columnCalcs.recalcRowGroup(this);
-                       } else {
-
-                               this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
-                       }
-               }
-       };
-
-       Row.prototype.deleteCells = function () {
-
-               var cellCount = this.cells.length;
-
-               for (var i = 0; i < cellCount; i++) {
-
-                       this.cells[0].delete();
-               }
-       };
-
-       Row.prototype.wipe = function () {
-
-               this.deleteCells();
-
-               while (this.element.firstChild) {
-                       this.element.removeChild(this.element.firstChild);
-               }this.element = false;
-
-               this.modules = {};
-
-               if (this.element.parentNode) {
-
-                       this.element.parentNode.removeChild(this.element);
-               }
-       };
-
-       Row.prototype.getGroup = function () {
-
-               return this.modules.group || false;
-       };
-
-       //////////////// Object Generation /////////////////
-
-       Row.prototype.getComponent = function () {
-
-               return new RowComponent(this);
-       };
-
-       //public row object
-
-       var CellComponent = function CellComponent(cell) {
-
-               this._cell = cell;
-       };
-
-       CellComponent.prototype.getValue = function () {
-
-               return this._cell.getValue();
-       };
-
-       CellComponent.prototype.getOldValue = function () {
-
-               return this._cell.getOldValue();
-       };
-
-       CellComponent.prototype.getElement = function () {
-
-               return this._cell.getElement();
-       };
-
-       CellComponent.prototype.getRow = function () {
-
-               return this._cell.row.getComponent();
-       };
-
-       CellComponent.prototype.getData = function () {
-
-               return this._cell.row.getData();
-       };
-
-       CellComponent.prototype.getField = function () {
-
-               return this._cell.column.getField();
-       };
-
-       CellComponent.prototype.getColumn = function () {
-
-               return this._cell.column.getComponent();
-       };
-
-       CellComponent.prototype.setValue = function (value, mutate) {
-
-               if (typeof mutate == "undefined") {
-
-                       mutate = true;
-               }
-
-               this._cell.setValue(value, mutate);
-       };
-
-       CellComponent.prototype.restoreOldValue = function () {
-
-               this._cell.setValueActual(this._cell.getOldValue());
-       };
-
-       CellComponent.prototype.edit = function (force) {
-
-               return this._cell.edit(force);
-       };
-
-       CellComponent.prototype.cancelEdit = function () {
-
-               this._cell.cancelEdit();
-       };
-
-       CellComponent.prototype.nav = function () {
-
-               return this._cell.nav();
-       };
-
-       CellComponent.prototype.checkHeight = function () {
-
-               this._cell.checkHeight();
-       };
-
-       CellComponent.prototype.getTable = function () {
-
-               return this._cell.table;
-       };
-
-       CellComponent.prototype._getSelf = function () {
-
-               return this._cell;
-       };
-
-       var Cell = function Cell(column, row) {
-
-               this.table = column.table;
-
-               this.column = column;
-
-               this.row = row;
-
-               this.element = null;
-
-               this.value = null;
-
-               this.oldValue = null;
-
-               this.modules = {};
-
-               this.height = null;
-
-               this.width = null;
-
-               this.minWidth = null;
-
-               this.build();
-       };
-
-       //////////////// Setup Functions /////////////////
-
-
-       //generate element
-
-       Cell.prototype.build = function () {
-
-               this.generateElement();
-
-               this.setWidth();
-
-               this._configureCell();
-
-               this.setValueActual(this.column.getFieldValue(this.row.data));
-       };
-
-       Cell.prototype.generateElement = function () {
-
-               this.element = document.createElement('div');
-
-               this.element.className = "tabulator-cell";
-
-               this.element.setAttribute("role", "gridcell");
-
-               this.element = this.element;
-       };
-
-       Cell.prototype._configureCell = function () {
-
-               var self = this,
-                   cellEvents = self.column.cellEvents,
-                   element = self.element,
-                   field = this.column.getField(),
-                   vertAligns = {
-
-                       top: "flex-start",
-
-                       bottom: "flex-end",
-
-                       middle: "center"
-
-               },
-                   hozAligns = {
-
-                       left: "flex-start",
-
-                       right: "flex-end",
-
-                       center: "center"
-
-               };
-
-               //set text alignment
-
-               element.style.textAlign = self.column.hozAlign;
-
-               if (self.column.vertAlign) {
-
-                       element.style.display = "inline-flex";
-
-                       element.style.alignItems = vertAligns[self.column.vertAlign] || "";
-
-                       if (self.column.hozAlign) {
-
-                               element.style.justifyContent = hozAligns[self.column.hozAlign] || "";
-                       }
-               }
-
-               if (field) {
-
-                       element.setAttribute("tabulator-field", field);
-               }
-
-               //add class to cell if needed
-
-               if (self.column.definition.cssClass) {
-
-                       var classNames = self.column.definition.cssClass.split(" ");
-
-                       classNames.forEach(function (className) {
-
-                               element.classList.add(className);
-                       });
-               }
-
-               //update tooltip on mouse enter
-
-               if (this.table.options.tooltipGenerationMode === "hover") {
-
-                       element.addEventListener("mouseenter", function (e) {
-
-                               self._generateTooltip();
-                       });
-               }
-
-               self._bindClickEvents(cellEvents);
-
-               self._bindTouchEvents(cellEvents);
-
-               self._bindMouseEvents(cellEvents);
-
-               if (self.column.modules.edit) {
-
-                       self.table.modules.edit.bindEditor(self);
-               }
-
-               if (self.column.definition.rowHandle && self.table.options.movableRows !== false && self.table.modExists("moveRow")) {
-
-                       self.table.modules.moveRow.initializeCell(self);
-               }
-
-               //hide cell if not visible
-
-               if (!self.column.visible) {
-
-                       self.hide();
-               }
-       };
-
-       Cell.prototype._bindClickEvents = function (cellEvents) {
-
-               var self = this,
-                   element = self.element;
-
-               //set event bindings
-
-               if (cellEvents.cellClick || self.table.options.cellClick) {
-
-                       element.addEventListener("click", function (e) {
-
-                               var component = self.getComponent();
-
-                               if (cellEvents.cellClick) {
-
-                                       cellEvents.cellClick.call(self.table, e, component);
-                               }
-
-                               if (self.table.options.cellClick) {
-
-                                       self.table.options.cellClick.call(self.table, e, component);
-                               }
-                       });
-               }
-
-               if (cellEvents.cellDblClick || this.table.options.cellDblClick) {
-
-                       element.addEventListener("dblclick", function (e) {
-
-                               var component = self.getComponent();
-
-                               if (cellEvents.cellDblClick) {
-
-                                       cellEvents.cellDblClick.call(self.table, e, component);
-                               }
-
-                               if (self.table.options.cellDblClick) {
-
-                                       self.table.options.cellDblClick.call(self.table, e, component);
-                               }
-                       });
-               } else {
-
-                       element.addEventListener("dblclick", function (e) {
-
-                               if (self.table.modExists("edit")) {
-
-                                       if (self.table.modules.edit.currentCell === self) {
-
-                                               return; //prevent instant selection of editor content
-                                       }
-                               }
-
-                               e.preventDefault();
-
-                               try {
-
-                                       if (document.selection) {
-                                               // IE
-
-                                               var range = document.body.createTextRange();
-
-                                               range.moveToElementText(self.element);
-
-                                               range.select();
-                                       } else if (window.getSelection) {
-
-                                               var range = document.createRange();
-
-                                               range.selectNode(self.element);
-
-                                               window.getSelection().removeAllRanges();
-
-                                               window.getSelection().addRange(range);
-                                       }
-                               } catch (e) {}
-                       });
-               }
-
-               if (cellEvents.cellContext || this.table.options.cellContext) {
-
-                       element.addEventListener("contextmenu", function (e) {
-
-                               var component = self.getComponent();
-
-                               if (cellEvents.cellContext) {
-
-                                       cellEvents.cellContext.call(self.table, e, component);
-                               }
-
-                               if (self.table.options.cellContext) {
-
-                                       self.table.options.cellContext.call(self.table, e, component);
-                               }
-                       });
-               }
-       };
-
-       Cell.prototype._bindMouseEvents = function (cellEvents) {
-
-               var self = this,
-                   element = self.element;
-
-               if (cellEvents.cellMouseEnter || self.table.options.cellMouseEnter) {
-
-                       element.addEventListener("mouseenter", function (e) {
-
-                               var component = self.getComponent();
-
-                               if (cellEvents.cellMouseEnter) {
-
-                                       cellEvents.cellMouseEnter.call(self.table, e, component);
-                               }
-
-                               if (self.table.options.cellMouseEnter) {
-
-                                       self.table.options.cellMouseEnter.call(self.table, e, component);
-                               }
-                       });
-               }
-
-               if (cellEvents.cellMouseLeave || self.table.options.cellMouseLeave) {
-
-                       element.addEventListener("mouseleave", function (e) {
-
-                               var component = self.getComponent();
-
-                               if (cellEvents.cellMouseLeave) {
-
-                                       cellEvents.cellMouseLeave.call(self.table, e, component);
-                               }
-
-                               if (self.table.options.cellMouseLeave) {
-
-                                       self.table.options.cellMouseLeave.call(self.table, e, component);
-                               }
-                       });
-               }
-
-               if (cellEvents.cellMouseOver || self.table.options.cellMouseOver) {
-
-                       element.addEventListener("mouseover", function (e) {
-
-                               var component = self.getComponent();
-
-                               if (cellEvents.cellMouseOver) {
-
-                                       cellEvents.cellMouseOver.call(self.table, e, component);
-                               }
-
-                               if (self.table.options.cellMouseOver) {
-
-                                       self.table.options.cellMouseOver.call(self.table, e, component);
-                               }
-                       });
-               }
-
-               if (cellEvents.cellMouseOut || self.table.options.cellMouseOut) {
-
-                       element.addEventListener("mouseout", function (e) {
-
-                               var component = self.getComponent();
-
-                               if (cellEvents.cellMouseOut) {
-
-                                       cellEvents.cellMouseOut.call(self.table, e, component);
-                               }
-
-                               if (self.table.options.cellMouseOut) {
-
-                                       self.table.options.cellMouseOut.call(self.table, e, component);
-                               }
-                       });
-               }
-
-               if (cellEvents.cellMouseMove || self.table.options.cellMouseMove) {
-
-                       element.addEventListener("mousemove", function (e) {
-
-                               var component = self.getComponent();
-
-                               if (cellEvents.cellMouseMove) {
-
-                                       cellEvents.cellMouseMove.call(self.table, e, component);
-                               }
-
-                               if (self.table.options.cellMouseMove) {
-
-                                       self.table.options.cellMouseMove.call(self.table, e, component);
-                               }
-                       });
-               }
-       };
-
-       Cell.prototype._bindTouchEvents = function (cellEvents) {
-
-               var self = this,
-                   element = self.element,
-                   dblTap,
-                   tapHold,
-                   tap;
-
-               if (cellEvents.cellTap || this.table.options.cellTap) {
-
-                       tap = false;
-
-                       element.addEventListener("touchstart", function (e) {
-
-                               tap = true;
-                       }, { passive: true });
-
-                       element.addEventListener("touchend", function (e) {
-
-                               if (tap) {
-
-                                       var component = self.getComponent();
-
-                                       if (cellEvents.cellTap) {
-
-                                               cellEvents.cellTap.call(self.table, e, component);
-                                       }
-
-                                       if (self.table.options.cellTap) {
-
-                                               self.table.options.cellTap.call(self.table, e, component);
-                                       }
-                               }
-
-                               tap = false;
-                       });
-               }
-
-               if (cellEvents.cellDblTap || this.table.options.cellDblTap) {
-
-                       dblTap = null;
-
-                       element.addEventListener("touchend", function (e) {
-
-                               if (dblTap) {
-
-                                       clearTimeout(dblTap);
-
-                                       dblTap = null;
-
-                                       var component = self.getComponent();
-
-                                       if (cellEvents.cellDblTap) {
-
-                                               cellEvents.cellDblTap.call(self.table, e, component);
-                                       }
-
-                                       if (self.table.options.cellDblTap) {
-
-                                               self.table.options.cellDblTap.call(self.table, e, component);
-                                       }
-                               } else {
-
-                                       dblTap = setTimeout(function () {
-
-                                               clearTimeout(dblTap);
-
-                                               dblTap = null;
-                                       }, 300);
-                               }
-                       });
-               }
-
-               if (cellEvents.cellTapHold || this.table.options.cellTapHold) {
-
-                       tapHold = null;
-
-                       element.addEventListener("touchstart", function (e) {
-
-                               clearTimeout(tapHold);
-
-                               tapHold = setTimeout(function () {
-
-                                       clearTimeout(tapHold);
-
-                                       tapHold = null;
-
-                                       tap = false;
-
-                                       var component = self.getComponent();
-
-                                       if (cellEvents.cellTapHold) {
-
-                                               cellEvents.cellTapHold.call(self.table, e, component);
-                                       }
-
-                                       if (self.table.options.cellTapHold) {
-
-                                               self.table.options.cellTapHold.call(self.table, e, component);
-                                       }
-                               }, 1000);
-                       }, { passive: true });
-
-                       element.addEventListener("touchend", function (e) {
-
-                               clearTimeout(tapHold);
-
-                               tapHold = null;
-                       });
-               }
-       };
-
-       //generate cell contents
-
-       Cell.prototype._generateContents = function () {
-
-               var val;
-
-               if (this.table.modExists("format")) {
-
-                       val = this.table.modules.format.formatValue(this);
-               } else {
-
-                       val = this.element.innerHTML = this.value;
-               }
-
-               switch (typeof val === 'undefined' ? 'undefined' : _typeof(val)) {
-
-                       case "object":
-
-                               if (val instanceof Node) {
-
-                                       //clear previous cell contents
-
-                                       while (this.element.firstChild) {
-                                               this.element.removeChild(this.element.firstChild);
-                                       }this.element.appendChild(val);
-                               } else {
-
-                                       this.element.innerHTML = "";
-
-                                       if (val != null) {
-
-                                               console.warn("Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:", val);
-                                       }
-                               }
-
-                               break;
-
-                       case "undefined":
-
-                       case "null":
-
-                               this.element.innerHTML = "";
-
-                               break;
-
-                       default:
-
-                               this.element.innerHTML = val;
-
-               }
-       };
-
-       Cell.prototype.cellRendered = function () {
-
-               if (this.table.modExists("format") && this.table.modules.format.cellRendered) {
-
-                       this.table.modules.format.cellRendered(this);
-               }
-       };
-
-       //generate tooltip text
-
-       Cell.prototype._generateTooltip = function () {
-
-               var tooltip = this.column.tooltip;
-
-               if (tooltip) {
-
-                       if (tooltip === true) {
-
-                               tooltip = this.value;
-                       } else if (typeof tooltip == "function") {
-
-                               tooltip = tooltip(this.getComponent());
-
-                               if (tooltip === false) {
-
-                                       tooltip = "";
-                               }
-                       }
-
-                       if (typeof tooltip === "undefined") {
-
-                               tooltip = "";
-                       }
-
-                       this.element.setAttribute("title", tooltip);
-               } else {
-
-                       this.element.setAttribute("title", "");
-               }
-       };
-
-       //////////////////// Getters ////////////////////
-
-       Cell.prototype.getElement = function () {
-
-               return this.element;
-       };
-
-       Cell.prototype.getValue = function () {
-
-               return this.value;
-       };
-
-       Cell.prototype.getOldValue = function () {
-
-               return this.oldValue;
-       };
-
-       //////////////////// Actions ////////////////////
-
-
-       Cell.prototype.setValue = function (value, mutate) {
-
-               var changed = this.setValueProcessData(value, mutate),
-                   component;
-
-               if (changed) {
-
-                       if (this.table.options.history && this.table.modExists("history")) {
-
-                               this.table.modules.history.action("cellEdit", this, { oldValue: this.oldValue, newValue: this.value });
-                       }
-
-                       component = this.getComponent();
-
-                       if (this.column.cellEvents.cellEdited) {
-
-                               this.column.cellEvents.cellEdited.call(this.table, component);
-                       }
-
-                       this.cellRendered();
-
-                       this.table.options.cellEdited.call(this.table, component);
-
-                       this.table.options.dataEdited.call(this.table, this.table.rowManager.getData());
-               }
-       };
-
-       Cell.prototype.setValueProcessData = function (value, mutate) {
-
-               var changed = false;
-
-               if (this.value != value) {
-
-                       changed = true;
-
-                       if (mutate) {
-
-                               if (this.column.modules.mutate) {
-
-                                       value = this.table.modules.mutator.transformCell(this, value);
-                               }
-                       }
-               }
-
-               this.setValueActual(value);
-
-               if (changed && this.table.modExists("columnCalcs")) {
-
-                       if (this.column.definition.topCalc || this.column.definition.bottomCalc) {
-
-                               if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-
-                                       if (this.table.options.columnCalcs == "table" || this.table.options.columnCalcs == "both") {
-
-                                               this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
-                                       }
-
-                                       if (this.table.options.columnCalcs != "table") {
-
-                                               this.table.modules.columnCalcs.recalcRowGroup(this.row);
-                                       }
-                               } else {
-
-                                       this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
-                               }
-                       }
-               }
-
-               return changed;
-       };
-
-       Cell.prototype.setValueActual = function (value) {
-
-               this.oldValue = this.value;
-
-               this.value = value;
-
-               if (this.table.options.reactiveData && this.table.modExists("reactiveData")) {
-
-                       this.table.modules.reactiveData.block();
-               }
-
-               this.column.setFieldValue(this.row.data, value);
-
-               if (this.table.options.reactiveData && this.table.modExists("reactiveData")) {
-
-                       this.table.modules.reactiveData.unblock();
-               }
-
-               this._generateContents();
-
-               this._generateTooltip();
-
-               //set resizable handles
-
-               if (this.table.options.resizableColumns && this.table.modExists("resizeColumns")) {
-
-                       this.table.modules.resizeColumns.initializeColumn("cell", this.column, this.element);
-               }
-
-               //set column menu
-
-               if (this.column.definition.contextMenu && this.table.modExists("menu")) {
-
-                       this.table.modules.menu.initializeCell(this);
-               }
-
-               //handle frozen cells
-
-               if (this.table.modExists("frozenColumns")) {
-
-                       this.table.modules.frozenColumns.layoutElement(this.element, this.column);
-               }
-       };
-
-       Cell.prototype.setWidth = function () {
-
-               this.width = this.column.width;
-
-               this.element.style.width = this.column.widthStyled;
-       };
-
-       Cell.prototype.clearWidth = function () {
-
-               this.width = "";
-
-               this.element.style.width = "";
-       };
-
-       Cell.prototype.getWidth = function () {
-
-               return this.width || this.element.offsetWidth;
-       };
-
-       Cell.prototype.setMinWidth = function () {
-
-               this.minWidth = this.column.minWidth;
-
-               this.element.style.minWidth = this.column.minWidthStyled;
-       };
-
-       Cell.prototype.checkHeight = function () {
-
-               // var height = this.element.css("height");
-
-               this.row.reinitializeHeight();
-       };
-
-       Cell.prototype.clearHeight = function () {
-
-               this.element.style.height = "";
-
-               this.height = null;
-       };
-
-       Cell.prototype.setHeight = function () {
-
-               this.height = this.row.height;
-
-               this.element.style.height = this.row.heightStyled;
-       };
-
-       Cell.prototype.getHeight = function () {
-
-               return this.height || this.element.offsetHeight;
-       };
-
-       Cell.prototype.show = function () {
-
-               this.element.style.display = "";
-       };
-
-       Cell.prototype.hide = function () {
-
-               this.element.style.display = "none";
-       };
-
-       Cell.prototype.edit = function (force) {
-
-               if (this.table.modExists("edit", true)) {
-
-                       return this.table.modules.edit.editCell(this, force);
-               }
-       };
-
-       Cell.prototype.cancelEdit = function () {
-
-               if (this.table.modExists("edit", true)) {
-
-                       var editing = this.table.modules.edit.getCurrentCell();
-
-                       if (editing && editing._getSelf() === this) {
-
-                               this.table.modules.edit.cancelEdit();
-                       } else {
-
-                               console.warn("Cancel Editor Error - This cell is not currently being edited ");
-                       }
-               }
-       };
-
-       Cell.prototype.delete = function () {
-
-               if (!this.table.rowManager.redrawBlock) {
-
-                       this.element.parentNode.removeChild(this.element);
-               }
-
-               this.element = false;
-
-               this.column.deleteCell(this);
-
-               this.row.deleteCell(this);
-
-               this.calcs = {};
-       };
-
-       //////////////// Navigation /////////////////
-
-
-       Cell.prototype.nav = function () {
-
-               var self = this,
-                   nextCell = false,
-                   index = this.row.getCellIndex(this);
-
-               return {
-
-                       next: function next() {
-
-                               var nextCell = this.right(),
-                                   nextRow;
-
-                               if (!nextCell) {
-
-                                       nextRow = self.table.rowManager.nextDisplayRow(self.row, true);
-
-                                       if (nextRow) {
-
-                                               nextCell = nextRow.findNextEditableCell(-1);
-
-                                               if (nextCell) {
-
-                                                       nextCell.edit();
-
-                                                       return true;
-                                               }
-                                       }
-                               } else {
-
-                                       return true;
-                               }
-
-                               return false;
-                       },
-
-                       prev: function prev() {
-
-                               var nextCell = this.left(),
-                                   prevRow;
-
-                               if (!nextCell) {
-
-                                       prevRow = self.table.rowManager.prevDisplayRow(self.row, true);
-
-                                       if (prevRow) {
-
-                                               nextCell = prevRow.findPrevEditableCell(prevRow.cells.length);
-
-                                               if (nextCell) {
-
-                                                       nextCell.edit();
-
-                                                       return true;
-                                               }
-                                       }
-                               } else {
-
-                                       return true;
-                               }
-
-                               return false;
-                       },
-
-                       left: function left() {
-
-                               nextCell = self.row.findPrevEditableCell(index);
-
-                               if (nextCell) {
-
-                                       nextCell.edit();
-
-                                       return true;
-                               } else {
-
-                                       return false;
-                               }
-                       },
-
-                       right: function right() {
-
-                               nextCell = self.row.findNextEditableCell(index);
-
-                               if (nextCell) {
-
-                                       nextCell.edit();
-
-                                       return true;
-                               } else {
-
-                                       return false;
-                               }
-                       },
-
-                       up: function up() {
-
-                               var nextRow = self.table.rowManager.prevDisplayRow(self.row, true);
-
-                               if (nextRow) {
-
-                                       nextRow.cells[index].edit();
-                               }
-                       },
-
-                       down: function down() {
-
-                               var nextRow = self.table.rowManager.nextDisplayRow(self.row, true);
-
-                               if (nextRow) {
-
-                                       nextRow.cells[index].edit();
-                               }
-                       }
-
-               };
-       };
-
-       Cell.prototype.getIndex = function () {
-
-               this.row.getCellIndex(this);
-       };
-
-       //////////////// Object Generation /////////////////
-
-       Cell.prototype.getComponent = function () {
-
-               return new CellComponent(this);
-       };
-
-       var FooterManager = function FooterManager(table) {
-
-               this.table = table;
-
-               this.active = false;
-
-               this.element = this.createElement(); //containing element
-
-               this.external = false;
-
-               this.links = [];
-
-               this._initialize();
-       };
-
-       FooterManager.prototype.createElement = function () {
-
-               var el = document.createElement("div");
-
-               el.classList.add("tabulator-footer");
-
-               return el;
-       };
-
-       FooterManager.prototype._initialize = function (element) {
-
-               if (this.table.options.footerElement) {
-
-                       switch (_typeof(this.table.options.footerElement)) {
-
-                               case "string":
-
-                                       if (this.table.options.footerElement[0] === "<") {
-
-                                               this.element.innerHTML = this.table.options.footerElement;
-                                       } else {
-
-                                               this.external = true;
-
-                                               this.element = document.querySelector(this.table.options.footerElement);
-                                       }
-
-                                       break;
-
-                               default:
-
-                                       this.element = this.table.options.footerElement;
-
-                                       break;
-
-                       }
-               }
-       };
-
-       FooterManager.prototype.getElement = function () {
-
-               return this.element;
-       };
-
-       FooterManager.prototype.append = function (element, parent) {
-
-               this.activate(parent);
-
-               this.element.appendChild(element);
-
-               this.table.rowManager.adjustTableSize();
-       };
-
-       FooterManager.prototype.prepend = function (element, parent) {
-
-               this.activate(parent);
-
-               this.element.insertBefore(element, this.element.firstChild);
-
-               this.table.rowManager.adjustTableSize();
-       };
-
-       FooterManager.prototype.remove = function (element) {
-
-               element.parentNode.removeChild(element);
-
-               this.deactivate();
-       };
-
-       FooterManager.prototype.deactivate = function (force) {
-
-               if (!this.element.firstChild || force) {
-
-                       if (!this.external) {
-
-                               this.element.parentNode.removeChild(this.element);
-                       }
-
-                       this.active = false;
-               }
-
-               // this.table.rowManager.adjustTableSize();
-       };
-
-       FooterManager.prototype.activate = function (parent) {
-
-               if (!this.active) {
-
-                       this.active = true;
-
-                       if (!this.external) {
-
-                               this.table.element.appendChild(this.getElement());
-
-                               this.table.element.style.display = '';
-                       }
-               }
-
-               if (parent) {
-
-                       this.links.push(parent);
-               }
-       };
-
-       FooterManager.prototype.redraw = function () {
-
-               this.links.forEach(function (link) {
-
-                       link.footerRedraw();
-               });
-       };
-
-       var Tabulator = function Tabulator(element, options) {
-
-               this.options = {};
-
-               this.columnManager = null; // hold Column Manager
-
-               this.rowManager = null; //hold Row Manager
-
-               this.footerManager = null; //holder Footer Manager
-
-               this.browser = ""; //hold current browser type
-
-               this.browserSlow = false; //handle reduced functionality for slower browsers
-
-               this.browserMobile = false; //check if running on moble, prevent resize cancelling edit on keyboard appearence
-
-
-               this.modules = {}; //hold all modules bound to this table
-
-
-               this.initializeElement(element);
-
-               this.initializeOptions(options || {});
-
-               this._create();
-
-               Tabulator.prototype.comms.register(this); //register table for inderdevice communication
-       };
-
-       //default setup options
-
-       Tabulator.prototype.defaultOptions = {
-
-               height: false, //height of tabulator
-
-               minHeight: false, //minimum height of tabulator
-
-               maxHeight: false, //maximum height of tabulator
-
-
-               layout: "fitData", ///layout type "fitColumns" | "fitData"
-
-               layoutColumnsOnNewData: false, //update column widths on setData
-
-
-               columnMinWidth: 40, //minimum global width for a column
-
-               columnHeaderVertAlign: "top", //vertical alignment of column headers
-
-               columnVertAlign: false, // DEPRECATED - Left to allow warning
-
-
-               resizableColumns: true, //resizable columns
-
-               resizableRows: false, //resizable rows
-
-               autoResize: true, //auto resize table
-
-
-               columns: [], //store for colum header info
-
-
-               cellHozAlign: "", //horizontal align columns
-
-               cellVertAlign: "", //certical align columns
-
-
-               data: [], //default starting data
-
-
-               autoColumns: false, //build columns from data row structure
-
-
-               reactiveData: false, //enable data reactivity
-
-
-               nestedFieldSeparator: ".", //seperatpr for nested data
-
-
-               tooltips: false, //Tool tip value
-
-               tooltipsHeader: false, //Tool tip for headers
-
-               tooltipGenerationMode: "load", //when to generate tooltips
-
-
-               initialSort: false, //initial sorting criteria
-
-               initialFilter: false, //initial filtering criteria
-
-               initialHeaderFilter: false, //initial header filtering criteria
-
-
-               columnHeaderSortMulti: true, //multiple or single column sorting
-
-
-               sortOrderReverse: false, //reverse internal sort ordering
-
-
-               headerSort: true, //set default global header sort
-
-               headerSortTristate: false, //set default tristate header sorting
-
-
-               footerElement: false, //hold footer element
-
-
-               index: "id", //filed for row index
-
-
-               keybindings: [], //array for keybindings
-
-
-               tabEndNewRow: false, //create new row when tab to end of table
-
-
-               invalidOptionWarnings: true, //allow toggling of invalid option warnings
-
-
-               clipboard: false, //enable clipboard
-
-               clipboardCopyStyled: true, //formatted table data
-
-               clipboardCopyConfig: false, //clipboard config
-
-               clipboardCopyFormatter: false, //DEPRICATED - REMOVE in 5.0
-
-               clipboardCopyRowRange: "active", //restrict clipboard to visible rows only
-
-               clipboardPasteParser: "table", //convert pasted clipboard data to rows
-
-               clipboardPasteAction: "insert", //how to insert pasted data into the table
-
-
-               clipboardCopied: function clipboardCopied() {}, //data has been copied to the clipboard
-
-               clipboardPasted: function clipboardPasted() {}, //data has been pasted into the table
-
-               clipboardPasteError: function clipboardPasteError() {}, //data has not successfully been pasted into the table
-
-
-               downloadDataFormatter: false, //function to manipulate table data before it is downloaded
-
-               downloadReady: function downloadReady(data, blob) {
-                       return blob;
-               }, //function to manipulate download data
-
-               downloadComplete: false, //function to manipulate download data
-
-               downloadConfig: false, //download config
-
-
-               dataTree: false, //enable data tree
-
-               dataTreeElementColumn: false,
-
-               dataTreeBranchElement: true, //show data tree branch element
-
-               dataTreeChildIndent: 9, //data tree child indent in px
-
-               dataTreeChildField: "_children", //data tre column field to look for child rows
-
-               dataTreeCollapseElement: false, //data tree row collapse element
-
-               dataTreeExpandElement: false, //data tree row expand element
-
-               dataTreeStartExpanded: false,
-
-               dataTreeRowExpanded: function dataTreeRowExpanded() {}, //row has been expanded
-
-               dataTreeRowCollapsed: function dataTreeRowCollapsed() {}, //row has been collapsed
-
-               dataTreeChildColumnCalcs: false, //include visible data tree rows in column calculations
-
-               dataTreeSelectPropagate: false, //seleccting a parent row selects its children
-
-
-               printAsHtml: false, //enable print as html
-
-               printFormatter: false, //printing page formatter
-
-               printHeader: false, //page header contents
-
-               printFooter: false, //page footer contents
-
-               printCopyStyle: true, //DEPRICATED - REMOVE in 5.0
-
-               printStyled: true, //enable print as html styling
-
-               printVisibleRows: true, //DEPRICATED - REMOVE in 5.0
-
-               printRowRange: "visible", //restrict print to visible rows only
-
-               printConfig: {}, //print config options
-
-
-               addRowPos: "bottom", //position to insert blank rows, top|bottom
-
-
-               selectable: "highlight", //highlight rows on hover
-
-               selectableRangeMode: "drag", //highlight rows on hover
-
-               selectableRollingSelection: true, //roll selection once maximum number of selectable rows is reached
-
-               selectablePersistence: true, // maintain selection when table view is updated
-
-               selectableCheck: function selectableCheck(data, row) {
-                       return true;
-               }, //check wheather row is selectable
-
-
-               headerFilterLiveFilterDelay: 300, //delay before updating column after user types in header filter
-
-               headerFilterPlaceholder: false, //placeholder text to display in header filters
-
-
-               headerVisible: true, //hide header
-
-
-               history: false, //enable edit history
-
-
-               locale: false, //current system language
-
-               langs: {},
-
-               virtualDom: true, //enable DOM virtualization
-
-               virtualDomBuffer: 0, // set virtual DOM buffer size
-
-
-               persistentLayout: false, //DEPRICATED - REMOVE in 5.0
-
-               persistentSort: false, //DEPRICATED - REMOVE in 5.0
-
-               persistentFilter: false, //DEPRICATED - REMOVE in 5.0
-
-               persistenceID: "", //key for persistent storage
-
-               persistenceMode: true, //mode for storing persistence information
-
-               persistenceReaderFunc: false, //function for handling persistence data reading
-
-               persistenceWriterFunc: false, //function for handling persistence data writing
-
-
-               persistence: false,
-
-               responsiveLayout: false, //responsive layout flags
-
-               responsiveLayoutCollapseStartOpen: true, //start showing collapsed data
-
-               responsiveLayoutCollapseUseFormatters: true, //responsive layout collapse formatter
-
-               responsiveLayoutCollapseFormatter: false, //responsive layout collapse formatter
-
-
-               pagination: false, //set pagination type
-
-               paginationSize: false, //set number of rows to a page
-
-               paginationInitialPage: 1, //initail page to show on load
-
-               paginationButtonCount: 5, // set count of page button
-
-               paginationSizeSelector: false, //add pagination size selector element
-
-               paginationElement: false, //element to hold pagination numbers
-
-               paginationDataSent: {}, //pagination data sent to the server
-
-               paginationDataReceived: {}, //pagination data received from the server
-
-               paginationAddRow: "page", //add rows on table or page
-
-
-               ajaxURL: false, //url for ajax loading
-
-               ajaxURLGenerator: false,
-
-               ajaxParams: {}, //params for ajax loading
-
-               ajaxConfig: "get", //ajax request type
-
-               ajaxContentType: "form", //ajax request type
-
-               ajaxRequestFunc: false, //promise function
-
-               ajaxLoader: true, //show loader
-
-               ajaxLoaderLoading: false, //loader element
-
-               ajaxLoaderError: false, //loader element
-
-               ajaxFiltering: false,
-
-               ajaxSorting: false,
-
-               ajaxProgressiveLoad: false, //progressive loading
-
-               ajaxProgressiveLoadDelay: 0, //delay between requests
-
-               ajaxProgressiveLoadScrollMargin: 0, //margin before scroll begins
-
-
-               groupBy: false, //enable table grouping and set field to group by
-
-               groupStartOpen: true, //starting state of group
-
-               groupValues: false,
-
-               groupHeader: false, //header generation function
-
-
-               htmlOutputConfig: false, //html outypu config
-
-
-               movableColumns: false, //enable movable columns
-
-
-               movableRows: false, //enable movable rows
-
-               movableRowsConnectedTables: false, //tables for movable rows to be connected to
-
-               movableRowsSender: false,
-
-               movableRowsReceiver: "insert",
-
-               movableRowsSendingStart: function movableRowsSendingStart() {},
-
-               movableRowsSent: function movableRowsSent() {},
-
-               movableRowsSentFailed: function movableRowsSentFailed() {},
-
-               movableRowsSendingStop: function movableRowsSendingStop() {},
-
-               movableRowsReceivingStart: function movableRowsReceivingStart() {},
-
-               movableRowsReceived: function movableRowsReceived() {},
-
-               movableRowsReceivedFailed: function movableRowsReceivedFailed() {},
-
-               movableRowsReceivingStop: function movableRowsReceivingStop() {},
-
-               scrollToRowPosition: "top",
-
-               scrollToRowIfVisible: true,
-
-               scrollToColumnPosition: "left",
-
-               scrollToColumnIfVisible: true,
-
-               rowFormatter: false,
-
-               rowFormatterPrint: null,
-
-               rowFormatterClipboard: null,
-
-               rowFormatterHtmlOutput: null,
-
-               placeholder: false,
-
-               //table building callbacks
-
-               tableBuilding: function tableBuilding() {},
-
-               tableBuilt: function tableBuilt() {},
-
-               //render callbacks
-
-               renderStarted: function renderStarted() {},
-
-               renderComplete: function renderComplete() {},
-
-               //row callbacks
-
-               rowClick: false,
-
-               rowDblClick: false,
-
-               rowContext: false,
-
-               rowTap: false,
-
-               rowDblTap: false,
-
-               rowTapHold: false,
-
-               rowMouseEnter: false,
-
-               rowMouseLeave: false,
-
-               rowMouseOver: false,
-
-               rowMouseOut: false,
-
-               rowMouseMove: false,
-
-               rowContextMenu: false,
-
-               rowAdded: function rowAdded() {},
-
-               rowDeleted: function rowDeleted() {},
-
-               rowMoved: function rowMoved() {},
-
-               rowUpdated: function rowUpdated() {},
-
-               rowSelectionChanged: function rowSelectionChanged() {},
-
-               rowSelected: function rowSelected() {},
-
-               rowDeselected: function rowDeselected() {},
-
-               rowResized: function rowResized() {},
-
-               //cell callbacks
-
-               //row callbacks
-
-               cellClick: false,
-
-               cellDblClick: false,
-
-               cellContext: false,
-
-               cellTap: false,
-
-               cellDblTap: false,
-
-               cellTapHold: false,
-
-               cellMouseEnter: false,
-
-               cellMouseLeave: false,
-
-               cellMouseOver: false,
-
-               cellMouseOut: false,
-
-               cellMouseMove: false,
-
-               cellEditing: function cellEditing() {},
-
-               cellEdited: function cellEdited() {},
-
-               cellEditCancelled: function cellEditCancelled() {},
-
-               //column callbacks
-
-               columnMoved: false,
-
-               columnResized: function columnResized() {},
-
-               columnTitleChanged: function columnTitleChanged() {},
-
-               columnVisibilityChanged: function columnVisibilityChanged() {},
-
-               //HTML iport callbacks
-
-               htmlImporting: function htmlImporting() {},
-
-               htmlImported: function htmlImported() {},
-
-               //data callbacks
-
-               dataLoading: function dataLoading() {},
-
-               dataLoaded: function dataLoaded() {},
-
-               dataEdited: function dataEdited() {},
-
-               //ajax callbacks
-
-               ajaxRequesting: function ajaxRequesting() {},
-
-               ajaxResponse: false,
-
-               ajaxError: function ajaxError() {},
-
-               //filtering callbacks
-
-               dataFiltering: false,
-
-               dataFiltered: false,
-
-               //sorting callbacks
-
-               dataSorting: function dataSorting() {},
-
-               dataSorted: function dataSorted() {},
-
-               //grouping callbacks
-
-               groupToggleElement: "arrow",
-
-               groupClosedShowCalcs: false,
-
-               dataGrouping: function dataGrouping() {},
-
-               dataGrouped: false,
-
-               groupVisibilityChanged: function groupVisibilityChanged() {},
-
-               groupClick: false,
-
-               groupDblClick: false,
-
-               groupContext: false,
-
-               groupTap: false,
-
-               groupDblTap: false,
-
-               groupTapHold: false,
-
-               columnCalcs: true,
-
-               //pagination callbacks
-
-               pageLoaded: function pageLoaded() {},
-
-               //localization callbacks
-
-               localized: function localized() {},
-
-               //validation has failed
-
-               validationFailed: function validationFailed() {},
-
-               //history callbacks
-
-               historyUndo: function historyUndo() {},
-
-               historyRedo: function historyRedo() {},
-
-               //scroll callbacks
-
-               scrollHorizontal: function scrollHorizontal() {},
-
-               scrollVertical: function scrollVertical() {}
-
-       };
-
-       Tabulator.prototype.initializeOptions = function (options) {
-
-               //warn user if option is not available
-
-               if (options.invalidOptionWarnings !== false) {
-
-                       for (var key in options) {
-
-                               if (typeof this.defaultOptions[key] === "undefined") {
-
-                                       console.warn("Invalid table constructor option:", key);
-                               }
-                       }
-               }
-
-               //assign options to table
-
-               for (var key in this.defaultOptions) {
-
-                       if (key in options) {
-
-                               this.options[key] = options[key];
-                       } else {
-
-                               if (Array.isArray(this.defaultOptions[key])) {
-
-                                       this.options[key] = [];
-                               } else if (_typeof(this.defaultOptions[key]) === "object" && this.defaultOptions[key] !== null) {
-
-                                       this.options[key] = {};
-                               } else {
-
-                                       this.options[key] = this.defaultOptions[key];
-                               }
-                       }
-               }
-       };
-
-       Tabulator.prototype.initializeElement = function (element) {
-
-               if (typeof HTMLElement !== "undefined" && element instanceof HTMLElement) {
-
-                       this.element = element;
-
-                       return true;
-               } else if (typeof element === "string") {
-
-                       this.element = document.querySelector(element);
-
-                       if (this.element) {
-
-                               return true;
-                       } else {
-
-                               console.error("Tabulator Creation Error - no element found matching selector: ", element);
-
-                               return false;
-                       }
-               } else {
-
-                       console.error("Tabulator Creation Error - Invalid element provided:", element);
-
-                       return false;
-               }
-       };
-
-       //convert depricated functionality to new functions
-
-       Tabulator.prototype._mapDepricatedFunctionality = function () {
-
-               //map depricated persistance setup options
-
-               if (this.options.persistentLayout || this.options.persistentSort || this.options.persistentFilter) {
-
-                       if (!this.options.persistence) {
-
-                               this.options.persistence = {};
-                       }
-               }
-
-               if (typeof this.options.clipboardCopyHeader !== "undefined") {
-
-                       this.options.columnHeaders = this.options.clipboardCopyHeader;
-
-                       console.warn("DEPRECATION WARNING - clipboardCopyHeader option has been deprecated, please use the columnHeaders property on the clipboardCopyConfig option");
-               }
-
-               if (this.options.printVisibleRows !== true) {
-
-                       console.warn("printVisibleRows option is deprecated, you should now use the printRowRange option");
-
-                       this.options.persistence.printRowRange = "active";
-               }
-
-               if (this.options.printCopyStyle !== true) {
-
-                       console.warn("printCopyStyle option is deprecated, you should now use the printStyled option");
-
-                       this.options.persistence.printStyled = this.options.printCopyStyle;
-               }
-
-               if (this.options.persistentLayout) {
-
-                       console.warn("persistentLayout option is deprecated, you should now use the persistence option");
-
-                       if (this.options.persistence !== true && typeof this.options.persistence.columns === "undefined") {
-
-                               this.options.persistence.columns = true;
-                       }
-               }
-
-               if (this.options.persistentSort) {
-
-                       console.warn("persistentSort option is deprecated, you should now use the persistence option");
-
-                       if (this.options.persistence !== true && typeof this.options.persistence.sort === "undefined") {
-
-                               this.options.persistence.sort = true;
-                       }
-               }
-
-               if (this.options.persistentFilter) {
-
-                       console.warn("persistentFilter option is deprecated, you should now use the persistence option");
-
-                       if (this.options.persistence !== true && typeof this.options.persistence.filter === "undefined") {
-
-                               this.options.persistence.filter = true;
-                       }
-               }
-
-               if (this.options.columnVertAlign) {
-
-                       console.warn("columnVertAlign option is deprecated, you should now use the columnHeaderVertAlign option");
-
-                       this.options.columnHeaderVertAlign = this.options.columnVertAlign;
-               }
-       };
-
-       Tabulator.prototype._clearSelection = function () {
-
-               this.element.classList.add("tabulator-block-select");
-
-               if (window.getSelection) {
-
-                       if (window.getSelection().empty) {
-                               // Chrome
-
-                               window.getSelection().empty();
-                       } else if (window.getSelection().removeAllRanges) {
-                               // Firefox
-
-                               window.getSelection().removeAllRanges();
-                       }
-               } else if (document.selection) {
-                       // IE?
-
-                       document.selection.empty();
-               }
-
-               this.element.classList.remove("tabulator-block-select");
-       };
-
-       //concreate table
-
-       Tabulator.prototype._create = function () {
-
-               this._clearObjectPointers();
-
-               this._mapDepricatedFunctionality();
-
-               this.bindModules();
-
-               if (this.element.tagName === "TABLE") {
-
-                       if (this.modExists("htmlTableImport", true)) {
-
-                               this.modules.htmlTableImport.parseTable();
-                       }
-               }
-
-               this.columnManager = new ColumnManager(this);
-
-               this.rowManager = new RowManager(this);
-
-               this.footerManager = new FooterManager(this);
-
-               this.columnManager.setRowManager(this.rowManager);
-
-               this.rowManager.setColumnManager(this.columnManager);
-
-               this._buildElement();
-
-               this._loadInitialData();
-       };
-
-       //clear pointers to objects in default config object
-
-       Tabulator.prototype._clearObjectPointers = function () {
-
-               this.options.columns = this.options.columns.slice(0);
-
-               if (!this.options.reactiveData) {
-
-                       this.options.data = this.options.data.slice(0);
-               }
-       };
-
-       //build tabulator element
-
-       Tabulator.prototype._buildElement = function () {
-               var _this17 = this;
-
-               var element = this.element,
-                   mod = this.modules,
-                   options = this.options;
-
-               options.tableBuilding.call(this);
-
-               element.classList.add("tabulator");
-
-               element.setAttribute("role", "grid");
-
-               //empty element
-
-               while (element.firstChild) {
-                       element.removeChild(element.firstChild);
-               } //set table height
-
-               if (options.height) {
-
-                       options.height = isNaN(options.height) ? options.height : options.height + "px";
-
-                       element.style.height = options.height;
-               }
-
-               //set table min height
-
-               if (options.minHeight !== false) {
-
-                       options.minHeight = isNaN(options.minHeight) ? options.minHeight : options.minHeight + "px";
-
-                       element.style.minHeight = options.minHeight;
-               }
-
-               //set table maxHeight
-
-               if (options.maxHeight !== false) {
-
-                       options.maxHeight = isNaN(options.maxHeight) ? options.maxHeight : options.maxHeight + "px";
-
-                       element.style.maxHeight = options.maxHeight;
-               }
-
-               this.columnManager.initialize();
-
-               this.rowManager.initialize();
-
-               this._detectBrowser();
-
-               if (this.modExists("layout", true)) {
-
-                       mod.layout.initialize(options.layout);
-               }
-
-               //set localization
-
-               if (options.headerFilterPlaceholder !== false) {
-
-                       mod.localize.setHeaderFilterPlaceholder(options.headerFilterPlaceholder);
-               }
-
-               for (var locale in options.langs) {
-
-                       mod.localize.installLang(locale, options.langs[locale]);
-               }
-
-               mod.localize.setLocale(options.locale);
-
-               //configure placeholder element
-
-               if (typeof options.placeholder == "string") {
-
-                       var el = document.createElement("div");
-
-                       el.classList.add("tabulator-placeholder");
-
-                       var span = document.createElement("span");
-
-                       span.innerHTML = options.placeholder;
-
-                       el.appendChild(span);
-
-                       options.placeholder = el;
-               }
-
-               //build table elements
-
-               element.appendChild(this.columnManager.getElement());
-
-               element.appendChild(this.rowManager.getElement());
-
-               if (options.footerElement) {
-
-                       this.footerManager.activate();
-               }
-
-               if (options.persistence && this.modExists("persistence", true)) {
-
-                       mod.persistence.initialize();
-               }
-
-               if (options.persistence && this.modExists("persistence", true) && mod.persistence.config.columns) {
-
-                       options.columns = mod.persistence.load("columns", options.columns);
-               }
-
-               if (options.movableRows && this.modExists("moveRow")) {
-
-                       mod.moveRow.initialize();
-               }
-
-               if (options.autoColumns && this.options.data) {
-
-                       this.columnManager.generateColumnsFromRowData(this.options.data);
-               }
-
-               if (this.modExists("columnCalcs")) {
-
-                       mod.columnCalcs.initialize();
-               }
-
-               this.columnManager.setColumns(options.columns);
-
-               if (options.dataTree && this.modExists("dataTree", true)) {
-
-                       mod.dataTree.initialize();
-               }
-
-               if (this.modExists("frozenRows")) {
-
-                       this.modules.frozenRows.initialize();
-               }
-
-               if ((options.persistence && this.modExists("persistence", true) && mod.persistence.config.sort || options.initialSort) && this.modExists("sort", true)) {
-
-                       var sorters = [];
-
-                       if (options.persistence && this.modExists("persistence", true) && mod.persistence.config.sort) {
-
-                               sorters = mod.persistence.load("sort");
-
-                               if (sorters === false && options.initialSort) {
-
-                                       sorters = options.initialSort;
-                               }
-                       } else if (options.initialSort) {
-
-                               sorters = options.initialSort;
-                       }
-
-                       mod.sort.setSort(sorters);
-               }
-
-               if ((options.persistence && this.modExists("persistence", true) && mod.persistence.config.filter || options.initialFilter) && this.modExists("filter", true)) {
-
-                       var filters = [];
-
-                       if (options.persistence && this.modExists("persistence", true) && mod.persistence.config.filter) {
-
-                               filters = mod.persistence.load("filter");
-
-                               if (filters === false && options.initialFilter) {
-
-                                       filters = options.initialFilter;
-                               }
-                       } else if (options.initialFilter) {
-
-                               filters = options.initialFilter;
-                       }
-
-                       mod.filter.setFilter(filters);
-               }
-
-               if (options.initialHeaderFilter && this.modExists("filter", true)) {
-
-                       options.initialHeaderFilter.forEach(function (item) {
-
-                               var column = _this17.columnManager.findColumn(item.field);
-
-                               if (column) {
-
-                                       mod.filter.setHeaderFilterValue(column, item.value);
-                               } else {
-
-                                       console.warn("Column Filter Error - No matching column found:", item.field);
-
-                                       return false;
-                               }
-                       });
-               }
-
-               if (this.modExists("ajax")) {
-
-                       mod.ajax.initialize();
-               }
-
-               if (options.pagination && this.modExists("page", true)) {
-
-                       mod.page.initialize();
-               }
-
-               if (options.groupBy && this.modExists("groupRows", true)) {
-
-                       mod.groupRows.initialize();
-               }
-
-               if (this.modExists("keybindings")) {
-
-                       mod.keybindings.initialize();
-               }
-
-               if (this.modExists("selectRow")) {
-
-                       mod.selectRow.clearSelectionData(true);
-               }
-
-               if (options.autoResize && this.modExists("resizeTable")) {
-
-                       mod.resizeTable.initialize();
-               }
-
-               if (this.modExists("clipboard")) {
-
-                       mod.clipboard.initialize();
-               }
-
-               if (options.printAsHtml && this.modExists("print")) {
-
-                       mod.print.initialize();
-               }
-
-               options.tableBuilt.call(this);
-       };
-
-       Tabulator.prototype._loadInitialData = function () {
-
-               var self = this;
-
-               if (self.options.pagination && self.modExists("page")) {
-
-                       self.modules.page.reset(true, true);
-
-                       if (self.options.pagination == "local") {
-
-                               if (self.options.data.length) {
-
-                                       self.rowManager.setData(self.options.data, false, true);
-                               } else {
-
-                                       if ((self.options.ajaxURL || self.options.ajaxURLGenerator) && self.modExists("ajax")) {
-
-                                               self.modules.ajax.loadData(false, true).then(function () {}).catch(function () {
-
-                                                       if (self.options.paginationInitialPage) {
-
-                                                               self.modules.page.setPage(self.options.paginationInitialPage);
-                                                       }
-                                               });
-
-                                               return;
-                                       } else {
-
-                                               self.rowManager.setData(self.options.data, false, true);
-                                       }
-                               }
-
-                               if (self.options.paginationInitialPage) {
-
-                                       self.modules.page.setPage(self.options.paginationInitialPage);
-                               }
-                       } else {
-
-                               if (self.options.ajaxURL) {
-
-                                       self.modules.page.setPage(self.options.paginationInitialPage).then(function () {}).catch(function () {});
-                               } else {
-
-                                       self.rowManager.setData([], false, true);
-                               }
-                       }
-               } else {
-
-                       if (self.options.data.length) {
-
-                               self.rowManager.setData(self.options.data);
-                       } else {
-
-                               if ((self.options.ajaxURL || self.options.ajaxURLGenerator) && self.modExists("ajax")) {
-
-                                       self.modules.ajax.loadData(false, true).then(function () {}).catch(function () {});
-                               } else {
-
-                                       self.rowManager.setData(self.options.data, false, true);
-                               }
-                       }
-               }
-       };
-
-       //deconstructor
-
-       Tabulator.prototype.destroy = function () {
-
-               var element = this.element;
-
-               Tabulator.prototype.comms.deregister(this); //deregister table from inderdevice communication
-
-
-               if (this.options.reactiveData && this.modExists("reactiveData", true)) {
-
-                       this.modules.reactiveData.unwatchData();
-               }
-
-               //clear row data
-
-               this.rowManager.rows.forEach(function (row) {
-
-                       row.wipe();
-               });
-
-               this.rowManager.rows = [];
-
-               this.rowManager.activeRows = [];
-
-               this.rowManager.displayRows = [];
-
-               //clear event bindings
-
-               if (this.options.autoResize && this.modExists("resizeTable")) {
-
-                       this.modules.resizeTable.clearBindings();
-               }
-
-               if (this.modExists("keybindings")) {
-
-                       this.modules.keybindings.clearBindings();
-               }
-
-               //clear DOM
-
-               while (element.firstChild) {
-                       element.removeChild(element.firstChild);
-               }element.classList.remove("tabulator");
-       };
-
-       Tabulator.prototype._detectBrowser = function () {
-
-               var ua = navigator.userAgent || navigator.vendor || window.opera;
-
-               if (ua.indexOf("Trident") > -1) {
-
-                       this.browser = "ie";
-
-                       this.browserSlow = true;
-               } else if (ua.indexOf("Edge") > -1) {
-
-                       this.browser = "edge";
-
-                       this.browserSlow = true;
-               } else if (ua.indexOf("Firefox") > -1) {
-
-                       this.browser = "firefox";
-
-                       this.browserSlow = false;
-               } else {
-
-                       this.browser = "other";
-
-                       this.browserSlow = false;
-               }
-
-               this.browserMobile = /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(ua) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(ua.substr(0, 4));
-       };
-
-       ////////////////// Data Handling //////////////////
-
-
-       //block table redrawing
-
-       Tabulator.prototype.blockRedraw = function () {
-
-               return this.rowManager.blockRedraw();
-       };
-
-       //restore table redrawing
-
-       Tabulator.prototype.restoreRedraw = function () {
-
-               return this.rowManager.restoreRedraw();
-       };
-
-       //local data from local file
-
-       Tabulator.prototype.setDataFromLocalFile = function (extensions) {
-               var _this18 = this;
-
-               return new Promise(function (resolve, reject) {
-
-                       var input = document.createElement("input");
-
-                       input.type = "file";
-
-                       input.accept = extensions || ".json,application/json";
-
-                       input.addEventListener("change", function (e) {
-
-                               var file = input.files[0],
-                                   reader = new FileReader(),
-                                   data;
-
-                               reader.readAsText(file);
-
-                               reader.onload = function (e) {
-
-                                       try {
-
-                                               data = JSON.parse(reader.result);
-                                       } catch (e) {
-
-                                               console.warn("File Load Error - File contents is invalid JSON", e);
-
-                                               reject(e);
-
-                                               return;
-                                       }
-
-                                       _this18._setData(data).then(function (data) {
-
-                                               resolve(data);
-                                       }).catch(function (err) {
-
-                                               resolve(err);
-                                       });
-                               };
-
-                               reader.onerror = function (e) {
-
-                                       console.warn("File Load Error - Unable to read file");
-
-                                       reject();
-                               };
-                       });
-
-                       input.click();
-               });
-       };
-
-       //load data
-
-       Tabulator.prototype.setData = function (data, params, config) {
-
-               if (this.modExists("ajax")) {
-
-                       this.modules.ajax.blockActiveRequest();
-               }
-
-               return this._setData(data, params, config, false, true);
-       };
-
-       Tabulator.prototype._setData = function (data, params, config, inPosition, columnsChanged) {
-
-               var self = this;
-
-               if (typeof data === "string") {
-
-                       if (data.indexOf("{") == 0 || data.indexOf("[") == 0) {
-
-                               //data is a json encoded string
-
-                               return self.rowManager.setData(JSON.parse(data), inPosition, columnsChanged);
-                       } else {
-
-                               if (self.modExists("ajax", true)) {
-
-                                       if (params) {
-
-                                               self.modules.ajax.setParams(params);
-                                       }
-
-                                       if (config) {
-
-                                               self.modules.ajax.setConfig(config);
-                                       }
-
-                                       self.modules.ajax.setUrl(data);
-
-                                       if (self.options.pagination == "remote" && self.modExists("page", true)) {
-
-                                               self.modules.page.reset(true, true);
-
-                                               return self.modules.page.setPage(1);
-                                       } else {
-
-                                               //assume data is url, make ajax call to url to get data
-
-                                               return self.modules.ajax.loadData(inPosition, columnsChanged);
-                                       }
-                               }
-                       }
-               } else {
-
-                       if (data) {
-
-                               //asume data is already an object
-
-                               return self.rowManager.setData(data, inPosition, columnsChanged);
-                       } else {
-
-                               //no data provided, check if ajaxURL is present;
-
-                               if (self.modExists("ajax") && (self.modules.ajax.getUrl || self.options.ajaxURLGenerator)) {
-
-                                       if (self.options.pagination == "remote" && self.modExists("page", true)) {
-
-                                               self.modules.page.reset(true, true);
-
-                                               return self.modules.page.setPage(1);
-                                       } else {
-
-                                               return self.modules.ajax.loadData(inPosition, columnsChanged);
-                                       }
-                               } else {
-
-                                       //empty data
-
-                                       return self.rowManager.setData([], inPosition, columnsChanged);
-                               }
-                       }
-               }
-       };
-
-       //clear data
-
-       Tabulator.prototype.clearData = function () {
-
-               if (this.modExists("ajax")) {
-
-                       this.modules.ajax.blockActiveRequest();
-               }
-
-               this.rowManager.clearData();
-       };
-
-       //get table data array
-
-       Tabulator.prototype.getData = function (active) {
-
-               if (active === true) {
-
-                       console.warn("passing a boolean to the getData function is deprecated, you should now pass the string 'active'");
-
-                       active = "active";
-               }
-
-               return this.rowManager.getData(active);
-       };
-
-       //get table data array count
-
-       Tabulator.prototype.getDataCount = function (active) {
-
-               if (active === true) {
-
-                       console.warn("passing a boolean to the getDataCount function is deprecated, you should now pass the string 'active'");
-
-                       active = "active";
-               }
-
-               return this.rowManager.getDataCount(active);
-       };
-
-       //search for specific row components
-
-       Tabulator.prototype.searchRows = function (field, type, value) {
-
-               if (this.modExists("filter", true)) {
-
-                       return this.modules.filter.search("rows", field, type, value);
-               }
-       };
-
-       //search for specific data
-
-       Tabulator.prototype.searchData = function (field, type, value) {
-
-               if (this.modExists("filter", true)) {
-
-                       return this.modules.filter.search("data", field, type, value);
-               }
-       };
-
-       //get table html
-
-       Tabulator.prototype.getHtml = function (visible, style, config) {
-
-               if (this.modExists("export", true)) {
-
-                       return this.modules.export.getHtml(visible, style, config);
-               }
-       };
-
-       //get print html
-
-       Tabulator.prototype.print = function (visible, style, config) {
-
-               if (this.modExists("print", true)) {
-
-                       return this.modules.print.printFullscreen(visible, style, config);
-               }
-       };
-
-       //retrieve Ajax URL
-
-       Tabulator.prototype.getAjaxUrl = function () {
-
-               if (this.modExists("ajax", true)) {
-
-                       return this.modules.ajax.getUrl();
-               }
-       };
-
-       //replace data, keeping table in position with same sort
-
-       Tabulator.prototype.replaceData = function (data, params, config) {
-
-               if (this.modExists("ajax")) {
-
-                       this.modules.ajax.blockActiveRequest();
-               }
-
-               return this._setData(data, params, config, true);
-       };
-
-       //update table data
-
-       Tabulator.prototype.updateData = function (data) {
-               var _this19 = this;
-
-               var self = this;
-
-               var responses = 0;
-
-               return new Promise(function (resolve, reject) {
-
-                       if (_this19.modExists("ajax")) {
-
-                               _this19.modules.ajax.blockActiveRequest();
-                       }
-
-                       if (typeof data === "string") {
-
-                               data = JSON.parse(data);
-                       }
-
-                       if (data) {
-
-                               data.forEach(function (item) {
-
-                                       var row = self.rowManager.findRow(item[self.options.index]);
-
-                                       if (row) {
-
-                                               responses++;
-
-                                               row.updateData(item).then(function () {
-
-                                                       responses--;
-
-                                                       if (!responses) {
-
-                                                               resolve();
-                                                       }
-                                               });
-                                       }
-                               });
-                       } else {
-
-                               console.warn("Update Error - No data provided");
-
-                               reject("Update Error - No data provided");
-                       }
-               });
-       };
-
-       Tabulator.prototype.addData = function (data, pos, index) {
-               var _this20 = this;
-
-               return new Promise(function (resolve, reject) {
-
-                       if (_this20.modExists("ajax")) {
-
-                               _this20.modules.ajax.blockActiveRequest();
-                       }
-
-                       if (typeof data === "string") {
-
-                               data = JSON.parse(data);
-                       }
-
-                       if (data) {
-
-                               _this20.rowManager.addRows(data, pos, index).then(function (rows) {
-
-                                       var output = [];
-
-                                       rows.forEach(function (row) {
-
-                                               output.push(row.getComponent());
-                                       });
-
-                                       resolve(output);
-                               });
-                       } else {
-
-                               console.warn("Update Error - No data provided");
-
-                               reject("Update Error - No data provided");
-                       }
-               });
-       };
-
-       //update table data
-
-       Tabulator.prototype.updateOrAddData = function (data) {
-               var _this21 = this;
-
-               var self = this,
-                   rows = [],
-                   responses = 0;
-
-               return new Promise(function (resolve, reject) {
-
-                       if (_this21.modExists("ajax")) {
-
-                               _this21.modules.ajax.blockActiveRequest();
-                       }
-
-                       if (typeof data === "string") {
-
-                               data = JSON.parse(data);
-                       }
-
-                       if (data) {
-
-                               data.forEach(function (item) {
-
-                                       var row = self.rowManager.findRow(item[self.options.index]);
-
-                                       responses++;
-
-                                       if (row) {
-
-                                               row.updateData(item).then(function () {
-
-                                                       responses--;
-
-                                                       rows.push(row.getComponent());
-
-                                                       if (!responses) {
-
-                                                               resolve(rows);
-                                                       }
-                                               });
-                                       } else {
-
-                                               self.rowManager.addRows(item).then(function (newRows) {
-
-                                                       responses--;
-
-                                                       rows.push(newRows[0].getComponent());
-
-                                                       if (!responses) {
-
-                                                               resolve(rows);
-                                                       }
-                                               });
-                                       }
-                               });
-                       } else {
-
-                               console.warn("Update Error - No data provided");
-
-                               reject("Update Error - No data provided");
-                       }
-               });
-       };
-
-       //get row object
-
-       Tabulator.prototype.getRow = function (index) {
-
-               var row = this.rowManager.findRow(index);
-
-               if (row) {
-
-                       return row.getComponent();
-               } else {
-
-                       console.warn("Find Error - No matching row found:", index);
-
-                       return false;
-               }
-       };
-
-       //get row object
-
-       Tabulator.prototype.getRowFromPosition = function (position, active) {
-
-               var row = this.rowManager.getRowFromPosition(position, active);
-
-               if (row) {
-
-                       return row.getComponent();
-               } else {
-
-                       console.warn("Find Error - No matching row found:", position);
-
-                       return false;
-               }
-       };
-
-       //delete row from table
-
-       Tabulator.prototype.deleteRow = function (index) {
-               var _this22 = this;
-
-               return new Promise(function (resolve, reject) {
-
-                       var self = _this22,
-                           count = 0,
-                           successCount = 0,
-                           foundRows = [];
-
-                       function doneCheck() {
-
-                               count++;
-
-                               if (count == index.length) {
-
-                                       if (successCount) {
-
-                                               self.rowManager.reRenderInPosition();
-
-                                               resolve();
-                                       }
-                               }
-                       }
-
-                       if (!Array.isArray(index)) {
-
-                               index = [index];
-                       }
-
-                       //find matching rows
-
-                       index.forEach(function (item) {
-
-                               var row = _this22.rowManager.findRow(item, true);
-
-                               if (row) {
-
-                                       foundRows.push(row);
-                               } else {
-
-                                       console.warn("Delete Error - No matching row found:", item);
-
-                                       reject("Delete Error - No matching row found");
-
-                                       doneCheck();
-                               }
-                       });
-
-                       //sort rows into correct order to ensure smooth delete from table
-
-                       foundRows.sort(function (a, b) {
-
-                               return _this22.rowManager.rows.indexOf(a) > _this22.rowManager.rows.indexOf(b) ? 1 : -1;
-                       });
-
-                       foundRows.forEach(function (row) {
-
-                               row.delete().then(function () {
-
-                                       successCount++;
-
-                                       doneCheck();
-                               }).catch(function (err) {
-
-                                       doneCheck();
-
-                                       reject(err);
-                               });
-                       });
-               });
-       };
-
-       //add row to table
-
-       Tabulator.prototype.addRow = function (data, pos, index) {
-               var _this23 = this;
-
-               return new Promise(function (resolve, reject) {
-
-                       if (typeof data === "string") {
-
-                               data = JSON.parse(data);
-                       }
-
-                       _this23.rowManager.addRows(data, pos, index).then(function (rows) {
-
-                               //recalc column calculations if present
-
-                               if (_this23.modExists("columnCalcs")) {
-
-                                       _this23.modules.columnCalcs.recalc(_this23.rowManager.activeRows);
-                               }
-
-                               resolve(rows[0].getComponent());
-                       });
-               });
-       };
-
-       //update a row if it exitsts otherwise create it
-
-       Tabulator.prototype.updateOrAddRow = function (index, data) {
-               var _this24 = this;
-
-               return new Promise(function (resolve, reject) {
-
-                       var row = _this24.rowManager.findRow(index);
-
-                       if (typeof data === "string") {
-
-                               data = JSON.parse(data);
-                       }
-
-                       if (row) {
-
-                               row.updateData(data).then(function () {
-
-                                       //recalc column calculations if present
-
-                                       if (_this24.modExists("columnCalcs")) {
-
-                                               _this24.modules.columnCalcs.recalc(_this24.rowManager.activeRows);
-                                       }
-
-                                       resolve(row.getComponent());
-                               }).catch(function (err) {
-
-                                       reject(err);
-                               });
-                       } else {
-
-                               row = _this24.rowManager.addRows(data).then(function (rows) {
-
-                                       //recalc column calculations if present
-
-                                       if (_this24.modExists("columnCalcs")) {
-
-                                               _this24.modules.columnCalcs.recalc(_this24.rowManager.activeRows);
-                                       }
-
-                                       resolve(rows[0].getComponent());
-                               }).catch(function (err) {
-
-                                       reject(err);
-                               });
-                       }
-               });
-       };
-
-       //update row data
-
-       Tabulator.prototype.updateRow = function (index, data) {
-               var _this25 = this;
-
-               return new Promise(function (resolve, reject) {
-
-                       var row = _this25.rowManager.findRow(index);
-
-                       if (typeof data === "string") {
-
-                               data = JSON.parse(data);
-                       }
-
-                       if (row) {
-
-                               row.updateData(data).then(function () {
-
-                                       resolve(row.getComponent());
-                               }).catch(function (err) {
-
-                                       reject(err);
-                               });
-                       } else {
-
-                               console.warn("Update Error - No matching row found:", index);
-
-                               reject("Update Error - No matching row found");
-                       }
-               });
-       };
-
-       //scroll to row in DOM
-
-       Tabulator.prototype.scrollToRow = function (index, position, ifVisible) {
-               var _this26 = this;
-
-               return new Promise(function (resolve, reject) {
-
-                       var row = _this26.rowManager.findRow(index);
-
-                       if (row) {
-
-                               _this26.rowManager.scrollToRow(row, position, ifVisible).then(function () {
-
-                                       resolve();
-                               }).catch(function (err) {
-
-                                       reject(err);
-                               });
-                       } else {
-
-                               console.warn("Scroll Error - No matching row found:", index);
-
-                               reject("Scroll Error - No matching row found");
-                       }
-               });
-       };
-
-       Tabulator.prototype.moveRow = function (from, to, after) {
-
-               var fromRow = this.rowManager.findRow(from);
-
-               if (fromRow) {
-
-                       fromRow.moveToRow(to, after);
-               } else {
-
-                       console.warn("Move Error - No matching row found:", from);
-               }
-       };
-
-       Tabulator.prototype.getRows = function (active) {
-
-               if (active === true) {
-
-                       console.warn("passing a boolean to the getRows function is deprecated, you should now pass the string 'active'");
-
-                       active = "active";
-               }
-
-               return this.rowManager.getComponents(active);
-       };
-
-       //get position of row in table
-
-       Tabulator.prototype.getRowPosition = function (index, active) {
-
-               var row = this.rowManager.findRow(index);
-
-               if (row) {
-
-                       return this.rowManager.getRowPosition(row, active);
-               } else {
-
-                       console.warn("Position Error - No matching row found:", index);
-
-                       return false;
-               }
-       };
-
-       //copy table data to clipboard
-
-       Tabulator.prototype.copyToClipboard = function (selector) {
-
-               if (this.modExists("clipboard", true)) {
-
-                       this.modules.clipboard.copy(selector);
-               }
-       };
-
-       /////////////// Column Functions  ///////////////
-
-
-       Tabulator.prototype.setColumns = function (definition) {
-
-               this.columnManager.setColumns(definition);
-       };
-
-       Tabulator.prototype.getColumns = function (structured) {
-
-               return this.columnManager.getComponents(structured);
-       };
-
-       Tabulator.prototype.getColumn = function (field) {
-
-               var col = this.columnManager.findColumn(field);
-
-               if (col) {
-
-                       return col.getComponent();
-               } else {
-
-                       console.warn("Find Error - No matching column found:", field);
-
-                       return false;
-               }
-       };
-
-       Tabulator.prototype.getColumnDefinitions = function () {
-
-               return this.columnManager.getDefinitionTree();
-       };
-
-       Tabulator.prototype.getColumnLayout = function () {
-
-               if (this.modExists("persistence", true)) {
-
-                       return this.modules.persistence.parseColumns(this.columnManager.getColumns());
-               }
-       };
-
-       Tabulator.prototype.setColumnLayout = function (layout) {
-
-               if (this.modExists("persistence", true)) {
-
-                       this.columnManager.setColumns(this.modules.persistence.mergeDefinition(this.options.columns, layout));
-
-                       return true;
-               }
-
-               return false;
-       };
-
-       Tabulator.prototype.showColumn = function (field) {
-
-               var column = this.columnManager.findColumn(field);
-
-               if (column) {
-
-                       column.show();
-
-                       if (this.options.responsiveLayout && this.modExists("responsiveLayout", true)) {
-
-                               this.modules.responsiveLayout.update();
-                       }
-               } else {
-
-                       console.warn("Column Show Error - No matching column found:", field);
-
-                       return false;
-               }
-       };
-
-       Tabulator.prototype.hideColumn = function (field) {
-
-               var column = this.columnManager.findColumn(field);
-
-               if (column) {
-
-                       column.hide();
-
-                       if (this.options.responsiveLayout && this.modExists("responsiveLayout", true)) {
-
-                               this.modules.responsiveLayout.update();
-                       }
-               } else {
-
-                       console.warn("Column Hide Error - No matching column found:", field);
-
-                       return false;
-               }
-       };
-
-       Tabulator.prototype.toggleColumn = function (field) {
-
-               var column = this.columnManager.findColumn(field);
-
-               if (column) {
-
-                       if (column.visible) {
-
-                               column.hide();
-                       } else {
-
-                               column.show();
-                       }
-               } else {
-
-                       console.warn("Column Visibility Toggle Error - No matching column found:", field);
-
-                       return false;
-               }
-       };
-
-       Tabulator.prototype.addColumn = function (definition, before, field) {
-               var _this27 = this;
-
-               return new Promise(function (resolve, reject) {
-
-                       var column = _this27.columnManager.findColumn(field);
-
-                       _this27.columnManager.addColumn(definition, before, column).then(function (column) {
-
-                               resolve(column.getComponent());
-                       }).catch(function (err) {
-
-                               reject(err);
-                       });
-               });
-       };
-
-       Tabulator.prototype.deleteColumn = function (field) {
-               var _this28 = this;
-
-               return new Promise(function (resolve, reject) {
-
-                       var column = _this28.columnManager.findColumn(field);
-
-                       if (column) {
-
-                               column.delete().then(function () {
-
-                                       resolve();
-                               }).catch(function (err) {
-
-                                       reject(err);
-                               });
-                       } else {
-
-                               console.warn("Column Delete Error - No matching column found:", field);
-
-                               reject();
-                       }
-               });
-       };
-
-       Tabulator.prototype.updateColumnDefinition = function (field, definition) {
-               var _this29 = this;
-
-               return new Promise(function (resolve, reject) {
-
-                       var column = _this29.columnManager.findColumn(field);
-
-                       if (column) {
-
-                               column.updateDefinition(definition).then(function (col) {
-
-                                       resolve(col);
-                               }).catch(function (err) {
-
-                                       reject(err);
-                               });
-                       } else {
-
-                               console.warn("Column Update Error - No matching column found:", field);
-
-                               reject();
-                       }
-               });
-       };
-
-       Tabulator.prototype.moveColumn = function (from, to, after) {
-
-               var fromColumn = this.columnManager.findColumn(from);
-
-               var toColumn = this.columnManager.findColumn(to);
-
-               if (fromColumn) {
-
-                       if (toColumn) {
-
-                               this.columnManager.moveColumn(fromColumn, toColumn, after);
-                       } else {
-
-                               console.warn("Move Error - No matching column found:", toColumn);
-                       }
-               } else {
-
-                       console.warn("Move Error - No matching column found:", from);
-               }
-       };
-
-       //scroll to column in DOM
-
-       Tabulator.prototype.scrollToColumn = function (field, position, ifVisible) {
-               var _this30 = this;
-
-               return new Promise(function (resolve, reject) {
-
-                       var column = _this30.columnManager.findColumn(field);
-
-                       if (column) {
-
-                               _this30.columnManager.scrollToColumn(column, position, ifVisible).then(function () {
-
-                                       resolve();
-                               }).catch(function (err) {
-
-                                       reject(err);
-                               });
-                       } else {
-
-                               console.warn("Scroll Error - No matching column found:", field);
-
-                               reject("Scroll Error - No matching column found");
-                       }
-               });
-       };
-
-       //////////// Localization Functions  ////////////
-
-       Tabulator.prototype.setLocale = function (locale) {
-
-               this.modules.localize.setLocale(locale);
-       };
-
-       Tabulator.prototype.getLocale = function () {
-
-               return this.modules.localize.getLocale();
-       };
-
-       Tabulator.prototype.getLang = function (locale) {
-
-               return this.modules.localize.getLang(locale);
-       };
-
-       //////////// General Public Functions ////////////
-
-
-       //redraw list without updating data
-
-       Tabulator.prototype.redraw = function (force) {
-
-               this.columnManager.redraw(force);
-
-               this.rowManager.redraw(force);
-       };
-
-       Tabulator.prototype.setHeight = function (height) {
-
-               if (this.rowManager.renderMode !== "classic") {
-
-                       this.options.height = isNaN(height) ? height : height + "px";
-
-                       this.element.style.height = this.options.height;
-
-                       this.rowManager.setRenderMode();
-
-                       this.rowManager.redraw();
-               } else {
-
-                       console.warn("setHeight function is not available in classic render mode");
-               }
-       };
-
-       ///////////////////// Sorting ////////////////////
-
-
-       //trigger sort
-
-       Tabulator.prototype.setSort = function (sortList, dir) {
-
-               if (this.modExists("sort", true)) {
-
-                       this.modules.sort.setSort(sortList, dir);
-
-                       this.rowManager.sorterRefresh();
-               }
-       };
-
-       Tabulator.prototype.getSorters = function () {
-
-               if (this.modExists("sort", true)) {
-
-                       return this.modules.sort.getSort();
-               }
-       };
-
-       Tabulator.prototype.clearSort = function () {
-
-               if (this.modExists("sort", true)) {
-
-                       this.modules.sort.clear();
-
-                       this.rowManager.sorterRefresh();
-               }
-       };
-
-       ///////////////////// Filtering ////////////////////
-
-
-       //set standard filters
-
-       Tabulator.prototype.setFilter = function (field, type, value) {
-
-               if (this.modExists("filter", true)) {
-
-                       this.modules.filter.setFilter(field, type, value);
-
-                       this.rowManager.filterRefresh();
-               }
-       };
-
-       //add filter to array
-
-       Tabulator.prototype.addFilter = function (field, type, value) {
-
-               if (this.modExists("filter", true)) {
-
-                       this.modules.filter.addFilter(field, type, value);
-
-                       this.rowManager.filterRefresh();
-               }
-       };
-
-       //get all filters
-
-       Tabulator.prototype.getFilters = function (all) {
-
-               if (this.modExists("filter", true)) {
-
-                       return this.modules.filter.getFilters(all);
-               }
-       };
-
-       Tabulator.prototype.setHeaderFilterFocus = function (field) {
-
-               if (this.modExists("filter", true)) {
-
-                       var column = this.columnManager.findColumn(field);
-
-                       if (column) {
-
-                               this.modules.filter.setHeaderFilterFocus(column);
-                       } else {
-
-                               console.warn("Column Filter Focus Error - No matching column found:", field);
-
-                               return false;
-                       }
-               }
-       };
-
-       Tabulator.prototype.getHeaderFilterValue = function (field) {
-
-               if (this.modExists("filter", true)) {
-
-                       var column = this.columnManager.findColumn(field);
-
-                       if (column) {
-
-                               return this.modules.filter.getHeaderFilterValue(column);
-                       } else {
-
-                               console.warn("Column Filter Error - No matching column found:", field);
-                       }
-               }
-       };
-
-       Tabulator.prototype.setHeaderFilterValue = function (field, value) {
-
-               if (this.modExists("filter", true)) {
-
-                       var column = this.columnManager.findColumn(field);
-
-                       if (column) {
-
-                               this.modules.filter.setHeaderFilterValue(column, value);
-                       } else {
-
-                               console.warn("Column Filter Error - No matching column found:", field);
-
-                               return false;
-                       }
-               }
-       };
-
-       Tabulator.prototype.getHeaderFilters = function () {
-
-               if (this.modExists("filter", true)) {
-
-                       return this.modules.filter.getHeaderFilters();
-               }
-       };
-
-       //remove filter from array
-
-       Tabulator.prototype.removeFilter = function (field, type, value) {
-
-               if (this.modExists("filter", true)) {
-
-                       this.modules.filter.removeFilter(field, type, value);
-
-                       this.rowManager.filterRefresh();
-               }
-       };
-
-       //clear filters
-
-       Tabulator.prototype.clearFilter = function (all) {
-
-               if (this.modExists("filter", true)) {
-
-                       this.modules.filter.clearFilter(all);
-
-                       this.rowManager.filterRefresh();
-               }
-       };
-
-       //clear header filters
-
-       Tabulator.prototype.clearHeaderFilter = function () {
-
-               if (this.modExists("filter", true)) {
-
-                       this.modules.filter.clearHeaderFilter();
-
-                       this.rowManager.filterRefresh();
-               }
-       };
-
-       ///////////////////// Filtering ////////////////////
-
-       Tabulator.prototype.selectRow = function (rows) {
-
-               if (this.modExists("selectRow", true)) {
-
-                       if (rows === true) {
-
-                               console.warn("passing a boolean to the selectRowselectRow function is deprecated, you should now pass the string 'active'");
-
-                               rows = "active";
-                       }
-
-                       this.modules.selectRow.selectRows(rows);
-               }
-       };
-
-       Tabulator.prototype.deselectRow = function (rows) {
-
-               if (this.modExists("selectRow", true)) {
-
-                       this.modules.selectRow.deselectRows(rows);
-               }
-       };
-
-       Tabulator.prototype.toggleSelectRow = function (row) {
-
-               if (this.modExists("selectRow", true)) {
-
-                       this.modules.selectRow.toggleRow(row);
-               }
-       };
-
-       Tabulator.prototype.getSelectedRows = function () {
-
-               if (this.modExists("selectRow", true)) {
-
-                       return this.modules.selectRow.getSelectedRows();
-               }
-       };
-
-       Tabulator.prototype.getSelectedData = function () {
-
-               if (this.modExists("selectRow", true)) {
-
-                       return this.modules.selectRow.getSelectedData();
-               }
-       };
-
-       //////////// Pagination Functions  ////////////
-
-
-       Tabulator.prototype.setMaxPage = function (max) {
-
-               if (this.options.pagination && this.modExists("page")) {
-
-                       this.modules.page.setMaxPage(max);
-               } else {
-
-                       return false;
-               }
-       };
-
-       Tabulator.prototype.setPage = function (page) {
-
-               if (this.options.pagination && this.modExists("page")) {
-
-                       return this.modules.page.setPage(page);
-               } else {
-
-                       return new Promise(function (resolve, reject) {
-                               reject();
-                       });
-               }
-       };
-
-       Tabulator.prototype.setPageToRow = function (row) {
-               var _this31 = this;
-
-               return new Promise(function (resolve, reject) {
-
-                       if (_this31.options.pagination && _this31.modExists("page")) {
-
-                               row = _this31.rowManager.findRow(row);
-
-                               if (row) {
-
-                                       _this31.modules.page.setPageToRow(row).then(function () {
-
-                                               resolve();
-                                       }).catch(function () {
-
-                                               reject();
-                                       });
-                               } else {
-
-                                       reject();
-                               }
-                       } else {
-
-                               reject();
-                       }
-               });
-       };
-
-       Tabulator.prototype.setPageSize = function (size) {
-
-               if (this.options.pagination && this.modExists("page")) {
-
-                       this.modules.page.setPageSize(size);
-
-                       this.modules.page.setPage(1).then(function () {}).catch(function () {});
-               } else {
-
-                       return false;
-               }
-       };
-
-       Tabulator.prototype.getPageSize = function () {
-
-               if (this.options.pagination && this.modExists("page", true)) {
-
-                       return this.modules.page.getPageSize();
-               }
-       };
-
-       Tabulator.prototype.previousPage = function () {
-
-               if (this.options.pagination && this.modExists("page")) {
-
-                       this.modules.page.previousPage();
-               } else {
-
-                       return false;
-               }
-       };
-
-       Tabulator.prototype.nextPage = function () {
-
-               if (this.options.pagination && this.modExists("page")) {
-
-                       this.modules.page.nextPage();
-               } else {
-
-                       return false;
-               }
-       };
-
-       Tabulator.prototype.getPage = function () {
-
-               if (this.options.pagination && this.modExists("page")) {
-
-                       return this.modules.page.getPage();
-               } else {
-
-                       return false;
-               }
-       };
-
-       Tabulator.prototype.getPageMax = function () {
-
-               if (this.options.pagination && this.modExists("page")) {
-
-                       return this.modules.page.getPageMax();
-               } else {
-
-                       return false;
-               }
-       };
-
-       ///////////////// Grouping Functions ///////////////
-
-
-       Tabulator.prototype.setGroupBy = function (groups) {
-
-               if (this.modExists("groupRows", true)) {
-
-                       this.options.groupBy = groups;
-
-                       this.modules.groupRows.initialize();
-
-                       this.rowManager.refreshActiveData("display");
-
-                       if (this.options.persistence && this.modExists("persistence", true) && this.modules.persistence.config.group) {
-
-                               this.modules.persistence.save("group");
-                       }
-               } else {
-
-                       return false;
-               }
-       };
-
-       Tabulator.prototype.setGroupStartOpen = function (values) {
-
-               if (this.modExists("groupRows", true)) {
-
-                       this.options.groupStartOpen = values;
-
-                       this.modules.groupRows.initialize();
-
-                       if (this.options.groupBy) {
-
-                               this.rowManager.refreshActiveData("group");
-
-                               if (this.options.persistence && this.modExists("persistence", true) && this.modules.persistence.config.group) {
-
-                                       this.modules.persistence.save("group");
-                               }
-                       } else {
-
-                               console.warn("Grouping Update - cant refresh view, no groups have been set");
-                       }
-               } else {
-
-                       return false;
-               }
-       };
-
-       Tabulator.prototype.setGroupHeader = function (values) {
-
-               if (this.modExists("groupRows", true)) {
-
-                       this.options.groupHeader = values;
-
-                       this.modules.groupRows.initialize();
-
-                       if (this.options.groupBy) {
-
-                               this.rowManager.refreshActiveData("group");
-
-                               if (this.options.persistence && this.modExists("persistence", true) && this.modules.persistence.config.group) {
-
-                                       this.modules.persistence.save("group");
-                               }
-                       } else {
-
-                               console.warn("Grouping Update - cant refresh view, no groups have been set");
-                       }
-               } else {
-
-                       return false;
-               }
-       };
-
-       Tabulator.prototype.getGroups = function (values) {
-
-               if (this.modExists("groupRows", true)) {
-
-                       return this.modules.groupRows.getGroups(true);
-               } else {
-
-                       return false;
-               }
-       };
-
-       // get grouped table data in the same format as getData()
-
-       Tabulator.prototype.getGroupedData = function () {
-
-               if (this.modExists("groupRows", true)) {
-
-                       return this.options.groupBy ? this.modules.groupRows.getGroupedData() : this.getData();
-               }
-       };
-
-       ///////////////// Column Calculation Functions ///////////////
-
-       Tabulator.prototype.getCalcResults = function () {
-
-               if (this.modExists("columnCalcs", true)) {
-
-                       return this.modules.columnCalcs.getResults();
-               } else {
-
-                       return false;
-               }
-       };
-
-       Tabulator.prototype.recalc = function () {
-
-               if (this.modExists("columnCalcs", true)) {
-
-                       this.modules.columnCalcs.recalcAll(this.rowManager.activeRows);
-               }
-       };
-
-       /////////////// Navigation Management //////////////
-
-
-       Tabulator.prototype.navigatePrev = function () {
-
-               var cell = false;
-
-               if (this.modExists("edit", true)) {
-
-                       cell = this.modules.edit.currentCell;
-
-                       if (cell) {
-
-                               return cell.nav().prev();
-                       }
-               }
-
-               return false;
-       };
-
-       Tabulator.prototype.navigateNext = function () {
-
-               var cell = false;
-
-               if (this.modExists("edit", true)) {
-
-                       cell = this.modules.edit.currentCell;
-
-                       if (cell) {
-
-                               return cell.nav().next();
-                       }
-               }
-
-               return false;
-       };
-
-       Tabulator.prototype.navigateLeft = function () {
-
-               var cell = false;
-
-               if (this.modExists("edit", true)) {
-
-                       cell = this.modules.edit.currentCell;
-
-                       if (cell) {
-
-                               e.preventDefault();
-
-                               return cell.nav().left();
-                       }
-               }
-
-               return false;
-       };
-
-       Tabulator.prototype.navigateRight = function () {
-
-               var cell = false;
-
-               if (this.modExists("edit", true)) {
-
-                       cell = this.modules.edit.currentCell;
-
-                       if (cell) {
-
-                               e.preventDefault();
-
-                               return cell.nav().right();
-                       }
-               }
-
-               return false;
-       };
-
-       Tabulator.prototype.navigateUp = function () {
-
-               var cell = false;
-
-               if (this.modExists("edit", true)) {
-
-                       cell = this.modules.edit.currentCell;
-
-                       if (cell) {
-
-                               e.preventDefault();
-
-                               return cell.nav().up();
-                       }
-               }
-
-               return false;
-       };
-
-       Tabulator.prototype.navigateDown = function () {
-
-               var cell = false;
-
-               if (this.modExists("edit", true)) {
-
-                       cell = this.modules.edit.currentCell;
-
-                       if (cell) {
-
-                               e.preventDefault();
-
-                               return cell.nav().down();
-                       }
-               }
-
-               return false;
-       };
-
-       /////////////// History Management //////////////
-
-       Tabulator.prototype.undo = function () {
-
-               if (this.options.history && this.modExists("history", true)) {
-
-                       return this.modules.history.undo();
-               } else {
-
-                       return false;
-               }
-       };
-
-       Tabulator.prototype.redo = function () {
-
-               if (this.options.history && this.modExists("history", true)) {
-
-                       return this.modules.history.redo();
-               } else {
-
-                       return false;
-               }
-       };
-
-       Tabulator.prototype.getHistoryUndoSize = function () {
-
-               if (this.options.history && this.modExists("history", true)) {
-
-                       return this.modules.history.getHistoryUndoSize();
-               } else {
-
-                       return false;
-               }
-       };
-
-       Tabulator.prototype.getHistoryRedoSize = function () {
-
-               if (this.options.history && this.modExists("history", true)) {
-
-                       return this.modules.history.getHistoryRedoSize();
-               } else {
-
-                       return false;
-               }
-       };
-
-       /////////////// Download Management //////////////
-
-
-       Tabulator.prototype.download = function (type, filename, options, active) {
-
-               if (this.modExists("download", true)) {
-
-                       this.modules.download.download(type, filename, options, active);
-               }
-       };
-
-       Tabulator.prototype.downloadToTab = function (type, filename, options, active) {
-
-               if (this.modExists("download", true)) {
-
-                       this.modules.download.download(type, filename, options, active, true);
-               }
-       };
-
-       /////////// Inter Table Communications ///////////
-
-
-       Tabulator.prototype.tableComms = function (table, module, action, data) {
-
-               this.modules.comms.receive(table, module, action, data);
-       };
-
-       ////////////// Extension Management //////////////
-
-
-       //object to hold module
-
-       Tabulator.prototype.moduleBindings = {};
-
-       //extend module
-
-       Tabulator.prototype.extendModule = function (name, property, values) {
-
-               if (Tabulator.prototype.moduleBindings[name]) {
-
-                       var source = Tabulator.prototype.moduleBindings[name].prototype[property];
-
-                       if (source) {
-
-                               if ((typeof values === 'undefined' ? 'undefined' : _typeof(values)) == "object") {
-
-                                       for (var key in values) {
-
-                                               source[key] = values[key];
-                                       }
-                               } else {
-
-                                       console.warn("Module Error - Invalid value type, it must be an object");
-                               }
-                       } else {
-
-                               console.warn("Module Error - property does not exist:", property);
-                       }
-               } else {
-
-                       console.warn("Module Error - module does not exist:", name);
-               }
-       };
-
-       //add module to tabulator
-
-       Tabulator.prototype.registerModule = function (name, module) {
-
-               var self = this;
-
-               Tabulator.prototype.moduleBindings[name] = module;
-       };
-
-       //ensure that module are bound to instantiated function
-
-       Tabulator.prototype.bindModules = function () {
-
-               this.modules = {};
-
-               for (var name in Tabulator.prototype.moduleBindings) {
-
-                       this.modules[name] = new Tabulator.prototype.moduleBindings[name](this);
-               }
-       };
-
-       //Check for module
-
-       Tabulator.prototype.modExists = function (plugin, required) {
-
-               if (this.modules[plugin]) {
-
-                       return true;
-               } else {
-
-                       if (required) {
-
-                               console.error("Tabulator Module Not Installed: " + plugin);
-                       }
-
-                       return false;
-               }
-       };
-
-       Tabulator.prototype.helpers = {
-
-               elVisible: function elVisible(el) {
-
-                       return !(el.offsetWidth <= 0 && el.offsetHeight <= 0);
-               },
-
-               elOffset: function elOffset(el) {
-
-                       var box = el.getBoundingClientRect();
-
-                       return {
-
-                               top: box.top + window.pageYOffset - document.documentElement.clientTop,
-
-                               left: box.left + window.pageXOffset - document.documentElement.clientLeft
-
-                       };
-               },
-
-               deepClone: function deepClone(obj) {
-
-                       var clone = Array.isArray(obj) ? [] : {};
-
-                       for (var i in obj) {
-
-                               if (obj[i] != null && _typeof(obj[i]) === "object") {
-
-                                       if (obj[i] instanceof Date) {
-
-                                               clone[i] = new Date(obj[i]);
-                                       } else {
-
-                                               clone[i] = this.deepClone(obj[i]);
-                                       }
-                               } else {
-
-                                       clone[i] = obj[i];
-                               }
-                       }
-
-                       return clone;
-               }
-
-       };
-
-       Tabulator.prototype.comms = {
-
-               tables: [],
-
-               register: function register(table) {
-
-                       Tabulator.prototype.comms.tables.push(table);
-               },
-
-               deregister: function deregister(table) {
-
-                       var index = Tabulator.prototype.comms.tables.indexOf(table);
-
-                       if (index > -1) {
-
-                               Tabulator.prototype.comms.tables.splice(index, 1);
-                       }
-               },
-
-               lookupTable: function lookupTable(query, silent) {
-
-                       var results = [],
-                           matches,
-                           match;
-
-                       if (typeof query === "string") {
-
-                               matches = document.querySelectorAll(query);
-
-                               if (matches.length) {
-
-                                       for (var i = 0; i < matches.length; i++) {
-
-                                               match = Tabulator.prototype.comms.matchElement(matches[i]);
-
-                                               if (match) {
-
-                                                       results.push(match);
-                                               }
-                                       }
-                               }
-                       } else if (typeof HTMLElement !== "undefined" && query instanceof HTMLElement || query instanceof Tabulator) {
-
-                               match = Tabulator.prototype.comms.matchElement(query);
-
-                               if (match) {
-
-                                       results.push(match);
-                               }
-                       } else if (Array.isArray(query)) {
-
-                               query.forEach(function (item) {
-
-                                       results = results.concat(Tabulator.prototype.comms.lookupTable(item));
-                               });
-                       } else {
-
-                               if (!silent) {
-
-                                       console.warn("Table Connection Error - Invalid Selector", query);
-                               }
-                       }
-
-                       return results;
-               },
-
-               matchElement: function matchElement(element) {
-
-                       return Tabulator.prototype.comms.tables.find(function (table) {
-
-                               return element instanceof Tabulator ? table === element : table.element === element;
-                       });
-               }
-
-       };
-
-       Tabulator.prototype.findTable = function (query) {
-
-               var results = Tabulator.prototype.comms.lookupTable(query, true);
-
-               return Array.isArray(results) && !results.length ? false : results;
-       };
-
-       var Layout = function Layout(table) {
-
-               this.table = table;
-
-               this.mode = null;
-       };
-
-       //initialize layout system
-
-
-       Layout.prototype.initialize = function (layout) {
-
-               if (this.modes[layout]) {
-
-                       this.mode = layout;
-               } else {
-
-                       console.warn("Layout Error - invalid mode set, defaulting to 'fitData' : " + layout);
-
-                       this.mode = 'fitData';
-               }
-
-               this.table.element.setAttribute("tabulator-layout", this.mode);
-       };
-
-       Layout.prototype.getMode = function () {
-
-               return this.mode;
-       };
-
-       //trigger table layout
-
-
-       Layout.prototype.layout = function () {
-
-               this.modes[this.mode].call(this, this.table.columnManager.columnsByIndex);
-       };
-
-       //layout render functions
-
-
-       Layout.prototype.modes = {
-
-               //resize columns to fit data the contain
-
-
-               "fitData": function fitData(columns) {
-
-                       columns.forEach(function (column) {
-
-                               column.reinitializeWidth();
-                       });
-
-                       if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-                               this.table.modules.responsiveLayout.update();
-                       }
-               },
-
-               //resize columns to fit data the contain and stretch row to fill table
-
-
-               "fitDataFill": function fitDataFill(columns) {
-
-                       columns.forEach(function (column) {
-
-                               column.reinitializeWidth();
-                       });
-
-                       if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-                               this.table.modules.responsiveLayout.update();
-                       }
-               },
-
-               //resize columns to fit data the contain and stretch last column to fill table
-
-
-               "fitDataStretch": function fitDataStretch(columns) {
-                       var _this32 = this;
-
-                       var colsWidth = 0,
-                           tableWidth = this.table.rowManager.element.clientWidth,
-                           gap = 0,
-                           lastCol = false;
-
-                       columns.forEach(function (column, i) {
-
-                               if (!column.widthFixed) {
-
-                                       column.reinitializeWidth();
-                               }
-
-                               if (_this32.table.options.responsiveLayout ? column.modules.responsive.visible : column.visible) {
-
-                                       lastCol = column;
-                               }
-
-                               if (column.visible) {
-
-                                       colsWidth += column.getWidth();
-                               }
-                       });
-
-                       if (lastCol) {
-
-                               gap = tableWidth - colsWidth + lastCol.getWidth();
-
-                               if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-                                       lastCol.setWidth(0);
-
-                                       this.table.modules.responsiveLayout.update();
-                               }
-
-                               if (gap > 0) {
-
-                                       lastCol.setWidth(gap);
-                               } else {
-
-                                       lastCol.reinitializeWidth();
-                               }
-                       } else {
-
-                               if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-                                       this.table.modules.responsiveLayout.update();
-                               }
-                       }
-               },
-
-               //resize columns to fit
-
-
-               "fitColumns": function fitColumns(columns) {
-
-                       var self = this;
-
-                       var totalWidth = self.table.element.clientWidth; //table element width
-
-
-                       var fixedWidth = 0; //total width of columns with a defined width
-
-
-                       var flexWidth = 0; //total width available to flexible columns
-
-
-                       var flexGrowUnits = 0; //total number of widthGrow blocks accross all columns
-
-
-                       var flexColWidth = 0; //desired width of flexible columns
-
-
-                       var flexColumns = []; //array of flexible width columns
-
-
-                       var fixedShrinkColumns = []; //array of fixed width columns that can shrink
-
-
-                       var flexShrinkUnits = 0; //total number of widthShrink blocks accross all columns
-
-
-                       var overflowWidth = 0; //horizontal overflow width
-
-
-                       var gapFill = 0; //number of pixels to be added to final column to close and half pixel gaps
-
-
-                       function calcWidth(width) {
-
-                               var colWidth;
-
-                               if (typeof width == "string") {
-
-                                       if (width.indexOf("%") > -1) {
-
-                                               colWidth = totalWidth / 100 * parseInt(width);
-                                       } else {
-
-                                               colWidth = parseInt(width);
-                                       }
-                               } else {
-
-                                       colWidth = width;
-                               }
-
-                               return colWidth;
-                       }
-
-                       //ensure columns resize to take up the correct amount of space
-
-
-                       function scaleColumns(columns, freeSpace, colWidth, shrinkCols) {
-
-                               var oversizeCols = [],
-                                   oversizeSpace = 0,
-                                   remainingSpace = 0,
-                                   nextColWidth = 0,
-                                   gap = 0,
-                                   changeUnits = 0,
-                                   undersizeCols = [];
-
-                               function calcGrow(col) {
-
-                                       return colWidth * (col.column.definition.widthGrow || 1);
-                               }
-
-                               function calcShrink(col) {
-
-                                       return calcWidth(col.width) - colWidth * (col.column.definition.widthShrink || 0);
-                               }
-
-                               columns.forEach(function (col, i) {
-
-                                       var width = shrinkCols ? calcShrink(col) : calcGrow(col);
-
-                                       if (col.column.minWidth >= width) {
-
-                                               oversizeCols.push(col);
-                                       } else {
-
-                                               undersizeCols.push(col);
-
-                                               changeUnits += shrinkCols ? col.column.definition.widthShrink || 1 : col.column.definition.widthGrow || 1;
-                                       }
-                               });
-
-                               if (oversizeCols.length) {
-
-                                       oversizeCols.forEach(function (col) {
-
-                                               oversizeSpace += shrinkCols ? col.width - col.column.minWidth : col.column.minWidth;
-
-                                               col.width = col.column.minWidth;
-                                       });
-
-                                       remainingSpace = freeSpace - oversizeSpace;
-
-                                       nextColWidth = changeUnits ? Math.floor(remainingSpace / changeUnits) : remainingSpace;
-
-                                       gap = remainingSpace - nextColWidth * changeUnits;
-
-                                       gap += scaleColumns(undersizeCols, remainingSpace, nextColWidth, shrinkCols);
-                               } else {
-
-                                       gap = changeUnits ? freeSpace - Math.floor(freeSpace / changeUnits) * changeUnits : freeSpace;
-
-                                       undersizeCols.forEach(function (column) {
-
-                                               column.width = shrinkCols ? calcShrink(column) : calcGrow(column);
-                                       });
-                               }
-
-                               return gap;
-                       }
-
-                       if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-                               this.table.modules.responsiveLayout.update();
-                       }
-
-                       //adjust for vertical scrollbar if present
-
-
-                       if (this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight) {
-
-                               totalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;
-                       }
-
-                       columns.forEach(function (column) {
-
-                               var width, minWidth, colWidth;
-
-                               if (column.visible) {
-
-                                       width = column.definition.width;
-
-                                       minWidth = parseInt(column.minWidth);
-
-                                       if (width) {
-
-                                               colWidth = calcWidth(width);
-
-                                               fixedWidth += colWidth > minWidth ? colWidth : minWidth;
-
-                                               if (column.definition.widthShrink) {
-
-                                                       fixedShrinkColumns.push({
-
-                                                               column: column,
-
-                                                               width: colWidth > minWidth ? colWidth : minWidth
-
-                                                       });
-
-                                                       flexShrinkUnits += column.definition.widthShrink;
-                                               }
-                                       } else {
-
-                                               flexColumns.push({
-
-                                                       column: column,
-
-                                                       width: 0
-
-                                               });
-
-                                               flexGrowUnits += column.definition.widthGrow || 1;
-                                       }
-                               }
-                       });
-
-                       //calculate available space
-
-
-                       flexWidth = totalWidth - fixedWidth;
-
-                       //calculate correct column size
-
-
-                       flexColWidth = Math.floor(flexWidth / flexGrowUnits);
-
-                       //generate column widths
-
-
-                       var gapFill = scaleColumns(flexColumns, flexWidth, flexColWidth, false);
-
-                       //increase width of last column to account for rounding errors
-
-
-                       if (flexColumns.length && gapFill > 0) {
-
-                               flexColumns[flexColumns.length - 1].width += +gapFill;
-                       }
-
-                       //caculate space for columns to be shrunk into
-
-
-                       flexColumns.forEach(function (col) {
-
-                               flexWidth -= col.width;
-                       });
-
-                       overflowWidth = Math.abs(gapFill) + flexWidth;
-
-                       //shrink oversize columns if there is no available space
-
-
-                       if (overflowWidth > 0 && flexShrinkUnits) {
-
-                               gapFill = scaleColumns(fixedShrinkColumns, overflowWidth, Math.floor(overflowWidth / flexShrinkUnits), true);
-                       }
-
-                       //decrease width of last column to account for rounding errors
-
-
-                       if (fixedShrinkColumns.length) {
-
-                               fixedShrinkColumns[fixedShrinkColumns.length - 1].width -= gapFill;
-                       }
-
-                       flexColumns.forEach(function (col) {
-
-                               col.column.setWidth(col.width);
-                       });
-
-                       fixedShrinkColumns.forEach(function (col) {
-
-                               col.column.setWidth(col.width);
-                       });
-               }
-
-       };
-
-       Tabulator.prototype.registerModule("layout", Layout);
-
-       var Localize = function Localize(table) {
-
-               this.table = table; //hold Tabulator object
-
-               this.locale = "default"; //current locale
-
-               this.lang = false; //current language
-
-               this.bindings = {}; //update events to call when locale is changed
-       };
-
-       //set header placehoder
-
-       Localize.prototype.setHeaderFilterPlaceholder = function (placeholder) {
-
-               this.langs.default.headerFilters.default = placeholder;
-       };
-
-       //set header filter placeholder by column
-
-       Localize.prototype.setHeaderFilterColumnPlaceholder = function (column, placeholder) {
-
-               this.langs.default.headerFilters.columns[column] = placeholder;
-
-               if (this.lang && !this.lang.headerFilters.columns[column]) {
-
-                       this.lang.headerFilters.columns[column] = placeholder;
-               }
-       };
-
-       //setup a lang description object
-
-       Localize.prototype.installLang = function (locale, lang) {
-
-               if (this.langs[locale]) {
-
-                       this._setLangProp(this.langs[locale], lang);
-               } else {
-
-                       this.langs[locale] = lang;
-               }
-       };
-
-       Localize.prototype._setLangProp = function (lang, values) {
-
-               for (var key in values) {
-
-                       if (lang[key] && _typeof(lang[key]) == "object") {
-
-                               this._setLangProp(lang[key], values[key]);
-                       } else {
-
-                               lang[key] = values[key];
-                       }
-               }
-       };
-
-       //set current locale
-
-       Localize.prototype.setLocale = function (desiredLocale) {
-
-               var self = this;
-
-               desiredLocale = desiredLocale || "default";
-
-               //fill in any matching languge values
-
-               function traverseLang(trans, path) {
-
-                       for (var prop in trans) {
-
-                               if (_typeof(trans[prop]) == "object") {
-
-                                       if (!path[prop]) {
-
-                                               path[prop] = {};
-                                       }
-
-                                       traverseLang(trans[prop], path[prop]);
-                               } else {
-
-                                       path[prop] = trans[prop];
-                               }
-                       }
-               }
-
-               //determing correct locale to load
-
-               if (desiredLocale === true && navigator.language) {
-
-                       //get local from system
-
-                       desiredLocale = navigator.language.toLowerCase();
-               }
-
-               if (desiredLocale) {
-
-                       //if locale is not set, check for matching top level locale else use default
-
-                       if (!self.langs[desiredLocale]) {
-
-                               var prefix = desiredLocale.split("-")[0];
-
-                               if (self.langs[prefix]) {
-
-                                       console.warn("Localization Error - Exact matching locale not found, using closest match: ", desiredLocale, prefix);
-
-                                       desiredLocale = prefix;
-                               } else {
-
-                                       console.warn("Localization Error - Matching locale not found, using default: ", desiredLocale);
-
-                                       desiredLocale = "default";
-                               }
-                       }
-               }
-
-               self.locale = desiredLocale;
-
-               //load default lang template
-
-               self.lang = Tabulator.prototype.helpers.deepClone(self.langs.default || {});
-
-               if (desiredLocale != "default") {
-
-                       traverseLang(self.langs[desiredLocale], self.lang);
-               }
-
-               self.table.options.localized.call(self.table, self.locale, self.lang);
-
-               self._executeBindings();
-       };
-
-       //get current locale
-
-       Localize.prototype.getLocale = function (locale) {
-
-               return self.locale;
-       };
-
-       //get lang object for given local or current if none provided
-
-       Localize.prototype.getLang = function (locale) {
-
-               return locale ? this.langs[locale] : this.lang;
-       };
-
-       //get text for current locale
-
-       Localize.prototype.getText = function (path, value) {
-
-               var path = value ? path + "|" + value : path,
-                   pathArray = path.split("|"),
-                   text = this._getLangElement(pathArray, this.locale);
-
-               // if(text === false){
-
-               //      console.warn("Localization Error - Matching localized text not found for given path: ", path);
-
-               // }
-
-
-               return text || "";
-       };
-
-       //traverse langs object and find localized copy
-
-       Localize.prototype._getLangElement = function (path, locale) {
-
-               var self = this;
-
-               var root = self.lang;
-
-               path.forEach(function (level) {
-
-                       var rootPath;
-
-                       if (root) {
-
-                               rootPath = root[level];
-
-                               if (typeof rootPath != "undefined") {
-
-                                       root = rootPath;
-                               } else {
-
-                                       root = false;
-                               }
-                       }
-               });
-
-               return root;
-       };
-
-       //set update binding
-
-       Localize.prototype.bind = function (path, callback) {
-
-               if (!this.bindings[path]) {
-
-                       this.bindings[path] = [];
-               }
-
-               this.bindings[path].push(callback);
-
-               callback(this.getText(path), this.lang);
-       };
-
-       //itterate through bindings and trigger updates
-
-       Localize.prototype._executeBindings = function () {
-
-               var self = this;
-
-               var _loop = function _loop(path) {
-
-                       self.bindings[path].forEach(function (binding) {
-
-                               binding(self.getText(path), self.lang);
-                       });
-               };
-
-               for (var path in self.bindings) {
-                       _loop(path);
-               }
-       };
-
-       //Localized text listings
-
-       Localize.prototype.langs = {
-
-               "default": { //hold default locale text
-
-                       "groups": {
-
-                               "item": "item",
-
-                               "items": "items"
-
-                       },
-
-                       "columns": {},
-
-                       "ajax": {
-
-                               "loading": "Loading",
-
-                               "error": "Error"
-
-                       },
-
-                       "pagination": {
-
-                               "page_size": "Page Size",
-
-                               "first": "First",
-
-                               "first_title": "First Page",
-
-                               "last": "Last",
-
-                               "last_title": "Last Page",
-
-                               "prev": "Prev",
-
-                               "prev_title": "Prev Page",
-
-                               "next": "Next",
-
-                               "next_title": "Next Page"
-
-                       },
-
-                       "headerFilters": {
-
-                               "default": "filter column...",
-
-                               "columns": {}
-
-                       }
-
-               }
-
-       };
-
-       Tabulator.prototype.registerModule("localize", Localize);
-
-       var Comms = function Comms(table) {
-
-               this.table = table;
-       };
-
-       Comms.prototype.getConnections = function (selectors) {
-
-               var self = this,
-                   connections = [],
-                   connection;
-
-               connection = Tabulator.prototype.comms.lookupTable(selectors);
-
-               connection.forEach(function (con) {
-
-                       if (self.table !== con) {
-
-                               connections.push(con);
-                       }
-               });
-
-               return connections;
-       };
-
-       Comms.prototype.send = function (selectors, module, action, data) {
-
-               var self = this,
-                   connections = this.getConnections(selectors);
-
-               connections.forEach(function (connection) {
-
-                       connection.tableComms(self.table.element, module, action, data);
-               });
-
-               if (!connections.length && selectors) {
-
-                       console.warn("Table Connection Error - No tables matching selector found", selectors);
-               }
-       };
-
-       Comms.prototype.receive = function (table, module, action, data) {
-
-               if (this.table.modExists(module)) {
-
-                       return this.table.modules[module].commsReceived(table, action, data);
-               } else {
-
-                       console.warn("Inter-table Comms Error - no such module:", module);
-               }
-       };
-
-       Tabulator.prototype.registerModule("comms", Comms);
-
-       var Accessor = function Accessor(table) {
-               this.table = table; //hold Tabulator object
-               this.allowedTypes = ["", "data", "download", "clipboard", "print", "htmlOutput"]; //list of accessor types
-       };
-
-       //initialize column accessor
-       Accessor.prototype.initializeColumn = function (column) {
-               var self = this,
-                   match = false,
-                   config = {};
-
-               this.allowedTypes.forEach(function (type) {
-                       var key = "accessor" + (type.charAt(0).toUpperCase() + type.slice(1)),
-                           accessor;
-
-                       if (column.definition[key]) {
-                               accessor = self.lookupAccessor(column.definition[key]);
-
-                               if (accessor) {
-                                       match = true;
-
-                                       config[key] = {
-                                               accessor: accessor,
-                                               params: column.definition[key + "Params"] || {}
-                                       };
-                               }
-                       }
-               });
-
-               if (match) {
-                       column.modules.accessor = config;
-               }
-       };
-
-       Accessor.prototype.lookupAccessor = function (value) {
-               var accessor = false;
-
-               //set column accessor
-               switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
-                       case "string":
-                               if (this.accessors[value]) {
-                                       accessor = this.accessors[value];
-                               } else {
-                                       console.warn("Accessor Error - No such accessor found, ignoring: ", value);
-                               }
-                               break;
-
-                       case "function":
-                               accessor = value;
-                               break;
-               }
-
-               return accessor;
-       };
-
-       //apply accessor to row
-       Accessor.prototype.transformRow = function (dataIn, type) {
-               var self = this,
-                   key = "accessor" + (type.charAt(0).toUpperCase() + type.slice(1));
-
-               //clone data object with deep copy to isolate internal data from returned result
-               var data = Tabulator.prototype.helpers.deepClone(dataIn || {});
-
-               self.table.columnManager.traverse(function (column) {
-                       var value, accessor, params, component;
-
-                       if (column.modules.accessor) {
-
-                               accessor = column.modules.accessor[key] || column.modules.accessor.accessor || false;
-
-                               if (accessor) {
-                                       value = column.getFieldValue(data);
-
-                                       if (value != "undefined") {
-                                               component = column.getComponent();
-                                               params = typeof accessor.params === "function" ? accessor.params(value, data, type, component) : accessor.params;
-                                               column.setFieldValue(data, accessor.accessor(value, data, type, params, component));
-                                       }
-                               }
-                       }
-               });
-
-               return data;
-       },
-
-       //default accessors
-       Accessor.prototype.accessors = {};
-
-       Tabulator.prototype.registerModule("accessor", Accessor);
-       var Ajax = function Ajax(table) {
-
-               this.table = table; //hold Tabulator object
-               this.config = false; //hold config object for ajax request
-               this.url = ""; //request URL
-               this.urlGenerator = false;
-               this.params = false; //request parameters
-
-               this.loaderElement = this.createLoaderElement(); //loader message div
-               this.msgElement = this.createMsgElement(); //message element
-               this.loadingElement = false;
-               this.errorElement = false;
-               this.loaderPromise = false;
-
-               this.progressiveLoad = false;
-               this.loading = false;
-
-               this.requestOrder = 0; //prevent requests comming out of sequence if overridden by another load request
-       };
-
-       //initialize setup options
-       Ajax.prototype.initialize = function () {
-               var template;
-
-               this.loaderElement.appendChild(this.msgElement);
-
-               if (this.table.options.ajaxLoaderLoading) {
-                       if (typeof this.table.options.ajaxLoaderLoading == "string") {
-                               template = document.createElement('template');
-                               template.innerHTML = this.table.options.ajaxLoaderLoading.trim();
-                               this.loadingElement = template.content.firstChild;
-                       } else {
-                               this.loadingElement = this.table.options.ajaxLoaderLoading;
-                       }
-               }
-
-               this.loaderPromise = this.table.options.ajaxRequestFunc || this.defaultLoaderPromise;
-
-               this.urlGenerator = this.table.options.ajaxURLGenerator || this.defaultURLGenerator;
-
-               if (this.table.options.ajaxLoaderError) {
-                       if (typeof this.table.options.ajaxLoaderError == "string") {
-                               template = document.createElement('template');
-                               template.innerHTML = this.table.options.ajaxLoaderError.trim();
-                               this.errorElement = template.content.firstChild;
-                       } else {
-                               this.errorElement = this.table.options.ajaxLoaderError;
-                       }
-               }
-
-               if (this.table.options.ajaxParams) {
-                       this.setParams(this.table.options.ajaxParams);
-               }
-
-               if (this.table.options.ajaxConfig) {
-                       this.setConfig(this.table.options.ajaxConfig);
-               }
-
-               if (this.table.options.ajaxURL) {
-                       this.setUrl(this.table.options.ajaxURL);
-               }
-
-               if (this.table.options.ajaxProgressiveLoad) {
-                       if (this.table.options.pagination) {
-                               this.progressiveLoad = false;
-                               console.error("Progressive Load Error - Pagination and progressive load cannot be used at the same time");
-                       } else {
-                               if (this.table.modExists("page")) {
-                                       this.progressiveLoad = this.table.options.ajaxProgressiveLoad;
-                                       this.table.modules.page.initializeProgressive(this.progressiveLoad);
-                               } else {
-                                       console.error("Pagination plugin is required for progressive ajax loading");
-                               }
-                       }
-               }
-       };
-
-       Ajax.prototype.createLoaderElement = function () {
-               var el = document.createElement("div");
-               el.classList.add("tabulator-loader");
-               return el;
-       };
-
-       Ajax.prototype.createMsgElement = function () {
-               var el = document.createElement("div");
-
-               el.classList.add("tabulator-loader-msg");
-               el.setAttribute("role", "alert");
-
-               return el;
-       };
-
-       //set ajax params
-       Ajax.prototype.setParams = function (params, update) {
-               if (update) {
-                       this.params = this.params || {};
-
-                       for (var key in params) {
-                               this.params[key] = params[key];
-                       }
-               } else {
-                       this.params = params;
-               }
-       };
-
-       Ajax.prototype.getParams = function () {
-               return this.params || {};
-       };
-
-       //load config object
-       Ajax.prototype.setConfig = function (config) {
-               this._loadDefaultConfig();
-
-               if (typeof config == "string") {
-                       this.config.method = config;
-               } else {
-                       for (var key in config) {
-                               this.config[key] = config[key];
-                       }
-               }
-       };
-
-       //create config object from default
-       Ajax.prototype._loadDefaultConfig = function (force) {
-               var self = this;
-               if (!self.config || force) {
-
-                       self.config = {};
-
-                       //load base config from defaults
-                       for (var key in self.defaultConfig) {
-                               self.config[key] = self.defaultConfig[key];
-                       }
-               }
-       };
-
-       //set request url
-       Ajax.prototype.setUrl = function (url) {
-               this.url = url;
-       };
-
-       //get request url
-       Ajax.prototype.getUrl = function () {
-               return this.url;
-       };
-
-       //lstandard loading function
-       Ajax.prototype.loadData = function (inPosition, columnsChanged) {
-               var self = this;
-
-               if (this.progressiveLoad) {
-                       return this._loadDataProgressive();
-               } else {
-                       return this._loadDataStandard(inPosition, columnsChanged);
-               }
-       };
-
-       Ajax.prototype.nextPage = function (diff) {
-               var margin;
-
-               if (!this.loading) {
-
-                       margin = this.table.options.ajaxProgressiveLoadScrollMargin || this.table.rowManager.getElement().clientHeight * 2;
-
-                       if (diff < margin) {
-                               this.table.modules.page.nextPage().then(function () {}).catch(function () {});
-                       }
-               }
-       };
-
-       Ajax.prototype.blockActiveRequest = function () {
-               this.requestOrder++;
-       };
-
-       Ajax.prototype._loadDataProgressive = function () {
-               this.table.rowManager.setData([]);
-               return this.table.modules.page.setPage(1);
-       };
-
-       Ajax.prototype._loadDataStandard = function (inPosition, columnsChanged) {
-               var _this33 = this;
-
-               return new Promise(function (resolve, reject) {
-                       _this33.sendRequest(inPosition).then(function (data) {
-                               _this33.table.rowManager.setData(data, inPosition, columnsChanged).then(function () {
-                                       resolve();
-                               }).catch(function (e) {
-                                       reject(e);
-                               });
-                       }).catch(function (e) {
-                               reject(e);
-                       });
-               });
-       };
-
-       Ajax.prototype.generateParamsList = function (data, prefix) {
-               var self = this,
-                   output = [];
-
-               prefix = prefix || "";
-
-               if (Array.isArray(data)) {
-                       data.forEach(function (item, i) {
-                               output = output.concat(self.generateParamsList(item, prefix ? prefix + "[" + i + "]" : i));
-                       });
-               } else if ((typeof data === 'undefined' ? 'undefined' : _typeof(data)) === "object") {
-                       for (var key in data) {
-                               output = output.concat(self.generateParamsList(data[key], prefix ? prefix + "[" + key + "]" : key));
-                       }
-               } else {
-                       output.push({ key: prefix, value: data });
-               }
-
-               return output;
-       };
-
-       Ajax.prototype.serializeParams = function (params) {
-               var output = this.generateParamsList(params),
-                   encoded = [];
-
-               output.forEach(function (item) {
-                       encoded.push(encodeURIComponent(item.key) + "=" + encodeURIComponent(item.value));
-               });
-
-               return encoded.join("&");
-       };
-
-       //send ajax request
-       Ajax.prototype.sendRequest = function (silent) {
-               var _this34 = this;
-
-               var self = this,
-                   url = self.url,
-                   requestNo,
-                   esc,
-                   query;
-
-               self.requestOrder++;
-               requestNo = self.requestOrder;
-
-               self._loadDefaultConfig();
-
-               return new Promise(function (resolve, reject) {
-                       if (self.table.options.ajaxRequesting.call(_this34.table, self.url, self.params) !== false) {
-
-                               self.loading = true;
-
-                               if (!silent) {
-                                       self.showLoader();
-                               }
-
-                               _this34.loaderPromise(url, self.config, self.params).then(function (data) {
-                                       if (requestNo === self.requestOrder) {
-                                               if (self.table.options.ajaxResponse) {
-                                                       data = self.table.options.ajaxResponse.call(self.table, self.url, self.params, data);
-                                               }
-                                               resolve(data);
-
-                                               self.hideLoader();
-                                               self.loading = false;
-                                       } else {
-                                               console.warn("Ajax Response Blocked - An active ajax request was blocked by an attempt to change table data while the request was being made");
-                                       }
-                               }).catch(function (error) {
-                                       console.error("Ajax Load Error: ", error);
-                                       self.table.options.ajaxError.call(self.table, error);
-
-                                       self.showError();
-
-                                       setTimeout(function () {
-                                               self.hideLoader();
-                                       }, 3000);
-
-                                       self.loading = false;
-
-                                       reject();
-                               });
-                       } else {
-                               reject();
-                       }
-               });
-       };
-
-       Ajax.prototype.showLoader = function () {
-               var shouldLoad = typeof this.table.options.ajaxLoader === "function" ? this.table.options.ajaxLoader() : this.table.options.ajaxLoader;
-
-               if (shouldLoad) {
-
-                       this.hideLoader();
-
-                       while (this.msgElement.firstChild) {
-                               this.msgElement.removeChild(this.msgElement.firstChild);
-                       }this.msgElement.classList.remove("tabulator-error");
-                       this.msgElement.classList.add("tabulator-loading");
-
-                       if (this.loadingElement) {
-                               this.msgElement.appendChild(this.loadingElement);
-                       } else {
-                               this.msgElement.innerHTML = this.table.modules.localize.getText("ajax|loading");
-                       }
-
-                       this.table.element.appendChild(this.loaderElement);
-               }
-       };
-
-       Ajax.prototype.showError = function () {
-               this.hideLoader();
-
-               while (this.msgElement.firstChild) {
-                       this.msgElement.removeChild(this.msgElement.firstChild);
-               }this.msgElement.classList.remove("tabulator-loading");
-               this.msgElement.classList.add("tabulator-error");
-
-               if (this.errorElement) {
-                       this.msgElement.appendChild(this.errorElement);
-               } else {
-                       this.msgElement.innerHTML = this.table.modules.localize.getText("ajax|error");
-               }
-
-               this.table.element.appendChild(this.loaderElement);
-       };
-
-       Ajax.prototype.hideLoader = function () {
-               if (this.loaderElement.parentNode) {
-                       this.loaderElement.parentNode.removeChild(this.loaderElement);
-               }
-       };
-
-       //default ajax config object
-       Ajax.prototype.defaultConfig = {
-               method: "GET"
-       };
-
-       Ajax.prototype.defaultURLGenerator = function (url, config, params) {
-
-               if (url) {
-                       if (params && Object.keys(params).length) {
-                               if (!config.method || config.method.toLowerCase() == "get") {
-                                       config.method = "get";
-
-                                       url += (url.includes("?") ? "&" : "?") + this.serializeParams(params);
-                               }
-                       }
-               }
-
-               return url;
-       };
-
-       Ajax.prototype.defaultLoaderPromise = function (url, config, params) {
-               var self = this,
-                   contentType;
-
-               return new Promise(function (resolve, reject) {
-
-                       //set url
-                       url = self.urlGenerator(url, config, params);
-
-                       //set body content if not GET request
-                       if (config.method.toUpperCase() != "GET") {
-                               contentType = _typeof(self.table.options.ajaxContentType) === "object" ? self.table.options.ajaxContentType : self.contentTypeFormatters[self.table.options.ajaxContentType];
-                               if (contentType) {
-
-                                       for (var key in contentType.headers) {
-                                               if (!config.headers) {
-                                                       config.headers = {};
-                                               }
-
-                                               if (typeof config.headers[key] === "undefined") {
-                                                       config.headers[key] = contentType.headers[key];
-                                               }
-                                       }
-
-                                       config.body = contentType.body.call(self, url, config, params);
-                               } else {
-                                       console.warn("Ajax Error - Invalid ajaxContentType value:", self.table.options.ajaxContentType);
-                               }
-                       }
-
-                       if (url) {
-
-                               //configure headers
-                               if (typeof config.headers === "undefined") {
-                                       config.headers = {};
-                               }
-
-                               if (typeof config.headers.Accept === "undefined") {
-                                       config.headers.Accept = "application/json";
-                               }
-
-                               if (typeof config.headers["X-Requested-With"] === "undefined") {
-                                       config.headers["X-Requested-With"] = "XMLHttpRequest";
-                               }
-
-                               if (typeof config.mode === "undefined") {
-                                       config.mode = "cors";
-                               }
-
-                               if (config.mode == "cors") {
-
-                                       if (typeof config.headers["Access-Control-Allow-Origin"] === "undefined") {
-                                               config.headers["Access-Control-Allow-Origin"] = window.location.origin;
-                                       }
-
-                                       if (typeof config.credentials === "undefined") {
-                                               config.credentials = 'same-origin';
-                                       }
-                               } else {
-                                       if (typeof config.credentials === "undefined") {
-                                               config.credentials = 'include';
-                                       }
-                               }
-
-                               //send request
-                               fetch(url, config).then(function (response) {
-                                       if (response.ok) {
-                                               response.json().then(function (data) {
-                                                       resolve(data);
-                                               }).catch(function (error) {
-                                                       reject(error);
-                                                       console.warn("Ajax Load Error - Invalid JSON returned", error);
-                                               });
-                                       } else {
-                                               console.error("Ajax Load Error - Connection Error: " + response.status, response.statusText);
-                                               reject(response);
-                                       }
-                               }).catch(function (error) {
-                                       console.error("Ajax Load Error - Connection Error: ", error);
-                                       reject(error);
-                               });
-                       } else {
-                               console.warn("Ajax Load Error - No URL Set");
-                               resolve([]);
-                       }
-               });
-       };
-
-       Ajax.prototype.contentTypeFormatters = {
-               "json": {
-                       headers: {
-                               'Content-Type': 'application/json'
-                       },
-                       body: function body(url, config, params) {
-                               return JSON.stringify(params);
-                       }
-               },
-               "form": {
-                       headers: {},
-                       body: function body(url, config, params) {
-                               var output = this.generateParamsList(params),
-                                   form = new FormData();
-
-                               output.forEach(function (item) {
-                                       form.append(item.key, item.value);
-                               });
-
-                               return form;
-                       }
-               }
-       };
-
-       Tabulator.prototype.registerModule("ajax", Ajax);
-
-       var ColumnCalcs = function ColumnCalcs(table) {
-               this.table = table; //hold Tabulator object
-               this.topCalcs = [];
-               this.botCalcs = [];
-               this.genColumn = false;
-               this.topElement = this.createElement();
-               this.botElement = this.createElement();
-               this.topRow = false;
-               this.botRow = false;
-               this.topInitialized = false;
-               this.botInitialized = false;
-
-               this.initialize();
-       };
-
-       ColumnCalcs.prototype.createElement = function () {
-               var el = document.createElement("div");
-               el.classList.add("tabulator-calcs-holder");
-               return el;
-       };
-
-       ColumnCalcs.prototype.initialize = function () {
-               this.genColumn = new Column({ field: "value" }, this);
-       };
-
-       //dummy functions to handle being mock column manager
-       ColumnCalcs.prototype.registerColumnField = function () {};
-
-       //initialize column calcs
-       ColumnCalcs.prototype.initializeColumn = function (column) {
-               var def = column.definition;
-
-               var config = {
-                       topCalcParams: def.topCalcParams || {},
-                       botCalcParams: def.bottomCalcParams || {}
-               };
-
-               if (def.topCalc) {
-
-                       switch (_typeof(def.topCalc)) {
-                               case "string":
-                                       if (this.calculations[def.topCalc]) {
-                                               config.topCalc = this.calculations[def.topCalc];
-                                       } else {
-                                               console.warn("Column Calc Error - No such calculation found, ignoring: ", def.topCalc);
-                                       }
-                                       break;
-
-                               case "function":
-                                       config.topCalc = def.topCalc;
-                                       break;
-
-                       }
-
-                       if (config.topCalc) {
-                               column.modules.columnCalcs = config;
-                               this.topCalcs.push(column);
-
-                               if (this.table.options.columnCalcs != "group") {
-                                       this.initializeTopRow();
-                               }
-                       }
-               }
-
-               if (def.bottomCalc) {
-                       switch (_typeof(def.bottomCalc)) {
-                               case "string":
-                                       if (this.calculations[def.bottomCalc]) {
-                                               config.botCalc = this.calculations[def.bottomCalc];
-                                       } else {
-                                               console.warn("Column Calc Error - No such calculation found, ignoring: ", def.bottomCalc);
-                                       }
-                                       break;
-
-                               case "function":
-                                       config.botCalc = def.bottomCalc;
-                                       break;
-
-                       }
-
-                       if (config.botCalc) {
-                               column.modules.columnCalcs = config;
-                               this.botCalcs.push(column);
-
-                               if (this.table.options.columnCalcs != "group") {
-                                       this.initializeBottomRow();
-                               }
-                       }
-               }
-       };
-
-       ColumnCalcs.prototype.removeCalcs = function () {
-               var changed = false;
-
-               if (this.topInitialized) {
-                       this.topInitialized = false;
-                       this.topElement.parentNode.removeChild(this.topElement);
-                       changed = true;
-               }
-
-               if (this.botInitialized) {
-                       this.botInitialized = false;
-                       this.table.footerManager.remove(this.botElement);
-                       changed = true;
-               }
-
-               if (changed) {
-                       this.table.rowManager.adjustTableSize();
-               }
-       };
-
-       ColumnCalcs.prototype.initializeTopRow = function () {
-               if (!this.topInitialized) {
-                       // this.table.columnManager.headersElement.after(this.topElement);
-                       this.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);
-                       this.topInitialized = true;
-               }
-       };
-
-       ColumnCalcs.prototype.initializeBottomRow = function () {
-               if (!this.botInitialized) {
-                       this.table.footerManager.prepend(this.botElement);
-                       this.botInitialized = true;
-               }
-       };
-
-       ColumnCalcs.prototype.scrollHorizontal = function (left) {
-               var hozAdjust = 0,
-                   scrollWidth = this.table.columnManager.getElement().scrollWidth - this.table.element.clientWidth;
-
-               if (this.botInitialized) {
-                       this.botRow.getElement().style.marginLeft = -left + "px";
-               }
-       };
-
-       ColumnCalcs.prototype.recalc = function (rows) {
-               var data, row;
-
-               if (this.topInitialized || this.botInitialized) {
-                       data = this.rowsToData(rows);
-
-                       if (this.topInitialized) {
-                               if (this.topRow) {
-                                       this.topRow.deleteCells();
-                               }
-
-                               row = this.generateRow("top", this.rowsToData(rows));
-                               this.topRow = row;
-                               while (this.topElement.firstChild) {
-                                       this.topElement.removeChild(this.topElement.firstChild);
-                               }this.topElement.appendChild(row.getElement());
-                               row.initialize(true);
-                       }
-
-                       if (this.botInitialized) {
-                               if (this.botRow) {
-                                       this.botRow.deleteCells();
-                               }
-
-                               row = this.generateRow("bottom", this.rowsToData(rows));
-                               this.botRow = row;
-                               while (this.botElement.firstChild) {
-                                       this.botElement.removeChild(this.botElement.firstChild);
-                               }this.botElement.appendChild(row.getElement());
-                               row.initialize(true);
-                       }
-
-                       this.table.rowManager.adjustTableSize();
-
-                       //set resizable handles
-                       if (this.table.modExists("frozenColumns")) {
-                               this.table.modules.frozenColumns.layout();
-                       }
-               }
-       };
-
-       ColumnCalcs.prototype.recalcRowGroup = function (row) {
-               this.recalcGroup(this.table.modules.groupRows.getRowGroup(row));
-       };
-
-       ColumnCalcs.prototype.recalcAll = function () {
-               var _this35 = this;
-
-               if (this.topCalcs.length || this.botCalcs.length) {
-                       if (this.table.options.columnCalcs !== "group") {
-                               this.recalc(this.table.rowManager.activeRows);
-                       }
-
-                       if (this.table.options.groupBy && this.table.options.columnCalcs !== "table") {
-
-                               var groups = table.modules.groupRows.getChildGroups();
-
-                               groups.forEach(function (group) {
-                                       _this35.recalcGroup(group);
-                               });
-                       }
-               }
-       };
-
-       ColumnCalcs.prototype.recalcGroup = function (group) {
-               var data, rowData;
-
-               if (group) {
-                       if (group.calcs) {
-                               if (group.calcs.bottom) {
-                                       data = this.rowsToData(group.rows);
-                                       rowData = this.generateRowData("bottom", data);
-
-                                       group.calcs.bottom.updateData(rowData);
-                                       group.calcs.bottom.reinitialize();
-                               }
-
-                               if (group.calcs.top) {
-                                       data = this.rowsToData(group.rows);
-                                       rowData = this.generateRowData("top", data);
-
-                                       group.calcs.top.updateData(rowData);
-                                       group.calcs.top.reinitialize();
-                               }
-                       }
-               }
-       };
-
-       //generate top stats row
-       ColumnCalcs.prototype.generateTopRow = function (rows) {
-               return this.generateRow("top", this.rowsToData(rows));
-       };
-       //generate bottom stats row
-       ColumnCalcs.prototype.generateBottomRow = function (rows) {
-               return this.generateRow("bottom", this.rowsToData(rows));
-       };
-
-       ColumnCalcs.prototype.rowsToData = function (rows) {
-               var _this36 = this;
-
-               var data = [];
-
-               rows.forEach(function (row) {
-                       data.push(row.getData());
-
-                       if (_this36.table.options.dataTree && _this36.table.options.dataTreeChildColumnCalcs) {
-                               if (row.modules.dataTree.open) {
-                                       var children = _this36.rowsToData(_this36.table.modules.dataTree.getFilteredTreeChildren(row));
-                                       data = data.concat(children);
-                               }
-                       }
-               });
-
-               return data;
-       };
-
-       //generate stats row
-       ColumnCalcs.prototype.generateRow = function (pos, data) {
-               var self = this,
-                   rowData = this.generateRowData(pos, data),
-                   row;
-
-               if (self.table.modExists("mutator")) {
-                       self.table.modules.mutator.disable();
-               }
-
-               row = new Row(rowData, this, "calc");
-
-               if (self.table.modExists("mutator")) {
-                       self.table.modules.mutator.enable();
-               }
-
-               row.getElement().classList.add("tabulator-calcs", "tabulator-calcs-" + pos);
-
-               row.generateCells = function () {
-
-                       var cells = [];
-
-                       self.table.columnManager.columnsByIndex.forEach(function (column) {
-
-                               //set field name of mock column
-                               self.genColumn.setField(column.getField());
-                               self.genColumn.hozAlign = column.hozAlign;
-
-                               if (column.definition[pos + "CalcFormatter"] && self.table.modExists("format")) {
-
-                                       self.genColumn.modules.format = {
-                                               formatter: self.table.modules.format.getFormatter(column.definition[pos + "CalcFormatter"]),
-                                               params: column.definition[pos + "CalcFormatterParams"]
-                                       };
-                               } else {
-                                       self.genColumn.modules.format = {
-                                               formatter: self.table.modules.format.getFormatter("plaintext"),
-                                               params: {}
-                                       };
-                               }
-
-                               //ensure css class defintion is replicated to calculation cell
-                               self.genColumn.definition.cssClass = column.definition.cssClass;
-
-                               //generate cell and assign to correct column
-                               var cell = new Cell(self.genColumn, row);
-                               cell.column = column;
-                               cell.setWidth();
-
-                               column.cells.push(cell);
-                               cells.push(cell);
-
-                               if (!column.visible) {
-                                       cell.hide();
-                               }
-                       });
-
-                       this.cells = cells;
-               };
-
-               return row;
-       };
-
-       //generate stats row
-       ColumnCalcs.prototype.generateRowData = function (pos, data) {
-               var rowData = {},
-                   calcs = pos == "top" ? this.topCalcs : this.botCalcs,
-                   type = pos == "top" ? "topCalc" : "botCalc",
-                   params,
-                   paramKey;
-
-               calcs.forEach(function (column) {
-                       var values = [];
-
-                       if (column.modules.columnCalcs && column.modules.columnCalcs[type]) {
-                               data.forEach(function (item) {
-                                       values.push(column.getFieldValue(item));
-                               });
-
-                               paramKey = type + "Params";
-                               params = typeof column.modules.columnCalcs[paramKey] === "function" ? column.modules.columnCalcs[paramKey](values, data) : column.modules.columnCalcs[paramKey];
-
-                               column.setFieldValue(rowData, column.modules.columnCalcs[type](values, data, params));
-                       }
-               });
-
-               return rowData;
-       };
-
-       ColumnCalcs.prototype.hasTopCalcs = function () {
-               return !!this.topCalcs.length;
-       };
-
-       ColumnCalcs.prototype.hasBottomCalcs = function () {
-               return !!this.botCalcs.length;
-       };
-
-       //handle table redraw
-       ColumnCalcs.prototype.redraw = function () {
-               if (this.topRow) {
-                       this.topRow.normalizeHeight(true);
-               }
-               if (this.botRow) {
-                       this.botRow.normalizeHeight(true);
-               }
-       };
-
-       //return the calculated
-       ColumnCalcs.prototype.getResults = function () {
-               var self = this,
-                   results = {},
-                   groups;
-
-               if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-                       groups = this.table.modules.groupRows.getGroups(true);
-
-                       groups.forEach(function (group) {
-                               results[group.getKey()] = self.getGroupResults(group);
-                       });
-               } else {
-                       results = {
-                               top: this.topRow ? this.topRow.getData() : {},
-                               bottom: this.botRow ? this.botRow.getData() : {}
-                       };
-               }
-
-               return results;
-       };
-
-       //get results from a group
-       ColumnCalcs.prototype.getGroupResults = function (group) {
-               var self = this,
-                   groupObj = group._getSelf(),
-                   subGroups = group.getSubGroups(),
-                   subGroupResults = {},
-                   results = {};
-
-               subGroups.forEach(function (subgroup) {
-                       subGroupResults[subgroup.getKey()] = self.getGroupResults(subgroup);
-               });
-
-               results = {
-                       top: groupObj.calcs.top ? groupObj.calcs.top.getData() : {},
-                       bottom: groupObj.calcs.bottom ? groupObj.calcs.bottom.getData() : {},
-                       groups: subGroupResults
-               };
-
-               return results;
-       };
-
-       //default calculations
-       ColumnCalcs.prototype.calculations = {
-               "avg": function avg(values, data, calcParams) {
-                       var output = 0,
-                           precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : 2;
-
-                       if (values.length) {
-                               output = values.reduce(function (sum, value) {
-                                       value = Number(value);
-                                       return sum + value;
-                               });
-
-                               output = output / values.length;
-
-                               output = precision !== false ? output.toFixed(precision) : output;
-                       }
-
-                       return parseFloat(output).toString();
-               },
-               "max": function max(values, data, calcParams) {
-                       var output = null,
-                           precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : false;
-
-                       values.forEach(function (value) {
-
-                               value = Number(value);
-
-                               if (value > output || output === null) {
-                                       output = value;
-                               }
-                       });
-
-                       return output !== null ? precision !== false ? output.toFixed(precision) : output : "";
-               },
-               "min": function min(values, data, calcParams) {
-                       var output = null,
-                           precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : false;
-
-                       values.forEach(function (value) {
-
-                               value = Number(value);
-
-                               if (value < output || output === null) {
-                                       output = value;
-                               }
-                       });
-
-                       return output !== null ? precision !== false ? output.toFixed(precision) : output : "";
-               },
-               "sum": function sum(values, data, calcParams) {
-                       var output = 0,
-                           precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : false;
-
-                       if (values.length) {
-                               values.forEach(function (value) {
-                                       value = Number(value);
-
-                                       output += !isNaN(value) ? Number(value) : 0;
-                               });
-                       }
-
-                       return precision !== false ? output.toFixed(precision) : output;
-               },
-               "concat": function concat(values, data, calcParams) {
-                       var output = 0;
-
-                       if (values.length) {
-                               output = values.reduce(function (sum, value) {
-                                       return String(sum) + String(value);
-                               });
-                       }
-
-                       return output;
-               },
-               "count": function count(values, data, calcParams) {
-                       var output = 0;
-
-                       if (values.length) {
-                               values.forEach(function (value) {
-                                       if (value) {
-                                               output++;
-                                       }
-                               });
-                       }
-
-                       return output;
-               }
-       };
-
-       Tabulator.prototype.registerModule("columnCalcs", ColumnCalcs);
-
-       var Clipboard = function Clipboard(table) {
-               this.table = table;
-               this.mode = true;
-
-               this.pasteParser = function () {};
-               this.pasteAction = function () {};
-               this.customSelection = false;
-               this.rowRange = false;
-               this.blocked = true; //block copy actions not originating from this command
-       };
-
-       Clipboard.prototype.initialize = function () {
-               var _this37 = this;
-
-               this.mode = this.table.options.clipboard;
-
-               this.rowRange = this.table.options.clipboardCopyRowRange;
-
-               if (this.mode === true || this.mode === "copy") {
-                       this.table.element.addEventListener("copy", function (e) {
-                               var plain, html;
-
-                               if (!_this37.blocked) {
-                                       e.preventDefault();
-
-                                       if (_this37.customSelection) {
-                                               plain = _this37.customSelection;
-
-                                               if (_this37.table.options.clipboardCopyFormatter) {
-                                                       plain = _this37.table.options.clipboardCopyFormatter("plain", plain);
-                                               }
-                                       } else {
-                                               html = _this37.table.modules.export.getHtml(_this37.rowRange, _this37.table.options.clipboardCopyStyled, _this37.table.options.clipboardCopyConfig, "clipboard");
-                                               plain = html ? _this37.generatePlainContent(html) : "";
-
-                                               if (_this37.table.options.clipboardCopyFormatter) {
-                                                       plain = _this37.table.options.clipboardCopyFormatter("plain", plain);
-                                                       html = _this37.table.options.clipboardCopyFormatter("html", html);
-                                               }
-                                       }
-
-                                       if (window.clipboardData && window.clipboardData.setData) {
-                                               window.clipboardData.setData('Text', plain);
-                                       } else if (e.clipboardData && e.clipboardData.setData) {
-                                               e.clipboardData.setData('text/plain', plain);
-                                               if (html) {
-                                                       e.clipboardData.setData('text/html', html);
-                                               }
-                                       } else if (e.originalEvent && e.originalEvent.clipboardData.setData) {
-                                               e.originalEvent.clipboardData.setData('text/plain', plain);
-                                               if (html) {
-                                                       e.originalEvent.clipboardData.setData('text/html', html);
-                                               }
-                                       }
-
-                                       _this37.table.options.clipboardCopied.call(_this37.table, plain, html);
-
-                                       _this37.reset();
-                               }
-                       });
-               }
-
-               if (this.mode === true || this.mode === "paste") {
-                       this.table.element.addEventListener("paste", function (e) {
-                               _this37.paste(e);
-                       });
-               }
-
-               this.setPasteParser(this.table.options.clipboardPasteParser);
-               this.setPasteAction(this.table.options.clipboardPasteAction);
-       };
-
-       Clipboard.prototype.reset = function () {
-               this.blocked = false;
-               this.originalSelectionText = "";
-       };
-
-       Clipboard.prototype.generatePlainContent = function (html) {
-               var output = [];
-
-               var holder = document.createElement("div");
-               holder.innerHTML = html;
-
-               var table = holder.getElementsByTagName("table")[0];
-               var rows = Array.prototype.slice.call(table.getElementsByTagName("tr"));
-
-               rows.forEach(function (row) {
-                       var rowData = [];
-
-                       var headers = Array.prototype.slice.call(row.getElementsByTagName("th"));
-                       var cells = Array.prototype.slice.call(row.getElementsByTagName("td"));
-
-                       cells = cells.concat(headers);
-
-                       cells.forEach(function (cell) {
-                               var val = cell.innerHTML;
-
-                               val = val == "&nbsp;" ? "" : val;
-
-                               rowData.push(val);
-                       });
-
-                       output.push(rowData.join("\t"));
-               });
-
-               return output.join("\n");
-       };
-
-       Clipboard.prototype.copy = function (range, internal) {
-               var range, sel, textRange;
-               this.blocked = false;
-               this.customSelection = false;
-
-               if (this.mode === true || this.mode === "copy") {
-
-                       this.rowRange = range || this.table.options.clipboardCopyRowRange;
-
-                       if (typeof window.getSelection != "undefined" && typeof document.createRange != "undefined") {
-                               range = document.createRange();
-                               range.selectNodeContents(this.table.element);
-                               sel = window.getSelection();
-
-                               if (sel.toString() && internal) {
-                                       this.customSelection = sel.toString();
-                               }
-
-                               sel.removeAllRanges();
-                               sel.addRange(range);
-                       } else if (typeof document.selection != "undefined" && typeof document.body.createTextRange != "undefined") {
-                               textRange = document.body.createTextRange();
-                               textRange.moveToElementText(this.table.element);
-                               textRange.select();
-                       }
-
-                       document.execCommand('copy');
-
-                       if (sel) {
-                               sel.removeAllRanges();
-                       }
-               }
-       };
-
-       //PASTE EVENT HANDLING
-
-       Clipboard.prototype.setPasteAction = function (action) {
-
-               switch (typeof action === 'undefined' ? 'undefined' : _typeof(action)) {
-                       case "string":
-                               this.pasteAction = this.pasteActions[action];
-
-                               if (!this.pasteAction) {
-                                       console.warn("Clipboard Error - No such paste action found:", action);
-                               }
-                               break;
-
-                       case "function":
-                               this.pasteAction = action;
-                               break;
-               }
-       };
-
-       Clipboard.prototype.setPasteParser = function (parser) {
-               switch (typeof parser === 'undefined' ? 'undefined' : _typeof(parser)) {
-                       case "string":
-                               this.pasteParser = this.pasteParsers[parser];
-
-                               if (!this.pasteParser) {
-                                       console.warn("Clipboard Error - No such paste parser found:", parser);
-                               }
-                               break;
-
-                       case "function":
-                               this.pasteParser = parser;
-                               break;
-               }
-       };
-
-       Clipboard.prototype.paste = function (e) {
-               var data, rowData, rows;
-
-               if (this.checkPaseOrigin(e)) {
-
-                       data = this.getPasteData(e);
-
-                       rowData = this.pasteParser.call(this, data);
-
-                       if (rowData) {
-                               e.preventDefault();
-
-                               if (this.table.modExists("mutator")) {
-                                       rowData = this.mutateData(rowData);
-                               }
-
-                               rows = this.pasteAction.call(this, rowData);
-                               this.table.options.clipboardPasted.call(this.table, data, rowData, rows);
-                       } else {
-                               this.table.options.clipboardPasteError.call(this.table, data);
-                       }
-               }
-       };
-
-       Clipboard.prototype.mutateData = function (data) {
-               var self = this,
-                   output = [];
-
-               if (Array.isArray(data)) {
-                       data.forEach(function (row) {
-                               output.push(self.table.modules.mutator.transformRow(row, "clipboard"));
-                       });
-               } else {
-                       output = data;
-               }
-
-               return output;
-       };
-
-       Clipboard.prototype.checkPaseOrigin = function (e) {
-               var valid = true;
-
-               if (e.target.tagName != "DIV" || this.table.modules.edit.currentCell) {
-                       valid = false;
-               }
-
-               return valid;
-       };
-
-       Clipboard.prototype.getPasteData = function (e) {
-               var data;
-
-               if (window.clipboardData && window.clipboardData.getData) {
-                       data = window.clipboardData.getData('Text');
-               } else if (e.clipboardData && e.clipboardData.getData) {
-                       data = e.clipboardData.getData('text/plain');
-               } else if (e.originalEvent && e.originalEvent.clipboardData.getData) {
-                       data = e.originalEvent.clipboardData.getData('text/plain');
-               }
-
-               return data;
-       };
-
-       Clipboard.prototype.pasteParsers = {
-               table: function table(clipboard) {
-                       var data = [],
-                           success = false,
-                           headerFindSuccess = true,
-                           columns = this.table.columnManager.columns,
-                           columnMap = [],
-                           rows = [];
-
-                       //get data from clipboard into array of columns and rows.
-                       clipboard = clipboard.split("\n");
-
-                       clipboard.forEach(function (row) {
-                               data.push(row.split("\t"));
-                       });
-
-                       if (data.length && !(data.length === 1 && data[0].length < 2)) {
-                               success = true;
-
-                               //check if headers are present by title
-                               data[0].forEach(function (value) {
-                                       var column = columns.find(function (column) {
-                                               return value && column.definition.title && value.trim() && column.definition.title.trim() === value.trim();
-                                       });
-
-                                       if (column) {
-                                               columnMap.push(column);
-                                       } else {
-                                               headerFindSuccess = false;
-                                       }
-                               });
-
-                               //check if column headers are present by field
-                               if (!headerFindSuccess) {
-                                       headerFindSuccess = true;
-                                       columnMap = [];
-
-                                       data[0].forEach(function (value) {
-                                               var column = columns.find(function (column) {
-                                                       return value && column.field && value.trim() && column.field.trim() === value.trim();
-                                               });
-
-                                               if (column) {
-                                                       columnMap.push(column);
-                                               } else {
-                                                       headerFindSuccess = false;
-                                               }
-                                       });
-
-                                       if (!headerFindSuccess) {
-                                               columnMap = this.table.columnManager.columnsByIndex;
-                                       }
-                               }
-
-                               //remove header row if found
-                               if (headerFindSuccess) {
-                                       data.shift();
-                               }
-
-                               data.forEach(function (item) {
-                                       var row = {};
-
-                                       item.forEach(function (value, i) {
-                                               if (columnMap[i]) {
-                                                       row[columnMap[i].field] = value;
-                                               }
-                                       });
-
-                                       rows.push(row);
-                               });
-
-                               return rows;
-                       } else {
-                               return false;
-                       }
-               }
-       };
-
-       Clipboard.prototype.pasteActions = {
-               replace: function replace(rows) {
-                       return this.table.setData(rows);
-               },
-               update: function update(rows) {
-                       return this.table.updateOrAddData(rows);
-               },
-               insert: function insert(rows) {
-                       return this.table.addData(rows);
-               }
-       };
-
-       Tabulator.prototype.registerModule("clipboard", Clipboard);
-
-       var DataTree = function DataTree(table) {
-               this.table = table;
-               this.indent = 10;
-               this.field = "";
-               this.collapseEl = null;
-               this.expandEl = null;
-               this.branchEl = null;
-               this.elementField = false;
-
-               this.startOpen = function () {};
-
-               this.displayIndex = 0;
-       };
-
-       DataTree.prototype.initialize = function () {
-               var dummyEl = null,
-                   firstCol = this.table.columnManager.getFirstVisibileColumn(),
-                   options = this.table.options;
-
-               this.field = options.dataTreeChildField;
-               this.indent = options.dataTreeChildIndent;
-               this.elementField = options.dataTreeElementColumn || (firstCol ? firstCol.field : false);
-
-               if (options.dataTreeBranchElement) {
-
-                       if (options.dataTreeBranchElement === true) {
-                               this.branchEl = document.createElement("div");
-                               this.branchEl.classList.add("tabulator-data-tree-branch");
-                       } else {
-                               if (typeof options.dataTreeBranchElement === "string") {
-                                       dummyEl = document.createElement("div");
-                                       dummyEl.innerHTML = options.dataTreeBranchElement;
-                                       this.branchEl = dummyEl.firstChild;
-                               } else {
-                                       this.branchEl = options.dataTreeBranchElement;
-                               }
-                       }
-               }
-
-               if (options.dataTreeCollapseElement) {
-                       if (typeof options.dataTreeCollapseElement === "string") {
-                               dummyEl = document.createElement("div");
-                               dummyEl.innerHTML = options.dataTreeCollapseElement;
-                               this.collapseEl = dummyEl.firstChild;
-                       } else {
-                               this.collapseEl = options.dataTreeCollapseElement;
-                       }
-               } else {
-                       this.collapseEl = document.createElement("div");
-                       this.collapseEl.classList.add("tabulator-data-tree-control");
-                       this.collapseEl.tabIndex = 0;
-                       this.collapseEl.innerHTML = "<div class='tabulator-data-tree-control-collapse'></div>";
-               }
-
-               if (options.dataTreeExpandElement) {
-                       if (typeof options.dataTreeExpandElement === "string") {
-                               dummyEl = document.createElement("div");
-                               dummyEl.innerHTML = options.dataTreeExpandElement;
-                               this.expandEl = dummyEl.firstChild;
-                       } else {
-                               this.expandEl = options.dataTreeExpandElement;
-                       }
-               } else {
-                       this.expandEl = document.createElement("div");
-                       this.expandEl.classList.add("tabulator-data-tree-control");
-                       this.expandEl.tabIndex = 0;
-                       this.expandEl.innerHTML = "<div class='tabulator-data-tree-control-expand'></div>";
-               }
-
-               switch (_typeof(options.dataTreeStartExpanded)) {
-                       case "boolean":
-                               this.startOpen = function (row, index) {
-                                       return options.dataTreeStartExpanded;
-                               };
-                               break;
-
-                       case "function":
-                               this.startOpen = options.dataTreeStartExpanded;
-                               break;
-
-                       default:
-                               this.startOpen = function (row, index) {
-                                       return options.dataTreeStartExpanded[index];
-                               };
-                               break;
-               }
-       };
-
-       DataTree.prototype.initializeRow = function (row) {
-               var childArray = row.getData()[this.field];
-               var isArray = Array.isArray(childArray);
-
-               var children = isArray || !isArray && (typeof childArray === 'undefined' ? 'undefined' : _typeof(childArray)) === "object" && childArray !== null;
-
-               if (!children && row.modules.dataTree && row.modules.dataTree.branchEl) {
-                       row.modules.dataTree.branchEl.parentNode.removeChild(row.modules.dataTree.branchEl);
-               }
-
-               if (!children && row.modules.dataTree && row.modules.dataTree.controlEl) {
-                       row.modules.dataTree.controlEl.parentNode.removeChild(row.modules.dataTree.controlEl);
-               }
-
-               row.modules.dataTree = {
-                       index: row.modules.dataTree ? row.modules.dataTree.index : 0,
-                       open: children ? row.modules.dataTree ? row.modules.dataTree.open : this.startOpen(row.getComponent(), 0) : false,
-                       controlEl: row.modules.dataTree && children ? row.modules.dataTree.controlEl : false,
-                       branchEl: row.modules.dataTree && children ? row.modules.dataTree.branchEl : false,
-                       parent: row.modules.dataTree ? row.modules.dataTree.parent : false,
-                       children: children
-               };
-       };
-
-       DataTree.prototype.layoutRow = function (row) {
-               var cell = this.elementField ? row.getCell(this.elementField) : row.getCells()[0],
-                   el = cell.getElement(),
-                   config = row.modules.dataTree;
-
-               if (config.branchEl) {
-                       if (config.branchEl.parentNode) {
-                               config.branchEl.parentNode.removeChild(config.branchEl);
-                       }
-                       config.branchEl = false;
-               }
-
-               if (config.controlEl) {
-                       if (config.controlEl.parentNode) {
-                               config.controlEl.parentNode.removeChild(config.controlEl);
-                       }
-                       config.controlEl = false;
-               }
-
-               this.generateControlElement(row, el);
-
-               row.element.classList.add("tabulator-tree-level-" + config.index);
-
-               if (config.index) {
-                       if (this.branchEl) {
-                               config.branchEl = this.branchEl.cloneNode(true);
-                               el.insertBefore(config.branchEl, el.firstChild);
-                               config.branchEl.style.marginLeft = (config.branchEl.offsetWidth + config.branchEl.style.marginRight) * (config.index - 1) + config.index * this.indent + "px";
-                       } else {
-                               el.style.paddingLeft = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + config.index * this.indent + "px";
-                       }
-               }
-       };
-
-       DataTree.prototype.generateControlElement = function (row, el) {
-               var _this38 = this;
-
-               var config = row.modules.dataTree,
-                   el = el || row.getCells()[0].getElement(),
-                   oldControl = config.controlEl;
-
-               if (config.children !== false) {
-
-                       if (config.open) {
-                               config.controlEl = this.collapseEl.cloneNode(true);
-                               config.controlEl.addEventListener("click", function (e) {
-                                       e.stopPropagation();
-                                       _this38.collapseRow(row);
-                               });
-                       } else {
-                               config.controlEl = this.expandEl.cloneNode(true);
-                               config.controlEl.addEventListener("click", function (e) {
-                                       e.stopPropagation();
-                                       _this38.expandRow(row);
-                               });
-                       }
-
-                       config.controlEl.addEventListener("mousedown", function (e) {
-                               e.stopPropagation();
-                       });
-
-                       if (oldControl && oldControl.parentNode === el) {
-                               oldControl.parentNode.replaceChild(config.controlEl, oldControl);
-                       } else {
-                               el.insertBefore(config.controlEl, el.firstChild);
-                       }
-               }
-       };
-
-       DataTree.prototype.setDisplayIndex = function (index) {
-               this.displayIndex = index;
-       };
-
-       DataTree.prototype.getDisplayIndex = function () {
-               return this.displayIndex;
-       };
-
-       DataTree.prototype.getRows = function (rows) {
-               var _this39 = this;
-
-               var output = [];
-
-               rows.forEach(function (row, i) {
-                       var config, children;
-
-                       output.push(row);
-
-                       if (row instanceof Row) {
-
-                               config = row.modules.dataTree.children;
-
-                               if (!config.index && config.children !== false) {
-                                       children = _this39.getChildren(row);
-
-                                       children.forEach(function (child) {
-                                               output.push(child);
-                                       });
-                               }
-                       }
-               });
-
-               return output;
-       };
-
-       DataTree.prototype.getChildren = function (row) {
-               var _this40 = this;
-
-               var config = row.modules.dataTree,
-                   children = [],
-                   output = [];
-
-               if (config.children !== false && config.open) {
-                       if (!Array.isArray(config.children)) {
-                               config.children = this.generateChildren(row);
-                       }
-
-                       if (this.table.modExists("filter")) {
-                               children = this.table.modules.filter.filter(config.children);
-                       } else {
-                               children = config.children;
-                       }
-
-                       if (this.table.modExists("sort")) {
-                               this.table.modules.sort.sort(children);
-                       }
-
-                       children.forEach(function (child) {
-                               output.push(child);
-
-                               var subChildren = _this40.getChildren(child);
-
-                               subChildren.forEach(function (sub) {
-                                       output.push(sub);
-                               });
-                       });
-               }
-
-               return output;
-       };
-
-       DataTree.prototype.generateChildren = function (row) {
-               var _this41 = this;
-
-               var children = [];
-
-               var childArray = row.getData()[this.field];
-
-               if (!Array.isArray(childArray)) {
-                       childArray = [childArray];
-               }
-
-               childArray.forEach(function (childData) {
-                       var childRow = new Row(childData || {}, _this41.table.rowManager);
-                       childRow.modules.dataTree.index = row.modules.dataTree.index + 1;
-                       childRow.modules.dataTree.parent = row;
-                       if (childRow.modules.dataTree.children) {
-                               childRow.modules.dataTree.open = _this41.startOpen(childRow.getComponent(), childRow.modules.dataTree.index);
-                       }
-                       children.push(childRow);
-               });
-
-               return children;
-       };
-
-       DataTree.prototype.expandRow = function (row, silent) {
-               var config = row.modules.dataTree;
-
-               if (config.children !== false) {
-                       config.open = true;
-
-                       row.reinitialize();
-
-                       this.table.rowManager.refreshActiveData("tree", false, true);
-
-                       this.table.options.dataTreeRowExpanded(row.getComponent(), row.modules.dataTree.index);
-               }
-       };
-
-       DataTree.prototype.collapseRow = function (row) {
-               var config = row.modules.dataTree;
-
-               if (config.children !== false) {
-                       config.open = false;
-
-                       row.reinitialize();
-
-                       this.table.rowManager.refreshActiveData("tree", false, true);
-
-                       this.table.options.dataTreeRowCollapsed(row.getComponent(), row.modules.dataTree.index);
-               }
-       };
-
-       DataTree.prototype.toggleRow = function (row) {
-               var config = row.modules.dataTree;
-
-               if (config.children !== false) {
-                       if (config.open) {
-                               this.collapseRow(row);
-                       } else {
-                               this.expandRow(row);
-                       }
-               }
-       };
-
-       DataTree.prototype.getTreeParent = function (row) {
-               return row.modules.dataTree.parent ? row.modules.dataTree.parent.getComponent() : false;
-       };
-
-       DataTree.prototype.getFilteredTreeChildren = function (row) {
-               var config = row.modules.dataTree,
-                   output = [],
-                   children;
-
-               if (config.children) {
-
-                       if (!Array.isArray(config.children)) {
-                               config.children = this.generateChildren(row);
-                       }
-
-                       if (this.table.modExists("filter")) {
-                               children = this.table.modules.filter.filter(config.children);
-                       } else {
-                               children = config.children;
-                       }
-
-                       children.forEach(function (childRow) {
-                               if (childRow instanceof Row) {
-                                       output.push(childRow);
-                               }
-                       });
-               }
-
-               return output;
-       };
-
-       DataTree.prototype.getTreeChildren = function (row) {
-               var config = row.modules.dataTree,
-                   output = [];
-
-               if (config.children) {
-
-                       if (!Array.isArray(config.children)) {
-                               config.children = this.generateChildren(row);
-                       }
-
-                       config.children.forEach(function (childRow) {
-                               if (childRow instanceof Row) {
-                                       output.push(childRow.getComponent());
-                               }
-                       });
-               }
-
-               return output;
-       };
-
-       DataTree.prototype.checkForRestyle = function (cell) {
-               if (!cell.row.cells.indexOf(cell)) {
-                       cell.row.reinitialize();
-               }
-       };
-
-       DataTree.prototype.getChildField = function () {
-               return this.field;
-       };
-
-       DataTree.prototype.redrawNeeded = function (data) {
-               return (this.field ? typeof data[this.field] !== "undefined" : false) || (this.elementField ? typeof data[this.elementField] !== "undefined" : false);
-       };
-
-       Tabulator.prototype.registerModule("dataTree", DataTree);
-
-       var Download = function Download(table) {
-               this.table = table; //hold Tabulator object
-               this.fields = {}; //hold filed multi dimension arrays
-               this.columnsByIndex = []; //hold columns in their order in the table
-               this.columnsByField = {}; //hold columns with lookup by field name
-               this.config = {};
-               this.active = false;
-       };
-
-       //trigger file download
-       Download.prototype.download = function (type, filename, options, active, interceptCallback) {
-               var self = this,
-                   downloadFunc = false;
-               this.processConfig();
-               this.active = active;
-
-               function buildLink(data, mime) {
-                       if (interceptCallback) {
-                               if (interceptCallback === true) {
-                                       self.triggerDownload(data, mime, type, filename, true);
-                               } else {
-                                       interceptCallback(data);
-                               }
-                       } else {
-                               self.triggerDownload(data, mime, type, filename);
-                       }
-               }
-
-               if (typeof type == "function") {
-                       downloadFunc = type;
-               } else {
-                       if (self.downloaders[type]) {
-                               downloadFunc = self.downloaders[type];
-                       } else {
-                               console.warn("Download Error - No such download type found: ", type);
-                       }
-               }
-
-               this.processColumns();
-
-               if (downloadFunc) {
-                       downloadFunc.call(this, self.processDefinitions(), self.processData(active || "active"), options || {}, buildLink, this.config);
-               }
-       };
-
-       Download.prototype.processConfig = function () {
-               var config = { //download config
-                       columnGroups: true,
-                       rowGroups: true,
-                       columnCalcs: true,
-                       dataTree: true
-               };
-
-               if (this.table.options.downloadConfig) {
-                       for (var key in this.table.options.downloadConfig) {
-                               config[key] = this.table.options.downloadConfig[key];
-                       }
-               }
-
-               this.config.rowGroups = config.rowGroups && this.table.options.groupBy && this.table.modExists("groupRows");
-
-               if (config.columnGroups && this.table.columnManager.columns.length != this.table.columnManager.columnsByIndex.length) {
-                       this.config.columnGroups = true;
-               }
-
-               if (config.columnCalcs && this.table.modExists("columnCalcs")) {
-                       this.config.columnCalcs = true;
-               }
-
-               if (config.dataTree && this.table.options.dataTree && this.table.modExists("dataTree")) {
-                       this.config.dataTree = true;
-               }
-       };
-
-       Download.prototype.processColumns = function () {
-               var self = this;
-
-               self.columnsByIndex = [];
-               self.columnsByField = {};
-
-               self.table.columnManager.columnsByIndex.forEach(function (column) {
-
-                       if (column.field && column.definition.download !== false && (column.visible || !column.visible && column.definition.download)) {
-                               self.columnsByIndex.push(column);
-                               self.columnsByField[column.field] = column;
-                       }
-               });
-       };
-
-       Download.prototype.processDefinitions = function () {
-               var self = this,
-                   processedDefinitions = [];
-
-               if (this.config.columnGroups) {
-                       self.table.columnManager.columns.forEach(function (column) {
-                               var colData = self.processColumnGroup(column);
-
-                               if (colData) {
-                                       processedDefinitions.push(colData);
-                               }
-                       });
-               } else {
-                       self.columnsByIndex.forEach(function (column) {
-                               if (column.download !== false) {
-                                       //isolate definiton from defintion object
-                                       processedDefinitions.push(self.processDefinition(column));
-                               }
-                       });
-               }
-
-               return processedDefinitions;
-       };
-
-       Download.prototype.processColumnGroup = function (column) {
-               var _this42 = this;
-
-               var subGroups = column.columns,
-                   maxDepth = 0;
-               var processedColumn = this.processDefinition(column);
-               var groupData = {
-                       type: "group",
-                       title: processedColumn.title,
-                       depth: 1
-               };
-
-               if (subGroups.length) {
-                       groupData.subGroups = [];
-                       groupData.width = 0;
-
-                       subGroups.forEach(function (subGroup) {
-                               var subGroupData = _this42.processColumnGroup(subGroup);
-
-                               if (subGroupData.depth > maxDepth) {
-                                       maxDepth = subGroupData.depth;
-                               }
-
-                               if (subGroupData) {
-                                       groupData.width += subGroupData.width;
-                                       groupData.subGroups.push(subGroupData);
-                               }
-                       });
-
-                       groupData.depth += maxDepth;
-
-                       if (!groupData.width) {
-                               return false;
-                       }
-               } else {
-                       if (column.field && column.definition.download !== false && (column.visible || !column.visible && column.definition.download)) {
-                               groupData.width = 1;
-                               groupData.definition = processedColumn;
-                       } else {
-                               return false;
-                       }
-               }
-
-               return groupData;
-       };
-
-       Download.prototype.processDefinition = function (column) {
-               var def = {};
-
-               for (var key in column.definition) {
-                       def[key] = column.definition[key];
-               }
-
-               if (typeof column.definition.downloadTitle != "undefined") {
-                       def.title = column.definition.downloadTitle;
-               }
-
-               return def;
-       };
-
-       Download.prototype.processData = function (active) {
-               var _this43 = this;
-
-               var self = this,
-                   data = [],
-                   groups = [],
-                   rows = false,
-                   calcs = {};
-
-               if (this.config.rowGroups) {
-
-                       if (active == "visible") {
-
-                               rows = self.table.rowManager.getRows(active);
-
-                               rows.forEach(function (row) {
-                                       if (row.type == "row") {
-                                               var group = row.getGroup();
-
-                                               if (groups.indexOf(group) === -1) {
-                                                       groups.push(group);
-                                               }
-                                       }
-                               });
-                       } else {
-                               groups = this.table.modules.groupRows.getGroups();
-                       }
-
-                       groups.forEach(function (group) {
-                               data.push(_this43.processGroupData(group, rows));
-                       });
-               } else {
-                       if (this.config.dataTree) {
-                               active = active = "active" ? "display" : active;
-                       }
-                       data = self.table.rowManager.getData(active, "download");
-               }
-
-               if (this.config.columnCalcs) {
-                       calcs = this.table.getCalcResults();
-
-                       data = {
-                               calcs: calcs,
-                               data: data
-                       };
-               }
-
-               //bulk data processing
-               if (typeof self.table.options.downloadDataFormatter == "function") {
-                       data = self.table.options.downloadDataFormatter(data);
-               }
-
-               return data;
-       };
-
-       Download.prototype.processGroupData = function (group, visRows) {
-               var _this44 = this;
-
-               var subGroups = group.getSubGroups();
-
-               var groupData = {
-                       type: "group",
-                       key: group.key
-               };
-
-               if (subGroups.length) {
-                       groupData.subGroups = [];
-
-                       subGroups.forEach(function (subGroup) {
-                               groupData.subGroups.push(_this44.processGroupData(subGroup, visRows));
-                       });
-               } else {
-                       if (visRows) {
-                               groupData.rows = [];
-
-                               group.rows.forEach(function (row) {
-                                       if (visRows.indexOf(row) > -1) {
-                                               groupData.rows.push(row.getData("download"));
-                                       }
-                               });
-                       } else {
-                               groupData.rows = group.getData(true, "download");
-                       }
-               }
-
-               return groupData;
-       };
-
-       Download.prototype.triggerDownload = function (data, mime, type, filename, newTab) {
-               var element = document.createElement('a'),
-                   blob = new Blob([data], { type: mime }),
-                   filename = filename || "Tabulator." + (typeof type === "function" ? "txt" : type);
-
-               blob = this.table.options.downloadReady.call(this.table, data, blob);
-
-               if (blob) {
-
-                       if (newTab) {
-                               window.open(window.URL.createObjectURL(blob));
-                       } else {
-                               if (navigator.msSaveOrOpenBlob) {
-                                       navigator.msSaveOrOpenBlob(blob, filename);
-                               } else {
-                                       element.setAttribute('href', window.URL.createObjectURL(blob));
-
-                                       //set file title
-                                       element.setAttribute('download', filename);
-
-                                       //trigger download
-                                       element.style.display = 'none';
-                                       document.body.appendChild(element);
-                                       element.click();
-
-                                       //remove temporary link element
-                                       document.body.removeChild(element);
-                               }
-                       }
-
-                       if (this.table.options.downloadComplete) {
-                               this.table.options.downloadComplete();
-                       }
-               }
-       };
-
-       //nested field lookup
-       Download.prototype.getFieldValue = function (field, data) {
-               var column = this.columnsByField[field];
-
-               if (column) {
-                       return column.getFieldValue(data);
-               }
-
-               return false;
-       };
-
-       Download.prototype.commsReceived = function (table, action, data) {
-               switch (action) {
-                       case "intercept":
-                               this.download(data.type, "", data.options, data.active, data.intercept);
-                               break;
-               }
-       };
-
-       //downloaders
-       Download.prototype.downloaders = {
-               csv: function csv(columns, data, options, setFileContents, config) {
-                       var self = this,
-                           titles = [],
-                           fields = [],
-                           delimiter = options && options.delimiter ? options.delimiter : ",",
-                           fileContents,
-                           output;
-
-                       //build column headers
-                       function parseSimpleTitles() {
-                               columns.forEach(function (column) {
-                                       titles.push('"' + String(column.title).split('"').join('""') + '"');
-                                       fields.push(column.field);
-                               });
-                       }
-
-                       function parseColumnGroup(column, level) {
-                               if (column.subGroups) {
-                                       column.subGroups.forEach(function (subGroup) {
-                                               parseColumnGroup(subGroup, level + 1);
-                                       });
-                               } else {
-                                       titles.push('"' + String(column.title).split('"').join('""') + '"');
-                                       fields.push(column.definition.field);
-                               }
-                       }
-
-                       if (config.columnGroups) {
-                               console.warn("Download Warning - CSV downloader cannot process column groups");
-
-                               columns.forEach(function (column) {
-                                       parseColumnGroup(column, 0);
-                               });
-                       } else {
-                               parseSimpleTitles();
-                       }
-
-                       //generate header row
-                       fileContents = [titles.join(delimiter)];
-
-                       function parseRows(data) {
-                               //generate each row of the table
-                               data.forEach(function (row) {
-                                       var rowData = [];
-
-                                       fields.forEach(function (field) {
-                                               var value = self.getFieldValue(field, row);
-
-                                               switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
-                                                       case "object":
-                                                               value = JSON.stringify(value);
-                                                               break;
-
-                                                       case "undefined":
-                                                       case "null":
-                                                               value = "";
-                                                               break;
-
-                                                       default:
-                                                               value = value;
-                                               }
-
-                                               //escape quotation marks
-                                               rowData.push('"' + String(value).split('"').join('""') + '"');
-                                       });
-
-                                       fileContents.push(rowData.join(delimiter));
-                               });
-                       }
-
-                       function parseGroup(group) {
-                               if (group.subGroups) {
-                                       group.subGroups.forEach(function (subGroup) {
-                                               parseGroup(subGroup);
-                                       });
-                               } else {
-                                       parseRows(group.rows);
-                               }
-                       }
-
-                       if (config.columnCalcs) {
-                               console.warn("Download Warning - CSV downloader cannot process column calculations");
-                               data = data.data;
-                       }
-
-                       if (config.rowGroups) {
-                               console.warn("Download Warning - CSV downloader cannot process row groups");
-
-                               data.forEach(function (group) {
-                                       parseGroup(group);
-                               });
-                       } else {
-                               parseRows(data);
-                       }
-
-                       output = fileContents.join("\n");
-
-                       if (options.bom) {
-                               output = '\uFEFF' + output;
-                       }
-
-                       setFileContents(output, "text/csv");
-               },
-
-               json: function json(columns, data, options, setFileContents, config) {
-                       var fileContents;
-
-                       if (config.columnCalcs) {
-                               console.warn("Download Warning - CSV downloader cannot process column calculations");
-                               data = data.data;
-                       }
-
-                       fileContents = JSON.stringify(data, null, '\t');
-
-                       setFileContents(fileContents, "application/json");
-               },
-
-               pdf: function pdf(columns, data, options, setFileContents, config) {
-                       var self = this,
-                           fields = [],
-                           header = [],
-                           body = [],
-                           calcs = {},
-                           headerDepth = 1,
-                           table = "",
-                           autoTableParams = {},
-                           rowGroupStyles = options.rowGroupStyles || {
-                               fontStyle: "bold",
-                               fontSize: 12,
-                               cellPadding: 6,
-                               fillColor: 220
-                       },
-                           rowCalcStyles = options.rowCalcStyles || {
-                               fontStyle: "bold",
-                               fontSize: 10,
-                               cellPadding: 4,
-                               fillColor: 232
-                       },
-                           jsPDFParams = options.jsPDF || {},
-                           title = options && options.title ? options.title : "";
-
-                       if (config.columnCalcs) {
-                               calcs = data.calcs;
-                               data = data.data;
-                       }
-
-                       if (!jsPDFParams.orientation) {
-                               jsPDFParams.orientation = options.orientation || "landscape";
-                       }
-
-                       if (!jsPDFParams.unit) {
-                               jsPDFParams.unit = "pt";
-                       }
-
-                       //build column headers
-                       function parseSimpleTitles() {
-                               columns.forEach(function (column) {
-                                       if (column.field) {
-                                               header.push(column.title || "");
-                                               fields.push(column.field);
-                                       }
-                               });
-
-                               header = [header];
-                       }
-
-                       function parseColumnGroup(column, level) {
-                               var colSpan = column.width,
-                                   rowSpan = 1,
-                                   col = {
-                                       content: column.title || ""
-                               };
-
-                               if (column.subGroups) {
-                                       column.subGroups.forEach(function (subGroup) {
-                                               parseColumnGroup(subGroup, level + 1);
-                                       });
-                                       rowSpan = 1;
-                               } else {
-                                       fields.push(column.definition.field);
-                                       rowSpan = headerDepth - level;
-                               }
-
-                               col.rowSpan = rowSpan;
-                               // col.colSpan = colSpan;
-
-                               header[level].push(col);
-
-                               colSpan--;
-
-                               if (rowSpan > 1) {
-                                       for (var i = level + 1; i < headerDepth; i++) {
-                                               header[i].push("");
-                                       }
-                               }
-
-                               for (var i = 0; i < colSpan; i++) {
-                                       header[level].push("");
-                               }
-                       }
-
-                       if (config.columnGroups) {
-                               columns.forEach(function (column) {
-                                       if (column.depth > headerDepth) {
-                                               headerDepth = column.depth;
-                                       }
-                               });
-
-                               for (var i = 0; i < headerDepth; i++) {
-                                       header.push([]);
-                               }
-
-                               columns.forEach(function (column) {
-                                       parseColumnGroup(column, 0);
-                               });
-                       } else {
-                               parseSimpleTitles();
-                       }
-
-                       function parseValue(value) {
-                               switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
-                                       case "object":
-                                               value = JSON.stringify(value);
-                                               break;
-
-                                       case "undefined":
-                                       case "null":
-                                               value = "";
-                                               break;
-
-                                       default:
-                                               value = value;
-                               }
-
-                               return value;
-                       }
-
-                       function parseRows(data) {
-                               //build table rows
-                               data.forEach(function (row) {
-                                       body.push(parseRow(row));
-                               });
-                       }
-
-                       function parseRow(row, styles) {
-                               var rowData = [];
-
-                               fields.forEach(function (field) {
-                                       var value = self.getFieldValue(field, row);
-                                       value = parseValue(value);
-
-                                       if (styles) {
-                                               rowData.push({
-                                                       content: value,
-                                                       styles: styles
-                                               });
-                                       } else {
-                                               rowData.push(value);
-                                       }
-                               });
-
-                               return rowData;
-                       }
-
-                       function parseGroup(group, calcObj) {
-                               var groupData = [];
-
-                               groupData.push({ content: parseValue(group.key), colSpan: fields.length, styles: rowGroupStyles });
-
-                               body.push(groupData);
-
-                               if (group.subGroups) {
-                                       group.subGroups.forEach(function (subGroup) {
-                                               parseGroup(subGroup, calcObj[group.key] ? calcObj[group.key].groups || {} : {});
-                                       });
-                               } else {
-
-                                       if (config.columnCalcs) {
-                                               addCalcRow(calcObj, group.key, "top");
-                                       }
-
-                                       parseRows(group.rows);
-
-                                       if (config.columnCalcs) {
-                                               addCalcRow(calcObj, group.key, "bottom");
-                                       }
-                               }
-                       }
-
-                       function addCalcRow(calcs, selector, pos) {
-                               var calcData = calcs[selector];
-
-                               if (calcData) {
-                                       if (pos) {
-                                               calcData = calcData[pos];
-                                       }
-
-                                       if (Object.keys(calcData).length) {
-                                               body.push(parseRow(calcData, rowCalcStyles));
-                                       }
-                               }
-                       }
-
-                       if (config.rowGroups) {
-                               data.forEach(function (group) {
-                                       parseGroup(group, calcs);
-                               });
-                       } else {
-                               if (config.columnCalcs) {
-                                       addCalcRow(calcs, "top");
-                               }
-
-                               parseRows(data);
-
-                               if (config.columnCalcs) {
-                                       addCalcRow(calcs, "bottom");
-                               }
-                       }
-
-                       var doc = new jsPDF(jsPDFParams); //set document to landscape, better for most tables
-
-                       if (options && options.autoTable) {
-                               if (typeof options.autoTable === "function") {
-                                       autoTableParams = options.autoTable(doc) || {};
-                               } else {
-                                       autoTableParams = options.autoTable;
-                               }
-                       }
-
-                       if (title) {
-                               autoTableParams.addPageContent = function (data) {
-                                       doc.text(title, 40, 30);
-                               };
-                       }
-
-                       autoTableParams.head = header;
-                       autoTableParams.body = body;
-
-                       doc.autoTable(autoTableParams);
-
-                       if (options && options.documentProcessing) {
-                               options.documentProcessing(doc);
-                       }
-
-                       setFileContents(doc.output("arraybuffer"), "application/pdf");
-               },
-
-               xlsx: function xlsx(columns, data, options, setFileContents, config) {
-                       var self = this,
-                           sheetName = options.sheetName || "Sheet1",
-                           workbook = XLSX.utils.book_new(),
-                           calcs = {},
-                           groupRowIndexs = [],
-                           groupColumnIndexs = [],
-                           calcRowIndexs = [],
-                           output;
-
-                       workbook.SheetNames = [];
-                       workbook.Sheets = {};
-
-                       if (config.columnCalcs) {
-                               calcs = data.calcs;
-                               data = data.data;
-                       }
-
-                       function generateSheet() {
-                               var titles = [],
-                                   fields = [],
-                                   rows = [],
-                                   worksheet;
-
-                               //convert rows to worksheet
-                               function rowsToSheet() {
-                                       var sheet = {};
-                                       var range = { s: { c: 0, r: 0 }, e: { c: fields.length, r: rows.length } };
-
-                                       XLSX.utils.sheet_add_aoa(sheet, rows);
-
-                                       sheet['!ref'] = XLSX.utils.encode_range(range);
-
-                                       var merges = generateMerges();
-
-                                       if (merges.length) {
-                                               sheet["!merges"] = merges;
-                                       }
-
-                                       return sheet;
-                               }
-
-                               function parseSimpleTitles() {
-                                       //get field lists
-                                       columns.forEach(function (column) {
-                                               titles.push(column.title);
-                                               fields.push(column.field);
-                                       });
-
-                                       rows.push(titles);
-                               }
-
-                               function parseColumnGroup(column, level) {
-
-                                       if (typeof titles[level] === "undefined") {
-                                               titles[level] = [];
-                                       }
-
-                                       if (typeof groupColumnIndexs[level] === "undefined") {
-                                               groupColumnIndexs[level] = [];
-                                       }
-
-                                       if (column.width > 1) {
-
-                                               groupColumnIndexs[level].push({
-                                                       type: "hoz",
-                                                       start: titles[level].length,
-                                                       end: titles[level].length + column.width - 1
-                                               });
-                                       }
-
-                                       titles[level].push(column.title);
-
-                                       if (column.subGroups) {
-                                               column.subGroups.forEach(function (subGroup) {
-                                                       parseColumnGroup(subGroup, level + 1);
-                                               });
-                                       } else {
-                                               fields.push(column.definition.field);
-                                               padColumnTitles(fields.length - 1, level);
-
-                                               groupColumnIndexs[level].push({
-                                                       type: "vert",
-                                                       start: fields.length - 1
-                                               });
-                                       }
-                               }
-
-                               function padColumnTitles() {
-                                       var max = 0;
-
-                                       titles.forEach(function (title) {
-                                               var len = title.length;
-                                               if (len > max) {
-                                                       max = len;
-                                               }
-                                       });
-
-                                       titles.forEach(function (title) {
-                                               var len = title.length;
-                                               if (len < max) {
-                                                       for (var i = len; i < max; i++) {
-                                                               title.push("");
-                                                       }
-                                               }
-                                       });
-                               }
-
-                               if (config.columnGroups) {
-                                       columns.forEach(function (column) {
-                                               parseColumnGroup(column, 0);
-                                       });
-
-                                       titles.forEach(function (title) {
-                                               rows.push(title);
-                                       });
-                               } else {
-                                       parseSimpleTitles();
-                               }
-
-                               function generateMerges() {
-                                       var output = [];
-
-                                       groupRowIndexs.forEach(function (index) {
-                                               output.push({ s: { r: index, c: 0 }, e: { r: index, c: fields.length - 1 } });
-                                       });
-
-                                       groupColumnIndexs.forEach(function (merges, level) {
-                                               merges.forEach(function (merge) {
-                                                       if (merge.type === "hoz") {
-                                                               output.push({ s: { r: level, c: merge.start }, e: { r: level, c: merge.end } });
-                                                       } else {
-                                                               if (level != titles.length - 1) {
-                                                                       output.push({ s: { r: level, c: merge.start }, e: { r: titles.length - 1, c: merge.start } });
-                                                               }
-                                                       }
-                                               });
-                                       });
-
-                                       return output;
-                               }
-
-                               //generate each row of the table
-                               function parseRows(data) {
-                                       data.forEach(function (row) {
-                                               rows.push(parseRow(row));
-                                       });
-                               }
-
-                               function parseRow(row) {
-                                       var rowData = [];
-
-                                       fields.forEach(function (field) {
-                                               var value = self.getFieldValue(field, row);
-                                               rowData.push(!(value instanceof Date) && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === "object" ? JSON.stringify(value) : value);
-                                       });
-
-                                       return rowData;
-                               }
-
-                               function addCalcRow(calcs, selector, pos) {
-                                       var calcData = calcs[selector];
-
-                                       if (calcData) {
-                                               if (pos) {
-                                                       calcData = calcData[pos];
-                                               }
-
-                                               if (Object.keys(calcData).length) {
-                                                       calcRowIndexs.push(rows.length);
-                                                       rows.push(parseRow(calcData));
-                                               }
-                                       }
-                               }
-
-                               function parseGroup(group, calcObj) {
-                                       var groupData = [];
-
-                                       groupData.push(group.key);
-
-                                       groupRowIndexs.push(rows.length);
-
-                                       rows.push(groupData);
-
-                                       if (group.subGroups) {
-                                               group.subGroups.forEach(function (subGroup) {
-                                                       parseGroup(subGroup, calcObj[group.key] ? calcObj[group.key].groups || {} : {});
-                                               });
-                                       } else {
-
-                                               if (config.columnCalcs) {
-                                                       addCalcRow(calcObj, group.key, "top");
-                                               }
-
-                                               parseRows(group.rows);
-
-                                               if (config.columnCalcs) {
-                                                       addCalcRow(calcObj, group.key, "bottom");
-                                               }
-                                       }
-                               }
-
-                               if (config.rowGroups) {
-                                       data.forEach(function (group) {
-                                               parseGroup(group, calcs);
-                                       });
-                               } else {
-                                       if (config.columnCalcs) {
-                                               addCalcRow(calcs, "top");
-                                       }
-
-                                       parseRows(data);
-
-                                       if (config.columnCalcs) {
-                                               addCalcRow(calcs, "bottom");
-                                       }
-                               }
-
-                               worksheet = rowsToSheet();
-
-                               return worksheet;
-                       }
-
-                       if (options.sheetOnly) {
-                               setFileContents(generateSheet());
-                               return;
-                       }
-
-                       if (options.sheets) {
-                               for (var sheet in options.sheets) {
-
-                                       if (options.sheets[sheet] === true) {
-                                               workbook.SheetNames.push(sheet);
-                                               workbook.Sheets[sheet] = generateSheet();
-                                       } else {
-
-                                               workbook.SheetNames.push(sheet);
-
-                                               this.table.modules.comms.send(options.sheets[sheet], "download", "intercept", {
-                                                       type: "xlsx",
-                                                       options: { sheetOnly: true },
-                                                       active: self.active,
-                                                       intercept: function intercept(data) {
-                                                               workbook.Sheets[sheet] = data;
-                                                       }
-                                               });
-                                       }
-                               }
-                       } else {
-                               workbook.SheetNames.push(sheetName);
-                               workbook.Sheets[sheetName] = generateSheet();
-                       }
-
-                       if (options.documentProcessing) {
-                               workbook = options.documentProcessing(workbook);
-                       }
-
-                       //convert workbook to binary array
-                       function s2ab(s) {
-                               var buf = new ArrayBuffer(s.length);
-                               var view = new Uint8Array(buf);
-                               for (var i = 0; i != s.length; ++i) {
-                                       view[i] = s.charCodeAt(i) & 0xFF;
-                               }return buf;
-                       }
-
-                       output = XLSX.write(workbook, { bookType: 'xlsx', bookSST: true, type: 'binary' });
-
-                       setFileContents(s2ab(output), "application/octet-stream");
-               },
-
-               html: function html(columns, data, options, setFileContents, config) {
-                       if (this.table.modExists("export", true)) {
-                               setFileContents(this.table.modules.export.getHtml(true, options.style, config), "text/html");
-                       }
-               }
-
-       };
-
-       Tabulator.prototype.registerModule("download", Download);
-
-       var Edit = function Edit(table) {
-               this.table = table; //hold Tabulator object
-               this.currentCell = false; //hold currently editing cell
-               this.mouseClick = false; //hold mousedown state to prevent click binding being overriden by editor opening
-               this.recursionBlock = false; //prevent focus recursion
-               this.invalidEdit = false;
-       };
-
-       //initialize column editor
-       Edit.prototype.initializeColumn = function (column) {
-               var self = this,
-                   config = {
-                       editor: false,
-                       blocked: false,
-                       check: column.definition.editable,
-                       params: column.definition.editorParams || {}
-               };
-
-               //set column editor
-               switch (_typeof(column.definition.editor)) {
-                       case "string":
-
-                               if (column.definition.editor === "tick") {
-                                       column.definition.editor = "tickCross";
-                                       console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor");
-                               }
-
-                               if (self.editors[column.definition.editor]) {
-                                       config.editor = self.editors[column.definition.editor];
-                               } else {
-                                       console.warn("Editor Error - No such editor found: ", column.definition.editor);
-                               }
-                               break;
-
-                       case "function":
-                               config.editor = column.definition.editor;
-                               break;
-
-                       case "boolean":
-
-                               if (column.definition.editor === true) {
-
-                                       if (typeof column.definition.formatter !== "function") {
-
-                                               if (column.definition.formatter === "tick") {
-                                                       column.definition.formatter = "tickCross";
-                                                       console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor");
-                                               }
-
-                                               if (self.editors[column.definition.formatter]) {
-                                                       config.editor = self.editors[column.definition.formatter];
-                                               } else {
-                                                       config.editor = self.editors["input"];
-                                               }
-                                       } else {
-                                               console.warn("Editor Error - Cannot auto lookup editor for a custom formatter: ", column.definition.formatter);
-                                       }
-                               }
-                               break;
-               }
-
-               if (config.editor) {
-                       column.modules.edit = config;
-               }
-       };
-
-       Edit.prototype.getCurrentCell = function () {
-               return this.currentCell ? this.currentCell.getComponent() : false;
-       };
-
-       Edit.prototype.clearEditor = function () {
-               var cell = this.currentCell,
-                   cellEl;
-
-               this.invalidEdit = false;
-
-               if (cell) {
-                       this.currentCell = false;
-
-                       cellEl = cell.getElement();
-                       cellEl.classList.remove("tabulator-validation-fail");
-                       cellEl.classList.remove("tabulator-editing");
-                       while (cellEl.firstChild) {
-                               cellEl.removeChild(cellEl.firstChild);
-                       }cell.row.getElement().classList.remove("tabulator-row-editing");
-               }
-       };
-
-       Edit.prototype.cancelEdit = function () {
-
-               if (this.currentCell) {
-                       var cell = this.currentCell;
-                       var component = this.currentCell.getComponent();
-
-                       this.clearEditor();
-                       cell.setValueActual(cell.getValue());
-                       cell.cellRendered();
-
-                       if (cell.column.cellEvents.cellEditCancelled) {
-                               cell.column.cellEvents.cellEditCancelled.call(this.table, component);
-                       }
-
-                       this.table.options.cellEditCancelled.call(this.table, component);
-               }
-       };
-
-       //return a formatted value for a cell
-       Edit.prototype.bindEditor = function (cell) {
-               var self = this,
-                   element = cell.getElement();
-
-               element.setAttribute("tabindex", 0);
-
-               element.addEventListener("click", function (e) {
-                       if (!element.classList.contains("tabulator-editing")) {
-                               element.focus({ preventScroll: true });
-                       }
-               });
-
-               element.addEventListener("mousedown", function (e) {
-                       self.mouseClick = true;
-               });
-
-               element.addEventListener("focus", function (e) {
-                       if (!self.recursionBlock) {
-                               self.edit(cell, e, false);
-                       }
-               });
-       };
-
-       Edit.prototype.focusCellNoEvent = function (cell, block) {
-               this.recursionBlock = true;
-               if (!(block && this.table.browser === "ie")) {
-                       cell.getElement().focus({ preventScroll: true });
-               }
-               this.recursionBlock = false;
-       };
-
-       Edit.prototype.editCell = function (cell, forceEdit) {
-               this.focusCellNoEvent(cell);
-               this.edit(cell, false, forceEdit);
-       };
-
-       Edit.prototype.focusScrollAdjust = function (cell) {
-               if (this.table.rowManager.getRenderMode() == "virtual") {
-                       var topEdge = this.table.rowManager.element.scrollTop,
-                           bottomEdge = this.table.rowManager.element.clientHeight + this.table.rowManager.element.scrollTop,
-                           rowEl = cell.row.getElement(),
-                           offset = rowEl.offsetTop;
-
-                       if (rowEl.offsetTop < topEdge) {
-                               this.table.rowManager.element.scrollTop -= topEdge - rowEl.offsetTop;
-                       } else {
-                               if (rowEl.offsetTop + rowEl.offsetHeight > bottomEdge) {
-                                       this.table.rowManager.element.scrollTop += rowEl.offsetTop + rowEl.offsetHeight - bottomEdge;
-                               }
-                       }
-               }
-       };
-
-       Edit.prototype.edit = function (cell, e, forceEdit) {
-               var self = this,
-                   allowEdit = true,
-                   rendered = function rendered() {},
-                   element = cell.getElement(),
-                   cellEditor,
-                   component,
-                   params;
-
-               //prevent editing if another cell is refusing to leave focus (eg. validation fail)
-               if (this.currentCell) {
-                       if (!this.invalidEdit) {
-                               this.cancelEdit();
-                       }
-                       return;
-               }
-
-               //handle successfull value change
-               function success(value) {
-                       if (self.currentCell === cell) {
-                               var valid = true;
-
-                               if (cell.column.modules.validate && self.table.modExists("validate")) {
-                                       valid = self.table.modules.validate.validate(cell.column.modules.validate, cell.getComponent(), value);
-                               }
-
-                               if (valid === true) {
-                                       self.clearEditor();
-                                       cell.setValue(value, true);
-
-                                       if (self.table.options.dataTree && self.table.modExists("dataTree")) {
-                                               self.table.modules.dataTree.checkForRestyle(cell);
-                                       }
-
-                                       return true;
-                               } else {
-                                       self.invalidEdit = true;
-                                       element.classList.add("tabulator-validation-fail");
-                                       self.focusCellNoEvent(cell, true);
-                                       rendered();
-                                       self.table.options.validationFailed.call(self.table, cell.getComponent(), value, valid);
-
-                                       return false;
-                               }
-                       } else {
-                               // console.warn("Edit Success Error - cannot call success on a cell that is no longer being edited");
-                       }
-               }
-
-               //handle aborted edit
-               function cancel() {
-                       if (self.currentCell === cell) {
-                               self.cancelEdit();
-
-                               if (self.table.options.dataTree && self.table.modExists("dataTree")) {
-                                       self.table.modules.dataTree.checkForRestyle(cell);
-                               }
-                       } else {
-                               // console.warn("Edit Success Error - cannot call cancel on a cell that is no longer being edited");
-                       }
-               }
-
-               function onRendered(callback) {
-                       rendered = callback;
-               }
-
-               if (!cell.column.modules.edit.blocked) {
-                       if (e) {
-                               e.stopPropagation();
-                       }
-
-                       switch (_typeof(cell.column.modules.edit.check)) {
-                               case "function":
-                                       allowEdit = cell.column.modules.edit.check(cell.getComponent());
-                                       break;
-
-                               case "boolean":
-                                       allowEdit = cell.column.modules.edit.check;
-                                       break;
-                       }
-
-                       if (allowEdit || forceEdit) {
-
-                               self.cancelEdit();
-
-                               self.currentCell = cell;
-
-                               this.focusScrollAdjust(cell);
-
-                               component = cell.getComponent();
-
-                               if (this.mouseClick) {
-                                       this.mouseClick = false;
-
-                                       if (cell.column.cellEvents.cellClick) {
-                                               cell.column.cellEvents.cellClick.call(this.table, e, component);
-                                       }
-                               }
-
-                               if (cell.column.cellEvents.cellEditing) {
-                                       cell.column.cellEvents.cellEditing.call(this.table, component);
-                               }
-
-                               self.table.options.cellEditing.call(this.table, component);
-
-                               params = typeof cell.column.modules.edit.params === "function" ? cell.column.modules.edit.params(component) : cell.column.modules.edit.params;
-
-                               cellEditor = cell.column.modules.edit.editor.call(self, component, onRendered, success, cancel, params);
-
-                               //if editor returned, add to DOM, if false, abort edit
-                               if (cellEditor !== false) {
-
-                                       if (cellEditor instanceof Node) {
-                                               element.classList.add("tabulator-editing");
-                                               cell.row.getElement().classList.add("tabulator-row-editing");
-                                               while (element.firstChild) {
-                                                       element.removeChild(element.firstChild);
-                                               }element.appendChild(cellEditor);
-
-                                               //trigger onRendered Callback
-                                               rendered();
-
-                                               //prevent editing from triggering rowClick event
-                                               var children = element.children;
-
-                                               for (var i = 0; i < children.length; i++) {
-                                                       children[i].addEventListener("click", function (e) {
-                                                               e.stopPropagation();
-                                                       });
-                                               }
-                                       } else {
-                                               console.warn("Edit Error - Editor should return an instance of Node, the editor returned:", cellEditor);
-                                               element.blur();
-                                               return false;
-                                       }
-                               } else {
-                                       element.blur();
-                                       return false;
-                               }
-
-                               return true;
-                       } else {
-                               this.mouseClick = false;
-                               element.blur();
-                               return false;
-                       }
-               } else {
-                       this.mouseClick = false;
-                       element.blur();
-                       return false;
-               }
-       };
-
-       Edit.prototype.maskInput = function (el, options) {
-               var mask = options.mask,
-                   maskLetter = typeof options.maskLetterChar !== "undefined" ? options.maskLetterChar : "A",
-                   maskNumber = typeof options.maskNumberChar !== "undefined" ? options.maskNumberChar : "9",
-                   maskWildcard = typeof options.maskWildcardChar !== "undefined" ? options.maskWildcardChar : "*",
-                   success = false;
-
-               function fillSymbols(index) {
-                       var symbol = mask[index];
-                       if (typeof symbol !== "undefined" && symbol !== maskWildcard && symbol !== maskLetter && symbol !== maskNumber) {
-                               el.value = el.value + "" + symbol;
-                               fillSymbols(index + 1);
-                       }
-               }
-
-               el.addEventListener("keydown", function (e) {
-                       var index = el.value.length,
-                           char = e.key;
-
-                       if (e.keyCode > 46) {
-                               if (index >= mask.length) {
-                                       e.preventDefault();
-                                       e.stopPropagation();
-                                       success = false;
-                                       return false;
-                               } else {
-                                       switch (mask[index]) {
-                                               case maskLetter:
-                                                       if (char.toUpperCase() == char.toLowerCase()) {
-                                                               e.preventDefault();
-                                                               e.stopPropagation();
-                                                               success = false;
-                                                               return false;
-                                                       }
-                                                       break;
-
-                                               case maskNumber:
-                                                       if (isNaN(char)) {
-                                                               e.preventDefault();
-                                                               e.stopPropagation();
-                                                               success = false;
-                                                               return false;
-                                                       }
-                                                       break;
-
-                                               case maskWildcard:
-                                                       break;
-
-                                               default:
-                                                       if (char !== mask[index]) {
-                                                               e.preventDefault();
-                                                               e.stopPropagation();
-                                                               success = false;
-                                                               return false;
-                                                       }
-                                       }
-                               }
-
-                               success = true;
-                       }
-
-                       return;
-               });
-
-               el.addEventListener("keyup", function (e) {
-                       if (e.keyCode > 46) {
-                               if (options.maskAutoFill) {
-                                       fillSymbols(el.value.length);
-                               }
-                       }
-               });
-
-               if (!el.placeholder) {
-                       el.placeholder = mask;
-               }
-
-               if (options.maskAutoFill) {
-                       fillSymbols(el.value.length);
-               }
-       };
-
-       //default data editors
-       Edit.prototype.editors = {
-
-               //input element
-               input: function input(cell, onRendered, success, cancel, editorParams) {
-
-                       //create and style input
-                       var cellValue = cell.getValue(),
-                           input = document.createElement("input");
-
-                       input.setAttribute("type", editorParams.search ? "search" : "text");
-
-                       input.style.padding = "4px";
-                       input.style.width = "100%";
-                       input.style.boxSizing = "border-box";
-
-                       if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
-                               for (var key in editorParams.elementAttributes) {
-                                       if (key.charAt(0) == "+") {
-                                               key = key.slice(1);
-                                               input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
-                                       } else {
-                                               input.setAttribute(key, editorParams.elementAttributes[key]);
-                                       }
-                               }
-                       }
-
-                       input.value = typeof cellValue !== "undefined" ? cellValue : "";
-
-                       onRendered(function () {
-                               input.focus({ preventScroll: true });
-                               input.style.height = "100%";
-                       });
-
-                       function onChange(e) {
-                               if ((cellValue === null || typeof cellValue === "undefined") && input.value !== "" || input.value !== cellValue) {
-                                       if (success(input.value)) {
-                                               cellValue = input.value; //persist value if successfully validated incase editor is used as header filter
-                                       }
-                               } else {
-                                       cancel();
-                               }
-                       }
-
-                       //submit new value on blur or change
-                       input.addEventListener("change", onChange);
-                       input.addEventListener("blur", onChange);
-
-                       //submit new value on enter
-                       input.addEventListener("keydown", function (e) {
-                               switch (e.keyCode) {
-                                       // case 9:
-                                       case 13:
-                                               onChange(e);
-                                               break;
-
-                                       case 27:
-                                               cancel();
-                                               break;
-                               }
-                       });
-
-                       if (editorParams.mask) {
-                               this.table.modules.edit.maskInput(input, editorParams);
-                       }
-
-                       return input;
-               },
-
-               //resizable text area element
-               textarea: function textarea(cell, onRendered, success, cancel, editorParams) {
-                       var self = this,
-                           cellValue = cell.getValue(),
-                           vertNav = editorParams.verticalNavigation || "hybrid",
-                           value = String(cellValue !== null && typeof cellValue !== "undefined" ? cellValue : ""),
-                           count = (value.match(/(?:\r\n|\r|\n)/g) || []).length + 1,
-                           input = document.createElement("textarea"),
-                           scrollHeight = 0;
-
-                       //create and style input
-                       input.style.display = "block";
-                       input.style.padding = "2px";
-                       input.style.height = "100%";
-                       input.style.width = "100%";
-                       input.style.boxSizing = "border-box";
-                       input.style.whiteSpace = "pre-wrap";
-                       input.style.resize = "none";
-
-                       if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
-                               for (var key in editorParams.elementAttributes) {
-                                       if (key.charAt(0) == "+") {
-                                               key = key.slice(1);
-                                               input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
-                                       } else {
-                                               input.setAttribute(key, editorParams.elementAttributes[key]);
-                                       }
-                               }
-                       }
-
-                       input.value = value;
-
-                       onRendered(function () {
-                               input.focus({ preventScroll: true });
-                               input.style.height = "100%";
-                       });
-
-                       function onChange(e) {
-
-                               if ((cellValue === null || typeof cellValue === "undefined") && input.value !== "" || input.value !== cellValue) {
-
-                                       if (success(input.value)) {
-                                               cellValue = input.value; //persist value if successfully validated incase editor is used as header filter
-                                       }
-
-                                       setTimeout(function () {
-                                               cell.getRow().normalizeHeight();
-                                       }, 300);
-                               } else {
-                                       cancel();
-                               }
-                       }
-
-                       //submit new value on blur or change
-                       input.addEventListener("change", onChange);
-                       input.addEventListener("blur", onChange);
-
-                       input.addEventListener("keyup", function () {
-
-                               input.style.height = "";
-
-                               var heightNow = input.scrollHeight;
-
-                               input.style.height = heightNow + "px";
-
-                               if (heightNow != scrollHeight) {
-                                       scrollHeight = heightNow;
-                                       cell.getRow().normalizeHeight();
-                               }
-                       });
-
-                       input.addEventListener("keydown", function (e) {
-
-                               switch (e.keyCode) {
-                                       case 27:
-                                               cancel();
-                                               break;
-
-                                       case 38:
-                                               //up arrow
-                                               if (vertNav == "editor" || vertNav == "hybrid" && input.selectionStart) {
-                                                       e.stopImmediatePropagation();
-                                                       e.stopPropagation();
-                                               }
-
-                                               break;
-
-                                       case 40:
-                                               //down arrow
-                                               if (vertNav == "editor" || vertNav == "hybrid" && input.selectionStart !== input.value.length) {
-                                                       e.stopImmediatePropagation();
-                                                       e.stopPropagation();
-                                               }
-                                               break;
-                               }
-                       });
-
-                       if (editorParams.mask) {
-                               this.table.modules.edit.maskInput(input, editorParams);
-                       }
-
-                       return input;
-               },
-
-               //input element with type of number
-               number: function number(cell, onRendered, success, cancel, editorParams) {
-
-                       var cellValue = cell.getValue(),
-                           vertNav = editorParams.verticalNavigation || "editor",
-                           input = document.createElement("input");
-
-                       input.setAttribute("type", "number");
-
-                       if (typeof editorParams.max != "undefined") {
-                               input.setAttribute("max", editorParams.max);
-                       }
-
-                       if (typeof editorParams.min != "undefined") {
-                               input.setAttribute("min", editorParams.min);
-                       }
-
-                       if (typeof editorParams.step != "undefined") {
-                               input.setAttribute("step", editorParams.step);
-                       }
-
-                       //create and style input
-                       input.style.padding = "4px";
-                       input.style.width = "100%";
-                       input.style.boxSizing = "border-box";
-
-                       if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
-                               for (var key in editorParams.elementAttributes) {
-                                       if (key.charAt(0) == "+") {
-                                               key = key.slice(1);
-                                               input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
-                                       } else {
-                                               input.setAttribute(key, editorParams.elementAttributes[key]);
-                                       }
-                               }
-                       }
-
-                       input.value = cellValue;
-
-                       var blurFunc = function blurFunc(e) {
-                               onChange();
-                       };
-
-                       onRendered(function () {
-                               //submit new value on blur
-                               input.removeEventListener("blur", blurFunc);
-
-                               input.focus({ preventScroll: true });
-                               input.style.height = "100%";
-
-                               //submit new value on blur
-                               input.addEventListener("blur", blurFunc);
-                       });
-
-                       function onChange() {
-                               var value = input.value;
-
-                               if (!isNaN(value) && value !== "") {
-                                       value = Number(value);
-                               }
-
-                               if (value !== cellValue) {
-                                       if (success(value)) {
-                                               cellValue = value; //persist value if successfully validated incase editor is used as header filter
-                                       }
-                               } else {
-                                       cancel();
-                               }
-                       }
-
-                       //submit new value on enter
-                       input.addEventListener("keydown", function (e) {
-                               switch (e.keyCode) {
-                                       case 13:
-                                               // case 9:
-                                               onChange();
-                                               break;
-
-                                       case 27:
-                                               cancel();
-                                               break;
-
-                                       case 38: //up arrow
-                                       case 40:
-                                               //down arrow
-                                               if (vertNav == "editor") {
-                                                       e.stopImmediatePropagation();
-                                                       e.stopPropagation();
-                                               }
-                                               break;
-                               }
-                       });
-
-                       if (editorParams.mask) {
-                               this.table.modules.edit.maskInput(input, editorParams);
-                       }
-
-                       return input;
-               },
-
-               //input element with type of number
-               range: function range(cell, onRendered, success, cancel, editorParams) {
-
-                       var cellValue = cell.getValue(),
-                           input = document.createElement("input");
-
-                       input.setAttribute("type", "range");
-
-                       if (typeof editorParams.max != "undefined") {
-                               input.setAttribute("max", editorParams.max);
-                       }
-
-                       if (typeof editorParams.min != "undefined") {
-                               input.setAttribute("min", editorParams.min);
-                       }
-
-                       if (typeof editorParams.step != "undefined") {
-                               input.setAttribute("step", editorParams.step);
-                       }
-
-                       //create and style input
-                       input.style.padding = "4px";
-                       input.style.width = "100%";
-                       input.style.boxSizing = "border-box";
-
-                       if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
-                               for (var key in editorParams.elementAttributes) {
-                                       if (key.charAt(0) == "+") {
-                                               key = key.slice(1);
-                                               input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
-                                       } else {
-                                               input.setAttribute(key, editorParams.elementAttributes[key]);
-                                       }
-                               }
-                       }
-
-                       input.value = cellValue;
-
-                       onRendered(function () {
-                               input.focus({ preventScroll: true });
-                               input.style.height = "100%";
-                       });
-
-                       function onChange() {
-                               var value = input.value;
-
-                               if (!isNaN(value) && value !== "") {
-                                       value = Number(value);
-                               }
-
-                               if (value != cellValue) {
-                                       if (success(value)) {
-                                               cellValue = value; //persist value if successfully validated incase editor is used as header filter
-                                       }
-                               } else {
-                                       cancel();
-                               }
-                       }
-
-                       //submit new value on blur
-                       input.addEventListener("blur", function (e) {
-                               onChange();
-                       });
-
-                       //submit new value on enter
-                       input.addEventListener("keydown", function (e) {
-                               switch (e.keyCode) {
-                                       case 13:
-                                       case 9:
-                                               onChange();
-                                               break;
-
-                                       case 27:
-                                               cancel();
-                                               break;
-                               }
-                       });
-
-                       return input;
-               },
-
-               //select
-               select: function select(cell, onRendered, success, cancel, editorParams) {
-                       var self = this,
-                           cellEl = cell.getElement(),
-                           initialValue = cell.getValue(),
-                           vertNav = editorParams.verticalNavigation || "editor",
-                           initialDisplayValue = typeof initialValue !== "undefined" || initialValue === null ? initialValue : typeof editorParams.defaultValue !== "undefined" ? editorParams.defaultValue : "",
-                           input = document.createElement("input"),
-                           listEl = document.createElement("div"),
-                           dataItems = [],
-                           displayItems = [],
-                           currentItem = {},
-                           blurable = true;
-
-                       this.table.rowManager.element.addEventListener("scroll", cancelItem);
-
-                       if (Array.isArray(editorParams) || !Array.isArray(editorParams) && (typeof editorParams === 'undefined' ? 'undefined' : _typeof(editorParams)) === "object" && !editorParams.values) {
-                               console.warn("DEPRECATION WARNING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object");
-                               editorParams = { values: editorParams };
-                       }
-
-                       function getUniqueColumnValues(field) {
-                               var output = {},
-                                   data = self.table.getData(),
-                                   column;
-
-                               if (field) {
-                                       column = self.table.columnManager.getColumnByField(field);
-                               } else {
-                                       column = cell.getColumn()._getSelf();
-                               }
-
-                               if (column) {
-                                       data.forEach(function (row) {
-                                               var val = column.getFieldValue(row);
-
-                                               if (val !== null && typeof val !== "undefined" && val !== "") {
-                                                       output[val] = true;
-                                               }
-                                       });
-
-                                       if (editorParams.sortValuesList) {
-                                               if (editorParams.sortValuesList == "asc") {
-                                                       output = Object.keys(output).sort();
-                                               } else {
-                                                       output = Object.keys(output).sort().reverse();
-                                               }
-                                       } else {
-                                               output = Object.keys(output);
-                                       }
-                               } else {
-                                       console.warn("unable to find matching column to create select lookup list:", field);
-                               }
-
-                               return output;
-                       }
-
-                       function parseItems(inputValues, curentValue) {
-                               var dataList = [];
-                               var displayList = [];
-
-                               function processComplexListItem(item) {
-                                       var item = {
-                                               label: editorParams.listItemFormatter ? editorParams.listItemFormatter(item.value, item.label) : item.label,
-                                               value: item.value,
-                                               element: false
-                                       };
-
-                                       if (item.value === curentValue || !isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue)) {
-                                               setCurrentItem(item);
-                                       }
-
-                                       dataList.push(item);
-                                       displayList.push(item);
-
-                                       return item;
-                               }
-
-                               if (typeof inputValues == "function") {
-                                       inputValues = inputValues(cell);
-                               }
-
-                               if (Array.isArray(inputValues)) {
-                                       inputValues.forEach(function (value) {
-                                               var item;
-
-                                               if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === "object") {
-
-                                                       if (value.options) {
-                                                               item = {
-                                                                       label: value.label,
-                                                                       group: true,
-                                                                       element: false
-                                                               };
-
-                                                               displayList.push(item);
-
-                                                               value.options.forEach(function (item) {
-                                                                       processComplexListItem(item);
-                                                               });
-                                                       } else {
-                                                               processComplexListItem(value);
-                                                       }
-                                               } else {
-
-                                                       item = {
-                                                               label: editorParams.listItemFormatter ? editorParams.listItemFormatter(value, value) : value,
-                                                               value: value,
-                                                               element: false
-                                                       };
-
-                                                       if (item.value === curentValue || !isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue)) {
-                                                               setCurrentItem(item);
-                                                       }
-
-                                                       dataList.push(item);
-                                                       displayList.push(item);
-                                               }
-                                       });
-                               } else {
-                                       for (var key in inputValues) {
-                                               var item = {
-                                                       label: editorParams.listItemFormatter ? editorParams.listItemFormatter(key, inputValues[key]) : inputValues[key],
-                                                       value: key,
-                                                       element: false
-                                               };
-
-                                               if (item.value === curentValue || !isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue)) {
-                                                       setCurrentItem(item);
-                                               }
-
-                                               dataList.push(item);
-                                               displayList.push(item);
-                                       }
-                               }
-
-                               dataItems = dataList;
-                               displayItems = displayList;
-
-                               fillList();
-                       }
-
-                       function fillList() {
-                               while (listEl.firstChild) {
-                                       listEl.removeChild(listEl.firstChild);
-                               }displayItems.forEach(function (item) {
-                                       var el = item.element;
-
-                                       if (!el) {
-
-                                               if (item.group) {
-                                                       el = document.createElement("div");
-                                                       el.classList.add("tabulator-edit-select-list-group");
-                                                       el.tabIndex = 0;
-                                                       el.innerHTML = item.label === "" ? "&nbsp;" : item.label;
-                                               } else {
-                                                       el = document.createElement("div");
-                                                       el.classList.add("tabulator-edit-select-list-item");
-                                                       el.tabIndex = 0;
-                                                       el.innerHTML = item.label === "" ? "&nbsp;" : item.label;
-
-                                                       el.addEventListener("click", function () {
-                                                               setCurrentItem(item);
-                                                               chooseItem();
-                                                       });
-
-                                                       if (item === currentItem) {
-                                                               el.classList.add("active");
-                                                       }
-                                               }
-
-                                               el.addEventListener("mousedown", function () {
-                                                       blurable = false;
-
-                                                       setTimeout(function () {
-                                                               blurable = true;
-                                                       }, 10);
-                                               });
-
-                                               item.element = el;
-                                       }
-
-                                       listEl.appendChild(el);
-                               });
-                       }
-
-                       function setCurrentItem(item) {
-
-                               if (currentItem && currentItem.element) {
-                                       currentItem.element.classList.remove("active");
-                               }
-
-                               currentItem = item;
-                               input.value = item.label === "&nbsp;" ? "" : item.label;
-
-                               if (item.element) {
-                                       item.element.classList.add("active");
-                               }
-                       }
-
-                       function chooseItem() {
-                               hideList();
-
-                               if (initialValue !== currentItem.value) {
-                                       initialValue = currentItem.value;
-                                       success(currentItem.value);
-                               } else {
-                                       cancel();
-                               }
-                       }
-
-                       function cancelItem() {
-                               hideList();
-                               cancel();
-                       }
-
-                       function showList() {
-                               if (!listEl.parentNode) {
-
-                                       if (editorParams.values === true) {
-                                               parseItems(getUniqueColumnValues(), initialDisplayValue);
-                                       } else if (typeof editorParams.values === "string") {
-                                               parseItems(getUniqueColumnValues(editorParams.values), initialDisplayValue);
-                                       } else {
-                                               parseItems(editorParams.values || [], initialDisplayValue);
-                                       }
-
-                                       var offset = Tabulator.prototype.helpers.elOffset(cellEl);
-
-                                       listEl.style.minWidth = cellEl.offsetWidth + "px";
-
-                                       listEl.style.top = offset.top + cellEl.offsetHeight + "px";
-                                       listEl.style.left = offset.left + "px";
-
-                                       listEl.addEventListener("mousedown", function (e) {
-                                               blurable = false;
-
-                                               setTimeout(function () {
-                                                       blurable = true;
-                                               }, 10);
-                                       });
-
-                                       document.body.appendChild(listEl);
-                               }
-                       }
-
-                       function hideList() {
-                               if (listEl.parentNode) {
-                                       listEl.parentNode.removeChild(listEl);
-                               }
-
-                               removeScrollListener();
-                       }
-
-                       function removeScrollListener() {
-                               self.table.rowManager.element.removeEventListener("scroll", cancelItem);
-                       }
-
-                       //style input
-                       input.setAttribute("type", "text");
-
-                       input.style.padding = "4px";
-                       input.style.width = "100%";
-                       input.style.boxSizing = "border-box";
-                       input.style.cursor = "default";
-                       input.readOnly = this.currentCell != false;
-
-                       if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
-                               for (var key in editorParams.elementAttributes) {
-                                       if (key.charAt(0) == "+") {
-                                               key = key.slice(1);
-                                               input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
-                                       } else {
-                                               input.setAttribute(key, editorParams.elementAttributes[key]);
-                                       }
-                               }
-                       }
-
-                       input.value = typeof initialValue !== "undefined" || initialValue === null ? initialValue : "";
-
-                       // if(editorParams.values === true){
-                       //      parseItems(getUniqueColumnValues(), initialValue);
-                       // }else if(typeof editorParams.values === "string"){
-                       //      parseItems(getUniqueColumnValues(editorParams.values), initialValue);
-                       // }else{
-                       //      parseItems(editorParams.values || [], initialValue);
-                       // }
-
-                       //allow key based navigation
-                       input.addEventListener("keydown", function (e) {
-                               var index;
-
-                               switch (e.keyCode) {
-                                       case 38:
-                                               //up arrow
-                                               index = dataItems.indexOf(currentItem);
-
-                                               if (vertNav == "editor" || vertNav == "hybrid" && index) {
-                                                       e.stopImmediatePropagation();
-                                                       e.stopPropagation();
-                                                       e.preventDefault();
-
-                                                       if (index > 0) {
-                                                               setCurrentItem(dataItems[index - 1]);
-                                                       }
-                                               }
-                                               break;
-
-                                       case 40:
-                                               //down arrow
-                                               index = dataItems.indexOf(currentItem);
-
-                                               if (vertNav == "editor" || vertNav == "hybrid" && index < dataItems.length - 1) {
-                                                       e.stopImmediatePropagation();
-                                                       e.stopPropagation();
-                                                       e.preventDefault();
-
-                                                       if (index < dataItems.length - 1) {
-                                                               if (index == -1) {
-                                                                       setCurrentItem(dataItems[0]);
-                                                               } else {
-                                                                       setCurrentItem(dataItems[index + 1]);
-                                                               }
-                                                       }
-                                               }
-                                               break;
-
-                                       case 37: //left arrow
-                                       case 39:
-                                               //right arrow
-                                               e.stopImmediatePropagation();
-                                               e.stopPropagation();
-                                               e.preventDefault();
-                                               break;
-
-                                       case 13:
-                                               //enter
-                                               chooseItem();
-                                               break;
-
-                                       case 27:
-                                               //escape
-                                               cancelItem();
-                                               break;
-                               }
-                       });
-
-                       input.addEventListener("blur", function (e) {
-                               if (blurable) {
-                                       cancelItem();
-                               }
-                       });
-
-                       input.addEventListener("focus", function (e) {
-                               showList();
-                       });
-
-                       //style list element
-                       listEl = document.createElement("div");
-                       listEl.classList.add("tabulator-edit-select-list");
-
-                       onRendered(function () {
-                               input.style.height = "100%";
-                               input.focus({ preventScroll: true });
-                       });
-
-                       return input;
-               },
-
-               //autocomplete
-               autocomplete: function autocomplete(cell, onRendered, success, cancel, editorParams) {
-                       var self = this,
-                           cellEl = cell.getElement(),
-                           initialValue = cell.getValue(),
-                           vertNav = editorParams.verticalNavigation || "editor",
-                           initialDisplayValue = typeof initialValue !== "undefined" || initialValue === null ? initialValue : typeof editorParams.defaultValue !== "undefined" ? editorParams.defaultValue : "",
-                           input = document.createElement("input"),
-                           listEl = document.createElement("div"),
-                           allItems = [],
-                           displayItems = [],
-                           values = [],
-                           currentItem = false,
-                           blurable = true;
-
-                       this.table.rowManager.element.addEventListener("scroll", cancelItem);
-
-                       //style input
-                       input.setAttribute("type", "search");
-
-                       input.style.padding = "4px";
-                       input.style.width = "100%";
-                       input.style.boxSizing = "border-box";
-
-                       if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
-                               for (var key in editorParams.elementAttributes) {
-                                       if (key.charAt(0) == "+") {
-                                               key = key.slice(1);
-                                               input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
-                                       } else {
-                                               input.setAttribute(key, editorParams.elementAttributes[key]);
-                                       }
-                               }
-                       }
-
-                       //style list element
-                       listEl.classList.add("tabulator-edit-select-list");
-
-                       listEl.addEventListener("mousedown", function (e) {
-                               blurable = false;
-
-                               setTimeout(function () {
-                                       blurable = true;
-                               }, 10);
-                       });
-
-                       function getUniqueColumnValues(field) {
-                               var output = {},
-                                   data = self.table.getData(),
-                                   column;
-
-                               if (field) {
-                                       column = self.table.columnManager.getColumnByField(field);
-                               } else {
-                                       column = cell.getColumn()._getSelf();
-                               }
-
-                               if (column) {
-                                       data.forEach(function (row) {
-                                               var val = column.getFieldValue(row);
-
-                                               if (val !== null && typeof val !== "undefined" && val !== "") {
-                                                       output[val] = true;
-                                               }
-                                       });
-
-                                       if (editorParams.sortValuesList) {
-                                               if (editorParams.sortValuesList == "asc") {
-                                                       output = Object.keys(output).sort();
-                                               } else {
-                                                       output = Object.keys(output).sort().reverse();
-                                               }
-                                       } else {
-                                               output = Object.keys(output);
-                                       }
-                               } else {
-                                       console.warn("unable to find matching column to create autocomplete lookup list:", field);
-                               }
-
-                               return output;
-                       }
-
-                       function filterList(term, intialLoad) {
-                               var matches = [],
-                                   values,
-                                   items,
-                                   searchEl;
-
-                               //lookup base values list
-                               if (editorParams.values === true) {
-                                       values = getUniqueColumnValues();
-                               } else if (typeof editorParams.values === "string") {
-                                       values = getUniqueColumnValues(editorParams.values);
-                               } else {
-                                       values = editorParams.values || [];
-                               }
-
-                               if (editorParams.searchFunc) {
-                                       matches = editorParams.searchFunc(term, values);
-
-                                       if (matches instanceof Promise) {
-
-                                               addNotice(typeof editorParams.searchingPlaceholder !== "undefined" ? editorParams.searchingPlaceholder : "Searching...");
-
-                                               matches.then(function (result) {
-                                                       fillListIfNotEmpty(parseItems(result), intialLoad);
-                                               }).catch(function (err) {
-                                                       console.err("error in autocomplete search promise:", err);
-                                               });
-                                       } else {
-                                               fillListIfNotEmpty(parseItems(matches), intialLoad);
-                                       }
-                               } else {
-                                       items = parseItems(values);
-
-                                       if (term === "") {
-                                               if (editorParams.showListOnEmpty) {
-                                                       matches = items;
-                                               }
-                                       } else {
-                                               items.forEach(function (item) {
-                                                       if (item.value !== null || typeof item.value !== "undefined") {
-                                                               if (String(item.value).toLowerCase().indexOf(String(term).toLowerCase()) > -1 || String(item.title).toLowerCase().indexOf(String(term).toLowerCase()) > -1) {
-                                                                       matches.push(item);
-                                                               }
-                                                       }
-                                               });
-                                       }
-
-                                       fillListIfNotEmpty(matches, intialLoad);
-                               }
-                       }
-
-                       function addNotice(notice) {
-                               var searchEl = document.createElement("div");
-
-                               clearList();
-
-                               if (notice !== false) {
-                                       searchEl.classList.add("tabulator-edit-select-list-notice");
-                                       searchEl.tabIndex = 0;
-
-                                       if (notice instanceof Node) {
-                                               searchEl.appendChild(notice);
-                                       } else {
-                                               searchEl.innerHTML = notice;
-                                       }
-
-                                       listEl.appendChild(searchEl);
-                               }
-                       }
-
-                       function parseItems(inputValues) {
-                               var itemList = [];
-
-                               if (Array.isArray(inputValues)) {
-                                       inputValues.forEach(function (value) {
-                                               var item = {
-                                                       title: editorParams.listItemFormatter ? editorParams.listItemFormatter(value, value) : value,
-                                                       value: value
-                                               };
-
-                                               itemList.push(item);
-                                       });
-                               } else {
-                                       for (var key in inputValues) {
-                                               var item = {
-                                                       title: editorParams.listItemFormatter ? editorParams.listItemFormatter(key, inputValues[key]) : inputValues[key],
-                                                       value: key
-                                               };
-
-                                               itemList.push(item);
-                                       }
-                               }
-
-                               return itemList;
-                       }
-
-                       function clearList() {
-                               while (listEl.firstChild) {
-                                       listEl.removeChild(listEl.firstChild);
-                               }
-                       }
-
-                       function fillListIfNotEmpty(items, intialLoad) {
-                               if (items.length) {
-                                       fillList(items, intialLoad);
-                               } else {
-                                       if (editorParams.emptyPlaceholder) {
-                                               addNotice(editorParams.emptyPlaceholder);
-                                       }
-                               }
-                       }
-
-                       function fillList(items, intialLoad) {
-                               var current = false;
-
-                               clearList();
-
-                               displayItems = items;
-
-                               displayItems.forEach(function (item) {
-                                       var el = item.element;
-
-                                       if (!el) {
-                                               el = document.createElement("div");
-                                               el.classList.add("tabulator-edit-select-list-item");
-                                               el.tabIndex = 0;
-                                               el.innerHTML = item.title;
-
-                                               el.addEventListener("click", function (e) {
-                                                       setCurrentItem(item);
-                                                       chooseItem();
-                                               });
-
-                                               el.addEventListener("mousedown", function (e) {
-                                                       blurable = false;
-
-                                                       setTimeout(function () {
-                                                               blurable = true;
-                                                       }, 10);
-                                               });
-
-                                               item.element = el;
-
-                                               if (intialLoad && item.value == initialValue) {
-                                                       input.value = item.title;
-                                                       item.element.classList.add("active");
-                                                       current = true;
-                                               }
-
-                                               if (item === currentItem) {
-                                                       item.element.classList.add("active");
-                                                       current = true;
-                                               }
-                                       }
-
-                                       listEl.appendChild(el);
-                               });
-
-                               if (!current) {
-                                       setCurrentItem(false);
-                               }
-                       }
-
-                       function chooseItem() {
-                               hideList();
-
-                               if (currentItem) {
-                                       if (initialValue !== currentItem.value) {
-                                               initialValue = currentItem.value;
-                                               input.value = currentItem.title;
-                                               success(currentItem.value);
-                                       } else {
-                                               cancel();
-                                       }
-                               } else {
-                                       if (editorParams.freetext) {
-                                               initialValue = input.value;
-                                               success(input.value);
-                                       } else {
-                                               if (editorParams.allowEmpty && input.value === "") {
-                                                       initialValue = input.value;
-                                                       success(input.value);
-                                               } else {
-                                                       cancel();
-                                               }
-                                       }
-                               }
-                       }
-
-                       function showList() {
-                               if (!listEl.parentNode) {
-                                       while (listEl.firstChild) {
-                                               listEl.removeChild(listEl.firstChild);
-                                       }var offset = Tabulator.prototype.helpers.elOffset(cellEl);
-
-                                       listEl.style.minWidth = cellEl.offsetWidth + "px";
-
-                                       listEl.style.top = offset.top + cellEl.offsetHeight + "px";
-                                       listEl.style.left = offset.left + "px";
-                                       document.body.appendChild(listEl);
-                               }
-                       }
-
-                       function setCurrentItem(item, showInputValue) {
-                               if (currentItem && currentItem.element) {
-                                       currentItem.element.classList.remove("active");
-                               }
-
-                               currentItem = item;
-
-                               if (item && item.element) {
-                                       item.element.classList.add("active");
-                               }
-                       }
-
-                       function hideList() {
-                               if (listEl.parentNode) {
-                                       listEl.parentNode.removeChild(listEl);
-                               }
-
-                               removeScrollListener();
-                       }
-
-                       function cancelItem() {
-                               hideList();
-                               cancel();
-                       }
-
-                       function removeScrollListener() {
-                               self.table.rowManager.element.removeEventListener("scroll", cancelItem);
-                       }
-
-                       //allow key based navigation
-                       input.addEventListener("keydown", function (e) {
-                               var index;
-
-                               switch (e.keyCode) {
-                                       case 38:
-                                               //up arrow
-                                               index = displayItems.indexOf(currentItem);
-
-                                               if (vertNav == "editor" || vertNav == "hybrid" && index) {
-                                                       e.stopImmediatePropagation();
-                                                       e.stopPropagation();
-                                                       e.preventDefault();
-
-                                                       if (index > 0) {
-                                                               setCurrentItem(displayItems[index - 1]);
-                                                       } else {
-                                                               setCurrentItem(false);
-                                                       }
-                                               }
-                                               break;
-
-                                       case 40:
-                                               //down arrow
-
-                                               index = displayItems.indexOf(currentItem);
-
-                                               if (vertNav == "editor" || vertNav == "hybrid" && index < displayItems.length - 1) {
-
-                                                       e.stopImmediatePropagation();
-                                                       e.stopPropagation();
-                                                       e.preventDefault();
-
-                                                       if (index < displayItems.length - 1) {
-                                                               if (index == -1) {
-                                                                       setCurrentItem(displayItems[0]);
-                                                               } else {
-                                                                       setCurrentItem(displayItems[index + 1]);
-                                                               }
-                                                       }
-                                               }
-                                               break;
-
-                                       case 37: //left arrow
-                                       case 39:
-                                               //right arrow
-                                               e.stopImmediatePropagation();
-                                               e.stopPropagation();
-                                               e.preventDefault();
-                                               break;
-
-                                       case 13:
-                                               //enter
-                                               chooseItem();
-                                               break;
-
-                                       case 27:
-                                               //escape
-                                               cancelItem();
-                                               break;
-
-                                       case 36: //home
-                                       case 35:
-                                               //end
-                                               //prevent table navigation while using input element
-                                               e.stopImmediatePropagation();
-                                               break;
-                               }
-                       });
-
-                       input.addEventListener("keyup", function (e) {
-
-                               switch (e.keyCode) {
-                                       case 38: //up arrow
-                                       case 37: //left arrow
-                                       case 39: //up arrow
-                                       case 40: //right arrow
-                                       case 13: //enter
-                                       case 27:
-                                               //escape
-                                               break;
-
-                                       default:
-                                               filterList(input.value);
-                               }
-                       });
-
-                       input.addEventListener("search", function (e) {
-                               filterList(input.value);
-                       });
-
-                       input.addEventListener("blur", function (e) {
-                               if (blurable) {
-                                       chooseItem();
-                               }
-                       });
-
-                       input.addEventListener("focus", function (e) {
-                               var value = initialDisplayValue;
-                               showList();
-                               input.value = value;
-                               filterList(value, true);
-                       });
-
-                       onRendered(function () {
-                               input.style.height = "100%";
-                               input.focus({ preventScroll: true });
-                       });
-
-                       if (editorParams.mask) {
-                               this.table.modules.edit.maskInput(input, editorParams);
-                       }
-
-                       return input;
-               },
-
-               //start rating
-               star: function star(cell, onRendered, success, cancel, editorParams) {
-                       var self = this,
-                           element = cell.getElement(),
-                           value = cell.getValue(),
-                           maxStars = element.getElementsByTagName("svg").length || 5,
-                           size = element.getElementsByTagName("svg")[0] ? element.getElementsByTagName("svg")[0].getAttribute("width") : 14,
-                           stars = [],
-                           starsHolder = document.createElement("div"),
-                           star = document.createElementNS('http://www.w3.org/2000/svg', "svg");
-
-                       //change star type
-                       function starChange(val) {
-                               stars.forEach(function (star, i) {
-                                       if (i < val) {
-                                               if (self.table.browser == "ie") {
-                                                       star.setAttribute("class", "tabulator-star-active");
-                                               } else {
-                                                       star.classList.replace("tabulator-star-inactive", "tabulator-star-active");
-                                               }
-
-                                               star.innerHTML = '<polygon fill="#488CE9" stroke="#014AAE" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>';
-                                       } else {
-                                               if (self.table.browser == "ie") {
-                                                       star.setAttribute("class", "tabulator-star-inactive");
-                                               } else {
-                                                       star.classList.replace("tabulator-star-active", "tabulator-star-inactive");
-                                               }
-
-                                               star.innerHTML = '<polygon fill="#010155" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>';
-                                       }
-                               });
-                       }
-
-                       //build stars
-                       function buildStar(i) {
-
-                               var starHolder = document.createElement("span");
-                               var nextStar = star.cloneNode(true);
-
-                               stars.push(nextStar);
-
-                               starHolder.addEventListener("mouseenter", function (e) {
-                                       e.stopPropagation();
-                                       e.stopImmediatePropagation();
-                                       starChange(i);
-                               });
-
-                               starHolder.addEventListener("mousemove", function (e) {
-                                       e.stopPropagation();
-                                       e.stopImmediatePropagation();
-                               });
-
-                               starHolder.addEventListener("click", function (e) {
-                                       e.stopPropagation();
-                                       e.stopImmediatePropagation();
-                                       success(i);
-                               });
-
-                               starHolder.appendChild(nextStar);
-                               starsHolder.appendChild(starHolder);
-                       }
-
-                       //handle keyboard navigation value change
-                       function changeValue(val) {
-                               value = val;
-                               starChange(val);
-                       }
-
-                       //style cell
-                       element.style.whiteSpace = "nowrap";
-                       element.style.overflow = "hidden";
-                       element.style.textOverflow = "ellipsis";
-
-                       //style holding element
-                       starsHolder.style.verticalAlign = "middle";
-                       starsHolder.style.display = "inline-block";
-                       starsHolder.style.padding = "4px";
-
-                       //style star
-                       star.setAttribute("width", size);
-                       star.setAttribute("height", size);
-                       star.setAttribute("viewBox", "0 0 512 512");
-                       star.setAttribute("xml:space", "preserve");
-                       star.style.padding = "0 1px";
-
-                       if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
-                               for (var key in editorParams.elementAttributes) {
-                                       if (key.charAt(0) == "+") {
-                                               key = key.slice(1);
-                                               starsHolder.setAttribute(key, starsHolder.getAttribute(key) + editorParams.elementAttributes["+" + key]);
-                                       } else {
-                                               starsHolder.setAttribute(key, editorParams.elementAttributes[key]);
-                                       }
-                               }
-                       }
-
-                       //create correct number of stars
-                       for (var i = 1; i <= maxStars; i++) {
-                               buildStar(i);
-                       }
-
-                       //ensure value does not exceed number of stars
-                       value = Math.min(parseInt(value), maxStars);
-
-                       // set initial styling of stars
-                       starChange(value);
-
-                       starsHolder.addEventListener("mousemove", function (e) {
-                               starChange(0);
-                       });
-
-                       starsHolder.addEventListener("click", function (e) {
-                               success(0);
-                       });
-
-                       element.addEventListener("blur", function (e) {
-                               cancel();
-                       });
-
-                       //allow key based navigation
-                       element.addEventListener("keydown", function (e) {
-                               switch (e.keyCode) {
-                                       case 39:
-                                               //right arrow
-                                               changeValue(value + 1);
-                                               break;
-
-                                       case 37:
-                                               //left arrow
-                                               changeValue(value - 1);
-                                               break;
-
-                                       case 13:
-                                               //enter
-                                               success(value);
-                                               break;
-
-                                       case 27:
-                                               //escape
-                                               cancel();
-                                               break;
-                               }
-                       });
-
-                       return starsHolder;
-               },
-
-               //draggable progress bar
-               progress: function progress(cell, onRendered, success, cancel, editorParams) {
-                       var element = cell.getElement(),
-                           max = typeof editorParams.max === "undefined" ? element.getElementsByTagName("div")[0].getAttribute("max") || 100 : editorParams.max,
-                           min = typeof editorParams.min === "undefined" ? element.getElementsByTagName("div")[0].getAttribute("min") || 0 : editorParams.min,
-                           percent = (max - min) / 100,
-                           value = cell.getValue() || 0,
-                           handle = document.createElement("div"),
-                           bar = document.createElement("div"),
-                           mouseDrag,
-                           mouseDragWidth;
-
-                       //set new value
-                       function updateValue() {
-                               var calcVal = percent * Math.round(bar.offsetWidth / (element.clientWidth / 100)) + min;
-                               success(calcVal);
-                               element.setAttribute("aria-valuenow", calcVal);
-                               element.setAttribute("aria-label", value);
-                       }
-
-                       //style handle
-                       handle.style.position = "absolute";
-                       handle.style.right = "0";
-                       handle.style.top = "0";
-                       handle.style.bottom = "0";
-                       handle.style.width = "5px";
-                       handle.classList.add("tabulator-progress-handle");
-
-                       //style bar
-                       bar.style.display = "inline-block";
-                       bar.style.position = "relative";
-                       // bar.style.top = "8px";
-                       // bar.style.bottom = "8px";
-                       // bar.style.left = "4px";
-                       // bar.style.marginRight = "4px";
-                       bar.style.height = "100%";
-                       bar.style.backgroundColor = "#488CE9";
-                       bar.style.maxWidth = "100%";
-                       bar.style.minWidth = "0%";
-
-                       if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
-                               for (var key in editorParams.elementAttributes) {
-                                       if (key.charAt(0) == "+") {
-                                               key = key.slice(1);
-                                               bar.setAttribute(key, bar.getAttribute(key) + editorParams.elementAttributes["+" + key]);
-                                       } else {
-                                               bar.setAttribute(key, editorParams.elementAttributes[key]);
-                                       }
-                               }
-                       }
-
-                       //style cell
-                       element.style.padding = "4px 4px";
-
-                       //make sure value is in range
-                       value = Math.min(parseFloat(value), max);
-                       value = Math.max(parseFloat(value), min);
-
-                       //workout percentage
-                       value = Math.round((value - min) / percent);
-                       // bar.style.right = value + "%";
-                       bar.style.width = value + "%";
-
-                       element.setAttribute("aria-valuemin", min);
-                       element.setAttribute("aria-valuemax", max);
-
-                       bar.appendChild(handle);
-
-                       handle.addEventListener("mousedown", function (e) {
-                               mouseDrag = e.screenX;
-                               mouseDragWidth = bar.offsetWidth;
-                       });
-
-                       handle.addEventListener("mouseover", function () {
-                               handle.style.cursor = "ew-resize";
-                       });
-
-                       element.addEventListener("mousemove", function (e) {
-                               if (mouseDrag) {
-                                       bar.style.width = mouseDragWidth + e.screenX - mouseDrag + "px";
-                               }
-                       });
-
-                       element.addEventListener("mouseup", function (e) {
-                               if (mouseDrag) {
-                                       e.stopPropagation();
-                                       e.stopImmediatePropagation();
-
-                                       mouseDrag = false;
-                                       mouseDragWidth = false;
-
-                                       updateValue();
-                               }
-                       });
-
-                       //allow key based navigation
-                       element.addEventListener("keydown", function (e) {
-                               switch (e.keyCode) {
-                                       case 39:
-                                               //right arrow
-                                               e.preventDefault();
-                                               bar.style.width = bar.clientWidth + element.clientWidth / 100 + "px";
-                                               break;
-
-                                       case 37:
-                                               //left arrow
-                                               e.preventDefault();
-                                               bar.style.width = bar.clientWidth - element.clientWidth / 100 + "px";
-                                               break;
-
-                                       case 9: //tab
-                                       case 13:
-                                               //enter
-                                               updateValue();
-                                               break;
-
-                                       case 27:
-                                               //escape
-                                               cancel();
-                                               break;
-
-                               }
-                       });
-
-                       element.addEventListener("blur", function () {
-                               cancel();
-                       });
-
-                       return bar;
-               },
-
-               //checkbox
-               tickCross: function tickCross(cell, onRendered, success, cancel, editorParams) {
-                       var value = cell.getValue(),
-                           input = document.createElement("input"),
-                           tristate = editorParams.tristate,
-                           indetermValue = typeof editorParams.indeterminateValue === "undefined" ? null : editorParams.indeterminateValue,
-                           indetermState = false;
-
-                       input.setAttribute("type", "checkbox");
-                       input.style.marginTop = "5px";
-                       input.style.boxSizing = "border-box";
-
-                       if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
-                               for (var key in editorParams.elementAttributes) {
-                                       if (key.charAt(0) == "+") {
-                                               key = key.slice(1);
-                                               input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
-                                       } else {
-                                               input.setAttribute(key, editorParams.elementAttributes[key]);
-                                       }
-                               }
-                       }
-
-                       input.value = value;
-
-                       if (tristate && (typeof value === "undefined" || value === indetermValue || value === "")) {
-                               indetermState = true;
-                               input.indeterminate = true;
-                       }
-
-                       if (this.table.browser != "firefox") {
-                               //prevent blur issue on mac firefox
-                               onRendered(function () {
-                                       input.focus({ preventScroll: true });
-                               });
-                       }
-
-                       input.checked = value === true || value === "true" || value === "True" || value === 1;
-
-                       function setValue(blur) {
-                               if (tristate) {
-                                       if (!blur) {
-                                               if (input.checked && !indetermState) {
-                                                       input.checked = false;
-                                                       input.indeterminate = true;
-                                                       indetermState = true;
-                                                       return indetermValue;
-                                               } else {
-                                                       indetermState = false;
-                                                       return input.checked;
-                                               }
-                                       } else {
-                                               if (indetermState) {
-                                                       return indetermValue;
-                                               } else {
-                                                       return input.checked;
-                                               }
-                                       }
-                               } else {
-                                       return input.checked;
-                               }
-                       }
-
-                       //submit new value on blur
-                       input.addEventListener("change", function (e) {
-                               success(setValue());
-                       });
-
-                       input.addEventListener("blur", function (e) {
-                               success(setValue(true));
-                       });
-
-                       //submit new value on enter
-                       input.addEventListener("keydown", function (e) {
-                               if (e.keyCode == 13) {
-                                       success(setValue());
-                               }
-                               if (e.keyCode == 27) {
-                                       cancel();
-                               }
-                       });
-
-                       return input;
-               }
-       };
-
-       Tabulator.prototype.registerModule("edit", Edit);
-
-       var Export = function Export(table) {
-               this.table = table; //hold Tabulator object
-               this.config = {};
-               this.cloneTableStyle = true;
-               this.colVisProp = "";
-       };
-
-       Export.prototype.genereateTable = function (config, style, range, colVisProp) {
-               this.cloneTableStyle = style;
-               this.config = config || {};
-               this.colVisProp = colVisProp;
-
-               var table = document.createElement("table");
-               table.classList.add("tabulator-print-table");
-
-               if (this.config.columnHeaders !== false) {
-                       table.appendChild(this.generateHeaderElements());
-               }
-
-               table.appendChild(this.generateBodyElements(this.rowLookup(range)));
-
-               this.mapElementStyles(this.table.element, table, ["border-top", "border-left", "border-right", "border-bottom"]);
-
-               return table;
-       };
-
-       Export.prototype.rowLookup = function (range) {
-               var _this45 = this;
-
-               var rows = [];
-
-               if (typeof range == "function") {
-                       range.call(this.table).forEach(function (row) {
-                               row = _this45.table.rowManager.findRow(row);
-
-                               if (row) {
-                                       rows.push(row);
-                               }
-                       });
-               } else {
-                       switch (range) {
-                               case true:
-                               case "visible":
-                                       rows = this.table.rowManager.getVisibleRows(true);
-                                       break;
-
-                               case "all":
-                                       rows = this.table.rowManager.rows;
-                                       break;
-
-                               case "selected":
-                                       rows = this.table.modules.selectRow.selectedRows;
-                                       break;
-
-                               case "active":
-                               default:
-                                       rows = this.table.rowManager.getDisplayRows();
-                       }
-               }
-
-               return Object.assign([], rows);
-       };
-
-       Export.prototype.generateColumnGroupHeaders = function () {
-               var _this46 = this;
-
-               var output = [];
-
-               var columns = this.config.columnGroups !== false ? this.table.columnManager.columns : this.table.columnManager.columnsByIndex;
-
-               columns.forEach(function (column) {
-                       var colData = _this46.processColumnGroup(column);
-
-                       if (colData) {
-                               output.push(colData);
-                       }
-               });
-
-               return output;
-       };
-
-       Export.prototype.processColumnGroup = function (column) {
-               var _this47 = this;
-
-               var subGroups = column.columns,
-                   maxDepth = 0;
-
-               var groupData = {
-                       title: column.definition.title,
-                       column: column,
-                       depth: 1
-               };
-
-               if (subGroups.length) {
-                       groupData.subGroups = [];
-                       groupData.width = 0;
-
-                       subGroups.forEach(function (subGroup) {
-                               var subGroupData = _this47.processColumnGroup(subGroup);
-
-                               if (subGroupData) {
-                                       groupData.width += subGroupData.width;
-                                       groupData.subGroups.push(subGroupData);
-
-                                       if (subGroupData.depth > maxDepth) {
-                                               maxDepth = subGroupData.depth;
-                                       }
-                               }
-                       });
-
-                       groupData.depth += maxDepth;
-
-                       if (!groupData.width) {
-                               return false;
-                       }
-               } else {
-                       if (this.columnVisCheck(column)) {
-                               groupData.width = 1;
-                       } else {
-                               return false;
-                       }
-               }
-
-               return groupData;
-       };
-
-       Export.prototype.groupHeadersToRows = function (columns) {
-
-               var headers = [],
-                   headerDepth = 0;
-
-               function parseColumnGroup(column, level) {
-
-                       var depth = headerDepth - level;
-
-                       if (typeof headers[level] === "undefined") {
-                               headers[level] = [];
-                       }
-
-                       column.height = column.subGroups ? 1 : depth - column.depth + 1;
-
-                       headers[level].push(column);
-
-                       if (column.subGroups) {
-                               column.subGroups.forEach(function (subGroup) {
-                                       parseColumnGroup(subGroup, level + 1);
-                               });
-                       }
-               }
-
-               //calculate maximum header debth
-               columns.forEach(function (column) {
-                       if (column.depth > headerDepth) {
-                               headerDepth = column.depth;
-                       }
-               });
-
-               columns.forEach(function (column) {
-                       parseColumnGroup(column, 0);
-               });
-
-               return headers;
-       };
-
-       Export.prototype.generateHeaderElements = function () {
-               var _this48 = this;
-
-               var headerEl = document.createElement("thead");
-
-               var rows = this.groupHeadersToRows(this.generateColumnGroupHeaders());
-
-               rows.forEach(function (row) {
-                       var rowEl = document.createElement("tr");
-
-                       _this48.mapElementStyles(_this48.table.columnManager.getHeadersElement(), headerEl, ["border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]);
-
-                       row.forEach(function (column) {
-                               var cellEl = document.createElement("th");
-                               var classNames = column.column.definition.cssClass ? column.column.definition.cssClass.split(" ") : [];
-
-                               cellEl.colSpan = column.width;
-                               cellEl.rowSpan = column.height;
-
-                               cellEl.innerHTML = column.column.definition.title;
-
-                               if (_this48.cloneTableStyle) {
-                                       cellEl.style.boxSizing = "border-box";
-                               }
-
-                               classNames.forEach(function (className) {
-                                       cellEl.classList.add(className);
-                               });
-
-                               _this48.mapElementStyles(column.column.getElement(), cellEl, ["text-align", "border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]);
-                               _this48.mapElementStyles(column.column.contentElement, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom"]);
-
-                               if (column.column.visible) {
-                                       _this48.mapElementStyles(column.column.getElement(), cellEl, ["width"]);
-                               } else {
-                                       if (column.column.definition.width) {
-                                               cellEl.style.width = column.column.definition.width + "px";
-                                       }
-                               }
-
-                               if (column.column.parent) {
-                                       _this48.mapElementStyles(column.column.parent.groupElement, cellEl, ["border-top"]);
-                               }
-
-                               rowEl.appendChild(cellEl);
-                       });
-
-                       headerEl.appendChild(rowEl);
-               });
-
-               return headerEl;
-       };
-
-       Export.prototype.generateBodyElements = function (rows) {};
-
-       Export.prototype.generateBodyElements = function (rows) {
-               var _this49 = this;
-
-               var oddRow, evenRow, calcRow, firstRow, firstCell, firstGroup, lastCell, styleCells, styleRow, treeElementField, rowFormatter;
-
-               //assign row formatter
-               rowFormatter = this.table.options["rowFormatter" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))];
-               rowFormatter = rowFormatter !== null ? rowFormatter : this.table.options.rowFormatter;
-
-               //lookup row styles
-               if (this.cloneTableStyle && window.getComputedStyle) {
-                       oddRow = this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)");
-                       evenRow = this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)");
-                       calcRow = this.table.element.querySelector(".tabulator-row.tabulator-calcs");
-                       firstRow = this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)");
-                       firstGroup = this.table.element.getElementsByClassName("tabulator-group")[0];
-
-                       if (firstRow) {
-                               styleCells = firstRow.getElementsByClassName("tabulator-cell");
-                               firstCell = styleCells[0];
-                               lastCell = styleCells[styleCells.length - 1];
-                       }
-               }
-
-               var bodyEl = document.createElement("tbody");
-
-               var columns = [];
-
-               if (this.config.columnCalcs !== false && this.table.modExists("columnCalcs")) {
-                       if (this.table.modules.columnCalcs.topInitialized) {
-                               rows.unshift(this.table.modules.columnCalcs.topRow);
-                       }
-
-                       if (this.table.modules.columnCalcs.botInitialized) {
-                               rows.push(this.table.modules.columnCalcs.botRow);
-                       }
-               }
-
-               this.table.columnManager.columnsByIndex.forEach(function (column) {
-                       if (_this49.columnVisCheck(column)) {
-                               columns.push(column);
-                       }
-               });
-
-               if (this.table.options.dataTree && this.config.dataTree !== false && this.table.modExists("columnCalcs")) {
-                       treeElementField = this.table.modules.dataTree.elementField;
-               }
-
-               rows = rows.filter(function (row) {
-                       switch (row.type) {
-                               case "group":
-                                       return _this49.config.rowGroups !== false;
-                                       break;
-
-                               case "calc":
-                                       return _this49.config.columnCalcs !== false;
-                                       break;
-                       }
-
-                       return true;
-               });
-
-               if (rows.length > 1000) {
-                       console.warn("It may take a long time to render an HTML table with more than 1000 rows");
-               }
-
-               rows.forEach(function (row, i) {
-                       var rowData = row.getData(_this49.colVisProp);
-
-                       var rowEl = document.createElement("tr");
-                       rowEl.classList.add("tabulator-print-table-row");
-
-                       switch (row.type) {
-                               case "group":
-                                       var cellEl = document.createElement("td");
-                                       cellEl.colSpan = columns.length;
-                                       cellEl.innerHTML = row.key;
-
-                                       rowEl.classList.add("tabulator-print-table-group");
-
-                                       _this49.mapElementStyles(firstGroup, rowEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "background-color"]);
-                                       _this49.mapElementStyles(firstGroup, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom"]);
-                                       rowEl.appendChild(cellEl);
-                                       break;
-
-                               case "calc":
-                                       rowEl.classList.add("tabulator-print-table-calcs");
-
-                               case "row":
-
-                                       if (_this49.table.options.dataTree && _this49.config.dataTree === false && row.modules.dataTree.parent) {
-                                               return;
-                                       }
-
-                                       columns.forEach(function (column, i) {
-                                               var cellEl = document.createElement("td");
-
-                                               var value = column.getFieldValue(rowData);
-
-                                               var cellWrapper = {
-                                                       modules: {},
-                                                       getValue: function getValue() {
-                                                               return value;
-                                                       },
-                                                       getField: function getField() {
-                                                               return column.definition.field;
-                                                       },
-                                                       getElement: function getElement() {
-                                                               return cellEl;
-                                                       },
-                                                       getColumn: function getColumn() {
-                                                               return column.getComponent();
-                                                       },
-                                                       getData: function getData() {
-                                                               return rowData;
-                                                       },
-                                                       getRow: function getRow() {
-                                                               return row.getComponent();
-                                                       },
-                                                       getComponent: function getComponent() {
-                                                               return cellWrapper;
-                                                       },
-                                                       column: column
-                                               };
-
-                                               var classNames = column.definition.cssClass ? column.definition.cssClass.split(" ") : [];
-
-                                               classNames.forEach(function (className) {
-                                                       cellEl.classList.add(className);
-                                               });
-
-                                               if (_this49.table.modExists("format") && _this49.config.formatCells !== false) {
-                                                       value = _this49.table.modules.format.formatExportValue(cellWrapper, _this49.colVisProp);
-                                               } else {
-                                                       switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
-                                                               case "object":
-                                                                       value = JSON.stringify(value);
-                                                                       break;
-
-                                                               case "undefined":
-                                                               case "null":
-                                                                       value = "";
-                                                                       break;
-
-                                                               default:
-                                                                       value = value;
-                                                       }
-                                               }
-
-                                               if (value instanceof Node) {
-                                                       cellEl.appendChild(value);
-                                               } else {
-                                                       cellEl.innerHTML = value;
-                                               }
-
-                                               if (firstCell) {
-                                                       _this49.mapElementStyles(firstCell, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom", "border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size"]);
-
-                                                       if (column.definition.align) {
-                                                               cellEl.style.textAlign = column.definition.align;
-                                                       }
-                                               }
-
-                                               if (_this49.table.options.dataTree && _this49.config.dataTree !== false) {
-                                                       if (treeElementField && treeElementField == column.field || !treeElementField && i == 0) {
-                                                               if (row.modules.dataTree.controlEl) {
-                                                                       cellEl.insertBefore(row.modules.dataTree.controlEl.cloneNode(true), cellEl.firstChild);
-                                                               }
-                                                               if (row.modules.dataTree.branchEl) {
-                                                                       cellEl.insertBefore(row.modules.dataTree.branchEl.cloneNode(true), cellEl.firstChild);
-                                                               }
-                                                       }
-                                               }
-
-                                               rowEl.appendChild(cellEl);
-
-                                               if (cellWrapper.modules.format && cellWrapper.modules.format.renderedCallback) {
-                                                       cellWrapper.modules.format.renderedCallback();
-                                               }
-                                       });
-
-                                       styleRow = row.type == "calc" ? calcRow : i % 2 && evenRow ? evenRow : oddRow;
-
-                                       _this49.mapElementStyles(styleRow, rowEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "background-color"]);
-
-                                       if (rowFormatter && _this49.config.formatCells !== false) {
-                                               var rowComponent = row.getComponent();
-
-                                               rowComponent.getElement = function () {
-                                                       return rowEl;
-                                               };
-
-                                               rowFormatter(rowComponent);
-                                       }
-
-                                       break;
-                       }
-
-                       bodyEl.appendChild(rowEl);
-               });
-
-               return bodyEl;
-       };
-
-       Export.prototype.columnVisCheck = function (column) {
-               return column.definition[this.colVisProp] !== false && (column.visible || !column.visible && column.definition[this.colVisProp]);
-       };
-
-       Export.prototype.getHtml = function (visible, style, config, colVisProp) {
-               var holder = document.createElement("div");
-
-               holder.appendChild(this.genereateTable(config || this.table.options.htmlOutputConfig, style, visible, colVisProp || "htmlOutput"));
-
-               return holder.innerHTML;
-       };
-
-       Export.prototype.mapElementStyles = function (from, to, props) {
-               if (this.cloneTableStyle && from && to) {
-
-                       var lookup = {
-                               "background-color": "backgroundColor",
-                               "color": "fontColor",
-                               "width": "width",
-                               "font-weight": "fontWeight",
-                               "font-family": "fontFamily",
-                               "font-size": "fontSize",
-                               "text-align": "textAlign",
-                               "border-top": "borderTop",
-                               "border-left": "borderLeft",
-                               "border-right": "borderRight",
-                               "border-bottom": "borderBottom",
-                               "padding-top": "paddingTop",
-                               "padding-left": "paddingLeft",
-                               "padding-right": "paddingRight",
-                               "padding-bottom": "paddingBottom"
-                       };
-
-                       if (window.getComputedStyle) {
-                               var fromStyle = window.getComputedStyle(from);
-
-                               props.forEach(function (prop) {
-                                       to.style[lookup[prop]] = fromStyle.getPropertyValue(prop);
-                               });
-                       }
-               }
-       };
-
-       Tabulator.prototype.registerModule("export", Export);
-
-       var Filter = function Filter(table) {
-
-               this.table = table; //hold Tabulator object
-
-               this.filterList = []; //hold filter list
-               this.headerFilters = {}; //hold column filters
-               this.headerFilterColumns = []; //hold columns that use header filters
-
-               this.prevHeaderFilterChangeCheck = "";
-               this.prevHeaderFilterChangeCheck = "{}";
-
-               this.changed = false; //has filtering changed since last render
-       };
-
-       //initialize column header filter
-       Filter.prototype.initializeColumn = function (column, value) {
-               var self = this,
-                   field = column.getField(),
-                   params;
-
-               //handle successfull value change
-               function success(value) {
-                       var filterType = column.modules.filter.tagType == "input" && column.modules.filter.attrType == "text" || column.modules.filter.tagType == "textarea" ? "partial" : "match",
-                           type = "",
-                           filterChangeCheck = "",
-                           filterFunc;
-
-                       if (typeof column.modules.filter.prevSuccess === "undefined" || column.modules.filter.prevSuccess !== value) {
-
-                               column.modules.filter.prevSuccess = value;
-
-                               if (!column.modules.filter.emptyFunc(value)) {
-                                       column.modules.filter.value = value;
-
-                                       switch (_typeof(column.definition.headerFilterFunc)) {
-                                               case "string":
-                                                       if (self.filters[column.definition.headerFilterFunc]) {
-                                                               type = column.definition.headerFilterFunc;
-                                                               filterFunc = function filterFunc(data) {
-                                                                       var params = column.definition.headerFilterFuncParams || {};
-                                                                       var fieldVal = column.getFieldValue(data);
-
-                                                                       params = typeof params === "function" ? params(value, fieldVal, data) : params;
-
-                                                                       return self.filters[column.definition.headerFilterFunc](value, fieldVal, data, params);
-                                                               };
-                                                       } else {
-                                                               console.warn("Header Filter Error - Matching filter function not found: ", column.definition.headerFilterFunc);
-                                                       }
-                                                       break;
-
-                                               case "function":
-                                                       filterFunc = function filterFunc(data) {
-                                                               var params = column.definition.headerFilterFuncParams || {};
-                                                               var fieldVal = column.getFieldValue(data);
-
-                                                               params = typeof params === "function" ? params(value, fieldVal, data) : params;
-
-                                                               return column.definition.headerFilterFunc(value, fieldVal, data, params);
-                                                       };
-
-                                                       type = filterFunc;
-                                                       break;
-                                       }
-
-                                       if (!filterFunc) {
-                                               switch (filterType) {
-                                                       case "partial":
-                                                               filterFunc = function filterFunc(data) {
-                                                                       var colVal = column.getFieldValue(data);
-
-                                                                       if (typeof colVal !== 'undefined' && colVal !== null) {
-                                                                               return String(colVal).toLowerCase().indexOf(String(value).toLowerCase()) > -1;
-                                                                       } else {
-                                                                               return false;
-                                                                       }
-                                                               };
-                                                               type = "like";
-                                                               break;
-
-                                                       default:
-                                                               filterFunc = function filterFunc(data) {
-                                                                       return column.getFieldValue(data) == value;
-                                                               };
-                                                               type = "=";
-                                               }
-                                       }
-
-                                       self.headerFilters[field] = { value: value, func: filterFunc, type: type };
-                               } else {
-                                       delete self.headerFilters[field];
-                               }
-
-                               filterChangeCheck = JSON.stringify(self.headerFilters);
-
-                               if (self.prevHeaderFilterChangeCheck !== filterChangeCheck) {
-                                       self.prevHeaderFilterChangeCheck = filterChangeCheck;
-
-                                       self.changed = true;
-                                       self.table.rowManager.filterRefresh();
-                               }
-                       }
-
-                       return true;
-               }
-
-               column.modules.filter = {
-                       success: success,
-                       attrType: false,
-                       tagType: false,
-                       emptyFunc: false
-               };
-
-               this.generateHeaderFilterElement(column);
-       };
-
-       Filter.prototype.generateHeaderFilterElement = function (column, initialValue, reinitialize) {
-               var _this50 = this;
-
-               var self = this,
-                   success = column.modules.filter.success,
-                   field = column.getField(),
-                   filterElement,
-                   editor,
-                   editorElement,
-                   cellWrapper,
-                   typingTimer,
-                   searchTrigger,
-                   params;
-
-               //handle aborted edit
-               function cancel() {}
-
-               if (column.modules.filter.headerElement && column.modules.filter.headerElement.parentNode) {
-                       column.contentElement.removeChild(column.modules.filter.headerElement.parentNode);
-               }
-
-               if (field) {
-
-                       //set empty value function
-                       column.modules.filter.emptyFunc = column.definition.headerFilterEmptyCheck || function (value) {
-                               return !value && value !== "0";
-                       };
-
-                       filterElement = document.createElement("div");
-                       filterElement.classList.add("tabulator-header-filter");
-
-                       //set column editor
-                       switch (_typeof(column.definition.headerFilter)) {
-                               case "string":
-                                       if (self.table.modules.edit.editors[column.definition.headerFilter]) {
-                                               editor = self.table.modules.edit.editors[column.definition.headerFilter];
-
-                                               if ((column.definition.headerFilter === "tick" || column.definition.headerFilter === "tickCross") && !column.definition.headerFilterEmptyCheck) {
-                                                       column.modules.filter.emptyFunc = function (value) {
-                                                               return value !== true && value !== false;
-                                                       };
-                                               }
-                                       } else {
-                                               console.warn("Filter Error - Cannot build header filter, No such editor found: ", column.definition.editor);
-                                       }
-                                       break;
-
-                               case "function":
-                                       editor = column.definition.headerFilter;
-                                       break;
-
-                               case "boolean":
-                                       if (column.modules.edit && column.modules.edit.editor) {
-                                               editor = column.modules.edit.editor;
-                                       } else {
-                                               if (column.definition.formatter && self.table.modules.edit.editors[column.definition.formatter]) {
-                                                       editor = self.table.modules.edit.editors[column.definition.formatter];
-
-                                                       if ((column.definition.formatter === "tick" || column.definition.formatter === "tickCross") && !column.definition.headerFilterEmptyCheck) {
-                                                               column.modules.filter.emptyFunc = function (value) {
-                                                                       return value !== true && value !== false;
-                                                               };
-                                                       }
-                                               } else {
-                                                       editor = self.table.modules.edit.editors["input"];
-                                               }
-                                       }
-                                       break;
-                       }
-
-                       if (editor) {
-
-                               cellWrapper = {
-                                       getValue: function getValue() {
-                                               return typeof initialValue !== "undefined" ? initialValue : "";
-                                       },
-                                       getField: function getField() {
-                                               return column.definition.field;
-                                       },
-                                       getElement: function getElement() {
-                                               return filterElement;
-                                       },
-                                       getColumn: function getColumn() {
-                                               return column.getComponent();
-                                       },
-                                       getRow: function getRow() {
-                                               return {
-                                                       normalizeHeight: function normalizeHeight() {}
-                                               };
-                                       }
-                               };
-
-                               params = column.definition.headerFilterParams || {};
-
-                               params = typeof params === "function" ? params.call(self.table) : params;
-
-                               editorElement = editor.call(this.table.modules.edit, cellWrapper, function () {}, success, cancel, params);
-
-                               if (!editorElement) {
-                                       console.warn("Filter Error - Cannot add filter to " + field + " column, editor returned a value of false");
-                                       return;
-                               }
-
-                               if (!(editorElement instanceof Node)) {
-                                       console.warn("Filter Error - Cannot add filter to " + field + " column, editor should return an instance of Node, the editor returned:", editorElement);
-                                       return;
-                               }
-
-                               //set Placeholder Text
-                               if (field) {
-                                       self.table.modules.localize.bind("headerFilters|columns|" + column.definition.field, function (value) {
-                                               editorElement.setAttribute("placeholder", typeof value !== "undefined" && value ? value : self.table.modules.localize.getText("headerFilters|default"));
-                                       });
-                               } else {
-                                       self.table.modules.localize.bind("headerFilters|default", function (value) {
-                                               editorElement.setAttribute("placeholder", typeof self.column.definition.headerFilterPlaceholder !== "undefined" && self.column.definition.headerFilterPlaceholder ? self.column.definition.headerFilterPlaceholder : value);
-                                       });
-                               }
-
-                               //focus on element on click
-                               editorElement.addEventListener("click", function (e) {
-                                       e.stopPropagation();
-                                       editorElement.focus();
-                               });
-
-                               editorElement.addEventListener("focus", function (e) {
-                                       var left = _this50.table.columnManager.element.scrollLeft;
-
-                                       if (left !== _this50.table.rowManager.element.scrollLeft) {
-                                               _this50.table.rowManager.scrollHorizontal(left);
-                                               _this50.table.columnManager.scrollHorizontal(left);
-                                       }
-                               });
-
-                               //live update filters as user types
-                               typingTimer = false;
-
-                               searchTrigger = function searchTrigger(e) {
-                                       if (typingTimer) {
-                                               clearTimeout(typingTimer);
-                                       }
-
-                                       typingTimer = setTimeout(function () {
-                                               success(editorElement.value);
-                                       }, self.table.options.headerFilterLiveFilterDelay);
-                               };
-
-                               column.modules.filter.headerElement = editorElement;
-                               column.modules.filter.attrType = editorElement.hasAttribute("type") ? editorElement.getAttribute("type").toLowerCase() : "";
-                               column.modules.filter.tagType = editorElement.tagName.toLowerCase();
-
-                               if (column.definition.headerFilterLiveFilter !== false) {
-
-                                       if (!(column.definition.headerFilter === 'autocomplete' || column.definition.headerFilter === 'tickCross' || (column.definition.editor === 'autocomplete' || column.definition.editor === 'tickCross') && column.definition.headerFilter === true)) {
-                                               editorElement.addEventListener("keyup", searchTrigger);
-                                               editorElement.addEventListener("search", searchTrigger);
-
-                                               //update number filtered columns on change
-                                               if (column.modules.filter.attrType == "number") {
-                                                       editorElement.addEventListener("change", function (e) {
-                                                               success(editorElement.value);
-                                                       });
-                                               }
-
-                                               //change text inputs to search inputs to allow for clearing of field
-                                               if (column.modules.filter.attrType == "text" && this.table.browser !== "ie") {
-                                                       editorElement.setAttribute("type", "search");
-                                                       // editorElement.off("change blur"); //prevent blur from triggering filter and preventing selection click
-                                               }
-                                       }
-
-                                       //prevent input and select elements from propegating click to column sorters etc
-                                       if (column.modules.filter.tagType == "input" || column.modules.filter.tagType == "select" || column.modules.filter.tagType == "textarea") {
-                                               editorElement.addEventListener("mousedown", function (e) {
-                                                       e.stopPropagation();
-                                               });
-                                       }
-                               }
-
-                               filterElement.appendChild(editorElement);
-
-                               column.contentElement.appendChild(filterElement);
-
-                               if (!reinitialize) {
-                                       self.headerFilterColumns.push(column);
-                               }
-                       }
-               } else {
-                       console.warn("Filter Error - Cannot add header filter, column has no field set:", column.definition.title);
-               }
-       };
-
-       //hide all header filter elements (used to ensure correct column widths in "fitData" layout mode)
-       Filter.prototype.hideHeaderFilterElements = function () {
-               this.headerFilterColumns.forEach(function (column) {
-                       if (column.modules.filter && column.modules.filter.headerElement) {
-                               column.modules.filter.headerElement.style.display = 'none';
-                       }
-               });
-       };
-
-       //show all header filter elements (used to ensure correct column widths in "fitData" layout mode)
-       Filter.prototype.showHeaderFilterElements = function () {
-               this.headerFilterColumns.forEach(function (column) {
-                       if (column.modules.filter && column.modules.filter.headerElement) {
-                               column.modules.filter.headerElement.style.display = '';
-                       }
-               });
-       };
-
-       //programatically set focus of header filter
-       Filter.prototype.setHeaderFilterFocus = function (column) {
-               if (column.modules.filter && column.modules.filter.headerElement) {
-                       column.modules.filter.headerElement.focus();
-               } else {
-                       console.warn("Column Filter Focus Error - No header filter set on column:", column.getField());
-               }
-       };
-
-       //programmatically get value of header filter
-       Filter.prototype.getHeaderFilterValue = function (column) {
-               if (column.modules.filter && column.modules.filter.headerElement) {
-                       return column.modules.filter.headerElement.value;
-               } else {
-                       console.warn("Column Filter Error - No header filter set on column:", column.getField());
-               }
-       };
-
-       //programatically set value of header filter
-       Filter.prototype.setHeaderFilterValue = function (column, value) {
-               if (column) {
-                       if (column.modules.filter && column.modules.filter.headerElement) {
-                               this.generateHeaderFilterElement(column, value, true);
-                               column.modules.filter.success(value);
-                       } else {
-                               console.warn("Column Filter Error - No header filter set on column:", column.getField());
-                       }
-               }
-       };
-
-       Filter.prototype.reloadHeaderFilter = function (column) {
-               if (column) {
-                       if (column.modules.filter && column.modules.filter.headerElement) {
-                               this.generateHeaderFilterElement(column, column.modules.filter.value, true);
-                       } else {
-                               console.warn("Column Filter Error - No header filter set on column:", column.getField());
-                       }
-               }
-       };
-
-       //check if the filters has changed since last use
-       Filter.prototype.hasChanged = function () {
-               var changed = this.changed;
-               this.changed = false;
-               return changed;
-       };
-
-       //set standard filters
-       Filter.prototype.setFilter = function (field, type, value) {
-               var self = this;
-
-               self.filterList = [];
-
-               if (!Array.isArray(field)) {
-                       field = [{ field: field, type: type, value: value }];
-               }
-
-               self.addFilter(field);
-       };
-
-       //add filter to array
-       Filter.prototype.addFilter = function (field, type, value) {
-               var self = this;
-
-               if (!Array.isArray(field)) {
-                       field = [{ field: field, type: type, value: value }];
-               }
-
-               field.forEach(function (filter) {
-
-                       filter = self.findFilter(filter);
-
-                       if (filter) {
-                               self.filterList.push(filter);
-
-                               self.changed = true;
-                       }
-               });
-
-               if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.filter) {
-                       this.table.modules.persistence.save("filter");
-               }
-       };
-
-       Filter.prototype.findFilter = function (filter) {
-               var self = this,
-                   column;
-
-               if (Array.isArray(filter)) {
-                       return this.findSubFilters(filter);
-               }
-
-               var filterFunc = false;
-
-               if (typeof filter.field == "function") {
-                       filterFunc = function filterFunc(data) {
-                               return filter.field(data, filter.type || {}); // pass params to custom filter function
-                       };
-               } else {
-
-                       if (self.filters[filter.type]) {
-
-                               column = self.table.columnManager.getColumnByField(filter.field);
-
-                               if (column) {
-                                       filterFunc = function filterFunc(data) {
-                                               return self.filters[filter.type](filter.value, column.getFieldValue(data));
-                                       };
-                               } else {
-                                       filterFunc = function filterFunc(data) {
-                                               return self.filters[filter.type](filter.value, data[filter.field]);
-                                       };
-                               }
-                       } else {
-                               console.warn("Filter Error - No such filter type found, ignoring: ", filter.type);
-                       }
-               }
-
-               filter.func = filterFunc;
-
-               return filter.func ? filter : false;
-       };
-
-       Filter.prototype.findSubFilters = function (filters) {
-               var self = this,
-                   output = [];
-
-               filters.forEach(function (filter) {
-                       filter = self.findFilter(filter);
-
-                       if (filter) {
-                               output.push(filter);
-                       }
-               });
-
-               return output.length ? output : false;
-       };
-
-       //get all filters
-       Filter.prototype.getFilters = function (all, ajax) {
-               var output = [];
-
-               if (all) {
-                       output = this.getHeaderFilters();
-               }
-
-               if (ajax) {
-                       output.forEach(function (item) {
-                               if (typeof item.type == "function") {
-                                       item.type = "function";
-                               }
-                       });
-               }
-
-               output = output.concat(this.filtersToArray(this.filterList, ajax));
-
-               return output;
-       };
-
-       //filter to Object
-       Filter.prototype.filtersToArray = function (filterList, ajax) {
-               var _this51 = this;
-
-               var output = [];
-
-               filterList.forEach(function (filter) {
-                       var item;
-
-                       if (Array.isArray(filter)) {
-                               output.push(_this51.filtersToArray(filter, ajax));
-                       } else {
-                               item = { field: filter.field, type: filter.type, value: filter.value };
-
-                               if (ajax) {
-                                       if (typeof item.type == "function") {
-                                               item.type = "function";
-                                       }
-                               }
-
-                               output.push(item);
-                       }
-               });
-
-               return output;
-       };
-
-       //get all filters
-       Filter.prototype.getHeaderFilters = function () {
-               var self = this,
-                   output = [];
-
-               for (var key in this.headerFilters) {
-                       output.push({ field: key, type: this.headerFilters[key].type, value: this.headerFilters[key].value });
-               }
-
-               return output;
-       };
-
-       //remove filter from array
-       Filter.prototype.removeFilter = function (field, type, value) {
-               var self = this;
-
-               if (!Array.isArray(field)) {
-                       field = [{ field: field, type: type, value: value }];
-               }
-
-               field.forEach(function (filter) {
-                       var index = -1;
-
-                       if (_typeof(filter.field) == "object") {
-                               index = self.filterList.findIndex(function (element) {
-                                       return filter === element;
-                               });
-                       } else {
-                               index = self.filterList.findIndex(function (element) {
-                                       return filter.field === element.field && filter.type === element.type && filter.value === element.value;
-                               });
-                       }
-
-                       if (index > -1) {
-                               self.filterList.splice(index, 1);
-                               self.changed = true;
-                       } else {
-                               console.warn("Filter Error - No matching filter type found, ignoring: ", filter.type);
-                       }
-               });
-
-               if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.filter) {
-                       this.table.modules.persistence.save("filter");
-               }
-       };
-
-       //clear filters
-       Filter.prototype.clearFilter = function (all) {
-               this.filterList = [];
-
-               if (all) {
-                       this.clearHeaderFilter();
-               }
-
-               this.changed = true;
-
-               if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.filter) {
-                       this.table.modules.persistence.save("filter");
-               }
-       };
-
-       //clear header filters
-       Filter.prototype.clearHeaderFilter = function () {
-               var self = this;
-
-               this.headerFilters = {};
-               self.prevHeaderFilterChangeCheck = "{}";
-
-               this.headerFilterColumns.forEach(function (column) {
-                       column.modules.filter.value = null;
-                       column.modules.filter.prevSuccess = undefined;
-                       self.reloadHeaderFilter(column);
-               });
-
-               this.changed = true;
-       };
-
-       //search data and return matching rows
-       Filter.prototype.search = function (searchType, field, type, value) {
-               var self = this,
-                   activeRows = [],
-                   filterList = [];
-
-               if (!Array.isArray(field)) {
-                       field = [{ field: field, type: type, value: value }];
-               }
-
-               field.forEach(function (filter) {
-                       filter = self.findFilter(filter);
-
-                       if (filter) {
-                               filterList.push(filter);
-                       }
-               });
-
-               this.table.rowManager.rows.forEach(function (row) {
-                       var match = true;
-
-                       filterList.forEach(function (filter) {
-                               if (!self.filterRecurse(filter, row.getData())) {
-                                       match = false;
-                               }
-                       });
-
-                       if (match) {
-                               activeRows.push(searchType === "data" ? row.getData("data") : row.getComponent());
-                       }
-               });
-
-               return activeRows;
-       };
-
-       //filter row array
-       Filter.prototype.filter = function (rowList, filters) {
-               var self = this,
-                   activeRows = [],
-                   activeRowComponents = [];
-
-               if (self.table.options.dataFiltering) {
-                       self.table.options.dataFiltering.call(self.table, self.getFilters());
-               }
-
-               if (!self.table.options.ajaxFiltering && (self.filterList.length || Object.keys(self.headerFilters).length)) {
-
-                       rowList.forEach(function (row) {
-                               if (self.filterRow(row)) {
-                                       activeRows.push(row);
-                               }
-                       });
-               } else {
-                       activeRows = rowList.slice(0);
-               }
-
-               if (self.table.options.dataFiltered) {
-
-                       activeRows.forEach(function (row) {
-                               activeRowComponents.push(row.getComponent());
-                       });
-
-                       self.table.options.dataFiltered.call(self.table, self.getFilters(), activeRowComponents);
-               }
-
-               return activeRows;
-       };
-
-       //filter individual row
-       Filter.prototype.filterRow = function (row, filters) {
-               var self = this,
-                   match = true,
-                   data = row.getData();
-
-               self.filterList.forEach(function (filter) {
-                       if (!self.filterRecurse(filter, data)) {
-                               match = false;
-                       }
-               });
-
-               for (var field in self.headerFilters) {
-                       if (!self.headerFilters[field].func(data)) {
-                               match = false;
-                       }
-               }
-
-               return match;
-       };
-
-       Filter.prototype.filterRecurse = function (filter, data) {
-               var self = this,
-                   match = false;
-
-               if (Array.isArray(filter)) {
-                       filter.forEach(function (subFilter) {
-                               if (self.filterRecurse(subFilter, data)) {
-                                       match = true;
-                               }
-                       });
-               } else {
-                       match = filter.func(data);
-               }
-
-               return match;
-       };
-
-       //list of available filters
-       Filter.prototype.filters = {
-
-               //equal to
-               "=": function _(filterVal, rowVal, rowData, filterParams) {
-                       return rowVal == filterVal ? true : false;
-               },
-
-               //less than
-               "<": function _(filterVal, rowVal, rowData, filterParams) {
-                       return rowVal < filterVal ? true : false;
-               },
-
-               //less than or equal to
-               "<=": function _(filterVal, rowVal, rowData, filterParams) {
-                       return rowVal <= filterVal ? true : false;
-               },
-
-               //greater than
-               ">": function _(filterVal, rowVal, rowData, filterParams) {
-                       return rowVal > filterVal ? true : false;
-               },
-
-               //greater than or equal to
-               ">=": function _(filterVal, rowVal, rowData, filterParams) {
-                       return rowVal >= filterVal ? true : false;
-               },
-
-               //not equal to
-               "!=": function _(filterVal, rowVal, rowData, filterParams) {
-                       return rowVal != filterVal ? true : false;
-               },
-
-               "regex": function regex(filterVal, rowVal, rowData, filterParams) {
-
-                       if (typeof filterVal == "string") {
-                               filterVal = new RegExp(filterVal);
-                       }
-
-                       return filterVal.test(rowVal);
-               },
-
-               //contains the string
-               "like": function like(filterVal, rowVal, rowData, filterParams) {
-                       if (filterVal === null || typeof filterVal === "undefined") {
-                               return rowVal === filterVal ? true : false;
-                       } else {
-                               if (typeof rowVal !== 'undefined' && rowVal !== null) {
-                                       return String(rowVal).toLowerCase().indexOf(filterVal.toLowerCase()) > -1;
-                               } else {
-                                       return false;
-                               }
-                       }
-               },
-
-               //in array
-               "in": function _in(filterVal, rowVal, rowData, filterParams) {
-                       if (Array.isArray(filterVal)) {
-                               return filterVal.indexOf(rowVal) > -1;
-                       } else {
-                               console.warn("Filter Error - filter value is not an array:", filterVal);
-                               return false;
-                       }
-               }
-       };
-
-       Tabulator.prototype.registerModule("filter", Filter);
-
-       var Format = function Format(table) {
-               this.table = table; //hold Tabulator object
-       };
-
-       //initialize column formatter
-       Format.prototype.initializeColumn = function (column) {
-               column.modules.format = this.lookupFormatter(column, "");
-
-               if (typeof column.definition.formatterPrint !== "undefined") {
-                       column.modules.format.print = this.lookupFormatter(column, "Print");
-               }
-
-               if (typeof column.definition.formatterClipboard !== "undefined") {
-                       column.modules.format.clipboard = this.lookupFormatter(column, "Clipboard");
-               }
-
-               if (typeof column.definition.formatterHtmlOutput !== "undefined") {
-                       column.modules.format.htmlOutput = this.lookupFormatter(column, "HtmlOutput");
-               }
-       };
-
-       Format.prototype.lookupFormatter = function (column, type) {
-               var config = { params: column.definition["formatter" + type + "Params"] || {} },
-                   formatter = column.definition["formatter" + type];
-
-               //set column formatter
-               switch (typeof formatter === 'undefined' ? 'undefined' : _typeof(formatter)) {
-                       case "string":
-
-                               if (formatter === "tick") {
-                                       formatter = "tickCross";
-
-                                       if (typeof config.params.crossElement == "undefined") {
-                                               config.params.crossElement = false;
-                                       }
-
-                                       console.warn("DEPRECATION WARNING - the tick formatter has been deprecated, please use the tickCross formatter with the crossElement param set to false");
-                               }
-
-                               if (this.formatters[formatter]) {
-                                       config.formatter = this.formatters[formatter];
-                               } else {
-                                       console.warn("Formatter Error - No such formatter found: ", formatter);
-                                       config.formatter = this.formatters.plaintext;
-                               }
-                               break;
-
-                       case "function":
-                               config.formatter = formatter;
-                               break;
-
-                       default:
-                               config.formatter = this.formatters.plaintext;
-                               break;
-               }
-
-               return config;
-       };
-
-       Format.prototype.cellRendered = function (cell) {
-               if (cell.modules.format && cell.modules.format.renderedCallback) {
-                       cell.modules.format.renderedCallback();
-               }
-       };
-
-       //return a formatted value for a cell
-       Format.prototype.formatValue = function (cell) {
-               var component = cell.getComponent(),
-                   params = typeof cell.column.modules.format.params === "function" ? cell.column.modules.format.params(component) : cell.column.modules.format.params;
-
-               function onRendered(callback) {
-                       if (!cell.modules.format) {
-                               cell.modules.format = {};
-                       }
-
-                       cell.modules.format.renderedCallback = callback;
-               }
-
-               return cell.column.modules.format.formatter.call(this, component, params, onRendered);
-       };
-
-       Format.prototype.formatExportValue = function (cell, type) {
-               var formatter = cell.column.modules.format[type],
-                   params;
-
-               if (formatter) {
-                       var onRendered = function onRendered(callback) {
-                               if (!cell.modules.format) {
-                                       cell.modules.format = {};
-                               }
-
-                               cell.modules.format.renderedCallback = callback;
-                       };
-
-                       params = typeof formatter.params === "function" ? formatter.params(component) : formatter.params;
-
-                       return formatter.formatter.call(this, cell.getComponent(), params, onRendered);
-               } else {
-                       return this.formatValue(cell);
-               }
-       };
-
-       Format.prototype.sanitizeHTML = function (value) {
-               if (value) {
-                       var entityMap = {
-                               '&': '&amp;',
-                               '<': '&lt;',
-                               '>': '&gt;',
-                               '"': '&quot;',
-                               "'": '&#39;',
-                               '/': '&#x2F;',
-                               '`': '&#x60;',
-                               '=': '&#x3D;'
-                       };
-
-                       return String(value).replace(/[&<>"'`=\/]/g, function (s) {
-                               return entityMap[s];
-                       });
-               } else {
-                       return value;
-               }
-       };
-
-       Format.prototype.emptyToSpace = function (value) {
-               return value === null || typeof value === "undefined" || value === "" ? "&nbsp;" : value;
-       };
-
-       //get formatter for cell
-       Format.prototype.getFormatter = function (formatter) {
-               var formatter;
-
-               switch (typeof formatter === 'undefined' ? 'undefined' : _typeof(formatter)) {
-                       case "string":
-                               if (this.formatters[formatter]) {
-                                       formatter = this.formatters[formatter];
-                               } else {
-                                       console.warn("Formatter Error - No such formatter found: ", formatter);
-                                       formatter = this.formatters.plaintext;
-                               }
-                               break;
-
-                       case "function":
-                               formatter = formatter;
-                               break;
-
-                       default:
-                               formatter = this.formatters.plaintext;
-                               break;
-               }
-
-               return formatter;
-       };
-
-       //default data formatters
-       Format.prototype.formatters = {
-               //plain text value
-               plaintext: function plaintext(cell, formatterParams, onRendered) {
-                       return this.emptyToSpace(this.sanitizeHTML(cell.getValue()));
-               },
-
-               //html text value
-               html: function html(cell, formatterParams, onRendered) {
-                       return cell.getValue();
-               },
-
-               //multiline text area
-               textarea: function textarea(cell, formatterParams, onRendered) {
-                       cell.getElement().style.whiteSpace = "pre-wrap";
-                       return this.emptyToSpace(this.sanitizeHTML(cell.getValue()));
-               },
-
-               //currency formatting
-               money: function money(cell, formatterParams, onRendered) {
-                       var floatVal = parseFloat(cell.getValue()),
-                           number,
-                           integer,
-                           decimal,
-                           rgx;
-
-                       var decimalSym = formatterParams.decimal || ".";
-                       var thousandSym = formatterParams.thousand || ",";
-                       var symbol = formatterParams.symbol || "";
-                       var after = !!formatterParams.symbolAfter;
-                       var precision = typeof formatterParams.precision !== "undefined" ? formatterParams.precision : 2;
-
-                       if (isNaN(floatVal)) {
-                               return this.emptyToSpace(this.sanitizeHTML(cell.getValue()));
-                       }
-
-                       number = precision !== false ? floatVal.toFixed(precision) : floatVal;
-                       number = String(number).split(".");
-
-                       integer = number[0];
-                       decimal = number.length > 1 ? decimalSym + number[1] : "";
-
-                       rgx = /(\d+)(\d{3})/;
-
-                       while (rgx.test(integer)) {
-                               integer = integer.replace(rgx, "$1" + thousandSym + "$2");
-                       }
-
-                       return after ? integer + decimal + symbol : symbol + integer + decimal;
-               },
-
-               //clickable anchor tag
-               link: function link(cell, formatterParams, onRendered) {
-                       var value = cell.getValue(),
-                           urlPrefix = formatterParams.urlPrefix || "",
-                           download = formatterParams.download,
-                           label = value,
-                           el = document.createElement("a"),
-                           data;
-
-                       if (formatterParams.labelField) {
-                               data = cell.getData();
-                               label = data[formatterParams.labelField];
-                       }
-
-                       if (formatterParams.label) {
-                               switch (_typeof(formatterParams.label)) {
-                                       case "string":
-                                               label = formatterParams.label;
-                                               break;
-
-                                       case "function":
-                                               label = formatterParams.label(cell);
-                                               break;
-                               }
-                       }
-
-                       if (label) {
-                               if (formatterParams.urlField) {
-                                       data = cell.getData();
-                                       value = data[formatterParams.urlField];
-                               }
-
-                               if (formatterParams.url) {
-                                       switch (_typeof(formatterParams.url)) {
-                                               case "string":
-                                                       value = formatterParams.url;
-                                                       break;
-
-                                               case "function":
-                                                       value = formatterParams.url(cell);
-                                                       break;
-                                       }
-                               }
-
-                               el.setAttribute("href", urlPrefix + value);
-
-                               if (formatterParams.target) {
-                                       el.setAttribute("target", formatterParams.target);
-                               }
-
-                               if (formatterParams.download) {
-
-                                       if (typeof download == "function") {
-                                               download = download(cell);
-                                       } else {
-                                               download = download === true ? "" : download;
-                                       }
-
-                                       el.setAttribute("download", download);
-                               }
-
-                               el.innerHTML = this.emptyToSpace(this.sanitizeHTML(label));
-
-                               return el;
-                       } else {
-                               return "&nbsp;";
-                       }
-               },
-
-               //image element
-               image: function image(cell, formatterParams, onRendered) {
-                       var el = document.createElement("img");
-                       el.setAttribute("src", cell.getValue());
-
-                       switch (_typeof(formatterParams.height)) {
-                               case "number":
-                                       el.style.height = formatterParams.height + "px";
-                                       break;
-
-                               case "string":
-                                       el.style.height = formatterParams.height;
-                                       break;
-                       }
-
-                       switch (_typeof(formatterParams.width)) {
-                               case "number":
-                                       el.style.width = formatterParams.width + "px";
-                                       break;
-
-                               case "string":
-                                       el.style.width = formatterParams.width;
-                                       break;
-                       }
-
-                       el.addEventListener("load", function () {
-                               cell.getRow().normalizeHeight();
-                       });
-
-                       return el;
-               },
-
-               //tick or cross
-               tickCross: function tickCross(cell, formatterParams, onRendered) {
-                       var value = cell.getValue(),
-                           element = cell.getElement(),
-                           empty = formatterParams.allowEmpty,
-                           truthy = formatterParams.allowTruthy,
-                           tick = typeof formatterParams.tickElement !== "undefined" ? formatterParams.tickElement : '<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34  c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351  l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07  l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>',
-                           cross = typeof formatterParams.crossElement !== "undefined" ? formatterParams.crossElement : '<svg enable-background="new 0 0 24 24" height="14" width="14"  viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272  c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0  l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269  c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73  L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>';
-
-                       if (truthy && value || value === true || value === "true" || value === "True" || value === 1 || value === "1") {
-                               element.setAttribute("aria-checked", true);
-                               return tick || "";
-                       } else {
-                               if (empty && (value === "null" || value === "" || value === null || typeof value === "undefined")) {
-                                       element.setAttribute("aria-checked", "mixed");
-                                       return "";
-                               } else {
-                                       element.setAttribute("aria-checked", false);
-                                       return cross || "";
-                               }
-                       }
-               },
-
-               datetime: function datetime(cell, formatterParams, onRendered) {
-                       var inputFormat = formatterParams.inputFormat || "YYYY-MM-DD hh:mm:ss";
-                       var outputFormat = formatterParams.outputFormat || "DD/MM/YYYY hh:mm:ss";
-                       var invalid = typeof formatterParams.invalidPlaceholder !== "undefined" ? formatterParams.invalidPlaceholder : "";
-                       var value = cell.getValue();
-
-                       var newDatetime = moment(value, inputFormat);
-
-                       if (newDatetime.isValid()) {
-                               return newDatetime.format(outputFormat);
-                       } else {
-
-                               if (invalid === true) {
-                                       return value;
-                               } else if (typeof invalid === "function") {
-                                       return invalid(value);
-                               } else {
-                                       return invalid;
-                               }
-                       }
-               },
-
-               datetimediff: function datetime(cell, formatterParams, onRendered) {
-                       var inputFormat = formatterParams.inputFormat || "YYYY-MM-DD hh:mm:ss";
-                       var invalid = typeof formatterParams.invalidPlaceholder !== "undefined" ? formatterParams.invalidPlaceholder : "";
-                       var suffix = typeof formatterParams.suffix !== "undefined" ? formatterParams.suffix : false;
-                       var unit = typeof formatterParams.unit !== "undefined" ? formatterParams.unit : undefined;
-                       var humanize = typeof formatterParams.humanize !== "undefined" ? formatterParams.humanize : false;
-                       var date = typeof formatterParams.date !== "undefined" ? formatterParams.date : moment();
-                       var value = cell.getValue();
-
-                       var newDatetime = moment(value, inputFormat);
-
-                       if (newDatetime.isValid()) {
-                               if (humanize) {
-                                       return moment.duration(newDatetime.diff(date)).humanize(suffix);
-                               } else {
-                                       return newDatetime.diff(date, unit) + (suffix ? " " + suffix : "");
-                               }
-                       } else {
-
-                               if (invalid === true) {
-                                       return value;
-                               } else if (typeof invalid === "function") {
-                                       return invalid(value);
-                               } else {
-                                       return invalid;
-                               }
-                       }
-               },
-
-               //select
-               lookup: function lookup(cell, formatterParams, onRendered) {
-                       var value = cell.getValue();
-
-                       if (typeof formatterParams[value] === "undefined") {
-                               console.warn('Missing display value for ' + value);
-                               return value;
-                       }
-
-                       return formatterParams[value];
-               },
-
-               //star rating
-               star: function star(cell, formatterParams, onRendered) {
-                       var value = cell.getValue(),
-                           element = cell.getElement(),
-                           maxStars = formatterParams && formatterParams.stars ? formatterParams.stars : 5,
-                           stars = document.createElement("span"),
-                           star = document.createElementNS('http://www.w3.org/2000/svg', "svg"),
-                           starActive = '<polygon fill="#FFEA00" stroke="#C1AB60" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>',
-                           starInactive = '<polygon fill="#D2D2D2" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>';
-
-                       //style stars holder
-                       stars.style.verticalAlign = "middle";
-
-                       //style star
-                       star.setAttribute("width", "14");
-                       star.setAttribute("height", "14");
-                       star.setAttribute("viewBox", "0 0 512 512");
-                       star.setAttribute("xml:space", "preserve");
-                       star.style.padding = "0 1px";
-
-                       value = value && !isNaN(value) ? parseInt(value) : 0;
-
-                       value = Math.max(0, Math.min(value, maxStars));
-
-                       for (var i = 1; i <= maxStars; i++) {
-                               var nextStar = star.cloneNode(true);
-                               nextStar.innerHTML = i <= value ? starActive : starInactive;
-
-                               stars.appendChild(nextStar);
-                       }
-
-                       element.style.whiteSpace = "nowrap";
-                       element.style.overflow = "hidden";
-                       element.style.textOverflow = "ellipsis";
-
-                       element.setAttribute("aria-label", value);
-
-                       return stars;
-               },
-
-               traffic: function traffic(cell, formatterParams, onRendered) {
-                       var value = this.sanitizeHTML(cell.getValue()) || 0,
-                           el = document.createElement("span"),
-                           max = formatterParams && formatterParams.max ? formatterParams.max : 100,
-                           min = formatterParams && formatterParams.min ? formatterParams.min : 0,
-                           colors = formatterParams && typeof formatterParams.color !== "undefined" ? formatterParams.color : ["red", "orange", "green"],
-                           color = "#666666",
-                           percent,
-                           percentValue;
-
-                       if (isNaN(value) || typeof cell.getValue() === "undefined") {
-                               return;
-                       }
-
-                       el.classList.add("tabulator-traffic-light");
-
-                       //make sure value is in range
-                       percentValue = parseFloat(value) <= max ? parseFloat(value) : max;
-                       percentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;
-
-                       //workout percentage
-                       percent = (max - min) / 100;
-                       percentValue = Math.round((percentValue - min) / percent);
-
-                       //set color
-                       switch (typeof colors === 'undefined' ? 'undefined' : _typeof(colors)) {
-                               case "string":
-                                       color = colors;
-                                       break;
-                               case "function":
-                                       color = colors(value);
-                                       break;
-                               case "object":
-                                       if (Array.isArray(colors)) {
-                                               var unit = 100 / colors.length;
-                                               var index = Math.floor(percentValue / unit);
-
-                                               index = Math.min(index, colors.length - 1);
-                                               index = Math.max(index, 0);
-                                               color = colors[index];
-                                               break;
-                                       }
-                       }
-
-                       el.style.backgroundColor = color;
-
-                       return el;
-               },
-
-               //progress bar
-               progress: function progress(cell, formatterParams, onRendered) {
-                       //progress bar
-                       var value = this.sanitizeHTML(cell.getValue()) || 0,
-                           element = cell.getElement(),
-                           max = formatterParams && formatterParams.max ? formatterParams.max : 100,
-                           min = formatterParams && formatterParams.min ? formatterParams.min : 0,
-                           legendAlign = formatterParams && formatterParams.legendAlign ? formatterParams.legendAlign : "center",
-                           percent,
-                           percentValue,
-                           color,
-                           legend,
-                           legendColor,
-                           top,
-                           left,
-                           right,
-                           bottom;
-
-                       //make sure value is in range
-                       percentValue = parseFloat(value) <= max ? parseFloat(value) : max;
-                       percentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;
-
-                       //workout percentage
-                       percent = (max - min) / 100;
-                       percentValue = Math.round((percentValue - min) / percent);
-
-                       //set bar color
-                       switch (_typeof(formatterParams.color)) {
-                               case "string":
-                                       color = formatterParams.color;
-                                       break;
-                               case "function":
-                                       color = formatterParams.color(value);
-                                       break;
-                               case "object":
-                                       if (Array.isArray(formatterParams.color)) {
-                                               var unit = 100 / formatterParams.color.length;
-                                               var index = Math.floor(percentValue / unit);
-
-                                               index = Math.min(index, formatterParams.color.length - 1);
-                                               index = Math.max(index, 0);
-                                               color = formatterParams.color[index];
-                                               break;
-                                       }
-                               default:
-                                       color = "#2DC214";
-                       }
-
-                       //generate legend
-                       switch (_typeof(formatterParams.legend)) {
-                               case "string":
-                                       legend = formatterParams.legend;
-                                       break;
-                               case "function":
-                                       legend = formatterParams.legend(value);
-                                       break;
-                               case "boolean":
-                                       legend = value;
-                                       break;
-                               default:
-                                       legend = false;
-                       }
-
-                       //set legend color
-                       switch (_typeof(formatterParams.legendColor)) {
-                               case "string":
-                                       legendColor = formatterParams.legendColor;
-                                       break;
-                               case "function":
-                                       legendColor = formatterParams.legendColor(value);
-                                       break;
-                               case "object":
-                                       if (Array.isArray(formatterParams.legendColor)) {
-                                               var unit = 100 / formatterParams.legendColor.length;
-                                               var index = Math.floor(percentValue / unit);
-
-                                               index = Math.min(index, formatterParams.legendColor.length - 1);
-                                               index = Math.max(index, 0);
-                                               legendColor = formatterParams.legendColor[index];
-                                       }
-                                       break;
-                               default:
-                                       legendColor = "#000";
-                       }
-
-                       element.style.minWidth = "30px";
-                       element.style.position = "relative";
-
-                       element.setAttribute("aria-label", percentValue);
-
-                       var barEl = document.createElement("div");
-                       barEl.style.display = "inline-block";
-                       barEl.style.position = "relative";
-                       barEl.style.width = percentValue + "%";
-                       barEl.style.backgroundColor = color;
-                       barEl.style.height = "100%";
-
-                       barEl.setAttribute('data-max', max);
-                       barEl.setAttribute('data-min', min);
-
-                       if (legend) {
-                               var legendEl = document.createElement("div");
-                               legendEl.style.position = "absolute";
-                               legendEl.style.top = "4px";
-                               legendEl.style.left = 0;
-                               legendEl.style.textAlign = legendAlign;
-                               legendEl.style.width = "100%";
-                               legendEl.style.color = legendColor;
-                               legendEl.innerHTML = legend;
-                       }
-
-                       onRendered(function () {
-
-                               //handle custom element needed if formatter is to be included in printed/downloaded output
-                               if (!(cell instanceof CellComponent)) {
-                                       var holderEl = document.createElement("div");
-                                       holderEl.style.position = "absolute";
-                                       holderEl.style.top = "4px";
-                                       holderEl.style.bottom = "4px";
-                                       holderEl.style.left = "4px";
-                                       holderEl.style.right = "4px";
-
-                                       element.appendChild(holderEl);
-
-                                       element = holderEl;
-                               }
-
-                               element.appendChild(barEl);
-
-                               if (legend) {
-                                       element.appendChild(legendEl);
-                               }
-                       });
-
-                       return "";
-               },
-
-               //background color
-               color: function color(cell, formatterParams, onRendered) {
-                       cell.getElement().style.backgroundColor = this.sanitizeHTML(cell.getValue());
-                       return "";
-               },
-
-               //tick icon
-               buttonTick: function buttonTick(cell, formatterParams, onRendered) {
-                       return '<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34  c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351  l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07  l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>';
-               },
-
-               //cross icon
-               buttonCross: function buttonCross(cell, formatterParams, onRendered) {
-                       return '<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272  c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0  l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269  c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73  L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>';
-               },
-
-               //current row number
-               rownum: function rownum(cell, formatterParams, onRendered) {
-                       return this.table.rowManager.activeRows.indexOf(cell.getRow()._getSelf()) + 1;
-               },
-
-               //row handle
-               handle: function handle(cell, formatterParams, onRendered) {
-                       cell.getElement().classList.add("tabulator-row-handle");
-                       return "<div class='tabulator-row-handle-box'><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div></div>";
-               },
-
-               responsiveCollapse: function responsiveCollapse(cell, formatterParams, onRendered) {
-                       var self = this,
-                           open = false,
-                           el = document.createElement("div"),
-                           config = cell.getRow()._row.modules.responsiveLayout;
-
-                       el.classList.add("tabulator-responsive-collapse-toggle");
-                       el.innerHTML = "<span class='tabulator-responsive-collapse-toggle-open'>+</span><span class='tabulator-responsive-collapse-toggle-close'>-</span>";
-
-                       cell.getElement().classList.add("tabulator-row-handle");
-
-                       function toggleList(isOpen) {
-                               var collapseEl = config.element;
-
-                               config.open = isOpen;
-
-                               if (collapseEl) {
-
-                                       if (config.open) {
-                                               el.classList.add("open");
-                                               collapseEl.style.display = '';
-                                       } else {
-                                               el.classList.remove("open");
-                                               collapseEl.style.display = 'none';
-                                       }
-                               }
-                       }
-
-                       el.addEventListener("click", function (e) {
-                               e.stopImmediatePropagation();
-                               toggleList(!config.open);
-                       });
-
-                       toggleList(config.open);
-
-                       return el;
-               },
-
-               rowSelection: function rowSelection(cell) {
-                       var _this52 = this;
-
-                       var checkbox = document.createElement("input");
-
-                       checkbox.type = 'checkbox';
-
-                       if (this.table.modExists("selectRow", true)) {
-
-                               checkbox.addEventListener("click", function (e) {
-                                       e.stopPropagation();
-                               });
-
-                               if (typeof cell.getRow == 'function') {
-                                       var row = cell.getRow();
-
-                                       checkbox.addEventListener("change", function (e) {
-                                               row.toggleSelect();
-                                       });
-
-                                       checkbox.checked = row.isSelected();
-                                       this.table.modules.selectRow.registerRowSelectCheckbox(row, checkbox);
-                               } else {
-                                       checkbox.addEventListener("change", function (e) {
-                                               if (_this52.table.modules.selectRow.selectedRows.length) {
-                                                       _this52.table.deselectRow();
-                                               } else {
-                                                       _this52.table.selectRow();
-                                               }
-                                       });
-
-                                       this.table.modules.selectRow.registerHeaderSelectCheckbox(checkbox);
-                               }
-                       }
-                       return checkbox;
-               }
-       };
-
-       Tabulator.prototype.registerModule("format", Format);
-
-       var FrozenColumns = function FrozenColumns(table) {
-               this.table = table; //hold Tabulator object
-               this.leftColumns = [];
-               this.rightColumns = [];
-               this.leftMargin = 0;
-               this.rightMargin = 0;
-               this.rightPadding = 0;
-               this.initializationMode = "left";
-               this.active = false;
-               this.scrollEndTimer = false;
-       };
-
-       //reset initial state
-       FrozenColumns.prototype.reset = function () {
-               this.initializationMode = "left";
-               this.leftColumns = [];
-               this.rightColumns = [];
-               this.leftMargin = 0;
-               this.rightMargin = 0;
-               this.rightMargin = 0;
-               this.active = false;
-
-               this.table.columnManager.headersElement.style.marginLeft = 0;
-               this.table.columnManager.element.style.paddingRight = 0;
-       };
-
-       //initialize specific column
-       FrozenColumns.prototype.initializeColumn = function (column) {
-               var config = { margin: 0, edge: false };
-
-               if (!column.isGroup) {
-
-                       if (this.frozenCheck(column)) {
-
-                               config.position = this.initializationMode;
-
-                               if (this.initializationMode == "left") {
-                                       this.leftColumns.push(column);
-                               } else {
-                                       this.rightColumns.unshift(column);
-                               }
-
-                               this.active = true;
-
-                               column.modules.frozen = config;
-                       } else {
-                               this.initializationMode = "right";
-                       }
-               }
-       };
-
-       FrozenColumns.prototype.frozenCheck = function (column) {
-               var frozen = false;
-
-               if (column.parent.isGroup && column.definition.frozen) {
-                       console.warn("Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups");
-               }
-
-               if (column.parent.isGroup) {
-                       return this.frozenCheck(column.parent);
-               } else {
-                       return column.definition.frozen;
-               }
-
-               return frozen;
-       };
-
-       //quick layout to smooth horizontal scrolling
-       FrozenColumns.prototype.scrollHorizontal = function () {
-               var _this53 = this;
-
-               var rows;
-
-               if (this.active) {
-                       clearTimeout(this.scrollEndTimer);
-
-                       //layout all rows after scroll is complete
-                       this.scrollEndTimer = setTimeout(function () {
-                               _this53.layout();
-                       }, 100);
-
-                       rows = this.table.rowManager.getVisibleRows();
-
-                       this.calcMargins();
-
-                       this.layoutColumnPosition();
-
-                       this.layoutCalcRows();
-
-                       rows.forEach(function (row) {
-                               if (row.type === "row") {
-                                       _this53.layoutRow(row);
-                               }
-                       });
-
-                       this.table.rowManager.tableElement.style.marginRight = this.rightMargin;
-               }
-       };
-
-       //calculate margins for rows
-       FrozenColumns.prototype.calcMargins = function () {
-               this.leftMargin = this._calcSpace(this.leftColumns, this.leftColumns.length) + "px";
-               this.table.columnManager.headersElement.style.marginLeft = this.leftMargin;
-
-               this.rightMargin = this._calcSpace(this.rightColumns, this.rightColumns.length) + "px";
-               this.table.columnManager.element.style.paddingRight = this.rightMargin;
-
-               //calculate right frozen columns
-               this.rightPadding = this.table.rowManager.element.clientWidth + this.table.columnManager.scrollLeft;
-       };
-
-       //layout calculation rows
-       FrozenColumns.prototype.layoutCalcRows = function () {
-               if (this.table.modExists("columnCalcs")) {
-                       if (this.table.modules.columnCalcs.topInitialized && this.table.modules.columnCalcs.topRow) {
-                               this.layoutRow(this.table.modules.columnCalcs.topRow);
-                       }
-                       if (this.table.modules.columnCalcs.botInitialized && this.table.modules.columnCalcs.botRow) {
-                               this.layoutRow(this.table.modules.columnCalcs.botRow);
-                       }
-               }
-       };
-
-       //calculate column positions and layout headers
-       FrozenColumns.prototype.layoutColumnPosition = function (allCells) {
-               var _this54 = this;
-
-               var leftParents = [];
-
-               this.leftColumns.forEach(function (column, i) {
-                       column.modules.frozen.margin = _this54._calcSpace(_this54.leftColumns, i) + _this54.table.columnManager.scrollLeft + "px";
-
-                       if (i == _this54.leftColumns.length - 1) {
-                               column.modules.frozen.edge = true;
-                       } else {
-                               column.modules.frozen.edge = false;
-                       }
-
-                       if (column.parent.isGroup) {
-                               var parentEl = _this54.getColGroupParentElement(column);
-                               if (!leftParents.includes(parentEl)) {
-                                       _this54.layoutElement(parentEl, column);
-                                       leftParents.push(parentEl);
-                               }
-
-                               if (column.modules.frozen.edge) {
-                                       parentEl.classList.add("tabulator-frozen-" + column.modules.frozen.position);
-                               }
-                       } else {
-                               _this54.layoutElement(column.getElement(), column);
-                       }
-
-                       if (allCells) {
-                               column.cells.forEach(function (cell) {
-                                       _this54.layoutElement(cell.getElement(), column);
-                               });
-                       }
-               });
-
-               this.rightColumns.forEach(function (column, i) {
-                       column.modules.frozen.margin = _this54.rightPadding - _this54._calcSpace(_this54.rightColumns, i + 1) + "px";
-
-                       if (i == _this54.rightColumns.length - 1) {
-                               column.modules.frozen.edge = true;
-                       } else {
-                               column.modules.frozen.edge = false;
-                       }
-
-                       if (column.parent.isGroup) {
-                               _this54.layoutElement(_this54.getColGroupParentElement(column), column);
-                       } else {
-                               _this54.layoutElement(column.getElement(), column);
-                       }
-
-                       if (allCells) {
-                               column.cells.forEach(function (cell) {
-                                       _this54.layoutElement(cell.getElement(), column);
-                               });
-                       }
-               });
-       };
-
-       FrozenColumns.prototype.getColGroupParentElement = function (column) {
-               return column.parent.isGroup ? this.getColGroupParentElement(column.parent) : column.getElement();
-       };
-
-       //layout columns appropropriatly
-       FrozenColumns.prototype.layout = function () {
-               var self = this,
-                   rightMargin = 0;
-
-               if (self.active) {
-
-                       //calculate row padding
-                       this.calcMargins();
-
-                       // self.table.rowManager.activeRows.forEach(function(row){
-                       //      self.layoutRow(row);
-                       // });
-
-                       // if(self.table.options.dataTree){
-                       self.table.rowManager.getDisplayRows().forEach(function (row) {
-                               if (row.type === "row") {
-                                       self.layoutRow(row);
-                               }
-                       });
-                       // }
-
-                       this.layoutCalcRows();
-
-                       //calculate left columns
-                       this.layoutColumnPosition(true);
-
-                       // if(tableHolder.scrollHeight > tableHolder.clientHeight){
-                       //      rightMargin -= tableHolder.offsetWidth - tableHolder.clientWidth;
-                       // }
-
-                       this.table.rowManager.tableElement.style.marginRight = this.rightMargin;
-               }
-       };
-
-       FrozenColumns.prototype.layoutRow = function (row) {
-               var _this55 = this;
-
-               var rowEl = row.getElement();
-
-               rowEl.style.paddingLeft = this.leftMargin;
-               // rowEl.style.paddingRight = this.rightMargin + "px";
-
-               this.leftColumns.forEach(function (column) {
-                       var cell = row.getCell(column);
-
-                       if (cell) {
-                               _this55.layoutElement(cell.getElement(), column);
-                       }
-               });
-
-               this.rightColumns.forEach(function (column) {
-                       var cell = row.getCell(column);
-
-                       if (cell) {
-                               _this55.layoutElement(cell.getElement(), column);
-                       }
-               });
-       };
-
-       FrozenColumns.prototype.layoutElement = function (element, column) {
-
-               if (column.modules.frozen) {
-                       element.style.position = "absolute";
-                       element.style.left = column.modules.frozen.margin;
-
-                       element.classList.add("tabulator-frozen");
-
-                       if (column.modules.frozen.edge) {
-                               element.classList.add("tabulator-frozen-" + column.modules.frozen.position);
-                       }
-               }
-       };
-
-       FrozenColumns.prototype._calcSpace = function (columns, index) {
-               var width = 0;
-
-               for (var i = 0; i < index; i++) {
-                       if (columns[i].visible) {
-                               width += columns[i].getWidth();
-                       }
-               }
-
-               return width;
-       };
-
-       Tabulator.prototype.registerModule("frozenColumns", FrozenColumns);
-       var FrozenRows = function FrozenRows(table) {
-               this.table = table; //hold Tabulator object
-               this.topElement = document.createElement("div");
-               this.rows = [];
-               this.displayIndex = 0; //index in display pipeline
-       };
-
-       FrozenRows.prototype.initialize = function () {
-               this.rows = [];
-
-               this.topElement.classList.add("tabulator-frozen-rows-holder");
-
-               // this.table.columnManager.element.append(this.topElement);
-               this.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);
-       };
-
-       FrozenRows.prototype.setDisplayIndex = function (index) {
-               this.displayIndex = index;
-       };
-
-       FrozenRows.prototype.getDisplayIndex = function () {
-               return this.displayIndex;
-       };
-
-       FrozenRows.prototype.isFrozen = function () {
-               return !!this.rows.length;
-       };
-
-       //filter frozen rows out of display data
-       FrozenRows.prototype.getRows = function (rows) {
-               var self = this,
-                   frozen = [],
-                   output = rows.slice(0);
-
-               this.rows.forEach(function (row) {
-                       var index = output.indexOf(row);
-
-                       if (index > -1) {
-                               output.splice(index, 1);
-                       }
-               });
-
-               return output;
-       };
-
-       FrozenRows.prototype.freezeRow = function (row) {
-               if (!row.modules.frozen) {
-                       row.modules.frozen = true;
-                       this.topElement.appendChild(row.getElement());
-                       row.initialize();
-                       row.normalizeHeight();
-                       this.table.rowManager.adjustTableSize();
-
-                       this.rows.push(row);
-
-                       this.table.rowManager.refreshActiveData("display");
-
-                       this.styleRows();
-               } else {
-                       console.warn("Freeze Error - Row is already frozen");
-               }
-       };
-
-       FrozenRows.prototype.unfreezeRow = function (row) {
-               var index = this.rows.indexOf(row);
-
-               if (row.modules.frozen) {
-
-                       row.modules.frozen = false;
-
-                       var rowEl = row.getElement();
-                       rowEl.parentNode.removeChild(rowEl);
-
-                       this.table.rowManager.adjustTableSize();
-
-                       this.rows.splice(index, 1);
-
-                       this.table.rowManager.refreshActiveData("display");
-
-                       if (this.rows.length) {
-                               this.styleRows();
-                       }
-               } else {
-                       console.warn("Freeze Error - Row is already unfrozen");
-               }
-       };
-
-       FrozenRows.prototype.styleRows = function (row) {
-               var self = this;
-
-               this.rows.forEach(function (row, i) {
-                       self.table.rowManager.styleRow(row, i);
-               });
-       };
-
-       Tabulator.prototype.registerModule("frozenRows", FrozenRows);
-
-       //public group object
-       var GroupComponent = function GroupComponent(group) {
-               this._group = group;
-               this.type = "GroupComponent";
-       };
-
-       GroupComponent.prototype.getKey = function () {
-               return this._group.key;
-       };
-
-       GroupComponent.prototype.getField = function () {
-               return this._group.field;
-       };
-
-       GroupComponent.prototype.getElement = function () {
-               return this._group.element;
-       };
-
-       GroupComponent.prototype.getRows = function () {
-               return this._group.getRows(true);
-       };
-
-       GroupComponent.prototype.getSubGroups = function () {
-               return this._group.getSubGroups(true);
-       };
-
-       GroupComponent.prototype.getParentGroup = function () {
-               return this._group.parent ? this._group.parent.getComponent() : false;
-       };
-
-       GroupComponent.prototype.getVisibility = function () {
-               return this._group.visible;
-       };
-
-       GroupComponent.prototype.show = function () {
-               this._group.show();
-       };
-
-       GroupComponent.prototype.hide = function () {
-               this._group.hide();
-       };
-
-       GroupComponent.prototype.toggle = function () {
-               this._group.toggleVisibility();
-       };
-
-       GroupComponent.prototype._getSelf = function () {
-               return this._group;
-       };
-
-       GroupComponent.prototype.getTable = function () {
-               return this._group.groupManager.table;
-       };
-
-       //////////////////////////////////////////////////
-       //////////////// Group Functions /////////////////
-       //////////////////////////////////////////////////
-
-       var Group = function Group(groupManager, parent, level, key, field, generator, oldGroup) {
-
-               this.groupManager = groupManager;
-               this.parent = parent;
-               this.key = key;
-               this.level = level;
-               this.field = field;
-               this.hasSubGroups = level < groupManager.groupIDLookups.length - 1;
-               this.addRow = this.hasSubGroups ? this._addRowToGroup : this._addRow;
-               this.type = "group"; //type of element
-               this.old = oldGroup;
-               this.rows = [];
-               this.groups = [];
-               this.groupList = [];
-               this.generator = generator;
-               this.elementContents = false;
-               this.height = 0;
-               this.outerHeight = 0;
-               this.initialized = false;
-               this.calcs = {};
-               this.initialized = false;
-               this.modules = {};
-               this.arrowElement = false;
-
-               this.visible = oldGroup ? oldGroup.visible : typeof groupManager.startOpen[level] !== "undefined" ? groupManager.startOpen[level] : groupManager.startOpen[0];
-
-               this.createElements();
-               this.addBindings();
-
-               this.createValueGroups();
-       };
-
-       Group.prototype.wipe = function () {
-               if (this.groupList.length) {
-                       this.groupList.forEach(function (group) {
-                               group.wipe();
-                       });
-               } else {
-                       this.element = false;
-                       this.arrowElement = false;
-                       this.elementContents = false;
-               }
-       };
-
-       Group.prototype.createElements = function () {
-               var arrow = document.createElement("div");
-               arrow.classList.add("tabulator-arrow");
-
-               this.element = document.createElement("div");
-               this.element.classList.add("tabulator-row");
-               this.element.classList.add("tabulator-group");
-               this.element.classList.add("tabulator-group-level-" + this.level);
-               this.element.setAttribute("role", "rowgroup");
-
-               this.arrowElement = document.createElement("div");
-               this.arrowElement.classList.add("tabulator-group-toggle");
-               this.arrowElement.appendChild(arrow);
-
-               //setup movable rows
-               if (this.groupManager.table.options.movableRows !== false && this.groupManager.table.modExists("moveRow")) {
-                       this.groupManager.table.modules.moveRow.initializeGroupHeader(this);
-               }
-       };
-
-       Group.prototype.createValueGroups = function () {
-               var _this56 = this;
-
-               var level = this.level + 1;
-               if (this.groupManager.allowedValues && this.groupManager.allowedValues[level]) {
-                       this.groupManager.allowedValues[level].forEach(function (value) {
-                               _this56._createGroup(value, level);
-                       });
-               }
-       };
-
-       Group.prototype.addBindings = function () {
-               var self = this,
-                   dblTap,
-                   tapHold,
-                   tap,
-                   toggleElement;
-
-               //handle group click events
-               if (self.groupManager.table.options.groupClick) {
-                       self.element.addEventListener("click", function (e) {
-                               self.groupManager.table.options.groupClick.call(self.groupManager.table, e, self.getComponent());
-                       });
-               }
-
-               if (self.groupManager.table.options.groupDblClick) {
-                       self.element.addEventListener("dblclick", function (e) {
-                               self.groupManager.table.options.groupDblClick.call(self.groupManager.table, e, self.getComponent());
-                       });
-               }
-
-               if (self.groupManager.table.options.groupContext) {
-                       self.element.addEventListener("contextmenu", function (e) {
-                               self.groupManager.table.options.groupContext.call(self.groupManager.table, e, self.getComponent());
-                       });
-               }
-
-               if (self.groupManager.table.options.groupTap) {
-
-                       tap = false;
-
-                       self.element.addEventListener("touchstart", function (e) {
-                               tap = true;
-                       }, { passive: true });
-
-                       self.element.addEventListener("touchend", function (e) {
-                               if (tap) {
-                                       self.groupManager.table.options.groupTap(e, self.getComponent());
-                               }
-
-                               tap = false;
-                       });
-               }
-
-               if (self.groupManager.table.options.groupDblTap) {
-
-                       dblTap = null;
-
-                       self.element.addEventListener("touchend", function (e) {
-
-                               if (dblTap) {
-                                       clearTimeout(dblTap);
-                                       dblTap = null;
-
-                                       self.groupManager.table.options.groupDblTap(e, self.getComponent());
-                               } else {
-
-                                       dblTap = setTimeout(function () {
-                                               clearTimeout(dblTap);
-                                               dblTap = null;
-                                       }, 300);
-                               }
-                       });
-               }
-
-               if (self.groupManager.table.options.groupTapHold) {
-
-                       tapHold = null;
-
-                       self.element.addEventListener("touchstart", function (e) {
-                               clearTimeout(tapHold);
-
-                               tapHold = setTimeout(function () {
-                                       clearTimeout(tapHold);
-                                       tapHold = null;
-                                       tap = false;
-                                       self.groupManager.table.options.groupTapHold(e, self.getComponent());
-                               }, 1000);
-                       }, { passive: true });
-
-                       self.element.addEventListener("touchend", function (e) {
-                               clearTimeout(tapHold);
-                               tapHold = null;
-                       });
-               }
-
-               if (self.groupManager.table.options.groupToggleElement) {
-                       toggleElement = self.groupManager.table.options.groupToggleElement == "arrow" ? self.arrowElement : self.element;
-
-                       toggleElement.addEventListener("click", function (e) {
-                               e.stopPropagation();
-                               e.stopImmediatePropagation();
-                               self.toggleVisibility();
-                       });
-               }
-       };
-
-       Group.prototype._createGroup = function (groupID, level) {
-               var groupKey = level + "_" + groupID;
-               var group = new Group(this.groupManager, this, level, groupID, this.groupManager.groupIDLookups[level].field, this.groupManager.headerGenerator[level] || this.groupManager.headerGenerator[0], this.old ? this.old.groups[groupKey] : false);
-
-               this.groups[groupKey] = group;
-               this.groupList.push(group);
-       };
-
-       Group.prototype._addRowToGroup = function (row) {
-
-               var level = this.level + 1;
-
-               if (this.hasSubGroups) {
-                       var groupID = this.groupManager.groupIDLookups[level].func(row.getData()),
-                           groupKey = level + "_" + groupID;
-
-                       if (this.groupManager.allowedValues && this.groupManager.allowedValues[level]) {
-                               if (this.groups[groupKey]) {
-                                       this.groups[groupKey].addRow(row);
-                               }
-                       } else {
-                               if (!this.groups[groupKey]) {
-                                       this._createGroup(groupID, level);
-                               }
-
-                               this.groups[groupKey].addRow(row);
-                       }
-               }
-       };
-
-       Group.prototype._addRow = function (row) {
-               this.rows.push(row);
-               row.modules.group = this;
-       };
-
-       Group.prototype.insertRow = function (row, to, after) {
-               var data = this.conformRowData({});
-
-               row.updateData(data);
-
-               var toIndex = this.rows.indexOf(to);
-
-               if (toIndex > -1) {
-                       if (after) {
-                               this.rows.splice(toIndex + 1, 0, row);
-                       } else {
-                               this.rows.splice(toIndex, 0, row);
-                       }
-               } else {
-                       if (after) {
-                               this.rows.push(row);
-                       } else {
-                               this.rows.unshift(row);
-                       }
-               }
-
-               row.modules.group = this;
-
-               this.generateGroupHeaderContents();
-
-               if (this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.options.columnCalcs != "table") {
-                       this.groupManager.table.modules.columnCalcs.recalcGroup(this);
-               }
-
-               this.groupManager.updateGroupRows(true);
-       };
-
-       Group.prototype.scrollHeader = function (left) {
-               this.arrowElement.style.marginLeft = left;
-
-               this.groupList.forEach(function (child) {
-                       child.scrollHeader(left);
-               });
-       };
-
-       Group.prototype.getRowIndex = function (row) {};
-
-       //update row data to match grouping contraints
-       Group.prototype.conformRowData = function (data) {
-               if (this.field) {
-                       data[this.field] = this.key;
-               } else {
-                       console.warn("Data Conforming Error - Cannot conform row data to match new group as groupBy is a function");
-               }
-
-               if (this.parent) {
-                       data = this.parent.conformRowData(data);
-               }
-
-               return data;
-       };
-
-       Group.prototype.removeRow = function (row) {
-               var index = this.rows.indexOf(row);
-               var el = row.getElement();
-
-               if (index > -1) {
-                       this.rows.splice(index, 1);
-               }
-
-               if (!this.groupManager.table.options.groupValues && !this.rows.length) {
-                       if (this.parent) {
-                               this.parent.removeGroup(this);
-                       } else {
-                               this.groupManager.removeGroup(this);
-                       }
-
-                       this.groupManager.updateGroupRows(true);
-               } else {
-
-                       if (el.parentNode) {
-                               el.parentNode.removeChild(el);
-                       }
-
-                       this.generateGroupHeaderContents();
-
-                       if (this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.options.columnCalcs != "table") {
-                               this.groupManager.table.modules.columnCalcs.recalcGroup(this);
-                       }
-               }
-       };
-
-       Group.prototype.removeGroup = function (group) {
-               var groupKey = group.level + "_" + group.key,
-                   index;
-
-               if (this.groups[groupKey]) {
-                       delete this.groups[groupKey];
-
-                       index = this.groupList.indexOf(group);
-
-                       if (index > -1) {
-                               this.groupList.splice(index, 1);
-                       }
-
-                       if (!this.groupList.length) {
-                               if (this.parent) {
-                                       this.parent.removeGroup(this);
-                               } else {
-                                       this.groupManager.removeGroup(this);
-                               }
-                       }
-               }
-       };
-
-       Group.prototype.getHeadersAndRows = function (noCalc) {
-               var output = [];
-
-               output.push(this);
-
-               this._visSet();
-
-               if (this.visible) {
-                       if (this.groupList.length) {
-                               this.groupList.forEach(function (group) {
-                                       output = output.concat(group.getHeadersAndRows(noCalc));
-                               });
-                       } else {
-                               if (!noCalc && this.groupManager.table.options.columnCalcs != "table" && this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.modules.columnCalcs.hasTopCalcs()) {
-                                       if (this.calcs.top) {
-                                               this.calcs.top.detachElement();
-                                               this.calcs.top.deleteCells();
-                                       }
-
-                                       this.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);
-                                       output.push(this.calcs.top);
-                               }
-
-                               output = output.concat(this.rows);
-
-                               if (!noCalc && this.groupManager.table.options.columnCalcs != "table" && this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()) {
-                                       if (this.calcs.bottom) {
-                                               this.calcs.bottom.detachElement();
-                                               this.calcs.bottom.deleteCells();
-                                       }
-
-                                       this.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);
-                                       output.push(this.calcs.bottom);
-                               }
-                       }
-               } else {
-                       if (!this.groupList.length && this.groupManager.table.options.columnCalcs != "table") {
-
-                               if (this.groupManager.table.modExists("columnCalcs")) {
-
-                                       if (!noCalc && this.groupManager.table.modules.columnCalcs.hasTopCalcs()) {
-                                               if (this.calcs.top) {
-                                                       this.calcs.top.detachElement();
-                                                       this.calcs.top.deleteCells();
-                                               }
-
-                                               if (this.groupManager.table.options.groupClosedShowCalcs) {
-                                                       this.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);
-                                                       output.push(this.calcs.top);
-                                               }
-                                       }
-
-                                       if (!noCalc && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()) {
-                                               if (this.calcs.bottom) {
-                                                       this.calcs.bottom.detachElement();
-                                                       this.calcs.bottom.deleteCells();
-                                               }
-
-                                               if (this.groupManager.table.options.groupClosedShowCalcs) {
-                                                       this.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);
-                                                       output.push(this.calcs.bottom);
-                                               }
-                                       }
-                               }
-                       }
-               }
-
-               return output;
-       };
-
-       Group.prototype.getData = function (visible, transform) {
-               var self = this,
-                   output = [];
-
-               this._visSet();
-
-               if (!visible || visible && this.visible) {
-                       this.rows.forEach(function (row) {
-                               output.push(row.getData(transform || "data"));
-                       });
-               }
-
-               return output;
-       };
-
-       // Group.prototype.getRows = function(){
-       //      this._visSet();
-
-       //      return this.visible ? this.rows : [];
-       // };
-
-       Group.prototype.getRowCount = function () {
-               var count = 0;
-
-               if (this.groupList.length) {
-                       this.groupList.forEach(function (group) {
-                               count += group.getRowCount();
-                       });
-               } else {
-                       count = this.rows.length;
-               }
-               return count;
-       };
-
-       Group.prototype.toggleVisibility = function () {
-               if (this.visible) {
-                       this.hide();
-               } else {
-                       this.show();
-               }
-       };
-
-       Group.prototype.hide = function () {
-               this.visible = false;
-
-               if (this.groupManager.table.rowManager.getRenderMode() == "classic" && !this.groupManager.table.options.pagination) {
-
-                       this.element.classList.remove("tabulator-group-visible");
-
-                       if (this.groupList.length) {
-                               this.groupList.forEach(function (group) {
-
-                                       var rows = group.getHeadersAndRows();
-
-                                       rows.forEach(function (row) {
-                                               row.detachElement();
-                                       });
-                               });
-                       } else {
-                               this.rows.forEach(function (row) {
-                                       var rowEl = row.getElement();
-                                       rowEl.parentNode.removeChild(rowEl);
-                               });
-                       }
-
-                       this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());
-
-                       this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();
-               } else {
-                       this.groupManager.updateGroupRows(true);
-               }
-
-               this.groupManager.table.options.groupVisibilityChanged.call(this.table, this.getComponent(), false);
-       };
-
-       Group.prototype.show = function () {
-               var self = this;
-
-               self.visible = true;
-
-               if (this.groupManager.table.rowManager.getRenderMode() == "classic" && !this.groupManager.table.options.pagination) {
-
-                       this.element.classList.add("tabulator-group-visible");
-
-                       var prev = self.getElement();
-
-                       if (this.groupList.length) {
-                               this.groupList.forEach(function (group) {
-                                       var rows = group.getHeadersAndRows();
-
-                                       rows.forEach(function (row) {
-                                               var rowEl = row.getElement();
-                                               prev.parentNode.insertBefore(rowEl, prev.nextSibling);
-                                               row.initialize();
-                                               prev = rowEl;
-                                       });
-                               });
-                       } else {
-                               self.rows.forEach(function (row) {
-                                       var rowEl = row.getElement();
-                                       prev.parentNode.insertBefore(rowEl, prev.nextSibling);
-                                       row.initialize();
-                                       prev = rowEl;
-                               });
-                       }
-
-                       this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());
-
-                       this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();
-               } else {
-                       this.groupManager.updateGroupRows(true);
-               }
-
-               this.groupManager.table.options.groupVisibilityChanged.call(this.table, this.getComponent(), true);
-       };
-
-       Group.prototype._visSet = function () {
-               var data = [];
-
-               if (typeof this.visible == "function") {
-
-                       this.rows.forEach(function (row) {
-                               data.push(row.getData());
-                       });
-
-                       this.visible = this.visible(this.key, this.getRowCount(), data, this.getComponent());
-               }
-       };
-
-       Group.prototype.getRowGroup = function (row) {
-               var match = false;
-               if (this.groupList.length) {
-                       this.groupList.forEach(function (group) {
-                               var result = group.getRowGroup(row);
-
-                               if (result) {
-                                       match = result;
-                               }
-                       });
-               } else {
-                       if (this.rows.find(function (item) {
-                               return item === row;
-                       })) {
-                               match = this;
-                       }
-               }
-
-               return match;
-       };
-
-       Group.prototype.getSubGroups = function (component) {
-               var output = [];
-
-               this.groupList.forEach(function (child) {
-                       output.push(component ? child.getComponent() : child);
-               });
-
-               return output;
-       };
-
-       Group.prototype.getRows = function (compoment) {
-               var output = [];
-
-               this.rows.forEach(function (row) {
-                       output.push(compoment ? row.getComponent() : row);
-               });
-
-               return output;
-       };
-
-       Group.prototype.generateGroupHeaderContents = function () {
-               var data = [];
-
-               this.rows.forEach(function (row) {
-                       data.push(row.getData());
-               });
-
-               this.elementContents = this.generator(this.key, this.getRowCount(), data, this.getComponent());
-
-               while (this.element.firstChild) {
-                       this.element.removeChild(this.element.firstChild);
-               }if (typeof this.elementContents === "string") {
-                       this.element.innerHTML = this.elementContents;
-               } else {
-                       this.element.appendChild(this.elementContents);
-               }
-
-               this.element.insertBefore(this.arrowElement, this.element.firstChild);
-       };
-
-       ////////////// Standard Row Functions //////////////
-
-       Group.prototype.getElement = function () {
-               this.addBindingsd = false;
-
-               this._visSet();
-
-               if (this.visible) {
-                       this.element.classList.add("tabulator-group-visible");
-               } else {
-                       this.element.classList.remove("tabulator-group-visible");
-               }
-
-               for (var i = 0; i < this.element.childNodes.length; ++i) {
-                       this.element.childNodes[i].parentNode.removeChild(this.element.childNodes[i]);
-               }
-
-               this.generateGroupHeaderContents();
-
-               // this.addBindings();
-
-               return this.element;
-       };
-
-       Group.prototype.detachElement = function () {
-               if (this.element && this.element.parentNode) {
-                       this.element.parentNode.removeChild(this.element);
-               }
-       };
-
-       //normalize the height of elements in the row
-       Group.prototype.normalizeHeight = function () {
-               this.setHeight(this.element.clientHeight);
-       };
-
-       Group.prototype.initialize = function (force) {
-               if (!this.initialized || force) {
-                       this.normalizeHeight();
-                       this.initialized = true;
-               }
-       };
-
-       Group.prototype.reinitialize = function () {
-               this.initialized = false;
-               this.height = 0;
-
-               if (Tabulator.prototype.helpers.elVisible(this.element)) {
-                       this.initialize(true);
-               }
-       };
-
-       Group.prototype.setHeight = function (height) {
-               if (this.height != height) {
-                       this.height = height;
-                       this.outerHeight = this.element.offsetHeight;
-               }
-       };
-
-       //return rows outer height
-       Group.prototype.getHeight = function () {
-               return this.outerHeight;
-       };
-
-       Group.prototype.getGroup = function () {
-               return this;
-       };
-
-       Group.prototype.reinitializeHeight = function () {};
-       Group.prototype.calcHeight = function () {};
-       Group.prototype.setCellHeight = function () {};
-       Group.prototype.clearCellHeight = function () {};
-
-       //////////////// Object Generation /////////////////
-       Group.prototype.getComponent = function () {
-               return new GroupComponent(this);
-       };
-
-       //////////////////////////////////////////////////
-       ////////////// Group Row Extension ///////////////
-       //////////////////////////////////////////////////
-
-       var GroupRows = function GroupRows(table) {
-
-               this.table = table; //hold Tabulator object
-
-               this.groupIDLookups = false; //enable table grouping and set field to group by
-               this.startOpen = [function () {
-                       return false;
-               }]; //starting state of group
-               this.headerGenerator = [function () {
-                       return "";
-               }];
-               this.groupList = []; //ordered list of groups
-               this.allowedValues = false;
-               this.groups = {}; //hold row groups
-               this.displayIndex = 0; //index in display pipeline
-       };
-
-       //initialize group configuration
-       GroupRows.prototype.initialize = function () {
-               var self = this,
-                   groupBy = self.table.options.groupBy,
-                   startOpen = self.table.options.groupStartOpen,
-                   groupHeader = self.table.options.groupHeader;
-
-               this.allowedValues = self.table.options.groupValues;
-
-               if (Array.isArray(groupBy) && Array.isArray(groupHeader) && groupBy.length > groupHeader.length) {
-                       console.warn("Error creating group headers, groupHeader array is shorter than groupBy array");
-               }
-
-               self.headerGenerator = [function () {
-                       return "";
-               }];
-               this.startOpen = [function () {
-                       return false;
-               }]; //starting state of group
-
-               self.table.modules.localize.bind("groups|item", function (langValue, lang) {
-                       self.headerGenerator[0] = function (value, count, data) {
-                               //header layout function
-                               return (typeof value === "undefined" ? "" : value) + "<span>(" + count + " " + (count === 1 ? langValue : lang.groups.items) + ")</span>";
-                       };
-               });
-
-               this.groupIDLookups = [];
-
-               if (Array.isArray(groupBy) || groupBy) {
-                       if (this.table.modExists("columnCalcs") && this.table.options.columnCalcs != "table" && this.table.options.columnCalcs != "both") {
-                               this.table.modules.columnCalcs.removeCalcs();
-                       }
-               } else {
-                       if (this.table.modExists("columnCalcs") && this.table.options.columnCalcs != "group") {
-
-                               var cols = this.table.columnManager.getRealColumns();
-
-                               cols.forEach(function (col) {
-                                       if (col.definition.topCalc) {
-                                               self.table.modules.columnCalcs.initializeTopRow();
-                                       }
-
-                                       if (col.definition.bottomCalc) {
-                                               self.table.modules.columnCalcs.initializeBottomRow();
-                                       }
-                               });
-                       }
-               }
-
-               if (!Array.isArray(groupBy)) {
-                       groupBy = [groupBy];
-               }
-
-               groupBy.forEach(function (group, i) {
-                       var lookupFunc, column;
-
-                       if (typeof group == "function") {
-                               lookupFunc = group;
-                       } else {
-                               column = self.table.columnManager.getColumnByField(group);
-
-                               if (column) {
-                                       lookupFunc = function lookupFunc(data) {
-                                               return column.getFieldValue(data);
-                                       };
-                               } else {
-                                       lookupFunc = function lookupFunc(data) {
-                                               return data[group];
-                                       };
-                               }
-                       }
-
-                       self.groupIDLookups.push({
-                               field: typeof group === "function" ? false : group,
-                               func: lookupFunc,
-                               values: self.allowedValues ? self.allowedValues[i] : false
-                       });
-               });
-
-               if (startOpen) {
-
-                       if (!Array.isArray(startOpen)) {
-                               startOpen = [startOpen];
-                       }
-
-                       startOpen.forEach(function (level) {
-                               level = typeof level == "function" ? level : function () {
-                                       return true;
-                               };
-                       });
-
-                       self.startOpen = startOpen;
-               }
-
-               if (groupHeader) {
-                       self.headerGenerator = Array.isArray(groupHeader) ? groupHeader : [groupHeader];
-               }
-
-               this.initialized = true;
-       };
-
-       GroupRows.prototype.setDisplayIndex = function (index) {
-               this.displayIndex = index;
-       };
-
-       GroupRows.prototype.getDisplayIndex = function () {
-               return this.displayIndex;
-       };
-
-       //return appropriate rows with group headers
-       GroupRows.prototype.getRows = function (rows) {
-               if (this.groupIDLookups.length) {
-
-                       this.table.options.dataGrouping.call(this.table);
-
-                       this.generateGroups(rows);
-
-                       if (this.table.options.dataGrouped) {
-                               this.table.options.dataGrouped.call(this.table, this.getGroups(true));
-                       }
-
-                       return this.updateGroupRows();
-               } else {
-                       return rows.slice(0);
-               }
-       };
-
-       GroupRows.prototype.getGroups = function (compoment) {
-               var groupComponents = [];
-
-               this.groupList.forEach(function (group) {
-                       groupComponents.push(compoment ? group.getComponent() : group);
-               });
-
-               return groupComponents;
-       };
-
-       GroupRows.prototype.getChildGroups = function (group) {
-               var _this57 = this;
-
-               var groupComponents = [];
-
-               if (!group) {
-                       group = this;
-               }
-
-               group.groupList.forEach(function (child) {
-                       if (child.groupList.length) {
-                               groupComponents = groupComponents.concat(_this57.getChildGroups(child));
-                       } else {
-                               groupComponents.push(child);
-                       }
-               });
-
-               return groupComponents;
-       };
-
-       GroupRows.prototype.wipe = function () {
-               this.groupList.forEach(function (group) {
-                       group.wipe();
-               });
-       };
-
-       GroupRows.prototype.pullGroupListData = function (groupList) {
-               var self = this;
-               var groupListData = [];
-
-               groupList.forEach(function (group) {
-                       var groupHeader = {};
-                       groupHeader.level = 0;
-                       groupHeader.rowCount = 0;
-                       groupHeader.headerContent = "";
-                       var childData = [];
-
-                       if (group.hasSubGroups) {
-                               childData = self.pullGroupListData(group.groupList);
-
-                               groupHeader.level = group.level;
-                               groupHeader.rowCount = childData.length - group.groupList.length; // data length minus number of sub-headers
-                               groupHeader.headerContent = group.generator(group.key, groupHeader.rowCount, group.rows, group);
-
-                               groupListData.push(groupHeader);
-                               groupListData = groupListData.concat(childData);
-                       } else {
-                               groupHeader.level = group.level;
-                               groupHeader.headerContent = group.generator(group.key, group.rows.length, group.rows, group);
-                               groupHeader.rowCount = group.getRows().length;
-
-                               groupListData.push(groupHeader);
-
-                               group.getRows().forEach(function (row) {
-                                       groupListData.push(row.getData("data"));
-                               });
-                       }
-               });
-
-               return groupListData;
-       };
-
-       GroupRows.prototype.getGroupedData = function () {
-
-               return this.pullGroupListData(this.groupList);
-       };
-
-       GroupRows.prototype.getRowGroup = function (row) {
-               var match = false;
-
-               this.groupList.forEach(function (group) {
-                       var result = group.getRowGroup(row);
-
-                       if (result) {
-                               match = result;
-                       }
-               });
-
-               return match;
-       };
-
-       GroupRows.prototype.countGroups = function () {
-               return this.groupList.length;
-       };
-
-       GroupRows.prototype.generateGroups = function (rows) {
-               var self = this,
-                   oldGroups = self.groups;
-
-               self.groups = {};
-               self.groupList = [];
-
-               if (this.allowedValues && this.allowedValues[0]) {
-                       this.allowedValues[0].forEach(function (value) {
-                               self.createGroup(value, 0, oldGroups);
-                       });
-
-                       rows.forEach(function (row) {
-                               self.assignRowToExistingGroup(row, oldGroups);
-                       });
-               } else {
-                       rows.forEach(function (row) {
-                               self.assignRowToGroup(row, oldGroups);
-                       });
-               }
-       };
-
-       GroupRows.prototype.createGroup = function (groupID, level, oldGroups) {
-               var groupKey = level + "_" + groupID,
-                   group;
-
-               oldGroups = oldGroups || [];
-
-               group = new Group(this, false, level, groupID, this.groupIDLookups[0].field, this.headerGenerator[0], oldGroups[groupKey]);
-
-               this.groups[groupKey] = group;
-               this.groupList.push(group);
-       };
-
-       // GroupRows.prototype.assignRowToGroup = function(row, oldGroups){
-       //      var groupID = this.groupIDLookups[0].func(row.getData()),
-       //      groupKey = "0_" + groupID;
-
-       //      if(!this.groups[groupKey]){
-       //              this.createGroup(groupID, 0, oldGroups);
-       //      }
-
-       //      this.groups[groupKey].addRow(row);
-       // };
-
-       GroupRows.prototype.assignRowToExistingGroup = function (row, oldGroups) {
-               var groupID = this.groupIDLookups[0].func(row.getData()),
-                   groupKey = "0_" + groupID;
-
-               if (this.groups[groupKey]) {
-                       this.groups[groupKey].addRow(row);
-               }
-       };
-
-       GroupRows.prototype.assignRowToGroup = function (row, oldGroups) {
-               var groupID = this.groupIDLookups[0].func(row.getData()),
-                   newGroupNeeded = !this.groups["0_" + groupID];
-
-               if (newGroupNeeded) {
-                       this.createGroup(groupID, 0, oldGroups);
-               }
-
-               this.groups["0_" + groupID].addRow(row);
-
-               return !newGroupNeeded;
-       };
-
-       GroupRows.prototype.updateGroupRows = function (force) {
-               var self = this,
-                   output = [],
-                   oldRowCount;
-
-               self.groupList.forEach(function (group) {
-                       output = output.concat(group.getHeadersAndRows());
-               });
-
-               //force update of table display
-               if (force) {
-
-                       var displayIndex = self.table.rowManager.setDisplayRows(output, this.getDisplayIndex());
-
-                       if (displayIndex !== true) {
-                               this.setDisplayIndex(displayIndex);
-                       }
-
-                       self.table.rowManager.refreshActiveData("group", true, true);
-               }
-
-               return output;
-       };
-
-       GroupRows.prototype.scrollHeaders = function (left) {
-               left = left + "px";
-
-               this.groupList.forEach(function (group) {
-                       group.scrollHeader(left);
-               });
-       };
-
-       GroupRows.prototype.removeGroup = function (group) {
-               var groupKey = group.level + "_" + group.key,
-                   index;
-
-               if (this.groups[groupKey]) {
-                       delete this.groups[groupKey];
-
-                       index = this.groupList.indexOf(group);
-
-                       if (index > -1) {
-                               this.groupList.splice(index, 1);
-                       }
-               }
-       };
-
-       Tabulator.prototype.registerModule("groupRows", GroupRows);
-       var History = function History(table) {
-               this.table = table; //hold Tabulator object
-
-               this.history = [];
-               this.index = -1;
-       };
-
-       History.prototype.clear = function () {
-               this.history = [];
-               this.index = -1;
-       };
-
-       History.prototype.action = function (type, component, data) {
-
-               this.history = this.history.slice(0, this.index + 1);
-
-               this.history.push({
-                       type: type,
-                       component: component,
-                       data: data
-               });
-
-               this.index++;
-       };
-
-       History.prototype.getHistoryUndoSize = function () {
-               return this.index + 1;
-       };
-
-       History.prototype.getHistoryRedoSize = function () {
-               return this.history.length - (this.index + 1);
-       };
-
-       History.prototype.undo = function () {
-
-               if (this.index > -1) {
-                       var action = this.history[this.index];
-
-                       this.undoers[action.type].call(this, action);
-
-                       this.index--;
-
-                       this.table.options.historyUndo.call(this.table, action.type, action.component.getComponent(), action.data);
-
-                       return true;
-               } else {
-                       console.warn("History Undo Error - No more history to undo");
-                       return false;
-               }
-       };
-
-       History.prototype.redo = function () {
-               if (this.history.length - 1 > this.index) {
-
-                       this.index++;
-
-                       var action = this.history[this.index];
-
-                       this.redoers[action.type].call(this, action);
-
-                       this.table.options.historyRedo.call(this.table, action.type, action.component.getComponent(), action.data);
-
-                       return true;
-               } else {
-                       console.warn("History Redo Error - No more history to redo");
-                       return false;
-               }
-       };
-
-       History.prototype.undoers = {
-               cellEdit: function cellEdit(action) {
-                       action.component.setValueProcessData(action.data.oldValue);
-               },
-
-               rowAdd: function rowAdd(action) {
-                       action.component.deleteActual();
-               },
-
-               rowDelete: function rowDelete(action) {
-                       var newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);
-
-                       if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-                               this.table.modules.groupRows.updateGroupRows(true);
-                       }
-
-                       this._rebindRow(action.component, newRow);
-               },
-
-               rowMove: function rowMove(action) {
-                       this.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.posFrom], !action.data.after);
-                       this.table.rowManager.redraw();
-               }
-       };
-
-       History.prototype.redoers = {
-               cellEdit: function cellEdit(action) {
-                       action.component.setValueProcessData(action.data.newValue);
-               },
-
-               rowAdd: function rowAdd(action) {
-                       var newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);
-
-                       if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-                               this.table.modules.groupRows.updateGroupRows(true);
-                       }
-
-                       this._rebindRow(action.component, newRow);
-               },
-
-               rowDelete: function rowDelete(action) {
-                       action.component.deleteActual();
-               },
-
-               rowMove: function rowMove(action) {
-                       this.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.posTo], action.data.after);
-                       this.table.rowManager.redraw();
-               }
-       };
-
-       //rebind rows to new element after deletion
-       History.prototype._rebindRow = function (oldRow, newRow) {
-               this.history.forEach(function (action) {
-                       if (action.component instanceof Row) {
-                               if (action.component === oldRow) {
-                                       action.component = newRow;
-                               }
-                       } else if (action.component instanceof Cell) {
-                               if (action.component.row === oldRow) {
-                                       var field = action.component.column.getField();
-
-                                       if (field) {
-                                               action.component = newRow.getCell(field);
-                                       }
-                               }
-                       }
-               });
-       };
-
-       Tabulator.prototype.registerModule("history", History);
-       var HtmlTableImport = function HtmlTableImport(table) {
-               this.table = table; //hold Tabulator object
-               this.fieldIndex = [];
-               this.hasIndex = false;
-       };
-
-       HtmlTableImport.prototype.parseTable = function () {
-               var self = this,
-                   element = self.table.element,
-                   options = self.table.options,
-                   columns = options.columns,
-                   headers = element.getElementsByTagName("th"),
-                   rows = element.getElementsByTagName("tbody")[0],
-                   data = [],
-                   newTable;
-
-               self.hasIndex = false;
-
-               self.table.options.htmlImporting.call(this.table);
-
-               rows = rows ? rows.getElementsByTagName("tr") : [];
-
-               //check for tablator inline options
-               self._extractOptions(element, options);
-
-               if (headers.length) {
-                       self._extractHeaders(headers, rows);
-               } else {
-                       self._generateBlankHeaders(headers, rows);
-               }
-
-               //iterate through table rows and build data set
-               for (var index = 0; index < rows.length; index++) {
-                       var row = rows[index],
-                           cells = row.getElementsByTagName("td"),
-                           item = {};
-
-                       //create index if the dont exist in table
-                       if (!self.hasIndex) {
-                               item[options.index] = index;
-                       }
-
-                       for (var i = 0; i < cells.length; i++) {
-                               var cell = cells[i];
-                               if (typeof this.fieldIndex[i] !== "undefined") {
-                                       item[this.fieldIndex[i]] = cell.innerHTML;
-                               }
-                       }
-
-                       //add row data to item
-                       data.push(item);
-               }
-
-               //create new element
-               var newElement = document.createElement("div");
-
-               //transfer attributes to new element
-               var attributes = element.attributes;
-
-               // loop through attributes and apply them on div
-
-               for (var i in attributes) {
-                       if (_typeof(attributes[i]) == "object") {
-                               newElement.setAttribute(attributes[i].name, attributes[i].value);
-                       }
-               }
-
-               // replace table with div element
-               element.parentNode.replaceChild(newElement, element);
-
-               options.data = data;
-
-               self.table.options.htmlImported.call(this.table);
-
-               // // newElement.tabulator(options);
-
-               this.table.element = newElement;
-       };
-
-       //extract tabulator attribute options
-       HtmlTableImport.prototype._extractOptions = function (element, options, defaultOptions) {
-               var attributes = element.attributes;
-               var optionsArr = defaultOptions ? Object.assign([], defaultOptions) : Object.keys(options);
-               var optionsList = {};
-
-               optionsArr.forEach(function (item) {
-                       optionsList[item.toLowerCase()] = item;
-               });
-
-               for (var index in attributes) {
-                       var attrib = attributes[index];
-                       var name;
-
-                       if (attrib && (typeof attrib === 'undefined' ? 'undefined' : _typeof(attrib)) == "object" && attrib.name && attrib.name.indexOf("tabulator-") === 0) {
-                               name = attrib.name.replace("tabulator-", "");
-
-                               if (typeof optionsList[name] !== "undefined") {
-                                       options[optionsList[name]] = this._attribValue(attrib.value);
-                               }
-                       }
-               }
-       };
-
-       //get value of attribute
-       HtmlTableImport.prototype._attribValue = function (value) {
-               if (value === "true") {
-                       return true;
-               }
-
-               if (value === "false") {
-                       return false;
-               }
-
-               return value;
-       };
-
-       //find column if it has already been defined
-       HtmlTableImport.prototype._findCol = function (title) {
-               var match = this.table.options.columns.find(function (column) {
-                       return column.title === title;
-               });
-
-               return match || false;
-       };
-
-       //extract column from headers
-       HtmlTableImport.prototype._extractHeaders = function (headers, rows) {
-               for (var index = 0; index < headers.length; index++) {
-                       var header = headers[index],
-                           exists = false,
-                           col = this._findCol(header.textContent),
-                           width,
-                           attributes;
-
-                       if (col) {
-                               exists = true;
-                       } else {
-                               col = { title: header.textContent.trim() };
-                       }
-
-                       if (!col.field) {
-                               col.field = header.textContent.trim().toLowerCase().replace(" ", "_");
-                       }
-
-                       width = header.getAttribute("width");
-
-                       if (width && !col.width) {
-                               col.width = width;
-                       }
-
-                       //check for tablator inline options
-                       attributes = header.attributes;
-
-                       // //check for tablator inline options
-                       this._extractOptions(header, col, Column.prototype.defaultOptionList);
-
-                       this.fieldIndex[index] = col.field;
-
-                       if (col.field == this.table.options.index) {
-                               this.hasIndex = true;
-                       }
-
-                       if (!exists) {
-                               this.table.options.columns.push(col);
-                       }
-               }
-       };
-
-       //generate blank headers
-       HtmlTableImport.prototype._generateBlankHeaders = function (headers, rows) {
-               for (var index = 0; index < headers.length; index++) {
-                       var header = headers[index],
-                           col = { title: "", field: "col" + index };
-
-                       this.fieldIndex[index] = col.field;
-
-                       var width = header.getAttribute("width");
-
-                       if (width) {
-                               col.width = width;
-                       }
-
-                       this.table.options.columns.push(col);
-               }
-       };
-
-       Tabulator.prototype.registerModule("htmlTableImport", HtmlTableImport);
-       var Keybindings = function Keybindings(table) {
-               this.table = table; //hold Tabulator object
-               this.watchKeys = null;
-               this.pressedKeys = null;
-               this.keyupBinding = false;
-               this.keydownBinding = false;
-       };
-
-       Keybindings.prototype.initialize = function () {
-               var bindings = this.table.options.keybindings,
-                   mergedBindings = {};
-
-               this.watchKeys = {};
-               this.pressedKeys = [];
-
-               if (bindings !== false) {
-
-                       for (var key in this.bindings) {
-                               mergedBindings[key] = this.bindings[key];
-                       }
-
-                       if (Object.keys(bindings).length) {
-
-                               for (var _key in bindings) {
-                                       mergedBindings[_key] = bindings[_key];
-                               }
-                       }
-
-                       this.mapBindings(mergedBindings);
-                       this.bindEvents();
-               }
-       };
-
-       Keybindings.prototype.mapBindings = function (bindings) {
-               var _this58 = this;
-
-               var self = this;
-
-               var _loop2 = function _loop2(key) {
-
-                       if (_this58.actions[key]) {
-
-                               if (bindings[key]) {
-
-                                       if (_typeof(bindings[key]) !== "object") {
-                                               bindings[key] = [bindings[key]];
-                                       }
-
-                                       bindings[key].forEach(function (binding) {
-                                               self.mapBinding(key, binding);
-                                       });
-                               }
-                       } else {
-                               console.warn("Key Binding Error - no such action:", key);
-                       }
-               };
-
-               for (var key in bindings) {
-                       _loop2(key);
-               }
-       };
-
-       Keybindings.prototype.mapBinding = function (action, symbolsList) {
-               var self = this;
-
-               var binding = {
-                       action: this.actions[action],
-                       keys: [],
-                       ctrl: false,
-                       shift: false,
-                       meta: false
-               };
-
-               var symbols = symbolsList.toString().toLowerCase().split(" ").join("").split("+");
-
-               symbols.forEach(function (symbol) {
-                       switch (symbol) {
-                               case "ctrl":
-                                       binding.ctrl = true;
-                                       break;
-
-                               case "shift":
-                                       binding.shift = true;
-                                       break;
-
-                               case "meta":
-                                       binding.meta = true;
-                                       break;
-
-                               default:
-                                       symbol = parseInt(symbol);
-                                       binding.keys.push(symbol);
-
-                                       if (!self.watchKeys[symbol]) {
-                                               self.watchKeys[symbol] = [];
-                                       }
-
-                                       self.watchKeys[symbol].push(binding);
-                       }
-               });
-       };
-
-       Keybindings.prototype.bindEvents = function () {
-               var self = this;
-
-               this.keyupBinding = function (e) {
-                       var code = e.keyCode;
-                       var bindings = self.watchKeys[code];
-
-                       if (bindings) {
-
-                               self.pressedKeys.push(code);
-
-                               bindings.forEach(function (binding) {
-                                       self.checkBinding(e, binding);
-                               });
-                       }
-               };
-
-               this.keydownBinding = function (e) {
-                       var code = e.keyCode;
-                       var bindings = self.watchKeys[code];
-
-                       if (bindings) {
-
-                               var index = self.pressedKeys.indexOf(code);
-
-                               if (index > -1) {
-                                       self.pressedKeys.splice(index, 1);
-                               }
-                       }
-               };
-
-               this.table.element.addEventListener("keydown", this.keyupBinding);
-
-               this.table.element.addEventListener("keyup", this.keydownBinding);
-       };
-
-       Keybindings.prototype.clearBindings = function () {
-               if (this.keyupBinding) {
-                       this.table.element.removeEventListener("keydown", this.keyupBinding);
-               }
-
-               if (this.keydownBinding) {
-                       this.table.element.removeEventListener("keyup", this.keydownBinding);
-               }
-       };
-
-       Keybindings.prototype.checkBinding = function (e, binding) {
-               var self = this,
-                   match = true;
-
-               if (e.ctrlKey == binding.ctrl && e.shiftKey == binding.shift && e.metaKey == binding.meta) {
-                       binding.keys.forEach(function (key) {
-                               var index = self.pressedKeys.indexOf(key);
-
-                               if (index == -1) {
-                                       match = false;
-                               }
-                       });
-
-                       if (match) {
-                               binding.action.call(self, e);
-                       }
-
-                       return true;
-               }
-
-               return false;
-       };
-
-       //default bindings
-       Keybindings.prototype.bindings = {
-               navPrev: "shift + 9",
-               navNext: 9,
-               navUp: 38,
-               navDown: 40,
-               scrollPageUp: 33,
-               scrollPageDown: 34,
-               scrollToStart: 36,
-               scrollToEnd: 35,
-               undo: "ctrl + 90",
-               redo: "ctrl + 89",
-               copyToClipboard: "ctrl + 67"
-       };
-
-       //default actions
-       Keybindings.prototype.actions = {
-               keyBlock: function keyBlock(e) {
-                       e.stopPropagation();
-                       e.preventDefault();
-               },
-               scrollPageUp: function scrollPageUp(e) {
-                       var rowManager = this.table.rowManager,
-                           newPos = rowManager.scrollTop - rowManager.height,
-                           scrollMax = rowManager.element.scrollHeight;
-
-                       e.preventDefault();
-
-                       if (rowManager.displayRowsCount) {
-                               if (newPos >= 0) {
-                                       rowManager.element.scrollTop = newPos;
-                               } else {
-                                       rowManager.scrollToRow(rowManager.getDisplayRows()[0]);
-                               }
-                       }
-
-                       this.table.element.focus();
-               },
-               scrollPageDown: function scrollPageDown(e) {
-                       var rowManager = this.table.rowManager,
-                           newPos = rowManager.scrollTop + rowManager.height,
-                           scrollMax = rowManager.element.scrollHeight;
-
-                       e.preventDefault();
-
-                       if (rowManager.displayRowsCount) {
-                               if (newPos <= scrollMax) {
-                                       rowManager.element.scrollTop = newPos;
-                               } else {
-                                       rowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);
-                               }
-                       }
-
-                       this.table.element.focus();
-               },
-               scrollToStart: function scrollToStart(e) {
-                       var rowManager = this.table.rowManager;
-
-                       e.preventDefault();
-
-                       if (rowManager.displayRowsCount) {
-                               rowManager.scrollToRow(rowManager.getDisplayRows()[0]);
-                       }
-
-                       this.table.element.focus();
-               },
-               scrollToEnd: function scrollToEnd(e) {
-                       var rowManager = this.table.rowManager;
-
-                       e.preventDefault();
-
-                       if (rowManager.displayRowsCount) {
-                               rowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);
-                       }
-
-                       this.table.element.focus();
-               },
-               navPrev: function navPrev(e) {
-                       var cell = false;
-
-                       if (this.table.modExists("edit")) {
-                               cell = this.table.modules.edit.currentCell;
-
-                               if (cell) {
-                                       e.preventDefault();
-                                       cell.nav().prev();
-                               }
-                       }
-               },
-
-               navNext: function navNext(e) {
-                       var cell = false;
-                       var newRow = this.table.options.tabEndNewRow;
-                       var nav;
-
-                       if (this.table.modExists("edit")) {
-                               cell = this.table.modules.edit.currentCell;
-
-                               if (cell) {
-                                       e.preventDefault();
-
-                                       nav = cell.nav();
-
-                                       if (!nav.next()) {
-                                               if (newRow) {
-
-                                                       cell.getElement().firstChild.blur();
-
-                                                       if (newRow === true) {
-                                                               newRow = this.table.addRow({});
-                                                       } else {
-                                                               if (typeof newRow == "function") {
-                                                                       newRow = this.table.addRow(newRow(cell.row.getComponent()));
-                                                               } else {
-                                                                       newRow = this.table.addRow(newRow);
-                                                               }
-                                                       }
-
-                                                       newRow.then(function () {
-                                                               setTimeout(function () {
-                                                                       nav.next();
-                                                               });
-                                                       });
-                                               }
-                                       }
-                               }
-                       }
-               },
-
-               navLeft: function navLeft(e) {
-                       var cell = false;
-
-                       if (this.table.modExists("edit")) {
-                               cell = this.table.modules.edit.currentCell;
-
-                               if (cell) {
-                                       e.preventDefault();
-                                       cell.nav().left();
-                               }
-                       }
-               },
-
-               navRight: function navRight(e) {
-                       var cell = false;
-
-                       if (this.table.modExists("edit")) {
-                               cell = this.table.modules.edit.currentCell;
-
-                               if (cell) {
-                                       e.preventDefault();
-                                       cell.nav().right();
-                               }
-                       }
-               },
-
-               navUp: function navUp(e) {
-                       var cell = false;
-
-                       if (this.table.modExists("edit")) {
-                               cell = this.table.modules.edit.currentCell;
-
-                               if (cell) {
-                                       e.preventDefault();
-                                       cell.nav().up();
-                               }
-                       }
-               },
-
-               navDown: function navDown(e) {
-                       var cell = false;
-
-                       if (this.table.modExists("edit")) {
-                               cell = this.table.modules.edit.currentCell;
-
-                               if (cell) {
-                                       e.preventDefault();
-                                       cell.nav().down();
-                               }
-                       }
-               },
-
-               undo: function undo(e) {
-                       var cell = false;
-                       if (this.table.options.history && this.table.modExists("history") && this.table.modExists("edit")) {
-
-                               cell = this.table.modules.edit.currentCell;
-
-                               if (!cell) {
-                                       e.preventDefault();
-                                       this.table.modules.history.undo();
-                               }
-                       }
-               },
-
-               redo: function redo(e) {
-                       var cell = false;
-                       if (this.table.options.history && this.table.modExists("history") && this.table.modExists("edit")) {
-
-                               cell = this.table.modules.edit.currentCell;
-
-                               if (!cell) {
-                                       e.preventDefault();
-                                       this.table.modules.history.redo();
-                               }
-                       }
-               },
-
-               copyToClipboard: function copyToClipboard(e) {
-                       if (!this.table.modules.edit.currentCell) {
-                               if (this.table.modExists("clipboard", true)) {
-                                       this.table.modules.clipboard.copy(false, true);
-                               }
-                       }
-               }
-       };
-
-       Tabulator.prototype.registerModule("keybindings", Keybindings);
-       var Menu = function Menu(table) {
-               this.table = table; //hold Tabulator object
-               this.menuEl = false;
-               this.blurEvent = this.hideMenu.bind(this);
-       };
-
-       Menu.prototype.initializeColumnHeader = function (column) {
-               var _this59 = this;
-
-               var headerMenuEl;
-
-               if (column.definition.headerContextMenu) {
-                       column.getElement().addEventListener("contextmenu", function (e) {
-                               var menu = typeof column.definition.headerContextMenu == "function" ? column.definition.headerContextMenu(column.getComponent()) : column.definition.headerContextMenu;
-
-                               e.preventDefault();
-
-                               _this59.loadMenu(e, column, menu);
-                       });
-               }
-
-               if (column.definition.headerMenu) {
-
-                       headerMenuEl = document.createElement("span");
-                       headerMenuEl.classList.add("tabulator-header-menu-button");
-                       headerMenuEl.innerHTML = "&vellip;";
-
-                       headerMenuEl.addEventListener("click", function (e) {
-                               var menu = typeof column.definition.headerMenu == "function" ? column.definition.headerMenu(column.getComponent()) : column.definition.headerMenu;
-                               e.stopPropagation();
-                               e.preventDefault();
-
-                               _this59.loadMenu(e, column, menu);
-                       });
-
-                       column.titleElement.insertBefore(headerMenuEl, column.titleElement.firstChild);
-               }
-       };
-
-       Menu.prototype.initializeCell = function (cell) {
-               var _this60 = this;
-
-               cell.getElement().addEventListener("contextmenu", function (e) {
-                       var menu = typeof cell.column.definition.contextMenu == "function" ? cell.column.definition.contextMenu(cell.getComponent()) : cell.column.definition.contextMenu;
-
-                       e.preventDefault();
-
-                       _this60.loadMenu(e, cell, menu);
-               });
-       };
-
-       Menu.prototype.initializeRow = function (row) {
-               var _this61 = this;
-
-               row.getElement().addEventListener("contextmenu", function (e) {
-                       var menu = typeof _this61.table.options.rowContextMenu == "function" ? _this61.table.options.rowContextMenu(row.getComponent()) : _this61.table.options.rowContextMenu;
-
-                       e.preventDefault();
-
-                       _this61.loadMenu(e, row, menu);
-               });
-       };
-
-       Menu.prototype.loadMenu = function (e, component, menu) {
-               var _this62 = this;
-
-               var docHeight = Math.max(document.body.offsetHeight, window.innerHeight);
-
-               //abort if no menu set
-               if (!menu || !menu.length) {
-                       return;
-               }
-
-               this.hideMenu();
-
-               this.menuEl = document.createElement("div");
-               this.menuEl.classList.add("tabulator-menu");
-
-               menu.forEach(function (item) {
-                       var itemEl = document.createElement("div");
-                       var label = item.label;
-                       var disabled = item.disabled;
-
-                       if (item.separator) {
-                               itemEl.classList.add("tabulator-menu-separator");
-                       } else {
-                               itemEl.classList.add("tabulator-menu-item");
-
-                               if (typeof label == "function") {
-                                       label = label(component.getComponent());
-                               }
-
-                               if (label instanceof Node) {
-                                       itemEl.appendChild(label);
-                               } else {
-                                       itemEl.innerHTML = label;
-                               }
-
-                               if (typeof disabled == "function") {
-                                       disabled = disabled(component.getComponent());
-                               }
-
-                               if (disabled) {
-                                       itemEl.classList.add("tabulator-menu-item-disabled");
-                                       itemEl.addEventListener("click", function (e) {
-                                               e.stopPropagation();
-                                       });
-                               } else {
-                                       itemEl.addEventListener("click", function (e) {
-                                               _this62.hideMenu();
-                                               item.action(e, component.getComponent());
-                                       });
-                               }
-                       }
-
-                       _this62.menuEl.appendChild(itemEl);
-               });
-
-               this.menuEl.style.top = e.pageY + "px";
-               this.menuEl.style.left = e.pageX + "px";
-
-               document.body.addEventListener("click", this.blurEvent);
-               this.table.rowManager.element.addEventListener("scroll", this.blurEvent);
-
-               setTimeout(function () {
-                       document.body.addEventListener("contextmenu", _this62.blurEvent);
-               }, 100);
-
-               document.body.appendChild(this.menuEl);
-
-               //move menu to start on right edge if it is too close to the edge of the screen
-               if (e.pageX + this.menuEl.offsetWidth >= document.body.offsetWidth) {
-                       this.menuEl.style.left = "";
-                       this.menuEl.style.right = document.body.offsetWidth - e.pageX + "px";
-               }
-
-               //move menu to start on bottom edge if it is too close to the edge of the screen
-               if (e.pageY + this.menuEl.offsetHeight >= docHeight) {
-                       this.menuEl.style.top = "";
-                       this.menuEl.style.bottom = docHeight - e.pageY + "px";
-               }
-       };
-
-       Menu.prototype.hideMenu = function () {
-               if (this.menuEl.parentNode) {
-                       this.menuEl.parentNode.removeChild(this.menuEl);
-               }
-
-               if (this.blurEvent) {
-                       document.body.removeEventListener("click", this.blurEvent);
-                       document.body.removeEventListener("contextmenu", this.blurEvent);
-                       this.table.rowManager.element.removeEventListener("scroll", this.blurEvent);
-               }
-       };
-
-       //default accessors
-       Menu.prototype.menus = {};
-
-       Tabulator.prototype.registerModule("menu", Menu);
-       var MoveColumns = function MoveColumns(table) {
-               this.table = table; //hold Tabulator object
-               this.placeholderElement = this.createPlaceholderElement();
-               this.hoverElement = false; //floating column header element
-               this.checkTimeout = false; //click check timeout holder
-               this.checkPeriod = 250; //period to wait on mousedown to consider this a move and not a click
-               this.moving = false; //currently moving column
-               this.toCol = false; //destination column
-               this.toColAfter = false; //position of moving column relative to the desitnation column
-               this.startX = 0; //starting position within header element
-               this.autoScrollMargin = 40; //auto scroll on edge when within margin
-               this.autoScrollStep = 5; //auto scroll distance in pixels
-               this.autoScrollTimeout = false; //auto scroll timeout
-               this.touchMove = false;
-
-               this.moveHover = this.moveHover.bind(this);
-               this.endMove = this.endMove.bind(this);
-       };
-
-       MoveColumns.prototype.createPlaceholderElement = function () {
-               var el = document.createElement("div");
-
-               el.classList.add("tabulator-col");
-               el.classList.add("tabulator-col-placeholder");
-
-               return el;
-       };
-
-       MoveColumns.prototype.initializeColumn = function (column) {
-               var self = this,
-                   config = {},
-                   colEl;
-
-               if (!column.modules.frozen) {
-
-                       colEl = column.getElement();
-
-                       config.mousemove = function (e) {
-                               if (column.parent === self.moving.parent) {
-                                       if ((self.touchMove ? e.touches[0].pageX : e.pageX) - Tabulator.prototype.helpers.elOffset(colEl).left + self.table.columnManager.element.scrollLeft > column.getWidth() / 2) {
-                                               if (self.toCol !== column || !self.toColAfter) {
-                                                       colEl.parentNode.insertBefore(self.placeholderElement, colEl.nextSibling);
-                                                       self.moveColumn(column, true);
-                                               }
-                                       } else {
-                                               if (self.toCol !== column || self.toColAfter) {
-                                                       colEl.parentNode.insertBefore(self.placeholderElement, colEl);
-                                                       self.moveColumn(column, false);
-                                               }
-                                       }
-                               }
-                       }.bind(self);
-
-                       colEl.addEventListener("mousedown", function (e) {
-                               self.touchMove = false;
-                               if (e.which === 1) {
-                                       self.checkTimeout = setTimeout(function () {
-                                               self.startMove(e, column);
-                                       }, self.checkPeriod);
-                               }
-                       });
-
-                       colEl.addEventListener("mouseup", function (e) {
-                               if (e.which === 1) {
-                                       if (self.checkTimeout) {
-                                               clearTimeout(self.checkTimeout);
-                                       }
-                               }
-                       });
-
-                       self.bindTouchEvents(column);
-               }
-
-               column.modules.moveColumn = config;
-       };
-
-       MoveColumns.prototype.bindTouchEvents = function (column) {
-               var self = this,
-                   colEl = column.getElement(),
-                   startXMove = false,
-                   //shifting center position of the cell
-               dir = false,
-                   currentCol,
-                   nextCol,
-                   prevCol,
-                   nextColWidth,
-                   prevColWidth,
-                   nextColWidthLast,
-                   prevColWidthLast;
-
-               colEl.addEventListener("touchstart", function (e) {
-                       self.checkTimeout = setTimeout(function () {
-                               self.touchMove = true;
-                               currentCol = column;
-                               nextCol = column.nextColumn();
-                               nextColWidth = nextCol ? nextCol.getWidth() / 2 : 0;
-                               prevCol = column.prevColumn();
-                               prevColWidth = prevCol ? prevCol.getWidth() / 2 : 0;
-                               nextColWidthLast = 0;
-                               prevColWidthLast = 0;
-                               startXMove = false;
-
-                               self.startMove(e, column);
-                       }, self.checkPeriod);
-               }, { passive: true });
-
-               colEl.addEventListener("touchmove", function (e) {
-                       var halfCol, diff, moveToCol;
-
-                       if (self.moving) {
-                               self.moveHover(e);
-
-                               if (!startXMove) {
-                                       startXMove = e.touches[0].pageX;
-                               }
-
-                               diff = e.touches[0].pageX - startXMove;
-
-                               if (diff > 0) {
-                                       if (nextCol && diff - nextColWidthLast > nextColWidth) {
-                                               moveToCol = nextCol;
-
-                                               if (moveToCol !== column) {
-                                                       startXMove = e.touches[0].pageX;
-                                                       moveToCol.getElement().parentNode.insertBefore(self.placeholderElement, moveToCol.getElement().nextSibling);
-                                                       self.moveColumn(moveToCol, true);
-                                               }
-                                       }
-                               } else {
-                                       if (prevCol && -diff - prevColWidthLast > prevColWidth) {
-                                               moveToCol = prevCol;
-
-                                               if (moveToCol !== column) {
-                                                       startXMove = e.touches[0].pageX;
-                                                       moveToCol.getElement().parentNode.insertBefore(self.placeholderElement, moveToCol.getElement());
-                                                       self.moveColumn(moveToCol, false);
-                                               }
-                                       }
-                               }
-
-                               if (moveToCol) {
-                                       currentCol = moveToCol;
-                                       nextCol = moveToCol.nextColumn();
-                                       nextColWidthLast = nextColWidth;
-                                       nextColWidth = nextCol ? nextCol.getWidth() / 2 : 0;
-                                       prevCol = moveToCol.prevColumn();
-                                       prevColWidthLast = prevColWidth;
-                                       prevColWidth = prevCol ? prevCol.getWidth() / 2 : 0;
-                               }
-                       }
-               }, { passive: true });
-
-               colEl.addEventListener("touchend", function (e) {
-                       if (self.checkTimeout) {
-                               clearTimeout(self.checkTimeout);
-                       }
-                       if (self.moving) {
-                               self.endMove(e);
-                       }
-               });
-       };
-
-       MoveColumns.prototype.startMove = function (e, column) {
-               var element = column.getElement();
-
-               this.moving = column;
-               this.startX = (this.touchMove ? e.touches[0].pageX : e.pageX) - Tabulator.prototype.helpers.elOffset(element).left;
-
-               this.table.element.classList.add("tabulator-block-select");
-
-               //create placeholder
-               this.placeholderElement.style.width = column.getWidth() + "px";
-               this.placeholderElement.style.height = column.getHeight() + "px";
-
-               element.parentNode.insertBefore(this.placeholderElement, element);
-               element.parentNode.removeChild(element);
-
-               //create hover element
-               this.hoverElement = element.cloneNode(true);
-               this.hoverElement.classList.add("tabulator-moving");
-
-               this.table.columnManager.getElement().appendChild(this.hoverElement);
-
-               this.hoverElement.style.left = "0";
-               this.hoverElement.style.bottom = "0";
-
-               if (!this.touchMove) {
-                       this._bindMouseMove();
-
-                       document.body.addEventListener("mousemove", this.moveHover);
-                       document.body.addEventListener("mouseup", this.endMove);
-               }
-
-               this.moveHover(e);
-       };
-
-       MoveColumns.prototype._bindMouseMove = function () {
-               this.table.columnManager.columnsByIndex.forEach(function (column) {
-                       if (column.modules.moveColumn.mousemove) {
-                               column.getElement().addEventListener("mousemove", column.modules.moveColumn.mousemove);
-                       }
-               });
-       };
-
-       MoveColumns.prototype._unbindMouseMove = function () {
-               this.table.columnManager.columnsByIndex.forEach(function (column) {
-                       if (column.modules.moveColumn.mousemove) {
-                               column.getElement().removeEventListener("mousemove", column.modules.moveColumn.mousemove);
-                       }
-               });
-       };
-
-       MoveColumns.prototype.moveColumn = function (column, after) {
-               var movingCells = this.moving.getCells();
-
-               this.toCol = column;
-               this.toColAfter = after;
-
-               if (after) {
-                       column.getCells().forEach(function (cell, i) {
-                               var cellEl = cell.getElement();
-                               cellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl.nextSibling);
-                       });
-               } else {
-                       column.getCells().forEach(function (cell, i) {
-                               var cellEl = cell.getElement();
-                               cellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl);
-                       });
-               }
-       };
-
-       MoveColumns.prototype.endMove = function (e) {
-               if (e.which === 1 || this.touchMove) {
-                       this._unbindMouseMove();
-
-                       this.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);
-                       this.placeholderElement.parentNode.removeChild(this.placeholderElement);
-                       this.hoverElement.parentNode.removeChild(this.hoverElement);
-
-                       this.table.element.classList.remove("tabulator-block-select");
-
-                       if (this.toCol) {
-                               this.table.columnManager.moveColumnActual(this.moving, this.toCol, this.toColAfter);
-                       }
-
-                       this.moving = false;
-                       this.toCol = false;
-                       this.toColAfter = false;
-
-                       if (!this.touchMove) {
-                               document.body.removeEventListener("mousemove", this.moveHover);
-                               document.body.removeEventListener("mouseup", this.endMove);
-                       }
-               }
-       };
-
-       MoveColumns.prototype.moveHover = function (e) {
-               var self = this,
-                   columnHolder = self.table.columnManager.getElement(),
-                   scrollLeft = columnHolder.scrollLeft,
-                   xPos = (self.touchMove ? e.touches[0].pageX : e.pageX) - Tabulator.prototype.helpers.elOffset(columnHolder).left + scrollLeft,
-                   scrollPos;
-
-               self.hoverElement.style.left = xPos - self.startX + "px";
-
-               if (xPos - scrollLeft < self.autoScrollMargin) {
-                       if (!self.autoScrollTimeout) {
-                               self.autoScrollTimeout = setTimeout(function () {
-                                       scrollPos = Math.max(0, scrollLeft - 5);
-                                       self.table.rowManager.getElement().scrollLeft = scrollPos;
-                                       self.autoScrollTimeout = false;
-                               }, 1);
-                       }
-               }
-
-               if (scrollLeft + columnHolder.clientWidth - xPos < self.autoScrollMargin) {
-                       if (!self.autoScrollTimeout) {
-                               self.autoScrollTimeout = setTimeout(function () {
-                                       scrollPos = Math.min(columnHolder.clientWidth, scrollLeft + 5);
-                                       self.table.rowManager.getElement().scrollLeft = scrollPos;
-                                       self.autoScrollTimeout = false;
-                               }, 1);
-                       }
-               }
-       };
-
-       Tabulator.prototype.registerModule("moveColumn", MoveColumns);
-
-       var MoveRows = function MoveRows(table) {
-
-               this.table = table; //hold Tabulator object
-               this.placeholderElement = this.createPlaceholderElement();
-               this.hoverElement = false; //floating row header element
-               this.checkTimeout = false; //click check timeout holder
-               this.checkPeriod = 150; //period to wait on mousedown to consider this a move and not a click
-               this.moving = false; //currently moving row
-               this.toRow = false; //destination row
-               this.toRowAfter = false; //position of moving row relative to the desitnation row
-               this.hasHandle = false; //row has handle instead of fully movable row
-               this.startY = 0; //starting Y position within header element
-               this.startX = 0; //starting X position within header element
-
-               this.moveHover = this.moveHover.bind(this);
-               this.endMove = this.endMove.bind(this);
-               this.tableRowDropEvent = false;
-
-               this.touchMove = false;
-
-               this.connection = false;
-               this.connections = [];
-
-               this.connectedTable = false;
-               this.connectedRow = false;
-       };
-
-       MoveRows.prototype.createPlaceholderElement = function () {
-               var el = document.createElement("div");
-
-               el.classList.add("tabulator-row");
-               el.classList.add("tabulator-row-placeholder");
-
-               return el;
-       };
-
-       MoveRows.prototype.initialize = function (handle) {
-               this.connection = this.table.options.movableRowsConnectedTables;
-       };
-
-       MoveRows.prototype.setHandle = function (handle) {
-               this.hasHandle = handle;
-       };
-
-       MoveRows.prototype.initializeGroupHeader = function (group) {
-               var self = this,
-                   config = {},
-                   rowEl;
-
-               //inter table drag drop
-               config.mouseup = function (e) {
-                       self.tableRowDrop(e, row);
-               }.bind(self);
-
-               //same table drag drop
-               config.mousemove = function (e) {
-                       if (e.pageY - Tabulator.prototype.helpers.elOffset(group.element).top + self.table.rowManager.element.scrollTop > group.getHeight() / 2) {
-                               if (self.toRow !== group || !self.toRowAfter) {
-                                       var rowEl = group.getElement();
-                                       rowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);
-                                       self.moveRow(group, true);
-                               }
-                       } else {
-                               if (self.toRow !== group || self.toRowAfter) {
-                                       var rowEl = group.getElement();
-                                       if (rowEl.previousSibling) {
-                                               rowEl.parentNode.insertBefore(self.placeholderElement, rowEl);
-                                               self.moveRow(group, false);
-                                       }
-                               }
-                       }
-               }.bind(self);
-
-               group.modules.moveRow = config;
-       };
-
-       MoveRows.prototype.initializeRow = function (row) {
-               var self = this,
-                   config = {},
-                   rowEl;
-
-               //inter table drag drop
-               config.mouseup = function (e) {
-                       self.tableRowDrop(e, row);
-               }.bind(self);
-
-               //same table drag drop
-               config.mousemove = function (e) {
-                       if (e.pageY - Tabulator.prototype.helpers.elOffset(row.element).top + self.table.rowManager.element.scrollTop > row.getHeight() / 2) {
-                               if (self.toRow !== row || !self.toRowAfter) {
-                                       var rowEl = row.getElement();
-                                       rowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);
-                                       self.moveRow(row, true);
-                               }
-                       } else {
-                               if (self.toRow !== row || self.toRowAfter) {
-                                       var rowEl = row.getElement();
-                                       rowEl.parentNode.insertBefore(self.placeholderElement, rowEl);
-                                       self.moveRow(row, false);
-                               }
-                       }
-               }.bind(self);
-
-               if (!this.hasHandle) {
-
-                       rowEl = row.getElement();
-
-                       rowEl.addEventListener("mousedown", function (e) {
-                               if (e.which === 1) {
-                                       self.checkTimeout = setTimeout(function () {
-                                               self.startMove(e, row);
-                                       }, self.checkPeriod);
-                               }
-                       });
-
-                       rowEl.addEventListener("mouseup", function (e) {
-                               if (e.which === 1) {
-                                       if (self.checkTimeout) {
-                                               clearTimeout(self.checkTimeout);
-                                       }
-                               }
-                       });
-
-                       this.bindTouchEvents(row, row.getElement());
-               }
-
-               row.modules.moveRow = config;
-       };
-
-       MoveRows.prototype.initializeCell = function (cell) {
-               var self = this,
-                   cellEl = cell.getElement();
-
-               cellEl.addEventListener("mousedown", function (e) {
-                       if (e.which === 1) {
-                               self.checkTimeout = setTimeout(function () {
-                                       self.startMove(e, cell.row);
-                               }, self.checkPeriod);
-                       }
-               });
-
-               cellEl.addEventListener("mouseup", function (e) {
-                       if (e.which === 1) {
-                               if (self.checkTimeout) {
-                                       clearTimeout(self.checkTimeout);
-                               }
-                       }
-               });
-
-               this.bindTouchEvents(cell.row, cell.getElement());
-       };
-
-       MoveRows.prototype.bindTouchEvents = function (row, element) {
-               var self = this,
-                   startYMove = false,
-                   //shifting center position of the cell
-               dir = false,
-                   currentRow,
-                   nextRow,
-                   prevRow,
-                   nextRowHeight,
-                   prevRowHeight,
-                   nextRowHeightLast,
-                   prevRowHeightLast;
-
-               element.addEventListener("touchstart", function (e) {
-                       self.checkTimeout = setTimeout(function () {
-                               self.touchMove = true;
-                               currentRow = row;
-                               nextRow = row.nextRow();
-                               nextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0;
-                               prevRow = row.prevRow();
-                               prevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0;
-                               nextRowHeightLast = 0;
-                               prevRowHeightLast = 0;
-                               startYMove = false;
-
-                               self.startMove(e, row);
-                       }, self.checkPeriod);
-               }, { passive: true });
-               this.moving, this.toRow, this.toRowAfter;
-               element.addEventListener("touchmove", function (e) {
-
-                       var halfCol, diff, moveToRow;
-
-                       if (self.moving) {
-                               e.preventDefault();
-
-                               self.moveHover(e);
-
-                               if (!startYMove) {
-                                       startYMove = e.touches[0].pageY;
-                               }
-
-                               diff = e.touches[0].pageY - startYMove;
-
-                               if (diff > 0) {
-                                       if (nextRow && diff - nextRowHeightLast > nextRowHeight) {
-                                               moveToRow = nextRow;
-
-                                               if (moveToRow !== row) {
-                                                       startYMove = e.touches[0].pageY;
-                                                       moveToRow.getElement().parentNode.insertBefore(self.placeholderElement, moveToRow.getElement().nextSibling);
-                                                       self.moveRow(moveToRow, true);
-                                               }
-                                       }
-                               } else {
-                                       if (prevRow && -diff - prevRowHeightLast > prevRowHeight) {
-                                               moveToRow = prevRow;
-
-                                               if (moveToRow !== row) {
-                                                       startYMove = e.touches[0].pageY;
-                                                       moveToRow.getElement().parentNode.insertBefore(self.placeholderElement, moveToRow.getElement());
-                                                       self.moveRow(moveToRow, false);
-                                               }
-                                       }
-                               }
-
-                               if (moveToRow) {
-                                       currentRow = moveToRow;
-                                       nextRow = moveToRow.nextRow();
-                                       nextRowHeightLast = nextRowHeight;
-                                       nextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0;
-                                       prevRow = moveToRow.prevRow();
-                                       prevRowHeightLast = prevRowHeight;
-                                       prevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0;
-                               }
-                       }
-               });
-
-               element.addEventListener("touchend", function (e) {
-                       if (self.checkTimeout) {
-                               clearTimeout(self.checkTimeout);
-                       }
-                       if (self.moving) {
-                               self.endMove(e);
-                               self.touchMove = false;
-                       }
-               });
-       };
-
-       MoveRows.prototype._bindMouseMove = function () {
-               var self = this;
-
-               self.table.rowManager.getDisplayRows().forEach(function (row) {
-                       if ((row.type === "row" || row.type === "group") && row.modules.moveRow.mousemove) {
-                               row.getElement().addEventListener("mousemove", row.modules.moveRow.mousemove);
-                       }
-               });
-       };
-
-       MoveRows.prototype._unbindMouseMove = function () {
-               var self = this;
-
-               self.table.rowManager.getDisplayRows().forEach(function (row) {
-                       if ((row.type === "row" || row.type === "group") && row.modules.moveRow.mousemove) {
-                               row.getElement().removeEventListener("mousemove", row.modules.moveRow.mousemove);
-                       }
-               });
-       };
-
-       MoveRows.prototype.startMove = function (e, row) {
-               var element = row.getElement();
-
-               this.setStartPosition(e, row);
-
-               this.moving = row;
-
-               this.table.element.classList.add("tabulator-block-select");
-
-               //create placeholder
-               this.placeholderElement.style.width = row.getWidth() + "px";
-               this.placeholderElement.style.height = row.getHeight() + "px";
-
-               if (!this.connection) {
-                       element.parentNode.insertBefore(this.placeholderElement, element);
-                       element.parentNode.removeChild(element);
-               } else {
-                       this.table.element.classList.add("tabulator-movingrow-sending");
-                       this.connectToTables(row);
-               }
-
-               //create hover element
-               this.hoverElement = element.cloneNode(true);
-               this.hoverElement.classList.add("tabulator-moving");
-
-               if (this.connection) {
-                       document.body.appendChild(this.hoverElement);
-                       this.hoverElement.style.left = "0";
-                       this.hoverElement.style.top = "0";
-                       this.hoverElement.style.width = this.table.element.clientWidth + "px";
-                       this.hoverElement.style.whiteSpace = "nowrap";
-                       this.hoverElement.style.overflow = "hidden";
-                       this.hoverElement.style.pointerEvents = "none";
-               } else {
-                       this.table.rowManager.getTableElement().appendChild(this.hoverElement);
-
-                       this.hoverElement.style.left = "0";
-                       this.hoverElement.style.top = "0";
-
-                       this._bindMouseMove();
-               }
-
-               document.body.addEventListener("mousemove", this.moveHover);
-               document.body.addEventListener("mouseup", this.endMove);
-
-               this.moveHover(e);
-       };
-
-       MoveRows.prototype.setStartPosition = function (e, row) {
-               var pageX = this.touchMove ? e.touches[0].pageX : e.pageX,
-                   pageY = this.touchMove ? e.touches[0].pageY : e.pageY,
-                   element,
-                   position;
-
-               element = row.getElement();
-               if (this.connection) {
-                       position = element.getBoundingClientRect();
-
-                       this.startX = position.left - pageX + window.pageXOffset;
-                       this.startY = position.top - pageY + window.pageYOffset;
-               } else {
-                       this.startY = pageY - element.getBoundingClientRect().top;
-               }
-       };
-
-       MoveRows.prototype.endMove = function (e) {
-               if (!e || e.which === 1 || this.touchMove) {
-                       this._unbindMouseMove();
-
-                       if (!this.connection) {
-                               this.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);
-                               this.placeholderElement.parentNode.removeChild(this.placeholderElement);
-                       }
-
-                       this.hoverElement.parentNode.removeChild(this.hoverElement);
-
-                       this.table.element.classList.remove("tabulator-block-select");
-
-                       if (this.toRow) {
-                               this.table.rowManager.moveRow(this.moving, this.toRow, this.toRowAfter);
-                       }
-
-                       this.moving = false;
-                       this.toRow = false;
-                       this.toRowAfter = false;
-
-                       document.body.removeEventListener("mousemove", this.moveHover);
-                       document.body.removeEventListener("mouseup", this.endMove);
-
-                       if (this.connection) {
-                               this.table.element.classList.remove("tabulator-movingrow-sending");
-                               this.disconnectFromTables();
-                       }
-               }
-       };
-
-       MoveRows.prototype.moveRow = function (row, after) {
-               this.toRow = row;
-               this.toRowAfter = after;
-       };
-
-       MoveRows.prototype.moveHover = function (e) {
-               if (this.connection) {
-                       this.moveHoverConnections.call(this, e);
-               } else {
-                       this.moveHoverTable.call(this, e);
-               }
-       };
-
-       MoveRows.prototype.moveHoverTable = function (e) {
-               var rowHolder = this.table.rowManager.getElement(),
-                   scrollTop = rowHolder.scrollTop,
-                   yPos = (this.touchMove ? e.touches[0].pageY : e.pageY) - rowHolder.getBoundingClientRect().top + scrollTop,
-                   scrollPos;
-
-               this.hoverElement.style.top = yPos - this.startY + "px";
-       };
-
-       MoveRows.prototype.moveHoverConnections = function (e) {
-               this.hoverElement.style.left = this.startX + (this.touchMove ? e.touches[0].pageX : e.pageX) + "px";
-               this.hoverElement.style.top = this.startY + (this.touchMove ? e.touches[0].pageY : e.pageY) + "px";
-       };
-
-       //establish connection with other tables
-       MoveRows.prototype.connectToTables = function (row) {
-               var self = this,
-                   connections = this.table.modules.comms.getConnections(this.connection);
-
-               this.table.options.movableRowsSendingStart.call(this.table, connections);
-
-               this.table.modules.comms.send(this.connection, "moveRow", "connect", {
-                       row: row
-               });
-       };
-
-       //disconnect from other tables
-       MoveRows.prototype.disconnectFromTables = function () {
-               var self = this,
-                   connections = this.table.modules.comms.getConnections(this.connection);
-
-               this.table.options.movableRowsSendingStop.call(this.table, connections);
-
-               this.table.modules.comms.send(this.connection, "moveRow", "disconnect");
-       };
-
-       //accept incomming connection
-       MoveRows.prototype.connect = function (table, row) {
-               var self = this;
-               if (!this.connectedTable) {
-                       this.connectedTable = table;
-                       this.connectedRow = row;
-
-                       this.table.element.classList.add("tabulator-movingrow-receiving");
-
-                       self.table.rowManager.getDisplayRows().forEach(function (row) {
-                               if (row.type === "row" && row.modules.moveRow && row.modules.moveRow.mouseup) {
-                                       row.getElement().addEventListener("mouseup", row.modules.moveRow.mouseup);
-                               }
-                       });
-
-                       self.tableRowDropEvent = self.tableRowDrop.bind(self);
-
-                       self.table.element.addEventListener("mouseup", self.tableRowDropEvent);
-
-                       this.table.options.movableRowsReceivingStart.call(this.table, row, table);
-
-                       return true;
-               } else {
-                       console.warn("Move Row Error - Table cannot accept connection, already connected to table:", this.connectedTable);
-                       return false;
-               }
-       };
-
-       //close incomming connection
-       MoveRows.prototype.disconnect = function (table) {
-               var self = this;
-               if (table === this.connectedTable) {
-                       this.connectedTable = false;
-                       this.connectedRow = false;
-
-                       this.table.element.classList.remove("tabulator-movingrow-receiving");
-
-                       self.table.rowManager.getDisplayRows().forEach(function (row) {
-                               if (row.type === "row" && row.modules.moveRow && row.modules.moveRow.mouseup) {
-                                       row.getElement().removeEventListener("mouseup", row.modules.moveRow.mouseup);
-                               }
-                       });
-
-                       self.table.element.removeEventListener("mouseup", self.tableRowDropEvent);
-
-                       this.table.options.movableRowsReceivingStop.call(this.table, table);
-               } else {
-                       console.warn("Move Row Error - trying to disconnect from non connected table");
-               }
-       };
-
-       MoveRows.prototype.dropComplete = function (table, row, success) {
-               var sender = false;
-
-               if (success) {
-
-                       switch (_typeof(this.table.options.movableRowsSender)) {
-                               case "string":
-                                       sender = this.senders[this.table.options.movableRowsSender];
-                                       break;
-
-                               case "function":
-                                       sender = this.table.options.movableRowsSender;
-                                       break;
-                       }
-
-                       if (sender) {
-                               sender.call(this, this.moving.getComponent(), row ? row.getComponent() : undefined, table);
-                       } else {
-                               if (this.table.options.movableRowsSender) {
-                                       console.warn("Mover Row Error - no matching sender found:", this.table.options.movableRowsSender);
-                               }
-                       }
-
-                       this.table.options.movableRowsSent.call(this.table, this.moving.getComponent(), row ? row.getComponent() : undefined, table);
-               } else {
-                       this.table.options.movableRowsSentFailed.call(this.table, this.moving.getComponent(), row ? row.getComponent() : undefined, table);
-               }
-
-               this.endMove();
-       };
-
-       MoveRows.prototype.tableRowDrop = function (e, row) {
-               var receiver = false,
-                   success = false;
-
-               e.stopImmediatePropagation();
-
-               switch (_typeof(this.table.options.movableRowsReceiver)) {
-                       case "string":
-                               receiver = this.receivers[this.table.options.movableRowsReceiver];
-                               break;
-
-                       case "function":
-                               receiver = this.table.options.movableRowsReceiver;
-                               break;
-               }
-
-               if (receiver) {
-                       success = receiver.call(this, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);
-               } else {
-                       console.warn("Mover Row Error - no matching receiver found:", this.table.options.movableRowsReceiver);
-               }
-
-               if (success) {
-                       this.table.options.movableRowsReceived.call(this.table, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);
-               } else {
-                       this.table.options.movableRowsReceivedFailed.call(this.table, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);
-               }
-
-               this.table.modules.comms.send(this.connectedTable, "moveRow", "dropcomplete", {
-                       row: row,
-                       success: success
-               });
-       };
-
-       MoveRows.prototype.receivers = {
-               insert: function insert(fromRow, toRow, fromTable) {
-                       this.table.addRow(fromRow.getData(), undefined, toRow);
-                       return true;
-               },
-
-               add: function add(fromRow, toRow, fromTable) {
-                       this.table.addRow(fromRow.getData());
-                       return true;
-               },
-
-               update: function update(fromRow, toRow, fromTable) {
-                       if (toRow) {
-                               toRow.update(fromRow.getData());
-                               return true;
-                       }
-
-                       return false;
-               },
-
-               replace: function replace(fromRow, toRow, fromTable) {
-                       if (toRow) {
-                               this.table.addRow(fromRow.getData(), undefined, toRow);
-                               toRow.delete();
-                               return true;
-                       }
-
-                       return false;
-               }
-       };
-
-       MoveRows.prototype.senders = {
-               delete: function _delete(fromRow, toRow, toTable) {
-                       fromRow.delete();
-               }
-       };
-
-       MoveRows.prototype.commsReceived = function (table, action, data) {
-               switch (action) {
-                       case "connect":
-                               return this.connect(table, data.row);
-                               break;
-
-                       case "disconnect":
-                               return this.disconnect(table);
-                               break;
-
-                       case "dropcomplete":
-                               return this.dropComplete(table, data.row, data.success);
-                               break;
-               }
-       };
-
-       Tabulator.prototype.registerModule("moveRow", MoveRows);
-       var Mutator = function Mutator(table) {
-               this.table = table; //hold Tabulator object
-               this.allowedTypes = ["", "data", "edit", "clipboard"]; //list of muatation types
-               this.enabled = true;
-       };
-
-       //initialize column mutator
-       Mutator.prototype.initializeColumn = function (column) {
-               var self = this,
-                   match = false,
-                   config = {};
-
-               this.allowedTypes.forEach(function (type) {
-                       var key = "mutator" + (type.charAt(0).toUpperCase() + type.slice(1)),
-                           mutator;
-
-                       if (column.definition[key]) {
-                               mutator = self.lookupMutator(column.definition[key]);
-
-                               if (mutator) {
-                                       match = true;
-
-                                       config[key] = {
-                                               mutator: mutator,
-                                               params: column.definition[key + "Params"] || {}
-                                       };
-                               }
-                       }
-               });
-
-               if (match) {
-                       column.modules.mutate = config;
-               }
-       };
-
-       Mutator.prototype.lookupMutator = function (value) {
-               var mutator = false;
-
-               //set column mutator
-               switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
-                       case "string":
-                               if (this.mutators[value]) {
-                                       mutator = this.mutators[value];
-                               } else {
-                                       console.warn("Mutator Error - No such mutator found, ignoring: ", value);
-                               }
-                               break;
-
-                       case "function":
-                               mutator = value;
-                               break;
-               }
-
-               return mutator;
-       };
-
-       //apply mutator to row
-       Mutator.prototype.transformRow = function (data, type, updatedData) {
-               var self = this,
-                   key = "mutator" + (type.charAt(0).toUpperCase() + type.slice(1)),
-                   value;
-
-               if (this.enabled) {
-
-                       self.table.columnManager.traverse(function (column) {
-                               var mutator, params, component;
-
-                               if (column.modules.mutate) {
-                                       mutator = column.modules.mutate[key] || column.modules.mutate.mutator || false;
-
-                                       if (mutator) {
-                                               value = column.getFieldValue(typeof updatedData !== "undefined" ? updatedData : data);
-
-                                               if (type == "data" || typeof value !== "undefined") {
-                                                       component = column.getComponent();
-                                                       params = typeof mutator.params === "function" ? mutator.params(value, data, type, component) : mutator.params;
-                                                       column.setFieldValue(data, mutator.mutator(value, data, type, params, component));
-                                               }
-                                       }
-                               }
-                       });
-               }
-
-               return data;
-       };
-
-       //apply mutator to new cell value
-       Mutator.prototype.transformCell = function (cell, value) {
-               var mutator = cell.column.modules.mutate.mutatorEdit || cell.column.modules.mutate.mutator || false,
-                   tempData = {};
-
-               if (mutator) {
-                       tempData = Object.assign(tempData, cell.row.getData());
-                       cell.column.setFieldValue(tempData, value);
-                       return mutator.mutator(value, tempData, "edit", mutator.params, cell.getComponent());
-               } else {
-                       return value;
-               }
-       };
-
-       Mutator.prototype.enable = function () {
-               this.enabled = true;
-       };
-
-       Mutator.prototype.disable = function () {
-               this.enabled = false;
-       };
-
-       //default mutators
-       Mutator.prototype.mutators = {};
-
-       Tabulator.prototype.registerModule("mutator", Mutator);
-       var Page = function Page(table) {
-
-               this.table = table; //hold Tabulator object
-
-               this.mode = "local";
-               this.progressiveLoad = false;
-
-               this.size = 0;
-               this.page = 1;
-               this.count = 5;
-               this.max = 1;
-
-               this.displayIndex = 0; //index in display pipeline
-
-               this.initialLoad = true;
-
-               this.pageSizes = [];
-
-               this.dataReceivedNames = {};
-               this.dataSentNames = {};
-
-               this.createElements();
-       };
-
-       Page.prototype.createElements = function () {
-
-               var button;
-
-               this.element = document.createElement("span");
-               this.element.classList.add("tabulator-paginator");
-
-               this.pagesElement = document.createElement("span");
-               this.pagesElement.classList.add("tabulator-pages");
-
-               button = document.createElement("button");
-               button.classList.add("tabulator-page");
-               button.setAttribute("type", "button");
-               button.setAttribute("role", "button");
-               button.setAttribute("aria-label", "");
-               button.setAttribute("title", "");
-
-               this.firstBut = button.cloneNode(true);
-               this.firstBut.setAttribute("data-page", "first");
-
-               this.prevBut = button.cloneNode(true);
-               this.prevBut.setAttribute("data-page", "prev");
-
-               this.nextBut = button.cloneNode(true);
-               this.nextBut.setAttribute("data-page", "next");
-
-               this.lastBut = button.cloneNode(true);
-               this.lastBut.setAttribute("data-page", "last");
-
-               if (this.table.options.paginationSizeSelector) {
-                       this.pageSizeSelect = document.createElement("select");
-                       this.pageSizeSelect.classList.add("tabulator-page-size");
-               }
-       };
-
-       Page.prototype.generatePageSizeSelectList = function () {
-               var _this63 = this;
-
-               var pageSizes = [];
-
-               if (this.pageSizeSelect) {
-
-                       if (Array.isArray(this.table.options.paginationSizeSelector)) {
-                               pageSizes = this.table.options.paginationSizeSelector;
-                               this.pageSizes = pageSizes;
-
-                               if (this.pageSizes.indexOf(this.size) == -1) {
-                                       pageSizes.unshift(this.size);
-                               }
-                       } else {
-
-                               if (this.pageSizes.indexOf(this.size) == -1) {
-                                       pageSizes = [];
-
-                                       for (var i = 1; i < 5; i++) {
-                                               pageSizes.push(this.size * i);
-                                       }
-
-                                       this.pageSizes = pageSizes;
-                               } else {
-                                       pageSizes = this.pageSizes;
-                               }
-                       }
-
-                       while (this.pageSizeSelect.firstChild) {
-                               this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);
-                       }pageSizes.forEach(function (item) {
-                               var itemEl = document.createElement("option");
-                               itemEl.value = item;
-                               itemEl.innerHTML = item;
-
-                               _this63.pageSizeSelect.appendChild(itemEl);
-                       });
-
-                       this.pageSizeSelect.value = this.size;
-               }
-       };
-
-       //setup pageination
-       Page.prototype.initialize = function (hidden) {
-               var self = this,
-                   pageSelectLabel,
-                   testElRow,
-                   testElCell;
-
-               //update param names
-               this.dataSentNames = Object.assign({}, this.paginationDataSentNames);
-               this.dataSentNames = Object.assign(this.dataSentNames, this.table.options.paginationDataSent);
-
-               this.dataReceivedNames = Object.assign({}, this.paginationDataReceivedNames);
-               this.dataReceivedNames = Object.assign(this.dataReceivedNames, this.table.options.paginationDataReceived);
-
-               //build pagination element
-
-               //bind localizations
-               self.table.modules.localize.bind("pagination|first", function (value) {
-                       self.firstBut.innerHTML = value;
-               });
-
-               self.table.modules.localize.bind("pagination|first_title", function (value) {
-                       self.firstBut.setAttribute("aria-label", value);
-                       self.firstBut.setAttribute("title", value);
-               });
-
-               self.table.modules.localize.bind("pagination|prev", function (value) {
-                       self.prevBut.innerHTML = value;
-               });
-
-               self.table.modules.localize.bind("pagination|prev_title", function (value) {
-                       self.prevBut.setAttribute("aria-label", value);
-                       self.prevBut.setAttribute("title", value);
-               });
-
-               self.table.modules.localize.bind("pagination|next", function (value) {
-                       self.nextBut.innerHTML = value;
-               });
-
-               self.table.modules.localize.bind("pagination|next_title", function (value) {
-                       self.nextBut.setAttribute("aria-label", value);
-                       self.nextBut.setAttribute("title", value);
-               });
-
-               self.table.modules.localize.bind("pagination|last", function (value) {
-                       self.lastBut.innerHTML = value;
-               });
-
-               self.table.modules.localize.bind("pagination|last_title", function (value) {
-                       self.lastBut.setAttribute("aria-label", value);
-                       self.lastBut.setAttribute("title", value);
-               });
-
-               //click bindings
-               self.firstBut.addEventListener("click", function () {
-                       self.setPage(1);
-               });
-
-               self.prevBut.addEventListener("click", function () {
-                       self.previousPage();
-               });
-
-               self.nextBut.addEventListener("click", function () {
-                       self.nextPage().then(function () {}).catch(function () {});
-               });
-
-               self.lastBut.addEventListener("click", function () {
-                       self.setPage(self.max);
-               });
-
-               if (self.table.options.paginationElement) {
-                       self.element = self.table.options.paginationElement;
-               }
-
-               if (this.pageSizeSelect) {
-                       pageSelectLabel = document.createElement("label");
-
-                       self.table.modules.localize.bind("pagination|page_size", function (value) {
-                               self.pageSizeSelect.setAttribute("aria-label", value);
-                               self.pageSizeSelect.setAttribute("title", value);
-                               pageSelectLabel.innerHTML = value;
-                       });
-
-                       self.element.appendChild(pageSelectLabel);
-                       self.element.appendChild(self.pageSizeSelect);
-
-                       self.pageSizeSelect.addEventListener("change", function (e) {
-                               self.setPageSize(self.pageSizeSelect.value);
-                               self.setPage(1).then(function () {}).catch(function () {});
-                       });
-               }
-
-               //append to DOM
-               self.element.appendChild(self.firstBut);
-               self.element.appendChild(self.prevBut);
-               self.element.appendChild(self.pagesElement);
-               self.element.appendChild(self.nextBut);
-               self.element.appendChild(self.lastBut);
-
-               if (!self.table.options.paginationElement && !hidden) {
-                       self.table.footerManager.append(self.element, self);
-               }
-
-               //set default values
-               self.mode = self.table.options.pagination;
-
-               if (self.table.options.paginationSize) {
-                       self.size = self.table.options.paginationSize;
-               } else {
-                       testElRow = document.createElement("div");
-                       testElRow.classList.add("tabulator-row");
-                       testElRow.style.visibility = hidden;
-
-                       testElCell = document.createElement("div");
-                       testElCell.classList.add("tabulator-cell");
-                       testElCell.innerHTML = "Page Row Test";
-
-                       testElRow.appendChild(testElCell);
-
-                       self.table.rowManager.getTableElement().appendChild(testElRow);
-
-                       self.size = Math.floor(self.table.rowManager.getElement().clientHeight / testElRow.offsetHeight);
-
-                       self.table.rowManager.getTableElement().removeChild(testElRow);
-               }
-
-               // self.page = self.table.options.paginationInitialPage || 1;
-               self.count = self.table.options.paginationButtonCount;
-
-               self.generatePageSizeSelectList();
-       };
-
-       Page.prototype.initializeProgressive = function (mode) {
-               this.initialize(true);
-               this.mode = "progressive_" + mode;
-               this.progressiveLoad = true;
-       };
-
-       Page.prototype.setDisplayIndex = function (index) {
-               this.displayIndex = index;
-       };
-
-       Page.prototype.getDisplayIndex = function () {
-               return this.displayIndex;
-       };
-
-       //calculate maximum page from number of rows
-       Page.prototype.setMaxRows = function (rowCount) {
-               if (!rowCount) {
-                       this.max = 1;
-               } else {
-                       this.max = Math.ceil(rowCount / this.size);
-               }
-
-               if (this.page > this.max) {
-                       this.page = this.max;
-               }
-       };
-
-       //reset to first page without triggering action
-       Page.prototype.reset = function (force, columnsChanged) {
-               if (this.mode == "local" || force) {
-                       this.page = 1;
-               }
-
-               if (columnsChanged) {
-                       this.initialLoad = true;
-               }
-
-               return true;
-       };
-
-       //set the maxmum page
-       Page.prototype.setMaxPage = function (max) {
-
-               max = parseInt(max);
-
-               this.max = max || 1;
-
-               if (this.page > this.max) {
-                       this.page = this.max;
-                       this.trigger();
-               }
-       };
-
-       //set current page number
-       Page.prototype.setPage = function (page) {
-               var _this64 = this;
-
-               var self = this;
-
-               return new Promise(function (resolve, reject) {
-
-                       page = parseInt(page);
-
-                       if (page > 0 && page <= _this64.max) {
-                               _this64.page = page;
-                               _this64.trigger().then(function () {
-                                       resolve();
-                               }).catch(function () {
-                                       reject();
-                               });
-
-                               if (self.table.options.persistence && self.table.modExists("persistence", true) && self.table.modules.persistence.config.page) {
-                                       self.table.modules.persistence.save("page");
-                               }
-                       } else {
-                               console.warn("Pagination Error - Requested page is out of range of 1 - " + _this64.max + ":", page);
-                               reject();
-                       }
-               });
-       };
-
-       Page.prototype.setPageToRow = function (row) {
-               var _this65 = this;
-
-               return new Promise(function (resolve, reject) {
-
-                       var rows = _this65.table.rowManager.getDisplayRows(_this65.displayIndex - 1);
-                       var index = rows.indexOf(row);
-
-                       if (index > -1) {
-                               var page = Math.ceil((index + 1) / _this65.size);
-
-                               _this65.setPage(page).then(function () {
-                                       resolve();
-                               }).catch(function () {
-                                       reject();
-                               });
-                       } else {
-                               console.warn("Pagination Error - Requested row is not visible");
-                               reject();
-                       }
-               });
-       };
-
-       Page.prototype.setPageSize = function (size) {
-               size = parseInt(size);
-
-               if (size > 0) {
-                       this.size = size;
-               }
-
-               if (this.pageSizeSelect) {
-                       // this.pageSizeSelect.value = size;
-                       this.generatePageSizeSelectList();
-               }
-
-               if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.page) {
-                       this.table.modules.persistence.save("page");
-               }
-       };
-
-       //setup the pagination buttons
-       Page.prototype._setPageButtons = function () {
-               var self = this;
-
-               var leftSize = Math.floor((this.count - 1) / 2);
-               var rightSize = Math.ceil((this.count - 1) / 2);
-               var min = this.max - this.page + leftSize + 1 < this.count ? this.max - this.count + 1 : Math.max(this.page - leftSize, 1);
-               var max = this.page <= rightSize ? Math.min(this.count, this.max) : Math.min(this.page + rightSize, this.max);
-
-               while (self.pagesElement.firstChild) {
-                       self.pagesElement.removeChild(self.pagesElement.firstChild);
-               }if (self.page == 1) {
-                       self.firstBut.disabled = true;
-                       self.prevBut.disabled = true;
-               } else {
-                       self.firstBut.disabled = false;
-                       self.prevBut.disabled = false;
-               }
-
-               if (self.page == self.max) {
-                       self.lastBut.disabled = true;
-                       self.nextBut.disabled = true;
-               } else {
-                       self.lastBut.disabled = false;
-                       self.nextBut.disabled = false;
-               }
-
-               for (var i = min; i <= max; i++) {
-                       if (i > 0 && i <= self.max) {
-                               self.pagesElement.appendChild(self._generatePageButton(i));
-                       }
-               }
-
-               this.footerRedraw();
-       };
-
-       Page.prototype._generatePageButton = function (page) {
-               var self = this,
-                   button = document.createElement("button");
-
-               button.classList.add("tabulator-page");
-               if (page == self.page) {
-                       button.classList.add("active");
-               }
-
-               button.setAttribute("type", "button");
-               button.setAttribute("role", "button");
-               button.setAttribute("aria-label", "Show Page " + page);
-               button.setAttribute("title", "Show Page " + page);
-               button.setAttribute("data-page", page);
-               button.textContent = page;
-
-               button.addEventListener("click", function (e) {
-                       self.setPage(page);
-               });
-
-               return button;
-       };
-
-       //previous page
-       Page.prototype.previousPage = function () {
-               var _this66 = this;
-
-               return new Promise(function (resolve, reject) {
-                       if (_this66.page > 1) {
-                               _this66.page--;
-                               _this66.trigger().then(function () {
-                                       resolve();
-                               }).catch(function () {
-                                       reject();
-                               });
-
-                               if (_this66.table.options.persistence && _this66.table.modExists("persistence", true) && _this66.table.modules.persistence.config.page) {
-                                       _this66.table.modules.persistence.save("page");
-                               }
-                       } else {
-                               console.warn("Pagination Error - Previous page would be less than page 1:", 0);
-                               reject();
-                       }
-               });
-       };
-
-       //next page
-       Page.prototype.nextPage = function () {
-               var _this67 = this;
-
-               return new Promise(function (resolve, reject) {
-                       if (_this67.page < _this67.max) {
-                               _this67.page++;
-                               _this67.trigger().then(function () {
-                                       resolve();
-                               }).catch(function () {
-                                       reject();
-                               });
-
-                               if (_this67.table.options.persistence && _this67.table.modExists("persistence", true) && _this67.table.modules.persistence.config.page) {
-                                       _this67.table.modules.persistence.save("page");
-                               }
-                       } else {
-                               if (!_this67.progressiveLoad) {
-                                       console.warn("Pagination Error - Next page would be greater than maximum page of " + _this67.max + ":", _this67.max + 1);
-                               }
-                               reject();
-                       }
-               });
-       };
-
-       //return current page number
-       Page.prototype.getPage = function () {
-               return this.page;
-       };
-
-       //return max page number
-       Page.prototype.getPageMax = function () {
-               return this.max;
-       };
-
-       Page.prototype.getPageSize = function (size) {
-               return this.size;
-       };
-
-       Page.prototype.getMode = function () {
-               return this.mode;
-       };
-
-       //return appropriate rows for current page
-       Page.prototype.getRows = function (data) {
-               var output, start, end;
-
-               if (this.mode == "local") {
-                       output = [];
-                       start = this.size * (this.page - 1);
-                       end = start + parseInt(this.size);
-
-                       this._setPageButtons();
-
-                       for (var i = start; i < end; i++) {
-                               if (data[i]) {
-                                       output.push(data[i]);
-                               }
-                       }
-
-                       return output;
-               } else {
-
-                       this._setPageButtons();
-
-                       return data.slice(0);
-               }
-       };
-
-       Page.prototype.trigger = function () {
-               var _this68 = this;
-
-               var left;
-
-               return new Promise(function (resolve, reject) {
-
-                       switch (_this68.mode) {
-                               case "local":
-                                       left = _this68.table.rowManager.scrollLeft;
-
-                                       _this68.table.rowManager.refreshActiveData("page");
-                                       _this68.table.rowManager.scrollHorizontal(left);
-
-                                       _this68.table.options.pageLoaded.call(_this68.table, _this68.getPage());
-                                       resolve();
-                                       break;
-
-                               case "remote":
-                               case "progressive_load":
-                               case "progressive_scroll":
-                                       _this68.table.modules.ajax.blockActiveRequest();
-                                       _this68._getRemotePage().then(function () {
-                                               resolve();
-                                       }).catch(function () {
-                                               reject();
-                                       });
-                                       break;
-
-                               default:
-                                       console.warn("Pagination Error - no such pagination mode:", _this68.mode);
-                                       reject();
-                       }
-               });
-       };
-
-       Page.prototype._getRemotePage = function () {
-               var _this69 = this;
-
-               var self = this,
-                   oldParams,
-                   pageParams;
-
-               return new Promise(function (resolve, reject) {
-
-                       if (!self.table.modExists("ajax", true)) {
-                               reject();
-                       }
-
-                       //record old params and restore after request has been made
-                       oldParams = Tabulator.prototype.helpers.deepClone(self.table.modules.ajax.getParams() || {});
-                       pageParams = self.table.modules.ajax.getParams();
-
-                       //configure request params
-                       pageParams[_this69.dataSentNames.page] = self.page;
-
-                       //set page size if defined
-                       if (_this69.size) {
-                               pageParams[_this69.dataSentNames.size] = _this69.size;
-                       }
-
-                       //set sort data if defined
-                       if (_this69.table.options.ajaxSorting && _this69.table.modExists("sort")) {
-                               var sorters = self.table.modules.sort.getSort();
-
-                               sorters.forEach(function (item) {
-                                       delete item.column;
-                               });
-
-                               pageParams[_this69.dataSentNames.sorters] = sorters;
-                       }
-
-                       //set filter data if defined
-                       if (_this69.table.options.ajaxFiltering && _this69.table.modExists("filter")) {
-                               var filters = self.table.modules.filter.getFilters(true, true);
-                               pageParams[_this69.dataSentNames.filters] = filters;
-                       }
-
-                       self.table.modules.ajax.setParams(pageParams);
-
-                       self.table.modules.ajax.sendRequest(_this69.progressiveLoad).then(function (data) {
-                               self._parseRemoteData(data);
-                               resolve();
-                       }).catch(function (e) {
-                               reject();
-                       });
-
-                       self.table.modules.ajax.setParams(oldParams);
-               });
-       };
-
-       Page.prototype._parseRemoteData = function (data) {
-               var self = this,
-                   left,
-                   data,
-                   margin;
-
-               if (typeof data[this.dataReceivedNames.last_page] === "undefined") {
-                       console.warn("Remote Pagination Error - Server response missing '" + this.dataReceivedNames.last_page + "' property");
-               }
-
-               if (data[this.dataReceivedNames.data]) {
-                       this.max = parseInt(data[this.dataReceivedNames.last_page]) || 1;
-
-                       if (this.progressiveLoad) {
-                               switch (this.mode) {
-                                       case "progressive_load":
-
-                                               if (this.page == 1) {
-                                                       this.table.rowManager.setData(data[this.dataReceivedNames.data], false, this.initialLoad && this.page == 1);
-                                               } else {
-                                                       this.table.rowManager.addRows(data[this.dataReceivedNames.data]);
-                                               }
-
-                                               if (this.page < this.max) {
-                                                       setTimeout(function () {
-                                                               self.nextPage().then(function () {}).catch(function () {});
-                                                       }, self.table.options.ajaxProgressiveLoadDelay);
-                                               }
-                                               break;
-
-                                       case "progressive_scroll":
-                                               data = this.table.rowManager.getData().concat(data[this.dataReceivedNames.data]);
-
-                                               this.table.rowManager.setData(data, true, this.initialLoad && this.page == 1);
-
-                                               margin = this.table.options.ajaxProgressiveLoadScrollMargin || this.table.rowManager.element.clientHeight * 2;
-
-                                               if (self.table.rowManager.element.scrollHeight <= self.table.rowManager.element.clientHeight + margin) {
-                                                       self.nextPage().then(function () {}).catch(function () {});
-                                               }
-                                               break;
-                               }
-                       } else {
-                               left = this.table.rowManager.scrollLeft;
-
-                               this.table.rowManager.setData(data[this.dataReceivedNames.data], false, this.initialLoad && this.page == 1);
-
-                               this.table.rowManager.scrollHorizontal(left);
-
-                               this.table.columnManager.scrollHorizontal(left);
-
-                               this.table.options.pageLoaded.call(this.table, this.getPage());
-                       }
-
-                       this.initialLoad = false;
-               } else {
-                       console.warn("Remote Pagination Error - Server response missing '" + this.dataReceivedNames.data + "' property");
-               }
-       };
-
-       //handle the footer element being redrawn
-       Page.prototype.footerRedraw = function () {
-               var footer = this.table.footerManager.element;
-
-               if (Math.ceil(footer.clientWidth) - footer.scrollWidth < 0) {
-                       this.pagesElement.style.display = 'none';
-               } else {
-                       this.pagesElement.style.display = '';
-
-                       if (Math.ceil(footer.clientWidth) - footer.scrollWidth < 0) {
-                               this.pagesElement.style.display = 'none';
-                       }
-               }
-       };
-
-       //set the paramter names for pagination requests
-       Page.prototype.paginationDataSentNames = {
-               "page": "page",
-               "size": "size",
-               "sorters": "sorters",
-               // "sort_dir":"sort_dir",
-               "filters": "filters"
-               // "filter_value":"filter_value",
-               // "filter_type":"filter_type",
-       };
-
-       //set the property names for pagination responses
-       Page.prototype.paginationDataReceivedNames = {
-               "current_page": "current_page",
-               "last_page": "last_page",
-               "data": "data"
-       };
-
-       Tabulator.prototype.registerModule("page", Page);
-
-       var Persistence = function Persistence(table) {
-               this.table = table; //hold Tabulator object
-               this.mode = "";
-               this.id = "";
-               // this.persistProps = ["field", "width", "visible"];
-               this.defWatcherBlock = false;
-               this.config = {};
-               this.readFunc = false;
-               this.writeFunc = false;
-       };
-
-       // Test for whether localStorage is available for use.
-       Persistence.prototype.localStorageTest = function () {
-               var testKey = "_tabulator_test";
-
-               try {
-                       window.localStorage.setItem(testKey, testKey);
-                       window.localStorage.removeItem(testKey);
-                       return true;
-               } catch (e) {
-                       return false;
-               }
-       };
-
-       //setup parameters
-       Persistence.prototype.initialize = function () {
-               //determine persistent layout storage type
-
-               var mode = this.table.options.persistenceMode,
-                   id = this.table.options.persistenceID,
-                   retreivedData;
-
-               this.mode = mode !== true ? mode : this.localStorageTest() ? "local" : "cookie";
-
-               if (this.table.options.persistenceReaderFunc) {
-                       if (typeof this.table.options.persistenceReaderFunc === "function") {
-                               this.readFunc = this.table.options.persistenceReaderFunc;
-                       } else {
-                               if (this.readers[this.table.options.persistenceReaderFunc]) {
-                                       this.readFunc = this.readers[this.table.options.persistenceReaderFunc];
-                               } else {
-                                       console.warn("Persistence Read Error - invalid reader set", this.table.options.persistenceReaderFunc);
-                               }
-                       }
-               } else {
-                       if (this.readers[this.mode]) {
-                               this.readFunc = this.readers[this.mode];
-                       } else {
-                               console.warn("Persistence Read Error - invalid reader set", this.mode);
-                       }
-               }
-
-               if (this.table.options.persistenceWriterFunc) {
-                       if (typeof this.table.options.persistenceWriterFunc === "function") {
-                               this.writeFunc = this.table.options.persistenceWriterFunc;
-                       } else {
-                               if (this.readers[this.table.options.persistenceWriterFunc]) {
-                                       this.writeFunc = this.readers[this.table.options.persistenceWriterFunc];
-                               } else {
-                                       console.warn("Persistence Write Error - invalid reader set", this.table.options.persistenceWriterFunc);
-                               }
-                       }
-               } else {
-                       if (this.writers[this.mode]) {
-                               this.writeFunc = this.writers[this.mode];
-                       } else {
-                               console.warn("Persistence Write Error - invalid writer set", this.mode);
-                       }
-               }
-
-               //set storage tag
-               this.id = "tabulator-" + (id || this.table.element.getAttribute("id") || "");
-
-               this.config = {
-                       sort: this.table.options.persistence === true || this.table.options.persistence.sort,
-                       filter: this.table.options.persistence === true || this.table.options.persistence.filter,
-                       group: this.table.options.persistence === true || this.table.options.persistence.group,
-                       page: this.table.options.persistence === true || this.table.options.persistence.page,
-                       columns: this.table.options.persistence === true ? ["title", "width", "visible"] : this.table.options.persistence.columns
-               };
-
-               //load pagination data if needed
-               if (this.config.page) {
-                       retreivedData = this.retreiveData("page");
-
-                       if (retreivedData) {
-                               if (typeof retreivedData.paginationSize !== "undefined" && (this.config.page === true || this.config.page.size)) {
-                                       this.table.options.paginationSize = retreivedData.paginationSize;
-                               }
-
-                               if (typeof retreivedData.paginationInitialPage !== "undefined" && (this.config.page === true || this.config.page.page)) {
-                                       this.table.options.paginationInitialPage = retreivedData.paginationInitialPage;
-                               }
-                       }
-               }
-
-               //load group data if needed
-               if (this.config.group) {
-                       retreivedData = this.retreiveData("group");
-
-                       if (retreivedData) {
-                               if (typeof retreivedData.groupBy !== "undefined" && (this.config.group === true || this.config.group.groupBy)) {
-                                       this.table.options.groupBy = retreivedData.groupBy;
-                               }
-                               if (typeof retreivedData.groupStartOpen !== "undefined" && (this.config.group === true || this.config.group.groupStartOpen)) {
-                                       this.table.options.groupStartOpen = retreivedData.groupStartOpen;
-                               }
-                               if (typeof retreivedData.groupHeader !== "undefined" && (this.config.group === true || this.config.group.groupHeader)) {
-                                       this.table.options.groupHeader = retreivedData.groupHeader;
-                               }
-                       }
-               }
-       };
-
-       Persistence.prototype.initializeColumn = function (column) {
-               var self = this,
-                   def,
-                   keys;
-
-               if (this.config.columns) {
-                       this.defWatcherBlock = true;
-
-                       def = column.getDefinition();
-
-                       keys = this.config.columns === true ? Object.keys(def) : this.config.columns;
-
-                       keys.forEach(function (key) {
-                               var props = Object.getOwnPropertyDescriptor(def, key);
-                               var value = def[key];
-                               if (props) {
-                                       Object.defineProperty(def, key, {
-                                               set: function set(newValue) {
-                                                       value = newValue;
-
-                                                       if (!self.defWatcherBlock) {
-                                                               self.save("columns");
-                                                       }
-
-                                                       if (props.set) {
-                                                               props.set(newValue);
-                                                       }
-                                               },
-                                               get: function get() {
-                                                       if (props.get) {
-                                                               props.get();
-                                                       }
-                                                       return value;
-                                               }
-                                       });
-                               }
-                       });
-
-                       this.defWatcherBlock = false;
-               }
-       };
-
-       //load saved definitions
-       Persistence.prototype.load = function (type, current) {
-               var data = this.retreiveData(type);
-
-               if (current) {
-                       data = data ? this.mergeDefinition(current, data) : current;
-               }
-
-               return data;
-       };
-
-       //retreive data from memory
-       Persistence.prototype.retreiveData = function (type) {
-               return this.readFunc ? this.readFunc(this.id, type) : false;
-       };
-
-       //merge old and new column definitions
-       Persistence.prototype.mergeDefinition = function (oldCols, newCols) {
-               var self = this,
-                   output = [];
-
-               // oldCols = oldCols || [];
-               newCols = newCols || [];
-
-               newCols.forEach(function (column, to) {
-
-                       var from = self._findColumn(oldCols, column),
-                           keys;
-
-                       if (from) {
-
-                               if (self.config.columns === true || self.config.columns == undefined) {
-                                       keys = Object.keys(from);
-                                       keys.push("width");
-                               } else {
-                                       keys = self.config.columns;
-                               }
-
-                               keys.forEach(function (key) {
-                                       if (typeof column[key] !== "undefined") {
-                                               from[key] = column[key];
-                                       }
-                               });
-
-                               if (from.columns) {
-                                       from.columns = self.mergeDefinition(from.columns, column.columns);
-                               }
-
-                               output.push(from);
-                       }
-               });
-
-               oldCols.forEach(function (column, i) {
-                       var from = self._findColumn(newCols, column);
-                       if (!from) {
-                               if (output.length > i) {
-                                       output.splice(i, 0, column);
-                               } else {
-                                       output.push(column);
-                               }
-                       }
-               });
-
-               return output;
-       };
-
-       //find matching columns
-       Persistence.prototype._findColumn = function (columns, subject) {
-               var type = subject.columns ? "group" : subject.field ? "field" : "object";
-
-               return columns.find(function (col) {
-                       switch (type) {
-                               case "group":
-                                       return col.title === subject.title && col.columns.length === subject.columns.length;
-                                       break;
-
-                               case "field":
-                                       return col.field === subject.field;
-                                       break;
-
-                               case "object":
-                                       return col === subject;
-                                       break;
-                       }
-               });
-       };
-
-       //save data
-       Persistence.prototype.save = function (type) {
-               var data = {};
-
-               switch (type) {
-                       case "columns":
-                               data = this.parseColumns(this.table.columnManager.getColumns());
-                               break;
-
-                       case "filter":
-                               data = this.table.modules.filter.getFilters();
-                               break;
-
-                       case "sort":
-                               data = this.validateSorters(this.table.modules.sort.getSort());
-                               break;
-
-                       case "group":
-                               data = this.getGroupConfig();
-                               break;
-
-                       case "page":
-                               data = this.getPageConfig();
-                               break;
-               }
-
-               if (this.writeFunc) {
-                       this.writeFunc(this.id, type, data);
-               }
-       };
-
-       //ensure sorters contain no function data
-       Persistence.prototype.validateSorters = function (data) {
-               data.forEach(function (item) {
-                       item.column = item.field;
-                       delete item.field;
-               });
-
-               return data;
-       };
-
-       Persistence.prototype.getGroupConfig = function () {
-               if (this.config.group) {
-                       if (this.config.group === true || this.config.group.groupBy) {
-                               data.groupBy = this.table.options.groupBy;
-                       }
-
-                       if (this.config.group === true || this.config.group.groupStartOpen) {
-                               data.groupStartOpen = this.table.options.groupStartOpen;
-                       }
-
-                       if (this.config.group === true || this.config.group.groupHeader) {
-                               data.groupHeader = this.table.options.groupHeader;
-                       }
-               }
-
-               return data;
-       };
-
-       Persistence.prototype.getPageConfig = function () {
-               var data = {};
-
-               if (this.config.page) {
-                       if (this.config.page === true || this.config.page.size) {
-                               data.paginationSize = this.table.modules.page.getPageSize();
-                       }
-
-                       if (this.config.page === true || this.config.page.page) {
-                               data.paginationInitialPage = this.table.modules.page.getPage();
-                       }
-               }
-
-               return data;
-       };
-
-       //parse columns for data to store
-       Persistence.prototype.parseColumns = function (columns) {
-               var self = this,
-                   definitions = [];
-
-               columns.forEach(function (column) {
-                       var defStore = {},
-                           colDef = column.getDefinition(),
-                           keys;
-
-                       if (column.isGroup) {
-                               defStore.title = colDef.title;
-                               defStore.columns = self.parseColumns(column.getColumns());
-                       } else {
-                               defStore.field = column.getField();
-
-                               if (self.config.columns === true || self.config.columns == undefined) {
-                                       keys = Object.keys(colDef);
-                                       keys.push("width");
-                               } else {
-                                       keys = self.config.columns;
-                               }
-
-                               keys.forEach(function (key) {
-
-                                       switch (key) {
-                                               case "width":
-                                                       defStore.width = column.getWidth();
-                                                       break;
-                                               case "visible":
-                                                       defStore.visible = column.visible;
-                                                       break;
-
-                                               default:
-                                                       defStore[key] = colDef[key];
-                                       }
-                               });
-                       }
-
-                       definitions.push(defStore);
-               });
-
-               return definitions;
-       };
-
-       // read peristence information from storage
-       Persistence.prototype.readers = {
-               local: function local(id, type) {
-                       var data = localStorage.getItem(id + "-" + type);
-
-                       return data ? JSON.parse(data) : false;
-               },
-               cookie: function cookie(id, type) {
-                       var cookie = document.cookie,
-                           key = id + "-" + type,
-                           cookiePos = cookie.indexOf(key + "="),
-                           end,
-                           data;
-
-                       //if cookie exists, decode and load column data into tabulator
-                       if (cookiePos > -1) {
-                               cookie = cookie.substr(cookiePos);
-
-                               end = cookie.indexOf(";");
-
-                               if (end > -1) {
-                                       cookie = cookie.substr(0, end);
-                               }
-
-                               data = cookie.replace(key + "=", "");
-                       }
-
-                       return data ? JSON.parse(data) : false;
-               }
-       };
-
-       //write persistence information to storage
-       Persistence.prototype.writers = {
-               local: function local(id, type, data) {
-                       localStorage.setItem(id + "-" + type, JSON.stringify(data));
-               },
-               cookie: function cookie(id, type, data) {
-                       var expireDate = new Date();
-
-                       expireDate.setDate(expireDate.getDate() + 10000);
-
-                       document.cookie = id + "-" + type + "=" + JSON.stringify(data) + "; expires=" + expireDate.toUTCString();
-               }
-       };
-
-       Tabulator.prototype.registerModule("persistence", Persistence);
-
-       var Print = function Print(table) {
-               this.table = table; //hold Tabulator object
-               this.element = false;
-               this.manualBlock = false;
-       };
-
-       Print.prototype.initialize = function () {
-               window.addEventListener("beforeprint", this.replaceTable.bind(this));
-               window.addEventListener("afterprint", this.cleanup.bind(this));
-       };
-
-       Print.prototype.replaceTable = function () {
-               if (!this.manualBlock) {
-                       this.element = document.createElement("div");
-                       this.element.classList.add("tabulator-print-table");
-
-                       this.element.appendChild(this.table.modules.export.genereateTable(this.table.options.printConfig, this.table.options.printStyled, this.table.options.printRowRange, "print"));
-
-                       this.table.element.style.display = "none";
-
-                       this.table.element.parentNode.insertBefore(this.element, this.table.element);
-               }
-       };
-
-       Print.prototype.cleanup = function () {
-               document.body.classList.remove("tabulator-print-fullscreen-hide");
-
-               if (this.element && this.element.parentNode) {
-                       this.element.parentNode.removeChild(this.element);
-                       this.table.element.style.display = "";
-               }
-       };
-
-       Print.prototype.printFullscreen = function (visible, style, config) {
-               var scrollX = window.scrollX,
-                   scrollY = window.scrollY,
-                   headerEl = document.createElement("div"),
-                   footerEl = document.createElement("div"),
-                   tableEl = this.table.modules.export.genereateTable(typeof config != "undefined" ? config : this.table.options.printConfig, typeof style != "undefined" ? style : this.table.options.printStyled, visible, "print"),
-                   headerContent,
-                   footerContent;
-
-               this.manualBlock = true;
-
-               this.element = document.createElement("div");
-               this.element.classList.add("tabulator-print-fullscreen");
-
-               if (this.table.options.printHeader) {
-                       headerEl.classList.add("tabulator-print-header");
-
-                       headerContent = typeof this.table.options.printHeader == "function" ? this.table.options.printHeader.call(this.table) : this.table.options.printHeader;
-
-                       if (typeof headerContent == "string") {
-                               headerEl.innerHTML = headerContent;
-                       } else {
-                               headerEl.appendChild(headerContent);
-                       }
-
-                       this.element.appendChild(headerEl);
-               }
-
-               this.element.appendChild(tableEl);
-
-               if (this.table.options.printFooter) {
-                       footerEl.classList.add("tabulator-print-footer");
-
-                       footerContent = typeof this.table.options.printFooter == "function" ? this.table.options.printFooter.call(this.table) : this.table.options.printFooter;
-
-                       if (typeof footerContent == "string") {
-                               footerEl.innerHTML = footerContent;
-                       } else {
-                               footerEl.appendChild(footerContent);
-                       }
-
-                       this.element.appendChild(footerEl);
-               }
-
-               document.body.classList.add("tabulator-print-fullscreen-hide");
-               document.body.appendChild(this.element);
-
-               if (this.table.options.printFormatter) {
-                       this.table.options.printFormatter(this.element, tableEl);
-               }
-
-               window.print();
-
-               this.cleanup();
-
-               window.scrollTo(scrollX, scrollY);
-
-               this.manualBlock = false;
-       };
-
-       Tabulator.prototype.registerModule("print", Print);
-       var ReactiveData = function ReactiveData(table) {
-               this.table = table; //hold Tabulator object
-               this.data = false;
-               this.blocked = false; //block reactivity while performing update
-               this.origFuncs = {}; // hold original data array functions to allow replacement after data is done with
-               this.currentVersion = 0;
-       };
-
-       ReactiveData.prototype.watchData = function (data) {
-               var self = this,
-                   pushFunc,
-                   version;
-
-               this.currentVersion++;
-
-               version = this.currentVersion;
-
-               self.unwatchData();
-
-               self.data = data;
-
-               //override array push function
-               self.origFuncs.push = data.push;
-
-               Object.defineProperty(self.data, "push", {
-                       enumerable: false,
-                       configurable: true,
-                       value: function value() {
-                               var args = Array.from(arguments);
-
-                               if (!self.blocked && version === self.currentVersion) {
-                                       args.forEach(function (arg) {
-                                               self.table.rowManager.addRowActual(arg, false);
-                                       });
-                               }
-
-                               return self.origFuncs.push.apply(data, arguments);
-                       }
-               });
-
-               //override array unshift function
-               self.origFuncs.unshift = data.unshift;
-
-               Object.defineProperty(self.data, "unshift", {
-                       enumerable: false,
-                       configurable: true,
-                       value: function value() {
-                               var args = Array.from(arguments);
-
-                               if (!self.blocked && version === self.currentVersion) {
-                                       args.forEach(function (arg) {
-                                               self.table.rowManager.addRowActual(arg, true);
-                                       });
-                               }
-
-                               return self.origFuncs.unshift.apply(data, arguments);
-                       }
-               });
-
-               //override array shift function
-               self.origFuncs.shift = data.shift;
-
-               Object.defineProperty(self.data, "shift", {
-                       enumerable: false,
-                       configurable: true,
-                       value: function value() {
-                               var row;
-
-                               if (!self.blocked && version === self.currentVersion) {
-                                       if (self.data.length) {
-                                               row = self.table.rowManager.getRowFromDataObject(self.data[0]);
-
-                                               if (row) {
-                                                       row.deleteActual();
-                                               }
-                                       }
-                               }
-
-                               return self.origFuncs.shift.call(data);
-                       }
-               });
-
-               //override array pop function
-               self.origFuncs.pop = data.pop;
-
-               Object.defineProperty(self.data, "pop", {
-                       enumerable: false,
-                       configurable: true,
-                       value: function value() {
-                               var row;
-                               if (!self.blocked && version === self.currentVersion) {
-                                       if (self.data.length) {
-                                               row = self.table.rowManager.getRowFromDataObject(self.data[self.data.length - 1]);
-
-                                               if (row) {
-                                                       row.deleteActual();
-                                               }
-                                       }
-                               }
-                               return self.origFuncs.pop.call(data);
-                       }
-               });
-
-               //override array splice function
-               self.origFuncs.splice = data.splice;
-
-               Object.defineProperty(self.data, "splice", {
-                       enumerable: false,
-                       configurable: true,
-                       value: function value() {
-                               var args = Array.from(arguments),
-                                   start = args[0] < 0 ? data.length + args[0] : args[0],
-                                   end = args[1],
-                                   newRows = args[2] ? args.slice(2) : false,
-                                   startRow;
-
-                               if (!self.blocked && version === self.currentVersion) {
-
-                                       //add new rows
-                                       if (newRows) {
-                                               startRow = data[start] ? self.table.rowManager.getRowFromDataObject(data[start]) : false;
-
-                                               if (startRow) {
-                                                       newRows.forEach(function (rowData) {
-                                                               self.table.rowManager.addRowActual(rowData, true, startRow, true);
-                                                       });
-                                               } else {
-                                                       newRows = newRows.slice().reverse();
-
-                                                       newRows.forEach(function (rowData) {
-                                                               self.table.rowManager.addRowActual(rowData, true, false, true);
-                                                       });
-                                               }
-                                       }
-
-                                       //delete removed rows
-                                       if (end !== 0) {
-                                               var oldRows = data.slice(start, typeof args[1] === "undefined" ? args[1] : start + end);
-
-                                               oldRows.forEach(function (rowData, i) {
-                                                       var row = self.table.rowManager.getRowFromDataObject(rowData);
-
-                                                       if (row) {
-                                                               row.deleteActual(i !== oldRows.length - 1);
-                                                       }
-                                               });
-                                       }
-
-                                       if (newRows || end !== 0) {
-                                               self.table.rowManager.reRenderInPosition();
-                                       }
-                               }
-
-                               return self.origFuncs.splice.apply(data, arguments);
-                       }
-               });
-       };
-
-       ReactiveData.prototype.unwatchData = function () {
-               if (this.data !== false) {
-                       for (var key in this.origFuncs) {
-                               Object.defineProperty(this.data, key, {
-                                       enumerable: true,
-                                       configurable: true,
-                                       writable: true,
-                                       value: this.origFuncs.key
-                               });
-                       }
-               }
-       };
-
-       ReactiveData.prototype.watchRow = function (row) {
-               var self = this,
-                   data = row.getData();
-
-               this.blocked = true;
-
-               for (var key in data) {
-                       this.watchKey(row, data, key);
-               }
-
-               this.blocked = false;
-       };
-
-       ReactiveData.prototype.watchKey = function (row, data, key) {
-               var self = this,
-                   props = Object.getOwnPropertyDescriptor(data, key),
-                   value = data[key],
-                   version = this.currentVersion;
-
-               Object.defineProperty(data, key, {
-                       set: function set(newValue) {
-                               value = newValue;
-                               if (!self.blocked && version === self.currentVersion) {
-                                       var update = {};
-                                       update[key] = newValue;
-                                       row.updateData(update);
-                               }
-
-                               if (props.set) {
-                                       props.set(newValue);
-                               }
-                       },
-                       get: function get() {
-
-                               if (props.get) {
-                                       props.get();
-                               }
-
-                               return value;
-                       }
-               });
-       };
-
-       ReactiveData.prototype.unwatchRow = function (row) {
-               var data = row.getData();
-
-               for (var key in data) {
-                       Object.defineProperty(data, key, {
-                               value: data[key]
-                       });
-               }
-       };
-
-       ReactiveData.prototype.block = function () {
-               this.blocked = true;
-       };
-
-       ReactiveData.prototype.unblock = function () {
-               this.blocked = false;
-       };
-
-       Tabulator.prototype.registerModule("reactiveData", ReactiveData);
-
-       var ResizeColumns = function ResizeColumns(table) {
-               this.table = table; //hold Tabulator object
-               this.startColumn = false;
-               this.startX = false;
-               this.startWidth = false;
-               this.handle = null;
-               this.prevHandle = null;
-       };
-
-       ResizeColumns.prototype.initializeColumn = function (type, column, element) {
-               var self = this,
-                   variableHeight = false,
-                   mode = this.table.options.resizableColumns;
-
-               //set column resize mode
-               if (type === "header") {
-                       variableHeight = column.definition.formatter == "textarea" || column.definition.variableHeight;
-                       column.modules.resize = { variableHeight: variableHeight };
-               }
-
-               if (mode === true || mode == type) {
-
-                       var handle = document.createElement('div');
-                       handle.className = "tabulator-col-resize-handle";
-
-                       var prevHandle = document.createElement('div');
-                       prevHandle.className = "tabulator-col-resize-handle prev";
-
-                       handle.addEventListener("click", function (e) {
-                               e.stopPropagation();
-                       });
-
-                       var handleDown = function handleDown(e) {
-                               var nearestColumn = column.getLastColumn();
-
-                               if (nearestColumn && self._checkResizability(nearestColumn)) {
-                                       self.startColumn = column;
-                                       self._mouseDown(e, nearestColumn, handle);
-                               }
-                       };
-
-                       handle.addEventListener("mousedown", handleDown);
-                       handle.addEventListener("touchstart", handleDown, { passive: true });
-
-                       //reszie column on  double click
-                       handle.addEventListener("dblclick", function (e) {
-                               var col = column.getLastColumn();
-
-                               if (col && self._checkResizability(col)) {
-                                       e.stopPropagation();
-                                       col.reinitializeWidth(true);
-                               }
-                       });
-
-                       prevHandle.addEventListener("click", function (e) {
-                               e.stopPropagation();
-                       });
-
-                       var prevHandleDown = function prevHandleDown(e) {
-                               var nearestColumn, colIndex, prevColumn;
-
-                               nearestColumn = column.getFirstColumn();
-
-                               if (nearestColumn) {
-                                       colIndex = self.table.columnManager.findColumnIndex(nearestColumn);
-                                       prevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;
-
-                                       if (prevColumn && self._checkResizability(prevColumn)) {
-                                               self.startColumn = column;
-                                               self._mouseDown(e, prevColumn, prevHandle);
-                                       }
-                               }
-                       };
-
-                       prevHandle.addEventListener("mousedown", prevHandleDown);
-                       prevHandle.addEventListener("touchstart", prevHandleDown, { passive: true });
-
-                       //resize column on double click
-                       prevHandle.addEventListener("dblclick", function (e) {
-                               var nearestColumn, colIndex, prevColumn;
-
-                               nearestColumn = column.getFirstColumn();
-
-                               if (nearestColumn) {
-                                       colIndex = self.table.columnManager.findColumnIndex(nearestColumn);
-                                       prevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;
-
-                                       if (prevColumn && self._checkResizability(prevColumn)) {
-                                               e.stopPropagation();
-                                               prevColumn.reinitializeWidth(true);
-                                       }
-                               }
-                       });
-
-                       element.appendChild(handle);
-                       element.appendChild(prevHandle);
-               }
-       };
-
-       ResizeColumns.prototype._checkResizability = function (column) {
-               return typeof column.definition.resizable != "undefined" ? column.definition.resizable : this.table.options.resizableColumns;
-       };
-
-       ResizeColumns.prototype._mouseDown = function (e, column, handle) {
-               var self = this;
-
-               self.table.element.classList.add("tabulator-block-select");
-
-               function mouseMove(e) {
-                       // self.table.columnManager.tempScrollBlock();
-
-                       column.setWidth(self.startWidth + ((typeof e.screenX === "undefined" ? e.touches[0].screenX : e.screenX) - self.startX));
-
-                       if (!self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight) {
-                               column.checkCellHeights();
-                       }
-               }
-
-               function mouseUp(e) {
-
-                       //block editor from taking action while resizing is taking place
-                       if (self.startColumn.modules.edit) {
-                               self.startColumn.modules.edit.blocked = false;
-                       }
-
-                       if (self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight) {
-                               column.checkCellHeights();
-                       }
-
-                       document.body.removeEventListener("mouseup", mouseUp);
-                       document.body.removeEventListener("mousemove", mouseMove);
-
-                       handle.removeEventListener("touchmove", mouseMove);
-                       handle.removeEventListener("touchend", mouseUp);
-
-                       self.table.element.classList.remove("tabulator-block-select");
-
-                       if (self.table.options.persistence && self.table.modExists("persistence", true) && self.table.modules.persistence.config.columns) {
-                               self.table.modules.persistence.save("columns");
-                       }
-
-                       self.table.options.columnResized.call(self.table, column.getComponent());
-               }
-
-               e.stopPropagation(); //prevent resize from interfereing with movable columns
-
-               //block editor from taking action while resizing is taking place
-               if (self.startColumn.modules.edit) {
-                       self.startColumn.modules.edit.blocked = true;
-               }
-
-               self.startX = typeof e.screenX === "undefined" ? e.touches[0].screenX : e.screenX;
-               self.startWidth = column.getWidth();
-
-               document.body.addEventListener("mousemove", mouseMove);
-               document.body.addEventListener("mouseup", mouseUp);
-               handle.addEventListener("touchmove", mouseMove, { passive: true });
-               handle.addEventListener("touchend", mouseUp);
-       };
-
-       Tabulator.prototype.registerModule("resizeColumns", ResizeColumns);
-       var ResizeRows = function ResizeRows(table) {
-               this.table = table; //hold Tabulator object
-               this.startColumn = false;
-               this.startY = false;
-               this.startHeight = false;
-               this.handle = null;
-               this.prevHandle = null;
-       };
-
-       ResizeRows.prototype.initializeRow = function (row) {
-               var self = this,
-                   rowEl = row.getElement();
-
-               var handle = document.createElement('div');
-               handle.className = "tabulator-row-resize-handle";
-
-               var prevHandle = document.createElement('div');
-               prevHandle.className = "tabulator-row-resize-handle prev";
-
-               handle.addEventListener("click", function (e) {
-                       e.stopPropagation();
-               });
-
-               var handleDown = function handleDown(e) {
-                       self.startRow = row;
-                       self._mouseDown(e, row, handle);
-               };
-
-               handle.addEventListener("mousedown", handleDown);
-               handle.addEventListener("touchstart", handleDown, { passive: true });
-
-               prevHandle.addEventListener("click", function (e) {
-                       e.stopPropagation();
-               });
-
-               var prevHandleDown = function prevHandleDown(e) {
-                       var prevRow = self.table.rowManager.prevDisplayRow(row);
-
-                       if (prevRow) {
-                               self.startRow = prevRow;
-                               self._mouseDown(e, prevRow, prevHandle);
-                       }
-               };
-
-               prevHandle.addEventListener("mousedown", prevHandleDown);
-               prevHandle.addEventListener("touchstart", prevHandleDown, { passive: true });
-
-               rowEl.appendChild(handle);
-               rowEl.appendChild(prevHandle);
-       };
-
-       ResizeRows.prototype._mouseDown = function (e, row, handle) {
-               var self = this;
-
-               self.table.element.classList.add("tabulator-block-select");
-
-               function mouseMove(e) {
-                       row.setHeight(self.startHeight + ((typeof e.screenY === "undefined" ? e.touches[0].screenY : e.screenY) - self.startY));
-               }
-
-               function mouseUp(e) {
-
-                       // //block editor from taking action while resizing is taking place
-                       // if(self.startColumn.modules.edit){
-                       //      self.startColumn.modules.edit.blocked = false;
-                       // }
-
-                       document.body.removeEventListener("mouseup", mouseMove);
-                       document.body.removeEventListener("mousemove", mouseMove);
-
-                       handle.removeEventListener("touchmove", mouseMove);
-                       handle.removeEventListener("touchend", mouseUp);
-
-                       self.table.element.classList.remove("tabulator-block-select");
-
-                       self.table.options.rowResized.call(this.table, row.getComponent());
-               }
-
-               e.stopPropagation(); //prevent resize from interfereing with movable columns
-
-               //block editor from taking action while resizing is taking place
-               // if(self.startColumn.modules.edit){
-               //      self.startColumn.modules.edit.blocked = true;
-               // }
-
-               self.startY = typeof e.screenY === "undefined" ? e.touches[0].screenY : e.screenY;
-               self.startHeight = row.getHeight();
-
-               document.body.addEventListener("mousemove", mouseMove);
-               document.body.addEventListener("mouseup", mouseUp);
-
-               handle.addEventListener("touchmove", mouseMove, { passive: true });
-               handle.addEventListener("touchend", mouseUp);
-       };
-
-       Tabulator.prototype.registerModule("resizeRows", ResizeRows);
-       var ResizeTable = function ResizeTable(table) {
-               this.table = table; //hold Tabulator object
-               this.binding = false;
-               this.observer = false;
-               this.containerObserver = false;
-
-               this.tableHeight = 0;
-               this.tableWidth = 0;
-               this.containerHeight = 0;
-               this.containerWidth = 0;
-
-               this.autoResize = false;
-       };
-
-       ResizeTable.prototype.initialize = function (row) {
-               var _this70 = this;
-
-               var table = this.table,
-                   tableStyle;
-
-               this.tableHeight = table.element.clientHeight;
-               this.tableWidth = table.element.clientWidth;
-
-               if (table.element.parentNode) {
-                       this.containerHeight = table.element.parentNode.clientHeight;
-                       this.containerWidth = table.element.parentNode.clientWidth;
-               }
-
-               if (typeof ResizeObserver !== "undefined" && table.rowManager.getRenderMode() === "virtual") {
-
-                       this.autoResize = true;
-
-                       this.observer = new ResizeObserver(function (entry) {
-                               if (!table.browserMobile || table.browserMobile && !table.modules.edit.currentCell) {
-
-                                       var nodeHeight = Math.floor(entry[0].contentRect.height);
-                                       var nodeWidth = Math.floor(entry[0].contentRect.width);
-
-                                       if (_this70.tableHeight != nodeHeight || _this70.tableWidth != nodeWidth) {
-                                               _this70.tableHeight = nodeHeight;
-                                               _this70.tableWidth = nodeWidth;
-
-                                               if (table.element.parentNode) {
-                                                       _this70.containerHeight = table.element.parentNode.clientHeight;
-                                                       _this70.containerWidth = table.element.parentNode.clientWidth;
-                                               }
-
-                                               table.redraw();
-                                       }
-                               }
-                       });
-
-                       this.observer.observe(table.element);
-
-                       tableStyle = window.getComputedStyle(table.element);
-
-                       if (this.table.element.parentNode && !this.table.rowManager.fixedHeight && (tableStyle.getPropertyValue("max-height") || tableStyle.getPropertyValue("min-height"))) {
-
-                               this.containerObserver = new ResizeObserver(function (entry) {
-                                       if (!table.browserMobile || table.browserMobile && !table.modules.edit.currentCell) {
-
-                                               var nodeHeight = Math.floor(entry[0].contentRect.height);
-                                               var nodeWidth = Math.floor(entry[0].contentRect.width);
-
-                                               if (_this70.containerHeight != nodeHeight || _this70.containerWidth != nodeWidth) {
-                                                       _this70.containerHeight = nodeHeight;
-                                                       _this70.containerWidth = nodeWidth;
-                                                       _this70.tableHeight = table.element.clientHeight;
-                                                       _this70.tableWidth = table.element.clientWidth;
-
-                                                       table.redraw();
-                                               }
-
-                                               table.redraw();
-                                       }
-                               });
-
-                               this.containerObserver.observe(this.table.element.parentNode);
-                       }
-               } else {
-                       this.binding = function () {
-                               if (!table.browserMobile || table.browserMobile && !table.modules.edit.currentCell) {
-                                       table.redraw();
-                               }
-                       };
-
-                       window.addEventListener("resize", this.binding);
-               }
-       };
-
-       ResizeTable.prototype.clearBindings = function (row) {
-               if (this.binding) {
-                       window.removeEventListener("resize", this.binding);
-               }
-
-               if (this.observer) {
-                       this.observer.unobserve(this.table.element);
-               }
-
-               if (this.containerObserver) {
-                       this.containerObserver.unobserve(this.table.element.parentNode);
-               }
-       };
-
-       Tabulator.prototype.registerModule("resizeTable", ResizeTable);
-       var ResponsiveLayout = function ResponsiveLayout(table) {
-               this.table = table; //hold Tabulator object
-               this.columns = [];
-               this.hiddenColumns = [];
-               this.mode = "";
-               this.index = 0;
-               this.collapseFormatter = [];
-               this.collapseStartOpen = true;
-               this.collapseHandleColumn = false;
-       };
-
-       //generate resposive columns list
-       ResponsiveLayout.prototype.initialize = function () {
-               var self = this,
-                   columns = [];
-
-               this.mode = this.table.options.responsiveLayout;
-               this.collapseFormatter = this.table.options.responsiveLayoutCollapseFormatter || this.formatCollapsedData;
-               this.collapseStartOpen = this.table.options.responsiveLayoutCollapseStartOpen;
-               this.hiddenColumns = [];
-
-               //detemine level of responsivity for each column
-               this.table.columnManager.columnsByIndex.forEach(function (column, i) {
-                       if (column.modules.responsive) {
-                               if (column.modules.responsive.order && column.modules.responsive.visible) {
-                                       column.modules.responsive.index = i;
-                                       columns.push(column);
-
-                                       if (!column.visible && self.mode === "collapse") {
-                                               self.hiddenColumns.push(column);
-                                       }
-                               }
-                       }
-               });
-
-               //sort list by responsivity
-               columns = columns.reverse();
-               columns = columns.sort(function (a, b) {
-                       var diff = b.modules.responsive.order - a.modules.responsive.order;
-                       return diff || b.modules.responsive.index - a.modules.responsive.index;
-               });
-
-               this.columns = columns;
-
-               if (this.mode === "collapse") {
-                       this.generateCollapsedContent();
-               }
-
-               //assign collapse column
-               for (var _iterator = this.table.columnManager.columnsByIndex, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
-                       var _ref;
-
-                       if (_isArray) {
-                               if (_i >= _iterator.length) break;
-                               _ref = _iterator[_i++];
-                       } else {
-                               _i = _iterator.next();
-                               if (_i.done) break;
-                               _ref = _i.value;
-                       }
-
-                       var col = _ref;
-
-                       if (col.definition.formatter == "responsiveCollapse") {
-                               this.collapseHandleColumn = col;
-                               break;
-                       }
-               }
-
-               if (this.collapseHandleColumn) {
-                       if (this.hiddenColumns.length) {
-                               this.collapseHandleColumn.show();
-                       } else {
-                               this.collapseHandleColumn.hide();
-                       }
-               }
-       };
-
-       //define layout information
-       ResponsiveLayout.prototype.initializeColumn = function (column) {
-               var def = column.getDefinition();
-
-               column.modules.responsive = { order: typeof def.responsive === "undefined" ? 1 : def.responsive, visible: def.visible === false ? false : true };
-       };
-
-       ResponsiveLayout.prototype.initializeRow = function (row) {
-               var el;
-
-               if (row.type !== "calc") {
-                       el = document.createElement("div");
-                       el.classList.add("tabulator-responsive-collapse");
-
-                       row.modules.responsiveLayout = {
-                               element: el,
-                               open: this.collapseStartOpen
-                       };
-
-                       if (!this.collapseStartOpen) {
-                               el.style.display = 'none';
-                       }
-               }
-       };
-
-       ResponsiveLayout.prototype.layoutRow = function (row) {
-               var rowEl = row.getElement();
-
-               if (row.modules.responsiveLayout) {
-                       rowEl.appendChild(row.modules.responsiveLayout.element);
-                       this.generateCollapsedRowContent(row);
-               }
-       };
-
-       //update column visibility
-       ResponsiveLayout.prototype.updateColumnVisibility = function (column, visible) {
-               var index;
-               if (column.modules.responsive) {
-                       column.modules.responsive.visible = visible;
-                       this.initialize();
-               }
-       };
-
-       ResponsiveLayout.prototype.hideColumn = function (column) {
-               var colCount = this.hiddenColumns.length;
-
-               column.hide(false, true);
-
-               if (this.mode === "collapse") {
-                       this.hiddenColumns.unshift(column);
-                       this.generateCollapsedContent();
-
-                       if (this.collapseHandleColumn && !colCount) {
-                               this.collapseHandleColumn.show();
-                       }
-               }
-       };
-
-       ResponsiveLayout.prototype.showColumn = function (column) {
-               var index;
-
-               column.show(false, true);
-               //set column width to prevent calculation loops on uninitialized columns
-               column.setWidth(column.getWidth());
-
-               if (this.mode === "collapse") {
-                       index = this.hiddenColumns.indexOf(column);
-
-                       if (index > -1) {
-                               this.hiddenColumns.splice(index, 1);
-                       }
-
-                       this.generateCollapsedContent();
-
-                       if (this.collapseHandleColumn && !this.hiddenColumns.length) {
-                               this.collapseHandleColumn.hide();
-                       }
-               }
-       };
-
-       //redraw columns to fit space
-       ResponsiveLayout.prototype.update = function () {
-               var self = this,
-                   working = true;
-
-               while (working) {
-
-                       var width = self.table.modules.layout.getMode() == "fitColumns" ? self.table.columnManager.getFlexBaseWidth() : self.table.columnManager.getWidth();
-
-                       var diff = (self.table.options.headerVisible ? self.table.columnManager.element.clientWidth : self.table.element.clientWidth) - width;
-
-                       if (diff < 0) {
-                               //table is too wide
-                               var column = self.columns[self.index];
-
-                               if (column) {
-                                       self.hideColumn(column);
-                                       self.index++;
-                               } else {
-                                       working = false;
-                               }
-                       } else {
-
-                               //table has spare space
-                               var _column = self.columns[self.index - 1];
-
-                               if (_column) {
-                                       if (diff > 0) {
-                                               if (diff >= _column.getWidth()) {
-                                                       self.showColumn(_column);
-                                                       self.index--;
-                                               } else {
-                                                       working = false;
-                                               }
-                                       } else {
-                                               working = false;
-                                       }
-                               } else {
-                                       working = false;
-                               }
-                       }
-
-                       if (!self.table.rowManager.activeRowsCount) {
-                               self.table.rowManager.renderEmptyScroll();
-                       }
-               }
-       };
-
-       ResponsiveLayout.prototype.generateCollapsedContent = function () {
-               var self = this,
-                   rows = this.table.rowManager.getDisplayRows();
-
-               rows.forEach(function (row) {
-                       self.generateCollapsedRowContent(row);
-               });
-       };
-
-       ResponsiveLayout.prototype.generateCollapsedRowContent = function (row) {
-               var el, contents;
-
-               if (row.modules.responsiveLayout) {
-                       el = row.modules.responsiveLayout.element;
-
-                       while (el.firstChild) {
-                               el.removeChild(el.firstChild);
-                       }contents = this.collapseFormatter(this.generateCollapsedRowData(row));
-                       if (contents) {
-                               el.appendChild(contents);
-                       }
-               }
-       };
-
-       ResponsiveLayout.prototype.generateCollapsedRowData = function (row) {
-               var self = this,
-                   data = row.getData(),
-                   output = [],
-                   mockCellComponent;
-
-               this.hiddenColumns.forEach(function (column) {
-                       var value = column.getFieldValue(data);
-
-                       if (column.definition.title && column.field) {
-                               if (column.modules.format && self.table.options.responsiveLayoutCollapseUseFormatters) {
-
-                                       mockCellComponent = {
-                                               value: false,
-                                               data: {},
-                                               getValue: function getValue() {
-                                                       return value;
-                                               },
-                                               getData: function getData() {
-                                                       return data;
-                                               },
-                                               getElement: function getElement() {
-                                                       return document.createElement("div");
-                                               },
-                                               getRow: function getRow() {
-                                                       return row.getComponent();
-                                               },
-                                               getColumn: function getColumn() {
-                                                       return column.getComponent();
-                                               }
-                                       };
-
-                                       output.push({
-                                               title: column.definition.title,
-                                               value: column.modules.format.formatter.call(self.table.modules.format, mockCellComponent, column.modules.format.params)
-                                       });
-                               } else {
-                                       output.push({
-                                               title: column.definition.title,
-                                               value: value
-                                       });
-                               }
-                       }
-               });
-
-               return output;
-       };
-
-       ResponsiveLayout.prototype.formatCollapsedData = function (data) {
-               var list = document.createElement("table"),
-                   listContents = "";
-
-               data.forEach(function (item) {
-                       var div = document.createElement("div");
-
-                       if (item.value instanceof Node) {
-                               div.appendChild(item.value);
-                               item.value = div.innerHTML;
-                       }
-
-                       listContents += "<tr><td><strong>" + item.title + "</strong></td><td>" + item.value + "</td></tr>";
-               });
-
-               list.innerHTML = listContents;
-
-               return Object.keys(data).length ? list : "";
-       };
-
-       Tabulator.prototype.registerModule("responsiveLayout", ResponsiveLayout);
-
-       var SelectRow = function SelectRow(table) {
-               this.table = table; //hold Tabulator object
-               this.selecting = false; //flag selecting in progress
-               this.lastClickedRow = false; //last clicked row
-               this.selectPrev = []; //hold previously selected element for drag drop selection
-               this.selectedRows = []; //hold selected rows
-               this.headerCheckboxElement = null; // hold header select element
-       };
-
-       SelectRow.prototype.clearSelectionData = function (silent) {
-               this.selecting = false;
-               this.lastClickedRow = false;
-               this.selectPrev = [];
-               this.selectedRows = [];
-
-               if (!silent) {
-                       this._rowSelectionChanged();
-               }
-       };
-
-       SelectRow.prototype.initializeRow = function (row) {
-               var self = this,
-                   element = row.getElement();
-
-               // trigger end of row selection
-               var endSelect = function endSelect() {
-
-                       setTimeout(function () {
-                               self.selecting = false;
-                       }, 50);
-
-                       document.body.removeEventListener("mouseup", endSelect);
-               };
-
-               row.modules.select = { selected: false };
-
-               //set row selection class
-               if (self.table.options.selectableCheck.call(this.table, row.getComponent())) {
-                       element.classList.add("tabulator-selectable");
-                       element.classList.remove("tabulator-unselectable");
-
-                       if (self.table.options.selectable && self.table.options.selectable != "highlight") {
-                               if (self.table.options.selectableRangeMode === "click") {
-                                       element.addEventListener("click", function (e) {
-                                               if (e.shiftKey) {
-                                                       self.table._clearSelection();
-                                                       self.lastClickedRow = self.lastClickedRow || row;
-
-                                                       var lastClickedRowIdx = self.table.rowManager.getDisplayRowIndex(self.lastClickedRow);
-                                                       var rowIdx = self.table.rowManager.getDisplayRowIndex(row);
-
-                                                       var fromRowIdx = lastClickedRowIdx <= rowIdx ? lastClickedRowIdx : rowIdx;
-                                                       var toRowIdx = lastClickedRowIdx >= rowIdx ? lastClickedRowIdx : rowIdx;
-
-                                                       var rows = self.table.rowManager.getDisplayRows().slice(0);
-                                                       var toggledRows = rows.splice(fromRowIdx, toRowIdx - fromRowIdx + 1);
-
-                                                       if (e.ctrlKey || e.metaKey) {
-                                                               toggledRows.forEach(function (toggledRow) {
-                                                                       if (toggledRow !== self.lastClickedRow) {
-
-                                                                               if (self.table.options.selectable !== true && !self.isRowSelected(row)) {
-                                                                                       if (self.selectedRows.length < self.table.options.selectable) {
-                                                                                               self.toggleRow(toggledRow);
-                                                                                       }
-                                                                               } else {
-                                                                                       self.toggleRow(toggledRow);
-                                                                               }
-                                                                       }
-                                                               });
-                                                               self.lastClickedRow = row;
-                                                       } else {
-                                                               self.deselectRows(undefined, true);
-
-                                                               if (self.table.options.selectable !== true) {
-                                                                       if (toggledRows.length > self.table.options.selectable) {
-                                                                               toggledRows = toggledRows.slice(0, self.table.options.selectable);
-                                                                       }
-                                                               }
-
-                                                               self.selectRows(toggledRows);
-                                                       }
-                                                       self.table._clearSelection();
-                                               } else if (e.ctrlKey || e.metaKey) {
-                                                       self.toggleRow(row);
-                                                       self.lastClickedRow = row;
-                                               } else {
-                                                       self.deselectRows(undefined, true);
-                                                       self.selectRows(row);
-                                                       self.lastClickedRow = row;
-                                               }
-                                       });
-                               } else {
-                                       element.addEventListener("click", function (e) {
-                                               if (!self.table.modExists("edit") || !self.table.modules.edit.getCurrentCell()) {
-                                                       self.table._clearSelection();
-                                               }
-
-                                               if (!self.selecting) {
-                                                       self.toggleRow(row);
-                                               }
-                                       });
-
-                                       element.addEventListener("mousedown", function (e) {
-                                               if (e.shiftKey) {
-                                                       self.table._clearSelection();
-
-                                                       self.selecting = true;
-
-                                                       self.selectPrev = [];
-
-                                                       document.body.addEventListener("mouseup", endSelect);
-                                                       document.body.addEventListener("keyup", endSelect);
-
-                                                       self.toggleRow(row);
-
-                                                       return false;
-                                               }
-                                       });
-
-                                       element.addEventListener("mouseenter", function (e) {
-                                               if (self.selecting) {
-                                                       self.table._clearSelection();
-                                                       self.toggleRow(row);
-
-                                                       if (self.selectPrev[1] == row) {
-                                                               self.toggleRow(self.selectPrev[0]);
-                                                       }
-                                               }
-                                       });
-
-                                       element.addEventListener("mouseout", function (e) {
-                                               if (self.selecting) {
-                                                       self.table._clearSelection();
-                                                       self.selectPrev.unshift(row);
-                                               }
-                                       });
-                               }
-                       }
-               } else {
-                       element.classList.add("tabulator-unselectable");
-                       element.classList.remove("tabulator-selectable");
-               }
-       };
-
-       //toggle row selection
-       SelectRow.prototype.toggleRow = function (row) {
-               if (this.table.options.selectableCheck.call(this.table, row.getComponent())) {
-                       if (row.modules.select && row.modules.select.selected) {
-                               this._deselectRow(row);
-                       } else {
-                               this._selectRow(row);
-                       }
-               }
-       };
-
-       //select a number of rows
-       SelectRow.prototype.selectRows = function (rows) {
-               var _this71 = this;
-
-               var rowMatch;
-
-               switch (typeof rows === 'undefined' ? 'undefined' : _typeof(rows)) {
-                       case "undefined":
-                               this.table.rowManager.rows.forEach(function (row) {
-                                       _this71._selectRow(row, true, true);
-                               });
-
-                               this._rowSelectionChanged();
-                               break;
-
-                       case "string":
-
-                               rowMatch = this.table.rowManager.findRow(rows);
-
-                               if (rowMatch) {
-                                       this._selectRow(rowMatch, true, true);
-                               } else {
-                                       this.table.rowManager.getRows(rows).forEach(function (row) {
-                                               _this71._selectRow(row, true, true);
-                                       });
-                               }
-
-                               this._rowSelectionChanged();
-                               break;
-
-                       default:
-                               if (Array.isArray(rows)) {
-                                       rows.forEach(function (row) {
-                                               _this71._selectRow(row, true, true);
-                                       });
-
-                                       this._rowSelectionChanged();
-                               } else {
-                                       this._selectRow(rows, false, true);
-                               }
-                               break;
-               }
-       };
-
-       //select an individual row
-       SelectRow.prototype._selectRow = function (rowInfo, silent, force) {
-               var index;
-
-               //handle max row count
-               if (!isNaN(this.table.options.selectable) && this.table.options.selectable !== true && !force) {
-                       if (this.selectedRows.length >= this.table.options.selectable) {
-                               if (this.table.options.selectableRollingSelection) {
-                                       this._deselectRow(this.selectedRows[0]);
-                               } else {
-                                       return false;
-                               }
-                       }
-               }
-
-               var row = this.table.rowManager.findRow(rowInfo);
-
-               if (row) {
-                       if (this.selectedRows.indexOf(row) == -1) {
-                               if (!row.modules.select) {
-                                       row.modules.select = {};
-                               }
-
-                               row.modules.select.selected = true;
-                               if (row.modules.select.checkboxEl) {
-                                       row.modules.select.checkboxEl.checked = true;
-                               }
-                               row.getElement().classList.add("tabulator-selected");
-
-                               this.selectedRows.push(row);
-
-                               if (this.table.options.dataTreeSelectPropagate) {
-                                       this.childRowSelection(row, true);
-                               }
-
-                               if (!silent) {
-                                       this.table.options.rowSelected.call(this.table, row.getComponent());
-                               }
-
-                               this._rowSelectionChanged(silent);
-                       }
-               } else {
-                       if (!silent) {
-                               console.warn("Selection Error - No such row found, ignoring selection:" + rowInfo);
-                       }
-               }
-       };
-
-       SelectRow.prototype.isRowSelected = function (row) {
-               return this.selectedRows.indexOf(row) !== -1;
-       };
-
-       //deselect a number of rows
-       SelectRow.prototype.deselectRows = function (rows, silent) {
-               var self = this,
-                   rowCount;
-
-               if (typeof rows == "undefined") {
-
-                       rowCount = self.selectedRows.length;
-
-                       for (var i = 0; i < rowCount; i++) {
-                               self._deselectRow(self.selectedRows[0], true);
-                       }
-
-                       self._rowSelectionChanged(silent);
-               } else {
-                       if (Array.isArray(rows)) {
-                               rows.forEach(function (row) {
-                                       self._deselectRow(row, true);
-                               });
-
-                               self._rowSelectionChanged(silent);
-                       } else {
-                               self._deselectRow(rows, silent);
-                       }
-               }
-       };
-
-       //deselect an individual row
-       SelectRow.prototype._deselectRow = function (rowInfo, silent) {
-               var self = this,
-                   row = self.table.rowManager.findRow(rowInfo),
-                   index;
-
-               if (row) {
-                       index = self.selectedRows.findIndex(function (selectedRow) {
-                               return selectedRow == row;
-                       });
-
-                       if (index > -1) {
-
-                               if (!row.modules.select) {
-                                       row.modules.select = {};
-                               }
-
-                               row.modules.select.selected = false;
-                               if (row.modules.select.checkboxEl) {
-                                       row.modules.select.checkboxEl.checked = false;
-                               }
-                               row.getElement().classList.remove("tabulator-selected");
-                               self.selectedRows.splice(index, 1);
-
-                               if (this.table.options.dataTreeSelectPropagate) {
-                                       this.childRowSelection(row, false);
-                               }
-
-                               if (!silent) {
-                                       self.table.options.rowDeselected.call(this.table, row.getComponent());
-                               }
-
-                               self._rowSelectionChanged(silent);
-                       }
-               } else {
-                       if (!silent) {
-                               console.warn("Deselection Error - No such row found, ignoring selection:" + rowInfo);
-                       }
-               }
-       };
-
-       SelectRow.prototype.getSelectedData = function () {
-               var data = [];
-
-               this.selectedRows.forEach(function (row) {
-                       data.push(row.getData());
-               });
-
-               return data;
-       };
-
-       SelectRow.prototype.getSelectedRows = function () {
-
-               var rows = [];
-
-               this.selectedRows.forEach(function (row) {
-                       rows.push(row.getComponent());
-               });
-
-               return rows;
-       };
-
-       SelectRow.prototype._rowSelectionChanged = function (silent) {
-               if (this.headerCheckboxElement) {
-                       if (this.selectedRows.length === 0) {
-                               this.headerCheckboxElement.checked = false;
-                               this.headerCheckboxElement.indeterminate = false;
-                       } else if (this.table.rowManager.rows.length === this.selectedRows.length) {
-                               this.headerCheckboxElement.checked = true;
-                               this.headerCheckboxElement.indeterminate = false;
-                       } else {
-                               this.headerCheckboxElement.indeterminate = true;
-                               this.headerCheckboxElement.checked = false;
-                       }
-               }
-
-               if (!silent) {
-                       this.table.options.rowSelectionChanged.call(this.table, this.getSelectedData(), this.getSelectedRows());
-               }
-       };
-
-       SelectRow.prototype.registerRowSelectCheckbox = function (row, element) {
-               if (!row._row.modules.select) {
-                       row._row.modules.select = {};
-               }
-
-               row._row.modules.select.checkboxEl = element;
-       };
-
-       SelectRow.prototype.registerHeaderSelectCheckbox = function (element) {
-               this.headerCheckboxElement = element;
-       };
-
-       SelectRow.prototype.childRowSelection = function (row, select) {
-               var children = this.table.modules.dataTree.getChildren(row);
-
-               if (select) {
-                       for (var _iterator2 = children, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
-                               var _ref2;
-
-                               if (_isArray2) {
-                                       if (_i2 >= _iterator2.length) break;
-                                       _ref2 = _iterator2[_i2++];
-                               } else {
-                                       _i2 = _iterator2.next();
-                                       if (_i2.done) break;
-                                       _ref2 = _i2.value;
-                               }
-
-                               var child = _ref2;
-
-                               this._selectRow(child, true);
-                       }
-               } else {
-                       for (var _iterator3 = children, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
-                               var _ref3;
-
-                               if (_isArray3) {
-                                       if (_i3 >= _iterator3.length) break;
-                                       _ref3 = _iterator3[_i3++];
-                               } else {
-                                       _i3 = _iterator3.next();
-                                       if (_i3.done) break;
-                                       _ref3 = _i3.value;
-                               }
-
-                               var _child = _ref3;
-
-                               this._deselectRow(_child, true);
-                       }
-               }
-       };
-
-       Tabulator.prototype.registerModule("selectRow", SelectRow);
-
-       var Sort = function Sort(table) {
-               this.table = table; //hold Tabulator object
-               this.sortList = []; //holder current sort
-               this.changed = false; //has the sort changed since last render
-       };
-
-       //initialize column header for sorting
-       Sort.prototype.initializeColumn = function (column, content) {
-               var self = this,
-                   sorter = false,
-                   colEl,
-                   arrowEl;
-
-               switch (_typeof(column.definition.sorter)) {
-                       case "string":
-                               if (self.sorters[column.definition.sorter]) {
-                                       sorter = self.sorters[column.definition.sorter];
-                               } else {
-                                       console.warn("Sort Error - No such sorter found: ", column.definition.sorter);
-                               }
-                               break;
-
-                       case "function":
-                               sorter = column.definition.sorter;
-                               break;
-               }
-
-               column.modules.sort = {
-                       sorter: sorter, dir: "none",
-                       params: column.definition.sorterParams || {},
-                       startingDir: column.definition.headerSortStartingDir || "asc",
-                       tristate: typeof column.definition.headerSortTristate !== "undefined" ? column.definition.headerSortTristate : this.table.options.headerSortTristate
-               };
-
-               if (typeof column.definition.headerSort === "undefined" ? this.table.options.headerSort !== false : column.definition.headerSort !== false) {
-
-                       colEl = column.getElement();
-
-                       colEl.classList.add("tabulator-sortable");
-
-                       arrowEl = document.createElement("div");
-                       arrowEl.classList.add("tabulator-arrow");
-                       //create sorter arrow
-                       content.appendChild(arrowEl);
-
-                       //sort on click
-                       colEl.addEventListener("click", function (e) {
-                               var dir = "",
-                                   sorters = [],
-                                   match = false;
-
-                               if (column.modules.sort) {
-                                       if (column.modules.sort.tristate) {
-                                               if (column.modules.sort.dir == "none") {
-                                                       dir = column.modules.sort.startingDir;
-                                               } else {
-                                                       if (column.modules.sort.dir == column.modules.sort.startingDir) {
-                                                               dir = column.modules.sort.dir == "asc" ? "desc" : "asc";
-                                                       } else {
-                                                               dir = "none";
-                                                       }
-                                               }
-                                       } else {
-                                               switch (column.modules.sort.dir) {
-                                                       case "asc":
-                                                               dir = "desc";
-                                                               break;
-
-                                                       case "desc":
-                                                               dir = "asc";
-                                                               break;
-
-                                                       default:
-                                                               dir = column.modules.sort.startingDir;
-                                               }
-                                       }
-
-                                       if (self.table.options.columnHeaderSortMulti && (e.shiftKey || e.ctrlKey)) {
-                                               sorters = self.getSort();
-
-                                               match = sorters.findIndex(function (sorter) {
-                                                       return sorter.field === column.getField();
-                                               });
-
-                                               if (match > -1) {
-                                                       sorters[match].dir = dir;
-
-                                                       if (match != sorters.length - 1) {
-                                                               match = sorters.splice(match, 1)[0];
-                                                               if (dir != "none") {
-                                                                       sorters.push(match);
-                                                               }
-                                                       }
-                                               } else {
-                                                       if (dir != "none") {
-                                                               sorters.push({ column: column, dir: dir });
-                                                       }
-                                               }
-
-                                               //add to existing sort
-                                               self.setSort(sorters);
-                                       } else {
-                                               if (dir == "none") {
-                                                       self.clear();
-                                               } else {
-                                                       //sort by column only
-                                                       self.setSort(column, dir);
-                                               }
-                                       }
-
-                                       self.table.rowManager.sorterRefresh(!self.sortList.length);
-                               }
-                       });
-               }
-       };
-
-       //check if the sorters have changed since last use
-       Sort.prototype.hasChanged = function () {
-               var changed = this.changed;
-               this.changed = false;
-               return changed;
-       };
-
-       //return current sorters
-       Sort.prototype.getSort = function () {
-               var self = this,
-                   sorters = [];
-
-               self.sortList.forEach(function (item) {
-                       if (item.column) {
-                               sorters.push({ column: item.column.getComponent(), field: item.column.getField(), dir: item.dir });
-                       }
-               });
-
-               return sorters;
-       };
-
-       //change sort list and trigger sort
-       Sort.prototype.setSort = function (sortList, dir) {
-               var self = this,
-                   newSortList = [];
-
-               if (!Array.isArray(sortList)) {
-                       sortList = [{ column: sortList, dir: dir }];
-               }
-
-               sortList.forEach(function (item) {
-                       var column;
-
-                       column = self.table.columnManager.findColumn(item.column);
-
-                       if (column) {
-                               item.column = column;
-                               newSortList.push(item);
-                               self.changed = true;
-                       } else {
-                               console.warn("Sort Warning - Sort field does not exist and is being ignored: ", item.column);
-                       }
-               });
-
-               self.sortList = newSortList;
-
-               if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.sort) {
-                       this.table.modules.persistence.save("sort");
-               }
-       };
-
-       //clear sorters
-       Sort.prototype.clear = function () {
-               this.setSort([]);
-       };
-
-       //find appropriate sorter for column
-       Sort.prototype.findSorter = function (column) {
-               var row = this.table.rowManager.activeRows[0],
-                   sorter = "string",
-                   field,
-                   value;
-
-               if (row) {
-                       row = row.getData();
-                       field = column.getField();
-
-                       if (field) {
-
-                               value = column.getFieldValue(row);
-
-                               switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
-                                       case "undefined":
-                                               sorter = "string";
-                                               break;
-
-                                       case "boolean":
-                                               sorter = "boolean";
-                                               break;
-
-                                       default:
-                                               if (!isNaN(value) && value !== "") {
-                                                       sorter = "number";
-                                               } else {
-                                                       if (value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)) {
-                                                               sorter = "alphanum";
-                                                       }
-                                               }
-                                               break;
-                               }
-                       }
-               }
-
-               return this.sorters[sorter];
-       };
-
-       //work through sort list sorting data
-       Sort.prototype.sort = function (data) {
-               var self = this,
-                   sortList = this.table.options.sortOrderReverse ? self.sortList.slice().reverse() : self.sortList,
-                   sortListActual = [],
-                   lastSort;
-
-               if (self.table.options.dataSorting) {
-                       self.table.options.dataSorting.call(self.table, self.getSort());
-               }
-
-               self.clearColumnHeaders();
-
-               if (!self.table.options.ajaxSorting) {
-
-                       //build list of valid sorters and trigger column specific callbacks before sort begins
-                       sortList.forEach(function (item, i) {
-                               var sortObj = item.column.modules.sort;
-
-                               if (item.column && sortObj) {
-
-                                       //if no sorter has been defined, take a guess
-                                       if (!sortObj.sorter) {
-                                               sortObj.sorter = self.findSorter(item.column);
-                                       }
-
-                                       item.params = typeof sortObj.params === "function" ? sortObj.params(item.column.getComponent(), item.dir) : sortObj.params;
-
-                                       sortListActual.push(item);
-                               }
-
-                               self.setColumnHeader(item.column, item.dir);
-                       });
-
-                       //sort data
-                       if (sortListActual.length) {
-                               self._sortItems(data, sortListActual);
-                       }
-               } else {
-                       sortList.forEach(function (item, i) {
-                               self.setColumnHeader(item.column, item.dir);
-                       });
-               }
-
-               if (self.table.options.dataSorted) {
-                       self.table.options.dataSorted.call(self.table, self.getSort(), self.table.rowManager.getComponents("active"));
-               }
-       };
-
-       //clear sort arrows on columns
-       Sort.prototype.clearColumnHeaders = function () {
-               this.table.columnManager.getRealColumns().forEach(function (column) {
-                       if (column.modules.sort) {
-                               column.modules.sort.dir = "none";
-                               column.getElement().setAttribute("aria-sort", "none");
-                       }
-               });
-       };
-
-       //set the column header sort direction
-       Sort.prototype.setColumnHeader = function (column, dir) {
-               column.modules.sort.dir = dir;
-               column.getElement().setAttribute("aria-sort", dir);
-       };
-
-       //sort each item in sort list
-       Sort.prototype._sortItems = function (data, sortList) {
-               var _this72 = this;
-
-               var sorterCount = sortList.length - 1;
-
-               data.sort(function (a, b) {
-                       var result;
-
-                       for (var i = sorterCount; i >= 0; i--) {
-                               var sortItem = sortList[i];
-
-                               result = _this72._sortRow(a, b, sortItem.column, sortItem.dir, sortItem.params);
-
-                               if (result !== 0) {
-                                       break;
-                               }
-                       }
-
-                       return result;
-               });
-       };
-
-       //process individual rows for a sort function on active data
-       Sort.prototype._sortRow = function (a, b, column, dir, params) {
-               var el1Comp, el2Comp, colComp;
-
-               //switch elements depending on search direction
-               var el1 = dir == "asc" ? a : b;
-               var el2 = dir == "asc" ? b : a;
-
-               a = column.getFieldValue(el1.getData());
-               b = column.getFieldValue(el2.getData());
-
-               a = typeof a !== "undefined" ? a : "";
-               b = typeof b !== "undefined" ? b : "";
-
-               el1Comp = el1.getComponent();
-               el2Comp = el2.getComponent();
-
-               return column.modules.sort.sorter.call(this, a, b, el1Comp, el2Comp, column.getComponent(), dir, params);
-       };
-
-       //default data sorters
-       Sort.prototype.sorters = {
-
-               //sort numbers
-               number: function number(a, b, aRow, bRow, column, dir, params) {
-                       var alignEmptyValues = params.alignEmptyValues;
-                       var decimal = params.decimalSeparator || ".";
-                       var thousand = params.thousandSeparator || ",";
-                       var emptyAlign = 0;
-
-                       a = parseFloat(String(a).split(thousand).join("").split(decimal).join("."));
-                       b = parseFloat(String(b).split(thousand).join("").split(decimal).join("."));
-
-                       //handle non numeric values
-                       if (isNaN(a)) {
-                               emptyAlign = isNaN(b) ? 0 : -1;
-                       } else if (isNaN(b)) {
-                               emptyAlign = 1;
-                       } else {
-                               //compare valid values
-                               return a - b;
-                       }
-
-                       //fix empty values in position
-                       if (alignEmptyValues === "top" && dir === "desc" || alignEmptyValues === "bottom" && dir === "asc") {
-                               emptyAlign *= -1;
-                       }
-
-                       return emptyAlign;
-               },
-
-               //sort strings
-               string: function string(a, b, aRow, bRow, column, dir, params) {
-                       var alignEmptyValues = params.alignEmptyValues;
-                       var emptyAlign = 0;
-                       var locale;
-
-                       //handle empty values
-                       if (!a) {
-                               emptyAlign = !b ? 0 : -1;
-                       } else if (!b) {
-                               emptyAlign = 1;
-                       } else {
-                               //compare valid values
-                               switch (_typeof(params.locale)) {
-                                       case "boolean":
-                                               if (params.locale) {
-                                                       locale = this.table.modules.localize.getLocale();
-                                               }
-                                               break;
-                                       case "string":
-                                               locale = params.locale;
-                                               break;
-                               }
-
-                               return String(a).toLowerCase().localeCompare(String(b).toLowerCase(), locale);
-                       }
-
-                       //fix empty values in position
-                       if (alignEmptyValues === "top" && dir === "desc" || alignEmptyValues === "bottom" && dir === "asc") {
-                               emptyAlign *= -1;
-                       }
-
-                       return emptyAlign;
-               },
-
-               //sort date
-               date: function date(a, b, aRow, bRow, column, dir, params) {
-                       if (!params.format) {
-                               params.format = "DD/MM/YYYY";
-                       }
-
-                       return this.sorters.datetime.call(this, a, b, aRow, bRow, column, dir, params);
-               },
-
-               //sort hh:mm formatted times
-               time: function time(a, b, aRow, bRow, column, dir, params) {
-                       if (!params.format) {
-                               params.format = "hh:mm";
-                       }
-
-                       return this.sorters.datetime.call(this, a, b, aRow, bRow, column, dir, params);
-               },
-
-               //sort datetime
-               datetime: function datetime(a, b, aRow, bRow, column, dir, params) {
-                       var format = params.format || "DD/MM/YYYY hh:mm:ss",
-                           alignEmptyValues = params.alignEmptyValues,
-                           emptyAlign = 0;
-
-                       if (typeof moment != "undefined") {
-                               a = moment(a, format);
-                               b = moment(b, format);
-
-                               if (!a.isValid()) {
-                                       emptyAlign = !b.isValid() ? 0 : -1;
-                               } else if (!b.isValid()) {
-                                       emptyAlign = 1;
-                               } else {
-                                       //compare valid values
-                                       return a - b;
-                               }
-
-                               //fix empty values in position
-                               if (alignEmptyValues === "top" && dir === "desc" || alignEmptyValues === "bottom" && dir === "asc") {
-                                       emptyAlign *= -1;
-                               }
-
-                               return emptyAlign;
-                       } else {
-                               console.error("Sort Error - 'datetime' sorter is dependant on moment.js");
-                       }
-               },
-
-               //sort booleans
-               boolean: function boolean(a, b, aRow, bRow, column, dir, params) {
-                       var el1 = a === true || a === "true" || a === "True" || a === 1 ? 1 : 0;
-                       var el2 = b === true || b === "true" || b === "True" || b === 1 ? 1 : 0;
-
-                       return el1 - el2;
-               },
-
-               //sort if element contains any data
-               array: function array(a, b, aRow, bRow, column, dir, params) {
-                       var el1 = 0;
-                       var el2 = 0;
-                       var type = params.type || "length";
-                       var alignEmptyValues = params.alignEmptyValues;
-                       var emptyAlign = 0;
-
-                       function calc(value) {
-
-                               switch (type) {
-                                       case "length":
-                                               return value.length;
-                                               break;
-
-                                       case "sum":
-                                               return value.reduce(function (c, d) {
-                                                       return c + d;
-                                               });
-                                               break;
-
-                                       case "max":
-                                               return Math.max.apply(null, value);
-                                               break;
-
-                                       case "min":
-                                               return Math.min.apply(null, value);
-                                               break;
-
-                                       case "avg":
-                                               return value.reduce(function (c, d) {
-                                                       return c + d;
-                                               }) / value.length;
-                                               break;
-                               }
-                       }
-
-                       //handle non array values
-                       if (!Array.isArray(a)) {
-                               alignEmptyValues = !Array.isArray(b) ? 0 : -1;
-                       } else if (!Array.isArray(b)) {
-                               alignEmptyValues = 1;
-                       } else {
-
-                               //compare valid values
-                               el1 = a ? calc(a) : 0;
-                               el2 = b ? calc(b) : 0;
-
-                               return el1 - el2;
-                       }
-
-                       //fix empty values in position
-                       if (alignEmptyValues === "top" && dir === "desc" || alignEmptyValues === "bottom" && dir === "asc") {
-                               emptyAlign *= -1;
-                       }
-
-                       return emptyAlign;
-               },
-
-               //sort if element contains any data
-               exists: function exists(a, b, aRow, bRow, column, dir, params) {
-                       var el1 = typeof a == "undefined" ? 0 : 1;
-                       var el2 = typeof b == "undefined" ? 0 : 1;
-
-                       return el1 - el2;
-               },
-
-               //sort alpha numeric strings
-               alphanum: function alphanum(as, bs, aRow, bRow, column, dir, params) {
-                       var a,
-                           b,
-                           a1,
-                           b1,
-                           i = 0,
-                           L,
-                           rx = /(\d+)|(\D+)/g,
-                           rd = /\d/;
-                       var alignEmptyValues = params.alignEmptyValues;
-                       var emptyAlign = 0;
-
-                       //handle empty values
-                       if (!as && as !== 0) {
-                               emptyAlign = !bs && bs !== 0 ? 0 : -1;
-                       } else if (!bs && bs !== 0) {
-                               emptyAlign = 1;
-                       } else {
-
-                               if (isFinite(as) && isFinite(bs)) return as - bs;
-                               a = String(as).toLowerCase();
-                               b = String(bs).toLowerCase();
-                               if (a === b) return 0;
-                               if (!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1;
-                               a = a.match(rx);
-                               b = b.match(rx);
-                               L = a.length > b.length ? b.length : a.length;
-                               while (i < L) {
-                                       a1 = a[i];
-                                       b1 = b[i++];
-                                       if (a1 !== b1) {
-                                               if (isFinite(a1) && isFinite(b1)) {
-                                                       if (a1.charAt(0) === "0") a1 = "." + a1;
-                                                       if (b1.charAt(0) === "0") b1 = "." + b1;
-                                                       return a1 - b1;
-                                               } else return a1 > b1 ? 1 : -1;
-                                       }
-                               }
-
-                               return a.length > b.length;
-                       }
-
-                       //fix empty values in position
-                       if (alignEmptyValues === "top" && dir === "desc" || alignEmptyValues === "bottom" && dir === "asc") {
-                               emptyAlign *= -1;
-                       }
-
-                       return emptyAlign;
-               }
-       };
-
-       Tabulator.prototype.registerModule("sort", Sort);
-
-       var Validate = function Validate(table) {
-               this.table = table;
-       };
-
-       //validate
-       Validate.prototype.initializeColumn = function (column) {
-               var self = this,
-                   config = [],
-                   validator;
-
-               if (column.definition.validator) {
-
-                       if (Array.isArray(column.definition.validator)) {
-                               column.definition.validator.forEach(function (item) {
-                                       validator = self._extractValidator(item);
-
-                                       if (validator) {
-                                               config.push(validator);
-                                       }
-                               });
-                       } else {
-                               validator = this._extractValidator(column.definition.validator);
-
-                               if (validator) {
-                                       config.push(validator);
-                               }
-                       }
-
-                       column.modules.validate = config.length ? config : false;
-               }
-       };
-
-       Validate.prototype._extractValidator = function (value) {
-               var type, params, pos;
-
-               switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
-                       case "string":
-                               pos = value.indexOf(':');
-
-                               if (pos > -1) {
-                                       type = value.substring(0, pos);
-                                       params = value.substring(pos + 1);
-                               } else {
-                                       type = value;
-                               }
-
-                               return this._buildValidator(type, params);
-                               break;
-
-                       case "function":
-                               return this._buildValidator(value);
-                               break;
-
-                       case "object":
-                               return this._buildValidator(value.type, value.parameters);
-                               break;
-               }
-       };
-
-       Validate.prototype._buildValidator = function (type, params) {
-
-               var func = typeof type == "function" ? type : this.validators[type];
-
-               if (!func) {
-                       console.warn("Validator Setup Error - No matching validator found:", type);
-                       return false;
-               } else {
-                       return {
-                               type: typeof type == "function" ? "function" : type,
-                               func: func,
-                               params: params
-                       };
-               }
-       };
-
-       Validate.prototype.validate = function (validators, cell, value) {
-               var self = this,
-                   valid = [];
-
-               if (validators) {
-                       validators.forEach(function (item) {
-                               if (!item.func.call(self, cell, value, item.params)) {
-                                       valid.push({
-                                               type: item.type,
-                                               parameters: item.params
-                                       });
-                               }
-                       });
-               }
-
-               return valid.length ? valid : true;
-       };
-
-       Validate.prototype.validators = {
-
-               //is integer
-               integer: function integer(cell, value, parameters) {
-                       if (value === "" || value === null || typeof value === "undefined") {
-                               return true;
-                       }
-                       value = Number(value);
-                       return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;
-               },
-
-               //is float
-               float: function float(cell, value, parameters) {
-                       if (value === "" || value === null || typeof value === "undefined") {
-                               return true;
-                       }
-                       value = Number(value);
-                       return typeof value === 'number' && isFinite(value) && value % 1 !== 0;
-               },
-
-               //must be a number
-               numeric: function numeric(cell, value, parameters) {
-                       if (value === "" || value === null || typeof value === "undefined") {
-                               return true;
-                       }
-                       return !isNaN(value);
-               },
-
-               //must be a string
-               string: function string(cell, value, parameters) {
-                       if (value === "" || value === null || typeof value === "undefined") {
-                               return true;
-                       }
-                       return isNaN(value);
-               },
-
-               //maximum value
-               max: function max(cell, value, parameters) {
-                       if (value === "" || value === null || typeof value === "undefined") {
-                               return true;
-                       }
-                       return parseFloat(value) <= parameters;
-               },
-
-               //minimum value
-               min: function min(cell, value, parameters) {
-                       if (value === "" || value === null || typeof value === "undefined") {
-                               return true;
-                       }
-                       return parseFloat(value) >= parameters;
-               },
-
-               //minimum string length
-               minLength: function minLength(cell, value, parameters) {
-                       if (value === "" || value === null || typeof value === "undefined") {
-                               return true;
-                       }
-                       return String(value).length >= parameters;
-               },
-
-               //maximum string length
-               maxLength: function maxLength(cell, value, parameters) {
-                       if (value === "" || value === null || typeof value === "undefined") {
-                               return true;
-                       }
-                       return String(value).length <= parameters;
-               },
-
-               //in provided value list
-               in: function _in(cell, value, parameters) {
-                       if (value === "" || value === null || typeof value === "undefined") {
-                               return true;
-                       }
-                       if (typeof parameters == "string") {
-                               parameters = parameters.split("|");
-                       }
-
-                       return value === "" || parameters.indexOf(value) > -1;
-               },
-
-               //must match provided regex
-               regex: function regex(cell, value, parameters) {
-                       if (value === "" || value === null || typeof value === "undefined") {
-                               return true;
-                       }
-                       var reg = new RegExp(parameters);
-
-                       return reg.test(value);
-               },
-
-               //value must be unique in this column
-               unique: function unique(cell, value, parameters) {
-                       if (value === "" || value === null || typeof value === "undefined") {
-                               return true;
-                       }
-                       var unique = true;
-
-                       var cellData = cell.getData();
-                       var column = cell.getColumn()._getSelf();
-
-                       this.table.rowManager.rows.forEach(function (row) {
-                               var data = row.getData();
-
-                               if (data !== cellData) {
-                                       if (value == column.getFieldValue(data)) {
-                                               unique = false;
-                                       }
-                               }
-                       });
-
-                       return unique;
-               },
-
-               //must have a value
-               required: function required(cell, value, parameters) {
-                       return value !== "" && value !== null && typeof value !== "undefined";
-               }
-       };
-
-       Tabulator.prototype.registerModule("validate", Validate);
-
-       return Tabulator;
-});
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/tabulator.min.js b/app/static/vendors/tabulator/js.old/tabulator.min.js
deleted file mode 100644 (file)
index ea2c2b2..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};!function(e,t){"object"===("undefined"==typeof exports?"undefined":_typeof(exports))&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.Tabulator=t()}(this,function(){"use strict";Array.prototype.findIndex||Object.defineProperty(Array.prototype,"findIndex",{value:function(e){if(null==this)throw new TypeError('"this" is null or not defined');var t=Object(this),o=t.length>>>0;if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var i=arguments[1],n=0;n<o;){var s=t[n];if(e.call(i,s,n,t))return n;n++}return-1}}),Array.prototype.find||Object.defineProperty(Array.prototype,"find",{value:function(e){if(null==this)throw new TypeError('"this" is null or not defined');var t=Object(this),o=t.length>>>0;if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var i=arguments[1],n=0;n<o;){var s=t[n];if(e.call(i,s,n,t))return s;n++}}});var t=function(e){this.table=e,this.blockHozScrollEvent=!1,this.headersElement=this.createHeadersElement(),this.element=this.createHeaderElement(),this.rowManager=null,this.columns=[],this.columnsByIndex=[],this.columnsByField={},this.scrollLeft=0,this.element.insertBefore(this.headersElement,this.element.firstChild)};t.prototype.createHeadersElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-headers"),e},t.prototype.createHeaderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-header"),this.table.options.headerVisible||e.classList.add("tabulator-header-hidden"),e},t.prototype.initialize=function(){},t.prototype.setRowManager=function(e){this.rowManager=e},t.prototype.getElement=function(){return this.element},t.prototype.getHeadersElement=function(){return this.headersElement},t.prototype.scrollHorizontal=function(e){var t=0,o=this.element.scrollWidth-this.table.element.clientWidth;this.element.scrollLeft=e,e>o?(t=e-o,this.element.style.marginLeft=-t+"px"):this.element.style.marginLeft=0,this.scrollLeft=e,this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.scrollHorizontal()},t.prototype.generateColumnsFromRowData=function(e){var t,o,i=[];if(e&&e.length){t=e[0];for(var n in t){var s={field:n,title:n},r=t[n];switch(void 0===r?"undefined":_typeof(r)){case"undefined":o="string";break;case"boolean":o="boolean";break;case"object":o=Array.isArray(r)?"array":"string";break;default:o=isNaN(r)||""===r?r.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)?"alphanum":"string":"number"}s.sorter=o,i.push(s)}this.table.options.columns=i,this.setColumns(this.table.options.columns)}},t.prototype.setColumns=function(e,t){for(var o=this;o.headersElement.firstChild;)o.headersElement.removeChild(o.headersElement.firstChild);o.columns=[],o.columnsByIndex=[],o.columnsByField={},o.table.modExists("frozenColumns")&&o.table.modules.frozenColumns.reset(),e.forEach(function(e,t){o._addColumn(e)}),o._reIndexColumns(),o.table.options.responsiveLayout&&o.table.modExists("responsiveLayout",!0)&&o.table.modules.responsiveLayout.initialize(),o.redraw(!0)},t.prototype._addColumn=function(e,t,o){var n=new i(e,this),s=n.getElement(),r=o?this.findColumnIndex(o):o;if(o&&r>-1){var a=this.columns.indexOf(o.getTopColumn()),l=o.getElement();t?(this.columns.splice(a,0,n),l.parentNode.insertBefore(s,l)):(this.columns.splice(a+1,0,n),l.parentNode.insertBefore(s,l.nextSibling))}else t?(this.columns.unshift(n),this.headersElement.insertBefore(n.getElement(),this.headersElement.firstChild)):(this.columns.push(n),this.headersElement.appendChild(n.getElement())),n.columnRendered();return n},t.prototype.registerColumnField=function(e){e.definition.field&&(this.columnsByField[e.definition.field]=e)},t.prototype.registerColumnPosition=function(e){this.columnsByIndex.push(e)},t.prototype._reIndexColumns=function(){this.columnsByIndex=[],this.columns.forEach(function(e){e.reRegisterPosition()})},t.prototype._verticalAlignHeaders=function(){var e=this,t=0;e.columns.forEach(function(e){var o;e.clearVerticalAlign(),(o=e.getHeight())>t&&(t=o)}),e.columns.forEach(function(o){o.verticalAlign(e.table.options.columnHeaderVertAlign,t)}),e.rowManager.adjustTableSize()},t.prototype.findColumn=function(e){var t=this;if("object"!=(void 0===e?"undefined":_typeof(e)))return this.columnsByField[e]||!1;if(e instanceof i)return e;if(e instanceof o)return e._getSelf()||!1;if("undefined"!=typeof HTMLElement&&e instanceof HTMLElement){return t.columns.find(function(t){return t.element===e})||!1}return!1},t.prototype.getColumnByField=function(e){return this.columnsByField[e]},t.prototype.getColumnsByFieldRoot=function(e){var t=this,o=[];return Object.keys(this.columnsByField).forEach(function(i){i.split(".")[0]===e&&o.push(t.columnsByField[i])}),o},t.prototype.getColumnByIndex=function(e){return this.columnsByIndex[e]},t.prototype.getFirstVisibileColumn=function(e){var e=this.columnsByIndex.findIndex(function(e){return e.visible});return e>-1&&this.columnsByIndex[e]},t.prototype.getColumns=function(){return this.columns},t.prototype.findColumnIndex=function(e){return this.columnsByIndex.findIndex(function(t){return e===t})},t.prototype.getRealColumns=function(){return this.columnsByIndex},t.prototype.traverse=function(e){this.columnsByIndex.forEach(function(t,o){e(t,o)})},t.prototype.getDefinitions=function(e){var t=this,o=[];return t.columnsByIndex.forEach(function(t){(!e||e&&t.visible)&&o.push(t.getDefinition())}),o},t.prototype.getDefinitionTree=function(){var e=this,t=[];return e.columns.forEach(function(e){t.push(e.getDefinition(!0))}),t},t.prototype.getComponents=function(e){var t=this,o=[];return(e?t.columns:t.columnsByIndex).forEach(function(e){o.push(e.getComponent())}),o},t.prototype.getWidth=function(){var e=0;return this.columnsByIndex.forEach(function(t){t.visible&&(e+=t.getWidth())}),e},t.prototype.moveColumn=function(e,t,o){this.moveColumnActual(e,t,o),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),t.element.parentNode.insertBefore(e.element,t.element),o&&t.element.parentNode.insertBefore(t.element,e.element),this._verticalAlignHeaders(),this.table.rowManager.reinitialize()},t.prototype.moveColumnActual=function(e,t,o){e.parent.isGroup?this._moveColumnInArray(e.parent.columns,e,t,o):this._moveColumnInArray(this.columns,e,t,o),this._moveColumnInArray(this.columnsByIndex,e,t,o,!0),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.table.options.columnMoved&&this.table.options.columnMoved.call(this.table,e.getComponent(),this.table.columnManager.getComponents()),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.columns&&this.table.modules.persistence.save("columns")},t.prototype._moveColumnInArray=function(e,t,o,i,n){var s,r=e.indexOf(t);r>-1&&(e.splice(r,1),s=e.indexOf(o),s>-1?i&&(s+=1):s=r,e.splice(s,0,t),n&&this.table.rowManager.rows.forEach(function(e){if(e.cells.length){var t=e.cells.splice(r,1)[0];e.cells.splice(s,0,t)}}))},t.prototype.scrollToColumn=function(e,t,o){var i=this,n=0,s=0,r=0,a=e.getElement();return new Promise(function(l,c){if(void 0===t&&(t=i.table.options.scrollToColumnPosition),void 0===o&&(o=i.table.options.scrollToColumnIfVisible),e.visible){switch(t){case"middle":case"center":r=-i.element.clientWidth/2;break;case"right":r=a.clientWidth-i.headersElement.clientWidth}if(!o&&(s=a.offsetLeft)>0&&s+a.offsetWidth<i.element.clientWidth)return!1;n=a.offsetLeft+i.element.scrollLeft+r,n=Math.max(Math.min(n,i.table.rowManager.element.scrollWidth-i.table.rowManager.element.clientWidth),0),i.table.rowManager.scrollHorizontal(n),i.scrollHorizontal(n),l()}else console.warn("Scroll Error - Column not visible"),c("Scroll Error - Column not visible")})},t.prototype.generateCells=function(e){var t=this,o=[];return t.columnsByIndex.forEach(function(t){o.push(t.generateCell(e))}),o},t.prototype.getFlexBaseWidth=function(){var e=this,t=e.table.element.clientWidth,o=0;return e.rowManager.element.scrollHeight>e.rowManager.element.clientHeight&&(t-=e.rowManager.element.offsetWidth-e.rowManager.element.clientWidth),this.columnsByIndex.forEach(function(i){var n,s,r;i.visible&&(n=i.definition.width||0,s=void 0===i.minWidth?e.table.options.columnMinWidth:parseInt(i.minWidth),r="string"==typeof n?n.indexOf("%")>-1?t/100*parseInt(n):parseInt(n):n,o+=r>s?r:s)}),o},t.prototype.addColumn=function(e,t,o){var i=this;return new Promise(function(n,s){var r=i._addColumn(e,t,o);i._reIndexColumns(),i.table.options.responsiveLayout&&i.table.modExists("responsiveLayout",!0)&&i.table.modules.responsiveLayout.initialize(),i.table.modExists("columnCalcs")&&i.table.modules.columnCalcs.recalc(i.table.rowManager.activeRows),i.redraw(),"fitColumns"!=i.table.modules.layout.getMode()&&r.reinitializeWidth(),i._verticalAlignHeaders(),i.table.rowManager.reinitialize(),n(r)})},t.prototype.deregisterColumn=function(e){var t,o=e.getField();o&&delete this.columnsByField[o],t=this.columnsByIndex.indexOf(e),t>-1&&this.columnsByIndex.splice(t,1),t=this.columns.indexOf(e),t>-1&&this.columns.splice(t,1),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.redraw()},t.prototype.redraw=function(e){e&&(u.prototype.helpers.elVisible(this.element)&&this._verticalAlignHeaders(),this.table.rowManager.resetScroll(),this.table.rowManager.reinitialize()),["fitColumns","fitDataStretch"].indexOf(this.table.modules.layout.getMode())>-1?this.table.modules.layout.layout():e?this.table.modules.layout.layout():this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout(),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),e&&(this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.columns&&this.table.modules.persistence.save("columns"),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.redraw()),this.table.footerManager.redraw()};var o=function(e){this._column=e,this.type="ColumnComponent"};o.prototype.getElement=function(){return this._column.getElement()},o.prototype.getDefinition=function(){return this._column.getDefinition()},o.prototype.getField=function(){return this._column.getField()},o.prototype.getCells=function(){var e=[];return this._column.cells.forEach(function(t){e.push(t.getComponent())}),e},o.prototype.getVisibility=function(){return this._column.visible},o.prototype.show=function(){this._column.isGroup?this._column.columns.forEach(function(e){e.show()}):this._column.show()},o.prototype.hide=function(){this._column.isGroup?this._column.columns.forEach(function(e){e.hide()}):this._column.hide()},o.prototype.toggle=function(){this._column.visible?this.hide():this.show()},o.prototype.delete=function(){return this._column.delete()},o.prototype.getSubColumns=function(){var e=[];return this._column.columns.length&&this._column.columns.forEach(function(t){e.push(t.getComponent())}),e},o.prototype.getParentColumn=function(){return this._column.parent instanceof i&&this._column.parent.getComponent()},o.prototype._getSelf=function(){return this._column},o.prototype.scrollTo=function(){return this._column.table.columnManager.scrollToColumn(this._column)},o.prototype.getTable=function(){return this._column.table},o.prototype.headerFilterFocus=function(){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.setHeaderFilterFocus(this._column)},o.prototype.reloadHeaderFilter=function(){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.reloadHeaderFilter(this._column)},o.prototype.getHeaderFilterValue=function(){if(this._column.table.modExists("filter",!0))return this._column.table.modules.filter.getHeaderFilterValue(this._column)},o.prototype.setHeaderFilterValue=function(e){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.setHeaderFilterValue(this._column,e)},o.prototype.move=function(e,t){var o=this._column.table.columnManager.findColumn(e);o?this._column.table.columnManager.moveColumn(this._column,o,t):console.warn("Move Error - No matching column found:",o)},o.prototype.getNextColumn=function(){var e=this._column.nextColumn();return!!e&&e.getComponent()},o.prototype.getPrevColumn=function(){var e=this._column.prevColumn();return!!e&&e.getComponent()},o.prototype.updateDefinition=function(e){return this._column.updateDefinition(e)};var i=function e(t,o){var i=this;this.table=o.table,this.definition=t,this.parent=o,this.type="column",this.columns=[],this.cells=[],this.element=this.createElement(),this.contentElement=!1,this.titleElement=!1,this.groupElement=this.createGroupElement(),this.isGroup=!1,this.tooltip=!1,this.hozAlign="",this.vertAlign="",this.field="",this.fieldStructure="",this.getFieldValue="",this.setFieldValue="",this.titleFormatterRendered=!1,this.setField(this.definition.field),this.table.options.invalidOptionWarnings&&this.checkDefinition(),this.modules={},this.cellEvents={cellClick:!1,cellDblClick:!1,cellContext:!1,cellTap:!1,cellDblTap:!1,cellTapHold:!1,cellMouseEnter:!1,cellMouseLeave:!1,cellMouseOver:!1,cellMouseOut:!1,cellMouseMove:!1},this.width=null,this.widthStyled="",this.minWidth=null,this.minWidthStyled="",this.widthFixed=!1,this.visible=!0,this._mapDepricatedFunctionality(),t.columns?(this.isGroup=!0,t.columns.forEach(function(t,o){var n=new e(t,i);i.attachColumn(n)}),i.checkColumnVisibility()):o.registerColumnField(this),t.rowHandle&&!1!==this.table.options.movableRows&&this.table.modExists("moveRow")&&this.table.modules.moveRow.setHandle(!0),this._buildHeader(),this.bindModuleColumns()};i.prototype.createElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-col"),e.setAttribute("role","columnheader"),e.setAttribute("aria-sort","none"),e},i.prototype.createGroupElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-col-group-cols"),e},i.prototype.checkDefinition=function(){var e=this;Object.keys(this.definition).forEach(function(t){-1===e.defaultOptionList.indexOf(t)&&console.warn("Invalid column definition option in '"+(e.field||e.definition.title)+"' column:",t)})},i.prototype.setField=function(e){this.field=e,this.fieldStructure=e?this.table.options.nestedFieldSeparator?e.split(this.table.options.nestedFieldSeparator):[e]:[],this.getFieldValue=this.fieldStructure.length>1?this._getNestedData:this._getFlatData,this.setFieldValue=this.fieldStructure.length>1?this._setNestedData:this._setFlatData},i.prototype.registerColumnPosition=function(e){this.parent.registerColumnPosition(e)},i.prototype.registerColumnField=function(e){this.parent.registerColumnField(e)},i.prototype.reRegisterPosition=function(){this.isGroup?this.columns.forEach(function(e){e.reRegisterPosition()}):this.registerColumnPosition(this)},i.prototype._mapDepricatedFunctionality=function(){void 0!==this.definition.hideInHtml&&(this.definition.htmlOutput=!this.definition.hideInHtml,console.warn("hideInHtml column definition property is deprecated, you should now use htmlOutput")),void 0!==this.definition.align&&(this.definition.hozAlign=this.definition.align,console.warn("align column definition property is deprecated, you should now use hozAlign"))},i.prototype.setTooltip=function(){var e=this,t=e.definition,o=t.headerTooltip||!1===t.tooltip?t.headerTooltip:e.table.options.tooltipsHeader;o?!0===o?t.field?e.table.modules.localize.bind("columns|"+t.field,function(o){e.element.setAttribute("title",o||t.title)}):e.element.setAttribute("title",t.title):("function"==typeof o&&!1===(o=o(e.getComponent()))&&(o=""),e.element.setAttribute("title",o)):e.element.setAttribute("title","")},i.prototype._buildHeader=function(){for(var e=this,t=e.definition;e.element.firstChild;)e.element.removeChild(e.element.firstChild);t.headerVertical&&(e.element.classList.add("tabulator-col-vertical"),"flip"===t.headerVertical&&e.element.classList.add("tabulator-col-vertical-flip")),e.contentElement=e._bindEvents(),e.contentElement=e._buildColumnHeaderContent(),e.element.appendChild(e.contentElement),e.isGroup?e._buildGroupHeader():e._buildColumnHeader(),e.setTooltip(),e.table.options.resizableColumns&&e.table.modExists("resizeColumns")&&e.table.modules.resizeColumns.initializeColumn("header",e,e.element),t.headerFilter&&e.table.modExists("filter")&&e.table.modExists("edit")&&(void 0!==t.headerFilterPlaceholder&&t.field&&e.table.modules.localize.setHeaderFilterColumnPlaceholder(t.field,t.headerFilterPlaceholder),e.table.modules.filter.initializeColumn(e)),e.table.modExists("frozenColumns")&&e.table.modules.frozenColumns.initializeColumn(e),e.table.options.movableColumns&&!e.isGroup&&e.table.modExists("moveColumn")&&e.table.modules.moveColumn.initializeColumn(e),(t.topCalc||t.bottomCalc)&&e.table.modExists("columnCalcs")&&e.table.modules.columnCalcs.initializeColumn(e),e.table.modExists("persistence")&&e.table.modules.persistence.config.columns&&e.table.modules.persistence.initializeColumn(e),e.element.addEventListener("mouseenter",function(t){e.setTooltip()})},i.prototype._bindEvents=function(){var e,t,o,i=this,n=i.definition;"function"==typeof n.headerClick&&i.element.addEventListener("click",function(e){n.headerClick(e,i.getComponent())}),"function"==typeof n.headerDblClick&&i.element.addEventListener("dblclick",function(e){n.headerDblClick(e,i.getComponent())}),"function"==typeof n.headerContext&&i.element.addEventListener("contextmenu",function(e){n.headerContext(e,i.getComponent())}),"function"==typeof n.headerTap&&(o=!1,i.element.addEventListener("touchstart",function(e){o=!0},{passive:!0}),i.element.addEventListener("touchend",function(e){o&&n.headerTap(e,i.getComponent()),o=!1})),"function"==typeof n.headerDblTap&&(e=null,i.element.addEventListener("touchend",function(t){e?(clearTimeout(e),e=null,n.headerDblTap(t,i.getComponent())):e=setTimeout(function(){clearTimeout(e),e=null},300)})),"function"==typeof n.headerTapHold&&(t=null,i.element.addEventListener("touchstart",function(e){clearTimeout(t),t=setTimeout(function(){clearTimeout(t),t=null,o=!1,n.headerTapHold(e,i.getComponent())},1e3)},{passive:!0}),i.element.addEventListener("touchend",function(e){clearTimeout(t),t=null})),"function"==typeof n.cellClick&&(i.cellEvents.cellClick=n.cellClick),"function"==typeof n.cellDblClick&&(i.cellEvents.cellDblClick=n.cellDblClick),"function"==typeof n.cellContext&&(i.cellEvents.cellContext=n.cellContext),"function"==typeof n.cellMouseEnter&&(i.cellEvents.cellMouseEnter=n.cellMouseEnter),"function"==typeof n.cellMouseLeave&&(i.cellEvents.cellMouseLeave=n.cellMouseLeave),"function"==typeof n.cellMouseOver&&(i.cellEvents.cellMouseOver=n.cellMouseOver),"function"==typeof n.cellMouseOut&&(i.cellEvents.cellMouseOut=n.cellMouseOut),"function"==typeof n.cellMouseMove&&(i.cellEvents.cellMouseMove=n.cellMouseMove),"function"==typeof n.cellTap&&(i.cellEvents.cellTap=n.cellTap),"function"==typeof n.cellDblTap&&(i.cellEvents.cellDblTap=n.cellDblTap),"function"==typeof n.cellTapHold&&(i.cellEvents.cellTapHold=n.cellTapHold),"function"==typeof n.cellEdited&&(i.cellEvents.cellEdited=n.cellEdited),"function"==typeof n.cellEditing&&(i.cellEvents.cellEditing=n.cellEditing),"function"==typeof n.cellEditCancelled&&(i.cellEvents.cellEditCancelled=n.cellEditCancelled)},i.prototype._buildColumnHeader=function(){var e=this,t=e.definition,o=e.table;if(o.modExists("sort")&&o.modules.sort.initializeColumn(e,e.contentElement),(t.headerContextMenu||t.headerMenu)&&o.modExists("menu")&&o.modules.menu.initializeColumnHeader(e),o.modExists("format")&&o.modules.format.initializeColumn(e),void 0!==t.editor&&o.modExists("edit")&&o.modules.edit.initializeColumn(e),void 0!==t.validator&&o.modExists("validate")&&o.modules.validate.initializeColumn(e),o.modExists("mutator")&&o.modules.mutator.initializeColumn(e),o.modExists("accessor")&&o.modules.accessor.initializeColumn(e),_typeof(o.options.responsiveLayout)&&o.modExists("responsiveLayout")&&o.modules.responsiveLayout.initializeColumn(e),void 0!==t.visible&&(t.visible?e.show(!0):e.hide(!0)),t.cssClass){t.cssClass.split(" ").forEach(function(t){e.element.classList.add(t)})}t.field&&this.element.setAttribute("tabulator-field",t.field),e.setMinWidth(void 0===t.minWidth?e.table.options.columnMinWidth:parseInt(t.minWidth)),e.reinitializeWidth(),e.tooltip=e.definition.tooltip||!1===e.definition.tooltip?e.definition.tooltip:e.table.options.tooltips,e.hozAlign=void 0===e.definition.hozAlign?e.table.options.cellHozAlign:e.definition.hozAlign,e.vertAlign=void 0===e.definition.vertAlign?e.table.options.cellVertAlign:e.definition.vertAlign},i.prototype._buildColumnHeaderContent=function(){var e=(this.definition,this.table,document.createElement("div"));return e.classList.add("tabulator-col-content"),this.titleElement=this._buildColumnHeaderTitle(),e.appendChild(this.titleElement),e},i.prototype._buildColumnHeaderTitle=function(){var e=this,t=e.definition,o=e.table,i=document.createElement("div");if(i.classList.add("tabulator-col-title"),t.editableTitle){var n=document.createElement("input");n.classList.add("tabulator-title-editor"),n.addEventListener("click",function(e){e.stopPropagation(),n.focus()}),n.addEventListener("change",function(){t.title=n.value,o.options.columnTitleChanged.call(e.table,e.getComponent())}),i.appendChild(n),t.field?o.modules.localize.bind("columns|"+t.field,function(e){n.value=e||t.title||"&nbsp;"}):n.value=t.title||"&nbsp;"}else t.field?o.modules.localize.bind("columns|"+t.field,function(o){e._formatColumnHeaderTitle(i,o||t.title||"&nbsp;")}):e._formatColumnHeaderTitle(i,t.title||"&nbsp;");return i},i.prototype._formatColumnHeaderTitle=function(e,t){var o,i,n,s,r,a=this;if(this.definition.titleFormatter&&this.table.modExists("format"))switch(o=this.table.modules.format.getFormatter(this.definition.titleFormatter),r=function(e){a.titleFormatterRendered=e},s={getValue:function(){return t},getElement:function(){return e}},n=this.definition.titleFormatterParams||{},n="function"==typeof n?n():n,i=o.call(this.table.modules.format,s,n,r),void 0===i?"undefined":_typeof(i)){case"object":i instanceof Node?e.appendChild(i):(e.innerHTML="",console.warn("Format Error - Title formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:",i));break;case"undefined":case"null":e.innerHTML="";break;default:e.innerHTML=i}else e.innerHTML=t},i.prototype._buildGroupHeader=function(){var e=this;if(this.element.classList.add("tabulator-col-group"),this.element.setAttribute("role","columngroup"),this.element.setAttribute("aria-title",this.definition.title),this.definition.cssClass){this.definition.cssClass.split(" ").forEach(function(t){e.element.classList.add(t)})}this.element.appendChild(this.groupElement)},i.prototype._getFlatData=function(e){return e[this.field]},i.prototype._getNestedData=function(e){for(var t,o=e,i=this.fieldStructure,n=i.length,s=0;s<n&&(o=o[i[s]],t=o,o);s++);return t},i.prototype._setFlatData=function(e,t){this.field&&(e[this.field]=t)},i.prototype._setNestedData=function(e,t){for(var o=e,i=this.fieldStructure,n=i.length,s=0;s<n;s++)if(s==n-1)o[i[s]]=t;else{if(!o[i[s]]){if(void 0===t)break;o[i[s]]={}}o=o[i[s]]}},i.prototype.attachColumn=function(e){var t=this;t.groupElement?(t.columns.push(e),t.groupElement.appendChild(e.getElement())):console.warn("Column Warning - Column being attached to another column instead of column group")},i.prototype.verticalAlign=function(e,t){var o=this.parent.isGroup?this.parent.getGroupElement().clientHeight:t||this.parent.getHeadersElement().clientHeight;this.element.style.height=o+"px",this.isGroup&&(this.groupElement.style.minHeight=o-this.contentElement.offsetHeight+"px"),this.isGroup||"top"===e||(this.element.style.paddingTop="bottom"===e?this.element.clientHeight-this.contentElement.offsetHeight+"px":(this.element.clientHeight-this.contentElement.offsetHeight)/2+"px"),this.columns.forEach(function(t){t.verticalAlign(e)})},i.prototype.clearVerticalAlign=function(){this.element.style.paddingTop="",this.element.style.height="",this.element.style.minHeight="",this.groupElement.style.minHeight="",this.columns.forEach(function(e){e.clearVerticalAlign()})},i.prototype.bindModuleColumns=function(){"rownum"==this.definition.formatter&&(this.table.rowManager.rowNumColumn=this)},i.prototype.getElement=function(){return this.element},i.prototype.getGroupElement=function(){return this.groupElement},i.prototype.getField=function(){return this.field},i.prototype.getFirstColumn=function(){return this.isGroup?!!this.columns.length&&this.columns[0].getFirstColumn():this},i.prototype.getLastColumn=function(){return this.isGroup?!!this.columns.length&&this.columns[this.columns.length-1].getLastColumn():this},i.prototype.getColumns=function(){return this.columns},i.prototype.getCells=function(){return this.cells},i.prototype.getTopColumn=function(){return this.parent.isGroup?this.parent.getTopColumn():this},i.prototype.getDefinition=function(e){var t=[];return this.isGroup&&e&&(this.columns.forEach(function(e){t.push(e.getDefinition(!0))}),this.definition.columns=t),this.definition},i.prototype.checkColumnVisibility=function(){var e=!1;this.columns.forEach(function(t){t.visible&&(e=!0)}),e?(this.show(),this.parent.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!1)):this.hide()},i.prototype.show=function(e,t){this.visible||(this.visible=!0,this.element.style.display="",this.parent.isGroup&&this.parent.checkColumnVisibility(),this.cells.forEach(function(e){e.show()}),this.isGroup||null!==this.width||this.reinitializeWidth(),this.table.columnManager._verticalAlignHeaders(),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.columns&&this.table.modules.persistence.save("columns"),!t&&this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.updateColumnVisibility(this,this.visible),e||this.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!0),this.parent.isGroup&&this.parent.matchChildWidths())},i.prototype.hide=function(e,t){this.visible&&(this.visible=!1,this.element.style.display="none",this.table.columnManager._verticalAlignHeaders(),this.parent.isGroup&&this.parent.checkColumnVisibility(),this.cells.forEach(function(e){e.hide()}),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.columns&&this.table.modules.persistence.save("columns"),!t&&this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.updateColumnVisibility(this,this.visible),e||this.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!1),this.parent.isGroup&&this.parent.matchChildWidths())},i.prototype.matchChildWidths=function(){var e=0;this.contentElement&&this.columns.length&&(this.columns.forEach(function(t){t.visible&&(e+=t.getWidth())}),this.contentElement.style.maxWidth=e-1+"px",this.parent.isGroup&&this.parent.matchChildWidths())},i.prototype.setWidth=function(e){this.widthFixed=!0,this.setWidthActual(e)},i.prototype.setWidthActual=function(e){isNaN(e)&&(e=Math.floor(this.table.element.clientWidth/100*parseInt(e))),e=Math.max(this.minWidth,e),this.width=e,this.widthStyled=e?e+"px":"",this.element.style.width=this.widthStyled,this.isGroup||this.cells.forEach(function(e){e.setWidth()}),this.parent.isGroup&&this.parent.matchChildWidths(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout()},i.prototype.checkCellHeights=function(){var e=[];this.cells.forEach(function(t){t.row.heightInitialized&&(null!==t.row.getElement().offsetParent?(e.push(t.row),t.row.clearCellHeight()):t.row.heightInitialized=!1)}),e.forEach(function(e){e.calcHeight()}),e.forEach(function(e){e.setCellHeight()})},i.prototype.getWidth=function(){var e=0;return this.isGroup?this.columns.forEach(function(t){t.visible&&(e+=t.getWidth())}):e=this.width,e},i.prototype.getHeight=function(){return this.element.offsetHeight},i.prototype.setMinWidth=function(e){this.minWidth=e,this.minWidthStyled=e?e+"px":"",this.element.style.minWidth=this.minWidthStyled,this.cells.forEach(function(e){e.setMinWidth()})},i.prototype.delete=function(){var e=this;return new Promise(function(t,o){e.isGroup&&e.columns.forEach(function(e){e.delete()}),e.table.modExists("edit")&&e.table.modules.edit.currentCell.column===e&&e.table.modules.edit.cancelEdit();for(var i=e.cells.length,n=0;n<i;n++)e.cells[0].delete();e.element.parentNode.removeChild(e.element),e.table.columnManager.deregisterColumn(e),t()})},i.prototype.columnRendered=function(){this.titleFormatterRendered&&this.titleFormatterRendered()},i.prototype.generateCell=function(e){var t=this,o=new l(t,e);return this.cells.push(o),o},i.prototype.nextColumn=function(){var e=this.table.columnManager.findColumnIndex(this);return e>-1&&this._nextVisibleColumn(e+1)},i.prototype._nextVisibleColumn=function(e){var t=this.table.columnManager.getColumnByIndex(e);return!t||t.visible?t:this._nextVisibleColumn(e+1)},i.prototype.prevColumn=function(){var e=this.table.columnManager.findColumnIndex(this);return e>-1&&this._prevVisibleColumn(e-1)},i.prototype._prevVisibleColumn=function(e){var t=this.table.columnManager.getColumnByIndex(e);return!t||t.visible?t:this._prevVisibleColumn(e-1)},i.prototype.reinitializeWidth=function(e){this.widthFixed=!1,void 0===this.definition.width||e||this.setWidth(this.definition.width),this.table.modExists("filter")&&this.table.modules.filter.hideHeaderFilterElements(),this.fitToData(),this.table.modExists("filter")&&this.table.modules.filter.showHeaderFilterElements()},i.prototype.fitToData=function(){var e=this;this.widthFixed||(this.element.style.width="",e.cells.forEach(function(e){e.clearWidth()}));var t=this.element.offsetWidth;e.width&&this.widthFixed||(e.cells.forEach(function(e){var o=e.getWidth();o>t&&(t=o)}),t&&e.setWidthActual(t+1))},i.prototype.updateDefinition=function(e){var t=this;return new Promise(function(o,i){var n;t.isGroup?(console.warn("Column Update Error - The updateDefintion function is only available on columns, not column groups"),i("Column Update Error - The updateDefintion function is only available on columns, not column groups")):(n=Object.assign({},t.getDefinition()),n=Object.assign(n,e),t.table.columnManager.addColumn(n,!1,t).then(function(e){n.field==t.field&&(t.field=!1),t.delete().then(function(){o(e.getComponent())}).catch(function(e){i(e)})}).catch(function(e){i(e)}))})},i.prototype.deleteCell=function(e){var t=this.cells.indexOf(e);t>-1&&this.cells.splice(t,1)},
-i.prototype.defaultOptionList=["title","field","columns","visible","align","hozAlign","vertAlign","width","minWidth","widthGrow","widthShrink","resizable","frozen","responsive","tooltip","cssClass","rowHandle","hideInHtml","print","htmlOutput","sorter","sorterParams","formatter","formatterParams","variableHeight","editable","editor","editorParams","validator","mutator","mutatorParams","mutatorData","mutatorDataParams","mutatorEdit","mutatorEditParams","mutatorClipboard","mutatorClipboardParams","accessor","accessorParams","accessorData","accessorDataParams","accessorDownload","accessorDownloadParams","accessorClipboard","accessorClipboardParams","accessorPrint","accessorPrintParams","accessorHtmlOutput","accessorHtmlOutputParams","clipboard","download","downloadTitle","topCalc","topCalcParams","topCalcFormatter","topCalcFormatterParams","bottomCalc","bottomCalcParams","bottomCalcFormatter","bottomCalcFormatterParams","cellClick","cellDblClick","cellContext","cellTap","cellDblTap","cellTapHold","cellMouseEnter","cellMouseLeave","cellMouseOver","cellMouseOut","cellMouseMove","cellEditing","cellEdited","cellEditCancelled","headerSort","headerSortStartingDir","headerSortTristate","headerClick","headerDblClick","headerContext","headerTap","headerDblTap","headerTapHold","headerTooltip","headerVertical","editableTitle","titleFormatter","titleFormatterParams","headerFilter","headerFilterPlaceholder","headerFilterParams","headerFilterEmptyCheck","headerFilterFunc","headerFilterFuncParams","headerFilterLiveFilter","print","headerContextMenu","headerMenu","contextMenu","formatterPrint","formatterPrintParams","formatterClipboard","formatterClipboardParams","formatterHtmlOutput","formatterHtmlOutputParams"],i.prototype.getComponent=function(){return new o(this)};var n=function(e){this.table=e,this.element=this.createHolderElement(),this.tableElement=this.createTableElement(),this.heightFixer=this.createTableElement(),this.columnManager=null,this.height=0,this.firstRender=!1,this.renderMode="virtual",this.fixedHeight=!1,this.rows=[],this.activeRows=[],this.activeRowsCount=0,this.displayRows=[],this.displayRowsCount=0,this.scrollTop=0,this.scrollLeft=0,this.vDomRowHeight=20,this.vDomTop=0,this.vDomBottom=0,this.vDomScrollPosTop=0,this.vDomScrollPosBottom=0,this.vDomTopPad=0,this.vDomBottomPad=0,this.vDomMaxRenderChain=90,this.vDomWindowBuffer=0,this.vDomWindowMinTotalRows=20,this.vDomWindowMinMarginRows=5,this.vDomTopNewRows=[],this.vDomBottomNewRows=[],this.rowNumColumn=!1,this.redrawBlock=!1,this.redrawBlockRestoreConfig=!1,this.redrawBlockRederInPosition=!1};n.prototype.createHolderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-tableHolder"),e.setAttribute("tabindex",0),e},n.prototype.createTableElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-table"),e},n.prototype.getElement=function(){return this.element},n.prototype.getTableElement=function(){return this.tableElement},n.prototype.getRowPosition=function(e,t){return t?this.activeRows.indexOf(e):this.rows.indexOf(e)},n.prototype.setColumnManager=function(e){this.columnManager=e},n.prototype.initialize=function(){var e=this;e.setRenderMode(),e.element.appendChild(e.tableElement),e.firstRender=!0,e.element.addEventListener("scroll",function(){var t=e.element.scrollLeft;e.scrollLeft!=t&&(e.columnManager.scrollHorizontal(t),e.table.options.groupBy&&e.table.modules.groupRows.scrollHeaders(t),e.table.modExists("columnCalcs")&&e.table.modules.columnCalcs.scrollHorizontal(t),e.table.options.scrollHorizontal(t)),e.scrollLeft=t}),"virtual"===this.renderMode&&e.element.addEventListener("scroll",function(){var t=e.element.scrollTop,o=e.scrollTop>t;e.scrollTop!=t?(e.scrollTop=t,e.scrollVertical(o),"scroll"==e.table.options.ajaxProgressiveLoad&&e.table.modules.ajax.nextPage(e.element.scrollHeight-e.element.clientHeight-t),e.table.options.scrollVertical(t)):e.scrollTop=t})},n.prototype.findRow=function(e){var t=this;if("object"!=(void 0===e?"undefined":_typeof(e))){if(void 0===e||null===e)return!1;return t.rows.find(function(o){return o.data[t.table.options.index]==e})||!1}if(e instanceof r)return e;if(e instanceof s)return e._getSelf()||!1;if("undefined"!=typeof HTMLElement&&e instanceof HTMLElement){return t.rows.find(function(t){return t.element===e})||!1}return!1},n.prototype.getRowFromDataObject=function(e){return this.rows.find(function(t){return t.data===e})||!1},n.prototype.getRowFromPosition=function(e,t){return t?this.activeRows[e]:this.rows[e]},n.prototype.scrollToRow=function(e,t,o){var i,n=this,s=this.getDisplayRows().indexOf(e),r=e.getElement(),a=0;return new Promise(function(e,l){if(s>-1){if(void 0===t&&(t=n.table.options.scrollToRowPosition),void 0===o&&(o=n.table.options.scrollToRowIfVisible),"nearest"===t)switch(n.renderMode){case"classic":i=u.prototype.helpers.elOffset(r).top,t=Math.abs(n.element.scrollTop-i)>Math.abs(n.element.scrollTop+n.element.clientHeight-i)?"bottom":"top";break;case"virtual":t=Math.abs(n.vDomTop-s)>Math.abs(n.vDomBottom-s)?"bottom":"top"}if(!o&&u.prototype.helpers.elVisible(r)&&(a=u.prototype.helpers.elOffset(r).top-u.prototype.helpers.elOffset(n.element).top)>0&&a<n.element.clientHeight-r.offsetHeight)return!1;switch(n.renderMode){case"classic":n.element.scrollTop=u.prototype.helpers.elOffset(r).top-u.prototype.helpers.elOffset(n.element).top+n.element.scrollTop;break;case"virtual":n._virtualRenderFill(s,!0)}switch(t){case"middle":case"center":n.element.scrollHeight-n.element.scrollTop==n.element.clientHeight?n.element.scrollTop=n.element.scrollTop+(r.offsetTop-n.element.scrollTop)-(n.element.scrollHeight-r.offsetTop)/2:n.element.scrollTop=n.element.scrollTop-n.element.clientHeight/2;break;case"bottom":n.element.scrollHeight-n.element.scrollTop==n.element.clientHeight?n.element.scrollTop=n.element.scrollTop-(n.element.scrollHeight-r.offsetTop)+r.offsetHeight:n.element.scrollTop=n.element.scrollTop-n.element.clientHeight+r.offsetHeight}e()}else console.warn("Scroll Error - Row not visible"),l("Scroll Error - Row not visible")})},n.prototype.setData=function(e,t,o){var i=this,n=this;return new Promise(function(s,r){t&&i.getDisplayRows().length?n.table.options.pagination?n._setDataActual(e,!0):i.reRenderInPosition(function(){n._setDataActual(e)}):(i.table.options.autoColumns&&o&&i.table.columnManager.generateColumnsFromRowData(e),i.resetScroll(),i._setDataActual(e)),s()})},n.prototype._setDataActual=function(e,t){var o=this;o.table.options.dataLoading.call(this.table,e),this._wipeElements(),this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.clear(),Array.isArray(e)?(this.table.modExists("selectRow")&&this.table.modules.selectRow.clearSelectionData(),this.table.options.reactiveData&&this.table.modExists("reactiveData",!0)&&this.table.modules.reactiveData.watchData(e),e.forEach(function(e,t){if(e&&"object"===(void 0===e?"undefined":_typeof(e))){var i=new r(e,o);o.rows.push(i)}else console.warn("Data Loading Warning - Invalid row data detected and ignored, expecting object but received:",e)}),o.table.options.dataLoaded.call(this.table,e),o.refreshActiveData(!1,!1,t)):console.error("Data Loading Error - Unable to process data due to invalid data type \nExpecting: array \nReceived: ",void 0===e?"undefined":_typeof(e),"\nData:     ",e)},n.prototype._wipeElements=function(){this.rows.forEach(function(e){e.wipe()}),this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.wipe(),this.rows=[]},n.prototype.deleteRow=function(e,t){var o=this.rows.indexOf(e),i=this.activeRows.indexOf(e);i>-1&&this.activeRows.splice(i,1),o>-1&&this.rows.splice(o,1),this.setActiveRows(this.activeRows),this.displayRowIterator(function(t){var o=t.indexOf(e);o>-1&&t.splice(o,1)}),t||this.reRenderInPosition(),this.regenerateRowNumbers(),this.table.options.rowDeleted.call(this.table,e.getComponent()),this.table.options.dataEdited.call(this.table,this.getData()),this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.groupRows.updateGroupRows(!0):this.table.options.pagination&&this.table.modExists("page")?this.refreshActiveData(!1,!1,!0):this.table.options.pagination&&this.table.modExists("page")&&this.refreshActiveData("page")},n.prototype.addRow=function(e,t,o,i){var n=this.addRowActual(e,t,o,i);return this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("rowAdd",n,{data:e,pos:t,index:o}),n},n.prototype.addRows=function(e,t,o){var i=this,n=this,s=0,r=[];return new Promise(function(a,l){t=i.findAddRowPos(t),Array.isArray(e)||(e=[e]),s=e.length-1,(void 0===o&&t||void 0!==o&&!t)&&e.reverse(),e.forEach(function(e,i){var s=n.addRow(e,t,o,!0);r.push(s)}),i.table.options.groupBy&&i.table.modExists("groupRows")?i.table.modules.groupRows.updateGroupRows(!0):i.table.options.pagination&&i.table.modExists("page")?i.refreshActiveData(!1,!1,!0):i.reRenderInPosition(),i.table.modExists("columnCalcs")&&i.table.modules.columnCalcs.recalc(i.table.rowManager.activeRows),i.regenerateRowNumbers(),a(r)})},n.prototype.findAddRowPos=function(e){return void 0===e&&(e=this.table.options.addRowPos),"pos"===e&&(e=!0),"bottom"===e&&(e=!1),e},n.prototype.addRowActual=function(e,t,o,i){var n,s,a=e instanceof r?e:new r(e||{},this),l=this.findAddRowPos(t),c=-1;if(!o&&this.table.options.pagination&&"page"==this.table.options.paginationAddRow&&(s=this.getDisplayRows(),l?s.length?o=s[0]:this.activeRows.length&&(o=this.activeRows[this.activeRows.length-1],l=!1):s.length&&(o=s[s.length-1],l=!(s.length<this.table.modules.page.getPageSize()))),void 0!==o&&(o=this.findRow(o)),this.table.options.groupBy&&this.table.modExists("groupRows")){this.table.modules.groupRows.assignRowToGroup(a);var u=a.getGroup().rows;u.length>1&&(!o||o&&-1==u.indexOf(o)?l?u[0]!==a&&(o=u[0],this._moveRowInArray(a.getGroup().rows,a,o,!l)):u[u.length-1]!==a&&(o=u[u.length-1],this._moveRowInArray(a.getGroup().rows,a,o,!l)):this._moveRowInArray(a.getGroup().rows,a,o,!l))}return o&&(c=this.rows.indexOf(o)),o&&c>-1?(n=this.activeRows.indexOf(o),this.displayRowIterator(function(e){var t=e.indexOf(o);t>-1&&e.splice(l?t:t+1,0,a)}),n>-1&&this.activeRows.splice(l?n:n+1,0,a),this.rows.splice(l?c:c+1,0,a)):l?(this.displayRowIterator(function(e){e.unshift(a)}),this.activeRows.unshift(a),this.rows.unshift(a)):(this.displayRowIterator(function(e){e.push(a)}),this.activeRows.push(a),this.rows.push(a)),this.setActiveRows(this.activeRows),this.table.options.rowAdded.call(this.table,a.getComponent()),this.table.options.dataEdited.call(this.table,this.getData()),i||this.reRenderInPosition(),a},n.prototype.moveRow=function(e,t,o){this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("rowMove",e,{posFrom:this.getRowPosition(e),posTo:this.getRowPosition(t),to:t,after:o}),this.moveRowActual(e,t,o),this.regenerateRowNumbers(),this.table.options.rowMoved.call(this.table,e.getComponent())},n.prototype.moveRowActual=function(e,t,o){var i=this;if(this._moveRowInArray(this.rows,e,t,o),this._moveRowInArray(this.activeRows,e,t,o),this.displayRowIterator(function(n){i._moveRowInArray(n,e,t,o)}),this.table.options.groupBy&&this.table.modExists("groupRows")){!o&&t instanceof T&&(t=this.table.rowManager.prevDisplayRow(e)||t);var n=t.getGroup(),s=e.getGroup();n===s?this._moveRowInArray(n.rows,e,t,o):(s&&s.removeRow(e),n.insertRow(e,t,o))}},n.prototype._moveRowInArray=function(e,t,o,i){var n,s,r,a;if(t!==o&&(n=e.indexOf(t),n>-1&&(e.splice(n,1),s=e.indexOf(o),s>-1?i?e.splice(s+1,0,t):e.splice(s,0,t):e.splice(n,0,t)),e===this.getDisplayRows())){r=n<s?n:s,a=s>n?s:n+1;for(var l=r;l<=a;l++)e[l]&&this.styleRow(e[l],l)}},n.prototype.clearData=function(){this.setData([])},n.prototype.getRowIndex=function(e){return this.findRowIndex(e,this.rows)},n.prototype.getDisplayRowIndex=function(e){var t=this.getDisplayRows().indexOf(e);return t>-1&&t},n.prototype.nextDisplayRow=function(e,t){var o=this.getDisplayRowIndex(e),i=!1;return!1!==o&&o<this.displayRowsCount-1&&(i=this.getDisplayRows()[o+1]),!i||i instanceof r&&"row"==i.type?i:this.nextDisplayRow(i,t)},n.prototype.prevDisplayRow=function(e,t){var o=this.getDisplayRowIndex(e),i=!1;return o&&(i=this.getDisplayRows()[o-1]),!t||!i||i instanceof r&&"row"==i.type?i:this.prevDisplayRow(i,t)},n.prototype.findRowIndex=function(e,t){var o;return!!((e=this.findRow(e))&&(o=t.indexOf(e))>-1)&&o},n.prototype.getData=function(e,t){var o=[];return this.getRows(e).forEach(function(e){"row"==e.type&&o.push(e.getData(t||"data"))}),o},n.prototype.getComponents=function(e){var t=[];return this.getRows(e).forEach(function(e){t.push(e.getComponent())}),t},n.prototype.getDataCount=function(e){return this.getRows(e).length},n.prototype._genRemoteRequest=function(){var e=this,t=this.table,o=t.options,i={};if(t.modExists("page")){if(o.ajaxSorting){var n=this.table.modules.sort.getSort();n.forEach(function(e){delete e.column}),i[this.table.modules.page.paginationDataSentNames.sorters]=n}if(o.ajaxFiltering){var s=this.table.modules.filter.getFilters(!0,!0);i[this.table.modules.page.paginationDataSentNames.filters]=s}this.table.modules.ajax.setParams(i,!0)}t.modules.ajax.sendRequest().then(function(t){e._setDataActual(t,!0)}).catch(function(e){})},n.prototype.filterRefresh=function(){var e=this.table,t=e.options,o=this.scrollLeft;t.ajaxFiltering?"remote"==t.pagination&&e.modExists("page")?(e.modules.page.reset(!0),e.modules.page.setPage(1).then(function(){}).catch(function(){})):t.ajaxProgressiveLoad?e.modules.ajax.loadData().then(function(){}).catch(function(){}):this._genRemoteRequest():this.refreshActiveData("filter"),this.scrollHorizontal(o)},n.prototype.sorterRefresh=function(e){var t=this.table,o=this.table.options,i=this.scrollLeft;o.ajaxSorting?("remote"==o.pagination||o.progressiveLoad)&&t.modExists("page")?(t.modules.page.reset(!0),t.modules.page.setPage(1).then(function(){}).catch(function(){})):o.ajaxProgressiveLoad?t.modules.ajax.loadData().then(function(){}).catch(function(){}):this._genRemoteRequest():this.refreshActiveData(e?"filter":"sort"),this.scrollHorizontal(i)},n.prototype.scrollHorizontal=function(e){this.scrollLeft=e,this.element.scrollLeft=e,this.table.options.groupBy&&this.table.modules.groupRows.scrollHeaders(e),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.scrollHorizontal(e)},n.prototype.refreshActiveData=function(e,t,o){var i,n=this,s=this.table,r=["all","filter","sort","display","freeze","group","tree","page"];if(this.redrawBlock)return void((!this.redrawBlockRestoreConfig||r.indexOf(e)<r.indexOf(this.redrawBlockRestoreConfig.stage))&&(this.redrawBlockRestoreConfig={stage:e,skipStage:t,renderInPosition:o}));switch(n.table.modExists("edit")&&n.table.modules.edit.cancelEdit(),e||(e="all"),s.options.selectable&&!s.options.selectablePersistence&&s.modExists("selectRow")&&s.modules.selectRow.deselectRows(),e){case"all":case"filter":t?t=!1:s.modExists("filter")?n.setActiveRows(s.modules.filter.filter(n.rows)):n.setActiveRows(n.rows.slice(0));case"sort":t?t=!1:s.modExists("sort")&&s.modules.sort.sort(this.activeRows),this.regenerateRowNumbers();case"display":this.resetDisplayRows();case"freeze":t?t=!1:this.table.modExists("frozenRows")&&s.modules.frozenRows.isFrozen()&&(s.modules.frozenRows.getDisplayIndex()||s.modules.frozenRows.setDisplayIndex(this.getNextDisplayIndex()),i=s.modules.frozenRows.getDisplayIndex(),!0!==(i=n.setDisplayRows(s.modules.frozenRows.getRows(this.getDisplayRows(i-1)),i))&&s.modules.frozenRows.setDisplayIndex(i));case"group":t?t=!1:s.options.groupBy&&s.modExists("groupRows")&&(s.modules.groupRows.getDisplayIndex()||s.modules.groupRows.setDisplayIndex(this.getNextDisplayIndex()),i=s.modules.groupRows.getDisplayIndex(),!0!==(i=n.setDisplayRows(s.modules.groupRows.getRows(this.getDisplayRows(i-1)),i))&&s.modules.groupRows.setDisplayIndex(i));case"tree":t?t=!1:s.options.dataTree&&s.modExists("dataTree")&&(s.modules.dataTree.getDisplayIndex()||s.modules.dataTree.setDisplayIndex(this.getNextDisplayIndex()),i=s.modules.dataTree.getDisplayIndex(),!0!==(i=n.setDisplayRows(s.modules.dataTree.getRows(this.getDisplayRows(i-1)),i))&&s.modules.dataTree.setDisplayIndex(i)),s.options.pagination&&s.modExists("page")&&!o&&"local"==s.modules.page.getMode()&&s.modules.page.reset();case"page":t?t=!1:s.options.pagination&&s.modExists("page")&&(s.modules.page.getDisplayIndex()||s.modules.page.setDisplayIndex(this.getNextDisplayIndex()),i=s.modules.page.getDisplayIndex(),"local"==s.modules.page.getMode()&&s.modules.page.setMaxRows(this.getDisplayRows(i-1).length),!0!==(i=n.setDisplayRows(s.modules.page.getRows(this.getDisplayRows(i-1)),i))&&s.modules.page.setDisplayIndex(i))}u.prototype.helpers.elVisible(n.element)&&(o?n.reRenderInPosition():(n.renderTable(),s.options.layoutColumnsOnNewData&&n.table.columnManager.redraw(!0))),s.modExists("columnCalcs")&&s.modules.columnCalcs.recalc(this.activeRows)},n.prototype.regenerateRowNumbers=function(){var e=this;this.rowNumColumn&&this.activeRows.forEach(function(t){var o=t.getCell(e.rowNumColumn);o&&o._generateContents()})},n.prototype.setActiveRows=function(e){this.activeRows=e,this.activeRowsCount=this.activeRows.length},n.prototype.resetDisplayRows=function(){this.displayRows=[],this.displayRows.push(this.activeRows.slice(0)),this.displayRowsCount=this.displayRows[0].length,this.table.modExists("frozenRows")&&this.table.modules.frozenRows.setDisplayIndex(0),this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.setDisplayIndex(0),this.table.options.pagination&&this.table.modExists("page")&&this.table.modules.page.setDisplayIndex(0)},n.prototype.getNextDisplayIndex=function(){return this.displayRows.length},n.prototype.setDisplayRows=function(e,t){var o=!0;return t&&void 0!==this.displayRows[t]?(this.displayRows[t]=e,o=!0):(this.displayRows.push(e),o=t=this.displayRows.length-1),t==this.displayRows.length-1&&(this.displayRowsCount=this.displayRows[this.displayRows.length-1].length),o},n.prototype.getDisplayRows=function(e){return void 0===e?this.displayRows.length?this.displayRows[this.displayRows.length-1]:[]:this.displayRows[e]||[]},n.prototype.getVisibleRows=function(e){var t=this.element.scrollTop,o=this.element.clientHeight+t,i=!1,n=0,s=0,r=this.getDisplayRows();if(e){this.getDisplayRows();for(var a=this.vDomTop;a<=this.vDomBottom;a++)if(r[a])if(i){if(!(o-r[a].getElement().offsetTop>=0))break;s=a}else if(t-r[a].getElement().offsetTop>=0)n=a;else{if(i=!0,!(o-r[a].getElement().offsetTop>=0))break;s=a}}else n=this.vDomTop,s=this.vDomBottom;return r.slice(n,s+1)},n.prototype.displayRowIterator=function(e){this.displayRows.forEach(e),this.displayRowsCount=this.displayRows[this.displayRows.length-1].length},n.prototype.getRows=function(e){var t;switch(e){case"active":t=this.activeRows;break;case"display":t=this.table.rowManager.getDisplayRows();break;case"visible":t=this.getVisibleRows(!0);break;default:t=this.rows}return t},n.prototype.reRenderInPosition=function(e){if("virtual"==this.getRenderMode())if(this.redrawBlock)e?e():this.redrawBlockRederInPosition=!0;else{for(var t=this.element.scrollTop,o=!1,i=!1,n=this.scrollLeft,s=this.getDisplayRows(),r=this.vDomTop;r<=this.vDomBottom;r++)if(s[r]){var a=t-s[r].getElement().offsetTop;if(!(!1===i||Math.abs(a)<i))break;i=a,o=r}e&&e(),this._virtualRenderFill(!1===o?this.displayRowsCount-1:o,!0,i||0),this.scrollHorizontal(n)}else this.renderTable(),e&&e()},n.prototype.setRenderMode=function(){this.table.options.virtualDom?(this.renderMode="virtual",this.table.element.clientHeight||this.table.options.height?this.fixedHeight=!0:this.fixedHeight=!1):this.renderMode="classic"},n.prototype.getRenderMode=function(){return this.renderMode},n.prototype.renderTable=function(){switch(this.table.options.renderStarted.call(this.table),this.element.scrollTop=0,this.renderMode){case"classic":this._simpleRender();break;case"virtual":this._virtualRenderFill()}this.firstRender&&(this.displayRowsCount?(this.firstRender=!1,this.table.modules.layout.layout()):this.renderEmptyScroll()),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout(),this.displayRowsCount||this.table.options.placeholder&&(this.table.options.placeholder.setAttribute("tabulator-render-mode",this.renderMode),this.getElement().appendChild(this.table.options.placeholder),this.table.options.placeholder.style.width=this.table.columnManager.getWidth()+"px"),this.table.options.renderComplete.call(this.table)},n.prototype._simpleRender=function(){this._clearVirtualDom(),this.displayRowsCount?this.checkClassicModeGroupHeaderWidth():this.renderEmptyScroll()},n.prototype.checkClassicModeGroupHeaderWidth=function(){var e=this,t=this.tableElement,o=!0;e.getDisplayRows().forEach(function(i,n){e.styleRow(i,n),t.appendChild(i.getElement()),i.initialize(!0),"group"!==i.type&&(o=!1)}),t.style.minWidth=o?e.table.columnManager.getWidth()+"px":""},n.prototype.renderEmptyScroll=function(){this.table.options.placeholder?this.tableElement.style.display="none":(this.tableElement.style.minWidth=this.table.columnManager.getWidth()+"px",this.tableElement.style.minHeight="1px",this.tableElement.style.visibility="hidden")},n.prototype._clearVirtualDom=function(){var e=this.tableElement;for(this.table.options.placeholder&&this.table.options.placeholder.parentNode&&this.table.options.placeholder.parentNode.removeChild(this.table.options.placeholder);e.firstChild;)e.removeChild(e.firstChild);e.style.paddingTop="",e.style.paddingBottom="",e.style.minWidth="",e.style.minHeight="",e.style.display="",e.style.visibility="",this.scrollTop=0,this.scrollLeft=0,this.vDomTop=0,this.vDomBottom=0,this.vDomTopPad=0,this.vDomBottomPad=0},n.prototype.styleRow=function(e,t){var o=e.getElement();t%2?(o.classList.add("tabulator-row-even"),o.classList.remove("tabulator-row-odd")):(o.classList.add("tabulator-row-odd"),o.classList.remove("tabulator-row-even"))},n.prototype._virtualRenderFill=function(e,t,o){var i=this,n=i.tableElement,s=i.element,r=0,a=0,l=0,c=0,d=!0,h=i.getDisplayRows();if(e=e||0,o=o||0,e){for(;n.firstChild;)n.removeChild(n.firstChild);var p=(i.displayRowsCount-e+1)*i.vDomRowHeight;p<i.height&&(e-=Math.ceil((i.height-p)/i.vDomRowHeight))<0&&(e=0),r=Math.min(Math.max(Math.floor(i.vDomWindowBuffer/i.vDomRowHeight),i.vDomWindowMinMarginRows),e),e-=r}else i._clearVirtualDom();if(i.displayRowsCount&&u.prototype.helpers.elVisible(i.element)){for(i.vDomTop=e,i.vDomBottom=e-1;(a<=i.height+i.vDomWindowBuffer||c<i.vDomWindowMinTotalRows)&&i.vDomBottom<i.displayRowsCount-1;){var m=i.vDomBottom+1,f=h[m],g=0;i.styleRow(f,m),n.appendChild(f.getElement()),f.initialized?f.heightInitialized||f.normalizeHeight(!0):f.initialize(!0),g=f.getHeight(),c<r?l+=g:a+=g,g>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*g),"group"!==f.type&&(d=!1),i.vDomBottom++,c++}e?(i.vDomTopPad=t?i.vDomRowHeight*this.vDomTop+o:i.scrollTop-l,i.vDomBottomPad=i.vDomBottom==i.displayRowsCount-1?0:Math.max(i.vDomScrollHeight-i.vDomTopPad-a-l,0)):(this.vDomTopPad=0,i.vDomRowHeight=Math.floor((a+l)/c),i.vDomBottomPad=i.vDomRowHeight*(i.displayRowsCount-i.vDomBottom-1),i.vDomScrollHeight=l+a+i.vDomBottomPad-i.height),n.style.paddingTop=i.vDomTopPad+"px",n.style.paddingBottom=i.vDomBottomPad+"px",t&&(this.scrollTop=i.vDomTopPad+l+o-(this.element.scrollWidth>this.element.clientWidth?this.element.offsetHeight-this.element.clientHeight:0)),this.scrollTop=Math.min(this.scrollTop,this.element.scrollHeight-this.height),this.element.scrollWidth>this.element.offsetWidth&&t&&(this.scrollTop+=this.element.offsetHeight-this.element.clientHeight),this.vDomScrollPosTop=this.scrollTop,this.vDomScrollPosBottom=this.scrollTop,s.scrollTop=this.scrollTop,n.style.minWidth=d?i.table.columnManager.getWidth()+"px":"",i.table.options.groupBy&&"fitDataFill"!=i.table.modules.layout.getMode()&&i.displayRowsCount==i.table.modules.groupRows.countGroups()&&(i.tableElement.style.minWidth=i.table.columnManager.getWidth())}else this.renderEmptyScroll();this.fixedHeight||this.adjustTableSize()},n.prototype.scrollVertical=function(e){var t=this.scrollTop-this.vDomScrollPosTop,o=this.scrollTop-this.vDomScrollPosBottom,i=2*this.vDomWindowBuffer;if(-t>i||o>i){var n=this.scrollLeft;this._virtualRenderFill(Math.floor(this.element.scrollTop/this.element.scrollHeight*this.displayRowsCount)),this.scrollHorizontal(n)}else e?(t<0&&this._addTopRow(-t),o<0&&(this.vDomScrollHeight-this.scrollTop>this.vDomWindowBuffer?this._removeBottomRow(-o):this.vDomScrollPosBottom=this.scrollTop)):(t>=0&&(this.scrollTop>this.vDomWindowBuffer?this._removeTopRow(t):this.vDomScrollPosTop=this.scrollTop),o>=0&&this._addBottomRow(o))},n.prototype._addTopRow=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,o=this.tableElement,i=this.getDisplayRows();if(this.vDomTop){var n=this.vDomTop-1,s=i[n],r=s.getHeight()||this.vDomRowHeight;e>=r&&(this.styleRow(s,n),o.insertBefore(s.getElement(),o.firstChild),s.initialized&&s.heightInitialized||(this.vDomTopNewRows.push(s),s.heightInitialized||s.clearCellHeight()),s.initialize(),this.vDomTopPad-=r,this.vDomTopPad<0&&(this.vDomTopPad=n*this.vDomRowHeight),n||(this.vDomTopPad=0),o.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop-=r,this.vDomTop--),e=-(this.scrollTop-this.vDomScrollPosTop),s.getHeight()>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*s.getHeight()),t<this.vDomMaxRenderChain&&this.vDomTop&&e>=(i[this.vDomTop-1].getHeight()||this.vDomRowHeight)?this._addTopRow(e,t+1):this._quickNormalizeRowHeight(this.vDomTopNewRows)}},n.prototype._removeTopRow=function(e){var t=this.tableElement,o=this.getDisplayRows()[this.vDomTop],i=o.getHeight()||this.vDomRowHeight;if(e>=i){var n=o.getElement();n.parentNode.removeChild(n),this.vDomTopPad+=i,t.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop+=this.vDomTop?i:i+this.vDomWindowBuffer,this.vDomTop++,e=this.scrollTop-this.vDomScrollPosTop,this._removeTopRow(e)}},n.prototype._addBottomRow=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,o=this.tableElement,i=this.getDisplayRows();if(this.vDomBottom<this.displayRowsCount-1){var n=this.vDomBottom+1,s=i[n],r=s.getHeight()||this.vDomRowHeight;e>=r&&(this.styleRow(s,n),o.appendChild(s.getElement()),s.initialized&&s.heightInitialized||(this.vDomBottomNewRows.push(s),s.heightInitialized||s.clearCellHeight()),s.initialize(),this.vDomBottomPad-=r,(this.vDomBottomPad<0||n==this.displayRowsCount-1)&&(this.vDomBottomPad=0),o.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom+=r,this.vDomBottom++),e=this.scrollTop-this.vDomScrollPosBottom,s.getHeight()>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*s.getHeight()),t<this.vDomMaxRenderChain&&this.vDomBottom<this.displayRowsCount-1&&e>=(i[this.vDomBottom+1].getHeight()||this.vDomRowHeight)?this._addBottomRow(e,t+1):this._quickNormalizeRowHeight(this.vDomBottomNewRows)}},n.prototype._removeBottomRow=function(e){var t=this.tableElement,o=this.getDisplayRows()[this.vDomBottom],i=o.getHeight()||this.vDomRowHeight;if(e>=i){var n=o.getElement();n.parentNode&&n.parentNode.removeChild(n),this.vDomBottomPad+=i,this.vDomBottomPad<0&&(this.vDomBottomPad=0),t.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom-=i,this.vDomBottom--,e=-(this.scrollTop-this.vDomScrollPosBottom),this._removeBottomRow(e)}},n.prototype._quickNormalizeRowHeight=function(e){e.forEach(function(e){e.calcHeight()}),e.forEach(function(e){e.setCellHeight()}),e.length=0},n.prototype.normalizeHeight=function(){this.activeRows.forEach(function(e){e.normalizeHeight()})},n.prototype.adjustTableSize=function(){var e,t=this.element.clientHeight;if("virtual"===this.renderMode){var o=this.columnManager.getElement().offsetHeight+(this.table.footerManager&&!this.table.footerManager.external?this.table.footerManager.getElement().offsetHeight:0);this.fixedHeight?(this.element.style.minHeight="calc(100% - "+o+"px)",this.element.style.height="calc(100% - "+o+"px)",this.element.style.maxHeight="calc(100% - "+o+"px)"):(this.element.style.height="",this.element.style.height=this.table.element.clientHeight-o+"px",this.element.scrollTop=this.scrollTop),this.height=this.element.clientHeight,this.vDomWindowBuffer=this.table.options.virtualDomBuffer||this.height,this.fixedHeight||t==this.element.clientHeight||((e=this.table.modExists("resizeTable"))&&!this.table.modules.resizeTable.autoResize||!e)&&this.redraw()}},n.prototype.reinitialize=function(){this.rows.forEach(function(e){e.reinitialize()})},n.prototype.blockRedraw=function(){this.redrawBlock=!0,this.redrawBlockRestoreConfig=!1},n.prototype.restoreRedraw=function(){this.redrawBlock=!1,this.redrawBlockRestoreConfig?(this.refreshActiveData(this.redrawBlockRestoreConfig.stage,this.redrawBlockRestoreConfig.skipStage,this.redrawBlockRestoreConfig.renderInPosition),this.redrawBlockRestoreConfig=!1):this.redrawBlockRederInPosition&&this.reRenderInPosition(),this.redrawBlockRederInPosition=!1},n.prototype.redraw=function(e){var t=this.scrollLeft;this.adjustTableSize(),this.table.tableWidth=this.table.element.clientWidth,e?this.renderTable():("classic"==this.renderMode?this.table.options.groupBy?this.refreshActiveData("group",!1,!1):this._simpleRender():(this.reRenderInPosition(),this.scrollHorizontal(t)),this.displayRowsCount||this.table.options.placeholder&&this.getElement().appendChild(this.table.options.placeholder))},n.prototype.resetScroll=function(){if(this.element.scrollLeft=0,this.element.scrollTop=0,"ie"===this.table.browser){var e=document.createEvent("Event");e.initEvent("scroll",!1,!0),this.element.dispatchEvent(e)}else this.element.dispatchEvent(new Event("scroll"))};var s=function(e){this._row=e};s.prototype.getData=function(e){return this._row.getData(e)},s.prototype.getElement=function(){return this._row.getElement()},s.prototype.getCells=function(){var e=[];return this._row.getCells().forEach(function(t){e.push(t.getComponent())}),e},s.prototype.getCell=function(e){var t=this._row.getCell(e);return!!t&&t.getComponent()},s.prototype.getIndex=function(){return this._row.getData("data")[this._row.table.options.index]},s.prototype.getPosition=function(e){return this._row.table.rowManager.getRowPosition(this._row,e)},s.prototype.delete=function(){return this._row.delete()},s.prototype.scrollTo=function(){return this._row.table.rowManager.scrollToRow(this._row)},s.prototype.pageTo=function(){if(this._row.table.modExists("page",!0))return this._row.table.modules.page.setPageToRow(this._row)},s.prototype.move=function(e,t){this._row.moveToRow(e,t)},s.prototype.update=function(e){return this._row.updateData(e)},s.prototype.normalizeHeight=function(){this._row.normalizeHeight(!0)},s.prototype.select=function(){this._row.table.modules.selectRow.selectRows(this._row)},s.prototype.deselect=function(){this._row.table.modules.selectRow.deselectRows(this._row)},s.prototype.toggleSelect=function(){this._row.table.modules.selectRow.toggleRow(this._row)},s.prototype.isSelected=function(){return this._row.table.modules.selectRow.isRowSelected(this._row)},s.prototype._getSelf=function(){return this._row},s.prototype.freeze=function(){this._row.table.modExists("frozenRows",!0)&&this._row.table.modules.frozenRows.freezeRow(this._row)},s.prototype.unfreeze=function(){this._row.table.modExists("frozenRows",!0)&&this._row.table.modules.frozenRows.unfreezeRow(this._row)},s.prototype.treeCollapse=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.collapseRow(this._row)},s.prototype.treeExpand=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.expandRow(this._row)},s.prototype.treeToggle=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.toggleRow(this._row)},s.prototype.getTreeParent=function(){return!!this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.getTreeParent(this._row)},s.prototype.getTreeChildren=function(){
-return!!this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.getTreeChildren(this._row)},s.prototype.reformat=function(){return this._row.reinitialize()},s.prototype.getGroup=function(){return this._row.getGroup().getComponent()},s.prototype.getTable=function(){return this._row.table},s.prototype.getNextRow=function(){var e=this._row.nextRow();return e?e.getComponent():e},s.prototype.getPrevRow=function(){var e=this._row.prevRow();return e?e.getComponent():e};var r=function(e,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"row";this.table=t.table,this.parent=t,this.data={},this.type=o,this.element=this.createElement(),this.modules={},this.cells=[],this.height=0,this.heightStyled="",this.manualHeight=!1,this.outerHeight=0,this.initialized=!1,this.heightInitialized=!1,this.setData(e),this.generateElement()};r.prototype.createElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-row"),e.setAttribute("role","row"),e},r.prototype.getElement=function(){return this.element},r.prototype.detachElement=function(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)},r.prototype.generateElement=function(){var e,t,o,i=this;!1!==i.table.options.selectable&&i.table.modExists("selectRow")&&i.table.modules.selectRow.initializeRow(this),!1!==i.table.options.movableRows&&i.table.modExists("moveRow")&&i.table.modules.moveRow.initializeRow(this),!1!==i.table.options.dataTree&&i.table.modExists("dataTree")&&i.table.modules.dataTree.initializeRow(this),"collapse"===i.table.options.responsiveLayout&&i.table.modExists("responsiveLayout")&&i.table.modules.responsiveLayout.initializeRow(this),i.table.options.rowContextMenu&&this.table.modExists("menu")&&i.table.modules.menu.initializeRow(this),i.table.options.rowClick&&i.element.addEventListener("click",function(e){i.table.options.rowClick(e,i.getComponent())}),i.table.options.rowDblClick&&i.element.addEventListener("dblclick",function(e){i.table.options.rowDblClick(e,i.getComponent())}),i.table.options.rowContext&&i.element.addEventListener("contextmenu",function(e){i.table.options.rowContext(e,i.getComponent())}),i.table.options.rowMouseEnter&&i.element.addEventListener("mouseenter",function(e){i.table.options.rowMouseEnter(e,i.getComponent())}),i.table.options.rowMouseLeave&&i.element.addEventListener("mouseleave",function(e){i.table.options.rowMouseLeave(e,i.getComponent())}),i.table.options.rowMouseOver&&i.element.addEventListener("mouseover",function(e){i.table.options.rowMouseOver(e,i.getComponent())}),i.table.options.rowMouseOut&&i.element.addEventListener("mouseout",function(e){i.table.options.rowMouseOut(e,i.getComponent())}),i.table.options.rowMouseMove&&i.element.addEventListener("mousemove",function(e){i.table.options.rowMouseMove(e,i.getComponent())}),i.table.options.rowTap&&(o=!1,i.element.addEventListener("touchstart",function(e){o=!0},{passive:!0}),i.element.addEventListener("touchend",function(e){o&&i.table.options.rowTap(e,i.getComponent()),o=!1})),i.table.options.rowDblTap&&(e=null,i.element.addEventListener("touchend",function(t){e?(clearTimeout(e),e=null,i.table.options.rowDblTap(t,i.getComponent())):e=setTimeout(function(){clearTimeout(e),e=null},300)})),i.table.options.rowTapHold&&(t=null,i.element.addEventListener("touchstart",function(e){clearTimeout(t),t=setTimeout(function(){clearTimeout(t),t=null,o=!1,i.table.options.rowTapHold(e,i.getComponent())},1e3)},{passive:!0}),i.element.addEventListener("touchend",function(e){clearTimeout(t),t=null}))},r.prototype.generateCells=function(){this.cells=this.table.columnManager.generateCells(this)},r.prototype.initialize=function(e){var t=this;if(!t.initialized||e){for(t.deleteCells();t.element.firstChild;)t.element.removeChild(t.element.firstChild);this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layoutRow(this),this.generateCells(),t.cells.forEach(function(e){t.element.appendChild(e.getElement()),e.cellRendered()}),e&&t.normalizeHeight(),t.table.options.dataTree&&t.table.modExists("dataTree")&&t.table.modules.dataTree.layoutRow(this),"collapse"===t.table.options.responsiveLayout&&t.table.modExists("responsiveLayout")&&t.table.modules.responsiveLayout.layoutRow(this),t.table.options.rowFormatter&&t.table.options.rowFormatter(t.getComponent()),t.table.options.resizableRows&&t.table.modExists("resizeRows")&&t.table.modules.resizeRows.initializeRow(t),t.initialized=!0}},r.prototype.reinitializeHeight=function(){this.heightInitialized=!1,null!==this.element.offsetParent&&this.normalizeHeight(!0)},r.prototype.reinitialize=function(){this.initialized=!1,this.heightInitialized=!1,this.manualHeight||(this.height=0,this.heightStyled=""),null!==this.element.offsetParent&&this.initialize(!0)},r.prototype.calcHeight=function(e){var t=0,o=this.table.options.resizableRows?this.element.clientHeight:0;this.cells.forEach(function(e){var o=e.getHeight();o>t&&(t=o)}),this.height=e?Math.max(t,o):this.manualHeight?this.height:Math.max(t,o),this.heightStyled=this.height?this.height+"px":"",this.outerHeight=this.element.offsetHeight},r.prototype.setCellHeight=function(){this.cells.forEach(function(e){e.setHeight()}),this.heightInitialized=!0},r.prototype.clearCellHeight=function(){this.cells.forEach(function(e){e.clearHeight()})},r.prototype.normalizeHeight=function(e){e&&this.clearCellHeight(),this.calcHeight(e),this.setCellHeight()},r.prototype.setHeight=function(e,t){(this.height!=e||t)&&(this.manualHeight=!0,this.height=e,this.heightStyled=e?e+"px":"",this.setCellHeight(),this.outerHeight=this.element.offsetHeight)},r.prototype.getHeight=function(){return this.outerHeight},r.prototype.getWidth=function(){return this.element.offsetWidth},r.prototype.deleteCell=function(e){var t=this.cells.indexOf(e);t>-1&&this.cells.splice(t,1)},r.prototype.setData=function(e){this.table.modExists("mutator")&&(e=this.table.modules.mutator.transformRow(e,"data")),this.data=e,this.table.options.reactiveData&&this.table.modExists("reactiveData",!0)&&this.table.modules.reactiveData.watchRow(this)},r.prototype.updateData=function(e){var t,o=this,i=u.prototype.helpers.elVisible(this.element),n={};return new Promise(function(s,r){"string"==typeof e&&(e=JSON.parse(e)),o.table.options.reactiveData&&o.table.modExists("reactiveData",!0)&&o.table.modules.reactiveData.block(),o.table.modExists("mutator")?(n=Object.assign(n,o.data),n=Object.assign(n,e),t=o.table.modules.mutator.transformRow(n,"data",e)):t=e;for(var a in t)o.data[a]=t[a];o.table.options.reactiveData&&o.table.modExists("reactiveData",!0)&&o.table.modules.reactiveData.unblock();for(var a in e){o.table.columnManager.getColumnsByFieldRoot(a).forEach(function(e){var n=o.getCell(e.getField());if(n){var s=e.getFieldValue(t);n.getValue()!=s&&(n.setValueProcessData(s),i&&n.cellRendered())}})}i?(o.normalizeHeight(!0),o.table.options.rowFormatter&&o.table.options.rowFormatter(o.getComponent())):(o.initialized=!1,o.height=0,o.heightStyled=""),!1!==o.table.options.dataTree&&o.table.modExists("dataTree")&&o.table.modules.dataTree.redrawNeeded(e)&&(o.table.modules.dataTree.initializeRow(o),o.table.modules.dataTree.layoutRow(o),o.table.rowManager.refreshActiveData("tree",!1,!0)),o.table.options.rowUpdated.call(o.table,o.getComponent()),s()})},r.prototype.getData=function(e){var t=this;return e?t.table.modExists("accessor")?t.table.modules.accessor.transformRow(t.data,e):void 0:this.data},r.prototype.getCell=function(e){return e=this.table.columnManager.findColumn(e),this.cells.find(function(t){return t.column===e})},r.prototype.getCellIndex=function(e){return this.cells.findIndex(function(t){return t===e})},r.prototype.findNextEditableCell=function(e){var t=!1;if(e<this.cells.length-1)for(var o=e+1;o<this.cells.length;o++){var i=this.cells[o];if(i.column.modules.edit&&u.prototype.helpers.elVisible(i.getElement())){var n=!0;if("function"==typeof i.column.modules.edit.check&&(n=i.column.modules.edit.check(i.getComponent())),n){t=i;break}}}return t},r.prototype.findPrevEditableCell=function(e){var t=!1;if(e>0)for(var o=e-1;o>=0;o--){var i=this.cells[o],n=!0;if(i.column.modules.edit&&u.prototype.helpers.elVisible(i.getElement())&&("function"==typeof i.column.modules.edit.check&&(n=i.column.modules.edit.check(i.getComponent())),n)){t=i;break}}return t},r.prototype.getCells=function(){return this.cells},r.prototype.nextRow=function(){return this.table.rowManager.nextDisplayRow(this,!0)||!1},r.prototype.prevRow=function(){return this.table.rowManager.prevDisplayRow(this,!0)||!1},r.prototype.moveToRow=function(e,t){var o=this.table.rowManager.findRow(e);o?(this.table.rowManager.moveRowActual(this,o,!t),this.table.rowManager.refreshActiveData("display",!1,!0)):console.warn("Move Error - No matching row found:",e)},r.prototype.delete=function(){var e=this;return new Promise(function(t,o){var i,n;e.table.options.history&&e.table.modExists("history")&&(e.table.options.groupBy&&e.table.modExists("groupRows")?(n=e.getGroup().rows,(i=n.indexOf(e))&&(i=n[i-1])):(i=e.table.rowManager.getRowIndex(e))&&(i=e.table.rowManager.rows[i-1]),e.table.modules.history.action("rowDelete",e,{data:e.getData(),pos:!i,index:i})),e.deleteActual(),t()})},r.prototype.deleteActual=function(e){this.table.rowManager.getRowIndex(this);this.table.modExists("selectRow")&&this.table.modules.selectRow._deselectRow(this,!0),this.table.modExists("edit")&&this.table.modules.edit.currentCell.row===this&&this.table.modules.edit.cancelEdit(),this.table.options.reactiveData&&this.table.modExists("reactiveData",!0),this.modules.group&&this.modules.group.removeRow(this),this.table.rowManager.deleteRow(this,e),this.deleteCells(),this.initialized=!1,this.heightInitialized=!1,this.table.modExists("columnCalcs")&&(this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.columnCalcs.recalcRowGroup(this):this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows))},r.prototype.deleteCells=function(){for(var e=this.cells.length,t=0;t<e;t++)this.cells[0].delete()},r.prototype.wipe=function(){for(this.deleteCells();this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.element=!1,this.modules={},this.element.parentNode&&this.element.parentNode.removeChild(this.element)},r.prototype.getGroup=function(){return this.modules.group||!1},r.prototype.getComponent=function(){return new s(this)};var a=function(e){this._cell=e};a.prototype.getValue=function(){return this._cell.getValue()},a.prototype.getOldValue=function(){return this._cell.getOldValue()},a.prototype.getElement=function(){return this._cell.getElement()},a.prototype.getRow=function(){return this._cell.row.getComponent()},a.prototype.getData=function(){return this._cell.row.getData()},a.prototype.getField=function(){return this._cell.column.getField()},a.prototype.getColumn=function(){return this._cell.column.getComponent()},a.prototype.setValue=function(e,t){void 0===t&&(t=!0),this._cell.setValue(e,t)},a.prototype.restoreOldValue=function(){this._cell.setValueActual(this._cell.getOldValue())},a.prototype.edit=function(e){return this._cell.edit(e)},a.prototype.cancelEdit=function(){this._cell.cancelEdit()},a.prototype.nav=function(){return this._cell.nav()},a.prototype.checkHeight=function(){this._cell.checkHeight()},a.prototype.getTable=function(){return this._cell.table},a.prototype._getSelf=function(){return this._cell};var l=function(e,t){this.table=e.table,this.column=e,this.row=t,this.element=null,this.value=null,this.oldValue=null,this.modules={},this.height=null,this.width=null,this.minWidth=null,this.build()};l.prototype.build=function(){this.generateElement(),this.setWidth(),this._configureCell(),this.setValueActual(this.column.getFieldValue(this.row.data))},l.prototype.generateElement=function(){this.element=document.createElement("div"),this.element.className="tabulator-cell",this.element.setAttribute("role","gridcell"),this.element=this.element},l.prototype._configureCell=function(){var e=this,t=e.column.cellEvents,o=e.element,i=this.column.getField(),n={top:"flex-start",bottom:"flex-end",middle:"center"},s={left:"flex-start",right:"flex-end",center:"center"};if(o.style.textAlign=e.column.hozAlign,e.column.vertAlign&&(o.style.display="inline-flex",o.style.alignItems=n[e.column.vertAlign]||"",e.column.hozAlign&&(o.style.justifyContent=s[e.column.hozAlign]||"")),i&&o.setAttribute("tabulator-field",i),e.column.definition.cssClass){e.column.definition.cssClass.split(" ").forEach(function(e){o.classList.add(e)})}"hover"===this.table.options.tooltipGenerationMode&&o.addEventListener("mouseenter",function(t){e._generateTooltip()}),e._bindClickEvents(t),e._bindTouchEvents(t),e._bindMouseEvents(t),e.column.modules.edit&&e.table.modules.edit.bindEditor(e),e.column.definition.rowHandle&&!1!==e.table.options.movableRows&&e.table.modExists("moveRow")&&e.table.modules.moveRow.initializeCell(e),e.column.visible||e.hide()},l.prototype._bindClickEvents=function(e){var t=this,o=t.element;(e.cellClick||t.table.options.cellClick)&&o.addEventListener("click",function(o){var i=t.getComponent();e.cellClick&&e.cellClick.call(t.table,o,i),t.table.options.cellClick&&t.table.options.cellClick.call(t.table,o,i)}),e.cellDblClick||this.table.options.cellDblClick?o.addEventListener("dblclick",function(o){var i=t.getComponent();e.cellDblClick&&e.cellDblClick.call(t.table,o,i),t.table.options.cellDblClick&&t.table.options.cellDblClick.call(t.table,o,i)}):o.addEventListener("dblclick",function(e){if(!t.table.modExists("edit")||t.table.modules.edit.currentCell!==t){e.preventDefault();try{if(document.selection){var o=document.body.createTextRange();o.moveToElementText(t.element),o.select()}else if(window.getSelection){var o=document.createRange();o.selectNode(t.element),window.getSelection().removeAllRanges(),window.getSelection().addRange(o)}}catch(e){}}}),(e.cellContext||this.table.options.cellContext)&&o.addEventListener("contextmenu",function(o){var i=t.getComponent();e.cellContext&&e.cellContext.call(t.table,o,i),t.table.options.cellContext&&t.table.options.cellContext.call(t.table,o,i)})},l.prototype._bindMouseEvents=function(e){var t=this,o=t.element;(e.cellMouseEnter||t.table.options.cellMouseEnter)&&o.addEventListener("mouseenter",function(o){var i=t.getComponent();e.cellMouseEnter&&e.cellMouseEnter.call(t.table,o,i),t.table.options.cellMouseEnter&&t.table.options.cellMouseEnter.call(t.table,o,i)}),(e.cellMouseLeave||t.table.options.cellMouseLeave)&&o.addEventListener("mouseleave",function(o){var i=t.getComponent();e.cellMouseLeave&&e.cellMouseLeave.call(t.table,o,i),t.table.options.cellMouseLeave&&t.table.options.cellMouseLeave.call(t.table,o,i)}),(e.cellMouseOver||t.table.options.cellMouseOver)&&o.addEventListener("mouseover",function(o){var i=t.getComponent();e.cellMouseOver&&e.cellMouseOver.call(t.table,o,i),t.table.options.cellMouseOver&&t.table.options.cellMouseOver.call(t.table,o,i)}),(e.cellMouseOut||t.table.options.cellMouseOut)&&o.addEventListener("mouseout",function(o){var i=t.getComponent();e.cellMouseOut&&e.cellMouseOut.call(t.table,o,i),t.table.options.cellMouseOut&&t.table.options.cellMouseOut.call(t.table,o,i)}),(e.cellMouseMove||t.table.options.cellMouseMove)&&o.addEventListener("mousemove",function(o){var i=t.getComponent();e.cellMouseMove&&e.cellMouseMove.call(t.table,o,i),t.table.options.cellMouseMove&&t.table.options.cellMouseMove.call(t.table,o,i)})},l.prototype._bindTouchEvents=function(e){var t,o,i,n=this,s=n.element;(e.cellTap||this.table.options.cellTap)&&(i=!1,s.addEventListener("touchstart",function(e){i=!0},{passive:!0}),s.addEventListener("touchend",function(t){if(i){var o=n.getComponent();e.cellTap&&e.cellTap.call(n.table,t,o),n.table.options.cellTap&&n.table.options.cellTap.call(n.table,t,o)}i=!1})),(e.cellDblTap||this.table.options.cellDblTap)&&(t=null,s.addEventListener("touchend",function(o){if(t){clearTimeout(t),t=null;var i=n.getComponent();e.cellDblTap&&e.cellDblTap.call(n.table,o,i),n.table.options.cellDblTap&&n.table.options.cellDblTap.call(n.table,o,i)}else t=setTimeout(function(){clearTimeout(t),t=null},300)})),(e.cellTapHold||this.table.options.cellTapHold)&&(o=null,s.addEventListener("touchstart",function(t){clearTimeout(o),o=setTimeout(function(){clearTimeout(o),o=null,i=!1;var s=n.getComponent();e.cellTapHold&&e.cellTapHold.call(n.table,t,s),n.table.options.cellTapHold&&n.table.options.cellTapHold.call(n.table,t,s)},1e3)},{passive:!0}),s.addEventListener("touchend",function(e){clearTimeout(o),o=null}))},l.prototype._generateContents=function(){var e;switch(e=this.table.modExists("format")?this.table.modules.format.formatValue(this):this.element.innerHTML=this.value,void 0===e?"undefined":_typeof(e)){case"object":if(e instanceof Node){for(;this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.element.appendChild(e)}else this.element.innerHTML="",null!=e&&console.warn("Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:",e);break;case"undefined":case"null":this.element.innerHTML="";break;default:this.element.innerHTML=e}},l.prototype.cellRendered=function(){this.table.modExists("format")&&this.table.modules.format.cellRendered&&this.table.modules.format.cellRendered(this)},l.prototype._generateTooltip=function(){var e=this.column.tooltip;e?(!0===e?e=this.value:"function"==typeof e&&!1===(e=e(this.getComponent()))&&(e=""),void 0===e&&(e=""),this.element.setAttribute("title",e)):this.element.setAttribute("title","")},l.prototype.getElement=function(){return this.element},l.prototype.getValue=function(){return this.value},l.prototype.getOldValue=function(){return this.oldValue},l.prototype.setValue=function(e,t){var o,i=this.setValueProcessData(e,t);i&&(this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("cellEdit",this,{oldValue:this.oldValue,newValue:this.value}),o=this.getComponent(),this.column.cellEvents.cellEdited&&this.column.cellEvents.cellEdited.call(this.table,o),this.cellRendered(),this.table.options.cellEdited.call(this.table,o),this.table.options.dataEdited.call(this.table,this.table.rowManager.getData()))},l.prototype.setValueProcessData=function(e,t){var o=!1;return this.value!=e&&(o=!0,t&&this.column.modules.mutate&&(e=this.table.modules.mutator.transformCell(this,e))),this.setValueActual(e),o&&this.table.modExists("columnCalcs")&&(this.column.definition.topCalc||this.column.definition.bottomCalc)&&(this.table.options.groupBy&&this.table.modExists("groupRows")?("table"!=this.table.options.columnCalcs&&"both"!=this.table.options.columnCalcs||this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),"table"!=this.table.options.columnCalcs&&this.table.modules.columnCalcs.recalcRowGroup(this.row)):this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows)),o},l.prototype.setValueActual=function(e){this.oldValue=this.value,this.value=e,this.table.options.reactiveData&&this.table.modExists("reactiveData")&&this.table.modules.reactiveData.block(),this.column.setFieldValue(this.row.data,e),this.table.options.reactiveData&&this.table.modExists("reactiveData")&&this.table.modules.reactiveData.unblock(),this._generateContents(),this._generateTooltip(),this.table.options.resizableColumns&&this.table.modExists("resizeColumns")&&this.table.modules.resizeColumns.initializeColumn("cell",this.column,this.element),this.column.definition.contextMenu&&this.table.modExists("menu")&&this.table.modules.menu.initializeCell(this),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layoutElement(this.element,this.column)},l.prototype.setWidth=function(){this.width=this.column.width,this.element.style.width=this.column.widthStyled},l.prototype.clearWidth=function(){this.width="",this.element.style.width=""},l.prototype.getWidth=function(){return this.width||this.element.offsetWidth},l.prototype.setMinWidth=function(){this.minWidth=this.column.minWidth,this.element.style.minWidth=this.column.minWidthStyled},l.prototype.checkHeight=function(){this.row.reinitializeHeight()},l.prototype.clearHeight=function(){this.element.style.height="",this.height=null},l.prototype.setHeight=function(){this.height=this.row.height,this.element.style.height=this.row.heightStyled},l.prototype.getHeight=function(){return this.height||this.element.offsetHeight},l.prototype.show=function(){this.element.style.display=""},l.prototype.hide=function(){this.element.style.display="none"},l.prototype.edit=function(e){if(this.table.modExists("edit",!0))return this.table.modules.edit.editCell(this,e)},l.prototype.cancelEdit=function(){if(this.table.modExists("edit",!0)){var e=this.table.modules.edit.getCurrentCell();e&&e._getSelf()===this?this.table.modules.edit.cancelEdit():console.warn("Cancel Editor Error - This cell is not currently being edited ")}},l.prototype.delete=function(){this.table.rowManager.redrawBlock||this.element.parentNode.removeChild(this.element),this.element=!1,this.column.deleteCell(this),this.row.deleteCell(this),this.calcs={}},l.prototype.nav=function(){var e=this,t=!1,o=this.row.getCellIndex(this);return{next:function(){var t,o=this.right();return!!o||!(!(t=e.table.rowManager.nextDisplayRow(e.row,!0))||!(o=t.findNextEditableCell(-1)))&&(o.edit(),!0)},prev:function(){var t,o=this.left();return!!o||!(!(t=e.table.rowManager.prevDisplayRow(e.row,!0))||!(o=t.findPrevEditableCell(t.cells.length)))&&(o.edit(),!0)},left:function(){return!!(t=e.row.findPrevEditableCell(o))&&(t.edit(),!0)},right:function(){return!!(t=e.row.findNextEditableCell(o))&&(t.edit(),!0)},up:function(){var t=e.table.rowManager.prevDisplayRow(e.row,!0);t&&t.cells[o].edit()},down:function(){var t=e.table.rowManager.nextDisplayRow(e.row,!0);t&&t.cells[o].edit()}}},l.prototype.getIndex=function(){this.row.getCellIndex(this)},l.prototype.getComponent=function(){return new a(this)};var c=function(e){this.table=e,this.active=!1,this.element=this.createElement(),this.external=!1,this.links=[],this._initialize()};c.prototype.createElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-footer"),e},c.prototype._initialize=function(e){if(this.table.options.footerElement)switch(_typeof(this.table.options.footerElement)){case"string":"<"===this.table.options.footerElement[0]?this.element.innerHTML=this.table.options.footerElement:(this.external=!0,this.element=document.querySelector(this.table.options.footerElement));break;default:this.element=this.table.options.footerElement}},c.prototype.getElement=function(){return this.element},c.prototype.append=function(e,t){this.activate(t),this.element.appendChild(e),this.table.rowManager.adjustTableSize()},c.prototype.prepend=function(e,t){this.activate(t),this.element.insertBefore(e,this.element.firstChild),this.table.rowManager.adjustTableSize()},c.prototype.remove=function(e){e.parentNode.removeChild(e),this.deactivate()},c.prototype.deactivate=function(e){this.element.firstChild&&!e||(this.external||this.element.parentNode.removeChild(this.element),this.active=!1)},c.prototype.activate=function(e){this.active||(this.active=!0,this.external||(this.table.element.appendChild(this.getElement()),this.table.element.style.display="")),e&&this.links.push(e)},c.prototype.redraw=function(){this.links.forEach(function(e){e.footerRedraw()})};var u=function e(t,o){this.options={},this.columnManager=null,this.rowManager=null,this.footerManager=null,this.browser="",this.browserSlow=!1,this.browserMobile=!1,this.modules={},this.initializeElement(t),this.initializeOptions(o||{}),this._create(),e.prototype.comms.register(this)};u.prototype.defaultOptions={height:!1,minHeight:!1,maxHeight:!1,layout:"fitData",layoutColumnsOnNewData:!1,columnMinWidth:40,columnHeaderVertAlign:"top",columnVertAlign:!1,resizableColumns:!0,resizableRows:!1,autoResize:!0,columns:[],cellHozAlign:"",cellVertAlign:"",data:[],autoColumns:!1,reactiveData:!1,nestedFieldSeparator:".",tooltips:!1,tooltipsHeader:!1,tooltipGenerationMode:"load",initialSort:!1,initialFilter:!1,initialHeaderFilter:!1,columnHeaderSortMulti:!0,sortOrderReverse:!1,headerSort:!0,headerSortTristate:!1,footerElement:!1,index:"id",keybindings:[],tabEndNewRow:!1,invalidOptionWarnings:!0,clipboard:!1,clipboardCopyStyled:!0,clipboardCopyConfig:!1,clipboardCopyFormatter:!1,clipboardCopyRowRange:"active",clipboardPasteParser:"table",clipboardPasteAction:"insert",clipboardCopied:function(){},clipboardPasted:function(){},clipboardPasteError:function(){},downloadDataFormatter:!1,downloadReady:function(e,t){return t},downloadComplete:!1,downloadConfig:!1,dataTree:!1,dataTreeElementColumn:!1,dataTreeBranchElement:!0,dataTreeChildIndent:9,dataTreeChildField:"_children",dataTreeCollapseElement:!1,dataTreeExpandElement:!1,dataTreeStartExpanded:!1,dataTreeRowExpanded:function(){},dataTreeRowCollapsed:function(){},dataTreeChildColumnCalcs:!1,dataTreeSelectPropagate:!1,printAsHtml:!1,printFormatter:!1,printHeader:!1,printFooter:!1,printCopyStyle:!0,printStyled:!0,printVisibleRows:!0,printRowRange:"visible",printConfig:{},addRowPos:"bottom",selectable:"highlight",selectableRangeMode:"drag",selectableRollingSelection:!0,selectablePersistence:!0,selectableCheck:function(e,t){return!0},headerFilterLiveFilterDelay:300,headerFilterPlaceholder:!1,headerVisible:!0,history:!1,locale:!1,langs:{},virtualDom:!0,virtualDomBuffer:0,persistentLayout:!1,persistentSort:!1,persistentFilter:!1,persistenceID:"",persistenceMode:!0,persistenceReaderFunc:!1,persistenceWriterFunc:!1,persistence:!1,responsiveLayout:!1,responsiveLayoutCollapseStartOpen:!0,responsiveLayoutCollapseUseFormatters:!0,responsiveLayoutCollapseFormatter:!1,pagination:!1,paginationSize:!1,paginationInitialPage:1,paginationButtonCount:5,paginationSizeSelector:!1,paginationElement:!1,paginationDataSent:{},paginationDataReceived:{},paginationAddRow:"page",ajaxURL:!1,ajaxURLGenerator:!1,ajaxParams:{},ajaxConfig:"get",ajaxContentType:"form",ajaxRequestFunc:!1,ajaxLoader:!0,ajaxLoaderLoading:!1,ajaxLoaderError:!1,ajaxFiltering:!1,ajaxSorting:!1,ajaxProgressiveLoad:!1,ajaxProgressiveLoadDelay:0,ajaxProgressiveLoadScrollMargin:0,groupBy:!1,groupStartOpen:!0,groupValues:!1,groupHeader:!1,htmlOutputConfig:!1,movableColumns:!1,movableRows:!1,movableRowsConnectedTables:!1,movableRowsSender:!1,movableRowsReceiver:"insert",movableRowsSendingStart:function(){},movableRowsSent:function(){},movableRowsSentFailed:function(){},movableRowsSendingStop:function(){},movableRowsReceivingStart:function(){},movableRowsReceived:function(){},movableRowsReceivedFailed:function(){},movableRowsReceivingStop:function(){},scrollToRowPosition:"top",scrollToRowIfVisible:!0,scrollToColumnPosition:"left",scrollToColumnIfVisible:!0,rowFormatter:!1,rowFormatterPrint:null,rowFormatterClipboard:null,rowFormatterHtmlOutput:null,placeholder:!1,tableBuilding:function(){},tableBuilt:function(){},renderStarted:function(){},renderComplete:function(){},rowClick:!1,rowDblClick:!1,rowContext:!1,rowTap:!1,rowDblTap:!1,rowTapHold:!1,rowMouseEnter:!1,rowMouseLeave:!1,rowMouseOver:!1,rowMouseOut:!1,rowMouseMove:!1,rowContextMenu:!1,rowAdded:function(){},rowDeleted:function(){},rowMoved:function(){},rowUpdated:function(){},rowSelectionChanged:function(){},rowSelected:function(){},rowDeselected:function(){},rowResized:function(){},cellClick:!1,cellDblClick:!1,cellContext:!1,cellTap:!1,cellDblTap:!1,cellTapHold:!1,cellMouseEnter:!1,cellMouseLeave:!1,cellMouseOver:!1,cellMouseOut:!1,cellMouseMove:!1,cellEditing:function(){},cellEdited:function(){},cellEditCancelled:function(){},columnMoved:!1,columnResized:function(){},columnTitleChanged:function(){},columnVisibilityChanged:function(){},htmlImporting:function(){},htmlImported:function(){},dataLoading:function(){},dataLoaded:function(){},dataEdited:function(){},ajaxRequesting:function(){},ajaxResponse:!1,ajaxError:function(){},dataFiltering:!1,dataFiltered:!1,dataSorting:function(){},dataSorted:function(){},groupToggleElement:"arrow",groupClosedShowCalcs:!1,dataGrouping:function(){},dataGrouped:!1,groupVisibilityChanged:function(){},groupClick:!1,groupDblClick:!1,groupContext:!1,groupTap:!1,groupDblTap:!1,groupTapHold:!1,columnCalcs:!0,pageLoaded:function(){},localized:function(){},validationFailed:function(){},historyUndo:function(){},historyRedo:function(){},scrollHorizontal:function(){},scrollVertical:function(){}},u.prototype.initializeOptions=function(e){if(!1!==e.invalidOptionWarnings)for(var t in e)void 0===this.defaultOptions[t]&&console.warn("Invalid table constructor option:",t);for(var t in this.defaultOptions)t in e?this.options[t]=e[t]:Array.isArray(this.defaultOptions[t])?this.options[t]=[]:"object"===_typeof(this.defaultOptions[t])&&null!==this.defaultOptions[t]?this.options[t]={}:this.options[t]=this.defaultOptions[t]},u.prototype.initializeElement=function(e){return"undefined"!=typeof HTMLElement&&e instanceof HTMLElement?(this.element=e,!0):"string"==typeof e?(this.element=document.querySelector(e),!!this.element||(console.error("Tabulator Creation Error - no element found matching selector: ",e),!1)):(console.error("Tabulator Creation Error - Invalid element provided:",e),!1)},u.prototype._mapDepricatedFunctionality=function(){(this.options.persistentLayout||this.options.persistentSort||this.options.persistentFilter)&&(this.options.persistence||(this.options.persistence={})),void 0!==this.options.clipboardCopyHeader&&(this.options.columnHeaders=this.options.clipboardCopyHeader,console.warn("DEPRECATION WARNING - clipboardCopyHeader option has been deprecated, please use the columnHeaders property on the clipboardCopyConfig option")),!0!==this.options.printVisibleRows&&(console.warn("printVisibleRows option is deprecated, you should now use the printRowRange option"),this.options.persistence.printRowRange="active"),!0!==this.options.printCopyStyle&&(console.warn("printCopyStyle option is deprecated, you should now use the printStyled option"),this.options.persistence.printStyled=this.options.printCopyStyle),this.options.persistentLayout&&(console.warn("persistentLayout option is deprecated, you should now use the persistence option"),!0!==this.options.persistence&&void 0===this.options.persistence.columns&&(this.options.persistence.columns=!0)),this.options.persistentSort&&(console.warn("persistentSort option is deprecated, you should now use the persistence option"),!0!==this.options.persistence&&void 0===this.options.persistence.sort&&(this.options.persistence.sort=!0)),this.options.persistentFilter&&(console.warn("persistentFilter option is deprecated, you should now use the persistence option"),!0!==this.options.persistence&&void 0===this.options.persistence.filter&&(this.options.persistence.filter=!0)),this.options.columnVertAlign&&(console.warn("columnVertAlign option is deprecated, you should now use the columnHeaderVertAlign option"),this.options.columnHeaderVertAlign=this.options.columnVertAlign)},u.prototype._clearSelection=function(){this.element.classList.add("tabulator-block-select"),window.getSelection?window.getSelection().empty?window.getSelection().empty():window.getSelection().removeAllRanges&&window.getSelection().removeAllRanges():document.selection&&document.selection.empty(),this.element.classList.remove("tabulator-block-select")},u.prototype._create=function(){this._clearObjectPointers(),this._mapDepricatedFunctionality(),this.bindModules(),"TABLE"===this.element.tagName&&this.modExists("htmlTableImport",!0)&&this.modules.htmlTableImport.parseTable(),this.columnManager=new t(this),this.rowManager=new n(this),this.footerManager=new c(this),this.columnManager.setRowManager(this.rowManager),this.rowManager.setColumnManager(this.columnManager),this._buildElement(),this._loadInitialData()},u.prototype._clearObjectPointers=function(){this.options.columns=this.options.columns.slice(0),this.options.reactiveData||(this.options.data=this.options.data.slice(0))},
-u.prototype._buildElement=function(){var e=this,t=this.element,o=this.modules,i=this.options;for(i.tableBuilding.call(this),t.classList.add("tabulator"),t.setAttribute("role","grid");t.firstChild;)t.removeChild(t.firstChild);i.height&&(i.height=isNaN(i.height)?i.height:i.height+"px",t.style.height=i.height),!1!==i.minHeight&&(i.minHeight=isNaN(i.minHeight)?i.minHeight:i.minHeight+"px",t.style.minHeight=i.minHeight),!1!==i.maxHeight&&(i.maxHeight=isNaN(i.maxHeight)?i.maxHeight:i.maxHeight+"px",t.style.maxHeight=i.maxHeight),this.columnManager.initialize(),this.rowManager.initialize(),this._detectBrowser(),this.modExists("layout",!0)&&o.layout.initialize(i.layout),!1!==i.headerFilterPlaceholder&&o.localize.setHeaderFilterPlaceholder(i.headerFilterPlaceholder);for(var n in i.langs)o.localize.installLang(n,i.langs[n]);if(o.localize.setLocale(i.locale),"string"==typeof i.placeholder){var s=document.createElement("div");s.classList.add("tabulator-placeholder");var r=document.createElement("span");r.innerHTML=i.placeholder,s.appendChild(r),i.placeholder=s}if(t.appendChild(this.columnManager.getElement()),t.appendChild(this.rowManager.getElement()),i.footerElement&&this.footerManager.activate(),i.persistence&&this.modExists("persistence",!0)&&o.persistence.initialize(),i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.columns&&(i.columns=o.persistence.load("columns",i.columns)),i.movableRows&&this.modExists("moveRow")&&o.moveRow.initialize(),i.autoColumns&&this.options.data&&this.columnManager.generateColumnsFromRowData(this.options.data),this.modExists("columnCalcs")&&o.columnCalcs.initialize(),this.columnManager.setColumns(i.columns),i.dataTree&&this.modExists("dataTree",!0)&&o.dataTree.initialize(),this.modExists("frozenRows")&&this.modules.frozenRows.initialize(),(i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.sort||i.initialSort)&&this.modExists("sort",!0)){var a=[];i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.sort?!1===(a=o.persistence.load("sort"))&&i.initialSort&&(a=i.initialSort):i.initialSort&&(a=i.initialSort),o.sort.setSort(a)}if((i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.filter||i.initialFilter)&&this.modExists("filter",!0)){var l=[];i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.filter?!1===(l=o.persistence.load("filter"))&&i.initialFilter&&(l=i.initialFilter):i.initialFilter&&(l=i.initialFilter),o.filter.setFilter(l)}i.initialHeaderFilter&&this.modExists("filter",!0)&&i.initialHeaderFilter.forEach(function(t){var i=e.columnManager.findColumn(t.field);if(!i)return console.warn("Column Filter Error - No matching column found:",t.field),!1;o.filter.setHeaderFilterValue(i,t.value)}),this.modExists("ajax")&&o.ajax.initialize(),i.pagination&&this.modExists("page",!0)&&o.page.initialize(),i.groupBy&&this.modExists("groupRows",!0)&&o.groupRows.initialize(),this.modExists("keybindings")&&o.keybindings.initialize(),this.modExists("selectRow")&&o.selectRow.clearSelectionData(!0),i.autoResize&&this.modExists("resizeTable")&&o.resizeTable.initialize(),this.modExists("clipboard")&&o.clipboard.initialize(),i.printAsHtml&&this.modExists("print")&&o.print.initialize(),i.tableBuilt.call(this)},u.prototype._loadInitialData=function(){var e=this;if(e.options.pagination&&e.modExists("page"))if(e.modules.page.reset(!0,!0),"local"==e.options.pagination){if(e.options.data.length)e.rowManager.setData(e.options.data,!1,!0);else{if((e.options.ajaxURL||e.options.ajaxURLGenerator)&&e.modExists("ajax"))return void e.modules.ajax.loadData(!1,!0).then(function(){}).catch(function(){e.options.paginationInitialPage&&e.modules.page.setPage(e.options.paginationInitialPage)});e.rowManager.setData(e.options.data,!1,!0)}e.options.paginationInitialPage&&e.modules.page.setPage(e.options.paginationInitialPage)}else e.options.ajaxURL?e.modules.page.setPage(e.options.paginationInitialPage).then(function(){}).catch(function(){}):e.rowManager.setData([],!1,!0);else e.options.data.length?e.rowManager.setData(e.options.data):(e.options.ajaxURL||e.options.ajaxURLGenerator)&&e.modExists("ajax")?e.modules.ajax.loadData(!1,!0).then(function(){}).catch(function(){}):e.rowManager.setData(e.options.data,!1,!0)},u.prototype.destroy=function(){var e=this.element;for(u.prototype.comms.deregister(this),this.options.reactiveData&&this.modExists("reactiveData",!0)&&this.modules.reactiveData.unwatchData(),this.rowManager.rows.forEach(function(e){e.wipe()}),this.rowManager.rows=[],this.rowManager.activeRows=[],this.rowManager.displayRows=[],this.options.autoResize&&this.modExists("resizeTable")&&this.modules.resizeTable.clearBindings(),this.modExists("keybindings")&&this.modules.keybindings.clearBindings();e.firstChild;)e.removeChild(e.firstChild);e.classList.remove("tabulator")},u.prototype._detectBrowser=function(){var e=navigator.userAgent||navigator.vendor||window.opera;e.indexOf("Trident")>-1?(this.browser="ie",this.browserSlow=!0):e.indexOf("Edge")>-1?(this.browser="edge",this.browserSlow=!0):e.indexOf("Firefox")>-1?(this.browser="firefox",this.browserSlow=!1):(this.browser="other",this.browserSlow=!1),this.browserMobile=/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(e)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(e.substr(0,4))},u.prototype.blockRedraw=function(){return this.rowManager.blockRedraw()},u.prototype.restoreRedraw=function(){return this.rowManager.restoreRedraw()},u.prototype.setDataFromLocalFile=function(e){var t=this;return new Promise(function(o,i){var n=document.createElement("input");n.type="file",n.accept=e||".json,application/json",n.addEventListener("change",function(e){var s,r=n.files[0],a=new FileReader;a.readAsText(r),a.onload=function(e){try{s=JSON.parse(a.result)}catch(e){return console.warn("File Load Error - File contents is invalid JSON",e),void i(e)}t._setData(s).then(function(e){o(e)}).catch(function(e){o(e)})},a.onerror=function(e){console.warn("File Load Error - Unable to read file"),i()}}),n.click()})},u.prototype.setData=function(e,t,o){return this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this._setData(e,t,o,!1,!0)},u.prototype._setData=function(e,t,o,i,n){var s=this;return"string"!=typeof e?e?s.rowManager.setData(e,i,n):s.modExists("ajax")&&(s.modules.ajax.getUrl||s.options.ajaxURLGenerator)?"remote"==s.options.pagination&&s.modExists("page",!0)?(s.modules.page.reset(!0,!0),s.modules.page.setPage(1)):s.modules.ajax.loadData(i,n):s.rowManager.setData([],i,n):0==e.indexOf("{")||0==e.indexOf("[")?s.rowManager.setData(JSON.parse(e),i,n):s.modExists("ajax",!0)?(t&&s.modules.ajax.setParams(t),o&&s.modules.ajax.setConfig(o),s.modules.ajax.setUrl(e),"remote"==s.options.pagination&&s.modExists("page",!0)?(s.modules.page.reset(!0,!0),s.modules.page.setPage(1)):s.modules.ajax.loadData(i,n)):void 0},u.prototype.clearData=function(){this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this.rowManager.clearData()},u.prototype.getData=function(e){return!0===e&&(console.warn("passing a boolean to the getData function is deprecated, you should now pass the string 'active'"),e="active"),this.rowManager.getData(e)},u.prototype.getDataCount=function(e){return!0===e&&(console.warn("passing a boolean to the getDataCount function is deprecated, you should now pass the string 'active'"),e="active"),this.rowManager.getDataCount(e)},u.prototype.searchRows=function(e,t,o){if(this.modExists("filter",!0))return this.modules.filter.search("rows",e,t,o)},u.prototype.searchData=function(e,t,o){if(this.modExists("filter",!0))return this.modules.filter.search("data",e,t,o)},u.prototype.getHtml=function(e,t,o){if(this.modExists("export",!0))return this.modules.export.getHtml(e,t,o)},u.prototype.print=function(e,t,o){if(this.modExists("print",!0))return this.modules.print.printFullscreen(e,t,o)},u.prototype.getAjaxUrl=function(){if(this.modExists("ajax",!0))return this.modules.ajax.getUrl()},u.prototype.replaceData=function(e,t,o){return this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this._setData(e,t,o,!0)},u.prototype.updateData=function(e){var t=this,o=this,i=0;return new Promise(function(n,s){t.modExists("ajax")&&t.modules.ajax.blockActiveRequest(),"string"==typeof e&&(e=JSON.parse(e)),e?e.forEach(function(e){var t=o.rowManager.findRow(e[o.options.index]);t&&(i++,t.updateData(e).then(function(){--i||n()}))}):(console.warn("Update Error - No data provided"),s("Update Error - No data provided"))})},u.prototype.addData=function(e,t,o){var i=this;return new Promise(function(n,s){i.modExists("ajax")&&i.modules.ajax.blockActiveRequest(),"string"==typeof e&&(e=JSON.parse(e)),e?i.rowManager.addRows(e,t,o).then(function(e){var t=[];e.forEach(function(e){t.push(e.getComponent())}),n(t)}):(console.warn("Update Error - No data provided"),s("Update Error - No data provided"))})},u.prototype.updateOrAddData=function(e){var t=this,o=this,i=[],n=0;return new Promise(function(s,r){t.modExists("ajax")&&t.modules.ajax.blockActiveRequest(),"string"==typeof e&&(e=JSON.parse(e)),e?e.forEach(function(e){var t=o.rowManager.findRow(e[o.options.index]);n++,t?t.updateData(e).then(function(){n--,i.push(t.getComponent()),n||s(i)}):o.rowManager.addRows(e).then(function(e){n--,i.push(e[0].getComponent()),n||s(i)})}):(console.warn("Update Error - No data provided"),r("Update Error - No data provided"))})},u.prototype.getRow=function(e){var t=this.rowManager.findRow(e);return t?t.getComponent():(console.warn("Find Error - No matching row found:",e),!1)},u.prototype.getRowFromPosition=function(e,t){var o=this.rowManager.getRowFromPosition(e,t);return o?o.getComponent():(console.warn("Find Error - No matching row found:",e),!1)},u.prototype.deleteRow=function(e){var t=this;return new Promise(function(o,i){function n(){++r==e.length&&a&&(s.rowManager.reRenderInPosition(),o())}var s=t,r=0,a=0,l=[];Array.isArray(e)||(e=[e]),e.forEach(function(e){var o=t.rowManager.findRow(e,!0);o?l.push(o):(console.warn("Delete Error - No matching row found:",e),i("Delete Error - No matching row found"),n())}),l.sort(function(e,o){return t.rowManager.rows.indexOf(e)>t.rowManager.rows.indexOf(o)?1:-1}),l.forEach(function(e){e.delete().then(function(){a++,n()}).catch(function(e){n(),i(e)})})})},u.prototype.addRow=function(e,t,o){var i=this;return new Promise(function(n,s){"string"==typeof e&&(e=JSON.parse(e)),i.rowManager.addRows(e,t,o).then(function(e){i.modExists("columnCalcs")&&i.modules.columnCalcs.recalc(i.rowManager.activeRows),n(e[0].getComponent())})})},u.prototype.updateOrAddRow=function(e,t){var o=this;return new Promise(function(i,n){var s=o.rowManager.findRow(e);"string"==typeof t&&(t=JSON.parse(t)),s?s.updateData(t).then(function(){o.modExists("columnCalcs")&&o.modules.columnCalcs.recalc(o.rowManager.activeRows),i(s.getComponent())}).catch(function(e){n(e)}):s=o.rowManager.addRows(t).then(function(e){o.modExists("columnCalcs")&&o.modules.columnCalcs.recalc(o.rowManager.activeRows),i(e[0].getComponent())}).catch(function(e){n(e)})})},u.prototype.updateRow=function(e,t){var o=this;return new Promise(function(i,n){var s=o.rowManager.findRow(e);"string"==typeof t&&(t=JSON.parse(t)),s?s.updateData(t).then(function(){i(s.getComponent())}).catch(function(e){n(e)}):(console.warn("Update Error - No matching row found:",e),n("Update Error - No matching row found"))})},u.prototype.scrollToRow=function(e,t,o){var i=this;return new Promise(function(n,s){var r=i.rowManager.findRow(e);r?i.rowManager.scrollToRow(r,t,o).then(function(){n()}).catch(function(e){s(e)}):(console.warn("Scroll Error - No matching row found:",e),s("Scroll Error - No matching row found"))})},u.prototype.moveRow=function(e,t,o){var i=this.rowManager.findRow(e);i?i.moveToRow(t,o):console.warn("Move Error - No matching row found:",e)},u.prototype.getRows=function(e){return!0===e&&(console.warn("passing a boolean to the getRows function is deprecated, you should now pass the string 'active'"),e="active"),this.rowManager.getComponents(e)},u.prototype.getRowPosition=function(e,t){var o=this.rowManager.findRow(e);return o?this.rowManager.getRowPosition(o,t):(console.warn("Position Error - No matching row found:",e),!1)},u.prototype.copyToClipboard=function(e){this.modExists("clipboard",!0)&&this.modules.clipboard.copy(e)},u.prototype.setColumns=function(e){this.columnManager.setColumns(e)},u.prototype.getColumns=function(e){return this.columnManager.getComponents(e)},u.prototype.getColumn=function(e){var t=this.columnManager.findColumn(e);return t?t.getComponent():(console.warn("Find Error - No matching column found:",e),!1)},u.prototype.getColumnDefinitions=function(){return this.columnManager.getDefinitionTree()},u.prototype.getColumnLayout=function(){if(this.modExists("persistence",!0))return this.modules.persistence.parseColumns(this.columnManager.getColumns())},u.prototype.setColumnLayout=function(e){return!!this.modExists("persistence",!0)&&(this.columnManager.setColumns(this.modules.persistence.mergeDefinition(this.options.columns,e)),!0)},u.prototype.showColumn=function(e){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Show Error - No matching column found:",e),!1;t.show(),this.options.responsiveLayout&&this.modExists("responsiveLayout",!0)&&this.modules.responsiveLayout.update()},u.prototype.hideColumn=function(e){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Hide Error - No matching column found:",e),!1;t.hide(),this.options.responsiveLayout&&this.modExists("responsiveLayout",!0)&&this.modules.responsiveLayout.update()},u.prototype.toggleColumn=function(e){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Visibility Toggle Error - No matching column found:",e),!1;t.visible?t.hide():t.show()},u.prototype.addColumn=function(e,t,o){var i=this;return new Promise(function(n,s){var r=i.columnManager.findColumn(o);i.columnManager.addColumn(e,t,r).then(function(e){n(e.getComponent())}).catch(function(e){s(e)})})},u.prototype.deleteColumn=function(e){var t=this;return new Promise(function(o,i){var n=t.columnManager.findColumn(e);n?n.delete().then(function(){o()}).catch(function(e){i(e)}):(console.warn("Column Delete Error - No matching column found:",e),i())})},u.prototype.updateColumnDefinition=function(e,t){var o=this;return new Promise(function(i,n){var s=o.columnManager.findColumn(e);s?s.updateDefinition(t).then(function(e){i(e)}).catch(function(e){n(e)}):(console.warn("Column Update Error - No matching column found:",e),n())})},u.prototype.moveColumn=function(e,t,o){var i=this.columnManager.findColumn(e),n=this.columnManager.findColumn(t);i?n?this.columnManager.moveColumn(i,n,o):console.warn("Move Error - No matching column found:",n):console.warn("Move Error - No matching column found:",e)},u.prototype.scrollToColumn=function(e,t,o){var i=this;return new Promise(function(n,s){var r=i.columnManager.findColumn(e);r?i.columnManager.scrollToColumn(r,t,o).then(function(){n()}).catch(function(e){s(e)}):(console.warn("Scroll Error - No matching column found:",e),s("Scroll Error - No matching column found"))})},u.prototype.setLocale=function(e){this.modules.localize.setLocale(e)},u.prototype.getLocale=function(){return this.modules.localize.getLocale()},u.prototype.getLang=function(e){return this.modules.localize.getLang(e)},u.prototype.redraw=function(e){this.columnManager.redraw(e),this.rowManager.redraw(e)},u.prototype.setHeight=function(e){"classic"!==this.rowManager.renderMode?(this.options.height=isNaN(e)?e:e+"px",this.element.style.height=this.options.height,this.rowManager.setRenderMode(),this.rowManager.redraw()):console.warn("setHeight function is not available in classic render mode")},u.prototype.setSort=function(e,t){this.modExists("sort",!0)&&(this.modules.sort.setSort(e,t),this.rowManager.sorterRefresh())},u.prototype.getSorters=function(){if(this.modExists("sort",!0))return this.modules.sort.getSort()},u.prototype.clearSort=function(){this.modExists("sort",!0)&&(this.modules.sort.clear(),this.rowManager.sorterRefresh())},u.prototype.setFilter=function(e,t,o){this.modExists("filter",!0)&&(this.modules.filter.setFilter(e,t,o),this.rowManager.filterRefresh())},u.prototype.addFilter=function(e,t,o){this.modExists("filter",!0)&&(this.modules.filter.addFilter(e,t,o),this.rowManager.filterRefresh())},u.prototype.getFilters=function(e){if(this.modExists("filter",!0))return this.modules.filter.getFilters(e)},u.prototype.setHeaderFilterFocus=function(e){if(this.modExists("filter",!0)){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Filter Focus Error - No matching column found:",e),!1;this.modules.filter.setHeaderFilterFocus(t)}},u.prototype.getHeaderFilterValue=function(e){if(this.modExists("filter",!0)){var t=this.columnManager.findColumn(e);if(t)return this.modules.filter.getHeaderFilterValue(t);console.warn("Column Filter Error - No matching column found:",e)}},u.prototype.setHeaderFilterValue=function(e,t){if(this.modExists("filter",!0)){var o=this.columnManager.findColumn(e);if(!o)return console.warn("Column Filter Error - No matching column found:",e),!1;this.modules.filter.setHeaderFilterValue(o,t)}},u.prototype.getHeaderFilters=function(){if(this.modExists("filter",!0))return this.modules.filter.getHeaderFilters()},u.prototype.removeFilter=function(e,t,o){this.modExists("filter",!0)&&(this.modules.filter.removeFilter(e,t,o),this.rowManager.filterRefresh())},u.prototype.clearFilter=function(e){this.modExists("filter",!0)&&(this.modules.filter.clearFilter(e),this.rowManager.filterRefresh())},u.prototype.clearHeaderFilter=function(){this.modExists("filter",!0)&&(this.modules.filter.clearHeaderFilter(),this.rowManager.filterRefresh())},u.prototype.selectRow=function(e){this.modExists("selectRow",!0)&&(!0===e&&(console.warn("passing a boolean to the selectRowselectRow function is deprecated, you should now pass the string 'active'"),e="active"),this.modules.selectRow.selectRows(e))},u.prototype.deselectRow=function(e){this.modExists("selectRow",!0)&&this.modules.selectRow.deselectRows(e)},u.prototype.toggleSelectRow=function(e){this.modExists("selectRow",!0)&&this.modules.selectRow.toggleRow(e)},u.prototype.getSelectedRows=function(){if(this.modExists("selectRow",!0))return this.modules.selectRow.getSelectedRows()},u.prototype.getSelectedData=function(){if(this.modExists("selectRow",!0))return this.modules.selectRow.getSelectedData()},u.prototype.setMaxPage=function(e){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.setMaxPage(e)},u.prototype.setPage=function(e){return this.options.pagination&&this.modExists("page")?this.modules.page.setPage(e):new Promise(function(e,t){t()})},u.prototype.setPageToRow=function(e){var t=this;return new Promise(function(o,i){t.options.pagination&&t.modExists("page")?(e=t.rowManager.findRow(e),e?t.modules.page.setPageToRow(e).then(function(){o()}).catch(function(){i()}):i()):i()})},u.prototype.setPageSize=function(e){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.setPageSize(e),this.modules.page.setPage(1).then(function(){}).catch(function(){})},u.prototype.getPageSize=function(){if(this.options.pagination&&this.modExists("page",!0))return this.modules.page.getPageSize()},u.prototype.previousPage=function(){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.previousPage()},u.prototype.nextPage=function(){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.nextPage()},u.prototype.getPage=function(){return!(!this.options.pagination||!this.modExists("page"))&&this.modules.page.getPage()},u.prototype.getPageMax=function(){return!(!this.options.pagination||!this.modExists("page"))&&this.modules.page.getPageMax()},u.prototype.setGroupBy=function(e){if(!this.modExists("groupRows",!0))return!1;this.options.groupBy=e,this.modules.groupRows.initialize(),this.rowManager.refreshActiveData("display"),this.options.persistence&&this.modExists("persistence",!0)&&this.modules.persistence.config.group&&this.modules.persistence.save("group")},u.prototype.setGroupStartOpen=function(e){if(!this.modExists("groupRows",!0))return!1;this.options.groupStartOpen=e,this.modules.groupRows.initialize(),this.options.groupBy?(this.rowManager.refreshActiveData("group"),this.options.persistence&&this.modExists("persistence",!0)&&this.modules.persistence.config.group&&this.modules.persistence.save("group")):console.warn("Grouping Update - cant refresh view, no groups have been set")},u.prototype.setGroupHeader=function(e){if(!this.modExists("groupRows",!0))return!1;this.options.groupHeader=e,this.modules.groupRows.initialize(),this.options.groupBy?(this.rowManager.refreshActiveData("group"),this.options.persistence&&this.modExists("persistence",!0)&&this.modules.persistence.config.group&&this.modules.persistence.save("group")):console.warn("Grouping Update - cant refresh view, no groups have been set")},u.prototype.getGroups=function(e){return!!this.modExists("groupRows",!0)&&this.modules.groupRows.getGroups(!0)},u.prototype.getGroupedData=function(){if(this.modExists("groupRows",!0))return this.options.groupBy?this.modules.groupRows.getGroupedData():this.getData()},u.prototype.getCalcResults=function(){return!!this.modExists("columnCalcs",!0)&&this.modules.columnCalcs.getResults()},u.prototype.recalc=function(){this.modExists("columnCalcs",!0)&&this.modules.columnCalcs.recalcAll(this.rowManager.activeRows)},u.prototype.navigatePrev=function(){var e=!1;return!(!this.modExists("edit",!0)||!(e=this.modules.edit.currentCell))&&e.nav().prev()},u.prototype.navigateNext=function(){var e=!1;return!(!this.modExists("edit",!0)||!(e=this.modules.edit.currentCell))&&e.nav().next()},u.prototype.navigateLeft=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().left())},u.prototype.navigateRight=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().right())},u.prototype.navigateUp=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().up())},u.prototype.navigateDown=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().down())},u.prototype.undo=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.undo()},u.prototype.redo=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.redo()},u.prototype.getHistoryUndoSize=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.getHistoryUndoSize()},u.prototype.getHistoryRedoSize=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.getHistoryRedoSize()},u.prototype.download=function(e,t,o,i){this.modExists("download",!0)&&this.modules.download.download(e,t,o,i)},u.prototype.downloadToTab=function(e,t,o,i){this.modExists("download",!0)&&this.modules.download.download(e,t,o,i,!0)},u.prototype.tableComms=function(e,t,o,i){this.modules.comms.receive(e,t,o,i)},u.prototype.moduleBindings={},u.prototype.extendModule=function(e,t,o){if(u.prototype.moduleBindings[e]){var i=u.prototype.moduleBindings[e].prototype[t];if(i)if("object"==(void 0===o?"undefined":_typeof(o)))for(var n in o)i[n]=o[n];else console.warn("Module Error - Invalid value type, it must be an object");else console.warn("Module Error - property does not exist:",t)}else console.warn("Module Error - module does not exist:",e)},u.prototype.registerModule=function(e,t){u.prototype.moduleBindings[e]=t},u.prototype.bindModules=function(){this.modules={};for(var e in u.prototype.moduleBindings)this.modules[e]=new u.prototype.moduleBindings[e](this)},u.prototype.modExists=function(e,t){return!!this.modules[e]||(t&&console.error("Tabulator Module Not Installed: "+e),!1)},u.prototype.helpers={elVisible:function(e){return!(e.offsetWidth<=0&&e.offsetHeight<=0)},elOffset:function(e){var t=e.getBoundingClientRect();return{top:t.top+window.pageYOffset-document.documentElement.clientTop,left:t.left+window.pageXOffset-document.documentElement.clientLeft}},deepClone:function(e){var t=Array.isArray(e)?[]:{};for(var o in e)null!=e[o]&&"object"===_typeof(e[o])?e[o]instanceof Date?t[o]=new Date(e[o]):t[o]=this.deepClone(e[o]):t[o]=e[o];return t}},u.prototype.comms={tables:[],register:function(e){u.prototype.comms.tables.push(e)},deregister:function(e){var t=u.prototype.comms.tables.indexOf(e);t>-1&&u.prototype.comms.tables.splice(t,1)},lookupTable:function(e,t){var o,i,n=[];if("string"==typeof e){if(o=document.querySelectorAll(e),o.length)for(var s=0;s<o.length;s++)(i=u.prototype.comms.matchElement(o[s]))&&n.push(i)}else"undefined"!=typeof HTMLElement&&e instanceof HTMLElement||e instanceof u?(i=u.prototype.comms.matchElement(e))&&n.push(i):Array.isArray(e)?e.forEach(function(e){n=n.concat(u.prototype.comms.lookupTable(e))}):t||console.warn("Table Connection Error - Invalid Selector",e);return n},matchElement:function(e){return u.prototype.comms.tables.find(function(t){return e instanceof u?t===e:t.element===e})}},u.prototype.findTable=function(e){var t=u.prototype.comms.lookupTable(e,!0);return!(Array.isArray(t)&&!t.length)&&t};var d=function(e){this.table=e,this.mode=null};d.prototype.initialize=function(e){this.modes[e]?this.mode=e:(console.warn("Layout Error - invalid mode set, defaulting to 'fitData' : "+e),this.mode="fitData"),this.table.element.setAttribute("tabulator-layout",this.mode)},d.prototype.getMode=function(){return this.mode},d.prototype.layout=function(){this.modes[this.mode].call(this,this.table.columnManager.columnsByIndex)},d.prototype.modes={fitData:function(e){e.forEach(function(e){e.reinitializeWidth()}),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitDataFill:function(e){e.forEach(function(e){e.reinitializeWidth()}),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitDataStretch:function(e){var t=this,o=0,i=this.table.rowManager.element.clientWidth,n=0,s=!1;e.forEach(function(e,i){e.widthFixed||e.reinitializeWidth(),(t.table.options.responsiveLayout?e.modules.responsive.visible:e.visible)&&(s=e),e.visible&&(o+=e.getWidth())}),s?(n=i-o+s.getWidth(),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&(s.setWidth(0),this.table.modules.responsiveLayout.update()),n>0?s.setWidth(n):s.reinitializeWidth()):this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitColumns:function(e){function t(e){return"string"==typeof e?e.indexOf("%")>-1?n/100*parseInt(e):parseInt(e):e}function o(e,i,n,s){function r(e){return n*(e.column.definition.widthGrow||1)}function a(e){return t(e.width)-n*(e.column.definition.widthShrink||0)}var l=[],c=0,u=0,d=0,h=0,p=0,m=[];return e.forEach(function(e,t){var o=s?a(e):r(e);e.column.minWidth>=o?l.push(e):(m.push(e),p+=s?e.column.definition.widthShrink||1:e.column.definition.widthGrow||1)}),l.length?(l.forEach(function(e){c+=s?e.width-e.column.minWidth:e.column.minWidth,e.width=e.column.minWidth}),u=i-c,d=p?Math.floor(u/p):u,h=u-d*p,h+=o(m,u,d,s)):(h=p?i-Math.floor(i/p)*p:i,m.forEach(function(e){e.width=s?a(e):r(e)})),h}var i=this,n=i.table.element.clientWidth,s=0,r=0,a=0,l=0,c=[],u=[],d=0,h=0,p=0;this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update(),this.table.rowManager.element.scrollHeight>this.table.rowManager.element.clientHeight&&(n-=this.table.rowManager.element.offsetWidth-this.table.rowManager.element.clientWidth),e.forEach(function(e){var o,i,n;e.visible&&(o=e.definition.width,i=parseInt(e.minWidth),o?(n=t(o),s+=n>i?n:i,e.definition.widthShrink&&(u.push({column:e,width:n>i?n:i}),d+=e.definition.widthShrink)):(c.push({column:e,width:0}),a+=e.definition.widthGrow||1))}),r=n-s,l=Math.floor(r/a);var p=o(c,r,l,!1);c.length&&p>0&&(c[c.length-1].width+=+p),c.forEach(function(e){r-=e.width}),h=Math.abs(p)+r,h>0&&d&&(p=o(u,h,Math.floor(h/d),!0)),u.length&&(u[u.length-1].width-=p),c.forEach(function(e){e.column.setWidth(e.width)}),u.forEach(function(e){e.column.setWidth(e.width)})}},u.prototype.registerModule("layout",d);var h=function(e){this.table=e,this.locale="default",this.lang=!1,this.bindings={}};h.prototype.setHeaderFilterPlaceholder=function(e){this.langs.default.headerFilters.default=e},h.prototype.setHeaderFilterColumnPlaceholder=function(e,t){this.langs.default.headerFilters.columns[e]=t,this.lang&&!this.lang.headerFilters.columns[e]&&(this.lang.headerFilters.columns[e]=t)},h.prototype.installLang=function(e,t){this.langs[e]?this._setLangProp(this.langs[e],t):this.langs[e]=t},h.prototype._setLangProp=function(e,t){for(var o in t)e[o]&&"object"==_typeof(e[o])?this._setLangProp(e[o],t[o]):e[o]=t[o]},h.prototype.setLocale=function(e){function t(e,o){for(var i in e)"object"==_typeof(e[i])?(o[i]||(o[i]={}),t(e[i],o[i])):o[i]=e[i]}var o=this;if(e=e||"default",!0===e&&navigator.language&&(e=navigator.language.toLowerCase()),e&&!o.langs[e]){var i=e.split("-")[0];o.langs[i]?(console.warn("Localization Error - Exact matching locale not found, using closest match: ",e,i),e=i):(console.warn("Localization Error - Matching locale not found, using default: ",e),e="default")}o.locale=e,o.lang=u.prototype.helpers.deepClone(o.langs.default||{}),"default"!=e&&t(o.langs[e],o.lang),o.table.options.localized.call(o.table,o.locale,o.lang),o._executeBindings()},h.prototype.getLocale=function(e){return self.locale},h.prototype.getLang=function(e){return e?this.langs[e]:this.lang},h.prototype.getText=function(e,t){var e=t?e+"|"+t:e,o=e.split("|");return this._getLangElement(o,this.locale)||""},h.prototype._getLangElement=function(e,t){var o=this,i=o.lang;return e.forEach(function(e){var t;i&&(t=i[e],i=void 0!==t&&t)}),i},h.prototype.bind=function(e,t){
-this.bindings[e]||(this.bindings[e]=[]),this.bindings[e].push(t),t(this.getText(e),this.lang)},h.prototype._executeBindings=function(){var e=this;for(var t in e.bindings)!function(t){e.bindings[t].forEach(function(o){o(e.getText(t),e.lang)})}(t)},h.prototype.langs={default:{groups:{item:"item",items:"items"},columns:{},ajax:{loading:"Loading",error:"Error"},pagination:{page_size:"Page Size",first:"First",first_title:"First Page",last:"Last",last_title:"Last Page",prev:"Prev",prev_title:"Prev Page",next:"Next",next_title:"Next Page"},headerFilters:{default:"filter column...",columns:{}}}},u.prototype.registerModule("localize",h);var p=function(e){this.table=e};p.prototype.getConnections=function(e){var t,o=this,i=[];return t=u.prototype.comms.lookupTable(e),t.forEach(function(e){o.table!==e&&i.push(e)}),i},p.prototype.send=function(e,t,o,i){var n=this,s=this.getConnections(e);s.forEach(function(e){e.tableComms(n.table.element,t,o,i)}),!s.length&&e&&console.warn("Table Connection Error - No tables matching selector found",e)},p.prototype.receive=function(e,t,o,i){if(this.table.modExists(t))return this.table.modules[t].commsReceived(e,o,i);console.warn("Inter-table Comms Error - no such module:",t)},u.prototype.registerModule("comms",p);var m=function(e){this.table=e,this.allowedTypes=["","data","download","clipboard","print","htmlOutput"]};m.prototype.initializeColumn=function(e){var t=this,o=!1,i={};this.allowedTypes.forEach(function(n){var s,r="accessor"+(n.charAt(0).toUpperCase()+n.slice(1));e.definition[r]&&(s=t.lookupAccessor(e.definition[r]))&&(o=!0,i[r]={accessor:s,params:e.definition[r+"Params"]||{}})}),o&&(e.modules.accessor=i)},m.prototype.lookupAccessor=function(e){var t=!1;switch(void 0===e?"undefined":_typeof(e)){case"string":this.accessors[e]?t=this.accessors[e]:console.warn("Accessor Error - No such accessor found, ignoring: ",e);break;case"function":t=e}return t},m.prototype.transformRow=function(e,t){var o=this,i="accessor"+(t.charAt(0).toUpperCase()+t.slice(1)),n=u.prototype.helpers.deepClone(e||{});return o.table.columnManager.traverse(function(e){var o,s,r,a;e.modules.accessor&&(s=e.modules.accessor[i]||e.modules.accessor.accessor||!1)&&"undefined"!=(o=e.getFieldValue(n))&&(a=e.getComponent(),r="function"==typeof s.params?s.params(o,n,t,a):s.params,e.setFieldValue(n,s.accessor(o,n,t,r,a)))}),n},m.prototype.accessors={},u.prototype.registerModule("accessor",m);var f=function(e){this.table=e,this.config=!1,this.url="",this.urlGenerator=!1,this.params=!1,this.loaderElement=this.createLoaderElement(),this.msgElement=this.createMsgElement(),this.loadingElement=!1,this.errorElement=!1,this.loaderPromise=!1,this.progressiveLoad=!1,this.loading=!1,this.requestOrder=0};f.prototype.initialize=function(){var e;this.loaderElement.appendChild(this.msgElement),this.table.options.ajaxLoaderLoading&&("string"==typeof this.table.options.ajaxLoaderLoading?(e=document.createElement("template"),e.innerHTML=this.table.options.ajaxLoaderLoading.trim(),this.loadingElement=e.content.firstChild):this.loadingElement=this.table.options.ajaxLoaderLoading),this.loaderPromise=this.table.options.ajaxRequestFunc||this.defaultLoaderPromise,this.urlGenerator=this.table.options.ajaxURLGenerator||this.defaultURLGenerator,this.table.options.ajaxLoaderError&&("string"==typeof this.table.options.ajaxLoaderError?(e=document.createElement("template"),e.innerHTML=this.table.options.ajaxLoaderError.trim(),this.errorElement=e.content.firstChild):this.errorElement=this.table.options.ajaxLoaderError),this.table.options.ajaxParams&&this.setParams(this.table.options.ajaxParams),this.table.options.ajaxConfig&&this.setConfig(this.table.options.ajaxConfig),this.table.options.ajaxURL&&this.setUrl(this.table.options.ajaxURL),this.table.options.ajaxProgressiveLoad&&(this.table.options.pagination?(this.progressiveLoad=!1,console.error("Progressive Load Error - Pagination and progressive load cannot be used at the same time")):this.table.modExists("page")?(this.progressiveLoad=this.table.options.ajaxProgressiveLoad,this.table.modules.page.initializeProgressive(this.progressiveLoad)):console.error("Pagination plugin is required for progressive ajax loading"))},f.prototype.createLoaderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-loader"),e},f.prototype.createMsgElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-loader-msg"),e.setAttribute("role","alert"),e},f.prototype.setParams=function(e,t){if(t){this.params=this.params||{};for(var o in e)this.params[o]=e[o]}else this.params=e},f.prototype.getParams=function(){return this.params||{}},f.prototype.setConfig=function(e){if(this._loadDefaultConfig(),"string"==typeof e)this.config.method=e;else for(var t in e)this.config[t]=e[t]},f.prototype._loadDefaultConfig=function(e){var t=this;if(!t.config||e){t.config={};for(var o in t.defaultConfig)t.config[o]=t.defaultConfig[o]}},f.prototype.setUrl=function(e){this.url=e},f.prototype.getUrl=function(){return this.url},f.prototype.loadData=function(e,t){return this.progressiveLoad?this._loadDataProgressive():this._loadDataStandard(e,t)},f.prototype.nextPage=function(e){var t;this.loading||(t=this.table.options.ajaxProgressiveLoadScrollMargin||2*this.table.rowManager.getElement().clientHeight,e<t&&this.table.modules.page.nextPage().then(function(){}).catch(function(){}))},f.prototype.blockActiveRequest=function(){this.requestOrder++},f.prototype._loadDataProgressive=function(){return this.table.rowManager.setData([]),this.table.modules.page.setPage(1)},f.prototype._loadDataStandard=function(e,t){var o=this;return new Promise(function(i,n){o.sendRequest(e).then(function(s){o.table.rowManager.setData(s,e,t).then(function(){i()}).catch(function(e){n(e)})}).catch(function(e){n(e)})})},f.prototype.generateParamsList=function(e,t){var o=this,i=[];if(t=t||"",Array.isArray(e))e.forEach(function(e,n){i=i.concat(o.generateParamsList(e,t?t+"["+n+"]":n))});else if("object"===(void 0===e?"undefined":_typeof(e)))for(var n in e)i=i.concat(o.generateParamsList(e[n],t?t+"["+n+"]":n));else i.push({key:t,value:e});return i},f.prototype.serializeParams=function(e){var t=this.generateParamsList(e),o=[];return t.forEach(function(e){o.push(encodeURIComponent(e.key)+"="+encodeURIComponent(e.value))}),o.join("&")},f.prototype.sendRequest=function(e){var t,o=this,i=this,n=i.url;return i.requestOrder++,t=i.requestOrder,i._loadDefaultConfig(),new Promise(function(s,r){!1!==i.table.options.ajaxRequesting.call(o.table,i.url,i.params)?(i.loading=!0,e||i.showLoader(),o.loaderPromise(n,i.config,i.params).then(function(e){t===i.requestOrder?(i.table.options.ajaxResponse&&(e=i.table.options.ajaxResponse.call(i.table,i.url,i.params,e)),s(e),i.hideLoader(),i.loading=!1):console.warn("Ajax Response Blocked - An active ajax request was blocked by an attempt to change table data while the request was being made")}).catch(function(e){console.error("Ajax Load Error: ",e),i.table.options.ajaxError.call(i.table,e),i.showError(),setTimeout(function(){i.hideLoader()},3e3),i.loading=!1,r()})):r()})},f.prototype.showLoader=function(){if("function"==typeof this.table.options.ajaxLoader?this.table.options.ajaxLoader():this.table.options.ajaxLoader){for(this.hideLoader();this.msgElement.firstChild;)this.msgElement.removeChild(this.msgElement.firstChild);this.msgElement.classList.remove("tabulator-error"),this.msgElement.classList.add("tabulator-loading"),this.loadingElement?this.msgElement.appendChild(this.loadingElement):this.msgElement.innerHTML=this.table.modules.localize.getText("ajax|loading"),this.table.element.appendChild(this.loaderElement)}},f.prototype.showError=function(){for(this.hideLoader();this.msgElement.firstChild;)this.msgElement.removeChild(this.msgElement.firstChild);this.msgElement.classList.remove("tabulator-loading"),this.msgElement.classList.add("tabulator-error"),this.errorElement?this.msgElement.appendChild(this.errorElement):this.msgElement.innerHTML=this.table.modules.localize.getText("ajax|error"),this.table.element.appendChild(this.loaderElement)},f.prototype.hideLoader=function(){this.loaderElement.parentNode&&this.loaderElement.parentNode.removeChild(this.loaderElement)},f.prototype.defaultConfig={method:"GET"},f.prototype.defaultURLGenerator=function(e,t,o){return e&&o&&Object.keys(o).length&&(t.method&&"get"!=t.method.toLowerCase()||(t.method="get",e+=(e.includes("?")?"&":"?")+this.serializeParams(o))),e},f.prototype.defaultLoaderPromise=function(e,t,o){var i,n=this;return new Promise(function(s,r){if(e=n.urlGenerator(e,t,o),"GET"!=t.method.toUpperCase())if(i="object"===_typeof(n.table.options.ajaxContentType)?n.table.options.ajaxContentType:n.contentTypeFormatters[n.table.options.ajaxContentType]){for(var a in i.headers)t.headers||(t.headers={}),void 0===t.headers[a]&&(t.headers[a]=i.headers[a]);t.body=i.body.call(n,e,t,o)}else console.warn("Ajax Error - Invalid ajaxContentType value:",n.table.options.ajaxContentType);e?(void 0===t.headers&&(t.headers={}),void 0===t.headers.Accept&&(t.headers.Accept="application/json"),void 0===t.headers["X-Requested-With"]&&(t.headers["X-Requested-With"]="XMLHttpRequest"),void 0===t.mode&&(t.mode="cors"),"cors"==t.mode?(void 0===t.headers["Access-Control-Allow-Origin"]&&(t.headers["Access-Control-Allow-Origin"]=window.location.origin),void 0===t.credentials&&(t.credentials="same-origin")):void 0===t.credentials&&(t.credentials="include"),fetch(e,t).then(function(e){e.ok?e.json().then(function(e){s(e)}).catch(function(e){r(e),console.warn("Ajax Load Error - Invalid JSON returned",e)}):(console.error("Ajax Load Error - Connection Error: "+e.status,e.statusText),r(e))}).catch(function(e){console.error("Ajax Load Error - Connection Error: ",e),r(e)})):(console.warn("Ajax Load Error - No URL Set"),s([]))})},f.prototype.contentTypeFormatters={json:{headers:{"Content-Type":"application/json"},body:function(e,t,o){return JSON.stringify(o)}},form:{headers:{},body:function(e,t,o){var i=this.generateParamsList(o),n=new FormData;return i.forEach(function(e){n.append(e.key,e.value)}),n}}},u.prototype.registerModule("ajax",f);var g=function(e){this.table=e,this.topCalcs=[],this.botCalcs=[],this.genColumn=!1,this.topElement=this.createElement(),this.botElement=this.createElement(),this.topRow=!1,this.botRow=!1,this.topInitialized=!1,this.botInitialized=!1,this.initialize()};g.prototype.createElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-calcs-holder"),e},g.prototype.initialize=function(){this.genColumn=new i({field:"value"},this)},g.prototype.registerColumnField=function(){},g.prototype.initializeColumn=function(e){var t=e.definition,o={topCalcParams:t.topCalcParams||{},botCalcParams:t.bottomCalcParams||{}};if(t.topCalc){switch(_typeof(t.topCalc)){case"string":this.calculations[t.topCalc]?o.topCalc=this.calculations[t.topCalc]:console.warn("Column Calc Error - No such calculation found, ignoring: ",t.topCalc);break;case"function":o.topCalc=t.topCalc}o.topCalc&&(e.modules.columnCalcs=o,this.topCalcs.push(e),"group"!=this.table.options.columnCalcs&&this.initializeTopRow())}if(t.bottomCalc){switch(_typeof(t.bottomCalc)){case"string":this.calculations[t.bottomCalc]?o.botCalc=this.calculations[t.bottomCalc]:console.warn("Column Calc Error - No such calculation found, ignoring: ",t.bottomCalc);break;case"function":o.botCalc=t.bottomCalc}o.botCalc&&(e.modules.columnCalcs=o,this.botCalcs.push(e),"group"!=this.table.options.columnCalcs&&this.initializeBottomRow())}},g.prototype.removeCalcs=function(){var e=!1;this.topInitialized&&(this.topInitialized=!1,this.topElement.parentNode.removeChild(this.topElement),e=!0),this.botInitialized&&(this.botInitialized=!1,this.table.footerManager.remove(this.botElement),e=!0),e&&this.table.rowManager.adjustTableSize()},g.prototype.initializeTopRow=function(){this.topInitialized||(this.table.columnManager.getElement().insertBefore(this.topElement,this.table.columnManager.headersElement.nextSibling),this.topInitialized=!0)},g.prototype.initializeBottomRow=function(){this.botInitialized||(this.table.footerManager.prepend(this.botElement),this.botInitialized=!0)},g.prototype.scrollHorizontal=function(e){this.table.columnManager.getElement().scrollWidth,this.table.element.clientWidth;this.botInitialized&&(this.botRow.getElement().style.marginLeft=-e+"px")},g.prototype.recalc=function(e){var t;if(this.topInitialized||this.botInitialized){if(this.rowsToData(e),this.topInitialized){for(this.topRow&&this.topRow.deleteCells(),t=this.generateRow("top",this.rowsToData(e)),this.topRow=t;this.topElement.firstChild;)this.topElement.removeChild(this.topElement.firstChild);this.topElement.appendChild(t.getElement()),t.initialize(!0)}if(this.botInitialized){for(this.botRow&&this.botRow.deleteCells(),t=this.generateRow("bottom",this.rowsToData(e)),this.botRow=t;this.botElement.firstChild;)this.botElement.removeChild(this.botElement.firstChild);this.botElement.appendChild(t.getElement()),t.initialize(!0)}this.table.rowManager.adjustTableSize(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout()}},g.prototype.recalcRowGroup=function(e){this.recalcGroup(this.table.modules.groupRows.getRowGroup(e))},g.prototype.recalcAll=function(){var e=this;if((this.topCalcs.length||this.botCalcs.length)&&("group"!==this.table.options.columnCalcs&&this.recalc(this.table.rowManager.activeRows),this.table.options.groupBy&&"table"!==this.table.options.columnCalcs)){table.modules.groupRows.getChildGroups().forEach(function(t){e.recalcGroup(t)})}},g.prototype.recalcGroup=function(e){var t,o;e&&e.calcs&&(e.calcs.bottom&&(t=this.rowsToData(e.rows),o=this.generateRowData("bottom",t),e.calcs.bottom.updateData(o),e.calcs.bottom.reinitialize()),e.calcs.top&&(t=this.rowsToData(e.rows),o=this.generateRowData("top",t),e.calcs.top.updateData(o),e.calcs.top.reinitialize()))},g.prototype.generateTopRow=function(e){return this.generateRow("top",this.rowsToData(e))},g.prototype.generateBottomRow=function(e){return this.generateRow("bottom",this.rowsToData(e))},g.prototype.rowsToData=function(e){var t=this,o=[];return e.forEach(function(e){if(o.push(e.getData()),t.table.options.dataTree&&t.table.options.dataTreeChildColumnCalcs&&e.modules.dataTree.open){var i=t.rowsToData(t.table.modules.dataTree.getFilteredTreeChildren(e));o=o.concat(i)}}),o},g.prototype.generateRow=function(e,t){var o,i=this,n=this.generateRowData(e,t);return i.table.modExists("mutator")&&i.table.modules.mutator.disable(),o=new r(n,this,"calc"),i.table.modExists("mutator")&&i.table.modules.mutator.enable(),o.getElement().classList.add("tabulator-calcs","tabulator-calcs-"+e),o.generateCells=function(){var t=[];i.table.columnManager.columnsByIndex.forEach(function(n){i.genColumn.setField(n.getField()),i.genColumn.hozAlign=n.hozAlign,n.definition[e+"CalcFormatter"]&&i.table.modExists("format")?i.genColumn.modules.format={formatter:i.table.modules.format.getFormatter(n.definition[e+"CalcFormatter"]),params:n.definition[e+"CalcFormatterParams"]}:i.genColumn.modules.format={formatter:i.table.modules.format.getFormatter("plaintext"),params:{}},i.genColumn.definition.cssClass=n.definition.cssClass;var s=new l(i.genColumn,o);s.column=n,s.setWidth(),n.cells.push(s),t.push(s),n.visible||s.hide()}),this.cells=t},o},g.prototype.generateRowData=function(e,t){var o,i,n={},s="top"==e?this.topCalcs:this.botCalcs,r="top"==e?"topCalc":"botCalc";return s.forEach(function(e){var s=[];e.modules.columnCalcs&&e.modules.columnCalcs[r]&&(t.forEach(function(t){s.push(e.getFieldValue(t))}),i=r+"Params",o="function"==typeof e.modules.columnCalcs[i]?e.modules.columnCalcs[i](s,t):e.modules.columnCalcs[i],e.setFieldValue(n,e.modules.columnCalcs[r](s,t,o)))}),n},g.prototype.hasTopCalcs=function(){return!!this.topCalcs.length},g.prototype.hasBottomCalcs=function(){return!!this.botCalcs.length},g.prototype.redraw=function(){this.topRow&&this.topRow.normalizeHeight(!0),this.botRow&&this.botRow.normalizeHeight(!0)},g.prototype.getResults=function(){var e,t=this,o={};return this.table.options.groupBy&&this.table.modExists("groupRows")?(e=this.table.modules.groupRows.getGroups(!0),e.forEach(function(e){o[e.getKey()]=t.getGroupResults(e)})):o={top:this.topRow?this.topRow.getData():{},bottom:this.botRow?this.botRow.getData():{}},o},g.prototype.getGroupResults=function(e){var t=this,o=e._getSelf(),i=e.getSubGroups(),n={};return i.forEach(function(e){n[e.getKey()]=t.getGroupResults(e)}),{top:o.calcs.top?o.calcs.top.getData():{},bottom:o.calcs.bottom?o.calcs.bottom.getData():{},groups:n}},g.prototype.calculations={avg:function(e,t,o){var i=0,n=void 0!==o.precision?o.precision:2;return e.length&&(i=e.reduce(function(e,t){return t=Number(t),e+t}),i/=e.length,i=!1!==n?i.toFixed(n):i),parseFloat(i).toString()},max:function(e,t,o){var i=null,n=void 0!==o.precision&&o.precision;return e.forEach(function(e){((e=Number(e))>i||null===i)&&(i=e)}),null!==i?!1!==n?i.toFixed(n):i:""},min:function(e,t,o){var i=null,n=void 0!==o.precision&&o.precision;return e.forEach(function(e){((e=Number(e))<i||null===i)&&(i=e)}),null!==i?!1!==n?i.toFixed(n):i:""},sum:function(e,t,o){var i=0,n=void 0!==o.precision&&o.precision;return e.length&&e.forEach(function(e){e=Number(e),i+=isNaN(e)?0:Number(e)}),!1!==n?i.toFixed(n):i},concat:function(e,t,o){var i=0;return e.length&&(i=e.reduce(function(e,t){return String(e)+String(t)})),i},count:function(e,t,o){var i=0;return e.length&&e.forEach(function(e){e&&i++}),i}},u.prototype.registerModule("columnCalcs",g);var b=function(e){this.table=e,this.mode=!0,this.pasteParser=function(){},this.pasteAction=function(){},this.customSelection=!1,this.rowRange=!1,this.blocked=!0};b.prototype.initialize=function(){var e=this;this.mode=this.table.options.clipboard,this.rowRange=this.table.options.clipboardCopyRowRange,!0!==this.mode&&"copy"!==this.mode||this.table.element.addEventListener("copy",function(t){var o,i;e.blocked||(t.preventDefault(),e.customSelection?(o=e.customSelection,e.table.options.clipboardCopyFormatter&&(o=e.table.options.clipboardCopyFormatter("plain",o))):(i=e.table.modules.export.getHtml(e.rowRange,e.table.options.clipboardCopyStyled,e.table.options.clipboardCopyConfig,"clipboard"),o=i?e.generatePlainContent(i):"",e.table.options.clipboardCopyFormatter&&(o=e.table.options.clipboardCopyFormatter("plain",o),i=e.table.options.clipboardCopyFormatter("html",i))),window.clipboardData&&window.clipboardData.setData?window.clipboardData.setData("Text",o):t.clipboardData&&t.clipboardData.setData?(t.clipboardData.setData("text/plain",o),i&&t.clipboardData.setData("text/html",i)):t.originalEvent&&t.originalEvent.clipboardData.setData&&(t.originalEvent.clipboardData.setData("text/plain",o),i&&t.originalEvent.clipboardData.setData("text/html",i)),e.table.options.clipboardCopied.call(e.table,o,i),e.reset())}),!0!==this.mode&&"paste"!==this.mode||this.table.element.addEventListener("paste",function(t){e.paste(t)}),this.setPasteParser(this.table.options.clipboardPasteParser),this.setPasteAction(this.table.options.clipboardPasteAction)},b.prototype.reset=function(){this.blocked=!1,this.originalSelectionText=""},b.prototype.generatePlainContent=function(e){var t=[],o=document.createElement("div");o.innerHTML=e;var i=o.getElementsByTagName("table")[0];return Array.prototype.slice.call(i.getElementsByTagName("tr")).forEach(function(e){var o=[],i=Array.prototype.slice.call(e.getElementsByTagName("th")),n=Array.prototype.slice.call(e.getElementsByTagName("td"));n=n.concat(i),n.forEach(function(e){var t=e.innerHTML;t="&nbsp;"==t?"":t,o.push(t)}),t.push(o.join("\t"))}),t.join("\n")},b.prototype.copy=function(e,t){var e,o,i;this.blocked=!1,this.customSelection=!1,!0!==this.mode&&"copy"!==this.mode||(this.rowRange=e||this.table.options.clipboardCopyRowRange,void 0!==window.getSelection&&void 0!==document.createRange?(e=document.createRange(),e.selectNodeContents(this.table.element),o=window.getSelection(),o.toString()&&t&&(this.customSelection=o.toString()),o.removeAllRanges(),o.addRange(e)):void 0!==document.selection&&void 0!==document.body.createTextRange&&(i=document.body.createTextRange(),i.moveToElementText(this.table.element),i.select()),document.execCommand("copy"),o&&o.removeAllRanges())},b.prototype.setPasteAction=function(e){switch(void 0===e?"undefined":_typeof(e)){case"string":this.pasteAction=this.pasteActions[e],this.pasteAction||console.warn("Clipboard Error - No such paste action found:",e);break;case"function":this.pasteAction=e}},b.prototype.setPasteParser=function(e){switch(void 0===e?"undefined":_typeof(e)){case"string":this.pasteParser=this.pasteParsers[e],this.pasteParser||console.warn("Clipboard Error - No such paste parser found:",e);break;case"function":this.pasteParser=e}},b.prototype.paste=function(e){var t,o,i;this.checkPaseOrigin(e)&&(t=this.getPasteData(e),o=this.pasteParser.call(this,t),o?(e.preventDefault(),this.table.modExists("mutator")&&(o=this.mutateData(o)),i=this.pasteAction.call(this,o),this.table.options.clipboardPasted.call(this.table,t,o,i)):this.table.options.clipboardPasteError.call(this.table,t))},b.prototype.mutateData=function(e){var t=this,o=[];return Array.isArray(e)?e.forEach(function(e){o.push(t.table.modules.mutator.transformRow(e,"clipboard"))}):o=e,o},b.prototype.checkPaseOrigin=function(e){var t=!0;return("DIV"!=e.target.tagName||this.table.modules.edit.currentCell)&&(t=!1),t},b.prototype.getPasteData=function(e){var t;return window.clipboardData&&window.clipboardData.getData?t=window.clipboardData.getData("Text"):e.clipboardData&&e.clipboardData.getData?t=e.clipboardData.getData("text/plain"):e.originalEvent&&e.originalEvent.clipboardData.getData&&(t=e.originalEvent.clipboardData.getData("text/plain")),t},b.prototype.pasteParsers={table:function(e){var t=[],o=!0,i=this.table.columnManager.columns,n=[],s=[];return e=e.split("\n"),e.forEach(function(e){t.push(e.split("\t"))}),!(!t.length||1===t.length&&t[0].length<2)&&(!0,t[0].forEach(function(e){var t=i.find(function(t){return e&&t.definition.title&&e.trim()&&t.definition.title.trim()===e.trim()});t?n.push(t):o=!1}),o||(o=!0,n=[],t[0].forEach(function(e){var t=i.find(function(t){return e&&t.field&&e.trim()&&t.field.trim()===e.trim()});t?n.push(t):o=!1}),o||(n=this.table.columnManager.columnsByIndex)),o&&t.shift(),t.forEach(function(e){var t={};e.forEach(function(e,o){n[o]&&(t[n[o].field]=e)}),s.push(t)}),s)}},b.prototype.pasteActions={replace:function(e){return this.table.setData(e)},update:function(e){return this.table.updateOrAddData(e)},insert:function(e){return this.table.addData(e)}},u.prototype.registerModule("clipboard",b);var v=function(e){this.table=e,this.indent=10,this.field="",this.collapseEl=null,this.expandEl=null,this.branchEl=null,this.elementField=!1,this.startOpen=function(){},this.displayIndex=0};v.prototype.initialize=function(){var e=null,t=this.table.columnManager.getFirstVisibileColumn(),o=this.table.options;switch(this.field=o.dataTreeChildField,this.indent=o.dataTreeChildIndent,this.elementField=o.dataTreeElementColumn||!!t&&t.field,o.dataTreeBranchElement&&(!0===o.dataTreeBranchElement?(this.branchEl=document.createElement("div"),this.branchEl.classList.add("tabulator-data-tree-branch")):"string"==typeof o.dataTreeBranchElement?(e=document.createElement("div"),e.innerHTML=o.dataTreeBranchElement,this.branchEl=e.firstChild):this.branchEl=o.dataTreeBranchElement),o.dataTreeCollapseElement?"string"==typeof o.dataTreeCollapseElement?(e=document.createElement("div"),e.innerHTML=o.dataTreeCollapseElement,this.collapseEl=e.firstChild):this.collapseEl=o.dataTreeCollapseElement:(this.collapseEl=document.createElement("div"),this.collapseEl.classList.add("tabulator-data-tree-control"),this.collapseEl.tabIndex=0,this.collapseEl.innerHTML="<div class='tabulator-data-tree-control-collapse'></div>"),o.dataTreeExpandElement?"string"==typeof o.dataTreeExpandElement?(e=document.createElement("div"),e.innerHTML=o.dataTreeExpandElement,this.expandEl=e.firstChild):this.expandEl=o.dataTreeExpandElement:(this.expandEl=document.createElement("div"),this.expandEl.classList.add("tabulator-data-tree-control"),this.expandEl.tabIndex=0,this.expandEl.innerHTML="<div class='tabulator-data-tree-control-expand'></div>"),_typeof(o.dataTreeStartExpanded)){case"boolean":this.startOpen=function(e,t){return o.dataTreeStartExpanded};break;case"function":this.startOpen=o.dataTreeStartExpanded;break;default:this.startOpen=function(e,t){return o.dataTreeStartExpanded[t]}}},v.prototype.initializeRow=function(e){var t=e.getData()[this.field],o=Array.isArray(t),i=o||!o&&"object"===(void 0===t?"undefined":_typeof(t))&&null!==t;!i&&e.modules.dataTree&&e.modules.dataTree.branchEl&&e.modules.dataTree.branchEl.parentNode.removeChild(e.modules.dataTree.branchEl),!i&&e.modules.dataTree&&e.modules.dataTree.controlEl&&e.modules.dataTree.controlEl.parentNode.removeChild(e.modules.dataTree.controlEl),e.modules.dataTree={index:e.modules.dataTree?e.modules.dataTree.index:0,open:!!i&&(e.modules.dataTree?e.modules.dataTree.open:this.startOpen(e.getComponent(),0)),controlEl:!(!e.modules.dataTree||!i)&&e.modules.dataTree.controlEl,branchEl:!(!e.modules.dataTree||!i)&&e.modules.dataTree.branchEl,parent:!!e.modules.dataTree&&e.modules.dataTree.parent,children:i}},v.prototype.layoutRow=function(e){var t=this.elementField?e.getCell(this.elementField):e.getCells()[0],o=t.getElement(),i=e.modules.dataTree;i.branchEl&&(i.branchEl.parentNode&&i.branchEl.parentNode.removeChild(i.branchEl),i.branchEl=!1),i.controlEl&&(i.controlEl.parentNode&&i.controlEl.parentNode.removeChild(i.controlEl),i.controlEl=!1),this.generateControlElement(e,o),e.element.classList.add("tabulator-tree-level-"+i.index),i.index&&(this.branchEl?(i.branchEl=this.branchEl.cloneNode(!0),o.insertBefore(i.branchEl,o.firstChild),i.branchEl.style.marginLeft=(i.branchEl.offsetWidth+i.branchEl.style.marginRight)*(i.index-1)+i.index*this.indent+"px"):o.style.paddingLeft=parseInt(window.getComputedStyle(o,null).getPropertyValue("padding-left"))+i.index*this.indent+"px")},v.prototype.generateControlElement=function(e,t){var o=this,i=e.modules.dataTree,t=t||e.getCells()[0].getElement(),n=i.controlEl;!1!==i.children&&(i.open?(i.controlEl=this.collapseEl.cloneNode(!0),i.controlEl.addEventListener("click",function(t){t.stopPropagation(),o.collapseRow(e)})):(i.controlEl=this.expandEl.cloneNode(!0),i.controlEl.addEventListener("click",function(t){t.stopPropagation(),o.expandRow(e)})),i.controlEl.addEventListener("mousedown",function(e){e.stopPropagation()}),n&&n.parentNode===t?n.parentNode.replaceChild(i.controlEl,n):t.insertBefore(i.controlEl,t.firstChild))},v.prototype.setDisplayIndex=function(e){this.displayIndex=e},v.prototype.getDisplayIndex=function(){return this.displayIndex},v.prototype.getRows=function(e){var t=this,o=[];return e.forEach(function(e,i){var n,s;o.push(e),e instanceof r&&(n=e.modules.dataTree.children,n.index||!1===n.children||(s=t.getChildren(e),s.forEach(function(e){o.push(e)})))}),o},v.prototype.getChildren=function(e){var t=this,o=e.modules.dataTree,i=[],n=[];return!1!==o.children&&o.open&&(Array.isArray(o.children)||(o.children=this.generateChildren(e)),i=this.table.modExists("filter")?this.table.modules.filter.filter(o.children):o.children,this.table.modExists("sort")&&this.table.modules.sort.sort(i),i.forEach(function(e){n.push(e),t.getChildren(e).forEach(function(e){n.push(e)})})),n},v.prototype.generateChildren=function(e){var t=this,o=[],i=e.getData()[this.field];return Array.isArray(i)||(i=[i]),i.forEach(function(i){var n=new r(i||{},t.table.rowManager);n.modules.dataTree.index=e.modules.dataTree.index+1,n.modules.dataTree.parent=e,n.modules.dataTree.children&&(n.modules.dataTree.open=t.startOpen(n.getComponent(),n.modules.dataTree.index)),o.push(n)}),o},v.prototype.expandRow=function(e,t){var o=e.modules.dataTree;!1!==o.children&&(o.open=!0,e.reinitialize(),this.table.rowManager.refreshActiveData("tree",!1,!0),this.table.options.dataTreeRowExpanded(e.getComponent(),e.modules.dataTree.index))},v.prototype.collapseRow=function(e){var t=e.modules.dataTree;!1!==t.children&&(t.open=!1,e.reinitialize(),this.table.rowManager.refreshActiveData("tree",!1,!0),this.table.options.dataTreeRowCollapsed(e.getComponent(),e.modules.dataTree.index))},v.prototype.toggleRow=function(e){var t=e.modules.dataTree;!1!==t.children&&(t.open?this.collapseRow(e):this.expandRow(e))},v.prototype.getTreeParent=function(e){return!!e.modules.dataTree.parent&&e.modules.dataTree.parent.getComponent()},v.prototype.getFilteredTreeChildren=function(e){var t,o=e.modules.dataTree,i=[];return o.children&&(Array.isArray(o.children)||(o.children=this.generateChildren(e)),t=this.table.modExists("filter")?this.table.modules.filter.filter(o.children):o.children,t.forEach(function(e){e instanceof r&&i.push(e)})),i},v.prototype.getTreeChildren=function(e){var t=e.modules.dataTree,o=[];return t.children&&(Array.isArray(t.children)||(t.children=this.generateChildren(e)),t.children.forEach(function(e){e instanceof r&&o.push(e.getComponent())})),o},v.prototype.checkForRestyle=function(e){e.row.cells.indexOf(e)||e.row.reinitialize()},v.prototype.getChildField=function(){return this.field},v.prototype.redrawNeeded=function(e){return!!this.field&&void 0!==e[this.field]||!!this.elementField&&void 0!==e[this.elementField]},u.prototype.registerModule("dataTree",v);var y=function(e){this.table=e,this.fields={},this.columnsByIndex=[],this.columnsByField={},this.config={},this.active=!1};y.prototype.download=function(e,t,o,i,n){function s(o,i){n?!0===n?r.triggerDownload(o,i,e,t,!0):n(o):r.triggerDownload(o,i,e,t)}var r=this,a=!1;this.processConfig(),this.active=i,"function"==typeof e?a=e:r.downloaders[e]?a=r.downloaders[e]:console.warn("Download Error - No such download type found: ",e),this.processColumns(),a&&a.call(this,r.processDefinitions(),r.processData(i||"active"),o||{},s,this.config)},y.prototype.processConfig=function(){var e={columnGroups:!0,rowGroups:!0,columnCalcs:!0,dataTree:!0};if(this.table.options.downloadConfig)for(var t in this.table.options.downloadConfig)e[t]=this.table.options.downloadConfig[t];this.config.rowGroups=e.rowGroups&&this.table.options.groupBy&&this.table.modExists("groupRows"),e.columnGroups&&this.table.columnManager.columns.length!=this.table.columnManager.columnsByIndex.length&&(this.config.columnGroups=!0),e.columnCalcs&&this.table.modExists("columnCalcs")&&(this.config.columnCalcs=!0),e.dataTree&&this.table.options.dataTree&&this.table.modExists("dataTree")&&(this.config.dataTree=!0)},y.prototype.processColumns=function(){var e=this;e.columnsByIndex=[],e.columnsByField={},e.table.columnManager.columnsByIndex.forEach(function(t){t.field&&!1!==t.definition.download&&(t.visible||!t.visible&&t.definition.download)&&(e.columnsByIndex.push(t),e.columnsByField[t.field]=t)})},y.prototype.processDefinitions=function(){var e=this,t=[];return this.config.columnGroups?e.table.columnManager.columns.forEach(function(o){var i=e.processColumnGroup(o);i&&t.push(i)}):e.columnsByIndex.forEach(function(o){!1!==o.download&&t.push(e.processDefinition(o))}),t},y.prototype.processColumnGroup=function(e){var t=this,o=e.columns,i=0,n=this.processDefinition(e),s={type:"group",title:n.title,depth:1};if(o.length){if(s.subGroups=[],s.width=0,o.forEach(function(e){var o=t.processColumnGroup(e);o.depth>i&&(i=o.depth),o&&(s.width+=o.width,s.subGroups.push(o))}),s.depth+=i,!s.width)return!1}else{if(!e.field||!1===e.definition.download||!(e.visible||!e.visible&&e.definition.download))return!1;s.width=1,s.definition=n}return s},y.prototype.processDefinition=function(e){var t={};for(var o in e.definition)t[o]=e.definition[o];return void 0!==e.definition.downloadTitle&&(t.title=e.definition.downloadTitle),t},y.prototype.processData=function(e){var t=this,o=this,i=[],n=[],s=!1,r={};return this.config.rowGroups?("visible"==e?(s=o.table.rowManager.getRows(e),s.forEach(function(e){
-if("row"==e.type){var t=e.getGroup();-1===n.indexOf(t)&&n.push(t)}})):n=this.table.modules.groupRows.getGroups(),n.forEach(function(e){i.push(t.processGroupData(e,s))})):(this.config.dataTree&&(e=e="display"),i=o.table.rowManager.getData(e,"download")),this.config.columnCalcs&&(r=this.table.getCalcResults(),i={calcs:r,data:i}),"function"==typeof o.table.options.downloadDataFormatter&&(i=o.table.options.downloadDataFormatter(i)),i},y.prototype.processGroupData=function(e,t){var o=this,i=e.getSubGroups(),n={type:"group",key:e.key};return i.length?(n.subGroups=[],i.forEach(function(e){n.subGroups.push(o.processGroupData(e,t))})):t?(n.rows=[],e.rows.forEach(function(e){t.indexOf(e)>-1&&n.rows.push(e.getData("download"))})):n.rows=e.getData(!0,"download"),n},y.prototype.triggerDownload=function(e,t,o,i,n){var s=document.createElement("a"),r=new Blob([e],{type:t}),i=i||"Tabulator."+("function"==typeof o?"txt":o);(r=this.table.options.downloadReady.call(this.table,e,r))&&(n?window.open(window.URL.createObjectURL(r)):navigator.msSaveOrOpenBlob?navigator.msSaveOrOpenBlob(r,i):(s.setAttribute("href",window.URL.createObjectURL(r)),s.setAttribute("download",i),s.style.display="none",document.body.appendChild(s),s.click(),document.body.removeChild(s)),this.table.options.downloadComplete&&this.table.options.downloadComplete())},y.prototype.getFieldValue=function(e,t){var o=this.columnsByField[e];return!!o&&o.getFieldValue(t)},y.prototype.commsReceived=function(e,t,o){switch(t){case"intercept":this.download(o.type,"",o.options,o.active,o.intercept)}},y.prototype.downloaders={csv:function(e,t,o,i,n){function s(e,t){e.subGroups?e.subGroups.forEach(function(e){s(e,t+1)}):(d.push('"'+String(e.title).split('"').join('""')+'"'),h.push(e.definition.field))}function r(e){e.forEach(function(e){var t=[];h.forEach(function(o){var i=u.getFieldValue(o,e);switch(void 0===i?"undefined":_typeof(i)){case"object":i=JSON.stringify(i);break;case"undefined":case"null":i="";break;default:i=i}t.push('"'+String(i).split('"').join('""')+'"')}),l.push(t.join(p))})}function a(e){e.subGroups?e.subGroups.forEach(function(e){a(e)}):r(e.rows)}var l,c,u=this,d=[],h=[],p=o&&o.delimiter?o.delimiter:",";n.columnGroups?(console.warn("Download Warning - CSV downloader cannot process column groups"),e.forEach(function(e){s(e,0)})):function(){e.forEach(function(e){d.push('"'+String(e.title).split('"').join('""')+'"'),h.push(e.field)})}(),l=[d.join(p)],n.columnCalcs&&(console.warn("Download Warning - CSV downloader cannot process column calculations"),t=t.data),n.rowGroups?(console.warn("Download Warning - CSV downloader cannot process row groups"),t.forEach(function(e){a(e)})):r(t),c=l.join("\n"),o.bom&&(c="\ufeff"+c),i(c,"text/csv")},json:function(e,t,o,i,n){var s;n.columnCalcs&&(console.warn("Download Warning - CSV downloader cannot process column calculations"),t=t.data),s=JSON.stringify(t,null,"\t"),i(s,"application/json")},pdf:function(e,t,o,i,n){function s(e,t){var o=e.width,i=1,n={content:e.title||""};if(e.subGroups?(e.subGroups.forEach(function(e){s(e,t+1)}),i=1):(h.push(e.definition.field),i=g-t),n.rowSpan=i,p[t].push(n),o--,i>1)for(var r=t+1;r<g;r++)p[r].push("");for(var r=0;r<o;r++)p[t].push("")}function r(e){switch(void 0===e?"undefined":_typeof(e)){case"object":e=JSON.stringify(e);break;case"undefined":case"null":e="";break;default:e=e}return e}function a(e){e.forEach(function(e){m.push(l(e))})}function l(e,t){var o=[];return h.forEach(function(i){var n=d.getFieldValue(i,e);n=r(n),t?o.push({content:n,styles:t}):o.push(n)}),o}function c(e,t){var o=[];o.push({content:r(e.key),colSpan:h.length,styles:v}),m.push(o),e.subGroups?e.subGroups.forEach(function(o){c(o,t[e.key]?t[e.key].groups||{}:{})}):(n.columnCalcs&&u(t,e.key,"top"),a(e.rows),n.columnCalcs&&u(t,e.key,"bottom"))}function u(e,t,o){var i=e[t];i&&(o&&(i=i[o]),Object.keys(i).length&&m.push(l(i,y)))}var d=this,h=[],p=[],m=[],f={},g=1,b={},v=o.rowGroupStyles||{fontStyle:"bold",fontSize:12,cellPadding:6,fillColor:220},y=o.rowCalcStyles||{fontStyle:"bold",fontSize:10,cellPadding:4,fillColor:232},w=o.jsPDF||{},E=o&&o.title?o.title:"";if(n.columnCalcs&&(f=t.calcs,t=t.data),w.orientation||(w.orientation=o.orientation||"landscape"),w.unit||(w.unit="pt"),n.columnGroups){e.forEach(function(e){e.depth>g&&(g=e.depth)});for(var C=0;C<g;C++)p.push([]);e.forEach(function(e){s(e,0)})}else!function(){e.forEach(function(e){e.field&&(p.push(e.title||""),h.push(e.field))}),p=[p]}();n.rowGroups?t.forEach(function(e){c(e,f)}):(n.columnCalcs&&u(f,"top"),a(t),n.columnCalcs&&u(f,"bottom"));var x=new jsPDF(w);o&&o.autoTable&&(b="function"==typeof o.autoTable?o.autoTable(x)||{}:o.autoTable),E&&(b.addPageContent=function(e){x.text(E,40,30)}),b.head=p,b.body=m,x.autoTable(b),o&&o.documentProcessing&&o.documentProcessing(x),i(x.output("arraybuffer"),"application/pdf")},xlsx:function(e,t,o,i,n){function s(){function o(e,t){void 0===f[t]&&(f[t]=[]),void 0===h[t]&&(h[t]=[]),e.width>1&&h[t].push({type:"hoz",start:f[t].length,end:f[t].length+e.width-1}),f[t].push(e.title),e.subGroups?e.subGroups.forEach(function(e){o(e,t+1)}):(g.push(e.definition.field),i(g.length),h[t].push({type:"vert",start:g.length-1}))}function i(){var e=0;f.forEach(function(t){var o=t.length;o>e&&(e=o)}),f.forEach(function(t){var o=t.length;if(o<e)for(var i=o;i<e;i++)t.push("")})}function s(){var e=[];return d.forEach(function(t){e.push({s:{r:t,c:0},e:{r:t,c:g.length-1}})}),h.forEach(function(t,o){t.forEach(function(t){"hoz"===t.type?e.push({s:{r:o,c:t.start},e:{r:o,c:t.end}}):o!=f.length-1&&e.push({s:{r:o,c:t.start},e:{r:f.length-1,c:t.start}})})}),e}function r(e){e.forEach(function(e){b.push(l(e))})}function l(e){var t=[];return g.forEach(function(o){var i=a.getFieldValue(o,e);t.push(i instanceof Date||"object"!==(void 0===i?"undefined":_typeof(i))?i:JSON.stringify(i))}),t}function c(e,t,o){var i=e[t];i&&(o&&(i=i[o]),Object.keys(i).length&&(p.push(b.length),b.push(l(i))))}function m(e,t){var o=[];o.push(e.key),d.push(b.length),b.push(o),e.subGroups?e.subGroups.forEach(function(o){m(o,t[e.key]?t[e.key].groups||{}:{})}):(n.columnCalcs&&c(t,e.key,"top"),r(e.rows),n.columnCalcs&&c(t,e.key,"bottom"))}var f=[],g=[],b=[];return n.columnGroups?(e.forEach(function(e){o(e,0)}),f.forEach(function(e){b.push(e)})):function(){e.forEach(function(e){f.push(e.title),g.push(e.field)}),b.push(f)}(),n.rowGroups?t.forEach(function(e){m(e,u)}):(n.columnCalcs&&c(u,"top"),r(t),n.columnCalcs&&c(u,"bottom")),function(){var e={},t={s:{c:0,r:0},e:{c:g.length,r:b.length}};XLSX.utils.sheet_add_aoa(e,b),e["!ref"]=XLSX.utils.encode_range(t);var o=s();return o.length&&(e["!merges"]=o),e}()}var r,a=this,l=o.sheetName||"Sheet1",c=XLSX.utils.book_new(),u={},d=[],h=[],p=[];if(c.SheetNames=[],c.Sheets={},n.columnCalcs&&(u=t.calcs,t=t.data),o.sheetOnly)return void i(s());if(o.sheets)for(var m in o.sheets)!0===o.sheets[m]?(c.SheetNames.push(m),c.Sheets[m]=s()):(c.SheetNames.push(m),this.table.modules.comms.send(o.sheets[m],"download","intercept",{type:"xlsx",options:{sheetOnly:!0},active:a.active,intercept:function(e){c.Sheets[m]=e}}));else c.SheetNames.push(l),c.Sheets[l]=s();o.documentProcessing&&(c=o.documentProcessing(c)),r=XLSX.write(c,{bookType:"xlsx",bookSST:!0,type:"binary"}),i(function(e){for(var t=new ArrayBuffer(e.length),o=new Uint8Array(t),i=0;i!=e.length;++i)o[i]=255&e.charCodeAt(i);return t}(r),"application/octet-stream")},html:function(e,t,o,i,n){this.table.modExists("export",!0)&&i(this.table.modules.export.getHtml(!0,o.style,n),"text/html")}},u.prototype.registerModule("download",y);var w=function(e){this.table=e,this.currentCell=!1,this.mouseClick=!1,this.recursionBlock=!1,this.invalidEdit=!1};w.prototype.initializeColumn=function(e){var t=this,o={editor:!1,blocked:!1,check:e.definition.editable,params:e.definition.editorParams||{}};switch(_typeof(e.definition.editor)){case"string":"tick"===e.definition.editor&&(e.definition.editor="tickCross",console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor")),t.editors[e.definition.editor]?o.editor=t.editors[e.definition.editor]:console.warn("Editor Error - No such editor found: ",e.definition.editor);break;case"function":o.editor=e.definition.editor;break;case"boolean":!0===e.definition.editor&&("function"!=typeof e.definition.formatter?("tick"===e.definition.formatter&&(e.definition.formatter="tickCross",console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor")),t.editors[e.definition.formatter]?o.editor=t.editors[e.definition.formatter]:o.editor=t.editors.input):console.warn("Editor Error - Cannot auto lookup editor for a custom formatter: ",e.definition.formatter))}o.editor&&(e.modules.edit=o)},w.prototype.getCurrentCell=function(){return!!this.currentCell&&this.currentCell.getComponent()},w.prototype.clearEditor=function(){var e,t=this.currentCell;if(this.invalidEdit=!1,t){for(this.currentCell=!1,e=t.getElement(),e.classList.remove("tabulator-validation-fail"),e.classList.remove("tabulator-editing");e.firstChild;)e.removeChild(e.firstChild);t.row.getElement().classList.remove("tabulator-row-editing")}},w.prototype.cancelEdit=function(){if(this.currentCell){var e=this.currentCell,t=this.currentCell.getComponent();this.clearEditor(),e.setValueActual(e.getValue()),e.cellRendered(),e.column.cellEvents.cellEditCancelled&&e.column.cellEvents.cellEditCancelled.call(this.table,t),this.table.options.cellEditCancelled.call(this.table,t)}},w.prototype.bindEditor=function(e){var t=this,o=e.getElement();o.setAttribute("tabindex",0),o.addEventListener("click",function(e){o.classList.contains("tabulator-editing")||o.focus({preventScroll:!0})}),o.addEventListener("mousedown",function(e){t.mouseClick=!0}),o.addEventListener("focus",function(o){t.recursionBlock||t.edit(e,o,!1)})},w.prototype.focusCellNoEvent=function(e,t){this.recursionBlock=!0,t&&"ie"===this.table.browser||e.getElement().focus({preventScroll:!0}),this.recursionBlock=!1},w.prototype.editCell=function(e,t){this.focusCellNoEvent(e),this.edit(e,!1,t)},w.prototype.focusScrollAdjust=function(e){if("virtual"==this.table.rowManager.getRenderMode()){var t=this.table.rowManager.element.scrollTop,o=this.table.rowManager.element.clientHeight+this.table.rowManager.element.scrollTop,i=e.row.getElement();i.offsetTop;i.offsetTop<t?this.table.rowManager.element.scrollTop-=t-i.offsetTop:i.offsetTop+i.offsetHeight>o&&(this.table.rowManager.element.scrollTop+=i.offsetTop+i.offsetHeight-o)}},w.prototype.edit=function(e,t,o){function i(t){if(c.currentCell===e){var o=!0;return e.column.modules.validate&&c.table.modExists("validate")&&(o=c.table.modules.validate.validate(e.column.modules.validate,e.getComponent(),t)),!0===o?(c.clearEditor(),e.setValue(t,!0),c.table.options.dataTree&&c.table.modExists("dataTree")&&c.table.modules.dataTree.checkForRestyle(e),!0):(c.invalidEdit=!0,h.classList.add("tabulator-validation-fail"),c.focusCellNoEvent(e,!0),d(),c.table.options.validationFailed.call(c.table,e.getComponent(),t,o),!1)}}function n(){c.currentCell===e&&(c.cancelEdit(),c.table.options.dataTree&&c.table.modExists("dataTree")&&c.table.modules.dataTree.checkForRestyle(e))}function s(e){d=e}var r,a,l,c=this,u=!0,d=function(){},h=e.getElement();if(this.currentCell)return void(this.invalidEdit||this.cancelEdit());if(e.column.modules.edit.blocked)return this.mouseClick=!1,h.blur(),!1;switch(t&&t.stopPropagation(),_typeof(e.column.modules.edit.check)){case"function":u=e.column.modules.edit.check(e.getComponent());break;case"boolean":u=e.column.modules.edit.check}if(u||o){if(c.cancelEdit(),c.currentCell=e,this.focusScrollAdjust(e),a=e.getComponent(),this.mouseClick&&(this.mouseClick=!1,e.column.cellEvents.cellClick&&e.column.cellEvents.cellClick.call(this.table,t,a)),e.column.cellEvents.cellEditing&&e.column.cellEvents.cellEditing.call(this.table,a),c.table.options.cellEditing.call(this.table,a),l="function"==typeof e.column.modules.edit.params?e.column.modules.edit.params(a):e.column.modules.edit.params,!1===(r=e.column.modules.edit.editor.call(c,a,s,i,n,l)))return h.blur(),!1;if(!(r instanceof Node))return console.warn("Edit Error - Editor should return an instance of Node, the editor returned:",r),h.blur(),!1;for(h.classList.add("tabulator-editing"),e.row.getElement().classList.add("tabulator-row-editing");h.firstChild;)h.removeChild(h.firstChild);h.appendChild(r),d();for(var p=h.children,m=0;m<p.length;m++)p[m].addEventListener("click",function(e){e.stopPropagation()});return!0}return this.mouseClick=!1,h.blur(),!1},w.prototype.maskInput=function(e,t){function o(t){var a=i[t];void 0!==a&&a!==r&&a!==n&&a!==s&&(e.value=e.value+""+a,o(t+1))}var i=t.mask,n=void 0!==t.maskLetterChar?t.maskLetterChar:"A",s=void 0!==t.maskNumberChar?t.maskNumberChar:"9",r=void 0!==t.maskWildcardChar?t.maskWildcardChar:"*",a=!1;e.addEventListener("keydown",function(t){var o=e.value.length,l=t.key;if(t.keyCode>46){if(o>=i.length)return t.preventDefault(),t.stopPropagation(),a=!1,!1;switch(i[o]){case n:if(l.toUpperCase()==l.toLowerCase())return t.preventDefault(),t.stopPropagation(),a=!1,!1;break;case s:if(isNaN(l))return t.preventDefault(),t.stopPropagation(),a=!1,!1;break;case r:break;default:if(l!==i[o])return t.preventDefault(),t.stopPropagation(),a=!1,!1}a=!0}}),e.addEventListener("keyup",function(i){i.keyCode>46&&t.maskAutoFill&&o(e.value.length)}),e.placeholder||(e.placeholder=i),t.maskAutoFill&&o(e.value.length)},w.prototype.editors={input:function(e,t,o,i,n){function s(e){(null===r||void 0===r)&&""!==a.value||a.value!==r?o(a.value)&&(r=a.value):i()}var r=e.getValue(),a=document.createElement("input");if(a.setAttribute("type",n.search?"search":"text"),a.style.padding="4px",a.style.width="100%",a.style.boxSizing="border-box",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var l in n.elementAttributes)"+"==l.charAt(0)?(l=l.slice(1),a.setAttribute(l,a.getAttribute(l)+n.elementAttributes["+"+l])):a.setAttribute(l,n.elementAttributes[l]);return a.value=void 0!==r?r:"",t(function(){a.focus({preventScroll:!0}),a.style.height="100%"}),a.addEventListener("change",s),a.addEventListener("blur",s),a.addEventListener("keydown",function(e){switch(e.keyCode){case 13:s(e);break;case 27:i()}}),n.mask&&this.table.modules.edit.maskInput(a,n),a},textarea:function(e,t,o,i,n){function s(t){(null===r||void 0===r)&&""!==c.value||c.value!==r?(o(c.value)&&(r=c.value),setTimeout(function(){e.getRow().normalizeHeight()},300)):i()}var r=e.getValue(),a=n.verticalNavigation||"hybrid",l=String(null!==r&&void 0!==r?r:""),c=(l.match(/(?:\r\n|\r|\n)/g),document.createElement("textarea")),u=0;if(c.style.display="block",c.style.padding="2px",c.style.height="100%",c.style.width="100%",c.style.boxSizing="border-box",c.style.whiteSpace="pre-wrap",c.style.resize="none",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var d in n.elementAttributes)"+"==d.charAt(0)?(d=d.slice(1),c.setAttribute(d,c.getAttribute(d)+n.elementAttributes["+"+d])):c.setAttribute(d,n.elementAttributes[d]);return c.value=l,t(function(){c.focus({preventScroll:!0}),c.style.height="100%"}),c.addEventListener("change",s),c.addEventListener("blur",s),c.addEventListener("keyup",function(){c.style.height="";var t=c.scrollHeight;c.style.height=t+"px",t!=u&&(u=t,e.getRow().normalizeHeight())}),c.addEventListener("keydown",function(e){switch(e.keyCode){case 27:i();break;case 38:("editor"==a||"hybrid"==a&&c.selectionStart)&&(e.stopImmediatePropagation(),e.stopPropagation());break;case 40:("editor"==a||"hybrid"==a&&c.selectionStart!==c.value.length)&&(e.stopImmediatePropagation(),e.stopPropagation())}}),n.mask&&this.table.modules.edit.maskInput(c,n),c},number:function(e,t,o,i,n){function s(){var e=l.value;isNaN(e)||""===e||(e=Number(e)),e!==r?o(e)&&(r=e):i()}var r=e.getValue(),a=n.verticalNavigation||"editor",l=document.createElement("input");if(l.setAttribute("type","number"),void 0!==n.max&&l.setAttribute("max",n.max),void 0!==n.min&&l.setAttribute("min",n.min),void 0!==n.step&&l.setAttribute("step",n.step),l.style.padding="4px",l.style.width="100%",l.style.boxSizing="border-box",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var c in n.elementAttributes)"+"==c.charAt(0)?(c=c.slice(1),l.setAttribute(c,l.getAttribute(c)+n.elementAttributes["+"+c])):l.setAttribute(c,n.elementAttributes[c]);l.value=r;var u=function(e){s()};return t(function(){l.removeEventListener("blur",u),l.focus({preventScroll:!0}),l.style.height="100%",l.addEventListener("blur",u)}),l.addEventListener("keydown",function(e){switch(e.keyCode){case 13:s();break;case 27:i();break;case 38:case 40:"editor"==a&&(e.stopImmediatePropagation(),e.stopPropagation())}}),n.mask&&this.table.modules.edit.maskInput(l,n),l},range:function(e,t,o,i,n){function s(){var e=a.value;isNaN(e)||""===e||(e=Number(e)),e!=r?o(e)&&(r=e):i()}var r=e.getValue(),a=document.createElement("input");if(a.setAttribute("type","range"),void 0!==n.max&&a.setAttribute("max",n.max),void 0!==n.min&&a.setAttribute("min",n.min),void 0!==n.step&&a.setAttribute("step",n.step),a.style.padding="4px",a.style.width="100%",a.style.boxSizing="border-box",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var l in n.elementAttributes)"+"==l.charAt(0)?(l=l.slice(1),a.setAttribute(l,a.getAttribute(l)+n.elementAttributes["+"+l])):a.setAttribute(l,n.elementAttributes[l]);return a.value=r,t(function(){a.focus({preventScroll:!0}),a.style.height="100%"}),a.addEventListener("blur",function(e){s()}),a.addEventListener("keydown",function(e){switch(e.keyCode){case 13:case 9:s();break;case 27:i()}}),a},select:function(e,t,o,i,n){function s(t){var o,i={},s=f.table.getData();return o=t?f.table.columnManager.getColumnByField(t):e.getColumn()._getSelf(),o?(s.forEach(function(e){var t=o.getFieldValue(e);null!==t&&void 0!==t&&""!==t&&(i[t]=!0)}),i=n.sortValuesList?"asc"==n.sortValuesList?Object.keys(i).sort():Object.keys(i).sort().reverse():Object.keys(i)):console.warn("unable to find matching column to create select lookup list:",t),i}function r(t,o){function i(e){var e={label:n.listItemFormatter?n.listItemFormatter(e.value,e.label):e.label,value:e.value,element:!1};return e.value!==o&&(isNaN(parseFloat(e.value))||isNaN(parseFloat(e.value))||parseFloat(e.value)!==parseFloat(o))||l(e),s.push(e),r.push(e),e}var s=[],r=[];if("function"==typeof t&&(t=t(e)),Array.isArray(t))t.forEach(function(e){var t;"object"===(void 0===e?"undefined":_typeof(e))?e.options?(t={label:e.label,group:!0,element:!1},r.push(t),e.options.forEach(function(e){i(e)})):i(e):(t={label:n.listItemFormatter?n.listItemFormatter(e,e):e,value:e,element:!1},t.value!==o&&(isNaN(parseFloat(t.value))||isNaN(parseFloat(t.value))||parseFloat(t.value)!==parseFloat(o))||l(t),s.push(t),r.push(t))});else for(var c in t){var u={label:n.listItemFormatter?n.listItemFormatter(c,t[c]):t[c],value:c,element:!1};u.value!==o&&(isNaN(parseFloat(u.value))||isNaN(parseFloat(u.value))||parseFloat(u.value)!==parseFloat(o))||l(u),s.push(u),r.push(u)}C=s,x=r,a()}function a(){for(;E.firstChild;)E.removeChild(E.firstChild);x.forEach(function(e){var t=e.element;t||(e.group?(t=document.createElement("div"),t.classList.add("tabulator-edit-select-list-group"),t.tabIndex=0,t.innerHTML=""===e.label?"&nbsp;":e.label):(t=document.createElement("div"),t.classList.add("tabulator-edit-select-list-item"),t.tabIndex=0,t.innerHTML=""===e.label?"&nbsp;":e.label,t.addEventListener("click",function(){l(e),c()}),e===R&&t.classList.add("active")),t.addEventListener("mousedown",function(){M=!1,setTimeout(function(){M=!0},10)}),e.element=t),E.appendChild(t)})}function l(e){R&&R.element&&R.element.classList.remove("active"),R=e,w.value="&nbsp;"===e.label?"":e.label,e.element&&e.element.classList.add("active")}function c(){p(),b!==R.value?(b=R.value,o(R.value)):i()}function d(){p(),i()}function h(){if(!E.parentNode){!0===n.values?r(s(),y):"string"==typeof n.values?r(s(n.values),y):r(n.values||[],y);var e=u.prototype.helpers.elOffset(g);E.style.minWidth=g.offsetWidth+"px",E.style.top=e.top+g.offsetHeight+"px",E.style.left=e.left+"px",E.addEventListener("mousedown",function(e){M=!1,setTimeout(function(){M=!0},10)}),document.body.appendChild(E)}}function p(){E.parentNode&&E.parentNode.removeChild(E),m()}function m(){f.table.rowManager.element.removeEventListener("scroll",d)}var f=this,g=e.getElement(),b=e.getValue(),v=n.verticalNavigation||"editor",y=void 0!==b||null===b?b:void 0!==n.defaultValue?n.defaultValue:"",w=document.createElement("input"),E=document.createElement("div"),C=[],x=[],R={},M=!0;if(this.table.rowManager.element.addEventListener("scroll",d),(Array.isArray(n)||!Array.isArray(n)&&"object"===(void 0===n?"undefined":_typeof(n))&&!n.values)&&(console.warn("DEPRECATION WARNING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object"),n={values:n}),w.setAttribute("type","text"),w.style.padding="4px",w.style.width="100%",w.style.boxSizing="border-box",w.style.cursor="default",w.readOnly=0!=this.currentCell,n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var L in n.elementAttributes)"+"==L.charAt(0)?(L=L.slice(1),w.setAttribute(L,w.getAttribute(L)+n.elementAttributes["+"+L])):w.setAttribute(L,n.elementAttributes[L]);return w.value=void 0!==b||null===b?b:"",w.addEventListener("keydown",function(e){var t;switch(e.keyCode){case 38:t=C.indexOf(R),("editor"==v||"hybrid"==v&&t)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t>0&&l(C[t-1]));break;case 40:t=C.indexOf(R),("editor"==v||"hybrid"==v&&t<C.length-1)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t<C.length-1&&l(-1==t?C[0]:C[t+1]));break;case 37:case 39:e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault();break;case 13:c();break;case 27:d()}}),w.addEventListener("blur",function(e){M&&d()}),w.addEventListener("focus",function(e){h()}),E=document.createElement("div"),E.classList.add("tabulator-edit-select-list"),t(function(){w.style.height="100%",w.focus({preventScroll:!0})}),w},autocomplete:function(e,t,o,i,n){function s(t){var o,i={},s=y.table.getData();return o=t?y.table.columnManager.getColumnByField(t):e.getColumn()._getSelf(),o?(s.forEach(function(e){var t=o.getFieldValue(e);null!==t&&void 0!==t&&""!==t&&(i[t]=!0)}),i=n.sortValuesList?"asc"==n.sortValuesList?Object.keys(i).sort():Object.keys(i).sort().reverse():Object.keys(i)):console.warn("unable to find matching column to create autocomplete lookup list:",t),i}function r(e,t){var o,i,r=[];o=!0===n.values?s():"string"==typeof n.values?s(n.values):n.values||[],n.searchFunc?(r=n.searchFunc(e,o),r instanceof Promise?(a(void 0!==n.searchingPlaceholder?n.searchingPlaceholder:"Searching..."),r.then(function(e){d(l(e),t)}).catch(function(e){console.err("error in autocomplete search promise:",e)})):d(l(r),t)):(i=l(o),""===e?n.showListOnEmpty&&(r=i):i.forEach(function(t){null===t.value&&void 0===t.value||(String(t.value).toLowerCase().indexOf(String(e).toLowerCase())>-1||String(t.title).toLowerCase().indexOf(String(e).toLowerCase())>-1)&&r.push(t)}),d(r,t))}function a(e){var t=document.createElement("div");c(),!1!==e&&(t.classList.add("tabulator-edit-select-list-notice"),t.tabIndex=0,e instanceof Node?t.appendChild(e):t.innerHTML=e,M.appendChild(t))}function l(e){var t=[];if(Array.isArray(e))e.forEach(function(e){var o={title:n.listItemFormatter?n.listItemFormatter(e,e):e,value:e};t.push(o)});else for(var o in e){var i={title:n.listItemFormatter?n.listItemFormatter(o,e[o]):e[o],value:o};t.push(i)}return t}function c(){for(;M.firstChild;)M.removeChild(M.firstChild)}function d(e,t){e.length?h(e,t):n.emptyPlaceholder&&a(n.emptyPlaceholder)}function h(e,t){var o=!1;c(),L=e,L.forEach(function(e){var i=e.element;i||(i=document.createElement("div"),i.classList.add("tabulator-edit-select-list-item"),i.tabIndex=0,i.innerHTML=e.title,i.addEventListener("click",function(t){f(e),p()}),i.addEventListener("mousedown",function(e){D=!1,setTimeout(function(){D=!0},10)}),e.element=i,t&&e.value==E&&(R.value=e.title,e.element.classList.add("active"),o=!0),e===T&&(e.element.classList.add("active"),o=!0)),M.appendChild(i)}),o||f(!1)}function p(){g(),T?E!==T.value?(E=T.value,R.value=T.title,o(T.value)):i():n.freetext?(E=R.value,o(R.value)):n.allowEmpty&&""===R.value?(E=R.value,o(R.value)):i()}function m(){if(!M.parentNode){for(;M.firstChild;)M.removeChild(M.firstChild);var e=u.prototype.helpers.elOffset(w);M.style.minWidth=w.offsetWidth+"px",M.style.top=e.top+w.offsetHeight+"px",M.style.left=e.left+"px",document.body.appendChild(M)}}function f(e,t){T&&T.element&&T.element.classList.remove("active"),T=e,e&&e.element&&e.element.classList.add("active")}function g(){M.parentNode&&M.parentNode.removeChild(M),v()}function b(){g(),i()}function v(){y.table.rowManager.element.removeEventListener("scroll",b)}var y=this,w=e.getElement(),E=e.getValue(),C=n.verticalNavigation||"editor",x=void 0!==E||null===E?E:void 0!==n.defaultValue?n.defaultValue:"",R=document.createElement("input"),M=document.createElement("div"),L=[],T=!1,D=!0;if(this.table.rowManager.element.addEventListener("scroll",b),R.setAttribute("type","search"),R.style.padding="4px",R.style.width="100%",R.style.boxSizing="border-box",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var k in n.elementAttributes)"+"==k.charAt(0)?(k=k.slice(1),R.setAttribute(k,R.getAttribute(k)+n.elementAttributes["+"+k])):R.setAttribute(k,n.elementAttributes[k]);return M.classList.add("tabulator-edit-select-list"),M.addEventListener("mousedown",function(e){D=!1,setTimeout(function(){D=!0},10)}),R.addEventListener("keydown",function(e){var t;switch(e.keyCode){case 38:t=L.indexOf(T),("editor"==C||"hybrid"==C&&t)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),f(t>0?L[t-1]:!1));break;case 40:t=L.indexOf(T),("editor"==C||"hybrid"==C&&t<L.length-1)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t<L.length-1&&f(-1==t?L[0]:L[t+1]));break;case 37:case 39:e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault();break;case 13:p();break;case 27:b();break;case 36:case 35:e.stopImmediatePropagation()}}),R.addEventListener("keyup",function(e){switch(e.keyCode){case 38:case 37:case 39:case 40:case 13:case 27:break;default:r(R.value)}}),R.addEventListener("search",function(e){r(R.value)}),R.addEventListener("blur",function(e){D&&p()}),R.addEventListener("focus",function(e){var t=x;m(),R.value=t,r(t,!0)}),t(function(){R.style.height="100%",R.focus({preventScroll:!0})}),n.mask&&this.table.modules.edit.maskInput(R,n),R},star:function(e,t,o,i,n){function s(e){h.forEach(function(t,o){o<e?("ie"==a.table.browser?t.setAttribute("class","tabulator-star-active"):t.classList.replace("tabulator-star-inactive","tabulator-star-active"),t.innerHTML='<polygon fill="#488CE9" stroke="#014AAE" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>'):("ie"==a.table.browser?t.setAttribute("class","tabulator-star-inactive"):t.classList.replace("tabulator-star-active","tabulator-star-inactive"),t.innerHTML='<polygon fill="#010155" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>')})}function r(e){c=e,s(e)}var a=this,l=e.getElement(),c=e.getValue(),u=l.getElementsByTagName("svg").length||5,d=l.getElementsByTagName("svg")[0]?l.getElementsByTagName("svg")[0].getAttribute("width"):14,h=[],p=document.createElement("div"),m=document.createElementNS("http://www.w3.org/2000/svg","svg");if(l.style.whiteSpace="nowrap",l.style.overflow="hidden",l.style.textOverflow="ellipsis",p.style.verticalAlign="middle",p.style.display="inline-block",p.style.padding="4px",m.setAttribute("width",d),m.setAttribute("height",d),m.setAttribute("viewBox","0 0 512 512"),m.setAttribute("xml:space","preserve"),m.style.padding="0 1px",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var f in n.elementAttributes)"+"==f.charAt(0)?(f=f.slice(1),p.setAttribute(f,p.getAttribute(f)+n.elementAttributes["+"+f])):p.setAttribute(f,n.elementAttributes[f]);for(var g=1;g<=u;g++)!function(e){var t=document.createElement("span"),i=m.cloneNode(!0);h.push(i),t.addEventListener("mouseenter",function(t){t.stopPropagation(),t.stopImmediatePropagation(),s(e)}),t.addEventListener("mousemove",function(e){e.stopPropagation(),e.stopImmediatePropagation()}),t.addEventListener("click",function(t){t.stopPropagation(),t.stopImmediatePropagation(),o(e)}),t.appendChild(i),p.appendChild(t)}(g);return c=Math.min(parseInt(c),u),s(c),p.addEventListener("mousemove",function(e){s(0)}),p.addEventListener("click",function(e){o(0)}),l.addEventListener("blur",function(e){i()}),l.addEventListener("keydown",function(e){switch(e.keyCode){case 39:r(c+1);break;case 37:r(c-1);break;case 13:o(c);break;case 27:i()}}),p},progress:function(e,t,o,i,n){function s(){var e=d*Math.round(m.offsetWidth/(l.clientWidth/100))+u;o(e),l.setAttribute("aria-valuenow",e),l.setAttribute("aria-label",h)}var r,a,l=e.getElement(),c=void 0===n.max?l.getElementsByTagName("div")[0].getAttribute("max")||100:n.max,u=void 0===n.min?l.getElementsByTagName("div")[0].getAttribute("min")||0:n.min,d=(c-u)/100,h=e.getValue()||0,p=document.createElement("div"),m=document.createElement("div");if(p.style.position="absolute",p.style.right="0",p.style.top="0",p.style.bottom="0",p.style.width="5px",p.classList.add("tabulator-progress-handle"),m.style.display="inline-block",m.style.position="relative",m.style.height="100%",m.style.backgroundColor="#488CE9",m.style.maxWidth="100%",m.style.minWidth="0%",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var f in n.elementAttributes)"+"==f.charAt(0)?(f=f.slice(1),m.setAttribute(f,m.getAttribute(f)+n.elementAttributes["+"+f])):m.setAttribute(f,n.elementAttributes[f]);return l.style.padding="4px 4px",h=Math.min(parseFloat(h),c),h=Math.max(parseFloat(h),u),h=Math.round((h-u)/d),m.style.width=h+"%",l.setAttribute("aria-valuemin",u),l.setAttribute("aria-valuemax",c),m.appendChild(p),p.addEventListener("mousedown",function(e){r=e.screenX,a=m.offsetWidth}),p.addEventListener("mouseover",function(){p.style.cursor="ew-resize"}),l.addEventListener("mousemove",function(e){r&&(m.style.width=a+e.screenX-r+"px")}),l.addEventListener("mouseup",function(e){r&&(e.stopPropagation(),e.stopImmediatePropagation(),r=!1,a=!1,s())}),l.addEventListener("keydown",function(e){switch(e.keyCode){case 39:e.preventDefault(),m.style.width=m.clientWidth+l.clientWidth/100+"px";break;case 37:e.preventDefault(),m.style.width=m.clientWidth-l.clientWidth/100+"px";break;case 9:case 13:s();break;case 27:i()}}),l.addEventListener("blur",function(){i()}),m},tickCross:function(e,t,o,i,n){function s(e){return l?e?u?c:a.checked:a.checked&&!u?(a.checked=!1,a.indeterminate=!0,u=!0,c):(u=!1,a.checked):a.checked}var r=e.getValue(),a=document.createElement("input"),l=n.tristate,c=void 0===n.indeterminateValue?null:n.indeterminateValue,u=!1;if(a.setAttribute("type","checkbox"),a.style.marginTop="5px",a.style.boxSizing="border-box",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var d in n.elementAttributes)"+"==d.charAt(0)?(d=d.slice(1),a.setAttribute(d,a.getAttribute(d)+n.elementAttributes["+"+d])):a.setAttribute(d,n.elementAttributes[d]);return a.value=r,!l||void 0!==r&&r!==c&&""!==r||(u=!0,a.indeterminate=!0),"firefox"!=this.table.browser&&t(function(){a.focus({preventScroll:!0})}),a.checked=!0===r||"true"===r||"True"===r||1===r,a.addEventListener("change",function(e){o(s())}),a.addEventListener("blur",function(e){o(s(!0))}),a.addEventListener("keydown",function(e){
-13==e.keyCode&&o(s()),27==e.keyCode&&i()}),a}},u.prototype.registerModule("edit",w);var E=function(e){this.table=e,this.config={},this.cloneTableStyle=!0,this.colVisProp=""};E.prototype.genereateTable=function(e,t,o,i){this.cloneTableStyle=t,this.config=e||{},this.colVisProp=i;var n=document.createElement("table");return n.classList.add("tabulator-print-table"),!1!==this.config.columnHeaders&&n.appendChild(this.generateHeaderElements()),n.appendChild(this.generateBodyElements(this.rowLookup(o))),this.mapElementStyles(this.table.element,n,["border-top","border-left","border-right","border-bottom"]),n},E.prototype.rowLookup=function(e){var t=this,o=[];if("function"==typeof e)e.call(this.table).forEach(function(e){(e=t.table.rowManager.findRow(e))&&o.push(e)});else switch(e){case!0:case"visible":o=this.table.rowManager.getVisibleRows(!0);break;case"all":o=this.table.rowManager.rows;break;case"selected":o=this.table.modules.selectRow.selectedRows;break;case"active":default:o=this.table.rowManager.getDisplayRows()}return Object.assign([],o)},E.prototype.generateColumnGroupHeaders=function(){var e=this,t=[];return(!1!==this.config.columnGroups?this.table.columnManager.columns:this.table.columnManager.columnsByIndex).forEach(function(o){var i=e.processColumnGroup(o);i&&t.push(i)}),t},E.prototype.processColumnGroup=function(e){var t=this,o=e.columns,i=0,n={title:e.definition.title,column:e,depth:1};if(o.length){if(n.subGroups=[],n.width=0,o.forEach(function(e){var o=t.processColumnGroup(e);o&&(n.width+=o.width,n.subGroups.push(o),o.depth>i&&(i=o.depth))}),n.depth+=i,!n.width)return!1}else{if(!this.columnVisCheck(e))return!1;n.width=1}return n},E.prototype.groupHeadersToRows=function(e){function t(e,n){var s=i-n;void 0===o[n]&&(o[n]=[]),e.height=e.subGroups?1:s-e.depth+1,o[n].push(e),e.subGroups&&e.subGroups.forEach(function(e){t(e,n+1)})}var o=[],i=0;return e.forEach(function(e){e.depth>i&&(i=e.depth)}),e.forEach(function(e){t(e,0)}),o},E.prototype.generateHeaderElements=function(){var e=this,t=document.createElement("thead");return this.groupHeadersToRows(this.generateColumnGroupHeaders()).forEach(function(o){var i=document.createElement("tr");e.mapElementStyles(e.table.columnManager.getHeadersElement(),t,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),o.forEach(function(t){var o=document.createElement("th"),n=t.column.definition.cssClass?t.column.definition.cssClass.split(" "):[];o.colSpan=t.width,o.rowSpan=t.height,o.innerHTML=t.column.definition.title,e.cloneTableStyle&&(o.style.boxSizing="border-box"),n.forEach(function(e){o.classList.add(e)}),e.mapElementStyles(t.column.getElement(),o,["text-align","border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),e.mapElementStyles(t.column.contentElement,o,["padding-top","padding-left","padding-right","padding-bottom"]),t.column.visible?e.mapElementStyles(t.column.getElement(),o,["width"]):t.column.definition.width&&(o.style.width=t.column.definition.width+"px"),t.column.parent&&e.mapElementStyles(t.column.parent.groupElement,o,["border-top"]),i.appendChild(o)}),t.appendChild(i)}),t},E.prototype.generateBodyElements=function(e){},E.prototype.generateBodyElements=function(e){var t,o,i,n,s,r,a,l,c,u,d=this;u=this.table.options["rowFormatter"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))],u=null!==u?u:this.table.options.rowFormatter,this.cloneTableStyle&&window.getComputedStyle&&(t=this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)"),o=this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)"),i=this.table.element.querySelector(".tabulator-row.tabulator-calcs"),n=this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)"),r=this.table.element.getElementsByClassName("tabulator-group")[0],n&&(a=n.getElementsByClassName("tabulator-cell"),s=a[0],a[a.length-1]));var h=document.createElement("tbody"),p=[];return!1!==this.config.columnCalcs&&this.table.modExists("columnCalcs")&&(this.table.modules.columnCalcs.topInitialized&&e.unshift(this.table.modules.columnCalcs.topRow),this.table.modules.columnCalcs.botInitialized&&e.push(this.table.modules.columnCalcs.botRow)),this.table.columnManager.columnsByIndex.forEach(function(e){d.columnVisCheck(e)&&p.push(e)}),this.table.options.dataTree&&!1!==this.config.dataTree&&this.table.modExists("columnCalcs")&&(c=this.table.modules.dataTree.elementField),e=e.filter(function(e){switch(e.type){case"group":return!1!==d.config.rowGroups;case"calc":return!1!==d.config.columnCalcs}return!0}),e.length>1e3&&console.warn("It may take a long time to render an HTML table with more than 1000 rows"),e.forEach(function(e,n){var a=e.getData(d.colVisProp),m=document.createElement("tr");switch(m.classList.add("tabulator-print-table-row"),e.type){case"group":var f=document.createElement("td");f.colSpan=p.length,f.innerHTML=e.key,m.classList.add("tabulator-print-table-group"),d.mapElementStyles(r,m,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),d.mapElementStyles(r,f,["padding-top","padding-left","padding-right","padding-bottom"]),m.appendChild(f);break;case"calc":m.classList.add("tabulator-print-table-calcs");case"row":if(d.table.options.dataTree&&!1===d.config.dataTree&&e.modules.dataTree.parent)return;if(p.forEach(function(t,o){var i=document.createElement("td"),n=t.getFieldValue(a),r={modules:{},getValue:function(){return n},getField:function(){return t.definition.field},getElement:function(){return i},getColumn:function(){return t.getComponent()},getData:function(){return a},getRow:function(){return e.getComponent()},getComponent:function(){return r},column:t};if((t.definition.cssClass?t.definition.cssClass.split(" "):[]).forEach(function(e){i.classList.add(e)}),d.table.modExists("format")&&!1!==d.config.formatCells)n=d.table.modules.format.formatExportValue(r,d.colVisProp);else switch(void 0===n?"undefined":_typeof(n)){case"object":n=JSON.stringify(n);break;case"undefined":case"null":n="";break;default:n=n}n instanceof Node?i.appendChild(n):i.innerHTML=n,s&&(d.mapElementStyles(s,i,["padding-top","padding-left","padding-right","padding-bottom","border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size"]),t.definition.align&&(i.style.textAlign=t.definition.align)),d.table.options.dataTree&&!1!==d.config.dataTree&&(c&&c==t.field||!c&&0==o)&&(e.modules.dataTree.controlEl&&i.insertBefore(e.modules.dataTree.controlEl.cloneNode(!0),i.firstChild),e.modules.dataTree.branchEl&&i.insertBefore(e.modules.dataTree.branchEl.cloneNode(!0),i.firstChild)),m.appendChild(i),r.modules.format&&r.modules.format.renderedCallback&&r.modules.format.renderedCallback()}),l="calc"==e.type?i:n%2&&o?o:t,d.mapElementStyles(l,m,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),u&&!1!==d.config.formatCells){var g=e.getComponent();g.getElement=function(){return m},u(g)}}h.appendChild(m)}),h},E.prototype.columnVisCheck=function(e){return!1!==e.definition[this.colVisProp]&&(e.visible||!e.visible&&e.definition[this.colVisProp])},E.prototype.getHtml=function(e,t,o,i){var n=document.createElement("div");return n.appendChild(this.genereateTable(o||this.table.options.htmlOutputConfig,t,e,i||"htmlOutput")),n.innerHTML},E.prototype.mapElementStyles=function(e,t,o){if(this.cloneTableStyle&&e&&t){var i={"background-color":"backgroundColor",color:"fontColor",width:"width","font-weight":"fontWeight","font-family":"fontFamily","font-size":"fontSize","text-align":"textAlign","border-top":"borderTop","border-left":"borderLeft","border-right":"borderRight","border-bottom":"borderBottom","padding-top":"paddingTop","padding-left":"paddingLeft","padding-right":"paddingRight","padding-bottom":"paddingBottom"};if(window.getComputedStyle){var n=window.getComputedStyle(e);o.forEach(function(e){t.style[i[e]]=n.getPropertyValue(e)})}}},u.prototype.registerModule("export",E);var C=function(e){this.table=e,this.filterList=[],this.headerFilters={},this.headerFilterColumns=[],this.prevHeaderFilterChangeCheck="",this.prevHeaderFilterChangeCheck="{}",this.changed=!1};C.prototype.initializeColumn=function(e,t){function o(t){var o,s="input"==e.modules.filter.tagType&&"text"==e.modules.filter.attrType||"textarea"==e.modules.filter.tagType?"partial":"match",r="",a="";if(void 0===e.modules.filter.prevSuccess||e.modules.filter.prevSuccess!==t){if(e.modules.filter.prevSuccess=t,e.modules.filter.emptyFunc(t))delete i.headerFilters[n];else{switch(e.modules.filter.value=t,_typeof(e.definition.headerFilterFunc)){case"string":i.filters[e.definition.headerFilterFunc]?(r=e.definition.headerFilterFunc,o=function(o){var n=e.definition.headerFilterFuncParams||{},s=e.getFieldValue(o);return n="function"==typeof n?n(t,s,o):n,i.filters[e.definition.headerFilterFunc](t,s,o,n)}):console.warn("Header Filter Error - Matching filter function not found: ",e.definition.headerFilterFunc);break;case"function":o=function(o){var i=e.definition.headerFilterFuncParams||{},n=e.getFieldValue(o);return i="function"==typeof i?i(t,n,o):i,e.definition.headerFilterFunc(t,n,o,i)},r=o}if(!o)switch(s){case"partial":o=function(o){var i=e.getFieldValue(o);return void 0!==i&&null!==i&&String(i).toLowerCase().indexOf(String(t).toLowerCase())>-1},r="like";break;default:o=function(o){return e.getFieldValue(o)==t},r="="}i.headerFilters[n]={value:t,func:o,type:r}}a=JSON.stringify(i.headerFilters),i.prevHeaderFilterChangeCheck!==a&&(i.prevHeaderFilterChangeCheck=a,i.changed=!0,i.table.rowManager.filterRefresh())}return!0}var i=this,n=e.getField();e.modules.filter={success:o,attrType:!1,tagType:!1,emptyFunc:!1},this.generateHeaderFilterElement(e)},C.prototype.generateHeaderFilterElement=function(e,t,o){function i(){}var n,s,r,a,l,c,u,d=this,h=this,p=e.modules.filter.success,m=e.getField();if(e.modules.filter.headerElement&&e.modules.filter.headerElement.parentNode&&e.contentElement.removeChild(e.modules.filter.headerElement.parentNode),m){switch(e.modules.filter.emptyFunc=e.definition.headerFilterEmptyCheck||function(e){return!e&&"0"!==e},n=document.createElement("div"),n.classList.add("tabulator-header-filter"),_typeof(e.definition.headerFilter)){case"string":h.table.modules.edit.editors[e.definition.headerFilter]?(s=h.table.modules.edit.editors[e.definition.headerFilter],"tick"!==e.definition.headerFilter&&"tickCross"!==e.definition.headerFilter||e.definition.headerFilterEmptyCheck||(e.modules.filter.emptyFunc=function(e){return!0!==e&&!1!==e})):console.warn("Filter Error - Cannot build header filter, No such editor found: ",e.definition.editor);break;case"function":s=e.definition.headerFilter;break;case"boolean":e.modules.edit&&e.modules.edit.editor?s=e.modules.edit.editor:e.definition.formatter&&h.table.modules.edit.editors[e.definition.formatter]?(s=h.table.modules.edit.editors[e.definition.formatter],"tick"!==e.definition.formatter&&"tickCross"!==e.definition.formatter||e.definition.headerFilterEmptyCheck||(e.modules.filter.emptyFunc=function(e){return!0!==e&&!1!==e})):s=h.table.modules.edit.editors.input}if(s){if(a={getValue:function(){return void 0!==t?t:""},getField:function(){return e.definition.field},getElement:function(){return n},getColumn:function(){return e.getComponent()},getRow:function(){return{normalizeHeight:function(){}}}},u=e.definition.headerFilterParams||{},u="function"==typeof u?u.call(h.table):u,!(r=s.call(this.table.modules.edit,a,function(){},p,i,u)))return void console.warn("Filter Error - Cannot add filter to "+m+" column, editor returned a value of false");if(!(r instanceof Node))return void console.warn("Filter Error - Cannot add filter to "+m+" column, editor should return an instance of Node, the editor returned:",r);m?h.table.modules.localize.bind("headerFilters|columns|"+e.definition.field,function(e){r.setAttribute("placeholder",void 0!==e&&e?e:h.table.modules.localize.getText("headerFilters|default"))}):h.table.modules.localize.bind("headerFilters|default",function(e){r.setAttribute("placeholder",void 0!==h.column.definition.headerFilterPlaceholder&&h.column.definition.headerFilterPlaceholder?h.column.definition.headerFilterPlaceholder:e)}),r.addEventListener("click",function(e){e.stopPropagation(),r.focus()}),r.addEventListener("focus",function(e){var t=d.table.columnManager.element.scrollLeft;t!==d.table.rowManager.element.scrollLeft&&(d.table.rowManager.scrollHorizontal(t),d.table.columnManager.scrollHorizontal(t))}),l=!1,c=function(e){l&&clearTimeout(l),l=setTimeout(function(){p(r.value)},h.table.options.headerFilterLiveFilterDelay)},e.modules.filter.headerElement=r,e.modules.filter.attrType=r.hasAttribute("type")?r.getAttribute("type").toLowerCase():"",e.modules.filter.tagType=r.tagName.toLowerCase(),!1!==e.definition.headerFilterLiveFilter&&("autocomplete"!==e.definition.headerFilter&&"tickCross"!==e.definition.headerFilter&&("autocomplete"!==e.definition.editor&&"tickCross"!==e.definition.editor||!0!==e.definition.headerFilter)&&(r.addEventListener("keyup",c),r.addEventListener("search",c),"number"==e.modules.filter.attrType&&r.addEventListener("change",function(e){p(r.value)}),"text"==e.modules.filter.attrType&&"ie"!==this.table.browser&&r.setAttribute("type","search")),"input"!=e.modules.filter.tagType&&"select"!=e.modules.filter.tagType&&"textarea"!=e.modules.filter.tagType||r.addEventListener("mousedown",function(e){e.stopPropagation()})),n.appendChild(r),e.contentElement.appendChild(n),o||h.headerFilterColumns.push(e)}}else console.warn("Filter Error - Cannot add header filter, column has no field set:",e.definition.title)},C.prototype.hideHeaderFilterElements=function(){this.headerFilterColumns.forEach(function(e){e.modules.filter&&e.modules.filter.headerElement&&(e.modules.filter.headerElement.style.display="none")})},C.prototype.showHeaderFilterElements=function(){this.headerFilterColumns.forEach(function(e){e.modules.filter&&e.modules.filter.headerElement&&(e.modules.filter.headerElement.style.display="")})},C.prototype.setHeaderFilterFocus=function(e){e.modules.filter&&e.modules.filter.headerElement?e.modules.filter.headerElement.focus():console.warn("Column Filter Focus Error - No header filter set on column:",e.getField())},C.prototype.getHeaderFilterValue=function(e){if(e.modules.filter&&e.modules.filter.headerElement)return e.modules.filter.headerElement.value;console.warn("Column Filter Error - No header filter set on column:",e.getField())},C.prototype.setHeaderFilterValue=function(e,t){e&&(e.modules.filter&&e.modules.filter.headerElement?(this.generateHeaderFilterElement(e,t,!0),e.modules.filter.success(t)):console.warn("Column Filter Error - No header filter set on column:",e.getField()))},C.prototype.reloadHeaderFilter=function(e){e&&(e.modules.filter&&e.modules.filter.headerElement?this.generateHeaderFilterElement(e,e.modules.filter.value,!0):console.warn("Column Filter Error - No header filter set on column:",e.getField()))},C.prototype.hasChanged=function(){var e=this.changed;return this.changed=!1,e},C.prototype.setFilter=function(e,t,o){var i=this;i.filterList=[],Array.isArray(e)||(e=[{field:e,type:t,value:o}]),i.addFilter(e)},C.prototype.addFilter=function(e,t,o){var i=this;Array.isArray(e)||(e=[{field:e,type:t,value:o}]),e.forEach(function(e){(e=i.findFilter(e))&&(i.filterList.push(e),i.changed=!0)}),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.filter&&this.table.modules.persistence.save("filter")},C.prototype.findFilter=function(e){var t,o=this;if(Array.isArray(e))return this.findSubFilters(e);var i=!1;return"function"==typeof e.field?i=function(t){return e.field(t,e.type||{})}:o.filters[e.type]?(t=o.table.columnManager.getColumnByField(e.field),i=t?function(i){return o.filters[e.type](e.value,t.getFieldValue(i))}:function(t){return o.filters[e.type](e.value,t[e.field])}):console.warn("Filter Error - No such filter type found, ignoring: ",e.type),e.func=i,!!e.func&&e},C.prototype.findSubFilters=function(e){var t=this,o=[];return e.forEach(function(e){(e=t.findFilter(e))&&o.push(e)}),!!o.length&&o},C.prototype.getFilters=function(e,t){var o=[];return e&&(o=this.getHeaderFilters()),t&&o.forEach(function(e){"function"==typeof e.type&&(e.type="function")}),o=o.concat(this.filtersToArray(this.filterList,t))},C.prototype.filtersToArray=function(e,t){var o=this,i=[];return e.forEach(function(e){var n;Array.isArray(e)?i.push(o.filtersToArray(e,t)):(n={field:e.field,type:e.type,value:e.value},t&&"function"==typeof n.type&&(n.type="function"),i.push(n))}),i},C.prototype.getHeaderFilters=function(){var e=[];for(var t in this.headerFilters)e.push({field:t,type:this.headerFilters[t].type,value:this.headerFilters[t].value});return e},C.prototype.removeFilter=function(e,t,o){var i=this;Array.isArray(e)||(e=[{field:e,type:t,value:o}]),e.forEach(function(e){var t=-1;t="object"==_typeof(e.field)?i.filterList.findIndex(function(t){return e===t}):i.filterList.findIndex(function(t){return e.field===t.field&&e.type===t.type&&e.value===t.value}),t>-1?(i.filterList.splice(t,1),i.changed=!0):console.warn("Filter Error - No matching filter type found, ignoring: ",e.type)}),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.filter&&this.table.modules.persistence.save("filter")},C.prototype.clearFilter=function(e){this.filterList=[],e&&this.clearHeaderFilter(),this.changed=!0,this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.filter&&this.table.modules.persistence.save("filter")},C.prototype.clearHeaderFilter=function(){var e=this;this.headerFilters={},e.prevHeaderFilterChangeCheck="{}",this.headerFilterColumns.forEach(function(t){t.modules.filter.value=null,t.modules.filter.prevSuccess=void 0,e.reloadHeaderFilter(t)}),this.changed=!0},C.prototype.search=function(e,t,o,i){var n=this,s=[],r=[];return Array.isArray(t)||(t=[{field:t,type:o,value:i}]),t.forEach(function(e){(e=n.findFilter(e))&&r.push(e)}),this.table.rowManager.rows.forEach(function(t){var o=!0;r.forEach(function(e){n.filterRecurse(e,t.getData())||(o=!1)}),o&&s.push("data"===e?t.getData("data"):t.getComponent())}),s},C.prototype.filter=function(e,t){var o=this,i=[],n=[];return o.table.options.dataFiltering&&o.table.options.dataFiltering.call(o.table,o.getFilters()),o.table.options.ajaxFiltering||!o.filterList.length&&!Object.keys(o.headerFilters).length?i=e.slice(0):e.forEach(function(e){o.filterRow(e)&&i.push(e)}),o.table.options.dataFiltered&&(i.forEach(function(e){n.push(e.getComponent())}),o.table.options.dataFiltered.call(o.table,o.getFilters(),n)),i},C.prototype.filterRow=function(e,t){var o=this,i=!0,n=e.getData();o.filterList.forEach(function(e){o.filterRecurse(e,n)||(i=!1)});for(var s in o.headerFilters)o.headerFilters[s].func(n)||(i=!1);return i},C.prototype.filterRecurse=function(e,t){var o=this,i=!1;return Array.isArray(e)?e.forEach(function(e){o.filterRecurse(e,t)&&(i=!0)}):i=e.func(t),i},C.prototype.filters={"=":function(e,t,o,i){return t==e},"<":function(e,t,o,i){return t<e},"<=":function(e,t,o,i){return t<=e},">":function(e,t,o,i){return t>e},">=":function(e,t,o,i){return t>=e},"!=":function(e,t,o,i){return t!=e},regex:function(e,t,o,i){return"string"==typeof e&&(e=new RegExp(e)),e.test(t)},like:function(e,t,o,i){return null===e||void 0===e?t===e:void 0!==t&&null!==t&&String(t).toLowerCase().indexOf(e.toLowerCase())>-1},in:function(e,t,o,i){return Array.isArray(e)?e.indexOf(t)>-1:(console.warn("Filter Error - filter value is not an array:",e),!1)}},u.prototype.registerModule("filter",C);var x=function(e){this.table=e};x.prototype.initializeColumn=function(e){e.modules.format=this.lookupFormatter(e,""),void 0!==e.definition.formatterPrint&&(e.modules.format.print=this.lookupFormatter(e,"Print")),void 0!==e.definition.formatterClipboard&&(e.modules.format.clipboard=this.lookupFormatter(e,"Clipboard")),void 0!==e.definition.formatterHtmlOutput&&(e.modules.format.htmlOutput=this.lookupFormatter(e,"HtmlOutput"))},x.prototype.lookupFormatter=function(e,t){var o={params:e.definition["formatter"+t+"Params"]||{}},i=e.definition["formatter"+t];switch(void 0===i?"undefined":_typeof(i)){case"string":"tick"===i&&(i="tickCross",void 0===o.params.crossElement&&(o.params.crossElement=!1),console.warn("DEPRECATION WARNING - the tick formatter has been deprecated, please use the tickCross formatter with the crossElement param set to false")),this.formatters[i]?o.formatter=this.formatters[i]:(console.warn("Formatter Error - No such formatter found: ",i),o.formatter=this.formatters.plaintext);break;case"function":o.formatter=i;break;default:o.formatter=this.formatters.plaintext}return o},x.prototype.cellRendered=function(e){e.modules.format&&e.modules.format.renderedCallback&&e.modules.format.renderedCallback()},x.prototype.formatValue=function(e){function t(t){e.modules.format||(e.modules.format={}),e.modules.format.renderedCallback=t}var o=e.getComponent(),i="function"==typeof e.column.modules.format.params?e.column.modules.format.params(o):e.column.modules.format.params;return e.column.modules.format.formatter.call(this,o,i,t)},x.prototype.formatExportValue=function(e,t){var o,i=e.column.modules.format[t];if(i){var n=function(t){e.modules.format||(e.modules.format={}),e.modules.format.renderedCallback=t};return o="function"==typeof i.params?i.params(component):i.params,i.formatter.call(this,e.getComponent(),o,n)}return this.formatValue(e)},x.prototype.sanitizeHTML=function(e){if(e){var t={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;","`":"&#x60;","=":"&#x3D;"};return String(e).replace(/[&<>"'`=\/]/g,function(e){return t[e]})}return e},x.prototype.emptyToSpace=function(e){return null===e||void 0===e||""===e?"&nbsp;":e},x.prototype.getFormatter=function(e){var e;switch(void 0===e?"undefined":_typeof(e)){case"string":this.formatters[e]?e=this.formatters[e]:(console.warn("Formatter Error - No such formatter found: ",e),e=this.formatters.plaintext);break;case"function":e=e;break;default:e=this.formatters.plaintext}return e},x.prototype.formatters={plaintext:function(e,t,o){return this.emptyToSpace(this.sanitizeHTML(e.getValue()))},html:function(e,t,o){return e.getValue()},textarea:function(e,t,o){return e.getElement().style.whiteSpace="pre-wrap",this.emptyToSpace(this.sanitizeHTML(e.getValue()))},money:function(e,t,o){var i,n,s,r,a=parseFloat(e.getValue()),l=t.decimal||".",c=t.thousand||",",u=t.symbol||"",d=!!t.symbolAfter,h=void 0!==t.precision?t.precision:2;if(isNaN(a))return this.emptyToSpace(this.sanitizeHTML(e.getValue()));for(i=!1!==h?a.toFixed(h):a,i=String(i).split("."),n=i[0],s=i.length>1?l+i[1]:"",r=/(\d+)(\d{3})/;r.test(n);)n=n.replace(r,"$1"+c+"$2");return d?n+s+u:u+n+s},link:function(e,t,o){var i,n=e.getValue(),s=t.urlPrefix||"",r=t.download,a=n,l=document.createElement("a");if(t.labelField&&(i=e.getData(),a=i[t.labelField]),t.label)switch(_typeof(t.label)){case"string":a=t.label;break;case"function":a=t.label(e)}if(a){if(t.urlField&&(i=e.getData(),n=i[t.urlField]),t.url)switch(_typeof(t.url)){case"string":n=t.url;break;case"function":n=t.url(e)}return l.setAttribute("href",s+n),t.target&&l.setAttribute("target",t.target),t.download&&(r="function"==typeof r?r(e):!0===r?"":r,l.setAttribute("download",r)),l.innerHTML=this.emptyToSpace(this.sanitizeHTML(a)),l}return"&nbsp;"},image:function(e,t,o){var i=document.createElement("img");switch(i.setAttribute("src",e.getValue()),_typeof(t.height)){case"number":i.style.height=t.height+"px";break;case"string":i.style.height=t.height}switch(_typeof(t.width)){case"number":i.style.width=t.width+"px";break;case"string":i.style.width=t.width}return i.addEventListener("load",function(){e.getRow().normalizeHeight()}),i},tickCross:function(e,t,o){var i=e.getValue(),n=e.getElement(),s=t.allowEmpty,r=t.allowTruthy,a=void 0!==t.tickElement?t.tickElement:'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34  c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351  l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07  l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>',l=void 0!==t.crossElement?t.crossElement:'<svg enable-background="new 0 0 24 24" height="14" width="14"  viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272  c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0  l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269  c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73  L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>';return r&&i||!0===i||"true"===i||"True"===i||1===i||"1"===i?(n.setAttribute("aria-checked",!0),a||""):!s||"null"!==i&&""!==i&&null!==i&&void 0!==i?(n.setAttribute("aria-checked",!1),l||""):(n.setAttribute("aria-checked","mixed"),"")},datetime:function(e,t,o){var i=t.inputFormat||"YYYY-MM-DD hh:mm:ss",n=t.outputFormat||"DD/MM/YYYY hh:mm:ss",s=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",r=e.getValue(),a=moment(r,i);return a.isValid()?a.format(n):!0===s?r:"function"==typeof s?s(r):s},datetimediff:function(e,t,o){var i=t.inputFormat||"YYYY-MM-DD hh:mm:ss",n=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",s=void 0!==t.suffix&&t.suffix,r=void 0!==t.unit?t.unit:void 0,a=void 0!==t.humanize&&t.humanize,l=void 0!==t.date?t.date:moment(),c=e.getValue(),u=moment(c,i);return u.isValid()?a?moment.duration(u.diff(l)).humanize(s):u.diff(l,r)+(s?" "+s:""):!0===n?c:"function"==typeof n?n(c):n},lookup:function(e,t,o){var i=e.getValue();return void 0===t[i]?(console.warn("Missing display value for "+i),i):t[i]},star:function(e,t,o){var i=e.getValue(),n=e.getElement(),s=t&&t.stars?t.stars:5,r=document.createElement("span"),a=document.createElementNS("http://www.w3.org/2000/svg","svg");r.style.verticalAlign="middle",a.setAttribute("width","14"),a.setAttribute("height","14"),a.setAttribute("viewBox","0 0 512 512"),a.setAttribute("xml:space","preserve"),a.style.padding="0 1px",i=i&&!isNaN(i)?parseInt(i):0,i=Math.max(0,Math.min(i,s));for(var l=1;l<=s;l++){var c=a.cloneNode(!0);c.innerHTML=l<=i?'<polygon fill="#FFEA00" stroke="#C1AB60" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>':'<polygon fill="#D2D2D2" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>',r.appendChild(c)}return n.style.whiteSpace="nowrap",n.style.overflow="hidden",n.style.textOverflow="ellipsis",n.setAttribute("aria-label",i),r},traffic:function(e,t,o){var i,n,s=this.sanitizeHTML(e.getValue())||0,r=document.createElement("span"),a=t&&t.max?t.max:100,l=t&&t.min?t.min:0,c=t&&void 0!==t.color?t.color:["red","orange","green"],u="#666666";if(!isNaN(s)&&void 0!==e.getValue()){switch(r.classList.add("tabulator-traffic-light"),n=parseFloat(s)<=a?parseFloat(s):a,n=parseFloat(n)>=l?parseFloat(n):l,i=(a-l)/100,n=Math.round((n-l)/i),void 0===c?"undefined":_typeof(c)){case"string":u=c;break;case"function":u=c(s);break;case"object":if(Array.isArray(c)){var d=100/c.length,h=Math.floor(n/d);h=Math.min(h,c.length-1),h=Math.max(h,0),u=c[h];break}}return r.style.backgroundColor=u,r}},progress:function(e,t,o){var i,n,s,r,l,c=this.sanitizeHTML(e.getValue())||0,u=e.getElement(),d=t&&t.max?t.max:100,h=t&&t.min?t.min:0,p=t&&t.legendAlign?t.legendAlign:"center";switch(n=parseFloat(c)<=d?parseFloat(c):d,n=parseFloat(n)>=h?parseFloat(n):h,i=(d-h)/100,n=Math.round((n-h)/i),_typeof(t.color)){case"string":s=t.color;break;case"function":s=t.color(c);break;case"object":if(Array.isArray(t.color)){var m=100/t.color.length,f=Math.floor(n/m);f=Math.min(f,t.color.length-1),f=Math.max(f,0),s=t.color[f];break}default:s="#2DC214"}switch(_typeof(t.legend)){case"string":r=t.legend;break;case"function":r=t.legend(c);break;case"boolean":r=c;break;default:r=!1}switch(_typeof(t.legendColor)){case"string":l=t.legendColor;break;case"function":l=t.legendColor(c);break;case"object":if(Array.isArray(t.legendColor)){var m=100/t.legendColor.length,f=Math.floor(n/m);f=Math.min(f,t.legendColor.length-1),f=Math.max(f,0),l=t.legendColor[f]}break;default:l="#000"}u.style.minWidth="30px",u.style.position="relative",u.setAttribute("aria-label",n);var g=document.createElement("div");if(g.style.display="inline-block",g.style.position="relative",g.style.width=n+"%",g.style.backgroundColor=s,g.style.height="100%",g.setAttribute("data-max",d),g.setAttribute("data-min",h),r){var b=document.createElement("div");b.style.position="absolute",b.style.top="4px",b.style.left=0,b.style.textAlign=p,b.style.width="100%",b.style.color=l,b.innerHTML=r}return o(function(){if(!(e instanceof a)){var t=document.createElement("div");t.style.position="absolute",t.style.top="4px",t.style.bottom="4px",t.style.left="4px",t.style.right="4px",u.appendChild(t),u=t}u.appendChild(g),r&&u.appendChild(b)}),""},color:function(e,t,o){return e.getElement().style.backgroundColor=this.sanitizeHTML(e.getValue()),""},buttonTick:function(e,t,o){return'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34  c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351  l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07  l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>'},buttonCross:function(e,t,o){return'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272  c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0  l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269  c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73  L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>'},rownum:function(e,t,o){return this.table.rowManager.activeRows.indexOf(e.getRow()._getSelf())+1},handle:function(e,t,o){return e.getElement().classList.add("tabulator-row-handle"),"<div class='tabulator-row-handle-box'><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div></div>"},responsiveCollapse:function(e,t,o){function i(e){var t=s.element;s.open=e,
-t&&(s.open?(n.classList.add("open"),t.style.display=""):(n.classList.remove("open"),t.style.display="none"))}var n=document.createElement("div"),s=e.getRow()._row.modules.responsiveLayout;return n.classList.add("tabulator-responsive-collapse-toggle"),n.innerHTML="<span class='tabulator-responsive-collapse-toggle-open'>+</span><span class='tabulator-responsive-collapse-toggle-close'>-</span>",e.getElement().classList.add("tabulator-row-handle"),n.addEventListener("click",function(e){e.stopImmediatePropagation(),i(!s.open)}),i(s.open),n},rowSelection:function(e){var t=this,o=document.createElement("input");if(o.type="checkbox",this.table.modExists("selectRow",!0))if(o.addEventListener("click",function(e){e.stopPropagation()}),"function"==typeof e.getRow){var i=e.getRow();o.addEventListener("change",function(e){i.toggleSelect()}),o.checked=i.isSelected(),this.table.modules.selectRow.registerRowSelectCheckbox(i,o)}else o.addEventListener("change",function(e){t.table.modules.selectRow.selectedRows.length?t.table.deselectRow():t.table.selectRow()}),this.table.modules.selectRow.registerHeaderSelectCheckbox(o);return o}},u.prototype.registerModule("format",x);var R=function(e){this.table=e,this.leftColumns=[],this.rightColumns=[],this.leftMargin=0,this.rightMargin=0,this.rightPadding=0,this.initializationMode="left",this.active=!1,this.scrollEndTimer=!1};R.prototype.reset=function(){this.initializationMode="left",this.leftColumns=[],this.rightColumns=[],this.leftMargin=0,this.rightMargin=0,this.rightMargin=0,this.active=!1,this.table.columnManager.headersElement.style.marginLeft=0,this.table.columnManager.element.style.paddingRight=0},R.prototype.initializeColumn=function(e){var t={margin:0,edge:!1};e.isGroup||(this.frozenCheck(e)?(t.position=this.initializationMode,"left"==this.initializationMode?this.leftColumns.push(e):this.rightColumns.unshift(e),this.active=!0,e.modules.frozen=t):this.initializationMode="right")},R.prototype.frozenCheck=function(e){return e.parent.isGroup&&e.definition.frozen&&console.warn("Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups"),e.parent.isGroup?this.frozenCheck(e.parent):e.definition.frozen},R.prototype.scrollHorizontal=function(){var e,t=this;this.active&&(clearTimeout(this.scrollEndTimer),this.scrollEndTimer=setTimeout(function(){t.layout()},100),e=this.table.rowManager.getVisibleRows(),this.calcMargins(),this.layoutColumnPosition(),this.layoutCalcRows(),e.forEach(function(e){"row"===e.type&&t.layoutRow(e)}),this.table.rowManager.tableElement.style.marginRight=this.rightMargin)},R.prototype.calcMargins=function(){this.leftMargin=this._calcSpace(this.leftColumns,this.leftColumns.length)+"px",this.table.columnManager.headersElement.style.marginLeft=this.leftMargin,this.rightMargin=this._calcSpace(this.rightColumns,this.rightColumns.length)+"px",this.table.columnManager.element.style.paddingRight=this.rightMargin,this.rightPadding=this.table.rowManager.element.clientWidth+this.table.columnManager.scrollLeft},R.prototype.layoutCalcRows=function(){this.table.modExists("columnCalcs")&&(this.table.modules.columnCalcs.topInitialized&&this.table.modules.columnCalcs.topRow&&this.layoutRow(this.table.modules.columnCalcs.topRow),this.table.modules.columnCalcs.botInitialized&&this.table.modules.columnCalcs.botRow&&this.layoutRow(this.table.modules.columnCalcs.botRow))},R.prototype.layoutColumnPosition=function(e){var t=this,o=[];this.leftColumns.forEach(function(i,n){if(i.modules.frozen.margin=t._calcSpace(t.leftColumns,n)+t.table.columnManager.scrollLeft+"px",n==t.leftColumns.length-1?i.modules.frozen.edge=!0:i.modules.frozen.edge=!1,i.parent.isGroup){var s=t.getColGroupParentElement(i);o.includes(s)||(t.layoutElement(s,i),o.push(s)),i.modules.frozen.edge&&s.classList.add("tabulator-frozen-"+i.modules.frozen.position)}else t.layoutElement(i.getElement(),i);e&&i.cells.forEach(function(e){t.layoutElement(e.getElement(),i)})}),this.rightColumns.forEach(function(o,i){o.modules.frozen.margin=t.rightPadding-t._calcSpace(t.rightColumns,i+1)+"px",i==t.rightColumns.length-1?o.modules.frozen.edge=!0:o.modules.frozen.edge=!1,o.parent.isGroup?t.layoutElement(t.getColGroupParentElement(o),o):t.layoutElement(o.getElement(),o),e&&o.cells.forEach(function(e){t.layoutElement(e.getElement(),o)})})},R.prototype.getColGroupParentElement=function(e){return e.parent.isGroup?this.getColGroupParentElement(e.parent):e.getElement()},R.prototype.layout=function(){var e=this;e.active&&(this.calcMargins(),e.table.rowManager.getDisplayRows().forEach(function(t){"row"===t.type&&e.layoutRow(t)}),this.layoutCalcRows(),this.layoutColumnPosition(!0),this.table.rowManager.tableElement.style.marginRight=this.rightMargin)},R.prototype.layoutRow=function(e){var t=this;e.getElement().style.paddingLeft=this.leftMargin,this.leftColumns.forEach(function(o){var i=e.getCell(o);i&&t.layoutElement(i.getElement(),o)}),this.rightColumns.forEach(function(o){var i=e.getCell(o);i&&t.layoutElement(i.getElement(),o)})},R.prototype.layoutElement=function(e,t){t.modules.frozen&&(e.style.position="absolute",e.style.left=t.modules.frozen.margin,e.classList.add("tabulator-frozen"),t.modules.frozen.edge&&e.classList.add("tabulator-frozen-"+t.modules.frozen.position))},R.prototype._calcSpace=function(e,t){for(var o=0,i=0;i<t;i++)e[i].visible&&(o+=e[i].getWidth());return o},u.prototype.registerModule("frozenColumns",R);var M=function(e){this.table=e,this.topElement=document.createElement("div"),this.rows=[],this.displayIndex=0};M.prototype.initialize=function(){this.rows=[],this.topElement.classList.add("tabulator-frozen-rows-holder"),this.table.columnManager.getElement().insertBefore(this.topElement,this.table.columnManager.headersElement.nextSibling)},M.prototype.setDisplayIndex=function(e){this.displayIndex=e},M.prototype.getDisplayIndex=function(){return this.displayIndex},M.prototype.isFrozen=function(){return!!this.rows.length},M.prototype.getRows=function(e){var t=e.slice(0);return this.rows.forEach(function(e){var o=t.indexOf(e);o>-1&&t.splice(o,1)}),t},M.prototype.freezeRow=function(e){e.modules.frozen?console.warn("Freeze Error - Row is already frozen"):(e.modules.frozen=!0,this.topElement.appendChild(e.getElement()),e.initialize(),e.normalizeHeight(),this.table.rowManager.adjustTableSize(),this.rows.push(e),this.table.rowManager.refreshActiveData("display"),this.styleRows())},M.prototype.unfreezeRow=function(e){var t=this.rows.indexOf(e);if(e.modules.frozen){e.modules.frozen=!1;var o=e.getElement();o.parentNode.removeChild(o),this.table.rowManager.adjustTableSize(),this.rows.splice(t,1),this.table.rowManager.refreshActiveData("display"),this.rows.length&&this.styleRows()}else console.warn("Freeze Error - Row is already unfrozen")},M.prototype.styleRows=function(e){var t=this;this.rows.forEach(function(e,o){t.table.rowManager.styleRow(e,o)})},u.prototype.registerModule("frozenRows",M);var L=function(e){this._group=e,this.type="GroupComponent"};L.prototype.getKey=function(){return this._group.key},L.prototype.getField=function(){return this._group.field},L.prototype.getElement=function(){return this._group.element},L.prototype.getRows=function(){return this._group.getRows(!0)},L.prototype.getSubGroups=function(){return this._group.getSubGroups(!0)},L.prototype.getParentGroup=function(){return!!this._group.parent&&this._group.parent.getComponent()},L.prototype.getVisibility=function(){return this._group.visible},L.prototype.show=function(){this._group.show()},L.prototype.hide=function(){this._group.hide()},L.prototype.toggle=function(){this._group.toggleVisibility()},L.prototype._getSelf=function(){return this._group},L.prototype.getTable=function(){return this._group.groupManager.table};var T=function(e,t,o,i,n,s,r){this.groupManager=e,this.parent=t,this.key=i,this.level=o,this.field=n,this.hasSubGroups=o<e.groupIDLookups.length-1,this.addRow=this.hasSubGroups?this._addRowToGroup:this._addRow,this.type="group",this.old=r,this.rows=[],this.groups=[],this.groupList=[],this.generator=s,this.elementContents=!1,this.height=0,this.outerHeight=0,this.initialized=!1,this.calcs={},this.initialized=!1,this.modules={},this.arrowElement=!1,this.visible=r?r.visible:void 0!==e.startOpen[o]?e.startOpen[o]:e.startOpen[0],this.createElements(),this.addBindings(),this.createValueGroups()};T.prototype.wipe=function(){this.groupList.length?this.groupList.forEach(function(e){e.wipe()}):(this.element=!1,this.arrowElement=!1,this.elementContents=!1)},T.prototype.createElements=function(){var e=document.createElement("div");e.classList.add("tabulator-arrow"),this.element=document.createElement("div"),this.element.classList.add("tabulator-row"),this.element.classList.add("tabulator-group"),this.element.classList.add("tabulator-group-level-"+this.level),this.element.setAttribute("role","rowgroup"),this.arrowElement=document.createElement("div"),this.arrowElement.classList.add("tabulator-group-toggle"),this.arrowElement.appendChild(e),!1!==this.groupManager.table.options.movableRows&&this.groupManager.table.modExists("moveRow")&&this.groupManager.table.modules.moveRow.initializeGroupHeader(this)},T.prototype.createValueGroups=function(){var e=this,t=this.level+1;this.groupManager.allowedValues&&this.groupManager.allowedValues[t]&&this.groupManager.allowedValues[t].forEach(function(o){e._createGroup(o,t)})},T.prototype.addBindings=function(){var e,t,o,i,n=this;n.groupManager.table.options.groupClick&&n.element.addEventListener("click",function(e){n.groupManager.table.options.groupClick.call(n.groupManager.table,e,n.getComponent())}),n.groupManager.table.options.groupDblClick&&n.element.addEventListener("dblclick",function(e){n.groupManager.table.options.groupDblClick.call(n.groupManager.table,e,n.getComponent())}),n.groupManager.table.options.groupContext&&n.element.addEventListener("contextmenu",function(e){n.groupManager.table.options.groupContext.call(n.groupManager.table,e,n.getComponent())}),n.groupManager.table.options.groupTap&&(o=!1,n.element.addEventListener("touchstart",function(e){o=!0},{passive:!0}),n.element.addEventListener("touchend",function(e){o&&n.groupManager.table.options.groupTap(e,n.getComponent()),o=!1})),n.groupManager.table.options.groupDblTap&&(e=null,n.element.addEventListener("touchend",function(t){e?(clearTimeout(e),e=null,n.groupManager.table.options.groupDblTap(t,n.getComponent())):e=setTimeout(function(){clearTimeout(e),e=null},300)})),n.groupManager.table.options.groupTapHold&&(t=null,n.element.addEventListener("touchstart",function(e){clearTimeout(t),t=setTimeout(function(){clearTimeout(t),t=null,o=!1,n.groupManager.table.options.groupTapHold(e,n.getComponent())},1e3)},{passive:!0}),n.element.addEventListener("touchend",function(e){clearTimeout(t),t=null})),n.groupManager.table.options.groupToggleElement&&(i="arrow"==n.groupManager.table.options.groupToggleElement?n.arrowElement:n.element,i.addEventListener("click",function(e){e.stopPropagation(),e.stopImmediatePropagation(),n.toggleVisibility()}))},T.prototype._createGroup=function(e,t){var o=t+"_"+e,i=new T(this.groupManager,this,t,e,this.groupManager.groupIDLookups[t].field,this.groupManager.headerGenerator[t]||this.groupManager.headerGenerator[0],!!this.old&&this.old.groups[o]);this.groups[o]=i,this.groupList.push(i)},T.prototype._addRowToGroup=function(e){var t=this.level+1;if(this.hasSubGroups){var o=this.groupManager.groupIDLookups[t].func(e.getData()),i=t+"_"+o;this.groupManager.allowedValues&&this.groupManager.allowedValues[t]?this.groups[i]&&this.groups[i].addRow(e):(this.groups[i]||this._createGroup(o,t),this.groups[i].addRow(e))}},T.prototype._addRow=function(e){this.rows.push(e),e.modules.group=this},T.prototype.insertRow=function(e,t,o){var i=this.conformRowData({});e.updateData(i);var n=this.rows.indexOf(t);n>-1?o?this.rows.splice(n+1,0,e):this.rows.splice(n,0,e):o?this.rows.push(e):this.rows.unshift(e),e.modules.group=this,this.generateGroupHeaderContents(),this.groupManager.table.modExists("columnCalcs")&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modules.columnCalcs.recalcGroup(this),this.groupManager.updateGroupRows(!0)},T.prototype.scrollHeader=function(e){this.arrowElement.style.marginLeft=e,this.groupList.forEach(function(t){t.scrollHeader(e)})},T.prototype.getRowIndex=function(e){},T.prototype.conformRowData=function(e){return this.field?e[this.field]=this.key:console.warn("Data Conforming Error - Cannot conform row data to match new group as groupBy is a function"),this.parent&&(e=this.parent.conformRowData(e)),e},T.prototype.removeRow=function(e){var t=this.rows.indexOf(e),o=e.getElement();t>-1&&this.rows.splice(t,1),this.groupManager.table.options.groupValues||this.rows.length?(o.parentNode&&o.parentNode.removeChild(o),this.generateGroupHeaderContents(),this.groupManager.table.modExists("columnCalcs")&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modules.columnCalcs.recalcGroup(this)):(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this),this.groupManager.updateGroupRows(!0))},T.prototype.removeGroup=function(e){var t,o=e.level+"_"+e.key;this.groups[o]&&(delete this.groups[o],t=this.groupList.indexOf(e),t>-1&&this.groupList.splice(t,1),this.groupList.length||(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this)))},T.prototype.getHeadersAndRows=function(e){var t=[];return t.push(this),this._visSet(),this.visible?this.groupList.length?this.groupList.forEach(function(o){t=t.concat(o.getHeadersAndRows(e))}):(!e&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),t.push(this.calcs.top)),t=t.concat(this.rows),!e&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),t.push(this.calcs.bottom))):this.groupList.length||"table"==this.groupManager.table.options.columnCalcs||this.groupManager.table.modExists("columnCalcs")&&(!e&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),t.push(this.calcs.top))),!e&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),t.push(this.calcs.bottom)))),t},T.prototype.getData=function(e,t){var o=[];return this._visSet(),(!e||e&&this.visible)&&this.rows.forEach(function(e){o.push(e.getData(t||"data"))}),o},T.prototype.getRowCount=function(){var e=0;return this.groupList.length?this.groupList.forEach(function(t){e+=t.getRowCount()}):e=this.rows.length,e},T.prototype.toggleVisibility=function(){this.visible?this.hide():this.show()},T.prototype.hide=function(){this.visible=!1,"classic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination?this.groupManager.updateGroupRows(!0):(this.element.classList.remove("tabulator-group-visible"),this.groupList.length?this.groupList.forEach(function(e){e.getHeadersAndRows().forEach(function(e){e.detachElement()})}):this.rows.forEach(function(e){var t=e.getElement();t.parentNode.removeChild(t)}),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()),this.groupManager.table.options.groupVisibilityChanged.call(this.table,this.getComponent(),!1)},T.prototype.show=function(){var e=this;if(e.visible=!0,"classic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination)this.groupManager.updateGroupRows(!0);else{this.element.classList.add("tabulator-group-visible");var t=e.getElement();this.groupList.length?this.groupList.forEach(function(e){e.getHeadersAndRows().forEach(function(e){var o=e.getElement();t.parentNode.insertBefore(o,t.nextSibling),e.initialize(),t=o})}):e.rows.forEach(function(e){var o=e.getElement();t.parentNode.insertBefore(o,t.nextSibling),e.initialize(),t=o}),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()}this.groupManager.table.options.groupVisibilityChanged.call(this.table,this.getComponent(),!0)},T.prototype._visSet=function(){var e=[];"function"==typeof this.visible&&(this.rows.forEach(function(t){e.push(t.getData())}),this.visible=this.visible(this.key,this.getRowCount(),e,this.getComponent()))},T.prototype.getRowGroup=function(e){var t=!1;return this.groupList.length?this.groupList.forEach(function(o){var i=o.getRowGroup(e);i&&(t=i)}):this.rows.find(function(t){return t===e})&&(t=this),t},T.prototype.getSubGroups=function(e){var t=[];return this.groupList.forEach(function(o){t.push(e?o.getComponent():o)}),t},T.prototype.getRows=function(e){var t=[];return this.rows.forEach(function(o){t.push(e?o.getComponent():o)}),t},T.prototype.generateGroupHeaderContents=function(){var e=[];for(this.rows.forEach(function(t){e.push(t.getData())}),this.elementContents=this.generator(this.key,this.getRowCount(),e,this.getComponent());this.element.firstChild;)this.element.removeChild(this.element.firstChild);"string"==typeof this.elementContents?this.element.innerHTML=this.elementContents:this.element.appendChild(this.elementContents),this.element.insertBefore(this.arrowElement,this.element.firstChild)},T.prototype.getElement=function(){this.addBindingsd=!1,this._visSet(),this.visible?this.element.classList.add("tabulator-group-visible"):this.element.classList.remove("tabulator-group-visible");for(var e=0;e<this.element.childNodes.length;++e)this.element.childNodes[e].parentNode.removeChild(this.element.childNodes[e]);return this.generateGroupHeaderContents(),this.element},T.prototype.detachElement=function(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)},T.prototype.normalizeHeight=function(){this.setHeight(this.element.clientHeight)},T.prototype.initialize=function(e){this.initialized&&!e||(this.normalizeHeight(),this.initialized=!0)},T.prototype.reinitialize=function(){this.initialized=!1,this.height=0,u.prototype.helpers.elVisible(this.element)&&this.initialize(!0)},T.prototype.setHeight=function(e){this.height!=e&&(this.height=e,this.outerHeight=this.element.offsetHeight)},T.prototype.getHeight=function(){return this.outerHeight},T.prototype.getGroup=function(){return this},T.prototype.reinitializeHeight=function(){},T.prototype.calcHeight=function(){},T.prototype.setCellHeight=function(){},T.prototype.clearCellHeight=function(){},T.prototype.getComponent=function(){return new L(this)};var D=function(e){this.table=e,this.groupIDLookups=!1,this.startOpen=[function(){return!1}],this.headerGenerator=[function(){return""}],this.groupList=[],this.allowedValues=!1,this.groups={},this.displayIndex=0};D.prototype.initialize=function(){var e=this,t=e.table.options.groupBy,o=e.table.options.groupStartOpen,i=e.table.options.groupHeader;if(this.allowedValues=e.table.options.groupValues,Array.isArray(t)&&Array.isArray(i)&&t.length>i.length&&console.warn("Error creating group headers, groupHeader array is shorter than groupBy array"),e.headerGenerator=[function(){return""}],this.startOpen=[function(){return!1}],e.table.modules.localize.bind("groups|item",function(t,o){e.headerGenerator[0]=function(e,i,n){return(void 0===e?"":e)+"<span>("+i+" "+(1===i?t:o.groups.items)+")</span>"}}),this.groupIDLookups=[],Array.isArray(t)||t)this.table.modExists("columnCalcs")&&"table"!=this.table.options.columnCalcs&&"both"!=this.table.options.columnCalcs&&this.table.modules.columnCalcs.removeCalcs();else if(this.table.modExists("columnCalcs")&&"group"!=this.table.options.columnCalcs){var n=this.table.columnManager.getRealColumns();n.forEach(function(t){t.definition.topCalc&&e.table.modules.columnCalcs.initializeTopRow(),t.definition.bottomCalc&&e.table.modules.columnCalcs.initializeBottomRow()})}Array.isArray(t)||(t=[t]),t.forEach(function(t,o){var i,n;"function"==typeof t?i=t:(n=e.table.columnManager.getColumnByField(t),i=n?function(e){return n.getFieldValue(e)}:function(e){return e[t]}),e.groupIDLookups.push({field:"function"!=typeof t&&t,func:i,values:!!e.allowedValues&&e.allowedValues[o]})}),o&&(Array.isArray(o)||(o=[o]),o.forEach(function(e){e="function"==typeof e?e:function(){return!0}}),e.startOpen=o),i&&(e.headerGenerator=Array.isArray(i)?i:[i]),this.initialized=!0},D.prototype.setDisplayIndex=function(e){this.displayIndex=e},D.prototype.getDisplayIndex=function(){return this.displayIndex},D.prototype.getRows=function(e){return this.groupIDLookups.length?(this.table.options.dataGrouping.call(this.table),this.generateGroups(e),this.table.options.dataGrouped&&this.table.options.dataGrouped.call(this.table,this.getGroups(!0)),this.updateGroupRows()):e.slice(0)},D.prototype.getGroups=function(e){var t=[];return this.groupList.forEach(function(o){t.push(e?o.getComponent():o)}),t},D.prototype.getChildGroups=function(e){var t=this,o=[];return e||(e=this),e.groupList.forEach(function(e){e.groupList.length?o=o.concat(t.getChildGroups(e)):o.push(e)}),o},D.prototype.wipe=function(){this.groupList.forEach(function(e){e.wipe()})},D.prototype.pullGroupListData=function(e){var t=this,o=[];return e.forEach(function(e){var i={};i.level=0,i.rowCount=0,i.headerContent="";var n=[];e.hasSubGroups?(n=t.pullGroupListData(e.groupList),i.level=e.level,i.rowCount=n.length-e.groupList.length,i.headerContent=e.generator(e.key,i.rowCount,e.rows,e),o.push(i),o=o.concat(n)):(i.level=e.level,i.headerContent=e.generator(e.key,e.rows.length,e.rows,e),i.rowCount=e.getRows().length,o.push(i),e.getRows().forEach(function(e){o.push(e.getData("data"))}))}),o},D.prototype.getGroupedData=function(){return this.pullGroupListData(this.groupList)},D.prototype.getRowGroup=function(e){var t=!1;return this.groupList.forEach(function(o){var i=o.getRowGroup(e);i&&(t=i)}),t},D.prototype.countGroups=function(){return this.groupList.length},D.prototype.generateGroups=function(e){var t=this,o=t.groups;t.groups={},t.groupList=[],this.allowedValues&&this.allowedValues[0]?(this.allowedValues[0].forEach(function(e){t.createGroup(e,0,o)}),e.forEach(function(e){t.assignRowToExistingGroup(e,o)})):e.forEach(function(e){t.assignRowToGroup(e,o)})},D.prototype.createGroup=function(e,t,o){var i,n=t+"_"+e;o=o||[],i=new T(this,!1,t,e,this.groupIDLookups[0].field,this.headerGenerator[0],o[n]),this.groups[n]=i,this.groupList.push(i)},D.prototype.assignRowToExistingGroup=function(e,t){var o=this.groupIDLookups[0].func(e.getData()),i="0_"+o;this.groups[i]&&this.groups[i].addRow(e)},D.prototype.assignRowToGroup=function(e,t){var o=this.groupIDLookups[0].func(e.getData()),i=!this.groups["0_"+o];return i&&this.createGroup(o,0,t),this.groups["0_"+o].addRow(e),!i},D.prototype.updateGroupRows=function(e){var t=this,o=[];if(t.groupList.forEach(function(e){o=o.concat(e.getHeadersAndRows())}),e){var i=t.table.rowManager.setDisplayRows(o,this.getDisplayIndex());!0!==i&&this.setDisplayIndex(i),t.table.rowManager.refreshActiveData("group",!0,!0)}return o},D.prototype.scrollHeaders=function(e){e+="px",this.groupList.forEach(function(t){t.scrollHeader(e)})},D.prototype.removeGroup=function(e){var t,o=e.level+"_"+e.key;this.groups[o]&&(delete this.groups[o],(t=this.groupList.indexOf(e))>-1&&this.groupList.splice(t,1))},u.prototype.registerModule("groupRows",D);var k=function(e){this.table=e,this.history=[],this.index=-1};k.prototype.clear=function(){this.history=[],this.index=-1},k.prototype.action=function(e,t,o){this.history=this.history.slice(0,this.index+1),this.history.push({type:e,component:t,data:o}),this.index++},k.prototype.getHistoryUndoSize=function(){return this.index+1},k.prototype.getHistoryRedoSize=function(){return this.history.length-(this.index+1)},k.prototype.undo=function(){if(this.index>-1){var e=this.history[this.index];return this.undoers[e.type].call(this,e),this.index--,this.table.options.historyUndo.call(this.table,e.type,e.component.getComponent(),e.data),!0}return console.warn("History Undo Error - No more history to undo"),!1},k.prototype.redo=function(){if(this.history.length-1>this.index){this.index++;var e=this.history[this.index];return this.redoers[e.type].call(this,e),this.table.options.historyRedo.call(this.table,e.type,e.component.getComponent(),e.data),!0}return console.warn("History Redo Error - No more history to redo"),!1},k.prototype.undoers={cellEdit:function(e){e.component.setValueProcessData(e.data.oldValue)},rowAdd:function(e){e.component.deleteActual()},rowDelete:function(e){var t=this.table.rowManager.addRowActual(e.data.data,e.data.pos,e.data.index);this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.updateGroupRows(!0),this._rebindRow(e.component,t)},rowMove:function(e){this.table.rowManager.moveRowActual(e.component,this.table.rowManager.rows[e.data.posFrom],!e.data.after),this.table.rowManager.redraw()}},k.prototype.redoers={cellEdit:function(e){e.component.setValueProcessData(e.data.newValue)},rowAdd:function(e){var t=this.table.rowManager.addRowActual(e.data.data,e.data.pos,e.data.index);this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.updateGroupRows(!0),this._rebindRow(e.component,t)},rowDelete:function(e){e.component.deleteActual()},rowMove:function(e){this.table.rowManager.moveRowActual(e.component,this.table.rowManager.rows[e.data.posTo],e.data.after),this.table.rowManager.redraw()}},k.prototype._rebindRow=function(e,t){this.history.forEach(function(o){if(o.component instanceof r)o.component===e&&(o.component=t);else if(o.component instanceof l&&o.component.row===e){var i=o.component.column.getField();i&&(o.component=t.getCell(i))}})},u.prototype.registerModule("history",k);var S=function(e){this.table=e,this.fieldIndex=[],this.hasIndex=!1};S.prototype.parseTable=function(){var e=this,t=e.table.element,o=e.table.options,i=(o.columns,t.getElementsByTagName("th")),n=t.getElementsByTagName("tbody")[0],s=[];e.hasIndex=!1,e.table.options.htmlImporting.call(this.table),n=n?n.getElementsByTagName("tr"):[],e._extractOptions(t,o),i.length?e._extractHeaders(i,n):e._generateBlankHeaders(i,n);for(var r=0;r<n.length;r++){var a=n[r],l=a.getElementsByTagName("td"),c={};e.hasIndex||(c[o.index]=r);for(var u=0;u<l.length;u++){var d=l[u];void 0!==this.fieldIndex[u]&&(c[this.fieldIndex[u]]=d.innerHTML)}s.push(c)}var h=document.createElement("div"),p=t.attributes;for(var u in p)"object"==_typeof(p[u])&&h.setAttribute(p[u].name,p[u].value);t.parentNode.replaceChild(h,t),o.data=s,e.table.options.htmlImported.call(this.table),this.table.element=h},S.prototype._extractOptions=function(e,t,o){var i=e.attributes,n=o?Object.assign([],o):Object.keys(t),s={};n.forEach(function(e){s[e.toLowerCase()]=e});for(var r in i){var a,l=i[r];l&&"object"==(void 0===l?"undefined":_typeof(l))&&l.name&&0===l.name.indexOf("tabulator-")&&(a=l.name.replace("tabulator-",""),void 0!==s[a]&&(t[s[a]]=this._attribValue(l.value)))}},S.prototype._attribValue=function(e){return"true"===e||"false"!==e&&e},S.prototype._findCol=function(e){return this.table.options.columns.find(function(t){return t.title===e})||!1},S.prototype._extractHeaders=function(e,t){for(var o=0;o<e.length;o++){var n,s=e[o],r=!1,a=this._findCol(s.textContent);a?r=!0:a={title:s.textContent.trim()},a.field||(a.field=s.textContent.trim().toLowerCase().replace(" ","_")),n=s.getAttribute("width"),n&&!a.width&&(a.width=n),s.attributes,this._extractOptions(s,a,i.prototype.defaultOptionList),this.fieldIndex[o]=a.field,a.field==this.table.options.index&&(this.hasIndex=!0),r||this.table.options.columns.push(a)}},S.prototype._generateBlankHeaders=function(e,t){for(var o=0;o<e.length;o++){var i=e[o],n={title:"",field:"col"+o};this.fieldIndex[o]=n.field;var s=i.getAttribute("width");s&&(n.width=s),this.table.options.columns.push(n)}},u.prototype.registerModule("htmlTableImport",S);var z=function(e){this.table=e,this.watchKeys=null,this.pressedKeys=null,this.keyupBinding=!1,this.keydownBinding=!1};z.prototype.initialize=function(){var e=this.table.options.keybindings,t={};if(this.watchKeys={},this.pressedKeys=[],!1!==e){for(var o in this.bindings)t[o]=this.bindings[o];if(Object.keys(e).length)for(var i in e)t[i]=e[i];this.mapBindings(t),this.bindEvents()}},z.prototype.mapBindings=function(e){var t=this,o=this;for(var i in e)!function(i){t.actions[i]?e[i]&&("object"!==_typeof(e[i])&&(e[i]=[e[i]]),e[i].forEach(function(e){o.mapBinding(i,e)})):console.warn("Key Binding Error - no such action:",i)}(i)},z.prototype.mapBinding=function(e,t){var o=this,i={action:this.actions[e],keys:[],ctrl:!1,shift:!1,meta:!1};t.toString().toLowerCase().split(" ").join("").split("+").forEach(function(e){switch(e){case"ctrl":i.ctrl=!0;break;case"shift":i.shift=!0;break;case"meta":i.meta=!0;break;default:e=parseInt(e),i.keys.push(e),o.watchKeys[e]||(o.watchKeys[e]=[]),o.watchKeys[e].push(i)}})},z.prototype.bindEvents=function(){var e=this;this.keyupBinding=function(t){var o=t.keyCode,i=e.watchKeys[o];i&&(e.pressedKeys.push(o),i.forEach(function(o){e.checkBinding(t,o)}))},this.keydownBinding=function(t){var o=t.keyCode;if(e.watchKeys[o]){var i=e.pressedKeys.indexOf(o);i>-1&&e.pressedKeys.splice(i,1)}},this.table.element.addEventListener("keydown",this.keyupBinding),this.table.element.addEventListener("keyup",this.keydownBinding)},z.prototype.clearBindings=function(){this.keyupBinding&&this.table.element.removeEventListener("keydown",this.keyupBinding),this.keydownBinding&&this.table.element.removeEventListener("keyup",this.keydownBinding)},z.prototype.checkBinding=function(e,t){var o=this,i=!0;return e.ctrlKey==t.ctrl&&e.shiftKey==t.shift&&e.metaKey==t.meta&&(t.keys.forEach(function(e){-1==o.pressedKeys.indexOf(e)&&(i=!1)}),i&&t.action.call(o,e),!0)},z.prototype.bindings={navPrev:"shift + 9",navNext:9,navUp:38,navDown:40,scrollPageUp:33,scrollPageDown:34,scrollToStart:36,scrollToEnd:35,undo:"ctrl + 90",redo:"ctrl + 89",copyToClipboard:"ctrl + 67"},z.prototype.actions={keyBlock:function(e){e.stopPropagation(),e.preventDefault()},scrollPageUp:function(e){var t=this.table.rowManager,o=t.scrollTop-t.height;t.element.scrollHeight;e.preventDefault(),t.displayRowsCount&&(o>=0?t.element.scrollTop=o:t.scrollToRow(t.getDisplayRows()[0])),this.table.element.focus()},scrollPageDown:function(e){var t=this.table.rowManager,o=t.scrollTop+t.height,i=t.element.scrollHeight;e.preventDefault(),t.displayRowsCount&&(o<=i?t.element.scrollTop=o:t.scrollToRow(t.getDisplayRows()[t.displayRowsCount-1])),this.table.element.focus()},scrollToStart:function(e){var t=this.table.rowManager;e.preventDefault(),t.displayRowsCount&&t.scrollToRow(t.getDisplayRows()[0]),this.table.element.focus()},scrollToEnd:function(e){var t=this.table.rowManager;e.preventDefault(),t.displayRowsCount&&t.scrollToRow(t.getDisplayRows()[t.displayRowsCount-1]),this.table.element.focus()},navPrev:function(e){var t=!1;this.table.modExists("edit")&&(t=this.table.modules.edit.currentCell)&&(e.preventDefault(),t.nav().prev())},navNext:function(e){var t,o=!1,i=this.table.options.tabEndNewRow
-;this.table.modExists("edit")&&(o=this.table.modules.edit.currentCell)&&(e.preventDefault(),t=o.nav(),t.next()||i&&(o.getElement().firstChild.blur(),i=!0===i?this.table.addRow({}):"function"==typeof i?this.table.addRow(i(o.row.getComponent())):this.table.addRow(i),i.then(function(){setTimeout(function(){t.next()})})))},navLeft:function(e){var t=!1;this.table.modExists("edit")&&(t=this.table.modules.edit.currentCell)&&(e.preventDefault(),t.nav().left())},navRight:function(e){var t=!1;this.table.modExists("edit")&&(t=this.table.modules.edit.currentCell)&&(e.preventDefault(),t.nav().right())},navUp:function(e){var t=!1;this.table.modExists("edit")&&(t=this.table.modules.edit.currentCell)&&(e.preventDefault(),t.nav().up())},navDown:function(e){var t=!1;this.table.modExists("edit")&&(t=this.table.modules.edit.currentCell)&&(e.preventDefault(),t.nav().down())},undo:function(e){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(e.preventDefault(),this.table.modules.history.undo()))},redo:function(e){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(e.preventDefault(),this.table.modules.history.redo()))},copyToClipboard:function(e){this.table.modules.edit.currentCell||this.table.modExists("clipboard",!0)&&this.table.modules.clipboard.copy(!1,!0)}},u.prototype.registerModule("keybindings",z);var H=function(e){this.table=e,this.menuEl=!1,this.blurEvent=this.hideMenu.bind(this)};H.prototype.initializeColumnHeader=function(e){var t,o=this;e.definition.headerContextMenu&&e.getElement().addEventListener("contextmenu",function(t){var i="function"==typeof e.definition.headerContextMenu?e.definition.headerContextMenu(e.getComponent()):e.definition.headerContextMenu;t.preventDefault(),o.loadMenu(t,e,i)}),e.definition.headerMenu&&(t=document.createElement("span"),t.classList.add("tabulator-header-menu-button"),t.innerHTML="&vellip;",t.addEventListener("click",function(t){var i="function"==typeof e.definition.headerMenu?e.definition.headerMenu(e.getComponent()):e.definition.headerMenu;t.stopPropagation(),t.preventDefault(),o.loadMenu(t,e,i)}),e.titleElement.insertBefore(t,e.titleElement.firstChild))},H.prototype.initializeCell=function(e){var t=this;e.getElement().addEventListener("contextmenu",function(o){var i="function"==typeof e.column.definition.contextMenu?e.column.definition.contextMenu(e.getComponent()):e.column.definition.contextMenu;o.preventDefault(),t.loadMenu(o,e,i)})},H.prototype.initializeRow=function(e){var t=this;e.getElement().addEventListener("contextmenu",function(o){var i="function"==typeof t.table.options.rowContextMenu?t.table.options.rowContextMenu(e.getComponent()):t.table.options.rowContextMenu;o.preventDefault(),t.loadMenu(o,e,i)})},H.prototype.loadMenu=function(e,t,o){var i=this,n=Math.max(document.body.offsetHeight,window.innerHeight);o&&o.length&&(this.hideMenu(),this.menuEl=document.createElement("div"),this.menuEl.classList.add("tabulator-menu"),o.forEach(function(e){var o=document.createElement("div"),n=e.label,s=e.disabled;e.separator?o.classList.add("tabulator-menu-separator"):(o.classList.add("tabulator-menu-item"),"function"==typeof n&&(n=n(t.getComponent())),n instanceof Node?o.appendChild(n):o.innerHTML=n,"function"==typeof s&&(s=s(t.getComponent())),s?(o.classList.add("tabulator-menu-item-disabled"),o.addEventListener("click",function(e){e.stopPropagation()})):o.addEventListener("click",function(o){i.hideMenu(),e.action(o,t.getComponent())})),i.menuEl.appendChild(o)}),this.menuEl.style.top=e.pageY+"px",this.menuEl.style.left=e.pageX+"px",document.body.addEventListener("click",this.blurEvent),this.table.rowManager.element.addEventListener("scroll",this.blurEvent),setTimeout(function(){document.body.addEventListener("contextmenu",i.blurEvent)},100),document.body.appendChild(this.menuEl),e.pageX+this.menuEl.offsetWidth>=document.body.offsetWidth&&(this.menuEl.style.left="",this.menuEl.style.right=document.body.offsetWidth-e.pageX+"px"),e.pageY+this.menuEl.offsetHeight>=n&&(this.menuEl.style.top="",this.menuEl.style.bottom=n-e.pageY+"px"))},H.prototype.hideMenu=function(){this.menuEl.parentNode&&this.menuEl.parentNode.removeChild(this.menuEl),this.blurEvent&&(document.body.removeEventListener("click",this.blurEvent),document.body.removeEventListener("contextmenu",this.blurEvent),this.table.rowManager.element.removeEventListener("scroll",this.blurEvent))},H.prototype.menus={},u.prototype.registerModule("menu",H);var F=function(e){this.table=e,this.placeholderElement=this.createPlaceholderElement(),this.hoverElement=!1,this.checkTimeout=!1,this.checkPeriod=250,this.moving=!1,this.toCol=!1,this.toColAfter=!1,this.startX=0,this.autoScrollMargin=40,this.autoScrollStep=5,this.autoScrollTimeout=!1,this.touchMove=!1,this.moveHover=this.moveHover.bind(this),this.endMove=this.endMove.bind(this)};F.prototype.createPlaceholderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-col"),e.classList.add("tabulator-col-placeholder"),e},F.prototype.initializeColumn=function(e){var t,o=this,i={};e.modules.frozen||(t=e.getElement(),i.mousemove=function(i){e.parent===o.moving.parent&&((o.touchMove?i.touches[0].pageX:i.pageX)-u.prototype.helpers.elOffset(t).left+o.table.columnManager.element.scrollLeft>e.getWidth()/2?o.toCol===e&&o.toColAfter||(t.parentNode.insertBefore(o.placeholderElement,t.nextSibling),o.moveColumn(e,!0)):(o.toCol!==e||o.toColAfter)&&(t.parentNode.insertBefore(o.placeholderElement,t),o.moveColumn(e,!1)))}.bind(o),t.addEventListener("mousedown",function(t){o.touchMove=!1,1===t.which&&(o.checkTimeout=setTimeout(function(){o.startMove(t,e)},o.checkPeriod))}),t.addEventListener("mouseup",function(e){1===e.which&&o.checkTimeout&&clearTimeout(o.checkTimeout)}),o.bindTouchEvents(e)),e.modules.moveColumn=i},F.prototype.bindTouchEvents=function(e){var t,o,i,n,s,r,a,l=this,c=e.getElement(),u=!1;c.addEventListener("touchstart",function(c){l.checkTimeout=setTimeout(function(){l.touchMove=!0,t=e,o=e.nextColumn(),n=o?o.getWidth()/2:0,i=e.prevColumn(),s=i?i.getWidth()/2:0,r=0,a=0,u=!1,l.startMove(c,e)},l.checkPeriod)},{passive:!0}),c.addEventListener("touchmove",function(c){var d,h;l.moving&&(l.moveHover(c),u||(u=c.touches[0].pageX),d=c.touches[0].pageX-u,d>0?o&&d-r>n&&(h=o)!==e&&(u=c.touches[0].pageX,h.getElement().parentNode.insertBefore(l.placeholderElement,h.getElement().nextSibling),l.moveColumn(h,!0)):i&&-d-a>s&&(h=i)!==e&&(u=c.touches[0].pageX,h.getElement().parentNode.insertBefore(l.placeholderElement,h.getElement()),l.moveColumn(h,!1)),h&&(t=h,o=h.nextColumn(),r=n,n=o?o.getWidth()/2:0,i=h.prevColumn(),a=s,s=i?i.getWidth()/2:0))},{passive:!0}),c.addEventListener("touchend",function(e){l.checkTimeout&&clearTimeout(l.checkTimeout),l.moving&&l.endMove(e)})},F.prototype.startMove=function(e,t){var o=t.getElement();this.moving=t,this.startX=(this.touchMove?e.touches[0].pageX:e.pageX)-u.prototype.helpers.elOffset(o).left,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=t.getWidth()+"px",this.placeholderElement.style.height=t.getHeight()+"px",o.parentNode.insertBefore(this.placeholderElement,o),o.parentNode.removeChild(o),this.hoverElement=o.cloneNode(!0),this.hoverElement.classList.add("tabulator-moving"),this.table.columnManager.getElement().appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.bottom="0",this.touchMove||(this._bindMouseMove(),document.body.addEventListener("mousemove",this.moveHover),document.body.addEventListener("mouseup",this.endMove)),this.moveHover(e)},F.prototype._bindMouseMove=function(){this.table.columnManager.columnsByIndex.forEach(function(e){e.modules.moveColumn.mousemove&&e.getElement().addEventListener("mousemove",e.modules.moveColumn.mousemove)})},F.prototype._unbindMouseMove=function(){this.table.columnManager.columnsByIndex.forEach(function(e){e.modules.moveColumn.mousemove&&e.getElement().removeEventListener("mousemove",e.modules.moveColumn.mousemove)})},F.prototype.moveColumn=function(e,t){var o=this.moving.getCells();this.toCol=e,this.toColAfter=t,t?e.getCells().forEach(function(e,t){var i=e.getElement();i.parentNode.insertBefore(o[t].getElement(),i.nextSibling)}):e.getCells().forEach(function(e,t){var i=e.getElement();i.parentNode.insertBefore(o[t].getElement(),i)})},F.prototype.endMove=function(e){(1===e.which||this.touchMove)&&(this._unbindMouseMove(),this.placeholderElement.parentNode.insertBefore(this.moving.getElement(),this.placeholderElement.nextSibling),this.placeholderElement.parentNode.removeChild(this.placeholderElement),this.hoverElement.parentNode.removeChild(this.hoverElement),this.table.element.classList.remove("tabulator-block-select"),this.toCol&&this.table.columnManager.moveColumnActual(this.moving,this.toCol,this.toColAfter),this.moving=!1,this.toCol=!1,this.toColAfter=!1,this.touchMove||(document.body.removeEventListener("mousemove",this.moveHover),document.body.removeEventListener("mouseup",this.endMove)))},F.prototype.moveHover=function(e){var t,o=this,i=o.table.columnManager.getElement(),n=i.scrollLeft,s=(o.touchMove?e.touches[0].pageX:e.pageX)-u.prototype.helpers.elOffset(i).left+n;o.hoverElement.style.left=s-o.startX+"px",s-n<o.autoScrollMargin&&(o.autoScrollTimeout||(o.autoScrollTimeout=setTimeout(function(){t=Math.max(0,n-5),o.table.rowManager.getElement().scrollLeft=t,o.autoScrollTimeout=!1},1))),n+i.clientWidth-s<o.autoScrollMargin&&(o.autoScrollTimeout||(o.autoScrollTimeout=setTimeout(function(){t=Math.min(i.clientWidth,n+5),o.table.rowManager.getElement().scrollLeft=t,o.autoScrollTimeout=!1},1)))},u.prototype.registerModule("moveColumn",F);var A=function(e){this.table=e,this.placeholderElement=this.createPlaceholderElement(),this.hoverElement=!1,this.checkTimeout=!1,this.checkPeriod=150,this.moving=!1,this.toRow=!1,this.toRowAfter=!1,this.hasHandle=!1,this.startY=0,this.startX=0,this.moveHover=this.moveHover.bind(this),this.endMove=this.endMove.bind(this),this.tableRowDropEvent=!1,this.touchMove=!1,this.connection=!1,this.connections=[],this.connectedTable=!1,this.connectedRow=!1};A.prototype.createPlaceholderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-row"),e.classList.add("tabulator-row-placeholder"),e},A.prototype.initialize=function(e){this.connection=this.table.options.movableRowsConnectedTables},A.prototype.setHandle=function(e){this.hasHandle=e},A.prototype.initializeGroupHeader=function(e){var t=this,o={};o.mouseup=function(e){t.tableRowDrop(e,row)}.bind(t),o.mousemove=function(o){if(o.pageY-u.prototype.helpers.elOffset(e.element).top+t.table.rowManager.element.scrollTop>e.getHeight()/2){if(t.toRow!==e||!t.toRowAfter){var i=e.getElement();i.parentNode.insertBefore(t.placeholderElement,i.nextSibling),t.moveRow(e,!0)}}else if(t.toRow!==e||t.toRowAfter){var i=e.getElement();i.previousSibling&&(i.parentNode.insertBefore(t.placeholderElement,i),t.moveRow(e,!1))}}.bind(t),e.modules.moveRow=o},A.prototype.initializeRow=function(e){var t,o=this,i={};i.mouseup=function(t){o.tableRowDrop(t,e)}.bind(o),i.mousemove=function(t){if(t.pageY-u.prototype.helpers.elOffset(e.element).top+o.table.rowManager.element.scrollTop>e.getHeight()/2){if(o.toRow!==e||!o.toRowAfter){var i=e.getElement();i.parentNode.insertBefore(o.placeholderElement,i.nextSibling),o.moveRow(e,!0)}}else if(o.toRow!==e||o.toRowAfter){var i=e.getElement();i.parentNode.insertBefore(o.placeholderElement,i),o.moveRow(e,!1)}}.bind(o),this.hasHandle||(t=e.getElement(),t.addEventListener("mousedown",function(t){1===t.which&&(o.checkTimeout=setTimeout(function(){o.startMove(t,e)},o.checkPeriod))}),t.addEventListener("mouseup",function(e){1===e.which&&o.checkTimeout&&clearTimeout(o.checkTimeout)}),this.bindTouchEvents(e,e.getElement())),e.modules.moveRow=i},A.prototype.initializeCell=function(e){var t=this,o=e.getElement();o.addEventListener("mousedown",function(o){1===o.which&&(t.checkTimeout=setTimeout(function(){t.startMove(o,e.row)},t.checkPeriod))}),o.addEventListener("mouseup",function(e){1===e.which&&t.checkTimeout&&clearTimeout(t.checkTimeout)}),this.bindTouchEvents(e.row,e.getElement())},A.prototype.bindTouchEvents=function(e,t){var o,i,n,s,r,a,l,c=this,u=!1;t.addEventListener("touchstart",function(t){c.checkTimeout=setTimeout(function(){c.touchMove=!0,o=e,i=e.nextRow(),s=i?i.getHeight()/2:0,n=e.prevRow(),r=n?n.getHeight()/2:0,a=0,l=0,u=!1,c.startMove(t,e)},c.checkPeriod)},{passive:!0}),this.moving,this.toRow,this.toRowAfter,t.addEventListener("touchmove",function(t){var d,h;c.moving&&(t.preventDefault(),c.moveHover(t),u||(u=t.touches[0].pageY),d=t.touches[0].pageY-u,d>0?i&&d-a>s&&(h=i)!==e&&(u=t.touches[0].pageY,h.getElement().parentNode.insertBefore(c.placeholderElement,h.getElement().nextSibling),c.moveRow(h,!0)):n&&-d-l>r&&(h=n)!==e&&(u=t.touches[0].pageY,h.getElement().parentNode.insertBefore(c.placeholderElement,h.getElement()),c.moveRow(h,!1)),h&&(o=h,i=h.nextRow(),a=s,s=i?i.getHeight()/2:0,n=h.prevRow(),l=r,r=n?n.getHeight()/2:0))}),t.addEventListener("touchend",function(e){c.checkTimeout&&clearTimeout(c.checkTimeout),c.moving&&(c.endMove(e),c.touchMove=!1)})},A.prototype._bindMouseMove=function(){this.table.rowManager.getDisplayRows().forEach(function(e){"row"!==e.type&&"group"!==e.type||!e.modules.moveRow.mousemove||e.getElement().addEventListener("mousemove",e.modules.moveRow.mousemove)})},A.prototype._unbindMouseMove=function(){this.table.rowManager.getDisplayRows().forEach(function(e){"row"!==e.type&&"group"!==e.type||!e.modules.moveRow.mousemove||e.getElement().removeEventListener("mousemove",e.modules.moveRow.mousemove)})},A.prototype.startMove=function(e,t){var o=t.getElement();this.setStartPosition(e,t),this.moving=t,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=t.getWidth()+"px",this.placeholderElement.style.height=t.getHeight()+"px",this.connection?(this.table.element.classList.add("tabulator-movingrow-sending"),this.connectToTables(t)):(o.parentNode.insertBefore(this.placeholderElement,o),o.parentNode.removeChild(o)),this.hoverElement=o.cloneNode(!0),this.hoverElement.classList.add("tabulator-moving"),this.connection?(document.body.appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.top="0",this.hoverElement.style.width=this.table.element.clientWidth+"px",this.hoverElement.style.whiteSpace="nowrap",this.hoverElement.style.overflow="hidden",this.hoverElement.style.pointerEvents="none"):(this.table.rowManager.getTableElement().appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.top="0",this._bindMouseMove()),document.body.addEventListener("mousemove",this.moveHover),document.body.addEventListener("mouseup",this.endMove),this.moveHover(e)},A.prototype.setStartPosition=function(e,t){var o,i,n=this.touchMove?e.touches[0].pageX:e.pageX,s=this.touchMove?e.touches[0].pageY:e.pageY;o=t.getElement(),this.connection?(i=o.getBoundingClientRect(),this.startX=i.left-n+window.pageXOffset,this.startY=i.top-s+window.pageYOffset):this.startY=s-o.getBoundingClientRect().top},A.prototype.endMove=function(e){e&&1!==e.which&&!this.touchMove||(this._unbindMouseMove(),this.connection||(this.placeholderElement.parentNode.insertBefore(this.moving.getElement(),this.placeholderElement.nextSibling),this.placeholderElement.parentNode.removeChild(this.placeholderElement)),this.hoverElement.parentNode.removeChild(this.hoverElement),this.table.element.classList.remove("tabulator-block-select"),this.toRow&&this.table.rowManager.moveRow(this.moving,this.toRow,this.toRowAfter),this.moving=!1,this.toRow=!1,this.toRowAfter=!1,document.body.removeEventListener("mousemove",this.moveHover),document.body.removeEventListener("mouseup",this.endMove),this.connection&&(this.table.element.classList.remove("tabulator-movingrow-sending"),this.disconnectFromTables()))},A.prototype.moveRow=function(e,t){this.toRow=e,this.toRowAfter=t},A.prototype.moveHover=function(e){this.connection?this.moveHoverConnections.call(this,e):this.moveHoverTable.call(this,e)},A.prototype.moveHoverTable=function(e){var t=this.table.rowManager.getElement(),o=t.scrollTop,i=(this.touchMove?e.touches[0].pageY:e.pageY)-t.getBoundingClientRect().top+o;this.hoverElement.style.top=i-this.startY+"px"},A.prototype.moveHoverConnections=function(e){this.hoverElement.style.left=this.startX+(this.touchMove?e.touches[0].pageX:e.pageX)+"px",this.hoverElement.style.top=this.startY+(this.touchMove?e.touches[0].pageY:e.pageY)+"px"},A.prototype.connectToTables=function(e){var t=this.table.modules.comms.getConnections(this.connection);this.table.options.movableRowsSendingStart.call(this.table,t),this.table.modules.comms.send(this.connection,"moveRow","connect",{row:e})},A.prototype.disconnectFromTables=function(){var e=this.table.modules.comms.getConnections(this.connection);this.table.options.movableRowsSendingStop.call(this.table,e),this.table.modules.comms.send(this.connection,"moveRow","disconnect")},A.prototype.connect=function(e,t){var o=this;return this.connectedTable?(console.warn("Move Row Error - Table cannot accept connection, already connected to table:",this.connectedTable),!1):(this.connectedTable=e,this.connectedRow=t,this.table.element.classList.add("tabulator-movingrow-receiving"),o.table.rowManager.getDisplayRows().forEach(function(e){"row"===e.type&&e.modules.moveRow&&e.modules.moveRow.mouseup&&e.getElement().addEventListener("mouseup",e.modules.moveRow.mouseup)}),o.tableRowDropEvent=o.tableRowDrop.bind(o),o.table.element.addEventListener("mouseup",o.tableRowDropEvent),this.table.options.movableRowsReceivingStart.call(this.table,t,e),!0)},A.prototype.disconnect=function(e){var t=this;e===this.connectedTable?(this.connectedTable=!1,this.connectedRow=!1,this.table.element.classList.remove("tabulator-movingrow-receiving"),t.table.rowManager.getDisplayRows().forEach(function(e){"row"===e.type&&e.modules.moveRow&&e.modules.moveRow.mouseup&&e.getElement().removeEventListener("mouseup",e.modules.moveRow.mouseup)}),t.table.element.removeEventListener("mouseup",t.tableRowDropEvent),this.table.options.movableRowsReceivingStop.call(this.table,e)):console.warn("Move Row Error - trying to disconnect from non connected table")},A.prototype.dropComplete=function(e,t,o){var i=!1;if(o){switch(_typeof(this.table.options.movableRowsSender)){case"string":i=this.senders[this.table.options.movableRowsSender];break;case"function":i=this.table.options.movableRowsSender}i?i.call(this,this.moving.getComponent(),t?t.getComponent():void 0,e):this.table.options.movableRowsSender&&console.warn("Mover Row Error - no matching sender found:",this.table.options.movableRowsSender),this.table.options.movableRowsSent.call(this.table,this.moving.getComponent(),t?t.getComponent():void 0,e)}else this.table.options.movableRowsSentFailed.call(this.table,this.moving.getComponent(),t?t.getComponent():void 0,e);this.endMove()},A.prototype.tableRowDrop=function(e,t){var o=!1,i=!1;switch(e.stopImmediatePropagation(),_typeof(this.table.options.movableRowsReceiver)){case"string":o=this.receivers[this.table.options.movableRowsReceiver];break;case"function":o=this.table.options.movableRowsReceiver}o?i=o.call(this,this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable):console.warn("Mover Row Error - no matching receiver found:",this.table.options.movableRowsReceiver),i?this.table.options.movableRowsReceived.call(this.table,this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable):this.table.options.movableRowsReceivedFailed.call(this.table,this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable),this.table.modules.comms.send(this.connectedTable,"moveRow","dropcomplete",{row:t,success:i})},A.prototype.receivers={insert:function(e,t,o){return this.table.addRow(e.getData(),void 0,t),!0},add:function(e,t,o){return this.table.addRow(e.getData()),!0},update:function(e,t,o){return!!t&&(t.update(e.getData()),!0)},replace:function(e,t,o){return!!t&&(this.table.addRow(e.getData(),void 0,t),t.delete(),!0)}},A.prototype.senders={delete:function(e,t,o){e.delete()}},A.prototype.commsReceived=function(e,t,o){switch(t){case"connect":return this.connect(e,o.row);case"disconnect":return this.disconnect(e);case"dropcomplete":return this.dropComplete(e,o.row,o.success)}},u.prototype.registerModule("moveRow",A);var P=function(e){this.table=e,this.allowedTypes=["","data","edit","clipboard"],this.enabled=!0};P.prototype.initializeColumn=function(e){var t=this,o=!1,i={};this.allowedTypes.forEach(function(n){var s,r="mutator"+(n.charAt(0).toUpperCase()+n.slice(1));e.definition[r]&&(s=t.lookupMutator(e.definition[r]))&&(o=!0,i[r]={mutator:s,params:e.definition[r+"Params"]||{}})}),o&&(e.modules.mutate=i)},P.prototype.lookupMutator=function(e){var t=!1;switch(void 0===e?"undefined":_typeof(e)){case"string":this.mutators[e]?t=this.mutators[e]:console.warn("Mutator Error - No such mutator found, ignoring: ",e);break;case"function":t=e}return t},P.prototype.transformRow=function(e,t,o){var i,n=this,s="mutator"+(t.charAt(0).toUpperCase()+t.slice(1));return this.enabled&&n.table.columnManager.traverse(function(n){var r,a,l;n.modules.mutate&&(r=n.modules.mutate[s]||n.modules.mutate.mutator||!1)&&(i=n.getFieldValue(void 0!==o?o:e),"data"!=t&&void 0===i||(l=n.getComponent(),a="function"==typeof r.params?r.params(i,e,t,l):r.params,n.setFieldValue(e,r.mutator(i,e,t,a,l))))}),e},P.prototype.transformCell=function(e,t){var o=e.column.modules.mutate.mutatorEdit||e.column.modules.mutate.mutator||!1,i={};return o?(i=Object.assign(i,e.row.getData()),e.column.setFieldValue(i,t),o.mutator(t,i,"edit",o.params,e.getComponent())):t},P.prototype.enable=function(){this.enabled=!0},P.prototype.disable=function(){this.enabled=!1},P.prototype.mutators={},u.prototype.registerModule("mutator",P);var _=function(e){this.table=e,this.mode="local",this.progressiveLoad=!1,this.size=0,this.page=1,this.count=5,this.max=1,this.displayIndex=0,this.initialLoad=!0,this.pageSizes=[],this.dataReceivedNames={},this.dataSentNames={},this.createElements()};_.prototype.createElements=function(){var e;this.element=document.createElement("span"),this.element.classList.add("tabulator-paginator"),this.pagesElement=document.createElement("span"),this.pagesElement.classList.add("tabulator-pages"),e=document.createElement("button"),e.classList.add("tabulator-page"),e.setAttribute("type","button"),e.setAttribute("role","button"),e.setAttribute("aria-label",""),e.setAttribute("title",""),this.firstBut=e.cloneNode(!0),this.firstBut.setAttribute("data-page","first"),this.prevBut=e.cloneNode(!0),this.prevBut.setAttribute("data-page","prev"),this.nextBut=e.cloneNode(!0),this.nextBut.setAttribute("data-page","next"),this.lastBut=e.cloneNode(!0),this.lastBut.setAttribute("data-page","last"),this.table.options.paginationSizeSelector&&(this.pageSizeSelect=document.createElement("select"),this.pageSizeSelect.classList.add("tabulator-page-size"))},_.prototype.generatePageSizeSelectList=function(){var e=this,t=[];if(this.pageSizeSelect){if(Array.isArray(this.table.options.paginationSizeSelector))t=this.table.options.paginationSizeSelector,this.pageSizes=t,-1==this.pageSizes.indexOf(this.size)&&t.unshift(this.size);else if(-1==this.pageSizes.indexOf(this.size)){t=[];for(var o=1;o<5;o++)t.push(this.size*o);this.pageSizes=t}else t=this.pageSizes;for(;this.pageSizeSelect.firstChild;)this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);t.forEach(function(t){var o=document.createElement("option");o.value=t,o.innerHTML=t,e.pageSizeSelect.appendChild(o)}),this.pageSizeSelect.value=this.size}},_.prototype.initialize=function(e){var t,o,i,n=this;this.dataSentNames=Object.assign({},this.paginationDataSentNames),this.dataSentNames=Object.assign(this.dataSentNames,this.table.options.paginationDataSent),this.dataReceivedNames=Object.assign({},this.paginationDataReceivedNames),this.dataReceivedNames=Object.assign(this.dataReceivedNames,this.table.options.paginationDataReceived),n.table.modules.localize.bind("pagination|first",function(e){n.firstBut.innerHTML=e}),n.table.modules.localize.bind("pagination|first_title",function(e){n.firstBut.setAttribute("aria-label",e),n.firstBut.setAttribute("title",e)}),n.table.modules.localize.bind("pagination|prev",function(e){n.prevBut.innerHTML=e}),n.table.modules.localize.bind("pagination|prev_title",function(e){n.prevBut.setAttribute("aria-label",e),n.prevBut.setAttribute("title",e)}),n.table.modules.localize.bind("pagination|next",function(e){n.nextBut.innerHTML=e}),n.table.modules.localize.bind("pagination|next_title",function(e){n.nextBut.setAttribute("aria-label",e),n.nextBut.setAttribute("title",e)}),n.table.modules.localize.bind("pagination|last",function(e){n.lastBut.innerHTML=e}),n.table.modules.localize.bind("pagination|last_title",function(e){n.lastBut.setAttribute("aria-label",e),n.lastBut.setAttribute("title",e)}),n.firstBut.addEventListener("click",function(){n.setPage(1)}),n.prevBut.addEventListener("click",function(){n.previousPage()}),n.nextBut.addEventListener("click",function(){n.nextPage().then(function(){}).catch(function(){})}),n.lastBut.addEventListener("click",function(){n.setPage(n.max)}),n.table.options.paginationElement&&(n.element=n.table.options.paginationElement),this.pageSizeSelect&&(t=document.createElement("label"),n.table.modules.localize.bind("pagination|page_size",function(e){n.pageSizeSelect.setAttribute("aria-label",e),n.pageSizeSelect.setAttribute("title",e),t.innerHTML=e}),n.element.appendChild(t),n.element.appendChild(n.pageSizeSelect),n.pageSizeSelect.addEventListener("change",function(e){n.setPageSize(n.pageSizeSelect.value),n.setPage(1).then(function(){}).catch(function(){})})),n.element.appendChild(n.firstBut),n.element.appendChild(n.prevBut),n.element.appendChild(n.pagesElement),n.element.appendChild(n.nextBut),n.element.appendChild(n.lastBut),n.table.options.paginationElement||e||n.table.footerManager.append(n.element,n),n.mode=n.table.options.pagination,n.table.options.paginationSize?n.size=n.table.options.paginationSize:(o=document.createElement("div"),o.classList.add("tabulator-row"),o.style.visibility=e,i=document.createElement("div"),i.classList.add("tabulator-cell"),i.innerHTML="Page Row Test",o.appendChild(i),n.table.rowManager.getTableElement().appendChild(o),n.size=Math.floor(n.table.rowManager.getElement().clientHeight/o.offsetHeight),n.table.rowManager.getTableElement().removeChild(o)),n.count=n.table.options.paginationButtonCount,n.generatePageSizeSelectList()},_.prototype.initializeProgressive=function(e){this.initialize(!0),this.mode="progressive_"+e,this.progressiveLoad=!0},_.prototype.setDisplayIndex=function(e){this.displayIndex=e},_.prototype.getDisplayIndex=function(){return this.displayIndex},_.prototype.setMaxRows=function(e){this.max=e?Math.ceil(e/this.size):1,this.page>this.max&&(this.page=this.max)},_.prototype.reset=function(e,t){return("local"==this.mode||e)&&(this.page=1),t&&(this.initialLoad=!0),!0},_.prototype.setMaxPage=function(e){e=parseInt(e),this.max=e||1,this.page>this.max&&(this.page=this.max,this.trigger())},_.prototype.setPage=function(e){var t=this,o=this;return new Promise(function(i,n){e=parseInt(e),e>0&&e<=t.max?(t.page=e,t.trigger().then(function(){i()}).catch(function(){n()}),o.table.options.persistence&&o.table.modExists("persistence",!0)&&o.table.modules.persistence.config.page&&o.table.modules.persistence.save("page")):(console.warn("Pagination Error - Requested page is out of range of 1 - "+t.max+":",e),n())})},_.prototype.setPageToRow=function(e){var t=this;return new Promise(function(o,i){var n=t.table.rowManager.getDisplayRows(t.displayIndex-1),s=n.indexOf(e);if(s>-1){var r=Math.ceil((s+1)/t.size);t.setPage(r).then(function(){o()}).catch(function(){i()})}else console.warn("Pagination Error - Requested row is not visible"),i()})},_.prototype.setPageSize=function(e){e=parseInt(e),e>0&&(this.size=e),this.pageSizeSelect&&this.generatePageSizeSelectList(),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.page&&this.table.modules.persistence.save("page")},_.prototype._setPageButtons=function(){for(var e=this,t=Math.floor((this.count-1)/2),o=Math.ceil((this.count-1)/2),i=this.max-this.page+t+1<this.count?this.max-this.count+1:Math.max(this.page-t,1),n=this.page<=o?Math.min(this.count,this.max):Math.min(this.page+o,this.max);e.pagesElement.firstChild;)e.pagesElement.removeChild(e.pagesElement.firstChild);1==e.page?(e.firstBut.disabled=!0,e.prevBut.disabled=!0):(e.firstBut.disabled=!1,e.prevBut.disabled=!1),e.page==e.max?(e.lastBut.disabled=!0,e.nextBut.disabled=!0):(e.lastBut.disabled=!1,e.nextBut.disabled=!1);for(var s=i;s<=n;s++)s>0&&s<=e.max&&e.pagesElement.appendChild(e._generatePageButton(s));this.footerRedraw()},_.prototype._generatePageButton=function(e){var t=this,o=document.createElement("button");return o.classList.add("tabulator-page"),e==t.page&&o.classList.add("active"),o.setAttribute("type","button"),o.setAttribute("role","button"),o.setAttribute("aria-label","Show Page "+e),o.setAttribute("title","Show Page "+e),o.setAttribute("data-page",e),o.textContent=e,o.addEventListener("click",function(o){t.setPage(e)}),o},_.prototype.previousPage=function(){var e=this;return new Promise(function(t,o){e.page>1?(e.page--,e.trigger().then(function(){t()}).catch(function(){o()}),e.table.options.persistence&&e.table.modExists("persistence",!0)&&e.table.modules.persistence.config.page&&e.table.modules.persistence.save("page")):(console.warn("Pagination Error - Previous page would be less than page 1:",0),o())})},_.prototype.nextPage=function(){var e=this;return new Promise(function(t,o){e.page<e.max?(e.page++,e.trigger().then(function(){t()}).catch(function(){o()}),e.table.options.persistence&&e.table.modExists("persistence",!0)&&e.table.modules.persistence.config.page&&e.table.modules.persistence.save("page")):(e.progressiveLoad||console.warn("Pagination Error - Next page would be greater than maximum page of "+e.max+":",e.max+1),o())})},_.prototype.getPage=function(){return this.page},_.prototype.getPageMax=function(){return this.max},_.prototype.getPageSize=function(e){return this.size},_.prototype.getMode=function(){return this.mode},_.prototype.getRows=function(e){var t,o,i;if("local"==this.mode){t=[],o=this.size*(this.page-1),i=o+parseInt(this.size),this._setPageButtons();for(var n=o;n<i;n++)e[n]&&t.push(e[n]);return t}return this._setPageButtons(),e.slice(0)},_.prototype.trigger=function(){var e,t=this;return new Promise(function(o,i){switch(t.mode){case"local":e=t.table.rowManager.scrollLeft,t.table.rowManager.refreshActiveData("page"),t.table.rowManager.scrollHorizontal(e),t.table.options.pageLoaded.call(t.table,t.getPage()),o();break;case"remote":case"progressive_load":case"progressive_scroll":t.table.modules.ajax.blockActiveRequest(),t._getRemotePage().then(function(){o()}).catch(function(){i()});break;default:console.warn("Pagination Error - no such pagination mode:",t.mode),i()}})},_.prototype._getRemotePage=function(){var e,t,o=this,i=this;return new Promise(function(n,s){if(i.table.modExists("ajax",!0)||s(),e=u.prototype.helpers.deepClone(i.table.modules.ajax.getParams()||{}),t=i.table.modules.ajax.getParams(),t[o.dataSentNames.page]=i.page,o.size&&(t[o.dataSentNames.size]=o.size),o.table.options.ajaxSorting&&o.table.modExists("sort")){var r=i.table.modules.sort.getSort();r.forEach(function(e){delete e.column}),t[o.dataSentNames.sorters]=r}if(o.table.options.ajaxFiltering&&o.table.modExists("filter")){var a=i.table.modules.filter.getFilters(!0,!0);t[o.dataSentNames.filters]=a}i.table.modules.ajax.setParams(t),i.table.modules.ajax.sendRequest(o.progressiveLoad).then(function(e){i._parseRemoteData(e),n()}).catch(function(e){s()}),
-i.table.modules.ajax.setParams(e)})},_.prototype._parseRemoteData=function(e){var t,e,o,i=this;if(void 0===e[this.dataReceivedNames.last_page]&&console.warn("Remote Pagination Error - Server response missing '"+this.dataReceivedNames.last_page+"' property"),e[this.dataReceivedNames.data]){if(this.max=parseInt(e[this.dataReceivedNames.last_page])||1,this.progressiveLoad)switch(this.mode){case"progressive_load":1==this.page?this.table.rowManager.setData(e[this.dataReceivedNames.data],!1,this.initialLoad&&1==this.page):this.table.rowManager.addRows(e[this.dataReceivedNames.data]),this.page<this.max&&setTimeout(function(){i.nextPage().then(function(){}).catch(function(){})},i.table.options.ajaxProgressiveLoadDelay);break;case"progressive_scroll":e=this.table.rowManager.getData().concat(e[this.dataReceivedNames.data]),this.table.rowManager.setData(e,!0,this.initialLoad&&1==this.page),o=this.table.options.ajaxProgressiveLoadScrollMargin||2*this.table.rowManager.element.clientHeight,i.table.rowManager.element.scrollHeight<=i.table.rowManager.element.clientHeight+o&&i.nextPage().then(function(){}).catch(function(){})}else t=this.table.rowManager.scrollLeft,this.table.rowManager.setData(e[this.dataReceivedNames.data],!1,this.initialLoad&&1==this.page),this.table.rowManager.scrollHorizontal(t),this.table.columnManager.scrollHorizontal(t),this.table.options.pageLoaded.call(this.table,this.getPage());this.initialLoad=!1}else console.warn("Remote Pagination Error - Server response missing '"+this.dataReceivedNames.data+"' property")},_.prototype.footerRedraw=function(){var e=this.table.footerManager.element;Math.ceil(e.clientWidth)-e.scrollWidth<0?this.pagesElement.style.display="none":(this.pagesElement.style.display="",Math.ceil(e.clientWidth)-e.scrollWidth<0&&(this.pagesElement.style.display="none"))},_.prototype.paginationDataSentNames={page:"page",size:"size",sorters:"sorters",filters:"filters"},_.prototype.paginationDataReceivedNames={current_page:"current_page",last_page:"last_page",data:"data"},u.prototype.registerModule("page",_);var N=function(e){this.table=e,this.mode="",this.id="",this.defWatcherBlock=!1,this.config={},this.readFunc=!1,this.writeFunc=!1};N.prototype.localStorageTest=function(){var e="_tabulator_test";try{return window.localStorage.setItem(e,e),window.localStorage.removeItem(e),!0}catch(e){return!1}},N.prototype.initialize=function(){var e,t=this.table.options.persistenceMode,o=this.table.options.persistenceID;this.mode=!0!==t?t:this.localStorageTest()?"local":"cookie",this.table.options.persistenceReaderFunc?"function"==typeof this.table.options.persistenceReaderFunc?this.readFunc=this.table.options.persistenceReaderFunc:this.readers[this.table.options.persistenceReaderFunc]?this.readFunc=this.readers[this.table.options.persistenceReaderFunc]:console.warn("Persistence Read Error - invalid reader set",this.table.options.persistenceReaderFunc):this.readers[this.mode]?this.readFunc=this.readers[this.mode]:console.warn("Persistence Read Error - invalid reader set",this.mode),this.table.options.persistenceWriterFunc?"function"==typeof this.table.options.persistenceWriterFunc?this.writeFunc=this.table.options.persistenceWriterFunc:this.readers[this.table.options.persistenceWriterFunc]?this.writeFunc=this.readers[this.table.options.persistenceWriterFunc]:console.warn("Persistence Write Error - invalid reader set",this.table.options.persistenceWriterFunc):this.writers[this.mode]?this.writeFunc=this.writers[this.mode]:console.warn("Persistence Write Error - invalid writer set",this.mode),this.id="tabulator-"+(o||this.table.element.getAttribute("id")||""),this.config={sort:!0===this.table.options.persistence||this.table.options.persistence.sort,filter:!0===this.table.options.persistence||this.table.options.persistence.filter,group:!0===this.table.options.persistence||this.table.options.persistence.group,page:!0===this.table.options.persistence||this.table.options.persistence.page,columns:!0===this.table.options.persistence?["title","width","visible"]:this.table.options.persistence.columns},this.config.page&&(e=this.retreiveData("page"))&&(void 0===e.paginationSize||!0!==this.config.page&&!this.config.page.size||(this.table.options.paginationSize=e.paginationSize),void 0===e.paginationInitialPage||!0!==this.config.page&&!this.config.page.page||(this.table.options.paginationInitialPage=e.paginationInitialPage)),this.config.group&&(e=this.retreiveData("group"))&&(void 0===e.groupBy||!0!==this.config.group&&!this.config.group.groupBy||(this.table.options.groupBy=e.groupBy),void 0===e.groupStartOpen||!0!==this.config.group&&!this.config.group.groupStartOpen||(this.table.options.groupStartOpen=e.groupStartOpen),void 0===e.groupHeader||!0!==this.config.group&&!this.config.group.groupHeader||(this.table.options.groupHeader=e.groupHeader))},N.prototype.initializeColumn=function(e){var t,o,i=this;this.config.columns&&(this.defWatcherBlock=!0,t=e.getDefinition(),o=!0===this.config.columns?Object.keys(t):this.config.columns,o.forEach(function(e){var o=Object.getOwnPropertyDescriptor(t,e),n=t[e];o&&Object.defineProperty(t,e,{set:function(e){n=e,i.defWatcherBlock||i.save("columns"),o.set&&o.set(e)},get:function(){return o.get&&o.get(),n}})}),this.defWatcherBlock=!1)},N.prototype.load=function(e,t){var o=this.retreiveData(e);return t&&(o=o?this.mergeDefinition(t,o):t),o},N.prototype.retreiveData=function(e){return!!this.readFunc&&this.readFunc(this.id,e)},N.prototype.mergeDefinition=function(e,t){var o=this,i=[];return t=t||[],t.forEach(function(t,n){var s,r=o._findColumn(e,t);r&&(!0===o.config.columns||void 0==o.config.columns?(s=Object.keys(r),s.push("width")):s=o.config.columns,s.forEach(function(e){void 0!==t[e]&&(r[e]=t[e])}),r.columns&&(r.columns=o.mergeDefinition(r.columns,t.columns)),i.push(r))}),e.forEach(function(e,n){o._findColumn(t,e)||(i.length>n?i.splice(n,0,e):i.push(e))}),i},N.prototype._findColumn=function(e,t){var o=t.columns?"group":t.field?"field":"object";return e.find(function(e){switch(o){case"group":return e.title===t.title&&e.columns.length===t.columns.length;case"field":return e.field===t.field;case"object":return e===t}})},N.prototype.save=function(e){var t={};switch(e){case"columns":t=this.parseColumns(this.table.columnManager.getColumns());break;case"filter":t=this.table.modules.filter.getFilters();break;case"sort":t=this.validateSorters(this.table.modules.sort.getSort());break;case"group":t=this.getGroupConfig();break;case"page":t=this.getPageConfig()}this.writeFunc&&this.writeFunc(this.id,e,t)},N.prototype.validateSorters=function(e){return e.forEach(function(e){e.column=e.field,delete e.field}),e},N.prototype.getGroupConfig=function(){return this.config.group&&((!0===this.config.group||this.config.group.groupBy)&&(data.groupBy=this.table.options.groupBy),(!0===this.config.group||this.config.group.groupStartOpen)&&(data.groupStartOpen=this.table.options.groupStartOpen),(!0===this.config.group||this.config.group.groupHeader)&&(data.groupHeader=this.table.options.groupHeader)),data},N.prototype.getPageConfig=function(){var e={};return this.config.page&&((!0===this.config.page||this.config.page.size)&&(e.paginationSize=this.table.modules.page.getPageSize()),(!0===this.config.page||this.config.page.page)&&(e.paginationInitialPage=this.table.modules.page.getPage())),e},N.prototype.parseColumns=function(e){var t=this,o=[];return e.forEach(function(e){var i,n={},s=e.getDefinition();e.isGroup?(n.title=s.title,n.columns=t.parseColumns(e.getColumns())):(n.field=e.getField(),!0===t.config.columns||void 0==t.config.columns?(i=Object.keys(s),i.push("width")):i=t.config.columns,i.forEach(function(t){switch(t){case"width":n.width=e.getWidth();break;case"visible":n.visible=e.visible;break;default:n[t]=s[t]}})),o.push(n)}),o},N.prototype.readers={local:function(e,t){var o=localStorage.getItem(e+"-"+t);return!!o&&JSON.parse(o)},cookie:function(e,t){var o,i,n=document.cookie,s=e+"-"+t,r=n.indexOf(s+"=");return r>-1&&(n=n.substr(r),o=n.indexOf(";"),o>-1&&(n=n.substr(0,o)),i=n.replace(s+"=","")),!!i&&JSON.parse(i)}},N.prototype.writers={local:function(e,t,o){localStorage.setItem(e+"-"+t,JSON.stringify(o))},cookie:function(e,t,o){var i=new Date;i.setDate(i.getDate()+1e4),document.cookie=e+"-"+t+"="+JSON.stringify(o)+"; expires="+i.toUTCString()}},u.prototype.registerModule("persistence",N);var B=function(e){this.table=e,this.element=!1,this.manualBlock=!1};B.prototype.initialize=function(){window.addEventListener("beforeprint",this.replaceTable.bind(this)),window.addEventListener("afterprint",this.cleanup.bind(this))},B.prototype.replaceTable=function(){this.manualBlock||(this.element=document.createElement("div"),this.element.classList.add("tabulator-print-table"),this.element.appendChild(this.table.modules.export.genereateTable(this.table.options.printConfig,this.table.options.printStyled,this.table.options.printRowRange,"print")),this.table.element.style.display="none",this.table.element.parentNode.insertBefore(this.element,this.table.element))},B.prototype.cleanup=function(){document.body.classList.remove("tabulator-print-fullscreen-hide"),this.element&&this.element.parentNode&&(this.element.parentNode.removeChild(this.element),this.table.element.style.display="")},B.prototype.printFullscreen=function(e,t,o){var i,n,s=window.scrollX,r=window.scrollY,a=document.createElement("div"),l=document.createElement("div"),c=this.table.modules.export.genereateTable(void 0!==o?o:this.table.options.printConfig,void 0!==t?t:this.table.options.printStyled,e,"print");this.manualBlock=!0,this.element=document.createElement("div"),this.element.classList.add("tabulator-print-fullscreen"),this.table.options.printHeader&&(a.classList.add("tabulator-print-header"),i="function"==typeof this.table.options.printHeader?this.table.options.printHeader.call(this.table):this.table.options.printHeader,"string"==typeof i?a.innerHTML=i:a.appendChild(i),this.element.appendChild(a)),this.element.appendChild(c),this.table.options.printFooter&&(l.classList.add("tabulator-print-footer"),n="function"==typeof this.table.options.printFooter?this.table.options.printFooter.call(this.table):this.table.options.printFooter,"string"==typeof n?l.innerHTML=n:l.appendChild(n),this.element.appendChild(l)),document.body.classList.add("tabulator-print-fullscreen-hide"),document.body.appendChild(this.element),this.table.options.printFormatter&&this.table.options.printFormatter(this.element,c),window.print(),this.cleanup(),window.scrollTo(s,r),this.manualBlock=!1},u.prototype.registerModule("print",B);var I=function(e){this.table=e,this.data=!1,this.blocked=!1,this.origFuncs={},this.currentVersion=0};I.prototype.watchData=function(e){var t,o=this;this.currentVersion++,t=this.currentVersion,o.unwatchData(),o.data=e,o.origFuncs.push=e.push,Object.defineProperty(o.data,"push",{enumerable:!1,configurable:!0,value:function(){var i=Array.from(arguments);return o.blocked||t!==o.currentVersion||i.forEach(function(e){o.table.rowManager.addRowActual(e,!1)}),o.origFuncs.push.apply(e,arguments)}}),o.origFuncs.unshift=e.unshift,Object.defineProperty(o.data,"unshift",{enumerable:!1,configurable:!0,value:function(){var i=Array.from(arguments);return o.blocked||t!==o.currentVersion||i.forEach(function(e){o.table.rowManager.addRowActual(e,!0)}),o.origFuncs.unshift.apply(e,arguments)}}),o.origFuncs.shift=e.shift,Object.defineProperty(o.data,"shift",{enumerable:!1,configurable:!0,value:function(){var i;return o.blocked||t!==o.currentVersion||o.data.length&&(i=o.table.rowManager.getRowFromDataObject(o.data[0]))&&i.deleteActual(),o.origFuncs.shift.call(e)}}),o.origFuncs.pop=e.pop,Object.defineProperty(o.data,"pop",{enumerable:!1,configurable:!0,value:function(){var i;return o.blocked||t!==o.currentVersion||o.data.length&&(i=o.table.rowManager.getRowFromDataObject(o.data[o.data.length-1]))&&i.deleteActual(),o.origFuncs.pop.call(e)}}),o.origFuncs.splice=e.splice,Object.defineProperty(o.data,"splice",{enumerable:!1,configurable:!0,value:function(){var i,n=Array.from(arguments),s=n[0]<0?e.length+n[0]:n[0],r=n[1],a=!!n[2]&&n.slice(2);if(!o.blocked&&t===o.currentVersion){if(a&&(i=!!e[s]&&o.table.rowManager.getRowFromDataObject(e[s]),i?a.forEach(function(e){o.table.rowManager.addRowActual(e,!0,i,!0)}):(a=a.slice().reverse(),a.forEach(function(e){o.table.rowManager.addRowActual(e,!0,!1,!0)}))),0!==r){var l=e.slice(s,void 0===n[1]?n[1]:s+r);l.forEach(function(e,t){var i=o.table.rowManager.getRowFromDataObject(e);i&&i.deleteActual(t!==l.length-1)})}(a||0!==r)&&o.table.rowManager.reRenderInPosition()}return o.origFuncs.splice.apply(e,arguments)}})},I.prototype.unwatchData=function(){if(!1!==this.data)for(var e in this.origFuncs)Object.defineProperty(this.data,e,{enumerable:!0,configurable:!0,writable:!0,value:this.origFuncs.key})},I.prototype.watchRow=function(e){var t=e.getData();this.blocked=!0;for(var o in t)this.watchKey(e,t,o);this.blocked=!1},I.prototype.watchKey=function(e,t,o){var i=this,n=Object.getOwnPropertyDescriptor(t,o),s=t[o],r=this.currentVersion;Object.defineProperty(t,o,{set:function(t){if(s=t,!i.blocked&&r===i.currentVersion){var a={};a[o]=t,e.updateData(a)}n.set&&n.set(t)},get:function(){return n.get&&n.get(),s}})},I.prototype.unwatchRow=function(e){var t=e.getData();for(var o in t)Object.defineProperty(t,o,{value:t[o]})},I.prototype.block=function(){this.blocked=!0},I.prototype.unblock=function(){this.blocked=!1},u.prototype.registerModule("reactiveData",I);var O=function(e){this.table=e,this.startColumn=!1,this.startX=!1,this.startWidth=!1,this.handle=null,this.prevHandle=null};O.prototype.initializeColumn=function(e,t,o){var i=this,n=!1,s=this.table.options.resizableColumns;if("header"===e&&(n="textarea"==t.definition.formatter||t.definition.variableHeight,t.modules.resize={variableHeight:n}),!0===s||s==e){var r=document.createElement("div");r.className="tabulator-col-resize-handle";var a=document.createElement("div");a.className="tabulator-col-resize-handle prev",r.addEventListener("click",function(e){e.stopPropagation()});var l=function(e){var o=t.getLastColumn();o&&i._checkResizability(o)&&(i.startColumn=t,i._mouseDown(e,o,r))};r.addEventListener("mousedown",l),r.addEventListener("touchstart",l,{passive:!0}),r.addEventListener("dblclick",function(e){var o=t.getLastColumn();o&&i._checkResizability(o)&&(e.stopPropagation(),o.reinitializeWidth(!0))}),a.addEventListener("click",function(e){e.stopPropagation()});var c=function(e){var o,n,s;(o=t.getFirstColumn())&&(n=i.table.columnManager.findColumnIndex(o),(s=n>0&&i.table.columnManager.getColumnByIndex(n-1))&&i._checkResizability(s)&&(i.startColumn=t,i._mouseDown(e,s,a)))};a.addEventListener("mousedown",c),a.addEventListener("touchstart",c,{passive:!0}),a.addEventListener("dblclick",function(e){var o,n,s;(o=t.getFirstColumn())&&(n=i.table.columnManager.findColumnIndex(o),(s=n>0&&i.table.columnManager.getColumnByIndex(n-1))&&i._checkResizability(s)&&(e.stopPropagation(),s.reinitializeWidth(!0)))}),o.appendChild(r),o.appendChild(a)}},O.prototype._checkResizability=function(e){return void 0!==e.definition.resizable?e.definition.resizable:this.table.options.resizableColumns},O.prototype._mouseDown=function(e,t,o){function i(e){t.setWidth(s.startWidth+((void 0===e.screenX?e.touches[0].screenX:e.screenX)-s.startX)),!s.table.browserSlow&&t.modules.resize&&t.modules.resize.variableHeight&&t.checkCellHeights()}function n(e){s.startColumn.modules.edit&&(s.startColumn.modules.edit.blocked=!1),s.table.browserSlow&&t.modules.resize&&t.modules.resize.variableHeight&&t.checkCellHeights(),document.body.removeEventListener("mouseup",n),document.body.removeEventListener("mousemove",i),o.removeEventListener("touchmove",i),o.removeEventListener("touchend",n),s.table.element.classList.remove("tabulator-block-select"),s.table.options.persistence&&s.table.modExists("persistence",!0)&&s.table.modules.persistence.config.columns&&s.table.modules.persistence.save("columns"),s.table.options.columnResized.call(s.table,t.getComponent())}var s=this;s.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),s.startColumn.modules.edit&&(s.startColumn.modules.edit.blocked=!0),s.startX=void 0===e.screenX?e.touches[0].screenX:e.screenX,s.startWidth=t.getWidth(),document.body.addEventListener("mousemove",i),document.body.addEventListener("mouseup",n),o.addEventListener("touchmove",i,{passive:!0}),o.addEventListener("touchend",n)},u.prototype.registerModule("resizeColumns",O);var j=function(e){this.table=e,this.startColumn=!1,this.startY=!1,this.startHeight=!1,this.handle=null,this.prevHandle=null};j.prototype.initializeRow=function(e){var t=this,o=e.getElement(),i=document.createElement("div");i.className="tabulator-row-resize-handle";var n=document.createElement("div");n.className="tabulator-row-resize-handle prev",i.addEventListener("click",function(e){e.stopPropagation()});var s=function(o){t.startRow=e,t._mouseDown(o,e,i)};i.addEventListener("mousedown",s),i.addEventListener("touchstart",s,{passive:!0}),n.addEventListener("click",function(e){e.stopPropagation()});var r=function(o){var i=t.table.rowManager.prevDisplayRow(e);i&&(t.startRow=i,t._mouseDown(o,i,n))};n.addEventListener("mousedown",r),n.addEventListener("touchstart",r,{passive:!0}),o.appendChild(i),o.appendChild(n)},j.prototype._mouseDown=function(e,t,o){function i(e){t.setHeight(s.startHeight+((void 0===e.screenY?e.touches[0].screenY:e.screenY)-s.startY))}function n(e){document.body.removeEventListener("mouseup",i),document.body.removeEventListener("mousemove",i),o.removeEventListener("touchmove",i),o.removeEventListener("touchend",n),s.table.element.classList.remove("tabulator-block-select"),s.table.options.rowResized.call(this.table,t.getComponent())}var s=this;s.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),s.startY=void 0===e.screenY?e.touches[0].screenY:e.screenY,s.startHeight=t.getHeight(),document.body.addEventListener("mousemove",i),document.body.addEventListener("mouseup",n),o.addEventListener("touchmove",i,{passive:!0}),o.addEventListener("touchend",n)},u.prototype.registerModule("resizeRows",j);var V=function(e){this.table=e,this.binding=!1,this.observer=!1,this.containerObserver=!1,this.tableHeight=0,this.tableWidth=0,this.containerHeight=0,this.containerWidth=0,this.autoResize=!1};V.prototype.initialize=function(e){var t,o=this,i=this.table;this.tableHeight=i.element.clientHeight,this.tableWidth=i.element.clientWidth,i.element.parentNode&&(this.containerHeight=i.element.parentNode.clientHeight,this.containerWidth=i.element.parentNode.clientWidth),"undefined"!=typeof ResizeObserver&&"virtual"===i.rowManager.getRenderMode()?(this.autoResize=!0,this.observer=new ResizeObserver(function(e){if(!i.browserMobile||i.browserMobile&&!i.modules.edit.currentCell){var t=Math.floor(e[0].contentRect.height),n=Math.floor(e[0].contentRect.width);o.tableHeight==t&&o.tableWidth==n||(o.tableHeight=t,o.tableWidth=n,i.element.parentNode&&(o.containerHeight=i.element.parentNode.clientHeight,o.containerWidth=i.element.parentNode.clientWidth),i.redraw())}}),this.observer.observe(i.element),t=window.getComputedStyle(i.element),this.table.element.parentNode&&!this.table.rowManager.fixedHeight&&(t.getPropertyValue("max-height")||t.getPropertyValue("min-height"))&&(this.containerObserver=new ResizeObserver(function(e){if(!i.browserMobile||i.browserMobile&&!i.modules.edit.currentCell){var t=Math.floor(e[0].contentRect.height),n=Math.floor(e[0].contentRect.width);o.containerHeight==t&&o.containerWidth==n||(o.containerHeight=t,o.containerWidth=n,o.tableHeight=i.element.clientHeight,o.tableWidth=i.element.clientWidth,i.redraw()),i.redraw()}}),this.containerObserver.observe(this.table.element.parentNode))):(this.binding=function(){(!i.browserMobile||i.browserMobile&&!i.modules.edit.currentCell)&&i.redraw()},window.addEventListener("resize",this.binding))},V.prototype.clearBindings=function(e){this.binding&&window.removeEventListener("resize",this.binding),this.observer&&this.observer.unobserve(this.table.element),this.containerObserver&&this.containerObserver.unobserve(this.table.element.parentNode)},u.prototype.registerModule("resizeTable",V);var G=function(e){this.table=e,this.columns=[],this.hiddenColumns=[],this.mode="",this.index=0,this.collapseFormatter=[],this.collapseStartOpen=!0,this.collapseHandleColumn=!1};G.prototype.initialize=function(){var e=this,t=[];this.mode=this.table.options.responsiveLayout,this.collapseFormatter=this.table.options.responsiveLayoutCollapseFormatter||this.formatCollapsedData,this.collapseStartOpen=this.table.options.responsiveLayoutCollapseStartOpen,this.hiddenColumns=[],this.table.columnManager.columnsByIndex.forEach(function(o,i){o.modules.responsive&&o.modules.responsive.order&&o.modules.responsive.visible&&(o.modules.responsive.index=i,t.push(o),o.visible||"collapse"!==e.mode||e.hiddenColumns.push(o))}),t=t.reverse(),t=t.sort(function(e,t){return t.modules.responsive.order-e.modules.responsive.order||t.modules.responsive.index-e.modules.responsive.index}),this.columns=t,"collapse"===this.mode&&this.generateCollapsedContent();for(var o=this.table.columnManager.columnsByIndex,i=Array.isArray(o),n=0,o=i?o:o[Symbol.iterator]();;){var s;if(i){if(n>=o.length)break;s=o[n++]}else{if(n=o.next(),n.done)break;s=n.value}var r=s;if("responsiveCollapse"==r.definition.formatter){this.collapseHandleColumn=r;break}}this.collapseHandleColumn&&(this.hiddenColumns.length?this.collapseHandleColumn.show():this.collapseHandleColumn.hide())},G.prototype.initializeColumn=function(e){var t=e.getDefinition();e.modules.responsive={order:void 0===t.responsive?1:t.responsive,visible:!1!==t.visible}},G.prototype.initializeRow=function(e){var t;"calc"!==e.type&&(t=document.createElement("div"),t.classList.add("tabulator-responsive-collapse"),e.modules.responsiveLayout={element:t,open:this.collapseStartOpen},this.collapseStartOpen||(t.style.display="none"))},G.prototype.layoutRow=function(e){var t=e.getElement();e.modules.responsiveLayout&&(t.appendChild(e.modules.responsiveLayout.element),this.generateCollapsedRowContent(e))},G.prototype.updateColumnVisibility=function(e,t){e.modules.responsive&&(e.modules.responsive.visible=t,this.initialize())},G.prototype.hideColumn=function(e){var t=this.hiddenColumns.length;e.hide(!1,!0),"collapse"===this.mode&&(this.hiddenColumns.unshift(e),this.generateCollapsedContent(),this.collapseHandleColumn&&!t&&this.collapseHandleColumn.show())},G.prototype.showColumn=function(e){var t;e.show(!1,!0),e.setWidth(e.getWidth()),"collapse"===this.mode&&(t=this.hiddenColumns.indexOf(e),t>-1&&this.hiddenColumns.splice(t,1),this.generateCollapsedContent(),this.collapseHandleColumn&&!this.hiddenColumns.length&&this.collapseHandleColumn.hide())},G.prototype.update=function(){for(var e=this,t=!0;t;){var o="fitColumns"==e.table.modules.layout.getMode()?e.table.columnManager.getFlexBaseWidth():e.table.columnManager.getWidth(),i=(e.table.options.headerVisible?e.table.columnManager.element.clientWidth:e.table.element.clientWidth)-o;if(i<0){var n=e.columns[e.index];n?(e.hideColumn(n),e.index++):t=!1}else{var s=e.columns[e.index-1];s&&i>0&&i>=s.getWidth()?(e.showColumn(s),e.index--):t=!1}e.table.rowManager.activeRowsCount||e.table.rowManager.renderEmptyScroll()}},G.prototype.generateCollapsedContent=function(){var e=this;this.table.rowManager.getDisplayRows().forEach(function(t){e.generateCollapsedRowContent(t)})},G.prototype.generateCollapsedRowContent=function(e){var t,o;if(e.modules.responsiveLayout){for(t=e.modules.responsiveLayout.element;t.firstChild;)t.removeChild(t.firstChild);o=this.collapseFormatter(this.generateCollapsedRowData(e)),o&&t.appendChild(o)}},G.prototype.generateCollapsedRowData=function(e){var t,o=this,i=e.getData(),n=[];return this.hiddenColumns.forEach(function(s){var r=s.getFieldValue(i);s.definition.title&&s.field&&(s.modules.format&&o.table.options.responsiveLayoutCollapseUseFormatters?(t={value:!1,data:{},getValue:function(){return r},getData:function(){return i},getElement:function(){return document.createElement("div")},getRow:function(){return e.getComponent()},getColumn:function(){return s.getComponent()}},n.push({title:s.definition.title,value:s.modules.format.formatter.call(o.table.modules.format,t,s.modules.format.params)})):n.push({title:s.definition.title,value:r}))}),n},G.prototype.formatCollapsedData=function(e){var t=document.createElement("table"),o="";return e.forEach(function(e){var t=document.createElement("div");e.value instanceof Node&&(t.appendChild(e.value),e.value=t.innerHTML),o+="<tr><td><strong>"+e.title+"</strong></td><td>"+e.value+"</td></tr>"}),t.innerHTML=o,Object.keys(e).length?t:""},u.prototype.registerModule("responsiveLayout",G);var W=function(e){this.table=e,this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],this.headerCheckboxElement=null};W.prototype.clearSelectionData=function(e){this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],e||this._rowSelectionChanged()},W.prototype.initializeRow=function(e){var t=this,o=e.getElement(),i=function e(){setTimeout(function(){t.selecting=!1},50),document.body.removeEventListener("mouseup",e)};e.modules.select={selected:!1},t.table.options.selectableCheck.call(this.table,e.getComponent())?(o.classList.add("tabulator-selectable"),o.classList.remove("tabulator-unselectable"),t.table.options.selectable&&"highlight"!=t.table.options.selectable&&("click"===t.table.options.selectableRangeMode?o.addEventListener("click",function(o){if(o.shiftKey){t.table._clearSelection(),t.lastClickedRow=t.lastClickedRow||e;var i=t.table.rowManager.getDisplayRowIndex(t.lastClickedRow),n=t.table.rowManager.getDisplayRowIndex(e),s=i<=n?i:n,r=i>=n?i:n,a=t.table.rowManager.getDisplayRows().slice(0),l=a.splice(s,r-s+1);o.ctrlKey||o.metaKey?(l.forEach(function(o){o!==t.lastClickedRow&&(!0===t.table.options.selectable||t.isRowSelected(e)?t.toggleRow(o):t.selectedRows.length<t.table.options.selectable&&t.toggleRow(o))}),t.lastClickedRow=e):(t.deselectRows(void 0,!0),!0!==t.table.options.selectable&&l.length>t.table.options.selectable&&(l=l.slice(0,t.table.options.selectable)),t.selectRows(l)),t.table._clearSelection()}else o.ctrlKey||o.metaKey?(t.toggleRow(e),t.lastClickedRow=e):(t.deselectRows(void 0,!0),t.selectRows(e),t.lastClickedRow=e)}):(o.addEventListener("click",function(o){t.table.modExists("edit")&&t.table.modules.edit.getCurrentCell()||t.table._clearSelection(),t.selecting||t.toggleRow(e)}),o.addEventListener("mousedown",function(o){if(o.shiftKey)return t.table._clearSelection(),t.selecting=!0,t.selectPrev=[],document.body.addEventListener("mouseup",i),document.body.addEventListener("keyup",i),t.toggleRow(e),!1}),o.addEventListener("mouseenter",function(o){t.selecting&&(t.table._clearSelection(),t.toggleRow(e),t.selectPrev[1]==e&&t.toggleRow(t.selectPrev[0]))}),o.addEventListener("mouseout",function(o){t.selecting&&(t.table._clearSelection(),t.selectPrev.unshift(e))})))):(o.classList.add("tabulator-unselectable"),o.classList.remove("tabulator-selectable"))},W.prototype.toggleRow=function(e){this.table.options.selectableCheck.call(this.table,e.getComponent())&&(e.modules.select&&e.modules.select.selected?this._deselectRow(e):this._selectRow(e))},W.prototype.selectRows=function(e){var t,o=this;switch(void 0===e?"undefined":_typeof(e)){case"undefined":this.table.rowManager.rows.forEach(function(e){o._selectRow(e,!0,!0)}),this._rowSelectionChanged();break;case"string":t=this.table.rowManager.findRow(e),t?this._selectRow(t,!0,!0):this.table.rowManager.getRows(e).forEach(function(e){o._selectRow(e,!0,!0)}),this._rowSelectionChanged();break;default:Array.isArray(e)?(e.forEach(function(e){o._selectRow(e,!0,!0)}),this._rowSelectionChanged()):this._selectRow(e,!1,!0)}},W.prototype._selectRow=function(e,t,o){if(!isNaN(this.table.options.selectable)&&!0!==this.table.options.selectable&&!o&&this.selectedRows.length>=this.table.options.selectable){if(!this.table.options.selectableRollingSelection)return!1;this._deselectRow(this.selectedRows[0])}var i=this.table.rowManager.findRow(e);i?-1==this.selectedRows.indexOf(i)&&(i.modules.select||(i.modules.select={}),i.modules.select.selected=!0,i.modules.select.checkboxEl&&(i.modules.select.checkboxEl.checked=!0),i.getElement().classList.add("tabulator-selected"),this.selectedRows.push(i),this.table.options.dataTreeSelectPropagate&&this.childRowSelection(i,!0),t||this.table.options.rowSelected.call(this.table,i.getComponent()),this._rowSelectionChanged(t)):t||console.warn("Selection Error - No such row found, ignoring selection:"+e)},W.prototype.isRowSelected=function(e){return-1!==this.selectedRows.indexOf(e)},W.prototype.deselectRows=function(e,t){var o,i=this;if(void 0===e){o=i.selectedRows.length;for(var n=0;n<o;n++)i._deselectRow(i.selectedRows[0],!0);i._rowSelectionChanged(t)}else Array.isArray(e)?(e.forEach(function(e){i._deselectRow(e,!0)}),i._rowSelectionChanged(t)):i._deselectRow(e,t)},W.prototype._deselectRow=function(e,t){var o,i=this,n=i.table.rowManager.findRow(e);n?(o=i.selectedRows.findIndex(function(e){return e==n}))>-1&&(n.modules.select||(n.modules.select={}),n.modules.select.selected=!1,n.modules.select.checkboxEl&&(n.modules.select.checkboxEl.checked=!1),n.getElement().classList.remove("tabulator-selected"),i.selectedRows.splice(o,1),this.table.options.dataTreeSelectPropagate&&this.childRowSelection(n,!1),t||i.table.options.rowDeselected.call(this.table,n.getComponent()),i._rowSelectionChanged(t)):t||console.warn("Deselection Error - No such row found, ignoring selection:"+e)},W.prototype.getSelectedData=function(){var e=[];return this.selectedRows.forEach(function(t){e.push(t.getData())}),e},W.prototype.getSelectedRows=function(){var e=[];return this.selectedRows.forEach(function(t){e.push(t.getComponent())}),e},W.prototype._rowSelectionChanged=function(e){this.headerCheckboxElement&&(0===this.selectedRows.length?(this.headerCheckboxElement.checked=!1,this.headerCheckboxElement.indeterminate=!1):this.table.rowManager.rows.length===this.selectedRows.length?(this.headerCheckboxElement.checked=!0,this.headerCheckboxElement.indeterminate=!1):(this.headerCheckboxElement.indeterminate=!0,this.headerCheckboxElement.checked=!1)),e||this.table.options.rowSelectionChanged.call(this.table,this.getSelectedData(),this.getSelectedRows())},W.prototype.registerRowSelectCheckbox=function(e,t){e._row.modules.select||(e._row.modules.select={}),e._row.modules.select.checkboxEl=t},W.prototype.registerHeaderSelectCheckbox=function(e){this.headerCheckboxElement=e},W.prototype.childRowSelection=function(e,t){var o=this.table.modules.dataTree.getChildren(e);if(t)for(var i=o,n=Array.isArray(i),s=0,i=n?i:i[Symbol.iterator]();;){var r;if(n){if(s>=i.length)break;r=i[s++]}else{if(s=i.next(),s.done)break;r=s.value}var a=r;this._selectRow(a,!0)}else for(var l=o,c=Array.isArray(l),u=0,l=c?l:l[Symbol.iterator]();;){var d;if(c){if(u>=l.length)break;d=l[u++]}else{if(u=l.next(),u.done)break;d=u.value}var h=d;this._deselectRow(h,!0)}},u.prototype.registerModule("selectRow",W);var U=function(e){this.table=e,this.sortList=[],this.changed=!1};U.prototype.initializeColumn=function(e,t){var o,i,n=this,s=!1;switch(_typeof(e.definition.sorter)){case"string":n.sorters[e.definition.sorter]?s=n.sorters[e.definition.sorter]:console.warn("Sort Error - No such sorter found: ",e.definition.sorter);break;case"function":s=e.definition.sorter}e.modules.sort={sorter:s,dir:"none",params:e.definition.sorterParams||{},startingDir:e.definition.headerSortStartingDir||"asc",tristate:void 0!==e.definition.headerSortTristate?e.definition.headerSortTristate:this.table.options.headerSortTristate},(void 0===e.definition.headerSort?!1!==this.table.options.headerSort:!1!==e.definition.headerSort)&&(o=e.getElement(),o.classList.add("tabulator-sortable"),i=document.createElement("div"),i.classList.add("tabulator-arrow"),t.appendChild(i),o.addEventListener("click",function(t){var o="",i=[],s=!1
-;if(e.modules.sort){if(e.modules.sort.tristate)o="none"==e.modules.sort.dir?e.modules.sort.startingDir:e.modules.sort.dir==e.modules.sort.startingDir?"asc"==e.modules.sort.dir?"desc":"asc":"none";else switch(e.modules.sort.dir){case"asc":o="desc";break;case"desc":o="asc";break;default:o=e.modules.sort.startingDir}n.table.options.columnHeaderSortMulti&&(t.shiftKey||t.ctrlKey)?(i=n.getSort(),s=i.findIndex(function(t){return t.field===e.getField()}),s>-1?(i[s].dir=o,s!=i.length-1&&(s=i.splice(s,1)[0],"none"!=o&&i.push(s))):"none"!=o&&i.push({column:e,dir:o}),n.setSort(i)):"none"==o?n.clear():n.setSort(e,o),n.table.rowManager.sorterRefresh(!n.sortList.length)}}))},U.prototype.hasChanged=function(){var e=this.changed;return this.changed=!1,e},U.prototype.getSort=function(){var e=this,t=[];return e.sortList.forEach(function(e){e.column&&t.push({column:e.column.getComponent(),field:e.column.getField(),dir:e.dir})}),t},U.prototype.setSort=function(e,t){var o=this,i=[];Array.isArray(e)||(e=[{column:e,dir:t}]),e.forEach(function(e){var t;t=o.table.columnManager.findColumn(e.column),t?(e.column=t,i.push(e),o.changed=!0):console.warn("Sort Warning - Sort field does not exist and is being ignored: ",e.column)}),o.sortList=i,this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.sort&&this.table.modules.persistence.save("sort")},U.prototype.clear=function(){this.setSort([])},U.prototype.findSorter=function(e){var t,o=this.table.rowManager.activeRows[0],i="string";if(o&&(o=o.getData(),e.getField()))switch(t=e.getFieldValue(o),void 0===t?"undefined":_typeof(t)){case"undefined":i="string";break;case"boolean":i="boolean";break;default:isNaN(t)||""===t?t.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)&&(i="alphanum"):i="number"}return this.sorters[i]},U.prototype.sort=function(e){var t=this,o=this.table.options.sortOrderReverse?t.sortList.slice().reverse():t.sortList,i=[];t.table.options.dataSorting&&t.table.options.dataSorting.call(t.table,t.getSort()),t.clearColumnHeaders(),t.table.options.ajaxSorting?o.forEach(function(e,o){t.setColumnHeader(e.column,e.dir)}):(o.forEach(function(e,o){var n=e.column.modules.sort;e.column&&n&&(n.sorter||(n.sorter=t.findSorter(e.column)),e.params="function"==typeof n.params?n.params(e.column.getComponent(),e.dir):n.params,i.push(e)),t.setColumnHeader(e.column,e.dir)}),i.length&&t._sortItems(e,i)),t.table.options.dataSorted&&t.table.options.dataSorted.call(t.table,t.getSort(),t.table.rowManager.getComponents("active"))},U.prototype.clearColumnHeaders=function(){this.table.columnManager.getRealColumns().forEach(function(e){e.modules.sort&&(e.modules.sort.dir="none",e.getElement().setAttribute("aria-sort","none"))})},U.prototype.setColumnHeader=function(e,t){e.modules.sort.dir=t,e.getElement().setAttribute("aria-sort",t)},U.prototype._sortItems=function(e,t){var o=this,i=t.length-1;e.sort(function(e,n){for(var s,r=i;r>=0;r--){var a=t[r];if(0!==(s=o._sortRow(e,n,a.column,a.dir,a.params)))break}return s})},U.prototype._sortRow=function(e,t,o,i,n){var s,r,a="asc"==i?e:t,l="asc"==i?t:e;return e=o.getFieldValue(a.getData()),t=o.getFieldValue(l.getData()),e=void 0!==e?e:"",t=void 0!==t?t:"",s=a.getComponent(),r=l.getComponent(),o.modules.sort.sorter.call(this,e,t,s,r,o.getComponent(),i,n)},U.prototype.sorters={number:function(e,t,o,i,n,s,r){var a=r.alignEmptyValues,l=r.decimalSeparator||".",c=r.thousandSeparator||",",u=0;if(e=parseFloat(String(e).split(c).join("").split(l).join(".")),t=parseFloat(String(t).split(c).join("").split(l).join(".")),isNaN(e))u=isNaN(t)?0:-1;else{if(!isNaN(t))return e-t;u=1}return("top"===a&&"desc"===s||"bottom"===a&&"asc"===s)&&(u*=-1),u},string:function(e,t,o,i,n,s,r){var a,l=r.alignEmptyValues,c=0;if(e){if(t){switch(_typeof(r.locale)){case"boolean":r.locale&&(a=this.table.modules.localize.getLocale());break;case"string":a=r.locale}return String(e).toLowerCase().localeCompare(String(t).toLowerCase(),a)}c=1}else c=t?-1:0;return("top"===l&&"desc"===s||"bottom"===l&&"asc"===s)&&(c*=-1),c},date:function(e,t,o,i,n,s,r){return r.format||(r.format="DD/MM/YYYY"),this.sorters.datetime.call(this,e,t,o,i,n,s,r)},time:function(e,t,o,i,n,s,r){return r.format||(r.format="hh:mm"),this.sorters.datetime.call(this,e,t,o,i,n,s,r)},datetime:function(e,t,o,i,n,s,r){var a=r.format||"DD/MM/YYYY hh:mm:ss",l=r.alignEmptyValues,c=0;if("undefined"!=typeof moment){if(e=moment(e,a),t=moment(t,a),e.isValid()){if(t.isValid())return e-t;c=1}else c=t.isValid()?-1:0;return("top"===l&&"desc"===s||"bottom"===l&&"asc"===s)&&(c*=-1),c}console.error("Sort Error - 'datetime' sorter is dependant on moment.js")},boolean:function(e,t,o,i,n,s,r){return(!0===e||"true"===e||"True"===e||1===e?1:0)-(!0===t||"true"===t||"True"===t||1===t?1:0)},array:function(e,t,o,i,n,s,r){function a(e){switch(u){case"length":return e.length;case"sum":return e.reduce(function(e,t){return e+t});case"max":return Math.max.apply(null,e);case"min":return Math.min.apply(null,e);case"avg":return e.reduce(function(e,t){return e+t})/e.length}}var l=0,c=0,u=r.type||"length",d=r.alignEmptyValues,h=0;if(Array.isArray(e)){if(Array.isArray(t))return l=e?a(e):0,c=t?a(t):0,l-c;d=1}else d=Array.isArray(t)?-1:0;return("top"===d&&"desc"===s||"bottom"===d&&"asc"===s)&&(h*=-1),h},exists:function(e,t,o,i,n,s,r){return(void 0===e?0:1)-(void 0===t?0:1)},alphanum:function(e,t,o,i,n,s,r){var a,l,c,u,d,h=0,p=/(\d+)|(\D+)/g,m=/\d/,f=r.alignEmptyValues,g=0;if(e||0===e){if(t||0===t){if(isFinite(e)&&isFinite(t))return e-t;if(a=String(e).toLowerCase(),l=String(t).toLowerCase(),a===l)return 0;if(!m.test(a)||!m.test(l))return a>l?1:-1;for(a=a.match(p),l=l.match(p),d=a.length>l.length?l.length:a.length;h<d;)if(c=a[h],u=l[h++],c!==u)return isFinite(c)&&isFinite(u)?("0"===c.charAt(0)&&(c="."+c),"0"===u.charAt(0)&&(u="."+u),c-u):c>u?1:-1;return a.length>l.length}g=1}else g=t||0===t?-1:0;return("top"===f&&"desc"===s||"bottom"===f&&"asc"===s)&&(g*=-1),g}},u.prototype.registerModule("sort",U);var Y=function(e){this.table=e};return Y.prototype.initializeColumn=function(e){var t,o=this,i=[];e.definition.validator&&(Array.isArray(e.definition.validator)?e.definition.validator.forEach(function(e){(t=o._extractValidator(e))&&i.push(t)}):(t=this._extractValidator(e.definition.validator))&&i.push(t),e.modules.validate=!!i.length&&i)},Y.prototype._extractValidator=function(e){var t,o,i;switch(void 0===e?"undefined":_typeof(e)){case"string":return i=e.indexOf(":"),i>-1?(t=e.substring(0,i),o=e.substring(i+1)):t=e,this._buildValidator(t,o);case"function":return this._buildValidator(e);case"object":return this._buildValidator(e.type,e.parameters)}},Y.prototype._buildValidator=function(e,t){var o="function"==typeof e?e:this.validators[e];return o?{type:"function"==typeof e?"function":e,func:o,params:t}:(console.warn("Validator Setup Error - No matching validator found:",e),!1)},Y.prototype.validate=function(e,t,o){var i=this,n=[];return e&&e.forEach(function(e){e.func.call(i,t,o,e.params)||n.push({type:e.type,parameters:e.params})}),!n.length||n},Y.prototype.validators={integer:function(e,t,o){return""===t||null===t||void 0===t||"number"==typeof(t=Number(t))&&isFinite(t)&&Math.floor(t)===t},float:function(e,t,o){return""===t||null===t||void 0===t||"number"==typeof(t=Number(t))&&isFinite(t)&&t%1!=0},numeric:function(e,t,o){return""===t||null===t||void 0===t||!isNaN(t)},string:function(e,t,o){return""===t||null===t||void 0===t||isNaN(t)},max:function(e,t,o){return""===t||null===t||void 0===t||parseFloat(t)<=o},min:function(e,t,o){return""===t||null===t||void 0===t||parseFloat(t)>=o},minLength:function(e,t,o){return""===t||null===t||void 0===t||String(t).length>=o},maxLength:function(e,t,o){return""===t||null===t||void 0===t||String(t).length<=o},in:function(e,t,o){return""===t||null===t||void 0===t||("string"==typeof o&&(o=o.split("|")),""===t||o.indexOf(t)>-1)},regex:function(e,t,o){return""===t||null===t||void 0===t||new RegExp(o).test(t)},unique:function(e,t,o){if(""===t||null===t||void 0===t)return!0;var i=!0,n=e.getData(),s=e.getColumn()._getSelf();return this.table.rowManager.rows.forEach(function(e){var o=e.getData();o!==n&&t==s.getFieldValue(o)&&(i=!1)}),i},required:function(e,t,o){return""!==t&&null!==t&&void 0!==t}},u.prototype.registerModule("validate",Y),u});
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/tabulator_core.js b/app/static/vendors/tabulator/js.old/tabulator_core.js
deleted file mode 100644 (file)
index 4a5287b..0000000
+++ /dev/null
@@ -1,8523 +0,0 @@
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-
-'use strict';
-
-// https://tc39.github.io/ecma262/#sec-array.prototype.findIndex
-
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-if (!Array.prototype.findIndex) {
-
-       Object.defineProperty(Array.prototype, 'findIndex', {
-
-               value: function value(predicate) {
-
-                       // 1. Let O be ? ToObject(this value).
-
-                       if (this == null) {
-
-                               throw new TypeError('"this" is null or not defined');
-                       }
-
-                       var o = Object(this);
-
-                       // 2. Let len be ? ToLength(? Get(O, "length")).
-
-                       var len = o.length >>> 0;
-
-                       // 3. If IsCallable(predicate) is false, throw a TypeError exception.
-
-                       if (typeof predicate !== 'function') {
-
-                               throw new TypeError('predicate must be a function');
-                       }
-
-                       // 4. If thisArg was supplied, let T be thisArg; else let T be undefined.
-
-                       var thisArg = arguments[1];
-
-                       // 5. Let k be 0.
-
-                       var k = 0;
-
-                       // 6. Repeat, while k < len
-
-                       while (k < len) {
-
-                               // a. Let Pk be ! ToString(k).
-
-                               // b. Let kValue be ? Get(O, Pk).
-
-                               // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).
-
-                               // d. If testResult is true, return k.
-
-                               var kValue = o[k];
-
-                               if (predicate.call(thisArg, kValue, k, o)) {
-
-                                       return k;
-                               }
-
-                               // e. Increase k by 1.
-
-                               k++;
-                       }
-
-                       // 7. Return -1.
-
-                       return -1;
-               }
-
-       });
-}
-
-// https://tc39.github.io/ecma262/#sec-array.prototype.find
-
-if (!Array.prototype.find) {
-
-       Object.defineProperty(Array.prototype, 'find', {
-
-               value: function value(predicate) {
-
-                       // 1. Let O be ? ToObject(this value).
-
-                       if (this == null) {
-
-                               throw new TypeError('"this" is null or not defined');
-                       }
-
-                       var o = Object(this);
-
-                       // 2. Let len be ? ToLength(? Get(O, "length")).
-
-                       var len = o.length >>> 0;
-
-                       // 3. If IsCallable(predicate) is false, throw a TypeError exception.
-
-                       if (typeof predicate !== 'function') {
-
-                               throw new TypeError('predicate must be a function');
-                       }
-
-                       // 4. If thisArg was supplied, let T be thisArg; else let T be undefined.
-
-                       var thisArg = arguments[1];
-
-                       // 5. Let k be 0.
-
-                       var k = 0;
-
-                       // 6. Repeat, while k < len
-
-                       while (k < len) {
-
-                               // a. Let Pk be ! ToString(k).
-
-                               // b. Let kValue be ? Get(O, Pk).
-
-                               // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).
-
-                               // d. If testResult is true, return kValue.
-
-                               var kValue = o[k];
-
-                               if (predicate.call(thisArg, kValue, k, o)) {
-
-                                       return kValue;
-                               }
-
-                               // e. Increase k by 1.
-
-                               k++;
-                       }
-
-                       // 7. Return undefined.
-
-                       return undefined;
-               }
-
-       });
-}
-
-var ColumnManager = function ColumnManager(table) {
-
-       this.table = table; //hold parent table
-
-       this.blockHozScrollEvent = false;
-
-       this.headersElement = this.createHeadersElement();
-
-       this.element = this.createHeaderElement(); //containing element
-
-       this.rowManager = null; //hold row manager object
-
-       this.columns = []; // column definition object
-
-       this.columnsByIndex = []; //columns by index
-
-       this.columnsByField = {}; //columns by field
-
-       this.scrollLeft = 0;
-
-       this.element.insertBefore(this.headersElement, this.element.firstChild);
-};
-
-////////////// Setup Functions /////////////////
-
-
-ColumnManager.prototype.createHeadersElement = function () {
-
-       var el = document.createElement("div");
-
-       el.classList.add("tabulator-headers");
-
-       return el;
-};
-
-ColumnManager.prototype.createHeaderElement = function () {
-
-       var el = document.createElement("div");
-
-       el.classList.add("tabulator-header");
-
-       if (!this.table.options.headerVisible) {
-
-               el.classList.add("tabulator-header-hidden");
-       }
-
-       return el;
-};
-
-ColumnManager.prototype.initialize = function () {
-
-       var self = this;
-
-       //scroll body along with header
-
-       // self.element.addEventListener("scroll", function(e){
-
-       //      if(!self.blockHozScrollEvent){
-
-       //              self.table.rowManager.scrollHorizontal(self.element.scrollLeft);
-
-       //      }
-
-       // });
-};
-
-//link to row manager
-
-ColumnManager.prototype.setRowManager = function (manager) {
-
-       this.rowManager = manager;
-};
-
-//return containing element
-
-ColumnManager.prototype.getElement = function () {
-
-       return this.element;
-};
-
-//return header containing element
-
-ColumnManager.prototype.getHeadersElement = function () {
-
-       return this.headersElement;
-};
-
-// ColumnManager.prototype.tempScrollBlock = function(){
-
-//     clearTimeout(this.blockHozScrollEvent);
-
-//     this.blockHozScrollEvent = setTimeout(() => {this.blockHozScrollEvent = false;}, 50);
-
-// }
-
-
-//scroll horizontally to match table body
-
-ColumnManager.prototype.scrollHorizontal = function (left) {
-
-       var hozAdjust = 0,
-           scrollWidth = this.element.scrollWidth - this.table.element.clientWidth;
-
-       // this.tempScrollBlock();
-
-       this.element.scrollLeft = left;
-
-       //adjust for vertical scrollbar moving table when present
-
-       if (left > scrollWidth) {
-
-               hozAdjust = left - scrollWidth;
-
-               this.element.style.marginLeft = -hozAdjust + "px";
-       } else {
-
-               this.element.style.marginLeft = 0;
-       }
-
-       //keep frozen columns fixed in position
-
-       //this._calcFrozenColumnsPos(hozAdjust + 3);
-
-
-       this.scrollLeft = left;
-
-       if (this.table.modExists("frozenColumns")) {
-
-               this.table.modules.frozenColumns.scrollHorizontal();
-       }
-};
-
-///////////// Column Setup Functions /////////////
-
-
-ColumnManager.prototype.generateColumnsFromRowData = function (data) {
-
-       var cols = [],
-           row,
-           sorter;
-
-       if (data && data.length) {
-
-               row = data[0];
-
-               for (var key in row) {
-
-                       var col = {
-
-                               field: key,
-
-                               title: key
-
-                       };
-
-                       var value = row[key];
-
-                       switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
-
-                               case "undefined":
-
-                                       sorter = "string";
-
-                                       break;
-
-                               case "boolean":
-
-                                       sorter = "boolean";
-
-                                       break;
-
-                               case "object":
-
-                                       if (Array.isArray(value)) {
-
-                                               sorter = "array";
-                                       } else {
-
-                                               sorter = "string";
-                                       }
-
-                                       break;
-
-                               default:
-
-                                       if (!isNaN(value) && value !== "") {
-
-                                               sorter = "number";
-                                       } else {
-
-                                               if (value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)) {
-
-                                                       sorter = "alphanum";
-                                               } else {
-
-                                                       sorter = "string";
-                                               }
-                                       }
-
-                                       break;
-
-                       }
-
-                       col.sorter = sorter;
-
-                       cols.push(col);
-               }
-
-               this.table.options.columns = cols;
-
-               this.setColumns(this.table.options.columns);
-       }
-};
-
-ColumnManager.prototype.setColumns = function (cols, row) {
-
-       var self = this;
-
-       while (self.headersElement.firstChild) {
-               self.headersElement.removeChild(self.headersElement.firstChild);
-       }self.columns = [];
-
-       self.columnsByIndex = [];
-
-       self.columnsByField = {};
-
-       //reset frozen columns
-
-       if (self.table.modExists("frozenColumns")) {
-
-               self.table.modules.frozenColumns.reset();
-       }
-
-       cols.forEach(function (def, i) {
-
-               self._addColumn(def);
-       });
-
-       self._reIndexColumns();
-
-       if (self.table.options.responsiveLayout && self.table.modExists("responsiveLayout", true)) {
-
-               self.table.modules.responsiveLayout.initialize();
-       }
-
-       self.redraw(true);
-};
-
-ColumnManager.prototype._addColumn = function (definition, before, nextToColumn) {
-
-       var column = new Column(definition, this),
-           colEl = column.getElement(),
-           index = nextToColumn ? this.findColumnIndex(nextToColumn) : nextToColumn;
-
-       if (nextToColumn && index > -1) {
-
-               var parentIndex = this.columns.indexOf(nextToColumn.getTopColumn());
-
-               var nextEl = nextToColumn.getElement();
-
-               if (before) {
-
-                       this.columns.splice(parentIndex, 0, column);
-
-                       nextEl.parentNode.insertBefore(colEl, nextEl);
-               } else {
-
-                       this.columns.splice(parentIndex + 1, 0, column);
-
-                       nextEl.parentNode.insertBefore(colEl, nextEl.nextSibling);
-               }
-       } else {
-
-               if (before) {
-
-                       this.columns.unshift(column);
-
-                       this.headersElement.insertBefore(column.getElement(), this.headersElement.firstChild);
-               } else {
-
-                       this.columns.push(column);
-
-                       this.headersElement.appendChild(column.getElement());
-               }
-
-               column.columnRendered();
-       }
-
-       return column;
-};
-
-ColumnManager.prototype.registerColumnField = function (col) {
-
-       if (col.definition.field) {
-
-               this.columnsByField[col.definition.field] = col;
-       }
-};
-
-ColumnManager.prototype.registerColumnPosition = function (col) {
-
-       this.columnsByIndex.push(col);
-};
-
-ColumnManager.prototype._reIndexColumns = function () {
-
-       this.columnsByIndex = [];
-
-       this.columns.forEach(function (column) {
-
-               column.reRegisterPosition();
-       });
-};
-
-//ensure column headers take up the correct amount of space in column groups
-
-ColumnManager.prototype._verticalAlignHeaders = function () {
-
-       var self = this,
-           minHeight = 0;
-
-       self.columns.forEach(function (column) {
-
-               var height;
-
-               column.clearVerticalAlign();
-
-               height = column.getHeight();
-
-               if (height > minHeight) {
-
-                       minHeight = height;
-               }
-       });
-
-       self.columns.forEach(function (column) {
-
-               column.verticalAlign(self.table.options.columnHeaderVertAlign, minHeight);
-       });
-
-       self.rowManager.adjustTableSize();
-};
-
-//////////////// Column Details /////////////////
-
-
-ColumnManager.prototype.findColumn = function (subject) {
-
-       var self = this;
-
-       if ((typeof subject === 'undefined' ? 'undefined' : _typeof(subject)) == "object") {
-
-               if (subject instanceof Column) {
-
-                       //subject is column element
-
-                       return subject;
-               } else if (subject instanceof ColumnComponent) {
-
-                       //subject is public column component
-
-                       return subject._getSelf() || false;
-               } else if (typeof HTMLElement !== "undefined" && subject instanceof HTMLElement) {
-
-                       //subject is a HTML element of the column header
-
-                       var match = self.columns.find(function (column) {
-
-                               return column.element === subject;
-                       });
-
-                       return match || false;
-               }
-       } else {
-
-               //subject should be treated as the field name of the column
-
-               return this.columnsByField[subject] || false;
-       }
-
-       //catch all for any other type of input
-
-
-       return false;
-};
-
-ColumnManager.prototype.getColumnByField = function (field) {
-
-       return this.columnsByField[field];
-};
-
-ColumnManager.prototype.getColumnsByFieldRoot = function (root) {
-       var _this = this;
-
-       var matches = [];
-
-       Object.keys(this.columnsByField).forEach(function (field) {
-
-               var fieldRoot = field.split(".")[0];
-
-               if (fieldRoot === root) {
-
-                       matches.push(_this.columnsByField[field]);
-               }
-       });
-
-       return matches;
-};
-
-ColumnManager.prototype.getColumnByIndex = function (index) {
-
-       return this.columnsByIndex[index];
-};
-
-ColumnManager.prototype.getFirstVisibileColumn = function (index) {
-
-       var index = this.columnsByIndex.findIndex(function (col) {
-
-               return col.visible;
-       });
-
-       return index > -1 ? this.columnsByIndex[index] : false;
-};
-
-ColumnManager.prototype.getColumns = function () {
-
-       return this.columns;
-};
-
-ColumnManager.prototype.findColumnIndex = function (column) {
-
-       return this.columnsByIndex.findIndex(function (col) {
-
-               return column === col;
-       });
-};
-
-//return all columns that are not groups
-
-ColumnManager.prototype.getRealColumns = function () {
-
-       return this.columnsByIndex;
-};
-
-//travers across columns and call action
-
-ColumnManager.prototype.traverse = function (callback) {
-
-       var self = this;
-
-       self.columnsByIndex.forEach(function (column, i) {
-
-               callback(column, i);
-       });
-};
-
-//get defintions of actual columns
-
-ColumnManager.prototype.getDefinitions = function (active) {
-
-       var self = this,
-           output = [];
-
-       self.columnsByIndex.forEach(function (column) {
-
-               if (!active || active && column.visible) {
-
-                       output.push(column.getDefinition());
-               }
-       });
-
-       return output;
-};
-
-//get full nested definition tree
-
-ColumnManager.prototype.getDefinitionTree = function () {
-
-       var self = this,
-           output = [];
-
-       self.columns.forEach(function (column) {
-
-               output.push(column.getDefinition(true));
-       });
-
-       return output;
-};
-
-ColumnManager.prototype.getComponents = function (structured) {
-
-       var self = this,
-           output = [],
-           columns = structured ? self.columns : self.columnsByIndex;
-
-       columns.forEach(function (column) {
-
-               output.push(column.getComponent());
-       });
-
-       return output;
-};
-
-ColumnManager.prototype.getWidth = function () {
-
-       var width = 0;
-
-       this.columnsByIndex.forEach(function (column) {
-
-               if (column.visible) {
-
-                       width += column.getWidth();
-               }
-       });
-
-       return width;
-};
-
-ColumnManager.prototype.moveColumn = function (from, to, after) {
-
-       this.moveColumnActual(from, to, after);
-
-       if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-               this.table.modules.responsiveLayout.initialize();
-       }
-
-       if (this.table.modExists("columnCalcs")) {
-
-               this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
-       }
-
-       to.element.parentNode.insertBefore(from.element, to.element);
-
-       if (after) {
-
-               to.element.parentNode.insertBefore(to.element, from.element);
-       }
-
-       this._verticalAlignHeaders();
-
-       this.table.rowManager.reinitialize();
-};
-
-ColumnManager.prototype.moveColumnActual = function (from, to, after) {
-
-       if (from.parent.isGroup) {
-
-               this._moveColumnInArray(from.parent.columns, from, to, after);
-       } else {
-
-               this._moveColumnInArray(this.columns, from, to, after);
-       }
-
-       this._moveColumnInArray(this.columnsByIndex, from, to, after, true);
-
-       if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-               this.table.modules.responsiveLayout.initialize();
-       }
-
-       if (this.table.options.columnMoved) {
-
-               this.table.options.columnMoved.call(this.table, from.getComponent(), this.table.columnManager.getComponents());
-       }
-
-       if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.columns) {
-
-               this.table.modules.persistence.save("columns");
-       }
-};
-
-ColumnManager.prototype._moveColumnInArray = function (columns, from, to, after, updateRows) {
-
-       var fromIndex = columns.indexOf(from),
-           toIndex;
-
-       if (fromIndex > -1) {
-
-               columns.splice(fromIndex, 1);
-
-               toIndex = columns.indexOf(to);
-
-               if (toIndex > -1) {
-
-                       if (after) {
-
-                               toIndex = toIndex + 1;
-                       }
-               } else {
-
-                       toIndex = fromIndex;
-               }
-
-               columns.splice(toIndex, 0, from);
-
-               if (updateRows) {
-
-                       this.table.rowManager.rows.forEach(function (row) {
-
-                               if (row.cells.length) {
-
-                                       var cell = row.cells.splice(fromIndex, 1)[0];
-
-                                       row.cells.splice(toIndex, 0, cell);
-                               }
-                       });
-               }
-       }
-};
-
-ColumnManager.prototype.scrollToColumn = function (column, position, ifVisible) {
-       var _this2 = this;
-
-       var left = 0,
-           offset = 0,
-           adjust = 0,
-           colEl = column.getElement();
-
-       return new Promise(function (resolve, reject) {
-
-               if (typeof position === "undefined") {
-
-                       position = _this2.table.options.scrollToColumnPosition;
-               }
-
-               if (typeof ifVisible === "undefined") {
-
-                       ifVisible = _this2.table.options.scrollToColumnIfVisible;
-               }
-
-               if (column.visible) {
-
-                       //align to correct position
-
-                       switch (position) {
-
-                               case "middle":
-
-                               case "center":
-
-                                       adjust = -_this2.element.clientWidth / 2;
-
-                                       break;
-
-                               case "right":
-
-                                       adjust = colEl.clientWidth - _this2.headersElement.clientWidth;
-
-                                       break;
-
-                       }
-
-                       //check column visibility
-
-                       if (!ifVisible) {
-
-                               offset = colEl.offsetLeft;
-
-                               if (offset > 0 && offset + colEl.offsetWidth < _this2.element.clientWidth) {
-
-                                       return false;
-                               }
-                       }
-
-                       //calculate scroll position
-
-                       left = colEl.offsetLeft + _this2.element.scrollLeft + adjust;
-
-                       left = Math.max(Math.min(left, _this2.table.rowManager.element.scrollWidth - _this2.table.rowManager.element.clientWidth), 0);
-
-                       _this2.table.rowManager.scrollHorizontal(left);
-
-                       _this2.scrollHorizontal(left);
-
-                       resolve();
-               } else {
-
-                       console.warn("Scroll Error - Column not visible");
-
-                       reject("Scroll Error - Column not visible");
-               }
-       });
-};
-
-//////////////// Cell Management /////////////////
-
-
-ColumnManager.prototype.generateCells = function (row) {
-
-       var self = this;
-
-       var cells = [];
-
-       self.columnsByIndex.forEach(function (column) {
-
-               cells.push(column.generateCell(row));
-       });
-
-       return cells;
-};
-
-//////////////// Column Management /////////////////
-
-
-ColumnManager.prototype.getFlexBaseWidth = function () {
-
-       var self = this,
-           totalWidth = self.table.element.clientWidth,
-           //table element width
-
-       fixedWidth = 0;
-
-       //adjust for vertical scrollbar if present
-
-       if (self.rowManager.element.scrollHeight > self.rowManager.element.clientHeight) {
-
-               totalWidth -= self.rowManager.element.offsetWidth - self.rowManager.element.clientWidth;
-       }
-
-       this.columnsByIndex.forEach(function (column) {
-
-               var width, minWidth, colWidth;
-
-               if (column.visible) {
-
-                       width = column.definition.width || 0;
-
-                       minWidth = typeof column.minWidth == "undefined" ? self.table.options.columnMinWidth : parseInt(column.minWidth);
-
-                       if (typeof width == "string") {
-
-                               if (width.indexOf("%") > -1) {
-
-                                       colWidth = totalWidth / 100 * parseInt(width);
-                               } else {
-
-                                       colWidth = parseInt(width);
-                               }
-                       } else {
-
-                               colWidth = width;
-                       }
-
-                       fixedWidth += colWidth > minWidth ? colWidth : minWidth;
-               }
-       });
-
-       return fixedWidth;
-};
-
-ColumnManager.prototype.addColumn = function (definition, before, nextToColumn) {
-       var _this3 = this;
-
-       return new Promise(function (resolve, reject) {
-
-               var column = _this3._addColumn(definition, before, nextToColumn);
-
-               _this3._reIndexColumns();
-
-               if (_this3.table.options.responsiveLayout && _this3.table.modExists("responsiveLayout", true)) {
-
-                       _this3.table.modules.responsiveLayout.initialize();
-               }
-
-               if (_this3.table.modExists("columnCalcs")) {
-
-                       _this3.table.modules.columnCalcs.recalc(_this3.table.rowManager.activeRows);
-               }
-
-               _this3.redraw();
-
-               if (_this3.table.modules.layout.getMode() != "fitColumns") {
-
-                       column.reinitializeWidth();
-               }
-
-               _this3._verticalAlignHeaders();
-
-               _this3.table.rowManager.reinitialize();
-
-               resolve(column);
-       });
-};
-
-//remove column from system
-
-ColumnManager.prototype.deregisterColumn = function (column) {
-
-       var field = column.getField(),
-           index;
-
-       //remove from field list
-
-       if (field) {
-
-               delete this.columnsByField[field];
-       }
-
-       //remove from index list
-
-       index = this.columnsByIndex.indexOf(column);
-
-       if (index > -1) {
-
-               this.columnsByIndex.splice(index, 1);
-       }
-
-       //remove from column list
-
-       index = this.columns.indexOf(column);
-
-       if (index > -1) {
-
-               this.columns.splice(index, 1);
-       }
-
-       if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-               this.table.modules.responsiveLayout.initialize();
-       }
-
-       this.redraw();
-};
-
-//redraw columns
-
-ColumnManager.prototype.redraw = function (force) {
-
-       if (force) {
-
-               if (Tabulator.prototype.helpers.elVisible(this.element)) {
-
-                       this._verticalAlignHeaders();
-               }
-
-               this.table.rowManager.resetScroll();
-
-               this.table.rowManager.reinitialize();
-       }
-
-       if (["fitColumns", "fitDataStretch"].indexOf(this.table.modules.layout.getMode()) > -1) {
-
-               this.table.modules.layout.layout();
-       } else {
-
-               if (force) {
-
-                       this.table.modules.layout.layout();
-               } else {
-
-                       if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-                               this.table.modules.responsiveLayout.update();
-                       }
-               }
-       }
-
-       if (this.table.modExists("frozenColumns")) {
-
-               this.table.modules.frozenColumns.layout();
-       }
-
-       if (this.table.modExists("columnCalcs")) {
-
-               this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
-       }
-
-       if (force) {
-
-               if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.columns) {
-
-                       this.table.modules.persistence.save("columns");
-               }
-
-               if (this.table.modExists("columnCalcs")) {
-
-                       this.table.modules.columnCalcs.redraw();
-               }
-       }
-
-       this.table.footerManager.redraw();
-};
-
-//public column object
-var ColumnComponent = function ColumnComponent(column) {
-       this._column = column;
-       this.type = "ColumnComponent";
-};
-
-ColumnComponent.prototype.getElement = function () {
-       return this._column.getElement();
-};
-
-ColumnComponent.prototype.getDefinition = function () {
-       return this._column.getDefinition();
-};
-
-ColumnComponent.prototype.getField = function () {
-       return this._column.getField();
-};
-
-ColumnComponent.prototype.getCells = function () {
-       var cells = [];
-
-       this._column.cells.forEach(function (cell) {
-               cells.push(cell.getComponent());
-       });
-
-       return cells;
-};
-
-ColumnComponent.prototype.getVisibility = function () {
-       return this._column.visible;
-};
-
-ColumnComponent.prototype.show = function () {
-       if (this._column.isGroup) {
-               this._column.columns.forEach(function (column) {
-                       column.show();
-               });
-       } else {
-               this._column.show();
-       }
-};
-
-ColumnComponent.prototype.hide = function () {
-       if (this._column.isGroup) {
-               this._column.columns.forEach(function (column) {
-                       column.hide();
-               });
-       } else {
-               this._column.hide();
-       }
-};
-
-ColumnComponent.prototype.toggle = function () {
-       if (this._column.visible) {
-               this.hide();
-       } else {
-               this.show();
-       }
-};
-
-ColumnComponent.prototype.delete = function () {
-       return this._column.delete();
-};
-
-ColumnComponent.prototype.getSubColumns = function () {
-       var output = [];
-
-       if (this._column.columns.length) {
-               this._column.columns.forEach(function (column) {
-                       output.push(column.getComponent());
-               });
-       }
-
-       return output;
-};
-
-ColumnComponent.prototype.getParentColumn = function () {
-       return this._column.parent instanceof Column ? this._column.parent.getComponent() : false;
-};
-
-ColumnComponent.prototype._getSelf = function () {
-       return this._column;
-};
-
-ColumnComponent.prototype.scrollTo = function () {
-       return this._column.table.columnManager.scrollToColumn(this._column);
-};
-
-ColumnComponent.prototype.getTable = function () {
-       return this._column.table;
-};
-
-ColumnComponent.prototype.headerFilterFocus = function () {
-       if (this._column.table.modExists("filter", true)) {
-               this._column.table.modules.filter.setHeaderFilterFocus(this._column);
-       }
-};
-
-ColumnComponent.prototype.reloadHeaderFilter = function () {
-       if (this._column.table.modExists("filter", true)) {
-               this._column.table.modules.filter.reloadHeaderFilter(this._column);
-       }
-};
-
-ColumnComponent.prototype.getHeaderFilterValue = function () {
-       if (this._column.table.modExists("filter", true)) {
-               return this._column.table.modules.filter.getHeaderFilterValue(this._column);
-       }
-};
-
-ColumnComponent.prototype.setHeaderFilterValue = function (value) {
-       if (this._column.table.modExists("filter", true)) {
-               this._column.table.modules.filter.setHeaderFilterValue(this._column, value);
-       }
-};
-
-ColumnComponent.prototype.move = function (to, after) {
-       var toColumn = this._column.table.columnManager.findColumn(to);
-
-       if (toColumn) {
-               this._column.table.columnManager.moveColumn(this._column, toColumn, after);
-       } else {
-               console.warn("Move Error - No matching column found:", toColumn);
-       }
-};
-
-ColumnComponent.prototype.getNextColumn = function () {
-       var nextCol = this._column.nextColumn();
-
-       return nextCol ? nextCol.getComponent() : false;
-};
-
-ColumnComponent.prototype.getPrevColumn = function () {
-       var prevCol = this._column.prevColumn();
-
-       return prevCol ? prevCol.getComponent() : false;
-};
-
-ColumnComponent.prototype.updateDefinition = function (updates) {
-       return this._column.updateDefinition(updates);
-};
-
-var Column = function Column(def, parent) {
-       var self = this;
-
-       this.table = parent.table;
-       this.definition = def; //column definition
-       this.parent = parent; //hold parent object
-       this.type = "column"; //type of element
-       this.columns = []; //child columns
-       this.cells = []; //cells bound to this column
-       this.element = this.createElement(); //column header element
-       this.contentElement = false;
-       this.titleElement = false;
-       this.groupElement = this.createGroupElement(); //column group holder element
-       this.isGroup = false;
-       this.tooltip = false; //hold column tooltip
-       this.hozAlign = ""; //horizontal text alignment
-       this.vertAlign = ""; //vert text alignment
-
-       //multi dimensional filed handling
-       this.field = "";
-       this.fieldStructure = "";
-       this.getFieldValue = "";
-       this.setFieldValue = "";
-
-       this.titleFormatterRendered = false;
-
-       this.setField(this.definition.field);
-
-       if (this.table.options.invalidOptionWarnings) {
-               this.checkDefinition();
-       }
-
-       this.modules = {}; //hold module variables;
-
-       this.cellEvents = {
-               cellClick: false,
-               cellDblClick: false,
-               cellContext: false,
-               cellTap: false,
-               cellDblTap: false,
-               cellTapHold: false,
-               cellMouseEnter: false,
-               cellMouseLeave: false,
-               cellMouseOver: false,
-               cellMouseOut: false,
-               cellMouseMove: false
-       };
-
-       this.width = null; //column width
-       this.widthStyled = ""; //column width prestyled to improve render efficiency
-       this.minWidth = null; //column minimum width
-       this.minWidthStyled = ""; //column minimum prestyled to improve render efficiency
-       this.widthFixed = false; //user has specified a width for this column
-
-       this.visible = true; //default visible state
-
-       this._mapDepricatedFunctionality();
-
-       //initialize column
-       if (def.columns) {
-
-               this.isGroup = true;
-
-               def.columns.forEach(function (def, i) {
-                       var newCol = new Column(def, self);
-                       self.attachColumn(newCol);
-               });
-
-               self.checkColumnVisibility();
-       } else {
-               parent.registerColumnField(this);
-       }
-
-       if (def.rowHandle && this.table.options.movableRows !== false && this.table.modExists("moveRow")) {
-               this.table.modules.moveRow.setHandle(true);
-       }
-
-       this._buildHeader();
-
-       this.bindModuleColumns();
-};
-
-Column.prototype.createElement = function () {
-       var el = document.createElement("div");
-
-       el.classList.add("tabulator-col");
-       el.setAttribute("role", "columnheader");
-       el.setAttribute("aria-sort", "none");
-
-       return el;
-};
-
-Column.prototype.createGroupElement = function () {
-       var el = document.createElement("div");
-
-       el.classList.add("tabulator-col-group-cols");
-
-       return el;
-};
-
-Column.prototype.checkDefinition = function () {
-       var _this4 = this;
-
-       Object.keys(this.definition).forEach(function (key) {
-               if (_this4.defaultOptionList.indexOf(key) === -1) {
-                       console.warn("Invalid column definition option in '" + (_this4.field || _this4.definition.title) + "' column:", key);
-               }
-       });
-};
-
-Column.prototype.setField = function (field) {
-       this.field = field;
-       this.fieldStructure = field ? this.table.options.nestedFieldSeparator ? field.split(this.table.options.nestedFieldSeparator) : [field] : [];
-       this.getFieldValue = this.fieldStructure.length > 1 ? this._getNestedData : this._getFlatData;
-       this.setFieldValue = this.fieldStructure.length > 1 ? this._setNestedData : this._setFlatData;
-};
-
-//register column position with column manager
-Column.prototype.registerColumnPosition = function (column) {
-       this.parent.registerColumnPosition(column);
-};
-
-//register column position with column manager
-Column.prototype.registerColumnField = function (column) {
-       this.parent.registerColumnField(column);
-};
-
-//trigger position registration
-Column.prototype.reRegisterPosition = function () {
-       if (this.isGroup) {
-               this.columns.forEach(function (column) {
-                       column.reRegisterPosition();
-               });
-       } else {
-               this.registerColumnPosition(this);
-       }
-};
-
-Column.prototype._mapDepricatedFunctionality = function () {
-       if (typeof this.definition.hideInHtml !== "undefined") {
-               this.definition.htmlOutput = !this.definition.hideInHtml;
-               console.warn("hideInHtml column definition property is deprecated, you should now use htmlOutput");
-       }
-
-       if (typeof this.definition.align !== "undefined") {
-               this.definition.hozAlign = this.definition.align;
-               console.warn("align column definition property is deprecated, you should now use hozAlign");
-       }
-};
-
-Column.prototype.setTooltip = function () {
-       var self = this,
-           def = self.definition;
-
-       //set header tooltips
-       var tooltip = def.headerTooltip || def.tooltip === false ? def.headerTooltip : self.table.options.tooltipsHeader;
-
-       if (tooltip) {
-               if (tooltip === true) {
-                       if (def.field) {
-                               self.table.modules.localize.bind("columns|" + def.field, function (value) {
-                                       self.element.setAttribute("title", value || def.title);
-                               });
-                       } else {
-                               self.element.setAttribute("title", def.title);
-                       }
-               } else {
-                       if (typeof tooltip == "function") {
-                               tooltip = tooltip(self.getComponent());
-
-                               if (tooltip === false) {
-                                       tooltip = "";
-                               }
-                       }
-
-                       self.element.setAttribute("title", tooltip);
-               }
-       } else {
-               self.element.setAttribute("title", "");
-       }
-};
-
-//build header element
-Column.prototype._buildHeader = function () {
-       var self = this,
-           def = self.definition;
-
-       while (self.element.firstChild) {
-               self.element.removeChild(self.element.firstChild);
-       }if (def.headerVertical) {
-               self.element.classList.add("tabulator-col-vertical");
-
-               if (def.headerVertical === "flip") {
-                       self.element.classList.add("tabulator-col-vertical-flip");
-               }
-       }
-
-       self.contentElement = self._bindEvents();
-
-       self.contentElement = self._buildColumnHeaderContent();
-
-       self.element.appendChild(self.contentElement);
-
-       if (self.isGroup) {
-               self._buildGroupHeader();
-       } else {
-               self._buildColumnHeader();
-       }
-
-       self.setTooltip();
-
-       //set resizable handles
-       if (self.table.options.resizableColumns && self.table.modExists("resizeColumns")) {
-               self.table.modules.resizeColumns.initializeColumn("header", self, self.element);
-       }
-
-       //set resizable handles
-       if (def.headerFilter && self.table.modExists("filter") && self.table.modExists("edit")) {
-               if (typeof def.headerFilterPlaceholder !== "undefined" && def.field) {
-                       self.table.modules.localize.setHeaderFilterColumnPlaceholder(def.field, def.headerFilterPlaceholder);
-               }
-
-               self.table.modules.filter.initializeColumn(self);
-       }
-
-       //set resizable handles
-       if (self.table.modExists("frozenColumns")) {
-               self.table.modules.frozenColumns.initializeColumn(self);
-       }
-
-       //set movable column
-       if (self.table.options.movableColumns && !self.isGroup && self.table.modExists("moveColumn")) {
-               self.table.modules.moveColumn.initializeColumn(self);
-       }
-
-       //set calcs column
-       if ((def.topCalc || def.bottomCalc) && self.table.modExists("columnCalcs")) {
-               self.table.modules.columnCalcs.initializeColumn(self);
-       }
-
-       //handle persistence
-       if (self.table.modExists("persistence") && self.table.modules.persistence.config.columns) {
-               self.table.modules.persistence.initializeColumn(self);
-       }
-
-       //update header tooltip on mouse enter
-       self.element.addEventListener("mouseenter", function (e) {
-               self.setTooltip();
-       });
-};
-
-Column.prototype._bindEvents = function () {
-
-       var self = this,
-           def = self.definition,
-           dblTap,
-           tapHold,
-           tap;
-
-       //setup header click event bindings
-       if (typeof def.headerClick == "function") {
-               self.element.addEventListener("click", function (e) {
-                       def.headerClick(e, self.getComponent());
-               });
-       }
-
-       if (typeof def.headerDblClick == "function") {
-               self.element.addEventListener("dblclick", function (e) {
-                       def.headerDblClick(e, self.getComponent());
-               });
-       }
-
-       if (typeof def.headerContext == "function") {
-               self.element.addEventListener("contextmenu", function (e) {
-                       def.headerContext(e, self.getComponent());
-               });
-       }
-
-       //setup header tap event bindings
-       if (typeof def.headerTap == "function") {
-               tap = false;
-
-               self.element.addEventListener("touchstart", function (e) {
-                       tap = true;
-               }, { passive: true });
-
-               self.element.addEventListener("touchend", function (e) {
-                       if (tap) {
-                               def.headerTap(e, self.getComponent());
-                       }
-
-                       tap = false;
-               });
-       }
-
-       if (typeof def.headerDblTap == "function") {
-               dblTap = null;
-
-               self.element.addEventListener("touchend", function (e) {
-
-                       if (dblTap) {
-                               clearTimeout(dblTap);
-                               dblTap = null;
-
-                               def.headerDblTap(e, self.getComponent());
-                       } else {
-
-                               dblTap = setTimeout(function () {
-                                       clearTimeout(dblTap);
-                                       dblTap = null;
-                               }, 300);
-                       }
-               });
-       }
-
-       if (typeof def.headerTapHold == "function") {
-               tapHold = null;
-
-               self.element.addEventListener("touchstart", function (e) {
-                       clearTimeout(tapHold);
-
-                       tapHold = setTimeout(function () {
-                               clearTimeout(tapHold);
-                               tapHold = null;
-                               tap = false;
-                               def.headerTapHold(e, self.getComponent());
-                       }, 1000);
-               }, { passive: true });
-
-               self.element.addEventListener("touchend", function (e) {
-                       clearTimeout(tapHold);
-                       tapHold = null;
-               });
-       }
-
-       //store column cell click event bindings
-       if (typeof def.cellClick == "function") {
-               self.cellEvents.cellClick = def.cellClick;
-       }
-
-       if (typeof def.cellDblClick == "function") {
-               self.cellEvents.cellDblClick = def.cellDblClick;
-       }
-
-       if (typeof def.cellContext == "function") {
-               self.cellEvents.cellContext = def.cellContext;
-       }
-
-       //store column mouse event bindings
-       if (typeof def.cellMouseEnter == "function") {
-               self.cellEvents.cellMouseEnter = def.cellMouseEnter;
-       }
-
-       if (typeof def.cellMouseLeave == "function") {
-               self.cellEvents.cellMouseLeave = def.cellMouseLeave;
-       }
-
-       if (typeof def.cellMouseOver == "function") {
-               self.cellEvents.cellMouseOver = def.cellMouseOver;
-       }
-
-       if (typeof def.cellMouseOut == "function") {
-               self.cellEvents.cellMouseOut = def.cellMouseOut;
-       }
-
-       if (typeof def.cellMouseMove == "function") {
-               self.cellEvents.cellMouseMove = def.cellMouseMove;
-       }
-
-       //setup column cell tap event bindings
-       if (typeof def.cellTap == "function") {
-               self.cellEvents.cellTap = def.cellTap;
-       }
-
-       if (typeof def.cellDblTap == "function") {
-               self.cellEvents.cellDblTap = def.cellDblTap;
-       }
-
-       if (typeof def.cellTapHold == "function") {
-               self.cellEvents.cellTapHold = def.cellTapHold;
-       }
-
-       //setup column cell edit callbacks
-       if (typeof def.cellEdited == "function") {
-               self.cellEvents.cellEdited = def.cellEdited;
-       }
-
-       if (typeof def.cellEditing == "function") {
-               self.cellEvents.cellEditing = def.cellEditing;
-       }
-
-       if (typeof def.cellEditCancelled == "function") {
-               self.cellEvents.cellEditCancelled = def.cellEditCancelled;
-       }
-};
-
-//build header element for header
-Column.prototype._buildColumnHeader = function () {
-       var self = this,
-           def = self.definition,
-           table = self.table,
-           sortable;
-
-       //set column sorter
-       if (table.modExists("sort")) {
-               table.modules.sort.initializeColumn(self, self.contentElement);
-       }
-
-       //set column header context menu
-       if ((def.headerContextMenu || def.headerMenu) && table.modExists("menu")) {
-               table.modules.menu.initializeColumnHeader(self);
-       }
-
-       //set column formatter
-       if (table.modExists("format")) {
-               table.modules.format.initializeColumn(self);
-       }
-
-       //set column editor
-       if (typeof def.editor != "undefined" && table.modExists("edit")) {
-               table.modules.edit.initializeColumn(self);
-       }
-
-       //set colum validator
-       if (typeof def.validator != "undefined" && table.modExists("validate")) {
-               table.modules.validate.initializeColumn(self);
-       }
-
-       //set column mutator
-       if (table.modExists("mutator")) {
-               table.modules.mutator.initializeColumn(self);
-       }
-
-       //set column accessor
-       if (table.modExists("accessor")) {
-               table.modules.accessor.initializeColumn(self);
-       }
-
-       //set respoviveLayout
-       if (_typeof(table.options.responsiveLayout) && table.modExists("responsiveLayout")) {
-               table.modules.responsiveLayout.initializeColumn(self);
-       }
-
-       //set column visibility
-       if (typeof def.visible != "undefined") {
-               if (def.visible) {
-                       self.show(true);
-               } else {
-                       self.hide(true);
-               }
-       }
-
-       //asign additional css classes to column header
-       if (def.cssClass) {
-               var classeNames = def.cssClass.split(" ");
-               classeNames.forEach(function (className) {
-                       self.element.classList.add(className);
-               });
-       }
-
-       if (def.field) {
-               this.element.setAttribute("tabulator-field", def.field);
-       }
-
-       //set min width if present
-       self.setMinWidth(typeof def.minWidth == "undefined" ? self.table.options.columnMinWidth : parseInt(def.minWidth));
-
-       self.reinitializeWidth();
-
-       //set tooltip if present
-       self.tooltip = self.definition.tooltip || self.definition.tooltip === false ? self.definition.tooltip : self.table.options.tooltips;
-
-       //set orizontal text alignment
-       self.hozAlign = typeof self.definition.hozAlign == "undefined" ? self.table.options.cellHozAlign : self.definition.hozAlign;
-       self.vertAlign = typeof self.definition.vertAlign == "undefined" ? self.table.options.cellVertAlign : self.definition.vertAlign;
-};
-
-Column.prototype._buildColumnHeaderContent = function () {
-       var def = this.definition,
-           table = this.table;
-
-       var contentElement = document.createElement("div");
-       contentElement.classList.add("tabulator-col-content");
-
-       this.titleElement = this._buildColumnHeaderTitle();
-
-       contentElement.appendChild(this.titleElement);
-
-       return contentElement;
-};
-
-//build title element of column
-Column.prototype._buildColumnHeaderTitle = function () {
-       var self = this,
-           def = self.definition,
-           table = self.table,
-           title;
-
-       var titleHolderElement = document.createElement("div");
-       titleHolderElement.classList.add("tabulator-col-title");
-
-       if (def.editableTitle) {
-               var titleElement = document.createElement("input");
-               titleElement.classList.add("tabulator-title-editor");
-
-               titleElement.addEventListener("click", function (e) {
-                       e.stopPropagation();
-                       titleElement.focus();
-               });
-
-               titleElement.addEventListener("change", function () {
-                       def.title = titleElement.value;
-                       table.options.columnTitleChanged.call(self.table, self.getComponent());
-               });
-
-               titleHolderElement.appendChild(titleElement);
-
-               if (def.field) {
-                       table.modules.localize.bind("columns|" + def.field, function (text) {
-                               titleElement.value = text || def.title || "&nbsp;";
-                       });
-               } else {
-                       titleElement.value = def.title || "&nbsp;";
-               }
-       } else {
-               if (def.field) {
-                       table.modules.localize.bind("columns|" + def.field, function (text) {
-                               self._formatColumnHeaderTitle(titleHolderElement, text || def.title || "&nbsp;");
-                       });
-               } else {
-                       self._formatColumnHeaderTitle(titleHolderElement, def.title || "&nbsp;");
-               }
-       }
-
-       return titleHolderElement;
-};
-
-Column.prototype._formatColumnHeaderTitle = function (el, title) {
-       var _this5 = this;
-
-       var formatter, contents, params, mockCell, onRendered;
-
-       if (this.definition.titleFormatter && this.table.modExists("format")) {
-
-               formatter = this.table.modules.format.getFormatter(this.definition.titleFormatter);
-
-               onRendered = function onRendered(callback) {
-                       _this5.titleFormatterRendered = callback;
-               };
-
-               mockCell = {
-                       getValue: function getValue() {
-                               return title;
-                       },
-                       getElement: function getElement() {
-                               return el;
-                       }
-               };
-
-               params = this.definition.titleFormatterParams || {};
-
-               params = typeof params === "function" ? params() : params;
-
-               contents = formatter.call(this.table.modules.format, mockCell, params, onRendered);
-
-               switch (typeof contents === 'undefined' ? 'undefined' : _typeof(contents)) {
-                       case "object":
-                               if (contents instanceof Node) {
-                                       el.appendChild(contents);
-                               } else {
-                                       el.innerHTML = "";
-                                       console.warn("Format Error - Title formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:", contents);
-                               }
-                               break;
-                       case "undefined":
-                       case "null":
-                               el.innerHTML = "";
-                               break;
-                       default:
-                               el.innerHTML = contents;
-               }
-       } else {
-               el.innerHTML = title;
-       }
-};
-
-//build header element for column group
-Column.prototype._buildGroupHeader = function () {
-       var _this6 = this;
-
-       this.element.classList.add("tabulator-col-group");
-       this.element.setAttribute("role", "columngroup");
-       this.element.setAttribute("aria-title", this.definition.title);
-
-       //asign additional css classes to column header
-       if (this.definition.cssClass) {
-               var classeNames = this.definition.cssClass.split(" ");
-               classeNames.forEach(function (className) {
-                       _this6.element.classList.add(className);
-               });
-       }
-
-       this.element.appendChild(this.groupElement);
-};
-
-//flat field lookup
-Column.prototype._getFlatData = function (data) {
-       return data[this.field];
-};
-
-//nested field lookup
-Column.prototype._getNestedData = function (data) {
-       var dataObj = data,
-           structure = this.fieldStructure,
-           length = structure.length,
-           output;
-
-       for (var i = 0; i < length; i++) {
-
-               dataObj = dataObj[structure[i]];
-
-               output = dataObj;
-
-               if (!dataObj) {
-                       break;
-               }
-       }
-
-       return output;
-};
-
-//flat field set
-Column.prototype._setFlatData = function (data, value) {
-       if (this.field) {
-               data[this.field] = value;
-       }
-};
-
-//nested field set
-Column.prototype._setNestedData = function (data, value) {
-       var dataObj = data,
-           structure = this.fieldStructure,
-           length = structure.length;
-
-       for (var i = 0; i < length; i++) {
-
-               if (i == length - 1) {
-                       dataObj[structure[i]] = value;
-               } else {
-                       if (!dataObj[structure[i]]) {
-                               if (typeof value !== "undefined") {
-                                       dataObj[structure[i]] = {};
-                               } else {
-                                       break;
-                               }
-                       }
-
-                       dataObj = dataObj[structure[i]];
-               }
-       }
-};
-
-//attach column to this group
-Column.prototype.attachColumn = function (column) {
-       var self = this;
-
-       if (self.groupElement) {
-               self.columns.push(column);
-               self.groupElement.appendChild(column.getElement());
-       } else {
-               console.warn("Column Warning - Column being attached to another column instead of column group");
-       }
-};
-
-//vertically align header in column
-Column.prototype.verticalAlign = function (alignment, height) {
-
-       //calculate height of column header and group holder element
-       var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : height || this.parent.getHeadersElement().clientHeight;
-       // var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : this.parent.getHeadersElement().clientHeight;
-
-       this.element.style.height = parentHeight + "px";
-
-       if (this.isGroup) {
-               this.groupElement.style.minHeight = parentHeight - this.contentElement.offsetHeight + "px";
-       }
-
-       //vertically align cell contents
-       if (!this.isGroup && alignment !== "top") {
-               if (alignment === "bottom") {
-                       this.element.style.paddingTop = this.element.clientHeight - this.contentElement.offsetHeight + "px";
-               } else {
-                       this.element.style.paddingTop = (this.element.clientHeight - this.contentElement.offsetHeight) / 2 + "px";
-               }
-       }
-
-       this.columns.forEach(function (column) {
-               column.verticalAlign(alignment);
-       });
-};
-
-//clear vertical alignmenet
-Column.prototype.clearVerticalAlign = function () {
-       this.element.style.paddingTop = "";
-       this.element.style.height = "";
-       this.element.style.minHeight = "";
-       this.groupElement.style.minHeight = "";
-
-       this.columns.forEach(function (column) {
-               column.clearVerticalAlign();
-       });
-};
-
-Column.prototype.bindModuleColumns = function () {
-       //check if rownum formatter is being used on a column
-       if (this.definition.formatter == "rownum") {
-               this.table.rowManager.rowNumColumn = this;
-       }
-};
-
-//// Retreive Column Information ////
-
-//return column header element
-Column.prototype.getElement = function () {
-       return this.element;
-};
-
-//return colunm group element
-Column.prototype.getGroupElement = function () {
-       return this.groupElement;
-};
-
-//return field name
-Column.prototype.getField = function () {
-       return this.field;
-};
-
-//return the first column in a group
-Column.prototype.getFirstColumn = function () {
-       if (!this.isGroup) {
-               return this;
-       } else {
-               if (this.columns.length) {
-                       return this.columns[0].getFirstColumn();
-               } else {
-                       return false;
-               }
-       }
-};
-
-//return the last column in a group
-Column.prototype.getLastColumn = function () {
-       if (!this.isGroup) {
-               return this;
-       } else {
-               if (this.columns.length) {
-                       return this.columns[this.columns.length - 1].getLastColumn();
-               } else {
-                       return false;
-               }
-       }
-};
-
-//return all columns in a group
-Column.prototype.getColumns = function () {
-       return this.columns;
-};
-
-//return all columns in a group
-Column.prototype.getCells = function () {
-       return this.cells;
-};
-
-//retreive the top column in a group of columns
-Column.prototype.getTopColumn = function () {
-       if (this.parent.isGroup) {
-               return this.parent.getTopColumn();
-       } else {
-               return this;
-       }
-};
-
-//return column definition object
-Column.prototype.getDefinition = function (updateBranches) {
-       var colDefs = [];
-
-       if (this.isGroup && updateBranches) {
-               this.columns.forEach(function (column) {
-                       colDefs.push(column.getDefinition(true));
-               });
-
-               this.definition.columns = colDefs;
-       }
-
-       return this.definition;
-};
-
-//////////////////// Actions ////////////////////
-
-Column.prototype.checkColumnVisibility = function () {
-       var visible = false;
-
-       this.columns.forEach(function (column) {
-               if (column.visible) {
-                       visible = true;
-               }
-       });
-
-       if (visible) {
-               this.show();
-               this.parent.table.options.columnVisibilityChanged.call(this.table, this.getComponent(), false);
-       } else {
-               this.hide();
-       }
-};
-
-//show column
-Column.prototype.show = function (silent, responsiveToggle) {
-       if (!this.visible) {
-               this.visible = true;
-
-               this.element.style.display = "";
-
-               if (this.parent.isGroup) {
-                       this.parent.checkColumnVisibility();
-               }
-
-               this.cells.forEach(function (cell) {
-                       cell.show();
-               });
-
-               if (!this.isGroup && this.width === null) {
-                       this.reinitializeWidth();
-               }
-
-               this.table.columnManager._verticalAlignHeaders();
-
-               if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.columns) {
-                       this.table.modules.persistence.save("columns");
-               }
-
-               if (!responsiveToggle && this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-                       this.table.modules.responsiveLayout.updateColumnVisibility(this, this.visible);
-               }
-
-               if (!silent) {
-                       this.table.options.columnVisibilityChanged.call(this.table, this.getComponent(), true);
-               }
-
-               if (this.parent.isGroup) {
-                       this.parent.matchChildWidths();
-               }
-       }
-};
-
-//hide column
-Column.prototype.hide = function (silent, responsiveToggle) {
-       if (this.visible) {
-               this.visible = false;
-
-               this.element.style.display = "none";
-
-               this.table.columnManager._verticalAlignHeaders();
-
-               if (this.parent.isGroup) {
-                       this.parent.checkColumnVisibility();
-               }
-
-               this.cells.forEach(function (cell) {
-                       cell.hide();
-               });
-
-               if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.columns) {
-                       this.table.modules.persistence.save("columns");
-               }
-
-               if (!responsiveToggle && this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-                       this.table.modules.responsiveLayout.updateColumnVisibility(this, this.visible);
-               }
-
-               if (!silent) {
-                       this.table.options.columnVisibilityChanged.call(this.table, this.getComponent(), false);
-               }
-
-               if (this.parent.isGroup) {
-                       this.parent.matchChildWidths();
-               }
-       }
-};
-
-Column.prototype.matchChildWidths = function () {
-       var childWidth = 0;
-
-       if (this.contentElement && this.columns.length) {
-               this.columns.forEach(function (column) {
-                       if (column.visible) {
-                               childWidth += column.getWidth();
-                       }
-               });
-
-               this.contentElement.style.maxWidth = childWidth - 1 + "px";
-
-               if (this.parent.isGroup) {
-                       this.parent.matchChildWidths();
-               }
-       }
-};
-
-Column.prototype.setWidth = function (width) {
-       this.widthFixed = true;
-       this.setWidthActual(width);
-};
-
-Column.prototype.setWidthActual = function (width) {
-       if (isNaN(width)) {
-               width = Math.floor(this.table.element.clientWidth / 100 * parseInt(width));
-       }
-
-       width = Math.max(this.minWidth, width);
-
-       this.width = width;
-       this.widthStyled = width ? width + "px" : "";
-
-       this.element.style.width = this.widthStyled;
-
-       if (!this.isGroup) {
-               this.cells.forEach(function (cell) {
-                       cell.setWidth();
-               });
-       }
-
-       if (this.parent.isGroup) {
-               this.parent.matchChildWidths();
-       }
-
-       //set resizable handles
-       if (this.table.modExists("frozenColumns")) {
-               this.table.modules.frozenColumns.layout();
-       }
-};
-
-Column.prototype.checkCellHeights = function () {
-       var rows = [];
-
-       this.cells.forEach(function (cell) {
-               if (cell.row.heightInitialized) {
-                       if (cell.row.getElement().offsetParent !== null) {
-                               rows.push(cell.row);
-                               cell.row.clearCellHeight();
-                       } else {
-                               cell.row.heightInitialized = false;
-                       }
-               }
-       });
-
-       rows.forEach(function (row) {
-               row.calcHeight();
-       });
-
-       rows.forEach(function (row) {
-               row.setCellHeight();
-       });
-};
-
-Column.prototype.getWidth = function () {
-       var width = 0;
-
-       if (this.isGroup) {
-               this.columns.forEach(function (column) {
-                       if (column.visible) {
-                               width += column.getWidth();
-                       }
-               });
-       } else {
-               width = this.width;
-       }
-
-       return width;
-};
-
-Column.prototype.getHeight = function () {
-       return this.element.offsetHeight;
-};
-
-Column.prototype.setMinWidth = function (minWidth) {
-       this.minWidth = minWidth;
-       this.minWidthStyled = minWidth ? minWidth + "px" : "";
-
-       this.element.style.minWidth = this.minWidthStyled;
-
-       this.cells.forEach(function (cell) {
-               cell.setMinWidth();
-       });
-};
-
-Column.prototype.delete = function () {
-       var _this7 = this;
-
-       return new Promise(function (resolve, reject) {
-
-               if (_this7.isGroup) {
-                       _this7.columns.forEach(function (column) {
-                               column.delete();
-                       });
-               }
-
-               //cancel edit if column is currently being edited
-               if (_this7.table.modExists("edit")) {
-                       if (_this7.table.modules.edit.currentCell.column === _this7) {
-                               _this7.table.modules.edit.cancelEdit();
-                       }
-               }
-
-               var cellCount = _this7.cells.length;
-
-               for (var i = 0; i < cellCount; i++) {
-                       _this7.cells[0].delete();
-               }
-
-               _this7.element.parentNode.removeChild(_this7.element);
-
-               _this7.table.columnManager.deregisterColumn(_this7);
-
-               resolve();
-       });
-};
-
-Column.prototype.columnRendered = function () {
-       if (this.titleFormatterRendered) {
-               this.titleFormatterRendered();
-       }
-};
-
-//////////////// Cell Management /////////////////
-
-//generate cell for this column
-Column.prototype.generateCell = function (row) {
-       var self = this;
-
-       var cell = new Cell(self, row);
-
-       this.cells.push(cell);
-
-       return cell;
-};
-
-Column.prototype.nextColumn = function () {
-       var index = this.table.columnManager.findColumnIndex(this);
-       return index > -1 ? this._nextVisibleColumn(index + 1) : false;
-};
-
-Column.prototype._nextVisibleColumn = function (index) {
-       var column = this.table.columnManager.getColumnByIndex(index);
-       return !column || column.visible ? column : this._nextVisibleColumn(index + 1);
-};
-
-Column.prototype.prevColumn = function () {
-       var index = this.table.columnManager.findColumnIndex(this);
-       return index > -1 ? this._prevVisibleColumn(index - 1) : false;
-};
-
-Column.prototype._prevVisibleColumn = function (index) {
-       var column = this.table.columnManager.getColumnByIndex(index);
-       return !column || column.visible ? column : this._prevVisibleColumn(index - 1);
-};
-
-Column.prototype.reinitializeWidth = function (force) {
-       this.widthFixed = false;
-
-       //set width if present
-       if (typeof this.definition.width !== "undefined" && !force) {
-               this.setWidth(this.definition.width);
-       }
-
-       //hide header filters to prevent them altering column width
-       if (this.table.modExists("filter")) {
-               this.table.modules.filter.hideHeaderFilterElements();
-       }
-
-       this.fitToData();
-
-       //show header filters again after layout is complete
-       if (this.table.modExists("filter")) {
-               this.table.modules.filter.showHeaderFilterElements();
-       }
-};
-
-//set column width to maximum cell width
-Column.prototype.fitToData = function () {
-       var self = this;
-
-       if (!this.widthFixed) {
-               this.element.style.width = "";
-
-               self.cells.forEach(function (cell) {
-                       cell.clearWidth();
-               });
-       }
-
-       var maxWidth = this.element.offsetWidth;
-
-       if (!self.width || !this.widthFixed) {
-               self.cells.forEach(function (cell) {
-                       var width = cell.getWidth();
-
-                       if (width > maxWidth) {
-                               maxWidth = width;
-                       }
-               });
-
-               if (maxWidth) {
-                       self.setWidthActual(maxWidth + 1);
-               }
-       }
-};
-
-Column.prototype.updateDefinition = function (updates) {
-       var _this8 = this;
-
-       return new Promise(function (resolve, reject) {
-               var definition;
-
-               if (!_this8.isGroup) {
-                       definition = Object.assign({}, _this8.getDefinition());
-                       definition = Object.assign(definition, updates);
-
-                       _this8.table.columnManager.addColumn(definition, false, _this8).then(function (column) {
-
-                               if (definition.field == _this8.field) {
-                                       _this8.field = false; //cleair field name to prevent deletion of duplicate column from arrays
-                               }
-
-                               _this8.delete().then(function () {
-                                       resolve(column.getComponent());
-                               }).catch(function (err) {
-                                       reject(err);
-                               });
-                       }).catch(function (err) {
-                               reject(err);
-                       });
-               } else {
-                       console.warn("Column Update Error - The updateDefintion function is only available on columns, not column groups");
-                       reject("Column Update Error - The updateDefintion function is only available on columns, not column groups");
-               }
-       });
-};
-
-Column.prototype.deleteCell = function (cell) {
-       var index = this.cells.indexOf(cell);
-
-       if (index > -1) {
-               this.cells.splice(index, 1);
-       }
-};
-
-Column.prototype.defaultOptionList = ["title", "field", "columns", "visible", "align", "hozAlign", "vertAlign", "width", "minWidth", "widthGrow", "widthShrink", "resizable", "frozen", "responsive", "tooltip", "cssClass", "rowHandle", "hideInHtml", "print", "htmlOutput", "sorter", "sorterParams", "formatter", "formatterParams", "variableHeight", "editable", "editor", "editorParams", "validator", "mutator", "mutatorParams", "mutatorData", "mutatorDataParams", "mutatorEdit", "mutatorEditParams", "mutatorClipboard", "mutatorClipboardParams", "accessor", "accessorParams", "accessorData", "accessorDataParams", "accessorDownload", "accessorDownloadParams", "accessorClipboard", "accessorClipboardParams", "accessorPrint", "accessorPrintParams", "accessorHtmlOutput", "accessorHtmlOutputParams", "clipboard", "download", "downloadTitle", "topCalc", "topCalcParams", "topCalcFormatter", "topCalcFormatterParams", "bottomCalc", "bottomCalcParams", "bottomCalcFormatter", "bottomCalcFormatterParams", "cellClick", "cellDblClick", "cellContext", "cellTap", "cellDblTap", "cellTapHold", "cellMouseEnter", "cellMouseLeave", "cellMouseOver", "cellMouseOut", "cellMouseMove", "cellEditing", "cellEdited", "cellEditCancelled", "headerSort", "headerSortStartingDir", "headerSortTristate", "headerClick", "headerDblClick", "headerContext", "headerTap", "headerDblTap", "headerTapHold", "headerTooltip", "headerVertical", "editableTitle", "titleFormatter", "titleFormatterParams", "headerFilter", "headerFilterPlaceholder", "headerFilterParams", "headerFilterEmptyCheck", "headerFilterFunc", "headerFilterFuncParams", "headerFilterLiveFilter", "print", "headerContextMenu", "headerMenu", "contextMenu", "formatterPrint", "formatterPrintParams", "formatterClipboard", "formatterClipboardParams", "formatterHtmlOutput", "formatterHtmlOutputParams"];
-
-//////////////// Event Bindings /////////////////
-
-//////////////// Object Generation /////////////////
-Column.prototype.getComponent = function () {
-       return new ColumnComponent(this);
-};
-
-var RowManager = function RowManager(table) {
-
-       this.table = table;
-       this.element = this.createHolderElement(); //containing element
-       this.tableElement = this.createTableElement(); //table element
-       this.heightFixer = this.createTableElement(); //table element
-       this.columnManager = null; //hold column manager object
-       this.height = 0; //hold height of table element
-
-       this.firstRender = false; //handle first render
-       this.renderMode = "virtual"; //current rendering mode
-       this.fixedHeight = false; //current rendering mode
-
-       this.rows = []; //hold row data objects
-       this.activeRows = []; //rows currently available to on display in the table
-       this.activeRowsCount = 0; //count of active rows
-
-       this.displayRows = []; //rows currently on display in the table
-       this.displayRowsCount = 0; //count of display rows
-
-       this.scrollTop = 0;
-       this.scrollLeft = 0;
-
-       this.vDomRowHeight = 20; //approximation of row heights for padding
-
-       this.vDomTop = 0; //hold position for first rendered row in the virtual DOM
-       this.vDomBottom = 0; //hold possition for last rendered row in the virtual DOM
-
-       this.vDomScrollPosTop = 0; //last scroll position of the vDom top;
-       this.vDomScrollPosBottom = 0; //last scroll position of the vDom bottom;
-
-       this.vDomTopPad = 0; //hold value of padding for top of virtual DOM
-       this.vDomBottomPad = 0; //hold value of padding for bottom of virtual DOM
-
-       this.vDomMaxRenderChain = 90; //the maximum number of dom elements that can be rendered in 1 go
-
-       this.vDomWindowBuffer = 0; //window row buffer before removing elements, to smooth scrolling
-
-       this.vDomWindowMinTotalRows = 20; //minimum number of rows to be generated in virtual dom (prevent buffering issues on tables with tall rows)
-       this.vDomWindowMinMarginRows = 5; //minimum number of rows to be generated in virtual dom margin
-
-       this.vDomTopNewRows = []; //rows to normalize after appending to optimize render speed
-       this.vDomBottomNewRows = []; //rows to normalize after appending to optimize render speed
-
-       this.rowNumColumn = false; //hold column component for row number column
-
-       this.redrawBlock = false; //prevent redraws to allow multiple data manipulations becore continuing
-       this.redrawBlockRestoreConfig = false; //store latest redraw function calls for when redraw is needed
-       this.redrawBlockRederInPosition = false; //store latest redraw function calls for when redraw is needed
-};
-
-//////////////// Setup Functions /////////////////
-
-RowManager.prototype.createHolderElement = function () {
-       var el = document.createElement("div");
-
-       el.classList.add("tabulator-tableHolder");
-       el.setAttribute("tabindex", 0);
-
-       return el;
-};
-
-RowManager.prototype.createTableElement = function () {
-       var el = document.createElement("div");
-
-       el.classList.add("tabulator-table");
-
-       return el;
-};
-
-//return containing element
-RowManager.prototype.getElement = function () {
-       return this.element;
-};
-
-//return table element
-RowManager.prototype.getTableElement = function () {
-       return this.tableElement;
-};
-
-//return position of row in table
-RowManager.prototype.getRowPosition = function (row, active) {
-       if (active) {
-               return this.activeRows.indexOf(row);
-       } else {
-               return this.rows.indexOf(row);
-       }
-};
-
-//link to column manager
-RowManager.prototype.setColumnManager = function (manager) {
-       this.columnManager = manager;
-};
-
-RowManager.prototype.initialize = function () {
-       var self = this;
-
-       self.setRenderMode();
-
-       //initialize manager
-       self.element.appendChild(self.tableElement);
-
-       self.firstRender = true;
-
-       //scroll header along with table body
-       self.element.addEventListener("scroll", function () {
-               var left = self.element.scrollLeft;
-
-               //handle horizontal scrolling
-               if (self.scrollLeft != left) {
-                       self.columnManager.scrollHorizontal(left);
-
-                       if (self.table.options.groupBy) {
-                               self.table.modules.groupRows.scrollHeaders(left);
-                       }
-
-                       if (self.table.modExists("columnCalcs")) {
-                               self.table.modules.columnCalcs.scrollHorizontal(left);
-                       }
-
-                       self.table.options.scrollHorizontal(left);
-               }
-
-               self.scrollLeft = left;
-       });
-
-       //handle virtual dom scrolling
-       if (this.renderMode === "virtual") {
-
-               self.element.addEventListener("scroll", function () {
-                       var top = self.element.scrollTop;
-                       var dir = self.scrollTop > top;
-
-                       //handle verical scrolling
-                       if (self.scrollTop != top) {
-                               self.scrollTop = top;
-                               self.scrollVertical(dir);
-
-                               if (self.table.options.ajaxProgressiveLoad == "scroll") {
-                                       self.table.modules.ajax.nextPage(self.element.scrollHeight - self.element.clientHeight - top);
-                               }
-
-                               self.table.options.scrollVertical(top);
-                       } else {
-                               self.scrollTop = top;
-                       }
-               });
-       }
-};
-
-////////////////// Row Manipulation //////////////////
-
-RowManager.prototype.findRow = function (subject) {
-       var self = this;
-
-       if ((typeof subject === 'undefined' ? 'undefined' : _typeof(subject)) == "object") {
-
-               if (subject instanceof Row) {
-                       //subject is row element
-                       return subject;
-               } else if (subject instanceof RowComponent) {
-                       //subject is public row component
-                       return subject._getSelf() || false;
-               } else if (typeof HTMLElement !== "undefined" && subject instanceof HTMLElement) {
-                       //subject is a HTML element of the row
-                       var match = self.rows.find(function (row) {
-                               return row.element === subject;
-                       });
-
-                       return match || false;
-               }
-       } else if (typeof subject == "undefined" || subject === null) {
-               return false;
-       } else {
-               //subject should be treated as the index of the row
-               var _match = self.rows.find(function (row) {
-                       return row.data[self.table.options.index] == subject;
-               });
-
-               return _match || false;
-       }
-
-       //catch all for any other type of input
-
-       return false;
-};
-
-RowManager.prototype.getRowFromDataObject = function (data) {
-       var match = this.rows.find(function (row) {
-               return row.data === data;
-       });
-
-       return match || false;
-};
-
-RowManager.prototype.getRowFromPosition = function (position, active) {
-       if (active) {
-               return this.activeRows[position];
-       } else {
-               return this.rows[position];
-       }
-};
-
-RowManager.prototype.scrollToRow = function (row, position, ifVisible) {
-       var _this9 = this;
-
-       var rowIndex = this.getDisplayRows().indexOf(row),
-           rowEl = row.getElement(),
-           rowTop,
-           offset = 0;
-
-       return new Promise(function (resolve, reject) {
-               if (rowIndex > -1) {
-
-                       if (typeof position === "undefined") {
-                               position = _this9.table.options.scrollToRowPosition;
-                       }
-
-                       if (typeof ifVisible === "undefined") {
-                               ifVisible = _this9.table.options.scrollToRowIfVisible;
-                       }
-
-                       if (position === "nearest") {
-                               switch (_this9.renderMode) {
-                                       case "classic":
-                                               rowTop = Tabulator.prototype.helpers.elOffset(rowEl).top;
-                                               position = Math.abs(_this9.element.scrollTop - rowTop) > Math.abs(_this9.element.scrollTop + _this9.element.clientHeight - rowTop) ? "bottom" : "top";
-                                               break;
-                                       case "virtual":
-                                               position = Math.abs(_this9.vDomTop - rowIndex) > Math.abs(_this9.vDomBottom - rowIndex) ? "bottom" : "top";
-                                               break;
-                               }
-                       }
-
-                       //check row visibility
-                       if (!ifVisible) {
-                               if (Tabulator.prototype.helpers.elVisible(rowEl)) {
-                                       offset = Tabulator.prototype.helpers.elOffset(rowEl).top - Tabulator.prototype.helpers.elOffset(_this9.element).top;
-
-                                       if (offset > 0 && offset < _this9.element.clientHeight - rowEl.offsetHeight) {
-                                               return false;
-                                       }
-                               }
-                       }
-
-                       //scroll to row
-                       switch (_this9.renderMode) {
-                               case "classic":
-                                       _this9.element.scrollTop = Tabulator.prototype.helpers.elOffset(rowEl).top - Tabulator.prototype.helpers.elOffset(_this9.element).top + _this9.element.scrollTop;
-                                       break;
-                               case "virtual":
-                                       _this9._virtualRenderFill(rowIndex, true);
-                                       break;
-                       }
-
-                       //align to correct position
-                       switch (position) {
-                               case "middle":
-                               case "center":
-
-                                       if (_this9.element.scrollHeight - _this9.element.scrollTop == _this9.element.clientHeight) {
-                                               _this9.element.scrollTop = _this9.element.scrollTop + (rowEl.offsetTop - _this9.element.scrollTop) - (_this9.element.scrollHeight - rowEl.offsetTop) / 2;
-                                       } else {
-                                               _this9.element.scrollTop = _this9.element.scrollTop - _this9.element.clientHeight / 2;
-                                       }
-
-                                       break;
-
-                               case "bottom":
-
-                                       if (_this9.element.scrollHeight - _this9.element.scrollTop == _this9.element.clientHeight) {
-                                               _this9.element.scrollTop = _this9.element.scrollTop - (_this9.element.scrollHeight - rowEl.offsetTop) + rowEl.offsetHeight;
-                                       } else {
-                                               _this9.element.scrollTop = _this9.element.scrollTop - _this9.element.clientHeight + rowEl.offsetHeight;
-                                       }
-
-                                       break;
-                       }
-
-                       resolve();
-               } else {
-                       console.warn("Scroll Error - Row not visible");
-                       reject("Scroll Error - Row not visible");
-               }
-       });
-};
-
-////////////////// Data Handling //////////////////
-
-RowManager.prototype.setData = function (data, renderInPosition, columnsChanged) {
-       var _this10 = this;
-
-       var self = this;
-
-       return new Promise(function (resolve, reject) {
-               if (renderInPosition && _this10.getDisplayRows().length) {
-                       if (self.table.options.pagination) {
-                               self._setDataActual(data, true);
-                       } else {
-                               _this10.reRenderInPosition(function () {
-                                       self._setDataActual(data);
-                               });
-                       }
-               } else {
-                       if (_this10.table.options.autoColumns && columnsChanged) {
-                               _this10.table.columnManager.generateColumnsFromRowData(data);
-                       }
-                       _this10.resetScroll();
-                       _this10._setDataActual(data);
-               }
-
-               resolve();
-       });
-};
-
-RowManager.prototype._setDataActual = function (data, renderInPosition) {
-       var self = this;
-
-       self.table.options.dataLoading.call(this.table, data);
-
-       this._wipeElements();
-
-       if (this.table.options.history && this.table.modExists("history")) {
-               this.table.modules.history.clear();
-       }
-
-       if (Array.isArray(data)) {
-
-               if (this.table.modExists("selectRow")) {
-                       this.table.modules.selectRow.clearSelectionData();
-               }
-
-               if (this.table.options.reactiveData && this.table.modExists("reactiveData", true)) {
-                       this.table.modules.reactiveData.watchData(data);
-               }
-
-               data.forEach(function (def, i) {
-                       if (def && (typeof def === 'undefined' ? 'undefined' : _typeof(def)) === "object") {
-                               var row = new Row(def, self);
-                               self.rows.push(row);
-                       } else {
-                               console.warn("Data Loading Warning - Invalid row data detected and ignored, expecting object but received:", def);
-                       }
-               });
-
-               self.table.options.dataLoaded.call(this.table, data);
-
-               self.refreshActiveData(false, false, renderInPosition);
-       } else {
-               console.error("Data Loading Error - Unable to process data due to invalid data type \nExpecting: array \nReceived: ", typeof data === 'undefined' ? 'undefined' : _typeof(data), "\nData:     ", data);
-       }
-};
-
-RowManager.prototype._wipeElements = function () {
-       this.rows.forEach(function (row) {
-               row.wipe();
-       });
-
-       if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-               this.table.modules.groupRows.wipe();
-       }
-
-       this.rows = [];
-};
-
-RowManager.prototype.deleteRow = function (row, blockRedraw) {
-       var allIndex = this.rows.indexOf(row),
-           activeIndex = this.activeRows.indexOf(row);
-
-       if (activeIndex > -1) {
-               this.activeRows.splice(activeIndex, 1);
-       }
-
-       if (allIndex > -1) {
-               this.rows.splice(allIndex, 1);
-       }
-
-       this.setActiveRows(this.activeRows);
-
-       this.displayRowIterator(function (rows) {
-               var displayIndex = rows.indexOf(row);
-
-               if (displayIndex > -1) {
-                       rows.splice(displayIndex, 1);
-               }
-       });
-
-       if (!blockRedraw) {
-               this.reRenderInPosition();
-       }
-
-       this.regenerateRowNumbers();
-
-       this.table.options.rowDeleted.call(this.table, row.getComponent());
-
-       this.table.options.dataEdited.call(this.table, this.getData());
-
-       if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-               this.table.modules.groupRows.updateGroupRows(true);
-       } else if (this.table.options.pagination && this.table.modExists("page")) {
-               this.refreshActiveData(false, false, true);
-       } else {
-               if (this.table.options.pagination && this.table.modExists("page")) {
-                       this.refreshActiveData("page");
-               }
-       }
-};
-
-RowManager.prototype.addRow = function (data, pos, index, blockRedraw) {
-
-       var row = this.addRowActual(data, pos, index, blockRedraw);
-
-       if (this.table.options.history && this.table.modExists("history")) {
-               this.table.modules.history.action("rowAdd", row, { data: data, pos: pos, index: index });
-       }
-
-       return row;
-};
-
-//add multiple rows
-RowManager.prototype.addRows = function (data, pos, index) {
-       var _this11 = this;
-
-       var self = this,
-           length = 0,
-           rows = [];
-
-       return new Promise(function (resolve, reject) {
-               pos = _this11.findAddRowPos(pos);
-
-               if (!Array.isArray(data)) {
-                       data = [data];
-               }
-
-               length = data.length - 1;
-
-               if (typeof index == "undefined" && pos || typeof index !== "undefined" && !pos) {
-                       data.reverse();
-               }
-
-               data.forEach(function (item, i) {
-                       var row = self.addRow(item, pos, index, true);
-                       rows.push(row);
-               });
-
-               if (_this11.table.options.groupBy && _this11.table.modExists("groupRows")) {
-                       _this11.table.modules.groupRows.updateGroupRows(true);
-               } else if (_this11.table.options.pagination && _this11.table.modExists("page")) {
-                       _this11.refreshActiveData(false, false, true);
-               } else {
-                       _this11.reRenderInPosition();
-               }
-
-               //recalc column calculations if present
-               if (_this11.table.modExists("columnCalcs")) {
-                       _this11.table.modules.columnCalcs.recalc(_this11.table.rowManager.activeRows);
-               }
-
-               _this11.regenerateRowNumbers();
-               resolve(rows);
-       });
-};
-
-RowManager.prototype.findAddRowPos = function (pos) {
-       if (typeof pos === "undefined") {
-               pos = this.table.options.addRowPos;
-       }
-
-       if (pos === "pos") {
-               pos = true;
-       }
-
-       if (pos === "bottom") {
-               pos = false;
-       }
-
-       return pos;
-};
-
-RowManager.prototype.addRowActual = function (data, pos, index, blockRedraw) {
-       var row = data instanceof Row ? data : new Row(data || {}, this),
-           top = this.findAddRowPos(pos),
-           allIndex = -1,
-           activeIndex,
-           dispRows;
-
-       if (!index && this.table.options.pagination && this.table.options.paginationAddRow == "page") {
-               dispRows = this.getDisplayRows();
-
-               if (top) {
-                       if (dispRows.length) {
-                               index = dispRows[0];
-                       } else {
-                               if (this.activeRows.length) {
-                                       index = this.activeRows[this.activeRows.length - 1];
-                                       top = false;
-                               }
-                       }
-               } else {
-                       if (dispRows.length) {
-                               index = dispRows[dispRows.length - 1];
-                               top = dispRows.length < this.table.modules.page.getPageSize() ? false : true;
-                       }
-               }
-       }
-
-       if (typeof index !== "undefined") {
-               index = this.findRow(index);
-       }
-
-       if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-               this.table.modules.groupRows.assignRowToGroup(row);
-
-               var groupRows = row.getGroup().rows;
-
-               if (groupRows.length > 1) {
-
-                       if (!index || index && groupRows.indexOf(index) == -1) {
-                               if (top) {
-                                       if (groupRows[0] !== row) {
-                                               index = groupRows[0];
-                                               this._moveRowInArray(row.getGroup().rows, row, index, !top);
-                                       }
-                               } else {
-                                       if (groupRows[groupRows.length - 1] !== row) {
-                                               index = groupRows[groupRows.length - 1];
-                                               this._moveRowInArray(row.getGroup().rows, row, index, !top);
-                                       }
-                               }
-                       } else {
-                               this._moveRowInArray(row.getGroup().rows, row, index, !top);
-                       }
-               }
-       }
-
-       if (index) {
-               allIndex = this.rows.indexOf(index);
-       }
-
-       if (index && allIndex > -1) {
-               activeIndex = this.activeRows.indexOf(index);
-
-               this.displayRowIterator(function (rows) {
-                       var displayIndex = rows.indexOf(index);
-
-                       if (displayIndex > -1) {
-                               rows.splice(top ? displayIndex : displayIndex + 1, 0, row);
-                       }
-               });
-
-               if (activeIndex > -1) {
-                       this.activeRows.splice(top ? activeIndex : activeIndex + 1, 0, row);
-               }
-
-               this.rows.splice(top ? allIndex : allIndex + 1, 0, row);
-       } else {
-
-               if (top) {
-
-                       this.displayRowIterator(function (rows) {
-                               rows.unshift(row);
-                       });
-
-                       this.activeRows.unshift(row);
-                       this.rows.unshift(row);
-               } else {
-                       this.displayRowIterator(function (rows) {
-                               rows.push(row);
-                       });
-
-                       this.activeRows.push(row);
-                       this.rows.push(row);
-               }
-       }
-
-       this.setActiveRows(this.activeRows);
-
-       this.table.options.rowAdded.call(this.table, row.getComponent());
-
-       this.table.options.dataEdited.call(this.table, this.getData());
-
-       if (!blockRedraw) {
-               this.reRenderInPosition();
-       }
-
-       return row;
-};
-
-RowManager.prototype.moveRow = function (from, to, after) {
-       if (this.table.options.history && this.table.modExists("history")) {
-               this.table.modules.history.action("rowMove", from, { posFrom: this.getRowPosition(from), posTo: this.getRowPosition(to), to: to, after: after });
-       }
-
-       this.moveRowActual(from, to, after);
-
-       this.regenerateRowNumbers();
-
-       this.table.options.rowMoved.call(this.table, from.getComponent());
-};
-
-RowManager.prototype.moveRowActual = function (from, to, after) {
-       var _this12 = this;
-
-       this._moveRowInArray(this.rows, from, to, after);
-       this._moveRowInArray(this.activeRows, from, to, after);
-
-       this.displayRowIterator(function (rows) {
-               _this12._moveRowInArray(rows, from, to, after);
-       });
-
-       if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-
-               if (!after && to instanceof Group) {
-                       to = this.table.rowManager.prevDisplayRow(from) || to;
-               }
-
-               var toGroup = to.getGroup();
-               var fromGroup = from.getGroup();
-
-               if (toGroup === fromGroup) {
-                       this._moveRowInArray(toGroup.rows, from, to, after);
-               } else {
-                       if (fromGroup) {
-                               fromGroup.removeRow(from);
-                       }
-
-                       toGroup.insertRow(from, to, after);
-               }
-       }
-};
-
-RowManager.prototype._moveRowInArray = function (rows, from, to, after) {
-       var fromIndex, toIndex, start, end;
-
-       if (from !== to) {
-
-               fromIndex = rows.indexOf(from);
-
-               if (fromIndex > -1) {
-
-                       rows.splice(fromIndex, 1);
-
-                       toIndex = rows.indexOf(to);
-
-                       if (toIndex > -1) {
-
-                               if (after) {
-                                       rows.splice(toIndex + 1, 0, from);
-                               } else {
-                                       rows.splice(toIndex, 0, from);
-                               }
-                       } else {
-                               rows.splice(fromIndex, 0, from);
-                       }
-               }
-
-               //restyle rows
-               if (rows === this.getDisplayRows()) {
-
-                       start = fromIndex < toIndex ? fromIndex : toIndex;
-                       end = toIndex > fromIndex ? toIndex : fromIndex + 1;
-
-                       for (var i = start; i <= end; i++) {
-                               if (rows[i]) {
-                                       this.styleRow(rows[i], i);
-                               }
-                       }
-               }
-       }
-};
-
-RowManager.prototype.clearData = function () {
-       this.setData([]);
-};
-
-RowManager.prototype.getRowIndex = function (row) {
-       return this.findRowIndex(row, this.rows);
-};
-
-RowManager.prototype.getDisplayRowIndex = function (row) {
-       var index = this.getDisplayRows().indexOf(row);
-       return index > -1 ? index : false;
-};
-
-RowManager.prototype.nextDisplayRow = function (row, rowOnly) {
-       var index = this.getDisplayRowIndex(row),
-           nextRow = false;
-
-       if (index !== false && index < this.displayRowsCount - 1) {
-               nextRow = this.getDisplayRows()[index + 1];
-       }
-
-       if (nextRow && (!(nextRow instanceof Row) || nextRow.type != "row")) {
-               return this.nextDisplayRow(nextRow, rowOnly);
-       }
-
-       return nextRow;
-};
-
-RowManager.prototype.prevDisplayRow = function (row, rowOnly) {
-       var index = this.getDisplayRowIndex(row),
-           prevRow = false;
-
-       if (index) {
-               prevRow = this.getDisplayRows()[index - 1];
-       }
-
-       if (rowOnly && prevRow && (!(prevRow instanceof Row) || prevRow.type != "row")) {
-               return this.prevDisplayRow(prevRow, rowOnly);
-       }
-
-       return prevRow;
-};
-
-RowManager.prototype.findRowIndex = function (row, list) {
-       var rowIndex;
-
-       row = this.findRow(row);
-
-       if (row) {
-               rowIndex = list.indexOf(row);
-
-               if (rowIndex > -1) {
-                       return rowIndex;
-               }
-       }
-
-       return false;
-};
-
-RowManager.prototype.getData = function (active, transform) {
-       var output = [],
-           rows = this.getRows(active);
-
-       rows.forEach(function (row) {
-               if (row.type == "row") {
-                       output.push(row.getData(transform || "data"));
-               }
-       });
-
-       return output;
-};
-
-RowManager.prototype.getComponents = function (active) {
-       var output = [],
-           rows = this.getRows(active);
-
-       rows.forEach(function (row) {
-               output.push(row.getComponent());
-       });
-
-       return output;
-};
-
-RowManager.prototype.getDataCount = function (active) {
-       var rows = this.getRows(active);
-
-       return rows.length;
-};
-
-RowManager.prototype._genRemoteRequest = function () {
-       var _this13 = this;
-
-       var table = this.table,
-           options = table.options,
-           params = {};
-
-       if (table.modExists("page")) {
-               //set sort data if defined
-               if (options.ajaxSorting) {
-                       var sorters = this.table.modules.sort.getSort();
-
-                       sorters.forEach(function (item) {
-                               delete item.column;
-                       });
-
-                       params[this.table.modules.page.paginationDataSentNames.sorters] = sorters;
-               }
-
-               //set filter data if defined
-               if (options.ajaxFiltering) {
-                       var filters = this.table.modules.filter.getFilters(true, true);
-
-                       params[this.table.modules.page.paginationDataSentNames.filters] = filters;
-               }
-
-               this.table.modules.ajax.setParams(params, true);
-       }
-
-       table.modules.ajax.sendRequest().then(function (data) {
-               _this13._setDataActual(data, true);
-       }).catch(function (e) {});
-};
-
-//choose the path to refresh data after a filter update
-RowManager.prototype.filterRefresh = function () {
-       var table = this.table,
-           options = table.options,
-           left = this.scrollLeft;
-
-       if (options.ajaxFiltering) {
-               if (options.pagination == "remote" && table.modExists("page")) {
-                       table.modules.page.reset(true);
-                       table.modules.page.setPage(1).then(function () {}).catch(function () {});
-               } else if (options.ajaxProgressiveLoad) {
-                       table.modules.ajax.loadData().then(function () {}).catch(function () {});
-               } else {
-                       //assume data is url, make ajax call to url to get data
-                       this._genRemoteRequest();
-               }
-       } else {
-               this.refreshActiveData("filter");
-       }
-
-       this.scrollHorizontal(left);
-};
-
-//choose the path to refresh data after a sorter update
-RowManager.prototype.sorterRefresh = function (loadOrignalData) {
-       var table = this.table,
-           options = this.table.options,
-           left = this.scrollLeft;
-
-       if (options.ajaxSorting) {
-               if ((options.pagination == "remote" || options.progressiveLoad) && table.modExists("page")) {
-                       table.modules.page.reset(true);
-                       table.modules.page.setPage(1).then(function () {}).catch(function () {});
-               } else if (options.ajaxProgressiveLoad) {
-                       table.modules.ajax.loadData().then(function () {}).catch(function () {});
-               } else {
-                       //assume data is url, make ajax call to url to get data
-                       this._genRemoteRequest();
-               }
-       } else {
-               this.refreshActiveData(loadOrignalData ? "filter" : "sort");
-       }
-
-       this.scrollHorizontal(left);
-};
-
-RowManager.prototype.scrollHorizontal = function (left) {
-       this.scrollLeft = left;
-       this.element.scrollLeft = left;
-
-       if (this.table.options.groupBy) {
-               this.table.modules.groupRows.scrollHeaders(left);
-       }
-
-       if (this.table.modExists("columnCalcs")) {
-               this.table.modules.columnCalcs.scrollHorizontal(left);
-       }
-};
-
-//set active data set
-RowManager.prototype.refreshActiveData = function (stage, skipStage, renderInPosition) {
-       var self = this,
-           table = this.table,
-           cascadeOrder = ["all", "filter", "sort", "display", "freeze", "group", "tree", "page"],
-           displayIndex;
-
-       if (this.redrawBlock) {
-
-               if (!this.redrawBlockRestoreConfig || cascadeOrder.indexOf(stage) < cascadeOrder.indexOf(this.redrawBlockRestoreConfig.stage)) {
-                       this.redrawBlockRestoreConfig = {
-                               stage: stage,
-                               skipStage: skipStage,
-                               renderInPosition: renderInPosition
-                       };
-               }
-
-               return;
-       } else {
-
-               if (self.table.modExists("edit")) {
-                       self.table.modules.edit.cancelEdit();
-               }
-
-               if (!stage) {
-                       stage = "all";
-               }
-
-               if (table.options.selectable && !table.options.selectablePersistence && table.modExists("selectRow")) {
-                       table.modules.selectRow.deselectRows();
-               }
-
-               //cascade through data refresh stages
-               switch (stage) {
-                       case "all":
-
-                       case "filter":
-                               if (!skipStage) {
-                                       if (table.modExists("filter")) {
-                                               self.setActiveRows(table.modules.filter.filter(self.rows));
-                                       } else {
-                                               self.setActiveRows(self.rows.slice(0));
-                                       }
-                               } else {
-                                       skipStage = false;
-                               }
-
-                       case "sort":
-                               if (!skipStage) {
-                                       if (table.modExists("sort")) {
-                                               table.modules.sort.sort(this.activeRows);
-                                       }
-                               } else {
-                                       skipStage = false;
-                               }
-
-                               //regenerate row numbers for row number formatter if in use
-                               this.regenerateRowNumbers();
-
-                       //generic stage to allow for pipeline trigger after the data manipulation stage
-                       case "display":
-                               this.resetDisplayRows();
-
-                       case "freeze":
-                               if (!skipStage) {
-                                       if (this.table.modExists("frozenRows")) {
-                                               if (table.modules.frozenRows.isFrozen()) {
-                                                       if (!table.modules.frozenRows.getDisplayIndex()) {
-                                                               table.modules.frozenRows.setDisplayIndex(this.getNextDisplayIndex());
-                                                       }
-
-                                                       displayIndex = table.modules.frozenRows.getDisplayIndex();
-
-                                                       displayIndex = self.setDisplayRows(table.modules.frozenRows.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
-
-                                                       if (displayIndex !== true) {
-                                                               table.modules.frozenRows.setDisplayIndex(displayIndex);
-                                                       }
-                                               }
-                                       }
-                               } else {
-                                       skipStage = false;
-                               }
-
-                       case "group":
-                               if (!skipStage) {
-                                       if (table.options.groupBy && table.modExists("groupRows")) {
-
-                                               if (!table.modules.groupRows.getDisplayIndex()) {
-                                                       table.modules.groupRows.setDisplayIndex(this.getNextDisplayIndex());
-                                               }
-
-                                               displayIndex = table.modules.groupRows.getDisplayIndex();
-
-                                               displayIndex = self.setDisplayRows(table.modules.groupRows.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
-
-                                               if (displayIndex !== true) {
-                                                       table.modules.groupRows.setDisplayIndex(displayIndex);
-                                               }
-                                       }
-                               } else {
-                                       skipStage = false;
-                               }
-
-                       case "tree":
-
-                               if (!skipStage) {
-                                       if (table.options.dataTree && table.modExists("dataTree")) {
-                                               if (!table.modules.dataTree.getDisplayIndex()) {
-                                                       table.modules.dataTree.setDisplayIndex(this.getNextDisplayIndex());
-                                               }
-
-                                               displayIndex = table.modules.dataTree.getDisplayIndex();
-
-                                               displayIndex = self.setDisplayRows(table.modules.dataTree.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
-
-                                               if (displayIndex !== true) {
-                                                       table.modules.dataTree.setDisplayIndex(displayIndex);
-                                               }
-                                       }
-                               } else {
-                                       skipStage = false;
-                               }
-
-                               if (table.options.pagination && table.modExists("page") && !renderInPosition) {
-                                       if (table.modules.page.getMode() == "local") {
-                                               table.modules.page.reset();
-                                       }
-                               }
-
-                       case "page":
-                               if (!skipStage) {
-                                       if (table.options.pagination && table.modExists("page")) {
-
-                                               if (!table.modules.page.getDisplayIndex()) {
-                                                       table.modules.page.setDisplayIndex(this.getNextDisplayIndex());
-                                               }
-
-                                               displayIndex = table.modules.page.getDisplayIndex();
-
-                                               if (table.modules.page.getMode() == "local") {
-                                                       table.modules.page.setMaxRows(this.getDisplayRows(displayIndex - 1).length);
-                                               }
-
-                                               displayIndex = self.setDisplayRows(table.modules.page.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
-
-                                               if (displayIndex !== true) {
-                                                       table.modules.page.setDisplayIndex(displayIndex);
-                                               }
-                                       }
-                               } else {
-                                       skipStage = false;
-                               }
-               }
-
-               if (Tabulator.prototype.helpers.elVisible(self.element)) {
-                       if (renderInPosition) {
-                               self.reRenderInPosition();
-                       } else {
-                               self.renderTable();
-                               if (table.options.layoutColumnsOnNewData) {
-                                       self.table.columnManager.redraw(true);
-                               }
-                       }
-               }
-
-               if (table.modExists("columnCalcs")) {
-                       table.modules.columnCalcs.recalc(this.activeRows);
-               }
-       }
-};
-
-//regenerate row numbers for row number formatter if in use
-RowManager.prototype.regenerateRowNumbers = function () {
-       var _this14 = this;
-
-       if (this.rowNumColumn) {
-               this.activeRows.forEach(function (row) {
-                       var cell = row.getCell(_this14.rowNumColumn);
-
-                       if (cell) {
-                               cell._generateContents();
-                       }
-               });
-       }
-};
-
-RowManager.prototype.setActiveRows = function (activeRows) {
-       this.activeRows = activeRows;
-       this.activeRowsCount = this.activeRows.length;
-};
-
-//reset display rows array
-RowManager.prototype.resetDisplayRows = function () {
-       this.displayRows = [];
-
-       this.displayRows.push(this.activeRows.slice(0));
-
-       this.displayRowsCount = this.displayRows[0].length;
-
-       if (this.table.modExists("frozenRows")) {
-               this.table.modules.frozenRows.setDisplayIndex(0);
-       }
-
-       if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-               this.table.modules.groupRows.setDisplayIndex(0);
-       }
-
-       if (this.table.options.pagination && this.table.modExists("page")) {
-               this.table.modules.page.setDisplayIndex(0);
-       }
-};
-
-RowManager.prototype.getNextDisplayIndex = function () {
-       return this.displayRows.length;
-};
-
-//set display row pipeline data
-RowManager.prototype.setDisplayRows = function (displayRows, index) {
-
-       var output = true;
-
-       if (index && typeof this.displayRows[index] != "undefined") {
-               this.displayRows[index] = displayRows;
-               output = true;
-       } else {
-               this.displayRows.push(displayRows);
-               output = index = this.displayRows.length - 1;
-       }
-
-       if (index == this.displayRows.length - 1) {
-               this.displayRowsCount = this.displayRows[this.displayRows.length - 1].length;
-       }
-
-       return output;
-};
-
-RowManager.prototype.getDisplayRows = function (index) {
-       if (typeof index == "undefined") {
-               return this.displayRows.length ? this.displayRows[this.displayRows.length - 1] : [];
-       } else {
-               return this.displayRows[index] || [];
-       }
-};
-
-RowManager.prototype.getVisibleRows = function (viewable) {
-       var topEdge = this.element.scrollTop,
-           bottomEdge = this.element.clientHeight + topEdge,
-           topFound = false,
-           topRow = 0,
-           bottomRow = 0,
-           rows = this.getDisplayRows();
-
-       if (viewable) {
-
-               this.getDisplayRows();
-               for (var i = this.vDomTop; i <= this.vDomBottom; i++) {
-                       if (rows[i]) {
-                               if (!topFound) {
-                                       if (topEdge - rows[i].getElement().offsetTop >= 0) {
-                                               topRow = i;
-                                       } else {
-                                               topFound = true;
-
-                                               if (bottomEdge - rows[i].getElement().offsetTop >= 0) {
-                                                       bottomRow = i;
-                                               } else {
-                                                       break;
-                                               }
-                                       }
-                               } else {
-                                       if (bottomEdge - rows[i].getElement().offsetTop >= 0) {
-                                               bottomRow = i;
-                                       } else {
-                                               break;
-                                       }
-                               }
-                       }
-               }
-       } else {
-               topRow = this.vDomTop;
-               bottomRow = this.vDomBottom;
-       }
-
-       return rows.slice(topRow, bottomRow + 1);
-};
-
-//repeat action accross display rows
-RowManager.prototype.displayRowIterator = function (callback) {
-       this.displayRows.forEach(callback);
-
-       this.displayRowsCount = this.displayRows[this.displayRows.length - 1].length;
-};
-
-//return only actual rows (not group headers etc)
-RowManager.prototype.getRows = function (active) {
-       var rows;
-
-       switch (active) {
-               case "active":
-                       rows = this.activeRows;
-                       break;
-
-               case "display":
-                       rows = this.table.rowManager.getDisplayRows();
-                       break;
-
-               case "visible":
-                       rows = this.getVisibleRows(true);
-                       break;
-
-               default:
-                       rows = this.rows;
-       }
-
-       return rows;
-};
-
-///////////////// Table Rendering /////////////////
-
-//trigger rerender of table in current position
-RowManager.prototype.reRenderInPosition = function (callback) {
-       if (this.getRenderMode() == "virtual") {
-
-               if (this.redrawBlock) {
-                       if (callback) {
-                               callback();
-                       } else {
-                               this.redrawBlockRederInPosition = true;
-                       }
-               } else {
-                       var scrollTop = this.element.scrollTop;
-                       var topRow = false;
-                       var topOffset = false;
-
-                       var left = this.scrollLeft;
-
-                       var rows = this.getDisplayRows();
-
-                       for (var i = this.vDomTop; i <= this.vDomBottom; i++) {
-
-                               if (rows[i]) {
-                                       var diff = scrollTop - rows[i].getElement().offsetTop;
-
-                                       if (topOffset === false || Math.abs(diff) < topOffset) {
-                                               topOffset = diff;
-                                               topRow = i;
-                                       } else {
-                                               break;
-                                       }
-                               }
-                       }
-
-                       if (callback) {
-                               callback();
-                       }
-
-                       this._virtualRenderFill(topRow === false ? this.displayRowsCount - 1 : topRow, true, topOffset || 0);
-
-                       this.scrollHorizontal(left);
-               }
-       } else {
-               this.renderTable();
-
-               if (callback) {
-                       callback();
-               }
-       }
-};
-
-RowManager.prototype.setRenderMode = function () {
-
-       if (this.table.options.virtualDom) {
-
-               this.renderMode = "virtual";
-
-               if (this.table.element.clientHeight || this.table.options.height) {
-                       this.fixedHeight = true;
-               } else {
-                       this.fixedHeight = false;
-               }
-       } else {
-               this.renderMode = "classic";
-       }
-};
-
-RowManager.prototype.getRenderMode = function () {
-       return this.renderMode;
-};
-
-RowManager.prototype.renderTable = function () {
-
-       this.table.options.renderStarted.call(this.table);
-
-       this.element.scrollTop = 0;
-
-       switch (this.renderMode) {
-               case "classic":
-                       this._simpleRender();
-                       break;
-
-               case "virtual":
-                       this._virtualRenderFill();
-                       break;
-       }
-
-       if (this.firstRender) {
-               if (this.displayRowsCount) {
-                       this.firstRender = false;
-                       this.table.modules.layout.layout();
-               } else {
-                       this.renderEmptyScroll();
-               }
-       }
-
-       if (this.table.modExists("frozenColumns")) {
-               this.table.modules.frozenColumns.layout();
-       }
-
-       if (!this.displayRowsCount) {
-               if (this.table.options.placeholder) {
-
-                       this.table.options.placeholder.setAttribute("tabulator-render-mode", this.renderMode);
-
-                       this.getElement().appendChild(this.table.options.placeholder);
-                       this.table.options.placeholder.style.width = this.table.columnManager.getWidth() + "px";
-               }
-       }
-
-       this.table.options.renderComplete.call(this.table);
-};
-
-//simple render on heightless table
-RowManager.prototype._simpleRender = function () {
-       this._clearVirtualDom();
-
-       if (this.displayRowsCount) {
-               this.checkClassicModeGroupHeaderWidth();
-       } else {
-               this.renderEmptyScroll();
-       }
-};
-
-RowManager.prototype.checkClassicModeGroupHeaderWidth = function () {
-       var self = this,
-           element = this.tableElement,
-           onlyGroupHeaders = true;
-
-       self.getDisplayRows().forEach(function (row, index) {
-               self.styleRow(row, index);
-               element.appendChild(row.getElement());
-               row.initialize(true);
-
-               if (row.type !== "group") {
-                       onlyGroupHeaders = false;
-               }
-       });
-
-       if (onlyGroupHeaders) {
-               element.style.minWidth = self.table.columnManager.getWidth() + "px";
-       } else {
-               element.style.minWidth = "";
-       }
-};
-
-//show scrollbars on empty table div
-RowManager.prototype.renderEmptyScroll = function () {
-       if (this.table.options.placeholder) {
-               this.tableElement.style.display = "none";
-       } else {
-               this.tableElement.style.minWidth = this.table.columnManager.getWidth() + "px";
-               this.tableElement.style.minHeight = "1px";
-               this.tableElement.style.visibility = "hidden";
-       }
-};
-
-RowManager.prototype._clearVirtualDom = function () {
-       var element = this.tableElement;
-
-       if (this.table.options.placeholder && this.table.options.placeholder.parentNode) {
-               this.table.options.placeholder.parentNode.removeChild(this.table.options.placeholder);
-       }
-
-       // element.children.detach();
-       while (element.firstChild) {
-               element.removeChild(element.firstChild);
-       }element.style.paddingTop = "";
-       element.style.paddingBottom = "";
-       element.style.minWidth = "";
-       element.style.minHeight = "";
-       element.style.display = "";
-       element.style.visibility = "";
-
-       this.scrollTop = 0;
-       this.scrollLeft = 0;
-       this.vDomTop = 0;
-       this.vDomBottom = 0;
-       this.vDomTopPad = 0;
-       this.vDomBottomPad = 0;
-};
-
-RowManager.prototype.styleRow = function (row, index) {
-       var rowEl = row.getElement();
-
-       if (index % 2) {
-               rowEl.classList.add("tabulator-row-even");
-               rowEl.classList.remove("tabulator-row-odd");
-       } else {
-               rowEl.classList.add("tabulator-row-odd");
-               rowEl.classList.remove("tabulator-row-even");
-       }
-};
-
-//full virtual render
-RowManager.prototype._virtualRenderFill = function (position, forceMove, offset) {
-       var self = this,
-           element = self.tableElement,
-           holder = self.element,
-           topPad = 0,
-           rowsHeight = 0,
-           topPadHeight = 0,
-           i = 0,
-           onlyGroupHeaders = true,
-           rows = self.getDisplayRows();
-
-       position = position || 0;
-
-       offset = offset || 0;
-
-       if (!position) {
-               self._clearVirtualDom();
-       } else {
-               while (element.firstChild) {
-                       element.removeChild(element.firstChild);
-               } //check if position is too close to bottom of table
-               var heightOccupied = (self.displayRowsCount - position + 1) * self.vDomRowHeight;
-
-               if (heightOccupied < self.height) {
-                       position -= Math.ceil((self.height - heightOccupied) / self.vDomRowHeight);
-
-                       if (position < 0) {
-                               position = 0;
-                       }
-               }
-
-               //calculate initial pad
-               topPad = Math.min(Math.max(Math.floor(self.vDomWindowBuffer / self.vDomRowHeight), self.vDomWindowMinMarginRows), position);
-               position -= topPad;
-       }
-
-       if (self.displayRowsCount && Tabulator.prototype.helpers.elVisible(self.element)) {
-
-               self.vDomTop = position;
-
-               self.vDomBottom = position - 1;
-
-               while ((rowsHeight <= self.height + self.vDomWindowBuffer || i < self.vDomWindowMinTotalRows) && self.vDomBottom < self.displayRowsCount - 1) {
-                       var index = self.vDomBottom + 1,
-                           row = rows[index],
-                           rowHeight = 0;
-
-                       self.styleRow(row, index);
-
-                       element.appendChild(row.getElement());
-                       if (!row.initialized) {
-                               row.initialize(true);
-                       } else {
-                               if (!row.heightInitialized) {
-                                       row.normalizeHeight(true);
-                               }
-                       }
-
-                       rowHeight = row.getHeight();
-
-                       if (i < topPad) {
-                               topPadHeight += rowHeight;
-                       } else {
-                               rowsHeight += rowHeight;
-                       }
-
-                       if (rowHeight > this.vDomWindowBuffer) {
-                               this.vDomWindowBuffer = rowHeight * 2;
-                       }
-
-                       if (row.type !== "group") {
-                               onlyGroupHeaders = false;
-                       }
-
-                       self.vDomBottom++;
-                       i++;
-               }
-
-               if (!position) {
-                       this.vDomTopPad = 0;
-                       //adjust rowheight to match average of rendered elements
-                       self.vDomRowHeight = Math.floor((rowsHeight + topPadHeight) / i);
-                       self.vDomBottomPad = self.vDomRowHeight * (self.displayRowsCount - self.vDomBottom - 1);
-
-                       self.vDomScrollHeight = topPadHeight + rowsHeight + self.vDomBottomPad - self.height;
-               } else {
-                       self.vDomTopPad = !forceMove ? self.scrollTop - topPadHeight : self.vDomRowHeight * this.vDomTop + offset;
-                       self.vDomBottomPad = self.vDomBottom == self.displayRowsCount - 1 ? 0 : Math.max(self.vDomScrollHeight - self.vDomTopPad - rowsHeight - topPadHeight, 0);
-               }
-
-               element.style.paddingTop = self.vDomTopPad + "px";
-               element.style.paddingBottom = self.vDomBottomPad + "px";
-
-               if (forceMove) {
-                       this.scrollTop = self.vDomTopPad + topPadHeight + offset - (this.element.scrollWidth > this.element.clientWidth ? this.element.offsetHeight - this.element.clientHeight : 0);
-               }
-
-               this.scrollTop = Math.min(this.scrollTop, this.element.scrollHeight - this.height);
-
-               //adjust for horizontal scrollbar if present (and not at top of table)
-               if (this.element.scrollWidth > this.element.offsetWidth && forceMove) {
-                       this.scrollTop += this.element.offsetHeight - this.element.clientHeight;
-               }
-
-               this.vDomScrollPosTop = this.scrollTop;
-               this.vDomScrollPosBottom = this.scrollTop;
-
-               holder.scrollTop = this.scrollTop;
-
-               element.style.minWidth = onlyGroupHeaders ? self.table.columnManager.getWidth() + "px" : "";
-
-               if (self.table.options.groupBy) {
-                       if (self.table.modules.layout.getMode() != "fitDataFill" && self.displayRowsCount == self.table.modules.groupRows.countGroups()) {
-                               self.tableElement.style.minWidth = self.table.columnManager.getWidth();
-                       }
-               }
-       } else {
-               this.renderEmptyScroll();
-       }
-
-       if (!this.fixedHeight) {
-               this.adjustTableSize();
-       }
-};
-
-//handle vertical scrolling
-RowManager.prototype.scrollVertical = function (dir) {
-       var topDiff = this.scrollTop - this.vDomScrollPosTop;
-       var bottomDiff = this.scrollTop - this.vDomScrollPosBottom;
-       var margin = this.vDomWindowBuffer * 2;
-
-       if (-topDiff > margin || bottomDiff > margin) {
-               //if big scroll redraw table;
-               var left = this.scrollLeft;
-               this._virtualRenderFill(Math.floor(this.element.scrollTop / this.element.scrollHeight * this.displayRowsCount));
-               this.scrollHorizontal(left);
-       } else {
-
-               if (dir) {
-                       //scrolling up
-                       if (topDiff < 0) {
-
-                               this._addTopRow(-topDiff);
-                       }
-
-                       if (bottomDiff < 0) {
-
-                               //hide bottom row if needed
-                               if (this.vDomScrollHeight - this.scrollTop > this.vDomWindowBuffer) {
-                                       this._removeBottomRow(-bottomDiff);
-                               } else {
-                                       this.vDomScrollPosBottom = this.scrollTop;
-                               }
-                       }
-               } else {
-                       //scrolling down
-                       if (topDiff >= 0) {
-
-                               //hide top row if needed
-                               if (this.scrollTop > this.vDomWindowBuffer) {
-
-                                       this._removeTopRow(topDiff);
-                               } else {
-                                       this.vDomScrollPosTop = this.scrollTop;
-                               }
-                       }
-
-                       if (bottomDiff >= 0) {
-
-                               this._addBottomRow(bottomDiff);
-                       }
-               }
-       }
-};
-
-RowManager.prototype._addTopRow = function (topDiff) {
-       var i = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
-
-       var table = this.tableElement,
-           rows = this.getDisplayRows();
-
-       if (this.vDomTop) {
-               var index = this.vDomTop - 1,
-                   topRow = rows[index],
-                   topRowHeight = topRow.getHeight() || this.vDomRowHeight;
-
-               //hide top row if needed
-               if (topDiff >= topRowHeight) {
-                       this.styleRow(topRow, index);
-                       table.insertBefore(topRow.getElement(), table.firstChild);
-                       if (!topRow.initialized || !topRow.heightInitialized) {
-                               this.vDomTopNewRows.push(topRow);
-
-                               if (!topRow.heightInitialized) {
-                                       topRow.clearCellHeight();
-                               }
-                       }
-                       topRow.initialize();
-
-                       this.vDomTopPad -= topRowHeight;
-
-                       if (this.vDomTopPad < 0) {
-                               this.vDomTopPad = index * this.vDomRowHeight;
-                       }
-
-                       if (!index) {
-                               this.vDomTopPad = 0;
-                       }
-
-                       table.style.paddingTop = this.vDomTopPad + "px";
-                       this.vDomScrollPosTop -= topRowHeight;
-                       this.vDomTop--;
-               }
-
-               topDiff = -(this.scrollTop - this.vDomScrollPosTop);
-
-               if (topRow.getHeight() > this.vDomWindowBuffer) {
-                       this.vDomWindowBuffer = topRow.getHeight() * 2;
-               }
-
-               if (i < this.vDomMaxRenderChain && this.vDomTop && topDiff >= (rows[this.vDomTop - 1].getHeight() || this.vDomRowHeight)) {
-                       this._addTopRow(topDiff, i + 1);
-               } else {
-                       this._quickNormalizeRowHeight(this.vDomTopNewRows);
-               }
-       }
-};
-
-RowManager.prototype._removeTopRow = function (topDiff) {
-       var table = this.tableElement,
-           topRow = this.getDisplayRows()[this.vDomTop],
-           topRowHeight = topRow.getHeight() || this.vDomRowHeight;
-
-       if (topDiff >= topRowHeight) {
-
-               var rowEl = topRow.getElement();
-               rowEl.parentNode.removeChild(rowEl);
-
-               this.vDomTopPad += topRowHeight;
-               table.style.paddingTop = this.vDomTopPad + "px";
-               this.vDomScrollPosTop += this.vDomTop ? topRowHeight : topRowHeight + this.vDomWindowBuffer;
-               this.vDomTop++;
-
-               topDiff = this.scrollTop - this.vDomScrollPosTop;
-
-               this._removeTopRow(topDiff);
-       }
-};
-
-RowManager.prototype._addBottomRow = function (bottomDiff) {
-       var i = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
-
-       var table = this.tableElement,
-           rows = this.getDisplayRows();
-
-       if (this.vDomBottom < this.displayRowsCount - 1) {
-               var index = this.vDomBottom + 1,
-                   bottomRow = rows[index],
-                   bottomRowHeight = bottomRow.getHeight() || this.vDomRowHeight;
-
-               //hide bottom row if needed
-               if (bottomDiff >= bottomRowHeight) {
-                       this.styleRow(bottomRow, index);
-                       table.appendChild(bottomRow.getElement());
-
-                       if (!bottomRow.initialized || !bottomRow.heightInitialized) {
-                               this.vDomBottomNewRows.push(bottomRow);
-
-                               if (!bottomRow.heightInitialized) {
-                                       bottomRow.clearCellHeight();
-                               }
-                       }
-
-                       bottomRow.initialize();
-
-                       this.vDomBottomPad -= bottomRowHeight;
-
-                       if (this.vDomBottomPad < 0 || index == this.displayRowsCount - 1) {
-                               this.vDomBottomPad = 0;
-                       }
-
-                       table.style.paddingBottom = this.vDomBottomPad + "px";
-                       this.vDomScrollPosBottom += bottomRowHeight;
-                       this.vDomBottom++;
-               }
-
-               bottomDiff = this.scrollTop - this.vDomScrollPosBottom;
-
-               if (bottomRow.getHeight() > this.vDomWindowBuffer) {
-                       this.vDomWindowBuffer = bottomRow.getHeight() * 2;
-               }
-
-               if (i < this.vDomMaxRenderChain && this.vDomBottom < this.displayRowsCount - 1 && bottomDiff >= (rows[this.vDomBottom + 1].getHeight() || this.vDomRowHeight)) {
-                       this._addBottomRow(bottomDiff, i + 1);
-               } else {
-                       this._quickNormalizeRowHeight(this.vDomBottomNewRows);
-               }
-       }
-};
-
-RowManager.prototype._removeBottomRow = function (bottomDiff) {
-       var table = this.tableElement,
-           bottomRow = this.getDisplayRows()[this.vDomBottom],
-           bottomRowHeight = bottomRow.getHeight() || this.vDomRowHeight;
-
-       if (bottomDiff >= bottomRowHeight) {
-
-               var rowEl = bottomRow.getElement();
-
-               if (rowEl.parentNode) {
-                       rowEl.parentNode.removeChild(rowEl);
-               }
-
-               this.vDomBottomPad += bottomRowHeight;
-
-               if (this.vDomBottomPad < 0) {
-                       this.vDomBottomPad = 0;
-               }
-
-               table.style.paddingBottom = this.vDomBottomPad + "px";
-               this.vDomScrollPosBottom -= bottomRowHeight;
-               this.vDomBottom--;
-
-               bottomDiff = -(this.scrollTop - this.vDomScrollPosBottom);
-
-               this._removeBottomRow(bottomDiff);
-       }
-};
-
-RowManager.prototype._quickNormalizeRowHeight = function (rows) {
-       rows.forEach(function (row) {
-               row.calcHeight();
-       });
-
-       rows.forEach(function (row) {
-               row.setCellHeight();
-       });
-
-       rows.length = 0;
-};
-
-//normalize height of active rows
-RowManager.prototype.normalizeHeight = function () {
-       this.activeRows.forEach(function (row) {
-               row.normalizeHeight();
-       });
-};
-
-//adjust the height of the table holder to fit in the Tabulator element
-RowManager.prototype.adjustTableSize = function () {
-       var initialHeight = this.element.clientHeight,
-           modExists;
-
-       if (this.renderMode === "virtual") {
-               var otherHeight = this.columnManager.getElement().offsetHeight + (this.table.footerManager && !this.table.footerManager.external ? this.table.footerManager.getElement().offsetHeight : 0);
-
-               if (this.fixedHeight) {
-                       this.element.style.minHeight = "calc(100% - " + otherHeight + "px)";
-                       this.element.style.height = "calc(100% - " + otherHeight + "px)";
-                       this.element.style.maxHeight = "calc(100% - " + otherHeight + "px)";
-               } else {
-                       this.element.style.height = "";
-                       this.element.style.height = this.table.element.clientHeight - otherHeight + "px";
-                       this.element.scrollTop = this.scrollTop;
-               }
-
-               this.height = this.element.clientHeight;
-               this.vDomWindowBuffer = this.table.options.virtualDomBuffer || this.height;
-
-               //check if the table has changed size when dealing with variable height tables
-               if (!this.fixedHeight && initialHeight != this.element.clientHeight) {
-                       modExists = this.table.modExists("resizeTable");
-
-                       if (modExists && !this.table.modules.resizeTable.autoResize || !modExists) {
-                               this.redraw();
-                       }
-               }
-       }
-};
-
-//renitialize all rows
-RowManager.prototype.reinitialize = function () {
-       this.rows.forEach(function (row) {
-               row.reinitialize();
-       });
-};
-
-//prevent table from being redrawn
-RowManager.prototype.blockRedraw = function () {
-       this.redrawBlock = true;
-       this.redrawBlockRestoreConfig = false;
-};
-
-//restore table redrawing
-RowManager.prototype.restoreRedraw = function () {
-       this.redrawBlock = false;
-
-       if (this.redrawBlockRestoreConfig) {
-               this.refreshActiveData(this.redrawBlockRestoreConfig.stage, this.redrawBlockRestoreConfig.skipStage, this.redrawBlockRestoreConfig.renderInPosition);
-
-               this.redrawBlockRestoreConfig = false;
-       } else {
-               if (this.redrawBlockRederInPosition) {
-                       this.reRenderInPosition();
-               }
-       }
-
-       this.redrawBlockRederInPosition = false;
-};
-
-//redraw table
-RowManager.prototype.redraw = function (force) {
-       var pos = 0,
-           left = this.scrollLeft;
-
-       this.adjustTableSize();
-
-       this.table.tableWidth = this.table.element.clientWidth;
-
-       if (!force) {
-               if (this.renderMode == "classic") {
-
-                       if (this.table.options.groupBy) {
-                               this.refreshActiveData("group", false, false);
-                       } else {
-                               this._simpleRender();
-                       }
-               } else {
-                       this.reRenderInPosition();
-                       this.scrollHorizontal(left);
-               }
-
-               if (!this.displayRowsCount) {
-                       if (this.table.options.placeholder) {
-                               this.getElement().appendChild(this.table.options.placeholder);
-                       }
-               }
-       } else {
-               this.renderTable();
-       }
-};
-
-RowManager.prototype.resetScroll = function () {
-       this.element.scrollLeft = 0;
-       this.element.scrollTop = 0;
-
-       if (this.table.browser === "ie") {
-               var event = document.createEvent("Event");
-               event.initEvent("scroll", false, true);
-               this.element.dispatchEvent(event);
-       } else {
-               this.element.dispatchEvent(new Event('scroll'));
-       }
-};
-
-//public row object
-var RowComponent = function RowComponent(row) {
-       this._row = row;
-};
-
-RowComponent.prototype.getData = function (transform) {
-       return this._row.getData(transform);
-};
-
-RowComponent.prototype.getElement = function () {
-       return this._row.getElement();
-};
-
-RowComponent.prototype.getCells = function () {
-       var cells = [];
-
-       this._row.getCells().forEach(function (cell) {
-               cells.push(cell.getComponent());
-       });
-
-       return cells;
-};
-
-RowComponent.prototype.getCell = function (column) {
-       var cell = this._row.getCell(column);
-       return cell ? cell.getComponent() : false;
-};
-
-RowComponent.prototype.getIndex = function () {
-       return this._row.getData("data")[this._row.table.options.index];
-};
-
-RowComponent.prototype.getPosition = function (active) {
-       return this._row.table.rowManager.getRowPosition(this._row, active);
-};
-
-RowComponent.prototype.delete = function () {
-       return this._row.delete();
-};
-
-RowComponent.prototype.scrollTo = function () {
-       return this._row.table.rowManager.scrollToRow(this._row);
-};
-
-RowComponent.prototype.pageTo = function () {
-       if (this._row.table.modExists("page", true)) {
-               return this._row.table.modules.page.setPageToRow(this._row);
-       }
-};
-
-RowComponent.prototype.move = function (to, after) {
-       this._row.moveToRow(to, after);
-};
-
-RowComponent.prototype.update = function (data) {
-       return this._row.updateData(data);
-};
-
-RowComponent.prototype.normalizeHeight = function () {
-       this._row.normalizeHeight(true);
-};
-
-RowComponent.prototype.select = function () {
-       this._row.table.modules.selectRow.selectRows(this._row);
-};
-
-RowComponent.prototype.deselect = function () {
-       this._row.table.modules.selectRow.deselectRows(this._row);
-};
-
-RowComponent.prototype.toggleSelect = function () {
-       this._row.table.modules.selectRow.toggleRow(this._row);
-};
-
-RowComponent.prototype.isSelected = function () {
-       return this._row.table.modules.selectRow.isRowSelected(this._row);
-};
-
-RowComponent.prototype._getSelf = function () {
-       return this._row;
-};
-
-RowComponent.prototype.freeze = function () {
-       if (this._row.table.modExists("frozenRows", true)) {
-               this._row.table.modules.frozenRows.freezeRow(this._row);
-       }
-};
-
-RowComponent.prototype.unfreeze = function () {
-       if (this._row.table.modExists("frozenRows", true)) {
-               this._row.table.modules.frozenRows.unfreezeRow(this._row);
-       }
-};
-
-RowComponent.prototype.treeCollapse = function () {
-       if (this._row.table.modExists("dataTree", true)) {
-               this._row.table.modules.dataTree.collapseRow(this._row);
-       }
-};
-
-RowComponent.prototype.treeExpand = function () {
-       if (this._row.table.modExists("dataTree", true)) {
-               this._row.table.modules.dataTree.expandRow(this._row);
-       }
-};
-
-RowComponent.prototype.treeToggle = function () {
-       if (this._row.table.modExists("dataTree", true)) {
-               this._row.table.modules.dataTree.toggleRow(this._row);
-       }
-};
-
-RowComponent.prototype.getTreeParent = function () {
-       if (this._row.table.modExists("dataTree", true)) {
-               return this._row.table.modules.dataTree.getTreeParent(this._row);
-       }
-
-       return false;
-};
-
-RowComponent.prototype.getTreeChildren = function () {
-       if (this._row.table.modExists("dataTree", true)) {
-               return this._row.table.modules.dataTree.getTreeChildren(this._row);
-       }
-
-       return false;
-};
-
-RowComponent.prototype.reformat = function () {
-       return this._row.reinitialize();
-};
-
-RowComponent.prototype.getGroup = function () {
-       return this._row.getGroup().getComponent();
-};
-
-RowComponent.prototype.getTable = function () {
-       return this._row.table;
-};
-
-RowComponent.prototype.getNextRow = function () {
-       var row = this._row.nextRow();
-       return row ? row.getComponent() : row;
-};
-
-RowComponent.prototype.getPrevRow = function () {
-       var row = this._row.prevRow();
-       return row ? row.getComponent() : row;
-};
-
-var Row = function Row(data, parent) {
-       var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "row";
-
-       this.table = parent.table;
-       this.parent = parent;
-       this.data = {};
-       this.type = type; //type of element
-       this.element = this.createElement();
-       this.modules = {}; //hold module variables;
-       this.cells = [];
-       this.height = 0; //hold element height
-       this.heightStyled = ""; //hold element height prestyled to improve render efficiency
-       this.manualHeight = false; //user has manually set row height
-       this.outerHeight = 0; //holde lements outer height
-       this.initialized = false; //element has been rendered
-       this.heightInitialized = false; //element has resized cells to fit
-
-       this.setData(data);
-       this.generateElement();
-};
-
-Row.prototype.createElement = function () {
-       var el = document.createElement("div");
-
-       el.classList.add("tabulator-row");
-       el.setAttribute("role", "row");
-
-       return el;
-};
-
-Row.prototype.getElement = function () {
-       return this.element;
-};
-
-Row.prototype.detachElement = function () {
-       if (this.element && this.element.parentNode) {
-               this.element.parentNode.removeChild(this.element);
-       }
-};
-
-Row.prototype.generateElement = function () {
-       var self = this,
-           dblTap,
-           tapHold,
-           tap;
-
-       //set row selection characteristics
-       if (self.table.options.selectable !== false && self.table.modExists("selectRow")) {
-               self.table.modules.selectRow.initializeRow(this);
-       }
-
-       //setup movable rows
-       if (self.table.options.movableRows !== false && self.table.modExists("moveRow")) {
-               self.table.modules.moveRow.initializeRow(this);
-       }
-
-       //setup data tree
-       if (self.table.options.dataTree !== false && self.table.modExists("dataTree")) {
-               self.table.modules.dataTree.initializeRow(this);
-       }
-
-       //setup column colapse container
-       if (self.table.options.responsiveLayout === "collapse" && self.table.modExists("responsiveLayout")) {
-               self.table.modules.responsiveLayout.initializeRow(this);
-       }
-
-       //set column menu
-       if (self.table.options.rowContextMenu && this.table.modExists("menu")) {
-               self.table.modules.menu.initializeRow(this);
-       }
-
-       //handle row click events
-       if (self.table.options.rowClick) {
-               self.element.addEventListener("click", function (e) {
-                       self.table.options.rowClick(e, self.getComponent());
-               });
-       }
-
-       if (self.table.options.rowDblClick) {
-               self.element.addEventListener("dblclick", function (e) {
-                       self.table.options.rowDblClick(e, self.getComponent());
-               });
-       }
-
-       if (self.table.options.rowContext) {
-               self.element.addEventListener("contextmenu", function (e) {
-                       self.table.options.rowContext(e, self.getComponent());
-               });
-       }
-
-       //handle mouse events
-       if (self.table.options.rowMouseEnter) {
-               self.element.addEventListener("mouseenter", function (e) {
-                       self.table.options.rowMouseEnter(e, self.getComponent());
-               });
-       }
-
-       if (self.table.options.rowMouseLeave) {
-               self.element.addEventListener("mouseleave", function (e) {
-                       self.table.options.rowMouseLeave(e, self.getComponent());
-               });
-       }
-
-       if (self.table.options.rowMouseOver) {
-               self.element.addEventListener("mouseover", function (e) {
-                       self.table.options.rowMouseOver(e, self.getComponent());
-               });
-       }
-
-       if (self.table.options.rowMouseOut) {
-               self.element.addEventListener("mouseout", function (e) {
-                       self.table.options.rowMouseOut(e, self.getComponent());
-               });
-       }
-
-       if (self.table.options.rowMouseMove) {
-               self.element.addEventListener("mousemove", function (e) {
-                       self.table.options.rowMouseMove(e, self.getComponent());
-               });
-       }
-
-       if (self.table.options.rowTap) {
-
-               tap = false;
-
-               self.element.addEventListener("touchstart", function (e) {
-                       tap = true;
-               }, { passive: true });
-
-               self.element.addEventListener("touchend", function (e) {
-                       if (tap) {
-                               self.table.options.rowTap(e, self.getComponent());
-                       }
-
-                       tap = false;
-               });
-       }
-
-       if (self.table.options.rowDblTap) {
-
-               dblTap = null;
-
-               self.element.addEventListener("touchend", function (e) {
-
-                       if (dblTap) {
-                               clearTimeout(dblTap);
-                               dblTap = null;
-
-                               self.table.options.rowDblTap(e, self.getComponent());
-                       } else {
-
-                               dblTap = setTimeout(function () {
-                                       clearTimeout(dblTap);
-                                       dblTap = null;
-                               }, 300);
-                       }
-               });
-       }
-
-       if (self.table.options.rowTapHold) {
-
-               tapHold = null;
-
-               self.element.addEventListener("touchstart", function (e) {
-                       clearTimeout(tapHold);
-
-                       tapHold = setTimeout(function () {
-                               clearTimeout(tapHold);
-                               tapHold = null;
-                               tap = false;
-                               self.table.options.rowTapHold(e, self.getComponent());
-                       }, 1000);
-               }, { passive: true });
-
-               self.element.addEventListener("touchend", function (e) {
-                       clearTimeout(tapHold);
-                       tapHold = null;
-               });
-       }
-};
-
-Row.prototype.generateCells = function () {
-       this.cells = this.table.columnManager.generateCells(this);
-};
-
-//functions to setup on first render
-Row.prototype.initialize = function (force) {
-       var self = this;
-
-       if (!self.initialized || force) {
-
-               self.deleteCells();
-
-               while (self.element.firstChild) {
-                       self.element.removeChild(self.element.firstChild);
-               } //handle frozen cells
-               if (this.table.modExists("frozenColumns")) {
-                       this.table.modules.frozenColumns.layoutRow(this);
-               }
-
-               this.generateCells();
-
-               self.cells.forEach(function (cell) {
-                       self.element.appendChild(cell.getElement());
-                       cell.cellRendered();
-               });
-
-               if (force) {
-                       self.normalizeHeight();
-               }
-
-               //setup movable rows
-               if (self.table.options.dataTree && self.table.modExists("dataTree")) {
-                       self.table.modules.dataTree.layoutRow(this);
-               }
-
-               //setup column colapse container
-               if (self.table.options.responsiveLayout === "collapse" && self.table.modExists("responsiveLayout")) {
-                       self.table.modules.responsiveLayout.layoutRow(this);
-               }
-
-               if (self.table.options.rowFormatter) {
-                       self.table.options.rowFormatter(self.getComponent());
-               }
-
-               //set resizable handles
-               if (self.table.options.resizableRows && self.table.modExists("resizeRows")) {
-                       self.table.modules.resizeRows.initializeRow(self);
-               }
-
-               self.initialized = true;
-       }
-};
-
-Row.prototype.reinitializeHeight = function () {
-       this.heightInitialized = false;
-
-       if (this.element.offsetParent !== null) {
-               this.normalizeHeight(true);
-       }
-};
-
-Row.prototype.reinitialize = function () {
-       this.initialized = false;
-       this.heightInitialized = false;
-
-       if (!this.manualHeight) {
-               this.height = 0;
-               this.heightStyled = "";
-       }
-
-       if (this.element.offsetParent !== null) {
-               this.initialize(true);
-       }
-};
-
-//get heights when doing bulk row style calcs in virtual DOM
-Row.prototype.calcHeight = function (force) {
-
-       var maxHeight = 0,
-           minHeight = this.table.options.resizableRows ? this.element.clientHeight : 0;
-
-       this.cells.forEach(function (cell) {
-               var height = cell.getHeight();
-               if (height > maxHeight) {
-                       maxHeight = height;
-               }
-       });
-
-       if (force) {
-               this.height = Math.max(maxHeight, minHeight);
-       } else {
-               this.height = this.manualHeight ? this.height : Math.max(maxHeight, minHeight);
-       }
-
-       this.heightStyled = this.height ? this.height + "px" : "";
-       this.outerHeight = this.element.offsetHeight;
-};
-
-//set of cells
-Row.prototype.setCellHeight = function () {
-       this.cells.forEach(function (cell) {
-               cell.setHeight();
-       });
-
-       this.heightInitialized = true;
-};
-
-Row.prototype.clearCellHeight = function () {
-       this.cells.forEach(function (cell) {
-               cell.clearHeight();
-       });
-};
-
-//normalize the height of elements in the row
-Row.prototype.normalizeHeight = function (force) {
-
-       if (force) {
-               this.clearCellHeight();
-       }
-
-       this.calcHeight(force);
-
-       this.setCellHeight();
-};
-
-// Row.prototype.setHeight = function(height){
-//     this.height = height;
-
-//     this.setCellHeight();
-// };
-
-//set height of rows
-Row.prototype.setHeight = function (height, force) {
-       if (this.height != height || force) {
-
-               this.manualHeight = true;
-
-               this.height = height;
-               this.heightStyled = height ? height + "px" : "";
-
-               this.setCellHeight();
-
-               // this.outerHeight = this.element.outerHeight();
-               this.outerHeight = this.element.offsetHeight;
-       }
-};
-
-//return rows outer height
-Row.prototype.getHeight = function () {
-       return this.outerHeight;
-};
-
-//return rows outer Width
-Row.prototype.getWidth = function () {
-       return this.element.offsetWidth;
-};
-
-//////////////// Cell Management /////////////////
-
-Row.prototype.deleteCell = function (cell) {
-       var index = this.cells.indexOf(cell);
-
-       if (index > -1) {
-               this.cells.splice(index, 1);
-       }
-};
-
-//////////////// Data Management /////////////////
-
-Row.prototype.setData = function (data) {
-       if (this.table.modExists("mutator")) {
-               data = this.table.modules.mutator.transformRow(data, "data");
-       }
-
-       this.data = data;
-
-       if (this.table.options.reactiveData && this.table.modExists("reactiveData", true)) {
-               this.table.modules.reactiveData.watchRow(this);
-       }
-};
-
-//update the rows data
-Row.prototype.updateData = function (updatedData) {
-       var _this15 = this;
-
-       var visible = Tabulator.prototype.helpers.elVisible(this.element),
-           tempData = {},
-           newRowData;
-
-       return new Promise(function (resolve, reject) {
-
-               if (typeof updatedData === "string") {
-                       updatedData = JSON.parse(updatedData);
-               }
-
-               if (_this15.table.options.reactiveData && _this15.table.modExists("reactiveData", true)) {
-                       _this15.table.modules.reactiveData.block();
-               }
-
-               //mutate incomming data if needed
-               if (_this15.table.modExists("mutator")) {
-
-                       tempData = Object.assign(tempData, _this15.data);
-                       tempData = Object.assign(tempData, updatedData);
-
-                       newRowData = _this15.table.modules.mutator.transformRow(tempData, "data", updatedData);
-               } else {
-                       newRowData = updatedData;
-               }
-
-               //set data
-               for (var attrname in newRowData) {
-                       _this15.data[attrname] = newRowData[attrname];
-               }
-
-               if (_this15.table.options.reactiveData && _this15.table.modExists("reactiveData", true)) {
-                       _this15.table.modules.reactiveData.unblock();
-               }
-
-               //update affected cells only
-               for (var attrname in updatedData) {
-
-                       var columns = _this15.table.columnManager.getColumnsByFieldRoot(attrname);
-
-                       columns.forEach(function (column) {
-                               var cell = _this15.getCell(column.getField());
-
-                               if (cell) {
-                                       var value = column.getFieldValue(newRowData);
-                                       if (cell.getValue() != value) {
-                                               cell.setValueProcessData(value);
-
-                                               if (visible) {
-                                                       cell.cellRendered();
-                                               }
-                                       }
-                               }
-                       });
-               }
-
-               //Partial reinitialization if visible
-               if (visible) {
-                       _this15.normalizeHeight(true);
-
-                       if (_this15.table.options.rowFormatter) {
-                               _this15.table.options.rowFormatter(_this15.getComponent());
-                       }
-               } else {
-                       _this15.initialized = false;
-                       _this15.height = 0;
-                       _this15.heightStyled = "";
-               }
-
-               if (_this15.table.options.dataTree !== false && _this15.table.modExists("dataTree") && _this15.table.modules.dataTree.redrawNeeded(updatedData)) {
-                       _this15.table.modules.dataTree.initializeRow(_this15);
-                       _this15.table.modules.dataTree.layoutRow(_this15);
-                       _this15.table.rowManager.refreshActiveData("tree", false, true);
-               }
-
-               //this.reinitialize();
-
-               _this15.table.options.rowUpdated.call(_this15.table, _this15.getComponent());
-
-               resolve();
-       });
-};
-
-Row.prototype.getData = function (transform) {
-       var self = this;
-
-       if (transform) {
-               if (self.table.modExists("accessor")) {
-                       return self.table.modules.accessor.transformRow(self.data, transform);
-               }
-       } else {
-               return this.data;
-       }
-};
-
-Row.prototype.getCell = function (column) {
-       var match = false;
-
-       column = this.table.columnManager.findColumn(column);
-
-       match = this.cells.find(function (cell) {
-               return cell.column === column;
-       });
-
-       return match;
-};
-
-Row.prototype.getCellIndex = function (findCell) {
-       return this.cells.findIndex(function (cell) {
-               return cell === findCell;
-       });
-};
-
-Row.prototype.findNextEditableCell = function (index) {
-       var nextCell = false;
-
-       if (index < this.cells.length - 1) {
-               for (var i = index + 1; i < this.cells.length; i++) {
-                       var cell = this.cells[i];
-
-                       if (cell.column.modules.edit && Tabulator.prototype.helpers.elVisible(cell.getElement())) {
-                               var allowEdit = true;
-
-                               if (typeof cell.column.modules.edit.check == "function") {
-                                       allowEdit = cell.column.modules.edit.check(cell.getComponent());
-                               }
-
-                               if (allowEdit) {
-                                       nextCell = cell;
-                                       break;
-                               }
-                       }
-               }
-       }
-
-       return nextCell;
-};
-
-Row.prototype.findPrevEditableCell = function (index) {
-       var prevCell = false;
-
-       if (index > 0) {
-               for (var i = index - 1; i >= 0; i--) {
-                       var cell = this.cells[i],
-                           allowEdit = true;
-
-                       if (cell.column.modules.edit && Tabulator.prototype.helpers.elVisible(cell.getElement())) {
-                               if (typeof cell.column.modules.edit.check == "function") {
-                                       allowEdit = cell.column.modules.edit.check(cell.getComponent());
-                               }
-
-                               if (allowEdit) {
-                                       prevCell = cell;
-                                       break;
-                               }
-                       }
-               }
-       }
-
-       return prevCell;
-};
-
-Row.prototype.getCells = function () {
-       return this.cells;
-};
-
-Row.prototype.nextRow = function () {
-       var row = this.table.rowManager.nextDisplayRow(this, true);
-       return row || false;
-};
-
-Row.prototype.prevRow = function () {
-       var row = this.table.rowManager.prevDisplayRow(this, true);
-       return row || false;
-};
-
-Row.prototype.moveToRow = function (to, before) {
-       var toRow = this.table.rowManager.findRow(to);
-
-       if (toRow) {
-               this.table.rowManager.moveRowActual(this, toRow, !before);
-               this.table.rowManager.refreshActiveData("display", false, true);
-       } else {
-               console.warn("Move Error - No matching row found:", to);
-       }
-};
-
-///////////////////// Actions  /////////////////////
-
-Row.prototype.delete = function () {
-       var _this16 = this;
-
-       return new Promise(function (resolve, reject) {
-               var index, rows;
-
-               if (_this16.table.options.history && _this16.table.modExists("history")) {
-
-                       if (_this16.table.options.groupBy && _this16.table.modExists("groupRows")) {
-                               rows = _this16.getGroup().rows;
-                               index = rows.indexOf(_this16);
-
-                               if (index) {
-                                       index = rows[index - 1];
-                               }
-                       } else {
-                               index = _this16.table.rowManager.getRowIndex(_this16);
-
-                               if (index) {
-                                       index = _this16.table.rowManager.rows[index - 1];
-                               }
-                       }
-
-                       _this16.table.modules.history.action("rowDelete", _this16, { data: _this16.getData(), pos: !index, index: index });
-               }
-
-               _this16.deleteActual();
-
-               resolve();
-       });
-};
-
-Row.prototype.deleteActual = function (blockRedraw) {
-       var index = this.table.rowManager.getRowIndex(this);
-
-       //deselect row if it is selected
-       if (this.table.modExists("selectRow")) {
-               this.table.modules.selectRow._deselectRow(this, true);
-       }
-
-       //cancel edit if row is currently being edited
-       if (this.table.modExists("edit")) {
-               if (this.table.modules.edit.currentCell.row === this) {
-                       this.table.modules.edit.cancelEdit();
-               }
-       }
-
-       // if(this.table.options.dataTree && this.table.modExists("dataTree")){
-       //      this.table.modules.dataTree.collapseRow(this, true);
-       // }
-
-       //remove any reactive data watchers from row object
-       if (this.table.options.reactiveData && this.table.modExists("reactiveData", true)) {}
-       // this.table.modules.reactiveData.unwatchRow(this);
-
-
-       //remove from group
-       if (this.modules.group) {
-               this.modules.group.removeRow(this);
-       }
-
-       this.table.rowManager.deleteRow(this, blockRedraw);
-
-       this.deleteCells();
-
-       this.initialized = false;
-       this.heightInitialized = false;
-
-       //recalc column calculations if present
-       if (this.table.modExists("columnCalcs")) {
-               if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-                       this.table.modules.columnCalcs.recalcRowGroup(this);
-               } else {
-                       this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
-               }
-       }
-};
-
-Row.prototype.deleteCells = function () {
-       var cellCount = this.cells.length;
-
-       for (var i = 0; i < cellCount; i++) {
-               this.cells[0].delete();
-       }
-};
-
-Row.prototype.wipe = function () {
-       this.deleteCells();
-
-       while (this.element.firstChild) {
-               this.element.removeChild(this.element.firstChild);
-       }this.element = false;
-       this.modules = {};
-
-       if (this.element.parentNode) {
-               this.element.parentNode.removeChild(this.element);
-       }
-};
-
-Row.prototype.getGroup = function () {
-       return this.modules.group || false;
-};
-
-//////////////// Object Generation /////////////////
-Row.prototype.getComponent = function () {
-       return new RowComponent(this);
-};
-
-//public row object
-var CellComponent = function CellComponent(cell) {
-       this._cell = cell;
-};
-
-CellComponent.prototype.getValue = function () {
-       return this._cell.getValue();
-};
-
-CellComponent.prototype.getOldValue = function () {
-       return this._cell.getOldValue();
-};
-
-CellComponent.prototype.getElement = function () {
-       return this._cell.getElement();
-};
-
-CellComponent.prototype.getRow = function () {
-       return this._cell.row.getComponent();
-};
-
-CellComponent.prototype.getData = function () {
-       return this._cell.row.getData();
-};
-
-CellComponent.prototype.getField = function () {
-       return this._cell.column.getField();
-};
-
-CellComponent.prototype.getColumn = function () {
-       return this._cell.column.getComponent();
-};
-
-CellComponent.prototype.setValue = function (value, mutate) {
-       if (typeof mutate == "undefined") {
-               mutate = true;
-       }
-
-       this._cell.setValue(value, mutate);
-};
-
-CellComponent.prototype.restoreOldValue = function () {
-       this._cell.setValueActual(this._cell.getOldValue());
-};
-
-CellComponent.prototype.edit = function (force) {
-       return this._cell.edit(force);
-};
-
-CellComponent.prototype.cancelEdit = function () {
-       this._cell.cancelEdit();
-};
-
-CellComponent.prototype.nav = function () {
-       return this._cell.nav();
-};
-
-CellComponent.prototype.checkHeight = function () {
-       this._cell.checkHeight();
-};
-
-CellComponent.prototype.getTable = function () {
-       return this._cell.table;
-};
-
-CellComponent.prototype._getSelf = function () {
-       return this._cell;
-};
-
-var Cell = function Cell(column, row) {
-
-       this.table = column.table;
-       this.column = column;
-       this.row = row;
-       this.element = null;
-       this.value = null;
-       this.oldValue = null;
-       this.modules = {};
-
-       this.height = null;
-       this.width = null;
-       this.minWidth = null;
-
-       this.build();
-};
-
-//////////////// Setup Functions /////////////////
-
-//generate element
-Cell.prototype.build = function () {
-       this.generateElement();
-
-       this.setWidth();
-
-       this._configureCell();
-
-       this.setValueActual(this.column.getFieldValue(this.row.data));
-};
-
-Cell.prototype.generateElement = function () {
-       this.element = document.createElement('div');
-       this.element.className = "tabulator-cell";
-       this.element.setAttribute("role", "gridcell");
-       this.element = this.element;
-};
-
-Cell.prototype._configureCell = function () {
-       var self = this,
-           cellEvents = self.column.cellEvents,
-           element = self.element,
-           field = this.column.getField(),
-           vertAligns = {
-               top: "flex-start",
-               bottom: "flex-end",
-               middle: "center"
-       },
-           hozAligns = {
-               left: "flex-start",
-               right: "flex-end",
-               center: "center"
-       };
-
-       //set text alignment
-       element.style.textAlign = self.column.hozAlign;
-
-       if (self.column.vertAlign) {
-               element.style.display = "inline-flex";
-
-               element.style.alignItems = vertAligns[self.column.vertAlign] || "";
-
-               if (self.column.hozAlign) {
-                       element.style.justifyContent = hozAligns[self.column.hozAlign] || "";
-               }
-       }
-
-       if (field) {
-               element.setAttribute("tabulator-field", field);
-       }
-
-       //add class to cell if needed
-       if (self.column.definition.cssClass) {
-               var classNames = self.column.definition.cssClass.split(" ");
-               classNames.forEach(function (className) {
-                       element.classList.add(className);
-               });
-       }
-
-       //update tooltip on mouse enter
-       if (this.table.options.tooltipGenerationMode === "hover") {
-               element.addEventListener("mouseenter", function (e) {
-                       self._generateTooltip();
-               });
-       }
-
-       self._bindClickEvents(cellEvents);
-
-       self._bindTouchEvents(cellEvents);
-
-       self._bindMouseEvents(cellEvents);
-
-       if (self.column.modules.edit) {
-               self.table.modules.edit.bindEditor(self);
-       }
-
-       if (self.column.definition.rowHandle && self.table.options.movableRows !== false && self.table.modExists("moveRow")) {
-               self.table.modules.moveRow.initializeCell(self);
-       }
-
-       //hide cell if not visible
-       if (!self.column.visible) {
-               self.hide();
-       }
-};
-
-Cell.prototype._bindClickEvents = function (cellEvents) {
-       var self = this,
-           element = self.element;
-
-       //set event bindings
-       if (cellEvents.cellClick || self.table.options.cellClick) {
-               element.addEventListener("click", function (e) {
-                       var component = self.getComponent();
-
-                       if (cellEvents.cellClick) {
-                               cellEvents.cellClick.call(self.table, e, component);
-                       }
-
-                       if (self.table.options.cellClick) {
-                               self.table.options.cellClick.call(self.table, e, component);
-                       }
-               });
-       }
-
-       if (cellEvents.cellDblClick || this.table.options.cellDblClick) {
-               element.addEventListener("dblclick", function (e) {
-                       var component = self.getComponent();
-
-                       if (cellEvents.cellDblClick) {
-                               cellEvents.cellDblClick.call(self.table, e, component);
-                       }
-
-                       if (self.table.options.cellDblClick) {
-                               self.table.options.cellDblClick.call(self.table, e, component);
-                       }
-               });
-       } else {
-               element.addEventListener("dblclick", function (e) {
-
-                       if (self.table.modExists("edit")) {
-                               if (self.table.modules.edit.currentCell === self) {
-                                       return; //prevent instant selection of editor content
-                               }
-                       }
-
-                       e.preventDefault();
-
-                       try {
-                               if (document.selection) {
-                                       // IE
-                                       var range = document.body.createTextRange();
-                                       range.moveToElementText(self.element);
-                                       range.select();
-                               } else if (window.getSelection) {
-                                       var range = document.createRange();
-                                       range.selectNode(self.element);
-                                       window.getSelection().removeAllRanges();
-                                       window.getSelection().addRange(range);
-                               }
-                       } catch (e) {}
-               });
-       }
-
-       if (cellEvents.cellContext || this.table.options.cellContext) {
-               element.addEventListener("contextmenu", function (e) {
-                       var component = self.getComponent();
-
-                       if (cellEvents.cellContext) {
-                               cellEvents.cellContext.call(self.table, e, component);
-                       }
-
-                       if (self.table.options.cellContext) {
-                               self.table.options.cellContext.call(self.table, e, component);
-                       }
-               });
-       }
-};
-
-Cell.prototype._bindMouseEvents = function (cellEvents) {
-       var self = this,
-           element = self.element;
-
-       if (cellEvents.cellMouseEnter || self.table.options.cellMouseEnter) {
-               element.addEventListener("mouseenter", function (e) {
-                       var component = self.getComponent();
-
-                       if (cellEvents.cellMouseEnter) {
-                               cellEvents.cellMouseEnter.call(self.table, e, component);
-                       }
-
-                       if (self.table.options.cellMouseEnter) {
-                               self.table.options.cellMouseEnter.call(self.table, e, component);
-                       }
-               });
-       }
-
-       if (cellEvents.cellMouseLeave || self.table.options.cellMouseLeave) {
-               element.addEventListener("mouseleave", function (e) {
-                       var component = self.getComponent();
-
-                       if (cellEvents.cellMouseLeave) {
-                               cellEvents.cellMouseLeave.call(self.table, e, component);
-                       }
-
-                       if (self.table.options.cellMouseLeave) {
-                               self.table.options.cellMouseLeave.call(self.table, e, component);
-                       }
-               });
-       }
-
-       if (cellEvents.cellMouseOver || self.table.options.cellMouseOver) {
-               element.addEventListener("mouseover", function (e) {
-                       var component = self.getComponent();
-
-                       if (cellEvents.cellMouseOver) {
-                               cellEvents.cellMouseOver.call(self.table, e, component);
-                       }
-
-                       if (self.table.options.cellMouseOver) {
-                               self.table.options.cellMouseOver.call(self.table, e, component);
-                       }
-               });
-       }
-
-       if (cellEvents.cellMouseOut || self.table.options.cellMouseOut) {
-               element.addEventListener("mouseout", function (e) {
-                       var component = self.getComponent();
-
-                       if (cellEvents.cellMouseOut) {
-                               cellEvents.cellMouseOut.call(self.table, e, component);
-                       }
-
-                       if (self.table.options.cellMouseOut) {
-                               self.table.options.cellMouseOut.call(self.table, e, component);
-                       }
-               });
-       }
-
-       if (cellEvents.cellMouseMove || self.table.options.cellMouseMove) {
-               element.addEventListener("mousemove", function (e) {
-                       var component = self.getComponent();
-
-                       if (cellEvents.cellMouseMove) {
-                               cellEvents.cellMouseMove.call(self.table, e, component);
-                       }
-
-                       if (self.table.options.cellMouseMove) {
-                               self.table.options.cellMouseMove.call(self.table, e, component);
-                       }
-               });
-       }
-};
-
-Cell.prototype._bindTouchEvents = function (cellEvents) {
-       var self = this,
-           element = self.element,
-           dblTap,
-           tapHold,
-           tap;
-
-       if (cellEvents.cellTap || this.table.options.cellTap) {
-               tap = false;
-
-               element.addEventListener("touchstart", function (e) {
-                       tap = true;
-               }, { passive: true });
-
-               element.addEventListener("touchend", function (e) {
-                       if (tap) {
-                               var component = self.getComponent();
-
-                               if (cellEvents.cellTap) {
-                                       cellEvents.cellTap.call(self.table, e, component);
-                               }
-
-                               if (self.table.options.cellTap) {
-                                       self.table.options.cellTap.call(self.table, e, component);
-                               }
-                       }
-
-                       tap = false;
-               });
-       }
-
-       if (cellEvents.cellDblTap || this.table.options.cellDblTap) {
-               dblTap = null;
-
-               element.addEventListener("touchend", function (e) {
-
-                       if (dblTap) {
-                               clearTimeout(dblTap);
-                               dblTap = null;
-
-                               var component = self.getComponent();
-
-                               if (cellEvents.cellDblTap) {
-                                       cellEvents.cellDblTap.call(self.table, e, component);
-                               }
-
-                               if (self.table.options.cellDblTap) {
-                                       self.table.options.cellDblTap.call(self.table, e, component);
-                               }
-                       } else {
-
-                               dblTap = setTimeout(function () {
-                                       clearTimeout(dblTap);
-                                       dblTap = null;
-                               }, 300);
-                       }
-               });
-       }
-
-       if (cellEvents.cellTapHold || this.table.options.cellTapHold) {
-               tapHold = null;
-
-               element.addEventListener("touchstart", function (e) {
-                       clearTimeout(tapHold);
-
-                       tapHold = setTimeout(function () {
-                               clearTimeout(tapHold);
-                               tapHold = null;
-                               tap = false;
-                               var component = self.getComponent();
-
-                               if (cellEvents.cellTapHold) {
-                                       cellEvents.cellTapHold.call(self.table, e, component);
-                               }
-
-                               if (self.table.options.cellTapHold) {
-                                       self.table.options.cellTapHold.call(self.table, e, component);
-                               }
-                       }, 1000);
-               }, { passive: true });
-
-               element.addEventListener("touchend", function (e) {
-                       clearTimeout(tapHold);
-                       tapHold = null;
-               });
-       }
-};
-
-//generate cell contents
-Cell.prototype._generateContents = function () {
-       var val;
-
-       if (this.table.modExists("format")) {
-               val = this.table.modules.format.formatValue(this);
-       } else {
-               val = this.element.innerHTML = this.value;
-       }
-
-       switch (typeof val === 'undefined' ? 'undefined' : _typeof(val)) {
-               case "object":
-                       if (val instanceof Node) {
-
-                               //clear previous cell contents
-                               while (this.element.firstChild) {
-                                       this.element.removeChild(this.element.firstChild);
-                               }this.element.appendChild(val);
-                       } else {
-                               this.element.innerHTML = "";
-
-                               if (val != null) {
-                                       console.warn("Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:", val);
-                               }
-                       }
-                       break;
-               case "undefined":
-               case "null":
-                       this.element.innerHTML = "";
-                       break;
-               default:
-                       this.element.innerHTML = val;
-       }
-};
-
-Cell.prototype.cellRendered = function () {
-       if (this.table.modExists("format") && this.table.modules.format.cellRendered) {
-               this.table.modules.format.cellRendered(this);
-       }
-};
-
-//generate tooltip text
-Cell.prototype._generateTooltip = function () {
-       var tooltip = this.column.tooltip;
-
-       if (tooltip) {
-               if (tooltip === true) {
-                       tooltip = this.value;
-               } else if (typeof tooltip == "function") {
-                       tooltip = tooltip(this.getComponent());
-
-                       if (tooltip === false) {
-                               tooltip = "";
-                       }
-               }
-
-               if (typeof tooltip === "undefined") {
-                       tooltip = "";
-               }
-
-               this.element.setAttribute("title", tooltip);
-       } else {
-               this.element.setAttribute("title", "");
-       }
-};
-
-//////////////////// Getters ////////////////////
-Cell.prototype.getElement = function () {
-       return this.element;
-};
-
-Cell.prototype.getValue = function () {
-       return this.value;
-};
-
-Cell.prototype.getOldValue = function () {
-       return this.oldValue;
-};
-
-//////////////////// Actions ////////////////////
-
-Cell.prototype.setValue = function (value, mutate) {
-
-       var changed = this.setValueProcessData(value, mutate),
-           component;
-
-       if (changed) {
-               if (this.table.options.history && this.table.modExists("history")) {
-                       this.table.modules.history.action("cellEdit", this, { oldValue: this.oldValue, newValue: this.value });
-               }
-
-               component = this.getComponent();
-
-               if (this.column.cellEvents.cellEdited) {
-                       this.column.cellEvents.cellEdited.call(this.table, component);
-               }
-
-               this.cellRendered();
-
-               this.table.options.cellEdited.call(this.table, component);
-
-               this.table.options.dataEdited.call(this.table, this.table.rowManager.getData());
-       }
-};
-
-Cell.prototype.setValueProcessData = function (value, mutate) {
-       var changed = false;
-
-       if (this.value != value) {
-
-               changed = true;
-
-               if (mutate) {
-                       if (this.column.modules.mutate) {
-                               value = this.table.modules.mutator.transformCell(this, value);
-                       }
-               }
-       }
-
-       this.setValueActual(value);
-
-       if (changed && this.table.modExists("columnCalcs")) {
-               if (this.column.definition.topCalc || this.column.definition.bottomCalc) {
-                       if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-
-                               if (this.table.options.columnCalcs == "table" || this.table.options.columnCalcs == "both") {
-                                       this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
-                               }
-
-                               if (this.table.options.columnCalcs != "table") {
-                                       this.table.modules.columnCalcs.recalcRowGroup(this.row);
-                               }
-                       } else {
-                               this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
-                       }
-               }
-       }
-
-       return changed;
-};
-
-Cell.prototype.setValueActual = function (value) {
-       this.oldValue = this.value;
-
-       this.value = value;
-
-       if (this.table.options.reactiveData && this.table.modExists("reactiveData")) {
-               this.table.modules.reactiveData.block();
-       }
-
-       this.column.setFieldValue(this.row.data, value);
-
-       if (this.table.options.reactiveData && this.table.modExists("reactiveData")) {
-               this.table.modules.reactiveData.unblock();
-       }
-
-       this._generateContents();
-       this._generateTooltip();
-
-       //set resizable handles
-       if (this.table.options.resizableColumns && this.table.modExists("resizeColumns")) {
-               this.table.modules.resizeColumns.initializeColumn("cell", this.column, this.element);
-       }
-
-       //set column menu
-       if (this.column.definition.contextMenu && this.table.modExists("menu")) {
-               this.table.modules.menu.initializeCell(this);
-       }
-
-       //handle frozen cells
-       if (this.table.modExists("frozenColumns")) {
-               this.table.modules.frozenColumns.layoutElement(this.element, this.column);
-       }
-};
-
-Cell.prototype.setWidth = function () {
-       this.width = this.column.width;
-       this.element.style.width = this.column.widthStyled;
-};
-
-Cell.prototype.clearWidth = function () {
-       this.width = "";
-       this.element.style.width = "";
-};
-
-Cell.prototype.getWidth = function () {
-       return this.width || this.element.offsetWidth;
-};
-
-Cell.prototype.setMinWidth = function () {
-       this.minWidth = this.column.minWidth;
-       this.element.style.minWidth = this.column.minWidthStyled;
-};
-
-Cell.prototype.checkHeight = function () {
-       // var height = this.element.css("height");
-       this.row.reinitializeHeight();
-};
-
-Cell.prototype.clearHeight = function () {
-       this.element.style.height = "";
-       this.height = null;
-};
-
-Cell.prototype.setHeight = function () {
-       this.height = this.row.height;
-       this.element.style.height = this.row.heightStyled;
-};
-
-Cell.prototype.getHeight = function () {
-       return this.height || this.element.offsetHeight;
-};
-
-Cell.prototype.show = function () {
-       this.element.style.display = "";
-};
-
-Cell.prototype.hide = function () {
-       this.element.style.display = "none";
-};
-
-Cell.prototype.edit = function (force) {
-       if (this.table.modExists("edit", true)) {
-               return this.table.modules.edit.editCell(this, force);
-       }
-};
-
-Cell.prototype.cancelEdit = function () {
-       if (this.table.modExists("edit", true)) {
-               var editing = this.table.modules.edit.getCurrentCell();
-
-               if (editing && editing._getSelf() === this) {
-                       this.table.modules.edit.cancelEdit();
-               } else {
-                       console.warn("Cancel Editor Error - This cell is not currently being edited ");
-               }
-       }
-};
-
-Cell.prototype.delete = function () {
-       if (!this.table.rowManager.redrawBlock) {
-               this.element.parentNode.removeChild(this.element);
-       }
-       this.element = false;
-       this.column.deleteCell(this);
-       this.row.deleteCell(this);
-       this.calcs = {};
-};
-
-//////////////// Navigation /////////////////
-
-Cell.prototype.nav = function () {
-
-       var self = this,
-           nextCell = false,
-           index = this.row.getCellIndex(this);
-
-       return {
-               next: function next() {
-                       var nextCell = this.right(),
-                           nextRow;
-
-                       if (!nextCell) {
-                               nextRow = self.table.rowManager.nextDisplayRow(self.row, true);
-
-                               if (nextRow) {
-                                       nextCell = nextRow.findNextEditableCell(-1);
-
-                                       if (nextCell) {
-                                               nextCell.edit();
-                                               return true;
-                                       }
-                               }
-                       } else {
-                               return true;
-                       }
-
-                       return false;
-               },
-               prev: function prev() {
-                       var nextCell = this.left(),
-                           prevRow;
-
-                       if (!nextCell) {
-                               prevRow = self.table.rowManager.prevDisplayRow(self.row, true);
-
-                               if (prevRow) {
-                                       nextCell = prevRow.findPrevEditableCell(prevRow.cells.length);
-
-                                       if (nextCell) {
-                                               nextCell.edit();
-                                               return true;
-                                       }
-                               }
-                       } else {
-                               return true;
-                       }
-
-                       return false;
-               },
-               left: function left() {
-
-                       nextCell = self.row.findPrevEditableCell(index);
-
-                       if (nextCell) {
-                               nextCell.edit();
-                               return true;
-                       } else {
-                               return false;
-                       }
-               },
-               right: function right() {
-                       nextCell = self.row.findNextEditableCell(index);
-
-                       if (nextCell) {
-                               nextCell.edit();
-                               return true;
-                       } else {
-                               return false;
-                       }
-               },
-               up: function up() {
-                       var nextRow = self.table.rowManager.prevDisplayRow(self.row, true);
-
-                       if (nextRow) {
-                               nextRow.cells[index].edit();
-                       }
-               },
-               down: function down() {
-                       var nextRow = self.table.rowManager.nextDisplayRow(self.row, true);
-
-                       if (nextRow) {
-                               nextRow.cells[index].edit();
-                       }
-               }
-
-       };
-};
-
-Cell.prototype.getIndex = function () {
-       this.row.getCellIndex(this);
-};
-
-//////////////// Object Generation /////////////////
-Cell.prototype.getComponent = function () {
-       return new CellComponent(this);
-};
-var FooterManager = function FooterManager(table) {
-       this.table = table;
-       this.active = false;
-       this.element = this.createElement(); //containing element
-       this.external = false;
-       this.links = [];
-
-       this._initialize();
-};
-
-FooterManager.prototype.createElement = function () {
-       var el = document.createElement("div");
-
-       el.classList.add("tabulator-footer");
-
-       return el;
-};
-
-FooterManager.prototype._initialize = function (element) {
-       if (this.table.options.footerElement) {
-
-               switch (_typeof(this.table.options.footerElement)) {
-                       case "string":
-
-                               if (this.table.options.footerElement[0] === "<") {
-                                       this.element.innerHTML = this.table.options.footerElement;
-                               } else {
-                                       this.external = true;
-                                       this.element = document.querySelector(this.table.options.footerElement);
-                               }
-                               break;
-                       default:
-                               this.element = this.table.options.footerElement;
-                               break;
-               }
-       }
-};
-
-FooterManager.prototype.getElement = function () {
-       return this.element;
-};
-
-FooterManager.prototype.append = function (element, parent) {
-       this.activate(parent);
-
-       this.element.appendChild(element);
-       this.table.rowManager.adjustTableSize();
-};
-
-FooterManager.prototype.prepend = function (element, parent) {
-       this.activate(parent);
-
-       this.element.insertBefore(element, this.element.firstChild);
-       this.table.rowManager.adjustTableSize();
-};
-
-FooterManager.prototype.remove = function (element) {
-       element.parentNode.removeChild(element);
-       this.deactivate();
-};
-
-FooterManager.prototype.deactivate = function (force) {
-       if (!this.element.firstChild || force) {
-               if (!this.external) {
-                       this.element.parentNode.removeChild(this.element);
-               }
-               this.active = false;
-       }
-
-       // this.table.rowManager.adjustTableSize();
-};
-
-FooterManager.prototype.activate = function (parent) {
-       if (!this.active) {
-               this.active = true;
-               if (!this.external) {
-                       this.table.element.appendChild(this.getElement());
-                       this.table.element.style.display = '';
-               }
-       }
-
-       if (parent) {
-               this.links.push(parent);
-       }
-};
-
-FooterManager.prototype.redraw = function () {
-       this.links.forEach(function (link) {
-               link.footerRedraw();
-       });
-};
-
-var Tabulator = function Tabulator(element, options) {
-
-       this.options = {};
-
-       this.columnManager = null; // hold Column Manager
-       this.rowManager = null; //hold Row Manager
-       this.footerManager = null; //holder Footer Manager
-       this.browser = ""; //hold current browser type
-       this.browserSlow = false; //handle reduced functionality for slower browsers
-       this.browserMobile = false; //check if running on moble, prevent resize cancelling edit on keyboard appearence
-
-       this.modules = {}; //hold all modules bound to this table
-
-       this.initializeElement(element);
-       this.initializeOptions(options || {});
-       this._create();
-
-       Tabulator.prototype.comms.register(this); //register table for inderdevice communication
-};
-
-//default setup options
-Tabulator.prototype.defaultOptions = {
-
-       height: false, //height of tabulator
-       minHeight: false, //minimum height of tabulator
-       maxHeight: false, //maximum height of tabulator
-
-       layout: "fitData", ///layout type "fitColumns" | "fitData"
-       layoutColumnsOnNewData: false, //update column widths on setData
-
-       columnMinWidth: 40, //minimum global width for a column
-       columnHeaderVertAlign: "top", //vertical alignment of column headers
-       columnVertAlign: false, // DEPRECATED - Left to allow warning
-
-       resizableColumns: true, //resizable columns
-       resizableRows: false, //resizable rows
-       autoResize: true, //auto resize table
-
-       columns: [], //store for colum header info
-
-       cellHozAlign: "", //horizontal align columns
-       cellVertAlign: "", //certical align columns
-
-
-       data: [], //default starting data
-
-       autoColumns: false, //build columns from data row structure
-
-       reactiveData: false, //enable data reactivity
-
-       nestedFieldSeparator: ".", //seperatpr for nested data
-
-       tooltips: false, //Tool tip value
-       tooltipsHeader: false, //Tool tip for headers
-       tooltipGenerationMode: "load", //when to generate tooltips
-
-       initialSort: false, //initial sorting criteria
-       initialFilter: false, //initial filtering criteria
-       initialHeaderFilter: false, //initial header filtering criteria
-
-       columnHeaderSortMulti: true, //multiple or single column sorting
-
-       sortOrderReverse: false, //reverse internal sort ordering
-
-       headerSort: true, //set default global header sort
-       headerSortTristate: false, //set default tristate header sorting
-
-       footerElement: false, //hold footer element
-
-       index: "id", //filed for row index
-
-       keybindings: [], //array for keybindings
-
-       tabEndNewRow: false, //create new row when tab to end of table
-
-       invalidOptionWarnings: true, //allow toggling of invalid option warnings
-
-       clipboard: false, //enable clipboard
-       clipboardCopyStyled: true, //formatted table data
-       clipboardCopyConfig: false, //clipboard config
-       clipboardCopyFormatter: false, //DEPRICATED - REMOVE in 5.0
-       clipboardCopyRowRange: "active", //restrict clipboard to visible rows only
-       clipboardPasteParser: "table", //convert pasted clipboard data to rows
-       clipboardPasteAction: "insert", //how to insert pasted data into the table
-
-       clipboardCopied: function clipboardCopied() {}, //data has been copied to the clipboard
-       clipboardPasted: function clipboardPasted() {}, //data has been pasted into the table
-       clipboardPasteError: function clipboardPasteError() {}, //data has not successfully been pasted into the table
-
-       downloadDataFormatter: false, //function to manipulate table data before it is downloaded
-       downloadReady: function downloadReady(data, blob) {
-               return blob;
-       }, //function to manipulate download data
-       downloadComplete: false, //function to manipulate download data
-       downloadConfig: false, //download config
-
-       dataTree: false, //enable data tree
-       dataTreeElementColumn: false,
-       dataTreeBranchElement: true, //show data tree branch element
-       dataTreeChildIndent: 9, //data tree child indent in px
-       dataTreeChildField: "_children", //data tre column field to look for child rows
-       dataTreeCollapseElement: false, //data tree row collapse element
-       dataTreeExpandElement: false, //data tree row expand element
-       dataTreeStartExpanded: false,
-       dataTreeRowExpanded: function dataTreeRowExpanded() {}, //row has been expanded
-       dataTreeRowCollapsed: function dataTreeRowCollapsed() {}, //row has been collapsed
-       dataTreeChildColumnCalcs: false, //include visible data tree rows in column calculations
-       dataTreeSelectPropagate: false, //seleccting a parent row selects its children
-
-       printAsHtml: false, //enable print as html
-       printFormatter: false, //printing page formatter
-       printHeader: false, //page header contents
-       printFooter: false, //page footer contents
-       printCopyStyle: true, //DEPRICATED - REMOVE in 5.0
-       printStyled: true, //enable print as html styling
-       printVisibleRows: true, //DEPRICATED - REMOVE in 5.0
-       printRowRange: "visible", //restrict print to visible rows only
-       printConfig: {}, //print config options
-
-       addRowPos: "bottom", //position to insert blank rows, top|bottom
-
-       selectable: "highlight", //highlight rows on hover
-       selectableRangeMode: "drag", //highlight rows on hover
-       selectableRollingSelection: true, //roll selection once maximum number of selectable rows is reached
-       selectablePersistence: true, // maintain selection when table view is updated
-       selectableCheck: function selectableCheck(data, row) {
-               return true;
-       }, //check wheather row is selectable
-
-       headerFilterLiveFilterDelay: 300, //delay before updating column after user types in header filter
-       headerFilterPlaceholder: false, //placeholder text to display in header filters
-
-       headerVisible: true, //hide header
-
-       history: false, //enable edit history
-
-       locale: false, //current system language
-       langs: {},
-
-       virtualDom: true, //enable DOM virtualization
-       virtualDomBuffer: 0, // set virtual DOM buffer size
-
-       persistentLayout: false, //DEPRICATED - REMOVE in 5.0
-       persistentSort: false, //DEPRICATED - REMOVE in 5.0
-       persistentFilter: false, //DEPRICATED - REMOVE in 5.0
-       persistenceID: "", //key for persistent storage
-       persistenceMode: true, //mode for storing persistence information
-       persistenceReaderFunc: false, //function for handling persistence data reading
-       persistenceWriterFunc: false, //function for handling persistence data writing
-
-       persistence: false,
-
-       responsiveLayout: false, //responsive layout flags
-       responsiveLayoutCollapseStartOpen: true, //start showing collapsed data
-       responsiveLayoutCollapseUseFormatters: true, //responsive layout collapse formatter
-       responsiveLayoutCollapseFormatter: false, //responsive layout collapse formatter
-
-       pagination: false, //set pagination type
-       paginationSize: false, //set number of rows to a page
-       paginationInitialPage: 1, //initail page to show on load
-       paginationButtonCount: 5, // set count of page button
-       paginationSizeSelector: false, //add pagination size selector element
-       paginationElement: false, //element to hold pagination numbers
-       paginationDataSent: {}, //pagination data sent to the server
-       paginationDataReceived: {}, //pagination data received from the server
-       paginationAddRow: "page", //add rows on table or page
-
-       ajaxURL: false, //url for ajax loading
-       ajaxURLGenerator: false,
-       ajaxParams: {}, //params for ajax loading
-       ajaxConfig: "get", //ajax request type
-       ajaxContentType: "form", //ajax request type
-       ajaxRequestFunc: false, //promise function
-       ajaxLoader: true, //show loader
-       ajaxLoaderLoading: false, //loader element
-       ajaxLoaderError: false, //loader element
-       ajaxFiltering: false,
-       ajaxSorting: false,
-       ajaxProgressiveLoad: false, //progressive loading
-       ajaxProgressiveLoadDelay: 0, //delay between requests
-       ajaxProgressiveLoadScrollMargin: 0, //margin before scroll begins
-
-       groupBy: false, //enable table grouping and set field to group by
-       groupStartOpen: true, //starting state of group
-       groupValues: false,
-
-       groupHeader: false, //header generation function
-
-       htmlOutputConfig: false, //html outypu config
-
-       movableColumns: false, //enable movable columns
-
-       movableRows: false, //enable movable rows
-       movableRowsConnectedTables: false, //tables for movable rows to be connected to
-       movableRowsSender: false,
-       movableRowsReceiver: "insert",
-       movableRowsSendingStart: function movableRowsSendingStart() {},
-       movableRowsSent: function movableRowsSent() {},
-       movableRowsSentFailed: function movableRowsSentFailed() {},
-       movableRowsSendingStop: function movableRowsSendingStop() {},
-       movableRowsReceivingStart: function movableRowsReceivingStart() {},
-       movableRowsReceived: function movableRowsReceived() {},
-       movableRowsReceivedFailed: function movableRowsReceivedFailed() {},
-       movableRowsReceivingStop: function movableRowsReceivingStop() {},
-
-       scrollToRowPosition: "top",
-       scrollToRowIfVisible: true,
-
-       scrollToColumnPosition: "left",
-       scrollToColumnIfVisible: true,
-
-       rowFormatter: false,
-       rowFormatterPrint: null,
-       rowFormatterClipboard: null,
-       rowFormatterHtmlOutput: null,
-
-       placeholder: false,
-
-       //table building callbacks
-       tableBuilding: function tableBuilding() {},
-       tableBuilt: function tableBuilt() {},
-
-       //render callbacks
-       renderStarted: function renderStarted() {},
-       renderComplete: function renderComplete() {},
-
-       //row callbacks
-       rowClick: false,
-       rowDblClick: false,
-       rowContext: false,
-       rowTap: false,
-       rowDblTap: false,
-       rowTapHold: false,
-       rowMouseEnter: false,
-       rowMouseLeave: false,
-       rowMouseOver: false,
-       rowMouseOut: false,
-       rowMouseMove: false,
-       rowContextMenu: false,
-       rowAdded: function rowAdded() {},
-       rowDeleted: function rowDeleted() {},
-       rowMoved: function rowMoved() {},
-       rowUpdated: function rowUpdated() {},
-       rowSelectionChanged: function rowSelectionChanged() {},
-       rowSelected: function rowSelected() {},
-       rowDeselected: function rowDeselected() {},
-       rowResized: function rowResized() {},
-
-       //cell callbacks
-       //row callbacks
-       cellClick: false,
-       cellDblClick: false,
-       cellContext: false,
-       cellTap: false,
-       cellDblTap: false,
-       cellTapHold: false,
-       cellMouseEnter: false,
-       cellMouseLeave: false,
-       cellMouseOver: false,
-       cellMouseOut: false,
-       cellMouseMove: false,
-       cellEditing: function cellEditing() {},
-       cellEdited: function cellEdited() {},
-       cellEditCancelled: function cellEditCancelled() {},
-
-       //column callbacks
-       columnMoved: false,
-       columnResized: function columnResized() {},
-       columnTitleChanged: function columnTitleChanged() {},
-       columnVisibilityChanged: function columnVisibilityChanged() {},
-
-       //HTML iport callbacks
-       htmlImporting: function htmlImporting() {},
-       htmlImported: function htmlImported() {},
-
-       //data callbacks
-       dataLoading: function dataLoading() {},
-       dataLoaded: function dataLoaded() {},
-       dataEdited: function dataEdited() {},
-
-       //ajax callbacks
-       ajaxRequesting: function ajaxRequesting() {},
-       ajaxResponse: false,
-       ajaxError: function ajaxError() {},
-
-       //filtering callbacks
-       dataFiltering: false,
-       dataFiltered: false,
-
-       //sorting callbacks
-       dataSorting: function dataSorting() {},
-       dataSorted: function dataSorted() {},
-
-       //grouping callbacks
-       groupToggleElement: "arrow",
-       groupClosedShowCalcs: false,
-       dataGrouping: function dataGrouping() {},
-       dataGrouped: false,
-       groupVisibilityChanged: function groupVisibilityChanged() {},
-       groupClick: false,
-       groupDblClick: false,
-       groupContext: false,
-       groupTap: false,
-       groupDblTap: false,
-       groupTapHold: false,
-
-       columnCalcs: true,
-
-       //pagination callbacks
-       pageLoaded: function pageLoaded() {},
-
-       //localization callbacks
-       localized: function localized() {},
-
-       //validation has failed
-       validationFailed: function validationFailed() {},
-
-       //history callbacks
-       historyUndo: function historyUndo() {},
-       historyRedo: function historyRedo() {},
-
-       //scroll callbacks
-       scrollHorizontal: function scrollHorizontal() {},
-       scrollVertical: function scrollVertical() {}
-
-};
-
-Tabulator.prototype.initializeOptions = function (options) {
-
-       //warn user if option is not available
-       if (options.invalidOptionWarnings !== false) {
-               for (var key in options) {
-                       if (typeof this.defaultOptions[key] === "undefined") {
-                               console.warn("Invalid table constructor option:", key);
-                       }
-               }
-       }
-
-       //assign options to table
-       for (var key in this.defaultOptions) {
-               if (key in options) {
-                       this.options[key] = options[key];
-               } else {
-                       if (Array.isArray(this.defaultOptions[key])) {
-                               this.options[key] = [];
-                       } else if (_typeof(this.defaultOptions[key]) === "object" && this.defaultOptions[key] !== null) {
-                               this.options[key] = {};
-                       } else {
-                               this.options[key] = this.defaultOptions[key];
-                       }
-               }
-       }
-};
-
-Tabulator.prototype.initializeElement = function (element) {
-
-       if (typeof HTMLElement !== "undefined" && element instanceof HTMLElement) {
-               this.element = element;
-               return true;
-       } else if (typeof element === "string") {
-               this.element = document.querySelector(element);
-
-               if (this.element) {
-                       return true;
-               } else {
-                       console.error("Tabulator Creation Error - no element found matching selector: ", element);
-                       return false;
-               }
-       } else {
-               console.error("Tabulator Creation Error - Invalid element provided:", element);
-               return false;
-       }
-};
-
-//convert depricated functionality to new functions
-Tabulator.prototype._mapDepricatedFunctionality = function () {
-
-       //map depricated persistance setup options
-       if (this.options.persistentLayout || this.options.persistentSort || this.options.persistentFilter) {
-               if (!this.options.persistence) {
-                       this.options.persistence = {};
-               }
-       }
-
-       if (typeof this.options.clipboardCopyHeader !== "undefined") {
-               this.options.columnHeaders = this.options.clipboardCopyHeader;
-               console.warn("DEPRECATION WARNING - clipboardCopyHeader option has been deprecated, please use the columnHeaders property on the clipboardCopyConfig option");
-       }
-
-       if (this.options.printVisibleRows !== true) {
-               console.warn("printVisibleRows option is deprecated, you should now use the printRowRange option");
-
-               this.options.persistence.printRowRange = "active";
-       }
-
-       if (this.options.printCopyStyle !== true) {
-               console.warn("printCopyStyle option is deprecated, you should now use the printStyled option");
-
-               this.options.persistence.printStyled = this.options.printCopyStyle;
-       }
-
-       if (this.options.persistentLayout) {
-               console.warn("persistentLayout option is deprecated, you should now use the persistence option");
-
-               if (this.options.persistence !== true && typeof this.options.persistence.columns === "undefined") {
-                       this.options.persistence.columns = true;
-               }
-       }
-
-       if (this.options.persistentSort) {
-               console.warn("persistentSort option is deprecated, you should now use the persistence option");
-
-               if (this.options.persistence !== true && typeof this.options.persistence.sort === "undefined") {
-                       this.options.persistence.sort = true;
-               }
-       }
-
-       if (this.options.persistentFilter) {
-               console.warn("persistentFilter option is deprecated, you should now use the persistence option");
-
-               if (this.options.persistence !== true && typeof this.options.persistence.filter === "undefined") {
-                       this.options.persistence.filter = true;
-               }
-       }
-
-       if (this.options.columnVertAlign) {
-               console.warn("columnVertAlign option is deprecated, you should now use the columnHeaderVertAlign option");
-
-               this.options.columnHeaderVertAlign = this.options.columnVertAlign;
-       }
-};
-
-Tabulator.prototype._clearSelection = function () {
-
-       this.element.classList.add("tabulator-block-select");
-
-       if (window.getSelection) {
-               if (window.getSelection().empty) {
-                       // Chrome
-                       window.getSelection().empty();
-               } else if (window.getSelection().removeAllRanges) {
-                       // Firefox
-                       window.getSelection().removeAllRanges();
-               }
-       } else if (document.selection) {
-               // IE?
-               document.selection.empty();
-       }
-
-       this.element.classList.remove("tabulator-block-select");
-};
-
-//concreate table
-Tabulator.prototype._create = function () {
-       this._clearObjectPointers();
-
-       this._mapDepricatedFunctionality();
-
-       this.bindModules();
-
-       if (this.element.tagName === "TABLE") {
-               if (this.modExists("htmlTableImport", true)) {
-                       this.modules.htmlTableImport.parseTable();
-               }
-       }
-
-       this.columnManager = new ColumnManager(this);
-       this.rowManager = new RowManager(this);
-       this.footerManager = new FooterManager(this);
-
-       this.columnManager.setRowManager(this.rowManager);
-       this.rowManager.setColumnManager(this.columnManager);
-
-       this._buildElement();
-
-       this._loadInitialData();
-};
-
-//clear pointers to objects in default config object
-Tabulator.prototype._clearObjectPointers = function () {
-       this.options.columns = this.options.columns.slice(0);
-
-       if (!this.options.reactiveData) {
-               this.options.data = this.options.data.slice(0);
-       }
-};
-
-//build tabulator element
-Tabulator.prototype._buildElement = function () {
-       var _this17 = this;
-
-       var element = this.element,
-           mod = this.modules,
-           options = this.options;
-
-       options.tableBuilding.call(this);
-
-       element.classList.add("tabulator");
-       element.setAttribute("role", "grid");
-
-       //empty element
-       while (element.firstChild) {
-               element.removeChild(element.firstChild);
-       } //set table height
-       if (options.height) {
-               options.height = isNaN(options.height) ? options.height : options.height + "px";
-               element.style.height = options.height;
-       }
-
-       //set table min height
-       if (options.minHeight !== false) {
-               options.minHeight = isNaN(options.minHeight) ? options.minHeight : options.minHeight + "px";
-               element.style.minHeight = options.minHeight;
-       }
-
-       //set table maxHeight
-       if (options.maxHeight !== false) {
-               options.maxHeight = isNaN(options.maxHeight) ? options.maxHeight : options.maxHeight + "px";
-               element.style.maxHeight = options.maxHeight;
-       }
-
-       this.columnManager.initialize();
-       this.rowManager.initialize();
-
-       this._detectBrowser();
-
-       if (this.modExists("layout", true)) {
-               mod.layout.initialize(options.layout);
-       }
-
-       //set localization
-       if (options.headerFilterPlaceholder !== false) {
-               mod.localize.setHeaderFilterPlaceholder(options.headerFilterPlaceholder);
-       }
-
-       for (var locale in options.langs) {
-               mod.localize.installLang(locale, options.langs[locale]);
-       }
-
-       mod.localize.setLocale(options.locale);
-
-       //configure placeholder element
-       if (typeof options.placeholder == "string") {
-
-               var el = document.createElement("div");
-               el.classList.add("tabulator-placeholder");
-
-               var span = document.createElement("span");
-               span.innerHTML = options.placeholder;
-
-               el.appendChild(span);
-
-               options.placeholder = el;
-       }
-
-       //build table elements
-       element.appendChild(this.columnManager.getElement());
-       element.appendChild(this.rowManager.getElement());
-
-       if (options.footerElement) {
-               this.footerManager.activate();
-       }
-
-       if (options.persistence && this.modExists("persistence", true)) {
-               mod.persistence.initialize();
-       }
-
-       if (options.persistence && this.modExists("persistence", true) && mod.persistence.config.columns) {
-               options.columns = mod.persistence.load("columns", options.columns);
-       }
-
-       if (options.movableRows && this.modExists("moveRow")) {
-               mod.moveRow.initialize();
-       }
-
-       if (options.autoColumns && this.options.data) {
-               this.columnManager.generateColumnsFromRowData(this.options.data);
-       }
-
-       if (this.modExists("columnCalcs")) {
-               mod.columnCalcs.initialize();
-       }
-
-       this.columnManager.setColumns(options.columns);
-
-       if (options.dataTree && this.modExists("dataTree", true)) {
-               mod.dataTree.initialize();
-       }
-
-       if (this.modExists("frozenRows")) {
-               this.modules.frozenRows.initialize();
-       }
-
-       if ((options.persistence && this.modExists("persistence", true) && mod.persistence.config.sort || options.initialSort) && this.modExists("sort", true)) {
-               var sorters = [];
-
-               if (options.persistence && this.modExists("persistence", true) && mod.persistence.config.sort) {
-                       sorters = mod.persistence.load("sort");
-
-                       if (sorters === false && options.initialSort) {
-                               sorters = options.initialSort;
-                       }
-               } else if (options.initialSort) {
-                       sorters = options.initialSort;
-               }
-
-               mod.sort.setSort(sorters);
-       }
-
-       if ((options.persistence && this.modExists("persistence", true) && mod.persistence.config.filter || options.initialFilter) && this.modExists("filter", true)) {
-               var filters = [];
-
-               if (options.persistence && this.modExists("persistence", true) && mod.persistence.config.filter) {
-                       filters = mod.persistence.load("filter");
-
-                       if (filters === false && options.initialFilter) {
-                               filters = options.initialFilter;
-                       }
-               } else if (options.initialFilter) {
-                       filters = options.initialFilter;
-               }
-
-               mod.filter.setFilter(filters);
-       }
-
-       if (options.initialHeaderFilter && this.modExists("filter", true)) {
-               options.initialHeaderFilter.forEach(function (item) {
-
-                       var column = _this17.columnManager.findColumn(item.field);
-
-                       if (column) {
-                               mod.filter.setHeaderFilterValue(column, item.value);
-                       } else {
-                               console.warn("Column Filter Error - No matching column found:", item.field);
-                               return false;
-                       }
-               });
-       }
-
-       if (this.modExists("ajax")) {
-               mod.ajax.initialize();
-       }
-
-       if (options.pagination && this.modExists("page", true)) {
-               mod.page.initialize();
-       }
-
-       if (options.groupBy && this.modExists("groupRows", true)) {
-               mod.groupRows.initialize();
-       }
-
-       if (this.modExists("keybindings")) {
-               mod.keybindings.initialize();
-       }
-
-       if (this.modExists("selectRow")) {
-               mod.selectRow.clearSelectionData(true);
-       }
-
-       if (options.autoResize && this.modExists("resizeTable")) {
-               mod.resizeTable.initialize();
-       }
-
-       if (this.modExists("clipboard")) {
-               mod.clipboard.initialize();
-       }
-
-       if (options.printAsHtml && this.modExists("print")) {
-               mod.print.initialize();
-       }
-
-       options.tableBuilt.call(this);
-};
-
-Tabulator.prototype._loadInitialData = function () {
-       var self = this;
-
-       if (self.options.pagination && self.modExists("page")) {
-               self.modules.page.reset(true, true);
-
-               if (self.options.pagination == "local") {
-                       if (self.options.data.length) {
-                               self.rowManager.setData(self.options.data, false, true);
-                       } else {
-                               if ((self.options.ajaxURL || self.options.ajaxURLGenerator) && self.modExists("ajax")) {
-                                       self.modules.ajax.loadData(false, true).then(function () {}).catch(function () {
-                                               if (self.options.paginationInitialPage) {
-                                                       self.modules.page.setPage(self.options.paginationInitialPage);
-                                               }
-                                       });
-
-                                       return;
-                               } else {
-                                       self.rowManager.setData(self.options.data, false, true);
-                               }
-                       }
-
-                       if (self.options.paginationInitialPage) {
-                               self.modules.page.setPage(self.options.paginationInitialPage);
-                       }
-               } else {
-                       if (self.options.ajaxURL) {
-                               self.modules.page.setPage(self.options.paginationInitialPage).then(function () {}).catch(function () {});
-                       } else {
-                               self.rowManager.setData([], false, true);
-                       }
-               }
-       } else {
-               if (self.options.data.length) {
-                       self.rowManager.setData(self.options.data);
-               } else {
-                       if ((self.options.ajaxURL || self.options.ajaxURLGenerator) && self.modExists("ajax")) {
-                               self.modules.ajax.loadData(false, true).then(function () {}).catch(function () {});
-                       } else {
-                               self.rowManager.setData(self.options.data, false, true);
-                       }
-               }
-       }
-};
-
-//deconstructor
-Tabulator.prototype.destroy = function () {
-       var element = this.element;
-
-       Tabulator.prototype.comms.deregister(this); //deregister table from inderdevice communication
-
-       if (this.options.reactiveData && this.modExists("reactiveData", true)) {
-               this.modules.reactiveData.unwatchData();
-       }
-
-       //clear row data
-       this.rowManager.rows.forEach(function (row) {
-               row.wipe();
-       });
-
-       this.rowManager.rows = [];
-       this.rowManager.activeRows = [];
-       this.rowManager.displayRows = [];
-
-       //clear event bindings
-       if (this.options.autoResize && this.modExists("resizeTable")) {
-               this.modules.resizeTable.clearBindings();
-       }
-
-       if (this.modExists("keybindings")) {
-               this.modules.keybindings.clearBindings();
-       }
-
-       //clear DOM
-       while (element.firstChild) {
-               element.removeChild(element.firstChild);
-       }element.classList.remove("tabulator");
-};
-
-Tabulator.prototype._detectBrowser = function () {
-       var ua = navigator.userAgent || navigator.vendor || window.opera;
-
-       if (ua.indexOf("Trident") > -1) {
-               this.browser = "ie";
-               this.browserSlow = true;
-       } else if (ua.indexOf("Edge") > -1) {
-               this.browser = "edge";
-               this.browserSlow = true;
-       } else if (ua.indexOf("Firefox") > -1) {
-               this.browser = "firefox";
-               this.browserSlow = false;
-       } else {
-               this.browser = "other";
-               this.browserSlow = false;
-       }
-
-       this.browserMobile = /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(ua) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(ua.substr(0, 4));
-};
-
-////////////////// Data Handling //////////////////
-
-//block table redrawing
-Tabulator.prototype.blockRedraw = function () {
-       return this.rowManager.blockRedraw();
-};
-
-//restore table redrawing
-Tabulator.prototype.restoreRedraw = function () {
-       return this.rowManager.restoreRedraw();
-};
-
-//local data from local file
-Tabulator.prototype.setDataFromLocalFile = function (extensions) {
-       var _this18 = this;
-
-       return new Promise(function (resolve, reject) {
-               var input = document.createElement("input");
-               input.type = "file";
-               input.accept = extensions || ".json,application/json";
-
-               input.addEventListener("change", function (e) {
-                       var file = input.files[0],
-                           reader = new FileReader(),
-                           data;
-
-                       reader.readAsText(file);
-
-                       reader.onload = function (e) {
-
-                               try {
-                                       data = JSON.parse(reader.result);
-                               } catch (e) {
-                                       console.warn("File Load Error - File contents is invalid JSON", e);
-                                       reject(e);
-                                       return;
-                               }
-
-                               _this18._setData(data).then(function (data) {
-                                       resolve(data);
-                               }).catch(function (err) {
-                                       resolve(err);
-                               });
-                       };
-
-                       reader.onerror = function (e) {
-                               console.warn("File Load Error - Unable to read file");
-                               reject();
-                       };
-               });
-
-               input.click();
-       });
-};
-
-//load data
-Tabulator.prototype.setData = function (data, params, config) {
-       if (this.modExists("ajax")) {
-               this.modules.ajax.blockActiveRequest();
-       }
-
-       return this._setData(data, params, config, false, true);
-};
-
-Tabulator.prototype._setData = function (data, params, config, inPosition, columnsChanged) {
-       var self = this;
-
-       if (typeof data === "string") {
-               if (data.indexOf("{") == 0 || data.indexOf("[") == 0) {
-                       //data is a json encoded string
-                       return self.rowManager.setData(JSON.parse(data), inPosition, columnsChanged);
-               } else {
-
-                       if (self.modExists("ajax", true)) {
-                               if (params) {
-                                       self.modules.ajax.setParams(params);
-                               }
-
-                               if (config) {
-                                       self.modules.ajax.setConfig(config);
-                               }
-
-                               self.modules.ajax.setUrl(data);
-
-                               if (self.options.pagination == "remote" && self.modExists("page", true)) {
-                                       self.modules.page.reset(true, true);
-                                       return self.modules.page.setPage(1);
-                               } else {
-                                       //assume data is url, make ajax call to url to get data
-                                       return self.modules.ajax.loadData(inPosition, columnsChanged);
-                               }
-                       }
-               }
-       } else {
-               if (data) {
-                       //asume data is already an object
-                       return self.rowManager.setData(data, inPosition, columnsChanged);
-               } else {
-
-                       //no data provided, check if ajaxURL is present;
-                       if (self.modExists("ajax") && (self.modules.ajax.getUrl || self.options.ajaxURLGenerator)) {
-
-                               if (self.options.pagination == "remote" && self.modExists("page", true)) {
-                                       self.modules.page.reset(true, true);
-                                       return self.modules.page.setPage(1);
-                               } else {
-                                       return self.modules.ajax.loadData(inPosition, columnsChanged);
-                               }
-                       } else {
-                               //empty data
-                               return self.rowManager.setData([], inPosition, columnsChanged);
-                       }
-               }
-       }
-};
-
-//clear data
-Tabulator.prototype.clearData = function () {
-       if (this.modExists("ajax")) {
-               this.modules.ajax.blockActiveRequest();
-       }
-
-       this.rowManager.clearData();
-};
-
-//get table data array
-Tabulator.prototype.getData = function (active) {
-
-       if (active === true) {
-               console.warn("passing a boolean to the getData function is deprecated, you should now pass the string 'active'");
-               active = "active";
-       }
-
-       return this.rowManager.getData(active);
-};
-
-//get table data array count
-Tabulator.prototype.getDataCount = function (active) {
-
-       if (active === true) {
-               console.warn("passing a boolean to the getDataCount function is deprecated, you should now pass the string 'active'");
-               active = "active";
-       }
-
-       return this.rowManager.getDataCount(active);
-};
-
-//search for specific row components
-Tabulator.prototype.searchRows = function (field, type, value) {
-       if (this.modExists("filter", true)) {
-               return this.modules.filter.search("rows", field, type, value);
-       }
-};
-
-//search for specific data
-Tabulator.prototype.searchData = function (field, type, value) {
-       if (this.modExists("filter", true)) {
-               return this.modules.filter.search("data", field, type, value);
-       }
-};
-
-//get table html
-Tabulator.prototype.getHtml = function (visible, style, config) {
-       if (this.modExists("export", true)) {
-               return this.modules.export.getHtml(visible, style, config);
-       }
-};
-
-//get print html
-Tabulator.prototype.print = function (visible, style, config) {
-       if (this.modExists("print", true)) {
-               return this.modules.print.printFullscreen(visible, style, config);
-       }
-};
-
-//retrieve Ajax URL
-Tabulator.prototype.getAjaxUrl = function () {
-       if (this.modExists("ajax", true)) {
-               return this.modules.ajax.getUrl();
-       }
-};
-
-//replace data, keeping table in position with same sort
-Tabulator.prototype.replaceData = function (data, params, config) {
-       if (this.modExists("ajax")) {
-               this.modules.ajax.blockActiveRequest();
-       }
-
-       return this._setData(data, params, config, true);
-};
-
-//update table data
-Tabulator.prototype.updateData = function (data) {
-       var _this19 = this;
-
-       var self = this;
-       var responses = 0;
-
-       return new Promise(function (resolve, reject) {
-               if (_this19.modExists("ajax")) {
-                       _this19.modules.ajax.blockActiveRequest();
-               }
-
-               if (typeof data === "string") {
-                       data = JSON.parse(data);
-               }
-
-               if (data) {
-                       data.forEach(function (item) {
-                               var row = self.rowManager.findRow(item[self.options.index]);
-
-                               if (row) {
-                                       responses++;
-
-                                       row.updateData(item).then(function () {
-                                               responses--;
-
-                                               if (!responses) {
-                                                       resolve();
-                                               }
-                                       });
-                               }
-                       });
-               } else {
-                       console.warn("Update Error - No data provided");
-                       reject("Update Error - No data provided");
-               }
-       });
-};
-
-Tabulator.prototype.addData = function (data, pos, index) {
-       var _this20 = this;
-
-       return new Promise(function (resolve, reject) {
-               if (_this20.modExists("ajax")) {
-                       _this20.modules.ajax.blockActiveRequest();
-               }
-
-               if (typeof data === "string") {
-                       data = JSON.parse(data);
-               }
-
-               if (data) {
-                       _this20.rowManager.addRows(data, pos, index).then(function (rows) {
-                               var output = [];
-
-                               rows.forEach(function (row) {
-                                       output.push(row.getComponent());
-                               });
-
-                               resolve(output);
-                       });
-               } else {
-                       console.warn("Update Error - No data provided");
-                       reject("Update Error - No data provided");
-               }
-       });
-};
-
-//update table data
-Tabulator.prototype.updateOrAddData = function (data) {
-       var _this21 = this;
-
-       var self = this,
-           rows = [],
-           responses = 0;
-
-       return new Promise(function (resolve, reject) {
-               if (_this21.modExists("ajax")) {
-                       _this21.modules.ajax.blockActiveRequest();
-               }
-
-               if (typeof data === "string") {
-                       data = JSON.parse(data);
-               }
-
-               if (data) {
-                       data.forEach(function (item) {
-                               var row = self.rowManager.findRow(item[self.options.index]);
-
-                               responses++;
-
-                               if (row) {
-                                       row.updateData(item).then(function () {
-                                               responses--;
-                                               rows.push(row.getComponent());
-
-                                               if (!responses) {
-                                                       resolve(rows);
-                                               }
-                                       });
-                               } else {
-                                       self.rowManager.addRows(item).then(function (newRows) {
-                                               responses--;
-                                               rows.push(newRows[0].getComponent());
-
-                                               if (!responses) {
-                                                       resolve(rows);
-                                               }
-                                       });
-                               }
-                       });
-               } else {
-                       console.warn("Update Error - No data provided");
-                       reject("Update Error - No data provided");
-               }
-       });
-};
-
-//get row object
-Tabulator.prototype.getRow = function (index) {
-       var row = this.rowManager.findRow(index);
-
-       if (row) {
-               return row.getComponent();
-       } else {
-               console.warn("Find Error - No matching row found:", index);
-               return false;
-       }
-};
-
-//get row object
-Tabulator.prototype.getRowFromPosition = function (position, active) {
-       var row = this.rowManager.getRowFromPosition(position, active);
-
-       if (row) {
-               return row.getComponent();
-       } else {
-               console.warn("Find Error - No matching row found:", position);
-               return false;
-       }
-};
-
-//delete row from table
-Tabulator.prototype.deleteRow = function (index) {
-       var _this22 = this;
-
-       return new Promise(function (resolve, reject) {
-               var self = _this22,
-                   count = 0,
-                   successCount = 0,
-                   foundRows = [];
-
-               function doneCheck() {
-                       count++;
-
-                       if (count == index.length) {
-                               if (successCount) {
-                                       self.rowManager.reRenderInPosition();
-                                       resolve();
-                               }
-                       }
-               }
-
-               if (!Array.isArray(index)) {
-                       index = [index];
-               }
-
-               //find matching rows
-               index.forEach(function (item) {
-                       var row = _this22.rowManager.findRow(item, true);
-
-                       if (row) {
-                               foundRows.push(row);
-                       } else {
-                               console.warn("Delete Error - No matching row found:", item);
-                               reject("Delete Error - No matching row found");
-                               doneCheck();
-                       }
-               });
-
-               //sort rows into correct order to ensure smooth delete from table
-               foundRows.sort(function (a, b) {
-                       return _this22.rowManager.rows.indexOf(a) > _this22.rowManager.rows.indexOf(b) ? 1 : -1;
-               });
-
-               foundRows.forEach(function (row) {
-                       row.delete().then(function () {
-                               successCount++;
-                               doneCheck();
-                       }).catch(function (err) {
-                               doneCheck();
-                               reject(err);
-                       });
-               });
-       });
-};
-
-//add row to table
-Tabulator.prototype.addRow = function (data, pos, index) {
-       var _this23 = this;
-
-       return new Promise(function (resolve, reject) {
-               if (typeof data === "string") {
-                       data = JSON.parse(data);
-               }
-
-               _this23.rowManager.addRows(data, pos, index).then(function (rows) {
-                       //recalc column calculations if present
-                       if (_this23.modExists("columnCalcs")) {
-                               _this23.modules.columnCalcs.recalc(_this23.rowManager.activeRows);
-                       }
-
-                       resolve(rows[0].getComponent());
-               });
-       });
-};
-
-//update a row if it exitsts otherwise create it
-Tabulator.prototype.updateOrAddRow = function (index, data) {
-       var _this24 = this;
-
-       return new Promise(function (resolve, reject) {
-               var row = _this24.rowManager.findRow(index);
-
-               if (typeof data === "string") {
-                       data = JSON.parse(data);
-               }
-
-               if (row) {
-                       row.updateData(data).then(function () {
-                               //recalc column calculations if present
-                               if (_this24.modExists("columnCalcs")) {
-                                       _this24.modules.columnCalcs.recalc(_this24.rowManager.activeRows);
-                               }
-
-                               resolve(row.getComponent());
-                       }).catch(function (err) {
-                               reject(err);
-                       });
-               } else {
-                       row = _this24.rowManager.addRows(data).then(function (rows) {
-                               //recalc column calculations if present
-                               if (_this24.modExists("columnCalcs")) {
-                                       _this24.modules.columnCalcs.recalc(_this24.rowManager.activeRows);
-                               }
-
-                               resolve(rows[0].getComponent());
-                       }).catch(function (err) {
-                               reject(err);
-                       });
-               }
-       });
-};
-
-//update row data
-Tabulator.prototype.updateRow = function (index, data) {
-       var _this25 = this;
-
-       return new Promise(function (resolve, reject) {
-               var row = _this25.rowManager.findRow(index);
-
-               if (typeof data === "string") {
-                       data = JSON.parse(data);
-               }
-
-               if (row) {
-                       row.updateData(data).then(function () {
-                               resolve(row.getComponent());
-                       }).catch(function (err) {
-                               reject(err);
-                       });
-               } else {
-                       console.warn("Update Error - No matching row found:", index);
-                       reject("Update Error - No matching row found");
-               }
-       });
-};
-
-//scroll to row in DOM
-Tabulator.prototype.scrollToRow = function (index, position, ifVisible) {
-       var _this26 = this;
-
-       return new Promise(function (resolve, reject) {
-               var row = _this26.rowManager.findRow(index);
-
-               if (row) {
-                       _this26.rowManager.scrollToRow(row, position, ifVisible).then(function () {
-                               resolve();
-                       }).catch(function (err) {
-                               reject(err);
-                       });
-               } else {
-                       console.warn("Scroll Error - No matching row found:", index);
-                       reject("Scroll Error - No matching row found");
-               }
-       });
-};
-
-Tabulator.prototype.moveRow = function (from, to, after) {
-       var fromRow = this.rowManager.findRow(from);
-
-       if (fromRow) {
-               fromRow.moveToRow(to, after);
-       } else {
-               console.warn("Move Error - No matching row found:", from);
-       }
-};
-
-Tabulator.prototype.getRows = function (active) {
-
-       if (active === true) {
-               console.warn("passing a boolean to the getRows function is deprecated, you should now pass the string 'active'");
-               active = "active";
-       }
-
-       return this.rowManager.getComponents(active);
-};
-
-//get position of row in table
-Tabulator.prototype.getRowPosition = function (index, active) {
-       var row = this.rowManager.findRow(index);
-
-       if (row) {
-               return this.rowManager.getRowPosition(row, active);
-       } else {
-               console.warn("Position Error - No matching row found:", index);
-               return false;
-       }
-};
-
-//copy table data to clipboard
-Tabulator.prototype.copyToClipboard = function (selector) {
-       if (this.modExists("clipboard", true)) {
-               this.modules.clipboard.copy(selector);
-       }
-};
-
-/////////////// Column Functions  ///////////////
-
-Tabulator.prototype.setColumns = function (definition) {
-       this.columnManager.setColumns(definition);
-};
-
-Tabulator.prototype.getColumns = function (structured) {
-       return this.columnManager.getComponents(structured);
-};
-
-Tabulator.prototype.getColumn = function (field) {
-       var col = this.columnManager.findColumn(field);
-
-       if (col) {
-               return col.getComponent();
-       } else {
-               console.warn("Find Error - No matching column found:", field);
-               return false;
-       }
-};
-
-Tabulator.prototype.getColumnDefinitions = function () {
-       return this.columnManager.getDefinitionTree();
-};
-
-Tabulator.prototype.getColumnLayout = function () {
-       if (this.modExists("persistence", true)) {
-               return this.modules.persistence.parseColumns(this.columnManager.getColumns());
-       }
-};
-
-Tabulator.prototype.setColumnLayout = function (layout) {
-       if (this.modExists("persistence", true)) {
-               this.columnManager.setColumns(this.modules.persistence.mergeDefinition(this.options.columns, layout));
-               return true;
-       }
-       return false;
-};
-
-Tabulator.prototype.showColumn = function (field) {
-       var column = this.columnManager.findColumn(field);
-
-       if (column) {
-               column.show();
-
-               if (this.options.responsiveLayout && this.modExists("responsiveLayout", true)) {
-                       this.modules.responsiveLayout.update();
-               }
-       } else {
-               console.warn("Column Show Error - No matching column found:", field);
-               return false;
-       }
-};
-
-Tabulator.prototype.hideColumn = function (field) {
-       var column = this.columnManager.findColumn(field);
-
-       if (column) {
-               column.hide();
-
-               if (this.options.responsiveLayout && this.modExists("responsiveLayout", true)) {
-                       this.modules.responsiveLayout.update();
-               }
-       } else {
-               console.warn("Column Hide Error - No matching column found:", field);
-               return false;
-       }
-};
-
-Tabulator.prototype.toggleColumn = function (field) {
-       var column = this.columnManager.findColumn(field);
-
-       if (column) {
-               if (column.visible) {
-                       column.hide();
-               } else {
-                       column.show();
-               }
-       } else {
-               console.warn("Column Visibility Toggle Error - No matching column found:", field);
-               return false;
-       }
-};
-
-Tabulator.prototype.addColumn = function (definition, before, field) {
-       var _this27 = this;
-
-       return new Promise(function (resolve, reject) {
-               var column = _this27.columnManager.findColumn(field);
-
-               _this27.columnManager.addColumn(definition, before, column).then(function (column) {
-                       resolve(column.getComponent());
-               }).catch(function (err) {
-                       reject(err);
-               });
-       });
-};
-
-Tabulator.prototype.deleteColumn = function (field) {
-       var _this28 = this;
-
-       return new Promise(function (resolve, reject) {
-               var column = _this28.columnManager.findColumn(field);
-
-               if (column) {
-                       column.delete().then(function () {
-                               resolve();
-                       }).catch(function (err) {
-                               reject(err);
-                       });
-               } else {
-                       console.warn("Column Delete Error - No matching column found:", field);
-                       reject();
-               }
-       });
-};
-
-Tabulator.prototype.updateColumnDefinition = function (field, definition) {
-       var _this29 = this;
-
-       return new Promise(function (resolve, reject) {
-               var column = _this29.columnManager.findColumn(field);
-
-               if (column) {
-                       column.updateDefinition(definition).then(function (col) {
-                               resolve(col);
-                       }).catch(function (err) {
-                               reject(err);
-                       });
-               } else {
-                       console.warn("Column Update Error - No matching column found:", field);
-                       reject();
-               }
-       });
-};
-
-Tabulator.prototype.moveColumn = function (from, to, after) {
-       var fromColumn = this.columnManager.findColumn(from);
-       var toColumn = this.columnManager.findColumn(to);
-
-       if (fromColumn) {
-               if (toColumn) {
-                       this.columnManager.moveColumn(fromColumn, toColumn, after);
-               } else {
-                       console.warn("Move Error - No matching column found:", toColumn);
-               }
-       } else {
-               console.warn("Move Error - No matching column found:", from);
-       }
-};
-
-//scroll to column in DOM
-Tabulator.prototype.scrollToColumn = function (field, position, ifVisible) {
-       var _this30 = this;
-
-       return new Promise(function (resolve, reject) {
-               var column = _this30.columnManager.findColumn(field);
-
-               if (column) {
-                       _this30.columnManager.scrollToColumn(column, position, ifVisible).then(function () {
-                               resolve();
-                       }).catch(function (err) {
-                               reject(err);
-                       });
-               } else {
-                       console.warn("Scroll Error - No matching column found:", field);
-                       reject("Scroll Error - No matching column found");
-               }
-       });
-};
-
-//////////// Localization Functions  ////////////
-Tabulator.prototype.setLocale = function (locale) {
-       this.modules.localize.setLocale(locale);
-};
-
-Tabulator.prototype.getLocale = function () {
-       return this.modules.localize.getLocale();
-};
-
-Tabulator.prototype.getLang = function (locale) {
-       return this.modules.localize.getLang(locale);
-};
-
-//////////// General Public Functions ////////////
-
-//redraw list without updating data
-Tabulator.prototype.redraw = function (force) {
-       this.columnManager.redraw(force);
-       this.rowManager.redraw(force);
-};
-
-Tabulator.prototype.setHeight = function (height) {
-
-       if (this.rowManager.renderMode !== "classic") {
-               this.options.height = isNaN(height) ? height : height + "px";
-               this.element.style.height = this.options.height;
-               this.rowManager.setRenderMode();
-               this.rowManager.redraw();
-       } else {
-               console.warn("setHeight function is not available in classic render mode");
-       }
-};
-
-///////////////////// Sorting ////////////////////
-
-//trigger sort
-Tabulator.prototype.setSort = function (sortList, dir) {
-       if (this.modExists("sort", true)) {
-               this.modules.sort.setSort(sortList, dir);
-               this.rowManager.sorterRefresh();
-       }
-};
-
-Tabulator.prototype.getSorters = function () {
-       if (this.modExists("sort", true)) {
-               return this.modules.sort.getSort();
-       }
-};
-
-Tabulator.prototype.clearSort = function () {
-       if (this.modExists("sort", true)) {
-               this.modules.sort.clear();
-               this.rowManager.sorterRefresh();
-       }
-};
-
-///////////////////// Filtering ////////////////////
-
-//set standard filters
-Tabulator.prototype.setFilter = function (field, type, value) {
-       if (this.modExists("filter", true)) {
-               this.modules.filter.setFilter(field, type, value);
-               this.rowManager.filterRefresh();
-       }
-};
-
-//add filter to array
-Tabulator.prototype.addFilter = function (field, type, value) {
-       if (this.modExists("filter", true)) {
-               this.modules.filter.addFilter(field, type, value);
-               this.rowManager.filterRefresh();
-       }
-};
-
-//get all filters
-Tabulator.prototype.getFilters = function (all) {
-       if (this.modExists("filter", true)) {
-               return this.modules.filter.getFilters(all);
-       }
-};
-
-Tabulator.prototype.setHeaderFilterFocus = function (field) {
-       if (this.modExists("filter", true)) {
-               var column = this.columnManager.findColumn(field);
-
-               if (column) {
-                       this.modules.filter.setHeaderFilterFocus(column);
-               } else {
-                       console.warn("Column Filter Focus Error - No matching column found:", field);
-                       return false;
-               }
-       }
-};
-
-Tabulator.prototype.getHeaderFilterValue = function (field) {
-       if (this.modExists("filter", true)) {
-               var column = this.columnManager.findColumn(field);
-
-               if (column) {
-                       return this.modules.filter.getHeaderFilterValue(column);
-               } else {
-                       console.warn("Column Filter Error - No matching column found:", field);
-               }
-       }
-};
-
-Tabulator.prototype.setHeaderFilterValue = function (field, value) {
-       if (this.modExists("filter", true)) {
-               var column = this.columnManager.findColumn(field);
-
-               if (column) {
-                       this.modules.filter.setHeaderFilterValue(column, value);
-               } else {
-                       console.warn("Column Filter Error - No matching column found:", field);
-                       return false;
-               }
-       }
-};
-
-Tabulator.prototype.getHeaderFilters = function () {
-       if (this.modExists("filter", true)) {
-               return this.modules.filter.getHeaderFilters();
-       }
-};
-
-//remove filter from array
-Tabulator.prototype.removeFilter = function (field, type, value) {
-       if (this.modExists("filter", true)) {
-               this.modules.filter.removeFilter(field, type, value);
-               this.rowManager.filterRefresh();
-       }
-};
-
-//clear filters
-Tabulator.prototype.clearFilter = function (all) {
-       if (this.modExists("filter", true)) {
-               this.modules.filter.clearFilter(all);
-               this.rowManager.filterRefresh();
-       }
-};
-
-//clear header filters
-Tabulator.prototype.clearHeaderFilter = function () {
-       if (this.modExists("filter", true)) {
-               this.modules.filter.clearHeaderFilter();
-               this.rowManager.filterRefresh();
-       }
-};
-
-///////////////////// Filtering ////////////////////
-Tabulator.prototype.selectRow = function (rows) {
-       if (this.modExists("selectRow", true)) {
-               if (rows === true) {
-                       console.warn("passing a boolean to the selectRowselectRow function is deprecated, you should now pass the string 'active'");
-                       rows = "active";
-               }
-               this.modules.selectRow.selectRows(rows);
-       }
-};
-
-Tabulator.prototype.deselectRow = function (rows) {
-       if (this.modExists("selectRow", true)) {
-               this.modules.selectRow.deselectRows(rows);
-       }
-};
-
-Tabulator.prototype.toggleSelectRow = function (row) {
-       if (this.modExists("selectRow", true)) {
-               this.modules.selectRow.toggleRow(row);
-       }
-};
-
-Tabulator.prototype.getSelectedRows = function () {
-       if (this.modExists("selectRow", true)) {
-               return this.modules.selectRow.getSelectedRows();
-       }
-};
-
-Tabulator.prototype.getSelectedData = function () {
-       if (this.modExists("selectRow", true)) {
-               return this.modules.selectRow.getSelectedData();
-       }
-};
-
-//////////// Pagination Functions  ////////////
-
-Tabulator.prototype.setMaxPage = function (max) {
-       if (this.options.pagination && this.modExists("page")) {
-               this.modules.page.setMaxPage(max);
-       } else {
-               return false;
-       }
-};
-
-Tabulator.prototype.setPage = function (page) {
-       if (this.options.pagination && this.modExists("page")) {
-               return this.modules.page.setPage(page);
-       } else {
-               return new Promise(function (resolve, reject) {
-                       reject();
-               });
-       }
-};
-
-Tabulator.prototype.setPageToRow = function (row) {
-       var _this31 = this;
-
-       return new Promise(function (resolve, reject) {
-               if (_this31.options.pagination && _this31.modExists("page")) {
-                       row = _this31.rowManager.findRow(row);
-
-                       if (row) {
-                               _this31.modules.page.setPageToRow(row).then(function () {
-                                       resolve();
-                               }).catch(function () {
-                                       reject();
-                               });
-                       } else {
-                               reject();
-                       }
-               } else {
-                       reject();
-               }
-       });
-};
-
-Tabulator.prototype.setPageSize = function (size) {
-       if (this.options.pagination && this.modExists("page")) {
-               this.modules.page.setPageSize(size);
-               this.modules.page.setPage(1).then(function () {}).catch(function () {});
-       } else {
-               return false;
-       }
-};
-
-Tabulator.prototype.getPageSize = function () {
-       if (this.options.pagination && this.modExists("page", true)) {
-               return this.modules.page.getPageSize();
-       }
-};
-
-Tabulator.prototype.previousPage = function () {
-       if (this.options.pagination && this.modExists("page")) {
-               this.modules.page.previousPage();
-       } else {
-               return false;
-       }
-};
-
-Tabulator.prototype.nextPage = function () {
-       if (this.options.pagination && this.modExists("page")) {
-               this.modules.page.nextPage();
-       } else {
-               return false;
-       }
-};
-
-Tabulator.prototype.getPage = function () {
-       if (this.options.pagination && this.modExists("page")) {
-               return this.modules.page.getPage();
-       } else {
-               return false;
-       }
-};
-
-Tabulator.prototype.getPageMax = function () {
-       if (this.options.pagination && this.modExists("page")) {
-               return this.modules.page.getPageMax();
-       } else {
-               return false;
-       }
-};
-
-///////////////// Grouping Functions ///////////////
-
-Tabulator.prototype.setGroupBy = function (groups) {
-       if (this.modExists("groupRows", true)) {
-               this.options.groupBy = groups;
-               this.modules.groupRows.initialize();
-               this.rowManager.refreshActiveData("display");
-
-               if (this.options.persistence && this.modExists("persistence", true) && this.modules.persistence.config.group) {
-                       this.modules.persistence.save("group");
-               }
-       } else {
-               return false;
-       }
-};
-
-Tabulator.prototype.setGroupStartOpen = function (values) {
-       if (this.modExists("groupRows", true)) {
-               this.options.groupStartOpen = values;
-               this.modules.groupRows.initialize();
-               if (this.options.groupBy) {
-                       this.rowManager.refreshActiveData("group");
-
-                       if (this.options.persistence && this.modExists("persistence", true) && this.modules.persistence.config.group) {
-                               this.modules.persistence.save("group");
-                       }
-               } else {
-                       console.warn("Grouping Update - cant refresh view, no groups have been set");
-               }
-       } else {
-               return false;
-       }
-};
-
-Tabulator.prototype.setGroupHeader = function (values) {
-       if (this.modExists("groupRows", true)) {
-               this.options.groupHeader = values;
-               this.modules.groupRows.initialize();
-               if (this.options.groupBy) {
-                       this.rowManager.refreshActiveData("group");
-
-                       if (this.options.persistence && this.modExists("persistence", true) && this.modules.persistence.config.group) {
-                               this.modules.persistence.save("group");
-                       }
-               } else {
-                       console.warn("Grouping Update - cant refresh view, no groups have been set");
-               }
-       } else {
-               return false;
-       }
-};
-
-Tabulator.prototype.getGroups = function (values) {
-       if (this.modExists("groupRows", true)) {
-               return this.modules.groupRows.getGroups(true);
-       } else {
-               return false;
-       }
-};
-
-// get grouped table data in the same format as getData()
-Tabulator.prototype.getGroupedData = function () {
-       if (this.modExists("groupRows", true)) {
-               return this.options.groupBy ? this.modules.groupRows.getGroupedData() : this.getData();
-       }
-};
-
-///////////////// Column Calculation Functions ///////////////
-Tabulator.prototype.getCalcResults = function () {
-       if (this.modExists("columnCalcs", true)) {
-               return this.modules.columnCalcs.getResults();
-       } else {
-               return false;
-       }
-};
-
-Tabulator.prototype.recalc = function () {
-       if (this.modExists("columnCalcs", true)) {
-               this.modules.columnCalcs.recalcAll(this.rowManager.activeRows);
-       }
-};
-
-/////////////// Navigation Management //////////////
-
-Tabulator.prototype.navigatePrev = function () {
-       var cell = false;
-
-       if (this.modExists("edit", true)) {
-               cell = this.modules.edit.currentCell;
-
-               if (cell) {
-                       return cell.nav().prev();
-               }
-       }
-
-       return false;
-};
-
-Tabulator.prototype.navigateNext = function () {
-       var cell = false;
-
-       if (this.modExists("edit", true)) {
-               cell = this.modules.edit.currentCell;
-
-               if (cell) {
-                       return cell.nav().next();
-               }
-       }
-
-       return false;
-};
-
-Tabulator.prototype.navigateLeft = function () {
-       var cell = false;
-
-       if (this.modExists("edit", true)) {
-               cell = this.modules.edit.currentCell;
-
-               if (cell) {
-                       e.preventDefault();
-                       return cell.nav().left();
-               }
-       }
-
-       return false;
-};
-
-Tabulator.prototype.navigateRight = function () {
-       var cell = false;
-
-       if (this.modExists("edit", true)) {
-               cell = this.modules.edit.currentCell;
-
-               if (cell) {
-                       e.preventDefault();
-                       return cell.nav().right();
-               }
-       }
-
-       return false;
-};
-
-Tabulator.prototype.navigateUp = function () {
-       var cell = false;
-
-       if (this.modExists("edit", true)) {
-               cell = this.modules.edit.currentCell;
-
-               if (cell) {
-                       e.preventDefault();
-                       return cell.nav().up();
-               }
-       }
-
-       return false;
-};
-
-Tabulator.prototype.navigateDown = function () {
-       var cell = false;
-
-       if (this.modExists("edit", true)) {
-               cell = this.modules.edit.currentCell;
-
-               if (cell) {
-                       e.preventDefault();
-                       return cell.nav().down();
-               }
-       }
-
-       return false;
-};
-
-/////////////// History Management //////////////
-Tabulator.prototype.undo = function () {
-       if (this.options.history && this.modExists("history", true)) {
-               return this.modules.history.undo();
-       } else {
-               return false;
-       }
-};
-
-Tabulator.prototype.redo = function () {
-       if (this.options.history && this.modExists("history", true)) {
-               return this.modules.history.redo();
-       } else {
-               return false;
-       }
-};
-
-Tabulator.prototype.getHistoryUndoSize = function () {
-       if (this.options.history && this.modExists("history", true)) {
-               return this.modules.history.getHistoryUndoSize();
-       } else {
-               return false;
-       }
-};
-
-Tabulator.prototype.getHistoryRedoSize = function () {
-       if (this.options.history && this.modExists("history", true)) {
-               return this.modules.history.getHistoryRedoSize();
-       } else {
-               return false;
-       }
-};
-
-/////////////// Download Management //////////////
-
-Tabulator.prototype.download = function (type, filename, options, active) {
-       if (this.modExists("download", true)) {
-               this.modules.download.download(type, filename, options, active);
-       }
-};
-
-Tabulator.prototype.downloadToTab = function (type, filename, options, active) {
-       if (this.modExists("download", true)) {
-               this.modules.download.download(type, filename, options, active, true);
-       }
-};
-
-/////////// Inter Table Communications ///////////
-
-Tabulator.prototype.tableComms = function (table, module, action, data) {
-       this.modules.comms.receive(table, module, action, data);
-};
-
-////////////// Extension Management //////////////
-
-//object to hold module
-Tabulator.prototype.moduleBindings = {};
-
-//extend module
-Tabulator.prototype.extendModule = function (name, property, values) {
-
-       if (Tabulator.prototype.moduleBindings[name]) {
-               var source = Tabulator.prototype.moduleBindings[name].prototype[property];
-
-               if (source) {
-                       if ((typeof values === 'undefined' ? 'undefined' : _typeof(values)) == "object") {
-                               for (var key in values) {
-                                       source[key] = values[key];
-                               }
-                       } else {
-                               console.warn("Module Error - Invalid value type, it must be an object");
-                       }
-               } else {
-                       console.warn("Module Error - property does not exist:", property);
-               }
-       } else {
-               console.warn("Module Error - module does not exist:", name);
-       }
-};
-
-//add module to tabulator
-Tabulator.prototype.registerModule = function (name, module) {
-       var self = this;
-       Tabulator.prototype.moduleBindings[name] = module;
-};
-
-//ensure that module are bound to instantiated function
-Tabulator.prototype.bindModules = function () {
-       this.modules = {};
-
-       for (var name in Tabulator.prototype.moduleBindings) {
-               this.modules[name] = new Tabulator.prototype.moduleBindings[name](this);
-       }
-};
-
-//Check for module
-Tabulator.prototype.modExists = function (plugin, required) {
-       if (this.modules[plugin]) {
-               return true;
-       } else {
-               if (required) {
-                       console.error("Tabulator Module Not Installed: " + plugin);
-               }
-               return false;
-       }
-};
-
-Tabulator.prototype.helpers = {
-
-       elVisible: function elVisible(el) {
-               return !(el.offsetWidth <= 0 && el.offsetHeight <= 0);
-       },
-
-       elOffset: function elOffset(el) {
-               var box = el.getBoundingClientRect();
-
-               return {
-                       top: box.top + window.pageYOffset - document.documentElement.clientTop,
-                       left: box.left + window.pageXOffset - document.documentElement.clientLeft
-               };
-       },
-
-       deepClone: function deepClone(obj) {
-               var clone = Array.isArray(obj) ? [] : {};
-
-               for (var i in obj) {
-                       if (obj[i] != null && _typeof(obj[i]) === "object") {
-                               if (obj[i] instanceof Date) {
-                                       clone[i] = new Date(obj[i]);
-                               } else {
-                                       clone[i] = this.deepClone(obj[i]);
-                               }
-                       } else {
-                               clone[i] = obj[i];
-                       }
-               }
-               return clone;
-       }
-};
-
-Tabulator.prototype.comms = {
-       tables: [],
-       register: function register(table) {
-               Tabulator.prototype.comms.tables.push(table);
-       },
-       deregister: function deregister(table) {
-               var index = Tabulator.prototype.comms.tables.indexOf(table);
-
-               if (index > -1) {
-                       Tabulator.prototype.comms.tables.splice(index, 1);
-               }
-       },
-       lookupTable: function lookupTable(query, silent) {
-               var results = [],
-                   matches,
-                   match;
-
-               if (typeof query === "string") {
-                       matches = document.querySelectorAll(query);
-
-                       if (matches.length) {
-                               for (var i = 0; i < matches.length; i++) {
-                                       match = Tabulator.prototype.comms.matchElement(matches[i]);
-
-                                       if (match) {
-                                               results.push(match);
-                                       }
-                               }
-                       }
-               } else if (typeof HTMLElement !== "undefined" && query instanceof HTMLElement || query instanceof Tabulator) {
-                       match = Tabulator.prototype.comms.matchElement(query);
-
-                       if (match) {
-                               results.push(match);
-                       }
-               } else if (Array.isArray(query)) {
-                       query.forEach(function (item) {
-                               results = results.concat(Tabulator.prototype.comms.lookupTable(item));
-                       });
-               } else {
-                       if (!silent) {
-                               console.warn("Table Connection Error - Invalid Selector", query);
-                       }
-               }
-
-               return results;
-       },
-       matchElement: function matchElement(element) {
-               return Tabulator.prototype.comms.tables.find(function (table) {
-                       return element instanceof Tabulator ? table === element : table.element === element;
-               });
-       }
-};
-
-Tabulator.prototype.findTable = function (query) {
-       var results = Tabulator.prototype.comms.lookupTable(query, true);
-       return Array.isArray(results) && !results.length ? false : results;
-};
-
-var Layout = function Layout(table) {
-
-       this.table = table;
-
-       this.mode = null;
-};
-
-//initialize layout system
-
-Layout.prototype.initialize = function (layout) {
-
-       if (this.modes[layout]) {
-
-               this.mode = layout;
-       } else {
-
-               console.warn("Layout Error - invalid mode set, defaulting to 'fitData' : " + layout);
-
-               this.mode = 'fitData';
-       }
-
-       this.table.element.setAttribute("tabulator-layout", this.mode);
-};
-
-Layout.prototype.getMode = function () {
-
-       return this.mode;
-};
-
-//trigger table layout
-
-Layout.prototype.layout = function () {
-
-       this.modes[this.mode].call(this, this.table.columnManager.columnsByIndex);
-};
-
-//layout render functions
-
-Layout.prototype.modes = {
-
-       //resize columns to fit data the contain
-
-       "fitData": function fitData(columns) {
-
-               columns.forEach(function (column) {
-
-                       column.reinitializeWidth();
-               });
-
-               if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-                       this.table.modules.responsiveLayout.update();
-               }
-       },
-
-       //resize columns to fit data the contain and stretch row to fill table
-
-       "fitDataFill": function fitDataFill(columns) {
-
-               columns.forEach(function (column) {
-
-                       column.reinitializeWidth();
-               });
-
-               if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-                       this.table.modules.responsiveLayout.update();
-               }
-       },
-
-       //resize columns to fit data the contain and stretch last column to fill table
-
-       "fitDataStretch": function fitDataStretch(columns) {
-               var _this32 = this;
-
-               var colsWidth = 0,
-                   tableWidth = this.table.rowManager.element.clientWidth,
-                   gap = 0,
-                   lastCol = false;
-
-               columns.forEach(function (column, i) {
-
-                       if (!column.widthFixed) {
-
-                               column.reinitializeWidth();
-                       }
-
-                       if (_this32.table.options.responsiveLayout ? column.modules.responsive.visible : column.visible) {
-
-                               lastCol = column;
-                       }
-
-                       if (column.visible) {
-
-                               colsWidth += column.getWidth();
-                       }
-               });
-
-               if (lastCol) {
-
-                       gap = tableWidth - colsWidth + lastCol.getWidth();
-
-                       if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-                               lastCol.setWidth(0);
-
-                               this.table.modules.responsiveLayout.update();
-                       }
-
-                       if (gap > 0) {
-
-                               lastCol.setWidth(gap);
-                       } else {
-
-                               lastCol.reinitializeWidth();
-                       }
-               } else {
-
-                       if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-                               this.table.modules.responsiveLayout.update();
-                       }
-               }
-       },
-
-       //resize columns to fit
-
-       "fitColumns": function fitColumns(columns) {
-
-               var self = this;
-
-               var totalWidth = self.table.element.clientWidth; //table element width
-
-               var fixedWidth = 0; //total width of columns with a defined width
-
-               var flexWidth = 0; //total width available to flexible columns
-
-               var flexGrowUnits = 0; //total number of widthGrow blocks accross all columns
-
-               var flexColWidth = 0; //desired width of flexible columns
-
-               var flexColumns = []; //array of flexible width columns
-
-               var fixedShrinkColumns = []; //array of fixed width columns that can shrink
-
-               var flexShrinkUnits = 0; //total number of widthShrink blocks accross all columns
-
-               var overflowWidth = 0; //horizontal overflow width
-
-               var gapFill = 0; //number of pixels to be added to final column to close and half pixel gaps
-
-
-               function calcWidth(width) {
-
-                       var colWidth;
-
-                       if (typeof width == "string") {
-
-                               if (width.indexOf("%") > -1) {
-
-                                       colWidth = totalWidth / 100 * parseInt(width);
-                               } else {
-
-                                       colWidth = parseInt(width);
-                               }
-                       } else {
-
-                               colWidth = width;
-                       }
-
-                       return colWidth;
-               }
-
-               //ensure columns resize to take up the correct amount of space
-
-               function scaleColumns(columns, freeSpace, colWidth, shrinkCols) {
-
-                       var oversizeCols = [],
-                           oversizeSpace = 0,
-                           remainingSpace = 0,
-                           nextColWidth = 0,
-                           gap = 0,
-                           changeUnits = 0,
-                           undersizeCols = [];
-
-                       function calcGrow(col) {
-
-                               return colWidth * (col.column.definition.widthGrow || 1);
-                       }
-
-                       function calcShrink(col) {
-
-                               return calcWidth(col.width) - colWidth * (col.column.definition.widthShrink || 0);
-                       }
-
-                       columns.forEach(function (col, i) {
-
-                               var width = shrinkCols ? calcShrink(col) : calcGrow(col);
-
-                               if (col.column.minWidth >= width) {
-
-                                       oversizeCols.push(col);
-                               } else {
-
-                                       undersizeCols.push(col);
-
-                                       changeUnits += shrinkCols ? col.column.definition.widthShrink || 1 : col.column.definition.widthGrow || 1;
-                               }
-                       });
-
-                       if (oversizeCols.length) {
-
-                               oversizeCols.forEach(function (col) {
-
-                                       oversizeSpace += shrinkCols ? col.width - col.column.minWidth : col.column.minWidth;
-
-                                       col.width = col.column.minWidth;
-                               });
-
-                               remainingSpace = freeSpace - oversizeSpace;
-
-                               nextColWidth = changeUnits ? Math.floor(remainingSpace / changeUnits) : remainingSpace;
-
-                               gap = remainingSpace - nextColWidth * changeUnits;
-
-                               gap += scaleColumns(undersizeCols, remainingSpace, nextColWidth, shrinkCols);
-                       } else {
-
-                               gap = changeUnits ? freeSpace - Math.floor(freeSpace / changeUnits) * changeUnits : freeSpace;
-
-                               undersizeCols.forEach(function (column) {
-
-                                       column.width = shrinkCols ? calcShrink(column) : calcGrow(column);
-                               });
-                       }
-
-                       return gap;
-               }
-
-               if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-                       this.table.modules.responsiveLayout.update();
-               }
-
-               //adjust for vertical scrollbar if present
-
-               if (this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight) {
-
-                       totalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;
-               }
-
-               columns.forEach(function (column) {
-
-                       var width, minWidth, colWidth;
-
-                       if (column.visible) {
-
-                               width = column.definition.width;
-
-                               minWidth = parseInt(column.minWidth);
-
-                               if (width) {
-
-                                       colWidth = calcWidth(width);
-
-                                       fixedWidth += colWidth > minWidth ? colWidth : minWidth;
-
-                                       if (column.definition.widthShrink) {
-
-                                               fixedShrinkColumns.push({
-
-                                                       column: column,
-
-                                                       width: colWidth > minWidth ? colWidth : minWidth
-
-                                               });
-
-                                               flexShrinkUnits += column.definition.widthShrink;
-                                       }
-                               } else {
-
-                                       flexColumns.push({
-
-                                               column: column,
-
-                                               width: 0
-
-                                       });
-
-                                       flexGrowUnits += column.definition.widthGrow || 1;
-                               }
-                       }
-               });
-
-               //calculate available space
-
-               flexWidth = totalWidth - fixedWidth;
-
-               //calculate correct column size
-
-               flexColWidth = Math.floor(flexWidth / flexGrowUnits);
-
-               //generate column widths
-
-               var gapFill = scaleColumns(flexColumns, flexWidth, flexColWidth, false);
-
-               //increase width of last column to account for rounding errors
-
-               if (flexColumns.length && gapFill > 0) {
-
-                       flexColumns[flexColumns.length - 1].width += +gapFill;
-               }
-
-               //caculate space for columns to be shrunk into
-
-               flexColumns.forEach(function (col) {
-
-                       flexWidth -= col.width;
-               });
-
-               overflowWidth = Math.abs(gapFill) + flexWidth;
-
-               //shrink oversize columns if there is no available space
-
-               if (overflowWidth > 0 && flexShrinkUnits) {
-
-                       gapFill = scaleColumns(fixedShrinkColumns, overflowWidth, Math.floor(overflowWidth / flexShrinkUnits), true);
-               }
-
-               //decrease width of last column to account for rounding errors
-
-               if (fixedShrinkColumns.length) {
-
-                       fixedShrinkColumns[fixedShrinkColumns.length - 1].width -= gapFill;
-               }
-
-               flexColumns.forEach(function (col) {
-
-                       col.column.setWidth(col.width);
-               });
-
-               fixedShrinkColumns.forEach(function (col) {
-
-                       col.column.setWidth(col.width);
-               });
-       }
-
-};
-
-Tabulator.prototype.registerModule("layout", Layout);
-var Localize = function Localize(table) {
-       this.table = table; //hold Tabulator object
-       this.locale = "default"; //current locale
-       this.lang = false; //current language
-       this.bindings = {}; //update events to call when locale is changed
-};
-
-//set header placehoder
-Localize.prototype.setHeaderFilterPlaceholder = function (placeholder) {
-       this.langs.default.headerFilters.default = placeholder;
-};
-
-//set header filter placeholder by column
-Localize.prototype.setHeaderFilterColumnPlaceholder = function (column, placeholder) {
-       this.langs.default.headerFilters.columns[column] = placeholder;
-
-       if (this.lang && !this.lang.headerFilters.columns[column]) {
-               this.lang.headerFilters.columns[column] = placeholder;
-       }
-};
-
-//setup a lang description object
-Localize.prototype.installLang = function (locale, lang) {
-       if (this.langs[locale]) {
-               this._setLangProp(this.langs[locale], lang);
-       } else {
-               this.langs[locale] = lang;
-       }
-};
-
-Localize.prototype._setLangProp = function (lang, values) {
-       for (var key in values) {
-               if (lang[key] && _typeof(lang[key]) == "object") {
-                       this._setLangProp(lang[key], values[key]);
-               } else {
-                       lang[key] = values[key];
-               }
-       }
-};
-
-//set current locale
-Localize.prototype.setLocale = function (desiredLocale) {
-       var self = this;
-
-       desiredLocale = desiredLocale || "default";
-
-       //fill in any matching languge values
-       function traverseLang(trans, path) {
-               for (var prop in trans) {
-
-                       if (_typeof(trans[prop]) == "object") {
-                               if (!path[prop]) {
-                                       path[prop] = {};
-                               }
-                               traverseLang(trans[prop], path[prop]);
-                       } else {
-                               path[prop] = trans[prop];
-                       }
-               }
-       }
-
-       //determing correct locale to load
-       if (desiredLocale === true && navigator.language) {
-               //get local from system
-               desiredLocale = navigator.language.toLowerCase();
-       }
-
-       if (desiredLocale) {
-
-               //if locale is not set, check for matching top level locale else use default
-               if (!self.langs[desiredLocale]) {
-                       var prefix = desiredLocale.split("-")[0];
-
-                       if (self.langs[prefix]) {
-                               console.warn("Localization Error - Exact matching locale not found, using closest match: ", desiredLocale, prefix);
-                               desiredLocale = prefix;
-                       } else {
-                               console.warn("Localization Error - Matching locale not found, using default: ", desiredLocale);
-                               desiredLocale = "default";
-                       }
-               }
-       }
-
-       self.locale = desiredLocale;
-
-       //load default lang template
-       self.lang = Tabulator.prototype.helpers.deepClone(self.langs.default || {});
-
-       if (desiredLocale != "default") {
-               traverseLang(self.langs[desiredLocale], self.lang);
-       }
-
-       self.table.options.localized.call(self.table, self.locale, self.lang);
-
-       self._executeBindings();
-};
-
-//get current locale
-Localize.prototype.getLocale = function (locale) {
-       return self.locale;
-};
-
-//get lang object for given local or current if none provided
-Localize.prototype.getLang = function (locale) {
-       return locale ? this.langs[locale] : this.lang;
-};
-
-//get text for current locale
-Localize.prototype.getText = function (path, value) {
-       var path = value ? path + "|" + value : path,
-           pathArray = path.split("|"),
-           text = this._getLangElement(pathArray, this.locale);
-
-       // if(text === false){
-       //      console.warn("Localization Error - Matching localized text not found for given path: ", path);
-       // }
-
-       return text || "";
-};
-
-//traverse langs object and find localized copy
-Localize.prototype._getLangElement = function (path, locale) {
-       var self = this;
-       var root = self.lang;
-
-       path.forEach(function (level) {
-               var rootPath;
-
-               if (root) {
-                       rootPath = root[level];
-
-                       if (typeof rootPath != "undefined") {
-                               root = rootPath;
-                       } else {
-                               root = false;
-                       }
-               }
-       });
-
-       return root;
-};
-
-//set update binding
-Localize.prototype.bind = function (path, callback) {
-       if (!this.bindings[path]) {
-               this.bindings[path] = [];
-       }
-
-       this.bindings[path].push(callback);
-
-       callback(this.getText(path), this.lang);
-};
-
-//itterate through bindings and trigger updates
-Localize.prototype._executeBindings = function () {
-       var self = this;
-
-       var _loop = function _loop(path) {
-               self.bindings[path].forEach(function (binding) {
-                       binding(self.getText(path), self.lang);
-               });
-       };
-
-       for (var path in self.bindings) {
-               _loop(path);
-       }
-};
-
-//Localized text listings
-Localize.prototype.langs = {
-       "default": { //hold default locale text
-               "groups": {
-                       "item": "item",
-                       "items": "items"
-               },
-               "columns": {},
-               "ajax": {
-                       "loading": "Loading",
-                       "error": "Error"
-               },
-               "pagination": {
-                       "page_size": "Page Size",
-                       "first": "First",
-                       "first_title": "First Page",
-                       "last": "Last",
-                       "last_title": "Last Page",
-                       "prev": "Prev",
-                       "prev_title": "Prev Page",
-                       "next": "Next",
-                       "next_title": "Next Page"
-               },
-               "headerFilters": {
-                       "default": "filter column...",
-                       "columns": {}
-               }
-       }
-};
-
-Tabulator.prototype.registerModule("localize", Localize);
-var Comms = function Comms(table) {
-       this.table = table;
-};
-
-Comms.prototype.getConnections = function (selectors) {
-       var self = this,
-           connections = [],
-           connection;
-
-       connection = Tabulator.prototype.comms.lookupTable(selectors);
-
-       connection.forEach(function (con) {
-               if (self.table !== con) {
-                       connections.push(con);
-               }
-       });
-
-       return connections;
-};
-
-Comms.prototype.send = function (selectors, module, action, data) {
-       var self = this,
-           connections = this.getConnections(selectors);
-
-       connections.forEach(function (connection) {
-               connection.tableComms(self.table.element, module, action, data);
-       });
-
-       if (!connections.length && selectors) {
-               console.warn("Table Connection Error - No tables matching selector found", selectors);
-       }
-};
-
-Comms.prototype.receive = function (table, module, action, data) {
-       if (this.table.modExists(module)) {
-               return this.table.modules[module].commsReceived(table, action, data);
-       } else {
-               console.warn("Inter-table Comms Error - no such module:", module);
-       }
-};
-
-Tabulator.prototype.registerModule("comms", Comms);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js.old/tabulator_core.min.js b/app/static/vendors/tabulator/js.old/tabulator_core.min.js
deleted file mode 100644 (file)
index feed651..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-/* Tabulator v4.6.3 (c) Oliver Folkerd */
-"use strict";var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};Array.prototype.findIndex||Object.defineProperty(Array.prototype,"findIndex",{value:function(t){if(null==this)throw new TypeError('"this" is null or not defined');var e=Object(this),o=e.length>>>0;if("function"!=typeof t)throw new TypeError("predicate must be a function");for(var i=arguments[1],n=0;n<o;){var s=e[n];if(t.call(i,s,n,e))return n;n++}return-1}}),Array.prototype.find||Object.defineProperty(Array.prototype,"find",{value:function(t){if(null==this)throw new TypeError('"this" is null or not defined');var e=Object(this),o=e.length>>>0;if("function"!=typeof t)throw new TypeError("predicate must be a function");for(var i=arguments[1],n=0;n<o;){var s=e[n];if(t.call(i,s,n,e))return s;n++}}});var ColumnManager=function(t){this.table=t,this.blockHozScrollEvent=!1,this.headersElement=this.createHeadersElement(),this.element=this.createHeaderElement(),this.rowManager=null,this.columns=[],this.columnsByIndex=[],this.columnsByField={},this.scrollLeft=0,this.element.insertBefore(this.headersElement,this.element.firstChild)};ColumnManager.prototype.createHeadersElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-headers"),t},ColumnManager.prototype.createHeaderElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-header"),this.table.options.headerVisible||t.classList.add("tabulator-header-hidden"),t},ColumnManager.prototype.initialize=function(){},ColumnManager.prototype.setRowManager=function(t){this.rowManager=t},ColumnManager.prototype.getElement=function(){return this.element},ColumnManager.prototype.getHeadersElement=function(){return this.headersElement},ColumnManager.prototype.scrollHorizontal=function(t){var e=0,o=this.element.scrollWidth-this.table.element.clientWidth;this.element.scrollLeft=t,t>o?(e=t-o,this.element.style.marginLeft=-e+"px"):this.element.style.marginLeft=0,this.scrollLeft=t,this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.scrollHorizontal()},ColumnManager.prototype.generateColumnsFromRowData=function(t){var e,o,i=[];if(t&&t.length){e=t[0];for(var n in e){var s={field:n,title:n},l=e[n];switch(void 0===l?"undefined":_typeof(l)){case"undefined":o="string";break;case"boolean":o="boolean";break;case"object":o=Array.isArray(l)?"array":"string";break;default:o=isNaN(l)||""===l?l.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)?"alphanum":"string":"number"}s.sorter=o,i.push(s)}this.table.options.columns=i,this.setColumns(this.table.options.columns)}},ColumnManager.prototype.setColumns=function(t,e){for(var o=this;o.headersElement.firstChild;)o.headersElement.removeChild(o.headersElement.firstChild);o.columns=[],o.columnsByIndex=[],o.columnsByField={},o.table.modExists("frozenColumns")&&o.table.modules.frozenColumns.reset(),t.forEach(function(t,e){o._addColumn(t)}),o._reIndexColumns(),o.table.options.responsiveLayout&&o.table.modExists("responsiveLayout",!0)&&o.table.modules.responsiveLayout.initialize(),o.redraw(!0)},ColumnManager.prototype._addColumn=function(t,e,o){var i=new Column(t,this),n=i.getElement(),s=o?this.findColumnIndex(o):o;if(o&&s>-1){var l=this.columns.indexOf(o.getTopColumn()),a=o.getElement();e?(this.columns.splice(l,0,i),a.parentNode.insertBefore(n,a)):(this.columns.splice(l+1,0,i),a.parentNode.insertBefore(n,a.nextSibling))}else e?(this.columns.unshift(i),this.headersElement.insertBefore(i.getElement(),this.headersElement.firstChild)):(this.columns.push(i),this.headersElement.appendChild(i.getElement())),i.columnRendered();return i},ColumnManager.prototype.registerColumnField=function(t){t.definition.field&&(this.columnsByField[t.definition.field]=t)},ColumnManager.prototype.registerColumnPosition=function(t){this.columnsByIndex.push(t)},ColumnManager.prototype._reIndexColumns=function(){this.columnsByIndex=[],this.columns.forEach(function(t){t.reRegisterPosition()})},ColumnManager.prototype._verticalAlignHeaders=function(){var t=this,e=0;t.columns.forEach(function(t){var o;t.clearVerticalAlign(),(o=t.getHeight())>e&&(e=o)}),t.columns.forEach(function(o){o.verticalAlign(t.table.options.columnHeaderVertAlign,e)}),t.rowManager.adjustTableSize()},ColumnManager.prototype.findColumn=function(t){var e=this;if("object"!=(void 0===t?"undefined":_typeof(t)))return this.columnsByField[t]||!1;if(t instanceof Column)return t;if(t instanceof ColumnComponent)return t._getSelf()||!1;if("undefined"!=typeof HTMLElement&&t instanceof HTMLElement){return e.columns.find(function(e){return e.element===t})||!1}return!1},ColumnManager.prototype.getColumnByField=function(t){return this.columnsByField[t]},ColumnManager.prototype.getColumnsByFieldRoot=function(t){var e=this,o=[];return Object.keys(this.columnsByField).forEach(function(i){i.split(".")[0]===t&&o.push(e.columnsByField[i])}),o},ColumnManager.prototype.getColumnByIndex=function(t){return this.columnsByIndex[t]},ColumnManager.prototype.getFirstVisibileColumn=function(t){var t=this.columnsByIndex.findIndex(function(t){return t.visible});return t>-1&&this.columnsByIndex[t]},ColumnManager.prototype.getColumns=function(){return this.columns},ColumnManager.prototype.findColumnIndex=function(t){return this.columnsByIndex.findIndex(function(e){return t===e})},ColumnManager.prototype.getRealColumns=function(){return this.columnsByIndex},ColumnManager.prototype.traverse=function(t){this.columnsByIndex.forEach(function(e,o){t(e,o)})},ColumnManager.prototype.getDefinitions=function(t){var e=this,o=[];return e.columnsByIndex.forEach(function(e){(!t||t&&e.visible)&&o.push(e.getDefinition())}),o},ColumnManager.prototype.getDefinitionTree=function(){var t=this,e=[];return t.columns.forEach(function(t){e.push(t.getDefinition(!0))}),e},ColumnManager.prototype.getComponents=function(t){var e=this,o=[];return(t?e.columns:e.columnsByIndex).forEach(function(t){o.push(t.getComponent())}),o},ColumnManager.prototype.getWidth=function(){var t=0;return this.columnsByIndex.forEach(function(e){e.visible&&(t+=e.getWidth())}),t},ColumnManager.prototype.moveColumn=function(t,e,o){this.moveColumnActual(t,e,o),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),e.element.parentNode.insertBefore(t.element,e.element),o&&e.element.parentNode.insertBefore(e.element,t.element),this._verticalAlignHeaders(),this.table.rowManager.reinitialize()},ColumnManager.prototype.moveColumnActual=function(t,e,o){t.parent.isGroup?this._moveColumnInArray(t.parent.columns,t,e,o):this._moveColumnInArray(this.columns,t,e,o),this._moveColumnInArray(this.columnsByIndex,t,e,o,!0),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.table.options.columnMoved&&this.table.options.columnMoved.call(this.table,t.getComponent(),this.table.columnManager.getComponents()),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.columns&&this.table.modules.persistence.save("columns")},ColumnManager.prototype._moveColumnInArray=function(t,e,o,i,n){var s,l=t.indexOf(e);l>-1&&(t.splice(l,1),s=t.indexOf(o),s>-1?i&&(s+=1):s=l,t.splice(s,0,e),n&&this.table.rowManager.rows.forEach(function(t){if(t.cells.length){var e=t.cells.splice(l,1)[0];t.cells.splice(s,0,e)}}))},ColumnManager.prototype.scrollToColumn=function(t,e,o){var i=this,n=0,s=0,l=0,a=t.getElement();return new Promise(function(r,u){if(void 0===e&&(e=i.table.options.scrollToColumnPosition),void 0===o&&(o=i.table.options.scrollToColumnIfVisible),t.visible){switch(e){case"middle":case"center":l=-i.element.clientWidth/2;break;case"right":l=a.clientWidth-i.headersElement.clientWidth}if(!o&&(s=a.offsetLeft)>0&&s+a.offsetWidth<i.element.clientWidth)return!1;n=a.offsetLeft+i.element.scrollLeft+l,n=Math.max(Math.min(n,i.table.rowManager.element.scrollWidth-i.table.rowManager.element.clientWidth),0),i.table.rowManager.scrollHorizontal(n),i.scrollHorizontal(n),r()}else console.warn("Scroll Error - Column not visible"),u("Scroll Error - Column not visible")})},ColumnManager.prototype.generateCells=function(t){var e=this,o=[];return e.columnsByIndex.forEach(function(e){o.push(e.generateCell(t))}),o},ColumnManager.prototype.getFlexBaseWidth=function(){var t=this,e=t.table.element.clientWidth,o=0;return t.rowManager.element.scrollHeight>t.rowManager.element.clientHeight&&(e-=t.rowManager.element.offsetWidth-t.rowManager.element.clientWidth),this.columnsByIndex.forEach(function(i){var n,s,l;i.visible&&(n=i.definition.width||0,s=void 0===i.minWidth?t.table.options.columnMinWidth:parseInt(i.minWidth),l="string"==typeof n?n.indexOf("%")>-1?e/100*parseInt(n):parseInt(n):n,o+=l>s?l:s)}),o},ColumnManager.prototype.addColumn=function(t,e,o){var i=this;return new Promise(function(n,s){var l=i._addColumn(t,e,o);i._reIndexColumns(),i.table.options.responsiveLayout&&i.table.modExists("responsiveLayout",!0)&&i.table.modules.responsiveLayout.initialize(),i.table.modExists("columnCalcs")&&i.table.modules.columnCalcs.recalc(i.table.rowManager.activeRows),i.redraw(),"fitColumns"!=i.table.modules.layout.getMode()&&l.reinitializeWidth(),i._verticalAlignHeaders(),i.table.rowManager.reinitialize(),n(l)})},ColumnManager.prototype.deregisterColumn=function(t){var e,o=t.getField();o&&delete this.columnsByField[o],e=this.columnsByIndex.indexOf(t),e>-1&&this.columnsByIndex.splice(e,1),e=this.columns.indexOf(t),e>-1&&this.columns.splice(e,1),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.redraw()},ColumnManager.prototype.redraw=function(t){t&&(Tabulator.prototype.helpers.elVisible(this.element)&&this._verticalAlignHeaders(),this.table.rowManager.resetScroll(),this.table.rowManager.reinitialize()),["fitColumns","fitDataStretch"].indexOf(this.table.modules.layout.getMode())>-1?this.table.modules.layout.layout():t?this.table.modules.layout.layout():this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout(),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),t&&(this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.columns&&this.table.modules.persistence.save("columns"),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.redraw()),this.table.footerManager.redraw()};var ColumnComponent=function(t){this._column=t,this.type="ColumnComponent"};ColumnComponent.prototype.getElement=function(){return this._column.getElement()},ColumnComponent.prototype.getDefinition=function(){return this._column.getDefinition()},ColumnComponent.prototype.getField=function(){return this._column.getField()},ColumnComponent.prototype.getCells=function(){var t=[];return this._column.cells.forEach(function(e){t.push(e.getComponent())}),t},ColumnComponent.prototype.getVisibility=function(){return this._column.visible},ColumnComponent.prototype.show=function(){this._column.isGroup?this._column.columns.forEach(function(t){t.show()}):this._column.show()},ColumnComponent.prototype.hide=function(){this._column.isGroup?this._column.columns.forEach(function(t){t.hide()}):this._column.hide()},ColumnComponent.prototype.toggle=function(){this._column.visible?this.hide():this.show()},ColumnComponent.prototype.delete=function(){return this._column.delete()},ColumnComponent.prototype.getSubColumns=function(){var t=[];return this._column.columns.length&&this._column.columns.forEach(function(e){t.push(e.getComponent())}),t},ColumnComponent.prototype.getParentColumn=function(){return this._column.parent instanceof Column&&this._column.parent.getComponent()},ColumnComponent.prototype._getSelf=function(){return this._column},ColumnComponent.prototype.scrollTo=function(){return this._column.table.columnManager.scrollToColumn(this._column)},ColumnComponent.prototype.getTable=function(){return this._column.table},ColumnComponent.prototype.headerFilterFocus=function(){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.setHeaderFilterFocus(this._column)},ColumnComponent.prototype.reloadHeaderFilter=function(){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.reloadHeaderFilter(this._column)},ColumnComponent.prototype.getHeaderFilterValue=function(){if(this._column.table.modExists("filter",!0))return this._column.table.modules.filter.getHeaderFilterValue(this._column)},ColumnComponent.prototype.setHeaderFilterValue=function(t){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.setHeaderFilterValue(this._column,t)},ColumnComponent.prototype.move=function(t,e){var o=this._column.table.columnManager.findColumn(t);o?this._column.table.columnManager.moveColumn(this._column,o,e):console.warn("Move Error - No matching column found:",o)},ColumnComponent.prototype.getNextColumn=function(){var t=this._column.nextColumn();return!!t&&t.getComponent()},ColumnComponent.prototype.getPrevColumn=function(){var t=this._column.prevColumn();return!!t&&t.getComponent()},ColumnComponent.prototype.updateDefinition=function(t){return this._column.updateDefinition(t)};var Column=function t(e,o){var i=this;this.table=o.table,this.definition=e,this.parent=o,this.type="column",this.columns=[],this.cells=[],this.element=this.createElement(),this.contentElement=!1,this.titleElement=!1,this.groupElement=this.createGroupElement(),this.isGroup=!1,this.tooltip=!1,this.hozAlign="",this.vertAlign="",this.field="",this.fieldStructure="",this.getFieldValue="",this.setFieldValue="",this.titleFormatterRendered=!1,this.setField(this.definition.field),this.table.options.invalidOptionWarnings&&this.checkDefinition(),this.modules={},this.cellEvents={cellClick:!1,cellDblClick:!1,cellContext:!1,cellTap:!1,cellDblTap:!1,cellTapHold:!1,cellMouseEnter:!1,cellMouseLeave:!1,cellMouseOver:!1,cellMouseOut:!1,cellMouseMove:!1},this.width=null,this.widthStyled="",this.minWidth=null,this.minWidthStyled="",this.widthFixed=!1,this.visible=!0,this._mapDepricatedFunctionality(),e.columns?(this.isGroup=!0,e.columns.forEach(function(e,o){var n=new t(e,i);i.attachColumn(n)}),i.checkColumnVisibility()):o.registerColumnField(this),e.rowHandle&&!1!==this.table.options.movableRows&&this.table.modExists("moveRow")&&this.table.modules.moveRow.setHandle(!0),this._buildHeader(),this.bindModuleColumns()};Column.prototype.createElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-col"),t.setAttribute("role","columnheader"),t.setAttribute("aria-sort","none"),t},Column.prototype.createGroupElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-col-group-cols"),t},Column.prototype.checkDefinition=function(){var t=this;Object.keys(this.definition).forEach(function(e){-1===t.defaultOptionList.indexOf(e)&&console.warn("Invalid column definition option in '"+(t.field||t.definition.title)+"' column:",e)})},Column.prototype.setField=function(t){this.field=t,this.fieldStructure=t?this.table.options.nestedFieldSeparator?t.split(this.table.options.nestedFieldSeparator):[t]:[],this.getFieldValue=this.fieldStructure.length>1?this._getNestedData:this._getFlatData,this.setFieldValue=this.fieldStructure.length>1?this._setNestedData:this._setFlatData},Column.prototype.registerColumnPosition=function(t){this.parent.registerColumnPosition(t)},Column.prototype.registerColumnField=function(t){this.parent.registerColumnField(t)},Column.prototype.reRegisterPosition=function(){this.isGroup?this.columns.forEach(function(t){t.reRegisterPosition()}):this.registerColumnPosition(this)},Column.prototype._mapDepricatedFunctionality=function(){void 0!==this.definition.hideInHtml&&(this.definition.htmlOutput=!this.definition.hideInHtml,console.warn("hideInHtml column definition property is deprecated, you should now use htmlOutput")),void 0!==this.definition.align&&(this.definition.hozAlign=this.definition.align,console.warn("align column definition property is deprecated, you should now use hozAlign"))},Column.prototype.setTooltip=function(){var t=this,e=t.definition,o=e.headerTooltip||!1===e.tooltip?e.headerTooltip:t.table.options.tooltipsHeader;o?!0===o?e.field?t.table.modules.localize.bind("columns|"+e.field,function(o){t.element.setAttribute("title",o||e.title)}):t.element.setAttribute("title",e.title):("function"==typeof o&&!1===(o=o(t.getComponent()))&&(o=""),t.element.setAttribute("title",o)):t.element.setAttribute("title","")},Column.prototype._buildHeader=function(){for(var t=this,e=t.definition;t.element.firstChild;)t.element.removeChild(t.element.firstChild);e.headerVertical&&(t.element.classList.add("tabulator-col-vertical"),"flip"===e.headerVertical&&t.element.classList.add("tabulator-col-vertical-flip")),t.contentElement=t._bindEvents(),t.contentElement=t._buildColumnHeaderContent(),t.element.appendChild(t.contentElement),t.isGroup?t._buildGroupHeader():t._buildColumnHeader(),t.setTooltip(),t.table.options.resizableColumns&&t.table.modExists("resizeColumns")&&t.table.modules.resizeColumns.initializeColumn("header",t,t.element),e.headerFilter&&t.table.modExists("filter")&&t.table.modExists("edit")&&(void 0!==e.headerFilterPlaceholder&&e.field&&t.table.modules.localize.setHeaderFilterColumnPlaceholder(e.field,e.headerFilterPlaceholder),t.table.modules.filter.initializeColumn(t)),t.table.modExists("frozenColumns")&&t.table.modules.frozenColumns.initializeColumn(t),t.table.options.movableColumns&&!t.isGroup&&t.table.modExists("moveColumn")&&t.table.modules.moveColumn.initializeColumn(t),(e.topCalc||e.bottomCalc)&&t.table.modExists("columnCalcs")&&t.table.modules.columnCalcs.initializeColumn(t),t.table.modExists("persistence")&&t.table.modules.persistence.config.columns&&t.table.modules.persistence.initializeColumn(t),t.element.addEventListener("mouseenter",function(e){t.setTooltip()})},Column.prototype._bindEvents=function(){var t,e,o,i=this,n=i.definition;"function"==typeof n.headerClick&&i.element.addEventListener("click",function(t){n.headerClick(t,i.getComponent())}),"function"==typeof n.headerDblClick&&i.element.addEventListener("dblclick",function(t){n.headerDblClick(t,i.getComponent())}),"function"==typeof n.headerContext&&i.element.addEventListener("contextmenu",function(t){n.headerContext(t,i.getComponent())}),"function"==typeof n.headerTap&&(o=!1,i.element.addEventListener("touchstart",function(t){o=!0},{passive:!0}),i.element.addEventListener("touchend",function(t){o&&n.headerTap(t,i.getComponent()),o=!1})),"function"==typeof n.headerDblTap&&(t=null,i.element.addEventListener("touchend",function(e){t?(clearTimeout(t),t=null,n.headerDblTap(e,i.getComponent())):t=setTimeout(function(){clearTimeout(t),t=null},300)})),"function"==typeof n.headerTapHold&&(e=null,i.element.addEventListener("touchstart",function(t){clearTimeout(e),e=setTimeout(function(){clearTimeout(e),e=null,o=!1,n.headerTapHold(t,i.getComponent())},1e3)},{passive:!0}),i.element.addEventListener("touchend",function(t){clearTimeout(e),e=null})),"function"==typeof n.cellClick&&(i.cellEvents.cellClick=n.cellClick),"function"==typeof n.cellDblClick&&(i.cellEvents.cellDblClick=n.cellDblClick),"function"==typeof n.cellContext&&(i.cellEvents.cellContext=n.cellContext),"function"==typeof n.cellMouseEnter&&(i.cellEvents.cellMouseEnter=n.cellMouseEnter),"function"==typeof n.cellMouseLeave&&(i.cellEvents.cellMouseLeave=n.cellMouseLeave),"function"==typeof n.cellMouseOver&&(i.cellEvents.cellMouseOver=n.cellMouseOver),"function"==typeof n.cellMouseOut&&(i.cellEvents.cellMouseOut=n.cellMouseOut),"function"==typeof n.cellMouseMove&&(i.cellEvents.cellMouseMove=n.cellMouseMove),"function"==typeof n.cellTap&&(i.cellEvents.cellTap=n.cellTap),"function"==typeof n.cellDblTap&&(i.cellEvents.cellDblTap=n.cellDblTap),"function"==typeof n.cellTapHold&&(i.cellEvents.cellTapHold=n.cellTapHold),"function"==typeof n.cellEdited&&(i.cellEvents.cellEdited=n.cellEdited),"function"==typeof n.cellEditing&&(i.cellEvents.cellEditing=n.cellEditing),"function"==typeof n.cellEditCancelled&&(i.cellEvents.cellEditCancelled=n.cellEditCancelled)},Column.prototype._buildColumnHeader=function(){var t=this,e=t.definition,o=t.table;if(o.modExists("sort")&&o.modules.sort.initializeColumn(t,t.contentElement),(e.headerContextMenu||e.headerMenu)&&o.modExists("menu")&&o.modules.menu.initializeColumnHeader(t),o.modExists("format")&&o.modules.format.initializeColumn(t),void 0!==e.editor&&o.modExists("edit")&&o.modules.edit.initializeColumn(t),void 0!==e.validator&&o.modExists("validate")&&o.modules.validate.initializeColumn(t),o.modExists("mutator")&&o.modules.mutator.initializeColumn(t),o.modExists("accessor")&&o.modules.accessor.initializeColumn(t),_typeof(o.options.responsiveLayout)&&o.modExists("responsiveLayout")&&o.modules.responsiveLayout.initializeColumn(t),void 0!==e.visible&&(e.visible?t.show(!0):t.hide(!0)),e.cssClass){e.cssClass.split(" ").forEach(function(e){t.element.classList.add(e)})}e.field&&this.element.setAttribute("tabulator-field",e.field),t.setMinWidth(void 0===e.minWidth?t.table.options.columnMinWidth:parseInt(e.minWidth)),t.reinitializeWidth(),t.tooltip=t.definition.tooltip||!1===t.definition.tooltip?t.definition.tooltip:t.table.options.tooltips,t.hozAlign=void 0===t.definition.hozAlign?t.table.options.cellHozAlign:t.definition.hozAlign,t.vertAlign=void 0===t.definition.vertAlign?t.table.options.cellVertAlign:t.definition.vertAlign},Column.prototype._buildColumnHeaderContent=function(){var t=(this.definition,this.table,document.createElement("div"));return t.classList.add("tabulator-col-content"),this.titleElement=this._buildColumnHeaderTitle(),t.appendChild(this.titleElement),t},Column.prototype._buildColumnHeaderTitle=function(){var t=this,e=t.definition,o=t.table,i=document.createElement("div");if(i.classList.add("tabulator-col-title"),e.editableTitle){var n=document.createElement("input");n.classList.add("tabulator-title-editor"),n.addEventListener("click",function(t){t.stopPropagation(),n.focus()}),n.addEventListener("change",function(){e.title=n.value,o.options.columnTitleChanged.call(t.table,t.getComponent())}),i.appendChild(n),e.field?o.modules.localize.bind("columns|"+e.field,function(t){n.value=t||e.title||"&nbsp;"}):n.value=e.title||"&nbsp;"}else e.field?o.modules.localize.bind("columns|"+e.field,function(o){t._formatColumnHeaderTitle(i,o||e.title||"&nbsp;")}):t._formatColumnHeaderTitle(i,e.title||"&nbsp;");return i},Column.prototype._formatColumnHeaderTitle=function(t,e){var o,i,n,s,l,a=this;if(this.definition.titleFormatter&&this.table.modExists("format"))switch(o=this.table.modules.format.getFormatter(this.definition.titleFormatter),l=function(t){a.titleFormatterRendered=t},s={getValue:function(){return e},getElement:function(){return t}},n=this.definition.titleFormatterParams||{},n="function"==typeof n?n():n,i=o.call(this.table.modules.format,s,n,l),void 0===i?"undefined":_typeof(i)){case"object":i instanceof Node?t.appendChild(i):(t.innerHTML="",console.warn("Format Error - Title formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:",i));break;case"undefined":case"null":t.innerHTML="";break;default:t.innerHTML=i}else t.innerHTML=e},Column.prototype._buildGroupHeader=function(){var t=this;if(this.element.classList.add("tabulator-col-group"),this.element.setAttribute("role","columngroup"),this.element.setAttribute("aria-title",this.definition.title),this.definition.cssClass){this.definition.cssClass.split(" ").forEach(function(e){t.element.classList.add(e)})}this.element.appendChild(this.groupElement)},Column.prototype._getFlatData=function(t){return t[this.field]},Column.prototype._getNestedData=function(t){for(var e,o=t,i=this.fieldStructure,n=i.length,s=0;s<n&&(o=o[i[s]],e=o,o);s++);return e},Column.prototype._setFlatData=function(t,e){this.field&&(t[this.field]=e)},Column.prototype._setNestedData=function(t,e){for(var o=t,i=this.fieldStructure,n=i.length,s=0;s<n;s++)if(s==n-1)o[i[s]]=e;else{if(!o[i[s]]){if(void 0===e)break;o[i[s]]={}}o=o[i[s]]}},Column.prototype.attachColumn=function(t){var e=this;e.groupElement?(e.columns.push(t),e.groupElement.appendChild(t.getElement())):console.warn("Column Warning - Column being attached to another column instead of column group")},Column.prototype.verticalAlign=function(t,e){var o=this.parent.isGroup?this.parent.getGroupElement().clientHeight:e||this.parent.getHeadersElement().clientHeight;this.element.style.height=o+"px",this.isGroup&&(this.groupElement.style.minHeight=o-this.contentElement.offsetHeight+"px"),this.isGroup||"top"===t||(this.element.style.paddingTop="bottom"===t?this.element.clientHeight-this.contentElement.offsetHeight+"px":(this.element.clientHeight-this.contentElement.offsetHeight)/2+"px"),this.columns.forEach(function(e){e.verticalAlign(t)})},Column.prototype.clearVerticalAlign=function(){this.element.style.paddingTop="",this.element.style.height="",this.element.style.minHeight="",this.groupElement.style.minHeight="",this.columns.forEach(function(t){t.clearVerticalAlign()})},Column.prototype.bindModuleColumns=function(){"rownum"==this.definition.formatter&&(this.table.rowManager.rowNumColumn=this)},Column.prototype.getElement=function(){return this.element},Column.prototype.getGroupElement=function(){return this.groupElement},Column.prototype.getField=function(){return this.field},Column.prototype.getFirstColumn=function(){return this.isGroup?!!this.columns.length&&this.columns[0].getFirstColumn():this},Column.prototype.getLastColumn=function(){return this.isGroup?!!this.columns.length&&this.columns[this.columns.length-1].getLastColumn():this},Column.prototype.getColumns=function(){return this.columns},Column.prototype.getCells=function(){return this.cells},Column.prototype.getTopColumn=function(){return this.parent.isGroup?this.parent.getTopColumn():this},Column.prototype.getDefinition=function(t){var e=[];return this.isGroup&&t&&(this.columns.forEach(function(t){e.push(t.getDefinition(!0))}),this.definition.columns=e),this.definition},Column.prototype.checkColumnVisibility=function(){var t=!1;this.columns.forEach(function(e){e.visible&&(t=!0)}),t?(this.show(),this.parent.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!1)):this.hide()},Column.prototype.show=function(t,e){this.visible||(this.visible=!0,this.element.style.display="",this.parent.isGroup&&this.parent.checkColumnVisibility(),this.cells.forEach(function(t){t.show()}),this.isGroup||null!==this.width||this.reinitializeWidth(),this.table.columnManager._verticalAlignHeaders(),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.columns&&this.table.modules.persistence.save("columns"),!e&&this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.updateColumnVisibility(this,this.visible),t||this.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!0),this.parent.isGroup&&this.parent.matchChildWidths())},Column.prototype.hide=function(t,e){this.visible&&(this.visible=!1,this.element.style.display="none",this.table.columnManager._verticalAlignHeaders(),this.parent.isGroup&&this.parent.checkColumnVisibility(),this.cells.forEach(function(t){t.hide()}),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.columns&&this.table.modules.persistence.save("columns"),!e&&this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.updateColumnVisibility(this,this.visible),t||this.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!1),this.parent.isGroup&&this.parent.matchChildWidths())},Column.prototype.matchChildWidths=function(){var t=0;this.contentElement&&this.columns.length&&(this.columns.forEach(function(e){e.visible&&(t+=e.getWidth())}),this.contentElement.style.maxWidth=t-1+"px",this.parent.isGroup&&this.parent.matchChildWidths())},Column.prototype.setWidth=function(t){this.widthFixed=!0,this.setWidthActual(t)},Column.prototype.setWidthActual=function(t){isNaN(t)&&(t=Math.floor(this.table.element.clientWidth/100*parseInt(t))),t=Math.max(this.minWidth,t),this.width=t,this.widthStyled=t?t+"px":"",this.element.style.width=this.widthStyled,this.isGroup||this.cells.forEach(function(t){t.setWidth()}),this.parent.isGroup&&this.parent.matchChildWidths(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout()},Column.prototype.checkCellHeights=function(){var t=[];this.cells.forEach(function(e){e.row.heightInitialized&&(null!==e.row.getElement().offsetParent?(t.push(e.row),e.row.clearCellHeight()):e.row.heightInitialized=!1)}),t.forEach(function(t){t.calcHeight()}),t.forEach(function(t){t.setCellHeight()})},Column.prototype.getWidth=function(){var t=0;return this.isGroup?this.columns.forEach(function(e){e.visible&&(t+=e.getWidth())}):t=this.width,t},Column.prototype.getHeight=function(){return this.element.offsetHeight},Column.prototype.setMinWidth=function(t){this.minWidth=t,this.minWidthStyled=t?t+"px":"",this.element.style.minWidth=this.minWidthStyled,this.cells.forEach(function(t){t.setMinWidth()})},Column.prototype.delete=function(){var t=this;return new Promise(function(e,o){t.isGroup&&t.columns.forEach(function(t){t.delete()}),t.table.modExists("edit")&&t.table.modules.edit.currentCell.column===t&&t.table.modules.edit.cancelEdit();for(var i=t.cells.length,n=0;n<i;n++)t.cells[0].delete();t.element.parentNode.removeChild(t.element),t.table.columnManager.deregisterColumn(t),e()})},Column.prototype.columnRendered=function(){this.titleFormatterRendered&&this.titleFormatterRendered()},Column.prototype.generateCell=function(t){var e=this,o=new Cell(e,t);return this.cells.push(o),o},Column.prototype.nextColumn=function(){var t=this.table.columnManager.findColumnIndex(this);return t>-1&&this._nextVisibleColumn(t+1)},Column.prototype._nextVisibleColumn=function(t){var e=this.table.columnManager.getColumnByIndex(t);return!e||e.visible?e:this._nextVisibleColumn(t+1)},Column.prototype.prevColumn=function(){var t=this.table.columnManager.findColumnIndex(this);return t>-1&&this._prevVisibleColumn(t-1)},Column.prototype._prevVisibleColumn=function(t){var e=this.table.columnManager.getColumnByIndex(t);return!e||e.visible?e:this._prevVisibleColumn(t-1)},Column.prototype.reinitializeWidth=function(t){this.widthFixed=!1,void 0===this.definition.width||t||this.setWidth(this.definition.width),this.table.modExists("filter")&&this.table.modules.filter.hideHeaderFilterElements(),this.fitToData(),this.table.modExists("filter")&&this.table.modules.filter.showHeaderFilterElements()},Column.prototype.fitToData=function(){var t=this;this.widthFixed||(this.element.style.width="",t.cells.forEach(function(t){t.clearWidth()}));var e=this.element.offsetWidth;t.width&&this.widthFixed||(t.cells.forEach(function(t){var o=t.getWidth();o>e&&(e=o)}),e&&t.setWidthActual(e+1))},Column.prototype.updateDefinition=function(t){var e=this;return new Promise(function(o,i){var n;e.isGroup?(console.warn("Column Update Error - The updateDefintion function is only available on columns, not column groups"),i("Column Update Error - The updateDefintion function is only available on columns, not column groups")):(n=Object.assign({},e.getDefinition()),n=Object.assign(n,t),e.table.columnManager.addColumn(n,!1,e).then(function(t){n.field==e.field&&(e.field=!1),
-e.delete().then(function(){o(t.getComponent())}).catch(function(t){i(t)})}).catch(function(t){i(t)}))})},Column.prototype.deleteCell=function(t){var e=this.cells.indexOf(t);e>-1&&this.cells.splice(e,1)},Column.prototype.defaultOptionList=["title","field","columns","visible","align","hozAlign","vertAlign","width","minWidth","widthGrow","widthShrink","resizable","frozen","responsive","tooltip","cssClass","rowHandle","hideInHtml","print","htmlOutput","sorter","sorterParams","formatter","formatterParams","variableHeight","editable","editor","editorParams","validator","mutator","mutatorParams","mutatorData","mutatorDataParams","mutatorEdit","mutatorEditParams","mutatorClipboard","mutatorClipboardParams","accessor","accessorParams","accessorData","accessorDataParams","accessorDownload","accessorDownloadParams","accessorClipboard","accessorClipboardParams","accessorPrint","accessorPrintParams","accessorHtmlOutput","accessorHtmlOutputParams","clipboard","download","downloadTitle","topCalc","topCalcParams","topCalcFormatter","topCalcFormatterParams","bottomCalc","bottomCalcParams","bottomCalcFormatter","bottomCalcFormatterParams","cellClick","cellDblClick","cellContext","cellTap","cellDblTap","cellTapHold","cellMouseEnter","cellMouseLeave","cellMouseOver","cellMouseOut","cellMouseMove","cellEditing","cellEdited","cellEditCancelled","headerSort","headerSortStartingDir","headerSortTristate","headerClick","headerDblClick","headerContext","headerTap","headerDblTap","headerTapHold","headerTooltip","headerVertical","editableTitle","titleFormatter","titleFormatterParams","headerFilter","headerFilterPlaceholder","headerFilterParams","headerFilterEmptyCheck","headerFilterFunc","headerFilterFuncParams","headerFilterLiveFilter","print","headerContextMenu","headerMenu","contextMenu","formatterPrint","formatterPrintParams","formatterClipboard","formatterClipboardParams","formatterHtmlOutput","formatterHtmlOutputParams"],Column.prototype.getComponent=function(){return new ColumnComponent(this)};var RowManager=function(t){this.table=t,this.element=this.createHolderElement(),this.tableElement=this.createTableElement(),this.heightFixer=this.createTableElement(),this.columnManager=null,this.height=0,this.firstRender=!1,this.renderMode="virtual",this.fixedHeight=!1,this.rows=[],this.activeRows=[],this.activeRowsCount=0,this.displayRows=[],this.displayRowsCount=0,this.scrollTop=0,this.scrollLeft=0,this.vDomRowHeight=20,this.vDomTop=0,this.vDomBottom=0,this.vDomScrollPosTop=0,this.vDomScrollPosBottom=0,this.vDomTopPad=0,this.vDomBottomPad=0,this.vDomMaxRenderChain=90,this.vDomWindowBuffer=0,this.vDomWindowMinTotalRows=20,this.vDomWindowMinMarginRows=5,this.vDomTopNewRows=[],this.vDomBottomNewRows=[],this.rowNumColumn=!1,this.redrawBlock=!1,this.redrawBlockRestoreConfig=!1,this.redrawBlockRederInPosition=!1};RowManager.prototype.createHolderElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-tableHolder"),t.setAttribute("tabindex",0),t},RowManager.prototype.createTableElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-table"),t},RowManager.prototype.getElement=function(){return this.element},RowManager.prototype.getTableElement=function(){return this.tableElement},RowManager.prototype.getRowPosition=function(t,e){return e?this.activeRows.indexOf(t):this.rows.indexOf(t)},RowManager.prototype.setColumnManager=function(t){this.columnManager=t},RowManager.prototype.initialize=function(){var t=this;t.setRenderMode(),t.element.appendChild(t.tableElement),t.firstRender=!0,t.element.addEventListener("scroll",function(){var e=t.element.scrollLeft;t.scrollLeft!=e&&(t.columnManager.scrollHorizontal(e),t.table.options.groupBy&&t.table.modules.groupRows.scrollHeaders(e),t.table.modExists("columnCalcs")&&t.table.modules.columnCalcs.scrollHorizontal(e),t.table.options.scrollHorizontal(e)),t.scrollLeft=e}),"virtual"===this.renderMode&&t.element.addEventListener("scroll",function(){var e=t.element.scrollTop,o=t.scrollTop>e;t.scrollTop!=e?(t.scrollTop=e,t.scrollVertical(o),"scroll"==t.table.options.ajaxProgressiveLoad&&t.table.modules.ajax.nextPage(t.element.scrollHeight-t.element.clientHeight-e),t.table.options.scrollVertical(e)):t.scrollTop=e})},RowManager.prototype.findRow=function(t){var e=this;if("object"!=(void 0===t?"undefined":_typeof(t))){if(void 0===t||null===t)return!1;return e.rows.find(function(o){return o.data[e.table.options.index]==t})||!1}if(t instanceof Row)return t;if(t instanceof RowComponent)return t._getSelf()||!1;if("undefined"!=typeof HTMLElement&&t instanceof HTMLElement){return e.rows.find(function(e){return e.element===t})||!1}return!1},RowManager.prototype.getRowFromDataObject=function(t){return this.rows.find(function(e){return e.data===t})||!1},RowManager.prototype.getRowFromPosition=function(t,e){return e?this.activeRows[t]:this.rows[t]},RowManager.prototype.scrollToRow=function(t,e,o){var i,n=this,s=this.getDisplayRows().indexOf(t),l=t.getElement(),a=0;return new Promise(function(t,r){if(s>-1){if(void 0===e&&(e=n.table.options.scrollToRowPosition),void 0===o&&(o=n.table.options.scrollToRowIfVisible),"nearest"===e)switch(n.renderMode){case"classic":i=Tabulator.prototype.helpers.elOffset(l).top,e=Math.abs(n.element.scrollTop-i)>Math.abs(n.element.scrollTop+n.element.clientHeight-i)?"bottom":"top";break;case"virtual":e=Math.abs(n.vDomTop-s)>Math.abs(n.vDomBottom-s)?"bottom":"top"}if(!o&&Tabulator.prototype.helpers.elVisible(l)&&(a=Tabulator.prototype.helpers.elOffset(l).top-Tabulator.prototype.helpers.elOffset(n.element).top)>0&&a<n.element.clientHeight-l.offsetHeight)return!1;switch(n.renderMode){case"classic":n.element.scrollTop=Tabulator.prototype.helpers.elOffset(l).top-Tabulator.prototype.helpers.elOffset(n.element).top+n.element.scrollTop;break;case"virtual":n._virtualRenderFill(s,!0)}switch(e){case"middle":case"center":n.element.scrollHeight-n.element.scrollTop==n.element.clientHeight?n.element.scrollTop=n.element.scrollTop+(l.offsetTop-n.element.scrollTop)-(n.element.scrollHeight-l.offsetTop)/2:n.element.scrollTop=n.element.scrollTop-n.element.clientHeight/2;break;case"bottom":n.element.scrollHeight-n.element.scrollTop==n.element.clientHeight?n.element.scrollTop=n.element.scrollTop-(n.element.scrollHeight-l.offsetTop)+l.offsetHeight:n.element.scrollTop=n.element.scrollTop-n.element.clientHeight+l.offsetHeight}t()}else console.warn("Scroll Error - Row not visible"),r("Scroll Error - Row not visible")})},RowManager.prototype.setData=function(t,e,o){var i=this,n=this;return new Promise(function(s,l){e&&i.getDisplayRows().length?n.table.options.pagination?n._setDataActual(t,!0):i.reRenderInPosition(function(){n._setDataActual(t)}):(i.table.options.autoColumns&&o&&i.table.columnManager.generateColumnsFromRowData(t),i.resetScroll(),i._setDataActual(t)),s()})},RowManager.prototype._setDataActual=function(t,e){var o=this;o.table.options.dataLoading.call(this.table,t),this._wipeElements(),this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.clear(),Array.isArray(t)?(this.table.modExists("selectRow")&&this.table.modules.selectRow.clearSelectionData(),this.table.options.reactiveData&&this.table.modExists("reactiveData",!0)&&this.table.modules.reactiveData.watchData(t),t.forEach(function(t,e){if(t&&"object"===(void 0===t?"undefined":_typeof(t))){var i=new Row(t,o);o.rows.push(i)}else console.warn("Data Loading Warning - Invalid row data detected and ignored, expecting object but received:",t)}),o.table.options.dataLoaded.call(this.table,t),o.refreshActiveData(!1,!1,e)):console.error("Data Loading Error - Unable to process data due to invalid data type \nExpecting: array \nReceived: ",void 0===t?"undefined":_typeof(t),"\nData:     ",t)},RowManager.prototype._wipeElements=function(){this.rows.forEach(function(t){t.wipe()}),this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.wipe(),this.rows=[]},RowManager.prototype.deleteRow=function(t,e){var o=this.rows.indexOf(t),i=this.activeRows.indexOf(t);i>-1&&this.activeRows.splice(i,1),o>-1&&this.rows.splice(o,1),this.setActiveRows(this.activeRows),this.displayRowIterator(function(e){var o=e.indexOf(t);o>-1&&e.splice(o,1)}),e||this.reRenderInPosition(),this.regenerateRowNumbers(),this.table.options.rowDeleted.call(this.table,t.getComponent()),this.table.options.dataEdited.call(this.table,this.getData()),this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.groupRows.updateGroupRows(!0):this.table.options.pagination&&this.table.modExists("page")?this.refreshActiveData(!1,!1,!0):this.table.options.pagination&&this.table.modExists("page")&&this.refreshActiveData("page")},RowManager.prototype.addRow=function(t,e,o,i){var n=this.addRowActual(t,e,o,i);return this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("rowAdd",n,{data:t,pos:e,index:o}),n},RowManager.prototype.addRows=function(t,e,o){var i=this,n=this,s=0,l=[];return new Promise(function(a,r){e=i.findAddRowPos(e),Array.isArray(t)||(t=[t]),s=t.length-1,(void 0===o&&e||void 0!==o&&!e)&&t.reverse(),t.forEach(function(t,i){var s=n.addRow(t,e,o,!0);l.push(s)}),i.table.options.groupBy&&i.table.modExists("groupRows")?i.table.modules.groupRows.updateGroupRows(!0):i.table.options.pagination&&i.table.modExists("page")?i.refreshActiveData(!1,!1,!0):i.reRenderInPosition(),i.table.modExists("columnCalcs")&&i.table.modules.columnCalcs.recalc(i.table.rowManager.activeRows),i.regenerateRowNumbers(),a(l)})},RowManager.prototype.findAddRowPos=function(t){return void 0===t&&(t=this.table.options.addRowPos),"pos"===t&&(t=!0),"bottom"===t&&(t=!1),t},RowManager.prototype.addRowActual=function(t,e,o,i){var n,s,l=t instanceof Row?t:new Row(t||{},this),a=this.findAddRowPos(e),r=-1;if(!o&&this.table.options.pagination&&"page"==this.table.options.paginationAddRow&&(s=this.getDisplayRows(),a?s.length?o=s[0]:this.activeRows.length&&(o=this.activeRows[this.activeRows.length-1],a=!1):s.length&&(o=s[s.length-1],a=!(s.length<this.table.modules.page.getPageSize()))),void 0!==o&&(o=this.findRow(o)),this.table.options.groupBy&&this.table.modExists("groupRows")){this.table.modules.groupRows.assignRowToGroup(l);var u=l.getGroup().rows;u.length>1&&(!o||o&&-1==u.indexOf(o)?a?u[0]!==l&&(o=u[0],this._moveRowInArray(l.getGroup().rows,l,o,!a)):u[u.length-1]!==l&&(o=u[u.length-1],this._moveRowInArray(l.getGroup().rows,l,o,!a)):this._moveRowInArray(l.getGroup().rows,l,o,!a))}return o&&(r=this.rows.indexOf(o)),o&&r>-1?(n=this.activeRows.indexOf(o),this.displayRowIterator(function(t){var e=t.indexOf(o);e>-1&&t.splice(a?e:e+1,0,l)}),n>-1&&this.activeRows.splice(a?n:n+1,0,l),this.rows.splice(a?r:r+1,0,l)):a?(this.displayRowIterator(function(t){t.unshift(l)}),this.activeRows.unshift(l),this.rows.unshift(l)):(this.displayRowIterator(function(t){t.push(l)}),this.activeRows.push(l),this.rows.push(l)),this.setActiveRows(this.activeRows),this.table.options.rowAdded.call(this.table,l.getComponent()),this.table.options.dataEdited.call(this.table,this.getData()),i||this.reRenderInPosition(),l},RowManager.prototype.moveRow=function(t,e,o){this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("rowMove",t,{posFrom:this.getRowPosition(t),posTo:this.getRowPosition(e),to:e,after:o}),this.moveRowActual(t,e,o),this.regenerateRowNumbers(),this.table.options.rowMoved.call(this.table,t.getComponent())},RowManager.prototype.moveRowActual=function(t,e,o){var i=this;if(this._moveRowInArray(this.rows,t,e,o),this._moveRowInArray(this.activeRows,t,e,o),this.displayRowIterator(function(n){i._moveRowInArray(n,t,e,o)}),this.table.options.groupBy&&this.table.modExists("groupRows")){!o&&e instanceof Group&&(e=this.table.rowManager.prevDisplayRow(t)||e);var n=e.getGroup(),s=t.getGroup();n===s?this._moveRowInArray(n.rows,t,e,o):(s&&s.removeRow(t),n.insertRow(t,e,o))}},RowManager.prototype._moveRowInArray=function(t,e,o,i){var n,s,l,a;if(e!==o&&(n=t.indexOf(e),n>-1&&(t.splice(n,1),s=t.indexOf(o),s>-1?i?t.splice(s+1,0,e):t.splice(s,0,e):t.splice(n,0,e)),t===this.getDisplayRows())){l=n<s?n:s,a=s>n?s:n+1;for(var r=l;r<=a;r++)t[r]&&this.styleRow(t[r],r)}},RowManager.prototype.clearData=function(){this.setData([])},RowManager.prototype.getRowIndex=function(t){return this.findRowIndex(t,this.rows)},RowManager.prototype.getDisplayRowIndex=function(t){var e=this.getDisplayRows().indexOf(t);return e>-1&&e},RowManager.prototype.nextDisplayRow=function(t,e){var o=this.getDisplayRowIndex(t),i=!1;return!1!==o&&o<this.displayRowsCount-1&&(i=this.getDisplayRows()[o+1]),!i||i instanceof Row&&"row"==i.type?i:this.nextDisplayRow(i,e)},RowManager.prototype.prevDisplayRow=function(t,e){var o=this.getDisplayRowIndex(t),i=!1;return o&&(i=this.getDisplayRows()[o-1]),!e||!i||i instanceof Row&&"row"==i.type?i:this.prevDisplayRow(i,e)},RowManager.prototype.findRowIndex=function(t,e){var o;return!!((t=this.findRow(t))&&(o=e.indexOf(t))>-1)&&o},RowManager.prototype.getData=function(t,e){var o=[];return this.getRows(t).forEach(function(t){"row"==t.type&&o.push(t.getData(e||"data"))}),o},RowManager.prototype.getComponents=function(t){var e=[];return this.getRows(t).forEach(function(t){e.push(t.getComponent())}),e},RowManager.prototype.getDataCount=function(t){return this.getRows(t).length},RowManager.prototype._genRemoteRequest=function(){var t=this,e=this.table,o=e.options,i={};if(e.modExists("page")){if(o.ajaxSorting){var n=this.table.modules.sort.getSort();n.forEach(function(t){delete t.column}),i[this.table.modules.page.paginationDataSentNames.sorters]=n}if(o.ajaxFiltering){var s=this.table.modules.filter.getFilters(!0,!0);i[this.table.modules.page.paginationDataSentNames.filters]=s}this.table.modules.ajax.setParams(i,!0)}e.modules.ajax.sendRequest().then(function(e){t._setDataActual(e,!0)}).catch(function(t){})},RowManager.prototype.filterRefresh=function(){var t=this.table,e=t.options,o=this.scrollLeft;e.ajaxFiltering?"remote"==e.pagination&&t.modExists("page")?(t.modules.page.reset(!0),t.modules.page.setPage(1).then(function(){}).catch(function(){})):e.ajaxProgressiveLoad?t.modules.ajax.loadData().then(function(){}).catch(function(){}):this._genRemoteRequest():this.refreshActiveData("filter"),this.scrollHorizontal(o)},RowManager.prototype.sorterRefresh=function(t){var e=this.table,o=this.table.options,i=this.scrollLeft;o.ajaxSorting?("remote"==o.pagination||o.progressiveLoad)&&e.modExists("page")?(e.modules.page.reset(!0),e.modules.page.setPage(1).then(function(){}).catch(function(){})):o.ajaxProgressiveLoad?e.modules.ajax.loadData().then(function(){}).catch(function(){}):this._genRemoteRequest():this.refreshActiveData(t?"filter":"sort"),this.scrollHorizontal(i)},RowManager.prototype.scrollHorizontal=function(t){this.scrollLeft=t,this.element.scrollLeft=t,this.table.options.groupBy&&this.table.modules.groupRows.scrollHeaders(t),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.scrollHorizontal(t)},RowManager.prototype.refreshActiveData=function(t,e,o){var i,n=this,s=this.table,l=["all","filter","sort","display","freeze","group","tree","page"];if(this.redrawBlock)return void((!this.redrawBlockRestoreConfig||l.indexOf(t)<l.indexOf(this.redrawBlockRestoreConfig.stage))&&(this.redrawBlockRestoreConfig={stage:t,skipStage:e,renderInPosition:o}));switch(n.table.modExists("edit")&&n.table.modules.edit.cancelEdit(),t||(t="all"),s.options.selectable&&!s.options.selectablePersistence&&s.modExists("selectRow")&&s.modules.selectRow.deselectRows(),t){case"all":case"filter":e?e=!1:s.modExists("filter")?n.setActiveRows(s.modules.filter.filter(n.rows)):n.setActiveRows(n.rows.slice(0));case"sort":e?e=!1:s.modExists("sort")&&s.modules.sort.sort(this.activeRows),this.regenerateRowNumbers();case"display":this.resetDisplayRows();case"freeze":e?e=!1:this.table.modExists("frozenRows")&&s.modules.frozenRows.isFrozen()&&(s.modules.frozenRows.getDisplayIndex()||s.modules.frozenRows.setDisplayIndex(this.getNextDisplayIndex()),i=s.modules.frozenRows.getDisplayIndex(),!0!==(i=n.setDisplayRows(s.modules.frozenRows.getRows(this.getDisplayRows(i-1)),i))&&s.modules.frozenRows.setDisplayIndex(i));case"group":e?e=!1:s.options.groupBy&&s.modExists("groupRows")&&(s.modules.groupRows.getDisplayIndex()||s.modules.groupRows.setDisplayIndex(this.getNextDisplayIndex()),i=s.modules.groupRows.getDisplayIndex(),!0!==(i=n.setDisplayRows(s.modules.groupRows.getRows(this.getDisplayRows(i-1)),i))&&s.modules.groupRows.setDisplayIndex(i));case"tree":e?e=!1:s.options.dataTree&&s.modExists("dataTree")&&(s.modules.dataTree.getDisplayIndex()||s.modules.dataTree.setDisplayIndex(this.getNextDisplayIndex()),i=s.modules.dataTree.getDisplayIndex(),!0!==(i=n.setDisplayRows(s.modules.dataTree.getRows(this.getDisplayRows(i-1)),i))&&s.modules.dataTree.setDisplayIndex(i)),s.options.pagination&&s.modExists("page")&&!o&&"local"==s.modules.page.getMode()&&s.modules.page.reset();case"page":e?e=!1:s.options.pagination&&s.modExists("page")&&(s.modules.page.getDisplayIndex()||s.modules.page.setDisplayIndex(this.getNextDisplayIndex()),i=s.modules.page.getDisplayIndex(),"local"==s.modules.page.getMode()&&s.modules.page.setMaxRows(this.getDisplayRows(i-1).length),!0!==(i=n.setDisplayRows(s.modules.page.getRows(this.getDisplayRows(i-1)),i))&&s.modules.page.setDisplayIndex(i))}Tabulator.prototype.helpers.elVisible(n.element)&&(o?n.reRenderInPosition():(n.renderTable(),s.options.layoutColumnsOnNewData&&n.table.columnManager.redraw(!0))),s.modExists("columnCalcs")&&s.modules.columnCalcs.recalc(this.activeRows)},RowManager.prototype.regenerateRowNumbers=function(){var t=this;this.rowNumColumn&&this.activeRows.forEach(function(e){var o=e.getCell(t.rowNumColumn);o&&o._generateContents()})},RowManager.prototype.setActiveRows=function(t){this.activeRows=t,this.activeRowsCount=this.activeRows.length},RowManager.prototype.resetDisplayRows=function(){this.displayRows=[],this.displayRows.push(this.activeRows.slice(0)),this.displayRowsCount=this.displayRows[0].length,this.table.modExists("frozenRows")&&this.table.modules.frozenRows.setDisplayIndex(0),this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.setDisplayIndex(0),this.table.options.pagination&&this.table.modExists("page")&&this.table.modules.page.setDisplayIndex(0)},RowManager.prototype.getNextDisplayIndex=function(){return this.displayRows.length},RowManager.prototype.setDisplayRows=function(t,e){var o=!0;return e&&void 0!==this.displayRows[e]?(this.displayRows[e]=t,o=!0):(this.displayRows.push(t),o=e=this.displayRows.length-1),e==this.displayRows.length-1&&(this.displayRowsCount=this.displayRows[this.displayRows.length-1].length),o},RowManager.prototype.getDisplayRows=function(t){return void 0===t?this.displayRows.length?this.displayRows[this.displayRows.length-1]:[]:this.displayRows[t]||[]},RowManager.prototype.getVisibleRows=function(t){var e=this.element.scrollTop,o=this.element.clientHeight+e,i=!1,n=0,s=0,l=this.getDisplayRows();if(t){this.getDisplayRows();for(var a=this.vDomTop;a<=this.vDomBottom;a++)if(l[a])if(i){if(!(o-l[a].getElement().offsetTop>=0))break;s=a}else if(e-l[a].getElement().offsetTop>=0)n=a;else{if(i=!0,!(o-l[a].getElement().offsetTop>=0))break;s=a}}else n=this.vDomTop,s=this.vDomBottom;return l.slice(n,s+1)},RowManager.prototype.displayRowIterator=function(t){this.displayRows.forEach(t),this.displayRowsCount=this.displayRows[this.displayRows.length-1].length},RowManager.prototype.getRows=function(t){var e;switch(t){case"active":e=this.activeRows;break;case"display":e=this.table.rowManager.getDisplayRows();break;case"visible":e=this.getVisibleRows(!0);break;default:e=this.rows}return e},RowManager.prototype.reRenderInPosition=function(t){if("virtual"==this.getRenderMode())if(this.redrawBlock)t?t():this.redrawBlockRederInPosition=!0;else{for(var e=this.element.scrollTop,o=!1,i=!1,n=this.scrollLeft,s=this.getDisplayRows(),l=this.vDomTop;l<=this.vDomBottom;l++)if(s[l]){var a=e-s[l].getElement().offsetTop;if(!(!1===i||Math.abs(a)<i))break;i=a,o=l}t&&t(),this._virtualRenderFill(!1===o?this.displayRowsCount-1:o,!0,i||0),this.scrollHorizontal(n)}else this.renderTable(),t&&t()},RowManager.prototype.setRenderMode=function(){this.table.options.virtualDom?(this.renderMode="virtual",this.table.element.clientHeight||this.table.options.height?this.fixedHeight=!0:this.fixedHeight=!1):this.renderMode="classic"},RowManager.prototype.getRenderMode=function(){return this.renderMode},RowManager.prototype.renderTable=function(){switch(this.table.options.renderStarted.call(this.table),this.element.scrollTop=0,this.renderMode){case"classic":this._simpleRender();break;case"virtual":this._virtualRenderFill()}this.firstRender&&(this.displayRowsCount?(this.firstRender=!1,this.table.modules.layout.layout()):this.renderEmptyScroll()),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout(),this.displayRowsCount||this.table.options.placeholder&&(this.table.options.placeholder.setAttribute("tabulator-render-mode",this.renderMode),this.getElement().appendChild(this.table.options.placeholder),this.table.options.placeholder.style.width=this.table.columnManager.getWidth()+"px"),this.table.options.renderComplete.call(this.table)},RowManager.prototype._simpleRender=function(){this._clearVirtualDom(),this.displayRowsCount?this.checkClassicModeGroupHeaderWidth():this.renderEmptyScroll()},RowManager.prototype.checkClassicModeGroupHeaderWidth=function(){var t=this,e=this.tableElement,o=!0;t.getDisplayRows().forEach(function(i,n){t.styleRow(i,n),e.appendChild(i.getElement()),i.initialize(!0),"group"!==i.type&&(o=!1)}),e.style.minWidth=o?t.table.columnManager.getWidth()+"px":""},RowManager.prototype.renderEmptyScroll=function(){this.table.options.placeholder?this.tableElement.style.display="none":(this.tableElement.style.minWidth=this.table.columnManager.getWidth()+"px",this.tableElement.style.minHeight="1px",this.tableElement.style.visibility="hidden")},RowManager.prototype._clearVirtualDom=function(){var t=this.tableElement;for(this.table.options.placeholder&&this.table.options.placeholder.parentNode&&this.table.options.placeholder.parentNode.removeChild(this.table.options.placeholder);t.firstChild;)t.removeChild(t.firstChild);t.style.paddingTop="",t.style.paddingBottom="",t.style.minWidth="",t.style.minHeight="",t.style.display="",t.style.visibility="",this.scrollTop=0,this.scrollLeft=0,this.vDomTop=0,this.vDomBottom=0,this.vDomTopPad=0,this.vDomBottomPad=0},RowManager.prototype.styleRow=function(t,e){var o=t.getElement();e%2?(o.classList.add("tabulator-row-even"),o.classList.remove("tabulator-row-odd")):(o.classList.add("tabulator-row-odd"),o.classList.remove("tabulator-row-even"))},RowManager.prototype._virtualRenderFill=function(t,e,o){var i=this,n=i.tableElement,s=i.element,l=0,a=0,r=0,u=0,c=!0,h=i.getDisplayRows();if(t=t||0,o=o||0,t){for(;n.firstChild;)n.removeChild(n.firstChild);var p=(i.displayRowsCount-t+1)*i.vDomRowHeight;p<i.height&&(t-=Math.ceil((i.height-p)/i.vDomRowHeight))<0&&(t=0),l=Math.min(Math.max(Math.floor(i.vDomWindowBuffer/i.vDomRowHeight),i.vDomWindowMinMarginRows),t),t-=l}else i._clearVirtualDom();if(i.displayRowsCount&&Tabulator.prototype.helpers.elVisible(i.element)){for(i.vDomTop=t,i.vDomBottom=t-1;(a<=i.height+i.vDomWindowBuffer||u<i.vDomWindowMinTotalRows)&&i.vDomBottom<i.displayRowsCount-1;){var d=i.vDomBottom+1,m=h[d],f=0;i.styleRow(m,d),n.appendChild(m.getElement()),m.initialized?m.heightInitialized||m.normalizeHeight(!0):m.initialize(!0),f=m.getHeight(),u<l?r+=f:a+=f,f>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*f),"group"!==m.type&&(c=!1),i.vDomBottom++,u++}t?(i.vDomTopPad=e?i.vDomRowHeight*this.vDomTop+o:i.scrollTop-r,i.vDomBottomPad=i.vDomBottom==i.displayRowsCount-1?0:Math.max(i.vDomScrollHeight-i.vDomTopPad-a-r,0)):(this.vDomTopPad=0,i.vDomRowHeight=Math.floor((a+r)/u),i.vDomBottomPad=i.vDomRowHeight*(i.displayRowsCount-i.vDomBottom-1),i.vDomScrollHeight=r+a+i.vDomBottomPad-i.height),n.style.paddingTop=i.vDomTopPad+"px",n.style.paddingBottom=i.vDomBottomPad+"px",e&&(this.scrollTop=i.vDomTopPad+r+o-(this.element.scrollWidth>this.element.clientWidth?this.element.offsetHeight-this.element.clientHeight:0)),this.scrollTop=Math.min(this.scrollTop,this.element.scrollHeight-this.height),this.element.scrollWidth>this.element.offsetWidth&&e&&(this.scrollTop+=this.element.offsetHeight-this.element.clientHeight),this.vDomScrollPosTop=this.scrollTop,this.vDomScrollPosBottom=this.scrollTop,s.scrollTop=this.scrollTop,n.style.minWidth=c?i.table.columnManager.getWidth()+"px":"",i.table.options.groupBy&&"fitDataFill"!=i.table.modules.layout.getMode()&&i.displayRowsCount==i.table.modules.groupRows.countGroups()&&(i.tableElement.style.minWidth=i.table.columnManager.getWidth())}else this.renderEmptyScroll();this.fixedHeight||this.adjustTableSize()},RowManager.prototype.scrollVertical=function(t){var e=this.scrollTop-this.vDomScrollPosTop,o=this.scrollTop-this.vDomScrollPosBottom,i=2*this.vDomWindowBuffer;if(-e>i||o>i){var n=this.scrollLeft;this._virtualRenderFill(Math.floor(this.element.scrollTop/this.element.scrollHeight*this.displayRowsCount)),this.scrollHorizontal(n)}else t?(e<0&&this._addTopRow(-e),o<0&&(this.vDomScrollHeight-this.scrollTop>this.vDomWindowBuffer?this._removeBottomRow(-o):this.vDomScrollPosBottom=this.scrollTop)):(e>=0&&(this.scrollTop>this.vDomWindowBuffer?this._removeTopRow(e):this.vDomScrollPosTop=this.scrollTop),o>=0&&this._addBottomRow(o))},RowManager.prototype._addTopRow=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,o=this.tableElement,i=this.getDisplayRows();if(this.vDomTop){var n=this.vDomTop-1,s=i[n],l=s.getHeight()||this.vDomRowHeight;t>=l&&(this.styleRow(s,n),o.insertBefore(s.getElement(),o.firstChild),s.initialized&&s.heightInitialized||(this.vDomTopNewRows.push(s),s.heightInitialized||s.clearCellHeight()),s.initialize(),this.vDomTopPad-=l,this.vDomTopPad<0&&(this.vDomTopPad=n*this.vDomRowHeight),n||(this.vDomTopPad=0),o.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop-=l,this.vDomTop--),t=-(this.scrollTop-this.vDomScrollPosTop),s.getHeight()>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*s.getHeight()),e<this.vDomMaxRenderChain&&this.vDomTop&&t>=(i[this.vDomTop-1].getHeight()||this.vDomRowHeight)?this._addTopRow(t,e+1):this._quickNormalizeRowHeight(this.vDomTopNewRows)}},RowManager.prototype._removeTopRow=function(t){var e=this.tableElement,o=this.getDisplayRows()[this.vDomTop],i=o.getHeight()||this.vDomRowHeight;if(t>=i){var n=o.getElement();n.parentNode.removeChild(n),this.vDomTopPad+=i,e.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop+=this.vDomTop?i:i+this.vDomWindowBuffer,this.vDomTop++,t=this.scrollTop-this.vDomScrollPosTop,this._removeTopRow(t)}},RowManager.prototype._addBottomRow=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,o=this.tableElement,i=this.getDisplayRows();if(this.vDomBottom<this.displayRowsCount-1){var n=this.vDomBottom+1,s=i[n],l=s.getHeight()||this.vDomRowHeight;t>=l&&(this.styleRow(s,n),o.appendChild(s.getElement()),s.initialized&&s.heightInitialized||(this.vDomBottomNewRows.push(s),s.heightInitialized||s.clearCellHeight()),s.initialize(),this.vDomBottomPad-=l,(this.vDomBottomPad<0||n==this.displayRowsCount-1)&&(this.vDomBottomPad=0),o.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom+=l,this.vDomBottom++),t=this.scrollTop-this.vDomScrollPosBottom,s.getHeight()>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*s.getHeight()),e<this.vDomMaxRenderChain&&this.vDomBottom<this.displayRowsCount-1&&t>=(i[this.vDomBottom+1].getHeight()||this.vDomRowHeight)?this._addBottomRow(t,e+1):this._quickNormalizeRowHeight(this.vDomBottomNewRows)}},RowManager.prototype._removeBottomRow=function(t){var e=this.tableElement,o=this.getDisplayRows()[this.vDomBottom],i=o.getHeight()||this.vDomRowHeight;if(t>=i){var n=o.getElement();n.parentNode&&n.parentNode.removeChild(n),this.vDomBottomPad+=i,this.vDomBottomPad<0&&(this.vDomBottomPad=0),e.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom-=i,this.vDomBottom--,t=-(this.scrollTop-this.vDomScrollPosBottom),this._removeBottomRow(t)}},RowManager.prototype._quickNormalizeRowHeight=function(t){t.forEach(function(t){t.calcHeight()}),t.forEach(function(t){t.setCellHeight()}),t.length=0},RowManager.prototype.normalizeHeight=function(){this.activeRows.forEach(function(t){t.normalizeHeight()})},RowManager.prototype.adjustTableSize=function(){var t,e=this.element.clientHeight;if("virtual"===this.renderMode){var o=this.columnManager.getElement().offsetHeight+(this.table.footerManager&&!this.table.footerManager.external?this.table.footerManager.getElement().offsetHeight:0);this.fixedHeight?(this.element.style.minHeight="calc(100% - "+o+"px)",this.element.style.height="calc(100% - "+o+"px)",this.element.style.maxHeight="calc(100% - "+o+"px)"):(this.element.style.height="",this.element.style.height=this.table.element.clientHeight-o+"px",this.element.scrollTop=this.scrollTop),this.height=this.element.clientHeight,this.vDomWindowBuffer=this.table.options.virtualDomBuffer||this.height,this.fixedHeight||e==this.element.clientHeight||((t=this.table.modExists("resizeTable"))&&!this.table.modules.resizeTable.autoResize||!t)&&this.redraw()}},RowManager.prototype.reinitialize=function(){this.rows.forEach(function(t){t.reinitialize()})},RowManager.prototype.blockRedraw=function(){this.redrawBlock=!0,this.redrawBlockRestoreConfig=!1},RowManager.prototype.restoreRedraw=function(){this.redrawBlock=!1,this.redrawBlockRestoreConfig?(this.refreshActiveData(this.redrawBlockRestoreConfig.stage,this.redrawBlockRestoreConfig.skipStage,this.redrawBlockRestoreConfig.renderInPosition),this.redrawBlockRestoreConfig=!1):this.redrawBlockRederInPosition&&this.reRenderInPosition(),this.redrawBlockRederInPosition=!1},RowManager.prototype.redraw=function(t){var e=this.scrollLeft;this.adjustTableSize(),this.table.tableWidth=this.table.element.clientWidth,t?this.renderTable():("classic"==this.renderMode?this.table.options.groupBy?this.refreshActiveData("group",!1,!1):this._simpleRender():(this.reRenderInPosition(),this.scrollHorizontal(e)),this.displayRowsCount||this.table.options.placeholder&&this.getElement().appendChild(this.table.options.placeholder))},RowManager.prototype.resetScroll=function(){if(this.element.scrollLeft=0,this.element.scrollTop=0,"ie"===this.table.browser){var t=document.createEvent("Event");t.initEvent("scroll",!1,!0),this.element.dispatchEvent(t)}else this.element.dispatchEvent(new Event("scroll"))};var RowComponent=function(t){this._row=t};RowComponent.prototype.getData=function(t){return this._row.getData(t)},RowComponent.prototype.getElement=function(){return this._row.getElement()},RowComponent.prototype.getCells=function(){var t=[];return this._row.getCells().forEach(function(e){t.push(e.getComponent())}),t},RowComponent.prototype.getCell=function(t){var e=this._row.getCell(t);return!!e&&e.getComponent()},RowComponent.prototype.getIndex=function(){return this._row.getData("data")[this._row.table.options.index]},RowComponent.prototype.getPosition=function(t){return this._row.table.rowManager.getRowPosition(this._row,t)},RowComponent.prototype.delete=function(){return this._row.delete()},RowComponent.prototype.scrollTo=function(){return this._row.table.rowManager.scrollToRow(this._row)},RowComponent.prototype.pageTo=function(){if(this._row.table.modExists("page",!0))return this._row.table.modules.page.setPageToRow(this._row)},RowComponent.prototype.move=function(t,e){this._row.moveToRow(t,e)},RowComponent.prototype.update=function(t){return this._row.updateData(t)},RowComponent.prototype.normalizeHeight=function(){this._row.normalizeHeight(!0)},RowComponent.prototype.select=function(){this._row.table.modules.selectRow.selectRows(this._row)},RowComponent.prototype.deselect=function(){
-this._row.table.modules.selectRow.deselectRows(this._row)},RowComponent.prototype.toggleSelect=function(){this._row.table.modules.selectRow.toggleRow(this._row)},RowComponent.prototype.isSelected=function(){return this._row.table.modules.selectRow.isRowSelected(this._row)},RowComponent.prototype._getSelf=function(){return this._row},RowComponent.prototype.freeze=function(){this._row.table.modExists("frozenRows",!0)&&this._row.table.modules.frozenRows.freezeRow(this._row)},RowComponent.prototype.unfreeze=function(){this._row.table.modExists("frozenRows",!0)&&this._row.table.modules.frozenRows.unfreezeRow(this._row)},RowComponent.prototype.treeCollapse=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.collapseRow(this._row)},RowComponent.prototype.treeExpand=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.expandRow(this._row)},RowComponent.prototype.treeToggle=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.toggleRow(this._row)},RowComponent.prototype.getTreeParent=function(){return!!this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.getTreeParent(this._row)},RowComponent.prototype.getTreeChildren=function(){return!!this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.getTreeChildren(this._row)},RowComponent.prototype.reformat=function(){return this._row.reinitialize()},RowComponent.prototype.getGroup=function(){return this._row.getGroup().getComponent()},RowComponent.prototype.getTable=function(){return this._row.table},RowComponent.prototype.getNextRow=function(){var t=this._row.nextRow();return t?t.getComponent():t},RowComponent.prototype.getPrevRow=function(){var t=this._row.prevRow();return t?t.getComponent():t};var Row=function(t,e){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"row";this.table=e.table,this.parent=e,this.data={},this.type=o,this.element=this.createElement(),this.modules={},this.cells=[],this.height=0,this.heightStyled="",this.manualHeight=!1,this.outerHeight=0,this.initialized=!1,this.heightInitialized=!1,this.setData(t),this.generateElement()};Row.prototype.createElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-row"),t.setAttribute("role","row"),t},Row.prototype.getElement=function(){return this.element},Row.prototype.detachElement=function(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)},Row.prototype.generateElement=function(){var t,e,o,i=this;!1!==i.table.options.selectable&&i.table.modExists("selectRow")&&i.table.modules.selectRow.initializeRow(this),!1!==i.table.options.movableRows&&i.table.modExists("moveRow")&&i.table.modules.moveRow.initializeRow(this),!1!==i.table.options.dataTree&&i.table.modExists("dataTree")&&i.table.modules.dataTree.initializeRow(this),"collapse"===i.table.options.responsiveLayout&&i.table.modExists("responsiveLayout")&&i.table.modules.responsiveLayout.initializeRow(this),i.table.options.rowContextMenu&&this.table.modExists("menu")&&i.table.modules.menu.initializeRow(this),i.table.options.rowClick&&i.element.addEventListener("click",function(t){i.table.options.rowClick(t,i.getComponent())}),i.table.options.rowDblClick&&i.element.addEventListener("dblclick",function(t){i.table.options.rowDblClick(t,i.getComponent())}),i.table.options.rowContext&&i.element.addEventListener("contextmenu",function(t){i.table.options.rowContext(t,i.getComponent())}),i.table.options.rowMouseEnter&&i.element.addEventListener("mouseenter",function(t){i.table.options.rowMouseEnter(t,i.getComponent())}),i.table.options.rowMouseLeave&&i.element.addEventListener("mouseleave",function(t){i.table.options.rowMouseLeave(t,i.getComponent())}),i.table.options.rowMouseOver&&i.element.addEventListener("mouseover",function(t){i.table.options.rowMouseOver(t,i.getComponent())}),i.table.options.rowMouseOut&&i.element.addEventListener("mouseout",function(t){i.table.options.rowMouseOut(t,i.getComponent())}),i.table.options.rowMouseMove&&i.element.addEventListener("mousemove",function(t){i.table.options.rowMouseMove(t,i.getComponent())}),i.table.options.rowTap&&(o=!1,i.element.addEventListener("touchstart",function(t){o=!0},{passive:!0}),i.element.addEventListener("touchend",function(t){o&&i.table.options.rowTap(t,i.getComponent()),o=!1})),i.table.options.rowDblTap&&(t=null,i.element.addEventListener("touchend",function(e){t?(clearTimeout(t),t=null,i.table.options.rowDblTap(e,i.getComponent())):t=setTimeout(function(){clearTimeout(t),t=null},300)})),i.table.options.rowTapHold&&(e=null,i.element.addEventListener("touchstart",function(t){clearTimeout(e),e=setTimeout(function(){clearTimeout(e),e=null,o=!1,i.table.options.rowTapHold(t,i.getComponent())},1e3)},{passive:!0}),i.element.addEventListener("touchend",function(t){clearTimeout(e),e=null}))},Row.prototype.generateCells=function(){this.cells=this.table.columnManager.generateCells(this)},Row.prototype.initialize=function(t){var e=this;if(!e.initialized||t){for(e.deleteCells();e.element.firstChild;)e.element.removeChild(e.element.firstChild);this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layoutRow(this),this.generateCells(),e.cells.forEach(function(t){e.element.appendChild(t.getElement()),t.cellRendered()}),t&&e.normalizeHeight(),e.table.options.dataTree&&e.table.modExists("dataTree")&&e.table.modules.dataTree.layoutRow(this),"collapse"===e.table.options.responsiveLayout&&e.table.modExists("responsiveLayout")&&e.table.modules.responsiveLayout.layoutRow(this),e.table.options.rowFormatter&&e.table.options.rowFormatter(e.getComponent()),e.table.options.resizableRows&&e.table.modExists("resizeRows")&&e.table.modules.resizeRows.initializeRow(e),e.initialized=!0}},Row.prototype.reinitializeHeight=function(){this.heightInitialized=!1,null!==this.element.offsetParent&&this.normalizeHeight(!0)},Row.prototype.reinitialize=function(){this.initialized=!1,this.heightInitialized=!1,this.manualHeight||(this.height=0,this.heightStyled=""),null!==this.element.offsetParent&&this.initialize(!0)},Row.prototype.calcHeight=function(t){var e=0,o=this.table.options.resizableRows?this.element.clientHeight:0;this.cells.forEach(function(t){var o=t.getHeight();o>e&&(e=o)}),this.height=t?Math.max(e,o):this.manualHeight?this.height:Math.max(e,o),this.heightStyled=this.height?this.height+"px":"",this.outerHeight=this.element.offsetHeight},Row.prototype.setCellHeight=function(){this.cells.forEach(function(t){t.setHeight()}),this.heightInitialized=!0},Row.prototype.clearCellHeight=function(){this.cells.forEach(function(t){t.clearHeight()})},Row.prototype.normalizeHeight=function(t){t&&this.clearCellHeight(),this.calcHeight(t),this.setCellHeight()},Row.prototype.setHeight=function(t,e){(this.height!=t||e)&&(this.manualHeight=!0,this.height=t,this.heightStyled=t?t+"px":"",this.setCellHeight(),this.outerHeight=this.element.offsetHeight)},Row.prototype.getHeight=function(){return this.outerHeight},Row.prototype.getWidth=function(){return this.element.offsetWidth},Row.prototype.deleteCell=function(t){var e=this.cells.indexOf(t);e>-1&&this.cells.splice(e,1)},Row.prototype.setData=function(t){this.table.modExists("mutator")&&(t=this.table.modules.mutator.transformRow(t,"data")),this.data=t,this.table.options.reactiveData&&this.table.modExists("reactiveData",!0)&&this.table.modules.reactiveData.watchRow(this)},Row.prototype.updateData=function(t){var e,o=this,i=Tabulator.prototype.helpers.elVisible(this.element),n={};return new Promise(function(s,l){"string"==typeof t&&(t=JSON.parse(t)),o.table.options.reactiveData&&o.table.modExists("reactiveData",!0)&&o.table.modules.reactiveData.block(),o.table.modExists("mutator")?(n=Object.assign(n,o.data),n=Object.assign(n,t),e=o.table.modules.mutator.transformRow(n,"data",t)):e=t;for(var a in e)o.data[a]=e[a];o.table.options.reactiveData&&o.table.modExists("reactiveData",!0)&&o.table.modules.reactiveData.unblock();for(var a in t){o.table.columnManager.getColumnsByFieldRoot(a).forEach(function(t){var n=o.getCell(t.getField());if(n){var s=t.getFieldValue(e);n.getValue()!=s&&(n.setValueProcessData(s),i&&n.cellRendered())}})}i?(o.normalizeHeight(!0),o.table.options.rowFormatter&&o.table.options.rowFormatter(o.getComponent())):(o.initialized=!1,o.height=0,o.heightStyled=""),!1!==o.table.options.dataTree&&o.table.modExists("dataTree")&&o.table.modules.dataTree.redrawNeeded(t)&&(o.table.modules.dataTree.initializeRow(o),o.table.modules.dataTree.layoutRow(o),o.table.rowManager.refreshActiveData("tree",!1,!0)),o.table.options.rowUpdated.call(o.table,o.getComponent()),s()})},Row.prototype.getData=function(t){var e=this;return t?e.table.modExists("accessor")?e.table.modules.accessor.transformRow(e.data,t):void 0:this.data},Row.prototype.getCell=function(t){return t=this.table.columnManager.findColumn(t),this.cells.find(function(e){return e.column===t})},Row.prototype.getCellIndex=function(t){return this.cells.findIndex(function(e){return e===t})},Row.prototype.findNextEditableCell=function(t){var e=!1;if(t<this.cells.length-1)for(var o=t+1;o<this.cells.length;o++){var i=this.cells[o];if(i.column.modules.edit&&Tabulator.prototype.helpers.elVisible(i.getElement())){var n=!0;if("function"==typeof i.column.modules.edit.check&&(n=i.column.modules.edit.check(i.getComponent())),n){e=i;break}}}return e},Row.prototype.findPrevEditableCell=function(t){var e=!1;if(t>0)for(var o=t-1;o>=0;o--){var i=this.cells[o],n=!0;if(i.column.modules.edit&&Tabulator.prototype.helpers.elVisible(i.getElement())&&("function"==typeof i.column.modules.edit.check&&(n=i.column.modules.edit.check(i.getComponent())),n)){e=i;break}}return e},Row.prototype.getCells=function(){return this.cells},Row.prototype.nextRow=function(){return this.table.rowManager.nextDisplayRow(this,!0)||!1},Row.prototype.prevRow=function(){return this.table.rowManager.prevDisplayRow(this,!0)||!1},Row.prototype.moveToRow=function(t,e){var o=this.table.rowManager.findRow(t);o?(this.table.rowManager.moveRowActual(this,o,!e),this.table.rowManager.refreshActiveData("display",!1,!0)):console.warn("Move Error - No matching row found:",t)},Row.prototype.delete=function(){var t=this;return new Promise(function(e,o){var i,n;t.table.options.history&&t.table.modExists("history")&&(t.table.options.groupBy&&t.table.modExists("groupRows")?(n=t.getGroup().rows,(i=n.indexOf(t))&&(i=n[i-1])):(i=t.table.rowManager.getRowIndex(t))&&(i=t.table.rowManager.rows[i-1]),t.table.modules.history.action("rowDelete",t,{data:t.getData(),pos:!i,index:i})),t.deleteActual(),e()})},Row.prototype.deleteActual=function(t){this.table.rowManager.getRowIndex(this);this.table.modExists("selectRow")&&this.table.modules.selectRow._deselectRow(this,!0),this.table.modExists("edit")&&this.table.modules.edit.currentCell.row===this&&this.table.modules.edit.cancelEdit(),this.table.options.reactiveData&&this.table.modExists("reactiveData",!0),this.modules.group&&this.modules.group.removeRow(this),this.table.rowManager.deleteRow(this,t),this.deleteCells(),this.initialized=!1,this.heightInitialized=!1,this.table.modExists("columnCalcs")&&(this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.columnCalcs.recalcRowGroup(this):this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows))},Row.prototype.deleteCells=function(){for(var t=this.cells.length,e=0;e<t;e++)this.cells[0].delete()},Row.prototype.wipe=function(){for(this.deleteCells();this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.element=!1,this.modules={},this.element.parentNode&&this.element.parentNode.removeChild(this.element)},Row.prototype.getGroup=function(){return this.modules.group||!1},Row.prototype.getComponent=function(){return new RowComponent(this)};var CellComponent=function(t){this._cell=t};CellComponent.prototype.getValue=function(){return this._cell.getValue()},CellComponent.prototype.getOldValue=function(){return this._cell.getOldValue()},CellComponent.prototype.getElement=function(){return this._cell.getElement()},CellComponent.prototype.getRow=function(){return this._cell.row.getComponent()},CellComponent.prototype.getData=function(){return this._cell.row.getData()},CellComponent.prototype.getField=function(){return this._cell.column.getField()},CellComponent.prototype.getColumn=function(){return this._cell.column.getComponent()},CellComponent.prototype.setValue=function(t,e){void 0===e&&(e=!0),this._cell.setValue(t,e)},CellComponent.prototype.restoreOldValue=function(){this._cell.setValueActual(this._cell.getOldValue())},CellComponent.prototype.edit=function(t){return this._cell.edit(t)},CellComponent.prototype.cancelEdit=function(){this._cell.cancelEdit()},CellComponent.prototype.nav=function(){return this._cell.nav()},CellComponent.prototype.checkHeight=function(){this._cell.checkHeight()},CellComponent.prototype.getTable=function(){return this._cell.table},CellComponent.prototype._getSelf=function(){return this._cell};var Cell=function(t,e){this.table=t.table,this.column=t,this.row=e,this.element=null,this.value=null,this.oldValue=null,this.modules={},this.height=null,this.width=null,this.minWidth=null,this.build()};Cell.prototype.build=function(){this.generateElement(),this.setWidth(),this._configureCell(),this.setValueActual(this.column.getFieldValue(this.row.data))},Cell.prototype.generateElement=function(){this.element=document.createElement("div"),this.element.className="tabulator-cell",this.element.setAttribute("role","gridcell"),this.element=this.element},Cell.prototype._configureCell=function(){var t=this,e=t.column.cellEvents,o=t.element,i=this.column.getField(),n={top:"flex-start",bottom:"flex-end",middle:"center"},s={left:"flex-start",right:"flex-end",center:"center"};if(o.style.textAlign=t.column.hozAlign,t.column.vertAlign&&(o.style.display="inline-flex",o.style.alignItems=n[t.column.vertAlign]||"",t.column.hozAlign&&(o.style.justifyContent=s[t.column.hozAlign]||"")),i&&o.setAttribute("tabulator-field",i),t.column.definition.cssClass){t.column.definition.cssClass.split(" ").forEach(function(t){o.classList.add(t)})}"hover"===this.table.options.tooltipGenerationMode&&o.addEventListener("mouseenter",function(e){t._generateTooltip()}),t._bindClickEvents(e),t._bindTouchEvents(e),t._bindMouseEvents(e),t.column.modules.edit&&t.table.modules.edit.bindEditor(t),t.column.definition.rowHandle&&!1!==t.table.options.movableRows&&t.table.modExists("moveRow")&&t.table.modules.moveRow.initializeCell(t),t.column.visible||t.hide()},Cell.prototype._bindClickEvents=function(t){var e=this,o=e.element;(t.cellClick||e.table.options.cellClick)&&o.addEventListener("click",function(o){var i=e.getComponent();t.cellClick&&t.cellClick.call(e.table,o,i),e.table.options.cellClick&&e.table.options.cellClick.call(e.table,o,i)}),t.cellDblClick||this.table.options.cellDblClick?o.addEventListener("dblclick",function(o){var i=e.getComponent();t.cellDblClick&&t.cellDblClick.call(e.table,o,i),e.table.options.cellDblClick&&e.table.options.cellDblClick.call(e.table,o,i)}):o.addEventListener("dblclick",function(t){if(!e.table.modExists("edit")||e.table.modules.edit.currentCell!==e){t.preventDefault();try{if(document.selection){var o=document.body.createTextRange();o.moveToElementText(e.element),o.select()}else if(window.getSelection){var o=document.createRange();o.selectNode(e.element),window.getSelection().removeAllRanges(),window.getSelection().addRange(o)}}catch(t){}}}),(t.cellContext||this.table.options.cellContext)&&o.addEventListener("contextmenu",function(o){var i=e.getComponent();t.cellContext&&t.cellContext.call(e.table,o,i),e.table.options.cellContext&&e.table.options.cellContext.call(e.table,o,i)})},Cell.prototype._bindMouseEvents=function(t){var e=this,o=e.element;(t.cellMouseEnter||e.table.options.cellMouseEnter)&&o.addEventListener("mouseenter",function(o){var i=e.getComponent();t.cellMouseEnter&&t.cellMouseEnter.call(e.table,o,i),e.table.options.cellMouseEnter&&e.table.options.cellMouseEnter.call(e.table,o,i)}),(t.cellMouseLeave||e.table.options.cellMouseLeave)&&o.addEventListener("mouseleave",function(o){var i=e.getComponent();t.cellMouseLeave&&t.cellMouseLeave.call(e.table,o,i),e.table.options.cellMouseLeave&&e.table.options.cellMouseLeave.call(e.table,o,i)}),(t.cellMouseOver||e.table.options.cellMouseOver)&&o.addEventListener("mouseover",function(o){var i=e.getComponent();t.cellMouseOver&&t.cellMouseOver.call(e.table,o,i),e.table.options.cellMouseOver&&e.table.options.cellMouseOver.call(e.table,o,i)}),(t.cellMouseOut||e.table.options.cellMouseOut)&&o.addEventListener("mouseout",function(o){var i=e.getComponent();t.cellMouseOut&&t.cellMouseOut.call(e.table,o,i),e.table.options.cellMouseOut&&e.table.options.cellMouseOut.call(e.table,o,i)}),(t.cellMouseMove||e.table.options.cellMouseMove)&&o.addEventListener("mousemove",function(o){var i=e.getComponent();t.cellMouseMove&&t.cellMouseMove.call(e.table,o,i),e.table.options.cellMouseMove&&e.table.options.cellMouseMove.call(e.table,o,i)})},Cell.prototype._bindTouchEvents=function(t){var e,o,i,n=this,s=n.element;(t.cellTap||this.table.options.cellTap)&&(i=!1,s.addEventListener("touchstart",function(t){i=!0},{passive:!0}),s.addEventListener("touchend",function(e){if(i){var o=n.getComponent();t.cellTap&&t.cellTap.call(n.table,e,o),n.table.options.cellTap&&n.table.options.cellTap.call(n.table,e,o)}i=!1})),(t.cellDblTap||this.table.options.cellDblTap)&&(e=null,s.addEventListener("touchend",function(o){if(e){clearTimeout(e),e=null;var i=n.getComponent();t.cellDblTap&&t.cellDblTap.call(n.table,o,i),n.table.options.cellDblTap&&n.table.options.cellDblTap.call(n.table,o,i)}else e=setTimeout(function(){clearTimeout(e),e=null},300)})),(t.cellTapHold||this.table.options.cellTapHold)&&(o=null,s.addEventListener("touchstart",function(e){clearTimeout(o),o=setTimeout(function(){clearTimeout(o),o=null,i=!1;var s=n.getComponent();t.cellTapHold&&t.cellTapHold.call(n.table,e,s),n.table.options.cellTapHold&&n.table.options.cellTapHold.call(n.table,e,s)},1e3)},{passive:!0}),s.addEventListener("touchend",function(t){clearTimeout(o),o=null}))},Cell.prototype._generateContents=function(){var t;switch(t=this.table.modExists("format")?this.table.modules.format.formatValue(this):this.element.innerHTML=this.value,void 0===t?"undefined":_typeof(t)){case"object":if(t instanceof Node){for(;this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.element.appendChild(t)}else this.element.innerHTML="",null!=t&&console.warn("Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:",t);break;case"undefined":case"null":this.element.innerHTML="";break;default:this.element.innerHTML=t}},Cell.prototype.cellRendered=function(){this.table.modExists("format")&&this.table.modules.format.cellRendered&&this.table.modules.format.cellRendered(this)},Cell.prototype._generateTooltip=function(){var t=this.column.tooltip;t?(!0===t?t=this.value:"function"==typeof t&&!1===(t=t(this.getComponent()))&&(t=""),void 0===t&&(t=""),this.element.setAttribute("title",t)):this.element.setAttribute("title","")},Cell.prototype.getElement=function(){return this.element},Cell.prototype.getValue=function(){return this.value},Cell.prototype.getOldValue=function(){return this.oldValue},Cell.prototype.setValue=function(t,e){var o,i=this.setValueProcessData(t,e);i&&(this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("cellEdit",this,{oldValue:this.oldValue,newValue:this.value}),o=this.getComponent(),this.column.cellEvents.cellEdited&&this.column.cellEvents.cellEdited.call(this.table,o),this.cellRendered(),this.table.options.cellEdited.call(this.table,o),this.table.options.dataEdited.call(this.table,this.table.rowManager.getData()))},Cell.prototype.setValueProcessData=function(t,e){var o=!1;return this.value!=t&&(o=!0,e&&this.column.modules.mutate&&(t=this.table.modules.mutator.transformCell(this,t))),this.setValueActual(t),o&&this.table.modExists("columnCalcs")&&(this.column.definition.topCalc||this.column.definition.bottomCalc)&&(this.table.options.groupBy&&this.table.modExists("groupRows")?("table"!=this.table.options.columnCalcs&&"both"!=this.table.options.columnCalcs||this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),"table"!=this.table.options.columnCalcs&&this.table.modules.columnCalcs.recalcRowGroup(this.row)):this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows)),o},Cell.prototype.setValueActual=function(t){this.oldValue=this.value,this.value=t,this.table.options.reactiveData&&this.table.modExists("reactiveData")&&this.table.modules.reactiveData.block(),this.column.setFieldValue(this.row.data,t),this.table.options.reactiveData&&this.table.modExists("reactiveData")&&this.table.modules.reactiveData.unblock(),this._generateContents(),this._generateTooltip(),this.table.options.resizableColumns&&this.table.modExists("resizeColumns")&&this.table.modules.resizeColumns.initializeColumn("cell",this.column,this.element),this.column.definition.contextMenu&&this.table.modExists("menu")&&this.table.modules.menu.initializeCell(this),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layoutElement(this.element,this.column)},Cell.prototype.setWidth=function(){this.width=this.column.width,this.element.style.width=this.column.widthStyled},Cell.prototype.clearWidth=function(){this.width="",this.element.style.width=""},Cell.prototype.getWidth=function(){return this.width||this.element.offsetWidth},Cell.prototype.setMinWidth=function(){this.minWidth=this.column.minWidth,this.element.style.minWidth=this.column.minWidthStyled},Cell.prototype.checkHeight=function(){this.row.reinitializeHeight()},Cell.prototype.clearHeight=function(){this.element.style.height="",this.height=null},Cell.prototype.setHeight=function(){this.height=this.row.height,this.element.style.height=this.row.heightStyled},Cell.prototype.getHeight=function(){return this.height||this.element.offsetHeight},Cell.prototype.show=function(){this.element.style.display=""},Cell.prototype.hide=function(){this.element.style.display="none"},Cell.prototype.edit=function(t){if(this.table.modExists("edit",!0))return this.table.modules.edit.editCell(this,t)},Cell.prototype.cancelEdit=function(){if(this.table.modExists("edit",!0)){var t=this.table.modules.edit.getCurrentCell();t&&t._getSelf()===this?this.table.modules.edit.cancelEdit():console.warn("Cancel Editor Error - This cell is not currently being edited ")}},Cell.prototype.delete=function(){this.table.rowManager.redrawBlock||this.element.parentNode.removeChild(this.element),this.element=!1,this.column.deleteCell(this),this.row.deleteCell(this),this.calcs={}},Cell.prototype.nav=function(){var t=this,e=!1,o=this.row.getCellIndex(this);return{next:function(){var e,o=this.right();return!!o||!(!(e=t.table.rowManager.nextDisplayRow(t.row,!0))||!(o=e.findNextEditableCell(-1)))&&(o.edit(),!0)},prev:function(){var e,o=this.left();return!!o||!(!(e=t.table.rowManager.prevDisplayRow(t.row,!0))||!(o=e.findPrevEditableCell(e.cells.length)))&&(o.edit(),!0)},left:function(){return!!(e=t.row.findPrevEditableCell(o))&&(e.edit(),!0)},right:function(){return!!(e=t.row.findNextEditableCell(o))&&(e.edit(),!0)},up:function(){var e=t.table.rowManager.prevDisplayRow(t.row,!0);e&&e.cells[o].edit()},down:function(){var e=t.table.rowManager.nextDisplayRow(t.row,!0);e&&e.cells[o].edit()}}},Cell.prototype.getIndex=function(){this.row.getCellIndex(this)},Cell.prototype.getComponent=function(){return new CellComponent(this)};var FooterManager=function(t){this.table=t,this.active=!1,this.element=this.createElement(),this.external=!1,this.links=[],this._initialize()};FooterManager.prototype.createElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-footer"),t},FooterManager.prototype._initialize=function(t){if(this.table.options.footerElement)switch(_typeof(this.table.options.footerElement)){case"string":"<"===this.table.options.footerElement[0]?this.element.innerHTML=this.table.options.footerElement:(this.external=!0,this.element=document.querySelector(this.table.options.footerElement));break;default:this.element=this.table.options.footerElement}},FooterManager.prototype.getElement=function(){return this.element},FooterManager.prototype.append=function(t,e){this.activate(e),this.element.appendChild(t),this.table.rowManager.adjustTableSize()},FooterManager.prototype.prepend=function(t,e){this.activate(e),this.element.insertBefore(t,this.element.firstChild),this.table.rowManager.adjustTableSize()},FooterManager.prototype.remove=function(t){t.parentNode.removeChild(t),this.deactivate()},FooterManager.prototype.deactivate=function(t){this.element.firstChild&&!t||(this.external||this.element.parentNode.removeChild(this.element),this.active=!1)},FooterManager.prototype.activate=function(t){this.active||(this.active=!0,this.external||(this.table.element.appendChild(this.getElement()),this.table.element.style.display="")),t&&this.links.push(t)},FooterManager.prototype.redraw=function(){this.links.forEach(function(t){t.footerRedraw()})};var Tabulator=function t(e,o){this.options={},this.columnManager=null,this.rowManager=null,this.footerManager=null,this.browser="",this.browserSlow=!1,this.browserMobile=!1,this.modules={},this.initializeElement(e),this.initializeOptions(o||{}),this._create(),t.prototype.comms.register(this)};Tabulator.prototype.defaultOptions={height:!1,minHeight:!1,maxHeight:!1,layout:"fitData",layoutColumnsOnNewData:!1,columnMinWidth:40,columnHeaderVertAlign:"top",columnVertAlign:!1,resizableColumns:!0,resizableRows:!1,autoResize:!0,columns:[],cellHozAlign:"",cellVertAlign:"",data:[],autoColumns:!1,reactiveData:!1,nestedFieldSeparator:".",tooltips:!1,tooltipsHeader:!1,tooltipGenerationMode:"load",initialSort:!1,initialFilter:!1,initialHeaderFilter:!1,columnHeaderSortMulti:!0,sortOrderReverse:!1,headerSort:!0,headerSortTristate:!1,footerElement:!1,index:"id",keybindings:[],tabEndNewRow:!1,invalidOptionWarnings:!0,clipboard:!1,clipboardCopyStyled:!0,clipboardCopyConfig:!1,clipboardCopyFormatter:!1,clipboardCopyRowRange:"active",clipboardPasteParser:"table",clipboardPasteAction:"insert",clipboardCopied:function(){},clipboardPasted:function(){},clipboardPasteError:function(){},downloadDataFormatter:!1,downloadReady:function(t,e){return e},downloadComplete:!1,downloadConfig:!1,dataTree:!1,dataTreeElementColumn:!1,dataTreeBranchElement:!0,dataTreeChildIndent:9,dataTreeChildField:"_children",dataTreeCollapseElement:!1,dataTreeExpandElement:!1,dataTreeStartExpanded:!1,dataTreeRowExpanded:function(){},dataTreeRowCollapsed:function(){},dataTreeChildColumnCalcs:!1,dataTreeSelectPropagate:!1,printAsHtml:!1,printFormatter:!1,printHeader:!1,printFooter:!1,printCopyStyle:!0,printStyled:!0,printVisibleRows:!0,printRowRange:"visible",printConfig:{},addRowPos:"bottom",selectable:"highlight",selectableRangeMode:"drag",selectableRollingSelection:!0,selectablePersistence:!0,selectableCheck:function(t,e){return!0},headerFilterLiveFilterDelay:300,headerFilterPlaceholder:!1,headerVisible:!0,history:!1,locale:!1,langs:{},virtualDom:!0,virtualDomBuffer:0,persistentLayout:!1,persistentSort:!1,persistentFilter:!1,persistenceID:"",persistenceMode:!0,persistenceReaderFunc:!1,persistenceWriterFunc:!1,persistence:!1,responsiveLayout:!1,responsiveLayoutCollapseStartOpen:!0,responsiveLayoutCollapseUseFormatters:!0,responsiveLayoutCollapseFormatter:!1,pagination:!1,paginationSize:!1,paginationInitialPage:1,paginationButtonCount:5,paginationSizeSelector:!1,paginationElement:!1,paginationDataSent:{},paginationDataReceived:{},paginationAddRow:"page",ajaxURL:!1,ajaxURLGenerator:!1,ajaxParams:{},ajaxConfig:"get",ajaxContentType:"form",ajaxRequestFunc:!1,ajaxLoader:!0,ajaxLoaderLoading:!1,ajaxLoaderError:!1,ajaxFiltering:!1,ajaxSorting:!1,ajaxProgressiveLoad:!1,ajaxProgressiveLoadDelay:0,ajaxProgressiveLoadScrollMargin:0,groupBy:!1,groupStartOpen:!0,groupValues:!1,groupHeader:!1,htmlOutputConfig:!1,movableColumns:!1,movableRows:!1,movableRowsConnectedTables:!1,movableRowsSender:!1,movableRowsReceiver:"insert",movableRowsSendingStart:function(){},movableRowsSent:function(){},movableRowsSentFailed:function(){},movableRowsSendingStop:function(){},movableRowsReceivingStart:function(){},movableRowsReceived:function(){},movableRowsReceivedFailed:function(){},movableRowsReceivingStop:function(){},scrollToRowPosition:"top",scrollToRowIfVisible:!0,scrollToColumnPosition:"left",scrollToColumnIfVisible:!0,rowFormatter:!1,rowFormatterPrint:null,rowFormatterClipboard:null,rowFormatterHtmlOutput:null,placeholder:!1,tableBuilding:function(){},tableBuilt:function(){},renderStarted:function(){},renderComplete:function(){},rowClick:!1,rowDblClick:!1,rowContext:!1,rowTap:!1,rowDblTap:!1,rowTapHold:!1,rowMouseEnter:!1,rowMouseLeave:!1,rowMouseOver:!1,rowMouseOut:!1,rowMouseMove:!1,rowContextMenu:!1,rowAdded:function(){},rowDeleted:function(){},rowMoved:function(){},rowUpdated:function(){},rowSelectionChanged:function(){},rowSelected:function(){},rowDeselected:function(){},rowResized:function(){},cellClick:!1,cellDblClick:!1,cellContext:!1,cellTap:!1,cellDblTap:!1,cellTapHold:!1,cellMouseEnter:!1,cellMouseLeave:!1,cellMouseOver:!1,cellMouseOut:!1,cellMouseMove:!1,cellEditing:function(){},cellEdited:function(){},cellEditCancelled:function(){},columnMoved:!1,columnResized:function(){},columnTitleChanged:function(){},columnVisibilityChanged:function(){},htmlImporting:function(){},htmlImported:function(){},dataLoading:function(){},dataLoaded:function(){},dataEdited:function(){},ajaxRequesting:function(){},ajaxResponse:!1,ajaxError:function(){},dataFiltering:!1,dataFiltered:!1,dataSorting:function(){},dataSorted:function(){},groupToggleElement:"arrow",groupClosedShowCalcs:!1,dataGrouping:function(){},dataGrouped:!1,groupVisibilityChanged:function(){},groupClick:!1,groupDblClick:!1,groupContext:!1,groupTap:!1,groupDblTap:!1,groupTapHold:!1,columnCalcs:!0,pageLoaded:function(){},localized:function(){},validationFailed:function(){},historyUndo:function(){},historyRedo:function(){},scrollHorizontal:function(){},scrollVertical:function(){}},Tabulator.prototype.initializeOptions=function(t){if(!1!==t.invalidOptionWarnings)for(var e in t)void 0===this.defaultOptions[e]&&console.warn("Invalid table constructor option:",e);for(var e in this.defaultOptions)e in t?this.options[e]=t[e]:Array.isArray(this.defaultOptions[e])?this.options[e]=[]:"object"===_typeof(this.defaultOptions[e])&&null!==this.defaultOptions[e]?this.options[e]={}:this.options[e]=this.defaultOptions[e]},Tabulator.prototype.initializeElement=function(t){return"undefined"!=typeof HTMLElement&&t instanceof HTMLElement?(this.element=t,!0):"string"==typeof t?(this.element=document.querySelector(t),!!this.element||(console.error("Tabulator Creation Error - no element found matching selector: ",t),!1)):(console.error("Tabulator Creation Error - Invalid element provided:",t),!1)},Tabulator.prototype._mapDepricatedFunctionality=function(){(this.options.persistentLayout||this.options.persistentSort||this.options.persistentFilter)&&(this.options.persistence||(this.options.persistence={})),void 0!==this.options.clipboardCopyHeader&&(this.options.columnHeaders=this.options.clipboardCopyHeader,console.warn("DEPRECATION WARNING - clipboardCopyHeader option has been deprecated, please use the columnHeaders property on the clipboardCopyConfig option")),!0!==this.options.printVisibleRows&&(console.warn("printVisibleRows option is deprecated, you should now use the printRowRange option"),this.options.persistence.printRowRange="active"),!0!==this.options.printCopyStyle&&(console.warn("printCopyStyle option is deprecated, you should now use the printStyled option"),this.options.persistence.printStyled=this.options.printCopyStyle),
-this.options.persistentLayout&&(console.warn("persistentLayout option is deprecated, you should now use the persistence option"),!0!==this.options.persistence&&void 0===this.options.persistence.columns&&(this.options.persistence.columns=!0)),this.options.persistentSort&&(console.warn("persistentSort option is deprecated, you should now use the persistence option"),!0!==this.options.persistence&&void 0===this.options.persistence.sort&&(this.options.persistence.sort=!0)),this.options.persistentFilter&&(console.warn("persistentFilter option is deprecated, you should now use the persistence option"),!0!==this.options.persistence&&void 0===this.options.persistence.filter&&(this.options.persistence.filter=!0)),this.options.columnVertAlign&&(console.warn("columnVertAlign option is deprecated, you should now use the columnHeaderVertAlign option"),this.options.columnHeaderVertAlign=this.options.columnVertAlign)},Tabulator.prototype._clearSelection=function(){this.element.classList.add("tabulator-block-select"),window.getSelection?window.getSelection().empty?window.getSelection().empty():window.getSelection().removeAllRanges&&window.getSelection().removeAllRanges():document.selection&&document.selection.empty(),this.element.classList.remove("tabulator-block-select")},Tabulator.prototype._create=function(){this._clearObjectPointers(),this._mapDepricatedFunctionality(),this.bindModules(),"TABLE"===this.element.tagName&&this.modExists("htmlTableImport",!0)&&this.modules.htmlTableImport.parseTable(),this.columnManager=new ColumnManager(this),this.rowManager=new RowManager(this),this.footerManager=new FooterManager(this),this.columnManager.setRowManager(this.rowManager),this.rowManager.setColumnManager(this.columnManager),this._buildElement(),this._loadInitialData()},Tabulator.prototype._clearObjectPointers=function(){this.options.columns=this.options.columns.slice(0),this.options.reactiveData||(this.options.data=this.options.data.slice(0))},Tabulator.prototype._buildElement=function(){var t=this,e=this.element,o=this.modules,i=this.options;for(i.tableBuilding.call(this),e.classList.add("tabulator"),e.setAttribute("role","grid");e.firstChild;)e.removeChild(e.firstChild);i.height&&(i.height=isNaN(i.height)?i.height:i.height+"px",e.style.height=i.height),!1!==i.minHeight&&(i.minHeight=isNaN(i.minHeight)?i.minHeight:i.minHeight+"px",e.style.minHeight=i.minHeight),!1!==i.maxHeight&&(i.maxHeight=isNaN(i.maxHeight)?i.maxHeight:i.maxHeight+"px",e.style.maxHeight=i.maxHeight),this.columnManager.initialize(),this.rowManager.initialize(),this._detectBrowser(),this.modExists("layout",!0)&&o.layout.initialize(i.layout),!1!==i.headerFilterPlaceholder&&o.localize.setHeaderFilterPlaceholder(i.headerFilterPlaceholder);for(var n in i.langs)o.localize.installLang(n,i.langs[n]);if(o.localize.setLocale(i.locale),"string"==typeof i.placeholder){var s=document.createElement("div");s.classList.add("tabulator-placeholder");var l=document.createElement("span");l.innerHTML=i.placeholder,s.appendChild(l),i.placeholder=s}if(e.appendChild(this.columnManager.getElement()),e.appendChild(this.rowManager.getElement()),i.footerElement&&this.footerManager.activate(),i.persistence&&this.modExists("persistence",!0)&&o.persistence.initialize(),i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.columns&&(i.columns=o.persistence.load("columns",i.columns)),i.movableRows&&this.modExists("moveRow")&&o.moveRow.initialize(),i.autoColumns&&this.options.data&&this.columnManager.generateColumnsFromRowData(this.options.data),this.modExists("columnCalcs")&&o.columnCalcs.initialize(),this.columnManager.setColumns(i.columns),i.dataTree&&this.modExists("dataTree",!0)&&o.dataTree.initialize(),this.modExists("frozenRows")&&this.modules.frozenRows.initialize(),(i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.sort||i.initialSort)&&this.modExists("sort",!0)){var a=[];i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.sort?!1===(a=o.persistence.load("sort"))&&i.initialSort&&(a=i.initialSort):i.initialSort&&(a=i.initialSort),o.sort.setSort(a)}if((i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.filter||i.initialFilter)&&this.modExists("filter",!0)){var r=[];i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.filter?!1===(r=o.persistence.load("filter"))&&i.initialFilter&&(r=i.initialFilter):i.initialFilter&&(r=i.initialFilter),o.filter.setFilter(r)}i.initialHeaderFilter&&this.modExists("filter",!0)&&i.initialHeaderFilter.forEach(function(e){var i=t.columnManager.findColumn(e.field);if(!i)return console.warn("Column Filter Error - No matching column found:",e.field),!1;o.filter.setHeaderFilterValue(i,e.value)}),this.modExists("ajax")&&o.ajax.initialize(),i.pagination&&this.modExists("page",!0)&&o.page.initialize(),i.groupBy&&this.modExists("groupRows",!0)&&o.groupRows.initialize(),this.modExists("keybindings")&&o.keybindings.initialize(),this.modExists("selectRow")&&o.selectRow.clearSelectionData(!0),i.autoResize&&this.modExists("resizeTable")&&o.resizeTable.initialize(),this.modExists("clipboard")&&o.clipboard.initialize(),i.printAsHtml&&this.modExists("print")&&o.print.initialize(),i.tableBuilt.call(this)},Tabulator.prototype._loadInitialData=function(){var t=this;if(t.options.pagination&&t.modExists("page"))if(t.modules.page.reset(!0,!0),"local"==t.options.pagination){if(t.options.data.length)t.rowManager.setData(t.options.data,!1,!0);else{if((t.options.ajaxURL||t.options.ajaxURLGenerator)&&t.modExists("ajax"))return void t.modules.ajax.loadData(!1,!0).then(function(){}).catch(function(){t.options.paginationInitialPage&&t.modules.page.setPage(t.options.paginationInitialPage)});t.rowManager.setData(t.options.data,!1,!0)}t.options.paginationInitialPage&&t.modules.page.setPage(t.options.paginationInitialPage)}else t.options.ajaxURL?t.modules.page.setPage(t.options.paginationInitialPage).then(function(){}).catch(function(){}):t.rowManager.setData([],!1,!0);else t.options.data.length?t.rowManager.setData(t.options.data):(t.options.ajaxURL||t.options.ajaxURLGenerator)&&t.modExists("ajax")?t.modules.ajax.loadData(!1,!0).then(function(){}).catch(function(){}):t.rowManager.setData(t.options.data,!1,!0)},Tabulator.prototype.destroy=function(){var t=this.element;for(Tabulator.prototype.comms.deregister(this),this.options.reactiveData&&this.modExists("reactiveData",!0)&&this.modules.reactiveData.unwatchData(),this.rowManager.rows.forEach(function(t){t.wipe()}),this.rowManager.rows=[],this.rowManager.activeRows=[],this.rowManager.displayRows=[],this.options.autoResize&&this.modExists("resizeTable")&&this.modules.resizeTable.clearBindings(),this.modExists("keybindings")&&this.modules.keybindings.clearBindings();t.firstChild;)t.removeChild(t.firstChild);t.classList.remove("tabulator")},Tabulator.prototype._detectBrowser=function(){var t=navigator.userAgent||navigator.vendor||window.opera;t.indexOf("Trident")>-1?(this.browser="ie",this.browserSlow=!0):t.indexOf("Edge")>-1?(this.browser="edge",this.browserSlow=!0):t.indexOf("Firefox")>-1?(this.browser="firefox",this.browserSlow=!1):(this.browser="other",this.browserSlow=!1),this.browserMobile=/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(t)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(t.substr(0,4))},Tabulator.prototype.blockRedraw=function(){return this.rowManager.blockRedraw()},Tabulator.prototype.restoreRedraw=function(){return this.rowManager.restoreRedraw()},Tabulator.prototype.setDataFromLocalFile=function(t){var e=this;return new Promise(function(o,i){var n=document.createElement("input");n.type="file",n.accept=t||".json,application/json",n.addEventListener("change",function(t){var s,l=n.files[0],a=new FileReader;a.readAsText(l),a.onload=function(t){try{s=JSON.parse(a.result)}catch(t){return console.warn("File Load Error - File contents is invalid JSON",t),void i(t)}e._setData(s).then(function(t){o(t)}).catch(function(t){o(t)})},a.onerror=function(t){console.warn("File Load Error - Unable to read file"),i()}}),n.click()})},Tabulator.prototype.setData=function(t,e,o){return this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this._setData(t,e,o,!1,!0)},Tabulator.prototype._setData=function(t,e,o,i,n){var s=this;return"string"!=typeof t?t?s.rowManager.setData(t,i,n):s.modExists("ajax")&&(s.modules.ajax.getUrl||s.options.ajaxURLGenerator)?"remote"==s.options.pagination&&s.modExists("page",!0)?(s.modules.page.reset(!0,!0),s.modules.page.setPage(1)):s.modules.ajax.loadData(i,n):s.rowManager.setData([],i,n):0==t.indexOf("{")||0==t.indexOf("[")?s.rowManager.setData(JSON.parse(t),i,n):s.modExists("ajax",!0)?(e&&s.modules.ajax.setParams(e),o&&s.modules.ajax.setConfig(o),s.modules.ajax.setUrl(t),"remote"==s.options.pagination&&s.modExists("page",!0)?(s.modules.page.reset(!0,!0),s.modules.page.setPage(1)):s.modules.ajax.loadData(i,n)):void 0},Tabulator.prototype.clearData=function(){this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this.rowManager.clearData()},Tabulator.prototype.getData=function(t){return!0===t&&(console.warn("passing a boolean to the getData function is deprecated, you should now pass the string 'active'"),t="active"),this.rowManager.getData(t)},Tabulator.prototype.getDataCount=function(t){return!0===t&&(console.warn("passing a boolean to the getDataCount function is deprecated, you should now pass the string 'active'"),t="active"),this.rowManager.getDataCount(t)},Tabulator.prototype.searchRows=function(t,e,o){if(this.modExists("filter",!0))return this.modules.filter.search("rows",t,e,o)},Tabulator.prototype.searchData=function(t,e,o){if(this.modExists("filter",!0))return this.modules.filter.search("data",t,e,o)},Tabulator.prototype.getHtml=function(t,e,o){if(this.modExists("export",!0))return this.modules.export.getHtml(t,e,o)},Tabulator.prototype.print=function(t,e,o){if(this.modExists("print",!0))return this.modules.print.printFullscreen(t,e,o)},Tabulator.prototype.getAjaxUrl=function(){if(this.modExists("ajax",!0))return this.modules.ajax.getUrl()},Tabulator.prototype.replaceData=function(t,e,o){return this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this._setData(t,e,o,!0)},Tabulator.prototype.updateData=function(t){var e=this,o=this,i=0;return new Promise(function(n,s){e.modExists("ajax")&&e.modules.ajax.blockActiveRequest(),"string"==typeof t&&(t=JSON.parse(t)),t?t.forEach(function(t){var e=o.rowManager.findRow(t[o.options.index]);e&&(i++,e.updateData(t).then(function(){--i||n()}))}):(console.warn("Update Error - No data provided"),s("Update Error - No data provided"))})},Tabulator.prototype.addData=function(t,e,o){var i=this;return new Promise(function(n,s){i.modExists("ajax")&&i.modules.ajax.blockActiveRequest(),"string"==typeof t&&(t=JSON.parse(t)),t?i.rowManager.addRows(t,e,o).then(function(t){var e=[];t.forEach(function(t){e.push(t.getComponent())}),n(e)}):(console.warn("Update Error - No data provided"),s("Update Error - No data provided"))})},Tabulator.prototype.updateOrAddData=function(t){var e=this,o=this,i=[],n=0;return new Promise(function(s,l){e.modExists("ajax")&&e.modules.ajax.blockActiveRequest(),"string"==typeof t&&(t=JSON.parse(t)),t?t.forEach(function(t){var e=o.rowManager.findRow(t[o.options.index]);n++,e?e.updateData(t).then(function(){n--,i.push(e.getComponent()),n||s(i)}):o.rowManager.addRows(t).then(function(t){n--,i.push(t[0].getComponent()),n||s(i)})}):(console.warn("Update Error - No data provided"),l("Update Error - No data provided"))})},Tabulator.prototype.getRow=function(t){var e=this.rowManager.findRow(t);return e?e.getComponent():(console.warn("Find Error - No matching row found:",t),!1)},Tabulator.prototype.getRowFromPosition=function(t,e){var o=this.rowManager.getRowFromPosition(t,e);return o?o.getComponent():(console.warn("Find Error - No matching row found:",t),!1)},Tabulator.prototype.deleteRow=function(t){var e=this;return new Promise(function(o,i){function n(){++l==t.length&&a&&(s.rowManager.reRenderInPosition(),o())}var s=e,l=0,a=0,r=[];Array.isArray(t)||(t=[t]),t.forEach(function(t){var o=e.rowManager.findRow(t,!0);o?r.push(o):(console.warn("Delete Error - No matching row found:",t),i("Delete Error - No matching row found"),n())}),r.sort(function(t,o){return e.rowManager.rows.indexOf(t)>e.rowManager.rows.indexOf(o)?1:-1}),r.forEach(function(t){t.delete().then(function(){a++,n()}).catch(function(t){n(),i(t)})})})},Tabulator.prototype.addRow=function(t,e,o){var i=this;return new Promise(function(n,s){"string"==typeof t&&(t=JSON.parse(t)),i.rowManager.addRows(t,e,o).then(function(t){i.modExists("columnCalcs")&&i.modules.columnCalcs.recalc(i.rowManager.activeRows),n(t[0].getComponent())})})},Tabulator.prototype.updateOrAddRow=function(t,e){var o=this;return new Promise(function(i,n){var s=o.rowManager.findRow(t);"string"==typeof e&&(e=JSON.parse(e)),s?s.updateData(e).then(function(){o.modExists("columnCalcs")&&o.modules.columnCalcs.recalc(o.rowManager.activeRows),i(s.getComponent())}).catch(function(t){n(t)}):s=o.rowManager.addRows(e).then(function(t){o.modExists("columnCalcs")&&o.modules.columnCalcs.recalc(o.rowManager.activeRows),i(t[0].getComponent())}).catch(function(t){n(t)})})},Tabulator.prototype.updateRow=function(t,e){var o=this;return new Promise(function(i,n){var s=o.rowManager.findRow(t);"string"==typeof e&&(e=JSON.parse(e)),s?s.updateData(e).then(function(){i(s.getComponent())}).catch(function(t){n(t)}):(console.warn("Update Error - No matching row found:",t),n("Update Error - No matching row found"))})},Tabulator.prototype.scrollToRow=function(t,e,o){var i=this;return new Promise(function(n,s){var l=i.rowManager.findRow(t);l?i.rowManager.scrollToRow(l,e,o).then(function(){n()}).catch(function(t){s(t)}):(console.warn("Scroll Error - No matching row found:",t),s("Scroll Error - No matching row found"))})},Tabulator.prototype.moveRow=function(t,e,o){var i=this.rowManager.findRow(t);i?i.moveToRow(e,o):console.warn("Move Error - No matching row found:",t)},Tabulator.prototype.getRows=function(t){return!0===t&&(console.warn("passing a boolean to the getRows function is deprecated, you should now pass the string 'active'"),t="active"),this.rowManager.getComponents(t)},Tabulator.prototype.getRowPosition=function(t,e){var o=this.rowManager.findRow(t);return o?this.rowManager.getRowPosition(o,e):(console.warn("Position Error - No matching row found:",t),!1)},Tabulator.prototype.copyToClipboard=function(t){this.modExists("clipboard",!0)&&this.modules.clipboard.copy(t)},Tabulator.prototype.setColumns=function(t){this.columnManager.setColumns(t)},Tabulator.prototype.getColumns=function(t){return this.columnManager.getComponents(t)},Tabulator.prototype.getColumn=function(t){var e=this.columnManager.findColumn(t);return e?e.getComponent():(console.warn("Find Error - No matching column found:",t),!1)},Tabulator.prototype.getColumnDefinitions=function(){return this.columnManager.getDefinitionTree()},Tabulator.prototype.getColumnLayout=function(){if(this.modExists("persistence",!0))return this.modules.persistence.parseColumns(this.columnManager.getColumns())},Tabulator.prototype.setColumnLayout=function(t){return!!this.modExists("persistence",!0)&&(this.columnManager.setColumns(this.modules.persistence.mergeDefinition(this.options.columns,t)),!0)},Tabulator.prototype.showColumn=function(t){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Show Error - No matching column found:",t),!1;e.show(),this.options.responsiveLayout&&this.modExists("responsiveLayout",!0)&&this.modules.responsiveLayout.update()},Tabulator.prototype.hideColumn=function(t){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Hide Error - No matching column found:",t),!1;e.hide(),this.options.responsiveLayout&&this.modExists("responsiveLayout",!0)&&this.modules.responsiveLayout.update()},Tabulator.prototype.toggleColumn=function(t){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Visibility Toggle Error - No matching column found:",t),!1;e.visible?e.hide():e.show()},Tabulator.prototype.addColumn=function(t,e,o){var i=this;return new Promise(function(n,s){var l=i.columnManager.findColumn(o);i.columnManager.addColumn(t,e,l).then(function(t){n(t.getComponent())}).catch(function(t){s(t)})})},Tabulator.prototype.deleteColumn=function(t){var e=this;return new Promise(function(o,i){var n=e.columnManager.findColumn(t);n?n.delete().then(function(){o()}).catch(function(t){i(t)}):(console.warn("Column Delete Error - No matching column found:",t),i())})},Tabulator.prototype.updateColumnDefinition=function(t,e){var o=this;return new Promise(function(i,n){var s=o.columnManager.findColumn(t);s?s.updateDefinition(e).then(function(t){i(t)}).catch(function(t){n(t)}):(console.warn("Column Update Error - No matching column found:",t),n())})},Tabulator.prototype.moveColumn=function(t,e,o){var i=this.columnManager.findColumn(t),n=this.columnManager.findColumn(e);i?n?this.columnManager.moveColumn(i,n,o):console.warn("Move Error - No matching column found:",n):console.warn("Move Error - No matching column found:",t)},Tabulator.prototype.scrollToColumn=function(t,e,o){var i=this;return new Promise(function(n,s){var l=i.columnManager.findColumn(t);l?i.columnManager.scrollToColumn(l,e,o).then(function(){n()}).catch(function(t){s(t)}):(console.warn("Scroll Error - No matching column found:",t),s("Scroll Error - No matching column found"))})},Tabulator.prototype.setLocale=function(t){this.modules.localize.setLocale(t)},Tabulator.prototype.getLocale=function(){return this.modules.localize.getLocale()},Tabulator.prototype.getLang=function(t){return this.modules.localize.getLang(t)},Tabulator.prototype.redraw=function(t){this.columnManager.redraw(t),this.rowManager.redraw(t)},Tabulator.prototype.setHeight=function(t){"classic"!==this.rowManager.renderMode?(this.options.height=isNaN(t)?t:t+"px",this.element.style.height=this.options.height,this.rowManager.setRenderMode(),this.rowManager.redraw()):console.warn("setHeight function is not available in classic render mode")},Tabulator.prototype.setSort=function(t,e){this.modExists("sort",!0)&&(this.modules.sort.setSort(t,e),this.rowManager.sorterRefresh())},Tabulator.prototype.getSorters=function(){if(this.modExists("sort",!0))return this.modules.sort.getSort()},Tabulator.prototype.clearSort=function(){this.modExists("sort",!0)&&(this.modules.sort.clear(),this.rowManager.sorterRefresh())},Tabulator.prototype.setFilter=function(t,e,o){this.modExists("filter",!0)&&(this.modules.filter.setFilter(t,e,o),this.rowManager.filterRefresh())},Tabulator.prototype.addFilter=function(t,e,o){this.modExists("filter",!0)&&(this.modules.filter.addFilter(t,e,o),this.rowManager.filterRefresh())},Tabulator.prototype.getFilters=function(t){if(this.modExists("filter",!0))return this.modules.filter.getFilters(t)},Tabulator.prototype.setHeaderFilterFocus=function(t){if(this.modExists("filter",!0)){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Filter Focus Error - No matching column found:",t),!1;this.modules.filter.setHeaderFilterFocus(e)}},Tabulator.prototype.getHeaderFilterValue=function(t){if(this.modExists("filter",!0)){var e=this.columnManager.findColumn(t);if(e)return this.modules.filter.getHeaderFilterValue(e);console.warn("Column Filter Error - No matching column found:",t)}},Tabulator.prototype.setHeaderFilterValue=function(t,e){if(this.modExists("filter",!0)){var o=this.columnManager.findColumn(t);if(!o)return console.warn("Column Filter Error - No matching column found:",t),!1;this.modules.filter.setHeaderFilterValue(o,e)}},Tabulator.prototype.getHeaderFilters=function(){if(this.modExists("filter",!0))return this.modules.filter.getHeaderFilters()},Tabulator.prototype.removeFilter=function(t,e,o){this.modExists("filter",!0)&&(this.modules.filter.removeFilter(t,e,o),this.rowManager.filterRefresh())},Tabulator.prototype.clearFilter=function(t){this.modExists("filter",!0)&&(this.modules.filter.clearFilter(t),this.rowManager.filterRefresh())},Tabulator.prototype.clearHeaderFilter=function(){this.modExists("filter",!0)&&(this.modules.filter.clearHeaderFilter(),this.rowManager.filterRefresh())},Tabulator.prototype.selectRow=function(t){this.modExists("selectRow",!0)&&(!0===t&&(console.warn("passing a boolean to the selectRowselectRow function is deprecated, you should now pass the string 'active'"),t="active"),this.modules.selectRow.selectRows(t))},Tabulator.prototype.deselectRow=function(t){this.modExists("selectRow",!0)&&this.modules.selectRow.deselectRows(t)},Tabulator.prototype.toggleSelectRow=function(t){this.modExists("selectRow",!0)&&this.modules.selectRow.toggleRow(t)},Tabulator.prototype.getSelectedRows=function(){if(this.modExists("selectRow",!0))return this.modules.selectRow.getSelectedRows()},Tabulator.prototype.getSelectedData=function(){if(this.modExists("selectRow",!0))return this.modules.selectRow.getSelectedData()},Tabulator.prototype.setMaxPage=function(t){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.setMaxPage(t)},Tabulator.prototype.setPage=function(t){return this.options.pagination&&this.modExists("page")?this.modules.page.setPage(t):new Promise(function(t,e){e()})},Tabulator.prototype.setPageToRow=function(t){var e=this;return new Promise(function(o,i){e.options.pagination&&e.modExists("page")?(t=e.rowManager.findRow(t),t?e.modules.page.setPageToRow(t).then(function(){o()}).catch(function(){i()}):i()):i()})},Tabulator.prototype.setPageSize=function(t){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.setPageSize(t),this.modules.page.setPage(1).then(function(){}).catch(function(){})},Tabulator.prototype.getPageSize=function(){if(this.options.pagination&&this.modExists("page",!0))return this.modules.page.getPageSize()},Tabulator.prototype.previousPage=function(){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.previousPage()},Tabulator.prototype.nextPage=function(){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.nextPage()},Tabulator.prototype.getPage=function(){return!(!this.options.pagination||!this.modExists("page"))&&this.modules.page.getPage()},Tabulator.prototype.getPageMax=function(){return!(!this.options.pagination||!this.modExists("page"))&&this.modules.page.getPageMax()},Tabulator.prototype.setGroupBy=function(t){if(!this.modExists("groupRows",!0))return!1;this.options.groupBy=t,this.modules.groupRows.initialize(),this.rowManager.refreshActiveData("display"),this.options.persistence&&this.modExists("persistence",!0)&&this.modules.persistence.config.group&&this.modules.persistence.save("group")},Tabulator.prototype.setGroupStartOpen=function(t){if(!this.modExists("groupRows",!0))return!1;this.options.groupStartOpen=t,this.modules.groupRows.initialize(),this.options.groupBy?(this.rowManager.refreshActiveData("group"),this.options.persistence&&this.modExists("persistence",!0)&&this.modules.persistence.config.group&&this.modules.persistence.save("group")):console.warn("Grouping Update - cant refresh view, no groups have been set")},Tabulator.prototype.setGroupHeader=function(t){if(!this.modExists("groupRows",!0))return!1;this.options.groupHeader=t,this.modules.groupRows.initialize(),this.options.groupBy?(this.rowManager.refreshActiveData("group"),this.options.persistence&&this.modExists("persistence",!0)&&this.modules.persistence.config.group&&this.modules.persistence.save("group")):console.warn("Grouping Update - cant refresh view, no groups have been set")},Tabulator.prototype.getGroups=function(t){return!!this.modExists("groupRows",!0)&&this.modules.groupRows.getGroups(!0)},Tabulator.prototype.getGroupedData=function(){if(this.modExists("groupRows",!0))return this.options.groupBy?this.modules.groupRows.getGroupedData():this.getData()},Tabulator.prototype.getCalcResults=function(){return!!this.modExists("columnCalcs",!0)&&this.modules.columnCalcs.getResults()},Tabulator.prototype.recalc=function(){this.modExists("columnCalcs",!0)&&this.modules.columnCalcs.recalcAll(this.rowManager.activeRows)},Tabulator.prototype.navigatePrev=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&t.nav().prev()},Tabulator.prototype.navigateNext=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&t.nav().next()},Tabulator.prototype.navigateLeft=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().left())},Tabulator.prototype.navigateRight=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().right())},Tabulator.prototype.navigateUp=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().up())},Tabulator.prototype.navigateDown=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().down())},Tabulator.prototype.undo=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.undo()},Tabulator.prototype.redo=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.redo()},Tabulator.prototype.getHistoryUndoSize=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.getHistoryUndoSize()},Tabulator.prototype.getHistoryRedoSize=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.getHistoryRedoSize()},Tabulator.prototype.download=function(t,e,o,i){this.modExists("download",!0)&&this.modules.download.download(t,e,o,i)},Tabulator.prototype.downloadToTab=function(t,e,o,i){this.modExists("download",!0)&&this.modules.download.download(t,e,o,i,!0)},Tabulator.prototype.tableComms=function(t,e,o,i){this.modules.comms.receive(t,e,o,i)},Tabulator.prototype.moduleBindings={},Tabulator.prototype.extendModule=function(t,e,o){if(Tabulator.prototype.moduleBindings[t]){var i=Tabulator.prototype.moduleBindings[t].prototype[e];if(i)if("object"==(void 0===o?"undefined":_typeof(o)))for(var n in o)i[n]=o[n];else console.warn("Module Error - Invalid value type, it must be an object");else console.warn("Module Error - property does not exist:",e)}else console.warn("Module Error - module does not exist:",t)},Tabulator.prototype.registerModule=function(t,e){Tabulator.prototype.moduleBindings[t]=e},Tabulator.prototype.bindModules=function(){this.modules={};for(var t in Tabulator.prototype.moduleBindings)this.modules[t]=new Tabulator.prototype.moduleBindings[t](this)},Tabulator.prototype.modExists=function(t,e){return!!this.modules[t]||(e&&console.error("Tabulator Module Not Installed: "+t),!1)},Tabulator.prototype.helpers={elVisible:function(t){return!(t.offsetWidth<=0&&t.offsetHeight<=0)},elOffset:function(t){var e=t.getBoundingClientRect();return{top:e.top+window.pageYOffset-document.documentElement.clientTop,left:e.left+window.pageXOffset-document.documentElement.clientLeft}},deepClone:function(t){var e=Array.isArray(t)?[]:{};for(var o in t)null!=t[o]&&"object"===_typeof(t[o])?t[o]instanceof Date?e[o]=new Date(t[o]):e[o]=this.deepClone(t[o]):e[o]=t[o];return e}},Tabulator.prototype.comms={tables:[],register:function(t){Tabulator.prototype.comms.tables.push(t)},deregister:function(t){var e=Tabulator.prototype.comms.tables.indexOf(t);e>-1&&Tabulator.prototype.comms.tables.splice(e,1)},lookupTable:function(t,e){var o,i,n=[];if("string"==typeof t){if(o=document.querySelectorAll(t),o.length)for(var s=0;s<o.length;s++)(i=Tabulator.prototype.comms.matchElement(o[s]))&&n.push(i)}else"undefined"!=typeof HTMLElement&&t instanceof HTMLElement||t instanceof Tabulator?(i=Tabulator.prototype.comms.matchElement(t))&&n.push(i):Array.isArray(t)?t.forEach(function(t){n=n.concat(Tabulator.prototype.comms.lookupTable(t))}):e||console.warn("Table Connection Error - Invalid Selector",t);return n},matchElement:function(t){return Tabulator.prototype.comms.tables.find(function(e){return t instanceof Tabulator?e===t:e.element===t})}},Tabulator.prototype.findTable=function(t){var e=Tabulator.prototype.comms.lookupTable(t,!0);return!(Array.isArray(e)&&!e.length)&&e};var Layout=function(t){this.table=t,this.mode=null};Layout.prototype.initialize=function(t){this.modes[t]?this.mode=t:(console.warn("Layout Error - invalid mode set, defaulting to 'fitData' : "+t),this.mode="fitData"),this.table.element.setAttribute("tabulator-layout",this.mode)},Layout.prototype.getMode=function(){return this.mode},Layout.prototype.layout=function(){this.modes[this.mode].call(this,this.table.columnManager.columnsByIndex)},Layout.prototype.modes={fitData:function(t){t.forEach(function(t){t.reinitializeWidth()}),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitDataFill:function(t){t.forEach(function(t){t.reinitializeWidth()}),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitDataStretch:function(t){var e=this,o=0,i=this.table.rowManager.element.clientWidth,n=0,s=!1;t.forEach(function(t,i){t.widthFixed||t.reinitializeWidth(),(e.table.options.responsiveLayout?t.modules.responsive.visible:t.visible)&&(s=t),t.visible&&(o+=t.getWidth())}),s?(n=i-o+s.getWidth(),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&(s.setWidth(0),this.table.modules.responsiveLayout.update()),n>0?s.setWidth(n):s.reinitializeWidth()):this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitColumns:function(t){function e(t){return"string"==typeof t?t.indexOf("%")>-1?n/100*parseInt(t):parseInt(t):t}function o(t,i,n,s){function l(t){return n*(t.column.definition.widthGrow||1)}function a(t){return e(t.width)-n*(t.column.definition.widthShrink||0)}var r=[],u=0,c=0,h=0,p=0,d=0,m=[];return t.forEach(function(t,e){var o=s?a(t):l(t)
-;t.column.minWidth>=o?r.push(t):(m.push(t),d+=s?t.column.definition.widthShrink||1:t.column.definition.widthGrow||1)}),r.length?(r.forEach(function(t){u+=s?t.width-t.column.minWidth:t.column.minWidth,t.width=t.column.minWidth}),c=i-u,h=d?Math.floor(c/d):c,p=c-h*d,p+=o(m,c,h,s)):(p=d?i-Math.floor(i/d)*d:i,m.forEach(function(t){t.width=s?a(t):l(t)})),p}var i=this,n=i.table.element.clientWidth,s=0,l=0,a=0,r=0,u=[],c=[],h=0,p=0,d=0;this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update(),this.table.rowManager.element.scrollHeight>this.table.rowManager.element.clientHeight&&(n-=this.table.rowManager.element.offsetWidth-this.table.rowManager.element.clientWidth),t.forEach(function(t){var o,i,n;t.visible&&(o=t.definition.width,i=parseInt(t.minWidth),o?(n=e(o),s+=n>i?n:i,t.definition.widthShrink&&(c.push({column:t,width:n>i?n:i}),h+=t.definition.widthShrink)):(u.push({column:t,width:0}),a+=t.definition.widthGrow||1))}),l=n-s,r=Math.floor(l/a);var d=o(u,l,r,!1);u.length&&d>0&&(u[u.length-1].width+=+d),u.forEach(function(t){l-=t.width}),p=Math.abs(d)+l,p>0&&h&&(d=o(c,p,Math.floor(p/h),!0)),c.length&&(c[c.length-1].width-=d),u.forEach(function(t){t.column.setWidth(t.width)}),c.forEach(function(t){t.column.setWidth(t.width)})}},Tabulator.prototype.registerModule("layout",Layout);var Localize=function(t){this.table=t,this.locale="default",this.lang=!1,this.bindings={}};Localize.prototype.setHeaderFilterPlaceholder=function(t){this.langs.default.headerFilters.default=t},Localize.prototype.setHeaderFilterColumnPlaceholder=function(t,e){this.langs.default.headerFilters.columns[t]=e,this.lang&&!this.lang.headerFilters.columns[t]&&(this.lang.headerFilters.columns[t]=e)},Localize.prototype.installLang=function(t,e){this.langs[t]?this._setLangProp(this.langs[t],e):this.langs[t]=e},Localize.prototype._setLangProp=function(t,e){for(var o in e)t[o]&&"object"==_typeof(t[o])?this._setLangProp(t[o],e[o]):t[o]=e[o]},Localize.prototype.setLocale=function(t){function e(t,o){for(var i in t)"object"==_typeof(t[i])?(o[i]||(o[i]={}),e(t[i],o[i])):o[i]=t[i]}var o=this;if(t=t||"default",!0===t&&navigator.language&&(t=navigator.language.toLowerCase()),t&&!o.langs[t]){var i=t.split("-")[0];o.langs[i]?(console.warn("Localization Error - Exact matching locale not found, using closest match: ",t,i),t=i):(console.warn("Localization Error - Matching locale not found, using default: ",t),t="default")}o.locale=t,o.lang=Tabulator.prototype.helpers.deepClone(o.langs.default||{}),"default"!=t&&e(o.langs[t],o.lang),o.table.options.localized.call(o.table,o.locale,o.lang),o._executeBindings()},Localize.prototype.getLocale=function(t){return self.locale},Localize.prototype.getLang=function(t){return t?this.langs[t]:this.lang},Localize.prototype.getText=function(t,e){var t=e?t+"|"+e:t,o=t.split("|");return this._getLangElement(o,this.locale)||""},Localize.prototype._getLangElement=function(t,e){var o=this,i=o.lang;return t.forEach(function(t){var e;i&&(e=i[t],i=void 0!==e&&e)}),i},Localize.prototype.bind=function(t,e){this.bindings[t]||(this.bindings[t]=[]),this.bindings[t].push(e),e(this.getText(t),this.lang)},Localize.prototype._executeBindings=function(){var t=this;for(var e in t.bindings)!function(e){t.bindings[e].forEach(function(o){o(t.getText(e),t.lang)})}(e)},Localize.prototype.langs={default:{groups:{item:"item",items:"items"},columns:{},ajax:{loading:"Loading",error:"Error"},pagination:{page_size:"Page Size",first:"First",first_title:"First Page",last:"Last",last_title:"Last Page",prev:"Prev",prev_title:"Prev Page",next:"Next",next_title:"Next Page"},headerFilters:{default:"filter column...",columns:{}}}},Tabulator.prototype.registerModule("localize",Localize);var Comms=function(t){this.table=t};Comms.prototype.getConnections=function(t){var e,o=this,i=[];return e=Tabulator.prototype.comms.lookupTable(t),e.forEach(function(t){o.table!==t&&i.push(t)}),i},Comms.prototype.send=function(t,e,o,i){var n=this,s=this.getConnections(t);s.forEach(function(t){t.tableComms(n.table.element,e,o,i)}),!s.length&&t&&console.warn("Table Connection Error - No tables matching selector found",t)},Comms.prototype.receive=function(t,e,o,i){if(this.table.modExists(e))return this.table.modules[e].commsReceived(t,o,i);console.warn("Inter-table Comms Error - no such module:",e)},Tabulator.prototype.registerModule("comms",Comms);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/accessor.js b/app/static/vendors/tabulator/js/modules/accessor.js
deleted file mode 100644 (file)
index 8ffe1bf..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-
-var Accessor = function Accessor(table) {
-       this.table = table; //hold Tabulator object
-       this.allowedTypes = ["", "data", "download", "clipboard", "print", "htmlOutput"]; //list of accessor types
-};
-
-//initialize column accessor
-Accessor.prototype.initializeColumn = function (column) {
-       var self = this,
-           match = false,
-           config = {};
-
-       this.allowedTypes.forEach(function (type) {
-               var key = "accessor" + (type.charAt(0).toUpperCase() + type.slice(1)),
-                   accessor;
-
-               if (column.definition[key]) {
-                       accessor = self.lookupAccessor(column.definition[key]);
-
-                       if (accessor) {
-                               match = true;
-
-                               config[key] = {
-                                       accessor: accessor,
-                                       params: column.definition[key + "Params"] || {}
-                               };
-                       }
-               }
-       });
-
-       if (match) {
-               column.modules.accessor = config;
-       }
-};
-
-Accessor.prototype.lookupAccessor = function (value) {
-       var accessor = false;
-
-       //set column accessor
-       switch (typeof value === "undefined" ? "undefined" : _typeof(value)) {
-               case "string":
-                       if (this.accessors[value]) {
-                               accessor = this.accessors[value];
-                       } else {
-                               console.warn("Accessor Error - No such accessor found, ignoring: ", value);
-                       }
-                       break;
-
-               case "function":
-                       accessor = value;
-                       break;
-       }
-
-       return accessor;
-};
-
-//apply accessor to row
-Accessor.prototype.transformRow = function (dataIn, type) {
-       var self = this,
-           key = "accessor" + (type.charAt(0).toUpperCase() + type.slice(1));
-
-       //clone data object with deep copy to isolate internal data from returned result
-       var data = Tabulator.prototype.helpers.deepClone(dataIn || {});
-
-       self.table.columnManager.traverse(function (column) {
-               var value, accessor, params, component;
-
-               if (column.modules.accessor) {
-
-                       accessor = column.modules.accessor[key] || column.modules.accessor.accessor || false;
-
-                       if (accessor) {
-                               value = column.getFieldValue(data);
-
-                               if (value != "undefined") {
-                                       component = column.getComponent();
-                                       params = typeof accessor.params === "function" ? accessor.params(value, data, type, component) : accessor.params;
-                                       column.setFieldValue(data, accessor.accessor(value, data, type, params, component));
-                               }
-                       }
-               }
-       });
-
-       return data;
-},
-
-//default accessors
-Accessor.prototype.accessors = {};
-
-Tabulator.prototype.registerModule("accessor", Accessor);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/accessor.min.js b/app/static/vendors/tabulator/js/modules/accessor.min.js
deleted file mode 100644 (file)
index 2633b8f..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},Accessor=function(o){this.table=o,this.allowedTypes=["","data","download","clipboard","print","htmlOutput"]};Accessor.prototype.initializeColumn=function(o){var e=this,s=!1,r={};this.allowedTypes.forEach(function(t){var c,a="accessor"+(t.charAt(0).toUpperCase()+t.slice(1));o.definition[a]&&(c=e.lookupAccessor(o.definition[a]))&&(s=!0,r[a]={accessor:c,params:o.definition[a+"Params"]||{}})}),s&&(o.modules.accessor=r)},Accessor.prototype.lookupAccessor=function(o){var e=!1;switch(void 0===o?"undefined":_typeof(o)){case"string":this.accessors[o]?e=this.accessors[o]:console.warn("Accessor Error - No such accessor found, ignoring: ",o);break;case"function":e=o}return e},Accessor.prototype.transformRow=function(o,e){var s=this,r="accessor"+(e.charAt(0).toUpperCase()+e.slice(1)),t=Tabulator.prototype.helpers.deepClone(o||{});return s.table.columnManager.traverse(function(o){var s,c,a,n;o.modules.accessor&&(c=o.modules.accessor[r]||o.modules.accessor.accessor||!1)&&"undefined"!=(s=o.getFieldValue(t))&&(n=o.getComponent(),a="function"==typeof c.params?c.params(s,t,e,n):c.params,o.setFieldValue(t,c.accessor(s,t,e,a,n)))}),t},Accessor.prototype.accessors={},Tabulator.prototype.registerModule("accessor",Accessor);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/ajax.js b/app/static/vendors/tabulator/js/modules/ajax.js
deleted file mode 100644 (file)
index 7d72604..0000000
+++ /dev/null
@@ -1,465 +0,0 @@
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-
-var Ajax = function Ajax(table) {
-
-       this.table = table; //hold Tabulator object
-       this.config = false; //hold config object for ajax request
-       this.url = ""; //request URL
-       this.urlGenerator = false;
-       this.params = false; //request parameters
-
-       this.loaderElement = this.createLoaderElement(); //loader message div
-       this.msgElement = this.createMsgElement(); //message element
-       this.loadingElement = false;
-       this.errorElement = false;
-       this.loaderPromise = false;
-
-       this.progressiveLoad = false;
-       this.loading = false;
-
-       this.requestOrder = 0; //prevent requests comming out of sequence if overridden by another load request
-};
-
-//initialize setup options
-Ajax.prototype.initialize = function () {
-       var template;
-
-       this.loaderElement.appendChild(this.msgElement);
-
-       if (this.table.options.ajaxLoaderLoading) {
-               if (typeof this.table.options.ajaxLoaderLoading == "string") {
-                       template = document.createElement('template');
-                       template.innerHTML = this.table.options.ajaxLoaderLoading.trim();
-                       this.loadingElement = template.content.firstChild;
-               } else {
-                       this.loadingElement = this.table.options.ajaxLoaderLoading;
-               }
-       }
-
-       this.loaderPromise = this.table.options.ajaxRequestFunc || this.defaultLoaderPromise;
-
-       this.urlGenerator = this.table.options.ajaxURLGenerator || this.defaultURLGenerator;
-
-       if (this.table.options.ajaxLoaderError) {
-               if (typeof this.table.options.ajaxLoaderError == "string") {
-                       template = document.createElement('template');
-                       template.innerHTML = this.table.options.ajaxLoaderError.trim();
-                       this.errorElement = template.content.firstChild;
-               } else {
-                       this.errorElement = this.table.options.ajaxLoaderError;
-               }
-       }
-
-       if (this.table.options.ajaxParams) {
-               this.setParams(this.table.options.ajaxParams);
-       }
-
-       if (this.table.options.ajaxConfig) {
-               this.setConfig(this.table.options.ajaxConfig);
-       }
-
-       if (this.table.options.ajaxURL) {
-               this.setUrl(this.table.options.ajaxURL);
-       }
-
-       if (this.table.options.ajaxProgressiveLoad) {
-               if (this.table.options.pagination) {
-                       this.progressiveLoad = false;
-                       console.error("Progressive Load Error - Pagination and progressive load cannot be used at the same time");
-               } else {
-                       if (this.table.modExists("page")) {
-                               this.progressiveLoad = this.table.options.ajaxProgressiveLoad;
-                               this.table.modules.page.initializeProgressive(this.progressiveLoad);
-                       } else {
-                               console.error("Pagination plugin is required for progressive ajax loading");
-                       }
-               }
-       }
-};
-
-Ajax.prototype.createLoaderElement = function () {
-       var el = document.createElement("div");
-       el.classList.add("tabulator-loader");
-       return el;
-};
-
-Ajax.prototype.createMsgElement = function () {
-       var el = document.createElement("div");
-
-       el.classList.add("tabulator-loader-msg");
-       el.setAttribute("role", "alert");
-
-       return el;
-};
-
-//set ajax params
-Ajax.prototype.setParams = function (params, update) {
-       if (update) {
-               this.params = this.params || {};
-
-               for (var key in params) {
-                       this.params[key] = params[key];
-               }
-       } else {
-               this.params = params;
-       }
-};
-
-Ajax.prototype.getParams = function () {
-       return this.params || {};
-};
-
-//load config object
-Ajax.prototype.setConfig = function (config) {
-       this._loadDefaultConfig();
-
-       if (typeof config == "string") {
-               this.config.method = config;
-       } else {
-               for (var key in config) {
-                       this.config[key] = config[key];
-               }
-       }
-};
-
-//create config object from default
-Ajax.prototype._loadDefaultConfig = function (force) {
-       var self = this;
-       if (!self.config || force) {
-
-               self.config = {};
-
-               //load base config from defaults
-               for (var key in self.defaultConfig) {
-                       self.config[key] = self.defaultConfig[key];
-               }
-       }
-};
-
-//set request url
-Ajax.prototype.setUrl = function (url) {
-       this.url = url;
-};
-
-//get request url
-Ajax.prototype.getUrl = function () {
-       return this.url;
-};
-
-//lstandard loading function
-Ajax.prototype.loadData = function (inPosition, columnsChanged) {
-       var self = this;
-
-       if (this.progressiveLoad) {
-               return this._loadDataProgressive();
-       } else {
-               return this._loadDataStandard(inPosition, columnsChanged);
-       }
-};
-
-Ajax.prototype.nextPage = function (diff) {
-       var margin;
-
-       if (!this.loading) {
-
-               margin = this.table.options.ajaxProgressiveLoadScrollMargin || this.table.rowManager.getElement().clientHeight * 2;
-
-               if (diff < margin) {
-                       this.table.modules.page.nextPage().then(function () {}).catch(function () {});
-               }
-       }
-};
-
-Ajax.prototype.blockActiveRequest = function () {
-       this.requestOrder++;
-};
-
-Ajax.prototype._loadDataProgressive = function () {
-       this.table.rowManager.setData([]);
-       return this.table.modules.page.setPage(1);
-};
-
-Ajax.prototype._loadDataStandard = function (inPosition, columnsChanged) {
-       var _this = this;
-
-       return new Promise(function (resolve, reject) {
-               _this.sendRequest(inPosition).then(function (data) {
-                       _this.table.rowManager.setData(data, inPosition, columnsChanged).then(function () {
-                               resolve();
-                       }).catch(function (e) {
-                               reject(e);
-                       });
-               }).catch(function (e) {
-                       reject(e);
-               });
-       });
-};
-
-Ajax.prototype.generateParamsList = function (data, prefix) {
-       var self = this,
-           output = [];
-
-       prefix = prefix || "";
-
-       if (Array.isArray(data)) {
-               data.forEach(function (item, i) {
-                       output = output.concat(self.generateParamsList(item, prefix ? prefix + "[" + i + "]" : i));
-               });
-       } else if ((typeof data === "undefined" ? "undefined" : _typeof(data)) === "object") {
-               for (var key in data) {
-                       output = output.concat(self.generateParamsList(data[key], prefix ? prefix + "[" + key + "]" : key));
-               }
-       } else {
-               output.push({ key: prefix, value: data });
-       }
-
-       return output;
-};
-
-Ajax.prototype.serializeParams = function (params) {
-       var output = this.generateParamsList(params),
-           encoded = [];
-
-       output.forEach(function (item) {
-               encoded.push(encodeURIComponent(item.key) + "=" + encodeURIComponent(item.value));
-       });
-
-       return encoded.join("&");
-};
-
-//send ajax request
-Ajax.prototype.sendRequest = function (silent) {
-       var _this2 = this;
-
-       var self = this,
-           url = self.url,
-           requestNo,
-           esc,
-           query;
-
-       self.requestOrder++;
-       requestNo = self.requestOrder;
-
-       self._loadDefaultConfig();
-
-       return new Promise(function (resolve, reject) {
-               if (self.table.options.ajaxRequesting.call(_this2.table, self.url, self.params) !== false) {
-
-                       self.loading = true;
-
-                       if (!silent) {
-                               self.showLoader();
-                       }
-
-                       _this2.loaderPromise(url, self.config, self.params).then(function (data) {
-                               if (requestNo === self.requestOrder) {
-                                       if (self.table.options.ajaxResponse) {
-                                               data = self.table.options.ajaxResponse.call(self.table, self.url, self.params, data);
-                                       }
-                                       resolve(data);
-
-                                       self.hideLoader();
-                                       self.loading = false;
-                               } else {
-                                       console.warn("Ajax Response Blocked - An active ajax request was blocked by an attempt to change table data while the request was being made");
-                               }
-                       }).catch(function (error) {
-                               console.error("Ajax Load Error: ", error);
-                               self.table.options.ajaxError.call(self.table, error);
-
-                               self.showError();
-
-                               setTimeout(function () {
-                                       self.hideLoader();
-                               }, 3000);
-
-                               self.loading = false;
-
-                               reject();
-                       });
-               } else {
-                       reject();
-               }
-       });
-};
-
-Ajax.prototype.showLoader = function () {
-       var shouldLoad = typeof this.table.options.ajaxLoader === "function" ? this.table.options.ajaxLoader() : this.table.options.ajaxLoader;
-
-       if (shouldLoad) {
-
-               this.hideLoader();
-
-               while (this.msgElement.firstChild) {
-                       this.msgElement.removeChild(this.msgElement.firstChild);
-               }this.msgElement.classList.remove("tabulator-error");
-               this.msgElement.classList.add("tabulator-loading");
-
-               if (this.loadingElement) {
-                       this.msgElement.appendChild(this.loadingElement);
-               } else {
-                       this.msgElement.innerHTML = this.table.modules.localize.getText("ajax|loading");
-               }
-
-               this.table.element.appendChild(this.loaderElement);
-       }
-};
-
-Ajax.prototype.showError = function () {
-       this.hideLoader();
-
-       while (this.msgElement.firstChild) {
-               this.msgElement.removeChild(this.msgElement.firstChild);
-       }this.msgElement.classList.remove("tabulator-loading");
-       this.msgElement.classList.add("tabulator-error");
-
-       if (this.errorElement) {
-               this.msgElement.appendChild(this.errorElement);
-       } else {
-               this.msgElement.innerHTML = this.table.modules.localize.getText("ajax|error");
-       }
-
-       this.table.element.appendChild(this.loaderElement);
-};
-
-Ajax.prototype.hideLoader = function () {
-       if (this.loaderElement.parentNode) {
-               this.loaderElement.parentNode.removeChild(this.loaderElement);
-       }
-};
-
-//default ajax config object
-Ajax.prototype.defaultConfig = {
-       method: "GET"
-};
-
-Ajax.prototype.defaultURLGenerator = function (url, config, params) {
-
-       if (url) {
-               if (params && Object.keys(params).length) {
-                       if (!config.method || config.method.toLowerCase() == "get") {
-                               config.method = "get";
-
-                               url += (url.includes("?") ? "&" : "?") + this.serializeParams(params);
-                       }
-               }
-       }
-
-       return url;
-};
-
-Ajax.prototype.defaultLoaderPromise = function (url, config, params) {
-       var self = this,
-           contentType;
-
-       return new Promise(function (resolve, reject) {
-
-               //set url
-               url = self.urlGenerator(url, config, params);
-
-               //set body content if not GET request
-               if (config.method.toUpperCase() != "GET") {
-                       contentType = _typeof(self.table.options.ajaxContentType) === "object" ? self.table.options.ajaxContentType : self.contentTypeFormatters[self.table.options.ajaxContentType];
-                       if (contentType) {
-
-                               for (var key in contentType.headers) {
-                                       if (!config.headers) {
-                                               config.headers = {};
-                                       }
-
-                                       if (typeof config.headers[key] === "undefined") {
-                                               config.headers[key] = contentType.headers[key];
-                                       }
-                               }
-
-                               config.body = contentType.body.call(self, url, config, params);
-                       } else {
-                               console.warn("Ajax Error - Invalid ajaxContentType value:", self.table.options.ajaxContentType);
-                       }
-               }
-
-               if (url) {
-
-                       //configure headers
-                       if (typeof config.headers === "undefined") {
-                               config.headers = {};
-                       }
-
-                       if (typeof config.headers.Accept === "undefined") {
-                               config.headers.Accept = "application/json";
-                       }
-
-                       if (typeof config.headers["X-Requested-With"] === "undefined") {
-                               config.headers["X-Requested-With"] = "XMLHttpRequest";
-                       }
-
-                       if (typeof config.mode === "undefined") {
-                               config.mode = "cors";
-                       }
-
-                       if (config.mode == "cors") {
-
-                               if (typeof config.headers["Access-Control-Allow-Origin"] === "undefined") {
-                                       config.headers["Access-Control-Allow-Origin"] = window.location.origin;
-                               }
-
-                               if (typeof config.credentials === "undefined") {
-                                       config.credentials = 'same-origin';
-                               }
-                       } else {
-                               if (typeof config.credentials === "undefined") {
-                                       config.credentials = 'include';
-                               }
-                       }
-
-                       //send request
-                       fetch(url, config).then(function (response) {
-                               if (response.ok) {
-                                       response.json().then(function (data) {
-                                               resolve(data);
-                                       }).catch(function (error) {
-                                               reject(error);
-                                               console.warn("Ajax Load Error - Invalid JSON returned", error);
-                                       });
-                               } else {
-                                       console.error("Ajax Load Error - Connection Error: " + response.status, response.statusText);
-                                       reject(response);
-                               }
-                       }).catch(function (error) {
-                               console.error("Ajax Load Error - Connection Error: ", error);
-                               reject(error);
-                       });
-               } else {
-                       console.warn("Ajax Load Error - No URL Set");
-                       resolve([]);
-               }
-       });
-};
-
-Ajax.prototype.contentTypeFormatters = {
-       "json": {
-               headers: {
-                       'Content-Type': 'application/json'
-               },
-               body: function body(url, config, params) {
-                       return JSON.stringify(params);
-               }
-       },
-       "form": {
-               headers: {},
-               body: function body(url, config, params) {
-                       var output = this.generateParamsList(params),
-                           form = new FormData();
-
-                       output.forEach(function (item) {
-                               form.append(item.key, item.value);
-                       });
-
-                       return form;
-               }
-       }
-};
-
-Tabulator.prototype.registerModule("ajax", Ajax);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/ajax.min.js b/app/static/vendors/tabulator/js/modules/ajax.min.js
deleted file mode 100644 (file)
index a5dae29..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ajax=function(e){this.table=e,this.config=!1,this.url="",this.urlGenerator=!1,this.params=!1,this.loaderElement=this.createLoaderElement(),this.msgElement=this.createMsgElement(),this.loadingElement=!1,this.errorElement=!1,this.loaderPromise=!1,this.progressiveLoad=!1,this.loading=!1,this.requestOrder=0};Ajax.prototype.initialize=function(){var e;this.loaderElement.appendChild(this.msgElement),this.table.options.ajaxLoaderLoading&&("string"==typeof this.table.options.ajaxLoaderLoading?(e=document.createElement("template"),e.innerHTML=this.table.options.ajaxLoaderLoading.trim(),this.loadingElement=e.content.firstChild):this.loadingElement=this.table.options.ajaxLoaderLoading),this.loaderPromise=this.table.options.ajaxRequestFunc||this.defaultLoaderPromise,this.urlGenerator=this.table.options.ajaxURLGenerator||this.defaultURLGenerator,this.table.options.ajaxLoaderError&&("string"==typeof this.table.options.ajaxLoaderError?(e=document.createElement("template"),e.innerHTML=this.table.options.ajaxLoaderError.trim(),this.errorElement=e.content.firstChild):this.errorElement=this.table.options.ajaxLoaderError),this.table.options.ajaxParams&&this.setParams(this.table.options.ajaxParams),this.table.options.ajaxConfig&&this.setConfig(this.table.options.ajaxConfig),this.table.options.ajaxURL&&this.setUrl(this.table.options.ajaxURL),this.table.options.ajaxProgressiveLoad&&(this.table.options.pagination?(this.progressiveLoad=!1,console.error("Progressive Load Error - Pagination and progressive load cannot be used at the same time")):this.table.modExists("page")?(this.progressiveLoad=this.table.options.ajaxProgressiveLoad,this.table.modules.page.initializeProgressive(this.progressiveLoad)):console.error("Pagination plugin is required for progressive ajax loading"))},Ajax.prototype.createLoaderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-loader"),e},Ajax.prototype.createMsgElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-loader-msg"),e.setAttribute("role","alert"),e},Ajax.prototype.setParams=function(e,t){if(t){this.params=this.params||{};for(var o in e)this.params[o]=e[o]}else this.params=e},Ajax.prototype.getParams=function(){return this.params||{}},Ajax.prototype.setConfig=function(e){if(this._loadDefaultConfig(),"string"==typeof e)this.config.method=e;else for(var t in e)this.config[t]=e[t]},Ajax.prototype._loadDefaultConfig=function(e){var t=this;if(!t.config||e){t.config={};for(var o in t.defaultConfig)t.config[o]=t.defaultConfig[o]}},Ajax.prototype.setUrl=function(e){this.url=e},Ajax.prototype.getUrl=function(){return this.url},Ajax.prototype.loadData=function(e,t){return this.progressiveLoad?this._loadDataProgressive():this._loadDataStandard(e,t)},Ajax.prototype.nextPage=function(e){var t;this.loading||(t=this.table.options.ajaxProgressiveLoadScrollMargin||2*this.table.rowManager.getElement().clientHeight,e<t&&this.table.modules.page.nextPage().then(function(){}).catch(function(){}))},Ajax.prototype.blockActiveRequest=function(){this.requestOrder++},Ajax.prototype._loadDataProgressive=function(){return this.table.rowManager.setData([]),this.table.modules.page.setPage(1)},Ajax.prototype._loadDataStandard=function(e,t){var o=this;return new Promise(function(a,r){o.sendRequest(e).then(function(i){o.table.rowManager.setData(i,e,t).then(function(){a()}).catch(function(e){r(e)})}).catch(function(e){r(e)})})},Ajax.prototype.generateParamsList=function(e,t){var o=this,a=[];if(t=t||"",Array.isArray(e))e.forEach(function(e,r){a=a.concat(o.generateParamsList(e,t?t+"["+r+"]":r))});else if("object"===(void 0===e?"undefined":_typeof(e)))for(var r in e)a=a.concat(o.generateParamsList(e[r],t?t+"["+r+"]":r));else a.push({key:t,value:e});return a},Ajax.prototype.serializeParams=function(e){var t=this.generateParamsList(e),o=[];return t.forEach(function(e){o.push(encodeURIComponent(e.key)+"="+encodeURIComponent(e.value))}),o.join("&")},Ajax.prototype.sendRequest=function(e){var t,o=this,a=this,r=a.url;return a.requestOrder++,t=a.requestOrder,a._loadDefaultConfig(),new Promise(function(i,n){!1!==a.table.options.ajaxRequesting.call(o.table,a.url,a.params)?(a.loading=!0,e||a.showLoader(),o.loaderPromise(r,a.config,a.params).then(function(e){t===a.requestOrder?(a.table.options.ajaxResponse&&(e=a.table.options.ajaxResponse.call(a.table,a.url,a.params,e)),i(e),a.hideLoader(),a.loading=!1):console.warn("Ajax Response Blocked - An active ajax request was blocked by an attempt to change table data while the request was being made")}).catch(function(e){console.error("Ajax Load Error: ",e),a.table.options.ajaxError.call(a.table,e),a.showError(),setTimeout(function(){a.hideLoader()},3e3),a.loading=!1,n()})):n()})},Ajax.prototype.showLoader=function(){if("function"==typeof this.table.options.ajaxLoader?this.table.options.ajaxLoader():this.table.options.ajaxLoader){for(this.hideLoader();this.msgElement.firstChild;)this.msgElement.removeChild(this.msgElement.firstChild);this.msgElement.classList.remove("tabulator-error"),this.msgElement.classList.add("tabulator-loading"),this.loadingElement?this.msgElement.appendChild(this.loadingElement):this.msgElement.innerHTML=this.table.modules.localize.getText("ajax|loading"),this.table.element.appendChild(this.loaderElement)}},Ajax.prototype.showError=function(){for(this.hideLoader();this.msgElement.firstChild;)this.msgElement.removeChild(this.msgElement.firstChild);this.msgElement.classList.remove("tabulator-loading"),this.msgElement.classList.add("tabulator-error"),this.errorElement?this.msgElement.appendChild(this.errorElement):this.msgElement.innerHTML=this.table.modules.localize.getText("ajax|error"),this.table.element.appendChild(this.loaderElement)},Ajax.prototype.hideLoader=function(){this.loaderElement.parentNode&&this.loaderElement.parentNode.removeChild(this.loaderElement)},Ajax.prototype.defaultConfig={method:"GET"},Ajax.prototype.defaultURLGenerator=function(e,t,o){return e&&o&&Object.keys(o).length&&(t.method&&"get"!=t.method.toLowerCase()||(t.method="get",e+=(e.includes("?")?"&":"?")+this.serializeParams(o))),e},Ajax.prototype.defaultLoaderPromise=function(e,t,o){var a,r=this;return new Promise(function(i,n){if(e=r.urlGenerator(e,t,o),"GET"!=t.method.toUpperCase())if(a="object"===_typeof(r.table.options.ajaxContentType)?r.table.options.ajaxContentType:r.contentTypeFormatters[r.table.options.ajaxContentType]){for(var s in a.headers)t.headers||(t.headers={}),void 0===t.headers[s]&&(t.headers[s]=a.headers[s]);t.body=a.body.call(r,e,t,o)}else console.warn("Ajax Error - Invalid ajaxContentType value:",r.table.options.ajaxContentType);e?(void 0===t.headers&&(t.headers={}),void 0===t.headers.Accept&&(t.headers.Accept="application/json"),void 0===t.headers["X-Requested-With"]&&(t.headers["X-Requested-With"]="XMLHttpRequest"),void 0===t.mode&&(t.mode="cors"),"cors"==t.mode?(void 0===t.headers["Access-Control-Allow-Origin"]&&(t.headers["Access-Control-Allow-Origin"]=window.location.origin),void 0===t.credentials&&(t.credentials="same-origin")):void 0===t.credentials&&(t.credentials="include"),fetch(e,t).then(function(e){e.ok?e.json().then(function(e){i(e)}).catch(function(e){n(e),console.warn("Ajax Load Error - Invalid JSON returned",e)}):(console.error("Ajax Load Error - Connection Error: "+e.status,e.statusText),n(e))}).catch(function(e){console.error("Ajax Load Error - Connection Error: ",e),n(e)})):(console.warn("Ajax Load Error - No URL Set"),i([]))})},Ajax.prototype.contentTypeFormatters={json:{headers:{"Content-Type":"application/json"},body:function(e,t,o){return JSON.stringify(o)}},form:{headers:{},body:function(e,t,o){var a=this.generateParamsList(o),r=new FormData;return a.forEach(function(e){r.append(e.key,e.value)}),r}}},Tabulator.prototype.registerModule("ajax",Ajax);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/calculation_colums.js b/app/static/vendors/tabulator/js/modules/calculation_colums.js
deleted file mode 100644 (file)
index 51fbd91..0000000
+++ /dev/null
@@ -1,495 +0,0 @@
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-
-var ColumnCalcs = function ColumnCalcs(table) {
-       this.table = table; //hold Tabulator object
-       this.topCalcs = [];
-       this.botCalcs = [];
-       this.genColumn = false;
-       this.topElement = this.createElement();
-       this.botElement = this.createElement();
-       this.topRow = false;
-       this.botRow = false;
-       this.topInitialized = false;
-       this.botInitialized = false;
-
-       this.initialize();
-};
-
-ColumnCalcs.prototype.createElement = function () {
-       var el = document.createElement("div");
-       el.classList.add("tabulator-calcs-holder");
-       return el;
-};
-
-ColumnCalcs.prototype.initialize = function () {
-       this.genColumn = new Column({ field: "value" }, this);
-};
-
-//dummy functions to handle being mock column manager
-ColumnCalcs.prototype.registerColumnField = function () {};
-
-//initialize column calcs
-ColumnCalcs.prototype.initializeColumn = function (column) {
-       var def = column.definition;
-
-       var config = {
-               topCalcParams: def.topCalcParams || {},
-               botCalcParams: def.bottomCalcParams || {}
-       };
-
-       if (def.topCalc) {
-
-               switch (_typeof(def.topCalc)) {
-                       case "string":
-                               if (this.calculations[def.topCalc]) {
-                                       config.topCalc = this.calculations[def.topCalc];
-                               } else {
-                                       console.warn("Column Calc Error - No such calculation found, ignoring: ", def.topCalc);
-                               }
-                               break;
-
-                       case "function":
-                               config.topCalc = def.topCalc;
-                               break;
-
-               }
-
-               if (config.topCalc) {
-                       column.modules.columnCalcs = config;
-                       this.topCalcs.push(column);
-
-                       if (this.table.options.columnCalcs != "group") {
-                               this.initializeTopRow();
-                       }
-               }
-       }
-
-       if (def.bottomCalc) {
-               switch (_typeof(def.bottomCalc)) {
-                       case "string":
-                               if (this.calculations[def.bottomCalc]) {
-                                       config.botCalc = this.calculations[def.bottomCalc];
-                               } else {
-                                       console.warn("Column Calc Error - No such calculation found, ignoring: ", def.bottomCalc);
-                               }
-                               break;
-
-                       case "function":
-                               config.botCalc = def.bottomCalc;
-                               break;
-
-               }
-
-               if (config.botCalc) {
-                       column.modules.columnCalcs = config;
-                       this.botCalcs.push(column);
-
-                       if (this.table.options.columnCalcs != "group") {
-                               this.initializeBottomRow();
-                       }
-               }
-       }
-};
-
-ColumnCalcs.prototype.removeCalcs = function () {
-       var changed = false;
-
-       if (this.topInitialized) {
-               this.topInitialized = false;
-               this.topElement.parentNode.removeChild(this.topElement);
-               changed = true;
-       }
-
-       if (this.botInitialized) {
-               this.botInitialized = false;
-               this.table.footerManager.remove(this.botElement);
-               changed = true;
-       }
-
-       if (changed) {
-               this.table.rowManager.adjustTableSize();
-       }
-};
-
-ColumnCalcs.prototype.initializeTopRow = function () {
-       if (!this.topInitialized) {
-               // this.table.columnManager.headersElement.after(this.topElement);
-               this.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);
-               this.topInitialized = true;
-       }
-};
-
-ColumnCalcs.prototype.initializeBottomRow = function () {
-       if (!this.botInitialized) {
-               this.table.footerManager.prepend(this.botElement);
-               this.botInitialized = true;
-       }
-};
-
-ColumnCalcs.prototype.scrollHorizontal = function (left) {
-       var hozAdjust = 0,
-           scrollWidth = this.table.columnManager.getElement().scrollWidth - this.table.element.clientWidth;
-
-       if (this.botInitialized) {
-               this.botRow.getElement().style.marginLeft = -left + "px";
-       }
-};
-
-ColumnCalcs.prototype.recalc = function (rows) {
-       var data, row;
-
-       if (this.topInitialized || this.botInitialized) {
-               data = this.rowsToData(rows);
-
-               if (this.topInitialized) {
-                       if (this.topRow) {
-                               this.topRow.deleteCells();
-                       }
-
-                       row = this.generateRow("top", this.rowsToData(rows));
-                       this.topRow = row;
-                       while (this.topElement.firstChild) {
-                               this.topElement.removeChild(this.topElement.firstChild);
-                       }this.topElement.appendChild(row.getElement());
-                       row.initialize(true);
-               }
-
-               if (this.botInitialized) {
-                       if (this.botRow) {
-                               this.botRow.deleteCells();
-                       }
-
-                       row = this.generateRow("bottom", this.rowsToData(rows));
-                       this.botRow = row;
-                       while (this.botElement.firstChild) {
-                               this.botElement.removeChild(this.botElement.firstChild);
-                       }this.botElement.appendChild(row.getElement());
-                       row.initialize(true);
-               }
-
-               this.table.rowManager.adjustTableSize();
-
-               //set resizable handles
-               if (this.table.modExists("frozenColumns")) {
-                       this.table.modules.frozenColumns.layout();
-               }
-       }
-};
-
-ColumnCalcs.prototype.recalcRowGroup = function (row) {
-       this.recalcGroup(this.table.modules.groupRows.getRowGroup(row));
-};
-
-ColumnCalcs.prototype.recalcAll = function () {
-       var _this = this;
-
-       if (this.topCalcs.length || this.botCalcs.length) {
-               if (this.table.options.columnCalcs !== "group") {
-                       this.recalc(this.table.rowManager.activeRows);
-               }
-
-               if (this.table.options.groupBy && this.table.options.columnCalcs !== "table") {
-
-                       var groups = table.modules.groupRows.getChildGroups();
-
-                       groups.forEach(function (group) {
-                               _this.recalcGroup(group);
-                       });
-               }
-       }
-};
-
-ColumnCalcs.prototype.recalcGroup = function (group) {
-       var data, rowData;
-
-       if (group) {
-               if (group.calcs) {
-                       if (group.calcs.bottom) {
-                               data = this.rowsToData(group.rows);
-                               rowData = this.generateRowData("bottom", data);
-
-                               group.calcs.bottom.updateData(rowData);
-                               group.calcs.bottom.reinitialize();
-                       }
-
-                       if (group.calcs.top) {
-                               data = this.rowsToData(group.rows);
-                               rowData = this.generateRowData("top", data);
-
-                               group.calcs.top.updateData(rowData);
-                               group.calcs.top.reinitialize();
-                       }
-               }
-       }
-};
-
-//generate top stats row
-ColumnCalcs.prototype.generateTopRow = function (rows) {
-       return this.generateRow("top", this.rowsToData(rows));
-};
-//generate bottom stats row
-ColumnCalcs.prototype.generateBottomRow = function (rows) {
-       return this.generateRow("bottom", this.rowsToData(rows));
-};
-
-ColumnCalcs.prototype.rowsToData = function (rows) {
-       var _this2 = this;
-
-       var data = [];
-
-       rows.forEach(function (row) {
-               data.push(row.getData());
-
-               if (_this2.table.options.dataTree && _this2.table.options.dataTreeChildColumnCalcs) {
-                       if (row.modules.dataTree.open) {
-                               var children = _this2.rowsToData(_this2.table.modules.dataTree.getFilteredTreeChildren(row));
-                               data = data.concat(children);
-                       }
-               }
-       });
-
-       return data;
-};
-
-//generate stats row
-ColumnCalcs.prototype.generateRow = function (pos, data) {
-       var self = this,
-           rowData = this.generateRowData(pos, data),
-           row;
-
-       if (self.table.modExists("mutator")) {
-               self.table.modules.mutator.disable();
-       }
-
-       row = new Row(rowData, this, "calc");
-
-       if (self.table.modExists("mutator")) {
-               self.table.modules.mutator.enable();
-       }
-
-       row.getElement().classList.add("tabulator-calcs", "tabulator-calcs-" + pos);
-
-       row.generateCells = function () {
-
-               var cells = [];
-
-               self.table.columnManager.columnsByIndex.forEach(function (column) {
-
-                       //set field name of mock column
-                       self.genColumn.setField(column.getField());
-                       self.genColumn.hozAlign = column.hozAlign;
-
-                       if (column.definition[pos + "CalcFormatter"] && self.table.modExists("format")) {
-
-                               self.genColumn.modules.format = {
-                                       formatter: self.table.modules.format.getFormatter(column.definition[pos + "CalcFormatter"]),
-                                       params: column.definition[pos + "CalcFormatterParams"]
-                               };
-                       } else {
-                               self.genColumn.modules.format = {
-                                       formatter: self.table.modules.format.getFormatter("plaintext"),
-                                       params: {}
-                               };
-                       }
-
-                       //ensure css class defintion is replicated to calculation cell
-                       self.genColumn.definition.cssClass = column.definition.cssClass;
-
-                       //generate cell and assign to correct column
-                       var cell = new Cell(self.genColumn, row);
-                       cell.column = column;
-                       cell.setWidth();
-
-                       column.cells.push(cell);
-                       cells.push(cell);
-
-                       if (!column.visible) {
-                               cell.hide();
-                       }
-               });
-
-               this.cells = cells;
-       };
-
-       return row;
-};
-
-//generate stats row
-ColumnCalcs.prototype.generateRowData = function (pos, data) {
-       var rowData = {},
-           calcs = pos == "top" ? this.topCalcs : this.botCalcs,
-           type = pos == "top" ? "topCalc" : "botCalc",
-           params,
-           paramKey;
-
-       calcs.forEach(function (column) {
-               var values = [];
-
-               if (column.modules.columnCalcs && column.modules.columnCalcs[type]) {
-                       data.forEach(function (item) {
-                               values.push(column.getFieldValue(item));
-                       });
-
-                       paramKey = type + "Params";
-                       params = typeof column.modules.columnCalcs[paramKey] === "function" ? column.modules.columnCalcs[paramKey](values, data) : column.modules.columnCalcs[paramKey];
-
-                       column.setFieldValue(rowData, column.modules.columnCalcs[type](values, data, params));
-               }
-       });
-
-       return rowData;
-};
-
-ColumnCalcs.prototype.hasTopCalcs = function () {
-       return !!this.topCalcs.length;
-};
-
-ColumnCalcs.prototype.hasBottomCalcs = function () {
-       return !!this.botCalcs.length;
-};
-
-//handle table redraw
-ColumnCalcs.prototype.redraw = function () {
-       if (this.topRow) {
-               this.topRow.normalizeHeight(true);
-       }
-       if (this.botRow) {
-               this.botRow.normalizeHeight(true);
-       }
-};
-
-//return the calculated
-ColumnCalcs.prototype.getResults = function () {
-       var self = this,
-           results = {},
-           groups;
-
-       if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-               groups = this.table.modules.groupRows.getGroups(true);
-
-               groups.forEach(function (group) {
-                       results[group.getKey()] = self.getGroupResults(group);
-               });
-       } else {
-               results = {
-                       top: this.topRow ? this.topRow.getData() : {},
-                       bottom: this.botRow ? this.botRow.getData() : {}
-               };
-       }
-
-       return results;
-};
-
-//get results from a group
-ColumnCalcs.prototype.getGroupResults = function (group) {
-       var self = this,
-           groupObj = group._getSelf(),
-           subGroups = group.getSubGroups(),
-           subGroupResults = {},
-           results = {};
-
-       subGroups.forEach(function (subgroup) {
-               subGroupResults[subgroup.getKey()] = self.getGroupResults(subgroup);
-       });
-
-       results = {
-               top: groupObj.calcs.top ? groupObj.calcs.top.getData() : {},
-               bottom: groupObj.calcs.bottom ? groupObj.calcs.bottom.getData() : {},
-               groups: subGroupResults
-       };
-
-       return results;
-};
-
-//default calculations
-ColumnCalcs.prototype.calculations = {
-       "avg": function avg(values, data, calcParams) {
-               var output = 0,
-                   precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : 2;
-
-               if (values.length) {
-                       output = values.reduce(function (sum, value) {
-                               value = Number(value);
-                               return sum + value;
-                       });
-
-                       output = output / values.length;
-
-                       output = precision !== false ? output.toFixed(precision) : output;
-               }
-
-               return parseFloat(output).toString();
-       },
-       "max": function max(values, data, calcParams) {
-               var output = null,
-                   precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : false;
-
-               values.forEach(function (value) {
-
-                       value = Number(value);
-
-                       if (value > output || output === null) {
-                               output = value;
-                       }
-               });
-
-               return output !== null ? precision !== false ? output.toFixed(precision) : output : "";
-       },
-       "min": function min(values, data, calcParams) {
-               var output = null,
-                   precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : false;
-
-               values.forEach(function (value) {
-
-                       value = Number(value);
-
-                       if (value < output || output === null) {
-                               output = value;
-                       }
-               });
-
-               return output !== null ? precision !== false ? output.toFixed(precision) : output : "";
-       },
-       "sum": function sum(values, data, calcParams) {
-               var output = 0,
-                   precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : false;
-
-               if (values.length) {
-                       values.forEach(function (value) {
-                               value = Number(value);
-
-                               output += !isNaN(value) ? Number(value) : 0;
-                       });
-               }
-
-               return precision !== false ? output.toFixed(precision) : output;
-       },
-       "concat": function concat(values, data, calcParams) {
-               var output = 0;
-
-               if (values.length) {
-                       output = values.reduce(function (sum, value) {
-                               return String(sum) + String(value);
-                       });
-               }
-
-               return output;
-       },
-       "count": function count(values, data, calcParams) {
-               var output = 0;
-
-               if (values.length) {
-                       values.forEach(function (value) {
-                               if (value) {
-                                       output++;
-                               }
-                       });
-               }
-
-               return output;
-       }
-};
-
-Tabulator.prototype.registerModule("columnCalcs", ColumnCalcs);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/calculation_colums.min.js b/app/static/vendors/tabulator/js/modules/calculation_colums.min.js
deleted file mode 100644 (file)
index 33464d5..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ColumnCalcs=function(t){this.table=t,this.topCalcs=[],this.botCalcs=[],this.genColumn=!1,this.topElement=this.createElement(),this.botElement=this.createElement(),this.topRow=!1,this.botRow=!1,this.topInitialized=!1,this.botInitialized=!1,this.initialize()};ColumnCalcs.prototype.createElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-calcs-holder"),t},ColumnCalcs.prototype.initialize=function(){this.genColumn=new Column({field:"value"},this)},ColumnCalcs.prototype.registerColumnField=function(){},ColumnCalcs.prototype.initializeColumn=function(t){var o=t.definition,e={topCalcParams:o.topCalcParams||{},botCalcParams:o.bottomCalcParams||{}};if(o.topCalc){switch(_typeof(o.topCalc)){case"string":this.calculations[o.topCalc]?e.topCalc=this.calculations[o.topCalc]:console.warn("Column Calc Error - No such calculation found, ignoring: ",o.topCalc);break;case"function":e.topCalc=o.topCalc}e.topCalc&&(t.modules.columnCalcs=e,this.topCalcs.push(t),"group"!=this.table.options.columnCalcs&&this.initializeTopRow())}if(o.bottomCalc){switch(_typeof(o.bottomCalc)){case"string":this.calculations[o.bottomCalc]?e.botCalc=this.calculations[o.bottomCalc]:console.warn("Column Calc Error - No such calculation found, ignoring: ",o.bottomCalc);break;case"function":e.botCalc=o.bottomCalc}e.botCalc&&(t.modules.columnCalcs=e,this.botCalcs.push(t),"group"!=this.table.options.columnCalcs&&this.initializeBottomRow())}},ColumnCalcs.prototype.removeCalcs=function(){var t=!1;this.topInitialized&&(this.topInitialized=!1,this.topElement.parentNode.removeChild(this.topElement),t=!0),this.botInitialized&&(this.botInitialized=!1,this.table.footerManager.remove(this.botElement),t=!0),t&&this.table.rowManager.adjustTableSize()},ColumnCalcs.prototype.initializeTopRow=function(){this.topInitialized||(this.table.columnManager.getElement().insertBefore(this.topElement,this.table.columnManager.headersElement.nextSibling),this.topInitialized=!0)},ColumnCalcs.prototype.initializeBottomRow=function(){this.botInitialized||(this.table.footerManager.prepend(this.botElement),this.botInitialized=!0)},ColumnCalcs.prototype.scrollHorizontal=function(t){this.table.columnManager.getElement().scrollWidth,this.table.element.clientWidth;this.botInitialized&&(this.botRow.getElement().style.marginLeft=-t+"px")},ColumnCalcs.prototype.recalc=function(t){var o;if(this.topInitialized||this.botInitialized){if(this.rowsToData(t),this.topInitialized){for(this.topRow&&this.topRow.deleteCells(),o=this.generateRow("top",this.rowsToData(t)),this.topRow=o;this.topElement.firstChild;)this.topElement.removeChild(this.topElement.firstChild);this.topElement.appendChild(o.getElement()),o.initialize(!0)}if(this.botInitialized){for(this.botRow&&this.botRow.deleteCells(),o=this.generateRow("bottom",this.rowsToData(t)),this.botRow=o;this.botElement.firstChild;)this.botElement.removeChild(this.botElement.firstChild);this.botElement.appendChild(o.getElement()),o.initialize(!0)}this.table.rowManager.adjustTableSize(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout()}},ColumnCalcs.prototype.recalcRowGroup=function(t){this.recalcGroup(this.table.modules.groupRows.getRowGroup(t))},ColumnCalcs.prototype.recalcAll=function(){var t=this;if((this.topCalcs.length||this.botCalcs.length)&&("group"!==this.table.options.columnCalcs&&this.recalc(this.table.rowManager.activeRows),this.table.options.groupBy&&"table"!==this.table.options.columnCalcs)){table.modules.groupRows.getChildGroups().forEach(function(o){t.recalcGroup(o)})}},ColumnCalcs.prototype.recalcGroup=function(t){var o,e;t&&t.calcs&&(t.calcs.bottom&&(o=this.rowsToData(t.rows),e=this.generateRowData("bottom",o),t.calcs.bottom.updateData(e),t.calcs.bottom.reinitialize()),t.calcs.top&&(o=this.rowsToData(t.rows),e=this.generateRowData("top",o),t.calcs.top.updateData(e),t.calcs.top.reinitialize()))},ColumnCalcs.prototype.generateTopRow=function(t){return this.generateRow("top",this.rowsToData(t))},ColumnCalcs.prototype.generateBottomRow=function(t){return this.generateRow("bottom",this.rowsToData(t))},ColumnCalcs.prototype.rowsToData=function(t){var o=this,e=[];return t.forEach(function(t){if(e.push(t.getData()),o.table.options.dataTree&&o.table.options.dataTreeChildColumnCalcs&&t.modules.dataTree.open){var l=o.rowsToData(o.table.modules.dataTree.getFilteredTreeChildren(t));e=e.concat(l)}}),e},ColumnCalcs.prototype.generateRow=function(t,o){var e,l=this,i=this.generateRowData(t,o);return l.table.modExists("mutator")&&l.table.modules.mutator.disable(),e=new Row(i,this,"calc"),l.table.modExists("mutator")&&l.table.modules.mutator.enable(),e.getElement().classList.add("tabulator-calcs","tabulator-calcs-"+t),e.generateCells=function(){var o=[];l.table.columnManager.columnsByIndex.forEach(function(i){l.genColumn.setField(i.getField()),l.genColumn.hozAlign=i.hozAlign,i.definition[t+"CalcFormatter"]&&l.table.modExists("format")?l.genColumn.modules.format={formatter:l.table.modules.format.getFormatter(i.definition[t+"CalcFormatter"]),params:i.definition[t+"CalcFormatterParams"]}:l.genColumn.modules.format={formatter:l.table.modules.format.getFormatter("plaintext"),params:{}},l.genColumn.definition.cssClass=i.definition.cssClass;var a=new Cell(l.genColumn,e);a.column=i,a.setWidth(),i.cells.push(a),o.push(a),i.visible||a.hide()}),this.cells=o},e},ColumnCalcs.prototype.generateRowData=function(t,o){var e,l,i={},a="top"==t?this.topCalcs:this.botCalcs,n="top"==t?"topCalc":"botCalc";return a.forEach(function(t){var a=[];t.modules.columnCalcs&&t.modules.columnCalcs[n]&&(o.forEach(function(o){a.push(t.getFieldValue(o))}),l=n+"Params",e="function"==typeof t.modules.columnCalcs[l]?t.modules.columnCalcs[l](a,o):t.modules.columnCalcs[l],t.setFieldValue(i,t.modules.columnCalcs[n](a,o,e)))}),i},ColumnCalcs.prototype.hasTopCalcs=function(){return!!this.topCalcs.length},ColumnCalcs.prototype.hasBottomCalcs=function(){return!!this.botCalcs.length},ColumnCalcs.prototype.redraw=function(){this.topRow&&this.topRow.normalizeHeight(!0),this.botRow&&this.botRow.normalizeHeight(!0)},ColumnCalcs.prototype.getResults=function(){var t,o=this,e={};return this.table.options.groupBy&&this.table.modExists("groupRows")?(t=this.table.modules.groupRows.getGroups(!0),t.forEach(function(t){e[t.getKey()]=o.getGroupResults(t)})):e={top:this.topRow?this.topRow.getData():{},bottom:this.botRow?this.botRow.getData():{}},e},ColumnCalcs.prototype.getGroupResults=function(t){var o=this,e=t._getSelf(),l=t.getSubGroups(),i={};return l.forEach(function(t){i[t.getKey()]=o.getGroupResults(t)}),{top:e.calcs.top?e.calcs.top.getData():{},bottom:e.calcs.bottom?e.calcs.bottom.getData():{},groups:i}},ColumnCalcs.prototype.calculations={avg:function(t,o,e){var l=0,i=void 0!==e.precision?e.precision:2;return t.length&&(l=t.reduce(function(t,o){return o=Number(o),t+o}),l/=t.length,l=!1!==i?l.toFixed(i):l),parseFloat(l).toString()},max:function(t,o,e){var l=null,i=void 0!==e.precision&&e.precision;return t.forEach(function(t){((t=Number(t))>l||null===l)&&(l=t)}),null!==l?!1!==i?l.toFixed(i):l:""},min:function(t,o,e){var l=null,i=void 0!==e.precision&&e.precision;return t.forEach(function(t){((t=Number(t))<l||null===l)&&(l=t)}),null!==l?!1!==i?l.toFixed(i):l:""},sum:function(t,o,e){var l=0,i=void 0!==e.precision&&e.precision;return t.length&&t.forEach(function(t){t=Number(t),l+=isNaN(t)?0:Number(t)}),!1!==i?l.toFixed(i):l},concat:function(t,o,e){var l=0;return t.length&&(l=t.reduce(function(t,o){return String(t)+String(o)})),l},count:function(t,o,e){var l=0;return t.length&&t.forEach(function(t){t&&l++}),l}},Tabulator.prototype.registerModule("columnCalcs",ColumnCalcs);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/clipboard.js b/app/static/vendors/tabulator/js/modules/clipboard.js
deleted file mode 100644 (file)
index 34490bc..0000000
+++ /dev/null
@@ -1,346 +0,0 @@
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-
-var Clipboard = function Clipboard(table) {
-       this.table = table;
-       this.mode = true;
-
-       this.pasteParser = function () {};
-       this.pasteAction = function () {};
-       this.customSelection = false;
-       this.rowRange = false;
-       this.blocked = true; //block copy actions not originating from this command
-};
-
-Clipboard.prototype.initialize = function () {
-       var _this = this;
-
-       this.mode = this.table.options.clipboard;
-
-       this.rowRange = this.table.options.clipboardCopyRowRange;
-
-       if (this.mode === true || this.mode === "copy") {
-               this.table.element.addEventListener("copy", function (e) {
-                       var plain, html, list;
-
-                       if (!_this.blocked) {
-                               e.preventDefault();
-
-                               if (_this.customSelection) {
-                                       plain = _this.customSelection;
-
-                                       if (_this.table.options.clipboardCopyFormatter) {
-                                               plain = _this.table.options.clipboardCopyFormatter("plain", plain);
-                                       }
-                               } else {
-
-                                       var list = _this.table.modules.export.generateExportList(_this.rowRange, _this.table.options.clipboardCopyStyled, _this.table.options.clipboardCopyConfig, "clipboard");
-
-                                       html = _this.table.modules.export.genereateHTMLTable(list);
-                                       plain = html ? _this.generatePlainContent(list) : "";
-
-                                       if (_this.table.options.clipboardCopyFormatter) {
-                                               plain = _this.table.options.clipboardCopyFormatter("plain", plain);
-                                               html = _this.table.options.clipboardCopyFormatter("html", html);
-                                       }
-                               }
-
-                               if (window.clipboardData && window.clipboardData.setData) {
-                                       window.clipboardData.setData('Text', plain);
-                               } else if (e.clipboardData && e.clipboardData.setData) {
-                                       e.clipboardData.setData('text/plain', plain);
-                                       if (html) {
-                                               e.clipboardData.setData('text/html', html);
-                                       }
-                               } else if (e.originalEvent && e.originalEvent.clipboardData.setData) {
-                                       e.originalEvent.clipboardData.setData('text/plain', plain);
-                                       if (html) {
-                                               e.originalEvent.clipboardData.setData('text/html', html);
-                                       }
-                               }
-
-                               _this.table.options.clipboardCopied.call(_this.table, plain, html);
-
-                               _this.reset();
-                       }
-               });
-       }
-
-       if (this.mode === true || this.mode === "paste") {
-               this.table.element.addEventListener("paste", function (e) {
-                       _this.paste(e);
-               });
-       }
-
-       this.setPasteParser(this.table.options.clipboardPasteParser);
-       this.setPasteAction(this.table.options.clipboardPasteAction);
-};
-
-Clipboard.prototype.reset = function () {
-       this.blocked = false;
-       this.originalSelectionText = "";
-};
-
-Clipboard.prototype.generatePlainContent = function (list) {
-       var output = [];
-
-       list.forEach(function (row) {
-               var rowData = [];
-
-               row.columns.forEach(function (col) {
-                       var value = "";
-
-                       if (col) {
-
-                               if (row.type === "group") {
-                                       col.value = col.component.getKey();
-                               }
-
-                               switch (_typeof(col.value)) {
-                                       case "object":
-                                               value = JSON.stringify(col.value);
-                                               break;
-
-                                       case "undefined":
-                                       case "null":
-                                               value = "";
-                                               break;
-
-                                       default:
-                                               value = col.value;
-                               }
-                       }
-
-                       rowData.push(value);
-               });
-
-               output.push(rowData.join("\t"));
-       });
-
-       return output.join("\n");
-};
-
-Clipboard.prototype.copy = function (range, internal) {
-       var range, sel, textRange;
-       this.blocked = false;
-       this.customSelection = false;
-
-       if (this.mode === true || this.mode === "copy") {
-
-               this.rowRange = range || this.table.options.clipboardCopyRowRange;
-
-               if (typeof window.getSelection != "undefined" && typeof document.createRange != "undefined") {
-                       range = document.createRange();
-                       range.selectNodeContents(this.table.element);
-                       sel = window.getSelection();
-
-                       if (sel.toString() && internal) {
-                               this.customSelection = sel.toString();
-                       }
-
-                       sel.removeAllRanges();
-                       sel.addRange(range);
-               } else if (typeof document.selection != "undefined" && typeof document.body.createTextRange != "undefined") {
-                       textRange = document.body.createTextRange();
-                       textRange.moveToElementText(this.table.element);
-                       textRange.select();
-               }
-
-               document.execCommand('copy');
-
-               if (sel) {
-                       sel.removeAllRanges();
-               }
-       }
-};
-
-//PASTE EVENT HANDLING
-
-Clipboard.prototype.setPasteAction = function (action) {
-
-       switch (typeof action === "undefined" ? "undefined" : _typeof(action)) {
-               case "string":
-                       this.pasteAction = this.pasteActions[action];
-
-                       if (!this.pasteAction) {
-                               console.warn("Clipboard Error - No such paste action found:", action);
-                       }
-                       break;
-
-               case "function":
-                       this.pasteAction = action;
-                       break;
-       }
-};
-
-Clipboard.prototype.setPasteParser = function (parser) {
-       switch (typeof parser === "undefined" ? "undefined" : _typeof(parser)) {
-               case "string":
-                       this.pasteParser = this.pasteParsers[parser];
-
-                       if (!this.pasteParser) {
-                               console.warn("Clipboard Error - No such paste parser found:", parser);
-                       }
-                       break;
-
-               case "function":
-                       this.pasteParser = parser;
-                       break;
-       }
-};
-
-Clipboard.prototype.paste = function (e) {
-       var data, rowData, rows;
-
-       if (this.checkPaseOrigin(e)) {
-
-               data = this.getPasteData(e);
-
-               rowData = this.pasteParser.call(this, data);
-
-               if (rowData) {
-                       e.preventDefault();
-
-                       if (this.table.modExists("mutator")) {
-                               rowData = this.mutateData(rowData);
-                       }
-
-                       rows = this.pasteAction.call(this, rowData);
-                       this.table.options.clipboardPasted.call(this.table, data, rowData, rows);
-               } else {
-                       this.table.options.clipboardPasteError.call(this.table, data);
-               }
-       }
-};
-
-Clipboard.prototype.mutateData = function (data) {
-       var self = this,
-           output = [];
-
-       if (Array.isArray(data)) {
-               data.forEach(function (row) {
-                       output.push(self.table.modules.mutator.transformRow(row, "clipboard"));
-               });
-       } else {
-               output = data;
-       }
-
-       return output;
-};
-
-Clipboard.prototype.checkPaseOrigin = function (e) {
-       var valid = true;
-
-       if (e.target.tagName != "DIV" || this.table.modules.edit.currentCell) {
-               valid = false;
-       }
-
-       return valid;
-};
-
-Clipboard.prototype.getPasteData = function (e) {
-       var data;
-
-       if (window.clipboardData && window.clipboardData.getData) {
-               data = window.clipboardData.getData('Text');
-       } else if (e.clipboardData && e.clipboardData.getData) {
-               data = e.clipboardData.getData('text/plain');
-       } else if (e.originalEvent && e.originalEvent.clipboardData.getData) {
-               data = e.originalEvent.clipboardData.getData('text/plain');
-       }
-
-       return data;
-};
-
-Clipboard.prototype.pasteParsers = {
-       table: function table(clipboard) {
-               var data = [],
-                   success = false,
-                   headerFindSuccess = true,
-                   columns = this.table.columnManager.columns,
-                   columnMap = [],
-                   rows = [];
-
-               //get data from clipboard into array of columns and rows.
-               clipboard = clipboard.split("\n");
-
-               clipboard.forEach(function (row) {
-                       data.push(row.split("\t"));
-               });
-
-               if (data.length && !(data.length === 1 && data[0].length < 2)) {
-                       success = true;
-
-                       //check if headers are present by title
-                       data[0].forEach(function (value) {
-                               var column = columns.find(function (column) {
-                                       return value && column.definition.title && value.trim() && column.definition.title.trim() === value.trim();
-                               });
-
-                               if (column) {
-                                       columnMap.push(column);
-                               } else {
-                                       headerFindSuccess = false;
-                               }
-                       });
-
-                       //check if column headers are present by field
-                       if (!headerFindSuccess) {
-                               headerFindSuccess = true;
-                               columnMap = [];
-
-                               data[0].forEach(function (value) {
-                                       var column = columns.find(function (column) {
-                                               return value && column.field && value.trim() && column.field.trim() === value.trim();
-                                       });
-
-                                       if (column) {
-                                               columnMap.push(column);
-                                       } else {
-                                               headerFindSuccess = false;
-                                       }
-                               });
-
-                               if (!headerFindSuccess) {
-                                       columnMap = this.table.columnManager.columnsByIndex;
-                               }
-                       }
-
-                       //remove header row if found
-                       if (headerFindSuccess) {
-                               data.shift();
-                       }
-
-                       data.forEach(function (item) {
-                               var row = {};
-
-                               item.forEach(function (value, i) {
-                                       if (columnMap[i]) {
-                                               row[columnMap[i].field] = value;
-                                       }
-                               });
-
-                               rows.push(row);
-                       });
-
-                       return rows;
-               } else {
-                       return false;
-               }
-       }
-};
-
-Clipboard.prototype.pasteActions = {
-       replace: function replace(rows) {
-               return this.table.setData(rows);
-       },
-       update: function update(rows) {
-               return this.table.updateOrAddData(rows);
-       },
-       insert: function insert(rows) {
-               return this.table.addData(rows);
-       }
-};
-
-Tabulator.prototype.registerModule("clipboard", Clipboard);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/clipboard.min.js b/app/static/vendors/tabulator/js/modules/clipboard.min.js
deleted file mode 100644 (file)
index 2a2eb5a..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Clipboard=function(t){this.table=t,this.mode=!0,this.pasteParser=function(){},this.pasteAction=function(){},this.customSelection=!1,this.rowRange=!1,this.blocked=!0};Clipboard.prototype.initialize=function(){var t=this;this.mode=this.table.options.clipboard,this.rowRange=this.table.options.clipboardCopyRowRange,!0!==this.mode&&"copy"!==this.mode||this.table.element.addEventListener("copy",function(e){var a,o,i;if(!t.blocked){if(e.preventDefault(),t.customSelection)a=t.customSelection,t.table.options.clipboardCopyFormatter&&(a=t.table.options.clipboardCopyFormatter("plain",a));else{var i=t.table.modules.export.generateExportList(t.rowRange,t.table.options.clipboardCopyStyled,t.table.options.clipboardCopyConfig,"clipboard");o=t.table.modules.export.genereateHTMLTable(i),a=o?t.generatePlainContent(i):"",t.table.options.clipboardCopyFormatter&&(a=t.table.options.clipboardCopyFormatter("plain",a),o=t.table.options.clipboardCopyFormatter("html",o))}window.clipboardData&&window.clipboardData.setData?window.clipboardData.setData("Text",a):e.clipboardData&&e.clipboardData.setData?(e.clipboardData.setData("text/plain",a),o&&e.clipboardData.setData("text/html",o)):e.originalEvent&&e.originalEvent.clipboardData.setData&&(e.originalEvent.clipboardData.setData("text/plain",a),o&&e.originalEvent.clipboardData.setData("text/html",o)),t.table.options.clipboardCopied.call(t.table,a,o),t.reset()}}),!0!==this.mode&&"paste"!==this.mode||this.table.element.addEventListener("paste",function(e){t.paste(e)}),this.setPasteParser(this.table.options.clipboardPasteParser),this.setPasteAction(this.table.options.clipboardPasteAction)},Clipboard.prototype.reset=function(){this.blocked=!1,this.originalSelectionText=""},Clipboard.prototype.generatePlainContent=function(t){var e=[];return t.forEach(function(t){var a=[];t.columns.forEach(function(e){var o="";if(e)switch("group"===t.type&&(e.value=e.component.getKey()),_typeof(e.value)){case"object":o=JSON.stringify(e.value);break;case"undefined":case"null":o="";break;default:o=e.value}a.push(o)}),e.push(a.join("\t"))}),e.join("\n")},Clipboard.prototype.copy=function(t,e){var t,a,o;this.blocked=!1,this.customSelection=!1,!0!==this.mode&&"copy"!==this.mode||(this.rowRange=t||this.table.options.clipboardCopyRowRange,void 0!==window.getSelection&&void 0!==document.createRange?(t=document.createRange(),t.selectNodeContents(this.table.element),a=window.getSelection(),a.toString()&&e&&(this.customSelection=a.toString()),a.removeAllRanges(),a.addRange(t)):void 0!==document.selection&&void 0!==document.body.createTextRange&&(o=document.body.createTextRange(),o.moveToElementText(this.table.element),o.select()),document.execCommand("copy"),a&&a.removeAllRanges())},Clipboard.prototype.setPasteAction=function(t){switch(void 0===t?"undefined":_typeof(t)){case"string":this.pasteAction=this.pasteActions[t],this.pasteAction||console.warn("Clipboard Error - No such paste action found:",t);break;case"function":this.pasteAction=t}},Clipboard.prototype.setPasteParser=function(t){switch(void 0===t?"undefined":_typeof(t)){case"string":this.pasteParser=this.pasteParsers[t],this.pasteParser||console.warn("Clipboard Error - No such paste parser found:",t);break;case"function":this.pasteParser=t}},Clipboard.prototype.paste=function(t){var e,a,o;this.checkPaseOrigin(t)&&(e=this.getPasteData(t),a=this.pasteParser.call(this,e),a?(t.preventDefault(),this.table.modExists("mutator")&&(a=this.mutateData(a)),o=this.pasteAction.call(this,a),this.table.options.clipboardPasted.call(this.table,e,a,o)):this.table.options.clipboardPasteError.call(this.table,e))},Clipboard.prototype.mutateData=function(t){var e=this,a=[];return Array.isArray(t)?t.forEach(function(t){a.push(e.table.modules.mutator.transformRow(t,"clipboard"))}):a=t,a},Clipboard.prototype.checkPaseOrigin=function(t){var e=!0;return("DIV"!=t.target.tagName||this.table.modules.edit.currentCell)&&(e=!1),e},Clipboard.prototype.getPasteData=function(t){var e;return window.clipboardData&&window.clipboardData.getData?e=window.clipboardData.getData("Text"):t.clipboardData&&t.clipboardData.getData?e=t.clipboardData.getData("text/plain"):t.originalEvent&&t.originalEvent.clipboardData.getData&&(e=t.originalEvent.clipboardData.getData("text/plain")),e},Clipboard.prototype.pasteParsers={table:function(t){var e=[],a=!0,o=this.table.columnManager.columns,i=[],n=[];return t=t.split("\n"),t.forEach(function(t){e.push(t.split("\t"))}),!(!e.length||1===e.length&&e[0].length<2)&&(!0,e[0].forEach(function(t){var e=o.find(function(e){return t&&e.definition.title&&t.trim()&&e.definition.title.trim()===t.trim()});e?i.push(e):a=!1}),a||(a=!0,i=[],e[0].forEach(function(t){var e=o.find(function(e){return t&&e.field&&t.trim()&&e.field.trim()===t.trim()});e?i.push(e):a=!1}),a||(i=this.table.columnManager.columnsByIndex)),a&&e.shift(),e.forEach(function(t){var e={};t.forEach(function(t,a){i[a]&&(e[i[a].field]=t)}),n.push(e)}),n)}},Clipboard.prototype.pasteActions={replace:function(t){return this.table.setData(t)},update:function(t){return this.table.updateOrAddData(t)},insert:function(t){return this.table.addData(t)}},Tabulator.prototype.registerModule("clipboard",Clipboard);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/data_tree.js b/app/static/vendors/tabulator/js/modules/data_tree.js
deleted file mode 100644 (file)
index 4d1638a..0000000
+++ /dev/null
@@ -1,492 +0,0 @@
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-
-var DataTree = function DataTree(table) {
-       this.table = table;
-       this.indent = 10;
-       this.field = "";
-       this.collapseEl = null;
-       this.expandEl = null;
-       this.branchEl = null;
-       this.elementField = false;
-
-       this.startOpen = function () {};
-
-       this.displayIndex = 0;
-};
-
-DataTree.prototype.initialize = function () {
-       var dummyEl = null,
-           firstCol = this.table.columnManager.getFirstVisibileColumn(),
-           options = this.table.options;
-
-       this.field = options.dataTreeChildField;
-       this.indent = options.dataTreeChildIndent;
-       this.elementField = options.dataTreeElementColumn || (firstCol ? firstCol.field : false);
-
-       if (options.dataTreeBranchElement) {
-
-               if (options.dataTreeBranchElement === true) {
-                       this.branchEl = document.createElement("div");
-                       this.branchEl.classList.add("tabulator-data-tree-branch");
-               } else {
-                       if (typeof options.dataTreeBranchElement === "string") {
-                               dummyEl = document.createElement("div");
-                               dummyEl.innerHTML = options.dataTreeBranchElement;
-                               this.branchEl = dummyEl.firstChild;
-                       } else {
-                               this.branchEl = options.dataTreeBranchElement;
-                       }
-               }
-       }
-
-       if (options.dataTreeCollapseElement) {
-               if (typeof options.dataTreeCollapseElement === "string") {
-                       dummyEl = document.createElement("div");
-                       dummyEl.innerHTML = options.dataTreeCollapseElement;
-                       this.collapseEl = dummyEl.firstChild;
-               } else {
-                       this.collapseEl = options.dataTreeCollapseElement;
-               }
-       } else {
-               this.collapseEl = document.createElement("div");
-               this.collapseEl.classList.add("tabulator-data-tree-control");
-               this.collapseEl.tabIndex = 0;
-               this.collapseEl.innerHTML = "<div class='tabulator-data-tree-control-collapse'></div>";
-       }
-
-       if (options.dataTreeExpandElement) {
-               if (typeof options.dataTreeExpandElement === "string") {
-                       dummyEl = document.createElement("div");
-                       dummyEl.innerHTML = options.dataTreeExpandElement;
-                       this.expandEl = dummyEl.firstChild;
-               } else {
-                       this.expandEl = options.dataTreeExpandElement;
-               }
-       } else {
-               this.expandEl = document.createElement("div");
-               this.expandEl.classList.add("tabulator-data-tree-control");
-               this.expandEl.tabIndex = 0;
-               this.expandEl.innerHTML = "<div class='tabulator-data-tree-control-expand'></div>";
-       }
-
-       switch (_typeof(options.dataTreeStartExpanded)) {
-               case "boolean":
-                       this.startOpen = function (row, index) {
-                               return options.dataTreeStartExpanded;
-                       };
-                       break;
-
-               case "function":
-                       this.startOpen = options.dataTreeStartExpanded;
-                       break;
-
-               default:
-                       this.startOpen = function (row, index) {
-                               return options.dataTreeStartExpanded[index];
-                       };
-                       break;
-       }
-};
-
-DataTree.prototype.initializeRow = function (row) {
-       var childArray = row.getData()[this.field];
-       var isArray = Array.isArray(childArray);
-
-       var children = isArray || !isArray && (typeof childArray === "undefined" ? "undefined" : _typeof(childArray)) === "object" && childArray !== null;
-
-       if (!children && row.modules.dataTree && row.modules.dataTree.branchEl) {
-               row.modules.dataTree.branchEl.parentNode.removeChild(row.modules.dataTree.branchEl);
-       }
-
-       if (!children && row.modules.dataTree && row.modules.dataTree.controlEl) {
-               row.modules.dataTree.controlEl.parentNode.removeChild(row.modules.dataTree.controlEl);
-       }
-
-       row.modules.dataTree = {
-               index: row.modules.dataTree ? row.modules.dataTree.index : 0,
-               open: children ? row.modules.dataTree ? row.modules.dataTree.open : this.startOpen(row.getComponent(), 0) : false,
-               controlEl: row.modules.dataTree && children ? row.modules.dataTree.controlEl : false,
-               branchEl: row.modules.dataTree && children ? row.modules.dataTree.branchEl : false,
-               parent: row.modules.dataTree ? row.modules.dataTree.parent : false,
-               children: children
-       };
-};
-
-DataTree.prototype.layoutRow = function (row) {
-       var cell = this.elementField ? row.getCell(this.elementField) : row.getCells()[0],
-           el = cell.getElement(),
-           config = row.modules.dataTree;
-
-       if (config.branchEl) {
-               if (config.branchEl.parentNode) {
-                       config.branchEl.parentNode.removeChild(config.branchEl);
-               }
-               config.branchEl = false;
-       }
-
-       if (config.controlEl) {
-               if (config.controlEl.parentNode) {
-                       config.controlEl.parentNode.removeChild(config.controlEl);
-               }
-               config.controlEl = false;
-       }
-
-       this.generateControlElement(row, el);
-
-       row.element.classList.add("tabulator-tree-level-" + config.index);
-
-       if (config.index) {
-               if (this.branchEl) {
-                       config.branchEl = this.branchEl.cloneNode(true);
-                       el.insertBefore(config.branchEl, el.firstChild);
-                       config.branchEl.style.marginLeft = (config.branchEl.offsetWidth + config.branchEl.style.marginRight) * (config.index - 1) + config.index * this.indent + "px";
-               } else {
-                       el.style.paddingLeft = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + config.index * this.indent + "px";
-               }
-       }
-};
-
-DataTree.prototype.generateControlElement = function (row, el) {
-       var _this = this;
-
-       var config = row.modules.dataTree,
-           el = el || row.getCells()[0].getElement(),
-           oldControl = config.controlEl;
-
-       if (config.children !== false) {
-
-               if (config.open) {
-                       config.controlEl = this.collapseEl.cloneNode(true);
-                       config.controlEl.addEventListener("click", function (e) {
-                               e.stopPropagation();
-                               _this.collapseRow(row);
-                       });
-               } else {
-                       config.controlEl = this.expandEl.cloneNode(true);
-                       config.controlEl.addEventListener("click", function (e) {
-                               e.stopPropagation();
-                               _this.expandRow(row);
-                       });
-               }
-
-               config.controlEl.addEventListener("mousedown", function (e) {
-                       e.stopPropagation();
-               });
-
-               if (oldControl && oldControl.parentNode === el) {
-                       oldControl.parentNode.replaceChild(config.controlEl, oldControl);
-               } else {
-                       el.insertBefore(config.controlEl, el.firstChild);
-               }
-       }
-};
-
-DataTree.prototype.setDisplayIndex = function (index) {
-       this.displayIndex = index;
-};
-
-DataTree.prototype.getDisplayIndex = function () {
-       return this.displayIndex;
-};
-
-DataTree.prototype.getRows = function (rows) {
-       var _this2 = this;
-
-       var output = [];
-
-       rows.forEach(function (row, i) {
-               var config, children;
-
-               output.push(row);
-
-               if (row instanceof Row) {
-
-                       config = row.modules.dataTree.children;
-
-                       if (!config.index && config.children !== false) {
-                               children = _this2.getChildren(row);
-
-                               children.forEach(function (child) {
-                                       output.push(child);
-                               });
-                       }
-               }
-       });
-
-       return output;
-};
-
-DataTree.prototype.getChildren = function (row) {
-       var _this3 = this;
-
-       var config = row.modules.dataTree,
-           children = [],
-           output = [];
-
-       if (config.children !== false && config.open) {
-               if (!Array.isArray(config.children)) {
-                       config.children = this.generateChildren(row);
-               }
-
-               if (this.table.modExists("filter")) {
-                       children = this.table.modules.filter.filter(config.children);
-               } else {
-                       children = config.children;
-               }
-
-               if (this.table.modExists("sort")) {
-                       this.table.modules.sort.sort(children);
-               }
-
-               children.forEach(function (child) {
-                       output.push(child);
-
-                       var subChildren = _this3.getChildren(child);
-
-                       subChildren.forEach(function (sub) {
-                               output.push(sub);
-                       });
-               });
-       }
-
-       return output;
-};
-
-DataTree.prototype.generateChildren = function (row) {
-       var _this4 = this;
-
-       var children = [];
-
-       var childArray = row.getData()[this.field];
-
-       if (!Array.isArray(childArray)) {
-               childArray = [childArray];
-       }
-
-       childArray.forEach(function (childData) {
-               var childRow = new Row(childData || {}, _this4.table.rowManager);
-               childRow.modules.dataTree.index = row.modules.dataTree.index + 1;
-               childRow.modules.dataTree.parent = row;
-               if (childRow.modules.dataTree.children) {
-                       childRow.modules.dataTree.open = _this4.startOpen(childRow.getComponent(), childRow.modules.dataTree.index);
-               }
-               children.push(childRow);
-       });
-
-       return children;
-};
-
-DataTree.prototype.expandRow = function (row, silent) {
-       var config = row.modules.dataTree;
-
-       if (config.children !== false) {
-               config.open = true;
-
-               row.reinitialize();
-
-               this.table.rowManager.refreshActiveData("tree", false, true);
-
-               this.table.options.dataTreeRowExpanded(row.getComponent(), row.modules.dataTree.index);
-       }
-};
-
-DataTree.prototype.collapseRow = function (row) {
-       var config = row.modules.dataTree;
-
-       if (config.children !== false) {
-               config.open = false;
-
-               row.reinitialize();
-
-               this.table.rowManager.refreshActiveData("tree", false, true);
-
-               this.table.options.dataTreeRowCollapsed(row.getComponent(), row.modules.dataTree.index);
-       }
-};
-
-DataTree.prototype.toggleRow = function (row) {
-       var config = row.modules.dataTree;
-
-       if (config.children !== false) {
-               if (config.open) {
-                       this.collapseRow(row);
-               } else {
-                       this.expandRow(row);
-               }
-       }
-};
-
-DataTree.prototype.getTreeParent = function (row) {
-       return row.modules.dataTree.parent ? row.modules.dataTree.parent.getComponent() : false;
-};
-
-DataTree.prototype.getFilteredTreeChildren = function (row) {
-       var config = row.modules.dataTree,
-           output = [],
-           children;
-
-       if (config.children) {
-
-               if (!Array.isArray(config.children)) {
-                       config.children = this.generateChildren(row);
-               }
-
-               if (this.table.modExists("filter")) {
-                       children = this.table.modules.filter.filter(config.children);
-               } else {
-                       children = config.children;
-               }
-
-               children.forEach(function (childRow) {
-                       if (childRow instanceof Row) {
-                               output.push(childRow);
-                       }
-               });
-       }
-
-       return output;
-};
-
-DataTree.prototype.rowDelete = function (row) {
-       var parent = row.modules.dataTree.parent,
-           childIndex;
-
-       if (parent) {
-               childIndex = this.findChildIndex(row, parent);
-
-               if (childIndex !== false) {
-                       parent.data[this.field].splice(childIndex, 1);
-               }
-
-               if (!parent.data[this.field].length) {
-                       delete parent.data[this.field];
-               }
-
-               this.initializeRow(parent);
-               this.layoutRow(parent);
-       }
-
-       this.table.rowManager.refreshActiveData("tree", false, true);
-};
-
-DataTree.prototype.addTreeChildRow = function (row, data, top, index) {
-       var childIndex = false;
-
-       if (typeof data === "string") {
-               data = JSON.parse(data);
-       }
-
-       if (!Array.isArray(row.data[this.field])) {
-               row.data[this.field] = [];
-
-               row.modules.dataTree.open = this.startOpen(row.getComponent(), row.modules.dataTree.index);
-       }
-
-       if (typeof index !== "undefined") {
-               childIndex = this.findChildIndex(index, row);
-
-               if (childIndex !== false) {
-                       row.data[this.field].splice(top ? childIndex : childIndex + 1, 0, data);
-               }
-       }
-
-       if (childIndex === false) {
-               if (top) {
-                       row.data[this.field].unshift(data);
-               } else {
-                       row.data[this.field].push(data);
-               }
-       }
-
-       this.initializeRow(row);
-       this.layoutRow(row);
-
-       this.table.rowManager.refreshActiveData("tree", false, true);
-};
-
-DataTree.prototype.findChildIndex = function (subject, parent) {
-       var _this5 = this;
-
-       var match = false;
-
-       if ((typeof subject === "undefined" ? "undefined" : _typeof(subject)) == "object") {
-
-               if (subject instanceof Row) {
-                       //subject is row element
-                       match = subject.data;
-               } else if (subject instanceof RowComponent) {
-                       //subject is public row component
-                       match = subject._getSelf().data;
-               } else if (typeof HTMLElement !== "undefined" && subject instanceof HTMLElement) {
-                       if (parent.modules.dataTree) {
-                               match = parent.modules.dataTree.children.find(function (childRow) {
-                                       return childRow instanceof Row ? childRow.element === subject : false;
-                               });
-
-                               if (match) {
-                                       match = match.data;
-                               }
-                       }
-               }
-       } else if (typeof subject == "undefined" || subject === null) {
-               match = false;
-       } else {
-               //subject should be treated as the index of the row
-               match = parent.data[this.field].find(function (row) {
-                       return row.data[_this5.table.options.index] == subject;
-               });
-       }
-
-       if (match) {
-
-               if (Array.isArray(parent.data[this.field])) {
-                       match = parent.data[this.field].indexOf(match);
-               }
-
-               if (match == -1) {
-                       match = false;
-               }
-       }
-
-       //catch all for any other type of input
-
-       return match;
-};
-
-DataTree.prototype.getTreeChildren = function (row) {
-       var config = row.modules.dataTree,
-           output = [];
-
-       if (config.children) {
-
-               if (!Array.isArray(config.children)) {
-                       config.children = this.generateChildren(row);
-               }
-
-               config.children.forEach(function (childRow) {
-                       if (childRow instanceof Row) {
-                               output.push(childRow.getComponent());
-                       }
-               });
-       }
-
-       return output;
-};
-
-DataTree.prototype.checkForRestyle = function (cell) {
-       if (!cell.row.cells.indexOf(cell)) {
-               cell.row.reinitialize();
-       }
-};
-
-DataTree.prototype.getChildField = function () {
-       return this.field;
-};
-
-DataTree.prototype.redrawNeeded = function (data) {
-       return (this.field ? typeof data[this.field] !== "undefined" : false) || (this.elementField ? typeof data[this.elementField] !== "undefined" : false);
-};
-
-Tabulator.prototype.registerModule("dataTree", DataTree);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/data_tree.min.js b/app/static/vendors/tabulator/js/modules/data_tree.min.js
deleted file mode 100644 (file)
index 5f87cab..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},DataTree=function(e){this.table=e,this.indent=10,this.field="",this.collapseEl=null,this.expandEl=null,this.branchEl=null,this.elementField=!1,this.startOpen=function(){},this.displayIndex=0};DataTree.prototype.initialize=function(){var e=null,t=this.table.columnManager.getFirstVisibileColumn(),a=this.table.options;switch(this.field=a.dataTreeChildField,this.indent=a.dataTreeChildIndent,this.elementField=a.dataTreeElementColumn||!!t&&t.field,a.dataTreeBranchElement&&(!0===a.dataTreeBranchElement?(this.branchEl=document.createElement("div"),this.branchEl.classList.add("tabulator-data-tree-branch")):"string"==typeof a.dataTreeBranchElement?(e=document.createElement("div"),e.innerHTML=a.dataTreeBranchElement,this.branchEl=e.firstChild):this.branchEl=a.dataTreeBranchElement),a.dataTreeCollapseElement?"string"==typeof a.dataTreeCollapseElement?(e=document.createElement("div"),e.innerHTML=a.dataTreeCollapseElement,this.collapseEl=e.firstChild):this.collapseEl=a.dataTreeCollapseElement:(this.collapseEl=document.createElement("div"),this.collapseEl.classList.add("tabulator-data-tree-control"),this.collapseEl.tabIndex=0,this.collapseEl.innerHTML="<div class='tabulator-data-tree-control-collapse'></div>"),a.dataTreeExpandElement?"string"==typeof a.dataTreeExpandElement?(e=document.createElement("div"),e.innerHTML=a.dataTreeExpandElement,this.expandEl=e.firstChild):this.expandEl=a.dataTreeExpandElement:(this.expandEl=document.createElement("div"),this.expandEl.classList.add("tabulator-data-tree-control"),this.expandEl.tabIndex=0,this.expandEl.innerHTML="<div class='tabulator-data-tree-control-expand'></div>"),_typeof(a.dataTreeStartExpanded)){case"boolean":this.startOpen=function(e,t){return a.dataTreeStartExpanded};break;case"function":this.startOpen=a.dataTreeStartExpanded;break;default:this.startOpen=function(e,t){return a.dataTreeStartExpanded[t]}}},DataTree.prototype.initializeRow=function(e){var t=e.getData()[this.field],a=Array.isArray(t),n=a||!a&&"object"===(void 0===t?"undefined":_typeof(t))&&null!==t;!n&&e.modules.dataTree&&e.modules.dataTree.branchEl&&e.modules.dataTree.branchEl.parentNode.removeChild(e.modules.dataTree.branchEl),!n&&e.modules.dataTree&&e.modules.dataTree.controlEl&&e.modules.dataTree.controlEl.parentNode.removeChild(e.modules.dataTree.controlEl),e.modules.dataTree={index:e.modules.dataTree?e.modules.dataTree.index:0,open:!!n&&(e.modules.dataTree?e.modules.dataTree.open:this.startOpen(e.getComponent(),0)),controlEl:!(!e.modules.dataTree||!n)&&e.modules.dataTree.controlEl,branchEl:!(!e.modules.dataTree||!n)&&e.modules.dataTree.branchEl,parent:!!e.modules.dataTree&&e.modules.dataTree.parent,children:n}},DataTree.prototype.layoutRow=function(e){var t=this.elementField?e.getCell(this.elementField):e.getCells()[0],a=t.getElement(),n=e.modules.dataTree;n.branchEl&&(n.branchEl.parentNode&&n.branchEl.parentNode.removeChild(n.branchEl),n.branchEl=!1),n.controlEl&&(n.controlEl.parentNode&&n.controlEl.parentNode.removeChild(n.controlEl),n.controlEl=!1),this.generateControlElement(e,a),e.element.classList.add("tabulator-tree-level-"+n.index),n.index&&(this.branchEl?(n.branchEl=this.branchEl.cloneNode(!0),a.insertBefore(n.branchEl,a.firstChild),n.branchEl.style.marginLeft=(n.branchEl.offsetWidth+n.branchEl.style.marginRight)*(n.index-1)+n.index*this.indent+"px"):a.style.paddingLeft=parseInt(window.getComputedStyle(a,null).getPropertyValue("padding-left"))+n.index*this.indent+"px")},DataTree.prototype.generateControlElement=function(e,t){var a=this,n=e.modules.dataTree,t=t||e.getCells()[0].getElement(),r=n.controlEl;!1!==n.children&&(n.open?(n.controlEl=this.collapseEl.cloneNode(!0),n.controlEl.addEventListener("click",function(t){t.stopPropagation(),a.collapseRow(e)})):(n.controlEl=this.expandEl.cloneNode(!0),n.controlEl.addEventListener("click",function(t){t.stopPropagation(),a.expandRow(e)})),n.controlEl.addEventListener("mousedown",function(e){e.stopPropagation()}),r&&r.parentNode===t?r.parentNode.replaceChild(n.controlEl,r):t.insertBefore(n.controlEl,t.firstChild))},DataTree.prototype.setDisplayIndex=function(e){this.displayIndex=e},DataTree.prototype.getDisplayIndex=function(){return this.displayIndex},DataTree.prototype.getRows=function(e){var t=this,a=[];return e.forEach(function(e,n){var r,l;a.push(e),e instanceof Row&&(r=e.modules.dataTree.children,r.index||!1===r.children||(l=t.getChildren(e),l.forEach(function(e){a.push(e)})))}),a},DataTree.prototype.getChildren=function(e){var t=this,a=e.modules.dataTree,n=[],r=[];return!1!==a.children&&a.open&&(Array.isArray(a.children)||(a.children=this.generateChildren(e)),n=this.table.modExists("filter")?this.table.modules.filter.filter(a.children):a.children,this.table.modExists("sort")&&this.table.modules.sort.sort(n),n.forEach(function(e){r.push(e),t.getChildren(e).forEach(function(e){r.push(e)})})),r},DataTree.prototype.generateChildren=function(e){var t=this,a=[],n=e.getData()[this.field];return Array.isArray(n)||(n=[n]),n.forEach(function(n){var r=new Row(n||{},t.table.rowManager);r.modules.dataTree.index=e.modules.dataTree.index+1,r.modules.dataTree.parent=e,r.modules.dataTree.children&&(r.modules.dataTree.open=t.startOpen(r.getComponent(),r.modules.dataTree.index)),a.push(r)}),a},DataTree.prototype.expandRow=function(e,t){var a=e.modules.dataTree;!1!==a.children&&(a.open=!0,e.reinitialize(),this.table.rowManager.refreshActiveData("tree",!1,!0),this.table.options.dataTreeRowExpanded(e.getComponent(),e.modules.dataTree.index))},DataTree.prototype.collapseRow=function(e){var t=e.modules.dataTree;!1!==t.children&&(t.open=!1,e.reinitialize(),this.table.rowManager.refreshActiveData("tree",!1,!0),this.table.options.dataTreeRowCollapsed(e.getComponent(),e.modules.dataTree.index))},DataTree.prototype.toggleRow=function(e){var t=e.modules.dataTree;!1!==t.children&&(t.open?this.collapseRow(e):this.expandRow(e))},DataTree.prototype.getTreeParent=function(e){return!!e.modules.dataTree.parent&&e.modules.dataTree.parent.getComponent()},DataTree.prototype.getFilteredTreeChildren=function(e){var t,a=e.modules.dataTree,n=[];return a.children&&(Array.isArray(a.children)||(a.children=this.generateChildren(e)),t=this.table.modExists("filter")?this.table.modules.filter.filter(a.children):a.children,t.forEach(function(e){e instanceof Row&&n.push(e)})),n},DataTree.prototype.rowDelete=function(e){var t,a=e.modules.dataTree.parent;a&&(t=this.findChildIndex(e,a),!1!==t&&a.data[this.field].splice(t,1),a.data[this.field].length||delete a.data[this.field],this.initializeRow(a),this.layoutRow(a)),this.table.rowManager.refreshActiveData("tree",!1,!0)},DataTree.prototype.addTreeChildRow=function(e,t,a,n){var r=!1;"string"==typeof t&&(t=JSON.parse(t)),Array.isArray(e.data[this.field])||(e.data[this.field]=[],e.modules.dataTree.open=this.startOpen(e.getComponent(),e.modules.dataTree.index)),void 0!==n&&!1!==(r=this.findChildIndex(n,e))&&e.data[this.field].splice(a?r:r+1,0,t),!1===r&&(a?e.data[this.field].unshift(t):e.data[this.field].push(t)),this.initializeRow(e),this.layoutRow(e),this.table.rowManager.refreshActiveData("tree",!1,!0)},DataTree.prototype.findChildIndex=function(e,t){var a=this,n=!1;return"object"==(void 0===e?"undefined":_typeof(e))?e instanceof Row?n=e.data:e instanceof RowComponent?n=e._getSelf().data:"undefined"!=typeof HTMLElement&&e instanceof HTMLElement&&t.modules.dataTree&&(n=t.modules.dataTree.children.find(function(t){return t instanceof Row&&t.element===e}))&&(n=n.data):n=void 0!==e&&null!==e&&t.data[this.field].find(function(t){return t.data[a.table.options.index]==e}),n&&(Array.isArray(t.data[this.field])&&(n=t.data[this.field].indexOf(n)),-1==n&&(n=!1)),n},DataTree.prototype.getTreeChildren=function(e){var t=e.modules.dataTree,a=[];return t.children&&(Array.isArray(t.children)||(t.children=this.generateChildren(e)),t.children.forEach(function(e){e instanceof Row&&a.push(e.getComponent())})),a},DataTree.prototype.checkForRestyle=function(e){e.row.cells.indexOf(e)||e.row.reinitialize()},DataTree.prototype.getChildField=function(){return this.field},DataTree.prototype.redrawNeeded=function(e){return!!this.field&&void 0!==e[this.field]||!!this.elementField&&void 0!==e[this.elementField]},Tabulator.prototype.registerModule("dataTree",DataTree);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/download.js b/app/static/vendors/tabulator/js/modules/download.js
deleted file mode 100644 (file)
index 9954910..0000000
+++ /dev/null
@@ -1,433 +0,0 @@
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-
-var Download = function Download(table) {
-       this.table = table; //hold Tabulator object
-};
-
-//trigger file download
-Download.prototype.download = function (type, filename, options, range, interceptCallback) {
-       var self = this,
-           downloadFunc = false;
-
-       function buildLink(data, mime) {
-               if (interceptCallback) {
-                       if (interceptCallback === true) {
-                               self.triggerDownload(data, mime, type, filename, true);
-                       } else {
-                               interceptCallback(data);
-                       }
-               } else {
-                       self.triggerDownload(data, mime, type, filename);
-               }
-       }
-
-       if (typeof type == "function") {
-               downloadFunc = type;
-       } else {
-               if (self.downloaders[type]) {
-                       downloadFunc = self.downloaders[type];
-               } else {
-                       console.warn("Download Error - No such download type found: ", type);
-               }
-       }
-
-       if (downloadFunc) {
-               var list = this.generateExportList(range);
-
-               downloadFunc.call(this.table, list, options || {}, buildLink);
-       }
-};
-
-Download.prototype.generateExportList = function (range) {
-       var list = this.table.modules.export.generateExportList(this.table.options.downloadConfig, false, range || this.table.options.downloadRowRange, "download");
-
-       //assign group header formatter
-       var groupHeader = this.table.options.groupHeaderDownload;
-
-       if (groupHeader && !Array.isArray(groupHeader)) {
-               groupHeader = [groupHeader];
-       }
-
-       list.forEach(function (row) {
-               var group;
-
-               if (row.type === "group") {
-                       group = row.columns[0];
-
-                       if (groupHeader && groupHeader[row.indent]) {
-                               group.value = groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);
-                       }
-               }
-       });
-
-       return list;
-};
-
-Download.prototype.triggerDownload = function (data, mime, type, filename, newTab) {
-       var element = document.createElement('a'),
-           blob = new Blob([data], { type: mime }),
-           filename = filename || "Tabulator." + (typeof type === "function" ? "txt" : type);
-
-       blob = this.table.options.downloadReady.call(this.table, data, blob);
-
-       if (blob) {
-
-               if (newTab) {
-                       window.open(window.URL.createObjectURL(blob));
-               } else {
-                       if (navigator.msSaveOrOpenBlob) {
-                               navigator.msSaveOrOpenBlob(blob, filename);
-                       } else {
-                               element.setAttribute('href', window.URL.createObjectURL(blob));
-
-                               //set file title
-                               element.setAttribute('download', filename);
-
-                               //trigger download
-                               element.style.display = 'none';
-                               document.body.appendChild(element);
-                               element.click();
-
-                               //remove temporary link element
-                               document.body.removeChild(element);
-                       }
-               }
-
-               if (this.table.options.downloadComplete) {
-                       this.table.options.downloadComplete();
-               }
-       }
-};
-
-Download.prototype.commsReceived = function (table, action, data) {
-       switch (action) {
-               case "intercept":
-                       this.download(data.type, "", data.options, data.active, data.intercept);
-                       break;
-       }
-};
-
-//downloaders
-Download.prototype.downloaders = {
-       csv: function csv(list, options, setFileContents) {
-               var delimiter = options && options.delimiter ? options.delimiter : ",",
-                   fileContents = [],
-                   headers = [];
-
-               list.forEach(function (row) {
-                       var item = [];
-
-                       switch (row.type) {
-                               case "group":
-                                       console.warn("Download Warning - CSV downloader cannot process row groups");
-                                       break;
-
-                               case "calc":
-                                       console.warn("Download Warning - CSV downloader cannot process column calculations");
-                                       break;
-
-                               case "header":
-                                       row.columns.forEach(function (col, i) {
-                                               if (col && col.depth === 1) {
-                                                       headers[i] = typeof col.value == "undefined" || typeof col.value == "null" ? "" : col.value;
-                                               }
-                                       });
-                                       break;
-
-                               case "row":
-                                       row.columns.forEach(function (col) {
-
-                                               if (col) {
-
-                                                       switch (_typeof(col.value)) {
-                                                               case "object":
-                                                                       col.value = JSON.stringify(col.value);
-                                                                       break;
-
-                                                               case "undefined":
-                                                               case "null":
-                                                                       col.value = "";
-                                                                       break;
-                                                       }
-
-                                                       item.push('"' + String(col.value).split('"').join('""') + '"');
-                                               }
-                                       });
-
-                                       fileContents.push(item.join(delimiter));
-                                       break;
-                       }
-               });
-
-               if (headers.length) {
-                       fileContents = [headers].concat(fileContents);
-               }
-
-               fileContents = fileContents.join("\n");
-
-               if (options.bom) {
-                       fileContents = "\uFEFF" + fileContents;
-               }
-
-               setFileContents(fileContents, "text/csv");
-       },
-
-       json: function json(list, options, setFileContents) {
-               var fileContents = [];
-
-               list.forEach(function (row) {
-                       var item = {};
-
-                       switch (row.type) {
-                               case "header":
-                                       break;
-
-                               case "group":
-                                       console.warn("Download Warning - JSON downloader cannot process row groups");
-                                       break;
-
-                               case "calc":
-                                       console.warn("Download Warning - JSON downloader cannot process column calculations");
-                                       break;
-
-                               case "row":
-                                       row.columns.forEach(function (col) {
-                                               if (col) {
-                                                       item[col.component.getField()] = col.value;
-                                               }
-                                       });
-
-                                       fileContents.push(item);
-                                       break;
-                       }
-               });
-
-               fileContents = JSON.stringify(fileContents, null, '\t');
-
-               setFileContents(fileContents, "application/json");
-       },
-
-       pdf: function pdf(list, options, setFileContents) {
-               var header = [],
-                   body = [],
-                   autoTableParams = {},
-                   rowGroupStyles = options.rowGroupStyles || {
-                       fontStyle: "bold",
-                       fontSize: 12,
-                       cellPadding: 6,
-                       fillColor: 220
-               },
-                   rowCalcStyles = options.rowCalcStyles || {
-                       fontStyle: "bold",
-                       fontSize: 10,
-                       cellPadding: 4,
-                       fillColor: 232
-               },
-                   jsPDFParams = options.jsPDF || {},
-                   title = options && options.title ? options.title : "";
-
-               if (!jsPDFParams.orientation) {
-                       jsPDFParams.orientation = options.orientation || "landscape";
-               }
-
-               if (!jsPDFParams.unit) {
-                       jsPDFParams.unit = "pt";
-               }
-
-               //parse row list
-               list.forEach(function (row) {
-                       var item = {};
-
-                       switch (row.type) {
-                               case "header":
-                                       header.push(parseRow(row));
-                                       break;
-
-                               case "group":
-                                       body.push(parseRow(row, rowGroupStyles));
-                                       break;
-
-                               case "calc":
-                                       body.push(parseRow(row, rowCalcStyles));
-                                       break;
-
-                               case "row":
-                                       body.push(parseRow(row));
-                                       break;
-                       }
-               });
-
-               function parseRow(row, styles) {
-                       var rowData = [];
-
-                       row.columns.forEach(function (col) {
-                               var cell;
-
-                               if (col) {
-                                       switch (_typeof(col.value)) {
-                                               case "object":
-                                                       col.value = JSON.stringify(col.value);
-                                                       break;
-
-                                               case "undefined":
-                                               case "null":
-                                                       col.value = "";
-                                                       break;
-                                       }
-
-                                       cell = {
-                                               content: col.value,
-                                               colSpan: col.width,
-                                               rowSpan: col.height
-                                       };
-
-                                       if (styles) {
-                                               cell.styles = styles;
-                                       }
-
-                                       rowData.push(cell);
-                               } else {
-                                       rowData.push("");
-                               }
-                       });
-
-                       return rowData;
-               }
-
-               //configure PDF
-               var doc = new jsPDF(jsPDFParams); //set document to landscape, better for most tables
-
-               if (options && options.autoTable) {
-                       if (typeof options.autoTable === "function") {
-                               autoTableParams = options.autoTable(doc) || {};
-                       } else {
-                               autoTableParams = options.autoTable;
-                       }
-               }
-
-               if (title) {
-                       autoTableParams.addPageContent = function (data) {
-                               doc.text(title, 40, 30);
-                       };
-               }
-
-               autoTableParams.head = header;
-               autoTableParams.body = body;
-
-               doc.autoTable(autoTableParams);
-
-               if (options && options.documentProcessing) {
-                       options.documentProcessing(doc);
-               }
-
-               setFileContents(doc.output("arraybuffer"), "application/pdf");
-       },
-
-       xlsx: function xlsx(list, options, setFileContents) {
-               var self = this,
-                   sheetName = options.sheetName || "Sheet1",
-                   workbook = XLSX.utils.book_new(),
-                   output;
-
-               workbook.SheetNames = [];
-               workbook.Sheets = {};
-
-               function generateSheet() {
-                       var rows = [],
-                           merges = [],
-                           worksheet = {},
-                           range = { s: { c: 0, r: 0 }, e: { c: list[0] ? list[0].columns.reduce(function (a, b) {
-                                               return a + (b && b.width ? b.width : 1);
-                                       }, 0) : 0, r: list.length } };
-
-                       //parse row list
-                       list.forEach(function (row, i) {
-                               var rowData = [];
-
-                               row.columns.forEach(function (col, j) {
-
-                                       if (col) {
-                                               rowData.push(!(col.value instanceof Date) && _typeof(col.value) === "object" ? JSON.stringify(col.value) : col.value);
-
-                                               if (col.width > 1 || col.height > -1) {
-                                                       merges.push({ s: { r: i, c: j }, e: { r: i + col.height - 1, c: j + col.width - 1 } });
-                                               }
-                                       } else {
-                                               rowData.push("");
-                                       }
-                               });
-
-                               rows.push(rowData);
-                       });
-
-                       //convert rows to worksheet
-                       XLSX.utils.sheet_add_aoa(worksheet, rows);
-
-                       worksheet['!ref'] = XLSX.utils.encode_range(range);
-
-                       if (merges.length) {
-                               worksheet["!merges"] = merges;
-                       }
-
-                       return worksheet;
-               }
-
-               if (options.sheetOnly) {
-                       setFileContents(generateSheet());
-                       return;
-               }
-
-               if (options.sheets) {
-                       for (var sheet in options.sheets) {
-
-                               if (options.sheets[sheet] === true) {
-                                       workbook.SheetNames.push(sheet);
-                                       workbook.Sheets[sheet] = generateSheet();
-                               } else {
-
-                                       workbook.SheetNames.push(sheet);
-
-                                       this.table.modules.comms.send(options.sheets[sheet], "download", "intercept", {
-                                               type: "xlsx",
-                                               options: { sheetOnly: true },
-                                               active: self.active,
-                                               intercept: function intercept(data) {
-                                                       workbook.Sheets[sheet] = data;
-                                               }
-                                       });
-                               }
-                       }
-               } else {
-                       workbook.SheetNames.push(sheetName);
-                       workbook.Sheets[sheetName] = generateSheet();
-               }
-
-               if (options.documentProcessing) {
-                       workbook = options.documentProcessing(workbook);
-               }
-
-               //convert workbook to binary array
-               function s2ab(s) {
-                       var buf = new ArrayBuffer(s.length);
-                       var view = new Uint8Array(buf);
-                       for (var i = 0; i != s.length; ++i) {
-                               view[i] = s.charCodeAt(i) & 0xFF;
-                       }return buf;
-               }
-
-               output = XLSX.write(workbook, { bookType: 'xlsx', bookSST: true, type: 'binary' });
-
-               setFileContents(s2ab(output), "application/octet-stream");
-       },
-
-       html: function html(list, options, setFileContents) {
-               if (this.modExists("export", true)) {
-                       setFileContents(this.modules.export.genereateHTMLTable(list), "text/html");
-               }
-       }
-
-};
-
-Tabulator.prototype.registerModule("download", Download);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/download.min.js b/app/static/vendors/tabulator/js/modules/download.min.js
deleted file mode 100644 (file)
index b3b776c..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Download=function(e){this.table=e};Download.prototype.download=function(e,o,t,n,a){function r(t,n){a?!0===a?l.triggerDownload(t,n,e,o,!0):a(t):l.triggerDownload(t,n,e,o)}var l=this,s=!1;if("function"==typeof e?s=e:l.downloaders[e]?s=l.downloaders[e]:console.warn("Download Error - No such download type found: ",e),s){var i=this.generateExportList(n);s.call(this.table,i,t||{},r)}},Download.prototype.generateExportList=function(e){var o=this.table.modules.export.generateExportList(this.table.options.downloadConfig,!1,e||this.table.options.downloadRowRange,"download"),t=this.table.options.groupHeaderDownload;return t&&!Array.isArray(t)&&(t=[t]),o.forEach(function(e){var o;"group"===e.type&&(o=e.columns[0],t&&t[e.indent]&&(o.value=t[e.indent](o.value,e.component._group.getRowCount(),e.component._group.getData(),e.component)))}),o},Download.prototype.triggerDownload=function(e,o,t,n,a){var r=document.createElement("a"),l=new Blob([e],{type:o}),n=n||"Tabulator."+("function"==typeof t?"txt":t);(l=this.table.options.downloadReady.call(this.table,e,l))&&(a?window.open(window.URL.createObjectURL(l)):navigator.msSaveOrOpenBlob?navigator.msSaveOrOpenBlob(l,n):(r.setAttribute("href",window.URL.createObjectURL(l)),r.setAttribute("download",n),r.style.display="none",document.body.appendChild(r),r.click(),document.body.removeChild(r)),this.table.options.downloadComplete&&this.table.options.downloadComplete())},Download.prototype.commsReceived=function(e,o,t){switch(o){case"intercept":this.download(t.type,"",t.options,t.active,t.intercept)}},Download.prototype.downloaders={csv:function(e,o,t){var n=o&&o.delimiter?o.delimiter:",",a=[],r=[];e.forEach(function(e){var o=[];switch(e.type){case"group":console.warn("Download Warning - CSV downloader cannot process row groups");break;case"calc":console.warn("Download Warning - CSV downloader cannot process column calculations");break;case"header":e.columns.forEach(function(e,o){e&&1===e.depth&&(r[o]=void 0===e.value||"null"==typeof e.value?"":e.value)});break;case"row":e.columns.forEach(function(e){if(e){switch(_typeof(e.value)){case"object":e.value=JSON.stringify(e.value);break;case"undefined":case"null":e.value=""}o.push('"'+String(e.value).split('"').join('""')+'"')}}),a.push(o.join(n))}}),r.length&&(a=[r].concat(a)),a=a.join("\n"),o.bom&&(a="\ufeff"+a),t(a,"text/csv")},json:function(e,o,t){var n=[];e.forEach(function(e){var o={};switch(e.type){case"header":break;case"group":console.warn("Download Warning - JSON downloader cannot process row groups");break;case"calc":console.warn("Download Warning - JSON downloader cannot process column calculations");break;case"row":e.columns.forEach(function(e){e&&(o[e.component.getField()]=e.value)}),n.push(o)}}),n=JSON.stringify(n,null,"\t"),t(n,"application/json")},pdf:function(e,o,t){function n(e,o){var t=[];return e.columns.forEach(function(e){var n;if(e){switch(_typeof(e.value)){case"object":e.value=JSON.stringify(e.value);break;case"undefined":case"null":e.value=""}n={content:e.value,colSpan:e.width,rowSpan:e.height},o&&(n.styles=o),t.push(n)}else t.push("")}),t}var a=[],r=[],l={},s=o.rowGroupStyles||{fontStyle:"bold",fontSize:12,cellPadding:6,fillColor:220},i=o.rowCalcStyles||{fontStyle:"bold",fontSize:10,cellPadding:4,fillColor:232},c=o.jsPDF||{},u=o&&o.title?o.title:"";c.orientation||(c.orientation=o.orientation||"landscape"),c.unit||(c.unit="pt"),e.forEach(function(e){switch(e.type){case"header":a.push(n(e));break;case"group":r.push(n(e,s));break;case"calc":r.push(n(e,i));break;case"row":r.push(n(e))}});var d=new jsPDF(c);o&&o.autoTable&&(l="function"==typeof o.autoTable?o.autoTable(d)||{}:o.autoTable),u&&(l.addPageContent=function(e){d.text(u,40,30)}),l.head=a,l.body=r,d.autoTable(l),o&&o.documentProcessing&&o.documentProcessing(d),t(d.output("arraybuffer"),"application/pdf")},xlsx:function(e,o,t){function n(){var o=[],t=[],n={},a={s:{c:0,r:0},e:{c:e[0]?e[0].columns.reduce(function(e,o){return e+(o&&o.width?o.width:1)},0):0,r:e.length}};return e.forEach(function(e,n){var a=[];e.columns.forEach(function(e,o){e?(a.push(e.value instanceof Date||"object"!==_typeof(e.value)?e.value:JSON.stringify(e.value)),(e.width>1||e.height>-1)&&t.push({s:{r:n,c:o},e:{r:n+e.height-1,c:o+e.width-1}})):a.push("")}),o.push(a)}),XLSX.utils.sheet_add_aoa(n,o),n["!ref"]=XLSX.utils.encode_range(a),t.length&&(n["!merges"]=t),n}var a,r=this,l=o.sheetName||"Sheet1",s=XLSX.utils.book_new();if(s.SheetNames=[],s.Sheets={},o.sheetOnly)return void t(n());if(o.sheets)for(var i in o.sheets)!0===o.sheets[i]?(s.SheetNames.push(i),s.Sheets[i]=n()):(s.SheetNames.push(i),this.table.modules.comms.send(o.sheets[i],"download","intercept",{type:"xlsx",options:{sheetOnly:!0},active:r.active,intercept:function(e){s.Sheets[i]=e}}));else s.SheetNames.push(l),s.Sheets[l]=n();o.documentProcessing&&(s=o.documentProcessing(s)),a=XLSX.write(s,{bookType:"xlsx",bookSST:!0,type:"binary"}),t(function(e){for(var o=new ArrayBuffer(e.length),t=new Uint8Array(o),n=0;n!=e.length;++n)t[n]=255&e.charCodeAt(n);return o}(a),"application/octet-stream")},html:function(e,o,t){this.modExists("export",!0)&&t(this.modules.export.genereateHTMLTable(e),"text/html")}},Tabulator.prototype.registerModule("download",Download);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/edit.js b/app/static/vendors/tabulator/js/modules/edit.js
deleted file mode 100644 (file)
index e35dd84..0000000
+++ /dev/null
@@ -1,2109 +0,0 @@
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-
-var Edit = function Edit(table) {
-       this.table = table; //hold Tabulator object
-       this.currentCell = false; //hold currently editing cell
-       this.mouseClick = false; //hold mousedown state to prevent click binding being overriden by editor opening
-       this.recursionBlock = false; //prevent focus recursion
-       this.invalidEdit = false;
-       this.editedCells = [];
-};
-
-//initialize column editor
-Edit.prototype.initializeColumn = function (column) {
-       var self = this,
-           config = {
-               editor: false,
-               blocked: false,
-               check: column.definition.editable,
-               params: column.definition.editorParams || {}
-       };
-
-       //set column editor
-       switch (_typeof(column.definition.editor)) {
-               case "string":
-
-                       if (column.definition.editor === "tick") {
-                               column.definition.editor = "tickCross";
-                               console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor");
-                       }
-
-                       if (self.editors[column.definition.editor]) {
-                               config.editor = self.editors[column.definition.editor];
-                       } else {
-                               console.warn("Editor Error - No such editor found: ", column.definition.editor);
-                       }
-                       break;
-
-               case "function":
-                       config.editor = column.definition.editor;
-                       break;
-
-               case "boolean":
-
-                       if (column.definition.editor === true) {
-
-                               if (typeof column.definition.formatter !== "function") {
-
-                                       if (column.definition.formatter === "tick") {
-                                               column.definition.formatter = "tickCross";
-                                               console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor");
-                                       }
-
-                                       if (self.editors[column.definition.formatter]) {
-                                               config.editor = self.editors[column.definition.formatter];
-                                       } else {
-                                               config.editor = self.editors["input"];
-                                       }
-                               } else {
-                                       console.warn("Editor Error - Cannot auto lookup editor for a custom formatter: ", column.definition.formatter);
-                               }
-                       }
-                       break;
-       }
-
-       if (config.editor) {
-               column.modules.edit = config;
-       }
-};
-
-Edit.prototype.getCurrentCell = function () {
-       return this.currentCell ? this.currentCell.getComponent() : false;
-};
-
-Edit.prototype.clearEditor = function (cancel) {
-       var cell = this.currentCell,
-           cellEl;
-
-       this.invalidEdit = false;
-
-       if (cell) {
-               this.currentCell = false;
-
-               cellEl = cell.getElement();
-
-               if (cancel) {
-                       cell.validate();
-               } else {
-                       cellEl.classList.remove("tabulator-validation-fail");
-               }
-
-               cellEl.classList.remove("tabulator-editing");
-               while (cellEl.firstChild) {
-                       cellEl.removeChild(cellEl.firstChild);
-               }cell.row.getElement().classList.remove("tabulator-row-editing");
-       }
-};
-
-Edit.prototype.cancelEdit = function () {
-
-       if (this.currentCell) {
-               var cell = this.currentCell;
-               var component = this.currentCell.getComponent();
-
-               this.clearEditor(true);
-               cell.setValueActual(cell.getValue());
-               cell.cellRendered();
-
-               if (cell.column.cellEvents.cellEditCancelled) {
-                       cell.column.cellEvents.cellEditCancelled.call(this.table, component);
-               }
-
-               this.table.options.cellEditCancelled.call(this.table, component);
-       }
-};
-
-//return a formatted value for a cell
-Edit.prototype.bindEditor = function (cell) {
-       var self = this,
-           element = cell.getElement();
-
-       element.setAttribute("tabindex", 0);
-
-       element.addEventListener("click", function (e) {
-               if (!element.classList.contains("tabulator-editing")) {
-                       element.focus({ preventScroll: true });
-               }
-       });
-
-       element.addEventListener("mousedown", function (e) {
-               self.mouseClick = true;
-       });
-
-       element.addEventListener("focus", function (e) {
-               if (!self.recursionBlock) {
-                       self.edit(cell, e, false);
-               }
-       });
-};
-
-Edit.prototype.focusCellNoEvent = function (cell, block) {
-       this.recursionBlock = true;
-       if (!(block && this.table.browser === "ie")) {
-               cell.getElement().focus({ preventScroll: true });
-       }
-       this.recursionBlock = false;
-};
-
-Edit.prototype.editCell = function (cell, forceEdit) {
-       this.focusCellNoEvent(cell);
-       this.edit(cell, false, forceEdit);
-};
-
-Edit.prototype.focusScrollAdjust = function (cell) {
-       if (this.table.rowManager.getRenderMode() == "virtual") {
-               var topEdge = this.table.rowManager.element.scrollTop,
-                   bottomEdge = this.table.rowManager.element.clientHeight + this.table.rowManager.element.scrollTop,
-                   rowEl = cell.row.getElement(),
-                   offset = rowEl.offsetTop;
-
-               if (rowEl.offsetTop < topEdge) {
-                       this.table.rowManager.element.scrollTop -= topEdge - rowEl.offsetTop;
-               } else {
-                       if (rowEl.offsetTop + rowEl.offsetHeight > bottomEdge) {
-                               this.table.rowManager.element.scrollTop += rowEl.offsetTop + rowEl.offsetHeight - bottomEdge;
-                       }
-               }
-       }
-};
-
-Edit.prototype.edit = function (cell, e, forceEdit) {
-       var self = this,
-           allowEdit = true,
-           rendered = function rendered() {},
-           element = cell.getElement(),
-           cellEditor,
-           component,
-           params;
-
-       //prevent editing if another cell is refusing to leave focus (eg. validation fail)
-       if (this.currentCell) {
-               if (!this.invalidEdit) {
-                       this.cancelEdit();
-               }
-               return;
-       }
-
-       //handle successfull value change
-       function success(value) {
-               if (self.currentCell === cell) {
-                       var valid = true;
-
-                       if (cell.column.modules.validate && self.table.modExists("validate") && self.table.options.validationMode != "manual") {
-                               valid = self.table.modules.validate.validate(cell.column.modules.validate, cell, value);
-                       }
-
-                       if (valid === true || self.table.options.validationMode === "highlight") {
-                               self.clearEditor();
-                               cell.setValue(value, true);
-
-                               if (!cell.modules.edit) {
-                                       cell.modules.edit = {};
-                               }
-
-                               cell.modules.edit.edited = true;
-
-                               if (self.editedCells.indexOf(cell) == -1) {
-                                       self.editedCells.push(cell);
-                               }
-
-                               if (self.table.options.dataTree && self.table.modExists("dataTree")) {
-                                       self.table.modules.dataTree.checkForRestyle(cell);
-                               }
-
-                               if (valid !== true) {
-                                       element.classList.add("tabulator-validation-fail");
-                                       return false;
-                               }
-
-                               return true;
-                       } else {
-                               self.invalidEdit = true;
-                               element.classList.add("tabulator-validation-fail");
-                               self.focusCellNoEvent(cell, true);
-                               rendered();
-                               self.table.options.validationFailed.call(self.table, cell.getComponent(), value, valid);
-
-                               return false;
-                       }
-               } else {
-                       // console.warn("Edit Success Error - cannot call success on a cell that is no longer being edited");
-               }
-       }
-
-       //handle aborted edit
-       function cancel() {
-               if (self.currentCell === cell) {
-                       self.cancelEdit();
-
-                       if (self.table.options.dataTree && self.table.modExists("dataTree")) {
-                               self.table.modules.dataTree.checkForRestyle(cell);
-                       }
-               } else {
-                       // console.warn("Edit Success Error - cannot call cancel on a cell that is no longer being edited");
-               }
-       }
-
-       function onRendered(callback) {
-               rendered = callback;
-       }
-
-       if (!cell.column.modules.edit.blocked) {
-               if (e) {
-                       e.stopPropagation();
-               }
-
-               switch (_typeof(cell.column.modules.edit.check)) {
-                       case "function":
-                               allowEdit = cell.column.modules.edit.check(cell.getComponent());
-                               break;
-
-                       case "boolean":
-                               allowEdit = cell.column.modules.edit.check;
-                               break;
-               }
-
-               if (allowEdit || forceEdit) {
-
-                       self.cancelEdit();
-
-                       self.currentCell = cell;
-
-                       this.focusScrollAdjust(cell);
-
-                       component = cell.getComponent();
-
-                       if (this.mouseClick) {
-                               this.mouseClick = false;
-
-                               if (cell.column.cellEvents.cellClick) {
-                                       cell.column.cellEvents.cellClick.call(this.table, e, component);
-                               }
-                       }
-
-                       if (cell.column.cellEvents.cellEditing) {
-                               cell.column.cellEvents.cellEditing.call(this.table, component);
-                       }
-
-                       self.table.options.cellEditing.call(this.table, component);
-
-                       params = typeof cell.column.modules.edit.params === "function" ? cell.column.modules.edit.params(component) : cell.column.modules.edit.params;
-
-                       cellEditor = cell.column.modules.edit.editor.call(self, component, onRendered, success, cancel, params);
-
-                       //if editor returned, add to DOM, if false, abort edit
-                       if (cellEditor !== false) {
-
-                               if (cellEditor instanceof Node) {
-                                       element.classList.add("tabulator-editing");
-                                       cell.row.getElement().classList.add("tabulator-row-editing");
-                                       while (element.firstChild) {
-                                               element.removeChild(element.firstChild);
-                                       }element.appendChild(cellEditor);
-
-                                       //trigger onRendered Callback
-                                       rendered();
-
-                                       //prevent editing from triggering rowClick event
-                                       var children = element.children;
-
-                                       for (var i = 0; i < children.length; i++) {
-                                               children[i].addEventListener("click", function (e) {
-                                                       e.stopPropagation();
-                                               });
-                                       }
-                               } else {
-                                       console.warn("Edit Error - Editor should return an instance of Node, the editor returned:", cellEditor);
-                                       element.blur();
-                                       return false;
-                               }
-                       } else {
-                               element.blur();
-                               return false;
-                       }
-
-                       return true;
-               } else {
-                       this.mouseClick = false;
-                       element.blur();
-                       return false;
-               }
-       } else {
-               this.mouseClick = false;
-               element.blur();
-               return false;
-       }
-};
-
-Edit.prototype.maskInput = function (el, options) {
-       var mask = options.mask,
-           maskLetter = typeof options.maskLetterChar !== "undefined" ? options.maskLetterChar : "A",
-           maskNumber = typeof options.maskNumberChar !== "undefined" ? options.maskNumberChar : "9",
-           maskWildcard = typeof options.maskWildcardChar !== "undefined" ? options.maskWildcardChar : "*",
-           success = false;
-
-       function fillSymbols(index) {
-               var symbol = mask[index];
-               if (typeof symbol !== "undefined" && symbol !== maskWildcard && symbol !== maskLetter && symbol !== maskNumber) {
-                       el.value = el.value + "" + symbol;
-                       fillSymbols(index + 1);
-               }
-       }
-
-       el.addEventListener("keydown", function (e) {
-               var index = el.value.length,
-                   char = e.key;
-
-               if (e.keyCode > 46) {
-                       if (index >= mask.length) {
-                               e.preventDefault();
-                               e.stopPropagation();
-                               success = false;
-                               return false;
-                       } else {
-                               switch (mask[index]) {
-                                       case maskLetter:
-                                               if (char.toUpperCase() == char.toLowerCase()) {
-                                                       e.preventDefault();
-                                                       e.stopPropagation();
-                                                       success = false;
-                                                       return false;
-                                               }
-                                               break;
-
-                                       case maskNumber:
-                                               if (isNaN(char)) {
-                                                       e.preventDefault();
-                                                       e.stopPropagation();
-                                                       success = false;
-                                                       return false;
-                                               }
-                                               break;
-
-                                       case maskWildcard:
-                                               break;
-
-                                       default:
-                                               if (char !== mask[index]) {
-                                                       e.preventDefault();
-                                                       e.stopPropagation();
-                                                       success = false;
-                                                       return false;
-                                               }
-                               }
-                       }
-
-                       success = true;
-               }
-
-               return;
-       });
-
-       el.addEventListener("keyup", function (e) {
-               if (e.keyCode > 46) {
-                       if (options.maskAutoFill) {
-                               fillSymbols(el.value.length);
-                       }
-               }
-       });
-
-       if (!el.placeholder) {
-               el.placeholder = mask;
-       }
-
-       if (options.maskAutoFill) {
-               fillSymbols(el.value.length);
-       }
-};
-
-Edit.prototype.getEditedCells = function () {
-       var output = [];
-
-       this.editedCells.forEach(function (cell) {
-               output.push(cell.getComponent());
-       });
-
-       return output;
-};
-
-Edit.prototype.clearEdited = function (cell) {
-       var editIndex;
-
-       if (cell.modules.edit && cell.modules.edit.edited) {
-               cell.modules.validate.invalid = false;
-
-               editIndex = this.editedCells.indexOf(cell);
-
-               if (editIndex > -1) {
-                       this.editedCells.splice(editIndex, 1);
-               }
-       }
-};
-
-//default data editors
-Edit.prototype.editors = {
-
-       //input element
-       input: function input(cell, onRendered, success, cancel, editorParams) {
-
-               //create and style input
-               var cellValue = cell.getValue(),
-                   input = document.createElement("input");
-
-               input.setAttribute("type", editorParams.search ? "search" : "text");
-
-               input.style.padding = "4px";
-               input.style.width = "100%";
-               input.style.boxSizing = "border-box";
-
-               if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
-                       for (var key in editorParams.elementAttributes) {
-                               if (key.charAt(0) == "+") {
-                                       key = key.slice(1);
-                                       input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
-                               } else {
-                                       input.setAttribute(key, editorParams.elementAttributes[key]);
-                               }
-                       }
-               }
-
-               input.value = typeof cellValue !== "undefined" ? cellValue : "";
-
-               onRendered(function () {
-                       input.focus({ preventScroll: true });
-                       input.style.height = "100%";
-               });
-
-               function onChange(e) {
-                       if ((cellValue === null || typeof cellValue === "undefined") && input.value !== "" || input.value !== cellValue) {
-                               if (success(input.value)) {
-                                       cellValue = input.value; //persist value if successfully validated incase editor is used as header filter
-                               }
-                       } else {
-                               cancel();
-                       }
-               }
-
-               //submit new value on blur or change
-               input.addEventListener("change", onChange);
-               input.addEventListener("blur", onChange);
-
-               //submit new value on enter
-               input.addEventListener("keydown", function (e) {
-                       switch (e.keyCode) {
-                               // case 9:
-                               case 13:
-                                       onChange(e);
-                                       break;
-
-                               case 27:
-                                       cancel();
-                                       break;
-                       }
-               });
-
-               if (editorParams.mask) {
-                       this.table.modules.edit.maskInput(input, editorParams);
-               }
-
-               return input;
-       },
-
-       //resizable text area element
-       textarea: function textarea(cell, onRendered, success, cancel, editorParams) {
-               var self = this,
-                   cellValue = cell.getValue(),
-                   vertNav = editorParams.verticalNavigation || "hybrid",
-                   value = String(cellValue !== null && typeof cellValue !== "undefined" ? cellValue : ""),
-                   count = (value.match(/(?:\r\n|\r|\n)/g) || []).length + 1,
-                   input = document.createElement("textarea"),
-                   scrollHeight = 0;
-
-               //create and style input
-               input.style.display = "block";
-               input.style.padding = "2px";
-               input.style.height = "100%";
-               input.style.width = "100%";
-               input.style.boxSizing = "border-box";
-               input.style.whiteSpace = "pre-wrap";
-               input.style.resize = "none";
-
-               if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
-                       for (var key in editorParams.elementAttributes) {
-                               if (key.charAt(0) == "+") {
-                                       key = key.slice(1);
-                                       input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
-                               } else {
-                                       input.setAttribute(key, editorParams.elementAttributes[key]);
-                               }
-                       }
-               }
-
-               input.value = value;
-
-               onRendered(function () {
-                       input.focus({ preventScroll: true });
-                       input.style.height = "100%";
-               });
-
-               function onChange(e) {
-
-                       if ((cellValue === null || typeof cellValue === "undefined") && input.value !== "" || input.value !== cellValue) {
-
-                               if (success(input.value)) {
-                                       cellValue = input.value; //persist value if successfully validated incase editor is used as header filter
-                               }
-
-                               setTimeout(function () {
-                                       cell.getRow().normalizeHeight();
-                               }, 300);
-                       } else {
-                               cancel();
-                       }
-               }
-
-               //submit new value on blur or change
-               input.addEventListener("change", onChange);
-               input.addEventListener("blur", onChange);
-
-               input.addEventListener("keyup", function () {
-
-                       input.style.height = "";
-
-                       var heightNow = input.scrollHeight;
-
-                       input.style.height = heightNow + "px";
-
-                       if (heightNow != scrollHeight) {
-                               scrollHeight = heightNow;
-                               cell.getRow().normalizeHeight();
-                       }
-               });
-
-               input.addEventListener("keydown", function (e) {
-
-                       switch (e.keyCode) {
-                               case 27:
-                                       cancel();
-                                       break;
-
-                               case 38:
-                                       //up arrow
-                                       if (vertNav == "editor" || vertNav == "hybrid" && input.selectionStart) {
-                                               e.stopImmediatePropagation();
-                                               e.stopPropagation();
-                                       }
-
-                                       break;
-
-                               case 40:
-                                       //down arrow
-                                       if (vertNav == "editor" || vertNav == "hybrid" && input.selectionStart !== input.value.length) {
-                                               e.stopImmediatePropagation();
-                                               e.stopPropagation();
-                                       }
-                                       break;
-                       }
-               });
-
-               if (editorParams.mask) {
-                       this.table.modules.edit.maskInput(input, editorParams);
-               }
-
-               return input;
-       },
-
-       //input element with type of number
-       number: function number(cell, onRendered, success, cancel, editorParams) {
-
-               var cellValue = cell.getValue(),
-                   vertNav = editorParams.verticalNavigation || "editor",
-                   input = document.createElement("input");
-
-               input.setAttribute("type", "number");
-
-               if (typeof editorParams.max != "undefined") {
-                       input.setAttribute("max", editorParams.max);
-               }
-
-               if (typeof editorParams.min != "undefined") {
-                       input.setAttribute("min", editorParams.min);
-               }
-
-               if (typeof editorParams.step != "undefined") {
-                       input.setAttribute("step", editorParams.step);
-               }
-
-               //create and style input
-               input.style.padding = "4px";
-               input.style.width = "100%";
-               input.style.boxSizing = "border-box";
-
-               if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
-                       for (var key in editorParams.elementAttributes) {
-                               if (key.charAt(0) == "+") {
-                                       key = key.slice(1);
-                                       input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
-                               } else {
-                                       input.setAttribute(key, editorParams.elementAttributes[key]);
-                               }
-                       }
-               }
-
-               input.value = cellValue;
-
-               var blurFunc = function blurFunc(e) {
-                       onChange();
-               };
-
-               onRendered(function () {
-                       //submit new value on blur
-                       input.removeEventListener("blur", blurFunc);
-
-                       input.focus({ preventScroll: true });
-                       input.style.height = "100%";
-
-                       //submit new value on blur
-                       input.addEventListener("blur", blurFunc);
-               });
-
-               function onChange() {
-                       var value = input.value;
-
-                       if (!isNaN(value) && value !== "") {
-                               value = Number(value);
-                       }
-
-                       if (value !== cellValue) {
-                               if (success(value)) {
-                                       cellValue = value; //persist value if successfully validated incase editor is used as header filter
-                               }
-                       } else {
-                               cancel();
-                       }
-               }
-
-               //submit new value on enter
-               input.addEventListener("keydown", function (e) {
-                       switch (e.keyCode) {
-                               case 13:
-                                       // case 9:
-                                       onChange();
-                                       break;
-
-                               case 27:
-                                       cancel();
-                                       break;
-
-                               case 38: //up arrow
-                               case 40:
-                                       //down arrow
-                                       if (vertNav == "editor") {
-                                               e.stopImmediatePropagation();
-                                               e.stopPropagation();
-                                       }
-                                       break;
-                       }
-               });
-
-               if (editorParams.mask) {
-                       this.table.modules.edit.maskInput(input, editorParams);
-               }
-
-               return input;
-       },
-
-       //input element with type of number
-       range: function range(cell, onRendered, success, cancel, editorParams) {
-
-               var cellValue = cell.getValue(),
-                   input = document.createElement("input");
-
-               input.setAttribute("type", "range");
-
-               if (typeof editorParams.max != "undefined") {
-                       input.setAttribute("max", editorParams.max);
-               }
-
-               if (typeof editorParams.min != "undefined") {
-                       input.setAttribute("min", editorParams.min);
-               }
-
-               if (typeof editorParams.step != "undefined") {
-                       input.setAttribute("step", editorParams.step);
-               }
-
-               //create and style input
-               input.style.padding = "4px";
-               input.style.width = "100%";
-               input.style.boxSizing = "border-box";
-
-               if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
-                       for (var key in editorParams.elementAttributes) {
-                               if (key.charAt(0) == "+") {
-                                       key = key.slice(1);
-                                       input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
-                               } else {
-                                       input.setAttribute(key, editorParams.elementAttributes[key]);
-                               }
-                       }
-               }
-
-               input.value = cellValue;
-
-               onRendered(function () {
-                       input.focus({ preventScroll: true });
-                       input.style.height = "100%";
-               });
-
-               function onChange() {
-                       var value = input.value;
-
-                       if (!isNaN(value) && value !== "") {
-                               value = Number(value);
-                       }
-
-                       if (value != cellValue) {
-                               if (success(value)) {
-                                       cellValue = value; //persist value if successfully validated incase editor is used as header filter
-                               }
-                       } else {
-                               cancel();
-                       }
-               }
-
-               //submit new value on blur
-               input.addEventListener("blur", function (e) {
-                       onChange();
-               });
-
-               //submit new value on enter
-               input.addEventListener("keydown", function (e) {
-                       switch (e.keyCode) {
-                               case 13:
-                                       // case 9:
-                                       onChange();
-                                       break;
-
-                               case 27:
-                                       cancel();
-                                       break;
-                       }
-               });
-
-               return input;
-       },
-
-       //select
-       select: function select(cell, onRendered, success, cancel, editorParams) {
-               var self = this,
-                   cellEl = cell.getElement(),
-                   initialValue = cell.getValue(),
-                   vertNav = editorParams.verticalNavigation || "editor",
-                   initialDisplayValue = typeof initialValue !== "undefined" || initialValue === null ? initialValue : typeof editorParams.defaultValue !== "undefined" ? editorParams.defaultValue : [],
-                   input = document.createElement("input"),
-                   listEl = document.createElement("div"),
-                   multiselect = editorParams.multiselect,
-                   dataItems = [],
-                   currentItem = {},
-                   displayItems = [],
-                   currentItems = [],
-                   blurable = true;
-
-               this.table.rowManager.element.addEventListener("scroll", cancelItem);
-
-               if (Array.isArray(editorParams) || !Array.isArray(editorParams) && (typeof editorParams === "undefined" ? "undefined" : _typeof(editorParams)) === "object" && !editorParams.values) {
-                       console.warn("DEPRECATION WARNING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object");
-                       editorParams = { values: editorParams };
-               }
-
-               function getUniqueColumnValues(field) {
-                       var output = {},
-                           data = self.table.getData(),
-                           column;
-
-                       if (field) {
-                               column = self.table.columnManager.getColumnByField(field);
-                       } else {
-                               column = cell.getColumn()._getSelf();
-                       }
-
-                       if (column) {
-                               data.forEach(function (row) {
-                                       var val = column.getFieldValue(row);
-
-                                       if (val !== null && typeof val !== "undefined" && val !== "") {
-                                               output[val] = true;
-                                       }
-                               });
-
-                               if (editorParams.sortValuesList) {
-                                       if (editorParams.sortValuesList == "asc") {
-                                               output = Object.keys(output).sort();
-                                       } else {
-                                               output = Object.keys(output).sort().reverse();
-                                       }
-                               } else {
-                                       output = Object.keys(output);
-                               }
-                       } else {
-                               console.warn("unable to find matching column to create select lookup list:", field);
-                       }
-
-                       return output;
-               }
-
-               function parseItems(inputValues, curentValues) {
-                       var dataList = [];
-                       var displayList = [];
-
-                       function processComplexListItem(item) {
-                               var item = {
-                                       label: item.label,
-                                       value: item.value,
-                                       itemParams: item.itemParams,
-                                       elementAttributes: item.elementAttributes,
-                                       element: false
-                               };
-
-                               // if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){
-                               //      setCurrentItem(item);
-                               // }
-
-                               if (curentValues.indexOf(item.value) > -1) {
-                                       setItem(item);
-                               }
-
-                               dataList.push(item);
-                               displayList.push(item);
-
-                               return item;
-                       }
-
-                       if (typeof inputValues == "function") {
-                               inputValues = inputValues(cell);
-                       }
-
-                       if (Array.isArray(inputValues)) {
-                               inputValues.forEach(function (value) {
-                                       var item;
-
-                                       if ((typeof value === "undefined" ? "undefined" : _typeof(value)) === "object") {
-
-                                               if (value.options) {
-                                                       item = {
-                                                               label: value.label,
-                                                               group: true,
-                                                               itemParams: value.itemParams,
-                                                               elementAttributes: value.elementAttributes,
-                                                               element: false
-                                                       };
-
-                                                       displayList.push(item);
-
-                                                       value.options.forEach(function (item) {
-                                                               processComplexListItem(item);
-                                                       });
-                                               } else {
-                                                       processComplexListItem(value);
-                                               }
-                                       } else {
-
-                                               item = {
-                                                       label: value,
-                                                       value: value,
-                                                       element: false
-                                               };
-
-                                               // if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){
-                                               //      setCurrentItem(item);
-                                               // }
-
-                                               if (curentValues.indexOf(item.value) > -1) {
-                                                       setItem(item);
-                                               }
-
-                                               dataList.push(item);
-                                               displayList.push(item);
-                                       }
-                               });
-                       } else {
-                               for (var key in inputValues) {
-                                       var item = {
-                                               label: inputValues[key],
-                                               value: key,
-                                               element: false
-                                       };
-
-                                       // if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){
-                                       //      setCurrentItem(item);
-                                       // }
-
-                                       if (curentValues.indexOf(item.value) > -1) {
-                                               setItem(item);
-                                       }
-
-                                       dataList.push(item);
-                                       displayList.push(item);
-                               }
-                       }
-
-                       dataItems = dataList;
-                       displayItems = displayList;
-
-                       fillList();
-               }
-
-               function fillList() {
-                       while (listEl.firstChild) {
-                               listEl.removeChild(listEl.firstChild);
-                       }displayItems.forEach(function (item) {
-
-                               var el = item.element;
-
-                               if (!el) {
-                                       el = document.createElement("div");
-                                       item.label = editorParams.listItemFormatter ? editorParams.listItemFormatter(item.value, item.label, cell, el, item.itemParams) : item.label;
-                                       if (item.group) {
-                                               el.classList.add("tabulator-edit-select-list-group");
-                                               el.tabIndex = 0;
-                                               el.innerHTML = item.label === "" ? "&nbsp;" : item.label;
-                                       } else {
-                                               el.classList.add("tabulator-edit-select-list-item");
-                                               el.tabIndex = 0;
-                                               el.innerHTML = item.label === "" ? "&nbsp;" : item.label;
-
-                                               el.addEventListener("click", function () {
-                                                       // setCurrentItem(item);
-                                                       // chooseItem();
-                                                       if (multiselect) {
-                                                               toggleItem(item);
-                                                               input.focus();
-                                                       } else {
-                                                               chooseItem(item);
-                                                       }
-                                               });
-
-                                               // if(item === currentItem){
-                                               //      el.classList.add("active");
-                                               // }
-
-                                               if (currentItems.indexOf(item) > -1) {
-                                                       el.classList.add("active");
-                                               }
-                                       }
-
-                                       if (item.elementAttributes && _typeof(item.elementAttributes) == "object") {
-                                               for (var key in item.elementAttributes) {
-                                                       if (key.charAt(0) == "+") {
-                                                               key = key.slice(1);
-                                                               el.setAttribute(key, input.getAttribute(key) + item.elementAttributes["+" + key]);
-                                                       } else {
-                                                               el.setAttribute(key, item.elementAttributes[key]);
-                                                       }
-                                               }
-                                       }
-                                       el.addEventListener("mousedown", function () {
-                                               blurable = false;
-
-                                               setTimeout(function () {
-                                                       blurable = true;
-                                               }, 10);
-                                       });
-
-                                       item.element = el;
-                               }
-
-                               listEl.appendChild(el);
-                       });
-               }
-
-               function setCurrentItem(item, active) {
-
-                       if (!multiselect && currentItem && currentItem.element) {
-                               currentItem.element.classList.remove("active");
-                       }
-
-                       if (currentItem && currentItem.element) {
-                               currentItem.element.classList.remove("focused");
-                       }
-
-                       currentItem = item;
-
-                       if (item.element) {
-                               item.element.classList.add("focused");
-                               if (active) {
-                                       item.element.classList.add("active");
-                               }
-                       }
-               }
-
-               // function chooseItem(){
-               //      hideList();
-
-               //      if(initialValue !== currentItem.value){
-               //              initialValue = currentItem.value;
-               //              success(currentItem.value);
-               //      }else{
-               //              cancel();
-               //      }
-               // }
-
-               function setItem(item) {
-                       var index = currentItems.indexOf(item);
-
-                       if (index == -1) {
-                               currentItems.push(item);
-                               setCurrentItem(item, true);
-                       }
-
-                       fillInput();
-               }
-
-               function unsetItem(index) {
-                       var item = currentItems[index];
-
-                       if (index > -1) {
-                               currentItems.splice(index, 1);
-                               if (item.element) {
-                                       item.element.classList.remove("active");
-                               }
-                       }
-               }
-
-               function toggleItem(item) {
-                       if (!item) {
-                               item = currentItem;
-                       }
-
-                       var index = currentItems.indexOf(item);
-
-                       if (index > -1) {
-                               unsetItem(index);
-                       } else {
-                               if (multiselect !== true && currentItems.length >= multiselect) {
-                                       unsetItem(0);
-                               }
-
-                               setItem(item);
-                       }
-
-                       fillInput();
-               }
-
-               function chooseItem(item) {
-                       hideList();
-
-                       if (!item) {
-                               item = currentItem;
-                       }
-
-                       if (item) {
-                               success(item.value);
-                       }
-               }
-
-               function chooseItems() {
-                       hideList();
-
-                       var output = [];
-
-                       currentItems.forEach(function (item) {
-                               output.push(item.value);
-                       });
-
-                       success(output);
-               }
-
-               function fillInput() {
-                       var output = [];
-
-                       currentItems.forEach(function (item) {
-                               output.push(item.label);
-                       });
-
-                       input.value = output.join(", ");
-               }
-
-               function cancelItem() {
-                       hideList();
-                       cancel();
-               }
-
-               function showList() {
-                       if (!listEl.parentNode) {
-
-                               if (editorParams.values === true) {
-                                       parseItems(getUniqueColumnValues(), initialDisplayValue);
-                               } else if (typeof editorParams.values === "string") {
-                                       parseItems(getUniqueColumnValues(editorParams.values), initialDisplayValue);
-                               } else {
-                                       parseItems(editorParams.values || [], initialDisplayValue);
-                               }
-
-                               var offset = Tabulator.prototype.helpers.elOffset(cellEl);
-
-                               listEl.style.minWidth = cellEl.offsetWidth + "px";
-
-                               listEl.style.top = offset.top + cellEl.offsetHeight + "px";
-                               listEl.style.left = offset.left + "px";
-
-                               listEl.addEventListener("mousedown", function (e) {
-                                       blurable = false;
-
-                                       setTimeout(function () {
-                                               blurable = true;
-                                       }, 10);
-                               });
-
-                               document.body.appendChild(listEl);
-                       }
-               }
-
-               function hideList() {
-                       if (listEl.parentNode) {
-                               listEl.parentNode.removeChild(listEl);
-                       }
-
-                       removeScrollListener();
-               }
-
-               function removeScrollListener() {
-                       self.table.rowManager.element.removeEventListener("scroll", cancelItem);
-               }
-
-               //style input
-               input.setAttribute("type", "text");
-
-               input.style.padding = "4px";
-               input.style.width = "100%";
-               input.style.boxSizing = "border-box";
-               input.style.cursor = "default";
-               input.readOnly = this.currentCell != false;
-
-               if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
-                       for (var key in editorParams.elementAttributes) {
-                               if (key.charAt(0) == "+") {
-                                       key = key.slice(1);
-                                       input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
-                               } else {
-                                       input.setAttribute(key, editorParams.elementAttributes[key]);
-                               }
-                       }
-               }
-
-               input.value = typeof initialValue !== "undefined" || initialValue === null ? initialValue : "";
-
-               // if(editorParams.values === true){
-               //      parseItems(getUniqueColumnValues(), initialValue);
-               // }else if(typeof editorParams.values === "string"){
-               //      parseItems(getUniqueColumnValues(editorParams.values), initialValue);
-               // }else{
-               //      parseItems(editorParams.values || [], initialValue);
-               // }
-
-               //allow key based navigation
-               input.addEventListener("keydown", function (e) {
-                       var index;
-
-                       switch (e.keyCode) {
-                               case 38:
-                                       //up arrow
-                                       index = dataItems.indexOf(currentItem);
-
-                                       if (vertNav == "editor" || vertNav == "hybrid" && index) {
-                                               e.stopImmediatePropagation();
-                                               e.stopPropagation();
-                                               e.preventDefault();
-
-                                               if (index > 0) {
-                                                       setCurrentItem(dataItems[index - 1], !multiselect);
-                                               }
-                                       }
-                                       break;
-
-                               case 40:
-                                       //down arrow
-                                       index = dataItems.indexOf(currentItem);
-
-                                       if (vertNav == "editor" || vertNav == "hybrid" && index < dataItems.length - 1) {
-                                               e.stopImmediatePropagation();
-                                               e.stopPropagation();
-                                               e.preventDefault();
-
-                                               if (index < dataItems.length - 1) {
-                                                       if (index == -1) {
-                                                               setCurrentItem(dataItems[0], !multiselect);
-                                                       } else {
-                                                               setCurrentItem(dataItems[index + 1], !multiselect);
-                                                       }
-                                               }
-                                       }
-                                       break;
-
-                               case 37: //left arrow
-                               case 39:
-                                       //right arrow
-                                       e.stopImmediatePropagation();
-                                       e.stopPropagation();
-                                       e.preventDefault();
-                                       break;
-
-                               case 13:
-                                       //enter
-                                       // chooseItem();
-
-                                       if (multiselect) {
-                                               toggleItem();
-                                       } else {
-                                               chooseItem();
-                                       }
-
-                                       break;
-
-                               case 27:
-                                       //escape
-                                       cancelItem();
-                                       break;
-                       }
-               });
-
-               input.addEventListener("blur", function (e) {
-                       if (blurable) {
-                               if (multiselect) {
-                                       chooseItems();
-                               } else {
-                                       cancelItem();
-                               }
-                       }
-               });
-
-               input.addEventListener("focus", function (e) {
-                       showList();
-               });
-
-               //style list element
-               listEl = document.createElement("div");
-               listEl.classList.add("tabulator-edit-select-list");
-
-               onRendered(function () {
-                       input.style.height = "100%";
-                       input.focus({ preventScroll: true });
-               });
-
-               return input;
-       },
-
-       //autocomplete
-       autocomplete: function autocomplete(cell, onRendered, success, cancel, editorParams) {
-               var self = this,
-                   cellEl = cell.getElement(),
-                   initialValue = cell.getValue(),
-                   vertNav = editorParams.verticalNavigation || "editor",
-                   initialDisplayValue = typeof initialValue !== "undefined" || initialValue === null ? initialValue : typeof editorParams.defaultValue !== "undefined" ? editorParams.defaultValue : "",
-                   input = document.createElement("input"),
-                   listEl = document.createElement("div"),
-                   allItems = [],
-                   displayItems = [],
-                   values = [],
-                   currentItem = false,
-                   blurable = true,
-                   uniqueColumnValues = false;
-
-               this.table.rowManager.element.addEventListener("scroll", cancelItem);
-
-               //style input
-               input.setAttribute("type", "search");
-
-               input.style.padding = "4px";
-               input.style.width = "100%";
-               input.style.boxSizing = "border-box";
-
-               if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
-                       for (var key in editorParams.elementAttributes) {
-                               if (key.charAt(0) == "+") {
-                                       key = key.slice(1);
-                                       input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
-                               } else {
-                                       input.setAttribute(key, editorParams.elementAttributes[key]);
-                               }
-                       }
-               }
-
-               //style list element
-               listEl.classList.add("tabulator-edit-select-list");
-
-               listEl.addEventListener("mousedown", function (e) {
-                       blurable = false;
-
-                       setTimeout(function () {
-                               blurable = true;
-                       }, 10);
-               });
-
-               function genUniqueColumnValues() {
-                       if (editorParams.values === true) {
-                               uniqueColumnValues = getUniqueColumnValues();
-                       } else if (typeof editorParams.values === "string") {
-                               uniqueColumnValues = getUniqueColumnValues(editorParams.values);
-                       }
-               }
-
-               function getUniqueColumnValues(field) {
-                       var output = {},
-                           data = self.table.getData(),
-                           column;
-
-                       if (field) {
-                               column = self.table.columnManager.getColumnByField(field);
-                       } else {
-                               column = cell.getColumn()._getSelf();
-                       }
-
-                       if (column) {
-                               data.forEach(function (row) {
-                                       var val = column.getFieldValue(row);
-
-                                       if (val !== null && typeof val !== "undefined" && val !== "") {
-                                               output[val] = true;
-                                       }
-                               });
-
-                               if (editorParams.sortValuesList) {
-                                       if (editorParams.sortValuesList == "asc") {
-                                               output = Object.keys(output).sort();
-                                       } else {
-                                               output = Object.keys(output).sort().reverse();
-                                       }
-                               } else {
-                                       output = Object.keys(output);
-                               }
-                       } else {
-                               console.warn("unable to find matching column to create autocomplete lookup list:", field);
-                       }
-
-                       return output;
-               }
-
-               function filterList(term, intialLoad) {
-                       var matches = [],
-                           values,
-                           items,
-                           searchEl;
-
-                       //lookup base values list
-                       if (uniqueColumnValues) {
-                               values = uniqueColumnValues;
-                       } else {
-                               values = editorParams.values || [];
-                       }
-
-                       if (editorParams.searchFunc) {
-                               matches = editorParams.searchFunc(term, values);
-
-                               if (matches instanceof Promise) {
-
-                                       addNotice(typeof editorParams.searchingPlaceholder !== "undefined" ? editorParams.searchingPlaceholder : "Searching...");
-
-                                       matches.then(function (result) {
-                                               fillListIfNotEmpty(parseItems(result), intialLoad);
-                                       }).catch(function (err) {
-                                               console.err("error in autocomplete search promise:", err);
-                                       });
-                               } else {
-                                       fillListIfNotEmpty(parseItems(matches), intialLoad);
-                               }
-                       } else {
-                               items = parseItems(values);
-
-                               if (term === "") {
-                                       if (editorParams.showListOnEmpty) {
-                                               matches = items;
-                                       }
-                               } else {
-                                       items.forEach(function (item) {
-                                               if (item.value !== null || typeof item.value !== "undefined") {
-                                                       if (String(item.value).toLowerCase().indexOf(String(term).toLowerCase()) > -1 || String(item.title).toLowerCase().indexOf(String(term).toLowerCase()) > -1) {
-                                                               matches.push(item);
-                                                       }
-                                               }
-                                       });
-                               }
-
-                               fillListIfNotEmpty(matches, intialLoad);
-                       }
-               }
-
-               function addNotice(notice) {
-                       var searchEl = document.createElement("div");
-
-                       clearList();
-
-                       if (notice !== false) {
-                               searchEl.classList.add("tabulator-edit-select-list-notice");
-                               searchEl.tabIndex = 0;
-
-                               if (notice instanceof Node) {
-                                       searchEl.appendChild(notice);
-                               } else {
-                                       searchEl.innerHTML = notice;
-                               }
-
-                               listEl.appendChild(searchEl);
-                       }
-               }
-
-               function parseItems(inputValues) {
-                       var itemList = [];
-
-                       if (Array.isArray(inputValues)) {
-                               inputValues.forEach(function (value) {
-
-                                       var item = {};
-
-                                       if ((typeof value === "undefined" ? "undefined" : _typeof(value)) === "object") {
-                                               item.title = editorParams.listItemFormatter ? editorParams.listItemFormatter(value.value, value.label) : value.label;
-                                               item.value = value.value;
-                                       } else {
-                                               item.title = editorParams.listItemFormatter ? editorParams.listItemFormatter(value, value) : value;
-                                               item.value = value;
-                                       }
-
-                                       itemList.push(item);
-                               });
-                       } else {
-                               for (var key in inputValues) {
-                                       var item = {
-                                               title: editorParams.listItemFormatter ? editorParams.listItemFormatter(key, inputValues[key]) : inputValues[key],
-                                               value: key
-                                       };
-
-                                       itemList.push(item);
-                               }
-                       }
-
-                       return itemList;
-               }
-
-               function clearList() {
-                       while (listEl.firstChild) {
-                               listEl.removeChild(listEl.firstChild);
-                       }
-               }
-
-               function fillListIfNotEmpty(items, intialLoad) {
-                       if (items.length) {
-                               fillList(items, intialLoad);
-                       } else {
-                               if (editorParams.emptyPlaceholder) {
-                                       addNotice(editorParams.emptyPlaceholder);
-                               }
-                       }
-               }
-
-               function fillList(items, intialLoad) {
-                       var current = false;
-
-                       clearList();
-
-                       displayItems = items;
-
-                       displayItems.forEach(function (item) {
-                               var el = item.element;
-
-                               if (!el) {
-                                       el = document.createElement("div");
-                                       el.classList.add("tabulator-edit-select-list-item");
-                                       el.tabIndex = 0;
-                                       el.innerHTML = item.title;
-
-                                       el.addEventListener("click", function (e) {
-                                               setCurrentItem(item);
-                                               chooseItem();
-                                       });
-
-                                       el.addEventListener("mousedown", function (e) {
-                                               blurable = false;
-
-                                               setTimeout(function () {
-                                                       blurable = true;
-                                               }, 10);
-                                       });
-
-                                       item.element = el;
-
-                                       if (intialLoad && item.value == initialValue) {
-                                               input.value = item.title;
-                                               item.element.classList.add("active");
-                                               current = true;
-                                       }
-
-                                       if (item === currentItem) {
-                                               item.element.classList.add("active");
-                                               current = true;
-                                       }
-                               }
-
-                               listEl.appendChild(el);
-                       });
-
-                       if (!current) {
-                               setCurrentItem(false);
-                       }
-               }
-
-               function chooseItem() {
-                       hideList();
-
-                       if (currentItem) {
-                               if (initialValue !== currentItem.value) {
-                                       initialValue = currentItem.value;
-                                       input.value = currentItem.title;
-                                       success(currentItem.value);
-                               } else {
-                                       cancel();
-                               }
-                       } else {
-                               if (editorParams.freetext) {
-                                       initialValue = input.value;
-                                       success(input.value);
-                               } else {
-                                       if (editorParams.allowEmpty && input.value === "") {
-                                               initialValue = input.value;
-                                               success(input.value);
-                                       } else {
-                                               cancel();
-                                       }
-                               }
-                       }
-               }
-
-               function showList() {
-                       if (!listEl.parentNode) {
-                               while (listEl.firstChild) {
-                                       listEl.removeChild(listEl.firstChild);
-                               }var offset = Tabulator.prototype.helpers.elOffset(cellEl);
-
-                               listEl.style.minWidth = cellEl.offsetWidth + "px";
-
-                               listEl.style.top = offset.top + cellEl.offsetHeight + "px";
-                               listEl.style.left = offset.left + "px";
-                               document.body.appendChild(listEl);
-                       }
-               }
-
-               function setCurrentItem(item, showInputValue) {
-                       if (currentItem && currentItem.element) {
-                               currentItem.element.classList.remove("active");
-                       }
-
-                       currentItem = item;
-
-                       if (item && item.element) {
-                               item.element.classList.add("active");
-                       }
-               }
-
-               function hideList() {
-                       if (listEl.parentNode) {
-                               listEl.parentNode.removeChild(listEl);
-                       }
-
-                       removeScrollListener();
-               }
-
-               function cancelItem() {
-                       hideList();
-                       cancel();
-               }
-
-               function removeScrollListener() {
-                       self.table.rowManager.element.removeEventListener("scroll", cancelItem);
-               }
-
-               //allow key based navigation
-               input.addEventListener("keydown", function (e) {
-                       var index;
-
-                       switch (e.keyCode) {
-                               case 38:
-                                       //up arrow
-                                       index = displayItems.indexOf(currentItem);
-
-                                       if (vertNav == "editor" || vertNav == "hybrid" && index) {
-                                               e.stopImmediatePropagation();
-                                               e.stopPropagation();
-                                               e.preventDefault();
-
-                                               if (index > 0) {
-                                                       setCurrentItem(displayItems[index - 1]);
-                                               } else {
-                                                       setCurrentItem(false);
-                                               }
-                                       }
-                                       break;
-
-                               case 40:
-                                       //down arrow
-
-                                       index = displayItems.indexOf(currentItem);
-
-                                       if (vertNav == "editor" || vertNav == "hybrid" && index < displayItems.length - 1) {
-
-                                               e.stopImmediatePropagation();
-                                               e.stopPropagation();
-                                               e.preventDefault();
-
-                                               if (index < displayItems.length - 1) {
-                                                       if (index == -1) {
-                                                               setCurrentItem(displayItems[0]);
-                                                       } else {
-                                                               setCurrentItem(displayItems[index + 1]);
-                                                       }
-                                               }
-                                       }
-                                       break;
-
-                               case 37: //left arrow
-                               case 39:
-                                       //right arrow
-                                       e.stopImmediatePropagation();
-                                       e.stopPropagation();
-                                       // e.preventDefault();
-                                       break;
-
-                               case 13:
-                                       //enter
-                                       chooseItem();
-                                       break;
-
-                               case 27:
-                                       //escape
-                                       cancelItem();
-                                       break;
-
-                               case 36: //home
-                               case 35:
-                                       //end
-                                       //prevent table navigation while using input element
-                                       e.stopImmediatePropagation();
-                                       break;
-                       }
-               });
-
-               input.addEventListener("keyup", function (e) {
-
-                       switch (e.keyCode) {
-                               case 38: //up arrow
-                               case 37: //left arrow
-                               case 39: //up arrow
-                               case 40: //right arrow
-                               case 13: //enter
-                               case 27:
-                                       //escape
-                                       break;
-
-                               default:
-                                       filterList(input.value);
-                       }
-               });
-
-               input.addEventListener("search", function (e) {
-                       filterList(input.value);
-               });
-
-               input.addEventListener("blur", function (e) {
-                       if (blurable) {
-                               chooseItem();
-                       }
-               });
-
-               input.addEventListener("focus", function (e) {
-                       var value = initialDisplayValue;
-                       genUniqueColumnValues();
-                       showList();
-                       input.value = value;
-                       filterList(value, true);
-               });
-
-               onRendered(function () {
-                       input.style.height = "100%";
-                       input.focus({ preventScroll: true });
-               });
-
-               if (editorParams.mask) {
-                       this.table.modules.edit.maskInput(input, editorParams);
-               }
-
-               return input;
-       },
-
-       //star rating
-       star: function star(cell, onRendered, success, cancel, editorParams) {
-               var self = this,
-                   element = cell.getElement(),
-                   value = cell.getValue(),
-                   maxStars = element.getElementsByTagName("svg").length || 5,
-                   size = element.getElementsByTagName("svg")[0] ? element.getElementsByTagName("svg")[0].getAttribute("width") : 14,
-                   stars = [],
-                   starsHolder = document.createElement("div"),
-                   star = document.createElementNS('http://www.w3.org/2000/svg', "svg");
-
-               //change star type
-               function starChange(val) {
-                       stars.forEach(function (star, i) {
-                               if (i < val) {
-                                       if (self.table.browser == "ie") {
-                                               star.setAttribute("class", "tabulator-star-active");
-                                       } else {
-                                               star.classList.replace("tabulator-star-inactive", "tabulator-star-active");
-                                       }
-
-                                       star.innerHTML = '<polygon fill="#488CE9" stroke="#014AAE" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>';
-                               } else {
-                                       if (self.table.browser == "ie") {
-                                               star.setAttribute("class", "tabulator-star-inactive");
-                                       } else {
-                                               star.classList.replace("tabulator-star-active", "tabulator-star-inactive");
-                                       }
-
-                                       star.innerHTML = '<polygon fill="#010155" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>';
-                               }
-                       });
-               }
-
-               //build stars
-               function buildStar(i) {
-
-                       var starHolder = document.createElement("span");
-                       var nextStar = star.cloneNode(true);
-
-                       stars.push(nextStar);
-
-                       starHolder.addEventListener("mouseenter", function (e) {
-                               e.stopPropagation();
-                               e.stopImmediatePropagation();
-                               starChange(i);
-                       });
-
-                       starHolder.addEventListener("mousemove", function (e) {
-                               e.stopPropagation();
-                               e.stopImmediatePropagation();
-                       });
-
-                       starHolder.addEventListener("click", function (e) {
-                               e.stopPropagation();
-                               e.stopImmediatePropagation();
-                               success(i);
-                               element.blur();
-                       });
-
-                       starHolder.appendChild(nextStar);
-                       starsHolder.appendChild(starHolder);
-               }
-
-               //handle keyboard navigation value change
-               function changeValue(val) {
-                       value = val;
-                       starChange(val);
-               }
-
-               //style cell
-               element.style.whiteSpace = "nowrap";
-               element.style.overflow = "hidden";
-               element.style.textOverflow = "ellipsis";
-
-               //style holding element
-               starsHolder.style.verticalAlign = "middle";
-               starsHolder.style.display = "inline-block";
-               starsHolder.style.padding = "4px";
-
-               //style star
-               star.setAttribute("width", size);
-               star.setAttribute("height", size);
-               star.setAttribute("viewBox", "0 0 512 512");
-               star.setAttribute("xml:space", "preserve");
-               star.style.padding = "0 1px";
-
-               if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
-                       for (var key in editorParams.elementAttributes) {
-                               if (key.charAt(0) == "+") {
-                                       key = key.slice(1);
-                                       starsHolder.setAttribute(key, starsHolder.getAttribute(key) + editorParams.elementAttributes["+" + key]);
-                               } else {
-                                       starsHolder.setAttribute(key, editorParams.elementAttributes[key]);
-                               }
-                       }
-               }
-
-               //create correct number of stars
-               for (var i = 1; i <= maxStars; i++) {
-                       buildStar(i);
-               }
-
-               //ensure value does not exceed number of stars
-               value = Math.min(parseInt(value), maxStars);
-
-               // set initial styling of stars
-               starChange(value);
-
-               starsHolder.addEventListener("mousemove", function (e) {
-                       starChange(0);
-               });
-
-               starsHolder.addEventListener("click", function (e) {
-                       success(0);
-               });
-
-               element.addEventListener("blur", function (e) {
-                       cancel();
-               });
-
-               //allow key based navigation
-               element.addEventListener("keydown", function (e) {
-                       switch (e.keyCode) {
-                               case 39:
-                                       //right arrow
-                                       changeValue(value + 1);
-                                       break;
-
-                               case 37:
-                                       //left arrow
-                                       changeValue(value - 1);
-                                       break;
-
-                               case 13:
-                                       //enter
-                                       success(value);
-                                       break;
-
-                               case 27:
-                                       //escape
-                                       cancel();
-                                       break;
-                       }
-               });
-
-               return starsHolder;
-       },
-
-       //draggable progress bar
-       progress: function progress(cell, onRendered, success, cancel, editorParams) {
-               var element = cell.getElement(),
-                   max = typeof editorParams.max === "undefined" ? element.getElementsByTagName("div")[0].getAttribute("max") || 100 : editorParams.max,
-                   min = typeof editorParams.min === "undefined" ? element.getElementsByTagName("div")[0].getAttribute("min") || 0 : editorParams.min,
-                   percent = (max - min) / 100,
-                   value = cell.getValue() || 0,
-                   handle = document.createElement("div"),
-                   bar = document.createElement("div"),
-                   mouseDrag,
-                   mouseDragWidth;
-
-               //set new value
-               function updateValue() {
-                       var calcVal = percent * Math.round(bar.offsetWidth / (element.clientWidth / 100)) + min;
-                       success(calcVal);
-                       element.setAttribute("aria-valuenow", calcVal);
-                       element.setAttribute("aria-label", value);
-               }
-
-               //style handle
-               handle.style.position = "absolute";
-               handle.style.right = "0";
-               handle.style.top = "0";
-               handle.style.bottom = "0";
-               handle.style.width = "5px";
-               handle.classList.add("tabulator-progress-handle");
-
-               //style bar
-               bar.style.display = "inline-block";
-               bar.style.position = "relative";
-               // bar.style.top = "8px";
-               // bar.style.bottom = "8px";
-               // bar.style.left = "4px";
-               // bar.style.marginRight = "4px";
-               bar.style.height = "100%";
-               bar.style.backgroundColor = "#488CE9";
-               bar.style.maxWidth = "100%";
-               bar.style.minWidth = "0%";
-
-               if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
-                       for (var key in editorParams.elementAttributes) {
-                               if (key.charAt(0) == "+") {
-                                       key = key.slice(1);
-                                       bar.setAttribute(key, bar.getAttribute(key) + editorParams.elementAttributes["+" + key]);
-                               } else {
-                                       bar.setAttribute(key, editorParams.elementAttributes[key]);
-                               }
-                       }
-               }
-
-               //style cell
-               element.style.padding = "4px 4px";
-
-               //make sure value is in range
-               value = Math.min(parseFloat(value), max);
-               value = Math.max(parseFloat(value), min);
-
-               //workout percentage
-               value = Math.round((value - min) / percent);
-               // bar.style.right = value + "%";
-               bar.style.width = value + "%";
-
-               element.setAttribute("aria-valuemin", min);
-               element.setAttribute("aria-valuemax", max);
-
-               bar.appendChild(handle);
-
-               handle.addEventListener("mousedown", function (e) {
-                       mouseDrag = e.screenX;
-                       mouseDragWidth = bar.offsetWidth;
-               });
-
-               handle.addEventListener("mouseover", function () {
-                       handle.style.cursor = "ew-resize";
-               });
-
-               element.addEventListener("mousemove", function (e) {
-                       if (mouseDrag) {
-                               bar.style.width = mouseDragWidth + e.screenX - mouseDrag + "px";
-                       }
-               });
-
-               element.addEventListener("mouseup", function (e) {
-                       if (mouseDrag) {
-                               e.stopPropagation();
-                               e.stopImmediatePropagation();
-
-                               mouseDrag = false;
-                               mouseDragWidth = false;
-
-                               updateValue();
-                       }
-               });
-
-               //allow key based navigation
-               element.addEventListener("keydown", function (e) {
-                       switch (e.keyCode) {
-                               case 39:
-                                       //right arrow
-                                       e.preventDefault();
-                                       bar.style.width = bar.clientWidth + element.clientWidth / 100 + "px";
-                                       break;
-
-                               case 37:
-                                       //left arrow
-                                       e.preventDefault();
-                                       bar.style.width = bar.clientWidth - element.clientWidth / 100 + "px";
-                                       break;
-
-                               case 9: //tab
-                               case 13:
-                                       //enter
-                                       updateValue();
-                                       break;
-
-                               case 27:
-                                       //escape
-                                       cancel();
-                                       break;
-
-                       }
-               });
-
-               element.addEventListener("blur", function () {
-                       cancel();
-               });
-
-               return bar;
-       },
-
-       //checkbox
-       tickCross: function tickCross(cell, onRendered, success, cancel, editorParams) {
-               var value = cell.getValue(),
-                   input = document.createElement("input"),
-                   tristate = editorParams.tristate,
-                   indetermValue = typeof editorParams.indeterminateValue === "undefined" ? null : editorParams.indeterminateValue,
-                   indetermState = false;
-
-               input.setAttribute("type", "checkbox");
-               input.style.marginTop = "5px";
-               input.style.boxSizing = "border-box";
-
-               if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
-                       for (var key in editorParams.elementAttributes) {
-                               if (key.charAt(0) == "+") {
-                                       key = key.slice(1);
-                                       input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
-                               } else {
-                                       input.setAttribute(key, editorParams.elementAttributes[key]);
-                               }
-                       }
-               }
-
-               input.value = value;
-
-               if (tristate && (typeof value === "undefined" || value === indetermValue || value === "")) {
-                       indetermState = true;
-                       input.indeterminate = true;
-               }
-
-               if (this.table.browser != "firefox") {
-                       //prevent blur issue on mac firefox
-                       onRendered(function () {
-                               input.focus({ preventScroll: true });
-                       });
-               }
-
-               input.checked = value === true || value === "true" || value === "True" || value === 1;
-
-               function setValue(blur) {
-                       if (tristate) {
-                               if (!blur) {
-                                       if (input.checked && !indetermState) {
-                                               input.checked = false;
-                                               input.indeterminate = true;
-                                               indetermState = true;
-                                               return indetermValue;
-                                       } else {
-                                               indetermState = false;
-                                               return input.checked;
-                                       }
-                               } else {
-                                       if (indetermState) {
-                                               return indetermValue;
-                                       } else {
-                                               return input.checked;
-                                       }
-                               }
-                       } else {
-                               return input.checked;
-                       }
-               }
-
-               //submit new value on blur
-               input.addEventListener("change", function (e) {
-                       success(setValue());
-               });
-
-               input.addEventListener("blur", function (e) {
-                       success(setValue(true));
-               });
-
-               //submit new value on enter
-               input.addEventListener("keydown", function (e) {
-                       if (e.keyCode == 13) {
-                               success(setValue());
-                       }
-                       if (e.keyCode == 27) {
-                               cancel();
-                       }
-               });
-
-               return input;
-       }
-};
-
-Tabulator.prototype.registerModule("edit", Edit);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/edit.min.js b/app/static/vendors/tabulator/js/modules/edit.min.js
deleted file mode 100644 (file)
index 8e256be..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Edit=function(e){this.table=e,this.currentCell=!1,this.mouseClick=!1,this.recursionBlock=!1,this.invalidEdit=!1,this.editedCells=[]};Edit.prototype.initializeColumn=function(e){var t=this,i={editor:!1,blocked:!1,check:e.definition.editable,params:e.definition.editorParams||{}};switch(_typeof(e.definition.editor)){case"string":"tick"===e.definition.editor&&(e.definition.editor="tickCross",console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor")),t.editors[e.definition.editor]?i.editor=t.editors[e.definition.editor]:console.warn("Editor Error - No such editor found: ",e.definition.editor);break;case"function":i.editor=e.definition.editor;break;case"boolean":!0===e.definition.editor&&("function"!=typeof e.definition.formatter?("tick"===e.definition.formatter&&(e.definition.formatter="tickCross",console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor")),t.editors[e.definition.formatter]?i.editor=t.editors[e.definition.formatter]:i.editor=t.editors.input):console.warn("Editor Error - Cannot auto lookup editor for a custom formatter: ",e.definition.formatter))}i.editor&&(e.modules.edit=i)},Edit.prototype.getCurrentCell=function(){return!!this.currentCell&&this.currentCell.getComponent()},Edit.prototype.clearEditor=function(e){var t,i=this.currentCell;if(this.invalidEdit=!1,i){for(this.currentCell=!1,t=i.getElement(),e?i.validate():t.classList.remove("tabulator-validation-fail"),t.classList.remove("tabulator-editing");t.firstChild;)t.removeChild(t.firstChild);i.row.getElement().classList.remove("tabulator-row-editing")}},Edit.prototype.cancelEdit=function(){if(this.currentCell){var e=this.currentCell,t=this.currentCell.getComponent();this.clearEditor(!0),e.setValueActual(e.getValue()),e.cellRendered(),e.column.cellEvents.cellEditCancelled&&e.column.cellEvents.cellEditCancelled.call(this.table,t),this.table.options.cellEditCancelled.call(this.table,t)}},Edit.prototype.bindEditor=function(e){var t=this,i=e.getElement();i.setAttribute("tabindex",0),i.addEventListener("click",function(e){i.classList.contains("tabulator-editing")||i.focus({preventScroll:!0})}),i.addEventListener("mousedown",function(e){t.mouseClick=!0}),i.addEventListener("focus",function(i){t.recursionBlock||t.edit(e,i,!1)})},Edit.prototype.focusCellNoEvent=function(e,t){this.recursionBlock=!0,t&&"ie"===this.table.browser||e.getElement().focus({preventScroll:!0}),this.recursionBlock=!1},Edit.prototype.editCell=function(e,t){this.focusCellNoEvent(e),this.edit(e,!1,t)},Edit.prototype.focusScrollAdjust=function(e){if("virtual"==this.table.rowManager.getRenderMode()){var t=this.table.rowManager.element.scrollTop,i=this.table.rowManager.element.clientHeight+this.table.rowManager.element.scrollTop,n=e.row.getElement();n.offsetTop;n.offsetTop<t?this.table.rowManager.element.scrollTop-=t-n.offsetTop:n.offsetTop+n.offsetHeight>i&&(this.table.rowManager.element.scrollTop+=n.offsetTop+n.offsetHeight-i)}},Edit.prototype.edit=function(e,t,i){function n(t){if(u.currentCell===e){var i=!0;return e.column.modules.validate&&u.table.modExists("validate")&&"manual"!=u.table.options.validationMode&&(i=u.table.modules.validate.validate(e.column.modules.validate,e,t)),!0===i||"highlight"===u.table.options.validationMode?(u.clearEditor(),e.setValue(t,!0),e.modules.edit||(e.modules.edit={}),e.modules.edit.edited=!0,-1==u.editedCells.indexOf(e)&&u.editedCells.push(e),u.table.options.dataTree&&u.table.modExists("dataTree")&&u.table.modules.dataTree.checkForRestyle(e),!0===i||(m.classList.add("tabulator-validation-fail"),!1)):(u.invalidEdit=!0,m.classList.add("tabulator-validation-fail"),u.focusCellNoEvent(e,!0),c(),u.table.options.validationFailed.call(u.table,e.getComponent(),t,i),!1)}}function o(){u.currentCell===e&&(u.cancelEdit(),u.table.options.dataTree&&u.table.modExists("dataTree")&&u.table.modules.dataTree.checkForRestyle(e))}function a(e){c=e}var r,l,s,u=this,d=!0,c=function(){},m=e.getElement();if(this.currentCell)return void(this.invalidEdit||this.cancelEdit());if(e.column.modules.edit.blocked)return this.mouseClick=!1,m.blur(),!1;switch(t&&t.stopPropagation(),_typeof(e.column.modules.edit.check)){case"function":d=e.column.modules.edit.check(e.getComponent());break;case"boolean":d=e.column.modules.edit.check}if(d||i){if(u.cancelEdit(),u.currentCell=e,this.focusScrollAdjust(e),l=e.getComponent(),this.mouseClick&&(this.mouseClick=!1,e.column.cellEvents.cellClick&&e.column.cellEvents.cellClick.call(this.table,t,l)),e.column.cellEvents.cellEditing&&e.column.cellEvents.cellEditing.call(this.table,l),u.table.options.cellEditing.call(this.table,l),s="function"==typeof e.column.modules.edit.params?e.column.modules.edit.params(l):e.column.modules.edit.params,!1===(r=e.column.modules.edit.editor.call(u,l,a,n,o,s)))return m.blur(),!1;if(!(r instanceof Node))return console.warn("Edit Error - Editor should return an instance of Node, the editor returned:",r),m.blur(),!1;for(m.classList.add("tabulator-editing"),e.row.getElement().classList.add("tabulator-row-editing");m.firstChild;)m.removeChild(m.firstChild);m.appendChild(r),c();for(var f=m.children,p=0;p<f.length;p++)f[p].addEventListener("click",function(e){e.stopPropagation()});return!0}return this.mouseClick=!1,m.blur(),!1},Edit.prototype.maskInput=function(e,t){function i(t){var l=n[t];void 0!==l&&l!==r&&l!==o&&l!==a&&(e.value=e.value+""+l,i(t+1))}var n=t.mask,o=void 0!==t.maskLetterChar?t.maskLetterChar:"A",a=void 0!==t.maskNumberChar?t.maskNumberChar:"9",r=void 0!==t.maskWildcardChar?t.maskWildcardChar:"*",l=!1;e.addEventListener("keydown",function(t){var i=e.value.length,s=t.key;if(t.keyCode>46){if(i>=n.length)return t.preventDefault(),t.stopPropagation(),l=!1,!1;switch(n[i]){case o:if(s.toUpperCase()==s.toLowerCase())return t.preventDefault(),t.stopPropagation(),l=!1,!1;break;case a:if(isNaN(s))return t.preventDefault(),t.stopPropagation(),l=!1,!1;break;case r:break;default:if(s!==n[i])return t.preventDefault(),t.stopPropagation(),l=!1,!1}l=!0}}),e.addEventListener("keyup",function(n){n.keyCode>46&&t.maskAutoFill&&i(e.value.length)}),e.placeholder||(e.placeholder=n),t.maskAutoFill&&i(e.value.length)},Edit.prototype.getEditedCells=function(){var e=[];return this.editedCells.forEach(function(t){e.push(t.getComponent())}),e},Edit.prototype.clearEdited=function(e){var t;e.modules.edit&&e.modules.edit.edited&&(e.modules.validate.invalid=!1,(t=this.editedCells.indexOf(e))>-1&&this.editedCells.splice(t,1))},Edit.prototype.editors={input:function(e,t,i,n,o){function a(e){(null===r||void 0===r)&&""!==l.value||l.value!==r?i(l.value)&&(r=l.value):n()}var r=e.getValue(),l=document.createElement("input");if(l.setAttribute("type",o.search?"search":"text"),l.style.padding="4px",l.style.width="100%",l.style.boxSizing="border-box",o.elementAttributes&&"object"==_typeof(o.elementAttributes))for(var s in o.elementAttributes)"+"==s.charAt(0)?(s=s.slice(1),l.setAttribute(s,l.getAttribute(s)+o.elementAttributes["+"+s])):l.setAttribute(s,o.elementAttributes[s]);return l.value=void 0!==r?r:"",t(function(){l.focus({preventScroll:!0}),l.style.height="100%"}),l.addEventListener("change",a),l.addEventListener("blur",a),l.addEventListener("keydown",function(e){switch(e.keyCode){case 13:a(e);break;case 27:n()}}),o.mask&&this.table.modules.edit.maskInput(l,o),l},textarea:function(e,t,i,n,o){function a(t){(null===r||void 0===r)&&""!==u.value||u.value!==r?(i(u.value)&&(r=u.value),setTimeout(function(){e.getRow().normalizeHeight()},300)):n()}var r=e.getValue(),l=o.verticalNavigation||"hybrid",s=String(null!==r&&void 0!==r?r:""),u=(s.match(/(?:\r\n|\r|\n)/g),document.createElement("textarea")),d=0;if(u.style.display="block",u.style.padding="2px",u.style.height="100%",u.style.width="100%",u.style.boxSizing="border-box",u.style.whiteSpace="pre-wrap",u.style.resize="none",o.elementAttributes&&"object"==_typeof(o.elementAttributes))for(var c in o.elementAttributes)"+"==c.charAt(0)?(c=c.slice(1),u.setAttribute(c,u.getAttribute(c)+o.elementAttributes["+"+c])):u.setAttribute(c,o.elementAttributes[c]);return u.value=s,t(function(){u.focus({preventScroll:!0}),u.style.height="100%"}),u.addEventListener("change",a),u.addEventListener("blur",a),u.addEventListener("keyup",function(){u.style.height="";var t=u.scrollHeight;u.style.height=t+"px",t!=d&&(d=t,e.getRow().normalizeHeight())}),u.addEventListener("keydown",function(e){switch(e.keyCode){case 27:n();break;case 38:("editor"==l||"hybrid"==l&&u.selectionStart)&&(e.stopImmediatePropagation(),e.stopPropagation());break;case 40:("editor"==l||"hybrid"==l&&u.selectionStart!==u.value.length)&&(e.stopImmediatePropagation(),e.stopPropagation())}}),o.mask&&this.table.modules.edit.maskInput(u,o),u},number:function(e,t,i,n,o){function a(){var e=s.value;isNaN(e)||""===e||(e=Number(e)),e!==r?i(e)&&(r=e):n()}var r=e.getValue(),l=o.verticalNavigation||"editor",s=document.createElement("input");if(s.setAttribute("type","number"),void 0!==o.max&&s.setAttribute("max",o.max),void 0!==o.min&&s.setAttribute("min",o.min),void 0!==o.step&&s.setAttribute("step",o.step),s.style.padding="4px",s.style.width="100%",s.style.boxSizing="border-box",o.elementAttributes&&"object"==_typeof(o.elementAttributes))for(var u in o.elementAttributes)"+"==u.charAt(0)?(u=u.slice(1),s.setAttribute(u,s.getAttribute(u)+o.elementAttributes["+"+u])):s.setAttribute(u,o.elementAttributes[u]);s.value=r;var d=function(e){a()};return t(function(){s.removeEventListener("blur",d),s.focus({preventScroll:!0}),s.style.height="100%",s.addEventListener("blur",d)}),s.addEventListener("keydown",function(e){switch(e.keyCode){case 13:a();break;case 27:n();break;case 38:case 40:"editor"==l&&(e.stopImmediatePropagation(),e.stopPropagation())}}),o.mask&&this.table.modules.edit.maskInput(s,o),s},range:function(e,t,i,n,o){function a(){var e=l.value;isNaN(e)||""===e||(e=Number(e)),e!=r?i(e)&&(r=e):n()}var r=e.getValue(),l=document.createElement("input");if(l.setAttribute("type","range"),void 0!==o.max&&l.setAttribute("max",o.max),void 0!==o.min&&l.setAttribute("min",o.min),void 0!==o.step&&l.setAttribute("step",o.step),l.style.padding="4px",l.style.width="100%",l.style.boxSizing="border-box",o.elementAttributes&&"object"==_typeof(o.elementAttributes))for(var s in o.elementAttributes)"+"==s.charAt(0)?(s=s.slice(1),l.setAttribute(s,l.getAttribute(s)+o.elementAttributes["+"+s])):l.setAttribute(s,o.elementAttributes[s]);return l.value=r,t(function(){l.focus({preventScroll:!0}),l.style.height="100%"}),l.addEventListener("blur",function(e){a()}),l.addEventListener("keydown",function(e){switch(e.keyCode){case 13:a();break;case 27:n()}}),l},select:function(e,t,i,n,o){function a(t){var i,n={},a=y.table.getData();return i=t?y.table.columnManager.getColumnByField(t):e.getColumn()._getSelf(),i?(a.forEach(function(e){var t=i.getFieldValue(e);null!==t&&void 0!==t&&""!==t&&(n[t]=!0)}),n=o.sortValuesList?"asc"==o.sortValuesList?Object.keys(n).sort():Object.keys(n).sort().reverse():Object.keys(n)):console.warn("unable to find matching column to create select lookup list:",t),n}function r(t,i){function n(e){var e={label:e.label,value:e.value,itemParams:e.itemParams,elementAttributes:e.elementAttributes,element:!1};return i.indexOf(e.value)>-1&&u(e),o.push(e),a.push(e),e}var o=[],a=[];if("function"==typeof t&&(t=t(e)),Array.isArray(t))t.forEach(function(e){var t;"object"===(void 0===e?"undefined":_typeof(e))?e.options?(t={label:e.label,group:!0,itemParams:e.itemParams,elementAttributes:e.elementAttributes,element:!1},a.push(t),e.options.forEach(function(e){n(e)})):n(e):(t={label:e,value:e,element:!1},i.indexOf(t.value)>-1&&u(t),o.push(t),a.push(t))});else for(var r in t){var s={label:t[r],value:r,element:!1};i.indexOf(s.value)>-1&&u(s),o.push(s),a.push(s)}P=o,T=a,l()}function l(){for(;w.firstChild;)w.removeChild(w.firstChild);T.forEach(function(t){var i=t.element;if(!i){if(i=document.createElement("div"),t.label=o.listItemFormatter?o.listItemFormatter(t.value,t.label,e,i,t.itemParams):t.label,t.group?(i.classList.add("tabulator-edit-select-list-group"),i.tabIndex=0,i.innerHTML=""===t.label?"&nbsp;":t.label):(i.classList.add("tabulator-edit-select-list-item"),i.tabIndex=0,i.innerHTML=""===t.label?"&nbsp;":t.label,i.addEventListener("click",function(){x?(c(t),L.focus()):m(t)}),I.indexOf(t)>-1&&i.classList.add("active")),t.elementAttributes&&"object"==_typeof(t.elementAttributes))for(var n in t.elementAttributes)"+"==n.charAt(0)?(n=n.slice(1),i.setAttribute(n,L.getAttribute(n)+t.elementAttributes["+"+n])):i.setAttribute(n,t.elementAttributes[n]);i.addEventListener("mousedown",function(){S=!1,setTimeout(function(){S=!0},10)}),t.element=i}w.appendChild(i)})}function s(e,t){!x&&N&&N.element&&N.element.classList.remove("active"),N&&N.element&&N.element.classList.remove("focused"),N=e,e.element&&(e.element.classList.add("focused"),t&&e.element.classList.add("active"))}function u(e){-1==I.indexOf(e)&&(I.push(e),s(e,!0)),p()}function d(e){var t=I[e];e>-1&&(I.splice(e,1),t.element&&t.element.classList.remove("active"))}function c(e){e||(e=N);var t=I.indexOf(e);t>-1?d(t):(!0!==x&&I.length>=x&&d(0),u(e)),p()}function m(e){h(),e||(e=N),e&&i(e.value)}function f(){h();var e=[];I.forEach(function(t){e.push(t.value)}),i(e)}function p(){var e=[];I.forEach(function(t){e.push(t.label)}),L.value=e.join(", ")}function v(){h(),n()}function b(){if(!w.parentNode){!0===o.values?r(a(),C):"string"==typeof o.values?r(a(o.values),C):r(o.values||[],C);var e=Tabulator.prototype.helpers.elOffset(E);w.style.minWidth=E.offsetWidth+"px",w.style.top=e.top+E.offsetHeight+"px",w.style.left=e.left+"px",w.addEventListener("mousedown",function(e){S=!1,setTimeout(function(){S=!0},10)}),document.body.appendChild(w)}}function h(){w.parentNode&&w.parentNode.removeChild(w),g()}function g(){y.table.rowManager.element.removeEventListener("scroll",v)}var y=this,E=e.getElement(),A=e.getValue(),k=o.verticalNavigation||"editor",C=void 0!==A||null===A?A:void 0!==o.defaultValue?o.defaultValue:[],L=document.createElement("input"),w=document.createElement("div"),x=o.multiselect,P=[],N={},T=[],I=[],S=!0;if(this.table.rowManager.element.addEventListener("scroll",v),(Array.isArray(o)||!Array.isArray(o)&&"object"===(void 0===o?"undefined":_typeof(o))&&!o.values)&&(console.warn("DEPRECATION WARNING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object"),o={values:o}),L.setAttribute("type","text"),L.style.padding="4px",L.style.width="100%",L.style.boxSizing="border-box",L.style.cursor="default",L.readOnly=0!=this.currentCell,o.elementAttributes&&"object"==_typeof(o.elementAttributes))for(var O in o.elementAttributes)"+"==O.charAt(0)?(O=O.slice(1),L.setAttribute(O,L.getAttribute(O)+o.elementAttributes["+"+O])):L.setAttribute(O,o.elementAttributes[O]);return L.value=void 0!==A||null===A?A:"",L.addEventListener("keydown",function(e){var t;switch(e.keyCode){case 38:t=P.indexOf(N),("editor"==k||"hybrid"==k&&t)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t>0&&s(P[t-1],!x));break;case 40:t=P.indexOf(N),("editor"==k||"hybrid"==k&&t<P.length-1)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t<P.length-1&&(-1==t?s(P[0],!x):s(P[t+1],!x)));break;case 37:case 39:e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault();break;case 13:x?c():m();break;case 27:v()}}),L.addEventListener("blur",function(e){S&&(x?f():v())}),L.addEventListener("focus",function(e){b()}),w=document.createElement("div"),w.classList.add("tabulator-edit-select-list"),t(function(){L.style.height="100%",L.focus({preventScroll:!0})}),L},autocomplete:function(e,t,i,n,o){function a(){!0===o.values?T=r():"string"==typeof o.values&&(T=r(o.values))}function r(t){var i,n={},a=y.table.getData();return i=t?y.table.columnManager.getColumnByField(t):e.getColumn()._getSelf(),i?(a.forEach(function(e){var t=i.getFieldValue(e);null!==t&&void 0!==t&&""!==t&&(n[t]=!0)}),n=o.sortValuesList?"asc"==o.sortValuesList?Object.keys(n).sort():Object.keys(n).sort().reverse():Object.keys(n)):console.warn("unable to find matching column to create autocomplete lookup list:",t),n}function l(e,t){var i,n,a=[];i=T||(o.values||[]),o.searchFunc?(a=o.searchFunc(e,i),a instanceof Promise?(s(void 0!==o.searchingPlaceholder?o.searchingPlaceholder:"Searching..."),a.then(function(e){c(u(e),t)}).catch(function(e){console.err("error in autocomplete search promise:",e)})):c(u(a),t)):(n=u(i),""===e?o.showListOnEmpty&&(a=n):n.forEach(function(t){null===t.value&&void 0===t.value||(String(t.value).toLowerCase().indexOf(String(e).toLowerCase())>-1||String(t.title).toLowerCase().indexOf(String(e).toLowerCase())>-1)&&a.push(t)}),c(a,t))}function s(e){var t=document.createElement("div");d(),!1!==e&&(t.classList.add("tabulator-edit-select-list-notice"),t.tabIndex=0,e instanceof Node?t.appendChild(e):t.innerHTML=e,w.appendChild(t))}function u(e){var t=[];if(Array.isArray(e))e.forEach(function(e){var i={};"object"===(void 0===e?"undefined":_typeof(e))?(i.title=o.listItemFormatter?o.listItemFormatter(e.value,e.label):e.label,i.value=e.value):(i.title=o.listItemFormatter?o.listItemFormatter(e,e):e,i.value=e),t.push(i)});else for(var i in e){var n={title:o.listItemFormatter?o.listItemFormatter(i,e[i]):e[i],value:i};t.push(n)}return t}function d(){for(;w.firstChild;)w.removeChild(w.firstChild)}function c(e,t){e.length?m(e,t):o.emptyPlaceholder&&s(o.emptyPlaceholder)}function m(e,t){var i=!1;d(),x=e,x.forEach(function(e){var n=e.element;n||(n=document.createElement("div"),n.classList.add("tabulator-edit-select-list-item"),n.tabIndex=0,n.innerHTML=e.title,n.addEventListener("click",function(t){v(e),f()}),n.addEventListener("mousedown",function(e){N=!1,setTimeout(function(){N=!0},10)}),e.element=n,t&&e.value==A&&(L.value=e.title,e.element.classList.add("active"),i=!0),e===P&&(e.element.classList.add("active"),i=!0)),w.appendChild(n)}),i||v(!1)}function f(){b(),P?A!==P.value?(A=P.value,L.value=P.title,i(P.value)):n():o.freetext?(A=L.value,i(L.value)):o.allowEmpty&&""===L.value?(A=L.value,i(L.value)):n()}function p(){if(!w.parentNode){for(;w.firstChild;)w.removeChild(w.firstChild);var e=Tabulator.prototype.helpers.elOffset(E);w.style.minWidth=E.offsetWidth+"px",w.style.top=e.top+E.offsetHeight+"px",w.style.left=e.left+"px",document.body.appendChild(w)}}function v(e,t){P&&P.element&&P.element.classList.remove("active"),P=e,e&&e.element&&e.element.classList.add("active")}function b(){w.parentNode&&w.parentNode.removeChild(w),g()}function h(){b(),n()}function g(){y.table.rowManager.element.removeEventListener("scroll",h)}var y=this,E=e.getElement(),A=e.getValue(),k=o.verticalNavigation||"editor",C=void 0!==A||null===A?A:void 0!==o.defaultValue?o.defaultValue:"",L=document.createElement("input"),w=document.createElement("div"),x=[],P=!1,N=!0,T=!1;if(this.table.rowManager.element.addEventListener("scroll",h),L.setAttribute("type","search"),L.style.padding="4px",L.style.width="100%",L.style.boxSizing="border-box",o.elementAttributes&&"object"==_typeof(o.elementAttributes))for(var I in o.elementAttributes)"+"==I.charAt(0)?(I=I.slice(1),L.setAttribute(I,L.getAttribute(I)+o.elementAttributes["+"+I])):L.setAttribute(I,o.elementAttributes[I]);return w.classList.add("tabulator-edit-select-list"),w.addEventListener("mousedown",function(e){N=!1,setTimeout(function(){N=!0},10)}),L.addEventListener("keydown",function(e){var t;switch(e.keyCode){case 38:t=x.indexOf(P),("editor"==k||"hybrid"==k&&t)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),v(t>0?x[t-1]:!1));break;case 40:t=x.indexOf(P),("editor"==k||"hybrid"==k&&t<x.length-1)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t<x.length-1&&v(-1==t?x[0]:x[t+1]));break;case 37:case 39:e.stopImmediatePropagation(),e.stopPropagation();break;case 13:f();break;case 27:h();break;case 36:case 35:e.stopImmediatePropagation()}}),L.addEventListener("keyup",function(e){switch(e.keyCode){case 38:case 37:case 39:case 40:case 13:case 27:break;default:l(L.value)}}),L.addEventListener("search",function(e){l(L.value)}),L.addEventListener("blur",function(e){N&&f()}),L.addEventListener("focus",function(e){var t=C;a(),p(),L.value=t,l(t,!0)}),t(function(){L.style.height="100%",L.focus({preventScroll:!0})}),o.mask&&this.table.modules.edit.maskInput(L,o),L},star:function(e,t,i,n,o){function a(e){m.forEach(function(t,i){i<e?("ie"==l.table.browser?t.setAttribute("class","tabulator-star-active"):t.classList.replace("tabulator-star-inactive","tabulator-star-active"),t.innerHTML='<polygon fill="#488CE9" stroke="#014AAE" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>'):("ie"==l.table.browser?t.setAttribute("class","tabulator-star-inactive"):t.classList.replace("tabulator-star-active","tabulator-star-inactive"),t.innerHTML='<polygon fill="#010155" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>')})}function r(e){u=e,a(e)}var l=this,s=e.getElement(),u=e.getValue(),d=s.getElementsByTagName("svg").length||5,c=s.getElementsByTagName("svg")[0]?s.getElementsByTagName("svg")[0].getAttribute("width"):14,m=[],f=document.createElement("div"),p=document.createElementNS("http://www.w3.org/2000/svg","svg");if(s.style.whiteSpace="nowrap",s.style.overflow="hidden",s.style.textOverflow="ellipsis",f.style.verticalAlign="middle",f.style.display="inline-block",f.style.padding="4px",p.setAttribute("width",c),p.setAttribute("height",c),p.setAttribute("viewBox","0 0 512 512"),p.setAttribute("xml:space","preserve"),p.style.padding="0 1px",o.elementAttributes&&"object"==_typeof(o.elementAttributes))for(var v in o.elementAttributes)"+"==v.charAt(0)?(v=v.slice(1),f.setAttribute(v,f.getAttribute(v)+o.elementAttributes["+"+v])):f.setAttribute(v,o.elementAttributes[v]);for(var b=1;b<=d;b++)!function(e){var t=document.createElement("span"),n=p.cloneNode(!0);m.push(n),t.addEventListener("mouseenter",function(t){t.stopPropagation(),t.stopImmediatePropagation(),a(e)}),t.addEventListener("mousemove",function(e){e.stopPropagation(),e.stopImmediatePropagation()}),t.addEventListener("click",function(t){t.stopPropagation(),t.stopImmediatePropagation(),i(e),s.blur()}),t.appendChild(n),f.appendChild(t)}(b);return u=Math.min(parseInt(u),d),a(u),f.addEventListener("mousemove",function(e){a(0)}),f.addEventListener("click",function(e){i(0)}),s.addEventListener("blur",function(e){n()}),s.addEventListener("keydown",function(e){switch(e.keyCode){case 39:r(u+1);break;case 37:r(u-1);break;case 13:i(u);break;case 27:n()}}),f},progress:function(e,t,i,n,o){function a(){var e=c*Math.round(p.offsetWidth/(s.clientWidth/100))+d;i(e),s.setAttribute("aria-valuenow",e),s.setAttribute("aria-label",m)}var r,l,s=e.getElement(),u=void 0===o.max?s.getElementsByTagName("div")[0].getAttribute("max")||100:o.max,d=void 0===o.min?s.getElementsByTagName("div")[0].getAttribute("min")||0:o.min,c=(u-d)/100,m=e.getValue()||0,f=document.createElement("div"),p=document.createElement("div");if(f.style.position="absolute",f.style.right="0",f.style.top="0",f.style.bottom="0",f.style.width="5px",f.classList.add("tabulator-progress-handle"),p.style.display="inline-block",p.style.position="relative",p.style.height="100%",p.style.backgroundColor="#488CE9",p.style.maxWidth="100%",p.style.minWidth="0%",o.elementAttributes&&"object"==_typeof(o.elementAttributes))for(var v in o.elementAttributes)"+"==v.charAt(0)?(v=v.slice(1),p.setAttribute(v,p.getAttribute(v)+o.elementAttributes["+"+v])):p.setAttribute(v,o.elementAttributes[v]);return s.style.padding="4px 4px",m=Math.min(parseFloat(m),u),m=Math.max(parseFloat(m),d),m=Math.round((m-d)/c),p.style.width=m+"%",s.setAttribute("aria-valuemin",d),s.setAttribute("aria-valuemax",u),p.appendChild(f),f.addEventListener("mousedown",function(e){r=e.screenX,l=p.offsetWidth}),f.addEventListener("mouseover",function(){f.style.cursor="ew-resize"}),s.addEventListener("mousemove",function(e){r&&(p.style.width=l+e.screenX-r+"px")}),s.addEventListener("mouseup",function(e){r&&(e.stopPropagation(),e.stopImmediatePropagation(),r=!1,l=!1,a())}),s.addEventListener("keydown",function(e){switch(e.keyCode){case 39:e.preventDefault(),p.style.width=p.clientWidth+s.clientWidth/100+"px";break;case 37:e.preventDefault(),p.style.width=p.clientWidth-s.clientWidth/100+"px";break;case 9:case 13:a();break;case 27:n()}}),s.addEventListener("blur",function(){n()}),p},tickCross:function(e,t,i,n,o){function a(e){return s?e?d?u:l.checked:l.checked&&!d?(l.checked=!1,l.indeterminate=!0,d=!0,u):(d=!1,l.checked):l.checked}var r=e.getValue(),l=document.createElement("input"),s=o.tristate,u=void 0===o.indeterminateValue?null:o.indeterminateValue,d=!1;if(l.setAttribute("type","checkbox"),l.style.marginTop="5px",l.style.boxSizing="border-box",o.elementAttributes&&"object"==_typeof(o.elementAttributes))for(var c in o.elementAttributes)"+"==c.charAt(0)?(c=c.slice(1),l.setAttribute(c,l.getAttribute(c)+o.elementAttributes["+"+c])):l.setAttribute(c,o.elementAttributes[c]);return l.value=r,!s||void 0!==r&&r!==u&&""!==r||(d=!0,l.indeterminate=!0),"firefox"!=this.table.browser&&t(function(){l.focus({preventScroll:!0})}),l.checked=!0===r||"true"===r||"True"===r||1===r,l.addEventListener("change",function(e){i(a())}),l.addEventListener("blur",function(e){i(a(!0))}),l.addEventListener("keydown",function(e){13==e.keyCode&&i(a()),27==e.keyCode&&n()}),l}},Tabulator.prototype.registerModule("edit",Edit);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/export.js b/app/static/vendors/tabulator/js/modules/export.js
deleted file mode 100644 (file)
index 18d3f6c..0000000
+++ /dev/null
@@ -1,616 +0,0 @@
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-
-var ExportRow = function ExportRow(type, columns, component, indent) {
-       this.type = type;
-       this.columns = columns;
-       this.component = component || false;
-       this.indent = indent || 0;
-};
-
-var ExportColumn = function ExportColumn(value, component, width, height, depth) {
-       this.value = value;
-       this.component = component || false;
-       this.width = width;
-       this.height = height;
-       this.depth = depth;
-};
-
-var Export = function Export(table) {
-       this.table = table; //hold Tabulator object
-       this.config = {};
-       this.cloneTableStyle = true;
-       this.colVisProp = "";
-};
-
-Export.prototype.generateExportList = function (config, style, range, colVisProp) {
-       this.cloneTableStyle = style;
-       this.config = config || {};
-       this.colVisProp = colVisProp;
-
-       var headers = this.config.columnHeaders !== false ? this.headersToExportRows(this.generateColumnGroupHeaders()) : [];
-       var body = this.bodyToExportRows(this.rowLookup(range));
-
-       return headers.concat(body);
-};
-
-Export.prototype.genereateTable = function (config, style, range, colVisProp) {
-       var list = this.generateExportList(config, style, range, colVisProp);
-
-       return this.genereateTableElement(list);
-};
-
-Export.prototype.rowLookup = function (range) {
-       var _this = this;
-
-       var rows = [];
-
-       if (typeof range == "function") {
-               range.call(this.table).forEach(function (row) {
-                       row = _this.table.rowManager.findRow(row);
-
-                       if (row) {
-                               rows.push(row);
-                       }
-               });
-       } else {
-               switch (range) {
-                       case true:
-                       case "visible":
-                               rows = this.table.rowManager.getVisibleRows(true);
-                               break;
-
-                       case "all":
-                               rows = this.table.rowManager.rows;
-                               break;
-
-                       case "selected":
-                               rows = this.table.modules.selectRow.selectedRows;
-                               break;
-
-                       case "active":
-                       default:
-                               rows = this.table.rowManager.getDisplayRows();
-               }
-       }
-
-       return Object.assign([], rows);
-};
-
-Export.prototype.generateColumnGroupHeaders = function () {
-       var _this2 = this;
-
-       var output = [];
-
-       var columns = this.config.columnGroups !== false ? this.table.columnManager.columns : this.table.columnManager.columnsByIndex;
-
-       columns.forEach(function (column) {
-               var colData = _this2.processColumnGroup(column);
-
-               if (colData) {
-                       output.push(colData);
-               }
-       });
-
-       return output;
-};
-
-Export.prototype.processColumnGroup = function (column) {
-       var _this3 = this;
-
-       var subGroups = column.columns,
-           maxDepth = 0,
-           title = column.definition["title" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))] || column.definition.title;
-
-       var groupData = {
-               title: title,
-               column: column,
-               depth: 1
-       };
-
-       if (subGroups.length) {
-               groupData.subGroups = [];
-               groupData.width = 0;
-
-               subGroups.forEach(function (subGroup) {
-                       var subGroupData = _this3.processColumnGroup(subGroup);
-
-                       if (subGroupData) {
-                               groupData.width += subGroupData.width;
-                               groupData.subGroups.push(subGroupData);
-
-                               if (subGroupData.depth > maxDepth) {
-                                       maxDepth = subGroupData.depth;
-                               }
-                       }
-               });
-
-               groupData.depth += maxDepth;
-
-               if (!groupData.width) {
-                       return false;
-               }
-       } else {
-               if (this.columnVisCheck(column)) {
-                       groupData.width = 1;
-               } else {
-                       return false;
-               }
-       }
-
-       return groupData;
-};
-
-Export.prototype.columnVisCheck = function (column) {
-       return column.definition[this.colVisProp] !== false && (column.visible || !column.visible && column.definition[this.colVisProp]);
-};
-
-Export.prototype.headersToExportRows = function (columns) {
-       var headers = [],
-           headerDepth = 0,
-           exportRows = [];
-
-       function parseColumnGroup(column, level) {
-
-               var depth = headerDepth - level;
-
-               if (typeof headers[level] === "undefined") {
-                       headers[level] = [];
-               }
-
-               column.height = column.subGroups ? 1 : depth - column.depth + 1;
-
-               headers[level].push(column);
-
-               if (column.height > 1) {
-                       for (var _i = 1; _i < column.height; _i++) {
-
-                               if (typeof headers[level + _i] === "undefined") {
-                                       headers[level + _i] = [];
-                               }
-
-                               headers[level + _i].push(false);
-                       }
-               }
-
-               if (column.width > 1) {
-                       for (var _i2 = 1; _i2 < column.width; _i2++) {
-                               headers[level].push(false);
-                       }
-               }
-
-               if (column.subGroups) {
-                       column.subGroups.forEach(function (subGroup) {
-                               parseColumnGroup(subGroup, level + 1);
-                       });
-               }
-       }
-
-       //calculate maximum header debth
-       columns.forEach(function (column) {
-               if (column.depth > headerDepth) {
-                       headerDepth = column.depth;
-               }
-       });
-
-       columns.forEach(function (column) {
-               parseColumnGroup(column, 0);
-       });
-
-       headers.forEach(function (header) {
-               var columns = [];
-
-               header.forEach(function (col) {
-                       if (col) {
-                               columns.push(new ExportColumn(col.title, col.column.getComponent(), col.width, col.height, col.depth));
-                       } else {
-                               columns.push(null);
-                       }
-               });
-
-               exportRows.push(new ExportRow("header", columns));
-       });
-
-       return exportRows;
-};
-
-Export.prototype.bodyToExportRows = function (rows) {
-       var _this4 = this;
-
-       var columns = [];
-       var exportRows = [];
-
-       this.table.columnManager.columnsByIndex.forEach(function (column) {
-               if (_this4.columnVisCheck(column)) {
-                       columns.push(column.getComponent());
-               }
-       });
-
-       if (this.config.columnCalcs !== false && this.table.modExists("columnCalcs")) {
-               if (this.table.modules.columnCalcs.topInitialized) {
-                       rows.unshift(this.table.modules.columnCalcs.topRow);
-               }
-
-               if (this.table.modules.columnCalcs.botInitialized) {
-                       rows.push(this.table.modules.columnCalcs.botRow);
-               }
-       }
-
-       rows = rows.filter(function (row) {
-               switch (row.type) {
-                       case "group":
-                               return _this4.config.rowGroups !== false;
-                               break;
-
-                       case "calc":
-                               return _this4.config.columnCalcs !== false;
-                               break;
-
-                       case "row":
-                               return !(_this4.table.options.dataTree && _this4.config.dataTree === false && row.modules.dataTree.parent);
-                               break;
-               }
-
-               return true;
-       });
-
-       rows.forEach(function (row, i) {
-               var rowData = row.getData(_this4.colVisProp);
-               var exportCols = [];
-               var indent = 0;
-
-               switch (row.type) {
-                       case "group":
-                               indent = row.level;
-                               exportCols.push(new ExportColumn(row.key, row.getComponent(), columns.length, 1));
-                               break;
-
-                       case "calc":
-                       case "row":
-                               columns.forEach(function (col) {
-                                       exportCols.push(new ExportColumn(col._column.getFieldValue(rowData), col, 1, 1));
-                               });
-
-                               if (_this4.table.options.dataTree && _this4.config.dataTree !== false) {
-                                       indent = row.modules.dataTree.index;
-                               }
-                               break;
-               }
-
-               exportRows.push(new ExportRow(row.type, exportCols, row.getComponent(), indent));
-       });
-
-       return exportRows;
-};
-
-Export.prototype.genereateTableElement = function (list) {
-       var _this5 = this;
-
-       var table = document.createElement("table"),
-           headerEl = document.createElement("thead"),
-           bodyEl = document.createElement("tbody"),
-           styles = this.lookupTableStyles(),
-           rowFormatter = this.table.options["rowFormatter" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))],
-           setup = {};
-
-       setup.rowFormatter = rowFormatter !== null ? rowFormatter : this.table.options.rowFormatter;
-
-       if (this.table.options.dataTree && this.config.dataTree !== false && this.table.modExists("columnCalcs")) {
-               setup.treeElementField = this.table.modules.dataTree.elementField;
-       }
-
-       //assign group header formatter
-       setup.groupHeader = this.table.options["groupHeader" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))];
-
-       if (setup.groupHeader && !Array.isArray(setup.groupHeader)) {
-               setup.groupHeader = [setup.groupHeader];
-       }
-
-       table.classList.add("tabulator-print-table");
-
-       this.mapElementStyles(this.table.columnManager.getHeadersElement(), headerEl, ["border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]);
-
-       if (list.length > 1000) {
-               console.warn("It may take a long time to render an HTML table with more than 1000 rows");
-       }
-
-       list.forEach(function (row, i) {
-               switch (row.type) {
-                       case "header":
-                               headerEl.appendChild(_this5.genereateHeaderElement(row, setup, styles));
-                               break;
-
-                       case "group":
-                               bodyEl.appendChild(_this5.genereateGroupElement(row, setup, styles));
-                               break;
-
-                       case "calc":
-                               bodyEl.appendChild(_this5.genereateCalcElement(row, setup, styles));
-                               break;
-
-                       case "row":
-                               var rowEl = _this5.genereateRowElement(row, setup, styles);
-                               _this5.mapElementStyles(i % 2 && styles.evenRow ? styles.evenRow : styles.oddRow, rowEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "background-color"]);
-                               bodyEl.appendChild(rowEl);
-                               break;
-               }
-       });
-
-       if (headerEl.innerHTML) {
-               table.appendChild(headerEl);
-       }
-
-       table.appendChild(bodyEl);
-
-       this.mapElementStyles(this.table.element, table, ["border-top", "border-left", "border-right", "border-bottom"]);
-       return table;
-};
-
-Export.prototype.lookupTableStyles = function () {
-       var styles = {};
-
-       //lookup row styles
-       if (this.cloneTableStyle && window.getComputedStyle) {
-               styles.oddRow = this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)");
-               styles.evenRow = this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)");
-               styles.calcRow = this.table.element.querySelector(".tabulator-row.tabulator-calcs");
-               styles.firstRow = this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)");
-               styles.firstGroup = this.table.element.getElementsByClassName("tabulator-group")[0];
-
-               if (styles.firstRow) {
-                       styles.styleCells = styles.firstRow.getElementsByClassName("tabulator-cell");
-                       styles.firstCell = styles.styleCells[0];
-                       styles.lastCell = styles.styleCells[styles.styleCells.length - 1];
-               }
-       }
-
-       return styles;
-};
-
-Export.prototype.genereateHeaderElement = function (row, setup, styles) {
-       var _this6 = this;
-
-       var rowEl = document.createElement("tr");
-
-       row.columns.forEach(function (column) {
-               if (column) {
-                       var cellEl = document.createElement("th");
-                       var classNames = column.component._column.definition.cssClass ? column.component._column.definition.cssClass.split(" ") : [];
-
-                       cellEl.colSpan = column.width;
-                       cellEl.rowSpan = column.height;
-
-                       cellEl.innerHTML = column.value;
-
-                       if (_this6.cloneTableStyle) {
-                               cellEl.style.boxSizing = "border-box";
-                       }
-
-                       classNames.forEach(function (className) {
-                               cellEl.classList.add(className);
-                       });
-
-                       _this6.mapElementStyles(column.component.getElement(), cellEl, ["text-align", "border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]);
-                       _this6.mapElementStyles(column.component._column.contentElement, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom"]);
-
-                       if (column.component._column.visible) {
-                               _this6.mapElementStyles(column.component.getElement(), cellEl, ["width"]);
-                       } else {
-                               if (column.component._column.definition.width) {
-                                       cellEl.style.width = column.component._column.definition.width + "px";
-                               }
-                       }
-
-                       if (column.component._column.parent) {
-                               _this6.mapElementStyles(column.component._column.parent.groupElement, cellEl, ["border-top"]);
-                       }
-
-                       rowEl.appendChild(cellEl);
-               }
-       });
-
-       return rowEl;
-};
-
-Export.prototype.genereateGroupElement = function (row, setup, styles) {
-
-       var rowEl = document.createElement("tr"),
-           cellEl = document.createElement("td"),
-           group = row.columns[0];
-
-       rowEl.classList.add("tabulator-print-table-row");
-
-       if (setup.groupHeader && setup.groupHeader[row.indent]) {
-               group.value = setup.groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);
-       } else {
-               if (setup.groupHeader === false) {
-                       group.value = group.value;
-               } else {
-                       group.value = row.component._group.generator(group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);
-               }
-       }
-
-       cellEl.colSpan = group.width;
-       cellEl.innerHTML = group.value;
-
-       rowEl.classList.add("tabulator-print-table-group");
-       rowEl.classList.add("tabulator-group-level-" + row.indent);
-
-       if (group.component.getVisibility()) {
-               rowEl.classList.add("tabulator-group-visible");
-       }
-
-       this.mapElementStyles(styles.firstGroup, rowEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "background-color"]);
-       this.mapElementStyles(styles.firstGroup, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom"]);
-
-       rowEl.appendChild(cellEl);
-
-       return rowEl;
-};
-
-Export.prototype.genereateCalcElement = function (row, setup, styles) {
-       var rowEl = this.genereateRowElement(row, setup, styles);
-
-       rowEl.classList.add("tabulator-print-table-calcs");
-       this.mapElementStyles(styles.calcRow, rowEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "background-color"]);
-
-       return rowEl;
-};
-
-Export.prototype.genereateRowElement = function (row, setup, styles) {
-       var _this7 = this;
-
-       var rowEl = document.createElement("tr");
-
-       rowEl.classList.add("tabulator-print-table-row");
-
-       row.columns.forEach(function (col) {
-
-               if (col) {
-                       var cellEl = document.createElement("td"),
-                           column = col.component._column,
-                           value = col.value;
-
-                       var cellWrapper = {
-                               modules: {},
-                               getValue: function getValue() {
-                                       return value;
-                               },
-                               getField: function getField() {
-                                       return column.definition.field;
-                               },
-                               getElement: function getElement() {
-                                       return cellEl;
-                               },
-                               getColumn: function getColumn() {
-                                       return column.getComponent();
-                               },
-                               getData: function getData() {
-                                       return rowData;
-                               },
-                               getRow: function getRow() {
-                                       return row.getComponent();
-                               },
-                               getComponent: function getComponent() {
-                                       return cellWrapper;
-                               },
-                               column: column
-                       };
-
-                       var classNames = column.definition.cssClass ? column.definition.cssClass.split(" ") : [];
-
-                       classNames.forEach(function (className) {
-                               cellEl.classList.add(className);
-                       });
-
-                       if (_this7.table.modExists("format") && _this7.config.formatCells !== false) {
-                               value = _this7.table.modules.format.formatExportValue(cellWrapper, _this7.colVisProp);
-                       } else {
-                               switch (typeof value === "undefined" ? "undefined" : _typeof(value)) {
-                                       case "object":
-                                               value = JSON.stringify(value);
-                                               break;
-
-                                       case "undefined":
-                                       case "null":
-                                               value = "";
-                                               break;
-
-                                       default:
-                                               value = value;
-                               }
-                       }
-
-                       if (value instanceof Node) {
-                               cellEl.appendChild(value);
-                       } else {
-                               cellEl.innerHTML = value;
-                       }
-
-                       if (styles.firstCell) {
-                               _this7.mapElementStyles(styles.firstCell, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom", "border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size"]);
-
-                               if (column.definition.align) {
-                                       cellEl.style.textAlign = column.definition.align;
-                               }
-                       }
-
-                       if (_this7.table.options.dataTree && _this7.config.dataTree !== false) {
-                               if (setup.treeElementField && setup.treeElementField == column.field || !setup.treeElementField && i == 0) {
-                                       if (row.component._row.modules.dataTree.controlEl) {
-                                               cellEl.insertBefore(row.component._row.modules.dataTree.controlEl.cloneNode(true), cellEl.firstChild);
-                                       }
-                                       if (row.component._row.modules.dataTree.branchEl) {
-                                               cellEl.insertBefore(row.component._row.modules.dataTree.branchEl.cloneNode(true), cellEl.firstChild);
-                                       }
-                               }
-                       }
-
-                       rowEl.appendChild(cellEl);
-
-                       if (cellWrapper.modules.format && cellWrapper.modules.format.renderedCallback) {
-                               cellWrapper.modules.format.renderedCallback();
-                       }
-
-                       if (setup.rowFormatter && _this7.config.formatCells !== false) {
-                               var rowComponent = row.getComponent();
-
-                               rowComponent.getElement = function () {
-                                       return rowEl;
-                               };
-
-                               setup.rowFormatter(rowComponent);
-                       }
-               }
-       });
-
-       return rowEl;
-};
-
-Export.prototype.genereateHTMLTable = function (list) {
-       var holder = document.createElement("div");
-
-       holder.appendChild(this.genereateTableElement(list));
-
-       return holder.innerHTML;
-};
-
-Export.prototype.getHtml = function (visible, style, config, colVisProp) {
-       var list = this.generateExportList(config || this.table.options.htmlOutputConfig, style, visible, colVisProp || "htmlOutput");
-
-       return this.genereateHTMLTable(list);
-};
-
-Export.prototype.mapElementStyles = function (from, to, props) {
-       if (this.cloneTableStyle && from && to) {
-
-               var lookup = {
-                       "background-color": "backgroundColor",
-                       "color": "fontColor",
-                       "width": "width",
-                       "font-weight": "fontWeight",
-                       "font-family": "fontFamily",
-                       "font-size": "fontSize",
-                       "text-align": "textAlign",
-                       "border-top": "borderTop",
-                       "border-left": "borderLeft",
-                       "border-right": "borderRight",
-                       "border-bottom": "borderBottom",
-                       "padding-top": "paddingTop",
-                       "padding-left": "paddingLeft",
-                       "padding-right": "paddingRight",
-                       "padding-bottom": "paddingBottom"
-               };
-
-               if (window.getComputedStyle) {
-                       var fromStyle = window.getComputedStyle(from);
-
-                       props.forEach(function (prop) {
-                               to.style[lookup[prop]] = fromStyle.getPropertyValue(prop);
-                       });
-               }
-       }
-};
-
-Tabulator.prototype.registerModule("export", Export);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/export.min.js b/app/static/vendors/tabulator/js/modules/export.min.js
deleted file mode 100644 (file)
index d0dcccd..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ExportRow=function(t,e,o,r){this.type=t,this.columns=e,this.component=o||!1,this.indent=r||0},ExportColumn=function(t,e,o,r,n){this.value=t,this.component=e||!1,this.width=o,this.height=r,this.depth=n},Export=function(t){this.table=t,this.config={},this.cloneTableStyle=!0,this.colVisProp=""};Export.prototype.generateExportList=function(t,e,o,r){this.cloneTableStyle=e,this.config=t||{},this.colVisProp=r;var n=!1!==this.config.columnHeaders?this.headersToExportRows(this.generateColumnGroupHeaders()):[],l=this.bodyToExportRows(this.rowLookup(o));return n.concat(l)},Export.prototype.genereateTable=function(t,e,o,r){var n=this.generateExportList(t,e,o,r);return this.genereateTableElement(n)},Export.prototype.rowLookup=function(t){var e=this,o=[];if("function"==typeof t)t.call(this.table).forEach(function(t){(t=e.table.rowManager.findRow(t))&&o.push(t)});else switch(t){case!0:case"visible":o=this.table.rowManager.getVisibleRows(!0);break;case"all":o=this.table.rowManager.rows;break;case"selected":o=this.table.modules.selectRow.selectedRows;break;case"active":default:o=this.table.rowManager.getDisplayRows()}return Object.assign([],o)},Export.prototype.generateColumnGroupHeaders=function(){var t=this,e=[];return(!1!==this.config.columnGroups?this.table.columnManager.columns:this.table.columnManager.columnsByIndex).forEach(function(o){var r=t.processColumnGroup(o);r&&e.push(r)}),e},Export.prototype.processColumnGroup=function(t){var e=this,o=t.columns,r=0,n=t.definition["title"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))]||t.definition.title,l={title:n,column:t,depth:1};if(o.length){if(l.subGroups=[],l.width=0,o.forEach(function(t){var o=e.processColumnGroup(t);o&&(l.width+=o.width,l.subGroups.push(o),o.depth>r&&(r=o.depth))}),l.depth+=r,!l.width)return!1}else{if(!this.columnVisCheck(t))return!1;l.width=1}return l},Export.prototype.columnVisCheck=function(t){return!1!==t.definition[this.colVisProp]&&(t.visible||!t.visible&&t.definition[this.colVisProp])},Export.prototype.headersToExportRows=function(t){function e(t,n){var l=r-n;if(void 0===o[n]&&(o[n]=[]),t.height=t.subGroups?1:l-t.depth+1,o[n].push(t),t.height>1)for(var a=1;a<t.height;a++)void 0===o[n+a]&&(o[n+a]=[]),o[n+a].push(!1);if(t.width>1)for(var i=1;i<t.width;i++)o[n].push(!1);t.subGroups&&t.subGroups.forEach(function(t){e(t,n+1)})}var o=[],r=0,n=[];return t.forEach(function(t){t.depth>r&&(r=t.depth)}),t.forEach(function(t){e(t,0)}),o.forEach(function(t){var e=[];t.forEach(function(t){t?e.push(new ExportColumn(t.title,t.column.getComponent(),t.width,t.height,t.depth)):e.push(null)}),n.push(new ExportRow("header",e))}),n},Export.prototype.bodyToExportRows=function(t){var e=this,o=[],r=[];return this.table.columnManager.columnsByIndex.forEach(function(t){e.columnVisCheck(t)&&o.push(t.getComponent())}),!1!==this.config.columnCalcs&&this.table.modExists("columnCalcs")&&(this.table.modules.columnCalcs.topInitialized&&t.unshift(this.table.modules.columnCalcs.topRow),this.table.modules.columnCalcs.botInitialized&&t.push(this.table.modules.columnCalcs.botRow)),t=t.filter(function(t){switch(t.type){case"group":return!1!==e.config.rowGroups;case"calc":return!1!==e.config.columnCalcs;case"row":return!(e.table.options.dataTree&&!1===e.config.dataTree&&t.modules.dataTree.parent)}return!0}),t.forEach(function(t,n){var l=t.getData(e.colVisProp),a=[],i=0;switch(t.type){case"group":i=t.level,a.push(new ExportColumn(t.key,t.getComponent(),o.length,1));break;case"calc":case"row":o.forEach(function(t){a.push(new ExportColumn(t._column.getFieldValue(l),t,1,1))}),e.table.options.dataTree&&!1!==e.config.dataTree&&(i=t.modules.dataTree.index)}r.push(new ExportRow(t.type,a,t.getComponent(),i))}),r},Export.prototype.genereateTableElement=function(t){var e=this,o=document.createElement("table"),r=document.createElement("thead"),n=document.createElement("tbody"),l=this.lookupTableStyles(),a=this.table.options["rowFormatter"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))],i={};return i.rowFormatter=null!==a?a:this.table.options.rowFormatter,this.table.options.dataTree&&!1!==this.config.dataTree&&this.table.modExists("columnCalcs")&&(i.treeElementField=this.table.modules.dataTree.elementField),i.groupHeader=this.table.options["groupHeader"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))],i.groupHeader&&!Array.isArray(i.groupHeader)&&(i.groupHeader=[i.groupHeader]),o.classList.add("tabulator-print-table"),this.mapElementStyles(this.table.columnManager.getHeadersElement(),r,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),t.length>1e3&&console.warn("It may take a long time to render an HTML table with more than 1000 rows"),t.forEach(function(t,o){switch(t.type){case"header":r.appendChild(e.genereateHeaderElement(t,i,l));break;case"group":n.appendChild(e.genereateGroupElement(t,i,l));break;case"calc":n.appendChild(e.genereateCalcElement(t,i,l));break;case"row":var a=e.genereateRowElement(t,i,l);e.mapElementStyles(o%2&&l.evenRow?l.evenRow:l.oddRow,a,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),n.appendChild(a)}}),r.innerHTML&&o.appendChild(r),o.appendChild(n),this.mapElementStyles(this.table.element,o,["border-top","border-left","border-right","border-bottom"]),o},Export.prototype.lookupTableStyles=function(){var t={};return this.cloneTableStyle&&window.getComputedStyle&&(t.oddRow=this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)"),t.evenRow=this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)"),t.calcRow=this.table.element.querySelector(".tabulator-row.tabulator-calcs"),t.firstRow=this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)"),t.firstGroup=this.table.element.getElementsByClassName("tabulator-group")[0],t.firstRow&&(t.styleCells=t.firstRow.getElementsByClassName("tabulator-cell"),t.firstCell=t.styleCells[0],t.lastCell=t.styleCells[t.styleCells.length-1])),t},Export.prototype.genereateHeaderElement=function(t,e,o){var r=this,n=document.createElement("tr");return t.columns.forEach(function(t){if(t){var e=document.createElement("th"),o=t.component._column.definition.cssClass?t.component._column.definition.cssClass.split(" "):[];e.colSpan=t.width,e.rowSpan=t.height,e.innerHTML=t.value,r.cloneTableStyle&&(e.style.boxSizing="border-box"),o.forEach(function(t){e.classList.add(t)}),r.mapElementStyles(t.component.getElement(),e,["text-align","border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),r.mapElementStyles(t.component._column.contentElement,e,["padding-top","padding-left","padding-right","padding-bottom"]),t.component._column.visible?r.mapElementStyles(t.component.getElement(),e,["width"]):t.component._column.definition.width&&(e.style.width=t.component._column.definition.width+"px"),t.component._column.parent&&r.mapElementStyles(t.component._column.parent.groupElement,e,["border-top"]),n.appendChild(e)}}),n},Export.prototype.genereateGroupElement=function(t,e,o){var r=document.createElement("tr"),n=document.createElement("td"),l=t.columns[0];return r.classList.add("tabulator-print-table-row"),e.groupHeader&&e.groupHeader[t.indent]?l.value=e.groupHeader[t.indent](l.value,t.component._group.getRowCount(),t.component._group.getData(),t.component):!1===e.groupHeader?l.value=l.value:l.value=t.component._group.generator(l.value,t.component._group.getRowCount(),t.component._group.getData(),t.component),n.colSpan=l.width,n.innerHTML=l.value,r.classList.add("tabulator-print-table-group"),r.classList.add("tabulator-group-level-"+t.indent),l.component.getVisibility()&&r.classList.add("tabulator-group-visible"),this.mapElementStyles(o.firstGroup,r,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),this.mapElementStyles(o.firstGroup,n,["padding-top","padding-left","padding-right","padding-bottom"]),r.appendChild(n),r},Export.prototype.genereateCalcElement=function(t,e,o){var r=this.genereateRowElement(t,e,o);return r.classList.add("tabulator-print-table-calcs"),this.mapElementStyles(o.calcRow,r,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),r},Export.prototype.genereateRowElement=function(t,e,o){var r=this,n=document.createElement("tr");return n.classList.add("tabulator-print-table-row"),t.columns.forEach(function(l){if(l){var a=document.createElement("td"),s=l.component._column,p=l.value,c={modules:{},getValue:function(){return p},getField:function(){return s.definition.field},getElement:function(){return a},getColumn:function(){return s.getComponent()},getData:function(){return rowData},getRow:function(){return t.getComponent()},getComponent:function(){return c},column:s};if((s.definition.cssClass?s.definition.cssClass.split(" "):[]).forEach(function(t){a.classList.add(t)}),r.table.modExists("format")&&!1!==r.config.formatCells)p=r.table.modules.format.formatExportValue(c,r.colVisProp);else switch(void 0===p?"undefined":_typeof(p)){case"object":p=JSON.stringify(p);break;case"undefined":case"null":p="";break;default:p=p}if(p instanceof Node?a.appendChild(p):a.innerHTML=p,o.firstCell&&(r.mapElementStyles(o.firstCell,a,["padding-top","padding-left","padding-right","padding-bottom","border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size"]),s.definition.align&&(a.style.textAlign=s.definition.align)),r.table.options.dataTree&&!1!==r.config.dataTree&&(e.treeElementField&&e.treeElementField==s.field||!e.treeElementField&&0==i)&&(t.component._row.modules.dataTree.controlEl&&a.insertBefore(t.component._row.modules.dataTree.controlEl.cloneNode(!0),a.firstChild),t.component._row.modules.dataTree.branchEl&&a.insertBefore(t.component._row.modules.dataTree.branchEl.cloneNode(!0),a.firstChild)),n.appendChild(a),c.modules.format&&c.modules.format.renderedCallback&&c.modules.format.renderedCallback(),e.rowFormatter&&!1!==r.config.formatCells){var u=t.getComponent();u.getElement=function(){return n},e.rowFormatter(u)}}}),n},Export.prototype.genereateHTMLTable=function(t){var e=document.createElement("div");return e.appendChild(this.genereateTableElement(t)),e.innerHTML},Export.prototype.getHtml=function(t,e,o,r){var n=this.generateExportList(o||this.table.options.htmlOutputConfig,e,t,r||"htmlOutput");return this.genereateHTMLTable(n)},Export.prototype.mapElementStyles=function(t,e,o){if(this.cloneTableStyle&&t&&e){var r={"background-color":"backgroundColor",color:"fontColor",width:"width","font-weight":"fontWeight","font-family":"fontFamily","font-size":"fontSize","text-align":"textAlign","border-top":"borderTop","border-left":"borderLeft","border-right":"borderRight","border-bottom":"borderBottom","padding-top":"paddingTop","padding-left":"paddingLeft","padding-right":"paddingRight","padding-bottom":"paddingBottom"};if(window.getComputedStyle){var n=window.getComputedStyle(t);o.forEach(function(t){e.style[r[t]]=n.getPropertyValue(t)})}}},Tabulator.prototype.registerModule("export",Export);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/filter.js b/app/static/vendors/tabulator/js/modules/filter.js
deleted file mode 100644 (file)
index aaed59b..0000000
+++ /dev/null
@@ -1,807 +0,0 @@
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-
-var Filter = function Filter(table) {
-
-       this.table = table; //hold Tabulator object
-
-       this.filterList = []; //hold filter list
-       this.headerFilters = {}; //hold column filters
-       this.headerFilterColumns = []; //hold columns that use header filters
-
-       this.prevHeaderFilterChangeCheck = "";
-       this.prevHeaderFilterChangeCheck = "{}";
-
-       this.changed = false; //has filtering changed since last render
-};
-
-//initialize column header filter
-Filter.prototype.initializeColumn = function (column, value) {
-       var self = this,
-           field = column.getField(),
-           params;
-
-       //handle successfull value change
-       function success(value) {
-               var filterType = column.modules.filter.tagType == "input" && column.modules.filter.attrType == "text" || column.modules.filter.tagType == "textarea" ? "partial" : "match",
-                   type = "",
-                   filterChangeCheck = "",
-                   filterFunc;
-
-               if (typeof column.modules.filter.prevSuccess === "undefined" || column.modules.filter.prevSuccess !== value) {
-
-                       column.modules.filter.prevSuccess = value;
-
-                       if (!column.modules.filter.emptyFunc(value)) {
-                               column.modules.filter.value = value;
-
-                               switch (_typeof(column.definition.headerFilterFunc)) {
-                                       case "string":
-                                               if (self.filters[column.definition.headerFilterFunc]) {
-                                                       type = column.definition.headerFilterFunc;
-                                                       filterFunc = function filterFunc(data) {
-                                                               var params = column.definition.headerFilterFuncParams || {};
-                                                               var fieldVal = column.getFieldValue(data);
-
-                                                               params = typeof params === "function" ? params(value, fieldVal, data) : params;
-
-                                                               return self.filters[column.definition.headerFilterFunc](value, fieldVal, data, params);
-                                                       };
-                                               } else {
-                                                       console.warn("Header Filter Error - Matching filter function not found: ", column.definition.headerFilterFunc);
-                                               }
-                                               break;
-
-                                       case "function":
-                                               filterFunc = function filterFunc(data) {
-                                                       var params = column.definition.headerFilterFuncParams || {};
-                                                       var fieldVal = column.getFieldValue(data);
-
-                                                       params = typeof params === "function" ? params(value, fieldVal, data) : params;
-
-                                                       return column.definition.headerFilterFunc(value, fieldVal, data, params);
-                                               };
-
-                                               type = filterFunc;
-                                               break;
-                               }
-
-                               if (!filterFunc) {
-                                       switch (filterType) {
-                                               case "partial":
-                                                       filterFunc = function filterFunc(data) {
-                                                               var colVal = column.getFieldValue(data);
-
-                                                               if (typeof colVal !== 'undefined' && colVal !== null) {
-                                                                       return String(colVal).toLowerCase().indexOf(String(value).toLowerCase()) > -1;
-                                                               } else {
-                                                                       return false;
-                                                               }
-                                                       };
-                                                       type = "like";
-                                                       break;
-
-                                               default:
-                                                       filterFunc = function filterFunc(data) {
-                                                               return column.getFieldValue(data) == value;
-                                                       };
-                                                       type = "=";
-                                       }
-                               }
-
-                               self.headerFilters[field] = { value: value, func: filterFunc, type: type, params: params || {} };
-                       } else {
-                               delete self.headerFilters[field];
-                       }
-
-                       filterChangeCheck = JSON.stringify(self.headerFilters);
-
-                       if (self.prevHeaderFilterChangeCheck !== filterChangeCheck) {
-                               self.prevHeaderFilterChangeCheck = filterChangeCheck;
-
-                               self.changed = true;
-                               self.table.rowManager.filterRefresh();
-                       }
-               }
-
-               return true;
-       }
-
-       column.modules.filter = {
-               success: success,
-               attrType: false,
-               tagType: false,
-               emptyFunc: false
-       };
-
-       this.generateHeaderFilterElement(column);
-};
-
-Filter.prototype.generateHeaderFilterElement = function (column, initialValue, reinitialize) {
-       var _this = this;
-
-       var self = this,
-           success = column.modules.filter.success,
-           field = column.getField(),
-           filterElement,
-           editor,
-           editorElement,
-           cellWrapper,
-           typingTimer,
-           searchTrigger,
-           params;
-
-       //handle aborted edit
-       function cancel() {}
-
-       if (column.modules.filter.headerElement && column.modules.filter.headerElement.parentNode) {
-               column.contentElement.removeChild(column.modules.filter.headerElement.parentNode);
-       }
-
-       if (field) {
-
-               //set empty value function
-               column.modules.filter.emptyFunc = column.definition.headerFilterEmptyCheck || function (value) {
-                       return !value && value !== "0";
-               };
-
-               filterElement = document.createElement("div");
-               filterElement.classList.add("tabulator-header-filter");
-
-               //set column editor
-               switch (_typeof(column.definition.headerFilter)) {
-                       case "string":
-                               if (self.table.modules.edit.editors[column.definition.headerFilter]) {
-                                       editor = self.table.modules.edit.editors[column.definition.headerFilter];
-
-                                       if ((column.definition.headerFilter === "tick" || column.definition.headerFilter === "tickCross") && !column.definition.headerFilterEmptyCheck) {
-                                               column.modules.filter.emptyFunc = function (value) {
-                                                       return value !== true && value !== false;
-                                               };
-                                       }
-                               } else {
-                                       console.warn("Filter Error - Cannot build header filter, No such editor found: ", column.definition.editor);
-                               }
-                               break;
-
-                       case "function":
-                               editor = column.definition.headerFilter;
-                               break;
-
-                       case "boolean":
-                               if (column.modules.edit && column.modules.edit.editor) {
-                                       editor = column.modules.edit.editor;
-                               } else {
-                                       if (column.definition.formatter && self.table.modules.edit.editors[column.definition.formatter]) {
-                                               editor = self.table.modules.edit.editors[column.definition.formatter];
-
-                                               if ((column.definition.formatter === "tick" || column.definition.formatter === "tickCross") && !column.definition.headerFilterEmptyCheck) {
-                                                       column.modules.filter.emptyFunc = function (value) {
-                                                               return value !== true && value !== false;
-                                                       };
-                                               }
-                                       } else {
-                                               editor = self.table.modules.edit.editors["input"];
-                                       }
-                               }
-                               break;
-               }
-
-               if (editor) {
-
-                       cellWrapper = {
-                               getValue: function getValue() {
-                                       return typeof initialValue !== "undefined" ? initialValue : "";
-                               },
-                               getField: function getField() {
-                                       return column.definition.field;
-                               },
-                               getElement: function getElement() {
-                                       return filterElement;
-                               },
-                               getColumn: function getColumn() {
-                                       return column.getComponent();
-                               },
-                               getRow: function getRow() {
-                                       return {
-                                               normalizeHeight: function normalizeHeight() {}
-                                       };
-                               }
-                       };
-
-                       params = column.definition.headerFilterParams || {};
-
-                       params = typeof params === "function" ? params.call(self.table) : params;
-
-                       editorElement = editor.call(this.table.modules.edit, cellWrapper, function () {}, success, cancel, params);
-
-                       if (!editorElement) {
-                               console.warn("Filter Error - Cannot add filter to " + field + " column, editor returned a value of false");
-                               return;
-                       }
-
-                       if (!(editorElement instanceof Node)) {
-                               console.warn("Filter Error - Cannot add filter to " + field + " column, editor should return an instance of Node, the editor returned:", editorElement);
-                               return;
-                       }
-
-                       //set Placeholder Text
-                       if (field) {
-                               self.table.modules.localize.bind("headerFilters|columns|" + column.definition.field, function (value) {
-                                       editorElement.setAttribute("placeholder", typeof value !== "undefined" && value ? value : self.table.modules.localize.getText("headerFilters|default"));
-                               });
-                       } else {
-                               self.table.modules.localize.bind("headerFilters|default", function (value) {
-                                       editorElement.setAttribute("placeholder", typeof self.column.definition.headerFilterPlaceholder !== "undefined" && self.column.definition.headerFilterPlaceholder ? self.column.definition.headerFilterPlaceholder : value);
-                               });
-                       }
-
-                       //focus on element on click
-                       editorElement.addEventListener("click", function (e) {
-                               e.stopPropagation();
-                               editorElement.focus();
-                       });
-
-                       editorElement.addEventListener("focus", function (e) {
-                               var left = _this.table.columnManager.element.scrollLeft;
-
-                               if (left !== _this.table.rowManager.element.scrollLeft) {
-                                       _this.table.rowManager.scrollHorizontal(left);
-                                       _this.table.columnManager.scrollHorizontal(left);
-                               }
-                       });
-
-                       //live update filters as user types
-                       typingTimer = false;
-
-                       searchTrigger = function searchTrigger(e) {
-                               if (typingTimer) {
-                                       clearTimeout(typingTimer);
-                               }
-
-                               typingTimer = setTimeout(function () {
-                                       success(editorElement.value);
-                               }, self.table.options.headerFilterLiveFilterDelay);
-                       };
-
-                       column.modules.filter.headerElement = editorElement;
-                       column.modules.filter.attrType = editorElement.hasAttribute("type") ? editorElement.getAttribute("type").toLowerCase() : "";
-                       column.modules.filter.tagType = editorElement.tagName.toLowerCase();
-
-                       if (column.definition.headerFilterLiveFilter !== false) {
-
-                               if (!(column.definition.headerFilter === 'autocomplete' || column.definition.headerFilter === 'tickCross' || (column.definition.editor === 'autocomplete' || column.definition.editor === 'tickCross') && column.definition.headerFilter === true)) {
-                                       editorElement.addEventListener("keyup", searchTrigger);
-                                       editorElement.addEventListener("search", searchTrigger);
-
-                                       //update number filtered columns on change
-                                       if (column.modules.filter.attrType == "number") {
-                                               editorElement.addEventListener("change", function (e) {
-                                                       success(editorElement.value);
-                                               });
-                                       }
-
-                                       //change text inputs to search inputs to allow for clearing of field
-                                       if (column.modules.filter.attrType == "text" && this.table.browser !== "ie") {
-                                               editorElement.setAttribute("type", "search");
-                                               // editorElement.off("change blur"); //prevent blur from triggering filter and preventing selection click
-                                       }
-                               }
-
-                               //prevent input and select elements from propegating click to column sorters etc
-                               if (column.modules.filter.tagType == "input" || column.modules.filter.tagType == "select" || column.modules.filter.tagType == "textarea") {
-                                       editorElement.addEventListener("mousedown", function (e) {
-                                               e.stopPropagation();
-                                       });
-                               }
-                       }
-
-                       filterElement.appendChild(editorElement);
-
-                       column.contentElement.appendChild(filterElement);
-
-                       if (!reinitialize) {
-                               self.headerFilterColumns.push(column);
-                       }
-               }
-       } else {
-               console.warn("Filter Error - Cannot add header filter, column has no field set:", column.definition.title);
-       }
-};
-
-//hide all header filter elements (used to ensure correct column widths in "fitData" layout mode)
-Filter.prototype.hideHeaderFilterElements = function () {
-       this.headerFilterColumns.forEach(function (column) {
-               if (column.modules.filter && column.modules.filter.headerElement) {
-                       column.modules.filter.headerElement.style.display = 'none';
-               }
-       });
-};
-
-//show all header filter elements (used to ensure correct column widths in "fitData" layout mode)
-Filter.prototype.showHeaderFilterElements = function () {
-       this.headerFilterColumns.forEach(function (column) {
-               if (column.modules.filter && column.modules.filter.headerElement) {
-                       column.modules.filter.headerElement.style.display = '';
-               }
-       });
-};
-
-//programatically set focus of header filter
-Filter.prototype.setHeaderFilterFocus = function (column) {
-       if (column.modules.filter && column.modules.filter.headerElement) {
-               column.modules.filter.headerElement.focus();
-       } else {
-               console.warn("Column Filter Focus Error - No header filter set on column:", column.getField());
-       }
-};
-
-//programmatically get value of header filter
-Filter.prototype.getHeaderFilterValue = function (column) {
-       if (column.modules.filter && column.modules.filter.headerElement) {
-               return column.modules.filter.headerElement.value;
-       } else {
-               console.warn("Column Filter Error - No header filter set on column:", column.getField());
-       }
-};
-
-//programatically set value of header filter
-Filter.prototype.setHeaderFilterValue = function (column, value) {
-       if (column) {
-               if (column.modules.filter && column.modules.filter.headerElement) {
-                       this.generateHeaderFilterElement(column, value, true);
-                       column.modules.filter.success(value);
-               } else {
-                       console.warn("Column Filter Error - No header filter set on column:", column.getField());
-               }
-       }
-};
-
-Filter.prototype.reloadHeaderFilter = function (column) {
-       if (column) {
-               if (column.modules.filter && column.modules.filter.headerElement) {
-                       this.generateHeaderFilterElement(column, column.modules.filter.value, true);
-               } else {
-                       console.warn("Column Filter Error - No header filter set on column:", column.getField());
-               }
-       }
-};
-
-//check if the filters has changed since last use
-Filter.prototype.hasChanged = function () {
-       var changed = this.changed;
-       this.changed = false;
-       return changed;
-};
-
-//set standard filters
-Filter.prototype.setFilter = function (field, type, value, params) {
-       var self = this;
-
-       self.filterList = [];
-
-       if (!Array.isArray(field)) {
-               field = [{ field: field, type: type, value: value, params: params }];
-       }
-
-       self.addFilter(field);
-};
-
-//add filter to array
-Filter.prototype.addFilter = function (field, type, value, params) {
-       var self = this;
-
-       if (!Array.isArray(field)) {
-               field = [{ field: field, type: type, value: value, params: params }];
-       }
-
-       field.forEach(function (filter) {
-
-               filter = self.findFilter(filter);
-
-               if (filter) {
-                       self.filterList.push(filter);
-
-                       self.changed = true;
-               }
-       });
-
-       if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.filter) {
-               this.table.modules.persistence.save("filter");
-       }
-};
-
-Filter.prototype.findFilter = function (filter) {
-       var self = this,
-           column;
-
-       if (Array.isArray(filter)) {
-               return this.findSubFilters(filter);
-       }
-
-       var filterFunc = false;
-
-       if (typeof filter.field == "function") {
-               filterFunc = function filterFunc(data) {
-                       return filter.field(data, filter.type || {}); // pass params to custom filter function
-               };
-       } else {
-
-               if (self.filters[filter.type]) {
-
-                       column = self.table.columnManager.getColumnByField(filter.field);
-
-                       if (column) {
-                               filterFunc = function filterFunc(data) {
-                                       return self.filters[filter.type](filter.value, column.getFieldValue(data), data, filter.params || {});
-                               };
-                       } else {
-                               filterFunc = function filterFunc(data) {
-                                       return self.filters[filter.type](filter.value, data[filter.field], data, filter.params || {});
-                               };
-                       }
-               } else {
-                       console.warn("Filter Error - No such filter type found, ignoring: ", filter.type);
-               }
-       }
-
-       filter.func = filterFunc;
-
-       return filter.func ? filter : false;
-};
-
-Filter.prototype.findSubFilters = function (filters) {
-       var self = this,
-           output = [];
-
-       filters.forEach(function (filter) {
-               filter = self.findFilter(filter);
-
-               if (filter) {
-                       output.push(filter);
-               }
-       });
-
-       return output.length ? output : false;
-};
-
-//get all filters
-Filter.prototype.getFilters = function (all, ajax) {
-       var output = [];
-
-       if (all) {
-               output = this.getHeaderFilters();
-       }
-
-       if (ajax) {
-               output.forEach(function (item) {
-                       if (typeof item.type == "function") {
-                               item.type = "function";
-                       }
-               });
-       }
-
-       output = output.concat(this.filtersToArray(this.filterList, ajax));
-
-       return output;
-};
-
-//filter to Object
-Filter.prototype.filtersToArray = function (filterList, ajax) {
-       var _this2 = this;
-
-       var output = [];
-
-       filterList.forEach(function (filter) {
-               var item;
-
-               if (Array.isArray(filter)) {
-                       output.push(_this2.filtersToArray(filter, ajax));
-               } else {
-                       item = { field: filter.field, type: filter.type, value: filter.value };
-
-                       if (ajax) {
-                               if (typeof item.type == "function") {
-                                       item.type = "function";
-                               }
-                       }
-
-                       output.push(item);
-               }
-       });
-
-       return output;
-};
-
-//get all filters
-Filter.prototype.getHeaderFilters = function () {
-       var self = this,
-           output = [];
-
-       for (var key in this.headerFilters) {
-               output.push({ field: key, type: this.headerFilters[key].type, value: this.headerFilters[key].value });
-       }
-
-       return output;
-};
-
-//remove filter from array
-Filter.prototype.removeFilter = function (field, type, value) {
-       var self = this;
-
-       if (!Array.isArray(field)) {
-               field = [{ field: field, type: type, value: value }];
-       }
-
-       field.forEach(function (filter) {
-               var index = -1;
-
-               if (_typeof(filter.field) == "object") {
-                       index = self.filterList.findIndex(function (element) {
-                               return filter === element;
-                       });
-               } else {
-                       index = self.filterList.findIndex(function (element) {
-                               return filter.field === element.field && filter.type === element.type && filter.value === element.value;
-                       });
-               }
-
-               if (index > -1) {
-                       self.filterList.splice(index, 1);
-                       self.changed = true;
-               } else {
-                       console.warn("Filter Error - No matching filter type found, ignoring: ", filter.type);
-               }
-       });
-
-       if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.filter) {
-               this.table.modules.persistence.save("filter");
-       }
-};
-
-//clear filters
-Filter.prototype.clearFilter = function (all) {
-       this.filterList = [];
-
-       if (all) {
-               this.clearHeaderFilter();
-       }
-
-       this.changed = true;
-
-       if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.filter) {
-               this.table.modules.persistence.save("filter");
-       }
-};
-
-//clear header filters
-Filter.prototype.clearHeaderFilter = function () {
-       var self = this;
-
-       this.headerFilters = {};
-       self.prevHeaderFilterChangeCheck = "{}";
-
-       this.headerFilterColumns.forEach(function (column) {
-               column.modules.filter.value = null;
-               column.modules.filter.prevSuccess = undefined;
-               self.reloadHeaderFilter(column);
-       });
-
-       this.changed = true;
-};
-
-//search data and return matching rows
-Filter.prototype.search = function (searchType, field, type, value) {
-       var self = this,
-           activeRows = [],
-           filterList = [];
-
-       if (!Array.isArray(field)) {
-               field = [{ field: field, type: type, value: value }];
-       }
-
-       field.forEach(function (filter) {
-               filter = self.findFilter(filter);
-
-               if (filter) {
-                       filterList.push(filter);
-               }
-       });
-
-       this.table.rowManager.rows.forEach(function (row) {
-               var match = true;
-
-               filterList.forEach(function (filter) {
-                       if (!self.filterRecurse(filter, row.getData())) {
-                               match = false;
-                       }
-               });
-
-               if (match) {
-                       activeRows.push(searchType === "data" ? row.getData("data") : row.getComponent());
-               }
-       });
-
-       return activeRows;
-};
-
-//filter row array
-Filter.prototype.filter = function (rowList, filters) {
-       var self = this,
-           activeRows = [],
-           activeRowComponents = [];
-
-       if (self.table.options.dataFiltering) {
-               self.table.options.dataFiltering.call(self.table, self.getFilters());
-       }
-
-       if (!self.table.options.ajaxFiltering && (self.filterList.length || Object.keys(self.headerFilters).length)) {
-
-               rowList.forEach(function (row) {
-                       if (self.filterRow(row)) {
-                               activeRows.push(row);
-                       }
-               });
-       } else {
-               activeRows = rowList.slice(0);
-       }
-
-       if (self.table.options.dataFiltered) {
-
-               activeRows.forEach(function (row) {
-                       activeRowComponents.push(row.getComponent());
-               });
-
-               self.table.options.dataFiltered.call(self.table, self.getFilters(), activeRowComponents);
-       }
-
-       return activeRows;
-};
-
-//filter individual row
-Filter.prototype.filterRow = function (row, filters) {
-       var self = this,
-           match = true,
-           data = row.getData();
-
-       self.filterList.forEach(function (filter) {
-               if (!self.filterRecurse(filter, data)) {
-                       match = false;
-               }
-       });
-
-       for (var field in self.headerFilters) {
-               if (!self.headerFilters[field].func(data)) {
-                       match = false;
-               }
-       }
-
-       return match;
-};
-
-Filter.prototype.filterRecurse = function (filter, data) {
-       var self = this,
-           match = false;
-
-       if (Array.isArray(filter)) {
-               filter.forEach(function (subFilter) {
-                       if (self.filterRecurse(subFilter, data)) {
-                               match = true;
-                       }
-               });
-       } else {
-               match = filter.func(data);
-       }
-
-       return match;
-};
-
-//list of available filters
-Filter.prototype.filters = {
-
-       //equal to
-       "=": function _(filterVal, rowVal, rowData, filterParams) {
-               return rowVal == filterVal ? true : false;
-       },
-
-       //less than
-       "<": function _(filterVal, rowVal, rowData, filterParams) {
-               return rowVal < filterVal ? true : false;
-       },
-
-       //less than or equal to
-       "<=": function _(filterVal, rowVal, rowData, filterParams) {
-               return rowVal <= filterVal ? true : false;
-       },
-
-       //greater than
-       ">": function _(filterVal, rowVal, rowData, filterParams) {
-               return rowVal > filterVal ? true : false;
-       },
-
-       //greater than or equal to
-       ">=": function _(filterVal, rowVal, rowData, filterParams) {
-               return rowVal >= filterVal ? true : false;
-       },
-
-       //not equal to
-       "!=": function _(filterVal, rowVal, rowData, filterParams) {
-               return rowVal != filterVal ? true : false;
-       },
-
-       "regex": function regex(filterVal, rowVal, rowData, filterParams) {
-
-               if (typeof filterVal == "string") {
-                       filterVal = new RegExp(filterVal);
-               }
-
-               return filterVal.test(rowVal);
-       },
-
-       //contains the string
-       "like": function like(filterVal, rowVal, rowData, filterParams) {
-               if (filterVal === null || typeof filterVal === "undefined") {
-                       return rowVal === filterVal ? true : false;
-               } else {
-                       if (typeof rowVal !== 'undefined' && rowVal !== null) {
-                               return String(rowVal).toLowerCase().indexOf(filterVal.toLowerCase()) > -1;
-                       } else {
-                               return false;
-                       }
-               }
-       },
-
-       //contains the keywords
-       "keywords": function keywords(filterVal, rowVal, rowData, filterParams) {
-               var keywords = filterVal.toLowerCase().split(typeof filterParams.separator === "undefined" ? " " : filterParams.separator),
-                   value = String(rowVal === null || typeof rowVal === "undefined" ? "" : rowVal).toLowerCase(),
-                   matches = [];
-
-               keywords.forEach(function (keyword) {
-                       if (value.includes(keyword)) {
-                               matches.push(true);
-                       }
-               });
-
-               return filterParams.matchAll ? matches.length === keywords.length : !!matches.length;
-       },
-
-       //starts with the string
-       "starts": function starts(filterVal, rowVal, rowData, filterParams) {
-               if (filterVal === null || typeof filterVal === "undefined") {
-                       return rowVal === filterVal ? true : false;
-               } else {
-                       if (typeof rowVal !== 'undefined' && rowVal !== null) {
-                               return String(rowVal).toLowerCase().startsWith(filterVal.toLowerCase());
-                       } else {
-                               return false;
-                       }
-               }
-       },
-
-       //ends with the string
-       "ends": function ends(filterVal, rowVal, rowData, filterParams) {
-               if (filterVal === null || typeof filterVal === "undefined") {
-                       return rowVal === filterVal ? true : false;
-               } else {
-                       if (typeof rowVal !== 'undefined' && rowVal !== null) {
-                               return String(rowVal).toLowerCase().endsWith(filterVal.toLowerCase());
-                       } else {
-                               return false;
-                       }
-               }
-       },
-
-       //in array
-       "in": function _in(filterVal, rowVal, rowData, filterParams) {
-               if (Array.isArray(filterVal)) {
-                       return filterVal.indexOf(rowVal) > -1;
-               } else {
-                       console.warn("Filter Error - filter value is not an array:", filterVal);
-                       return false;
-               }
-       }
-};
-
-Tabulator.prototype.registerModule("filter", Filter);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/filter.min.js b/app/static/vendors/tabulator/js/modules/filter.min.js
deleted file mode 100644 (file)
index 8be2662..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Filter=function(e){this.table=e,this.filterList=[],this.headerFilters={},this.headerFilterColumns=[],this.prevHeaderFilterChangeCheck="",this.prevHeaderFilterChangeCheck="{}",this.changed=!1};Filter.prototype.initializeColumn=function(e,t){function r(t){var r,o="input"==e.modules.filter.tagType&&"text"==e.modules.filter.attrType||"textarea"==e.modules.filter.tagType?"partial":"match",a="",s="";if(void 0===e.modules.filter.prevSuccess||e.modules.filter.prevSuccess!==t){if(e.modules.filter.prevSuccess=t,e.modules.filter.emptyFunc(t))delete n.headerFilters[l];else{switch(e.modules.filter.value=t,_typeof(e.definition.headerFilterFunc)){case"string":n.filters[e.definition.headerFilterFunc]?(a=e.definition.headerFilterFunc,r=function(r){var i=e.definition.headerFilterFuncParams||{},l=e.getFieldValue(r);return i="function"==typeof i?i(t,l,r):i,n.filters[e.definition.headerFilterFunc](t,l,r,i)}):console.warn("Header Filter Error - Matching filter function not found: ",e.definition.headerFilterFunc);break;case"function":r=function(r){var i=e.definition.headerFilterFuncParams||{},n=e.getFieldValue(r);return i="function"==typeof i?i(t,n,r):i,e.definition.headerFilterFunc(t,n,r,i)},a=r}if(!r)switch(o){case"partial":r=function(r){var i=e.getFieldValue(r);return void 0!==i&&null!==i&&String(i).toLowerCase().indexOf(String(t).toLowerCase())>-1},a="like";break;default:r=function(r){return e.getFieldValue(r)==t},a="="}n.headerFilters[l]={value:t,func:r,type:a,params:i||{}}}s=JSON.stringify(n.headerFilters),n.prevHeaderFilterChangeCheck!==s&&(n.prevHeaderFilterChangeCheck=s,n.changed=!0,n.table.rowManager.filterRefresh())}return!0}var i,n=this,l=e.getField();e.modules.filter={success:r,attrType:!1,tagType:!1,emptyFunc:!1},this.generateHeaderFilterElement(e)},Filter.prototype.generateHeaderFilterElement=function(e,t,r){function i(){}var n,l,o,a,s,d,u,f=this,c=this,h=e.modules.filter.success,p=e.getField();if(e.modules.filter.headerElement&&e.modules.filter.headerElement.parentNode&&e.contentElement.removeChild(e.modules.filter.headerElement.parentNode),p){switch(e.modules.filter.emptyFunc=e.definition.headerFilterEmptyCheck||function(e){return!e&&"0"!==e},n=document.createElement("div"),n.classList.add("tabulator-header-filter"),_typeof(e.definition.headerFilter)){case"string":c.table.modules.edit.editors[e.definition.headerFilter]?(l=c.table.modules.edit.editors[e.definition.headerFilter],"tick"!==e.definition.headerFilter&&"tickCross"!==e.definition.headerFilter||e.definition.headerFilterEmptyCheck||(e.modules.filter.emptyFunc=function(e){return!0!==e&&!1!==e})):console.warn("Filter Error - Cannot build header filter, No such editor found: ",e.definition.editor);break;case"function":l=e.definition.headerFilter;break;case"boolean":e.modules.edit&&e.modules.edit.editor?l=e.modules.edit.editor:e.definition.formatter&&c.table.modules.edit.editors[e.definition.formatter]?(l=c.table.modules.edit.editors[e.definition.formatter],"tick"!==e.definition.formatter&&"tickCross"!==e.definition.formatter||e.definition.headerFilterEmptyCheck||(e.modules.filter.emptyFunc=function(e){return!0!==e&&!1!==e})):l=c.table.modules.edit.editors.input}if(l){if(a={getValue:function(){return void 0!==t?t:""},getField:function(){return e.definition.field},getElement:function(){return n},getColumn:function(){return e.getComponent()},getRow:function(){return{normalizeHeight:function(){}}}},u=e.definition.headerFilterParams||{},u="function"==typeof u?u.call(c.table):u,!(o=l.call(this.table.modules.edit,a,function(){},h,i,u)))return void console.warn("Filter Error - Cannot add filter to "+p+" column, editor returned a value of false");if(!(o instanceof Node))return void console.warn("Filter Error - Cannot add filter to "+p+" column, editor should return an instance of Node, the editor returned:",o);p?c.table.modules.localize.bind("headerFilters|columns|"+e.definition.field,function(e){o.setAttribute("placeholder",void 0!==e&&e?e:c.table.modules.localize.getText("headerFilters|default"))}):c.table.modules.localize.bind("headerFilters|default",function(e){o.setAttribute("placeholder",void 0!==c.column.definition.headerFilterPlaceholder&&c.column.definition.headerFilterPlaceholder?c.column.definition.headerFilterPlaceholder:e)}),o.addEventListener("click",function(e){e.stopPropagation(),o.focus()}),o.addEventListener("focus",function(e){var t=f.table.columnManager.element.scrollLeft;t!==f.table.rowManager.element.scrollLeft&&(f.table.rowManager.scrollHorizontal(t),f.table.columnManager.scrollHorizontal(t))}),s=!1,d=function(e){s&&clearTimeout(s),s=setTimeout(function(){h(o.value)},c.table.options.headerFilterLiveFilterDelay)},e.modules.filter.headerElement=o,e.modules.filter.attrType=o.hasAttribute("type")?o.getAttribute("type").toLowerCase():"",e.modules.filter.tagType=o.tagName.toLowerCase(),!1!==e.definition.headerFilterLiveFilter&&("autocomplete"!==e.definition.headerFilter&&"tickCross"!==e.definition.headerFilter&&("autocomplete"!==e.definition.editor&&"tickCross"!==e.definition.editor||!0!==e.definition.headerFilter)&&(o.addEventListener("keyup",d),o.addEventListener("search",d),"number"==e.modules.filter.attrType&&o.addEventListener("change",function(e){h(o.value)}),"text"==e.modules.filter.attrType&&"ie"!==this.table.browser&&o.setAttribute("type","search")),"input"!=e.modules.filter.tagType&&"select"!=e.modules.filter.tagType&&"textarea"!=e.modules.filter.tagType||o.addEventListener("mousedown",function(e){e.stopPropagation()})),n.appendChild(o),e.contentElement.appendChild(n),r||c.headerFilterColumns.push(e)}}else console.warn("Filter Error - Cannot add header filter, column has no field set:",e.definition.title)},Filter.prototype.hideHeaderFilterElements=function(){this.headerFilterColumns.forEach(function(e){e.modules.filter&&e.modules.filter.headerElement&&(e.modules.filter.headerElement.style.display="none")})},Filter.prototype.showHeaderFilterElements=function(){this.headerFilterColumns.forEach(function(e){e.modules.filter&&e.modules.filter.headerElement&&(e.modules.filter.headerElement.style.display="")})},Filter.prototype.setHeaderFilterFocus=function(e){e.modules.filter&&e.modules.filter.headerElement?e.modules.filter.headerElement.focus():console.warn("Column Filter Focus Error - No header filter set on column:",e.getField())},Filter.prototype.getHeaderFilterValue=function(e){if(e.modules.filter&&e.modules.filter.headerElement)return e.modules.filter.headerElement.value;console.warn("Column Filter Error - No header filter set on column:",e.getField())},Filter.prototype.setHeaderFilterValue=function(e,t){e&&(e.modules.filter&&e.modules.filter.headerElement?(this.generateHeaderFilterElement(e,t,!0),e.modules.filter.success(t)):console.warn("Column Filter Error - No header filter set on column:",e.getField()))},Filter.prototype.reloadHeaderFilter=function(e){e&&(e.modules.filter&&e.modules.filter.headerElement?this.generateHeaderFilterElement(e,e.modules.filter.value,!0):console.warn("Column Filter Error - No header filter set on column:",e.getField()))},Filter.prototype.hasChanged=function(){var e=this.changed;return this.changed=!1,e},Filter.prototype.setFilter=function(e,t,r,i){var n=this;n.filterList=[],Array.isArray(e)||(e=[{field:e,type:t,value:r,params:i}]),n.addFilter(e)},Filter.prototype.addFilter=function(e,t,r,i){var n=this;Array.isArray(e)||(e=[{field:e,type:t,value:r,params:i}]),e.forEach(function(e){(e=n.findFilter(e))&&(n.filterList.push(e),n.changed=!0)}),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.filter&&this.table.modules.persistence.save("filter")},Filter.prototype.findFilter=function(e){var t,r=this;if(Array.isArray(e))return this.findSubFilters(e);var i=!1;return"function"==typeof e.field?i=function(t){return e.field(t,e.type||{})}:r.filters[e.type]?(t=r.table.columnManager.getColumnByField(e.field),i=t?function(i){return r.filters[e.type](e.value,t.getFieldValue(i),i,e.params||{})}:function(t){return r.filters[e.type](e.value,t[e.field],t,e.params||{})}):console.warn("Filter Error - No such filter type found, ignoring: ",e.type),e.func=i,!!e.func&&e},Filter.prototype.findSubFilters=function(e){var t=this,r=[];return e.forEach(function(e){(e=t.findFilter(e))&&r.push(e)}),!!r.length&&r},Filter.prototype.getFilters=function(e,t){var r=[];return e&&(r=this.getHeaderFilters()),t&&r.forEach(function(e){"function"==typeof e.type&&(e.type="function")}),r=r.concat(this.filtersToArray(this.filterList,t))},Filter.prototype.filtersToArray=function(e,t){var r=this,i=[];return e.forEach(function(e){var n;Array.isArray(e)?i.push(r.filtersToArray(e,t)):(n={field:e.field,type:e.type,value:e.value},t&&"function"==typeof n.type&&(n.type="function"),i.push(n))}),i},Filter.prototype.getHeaderFilters=function(){var e=[];for(var t in this.headerFilters)e.push({field:t,type:this.headerFilters[t].type,value:this.headerFilters[t].value});return e},Filter.prototype.removeFilter=function(e,t,r){var i=this;Array.isArray(e)||(e=[{field:e,type:t,value:r}]),e.forEach(function(e){var t=-1;t="object"==_typeof(e.field)?i.filterList.findIndex(function(t){return e===t}):i.filterList.findIndex(function(t){return e.field===t.field&&e.type===t.type&&e.value===t.value}),t>-1?(i.filterList.splice(t,1),i.changed=!0):console.warn("Filter Error - No matching filter type found, ignoring: ",e.type)}),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.filter&&this.table.modules.persistence.save("filter")},Filter.prototype.clearFilter=function(e){this.filterList=[],e&&this.clearHeaderFilter(),this.changed=!0,this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.filter&&this.table.modules.persistence.save("filter")},Filter.prototype.clearHeaderFilter=function(){var e=this;this.headerFilters={},e.prevHeaderFilterChangeCheck="{}",this.headerFilterColumns.forEach(function(t){t.modules.filter.value=null,t.modules.filter.prevSuccess=void 0,e.reloadHeaderFilter(t)}),this.changed=!0},Filter.prototype.search=function(e,t,r,i){var n=this,l=[],o=[];return Array.isArray(t)||(t=[{field:t,type:r,value:i}]),t.forEach(function(e){(e=n.findFilter(e))&&o.push(e)}),this.table.rowManager.rows.forEach(function(t){var r=!0;o.forEach(function(e){n.filterRecurse(e,t.getData())||(r=!1)}),r&&l.push("data"===e?t.getData("data"):t.getComponent())}),l},Filter.prototype.filter=function(e,t){var r=this,i=[],n=[];return r.table.options.dataFiltering&&r.table.options.dataFiltering.call(r.table,r.getFilters()),r.table.options.ajaxFiltering||!r.filterList.length&&!Object.keys(r.headerFilters).length?i=e.slice(0):e.forEach(function(e){r.filterRow(e)&&i.push(e)}),r.table.options.dataFiltered&&(i.forEach(function(e){n.push(e.getComponent())}),r.table.options.dataFiltered.call(r.table,r.getFilters(),n)),i},Filter.prototype.filterRow=function(e,t){var r=this,i=!0,n=e.getData();r.filterList.forEach(function(e){r.filterRecurse(e,n)||(i=!1)});for(var l in r.headerFilters)r.headerFilters[l].func(n)||(i=!1);return i},Filter.prototype.filterRecurse=function(e,t){var r=this,i=!1;return Array.isArray(e)?e.forEach(function(e){r.filterRecurse(e,t)&&(i=!0)}):i=e.func(t),i},Filter.prototype.filters={"=":function(e,t,r,i){return t==e},"<":function(e,t,r,i){return t<e},"<=":function(e,t,r,i){return t<=e},">":function(e,t,r,i){return t>e},">=":function(e,t,r,i){return t>=e},"!=":function(e,t,r,i){return t!=e},regex:function(e,t,r,i){return"string"==typeof e&&(e=new RegExp(e)),e.test(t)},like:function(e,t,r,i){return null===e||void 0===e?t===e:void 0!==t&&null!==t&&String(t).toLowerCase().indexOf(e.toLowerCase())>-1},keywords:function(e,t,r,i){var n=e.toLowerCase().split(void 0===i.separator?" ":i.separator),l=String(null===t||void 0===t?"":t).toLowerCase(),o=[];return n.forEach(function(e){l.includes(e)&&o.push(!0)}),i.matchAll?o.length===n.length:!!o.length},starts:function(e,t,r,i){return null===e||void 0===e?t===e:void 0!==t&&null!==t&&String(t).toLowerCase().startsWith(e.toLowerCase())},ends:function(e,t,r,i){return null===e||void 0===e?t===e:void 0!==t&&null!==t&&String(t).toLowerCase().endsWith(e.toLowerCase())},in:function(e,t,r,i){return Array.isArray(e)?e.indexOf(t)>-1:(console.warn("Filter Error - filter value is not an array:",e),!1)}},Tabulator.prototype.registerModule("filter",Filter);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/format.js b/app/static/vendors/tabulator/js/modules/format.js
deleted file mode 100644 (file)
index 5714027..0000000
+++ /dev/null
@@ -1,725 +0,0 @@
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-
-var Format = function Format(table) {
-       this.table = table; //hold Tabulator object
-};
-
-//initialize column formatter
-Format.prototype.initializeColumn = function (column) {
-       column.modules.format = this.lookupFormatter(column, "");
-
-       if (typeof column.definition.formatterPrint !== "undefined") {
-               column.modules.format.print = this.lookupFormatter(column, "Print");
-       }
-
-       if (typeof column.definition.formatterClipboard !== "undefined") {
-               column.modules.format.clipboard = this.lookupFormatter(column, "Clipboard");
-       }
-
-       if (typeof column.definition.formatterHtmlOutput !== "undefined") {
-               column.modules.format.htmlOutput = this.lookupFormatter(column, "HtmlOutput");
-       }
-};
-
-Format.prototype.lookupFormatter = function (column, type) {
-       var config = { params: column.definition["formatter" + type + "Params"] || {} },
-           formatter = column.definition["formatter" + type];
-
-       //set column formatter
-       switch (typeof formatter === "undefined" ? "undefined" : _typeof(formatter)) {
-               case "string":
-
-                       if (formatter === "tick") {
-                               formatter = "tickCross";
-
-                               if (typeof config.params.crossElement == "undefined") {
-                                       config.params.crossElement = false;
-                               }
-
-                               console.warn("DEPRECATION WARNING - the tick formatter has been deprecated, please use the tickCross formatter with the crossElement param set to false");
-                       }
-
-                       if (this.formatters[formatter]) {
-                               config.formatter = this.formatters[formatter];
-                       } else {
-                               console.warn("Formatter Error - No such formatter found: ", formatter);
-                               config.formatter = this.formatters.plaintext;
-                       }
-                       break;
-
-               case "function":
-                       config.formatter = formatter;
-                       break;
-
-               default:
-                       config.formatter = this.formatters.plaintext;
-                       break;
-       }
-
-       return config;
-};
-
-Format.prototype.cellRendered = function (cell) {
-       if (cell.modules.format && cell.modules.format.renderedCallback) {
-               cell.modules.format.renderedCallback();
-       }
-};
-
-//return a formatted value for a cell
-Format.prototype.formatValue = function (cell) {
-       var component = cell.getComponent(),
-           params = typeof cell.column.modules.format.params === "function" ? cell.column.modules.format.params(component) : cell.column.modules.format.params;
-
-       function onRendered(callback) {
-               if (!cell.modules.format) {
-                       cell.modules.format = {};
-               }
-
-               cell.modules.format.renderedCallback = callback;
-       }
-
-       return cell.column.modules.format.formatter.call(this, component, params, onRendered);
-};
-
-Format.prototype.formatExportValue = function (cell, type) {
-       var formatter = cell.column.modules.format[type],
-           params;
-
-       if (formatter) {
-               var onRendered = function onRendered(callback) {
-                       if (!cell.modules.format) {
-                               cell.modules.format = {};
-                       }
-
-                       cell.modules.format.renderedCallback = callback;
-               };
-
-               params = typeof formatter.params === "function" ? formatter.params(component) : formatter.params;
-
-               return formatter.formatter.call(this, cell.getComponent(), params, onRendered);
-       } else {
-               return this.formatValue(cell);
-       }
-};
-
-Format.prototype.sanitizeHTML = function (value) {
-       if (value) {
-               var entityMap = {
-                       '&': '&amp;',
-                       '<': '&lt;',
-                       '>': '&gt;',
-                       '"': '&quot;',
-                       "'": '&#39;',
-                       '/': '&#x2F;',
-                       '`': '&#x60;',
-                       '=': '&#x3D;'
-               };
-
-               return String(value).replace(/[&<>"'`=\/]/g, function (s) {
-                       return entityMap[s];
-               });
-       } else {
-               return value;
-       }
-};
-
-Format.prototype.emptyToSpace = function (value) {
-       return value === null || typeof value === "undefined" || value === "" ? "&nbsp;" : value;
-};
-
-//get formatter for cell
-Format.prototype.getFormatter = function (formatter) {
-       var formatter;
-
-       switch (typeof formatter === "undefined" ? "undefined" : _typeof(formatter)) {
-               case "string":
-                       if (this.formatters[formatter]) {
-                               formatter = this.formatters[formatter];
-                       } else {
-                               console.warn("Formatter Error - No such formatter found: ", formatter);
-                               formatter = this.formatters.plaintext;
-                       }
-                       break;
-
-               case "function":
-                       formatter = formatter;
-                       break;
-
-               default:
-                       formatter = this.formatters.plaintext;
-                       break;
-       }
-
-       return formatter;
-};
-
-//default data formatters
-Format.prototype.formatters = {
-       //plain text value
-       plaintext: function plaintext(cell, formatterParams, onRendered) {
-               return this.emptyToSpace(this.sanitizeHTML(cell.getValue()));
-       },
-
-       //html text value
-       html: function html(cell, formatterParams, onRendered) {
-               return cell.getValue();
-       },
-
-       //multiline text area
-       textarea: function textarea(cell, formatterParams, onRendered) {
-               cell.getElement().style.whiteSpace = "pre-wrap";
-               return this.emptyToSpace(this.sanitizeHTML(cell.getValue()));
-       },
-
-       //currency formatting
-       money: function money(cell, formatterParams, onRendered) {
-               var floatVal = parseFloat(cell.getValue()),
-                   number,
-                   integer,
-                   decimal,
-                   rgx;
-
-               var decimalSym = formatterParams.decimal || ".";
-               var thousandSym = formatterParams.thousand || ",";
-               var symbol = formatterParams.symbol || "";
-               var after = !!formatterParams.symbolAfter;
-               var precision = typeof formatterParams.precision !== "undefined" ? formatterParams.precision : 2;
-
-               if (isNaN(floatVal)) {
-                       return this.emptyToSpace(this.sanitizeHTML(cell.getValue()));
-               }
-
-               number = precision !== false ? floatVal.toFixed(precision) : floatVal;
-               number = String(number).split(".");
-
-               integer = number[0];
-               decimal = number.length > 1 ? decimalSym + number[1] : "";
-
-               rgx = /(\d+)(\d{3})/;
-
-               while (rgx.test(integer)) {
-                       integer = integer.replace(rgx, "$1" + thousandSym + "$2");
-               }
-
-               return after ? integer + decimal + symbol : symbol + integer + decimal;
-       },
-
-       //clickable anchor tag
-       link: function link(cell, formatterParams, onRendered) {
-               var value = cell.getValue(),
-                   urlPrefix = formatterParams.urlPrefix || "",
-                   download = formatterParams.download,
-                   label = value,
-                   el = document.createElement("a"),
-                   data;
-
-               if (formatterParams.labelField) {
-                       data = cell.getData();
-                       label = data[formatterParams.labelField];
-               }
-
-               if (formatterParams.label) {
-                       switch (_typeof(formatterParams.label)) {
-                               case "string":
-                                       label = formatterParams.label;
-                                       break;
-
-                               case "function":
-                                       label = formatterParams.label(cell);
-                                       break;
-                       }
-               }
-
-               if (label) {
-                       if (formatterParams.urlField) {
-                               data = cell.getData();
-                               value = data[formatterParams.urlField];
-                       }
-
-                       if (formatterParams.url) {
-                               switch (_typeof(formatterParams.url)) {
-                                       case "string":
-                                               value = formatterParams.url;
-                                               break;
-
-                                       case "function":
-                                               value = formatterParams.url(cell);
-                                               break;
-                               }
-                       }
-
-                       el.setAttribute("href", urlPrefix + value);
-
-                       if (formatterParams.target) {
-                               el.setAttribute("target", formatterParams.target);
-                       }
-
-                       if (formatterParams.download) {
-
-                               if (typeof download == "function") {
-                                       download = download(cell);
-                               } else {
-                                       download = download === true ? "" : download;
-                               }
-
-                               el.setAttribute("download", download);
-                       }
-
-                       el.innerHTML = this.emptyToSpace(this.sanitizeHTML(label));
-
-                       return el;
-               } else {
-                       return "&nbsp;";
-               }
-       },
-
-       //image element
-       image: function image(cell, formatterParams, onRendered) {
-               var el = document.createElement("img");
-               el.setAttribute("src", cell.getValue());
-
-               switch (_typeof(formatterParams.height)) {
-                       case "number":
-                               el.style.height = formatterParams.height + "px";
-                               break;
-
-                       case "string":
-                               el.style.height = formatterParams.height;
-                               break;
-               }
-
-               switch (_typeof(formatterParams.width)) {
-                       case "number":
-                               el.style.width = formatterParams.width + "px";
-                               break;
-
-                       case "string":
-                               el.style.width = formatterParams.width;
-                               break;
-               }
-
-               el.addEventListener("load", function () {
-                       cell.getRow().normalizeHeight();
-               });
-
-               return el;
-       },
-
-       //tick or cross
-       tickCross: function tickCross(cell, formatterParams, onRendered) {
-               var value = cell.getValue(),
-                   element = cell.getElement(),
-                   empty = formatterParams.allowEmpty,
-                   truthy = formatterParams.allowTruthy,
-                   tick = typeof formatterParams.tickElement !== "undefined" ? formatterParams.tickElement : '<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34  c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351  l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07  l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>',
-                   cross = typeof formatterParams.crossElement !== "undefined" ? formatterParams.crossElement : '<svg enable-background="new 0 0 24 24" height="14" width="14"  viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272  c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0  l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269  c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73  L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>';
-
-               if (truthy && value || value === true || value === "true" || value === "True" || value === 1 || value === "1") {
-                       element.setAttribute("aria-checked", true);
-                       return tick || "";
-               } else {
-                       if (empty && (value === "null" || value === "" || value === null || typeof value === "undefined")) {
-                               element.setAttribute("aria-checked", "mixed");
-                               return "";
-                       } else {
-                               element.setAttribute("aria-checked", false);
-                               return cross || "";
-                       }
-               }
-       },
-
-       datetime: function datetime(cell, formatterParams, onRendered) {
-               var inputFormat = formatterParams.inputFormat || "YYYY-MM-DD hh:mm:ss";
-               var outputFormat = formatterParams.outputFormat || "DD/MM/YYYY hh:mm:ss";
-               var invalid = typeof formatterParams.invalidPlaceholder !== "undefined" ? formatterParams.invalidPlaceholder : "";
-               var value = cell.getValue();
-
-               var newDatetime = moment(value, inputFormat);
-
-               if (newDatetime.isValid()) {
-                       return formatterParams.timezone ? newDatetime.tz(formatterParams.timezone).format(outputFormat) : newDatetime.format(outputFormat);
-               } else {
-
-                       if (invalid === true) {
-                               return value;
-                       } else if (typeof invalid === "function") {
-                               return invalid(value);
-                       } else {
-                               return invalid;
-                       }
-               }
-       },
-
-       datetimediff: function datetime(cell, formatterParams, onRendered) {
-               var inputFormat = formatterParams.inputFormat || "YYYY-MM-DD hh:mm:ss";
-               var invalid = typeof formatterParams.invalidPlaceholder !== "undefined" ? formatterParams.invalidPlaceholder : "";
-               var suffix = typeof formatterParams.suffix !== "undefined" ? formatterParams.suffix : false;
-               var unit = typeof formatterParams.unit !== "undefined" ? formatterParams.unit : undefined;
-               var humanize = typeof formatterParams.humanize !== "undefined" ? formatterParams.humanize : false;
-               var date = typeof formatterParams.date !== "undefined" ? formatterParams.date : moment();
-               var value = cell.getValue();
-
-               var newDatetime = moment(value, inputFormat);
-
-               if (newDatetime.isValid()) {
-                       if (humanize) {
-                               return moment.duration(newDatetime.diff(date)).humanize(suffix);
-                       } else {
-                               return newDatetime.diff(date, unit) + (suffix ? " " + suffix : "");
-                       }
-               } else {
-
-                       if (invalid === true) {
-                               return value;
-                       } else if (typeof invalid === "function") {
-                               return invalid(value);
-                       } else {
-                               return invalid;
-                       }
-               }
-       },
-
-       //select
-       lookup: function lookup(cell, formatterParams, onRendered) {
-               var value = cell.getValue();
-
-               if (typeof formatterParams[value] === "undefined") {
-                       console.warn('Missing display value for ' + value);
-                       return value;
-               }
-
-               return formatterParams[value];
-       },
-
-       //star rating
-       star: function star(cell, formatterParams, onRendered) {
-               var value = cell.getValue(),
-                   element = cell.getElement(),
-                   maxStars = formatterParams && formatterParams.stars ? formatterParams.stars : 5,
-                   stars = document.createElement("span"),
-                   star = document.createElementNS('http://www.w3.org/2000/svg', "svg"),
-                   starActive = '<polygon fill="#FFEA00" stroke="#C1AB60" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>',
-                   starInactive = '<polygon fill="#D2D2D2" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>';
-
-               //style stars holder
-               stars.style.verticalAlign = "middle";
-
-               //style star
-               star.setAttribute("width", "14");
-               star.setAttribute("height", "14");
-               star.setAttribute("viewBox", "0 0 512 512");
-               star.setAttribute("xml:space", "preserve");
-               star.style.padding = "0 1px";
-
-               value = value && !isNaN(value) ? parseInt(value) : 0;
-
-               value = Math.max(0, Math.min(value, maxStars));
-
-               for (var i = 1; i <= maxStars; i++) {
-                       var nextStar = star.cloneNode(true);
-                       nextStar.innerHTML = i <= value ? starActive : starInactive;
-
-                       stars.appendChild(nextStar);
-               }
-
-               element.style.whiteSpace = "nowrap";
-               element.style.overflow = "hidden";
-               element.style.textOverflow = "ellipsis";
-
-               element.setAttribute("aria-label", value);
-
-               return stars;
-       },
-
-       traffic: function traffic(cell, formatterParams, onRendered) {
-               var value = this.sanitizeHTML(cell.getValue()) || 0,
-                   el = document.createElement("span"),
-                   max = formatterParams && formatterParams.max ? formatterParams.max : 100,
-                   min = formatterParams && formatterParams.min ? formatterParams.min : 0,
-                   colors = formatterParams && typeof formatterParams.color !== "undefined" ? formatterParams.color : ["red", "orange", "green"],
-                   color = "#666666",
-                   percent,
-                   percentValue;
-
-               if (isNaN(value) || typeof cell.getValue() === "undefined") {
-                       return;
-               }
-
-               el.classList.add("tabulator-traffic-light");
-
-               //make sure value is in range
-               percentValue = parseFloat(value) <= max ? parseFloat(value) : max;
-               percentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;
-
-               //workout percentage
-               percent = (max - min) / 100;
-               percentValue = Math.round((percentValue - min) / percent);
-
-               //set color
-               switch (typeof colors === "undefined" ? "undefined" : _typeof(colors)) {
-                       case "string":
-                               color = colors;
-                               break;
-                       case "function":
-                               color = colors(value);
-                               break;
-                       case "object":
-                               if (Array.isArray(colors)) {
-                                       var unit = 100 / colors.length;
-                                       var index = Math.floor(percentValue / unit);
-
-                                       index = Math.min(index, colors.length - 1);
-                                       index = Math.max(index, 0);
-                                       color = colors[index];
-                                       break;
-                               }
-               }
-
-               el.style.backgroundColor = color;
-
-               return el;
-       },
-
-       //progress bar
-       progress: function progress(cell, formatterParams, onRendered) {
-               //progress bar
-               var value = this.sanitizeHTML(cell.getValue()) || 0,
-                   element = cell.getElement(),
-                   max = formatterParams && formatterParams.max ? formatterParams.max : 100,
-                   min = formatterParams && formatterParams.min ? formatterParams.min : 0,
-                   legendAlign = formatterParams && formatterParams.legendAlign ? formatterParams.legendAlign : "center",
-                   percent,
-                   percentValue,
-                   color,
-                   legend,
-                   legendColor,
-                   top,
-                   left,
-                   right,
-                   bottom;
-
-               //make sure value is in range
-               percentValue = parseFloat(value) <= max ? parseFloat(value) : max;
-               percentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;
-
-               //workout percentage
-               percent = (max - min) / 100;
-               percentValue = Math.round((percentValue - min) / percent);
-
-               //set bar color
-               switch (_typeof(formatterParams.color)) {
-                       case "string":
-                               color = formatterParams.color;
-                               break;
-                       case "function":
-                               color = formatterParams.color(value);
-                               break;
-                       case "object":
-                               if (Array.isArray(formatterParams.color)) {
-                                       var unit = 100 / formatterParams.color.length;
-                                       var index = Math.floor(percentValue / unit);
-
-                                       index = Math.min(index, formatterParams.color.length - 1);
-                                       index = Math.max(index, 0);
-                                       color = formatterParams.color[index];
-                                       break;
-                               }
-                       default:
-                               color = "#2DC214";
-               }
-
-               //generate legend
-               switch (_typeof(formatterParams.legend)) {
-                       case "string":
-                               legend = formatterParams.legend;
-                               break;
-                       case "function":
-                               legend = formatterParams.legend(value);
-                               break;
-                       case "boolean":
-                               legend = value;
-                               break;
-                       default:
-                               legend = false;
-               }
-
-               //set legend color
-               switch (_typeof(formatterParams.legendColor)) {
-                       case "string":
-                               legendColor = formatterParams.legendColor;
-                               break;
-                       case "function":
-                               legendColor = formatterParams.legendColor(value);
-                               break;
-                       case "object":
-                               if (Array.isArray(formatterParams.legendColor)) {
-                                       var unit = 100 / formatterParams.legendColor.length;
-                                       var index = Math.floor(percentValue / unit);
-
-                                       index = Math.min(index, formatterParams.legendColor.length - 1);
-                                       index = Math.max(index, 0);
-                                       legendColor = formatterParams.legendColor[index];
-                               }
-                               break;
-                       default:
-                               legendColor = "#000";
-               }
-
-               element.style.minWidth = "30px";
-               element.style.position = "relative";
-
-               element.setAttribute("aria-label", percentValue);
-
-               var barEl = document.createElement("div");
-               barEl.style.display = "inline-block";
-               barEl.style.position = "relative";
-               barEl.style.width = percentValue + "%";
-               barEl.style.backgroundColor = color;
-               barEl.style.height = "100%";
-
-               barEl.setAttribute('data-max', max);
-               barEl.setAttribute('data-min', min);
-
-               if (legend) {
-                       var legendEl = document.createElement("div");
-                       legendEl.style.position = "absolute";
-                       legendEl.style.top = "4px";
-                       legendEl.style.left = 0;
-                       legendEl.style.textAlign = legendAlign;
-                       legendEl.style.width = "100%";
-                       legendEl.style.color = legendColor;
-                       legendEl.innerHTML = legend;
-               }
-
-               onRendered(function () {
-
-                       //handle custom element needed if formatter is to be included in printed/downloaded output
-                       if (!(cell instanceof CellComponent)) {
-                               var holderEl = document.createElement("div");
-                               holderEl.style.position = "absolute";
-                               holderEl.style.top = "4px";
-                               holderEl.style.bottom = "4px";
-                               holderEl.style.left = "4px";
-                               holderEl.style.right = "4px";
-
-                               element.appendChild(holderEl);
-
-                               element = holderEl;
-                       }
-
-                       element.appendChild(barEl);
-
-                       if (legend) {
-                               element.appendChild(legendEl);
-                       }
-               });
-
-               return "";
-       },
-
-       //background color
-       color: function color(cell, formatterParams, onRendered) {
-               cell.getElement().style.backgroundColor = this.sanitizeHTML(cell.getValue());
-               return "";
-       },
-
-       //tick icon
-       buttonTick: function buttonTick(cell, formatterParams, onRendered) {
-               return '<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34  c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351  l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07  l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>';
-       },
-
-       //cross icon
-       buttonCross: function buttonCross(cell, formatterParams, onRendered) {
-               return '<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272  c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0  l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269  c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73  L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>';
-       },
-
-       //current row number
-       rownum: function rownum(cell, formatterParams, onRendered) {
-               return this.table.rowManager.activeRows.indexOf(cell.getRow()._getSelf()) + 1;
-       },
-
-       //row handle
-       handle: function handle(cell, formatterParams, onRendered) {
-               cell.getElement().classList.add("tabulator-row-handle");
-               return "<div class='tabulator-row-handle-box'><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div></div>";
-       },
-
-       responsiveCollapse: function responsiveCollapse(cell, formatterParams, onRendered) {
-               var self = this,
-                   open = false,
-                   el = document.createElement("div"),
-                   config = cell.getRow()._row.modules.responsiveLayout;
-
-               el.classList.add("tabulator-responsive-collapse-toggle");
-               el.innerHTML = "<span class='tabulator-responsive-collapse-toggle-open'>+</span><span class='tabulator-responsive-collapse-toggle-close'>-</span>";
-
-               cell.getElement().classList.add("tabulator-row-handle");
-
-               function toggleList(isOpen) {
-                       var collapseEl = config.element;
-
-                       config.open = isOpen;
-
-                       if (collapseEl) {
-
-                               if (config.open) {
-                                       el.classList.add("open");
-                                       collapseEl.style.display = '';
-                               } else {
-                                       el.classList.remove("open");
-                                       collapseEl.style.display = 'none';
-                               }
-                       }
-               }
-
-               el.addEventListener("click", function (e) {
-                       e.stopImmediatePropagation();
-                       toggleList(!config.open);
-               });
-
-               toggleList(config.open);
-
-               return el;
-       },
-
-       rowSelection: function rowSelection(cell) {
-               var _this = this;
-
-               var checkbox = document.createElement("input");
-
-               checkbox.type = 'checkbox';
-
-               if (this.table.modExists("selectRow", true)) {
-
-                       checkbox.addEventListener("click", function (e) {
-                               e.stopPropagation();
-                       });
-
-                       if (typeof cell.getRow == 'function') {
-                               var row = cell.getRow();
-
-                               checkbox.addEventListener("change", function (e) {
-                                       row.toggleSelect();
-                               });
-
-                               checkbox.checked = row.isSelected();
-                               this.table.modules.selectRow.registerRowSelectCheckbox(row, checkbox);
-                       } else {
-                               checkbox.addEventListener("change", function (e) {
-                                       if (_this.table.modules.selectRow.selectedRows.length) {
-                                               _this.table.deselectRow();
-                                       } else {
-                                               _this.table.selectRow();
-                                       }
-                               });
-
-                               this.table.modules.selectRow.registerHeaderSelectCheckbox(checkbox);
-                       }
-               }
-               return checkbox;
-       }
-};
-
-Tabulator.prototype.registerModule("format", Format);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/format.min.js b/app/static/vendors/tabulator/js/modules/format.min.js
deleted file mode 100644 (file)
index 0b39b61..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Format=function(e){this.table=e};Format.prototype.initializeColumn=function(e){e.modules.format=this.lookupFormatter(e,""),void 0!==e.definition.formatterPrint&&(e.modules.format.print=this.lookupFormatter(e,"Print")),void 0!==e.definition.formatterClipboard&&(e.modules.format.clipboard=this.lookupFormatter(e,"Clipboard")),void 0!==e.definition.formatterHtmlOutput&&(e.modules.format.htmlOutput=this.lookupFormatter(e,"HtmlOutput"))},Format.prototype.lookupFormatter=function(e,t){var o={params:e.definition["formatter"+t+"Params"]||{}},r=e.definition["formatter"+t];switch(void 0===r?"undefined":_typeof(r)){case"string":"tick"===r&&(r="tickCross",void 0===o.params.crossElement&&(o.params.crossElement=!1),console.warn("DEPRECATION WARNING - the tick formatter has been deprecated, please use the tickCross formatter with the crossElement param set to false")),this.formatters[r]?o.formatter=this.formatters[r]:(console.warn("Formatter Error - No such formatter found: ",r),o.formatter=this.formatters.plaintext);break;case"function":o.formatter=r;break;default:o.formatter=this.formatters.plaintext}return o},Format.prototype.cellRendered=function(e){e.modules.format&&e.modules.format.renderedCallback&&e.modules.format.renderedCallback()},Format.prototype.formatValue=function(e){function t(t){e.modules.format||(e.modules.format={}),e.modules.format.renderedCallback=t}var o=e.getComponent(),r="function"==typeof e.column.modules.format.params?e.column.modules.format.params(o):e.column.modules.format.params;return e.column.modules.format.formatter.call(this,o,r,t)},Format.prototype.formatExportValue=function(e,t){var o,r=e.column.modules.format[t];if(r){var a=function(t){e.modules.format||(e.modules.format={}),e.modules.format.renderedCallback=t};return o="function"==typeof r.params?r.params(component):r.params,r.formatter.call(this,e.getComponent(),o,a)}return this.formatValue(e)},Format.prototype.sanitizeHTML=function(e){if(e){var t={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;","`":"&#x60;","=":"&#x3D;"};return String(e).replace(/[&<>"'`=\/]/g,function(e){return t[e]})}return e},Format.prototype.emptyToSpace=function(e){return null===e||void 0===e||""===e?"&nbsp;":e},Format.prototype.getFormatter=function(e){var e;switch(void 0===e?"undefined":_typeof(e)){case"string":this.formatters[e]?e=this.formatters[e]:(console.warn("Formatter Error - No such formatter found: ",e),e=this.formatters.plaintext);break;case"function":e=e;break;default:e=this.formatters.plaintext}return e},Format.prototype.formatters={plaintext:function(e,t,o){return this.emptyToSpace(this.sanitizeHTML(e.getValue()))},html:function(e,t,o){return e.getValue()},textarea:function(e,t,o){return e.getElement().style.whiteSpace="pre-wrap",this.emptyToSpace(this.sanitizeHTML(e.getValue()))},money:function(e,t,o){var r,a,n,l,i=parseFloat(e.getValue()),s=t.decimal||".",c=t.thousand||",",u=t.symbol||"",d=!!t.symbolAfter,m=void 0!==t.precision?t.precision:2;if(isNaN(i))return this.emptyToSpace(this.sanitizeHTML(e.getValue()));for(r=!1!==m?i.toFixed(m):i,r=String(r).split("."),a=r[0],n=r.length>1?s+r[1]:"",l=/(\d+)(\d{3})/;l.test(a);)a=a.replace(l,"$1"+c+"$2");return d?a+n+u:u+a+n},link:function(e,t,o){var r,a=e.getValue(),n=t.urlPrefix||"",l=t.download,i=a,s=document.createElement("a");if(t.labelField&&(r=e.getData(),i=r[t.labelField]),t.label)switch(_typeof(t.label)){case"string":i=t.label;break;case"function":i=t.label(e)}if(i){if(t.urlField&&(r=e.getData(),a=r[t.urlField]),t.url)switch(_typeof(t.url)){case"string":a=t.url;break;case"function":a=t.url(e)}return s.setAttribute("href",n+a),t.target&&s.setAttribute("target",t.target),t.download&&(l="function"==typeof l?l(e):!0===l?"":l,s.setAttribute("download",l)),s.innerHTML=this.emptyToSpace(this.sanitizeHTML(i)),s}return"&nbsp;"},image:function(e,t,o){var r=document.createElement("img");switch(r.setAttribute("src",e.getValue()),_typeof(t.height)){case"number":r.style.height=t.height+"px";break;case"string":r.style.height=t.height}switch(_typeof(t.width)){case"number":r.style.width=t.width+"px";break;case"string":r.style.width=t.width}return r.addEventListener("load",function(){e.getRow().normalizeHeight()}),r},tickCross:function(e,t,o){var r=e.getValue(),a=e.getElement(),n=t.allowEmpty,l=t.allowTruthy,i=void 0!==t.tickElement?t.tickElement:'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34  c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351  l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07  l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>',s=void 0!==t.crossElement?t.crossElement:'<svg enable-background="new 0 0 24 24" height="14" width="14"  viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272  c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0  l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269  c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73  L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>';return l&&r||!0===r||"true"===r||"True"===r||1===r||"1"===r?(a.setAttribute("aria-checked",!0),i||""):!n||"null"!==r&&""!==r&&null!==r&&void 0!==r?(a.setAttribute("aria-checked",!1),s||""):(a.setAttribute("aria-checked","mixed"),"")},datetime:function(e,t,o){var r=t.inputFormat||"YYYY-MM-DD hh:mm:ss",a=t.outputFormat||"DD/MM/YYYY hh:mm:ss",n=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",l=e.getValue(),i=moment(l,r);return i.isValid()?t.timezone?i.tz(t.timezone).format(a):i.format(a):!0===n?l:"function"==typeof n?n(l):n},datetimediff:function(e,t,o){var r=t.inputFormat||"YYYY-MM-DD hh:mm:ss",a=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",n=void 0!==t.suffix&&t.suffix,l=void 0!==t.unit?t.unit:void 0,i=void 0!==t.humanize&&t.humanize,s=void 0!==t.date?t.date:moment(),c=e.getValue(),u=moment(c,r);return u.isValid()?i?moment.duration(u.diff(s)).humanize(n):u.diff(s,l)+(n?" "+n:""):!0===a?c:"function"==typeof a?a(c):a},lookup:function(e,t,o){var r=e.getValue();return void 0===t[r]?(console.warn("Missing display value for "+r),r):t[r]},star:function(e,t,o){var r=e.getValue(),a=e.getElement(),n=t&&t.stars?t.stars:5,l=document.createElement("span"),i=document.createElementNS("http://www.w3.org/2000/svg","svg");l.style.verticalAlign="middle",i.setAttribute("width","14"),i.setAttribute("height","14"),i.setAttribute("viewBox","0 0 512 512"),i.setAttribute("xml:space","preserve"),i.style.padding="0 1px",r=r&&!isNaN(r)?parseInt(r):0,r=Math.max(0,Math.min(r,n));for(var s=1;s<=n;s++){var c=i.cloneNode(!0);c.innerHTML=s<=r?'<polygon fill="#FFEA00" stroke="#C1AB60" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>':'<polygon fill="#D2D2D2" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>',l.appendChild(c)}return a.style.whiteSpace="nowrap",a.style.overflow="hidden",a.style.textOverflow="ellipsis",a.setAttribute("aria-label",r),l},traffic:function(e,t,o){var r,a,n=this.sanitizeHTML(e.getValue())||0,l=document.createElement("span"),i=t&&t.max?t.max:100,s=t&&t.min?t.min:0,c=t&&void 0!==t.color?t.color:["red","orange","green"],u="#666666";if(!isNaN(n)&&void 0!==e.getValue()){switch(l.classList.add("tabulator-traffic-light"),a=parseFloat(n)<=i?parseFloat(n):i,a=parseFloat(a)>=s?parseFloat(a):s,r=(i-s)/100,a=Math.round((a-s)/r),void 0===c?"undefined":_typeof(c)){case"string":u=c;break;case"function":u=c(n);break;case"object":if(Array.isArray(c)){var d=100/c.length,m=Math.floor(a/d);m=Math.min(m,c.length-1),m=Math.max(m,0),u=c[m];break}}return l.style.backgroundColor=u,l}},progress:function(e,t,o){var r,a,n,l,i,s=this.sanitizeHTML(e.getValue())||0,c=e.getElement(),u=t&&t.max?t.max:100,d=t&&t.min?t.min:0,m=t&&t.legendAlign?t.legendAlign:"center";switch(a=parseFloat(s)<=u?parseFloat(s):u,a=parseFloat(a)>=d?parseFloat(a):d,r=(u-d)/100,a=Math.round((a-d)/r),_typeof(t.color)){case"string":n=t.color;break;case"function":n=t.color(s);break;case"object":if(Array.isArray(t.color)){var p=100/t.color.length,f=Math.floor(a/p);f=Math.min(f,t.color.length-1),f=Math.max(f,0),n=t.color[f];break}default:n="#2DC214"}switch(_typeof(t.legend)){case"string":l=t.legend;break;case"function":l=t.legend(s);break;case"boolean":l=s;break;default:l=!1}switch(_typeof(t.legendColor)){case"string":i=t.legendColor;break;case"function":i=t.legendColor(s);break;case"object":if(Array.isArray(t.legendColor)){var p=100/t.legendColor.length,f=Math.floor(a/p);f=Math.min(f,t.legendColor.length-1),f=Math.max(f,0),i=t.legendColor[f]}break;default:i="#000"}c.style.minWidth="30px",c.style.position="relative",c.setAttribute("aria-label",a);var h=document.createElement("div");if(h.style.display="inline-block",h.style.position="relative",h.style.width=a+"%",h.style.backgroundColor=n,h.style.height="100%",h.setAttribute("data-max",u),h.setAttribute("data-min",d),l){var g=document.createElement("div");g.style.position="absolute",g.style.top="4px",g.style.left=0,g.style.textAlign=m,g.style.width="100%",g.style.color=i,g.innerHTML=l}return o(function(){if(!(e instanceof CellComponent)){var t=document.createElement("div");t.style.position="absolute",t.style.top="4px",t.style.bottom="4px",t.style.left="4px",t.style.right="4px",c.appendChild(t),c=t}c.appendChild(h),l&&c.appendChild(g)}),""},color:function(e,t,o){return e.getElement().style.backgroundColor=this.sanitizeHTML(e.getValue()),""},buttonTick:function(e,t,o){return'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34  c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351  l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07  l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>'},buttonCross:function(e,t,o){return'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272  c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0  l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269  c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73  L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>'},rownum:function(e,t,o){return this.table.rowManager.activeRows.indexOf(e.getRow()._getSelf())+1},handle:function(e,t,o){return e.getElement().classList.add("tabulator-row-handle"),"<div class='tabulator-row-handle-box'><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div></div>"},responsiveCollapse:function(e,t,o){function r(e){var t=n.element;n.open=e,t&&(n.open?(a.classList.add("open"),t.style.display=""):(a.classList.remove("open"),t.style.display="none"))}var a=document.createElement("div"),n=e.getRow()._row.modules.responsiveLayout;return a.classList.add("tabulator-responsive-collapse-toggle"),a.innerHTML="<span class='tabulator-responsive-collapse-toggle-open'>+</span><span class='tabulator-responsive-collapse-toggle-close'>-</span>",e.getElement().classList.add("tabulator-row-handle"),a.addEventListener("click",function(e){e.stopImmediatePropagation(),r(!n.open)}),r(n.open),a},rowSelection:function(e){var t=this,o=document.createElement("input");if(o.type="checkbox",this.table.modExists("selectRow",!0))if(o.addEventListener("click",function(e){e.stopPropagation()}),"function"==typeof e.getRow){var r=e.getRow();o.addEventListener("change",function(e){r.toggleSelect()}),o.checked=r.isSelected(),this.table.modules.selectRow.registerRowSelectCheckbox(r,o)}else o.addEventListener("change",function(e){t.table.modules.selectRow.selectedRows.length?t.table.deselectRow():t.table.selectRow()}),this.table.modules.selectRow.registerHeaderSelectCheckbox(o);return o}},Tabulator.prototype.registerModule("format",Format);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/frozen_columns.js b/app/static/vendors/tabulator/js/modules/frozen_columns.js
deleted file mode 100644 (file)
index fdbc4ab..0000000
+++ /dev/null
@@ -1,275 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-
-var FrozenColumns = function FrozenColumns(table) {
-       this.table = table; //hold Tabulator object
-       this.leftColumns = [];
-       this.rightColumns = [];
-       this.leftMargin = 0;
-       this.rightMargin = 0;
-       this.rightPadding = 0;
-       this.initializationMode = "left";
-       this.active = false;
-       this.scrollEndTimer = false;
-};
-
-//reset initial state
-FrozenColumns.prototype.reset = function () {
-       this.initializationMode = "left";
-       this.leftColumns = [];
-       this.rightColumns = [];
-       this.leftMargin = 0;
-       this.rightMargin = 0;
-       this.rightMargin = 0;
-       this.active = false;
-
-       this.table.columnManager.headersElement.style.marginLeft = 0;
-       this.table.columnManager.element.style.paddingRight = 0;
-};
-
-//initialize specific column
-FrozenColumns.prototype.initializeColumn = function (column) {
-       var config = { margin: 0, edge: false };
-
-       if (!column.isGroup) {
-
-               if (this.frozenCheck(column)) {
-
-                       config.position = this.initializationMode;
-
-                       if (this.initializationMode == "left") {
-                               this.leftColumns.push(column);
-                       } else {
-                               this.rightColumns.unshift(column);
-                       }
-
-                       this.active = true;
-
-                       column.modules.frozen = config;
-               } else {
-                       this.initializationMode = "right";
-               }
-       }
-};
-
-FrozenColumns.prototype.frozenCheck = function (column) {
-       var frozen = false;
-
-       if (column.parent.isGroup && column.definition.frozen) {
-               console.warn("Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups");
-       }
-
-       if (column.parent.isGroup) {
-               return this.frozenCheck(column.parent);
-       } else {
-               return column.definition.frozen;
-       }
-
-       return frozen;
-};
-
-//quick layout to smooth horizontal scrolling
-FrozenColumns.prototype.scrollHorizontal = function () {
-       var _this = this;
-
-       var rows;
-
-       if (this.active) {
-               clearTimeout(this.scrollEndTimer);
-
-               //layout all rows after scroll is complete
-               this.scrollEndTimer = setTimeout(function () {
-                       _this.layout();
-               }, 100);
-
-               rows = this.table.rowManager.getVisibleRows();
-
-               this.calcMargins();
-
-               this.layoutColumnPosition();
-
-               this.layoutCalcRows();
-
-               rows.forEach(function (row) {
-                       if (row.type === "row") {
-                               _this.layoutRow(row);
-                       }
-               });
-
-               this.table.rowManager.tableElement.style.marginRight = this.rightMargin;
-       }
-};
-
-//calculate margins for rows
-FrozenColumns.prototype.calcMargins = function () {
-       this.leftMargin = this._calcSpace(this.leftColumns, this.leftColumns.length) + "px";
-       this.table.columnManager.headersElement.style.marginLeft = this.leftMargin;
-
-       this.rightMargin = this._calcSpace(this.rightColumns, this.rightColumns.length) + "px";
-       this.table.columnManager.element.style.paddingRight = this.rightMargin;
-
-       //calculate right frozen columns
-       this.rightPadding = this.table.rowManager.element.clientWidth + this.table.columnManager.scrollLeft;
-};
-
-//layout calculation rows
-FrozenColumns.prototype.layoutCalcRows = function () {
-       if (this.table.modExists("columnCalcs")) {
-               if (this.table.modules.columnCalcs.topInitialized && this.table.modules.columnCalcs.topRow) {
-                       this.layoutRow(this.table.modules.columnCalcs.topRow);
-               }
-               if (this.table.modules.columnCalcs.botInitialized && this.table.modules.columnCalcs.botRow) {
-                       this.layoutRow(this.table.modules.columnCalcs.botRow);
-               }
-       }
-};
-
-//calculate column positions and layout headers
-FrozenColumns.prototype.layoutColumnPosition = function (allCells) {
-       var _this2 = this;
-
-       var leftParents = [];
-
-       this.leftColumns.forEach(function (column, i) {
-               column.modules.frozen.margin = _this2._calcSpace(_this2.leftColumns, i) + _this2.table.columnManager.scrollLeft + "px";
-
-               if (i == _this2.leftColumns.length - 1) {
-                       column.modules.frozen.edge = true;
-               } else {
-                       column.modules.frozen.edge = false;
-               }
-
-               if (column.parent.isGroup) {
-                       var parentEl = _this2.getColGroupParentElement(column);
-                       if (!leftParents.includes(parentEl)) {
-                               _this2.layoutElement(parentEl, column);
-                               leftParents.push(parentEl);
-                       }
-
-                       if (column.modules.frozen.edge) {
-                               parentEl.classList.add("tabulator-frozen-" + column.modules.frozen.position);
-                       }
-               } else {
-                       _this2.layoutElement(column.getElement(), column);
-               }
-
-               if (allCells) {
-                       column.cells.forEach(function (cell) {
-                               _this2.layoutElement(cell.getElement(), column);
-                       });
-               }
-       });
-
-       this.rightColumns.forEach(function (column, i) {
-               column.modules.frozen.margin = _this2.rightPadding - _this2._calcSpace(_this2.rightColumns, i + 1) + "px";
-
-               if (i == _this2.rightColumns.length - 1) {
-                       column.modules.frozen.edge = true;
-               } else {
-                       column.modules.frozen.edge = false;
-               }
-
-               if (column.parent.isGroup) {
-                       _this2.layoutElement(_this2.getColGroupParentElement(column), column);
-               } else {
-                       _this2.layoutElement(column.getElement(), column);
-               }
-
-               if (allCells) {
-                       column.cells.forEach(function (cell) {
-                               _this2.layoutElement(cell.getElement(), column);
-                       });
-               }
-       });
-};
-
-FrozenColumns.prototype.getColGroupParentElement = function (column) {
-       return column.parent.isGroup ? this.getColGroupParentElement(column.parent) : column.getElement();
-};
-
-//layout columns appropropriatly
-FrozenColumns.prototype.layout = function () {
-       var self = this,
-           rightMargin = 0;
-
-       if (self.active) {
-
-               //calculate row padding
-               this.calcMargins();
-
-               // self.table.rowManager.activeRows.forEach(function(row){
-               //      self.layoutRow(row);
-               // });
-
-               // if(self.table.options.dataTree){
-               self.table.rowManager.getDisplayRows().forEach(function (row) {
-                       if (row.type === "row") {
-                               self.layoutRow(row);
-                       }
-               });
-               // }
-
-               this.layoutCalcRows();
-
-               //calculate left columns
-               this.layoutColumnPosition(true);
-
-               // if(tableHolder.scrollHeight > tableHolder.clientHeight){
-               //      rightMargin -= tableHolder.offsetWidth - tableHolder.clientWidth;
-               // }
-
-               this.table.rowManager.tableElement.style.marginRight = this.rightMargin;
-       }
-};
-
-FrozenColumns.prototype.layoutRow = function (row) {
-       var _this3 = this;
-
-       var rowEl = row.getElement();
-
-       rowEl.style.paddingLeft = this.leftMargin;
-       // rowEl.style.paddingRight = this.rightMargin + "px";
-
-       this.leftColumns.forEach(function (column) {
-               var cell = row.getCell(column);
-
-               if (cell) {
-                       _this3.layoutElement(cell.getElement(), column);
-               }
-       });
-
-       this.rightColumns.forEach(function (column) {
-               var cell = row.getCell(column);
-
-               if (cell) {
-                       _this3.layoutElement(cell.getElement(), column);
-               }
-       });
-};
-
-FrozenColumns.prototype.layoutElement = function (element, column) {
-
-       if (column.modules.frozen) {
-               element.style.position = "absolute";
-               element.style.left = column.modules.frozen.margin;
-
-               element.classList.add("tabulator-frozen");
-
-               if (column.modules.frozen.edge) {
-                       element.classList.add("tabulator-frozen-" + column.modules.frozen.position);
-               }
-       }
-};
-
-FrozenColumns.prototype._calcSpace = function (columns, index) {
-       var width = 0;
-
-       for (var i = 0; i < index; i++) {
-               if (columns[i].visible) {
-                       width += columns[i].getWidth();
-               }
-       }
-
-       return width;
-};
-
-Tabulator.prototype.registerModule("frozenColumns", FrozenColumns);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/frozen_columns.min.js b/app/static/vendors/tabulator/js/modules/frozen_columns.min.js
deleted file mode 100644 (file)
index bf2bb60..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-var FrozenColumns=function(t){this.table=t,this.leftColumns=[],this.rightColumns=[],this.leftMargin=0,this.rightMargin=0,this.rightPadding=0,this.initializationMode="left",this.active=!1,this.scrollEndTimer=!1};FrozenColumns.prototype.reset=function(){this.initializationMode="left",this.leftColumns=[],this.rightColumns=[],this.leftMargin=0,this.rightMargin=0,this.rightMargin=0,this.active=!1,this.table.columnManager.headersElement.style.marginLeft=0,this.table.columnManager.element.style.paddingRight=0},FrozenColumns.prototype.initializeColumn=function(t){var e={margin:0,edge:!1};t.isGroup||(this.frozenCheck(t)?(e.position=this.initializationMode,"left"==this.initializationMode?this.leftColumns.push(t):this.rightColumns.unshift(t),this.active=!0,t.modules.frozen=e):this.initializationMode="right")},FrozenColumns.prototype.frozenCheck=function(t){return t.parent.isGroup&&t.definition.frozen&&console.warn("Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups"),t.parent.isGroup?this.frozenCheck(t.parent):t.definition.frozen},FrozenColumns.prototype.scrollHorizontal=function(){var t,e=this;this.active&&(clearTimeout(this.scrollEndTimer),this.scrollEndTimer=setTimeout(function(){e.layout()},100),t=this.table.rowManager.getVisibleRows(),this.calcMargins(),this.layoutColumnPosition(),this.layoutCalcRows(),t.forEach(function(t){"row"===t.type&&e.layoutRow(t)}),this.table.rowManager.tableElement.style.marginRight=this.rightMargin)},FrozenColumns.prototype.calcMargins=function(){this.leftMargin=this._calcSpace(this.leftColumns,this.leftColumns.length)+"px",this.table.columnManager.headersElement.style.marginLeft=this.leftMargin,this.rightMargin=this._calcSpace(this.rightColumns,this.rightColumns.length)+"px",this.table.columnManager.element.style.paddingRight=this.rightMargin,this.rightPadding=this.table.rowManager.element.clientWidth+this.table.columnManager.scrollLeft},FrozenColumns.prototype.layoutCalcRows=function(){this.table.modExists("columnCalcs")&&(this.table.modules.columnCalcs.topInitialized&&this.table.modules.columnCalcs.topRow&&this.layoutRow(this.table.modules.columnCalcs.topRow),this.table.modules.columnCalcs.botInitialized&&this.table.modules.columnCalcs.botRow&&this.layoutRow(this.table.modules.columnCalcs.botRow))},FrozenColumns.prototype.layoutColumnPosition=function(t){var e=this,o=[];this.leftColumns.forEach(function(n,l){if(n.modules.frozen.margin=e._calcSpace(e.leftColumns,l)+e.table.columnManager.scrollLeft+"px",l==e.leftColumns.length-1?n.modules.frozen.edge=!0:n.modules.frozen.edge=!1,n.parent.isGroup){var i=e.getColGroupParentElement(n);o.includes(i)||(e.layoutElement(i,n),o.push(i)),n.modules.frozen.edge&&i.classList.add("tabulator-frozen-"+n.modules.frozen.position)}else e.layoutElement(n.getElement(),n);t&&n.cells.forEach(function(t){e.layoutElement(t.getElement(),n)})}),this.rightColumns.forEach(function(o,n){o.modules.frozen.margin=e.rightPadding-e._calcSpace(e.rightColumns,n+1)+"px",n==e.rightColumns.length-1?o.modules.frozen.edge=!0:o.modules.frozen.edge=!1,o.parent.isGroup?e.layoutElement(e.getColGroupParentElement(o),o):e.layoutElement(o.getElement(),o),t&&o.cells.forEach(function(t){e.layoutElement(t.getElement(),o)})})},FrozenColumns.prototype.getColGroupParentElement=function(t){return t.parent.isGroup?this.getColGroupParentElement(t.parent):t.getElement()},FrozenColumns.prototype.layout=function(){var t=this;t.active&&(this.calcMargins(),t.table.rowManager.getDisplayRows().forEach(function(e){"row"===e.type&&t.layoutRow(e)}),this.layoutCalcRows(),this.layoutColumnPosition(!0),this.table.rowManager.tableElement.style.marginRight=this.rightMargin)},FrozenColumns.prototype.layoutRow=function(t){var e=this;t.getElement().style.paddingLeft=this.leftMargin,this.leftColumns.forEach(function(o){var n=t.getCell(o);n&&e.layoutElement(n.getElement(),o)}),this.rightColumns.forEach(function(o){var n=t.getCell(o);n&&e.layoutElement(n.getElement(),o)})},FrozenColumns.prototype.layoutElement=function(t,e){e.modules.frozen&&(t.style.position="absolute",t.style.left=e.modules.frozen.margin,t.classList.add("tabulator-frozen"),e.modules.frozen.edge&&t.classList.add("tabulator-frozen-"+e.modules.frozen.position))},FrozenColumns.prototype._calcSpace=function(t,e){for(var o=0,n=0;n<e;n++)t[n].visible&&(o+=t[n].getWidth());return o},Tabulator.prototype.registerModule("frozenColumns",FrozenColumns);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/frozen_rows.js b/app/static/vendors/tabulator/js/modules/frozen_rows.js
deleted file mode 100644 (file)
index 42dd3e5..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-
-var FrozenRows = function FrozenRows(table) {
-       this.table = table; //hold Tabulator object
-       this.topElement = document.createElement("div");
-       this.rows = [];
-       this.displayIndex = 0; //index in display pipeline
-};
-
-FrozenRows.prototype.initialize = function () {
-       this.rows = [];
-
-       this.topElement.classList.add("tabulator-frozen-rows-holder");
-
-       // this.table.columnManager.element.append(this.topElement);
-       this.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);
-};
-
-FrozenRows.prototype.setDisplayIndex = function (index) {
-       this.displayIndex = index;
-};
-
-FrozenRows.prototype.getDisplayIndex = function () {
-       return this.displayIndex;
-};
-
-FrozenRows.prototype.isFrozen = function () {
-       return !!this.rows.length;
-};
-
-//filter frozen rows out of display data
-FrozenRows.prototype.getRows = function (rows) {
-       var self = this,
-           frozen = [],
-           output = rows.slice(0);
-
-       this.rows.forEach(function (row) {
-               var index = output.indexOf(row);
-
-               if (index > -1) {
-                       output.splice(index, 1);
-               }
-       });
-
-       return output;
-};
-
-FrozenRows.prototype.freezeRow = function (row) {
-       if (!row.modules.frozen) {
-               row.modules.frozen = true;
-               this.topElement.appendChild(row.getElement());
-               row.initialize();
-               row.normalizeHeight();
-               this.table.rowManager.adjustTableSize();
-
-               this.rows.push(row);
-
-               this.table.rowManager.refreshActiveData("display");
-
-               this.styleRows();
-       } else {
-               console.warn("Freeze Error - Row is already frozen");
-       }
-};
-
-FrozenRows.prototype.unfreezeRow = function (row) {
-       var index = this.rows.indexOf(row);
-
-       if (row.modules.frozen) {
-
-               row.modules.frozen = false;
-
-               var rowEl = row.getElement();
-               rowEl.parentNode.removeChild(rowEl);
-
-               this.table.rowManager.adjustTableSize();
-
-               this.rows.splice(index, 1);
-
-               this.table.rowManager.refreshActiveData("display");
-
-               if (this.rows.length) {
-                       this.styleRows();
-               }
-       } else {
-               console.warn("Freeze Error - Row is already unfrozen");
-       }
-};
-
-FrozenRows.prototype.styleRows = function (row) {
-       var self = this;
-
-       this.rows.forEach(function (row, i) {
-               self.table.rowManager.styleRow(row, i);
-       });
-};
-
-Tabulator.prototype.registerModule("frozenRows", FrozenRows);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/frozen_rows.min.js b/app/static/vendors/tabulator/js/modules/frozen_rows.min.js
deleted file mode 100644 (file)
index c38e992..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-var FrozenRows=function(e){this.table=e,this.topElement=document.createElement("div"),this.rows=[],this.displayIndex=0};FrozenRows.prototype.initialize=function(){this.rows=[],this.topElement.classList.add("tabulator-frozen-rows-holder"),this.table.columnManager.getElement().insertBefore(this.topElement,this.table.columnManager.headersElement.nextSibling)},FrozenRows.prototype.setDisplayIndex=function(e){this.displayIndex=e},FrozenRows.prototype.getDisplayIndex=function(){return this.displayIndex},FrozenRows.prototype.isFrozen=function(){return!!this.rows.length},FrozenRows.prototype.getRows=function(e){var o=e.slice(0);return this.rows.forEach(function(e){var t=o.indexOf(e);t>-1&&o.splice(t,1)}),o},FrozenRows.prototype.freezeRow=function(e){e.modules.frozen?console.warn("Freeze Error - Row is already frozen"):(e.modules.frozen=!0,this.topElement.appendChild(e.getElement()),e.initialize(),e.normalizeHeight(),this.table.rowManager.adjustTableSize(),this.rows.push(e),this.table.rowManager.refreshActiveData("display"),this.styleRows())},FrozenRows.prototype.unfreezeRow=function(e){var o=this.rows.indexOf(e);if(e.modules.frozen){e.modules.frozen=!1;var t=e.getElement();t.parentNode.removeChild(t),this.table.rowManager.adjustTableSize(),this.rows.splice(o,1),this.table.rowManager.refreshActiveData("display"),this.rows.length&&this.styleRows()}else console.warn("Freeze Error - Row is already unfrozen")},FrozenRows.prototype.styleRows=function(e){var o=this;this.rows.forEach(function(e,t){o.table.rowManager.styleRow(e,t)})},Tabulator.prototype.registerModule("frozenRows",FrozenRows);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/group_rows.js b/app/static/vendors/tabulator/js/modules/group_rows.js
deleted file mode 100644 (file)
index 05731ec..0000000
+++ /dev/null
@@ -1,1087 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-
-//public group object
-var GroupComponent = function GroupComponent(group) {
-       this._group = group;
-       this.type = "GroupComponent";
-};
-
-GroupComponent.prototype.getKey = function () {
-       return this._group.key;
-};
-
-GroupComponent.prototype.getField = function () {
-       return this._group.field;
-};
-
-GroupComponent.prototype.getElement = function () {
-       return this._group.element;
-};
-
-GroupComponent.prototype.getRows = function () {
-       return this._group.getRows(true);
-};
-
-GroupComponent.prototype.getSubGroups = function () {
-       return this._group.getSubGroups(true);
-};
-
-GroupComponent.prototype.getParentGroup = function () {
-       return this._group.parent ? this._group.parent.getComponent() : false;
-};
-
-GroupComponent.prototype.getVisibility = function () {
-       console.warn("getVisibility function is deprecated, you should now use the isVisible function");
-       return this._group.visible;
-};
-
-GroupComponent.prototype.isVisible = function () {
-       return this._group.visible;
-};
-
-GroupComponent.prototype.show = function () {
-       this._group.show();
-};
-
-GroupComponent.prototype.hide = function () {
-       this._group.hide();
-};
-
-GroupComponent.prototype.toggle = function () {
-       this._group.toggleVisibility();
-};
-
-GroupComponent.prototype._getSelf = function () {
-       return this._group;
-};
-
-GroupComponent.prototype.getTable = function () {
-       return this._group.groupManager.table;
-};
-
-//////////////////////////////////////////////////
-//////////////// Group Functions /////////////////
-//////////////////////////////////////////////////
-
-var Group = function Group(groupManager, parent, level, key, field, generator, oldGroup) {
-
-       this.groupManager = groupManager;
-       this.parent = parent;
-       this.key = key;
-       this.level = level;
-       this.field = field;
-       this.hasSubGroups = level < groupManager.groupIDLookups.length - 1;
-       this.addRow = this.hasSubGroups ? this._addRowToGroup : this._addRow;
-       this.type = "group"; //type of element
-       this.old = oldGroup;
-       this.rows = [];
-       this.groups = [];
-       this.groupList = [];
-       this.generator = generator;
-       this.elementContents = false;
-       this.height = 0;
-       this.outerHeight = 0;
-       this.initialized = false;
-       this.calcs = {};
-       this.initialized = false;
-       this.modules = {};
-       this.arrowElement = false;
-
-       this.visible = oldGroup ? oldGroup.visible : typeof groupManager.startOpen[level] !== "undefined" ? groupManager.startOpen[level] : groupManager.startOpen[0];
-
-       this.component = null;
-
-       this.createElements();
-       this.addBindings();
-
-       this.createValueGroups();
-};
-
-Group.prototype.wipe = function () {
-       if (this.groupList.length) {
-               this.groupList.forEach(function (group) {
-                       group.wipe();
-               });
-       } else {
-               this.element = false;
-               this.arrowElement = false;
-               this.elementContents = false;
-       }
-};
-
-Group.prototype.createElements = function () {
-       var arrow = document.createElement("div");
-       arrow.classList.add("tabulator-arrow");
-
-       this.element = document.createElement("div");
-       this.element.classList.add("tabulator-row");
-       this.element.classList.add("tabulator-group");
-       this.element.classList.add("tabulator-group-level-" + this.level);
-       this.element.setAttribute("role", "rowgroup");
-
-       this.arrowElement = document.createElement("div");
-       this.arrowElement.classList.add("tabulator-group-toggle");
-       this.arrowElement.appendChild(arrow);
-
-       //setup movable rows
-       if (this.groupManager.table.options.movableRows !== false && this.groupManager.table.modExists("moveRow")) {
-               this.groupManager.table.modules.moveRow.initializeGroupHeader(this);
-       }
-};
-
-Group.prototype.createValueGroups = function () {
-       var _this = this;
-
-       var level = this.level + 1;
-       if (this.groupManager.allowedValues && this.groupManager.allowedValues[level]) {
-               this.groupManager.allowedValues[level].forEach(function (value) {
-                       _this._createGroup(value, level);
-               });
-       }
-};
-
-Group.prototype.addBindings = function () {
-       var self = this,
-           dblTap,
-           tapHold,
-           tap,
-           toggleElement;
-
-       //handle group click events
-       if (self.groupManager.table.options.groupClick) {
-               self.element.addEventListener("click", function (e) {
-                       self.groupManager.table.options.groupClick.call(self.groupManager.table, e, self.getComponent());
-               });
-       }
-
-       if (self.groupManager.table.options.groupDblClick) {
-               self.element.addEventListener("dblclick", function (e) {
-                       self.groupManager.table.options.groupDblClick.call(self.groupManager.table, e, self.getComponent());
-               });
-       }
-
-       if (self.groupManager.table.options.groupContext) {
-               self.element.addEventListener("contextmenu", function (e) {
-                       self.groupManager.table.options.groupContext.call(self.groupManager.table, e, self.getComponent());
-               });
-       }
-
-       if (self.groupManager.table.options.groupContextMenu && self.groupManager.table.modExists("menu")) {
-               self.groupManager.table.modules.menu.initializeGroup.call(self.groupManager.table.modules.menu, self);
-       }
-
-       if (self.groupManager.table.options.groupTap) {
-
-               tap = false;
-
-               self.element.addEventListener("touchstart", function (e) {
-                       tap = true;
-               }, { passive: true });
-
-               self.element.addEventListener("touchend", function (e) {
-                       if (tap) {
-                               self.groupManager.table.options.groupTap(e, self.getComponent());
-                       }
-
-                       tap = false;
-               });
-       }
-
-       if (self.groupManager.table.options.groupDblTap) {
-
-               dblTap = null;
-
-               self.element.addEventListener("touchend", function (e) {
-
-                       if (dblTap) {
-                               clearTimeout(dblTap);
-                               dblTap = null;
-
-                               self.groupManager.table.options.groupDblTap(e, self.getComponent());
-                       } else {
-
-                               dblTap = setTimeout(function () {
-                                       clearTimeout(dblTap);
-                                       dblTap = null;
-                               }, 300);
-                       }
-               });
-       }
-
-       if (self.groupManager.table.options.groupTapHold) {
-
-               tapHold = null;
-
-               self.element.addEventListener("touchstart", function (e) {
-                       clearTimeout(tapHold);
-
-                       tapHold = setTimeout(function () {
-                               clearTimeout(tapHold);
-                               tapHold = null;
-                               tap = false;
-                               self.groupManager.table.options.groupTapHold(e, self.getComponent());
-                       }, 1000);
-               }, { passive: true });
-
-               self.element.addEventListener("touchend", function (e) {
-                       clearTimeout(tapHold);
-                       tapHold = null;
-               });
-       }
-
-       if (self.groupManager.table.options.groupToggleElement) {
-               toggleElement = self.groupManager.table.options.groupToggleElement == "arrow" ? self.arrowElement : self.element;
-
-               toggleElement.addEventListener("click", function (e) {
-                       e.stopPropagation();
-                       e.stopImmediatePropagation();
-                       self.toggleVisibility();
-               });
-       }
-};
-
-Group.prototype._createGroup = function (groupID, level) {
-       var groupKey = level + "_" + groupID;
-       var group = new Group(this.groupManager, this, level, groupID, this.groupManager.groupIDLookups[level].field, this.groupManager.headerGenerator[level] || this.groupManager.headerGenerator[0], this.old ? this.old.groups[groupKey] : false);
-
-       this.groups[groupKey] = group;
-       this.groupList.push(group);
-};
-
-Group.prototype._addRowToGroup = function (row) {
-
-       var level = this.level + 1;
-
-       if (this.hasSubGroups) {
-               var groupID = this.groupManager.groupIDLookups[level].func(row.getData()),
-                   groupKey = level + "_" + groupID;
-
-               if (this.groupManager.allowedValues && this.groupManager.allowedValues[level]) {
-                       if (this.groups[groupKey]) {
-                               this.groups[groupKey].addRow(row);
-                       }
-               } else {
-                       if (!this.groups[groupKey]) {
-                               this._createGroup(groupID, level);
-                       }
-
-                       this.groups[groupKey].addRow(row);
-               }
-       }
-};
-
-Group.prototype._addRow = function (row) {
-       this.rows.push(row);
-       row.modules.group = this;
-};
-
-Group.prototype.insertRow = function (row, to, after) {
-       var data = this.conformRowData({});
-
-       row.updateData(data);
-
-       var toIndex = this.rows.indexOf(to);
-
-       if (toIndex > -1) {
-               if (after) {
-                       this.rows.splice(toIndex + 1, 0, row);
-               } else {
-                       this.rows.splice(toIndex, 0, row);
-               }
-       } else {
-               if (after) {
-                       this.rows.push(row);
-               } else {
-                       this.rows.unshift(row);
-               }
-       }
-
-       row.modules.group = this;
-
-       this.generateGroupHeaderContents();
-
-       if (this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.options.columnCalcs != "table") {
-               this.groupManager.table.modules.columnCalcs.recalcGroup(this);
-       }
-
-       this.groupManager.updateGroupRows(true);
-};
-
-Group.prototype.scrollHeader = function (left) {
-       this.arrowElement.style.marginLeft = left;
-
-       this.groupList.forEach(function (child) {
-               child.scrollHeader(left);
-       });
-};
-
-Group.prototype.getRowIndex = function (row) {};
-
-//update row data to match grouping contraints
-Group.prototype.conformRowData = function (data) {
-       if (this.field) {
-               data[this.field] = this.key;
-       } else {
-               console.warn("Data Conforming Error - Cannot conform row data to match new group as groupBy is a function");
-       }
-
-       if (this.parent) {
-               data = this.parent.conformRowData(data);
-       }
-
-       return data;
-};
-
-Group.prototype.removeRow = function (row) {
-       var index = this.rows.indexOf(row);
-       var el = row.getElement();
-
-       if (index > -1) {
-               this.rows.splice(index, 1);
-       }
-
-       if (!this.groupManager.table.options.groupValues && !this.rows.length) {
-               if (this.parent) {
-                       this.parent.removeGroup(this);
-               } else {
-                       this.groupManager.removeGroup(this);
-               }
-
-               this.groupManager.updateGroupRows(true);
-       } else {
-
-               if (el.parentNode) {
-                       el.parentNode.removeChild(el);
-               }
-
-               this.generateGroupHeaderContents();
-
-               if (this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.options.columnCalcs != "table") {
-                       this.groupManager.table.modules.columnCalcs.recalcGroup(this);
-               }
-       }
-};
-
-Group.prototype.removeGroup = function (group) {
-       var groupKey = group.level + "_" + group.key,
-           index;
-
-       if (this.groups[groupKey]) {
-               delete this.groups[groupKey];
-
-               index = this.groupList.indexOf(group);
-
-               if (index > -1) {
-                       this.groupList.splice(index, 1);
-               }
-
-               if (!this.groupList.length) {
-                       if (this.parent) {
-                               this.parent.removeGroup(this);
-                       } else {
-                               this.groupManager.removeGroup(this);
-                       }
-               }
-       }
-};
-
-Group.prototype.getHeadersAndRows = function (noCalc) {
-       var output = [];
-
-       output.push(this);
-
-       this._visSet();
-
-       if (this.visible) {
-               if (this.groupList.length) {
-                       this.groupList.forEach(function (group) {
-                               output = output.concat(group.getHeadersAndRows(noCalc));
-                       });
-               } else {
-                       if (!noCalc && this.groupManager.table.options.columnCalcs != "table" && this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.modules.columnCalcs.hasTopCalcs()) {
-                               if (this.calcs.top) {
-                                       this.calcs.top.detachElement();
-                                       this.calcs.top.deleteCells();
-                               }
-
-                               this.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);
-                               output.push(this.calcs.top);
-                       }
-
-                       output = output.concat(this.rows);
-
-                       if (!noCalc && this.groupManager.table.options.columnCalcs != "table" && this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()) {
-                               if (this.calcs.bottom) {
-                                       this.calcs.bottom.detachElement();
-                                       this.calcs.bottom.deleteCells();
-                               }
-
-                               this.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);
-                               output.push(this.calcs.bottom);
-                       }
-               }
-       } else {
-               if (!this.groupList.length && this.groupManager.table.options.columnCalcs != "table") {
-
-                       if (this.groupManager.table.modExists("columnCalcs")) {
-
-                               if (!noCalc && this.groupManager.table.modules.columnCalcs.hasTopCalcs()) {
-                                       if (this.calcs.top) {
-                                               this.calcs.top.detachElement();
-                                               this.calcs.top.deleteCells();
-                                       }
-
-                                       if (this.groupManager.table.options.groupClosedShowCalcs) {
-                                               this.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);
-                                               output.push(this.calcs.top);
-                                       }
-                               }
-
-                               if (!noCalc && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()) {
-                                       if (this.calcs.bottom) {
-                                               this.calcs.bottom.detachElement();
-                                               this.calcs.bottom.deleteCells();
-                                       }
-
-                                       if (this.groupManager.table.options.groupClosedShowCalcs) {
-                                               this.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);
-                                               output.push(this.calcs.bottom);
-                                       }
-                               }
-                       }
-               }
-       }
-
-       return output;
-};
-
-Group.prototype.getData = function (visible, transform) {
-       var self = this,
-           output = [];
-
-       this._visSet();
-
-       if (!visible || visible && this.visible) {
-               this.rows.forEach(function (row) {
-                       output.push(row.getData(transform || "data"));
-               });
-       }
-
-       return output;
-};
-
-// Group.prototype.getRows = function(){
-//     this._visSet();
-
-//     return this.visible ? this.rows : [];
-// };
-
-Group.prototype.getRowCount = function () {
-       var count = 0;
-
-       if (this.groupList.length) {
-               this.groupList.forEach(function (group) {
-                       count += group.getRowCount();
-               });
-       } else {
-               count = this.rows.length;
-       }
-       return count;
-};
-
-Group.prototype.toggleVisibility = function () {
-       if (this.visible) {
-               this.hide();
-       } else {
-               this.show();
-       }
-};
-
-Group.prototype.hide = function () {
-       this.visible = false;
-
-       if (this.groupManager.table.rowManager.getRenderMode() == "classic" && !this.groupManager.table.options.pagination) {
-
-               this.element.classList.remove("tabulator-group-visible");
-
-               if (this.groupList.length) {
-                       this.groupList.forEach(function (group) {
-
-                               var rows = group.getHeadersAndRows();
-
-                               rows.forEach(function (row) {
-                                       row.detachElement();
-                               });
-                       });
-               } else {
-                       this.rows.forEach(function (row) {
-                               var rowEl = row.getElement();
-                               rowEl.parentNode.removeChild(rowEl);
-                       });
-               }
-
-               this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());
-
-               this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();
-       } else {
-               this.groupManager.updateGroupRows(true);
-       }
-
-       this.groupManager.table.options.groupVisibilityChanged.call(this.table, this.getComponent(), false);
-};
-
-Group.prototype.show = function () {
-       var self = this;
-
-       self.visible = true;
-
-       if (this.groupManager.table.rowManager.getRenderMode() == "classic" && !this.groupManager.table.options.pagination) {
-
-               this.element.classList.add("tabulator-group-visible");
-
-               var prev = self.getElement();
-
-               if (this.groupList.length) {
-                       this.groupList.forEach(function (group) {
-                               var rows = group.getHeadersAndRows();
-
-                               rows.forEach(function (row) {
-                                       var rowEl = row.getElement();
-                                       prev.parentNode.insertBefore(rowEl, prev.nextSibling);
-                                       row.initialize();
-                                       prev = rowEl;
-                               });
-                       });
-               } else {
-                       self.rows.forEach(function (row) {
-                               var rowEl = row.getElement();
-                               prev.parentNode.insertBefore(rowEl, prev.nextSibling);
-                               row.initialize();
-                               prev = rowEl;
-                       });
-               }
-
-               this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());
-
-               this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();
-       } else {
-               this.groupManager.updateGroupRows(true);
-       }
-
-       this.groupManager.table.options.groupVisibilityChanged.call(this.table, this.getComponent(), true);
-};
-
-Group.prototype._visSet = function () {
-       var data = [];
-
-       if (typeof this.visible == "function") {
-
-               this.rows.forEach(function (row) {
-                       data.push(row.getData());
-               });
-
-               this.visible = this.visible(this.key, this.getRowCount(), data, this.getComponent());
-       }
-};
-
-Group.prototype.getRowGroup = function (row) {
-       var match = false;
-       if (this.groupList.length) {
-               this.groupList.forEach(function (group) {
-                       var result = group.getRowGroup(row);
-
-                       if (result) {
-                               match = result;
-                       }
-               });
-       } else {
-               if (this.rows.find(function (item) {
-                       return item === row;
-               })) {
-                       match = this;
-               }
-       }
-
-       return match;
-};
-
-Group.prototype.getSubGroups = function (component) {
-       var output = [];
-
-       this.groupList.forEach(function (child) {
-               output.push(component ? child.getComponent() : child);
-       });
-
-       return output;
-};
-
-Group.prototype.getRows = function (compoment) {
-       var output = [];
-
-       this.rows.forEach(function (row) {
-               output.push(compoment ? row.getComponent() : row);
-       });
-
-       return output;
-};
-
-Group.prototype.generateGroupHeaderContents = function () {
-       var data = [];
-
-       this.rows.forEach(function (row) {
-               data.push(row.getData());
-       });
-
-       this.elementContents = this.generator(this.key, this.getRowCount(), data, this.getComponent());
-
-       while (this.element.firstChild) {
-               this.element.removeChild(this.element.firstChild);
-       }if (typeof this.elementContents === "string") {
-               this.element.innerHTML = this.elementContents;
-       } else {
-               this.element.appendChild(this.elementContents);
-       }
-
-       this.element.insertBefore(this.arrowElement, this.element.firstChild);
-};
-
-////////////// Standard Row Functions //////////////
-
-Group.prototype.getElement = function () {
-       this.addBindingsd = false;
-
-       this._visSet();
-
-       if (this.visible) {
-               this.element.classList.add("tabulator-group-visible");
-       } else {
-               this.element.classList.remove("tabulator-group-visible");
-       }
-
-       for (var i = 0; i < this.element.childNodes.length; ++i) {
-               this.element.childNodes[i].parentNode.removeChild(this.element.childNodes[i]);
-       }
-
-       this.generateGroupHeaderContents();
-
-       // this.addBindings();
-
-       return this.element;
-};
-
-Group.prototype.detachElement = function () {
-       if (this.element && this.element.parentNode) {
-               this.element.parentNode.removeChild(this.element);
-       }
-};
-
-//normalize the height of elements in the row
-Group.prototype.normalizeHeight = function () {
-       this.setHeight(this.element.clientHeight);
-};
-
-Group.prototype.initialize = function (force) {
-       if (!this.initialized || force) {
-               this.normalizeHeight();
-               this.initialized = true;
-       }
-};
-
-Group.prototype.reinitialize = function () {
-       this.initialized = false;
-       this.height = 0;
-
-       if (Tabulator.prototype.helpers.elVisible(this.element)) {
-               this.initialize(true);
-       }
-};
-
-Group.prototype.setHeight = function (height) {
-       if (this.height != height) {
-               this.height = height;
-               this.outerHeight = this.element.offsetHeight;
-       }
-};
-
-//return rows outer height
-Group.prototype.getHeight = function () {
-       return this.outerHeight;
-};
-
-Group.prototype.getGroup = function () {
-       return this;
-};
-
-Group.prototype.reinitializeHeight = function () {};
-Group.prototype.calcHeight = function () {};
-Group.prototype.setCellHeight = function () {};
-Group.prototype.clearCellHeight = function () {};
-
-//////////////// Object Generation /////////////////
-Group.prototype.getComponent = function () {
-       if (!this.component) {
-               this.component = new GroupComponent(this);
-       }
-
-       return this.component;
-};
-
-//////////////////////////////////////////////////
-////////////// Group Row Extension ///////////////
-//////////////////////////////////////////////////
-
-var GroupRows = function GroupRows(table) {
-
-       this.table = table; //hold Tabulator object
-
-       this.groupIDLookups = false; //enable table grouping and set field to group by
-       this.startOpen = [function () {
-               return false;
-       }]; //starting state of group
-       this.headerGenerator = [function () {
-               return "";
-       }];
-       this.groupList = []; //ordered list of groups
-       this.allowedValues = false;
-       this.groups = {}; //hold row groups
-       this.displayIndex = 0; //index in display pipeline
-};
-
-//initialize group configuration
-GroupRows.prototype.initialize = function () {
-       var self = this,
-           groupBy = self.table.options.groupBy,
-           startOpen = self.table.options.groupStartOpen,
-           groupHeader = self.table.options.groupHeader;
-
-       this.allowedValues = self.table.options.groupValues;
-
-       if (Array.isArray(groupBy) && Array.isArray(groupHeader) && groupBy.length > groupHeader.length) {
-               console.warn("Error creating group headers, groupHeader array is shorter than groupBy array");
-       }
-
-       self.headerGenerator = [function () {
-               return "";
-       }];
-       this.startOpen = [function () {
-               return false;
-       }]; //starting state of group
-
-       self.table.modules.localize.bind("groups|item", function (langValue, lang) {
-               self.headerGenerator[0] = function (value, count, data) {
-                       //header layout function
-                       return (typeof value === "undefined" ? "" : value) + "<span>(" + count + " " + (count === 1 ? langValue : lang.groups.items) + ")</span>";
-               };
-       });
-
-       this.groupIDLookups = [];
-
-       if (Array.isArray(groupBy) || groupBy) {
-               if (this.table.modExists("columnCalcs") && this.table.options.columnCalcs != "table" && this.table.options.columnCalcs != "both") {
-                       this.table.modules.columnCalcs.removeCalcs();
-               }
-       } else {
-               if (this.table.modExists("columnCalcs") && this.table.options.columnCalcs != "group") {
-
-                       var cols = this.table.columnManager.getRealColumns();
-
-                       cols.forEach(function (col) {
-                               if (col.definition.topCalc) {
-                                       self.table.modules.columnCalcs.initializeTopRow();
-                               }
-
-                               if (col.definition.bottomCalc) {
-                                       self.table.modules.columnCalcs.initializeBottomRow();
-                               }
-                       });
-               }
-       }
-
-       if (!Array.isArray(groupBy)) {
-               groupBy = [groupBy];
-       }
-
-       groupBy.forEach(function (group, i) {
-               var lookupFunc, column;
-
-               if (typeof group == "function") {
-                       lookupFunc = group;
-               } else {
-                       column = self.table.columnManager.getColumnByField(group);
-
-                       if (column) {
-                               lookupFunc = function lookupFunc(data) {
-                                       return column.getFieldValue(data);
-                               };
-                       } else {
-                               lookupFunc = function lookupFunc(data) {
-                                       return data[group];
-                               };
-                       }
-               }
-
-               self.groupIDLookups.push({
-                       field: typeof group === "function" ? false : group,
-                       func: lookupFunc,
-                       values: self.allowedValues ? self.allowedValues[i] : false
-               });
-       });
-
-       if (startOpen) {
-
-               if (!Array.isArray(startOpen)) {
-                       startOpen = [startOpen];
-               }
-
-               startOpen.forEach(function (level) {
-                       level = typeof level == "function" ? level : function () {
-                               return true;
-                       };
-               });
-
-               self.startOpen = startOpen;
-       }
-
-       if (groupHeader) {
-               self.headerGenerator = Array.isArray(groupHeader) ? groupHeader : [groupHeader];
-       }
-
-       this.initialized = true;
-};
-
-GroupRows.prototype.setDisplayIndex = function (index) {
-       this.displayIndex = index;
-};
-
-GroupRows.prototype.getDisplayIndex = function () {
-       return this.displayIndex;
-};
-
-//return appropriate rows with group headers
-GroupRows.prototype.getRows = function (rows) {
-       if (this.groupIDLookups.length) {
-
-               this.table.options.dataGrouping.call(this.table);
-
-               this.generateGroups(rows);
-
-               if (this.table.options.dataGrouped) {
-                       this.table.options.dataGrouped.call(this.table, this.getGroups(true));
-               }
-
-               return this.updateGroupRows();
-       } else {
-               return rows.slice(0);
-       }
-};
-
-GroupRows.prototype.getGroups = function (compoment) {
-       var groupComponents = [];
-
-       this.groupList.forEach(function (group) {
-               groupComponents.push(compoment ? group.getComponent() : group);
-       });
-
-       return groupComponents;
-};
-
-GroupRows.prototype.getChildGroups = function (group) {
-       var _this2 = this;
-
-       var groupComponents = [];
-
-       if (!group) {
-               group = this;
-       }
-
-       group.groupList.forEach(function (child) {
-               if (child.groupList.length) {
-                       groupComponents = groupComponents.concat(_this2.getChildGroups(child));
-               } else {
-                       groupComponents.push(child);
-               }
-       });
-
-       return groupComponents;
-};
-
-GroupRows.prototype.wipe = function () {
-       this.groupList.forEach(function (group) {
-               group.wipe();
-       });
-};
-
-GroupRows.prototype.pullGroupListData = function (groupList) {
-       var self = this;
-       var groupListData = [];
-
-       groupList.forEach(function (group) {
-               var groupHeader = {};
-               groupHeader.level = 0;
-               groupHeader.rowCount = 0;
-               groupHeader.headerContent = "";
-               var childData = [];
-
-               if (group.hasSubGroups) {
-                       childData = self.pullGroupListData(group.groupList);
-
-                       groupHeader.level = group.level;
-                       groupHeader.rowCount = childData.length - group.groupList.length; // data length minus number of sub-headers
-                       groupHeader.headerContent = group.generator(group.key, groupHeader.rowCount, group.rows, group);
-
-                       groupListData.push(groupHeader);
-                       groupListData = groupListData.concat(childData);
-               } else {
-                       groupHeader.level = group.level;
-                       groupHeader.headerContent = group.generator(group.key, group.rows.length, group.rows, group);
-                       groupHeader.rowCount = group.getRows().length;
-
-                       groupListData.push(groupHeader);
-
-                       group.getRows().forEach(function (row) {
-                               groupListData.push(row.getData("data"));
-                       });
-               }
-       });
-
-       return groupListData;
-};
-
-GroupRows.prototype.getGroupedData = function () {
-
-       return this.pullGroupListData(this.groupList);
-};
-
-GroupRows.prototype.getRowGroup = function (row) {
-       var match = false;
-
-       this.groupList.forEach(function (group) {
-               var result = group.getRowGroup(row);
-
-               if (result) {
-                       match = result;
-               }
-       });
-
-       return match;
-};
-
-GroupRows.prototype.countGroups = function () {
-       return this.groupList.length;
-};
-
-GroupRows.prototype.generateGroups = function (rows) {
-       var self = this,
-           oldGroups = self.groups;
-
-       self.groups = {};
-       self.groupList = [];
-
-       if (this.allowedValues && this.allowedValues[0]) {
-               this.allowedValues[0].forEach(function (value) {
-                       self.createGroup(value, 0, oldGroups);
-               });
-
-               rows.forEach(function (row) {
-                       self.assignRowToExistingGroup(row, oldGroups);
-               });
-       } else {
-               rows.forEach(function (row) {
-                       self.assignRowToGroup(row, oldGroups);
-               });
-       }
-};
-
-GroupRows.prototype.createGroup = function (groupID, level, oldGroups) {
-       var groupKey = level + "_" + groupID,
-           group;
-
-       oldGroups = oldGroups || [];
-
-       group = new Group(this, false, level, groupID, this.groupIDLookups[0].field, this.headerGenerator[0], oldGroups[groupKey]);
-
-       this.groups[groupKey] = group;
-       this.groupList.push(group);
-};
-
-// GroupRows.prototype.assignRowToGroup = function(row, oldGroups){
-//     var groupID = this.groupIDLookups[0].func(row.getData()),
-//     groupKey = "0_" + groupID;
-
-//     if(!this.groups[groupKey]){
-//             this.createGroup(groupID, 0, oldGroups);
-//     }
-
-//     this.groups[groupKey].addRow(row);
-// };
-
-GroupRows.prototype.assignRowToExistingGroup = function (row, oldGroups) {
-       var groupID = this.groupIDLookups[0].func(row.getData()),
-           groupKey = "0_" + groupID;
-
-       if (this.groups[groupKey]) {
-               this.groups[groupKey].addRow(row);
-       }
-};
-
-GroupRows.prototype.assignRowToGroup = function (row, oldGroups) {
-       var groupID = this.groupIDLookups[0].func(row.getData()),
-           newGroupNeeded = !this.groups["0_" + groupID];
-
-       if (newGroupNeeded) {
-               this.createGroup(groupID, 0, oldGroups);
-       }
-
-       this.groups["0_" + groupID].addRow(row);
-
-       return !newGroupNeeded;
-};
-
-GroupRows.prototype.updateGroupRows = function (force) {
-       var self = this,
-           output = [],
-           oldRowCount;
-
-       self.groupList.forEach(function (group) {
-               output = output.concat(group.getHeadersAndRows());
-       });
-
-       //force update of table display
-       if (force) {
-
-               var displayIndex = self.table.rowManager.setDisplayRows(output, this.getDisplayIndex());
-
-               if (displayIndex !== true) {
-                       this.setDisplayIndex(displayIndex);
-               }
-
-               self.table.rowManager.refreshActiveData("group", true, true);
-       }
-
-       return output;
-};
-
-GroupRows.prototype.scrollHeaders = function (left) {
-       left = left + "px";
-
-       this.groupList.forEach(function (group) {
-               group.scrollHeader(left);
-       });
-};
-
-GroupRows.prototype.removeGroup = function (group) {
-       var groupKey = group.level + "_" + group.key,
-           index;
-
-       if (this.groups[groupKey]) {
-               delete this.groups[groupKey];
-
-               index = this.groupList.indexOf(group);
-
-               if (index > -1) {
-                       this.groupList.splice(index, 1);
-               }
-       }
-};
-
-Tabulator.prototype.registerModule("groupRows", GroupRows);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/group_rows.min.js b/app/static/vendors/tabulator/js/modules/group_rows.min.js
deleted file mode 100644 (file)
index 6039f2c..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-var GroupComponent=function(t){this._group=t,this.type="GroupComponent"};GroupComponent.prototype.getKey=function(){return this._group.key},GroupComponent.prototype.getField=function(){return this._group.field},GroupComponent.prototype.getElement=function(){return this._group.element},GroupComponent.prototype.getRows=function(){return this._group.getRows(!0)},GroupComponent.prototype.getSubGroups=function(){return this._group.getSubGroups(!0)},GroupComponent.prototype.getParentGroup=function(){return!!this._group.parent&&this._group.parent.getComponent()},GroupComponent.prototype.getVisibility=function(){return console.warn("getVisibility function is deprecated, you should now use the isVisible function"),this._group.visible},GroupComponent.prototype.isVisible=function(){return this._group.visible},GroupComponent.prototype.show=function(){this._group.show()},GroupComponent.prototype.hide=function(){this._group.hide()},GroupComponent.prototype.toggle=function(){this._group.toggleVisibility()},GroupComponent.prototype._getSelf=function(){return this._group},GroupComponent.prototype.getTable=function(){return this._group.groupManager.table};var Group=function(t,o,e,r,i,s,n){this.groupManager=t,this.parent=o,this.key=r,this.level=e,this.field=i,this.hasSubGroups=e<t.groupIDLookups.length-1,this.addRow=this.hasSubGroups?this._addRowToGroup:this._addRow,this.type="group",this.old=n,this.rows=[],this.groups=[],this.groupList=[],this.generator=s,this.elementContents=!1,this.height=0,this.outerHeight=0,this.initialized=!1,this.calcs={},this.initialized=!1,this.modules={},this.arrowElement=!1,this.visible=n?n.visible:void 0!==t.startOpen[e]?t.startOpen[e]:t.startOpen[0],this.component=null,this.createElements(),this.addBindings(),this.createValueGroups()};Group.prototype.wipe=function(){this.groupList.length?this.groupList.forEach(function(t){t.wipe()}):(this.element=!1,this.arrowElement=!1,this.elementContents=!1)},Group.prototype.createElements=function(){var t=document.createElement("div");t.classList.add("tabulator-arrow"),this.element=document.createElement("div"),this.element.classList.add("tabulator-row"),this.element.classList.add("tabulator-group"),this.element.classList.add("tabulator-group-level-"+this.level),this.element.setAttribute("role","rowgroup"),this.arrowElement=document.createElement("div"),this.arrowElement.classList.add("tabulator-group-toggle"),this.arrowElement.appendChild(t),!1!==this.groupManager.table.options.movableRows&&this.groupManager.table.modExists("moveRow")&&this.groupManager.table.modules.moveRow.initializeGroupHeader(this)},Group.prototype.createValueGroups=function(){var t=this,o=this.level+1;this.groupManager.allowedValues&&this.groupManager.allowedValues[o]&&this.groupManager.allowedValues[o].forEach(function(e){t._createGroup(e,o)})},Group.prototype.addBindings=function(){var t,o,e,r,i=this;i.groupManager.table.options.groupClick&&i.element.addEventListener("click",function(t){i.groupManager.table.options.groupClick.call(i.groupManager.table,t,i.getComponent())}),i.groupManager.table.options.groupDblClick&&i.element.addEventListener("dblclick",function(t){i.groupManager.table.options.groupDblClick.call(i.groupManager.table,t,i.getComponent())}),i.groupManager.table.options.groupContext&&i.element.addEventListener("contextmenu",function(t){i.groupManager.table.options.groupContext.call(i.groupManager.table,t,i.getComponent())}),i.groupManager.table.options.groupContextMenu&&i.groupManager.table.modExists("menu")&&i.groupManager.table.modules.menu.initializeGroup.call(i.groupManager.table.modules.menu,i),i.groupManager.table.options.groupTap&&(e=!1,i.element.addEventListener("touchstart",function(t){e=!0},{passive:!0}),i.element.addEventListener("touchend",function(t){e&&i.groupManager.table.options.groupTap(t,i.getComponent()),e=!1})),i.groupManager.table.options.groupDblTap&&(t=null,i.element.addEventListener("touchend",function(o){t?(clearTimeout(t),t=null,i.groupManager.table.options.groupDblTap(o,i.getComponent())):t=setTimeout(function(){clearTimeout(t),t=null},300)})),i.groupManager.table.options.groupTapHold&&(o=null,i.element.addEventListener("touchstart",function(t){clearTimeout(o),o=setTimeout(function(){clearTimeout(o),o=null,e=!1,i.groupManager.table.options.groupTapHold(t,i.getComponent())},1e3)},{passive:!0}),i.element.addEventListener("touchend",function(t){clearTimeout(o),o=null})),i.groupManager.table.options.groupToggleElement&&(r="arrow"==i.groupManager.table.options.groupToggleElement?i.arrowElement:i.element,r.addEventListener("click",function(t){t.stopPropagation(),t.stopImmediatePropagation(),i.toggleVisibility()}))},Group.prototype._createGroup=function(t,o){var e=o+"_"+t,r=new Group(this.groupManager,this,o,t,this.groupManager.groupIDLookups[o].field,this.groupManager.headerGenerator[o]||this.groupManager.headerGenerator[0],!!this.old&&this.old.groups[e]);this.groups[e]=r,this.groupList.push(r)},Group.prototype._addRowToGroup=function(t){var o=this.level+1;if(this.hasSubGroups){var e=this.groupManager.groupIDLookups[o].func(t.getData()),r=o+"_"+e;this.groupManager.allowedValues&&this.groupManager.allowedValues[o]?this.groups[r]&&this.groups[r].addRow(t):(this.groups[r]||this._createGroup(e,o),this.groups[r].addRow(t))}},Group.prototype._addRow=function(t){this.rows.push(t),t.modules.group=this},Group.prototype.insertRow=function(t,o,e){var r=this.conformRowData({});t.updateData(r);var i=this.rows.indexOf(o);i>-1?e?this.rows.splice(i+1,0,t):this.rows.splice(i,0,t):e?this.rows.push(t):this.rows.unshift(t),t.modules.group=this,this.generateGroupHeaderContents(),this.groupManager.table.modExists("columnCalcs")&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modules.columnCalcs.recalcGroup(this),this.groupManager.updateGroupRows(!0)},Group.prototype.scrollHeader=function(t){this.arrowElement.style.marginLeft=t,this.groupList.forEach(function(o){o.scrollHeader(t)})},Group.prototype.getRowIndex=function(t){},Group.prototype.conformRowData=function(t){return this.field?t[this.field]=this.key:console.warn("Data Conforming Error - Cannot conform row data to match new group as groupBy is a function"),this.parent&&(t=this.parent.conformRowData(t)),t},Group.prototype.removeRow=function(t){var o=this.rows.indexOf(t),e=t.getElement();o>-1&&this.rows.splice(o,1),this.groupManager.table.options.groupValues||this.rows.length?(e.parentNode&&e.parentNode.removeChild(e),this.generateGroupHeaderContents(),this.groupManager.table.modExists("columnCalcs")&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modules.columnCalcs.recalcGroup(this)):(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this),this.groupManager.updateGroupRows(!0))},Group.prototype.removeGroup=function(t){var o,e=t.level+"_"+t.key;this.groups[e]&&(delete this.groups[e],o=this.groupList.indexOf(t),o>-1&&this.groupList.splice(o,1),this.groupList.length||(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this)))},Group.prototype.getHeadersAndRows=function(t){var o=[];return o.push(this),this._visSet(),this.visible?this.groupList.length?this.groupList.forEach(function(e){o=o.concat(e.getHeadersAndRows(t))}):(!t&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),o.push(this.calcs.top)),o=o.concat(this.rows),!t&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),o.push(this.calcs.bottom))):this.groupList.length||"table"==this.groupManager.table.options.columnCalcs||this.groupManager.table.modExists("columnCalcs")&&(!t&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),o.push(this.calcs.top))),!t&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),o.push(this.calcs.bottom)))),o},Group.prototype.getData=function(t,o){var e=[];return this._visSet(),(!t||t&&this.visible)&&this.rows.forEach(function(t){e.push(t.getData(o||"data"))}),e},Group.prototype.getRowCount=function(){var t=0;return this.groupList.length?this.groupList.forEach(function(o){t+=o.getRowCount()}):t=this.rows.length,t},Group.prototype.toggleVisibility=function(){this.visible?this.hide():this.show()},Group.prototype.hide=function(){this.visible=!1,"classic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination?this.groupManager.updateGroupRows(!0):(this.element.classList.remove("tabulator-group-visible"),this.groupList.length?this.groupList.forEach(function(t){t.getHeadersAndRows().forEach(function(t){t.detachElement()})}):this.rows.forEach(function(t){var o=t.getElement();o.parentNode.removeChild(o)}),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()),this.groupManager.table.options.groupVisibilityChanged.call(this.table,this.getComponent(),!1)},Group.prototype.show=function(){var t=this;if(t.visible=!0,"classic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination)this.groupManager.updateGroupRows(!0);else{this.element.classList.add("tabulator-group-visible");var o=t.getElement();this.groupList.length?this.groupList.forEach(function(t){t.getHeadersAndRows().forEach(function(t){var e=t.getElement();o.parentNode.insertBefore(e,o.nextSibling),t.initialize(),o=e})}):t.rows.forEach(function(t){var e=t.getElement();o.parentNode.insertBefore(e,o.nextSibling),t.initialize(),o=e}),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()}this.groupManager.table.options.groupVisibilityChanged.call(this.table,this.getComponent(),!0)},Group.prototype._visSet=function(){var t=[];"function"==typeof this.visible&&(this.rows.forEach(function(o){t.push(o.getData())}),this.visible=this.visible(this.key,this.getRowCount(),t,this.getComponent()))},Group.prototype.getRowGroup=function(t){var o=!1;return this.groupList.length?this.groupList.forEach(function(e){var r=e.getRowGroup(t);r&&(o=r)}):this.rows.find(function(o){return o===t})&&(o=this),o},Group.prototype.getSubGroups=function(t){var o=[];return this.groupList.forEach(function(e){o.push(t?e.getComponent():e)}),o},Group.prototype.getRows=function(t){var o=[];return this.rows.forEach(function(e){o.push(t?e.getComponent():e)}),o},Group.prototype.generateGroupHeaderContents=function(){var t=[];for(this.rows.forEach(function(o){t.push(o.getData())}),this.elementContents=this.generator(this.key,this.getRowCount(),t,this.getComponent());this.element.firstChild;)this.element.removeChild(this.element.firstChild);"string"==typeof this.elementContents?this.element.innerHTML=this.elementContents:this.element.appendChild(this.elementContents),this.element.insertBefore(this.arrowElement,this.element.firstChild)},Group.prototype.getElement=function(){this.addBindingsd=!1,this._visSet(),this.visible?this.element.classList.add("tabulator-group-visible"):this.element.classList.remove("tabulator-group-visible");for(var t=0;t<this.element.childNodes.length;++t)this.element.childNodes[t].parentNode.removeChild(this.element.childNodes[t]);return this.generateGroupHeaderContents(),this.element},Group.prototype.detachElement=function(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)},Group.prototype.normalizeHeight=function(){this.setHeight(this.element.clientHeight)},Group.prototype.initialize=function(t){this.initialized&&!t||(this.normalizeHeight(),this.initialized=!0)},Group.prototype.reinitialize=function(){this.initialized=!1,this.height=0,Tabulator.prototype.helpers.elVisible(this.element)&&this.initialize(!0)},Group.prototype.setHeight=function(t){this.height!=t&&(this.height=t,this.outerHeight=this.element.offsetHeight)},Group.prototype.getHeight=function(){return this.outerHeight},Group.prototype.getGroup=function(){return this},Group.prototype.reinitializeHeight=function(){},Group.prototype.calcHeight=function(){},Group.prototype.setCellHeight=function(){},Group.prototype.clearCellHeight=function(){},Group.prototype.getComponent=function(){return this.component||(this.component=new GroupComponent(this)),this.component};var GroupRows=function(t){this.table=t,this.groupIDLookups=!1,this.startOpen=[function(){return!1}],this.headerGenerator=[function(){return""}],this.groupList=[],this.allowedValues=!1,this.groups={},this.displayIndex=0};GroupRows.prototype.initialize=function(){var t=this,o=t.table.options.groupBy,e=t.table.options.groupStartOpen,r=t.table.options.groupHeader;if(this.allowedValues=t.table.options.groupValues,Array.isArray(o)&&Array.isArray(r)&&o.length>r.length&&console.warn("Error creating group headers, groupHeader array is shorter than groupBy array"),t.headerGenerator=[function(){return""}],this.startOpen=[function(){return!1}],t.table.modules.localize.bind("groups|item",function(o,e){t.headerGenerator[0]=function(t,r,i){return(void 0===t?"":t)+"<span>("+r+" "+(1===r?o:e.groups.items)+")</span>"}}),this.groupIDLookups=[],Array.isArray(o)||o)this.table.modExists("columnCalcs")&&"table"!=this.table.options.columnCalcs&&"both"!=this.table.options.columnCalcs&&this.table.modules.columnCalcs.removeCalcs();else if(this.table.modExists("columnCalcs")&&"group"!=this.table.options.columnCalcs){var i=this.table.columnManager.getRealColumns();i.forEach(function(o){o.definition.topCalc&&t.table.modules.columnCalcs.initializeTopRow(),o.definition.bottomCalc&&t.table.modules.columnCalcs.initializeBottomRow()})}Array.isArray(o)||(o=[o]),o.forEach(function(o,e){var r,i;"function"==typeof o?r=o:(i=t.table.columnManager.getColumnByField(o),r=i?function(t){return i.getFieldValue(t)}:function(t){return t[o]}),t.groupIDLookups.push({field:"function"!=typeof o&&o,func:r,values:!!t.allowedValues&&t.allowedValues[e]})}),e&&(Array.isArray(e)||(e=[e]),e.forEach(function(t){t="function"==typeof t?t:function(){return!0}}),t.startOpen=e),r&&(t.headerGenerator=Array.isArray(r)?r:[r]),this.initialized=!0},GroupRows.prototype.setDisplayIndex=function(t){this.displayIndex=t},GroupRows.prototype.getDisplayIndex=function(){return this.displayIndex},GroupRows.prototype.getRows=function(t){return this.groupIDLookups.length?(this.table.options.dataGrouping.call(this.table),this.generateGroups(t),this.table.options.dataGrouped&&this.table.options.dataGrouped.call(this.table,this.getGroups(!0)),this.updateGroupRows()):t.slice(0)},GroupRows.prototype.getGroups=function(t){var o=[];return this.groupList.forEach(function(e){o.push(t?e.getComponent():e)}),o},GroupRows.prototype.getChildGroups=function(t){var o=this,e=[];return t||(t=this),t.groupList.forEach(function(t){t.groupList.length?e=e.concat(o.getChildGroups(t)):e.push(t)}),e},GroupRows.prototype.wipe=function(){this.groupList.forEach(function(t){t.wipe()})},GroupRows.prototype.pullGroupListData=function(t){var o=this,e=[];return t.forEach(function(t){var r={};r.level=0,r.rowCount=0,r.headerContent="";var i=[];t.hasSubGroups?(i=o.pullGroupListData(t.groupList),r.level=t.level,r.rowCount=i.length-t.groupList.length,r.headerContent=t.generator(t.key,r.rowCount,t.rows,t),e.push(r),e=e.concat(i)):(r.level=t.level,r.headerContent=t.generator(t.key,t.rows.length,t.rows,t),r.rowCount=t.getRows().length,e.push(r),t.getRows().forEach(function(t){e.push(t.getData("data"))}))}),e},GroupRows.prototype.getGroupedData=function(){return this.pullGroupListData(this.groupList)},GroupRows.prototype.getRowGroup=function(t){var o=!1;return this.groupList.forEach(function(e){var r=e.getRowGroup(t);r&&(o=r)}),o},GroupRows.prototype.countGroups=function(){return this.groupList.length},GroupRows.prototype.generateGroups=function(t){var o=this,e=o.groups;o.groups={},o.groupList=[],this.allowedValues&&this.allowedValues[0]?(this.allowedValues[0].forEach(function(t){o.createGroup(t,0,e)}),t.forEach(function(t){o.assignRowToExistingGroup(t,e)})):t.forEach(function(t){o.assignRowToGroup(t,e)})},GroupRows.prototype.createGroup=function(t,o,e){var r,i=o+"_"+t;e=e||[],r=new Group(this,!1,o,t,this.groupIDLookups[0].field,this.headerGenerator[0],e[i]),this.groups[i]=r,this.groupList.push(r)},GroupRows.prototype.assignRowToExistingGroup=function(t,o){var e=this.groupIDLookups[0].func(t.getData()),r="0_"+e;this.groups[r]&&this.groups[r].addRow(t)},GroupRows.prototype.assignRowToGroup=function(t,o){var e=this.groupIDLookups[0].func(t.getData()),r=!this.groups["0_"+e];return r&&this.createGroup(e,0,o),this.groups["0_"+e].addRow(t),!r},GroupRows.prototype.updateGroupRows=function(t){var o=this,e=[];if(o.groupList.forEach(function(t){e=e.concat(t.getHeadersAndRows())}),t){var r=o.table.rowManager.setDisplayRows(e,this.getDisplayIndex());!0!==r&&this.setDisplayIndex(r),o.table.rowManager.refreshActiveData("group",!0,!0)}return e},GroupRows.prototype.scrollHeaders=function(t){t+="px",this.groupList.forEach(function(o){o.scrollHeader(t)})},GroupRows.prototype.removeGroup=function(t){var o,e=t.level+"_"+t.key;this.groups[e]&&(delete this.groups[e],(o=this.groupList.indexOf(t))>-1&&this.groupList.splice(o,1))},Tabulator.prototype.registerModule("groupRows",GroupRows);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/history.js b/app/static/vendors/tabulator/js/modules/history.js
deleted file mode 100644 (file)
index 1c3ae3e..0000000
+++ /dev/null
@@ -1,141 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-
-var History = function History(table) {
-       this.table = table; //hold Tabulator object
-
-       this.history = [];
-       this.index = -1;
-};
-
-History.prototype.clear = function () {
-       this.history = [];
-       this.index = -1;
-};
-
-History.prototype.action = function (type, component, data) {
-
-       this.history = this.history.slice(0, this.index + 1);
-
-       this.history.push({
-               type: type,
-               component: component,
-               data: data
-       });
-
-       this.index++;
-};
-
-History.prototype.getHistoryUndoSize = function () {
-       return this.index + 1;
-};
-
-History.prototype.getHistoryRedoSize = function () {
-       return this.history.length - (this.index + 1);
-};
-
-History.prototype.undo = function () {
-
-       if (this.index > -1) {
-               var action = this.history[this.index];
-
-               this.undoers[action.type].call(this, action);
-
-               this.index--;
-
-               this.table.options.historyUndo.call(this.table, action.type, action.component.getComponent(), action.data);
-
-               return true;
-       } else {
-               console.warn("History Undo Error - No more history to undo");
-               return false;
-       }
-};
-
-History.prototype.redo = function () {
-       if (this.history.length - 1 > this.index) {
-
-               this.index++;
-
-               var action = this.history[this.index];
-
-               this.redoers[action.type].call(this, action);
-
-               this.table.options.historyRedo.call(this.table, action.type, action.component.getComponent(), action.data);
-
-               return true;
-       } else {
-               console.warn("History Redo Error - No more history to redo");
-               return false;
-       }
-};
-
-History.prototype.undoers = {
-       cellEdit: function cellEdit(action) {
-               action.component.setValueProcessData(action.data.oldValue);
-       },
-
-       rowAdd: function rowAdd(action) {
-               action.component.deleteActual();
-       },
-
-       rowDelete: function rowDelete(action) {
-               var newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);
-
-               if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-                       this.table.modules.groupRows.updateGroupRows(true);
-               }
-
-               this._rebindRow(action.component, newRow);
-       },
-
-       rowMove: function rowMove(action) {
-               this.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.posFrom], !action.data.after);
-               this.table.rowManager.redraw();
-       }
-};
-
-History.prototype.redoers = {
-       cellEdit: function cellEdit(action) {
-               action.component.setValueProcessData(action.data.newValue);
-       },
-
-       rowAdd: function rowAdd(action) {
-               var newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);
-
-               if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-                       this.table.modules.groupRows.updateGroupRows(true);
-               }
-
-               this._rebindRow(action.component, newRow);
-       },
-
-       rowDelete: function rowDelete(action) {
-               action.component.deleteActual();
-       },
-
-       rowMove: function rowMove(action) {
-               this.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.posTo], action.data.after);
-               this.table.rowManager.redraw();
-       }
-};
-
-//rebind rows to new element after deletion
-History.prototype._rebindRow = function (oldRow, newRow) {
-       this.history.forEach(function (action) {
-               if (action.component instanceof Row) {
-                       if (action.component === oldRow) {
-                               action.component = newRow;
-                       }
-               } else if (action.component instanceof Cell) {
-                       if (action.component.row === oldRow) {
-                               var field = action.component.column.getField();
-
-                               if (field) {
-                                       action.component = newRow.getCell(field);
-                               }
-                       }
-               }
-       });
-};
-
-Tabulator.prototype.registerModule("history", History);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/history.min.js b/app/static/vendors/tabulator/js/modules/history.min.js
deleted file mode 100644 (file)
index 5df3187..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-var History=function(t){this.table=t,this.history=[],this.index=-1};History.prototype.clear=function(){this.history=[],this.index=-1},History.prototype.action=function(t,o,e){this.history=this.history.slice(0,this.index+1),this.history.push({type:t,component:o,data:e}),this.index++},History.prototype.getHistoryUndoSize=function(){return this.index+1},History.prototype.getHistoryRedoSize=function(){return this.history.length-(this.index+1)},History.prototype.undo=function(){if(this.index>-1){var t=this.history[this.index];return this.undoers[t.type].call(this,t),this.index--,this.table.options.historyUndo.call(this.table,t.type,t.component.getComponent(),t.data),!0}return console.warn("History Undo Error - No more history to undo"),!1},History.prototype.redo=function(){if(this.history.length-1>this.index){this.index++;var t=this.history[this.index];return this.redoers[t.type].call(this,t),this.table.options.historyRedo.call(this.table,t.type,t.component.getComponent(),t.data),!0}return console.warn("History Redo Error - No more history to redo"),!1},History.prototype.undoers={cellEdit:function(t){t.component.setValueProcessData(t.data.oldValue)},rowAdd:function(t){t.component.deleteActual()},rowDelete:function(t){var o=this.table.rowManager.addRowActual(t.data.data,t.data.pos,t.data.index);this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.updateGroupRows(!0),this._rebindRow(t.component,o)},rowMove:function(t){this.table.rowManager.moveRowActual(t.component,this.table.rowManager.rows[t.data.posFrom],!t.data.after),this.table.rowManager.redraw()}},History.prototype.redoers={cellEdit:function(t){t.component.setValueProcessData(t.data.newValue)},rowAdd:function(t){var o=this.table.rowManager.addRowActual(t.data.data,t.data.pos,t.data.index);this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.updateGroupRows(!0),this._rebindRow(t.component,o)},rowDelete:function(t){t.component.deleteActual()},rowMove:function(t){this.table.rowManager.moveRowActual(t.component,this.table.rowManager.rows[t.data.posTo],t.data.after),this.table.rowManager.redraw()}},History.prototype._rebindRow=function(t,o){this.history.forEach(function(e){if(e.component instanceof Row)e.component===t&&(e.component=o);else if(e.component instanceof Cell&&e.component.row===t){var i=e.component.column.getField();i&&(e.component=o.getCell(i))}})},Tabulator.prototype.registerModule("history",History);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/html_table_import.js b/app/static/vendors/tabulator/js/modules/html_table_import.js
deleted file mode 100644 (file)
index 34fed7c..0000000
+++ /dev/null
@@ -1,191 +0,0 @@
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-
-var HtmlTableImport = function HtmlTableImport(table) {
-       this.table = table; //hold Tabulator object
-       this.fieldIndex = [];
-       this.hasIndex = false;
-};
-
-HtmlTableImport.prototype.parseTable = function () {
-       var self = this,
-           element = self.table.element,
-           options = self.table.options,
-           columns = options.columns,
-           headers = element.getElementsByTagName("th"),
-           rows = element.getElementsByTagName("tbody")[0],
-           data = [],
-           newTable;
-
-       self.hasIndex = false;
-
-       self.table.options.htmlImporting.call(this.table);
-
-       rows = rows ? rows.getElementsByTagName("tr") : [];
-
-       //check for tablator inline options
-       self._extractOptions(element, options);
-
-       if (headers.length) {
-               self._extractHeaders(headers, rows);
-       } else {
-               self._generateBlankHeaders(headers, rows);
-       }
-
-       //iterate through table rows and build data set
-       for (var index = 0; index < rows.length; index++) {
-               var row = rows[index],
-                   cells = row.getElementsByTagName("td"),
-                   item = {};
-
-               //create index if the dont exist in table
-               if (!self.hasIndex) {
-                       item[options.index] = index;
-               }
-
-               for (var i = 0; i < cells.length; i++) {
-                       var cell = cells[i];
-                       if (typeof this.fieldIndex[i] !== "undefined") {
-                               item[this.fieldIndex[i]] = cell.innerHTML;
-                       }
-               }
-
-               //add row data to item
-               data.push(item);
-       }
-
-       //create new element
-       var newElement = document.createElement("div");
-
-       //transfer attributes to new element
-       var attributes = element.attributes;
-
-       // loop through attributes and apply them on div
-
-       for (var i in attributes) {
-               if (_typeof(attributes[i]) == "object") {
-                       newElement.setAttribute(attributes[i].name, attributes[i].value);
-               }
-       }
-
-       // replace table with div element
-       element.parentNode.replaceChild(newElement, element);
-
-       options.data = data;
-
-       self.table.options.htmlImported.call(this.table);
-
-       // // newElement.tabulator(options);
-
-       this.table.element = newElement;
-};
-
-//extract tabulator attribute options
-HtmlTableImport.prototype._extractOptions = function (element, options, defaultOptions) {
-       var attributes = element.attributes;
-       var optionsArr = defaultOptions ? Object.assign([], defaultOptions) : Object.keys(options);
-       var optionsList = {};
-
-       optionsArr.forEach(function (item) {
-               optionsList[item.toLowerCase()] = item;
-       });
-
-       for (var index in attributes) {
-               var attrib = attributes[index];
-               var name;
-
-               if (attrib && (typeof attrib === "undefined" ? "undefined" : _typeof(attrib)) == "object" && attrib.name && attrib.name.indexOf("tabulator-") === 0) {
-                       name = attrib.name.replace("tabulator-", "");
-
-                       if (typeof optionsList[name] !== "undefined") {
-                               options[optionsList[name]] = this._attribValue(attrib.value);
-                       }
-               }
-       }
-};
-
-//get value of attribute
-HtmlTableImport.prototype._attribValue = function (value) {
-       if (value === "true") {
-               return true;
-       }
-
-       if (value === "false") {
-               return false;
-       }
-
-       return value;
-};
-
-//find column if it has already been defined
-HtmlTableImport.prototype._findCol = function (title) {
-       var match = this.table.options.columns.find(function (column) {
-               return column.title === title;
-       });
-
-       return match || false;
-};
-
-//extract column from headers
-HtmlTableImport.prototype._extractHeaders = function (headers, rows) {
-       for (var index = 0; index < headers.length; index++) {
-               var header = headers[index],
-                   exists = false,
-                   col = this._findCol(header.textContent),
-                   width,
-                   attributes;
-
-               if (col) {
-                       exists = true;
-               } else {
-                       col = { title: header.textContent.trim() };
-               }
-
-               if (!col.field) {
-                       col.field = header.textContent.trim().toLowerCase().replace(" ", "_");
-               }
-
-               width = header.getAttribute("width");
-
-               if (width && !col.width) {
-                       col.width = width;
-               }
-
-               //check for tablator inline options
-               attributes = header.attributes;
-
-               // //check for tablator inline options
-               this._extractOptions(header, col, Column.prototype.defaultOptionList);
-
-               this.fieldIndex[index] = col.field;
-
-               if (col.field == this.table.options.index) {
-                       this.hasIndex = true;
-               }
-
-               if (!exists) {
-                       this.table.options.columns.push(col);
-               }
-       }
-};
-
-//generate blank headers
-HtmlTableImport.prototype._generateBlankHeaders = function (headers, rows) {
-       for (var index = 0; index < headers.length; index++) {
-               var header = headers[index],
-                   col = { title: "", field: "col" + index };
-
-               this.fieldIndex[index] = col.field;
-
-               var width = header.getAttribute("width");
-
-               if (width) {
-                       col.width = width;
-               }
-
-               this.table.options.columns.push(col);
-       }
-};
-
-Tabulator.prototype.registerModule("htmlTableImport", HtmlTableImport);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/html_table_import.min.js b/app/static/vendors/tabulator/js/modules/html_table_import.min.js
deleted file mode 100644 (file)
index aef2b5c..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},HtmlTableImport=function(t){this.table=t,this.fieldIndex=[],this.hasIndex=!1};HtmlTableImport.prototype.parseTable=function(){var t=this,e=t.table.element,o=t.table.options,a=(o.columns,e.getElementsByTagName("th")),n=e.getElementsByTagName("tbody")[0],l=[];t.hasIndex=!1,t.table.options.htmlImporting.call(this.table),n=n?n.getElementsByTagName("tr"):[],t._extractOptions(e,o),a.length?t._extractHeaders(a,n):t._generateBlankHeaders(a,n);for(var r=0;r<n.length;r++){var i=n[r],s=i.getElementsByTagName("td"),p={};t.hasIndex||(p[o.index]=r);for(var m=0;m<s.length;m++){var d=s[m];void 0!==this.fieldIndex[m]&&(p[this.fieldIndex[m]]=d.innerHTML)}l.push(p)}var f=document.createElement("div"),b=e.attributes;for(var m in b)"object"==_typeof(b[m])&&f.setAttribute(b[m].name,b[m].value);e.parentNode.replaceChild(f,e),o.data=l,t.table.options.htmlImported.call(this.table),this.table.element=f},HtmlTableImport.prototype._extractOptions=function(t,e,o){var a=t.attributes,n=o?Object.assign([],o):Object.keys(e),l={};n.forEach(function(t){l[t.toLowerCase()]=t});for(var r in a){var i,s=a[r];s&&"object"==(void 0===s?"undefined":_typeof(s))&&s.name&&0===s.name.indexOf("tabulator-")&&(i=s.name.replace("tabulator-",""),void 0!==l[i]&&(e[l[i]]=this._attribValue(s.value)))}},HtmlTableImport.prototype._attribValue=function(t){return"true"===t||"false"!==t&&t},HtmlTableImport.prototype._findCol=function(t){return this.table.options.columns.find(function(e){return e.title===t})||!1},HtmlTableImport.prototype._extractHeaders=function(t,e){for(var o=0;o<t.length;o++){var a,n=t[o],l=!1,r=this._findCol(n.textContent);r?l=!0:r={title:n.textContent.trim()},r.field||(r.field=n.textContent.trim().toLowerCase().replace(" ","_")),a=n.getAttribute("width"),a&&!r.width&&(r.width=a),n.attributes,this._extractOptions(n,r,Column.prototype.defaultOptionList),this.fieldIndex[o]=r.field,r.field==this.table.options.index&&(this.hasIndex=!0),l||this.table.options.columns.push(r)}},HtmlTableImport.prototype._generateBlankHeaders=function(t,e){for(var o=0;o<t.length;o++){var a=t[o],n={title:"",field:"col"+o};this.fieldIndex[o]=n.field;var l=a.getAttribute("width");l&&(n.width=l),this.table.options.columns.push(n)}},Tabulator.prototype.registerModule("htmlTableImport",HtmlTableImport);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/keybindings.js b/app/static/vendors/tabulator/js/modules/keybindings.js
deleted file mode 100644 (file)
index b65d9e8..0000000
+++ /dev/null
@@ -1,392 +0,0 @@
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-
-var Keybindings = function Keybindings(table) {
-       this.table = table; //hold Tabulator object
-       this.watchKeys = null;
-       this.pressedKeys = null;
-       this.keyupBinding = false;
-       this.keydownBinding = false;
-};
-
-Keybindings.prototype.initialize = function () {
-       var bindings = this.table.options.keybindings,
-           mergedBindings = {};
-
-       this.watchKeys = {};
-       this.pressedKeys = [];
-
-       if (bindings !== false) {
-
-               for (var key in this.bindings) {
-                       mergedBindings[key] = this.bindings[key];
-               }
-
-               if (Object.keys(bindings).length) {
-
-                       for (var _key in bindings) {
-                               mergedBindings[_key] = bindings[_key];
-                       }
-               }
-
-               this.mapBindings(mergedBindings);
-               this.bindEvents();
-       }
-};
-
-Keybindings.prototype.mapBindings = function (bindings) {
-       var _this = this;
-
-       var self = this;
-
-       var _loop = function _loop(key) {
-
-               if (_this.actions[key]) {
-
-                       if (bindings[key]) {
-
-                               if (_typeof(bindings[key]) !== "object") {
-                                       bindings[key] = [bindings[key]];
-                               }
-
-                               bindings[key].forEach(function (binding) {
-                                       self.mapBinding(key, binding);
-                               });
-                       }
-               } else {
-                       console.warn("Key Binding Error - no such action:", key);
-               }
-       };
-
-       for (var key in bindings) {
-               _loop(key);
-       }
-};
-
-Keybindings.prototype.mapBinding = function (action, symbolsList) {
-       var self = this;
-
-       var binding = {
-               action: this.actions[action],
-               keys: [],
-               ctrl: false,
-               shift: false,
-               meta: false
-       };
-
-       var symbols = symbolsList.toString().toLowerCase().split(" ").join("").split("+");
-
-       symbols.forEach(function (symbol) {
-               switch (symbol) {
-                       case "ctrl":
-                               binding.ctrl = true;
-                               break;
-
-                       case "shift":
-                               binding.shift = true;
-                               break;
-
-                       case "meta":
-                               binding.meta = true;
-                               break;
-
-                       default:
-                               symbol = parseInt(symbol);
-                               binding.keys.push(symbol);
-
-                               if (!self.watchKeys[symbol]) {
-                                       self.watchKeys[symbol] = [];
-                               }
-
-                               self.watchKeys[symbol].push(binding);
-               }
-       });
-};
-
-Keybindings.prototype.bindEvents = function () {
-       var self = this;
-
-       this.keyupBinding = function (e) {
-               var code = e.keyCode;
-               var bindings = self.watchKeys[code];
-
-               if (bindings) {
-
-                       self.pressedKeys.push(code);
-
-                       bindings.forEach(function (binding) {
-                               self.checkBinding(e, binding);
-                       });
-               }
-       };
-
-       this.keydownBinding = function (e) {
-               var code = e.keyCode;
-               var bindings = self.watchKeys[code];
-
-               if (bindings) {
-
-                       var index = self.pressedKeys.indexOf(code);
-
-                       if (index > -1) {
-                               self.pressedKeys.splice(index, 1);
-                       }
-               }
-       };
-
-       this.table.element.addEventListener("keydown", this.keyupBinding);
-
-       this.table.element.addEventListener("keyup", this.keydownBinding);
-};
-
-Keybindings.prototype.clearBindings = function () {
-       if (this.keyupBinding) {
-               this.table.element.removeEventListener("keydown", this.keyupBinding);
-       }
-
-       if (this.keydownBinding) {
-               this.table.element.removeEventListener("keyup", this.keydownBinding);
-       }
-};
-
-Keybindings.prototype.checkBinding = function (e, binding) {
-       var self = this,
-           match = true;
-
-       if (e.ctrlKey == binding.ctrl && e.shiftKey == binding.shift && e.metaKey == binding.meta) {
-               binding.keys.forEach(function (key) {
-                       var index = self.pressedKeys.indexOf(key);
-
-                       if (index == -1) {
-                               match = false;
-                       }
-               });
-
-               if (match) {
-                       binding.action.call(self, e);
-               }
-
-               return true;
-       }
-
-       return false;
-};
-
-//default bindings
-Keybindings.prototype.bindings = {
-       navPrev: "shift + 9",
-       navNext: 9,
-       navUp: 38,
-       navDown: 40,
-       scrollPageUp: 33,
-       scrollPageDown: 34,
-       scrollToStart: 36,
-       scrollToEnd: 35,
-       undo: "ctrl + 90",
-       redo: "ctrl + 89",
-       copyToClipboard: "ctrl + 67"
-};
-
-//default actions
-Keybindings.prototype.actions = {
-       keyBlock: function keyBlock(e) {
-               e.stopPropagation();
-               e.preventDefault();
-       },
-       scrollPageUp: function scrollPageUp(e) {
-               var rowManager = this.table.rowManager,
-                   newPos = rowManager.scrollTop - rowManager.height,
-                   scrollMax = rowManager.element.scrollHeight;
-
-               e.preventDefault();
-
-               if (rowManager.displayRowsCount) {
-                       if (newPos >= 0) {
-                               rowManager.element.scrollTop = newPos;
-                       } else {
-                               rowManager.scrollToRow(rowManager.getDisplayRows()[0]);
-                       }
-               }
-
-               this.table.element.focus();
-       },
-       scrollPageDown: function scrollPageDown(e) {
-               var rowManager = this.table.rowManager,
-                   newPos = rowManager.scrollTop + rowManager.height,
-                   scrollMax = rowManager.element.scrollHeight;
-
-               e.preventDefault();
-
-               if (rowManager.displayRowsCount) {
-                       if (newPos <= scrollMax) {
-                               rowManager.element.scrollTop = newPos;
-                       } else {
-                               rowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);
-                       }
-               }
-
-               this.table.element.focus();
-       },
-       scrollToStart: function scrollToStart(e) {
-               var rowManager = this.table.rowManager;
-
-               e.preventDefault();
-
-               if (rowManager.displayRowsCount) {
-                       rowManager.scrollToRow(rowManager.getDisplayRows()[0]);
-               }
-
-               this.table.element.focus();
-       },
-       scrollToEnd: function scrollToEnd(e) {
-               var rowManager = this.table.rowManager;
-
-               e.preventDefault();
-
-               if (rowManager.displayRowsCount) {
-                       rowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);
-               }
-
-               this.table.element.focus();
-       },
-       navPrev: function navPrev(e) {
-               var cell = false;
-
-               if (this.table.modExists("edit")) {
-                       cell = this.table.modules.edit.currentCell;
-
-                       if (cell) {
-                               e.preventDefault();
-                               cell.nav().prev();
-                       }
-               }
-       },
-
-       navNext: function navNext(e) {
-               var cell = false;
-               var newRow = this.table.options.tabEndNewRow;
-               var nav;
-
-               if (this.table.modExists("edit")) {
-                       cell = this.table.modules.edit.currentCell;
-
-                       if (cell) {
-                               e.preventDefault();
-
-                               nav = cell.nav();
-
-                               if (!nav.next()) {
-                                       if (newRow) {
-
-                                               cell.getElement().firstChild.blur();
-
-                                               if (newRow === true) {
-                                                       newRow = this.table.addRow({});
-                                               } else {
-                                                       if (typeof newRow == "function") {
-                                                               newRow = this.table.addRow(newRow(cell.row.getComponent()));
-                                                       } else {
-                                                               newRow = this.table.addRow(Object.assign({}, newRow));
-                                                       }
-                                               }
-
-                                               newRow.then(function () {
-                                                       setTimeout(function () {
-                                                               nav.next();
-                                                       });
-                                               });
-                                       }
-                               }
-                       }
-               }
-       },
-
-       navLeft: function navLeft(e) {
-               var cell = false;
-
-               if (this.table.modExists("edit")) {
-                       cell = this.table.modules.edit.currentCell;
-
-                       if (cell) {
-                               e.preventDefault();
-                               cell.nav().left();
-                       }
-               }
-       },
-
-       navRight: function navRight(e) {
-               var cell = false;
-
-               if (this.table.modExists("edit")) {
-                       cell = this.table.modules.edit.currentCell;
-
-                       if (cell) {
-                               e.preventDefault();
-                               cell.nav().right();
-                       }
-               }
-       },
-
-       navUp: function navUp(e) {
-               var cell = false;
-
-               if (this.table.modExists("edit")) {
-                       cell = this.table.modules.edit.currentCell;
-
-                       if (cell) {
-                               e.preventDefault();
-                               cell.nav().up();
-                       }
-               }
-       },
-
-       navDown: function navDown(e) {
-               var cell = false;
-
-               if (this.table.modExists("edit")) {
-                       cell = this.table.modules.edit.currentCell;
-
-                       if (cell) {
-                               e.preventDefault();
-                               cell.nav().down();
-                       }
-               }
-       },
-
-       undo: function undo(e) {
-               var cell = false;
-               if (this.table.options.history && this.table.modExists("history") && this.table.modExists("edit")) {
-
-                       cell = this.table.modules.edit.currentCell;
-
-                       if (!cell) {
-                               e.preventDefault();
-                               this.table.modules.history.undo();
-                       }
-               }
-       },
-
-       redo: function redo(e) {
-               var cell = false;
-               if (this.table.options.history && this.table.modExists("history") && this.table.modExists("edit")) {
-
-                       cell = this.table.modules.edit.currentCell;
-
-                       if (!cell) {
-                               e.preventDefault();
-                               this.table.modules.history.redo();
-                       }
-               }
-       },
-
-       copyToClipboard: function copyToClipboard(e) {
-               if (!this.table.modules.edit.currentCell) {
-                       if (this.table.modExists("clipboard", true)) {
-                               this.table.modules.clipboard.copy(false, true);
-                       }
-               }
-       }
-};
-
-Tabulator.prototype.registerModule("keybindings", Keybindings);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/keybindings.min.js b/app/static/vendors/tabulator/js/modules/keybindings.min.js
deleted file mode 100644 (file)
index 3535b88..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Keybindings=function(t){this.table=t,this.watchKeys=null,this.pressedKeys=null,this.keyupBinding=!1,this.keydownBinding=!1};Keybindings.prototype.initialize=function(){var t=this.table.options.keybindings,e={};if(this.watchKeys={},this.pressedKeys=[],!1!==t){for(var i in this.bindings)e[i]=this.bindings[i];if(Object.keys(t).length)for(var n in t)e[n]=t[n];this.mapBindings(e),this.bindEvents()}},Keybindings.prototype.mapBindings=function(t){var e=this,i=this;for(var n in t)!function(n){e.actions[n]?t[n]&&("object"!==_typeof(t[n])&&(t[n]=[t[n]]),t[n].forEach(function(t){i.mapBinding(n,t)})):console.warn("Key Binding Error - no such action:",n)}(n)},Keybindings.prototype.mapBinding=function(t,e){var i=this,n={action:this.actions[t],keys:[],ctrl:!1,shift:!1,meta:!1};e.toString().toLowerCase().split(" ").join("").split("+").forEach(function(t){switch(t){case"ctrl":n.ctrl=!0;break;case"shift":n.shift=!0;break;case"meta":n.meta=!0;break;default:t=parseInt(t),n.keys.push(t),i.watchKeys[t]||(i.watchKeys[t]=[]),i.watchKeys[t].push(n)}})},Keybindings.prototype.bindEvents=function(){var t=this;this.keyupBinding=function(e){var i=e.keyCode,n=t.watchKeys[i];n&&(t.pressedKeys.push(i),n.forEach(function(i){t.checkBinding(e,i)}))},this.keydownBinding=function(e){var i=e.keyCode;if(t.watchKeys[i]){var n=t.pressedKeys.indexOf(i);n>-1&&t.pressedKeys.splice(n,1)}},this.table.element.addEventListener("keydown",this.keyupBinding),this.table.element.addEventListener("keyup",this.keydownBinding)},Keybindings.prototype.clearBindings=function(){this.keyupBinding&&this.table.element.removeEventListener("keydown",this.keyupBinding),this.keydownBinding&&this.table.element.removeEventListener("keyup",this.keydownBinding)},Keybindings.prototype.checkBinding=function(t,e){var i=this,n=!0;return t.ctrlKey==e.ctrl&&t.shiftKey==e.shift&&t.metaKey==e.meta&&(e.keys.forEach(function(t){-1==i.pressedKeys.indexOf(t)&&(n=!1)}),n&&e.action.call(i,t),!0)},Keybindings.prototype.bindings={navPrev:"shift + 9",navNext:9,navUp:38,navDown:40,scrollPageUp:33,scrollPageDown:34,scrollToStart:36,scrollToEnd:35,undo:"ctrl + 90",redo:"ctrl + 89",copyToClipboard:"ctrl + 67"},Keybindings.prototype.actions={keyBlock:function(t){t.stopPropagation(),t.preventDefault()},scrollPageUp:function(t){var e=this.table.rowManager,i=e.scrollTop-e.height;e.element.scrollHeight;t.preventDefault(),e.displayRowsCount&&(i>=0?e.element.scrollTop=i:e.scrollToRow(e.getDisplayRows()[0])),this.table.element.focus()},scrollPageDown:function(t){var e=this.table.rowManager,i=e.scrollTop+e.height,n=e.element.scrollHeight;t.preventDefault(),e.displayRowsCount&&(i<=n?e.element.scrollTop=i:e.scrollToRow(e.getDisplayRows()[e.displayRowsCount-1])),this.table.element.focus()},scrollToStart:function(t){var e=this.table.rowManager;t.preventDefault(),e.displayRowsCount&&e.scrollToRow(e.getDisplayRows()[0]),this.table.element.focus()},scrollToEnd:function(t){var e=this.table.rowManager;t.preventDefault(),e.displayRowsCount&&e.scrollToRow(e.getDisplayRows()[e.displayRowsCount-1]),this.table.element.focus()},navPrev:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().prev())},navNext:function(t){var e,i=!1,n=this.table.options.tabEndNewRow;this.table.modExists("edit")&&(i=this.table.modules.edit.currentCell)&&(t.preventDefault(),e=i.nav(),e.next()||n&&(i.getElement().firstChild.blur(),n=!0===n?this.table.addRow({}):"function"==typeof n?this.table.addRow(n(i.row.getComponent())):this.table.addRow(Object.assign({},n)),n.then(function(){setTimeout(function(){e.next()})})))},navLeft:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().left())},navRight:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().right())},navUp:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().up())},navDown:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().down())},undo:function(t){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(t.preventDefault(),this.table.modules.history.undo()))},redo:function(t){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(t.preventDefault(),this.table.modules.history.redo()))},copyToClipboard:function(t){this.table.modules.edit.currentCell||this.table.modExists("clipboard",!0)&&this.table.modules.clipboard.copy(!1,!0)}},Tabulator.prototype.registerModule("keybindings",Keybindings);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/menu.js b/app/static/vendors/tabulator/js/modules/menu.js
deleted file mode 100644 (file)
index d86575f..0000000
+++ /dev/null
@@ -1,200 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-
-var Menu = function Menu(table) {
-       this.table = table; //hold Tabulator object
-       this.menuEl = false;
-       this.blurEvent = this.hideMenu.bind(this);
-       this.escEvent = this.escMenu.bind(this);
-       this.nestedMenuBlock = false;
-};
-
-Menu.prototype.initializeColumnHeader = function (column) {
-       var _this = this;
-
-       var headerMenuEl;
-
-       if (column.definition.headerContextMenu) {
-               column.getElement().addEventListener("contextmenu", function (e) {
-                       var menu = typeof column.definition.headerContextMenu == "function" ? column.definition.headerContextMenu(column.getComponent()) : column.definition.headerContextMenu;
-
-                       e.preventDefault();
-
-                       _this.loadMenu(e, column, menu);
-               });
-       }
-
-       if (column.definition.headerMenu) {
-
-               headerMenuEl = document.createElement("span");
-               headerMenuEl.classList.add("tabulator-header-menu-button");
-               headerMenuEl.innerHTML = "&vellip;";
-
-               headerMenuEl.addEventListener("click", function (e) {
-                       var menu = typeof column.definition.headerMenu == "function" ? column.definition.headerMenu(column.getComponent()) : column.definition.headerMenu;
-                       e.stopPropagation();
-                       e.preventDefault();
-
-                       _this.loadMenu(e, column, menu);
-               });
-
-               column.titleElement.insertBefore(headerMenuEl, column.titleElement.firstChild);
-       }
-};
-
-Menu.prototype.initializeCell = function (cell) {
-       var _this2 = this;
-
-       cell.getElement().addEventListener("contextmenu", function (e) {
-               var menu = typeof cell.column.definition.contextMenu == "function" ? cell.column.definition.contextMenu(cell.getComponent()) : cell.column.definition.contextMenu;
-
-               e.stopImmediatePropagation();
-
-               _this2.loadMenu(e, cell, menu);
-       });
-};
-
-Menu.prototype.initializeRow = function (row) {
-       var _this3 = this;
-
-       row.getElement().addEventListener("contextmenu", function (e) {
-               var menu = typeof _this3.table.options.rowContextMenu == "function" ? _this3.table.options.rowContextMenu(row.getComponent()) : _this3.table.options.rowContextMenu;
-
-               _this3.loadMenu(e, row, menu);
-       });
-};
-
-Menu.prototype.initializeGroup = function (group) {
-       var _this4 = this;
-
-       group.getElement().addEventListener("contextmenu", function (e) {
-               var menu = typeof _this4.table.options.groupContextMenu == "function" ? _this4.table.options.groupContextMenu(group.getComponent()) : _this4.table.options.groupContextMenu;
-
-               _this4.loadMenu(e, group, menu);
-       });
-};
-
-Menu.prototype.loadMenu = function (e, component, menu) {
-       var _this5 = this;
-
-       var docHeight = Math.max(document.body.offsetHeight, window.innerHeight);
-
-       e.preventDefault();
-
-       //abort if no menu set
-       if (!menu || !menu.length) {
-               return;
-       }
-
-       if (this.nestedMenuBlock) {
-               //abort if child menu already open
-               if (this.isOpen()) {
-                       return;
-               }
-       } else {
-               this.nestedMenuBlock = setTimeout(function () {
-                       _this5.nestedMenuBlock = false;
-               }, 100);
-       }
-
-       this.hideMenu();
-
-       this.menuEl = document.createElement("div");
-       this.menuEl.classList.add("tabulator-menu");
-
-       menu.forEach(function (item) {
-               var itemEl = document.createElement("div");
-               var label = item.label;
-               var disabled = item.disabled;
-
-               if (item.separator) {
-                       itemEl.classList.add("tabulator-menu-separator");
-               } else {
-                       itemEl.classList.add("tabulator-menu-item");
-
-                       if (typeof label == "function") {
-                               label = label(component.getComponent());
-                       }
-
-                       if (label instanceof Node) {
-                               itemEl.appendChild(label);
-                       } else {
-                               itemEl.innerHTML = label;
-                       }
-
-                       if (typeof disabled == "function") {
-                               disabled = disabled(component.getComponent());
-                       }
-
-                       if (disabled) {
-                               itemEl.classList.add("tabulator-menu-item-disabled");
-                               itemEl.addEventListener("click", function (e) {
-                                       e.stopPropagation();
-                               });
-                       } else {
-                               itemEl.addEventListener("click", function (e) {
-                                       _this5.hideMenu();
-                                       item.action(e, component.getComponent());
-                               });
-                       }
-               }
-
-               _this5.menuEl.appendChild(itemEl);
-       });
-
-       this.menuEl.style.top = e.pageY + "px";
-       this.menuEl.style.left = e.pageX + "px";
-
-       document.body.addEventListener("click", this.blurEvent);
-       this.table.rowManager.element.addEventListener("scroll", this.blurEvent);
-
-       setTimeout(function () {
-               document.body.addEventListener("contextmenu", _this5.blurEvent);
-       }, 100);
-
-       document.body.addEventListener("keydown", this.escEvent);
-
-       document.body.appendChild(this.menuEl);
-
-       //move menu to start on right edge if it is too close to the edge of the screen
-       if (e.pageX + this.menuEl.offsetWidth >= document.body.offsetWidth) {
-               this.menuEl.style.left = "";
-               this.menuEl.style.right = document.body.offsetWidth - e.pageX + "px";
-       }
-
-       //move menu to start on bottom edge if it is too close to the edge of the screen
-       if (e.pageY + this.menuEl.offsetHeight >= docHeight) {
-               this.menuEl.style.top = "";
-               this.menuEl.style.bottom = docHeight - e.pageY + "px";
-       }
-};
-
-Menu.prototype.isOpen = function () {
-       return !!this.menuEl.parentNode;
-};
-
-Menu.prototype.escMenu = function (e) {
-       if (e.keyCode == 27) {
-               this.hideMenu();
-       }
-};
-
-Menu.prototype.hideMenu = function () {
-       if (this.menuEl.parentNode) {
-               this.menuEl.parentNode.removeChild(this.menuEl);
-       }
-
-       if (this.escEvent) {
-               document.body.removeEventListener("keydown", this.escEvent);
-       }
-
-       if (this.blurEvent) {
-               document.body.removeEventListener("click", this.blurEvent);
-               document.body.removeEventListener("contextmenu", this.blurEvent);
-               this.table.rowManager.element.removeEventListener("scroll", this.blurEvent);
-       }
-};
-
-//default accessors
-Menu.prototype.menus = {};
-
-Tabulator.prototype.registerModule("menu", Menu);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/menu.min.js b/app/static/vendors/tabulator/js/modules/menu.min.js
deleted file mode 100644 (file)
index 40b8241..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-var Menu=function(e){this.table=e,this.menuEl=!1,this.blurEvent=this.hideMenu.bind(this),this.escEvent=this.escMenu.bind(this),this.nestedMenuBlock=!1};Menu.prototype.initializeColumnHeader=function(e){var t,n=this;e.definition.headerContextMenu&&e.getElement().addEventListener("contextmenu",function(t){var o="function"==typeof e.definition.headerContextMenu?e.definition.headerContextMenu(e.getComponent()):e.definition.headerContextMenu;t.preventDefault(),n.loadMenu(t,e,o)}),e.definition.headerMenu&&(t=document.createElement("span"),t.classList.add("tabulator-header-menu-button"),t.innerHTML="&vellip;",t.addEventListener("click",function(t){var o="function"==typeof e.definition.headerMenu?e.definition.headerMenu(e.getComponent()):e.definition.headerMenu;t.stopPropagation(),t.preventDefault(),n.loadMenu(t,e,o)}),e.titleElement.insertBefore(t,e.titleElement.firstChild))},Menu.prototype.initializeCell=function(e){var t=this;e.getElement().addEventListener("contextmenu",function(n){var o="function"==typeof e.column.definition.contextMenu?e.column.definition.contextMenu(e.getComponent()):e.column.definition.contextMenu;n.stopImmediatePropagation(),t.loadMenu(n,e,o)})},Menu.prototype.initializeRow=function(e){var t=this;e.getElement().addEventListener("contextmenu",function(n){var o="function"==typeof t.table.options.rowContextMenu?t.table.options.rowContextMenu(e.getComponent()):t.table.options.rowContextMenu;t.loadMenu(n,e,o)})},Menu.prototype.initializeGroup=function(e){var t=this;e.getElement().addEventListener("contextmenu",function(n){var o="function"==typeof t.table.options.groupContextMenu?t.table.options.groupContextMenu(e.getComponent()):t.table.options.groupContextMenu;t.loadMenu(n,e,o)})},Menu.prototype.loadMenu=function(e,t,n){var o=this,i=Math.max(document.body.offsetHeight,window.innerHeight);if(e.preventDefault(),n&&n.length){if(this.nestedMenuBlock){if(this.isOpen())return}else this.nestedMenuBlock=setTimeout(function(){o.nestedMenuBlock=!1},100);this.hideMenu(),this.menuEl=document.createElement("div"),this.menuEl.classList.add("tabulator-menu"),n.forEach(function(e){var n=document.createElement("div"),i=e.label,u=e.disabled;e.separator?n.classList.add("tabulator-menu-separator"):(n.classList.add("tabulator-menu-item"),"function"==typeof i&&(i=i(t.getComponent())),i instanceof Node?n.appendChild(i):n.innerHTML=i,"function"==typeof u&&(u=u(t.getComponent())),u?(n.classList.add("tabulator-menu-item-disabled"),n.addEventListener("click",function(e){e.stopPropagation()})):n.addEventListener("click",function(n){o.hideMenu(),e.action(n,t.getComponent())})),o.menuEl.appendChild(n)}),this.menuEl.style.top=e.pageY+"px",this.menuEl.style.left=e.pageX+"px",document.body.addEventListener("click",this.blurEvent),this.table.rowManager.element.addEventListener("scroll",this.blurEvent),setTimeout(function(){document.body.addEventListener("contextmenu",o.blurEvent)},100),document.body.addEventListener("keydown",this.escEvent),document.body.appendChild(this.menuEl),e.pageX+this.menuEl.offsetWidth>=document.body.offsetWidth&&(this.menuEl.style.left="",this.menuEl.style.right=document.body.offsetWidth-e.pageX+"px"),e.pageY+this.menuEl.offsetHeight>=i&&(this.menuEl.style.top="",this.menuEl.style.bottom=i-e.pageY+"px")}},Menu.prototype.isOpen=function(){return!!this.menuEl.parentNode},Menu.prototype.escMenu=function(e){27==e.keyCode&&this.hideMenu()},Menu.prototype.hideMenu=function(){this.menuEl.parentNode&&this.menuEl.parentNode.removeChild(this.menuEl),this.escEvent&&document.body.removeEventListener("keydown",this.escEvent),this.blurEvent&&(document.body.removeEventListener("click",this.blurEvent),document.body.removeEventListener("contextmenu",this.blurEvent),this.table.rowManager.element.removeEventListener("scroll",this.blurEvent))},Menu.prototype.menus={},Tabulator.prototype.registerModule("menu",Menu);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/moveable_columns.js b/app/static/vendors/tabulator/js/modules/moveable_columns.js
deleted file mode 100644 (file)
index 5244016..0000000
+++ /dev/null
@@ -1,289 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-
-var MoveColumns = function MoveColumns(table) {
-       this.table = table; //hold Tabulator object
-       this.placeholderElement = this.createPlaceholderElement();
-       this.hoverElement = false; //floating column header element
-       this.checkTimeout = false; //click check timeout holder
-       this.checkPeriod = 250; //period to wait on mousedown to consider this a move and not a click
-       this.moving = false; //currently moving column
-       this.toCol = false; //destination column
-       this.toColAfter = false; //position of moving column relative to the desitnation column
-       this.startX = 0; //starting position within header element
-       this.autoScrollMargin = 40; //auto scroll on edge when within margin
-       this.autoScrollStep = 5; //auto scroll distance in pixels
-       this.autoScrollTimeout = false; //auto scroll timeout
-       this.touchMove = false;
-
-       this.moveHover = this.moveHover.bind(this);
-       this.endMove = this.endMove.bind(this);
-};
-
-MoveColumns.prototype.createPlaceholderElement = function () {
-       var el = document.createElement("div");
-
-       el.classList.add("tabulator-col");
-       el.classList.add("tabulator-col-placeholder");
-
-       return el;
-};
-
-MoveColumns.prototype.initializeColumn = function (column) {
-       var self = this,
-           config = {},
-           colEl;
-
-       if (!column.modules.frozen) {
-
-               colEl = column.getElement();
-
-               config.mousemove = function (e) {
-                       if (column.parent === self.moving.parent) {
-                               if ((self.touchMove ? e.touches[0].pageX : e.pageX) - Tabulator.prototype.helpers.elOffset(colEl).left + self.table.columnManager.element.scrollLeft > column.getWidth() / 2) {
-                                       if (self.toCol !== column || !self.toColAfter) {
-                                               colEl.parentNode.insertBefore(self.placeholderElement, colEl.nextSibling);
-                                               self.moveColumn(column, true);
-                                       }
-                               } else {
-                                       if (self.toCol !== column || self.toColAfter) {
-                                               colEl.parentNode.insertBefore(self.placeholderElement, colEl);
-                                               self.moveColumn(column, false);
-                                       }
-                               }
-                       }
-               }.bind(self);
-
-               colEl.addEventListener("mousedown", function (e) {
-                       self.touchMove = false;
-                       if (e.which === 1) {
-                               self.checkTimeout = setTimeout(function () {
-                                       self.startMove(e, column);
-                               }, self.checkPeriod);
-                       }
-               });
-
-               colEl.addEventListener("mouseup", function (e) {
-                       if (e.which === 1) {
-                               if (self.checkTimeout) {
-                                       clearTimeout(self.checkTimeout);
-                               }
-                       }
-               });
-
-               self.bindTouchEvents(column);
-       }
-
-       column.modules.moveColumn = config;
-};
-
-MoveColumns.prototype.bindTouchEvents = function (column) {
-       var self = this,
-           colEl = column.getElement(),
-           startXMove = false,
-           //shifting center position of the cell
-       dir = false,
-           currentCol,
-           nextCol,
-           prevCol,
-           nextColWidth,
-           prevColWidth,
-           nextColWidthLast,
-           prevColWidthLast;
-
-       colEl.addEventListener("touchstart", function (e) {
-               self.checkTimeout = setTimeout(function () {
-                       self.touchMove = true;
-                       currentCol = column;
-                       nextCol = column.nextColumn();
-                       nextColWidth = nextCol ? nextCol.getWidth() / 2 : 0;
-                       prevCol = column.prevColumn();
-                       prevColWidth = prevCol ? prevCol.getWidth() / 2 : 0;
-                       nextColWidthLast = 0;
-                       prevColWidthLast = 0;
-                       startXMove = false;
-
-                       self.startMove(e, column);
-               }, self.checkPeriod);
-       }, { passive: true });
-
-       colEl.addEventListener("touchmove", function (e) {
-               var halfCol, diff, moveToCol;
-
-               if (self.moving) {
-                       self.moveHover(e);
-
-                       if (!startXMove) {
-                               startXMove = e.touches[0].pageX;
-                       }
-
-                       diff = e.touches[0].pageX - startXMove;
-
-                       if (diff > 0) {
-                               if (nextCol && diff - nextColWidthLast > nextColWidth) {
-                                       moveToCol = nextCol;
-
-                                       if (moveToCol !== column) {
-                                               startXMove = e.touches[0].pageX;
-                                               moveToCol.getElement().parentNode.insertBefore(self.placeholderElement, moveToCol.getElement().nextSibling);
-                                               self.moveColumn(moveToCol, true);
-                                       }
-                               }
-                       } else {
-                               if (prevCol && -diff - prevColWidthLast > prevColWidth) {
-                                       moveToCol = prevCol;
-
-                                       if (moveToCol !== column) {
-                                               startXMove = e.touches[0].pageX;
-                                               moveToCol.getElement().parentNode.insertBefore(self.placeholderElement, moveToCol.getElement());
-                                               self.moveColumn(moveToCol, false);
-                                       }
-                               }
-                       }
-
-                       if (moveToCol) {
-                               currentCol = moveToCol;
-                               nextCol = moveToCol.nextColumn();
-                               nextColWidthLast = nextColWidth;
-                               nextColWidth = nextCol ? nextCol.getWidth() / 2 : 0;
-                               prevCol = moveToCol.prevColumn();
-                               prevColWidthLast = prevColWidth;
-                               prevColWidth = prevCol ? prevCol.getWidth() / 2 : 0;
-                       }
-               }
-       }, { passive: true });
-
-       colEl.addEventListener("touchend", function (e) {
-               if (self.checkTimeout) {
-                       clearTimeout(self.checkTimeout);
-               }
-               if (self.moving) {
-                       self.endMove(e);
-               }
-       });
-};
-
-MoveColumns.prototype.startMove = function (e, column) {
-       var element = column.getElement();
-
-       this.moving = column;
-       this.startX = (this.touchMove ? e.touches[0].pageX : e.pageX) - Tabulator.prototype.helpers.elOffset(element).left;
-
-       this.table.element.classList.add("tabulator-block-select");
-
-       //create placeholder
-       this.placeholderElement.style.width = column.getWidth() + "px";
-       this.placeholderElement.style.height = column.getHeight() + "px";
-
-       element.parentNode.insertBefore(this.placeholderElement, element);
-       element.parentNode.removeChild(element);
-
-       //create hover element
-       this.hoverElement = element.cloneNode(true);
-       this.hoverElement.classList.add("tabulator-moving");
-
-       this.table.columnManager.getElement().appendChild(this.hoverElement);
-
-       this.hoverElement.style.left = "0";
-       this.hoverElement.style.bottom = "0";
-
-       if (!this.touchMove) {
-               this._bindMouseMove();
-
-               document.body.addEventListener("mousemove", this.moveHover);
-               document.body.addEventListener("mouseup", this.endMove);
-       }
-
-       this.moveHover(e);
-};
-
-MoveColumns.prototype._bindMouseMove = function () {
-       this.table.columnManager.columnsByIndex.forEach(function (column) {
-               if (column.modules.moveColumn.mousemove) {
-                       column.getElement().addEventListener("mousemove", column.modules.moveColumn.mousemove);
-               }
-       });
-};
-
-MoveColumns.prototype._unbindMouseMove = function () {
-       this.table.columnManager.columnsByIndex.forEach(function (column) {
-               if (column.modules.moveColumn.mousemove) {
-                       column.getElement().removeEventListener("mousemove", column.modules.moveColumn.mousemove);
-               }
-       });
-};
-
-MoveColumns.prototype.moveColumn = function (column, after) {
-       var movingCells = this.moving.getCells();
-
-       this.toCol = column;
-       this.toColAfter = after;
-
-       if (after) {
-               column.getCells().forEach(function (cell, i) {
-                       var cellEl = cell.getElement();
-                       cellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl.nextSibling);
-               });
-       } else {
-               column.getCells().forEach(function (cell, i) {
-                       var cellEl = cell.getElement();
-                       cellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl);
-               });
-       }
-};
-
-MoveColumns.prototype.endMove = function (e) {
-       if (e.which === 1 || this.touchMove) {
-               this._unbindMouseMove();
-
-               this.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);
-               this.placeholderElement.parentNode.removeChild(this.placeholderElement);
-               this.hoverElement.parentNode.removeChild(this.hoverElement);
-
-               this.table.element.classList.remove("tabulator-block-select");
-
-               if (this.toCol) {
-                       this.table.columnManager.moveColumnActual(this.moving, this.toCol, this.toColAfter);
-               }
-
-               this.moving = false;
-               this.toCol = false;
-               this.toColAfter = false;
-
-               if (!this.touchMove) {
-                       document.body.removeEventListener("mousemove", this.moveHover);
-                       document.body.removeEventListener("mouseup", this.endMove);
-               }
-       }
-};
-
-MoveColumns.prototype.moveHover = function (e) {
-       var self = this,
-           columnHolder = self.table.columnManager.getElement(),
-           scrollLeft = columnHolder.scrollLeft,
-           xPos = (self.touchMove ? e.touches[0].pageX : e.pageX) - Tabulator.prototype.helpers.elOffset(columnHolder).left + scrollLeft,
-           scrollPos;
-
-       self.hoverElement.style.left = xPos - self.startX + "px";
-
-       if (xPos - scrollLeft < self.autoScrollMargin) {
-               if (!self.autoScrollTimeout) {
-                       self.autoScrollTimeout = setTimeout(function () {
-                               scrollPos = Math.max(0, scrollLeft - 5);
-                               self.table.rowManager.getElement().scrollLeft = scrollPos;
-                               self.autoScrollTimeout = false;
-                       }, 1);
-               }
-       }
-
-       if (scrollLeft + columnHolder.clientWidth - xPos < self.autoScrollMargin) {
-               if (!self.autoScrollTimeout) {
-                       self.autoScrollTimeout = setTimeout(function () {
-                               scrollPos = Math.min(columnHolder.clientWidth, scrollLeft + 5);
-                               self.table.rowManager.getElement().scrollLeft = scrollPos;
-                               self.autoScrollTimeout = false;
-                       }, 1);
-               }
-       }
-};
-
-Tabulator.prototype.registerModule("moveColumn", MoveColumns);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/moveable_columns.min.js b/app/static/vendors/tabulator/js/modules/moveable_columns.min.js
deleted file mode 100644 (file)
index 0135a3b..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-var MoveColumns=function(e){this.table=e,this.placeholderElement=this.createPlaceholderElement(),this.hoverElement=!1,this.checkTimeout=!1,this.checkPeriod=250,this.moving=!1,this.toCol=!1,this.toColAfter=!1,this.startX=0,this.autoScrollMargin=40,this.autoScrollStep=5,this.autoScrollTimeout=!1,this.touchMove=!1,this.moveHover=this.moveHover.bind(this),this.endMove=this.endMove.bind(this)};MoveColumns.prototype.createPlaceholderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-col"),e.classList.add("tabulator-col-placeholder"),e},MoveColumns.prototype.initializeColumn=function(e){var t,o=this,n={};e.modules.frozen||(t=e.getElement(),n.mousemove=function(n){e.parent===o.moving.parent&&((o.touchMove?n.touches[0].pageX:n.pageX)-Tabulator.prototype.helpers.elOffset(t).left+o.table.columnManager.element.scrollLeft>e.getWidth()/2?o.toCol===e&&o.toColAfter||(t.parentNode.insertBefore(o.placeholderElement,t.nextSibling),o.moveColumn(e,!0)):(o.toCol!==e||o.toColAfter)&&(t.parentNode.insertBefore(o.placeholderElement,t),o.moveColumn(e,!1)))}.bind(o),t.addEventListener("mousedown",function(t){o.touchMove=!1,1===t.which&&(o.checkTimeout=setTimeout(function(){o.startMove(t,e)},o.checkPeriod))}),t.addEventListener("mouseup",function(e){1===e.which&&o.checkTimeout&&clearTimeout(o.checkTimeout)}),o.bindTouchEvents(e)),e.modules.moveColumn=n},MoveColumns.prototype.bindTouchEvents=function(e){var t,o,n,l,i,s,m,r=this,u=e.getElement(),h=!1;u.addEventListener("touchstart",function(u){r.checkTimeout=setTimeout(function(){r.touchMove=!0,t=e,o=e.nextColumn(),l=o?o.getWidth()/2:0,n=e.prevColumn(),i=n?n.getWidth()/2:0,s=0,m=0,h=!1,r.startMove(u,e)},r.checkPeriod)},{passive:!0}),u.addEventListener("touchmove",function(u){var a,c;r.moving&&(r.moveHover(u),h||(h=u.touches[0].pageX),a=u.touches[0].pageX-h,a>0?o&&a-s>l&&(c=o)!==e&&(h=u.touches[0].pageX,c.getElement().parentNode.insertBefore(r.placeholderElement,c.getElement().nextSibling),r.moveColumn(c,!0)):n&&-a-m>i&&(c=n)!==e&&(h=u.touches[0].pageX,c.getElement().parentNode.insertBefore(r.placeholderElement,c.getElement()),r.moveColumn(c,!1)),c&&(t=c,o=c.nextColumn(),s=l,l=o?o.getWidth()/2:0,n=c.prevColumn(),m=i,i=n?n.getWidth()/2:0))},{passive:!0}),u.addEventListener("touchend",function(e){r.checkTimeout&&clearTimeout(r.checkTimeout),r.moving&&r.endMove(e)})},MoveColumns.prototype.startMove=function(e,t){var o=t.getElement();this.moving=t,this.startX=(this.touchMove?e.touches[0].pageX:e.pageX)-Tabulator.prototype.helpers.elOffset(o).left,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=t.getWidth()+"px",this.placeholderElement.style.height=t.getHeight()+"px",o.parentNode.insertBefore(this.placeholderElement,o),o.parentNode.removeChild(o),this.hoverElement=o.cloneNode(!0),this.hoverElement.classList.add("tabulator-moving"),this.table.columnManager.getElement().appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.bottom="0",this.touchMove||(this._bindMouseMove(),document.body.addEventListener("mousemove",this.moveHover),document.body.addEventListener("mouseup",this.endMove)),this.moveHover(e)},MoveColumns.prototype._bindMouseMove=function(){this.table.columnManager.columnsByIndex.forEach(function(e){e.modules.moveColumn.mousemove&&e.getElement().addEventListener("mousemove",e.modules.moveColumn.mousemove)})},MoveColumns.prototype._unbindMouseMove=function(){this.table.columnManager.columnsByIndex.forEach(function(e){e.modules.moveColumn.mousemove&&e.getElement().removeEventListener("mousemove",e.modules.moveColumn.mousemove)})},MoveColumns.prototype.moveColumn=function(e,t){var o=this.moving.getCells();this.toCol=e,this.toColAfter=t,t?e.getCells().forEach(function(e,t){var n=e.getElement();n.parentNode.insertBefore(o[t].getElement(),n.nextSibling)}):e.getCells().forEach(function(e,t){var n=e.getElement();n.parentNode.insertBefore(o[t].getElement(),n)})},MoveColumns.prototype.endMove=function(e){(1===e.which||this.touchMove)&&(this._unbindMouseMove(),this.placeholderElement.parentNode.insertBefore(this.moving.getElement(),this.placeholderElement.nextSibling),this.placeholderElement.parentNode.removeChild(this.placeholderElement),this.hoverElement.parentNode.removeChild(this.hoverElement),this.table.element.classList.remove("tabulator-block-select"),this.toCol&&this.table.columnManager.moveColumnActual(this.moving,this.toCol,this.toColAfter),this.moving=!1,this.toCol=!1,this.toColAfter=!1,this.touchMove||(document.body.removeEventListener("mousemove",this.moveHover),document.body.removeEventListener("mouseup",this.endMove)))},MoveColumns.prototype.moveHover=function(e){var t,o=this,n=o.table.columnManager.getElement(),l=n.scrollLeft,i=(o.touchMove?e.touches[0].pageX:e.pageX)-Tabulator.prototype.helpers.elOffset(n).left+l;o.hoverElement.style.left=i-o.startX+"px",i-l<o.autoScrollMargin&&(o.autoScrollTimeout||(o.autoScrollTimeout=setTimeout(function(){t=Math.max(0,l-5),o.table.rowManager.getElement().scrollLeft=t,o.autoScrollTimeout=!1},1))),l+n.clientWidth-i<o.autoScrollMargin&&(o.autoScrollTimeout||(o.autoScrollTimeout=setTimeout(function(){t=Math.min(n.clientWidth,l+5),o.table.rowManager.getElement().scrollLeft=t,o.autoScrollTimeout=!1},1)))},Tabulator.prototype.registerModule("moveColumn",MoveColumns);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/moveable_rows.js b/app/static/vendors/tabulator/js/modules/moveable_rows.js
deleted file mode 100644 (file)
index 1b165a4..0000000
+++ /dev/null
@@ -1,636 +0,0 @@
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-
-var MoveRows = function MoveRows(table) {
-
-       this.table = table; //hold Tabulator object
-       this.placeholderElement = this.createPlaceholderElement();
-       this.hoverElement = false; //floating row header element
-       this.checkTimeout = false; //click check timeout holder
-       this.checkPeriod = 150; //period to wait on mousedown to consider this a move and not a click
-       this.moving = false; //currently moving row
-       this.toRow = false; //destination row
-       this.toRowAfter = false; //position of moving row relative to the desitnation row
-       this.hasHandle = false; //row has handle instead of fully movable row
-       this.startY = 0; //starting Y position within header element
-       this.startX = 0; //starting X position within header element
-
-       this.moveHover = this.moveHover.bind(this);
-       this.endMove = this.endMove.bind(this);
-       this.tableRowDropEvent = false;
-
-       this.touchMove = false;
-
-       this.connection = false;
-       this.connectionSelectorsTables = false;
-       this.connectionSelectorsElements = false;
-       this.connectionElements = [];
-       this.connections = [];
-
-       this.connectedTable = false;
-       this.connectedRow = false;
-};
-
-MoveRows.prototype.createPlaceholderElement = function () {
-       var el = document.createElement("div");
-
-       el.classList.add("tabulator-row");
-       el.classList.add("tabulator-row-placeholder");
-
-       return el;
-};
-
-MoveRows.prototype.initialize = function (handle) {
-       this.connectionSelectorsTables = this.table.options.movableRowsConnectedTables;
-       this.connectionSelectorsElements = this.table.options.movableRowsConnectedElements;
-
-       this.connection = this.connectionSelectorsTables || this.connectionSelectorsElements;
-};
-
-MoveRows.prototype.setHandle = function (handle) {
-       this.hasHandle = handle;
-};
-
-MoveRows.prototype.initializeGroupHeader = function (group) {
-       var self = this,
-           config = {},
-           rowEl;
-
-       //inter table drag drop
-       config.mouseup = function (e) {
-               self.tableRowDrop(e, row);
-       }.bind(self);
-
-       //same table drag drop
-       config.mousemove = function (e) {
-               if (e.pageY - Tabulator.prototype.helpers.elOffset(group.element).top + self.table.rowManager.element.scrollTop > group.getHeight() / 2) {
-                       if (self.toRow !== group || !self.toRowAfter) {
-                               var rowEl = group.getElement();
-                               rowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);
-                               self.moveRow(group, true);
-                       }
-               } else {
-                       if (self.toRow !== group || self.toRowAfter) {
-                               var rowEl = group.getElement();
-                               if (rowEl.previousSibling) {
-                                       rowEl.parentNode.insertBefore(self.placeholderElement, rowEl);
-                                       self.moveRow(group, false);
-                               }
-                       }
-               }
-       }.bind(self);
-
-       group.modules.moveRow = config;
-};
-
-MoveRows.prototype.initializeRow = function (row) {
-       var self = this,
-           config = {},
-           rowEl;
-
-       //inter table drag drop
-       config.mouseup = function (e) {
-               self.tableRowDrop(e, row);
-       }.bind(self);
-
-       //same table drag drop
-       config.mousemove = function (e) {
-               if (e.pageY - Tabulator.prototype.helpers.elOffset(row.element).top + self.table.rowManager.element.scrollTop > row.getHeight() / 2) {
-                       if (self.toRow !== row || !self.toRowAfter) {
-                               var rowEl = row.getElement();
-                               rowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);
-                               self.moveRow(row, true);
-                       }
-               } else {
-                       if (self.toRow !== row || self.toRowAfter) {
-                               var rowEl = row.getElement();
-                               rowEl.parentNode.insertBefore(self.placeholderElement, rowEl);
-                               self.moveRow(row, false);
-                       }
-               }
-       }.bind(self);
-
-       if (!this.hasHandle) {
-
-               rowEl = row.getElement();
-
-               rowEl.addEventListener("mousedown", function (e) {
-                       if (e.which === 1) {
-                               self.checkTimeout = setTimeout(function () {
-                                       self.startMove(e, row);
-                               }, self.checkPeriod);
-                       }
-               });
-
-               rowEl.addEventListener("mouseup", function (e) {
-                       if (e.which === 1) {
-                               if (self.checkTimeout) {
-                                       clearTimeout(self.checkTimeout);
-                               }
-                       }
-               });
-
-               this.bindTouchEvents(row, row.getElement());
-       }
-
-       row.modules.moveRow = config;
-};
-
-MoveRows.prototype.initializeCell = function (cell) {
-       var self = this,
-           cellEl = cell.getElement();
-
-       cellEl.addEventListener("mousedown", function (e) {
-               if (e.which === 1) {
-                       self.checkTimeout = setTimeout(function () {
-                               self.startMove(e, cell.row);
-                       }, self.checkPeriod);
-               }
-       });
-
-       cellEl.addEventListener("mouseup", function (e) {
-               if (e.which === 1) {
-                       if (self.checkTimeout) {
-                               clearTimeout(self.checkTimeout);
-                       }
-               }
-       });
-
-       this.bindTouchEvents(cell.row, cell.getElement());
-};
-
-MoveRows.prototype.bindTouchEvents = function (row, element) {
-       var self = this,
-           startYMove = false,
-           //shifting center position of the cell
-       dir = false,
-           currentRow,
-           nextRow,
-           prevRow,
-           nextRowHeight,
-           prevRowHeight,
-           nextRowHeightLast,
-           prevRowHeightLast;
-
-       element.addEventListener("touchstart", function (e) {
-               self.checkTimeout = setTimeout(function () {
-                       self.touchMove = true;
-                       currentRow = row;
-                       nextRow = row.nextRow();
-                       nextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0;
-                       prevRow = row.prevRow();
-                       prevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0;
-                       nextRowHeightLast = 0;
-                       prevRowHeightLast = 0;
-                       startYMove = false;
-
-                       self.startMove(e, row);
-               }, self.checkPeriod);
-       }, { passive: true });
-       this.moving, this.toRow, this.toRowAfter;
-       element.addEventListener("touchmove", function (e) {
-
-               var halfCol, diff, moveToRow;
-
-               if (self.moving) {
-                       e.preventDefault();
-
-                       self.moveHover(e);
-
-                       if (!startYMove) {
-                               startYMove = e.touches[0].pageY;
-                       }
-
-                       diff = e.touches[0].pageY - startYMove;
-
-                       if (diff > 0) {
-                               if (nextRow && diff - nextRowHeightLast > nextRowHeight) {
-                                       moveToRow = nextRow;
-
-                                       if (moveToRow !== row) {
-                                               startYMove = e.touches[0].pageY;
-                                               moveToRow.getElement().parentNode.insertBefore(self.placeholderElement, moveToRow.getElement().nextSibling);
-                                               self.moveRow(moveToRow, true);
-                                       }
-                               }
-                       } else {
-                               if (prevRow && -diff - prevRowHeightLast > prevRowHeight) {
-                                       moveToRow = prevRow;
-
-                                       if (moveToRow !== row) {
-                                               startYMove = e.touches[0].pageY;
-                                               moveToRow.getElement().parentNode.insertBefore(self.placeholderElement, moveToRow.getElement());
-                                               self.moveRow(moveToRow, false);
-                                       }
-                               }
-                       }
-
-                       if (moveToRow) {
-                               currentRow = moveToRow;
-                               nextRow = moveToRow.nextRow();
-                               nextRowHeightLast = nextRowHeight;
-                               nextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0;
-                               prevRow = moveToRow.prevRow();
-                               prevRowHeightLast = prevRowHeight;
-                               prevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0;
-                       }
-               }
-       });
-
-       element.addEventListener("touchend", function (e) {
-               if (self.checkTimeout) {
-                       clearTimeout(self.checkTimeout);
-               }
-               if (self.moving) {
-                       self.endMove(e);
-                       self.touchMove = false;
-               }
-       });
-};
-
-MoveRows.prototype._bindMouseMove = function () {
-       var self = this;
-
-       self.table.rowManager.getDisplayRows().forEach(function (row) {
-               if ((row.type === "row" || row.type === "group") && row.modules.moveRow.mousemove) {
-                       row.getElement().addEventListener("mousemove", row.modules.moveRow.mousemove);
-               }
-       });
-};
-
-MoveRows.prototype._unbindMouseMove = function () {
-       var self = this;
-
-       self.table.rowManager.getDisplayRows().forEach(function (row) {
-               if ((row.type === "row" || row.type === "group") && row.modules.moveRow.mousemove) {
-                       row.getElement().removeEventListener("mousemove", row.modules.moveRow.mousemove);
-               }
-       });
-};
-
-MoveRows.prototype.startMove = function (e, row) {
-       var element = row.getElement();
-
-       this.setStartPosition(e, row);
-
-       this.moving = row;
-
-       this.table.element.classList.add("tabulator-block-select");
-
-       //create placeholder
-       this.placeholderElement.style.width = row.getWidth() + "px";
-       this.placeholderElement.style.height = row.getHeight() + "px";
-
-       if (!this.connection) {
-               element.parentNode.insertBefore(this.placeholderElement, element);
-               element.parentNode.removeChild(element);
-       } else {
-               this.table.element.classList.add("tabulator-movingrow-sending");
-               this.connectToTables(row);
-       }
-
-       //create hover element
-       this.hoverElement = element.cloneNode(true);
-       this.hoverElement.classList.add("tabulator-moving");
-
-       if (this.connection) {
-               document.body.appendChild(this.hoverElement);
-               this.hoverElement.style.left = "0";
-               this.hoverElement.style.top = "0";
-               this.hoverElement.style.width = this.table.element.clientWidth + "px";
-               this.hoverElement.style.whiteSpace = "nowrap";
-               this.hoverElement.style.overflow = "hidden";
-               this.hoverElement.style.pointerEvents = "none";
-       } else {
-               this.table.rowManager.getTableElement().appendChild(this.hoverElement);
-
-               this.hoverElement.style.left = "0";
-               this.hoverElement.style.top = "0";
-
-               this._bindMouseMove();
-       }
-
-       document.body.addEventListener("mousemove", this.moveHover);
-       document.body.addEventListener("mouseup", this.endMove);
-
-       this.moveHover(e);
-};
-
-MoveRows.prototype.setStartPosition = function (e, row) {
-       var pageX = this.touchMove ? e.touches[0].pageX : e.pageX,
-           pageY = this.touchMove ? e.touches[0].pageY : e.pageY,
-           element,
-           position;
-
-       element = row.getElement();
-       if (this.connection) {
-               position = element.getBoundingClientRect();
-
-               this.startX = position.left - pageX + window.pageXOffset;
-               this.startY = position.top - pageY + window.pageYOffset;
-       } else {
-               this.startY = pageY - element.getBoundingClientRect().top;
-       }
-};
-
-MoveRows.prototype.endMove = function (e) {
-       if (!e || e.which === 1 || this.touchMove) {
-               this._unbindMouseMove();
-
-               if (!this.connection) {
-                       this.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);
-                       this.placeholderElement.parentNode.removeChild(this.placeholderElement);
-               }
-
-               this.hoverElement.parentNode.removeChild(this.hoverElement);
-
-               this.table.element.classList.remove("tabulator-block-select");
-
-               if (this.toRow) {
-                       this.table.rowManager.moveRow(this.moving, this.toRow, this.toRowAfter);
-               }
-
-               this.moving = false;
-               this.toRow = false;
-               this.toRowAfter = false;
-
-               document.body.removeEventListener("mousemove", this.moveHover);
-               document.body.removeEventListener("mouseup", this.endMove);
-
-               if (this.connection) {
-                       this.table.element.classList.remove("tabulator-movingrow-sending");
-                       this.disconnectFromTables();
-               }
-       }
-};
-
-MoveRows.prototype.moveRow = function (row, after) {
-       this.toRow = row;
-       this.toRowAfter = after;
-};
-
-MoveRows.prototype.moveHover = function (e) {
-       if (this.connection) {
-               this.moveHoverConnections.call(this, e);
-       } else {
-               this.moveHoverTable.call(this, e);
-       }
-};
-
-MoveRows.prototype.moveHoverTable = function (e) {
-       var rowHolder = this.table.rowManager.getElement(),
-           scrollTop = rowHolder.scrollTop,
-           yPos = (this.touchMove ? e.touches[0].pageY : e.pageY) - rowHolder.getBoundingClientRect().top + scrollTop,
-           scrollPos;
-
-       this.hoverElement.style.top = yPos - this.startY + "px";
-};
-
-MoveRows.prototype.moveHoverConnections = function (e) {
-       this.hoverElement.style.left = this.startX + (this.touchMove ? e.touches[0].pageX : e.pageX) + "px";
-       this.hoverElement.style.top = this.startY + (this.touchMove ? e.touches[0].pageY : e.pageY) + "px";
-};
-
-MoveRows.prototype.elementRowDrop = function (e, element, row) {
-       if (this.table.options.movableRowsElementDrop) {
-               this.table.options.movableRowsElementDrop(e, element, row ? row.getComponent() : false);
-       }
-};
-
-//establish connection with other tables
-MoveRows.prototype.connectToTables = function (row) {
-       var _this = this;
-
-       var connectionTables;
-
-       if (this.connectionSelectorsTables) {
-               connectionTables = this.table.modules.comms.getConnections(this.connectionSelectorsTables);
-
-               this.table.options.movableRowsSendingStart.call(this.table, connectionTables);
-
-               this.table.modules.comms.send(this.connectionSelectorsTables, "moveRow", "connect", {
-                       row: row
-               });
-       }
-
-       if (this.connectionSelectorsElements) {
-
-               this.connectionElements = [];
-
-               if (!Array.isArray(this.connectionSelectorsElements)) {
-                       this.connectionSelectorsElements = [this.connectionSelectorsElements];
-               }
-
-               this.connectionSelectorsElements.forEach(function (query) {
-                       if (typeof query === "string") {
-                               _this.connectionElements = _this.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(query)));
-                       } else {
-                               _this.connectionElements.push(query);
-                       }
-               });
-
-               this.connectionElements.forEach(function (element) {
-                       var dropEvent = function dropEvent(e) {
-                               _this.elementRowDrop(e, element, _this.moving);
-                       };
-
-                       element.addEventListener("mouseup", dropEvent);
-                       element.tabulatorElementDropEvent = dropEvent;
-
-                       element.classList.add("tabulator-movingrow-receiving");
-               });
-       }
-};
-
-//disconnect from other tables
-MoveRows.prototype.disconnectFromTables = function () {
-       var connectionTables;
-
-       if (this.connectionSelectorsTables) {
-               connectionTables = this.table.modules.comms.getConnections(this.connectionSelectorsTables);
-
-               this.table.options.movableRowsSendingStop.call(this.table, connectionTables);
-
-               this.table.modules.comms.send(this.connectionSelectorsTables, "moveRow", "disconnect");
-       }
-
-       this.connectionElements.forEach(function (element) {
-               element.classList.remove("tabulator-movingrow-receiving");
-               element.removeEventListener("mouseup", element.tabulatorElementDropEvent);
-               delete element.tabulatorElementDropEvent;
-       });
-};
-
-//accept incomming connection
-MoveRows.prototype.connect = function (table, row) {
-       var self = this;
-       if (!this.connectedTable) {
-               this.connectedTable = table;
-               this.connectedRow = row;
-
-               this.table.element.classList.add("tabulator-movingrow-receiving");
-
-               self.table.rowManager.getDisplayRows().forEach(function (row) {
-                       if (row.type === "row" && row.modules.moveRow && row.modules.moveRow.mouseup) {
-                               row.getElement().addEventListener("mouseup", row.modules.moveRow.mouseup);
-                       }
-               });
-
-               self.tableRowDropEvent = self.tableRowDrop.bind(self);
-
-               self.table.element.addEventListener("mouseup", self.tableRowDropEvent);
-
-               this.table.options.movableRowsReceivingStart.call(this.table, row, table);
-
-               return true;
-       } else {
-               console.warn("Move Row Error - Table cannot accept connection, already connected to table:", this.connectedTable);
-               return false;
-       }
-};
-
-//close incomming connection
-MoveRows.prototype.disconnect = function (table) {
-       var self = this;
-       if (table === this.connectedTable) {
-               this.connectedTable = false;
-               this.connectedRow = false;
-
-               this.table.element.classList.remove("tabulator-movingrow-receiving");
-
-               self.table.rowManager.getDisplayRows().forEach(function (row) {
-                       if (row.type === "row" && row.modules.moveRow && row.modules.moveRow.mouseup) {
-                               row.getElement().removeEventListener("mouseup", row.modules.moveRow.mouseup);
-                       }
-               });
-
-               self.table.element.removeEventListener("mouseup", self.tableRowDropEvent);
-
-               this.table.options.movableRowsReceivingStop.call(this.table, table);
-       } else {
-               console.warn("Move Row Error - trying to disconnect from non connected table");
-       }
-};
-
-MoveRows.prototype.dropComplete = function (table, row, success) {
-       var sender = false;
-
-       if (success) {
-
-               switch (_typeof(this.table.options.movableRowsSender)) {
-                       case "string":
-                               sender = this.senders[this.table.options.movableRowsSender];
-                               break;
-
-                       case "function":
-                               sender = this.table.options.movableRowsSender;
-                               break;
-               }
-
-               if (sender) {
-                       sender.call(this, this.moving.getComponent(), row ? row.getComponent() : undefined, table);
-               } else {
-                       if (this.table.options.movableRowsSender) {
-                               console.warn("Mover Row Error - no matching sender found:", this.table.options.movableRowsSender);
-                       }
-               }
-
-               this.table.options.movableRowsSent.call(this.table, this.moving.getComponent(), row ? row.getComponent() : undefined, table);
-       } else {
-               this.table.options.movableRowsSentFailed.call(this.table, this.moving.getComponent(), row ? row.getComponent() : undefined, table);
-       }
-
-       this.endMove();
-};
-
-MoveRows.prototype.tableRowDrop = function (e, row) {
-       var receiver = false,
-           success = false;
-
-       console.trace("drop");
-
-       e.stopImmediatePropagation();
-
-       switch (_typeof(this.table.options.movableRowsReceiver)) {
-               case "string":
-                       receiver = this.receivers[this.table.options.movableRowsReceiver];
-                       break;
-
-               case "function":
-                       receiver = this.table.options.movableRowsReceiver;
-                       break;
-       }
-
-       if (receiver) {
-               success = receiver.call(this, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);
-       } else {
-               console.warn("Mover Row Error - no matching receiver found:", this.table.options.movableRowsReceiver);
-       }
-
-       if (success) {
-               this.table.options.movableRowsReceived.call(this.table, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);
-       } else {
-               this.table.options.movableRowsReceivedFailed.call(this.table, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);
-       }
-
-       this.table.modules.comms.send(this.connectedTable, "moveRow", "dropcomplete", {
-               row: row,
-               success: success
-       });
-};
-
-MoveRows.prototype.receivers = {
-       insert: function insert(fromRow, toRow, fromTable) {
-               this.table.addRow(fromRow.getData(), undefined, toRow);
-               return true;
-       },
-
-       add: function add(fromRow, toRow, fromTable) {
-               this.table.addRow(fromRow.getData());
-               return true;
-       },
-
-       update: function update(fromRow, toRow, fromTable) {
-               if (toRow) {
-                       toRow.update(fromRow.getData());
-                       return true;
-               }
-
-               return false;
-       },
-
-       replace: function replace(fromRow, toRow, fromTable) {
-               if (toRow) {
-                       this.table.addRow(fromRow.getData(), undefined, toRow);
-                       toRow.delete();
-                       return true;
-               }
-
-               return false;
-       }
-};
-
-MoveRows.prototype.senders = {
-       delete: function _delete(fromRow, toRow, toTable) {
-               fromRow.delete();
-       }
-};
-
-MoveRows.prototype.commsReceived = function (table, action, data) {
-       switch (action) {
-               case "connect":
-                       return this.connect(table, data.row);
-                       break;
-
-               case "disconnect":
-                       return this.disconnect(table);
-                       break;
-
-               case "dropcomplete":
-                       return this.dropComplete(table, data.row, data.success);
-                       break;
-       }
-};
-
-Tabulator.prototype.registerModule("moveRow", MoveRows);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/moveable_rows.min.js b/app/static/vendors/tabulator/js/modules/moveable_rows.min.js
deleted file mode 100644 (file)
index f928535..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},MoveRows=function(e){this.table=e,this.placeholderElement=this.createPlaceholderElement(),this.hoverElement=!1,this.checkTimeout=!1,this.checkPeriod=150,this.moving=!1,this.toRow=!1,this.toRowAfter=!1,this.hasHandle=!1,this.startY=0,this.startX=0,this.moveHover=this.moveHover.bind(this),this.endMove=this.endMove.bind(this),this.tableRowDropEvent=!1,this.touchMove=!1,this.connection=!1,this.connectionSelectorsTables=!1,this.connectionSelectorsElements=!1,this.connectionElements=[],this.connections=[],this.connectedTable=!1,this.connectedRow=!1};MoveRows.prototype.createPlaceholderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-row"),e.classList.add("tabulator-row-placeholder"),e},MoveRows.prototype.initialize=function(e){this.connectionSelectorsTables=this.table.options.movableRowsConnectedTables,this.connectionSelectorsElements=this.table.options.movableRowsConnectedElements,this.connection=this.connectionSelectorsTables||this.connectionSelectorsElements},MoveRows.prototype.setHandle=function(e){this.hasHandle=e},MoveRows.prototype.initializeGroupHeader=function(e){var t=this,o={};o.mouseup=function(e){t.tableRowDrop(e,row)}.bind(t),o.mousemove=function(o){if(o.pageY-Tabulator.prototype.helpers.elOffset(e.element).top+t.table.rowManager.element.scrollTop>e.getHeight()/2){if(t.toRow!==e||!t.toRowAfter){var n=e.getElement();n.parentNode.insertBefore(t.placeholderElement,n.nextSibling),t.moveRow(e,!0)}}else if(t.toRow!==e||t.toRowAfter){var n=e.getElement();n.previousSibling&&(n.parentNode.insertBefore(t.placeholderElement,n),t.moveRow(e,!1))}}.bind(t),e.modules.moveRow=o},MoveRows.prototype.initializeRow=function(e){var t,o=this,n={};n.mouseup=function(t){o.tableRowDrop(t,e)}.bind(o),n.mousemove=function(t){if(t.pageY-Tabulator.prototype.helpers.elOffset(e.element).top+o.table.rowManager.element.scrollTop>e.getHeight()/2){if(o.toRow!==e||!o.toRowAfter){var n=e.getElement();n.parentNode.insertBefore(o.placeholderElement,n.nextSibling),o.moveRow(e,!0)}}else if(o.toRow!==e||o.toRowAfter){var n=e.getElement();n.parentNode.insertBefore(o.placeholderElement,n),o.moveRow(e,!1)}}.bind(o),this.hasHandle||(t=e.getElement(),t.addEventListener("mousedown",function(t){1===t.which&&(o.checkTimeout=setTimeout(function(){o.startMove(t,e)},o.checkPeriod))}),t.addEventListener("mouseup",function(e){1===e.which&&o.checkTimeout&&clearTimeout(o.checkTimeout)}),this.bindTouchEvents(e,e.getElement())),e.modules.moveRow=n},MoveRows.prototype.initializeCell=function(e){var t=this,o=e.getElement();o.addEventListener("mousedown",function(o){1===o.which&&(t.checkTimeout=setTimeout(function(){t.startMove(o,e.row)},t.checkPeriod))}),o.addEventListener("mouseup",function(e){1===e.which&&t.checkTimeout&&clearTimeout(t.checkTimeout)}),this.bindTouchEvents(e.row,e.getElement())},MoveRows.prototype.bindTouchEvents=function(e,t){var o,n,s,i,l,c,r,a=this,h=!1;t.addEventListener("touchstart",function(t){a.checkTimeout=setTimeout(function(){a.touchMove=!0,o=e,n=e.nextRow(),i=n?n.getHeight()/2:0,s=e.prevRow(),l=s?s.getHeight()/2:0,c=0,r=0,h=!1,a.startMove(t,e)},a.checkPeriod)},{passive:!0}),this.moving,this.toRow,this.toRowAfter,t.addEventListener("touchmove",function(t){var m,v;a.moving&&(t.preventDefault(),a.moveHover(t),h||(h=t.touches[0].pageY),m=t.touches[0].pageY-h,m>0?n&&m-c>i&&(v=n)!==e&&(h=t.touches[0].pageY,v.getElement().parentNode.insertBefore(a.placeholderElement,v.getElement().nextSibling),a.moveRow(v,!0)):s&&-m-r>l&&(v=s)!==e&&(h=t.touches[0].pageY,v.getElement().parentNode.insertBefore(a.placeholderElement,v.getElement()),a.moveRow(v,!1)),v&&(o=v,n=v.nextRow(),c=i,i=n?n.getHeight()/2:0,s=v.prevRow(),r=l,l=s?s.getHeight()/2:0))}),t.addEventListener("touchend",function(e){a.checkTimeout&&clearTimeout(a.checkTimeout),a.moving&&(a.endMove(e),a.touchMove=!1)})},MoveRows.prototype._bindMouseMove=function(){this.table.rowManager.getDisplayRows().forEach(function(e){"row"!==e.type&&"group"!==e.type||!e.modules.moveRow.mousemove||e.getElement().addEventListener("mousemove",e.modules.moveRow.mousemove)})},MoveRows.prototype._unbindMouseMove=function(){this.table.rowManager.getDisplayRows().forEach(function(e){"row"!==e.type&&"group"!==e.type||!e.modules.moveRow.mousemove||e.getElement().removeEventListener("mousemove",e.modules.moveRow.mousemove)})},MoveRows.prototype.startMove=function(e,t){var o=t.getElement();this.setStartPosition(e,t),this.moving=t,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=t.getWidth()+"px",this.placeholderElement.style.height=t.getHeight()+"px",this.connection?(this.table.element.classList.add("tabulator-movingrow-sending"),this.connectToTables(t)):(o.parentNode.insertBefore(this.placeholderElement,o),o.parentNode.removeChild(o)),this.hoverElement=o.cloneNode(!0),this.hoverElement.classList.add("tabulator-moving"),this.connection?(document.body.appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.top="0",this.hoverElement.style.width=this.table.element.clientWidth+"px",this.hoverElement.style.whiteSpace="nowrap",this.hoverElement.style.overflow="hidden",this.hoverElement.style.pointerEvents="none"):(this.table.rowManager.getTableElement().appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.top="0",this._bindMouseMove()),document.body.addEventListener("mousemove",this.moveHover),document.body.addEventListener("mouseup",this.endMove),this.moveHover(e)},MoveRows.prototype.setStartPosition=function(e,t){var o,n,s=this.touchMove?e.touches[0].pageX:e.pageX,i=this.touchMove?e.touches[0].pageY:e.pageY;o=t.getElement(),this.connection?(n=o.getBoundingClientRect(),this.startX=n.left-s+window.pageXOffset,this.startY=n.top-i+window.pageYOffset):this.startY=i-o.getBoundingClientRect().top},MoveRows.prototype.endMove=function(e){e&&1!==e.which&&!this.touchMove||(this._unbindMouseMove(),this.connection||(this.placeholderElement.parentNode.insertBefore(this.moving.getElement(),this.placeholderElement.nextSibling),this.placeholderElement.parentNode.removeChild(this.placeholderElement)),this.hoverElement.parentNode.removeChild(this.hoverElement),this.table.element.classList.remove("tabulator-block-select"),this.toRow&&this.table.rowManager.moveRow(this.moving,this.toRow,this.toRowAfter),this.moving=!1,this.toRow=!1,this.toRowAfter=!1,document.body.removeEventListener("mousemove",this.moveHover),document.body.removeEventListener("mouseup",this.endMove),this.connection&&(this.table.element.classList.remove("tabulator-movingrow-sending"),this.disconnectFromTables()))},MoveRows.prototype.moveRow=function(e,t){this.toRow=e,this.toRowAfter=t},MoveRows.prototype.moveHover=function(e){this.connection?this.moveHoverConnections.call(this,e):this.moveHoverTable.call(this,e)},MoveRows.prototype.moveHoverTable=function(e){var t=this.table.rowManager.getElement(),o=t.scrollTop,n=(this.touchMove?e.touches[0].pageY:e.pageY)-t.getBoundingClientRect().top+o;this.hoverElement.style.top=n-this.startY+"px"},MoveRows.prototype.moveHoverConnections=function(e){this.hoverElement.style.left=this.startX+(this.touchMove?e.touches[0].pageX:e.pageX)+"px",this.hoverElement.style.top=this.startY+(this.touchMove?e.touches[0].pageY:e.pageY)+"px"},MoveRows.prototype.elementRowDrop=function(e,t,o){this.table.options.movableRowsElementDrop&&this.table.options.movableRowsElementDrop(e,t,!!o&&o.getComponent())},MoveRows.prototype.connectToTables=function(e){var t,o=this;this.connectionSelectorsTables&&(t=this.table.modules.comms.getConnections(this.connectionSelectorsTables),this.table.options.movableRowsSendingStart.call(this.table,t),this.table.modules.comms.send(this.connectionSelectorsTables,"moveRow","connect",{row:e})),this.connectionSelectorsElements&&(this.connectionElements=[],Array.isArray(this.connectionSelectorsElements)||(this.connectionSelectorsElements=[this.connectionSelectorsElements]),this.connectionSelectorsElements.forEach(function(e){"string"==typeof e?o.connectionElements=o.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(e))):o.connectionElements.push(e)}),this.connectionElements.forEach(function(e){var t=function(t){o.elementRowDrop(t,e,o.moving)};e.addEventListener("mouseup",t),e.tabulatorElementDropEvent=t,e.classList.add("tabulator-movingrow-receiving")}))},MoveRows.prototype.disconnectFromTables=function(){var e;this.connectionSelectorsTables&&(e=this.table.modules.comms.getConnections(this.connectionSelectorsTables),this.table.options.movableRowsSendingStop.call(this.table,e),this.table.modules.comms.send(this.connectionSelectorsTables,"moveRow","disconnect")),this.connectionElements.forEach(function(e){e.classList.remove("tabulator-movingrow-receiving"),e.removeEventListener("mouseup",e.tabulatorElementDropEvent),delete e.tabulatorElementDropEvent})},MoveRows.prototype.connect=function(e,t){var o=this;return this.connectedTable?(console.warn("Move Row Error - Table cannot accept connection, already connected to table:",this.connectedTable),!1):(this.connectedTable=e,this.connectedRow=t,this.table.element.classList.add("tabulator-movingrow-receiving"),o.table.rowManager.getDisplayRows().forEach(function(e){"row"===e.type&&e.modules.moveRow&&e.modules.moveRow.mouseup&&e.getElement().addEventListener("mouseup",e.modules.moveRow.mouseup)}),o.tableRowDropEvent=o.tableRowDrop.bind(o),o.table.element.addEventListener("mouseup",o.tableRowDropEvent),this.table.options.movableRowsReceivingStart.call(this.table,t,e),!0)},MoveRows.prototype.disconnect=function(e){var t=this;e===this.connectedTable?(this.connectedTable=!1,this.connectedRow=!1,this.table.element.classList.remove("tabulator-movingrow-receiving"),t.table.rowManager.getDisplayRows().forEach(function(e){"row"===e.type&&e.modules.moveRow&&e.modules.moveRow.mouseup&&e.getElement().removeEventListener("mouseup",e.modules.moveRow.mouseup)}),t.table.element.removeEventListener("mouseup",t.tableRowDropEvent),this.table.options.movableRowsReceivingStop.call(this.table,e)):console.warn("Move Row Error - trying to disconnect from non connected table")},MoveRows.prototype.dropComplete=function(e,t,o){var n=!1;if(o){switch(_typeof(this.table.options.movableRowsSender)){case"string":n=this.senders[this.table.options.movableRowsSender];break;case"function":n=this.table.options.movableRowsSender}n?n.call(this,this.moving.getComponent(),t?t.getComponent():void 0,e):this.table.options.movableRowsSender&&console.warn("Mover Row Error - no matching sender found:",this.table.options.movableRowsSender),this.table.options.movableRowsSent.call(this.table,this.moving.getComponent(),t?t.getComponent():void 0,e)}else this.table.options.movableRowsSentFailed.call(this.table,this.moving.getComponent(),t?t.getComponent():void 0,e);this.endMove()},MoveRows.prototype.tableRowDrop=function(e,t){var o=!1,n=!1;switch(console.trace("drop"),e.stopImmediatePropagation(),_typeof(this.table.options.movableRowsReceiver)){case"string":o=this.receivers[this.table.options.movableRowsReceiver];break;case"function":o=this.table.options.movableRowsReceiver}o?n=o.call(this,this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable):console.warn("Mover Row Error - no matching receiver found:",this.table.options.movableRowsReceiver),n?this.table.options.movableRowsReceived.call(this.table,this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable):this.table.options.movableRowsReceivedFailed.call(this.table,this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable),this.table.modules.comms.send(this.connectedTable,"moveRow","dropcomplete",{row:t,success:n})},MoveRows.prototype.receivers={insert:function(e,t,o){return this.table.addRow(e.getData(),void 0,t),!0},add:function(e,t,o){return this.table.addRow(e.getData()),!0},update:function(e,t,o){return!!t&&(t.update(e.getData()),!0)},replace:function(e,t,o){return!!t&&(this.table.addRow(e.getData(),void 0,t),t.delete(),!0)}},MoveRows.prototype.senders={delete:function(e,t,o){e.delete()}},MoveRows.prototype.commsReceived=function(e,t,o){switch(t){case"connect":return this.connect(e,o.row);case"disconnect":return this.disconnect(e);case"dropcomplete":return this.dropComplete(e,o.row,o.success)}},Tabulator.prototype.registerModule("moveRow",MoveRows);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/mutator.js b/app/static/vendors/tabulator/js/modules/mutator.js
deleted file mode 100644 (file)
index e5b5dad..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-
-var Mutator = function Mutator(table) {
-       this.table = table; //hold Tabulator object
-       this.allowedTypes = ["", "data", "edit", "clipboard"]; //list of muatation types
-       this.enabled = true;
-};
-
-//initialize column mutator
-Mutator.prototype.initializeColumn = function (column) {
-       var self = this,
-           match = false,
-           config = {};
-
-       this.allowedTypes.forEach(function (type) {
-               var key = "mutator" + (type.charAt(0).toUpperCase() + type.slice(1)),
-                   mutator;
-
-               if (column.definition[key]) {
-                       mutator = self.lookupMutator(column.definition[key]);
-
-                       if (mutator) {
-                               match = true;
-
-                               config[key] = {
-                                       mutator: mutator,
-                                       params: column.definition[key + "Params"] || {}
-                               };
-                       }
-               }
-       });
-
-       if (match) {
-               column.modules.mutate = config;
-       }
-};
-
-Mutator.prototype.lookupMutator = function (value) {
-       var mutator = false;
-
-       //set column mutator
-       switch (typeof value === "undefined" ? "undefined" : _typeof(value)) {
-               case "string":
-                       if (this.mutators[value]) {
-                               mutator = this.mutators[value];
-                       } else {
-                               console.warn("Mutator Error - No such mutator found, ignoring: ", value);
-                       }
-                       break;
-
-               case "function":
-                       mutator = value;
-                       break;
-       }
-
-       return mutator;
-};
-
-//apply mutator to row
-Mutator.prototype.transformRow = function (data, type, updatedData) {
-       var self = this,
-           key = "mutator" + (type.charAt(0).toUpperCase() + type.slice(1)),
-           value;
-
-       if (this.enabled) {
-
-               self.table.columnManager.traverse(function (column) {
-                       var mutator, params, component;
-
-                       if (column.modules.mutate) {
-                               mutator = column.modules.mutate[key] || column.modules.mutate.mutator || false;
-
-                               if (mutator) {
-                                       value = column.getFieldValue(typeof updatedData !== "undefined" ? updatedData : data);
-
-                                       if (type == "data" || typeof value !== "undefined") {
-                                               component = column.getComponent();
-                                               params = typeof mutator.params === "function" ? mutator.params(value, data, type, component) : mutator.params;
-                                               column.setFieldValue(data, mutator.mutator(value, data, type, params, component));
-                                       }
-                               }
-                       }
-               });
-       }
-
-       return data;
-};
-
-//apply mutator to new cell value
-Mutator.prototype.transformCell = function (cell, value) {
-       var mutator = cell.column.modules.mutate.mutatorEdit || cell.column.modules.mutate.mutator || false,
-           tempData = {};
-
-       if (mutator) {
-               tempData = Object.assign(tempData, cell.row.getData());
-               cell.column.setFieldValue(tempData, value);
-               return mutator.mutator(value, tempData, "edit", mutator.params, cell.getComponent());
-       } else {
-               return value;
-       }
-};
-
-Mutator.prototype.enable = function () {
-       this.enabled = true;
-};
-
-Mutator.prototype.disable = function () {
-       this.enabled = false;
-};
-
-//default mutators
-Mutator.prototype.mutators = {};
-
-Tabulator.prototype.registerModule("mutator", Mutator);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/mutator.min.js b/app/static/vendors/tabulator/js/modules/mutator.min.js
deleted file mode 100644 (file)
index 00005d1..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Mutator=function(t){this.table=t,this.allowedTypes=["","data","edit","clipboard"],this.enabled=!0};Mutator.prototype.initializeColumn=function(t){var o=this,e=!1,a={};this.allowedTypes.forEach(function(r){var u,n="mutator"+(r.charAt(0).toUpperCase()+r.slice(1));t.definition[n]&&(u=o.lookupMutator(t.definition[n]))&&(e=!0,a[n]={mutator:u,params:t.definition[n+"Params"]||{}})}),e&&(t.modules.mutate=a)},Mutator.prototype.lookupMutator=function(t){var o=!1;switch(void 0===t?"undefined":_typeof(t)){case"string":this.mutators[t]?o=this.mutators[t]:console.warn("Mutator Error - No such mutator found, ignoring: ",t);break;case"function":o=t}return o},Mutator.prototype.transformRow=function(t,o,e){var a,r=this,u="mutator"+(o.charAt(0).toUpperCase()+o.slice(1));return this.enabled&&r.table.columnManager.traverse(function(r){var n,i,s;r.modules.mutate&&(n=r.modules.mutate[u]||r.modules.mutate.mutator||!1)&&(a=r.getFieldValue(void 0!==e?e:t),"data"!=o&&void 0===a||(s=r.getComponent(),i="function"==typeof n.params?n.params(a,t,o,s):n.params,r.setFieldValue(t,n.mutator(a,t,o,i,s))))}),t},Mutator.prototype.transformCell=function(t,o){var e=t.column.modules.mutate.mutatorEdit||t.column.modules.mutate.mutator||!1,a={};return e?(a=Object.assign(a,t.row.getData()),t.column.setFieldValue(a,o),e.mutator(o,a,"edit",e.params,t.getComponent())):o},Mutator.prototype.enable=function(){this.enabled=!0},Mutator.prototype.disable=function(){this.enabled=!1},Mutator.prototype.mutators={},Tabulator.prototype.registerModule("mutator",Mutator);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/page.js b/app/static/vendors/tabulator/js/modules/page.js
deleted file mode 100644 (file)
index d37b814..0000000
+++ /dev/null
@@ -1,730 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-
-var Page = function Page(table) {
-
-       this.table = table; //hold Tabulator object
-
-       this.mode = "local";
-       this.progressiveLoad = false;
-
-       this.size = 0;
-       this.page = 1;
-       this.count = 5;
-       this.max = 1;
-
-       this.displayIndex = 0; //index in display pipeline
-
-       this.initialLoad = true;
-
-       this.pageSizes = [];
-
-       this.dataReceivedNames = {};
-       this.dataSentNames = {};
-
-       this.createElements();
-};
-
-Page.prototype.createElements = function () {
-
-       var button;
-
-       this.element = document.createElement("span");
-       this.element.classList.add("tabulator-paginator");
-
-       this.pagesElement = document.createElement("span");
-       this.pagesElement.classList.add("tabulator-pages");
-
-       button = document.createElement("button");
-       button.classList.add("tabulator-page");
-       button.setAttribute("type", "button");
-       button.setAttribute("role", "button");
-       button.setAttribute("aria-label", "");
-       button.setAttribute("title", "");
-
-       this.firstBut = button.cloneNode(true);
-       this.firstBut.setAttribute("data-page", "first");
-
-       this.prevBut = button.cloneNode(true);
-       this.prevBut.setAttribute("data-page", "prev");
-
-       this.nextBut = button.cloneNode(true);
-       this.nextBut.setAttribute("data-page", "next");
-
-       this.lastBut = button.cloneNode(true);
-       this.lastBut.setAttribute("data-page", "last");
-
-       if (this.table.options.paginationSizeSelector) {
-               this.pageSizeSelect = document.createElement("select");
-               this.pageSizeSelect.classList.add("tabulator-page-size");
-       }
-};
-
-Page.prototype.generatePageSizeSelectList = function () {
-       var _this = this;
-
-       var pageSizes = [];
-
-       if (this.pageSizeSelect) {
-
-               if (Array.isArray(this.table.options.paginationSizeSelector)) {
-                       pageSizes = this.table.options.paginationSizeSelector;
-                       this.pageSizes = pageSizes;
-
-                       if (this.pageSizes.indexOf(this.size) == -1) {
-                               pageSizes.unshift(this.size);
-                       }
-               } else {
-
-                       if (this.pageSizes.indexOf(this.size) == -1) {
-                               pageSizes = [];
-
-                               for (var i = 1; i < 5; i++) {
-                                       pageSizes.push(this.size * i);
-                               }
-
-                               this.pageSizes = pageSizes;
-                       } else {
-                               pageSizes = this.pageSizes;
-                       }
-               }
-
-               while (this.pageSizeSelect.firstChild) {
-                       this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);
-               }pageSizes.forEach(function (item) {
-                       var itemEl = document.createElement("option");
-                       itemEl.value = item;
-
-                       if (item === true) {
-                               _this.table.modules.localize.bind("pagination|all", function (value) {
-                                       itemEl.innerHTML = value;
-                               });
-                       } else {
-                               itemEl.innerHTML = item;
-                       }
-
-                       _this.pageSizeSelect.appendChild(itemEl);
-               });
-
-               this.pageSizeSelect.value = this.size;
-       }
-};
-
-//setup pageination
-Page.prototype.initialize = function (hidden) {
-       var self = this,
-           pageSelectLabel,
-           testElRow,
-           testElCell;
-
-       //update param names
-       this.dataSentNames = Object.assign({}, this.paginationDataSentNames);
-       this.dataSentNames = Object.assign(this.dataSentNames, this.table.options.paginationDataSent);
-
-       this.dataReceivedNames = Object.assign({}, this.paginationDataReceivedNames);
-       this.dataReceivedNames = Object.assign(this.dataReceivedNames, this.table.options.paginationDataReceived);
-
-       //build pagination element
-
-       //bind localizations
-       self.table.modules.localize.bind("pagination|first", function (value) {
-               self.firstBut.innerHTML = value;
-       });
-
-       self.table.modules.localize.bind("pagination|first_title", function (value) {
-               self.firstBut.setAttribute("aria-label", value);
-               self.firstBut.setAttribute("title", value);
-       });
-
-       self.table.modules.localize.bind("pagination|prev", function (value) {
-               self.prevBut.innerHTML = value;
-       });
-
-       self.table.modules.localize.bind("pagination|prev_title", function (value) {
-               self.prevBut.setAttribute("aria-label", value);
-               self.prevBut.setAttribute("title", value);
-       });
-
-       self.table.modules.localize.bind("pagination|next", function (value) {
-               self.nextBut.innerHTML = value;
-       });
-
-       self.table.modules.localize.bind("pagination|next_title", function (value) {
-               self.nextBut.setAttribute("aria-label", value);
-               self.nextBut.setAttribute("title", value);
-       });
-
-       self.table.modules.localize.bind("pagination|last", function (value) {
-               self.lastBut.innerHTML = value;
-       });
-
-       self.table.modules.localize.bind("pagination|last_title", function (value) {
-               self.lastBut.setAttribute("aria-label", value);
-               self.lastBut.setAttribute("title", value);
-       });
-
-       //click bindings
-       self.firstBut.addEventListener("click", function () {
-               self.setPage(1);
-       });
-
-       self.prevBut.addEventListener("click", function () {
-               self.previousPage();
-       });
-
-       self.nextBut.addEventListener("click", function () {
-               self.nextPage().then(function () {}).catch(function () {});
-       });
-
-       self.lastBut.addEventListener("click", function () {
-               self.setPage(self.max);
-       });
-
-       if (self.table.options.paginationElement) {
-               self.element = self.table.options.paginationElement;
-       }
-
-       if (this.pageSizeSelect) {
-               pageSelectLabel = document.createElement("label");
-
-               self.table.modules.localize.bind("pagination|page_size", function (value) {
-                       self.pageSizeSelect.setAttribute("aria-label", value);
-                       self.pageSizeSelect.setAttribute("title", value);
-                       pageSelectLabel.innerHTML = value;
-               });
-
-               self.element.appendChild(pageSelectLabel);
-               self.element.appendChild(self.pageSizeSelect);
-
-               self.pageSizeSelect.addEventListener("change", function (e) {
-                       self.setPageSize(self.pageSizeSelect.value == "true" ? true : self.pageSizeSelect.value);
-                       self.setPage(1).then(function () {}).catch(function () {});
-               });
-       }
-
-       //append to DOM
-       self.element.appendChild(self.firstBut);
-       self.element.appendChild(self.prevBut);
-       self.element.appendChild(self.pagesElement);
-       self.element.appendChild(self.nextBut);
-       self.element.appendChild(self.lastBut);
-
-       if (!self.table.options.paginationElement && !hidden) {
-               self.table.footerManager.append(self.element, self);
-       }
-
-       //set default values
-       self.mode = self.table.options.pagination;
-
-       if (self.table.options.paginationSize) {
-               self.size = self.table.options.paginationSize;
-       } else {
-               testElRow = document.createElement("div");
-               testElRow.classList.add("tabulator-row");
-               testElRow.style.visibility = hidden;
-
-               testElCell = document.createElement("div");
-               testElCell.classList.add("tabulator-cell");
-               testElCell.innerHTML = "Page Row Test";
-
-               testElRow.appendChild(testElCell);
-
-               self.table.rowManager.getTableElement().appendChild(testElRow);
-
-               self.size = Math.floor(self.table.rowManager.getElement().clientHeight / testElRow.offsetHeight);
-
-               self.table.rowManager.getTableElement().removeChild(testElRow);
-       }
-
-       // self.page = self.table.options.paginationInitialPage || 1;
-       self.count = self.table.options.paginationButtonCount;
-
-       self.generatePageSizeSelectList();
-};
-
-Page.prototype.initializeProgressive = function (mode) {
-       this.initialize(true);
-       this.mode = "progressive_" + mode;
-       this.progressiveLoad = true;
-};
-
-Page.prototype.setDisplayIndex = function (index) {
-       this.displayIndex = index;
-};
-
-Page.prototype.getDisplayIndex = function () {
-       return this.displayIndex;
-};
-
-//calculate maximum page from number of rows
-Page.prototype.setMaxRows = function (rowCount) {
-       if (!rowCount) {
-               this.max = 1;
-       } else {
-               this.max = this.size === true ? 1 : Math.ceil(rowCount / this.size);
-       }
-
-       if (this.page > this.max) {
-               this.page = this.max;
-       }
-};
-
-//reset to first page without triggering action
-Page.prototype.reset = function (force, columnsChanged) {
-       if (this.mode == "local" || force) {
-               this.page = 1;
-       }
-
-       if (columnsChanged) {
-               this.initialLoad = true;
-       }
-
-       return true;
-};
-
-//set the maxmum page
-Page.prototype.setMaxPage = function (max) {
-
-       max = parseInt(max);
-
-       this.max = max || 1;
-
-       if (this.page > this.max) {
-               this.page = this.max;
-               this.trigger();
-       }
-};
-
-//set current page number
-Page.prototype.setPage = function (page) {
-       var _this2 = this;
-
-       var self = this;
-
-       switch (page) {
-               case "first":
-                       return this.setPage(1);
-                       break;
-
-               case "prev":
-                       return this.previousPage();
-                       break;
-
-               case "next":
-                       return this.nextPage();
-                       break;
-
-               case "last":
-                       return this.setPage(this.max);
-                       break;
-       }
-
-       return new Promise(function (resolve, reject) {
-
-               page = parseInt(page);
-
-               if (page > 0 && page <= _this2.max) {
-                       _this2.page = page;
-                       _this2.trigger().then(function () {
-                               resolve();
-                       }).catch(function () {
-                               reject();
-                       });
-
-                       if (self.table.options.persistence && self.table.modExists("persistence", true) && self.table.modules.persistence.config.page) {
-                               self.table.modules.persistence.save("page");
-                       }
-               } else {
-                       console.warn("Pagination Error - Requested page is out of range of 1 - " + _this2.max + ":", page);
-                       reject();
-               }
-       });
-};
-
-Page.prototype.setPageToRow = function (row) {
-       var _this3 = this;
-
-       return new Promise(function (resolve, reject) {
-
-               var rows = _this3.table.rowManager.getDisplayRows(_this3.displayIndex - 1);
-               var index = rows.indexOf(row);
-
-               if (index > -1) {
-                       var page = _this3.size === true ? 1 : Math.ceil((index + 1) / _this3.size);
-
-                       _this3.setPage(page).then(function () {
-                               resolve();
-                       }).catch(function () {
-                               reject();
-                       });
-               } else {
-                       console.warn("Pagination Error - Requested row is not visible");
-                       reject();
-               }
-       });
-};
-
-Page.prototype.setPageSize = function (size) {
-       if (size !== true) {
-               size = parseInt(size);
-       }
-
-       if (size > 0) {
-               this.size = size;
-       }
-
-       if (this.pageSizeSelect) {
-               // this.pageSizeSelect.value = size;
-               this.generatePageSizeSelectList();
-       }
-
-       if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.page) {
-               this.table.modules.persistence.save("page");
-       }
-};
-
-//setup the pagination buttons
-Page.prototype._setPageButtons = function () {
-       var self = this;
-
-       var leftSize = Math.floor((this.count - 1) / 2);
-       var rightSize = Math.ceil((this.count - 1) / 2);
-       var min = this.max - this.page + leftSize + 1 < this.count ? this.max - this.count + 1 : Math.max(this.page - leftSize, 1);
-       var max = this.page <= rightSize ? Math.min(this.count, this.max) : Math.min(this.page + rightSize, this.max);
-
-       while (self.pagesElement.firstChild) {
-               self.pagesElement.removeChild(self.pagesElement.firstChild);
-       }if (self.page == 1) {
-               self.firstBut.disabled = true;
-               self.prevBut.disabled = true;
-       } else {
-               self.firstBut.disabled = false;
-               self.prevBut.disabled = false;
-       }
-
-       if (self.page == self.max) {
-               self.lastBut.disabled = true;
-               self.nextBut.disabled = true;
-       } else {
-               self.lastBut.disabled = false;
-               self.nextBut.disabled = false;
-       }
-
-       for (var i = min; i <= max; i++) {
-               if (i > 0 && i <= self.max) {
-                       self.pagesElement.appendChild(self._generatePageButton(i));
-               }
-       }
-
-       this.footerRedraw();
-};
-
-Page.prototype._generatePageButton = function (page) {
-       var self = this,
-           button = document.createElement("button");
-
-       button.classList.add("tabulator-page");
-       if (page == self.page) {
-               button.classList.add("active");
-       }
-
-       button.setAttribute("type", "button");
-       button.setAttribute("role", "button");
-
-       self.table.modules.localize.bind("pagination|page_title", function (value) {
-               button.setAttribute("aria-label", value + " " + page);
-               button.setAttribute("title", value + " " + page);
-       });
-
-       button.setAttribute("data-page", page);
-       button.textContent = page;
-
-       button.addEventListener("click", function (e) {
-               self.setPage(page);
-       });
-
-       return button;
-};
-
-//previous page
-Page.prototype.previousPage = function () {
-       var _this4 = this;
-
-       return new Promise(function (resolve, reject) {
-               if (_this4.page > 1) {
-                       _this4.page--;
-                       _this4.trigger().then(function () {
-                               resolve();
-                       }).catch(function () {
-                               reject();
-                       });
-
-                       if (_this4.table.options.persistence && _this4.table.modExists("persistence", true) && _this4.table.modules.persistence.config.page) {
-                               _this4.table.modules.persistence.save("page");
-                       }
-               } else {
-                       console.warn("Pagination Error - Previous page would be less than page 1:", 0);
-                       reject();
-               }
-       });
-};
-
-//next page
-Page.prototype.nextPage = function () {
-       var _this5 = this;
-
-       return new Promise(function (resolve, reject) {
-               if (_this5.page < _this5.max) {
-                       _this5.page++;
-                       _this5.trigger().then(function () {
-                               resolve();
-                       }).catch(function () {
-                               reject();
-                       });
-
-                       if (_this5.table.options.persistence && _this5.table.modExists("persistence", true) && _this5.table.modules.persistence.config.page) {
-                               _this5.table.modules.persistence.save("page");
-                       }
-               } else {
-                       if (!_this5.progressiveLoad) {
-                               console.warn("Pagination Error - Next page would be greater than maximum page of " + _this5.max + ":", _this5.max + 1);
-                       }
-                       reject();
-               }
-       });
-};
-
-//return current page number
-Page.prototype.getPage = function () {
-       return this.page;
-};
-
-//return max page number
-Page.prototype.getPageMax = function () {
-       return this.max;
-};
-
-Page.prototype.getPageSize = function (size) {
-       return this.size;
-};
-
-Page.prototype.getMode = function () {
-       return this.mode;
-};
-
-//return appropriate rows for current page
-Page.prototype.getRows = function (data) {
-       var output, start, end;
-
-       if (this.mode == "local") {
-               output = [];
-
-               if (this.size === true) {
-                       start = 0;
-                       end = data.length - 1;
-               } else {
-                       start = this.size * (this.page - 1);
-                       end = start + parseInt(this.size);
-               }
-
-               this._setPageButtons();
-
-               for (var i = start; i < end; i++) {
-                       if (data[i]) {
-                               output.push(data[i]);
-                       }
-               }
-
-               return output;
-       } else {
-
-               this._setPageButtons();
-
-               return data.slice(0);
-       }
-};
-
-Page.prototype.trigger = function () {
-       var _this6 = this;
-
-       var left;
-
-       return new Promise(function (resolve, reject) {
-
-               switch (_this6.mode) {
-                       case "local":
-                               left = _this6.table.rowManager.scrollLeft;
-
-                               _this6.table.rowManager.refreshActiveData("page");
-                               _this6.table.rowManager.scrollHorizontal(left);
-
-                               _this6.table.options.pageLoaded.call(_this6.table, _this6.getPage());
-                               resolve();
-                               break;
-
-                       case "remote":
-                       case "progressive_load":
-                       case "progressive_scroll":
-                               _this6.table.modules.ajax.blockActiveRequest();
-                               _this6._getRemotePage().then(function () {
-                                       resolve();
-                               }).catch(function () {
-                                       reject();
-                               });
-                               break;
-
-                       default:
-                               console.warn("Pagination Error - no such pagination mode:", _this6.mode);
-                               reject();
-               }
-       });
-};
-
-Page.prototype._getRemotePage = function () {
-       var _this7 = this;
-
-       var self = this,
-           oldParams,
-           pageParams;
-
-       return new Promise(function (resolve, reject) {
-
-               if (!self.table.modExists("ajax", true)) {
-                       reject();
-               }
-
-               //record old params and restore after request has been made
-               oldParams = Tabulator.prototype.helpers.deepClone(self.table.modules.ajax.getParams() || {});
-               pageParams = self.table.modules.ajax.getParams();
-
-               //configure request params
-               pageParams[_this7.dataSentNames.page] = self.page;
-
-               //set page size if defined
-               if (_this7.size) {
-                       pageParams[_this7.dataSentNames.size] = _this7.size;
-               }
-
-               //set sort data if defined
-               if (_this7.table.options.ajaxSorting && _this7.table.modExists("sort")) {
-                       var sorters = self.table.modules.sort.getSort();
-
-                       sorters.forEach(function (item) {
-                               delete item.column;
-                       });
-
-                       pageParams[_this7.dataSentNames.sorters] = sorters;
-               }
-
-               //set filter data if defined
-               if (_this7.table.options.ajaxFiltering && _this7.table.modExists("filter")) {
-                       var filters = self.table.modules.filter.getFilters(true, true);
-                       pageParams[_this7.dataSentNames.filters] = filters;
-               }
-
-               self.table.modules.ajax.setParams(pageParams);
-
-               self.table.modules.ajax.sendRequest(_this7.progressiveLoad).then(function (data) {
-                       self._parseRemoteData(data);
-                       resolve();
-               }).catch(function (e) {
-                       reject();
-               });
-
-               self.table.modules.ajax.setParams(oldParams);
-       });
-};
-
-Page.prototype._parseRemoteData = function (data) {
-       var self = this,
-           left,
-           data,
-           margin;
-
-       if (typeof data[this.dataReceivedNames.last_page] === "undefined") {
-               console.warn("Remote Pagination Error - Server response missing '" + this.dataReceivedNames.last_page + "' property");
-       }
-
-       if (data[this.dataReceivedNames.data]) {
-               this.max = parseInt(data[this.dataReceivedNames.last_page]) || 1;
-
-               if (this.progressiveLoad) {
-                       switch (this.mode) {
-                               case "progressive_load":
-
-                                       if (this.page == 1) {
-                                               this.table.rowManager.setData(data[this.dataReceivedNames.data], false, this.initialLoad && this.page == 1);
-                                       } else {
-                                               this.table.rowManager.addRows(data[this.dataReceivedNames.data]);
-                                       }
-
-                                       if (this.page < this.max) {
-                                               setTimeout(function () {
-                                                       self.nextPage().then(function () {}).catch(function () {});
-                                               }, self.table.options.ajaxProgressiveLoadDelay);
-                                       }
-                                       break;
-
-                               case "progressive_scroll":
-                                       data = this.table.rowManager.getData().concat(data[this.dataReceivedNames.data]);
-
-                                       this.table.rowManager.setData(data, true, this.initialLoad && this.page == 1);
-
-                                       margin = this.table.options.ajaxProgressiveLoadScrollMargin || this.table.rowManager.element.clientHeight * 2;
-
-                                       if (self.table.rowManager.element.scrollHeight <= self.table.rowManager.element.clientHeight + margin) {
-                                               self.nextPage().then(function () {}).catch(function () {});
-                                       }
-                                       break;
-                       }
-               } else {
-                       left = this.table.rowManager.scrollLeft;
-
-                       this.table.rowManager.setData(data[this.dataReceivedNames.data], false, this.initialLoad && this.page == 1);
-
-                       this.table.rowManager.scrollHorizontal(left);
-
-                       this.table.columnManager.scrollHorizontal(left);
-
-                       this.table.options.pageLoaded.call(this.table, this.getPage());
-               }
-
-               this.initialLoad = false;
-       } else {
-               console.warn("Remote Pagination Error - Server response missing '" + this.dataReceivedNames.data + "' property");
-       }
-};
-
-//handle the footer element being redrawn
-Page.prototype.footerRedraw = function () {
-       var footer = this.table.footerManager.element;
-
-       if (Math.ceil(footer.clientWidth) - footer.scrollWidth < 0) {
-               this.pagesElement.style.display = 'none';
-       } else {
-               this.pagesElement.style.display = '';
-
-               if (Math.ceil(footer.clientWidth) - footer.scrollWidth < 0) {
-                       this.pagesElement.style.display = 'none';
-               }
-       }
-};
-
-//set the paramter names for pagination requests
-Page.prototype.paginationDataSentNames = {
-       "page": "page",
-       "size": "size",
-       "sorters": "sorters",
-       // "sort_dir":"sort_dir",
-       "filters": "filters"
-       // "filter_value":"filter_value",
-       // "filter_type":"filter_type",
-};
-
-//set the property names for pagination responses
-Page.prototype.paginationDataReceivedNames = {
-       "current_page": "current_page",
-       "last_page": "last_page",
-       "data": "data"
-};
-
-Tabulator.prototype.registerModule("page", Page);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/page.min.js b/app/static/vendors/tabulator/js/modules/page.min.js
deleted file mode 100644 (file)
index c2835ba..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-var Page=function(e){this.table=e,this.mode="local",this.progressiveLoad=!1,this.size=0,this.page=1,this.count=5,this.max=1,this.displayIndex=0,this.initialLoad=!0,this.pageSizes=[],this.dataReceivedNames={},this.dataSentNames={},this.createElements()};Page.prototype.createElements=function(){var e;this.element=document.createElement("span"),this.element.classList.add("tabulator-paginator"),this.pagesElement=document.createElement("span"),this.pagesElement.classList.add("tabulator-pages"),e=document.createElement("button"),e.classList.add("tabulator-page"),e.setAttribute("type","button"),e.setAttribute("role","button"),e.setAttribute("aria-label",""),e.setAttribute("title",""),this.firstBut=e.cloneNode(!0),this.firstBut.setAttribute("data-page","first"),this.prevBut=e.cloneNode(!0),this.prevBut.setAttribute("data-page","prev"),this.nextBut=e.cloneNode(!0),this.nextBut.setAttribute("data-page","next"),this.lastBut=e.cloneNode(!0),this.lastBut.setAttribute("data-page","last"),this.table.options.paginationSizeSelector&&(this.pageSizeSelect=document.createElement("select"),this.pageSizeSelect.classList.add("tabulator-page-size"))},Page.prototype.generatePageSizeSelectList=function(){var e=this,t=[];if(this.pageSizeSelect){if(Array.isArray(this.table.options.paginationSizeSelector))t=this.table.options.paginationSizeSelector,this.pageSizes=t,-1==this.pageSizes.indexOf(this.size)&&t.unshift(this.size);else if(-1==this.pageSizes.indexOf(this.size)){t=[];for(var a=1;a<5;a++)t.push(this.size*a);this.pageSizes=t}else t=this.pageSizes;for(;this.pageSizeSelect.firstChild;)this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);t.forEach(function(t){var a=document.createElement("option");a.value=t,!0===t?e.table.modules.localize.bind("pagination|all",function(e){a.innerHTML=e}):a.innerHTML=t,e.pageSizeSelect.appendChild(a)}),this.pageSizeSelect.value=this.size}},Page.prototype.initialize=function(e){var t,a,i,s=this;this.dataSentNames=Object.assign({},this.paginationDataSentNames),this.dataSentNames=Object.assign(this.dataSentNames,this.table.options.paginationDataSent),this.dataReceivedNames=Object.assign({},this.paginationDataReceivedNames),this.dataReceivedNames=Object.assign(this.dataReceivedNames,this.table.options.paginationDataReceived),s.table.modules.localize.bind("pagination|first",function(e){s.firstBut.innerHTML=e}),s.table.modules.localize.bind("pagination|first_title",function(e){s.firstBut.setAttribute("aria-label",e),s.firstBut.setAttribute("title",e)}),s.table.modules.localize.bind("pagination|prev",function(e){s.prevBut.innerHTML=e}),s.table.modules.localize.bind("pagination|prev_title",function(e){s.prevBut.setAttribute("aria-label",e),s.prevBut.setAttribute("title",e)}),s.table.modules.localize.bind("pagination|next",function(e){s.nextBut.innerHTML=e}),s.table.modules.localize.bind("pagination|next_title",function(e){s.nextBut.setAttribute("aria-label",e),s.nextBut.setAttribute("title",e)}),s.table.modules.localize.bind("pagination|last",function(e){s.lastBut.innerHTML=e}),s.table.modules.localize.bind("pagination|last_title",function(e){s.lastBut.setAttribute("aria-label",e),s.lastBut.setAttribute("title",e)}),s.firstBut.addEventListener("click",function(){s.setPage(1)}),s.prevBut.addEventListener("click",function(){s.previousPage()}),s.nextBut.addEventListener("click",function(){s.nextPage().then(function(){}).catch(function(){})}),s.lastBut.addEventListener("click",function(){s.setPage(s.max)}),s.table.options.paginationElement&&(s.element=s.table.options.paginationElement),this.pageSizeSelect&&(t=document.createElement("label"),s.table.modules.localize.bind("pagination|page_size",function(e){s.pageSizeSelect.setAttribute("aria-label",e),s.pageSizeSelect.setAttribute("title",e),t.innerHTML=e}),s.element.appendChild(t),s.element.appendChild(s.pageSizeSelect),s.pageSizeSelect.addEventListener("change",function(e){s.setPageSize("true"==s.pageSizeSelect.value||s.pageSizeSelect.value),s.setPage(1).then(function(){}).catch(function(){})})),s.element.appendChild(s.firstBut),s.element.appendChild(s.prevBut),s.element.appendChild(s.pagesElement),s.element.appendChild(s.nextBut),s.element.appendChild(s.lastBut),s.table.options.paginationElement||e||s.table.footerManager.append(s.element,s),s.mode=s.table.options.pagination,s.table.options.paginationSize?s.size=s.table.options.paginationSize:(a=document.createElement("div"),a.classList.add("tabulator-row"),a.style.visibility=e,i=document.createElement("div"),i.classList.add("tabulator-cell"),i.innerHTML="Page Row Test",a.appendChild(i),s.table.rowManager.getTableElement().appendChild(a),s.size=Math.floor(s.table.rowManager.getElement().clientHeight/a.offsetHeight),s.table.rowManager.getTableElement().removeChild(a)),s.count=s.table.options.paginationButtonCount,s.generatePageSizeSelectList()},Page.prototype.initializeProgressive=function(e){this.initialize(!0),this.mode="progressive_"+e,this.progressiveLoad=!0},Page.prototype.setDisplayIndex=function(e){this.displayIndex=e},Page.prototype.getDisplayIndex=function(){return this.displayIndex},Page.prototype.setMaxRows=function(e){this.max=e?!0===this.size?1:Math.ceil(e/this.size):1,this.page>this.max&&(this.page=this.max)},Page.prototype.reset=function(e,t){return("local"==this.mode||e)&&(this.page=1),t&&(this.initialLoad=!0),!0},Page.prototype.setMaxPage=function(e){e=parseInt(e),this.max=e||1,this.page>this.max&&(this.page=this.max,this.trigger())},Page.prototype.setPage=function(e){var t=this,a=this;switch(e){case"first":return this.setPage(1);case"prev":return this.previousPage();case"next":return this.nextPage();case"last":return this.setPage(this.max)}return new Promise(function(i,s){e=parseInt(e),e>0&&e<=t.max?(t.page=e,t.trigger().then(function(){i()}).catch(function(){s()}),a.table.options.persistence&&a.table.modExists("persistence",!0)&&a.table.modules.persistence.config.page&&a.table.modules.persistence.save("page")):(console.warn("Pagination Error - Requested page is out of range of 1 - "+t.max+":",e),s())})},Page.prototype.setPageToRow=function(e){var t=this;return new Promise(function(a,i){var s=t.table.rowManager.getDisplayRows(t.displayIndex-1),n=s.indexOf(e);if(n>-1){var o=!0===t.size?1:Math.ceil((n+1)/t.size);t.setPage(o).then(function(){a()}).catch(function(){i()})}else console.warn("Pagination Error - Requested row is not visible"),i()})},Page.prototype.setPageSize=function(e){!0!==e&&(e=parseInt(e)),e>0&&(this.size=e),this.pageSizeSelect&&this.generatePageSizeSelectList(),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.page&&this.table.modules.persistence.save("page")},Page.prototype._setPageButtons=function(){for(var e=this,t=Math.floor((this.count-1)/2),a=Math.ceil((this.count-1)/2),i=this.max-this.page+t+1<this.count?this.max-this.count+1:Math.max(this.page-t,1),s=this.page<=a?Math.min(this.count,this.max):Math.min(this.page+a,this.max);e.pagesElement.firstChild;)e.pagesElement.removeChild(e.pagesElement.firstChild);1==e.page?(e.firstBut.disabled=!0,e.prevBut.disabled=!0):(e.firstBut.disabled=!1,e.prevBut.disabled=!1),e.page==e.max?(e.lastBut.disabled=!0,e.nextBut.disabled=!0):(e.lastBut.disabled=!1,e.nextBut.disabled=!1);for(var n=i;n<=s;n++)n>0&&n<=e.max&&e.pagesElement.appendChild(e._generatePageButton(n));this.footerRedraw()},Page.prototype._generatePageButton=function(e){var t=this,a=document.createElement("button");return a.classList.add("tabulator-page"),e==t.page&&a.classList.add("active"),a.setAttribute("type","button"),a.setAttribute("role","button"),t.table.modules.localize.bind("pagination|page_title",function(t){a.setAttribute("aria-label",t+" "+e),a.setAttribute("title",t+" "+e)}),a.setAttribute("data-page",e),a.textContent=e,a.addEventListener("click",function(a){t.setPage(e)}),a},Page.prototype.previousPage=function(){var e=this;return new Promise(function(t,a){e.page>1?(e.page--,e.trigger().then(function(){t()}).catch(function(){a()}),e.table.options.persistence&&e.table.modExists("persistence",!0)&&e.table.modules.persistence.config.page&&e.table.modules.persistence.save("page")):(console.warn("Pagination Error - Previous page would be less than page 1:",0),a())})},Page.prototype.nextPage=function(){var e=this;return new Promise(function(t,a){e.page<e.max?(e.page++,e.trigger().then(function(){t()}).catch(function(){a()}),e.table.options.persistence&&e.table.modExists("persistence",!0)&&e.table.modules.persistence.config.page&&e.table.modules.persistence.save("page")):(e.progressiveLoad||console.warn("Pagination Error - Next page would be greater than maximum page of "+e.max+":",e.max+1),a())})},Page.prototype.getPage=function(){return this.page},Page.prototype.getPageMax=function(){return this.max},Page.prototype.getPageSize=function(e){return this.size},Page.prototype.getMode=function(){return this.mode},Page.prototype.getRows=function(e){var t,a,i;if("local"==this.mode){t=[],!0===this.size?(a=0,i=e.length-1):(a=this.size*(this.page-1),i=a+parseInt(this.size)),this._setPageButtons();for(var s=a;s<i;s++)e[s]&&t.push(e[s]);return t}return this._setPageButtons(),e.slice(0)},Page.prototype.trigger=function(){var e,t=this;return new Promise(function(a,i){switch(t.mode){case"local":e=t.table.rowManager.scrollLeft,t.table.rowManager.refreshActiveData("page"),t.table.rowManager.scrollHorizontal(e),t.table.options.pageLoaded.call(t.table,t.getPage()),a();break;case"remote":case"progressive_load":case"progressive_scroll":t.table.modules.ajax.blockActiveRequest(),t._getRemotePage().then(function(){a()}).catch(function(){i()});break;default:console.warn("Pagination Error - no such pagination mode:",t.mode),i()}})},Page.prototype._getRemotePage=function(){var e,t,a=this,i=this;return new Promise(function(s,n){if(i.table.modExists("ajax",!0)||n(),e=Tabulator.prototype.helpers.deepClone(i.table.modules.ajax.getParams()||{}),t=i.table.modules.ajax.getParams(),t[a.dataSentNames.page]=i.page,a.size&&(t[a.dataSentNames.size]=a.size),a.table.options.ajaxSorting&&a.table.modExists("sort")){var o=i.table.modules.sort.getSort();o.forEach(function(e){delete e.column}),t[a.dataSentNames.sorters]=o}if(a.table.options.ajaxFiltering&&a.table.modExists("filter")){var r=i.table.modules.filter.getFilters(!0,!0);t[a.dataSentNames.filters]=r}i.table.modules.ajax.setParams(t),i.table.modules.ajax.sendRequest(a.progressiveLoad).then(function(e){i._parseRemoteData(e),s()}).catch(function(e){n()}),i.table.modules.ajax.setParams(e)})},Page.prototype._parseRemoteData=function(e){var t,e,a,i=this;if(void 0===e[this.dataReceivedNames.last_page]&&console.warn("Remote Pagination Error - Server response missing '"+this.dataReceivedNames.last_page+"' property"),e[this.dataReceivedNames.data]){if(this.max=parseInt(e[this.dataReceivedNames.last_page])||1,this.progressiveLoad)switch(this.mode){case"progressive_load":1==this.page?this.table.rowManager.setData(e[this.dataReceivedNames.data],!1,this.initialLoad&&1==this.page):this.table.rowManager.addRows(e[this.dataReceivedNames.data]),this.page<this.max&&setTimeout(function(){i.nextPage().then(function(){}).catch(function(){})},i.table.options.ajaxProgressiveLoadDelay);break;case"progressive_scroll":e=this.table.rowManager.getData().concat(e[this.dataReceivedNames.data]),this.table.rowManager.setData(e,!0,this.initialLoad&&1==this.page),a=this.table.options.ajaxProgressiveLoadScrollMargin||2*this.table.rowManager.element.clientHeight,i.table.rowManager.element.scrollHeight<=i.table.rowManager.element.clientHeight+a&&i.nextPage().then(function(){}).catch(function(){})}else t=this.table.rowManager.scrollLeft,this.table.rowManager.setData(e[this.dataReceivedNames.data],!1,this.initialLoad&&1==this.page),this.table.rowManager.scrollHorizontal(t),this.table.columnManager.scrollHorizontal(t),this.table.options.pageLoaded.call(this.table,this.getPage());this.initialLoad=!1}else console.warn("Remote Pagination Error - Server response missing '"+this.dataReceivedNames.data+"' property")},Page.prototype.footerRedraw=function(){var e=this.table.footerManager.element;Math.ceil(e.clientWidth)-e.scrollWidth<0?this.pagesElement.style.display="none":(this.pagesElement.style.display="",Math.ceil(e.clientWidth)-e.scrollWidth<0&&(this.pagesElement.style.display="none"))},Page.prototype.paginationDataSentNames={page:"page",size:"size",sorters:"sorters",filters:"filters"},Page.prototype.paginationDataReceivedNames={current_page:"current_page",last_page:"last_page",data:"data"},Tabulator.prototype.registerModule("page",Page);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/persistence.js b/app/static/vendors/tabulator/js/modules/persistence.js
deleted file mode 100644 (file)
index 8e5de49..0000000
+++ /dev/null
@@ -1,411 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-
-var Persistence = function Persistence(table) {
-       this.table = table; //hold Tabulator object
-       this.mode = "";
-       this.id = "";
-       // this.persistProps = ["field", "width", "visible"];
-       this.defWatcherBlock = false;
-       this.config = {};
-       this.readFunc = false;
-       this.writeFunc = false;
-};
-
-// Test for whether localStorage is available for use.
-Persistence.prototype.localStorageTest = function () {
-       var testKey = "_tabulator_test";
-
-       try {
-               window.localStorage.setItem(testKey, testKey);
-               window.localStorage.removeItem(testKey);
-               return true;
-       } catch (e) {
-               return false;
-       }
-};
-
-//setup parameters
-Persistence.prototype.initialize = function () {
-       //determine persistent layout storage type
-
-       var mode = this.table.options.persistenceMode,
-           id = this.table.options.persistenceID,
-           retreivedData;
-
-       this.mode = mode !== true ? mode : this.localStorageTest() ? "local" : "cookie";
-
-       if (this.table.options.persistenceReaderFunc) {
-               if (typeof this.table.options.persistenceReaderFunc === "function") {
-                       this.readFunc = this.table.options.persistenceReaderFunc;
-               } else {
-                       if (this.readers[this.table.options.persistenceReaderFunc]) {
-                               this.readFunc = this.readers[this.table.options.persistenceReaderFunc];
-                       } else {
-                               console.warn("Persistence Read Error - invalid reader set", this.table.options.persistenceReaderFunc);
-                       }
-               }
-       } else {
-               if (this.readers[this.mode]) {
-                       this.readFunc = this.readers[this.mode];
-               } else {
-                       console.warn("Persistence Read Error - invalid reader set", this.mode);
-               }
-       }
-
-       if (this.table.options.persistenceWriterFunc) {
-               if (typeof this.table.options.persistenceWriterFunc === "function") {
-                       this.writeFunc = this.table.options.persistenceWriterFunc;
-               } else {
-                       if (this.readers[this.table.options.persistenceWriterFunc]) {
-                               this.writeFunc = this.readers[this.table.options.persistenceWriterFunc];
-                       } else {
-                               console.warn("Persistence Write Error - invalid reader set", this.table.options.persistenceWriterFunc);
-                       }
-               }
-       } else {
-               if (this.writers[this.mode]) {
-                       this.writeFunc = this.writers[this.mode];
-               } else {
-                       console.warn("Persistence Write Error - invalid writer set", this.mode);
-               }
-       }
-
-       //set storage tag
-       this.id = "tabulator-" + (id || this.table.element.getAttribute("id") || "");
-
-       this.config = {
-               sort: this.table.options.persistence === true || this.table.options.persistence.sort,
-               filter: this.table.options.persistence === true || this.table.options.persistence.filter,
-               group: this.table.options.persistence === true || this.table.options.persistence.group,
-               page: this.table.options.persistence === true || this.table.options.persistence.page,
-               columns: this.table.options.persistence === true ? ["title", "width", "visible"] : this.table.options.persistence.columns
-       };
-
-       //load pagination data if needed
-       if (this.config.page) {
-               retreivedData = this.retreiveData("page");
-
-               if (retreivedData) {
-                       if (typeof retreivedData.paginationSize !== "undefined" && (this.config.page === true || this.config.page.size)) {
-                               this.table.options.paginationSize = retreivedData.paginationSize;
-                       }
-
-                       if (typeof retreivedData.paginationInitialPage !== "undefined" && (this.config.page === true || this.config.page.page)) {
-                               this.table.options.paginationInitialPage = retreivedData.paginationInitialPage;
-                       }
-               }
-       }
-
-       //load group data if needed
-       if (this.config.group) {
-               retreivedData = this.retreiveData("group");
-
-               if (retreivedData) {
-                       if (typeof retreivedData.groupBy !== "undefined" && (this.config.group === true || this.config.group.groupBy)) {
-                               this.table.options.groupBy = retreivedData.groupBy;
-                       }
-                       if (typeof retreivedData.groupStartOpen !== "undefined" && (this.config.group === true || this.config.group.groupStartOpen)) {
-                               this.table.options.groupStartOpen = retreivedData.groupStartOpen;
-                       }
-                       if (typeof retreivedData.groupHeader !== "undefined" && (this.config.group === true || this.config.group.groupHeader)) {
-                               this.table.options.groupHeader = retreivedData.groupHeader;
-                       }
-               }
-       }
-};
-
-Persistence.prototype.initializeColumn = function (column) {
-       var self = this,
-           def,
-           keys;
-
-       if (this.config.columns) {
-               this.defWatcherBlock = true;
-
-               def = column.getDefinition();
-
-               keys = this.config.columns === true ? Object.keys(def) : this.config.columns;
-
-               keys.forEach(function (key) {
-                       var props = Object.getOwnPropertyDescriptor(def, key);
-                       var value = def[key];
-                       if (props) {
-                               Object.defineProperty(def, key, {
-                                       set: function set(newValue) {
-                                               value = newValue;
-
-                                               if (!self.defWatcherBlock) {
-                                                       self.save("columns");
-                                               }
-
-                                               if (props.set) {
-                                                       props.set(newValue);
-                                               }
-                                       },
-                                       get: function get() {
-                                               if (props.get) {
-                                                       props.get();
-                                               }
-                                               return value;
-                                       }
-                               });
-                       }
-               });
-
-               this.defWatcherBlock = false;
-       }
-};
-
-//load saved definitions
-Persistence.prototype.load = function (type, current) {
-       var data = this.retreiveData(type);
-
-       if (current) {
-               data = data ? this.mergeDefinition(current, data) : current;
-       }
-
-       return data;
-};
-
-//retreive data from memory
-Persistence.prototype.retreiveData = function (type) {
-       return this.readFunc ? this.readFunc(this.id, type) : false;
-};
-
-//merge old and new column definitions
-Persistence.prototype.mergeDefinition = function (oldCols, newCols) {
-       var self = this,
-           output = [];
-
-       // oldCols = oldCols || [];
-       newCols = newCols || [];
-
-       newCols.forEach(function (column, to) {
-
-               var from = self._findColumn(oldCols, column),
-                   keys;
-
-               if (from) {
-
-                       if (self.config.columns === true || self.config.columns == undefined) {
-                               keys = Object.keys(from);
-                               keys.push("width");
-                       } else {
-                               keys = self.config.columns;
-                       }
-
-                       keys.forEach(function (key) {
-                               if (typeof column[key] !== "undefined") {
-                                       from[key] = column[key];
-                               }
-                       });
-
-                       if (from.columns) {
-                               from.columns = self.mergeDefinition(from.columns, column.columns);
-                       }
-
-                       output.push(from);
-               }
-       });
-
-       oldCols.forEach(function (column, i) {
-               var from = self._findColumn(newCols, column);
-               if (!from) {
-                       if (output.length > i) {
-                               output.splice(i, 0, column);
-                       } else {
-                               output.push(column);
-                       }
-               }
-       });
-
-       return output;
-};
-
-//find matching columns
-Persistence.prototype._findColumn = function (columns, subject) {
-       var type = subject.columns ? "group" : subject.field ? "field" : "object";
-
-       return columns.find(function (col) {
-               switch (type) {
-                       case "group":
-                               return col.title === subject.title && col.columns.length === subject.columns.length;
-                               break;
-
-                       case "field":
-                               return col.field === subject.field;
-                               break;
-
-                       case "object":
-                               return col === subject;
-                               break;
-               }
-       });
-};
-
-//save data
-Persistence.prototype.save = function (type) {
-       var data = {};
-
-       switch (type) {
-               case "columns":
-                       data = this.parseColumns(this.table.columnManager.getColumns());
-                       break;
-
-               case "filter":
-                       data = this.table.modules.filter.getFilters();
-                       break;
-
-               case "sort":
-                       data = this.validateSorters(this.table.modules.sort.getSort());
-                       break;
-
-               case "group":
-                       data = this.getGroupConfig();
-                       break;
-
-               case "page":
-                       data = this.getPageConfig();
-                       break;
-       }
-
-       if (this.writeFunc) {
-               this.writeFunc(this.id, type, data);
-       }
-};
-
-//ensure sorters contain no function data
-Persistence.prototype.validateSorters = function (data) {
-       data.forEach(function (item) {
-               item.column = item.field;
-               delete item.field;
-       });
-
-       return data;
-};
-
-Persistence.prototype.getGroupConfig = function () {
-       if (this.config.group) {
-               if (this.config.group === true || this.config.group.groupBy) {
-                       data.groupBy = this.table.options.groupBy;
-               }
-
-               if (this.config.group === true || this.config.group.groupStartOpen) {
-                       data.groupStartOpen = this.table.options.groupStartOpen;
-               }
-
-               if (this.config.group === true || this.config.group.groupHeader) {
-                       data.groupHeader = this.table.options.groupHeader;
-               }
-       }
-
-       return data;
-};
-
-Persistence.prototype.getPageConfig = function () {
-       var data = {};
-
-       if (this.config.page) {
-               if (this.config.page === true || this.config.page.size) {
-                       data.paginationSize = this.table.modules.page.getPageSize();
-               }
-
-               if (this.config.page === true || this.config.page.page) {
-                       data.paginationInitialPage = this.table.modules.page.getPage();
-               }
-       }
-
-       return data;
-};
-
-//parse columns for data to store
-Persistence.prototype.parseColumns = function (columns) {
-       var self = this,
-           definitions = [];
-
-       columns.forEach(function (column) {
-               var defStore = {},
-                   colDef = column.getDefinition(),
-                   keys;
-
-               if (column.isGroup) {
-                       defStore.title = colDef.title;
-                       defStore.columns = self.parseColumns(column.getColumns());
-               } else {
-                       defStore.field = column.getField();
-
-                       if (self.config.columns === true || self.config.columns == undefined) {
-                               keys = Object.keys(colDef);
-                               keys.push("width");
-                       } else {
-                               keys = self.config.columns;
-                       }
-
-                       keys.forEach(function (key) {
-
-                               switch (key) {
-                                       case "width":
-                                               defStore.width = column.getWidth();
-                                               break;
-                                       case "visible":
-                                               defStore.visible = column.visible;
-                                               break;
-
-                                       default:
-                                               defStore[key] = colDef[key];
-                               }
-                       });
-               }
-
-               definitions.push(defStore);
-       });
-
-       return definitions;
-};
-
-// read peristence information from storage
-Persistence.prototype.readers = {
-       local: function local(id, type) {
-               var data = localStorage.getItem(id + "-" + type);
-
-               return data ? JSON.parse(data) : false;
-       },
-       cookie: function cookie(id, type) {
-               var cookie = document.cookie,
-                   key = id + "-" + type,
-                   cookiePos = cookie.indexOf(key + "="),
-                   end,
-                   data;
-
-               //if cookie exists, decode and load column data into tabulator
-               if (cookiePos > -1) {
-                       cookie = cookie.substr(cookiePos);
-
-                       end = cookie.indexOf(";");
-
-                       if (end > -1) {
-                               cookie = cookie.substr(0, end);
-                       }
-
-                       data = cookie.replace(key + "=", "");
-               }
-
-               return data ? JSON.parse(data) : false;
-       }
-};
-
-//write persistence information to storage
-Persistence.prototype.writers = {
-       local: function local(id, type, data) {
-               localStorage.setItem(id + "-" + type, JSON.stringify(data));
-       },
-       cookie: function cookie(id, type, data) {
-               var expireDate = new Date();
-
-               expireDate.setDate(expireDate.getDate() + 10000);
-
-               document.cookie = id + "-" + type + "=" + JSON.stringify(data) + "; expires=" + expireDate.toUTCString();
-       }
-};
-
-Tabulator.prototype.registerModule("persistence", Persistence);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/persistence.min.js b/app/static/vendors/tabulator/js/modules/persistence.min.js
deleted file mode 100644 (file)
index 8d87ab3..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-var Persistence=function(e){this.table=e,this.mode="",this.id="",this.defWatcherBlock=!1,this.config={},this.readFunc=!1,this.writeFunc=!1};Persistence.prototype.localStorageTest=function(){var e="_tabulator_test";try{return window.localStorage.setItem(e,e),window.localStorage.removeItem(e),!0}catch(e){return!1}},Persistence.prototype.initialize=function(){var e,t=this.table.options.persistenceMode,i=this.table.options.persistenceID;this.mode=!0!==t?t:this.localStorageTest()?"local":"cookie",this.table.options.persistenceReaderFunc?"function"==typeof this.table.options.persistenceReaderFunc?this.readFunc=this.table.options.persistenceReaderFunc:this.readers[this.table.options.persistenceReaderFunc]?this.readFunc=this.readers[this.table.options.persistenceReaderFunc]:console.warn("Persistence Read Error - invalid reader set",this.table.options.persistenceReaderFunc):this.readers[this.mode]?this.readFunc=this.readers[this.mode]:console.warn("Persistence Read Error - invalid reader set",this.mode),this.table.options.persistenceWriterFunc?"function"==typeof this.table.options.persistenceWriterFunc?this.writeFunc=this.table.options.persistenceWriterFunc:this.readers[this.table.options.persistenceWriterFunc]?this.writeFunc=this.readers[this.table.options.persistenceWriterFunc]:console.warn("Persistence Write Error - invalid reader set",this.table.options.persistenceWriterFunc):this.writers[this.mode]?this.writeFunc=this.writers[this.mode]:console.warn("Persistence Write Error - invalid writer set",this.mode),this.id="tabulator-"+(i||this.table.element.getAttribute("id")||""),this.config={sort:!0===this.table.options.persistence||this.table.options.persistence.sort,filter:!0===this.table.options.persistence||this.table.options.persistence.filter,group:!0===this.table.options.persistence||this.table.options.persistence.group,page:!0===this.table.options.persistence||this.table.options.persistence.page,columns:!0===this.table.options.persistence?["title","width","visible"]:this.table.options.persistence.columns},this.config.page&&(e=this.retreiveData("page"))&&(void 0===e.paginationSize||!0!==this.config.page&&!this.config.page.size||(this.table.options.paginationSize=e.paginationSize),void 0===e.paginationInitialPage||!0!==this.config.page&&!this.config.page.page||(this.table.options.paginationInitialPage=e.paginationInitialPage)),this.config.group&&(e=this.retreiveData("group"))&&(void 0===e.groupBy||!0!==this.config.group&&!this.config.group.groupBy||(this.table.options.groupBy=e.groupBy),void 0===e.groupStartOpen||!0!==this.config.group&&!this.config.group.groupStartOpen||(this.table.options.groupStartOpen=e.groupStartOpen),void 0===e.groupHeader||!0!==this.config.group&&!this.config.group.groupHeader||(this.table.options.groupHeader=e.groupHeader))},Persistence.prototype.initializeColumn=function(e){var t,i,s=this;this.config.columns&&(this.defWatcherBlock=!0,t=e.getDefinition(),i=!0===this.config.columns?Object.keys(t):this.config.columns,i.forEach(function(e){var i=Object.getOwnPropertyDescriptor(t,e),o=t[e];i&&Object.defineProperty(t,e,{set:function(e){o=e,s.defWatcherBlock||s.save("columns"),i.set&&i.set(e)},get:function(){return i.get&&i.get(),o}})}),this.defWatcherBlock=!1)},Persistence.prototype.load=function(e,t){var i=this.retreiveData(e);return t&&(i=i?this.mergeDefinition(t,i):t),i},Persistence.prototype.retreiveData=function(e){return!!this.readFunc&&this.readFunc(this.id,e)},Persistence.prototype.mergeDefinition=function(e,t){var i=this,s=[];return t=t||[],t.forEach(function(t,o){var n,r=i._findColumn(e,t);r&&(!0===i.config.columns||void 0==i.config.columns?(n=Object.keys(r),n.push("width")):n=i.config.columns,n.forEach(function(e){void 0!==t[e]&&(r[e]=t[e])}),r.columns&&(r.columns=i.mergeDefinition(r.columns,t.columns)),s.push(r))}),e.forEach(function(e,o){i._findColumn(t,e)||(s.length>o?s.splice(o,0,e):s.push(e))}),s},Persistence.prototype._findColumn=function(e,t){var i=t.columns?"group":t.field?"field":"object";return e.find(function(e){switch(i){case"group":return e.title===t.title&&e.columns.length===t.columns.length;case"field":return e.field===t.field;case"object":return e===t}})},Persistence.prototype.save=function(e){var t={};switch(e){case"columns":t=this.parseColumns(this.table.columnManager.getColumns());break;case"filter":t=this.table.modules.filter.getFilters();break;case"sort":t=this.validateSorters(this.table.modules.sort.getSort());break;case"group":t=this.getGroupConfig();break;case"page":t=this.getPageConfig()}this.writeFunc&&this.writeFunc(this.id,e,t)},Persistence.prototype.validateSorters=function(e){return e.forEach(function(e){e.column=e.field,delete e.field}),e},Persistence.prototype.getGroupConfig=function(){return this.config.group&&((!0===this.config.group||this.config.group.groupBy)&&(data.groupBy=this.table.options.groupBy),(!0===this.config.group||this.config.group.groupStartOpen)&&(data.groupStartOpen=this.table.options.groupStartOpen),(!0===this.config.group||this.config.group.groupHeader)&&(data.groupHeader=this.table.options.groupHeader)),data},Persistence.prototype.getPageConfig=function(){var e={};return this.config.page&&((!0===this.config.page||this.config.page.size)&&(e.paginationSize=this.table.modules.page.getPageSize()),(!0===this.config.page||this.config.page.page)&&(e.paginationInitialPage=this.table.modules.page.getPage())),e},Persistence.prototype.parseColumns=function(e){var t=this,i=[];return e.forEach(function(e){var s,o={},n=e.getDefinition();e.isGroup?(o.title=n.title,o.columns=t.parseColumns(e.getColumns())):(o.field=e.getField(),!0===t.config.columns||void 0==t.config.columns?(s=Object.keys(n),s.push("width")):s=t.config.columns,s.forEach(function(t){switch(t){case"width":o.width=e.getWidth();break;case"visible":o.visible=e.visible;break;default:o[t]=n[t]}})),i.push(o)}),i},Persistence.prototype.readers={local:function(e,t){var i=localStorage.getItem(e+"-"+t);return!!i&&JSON.parse(i)},cookie:function(e,t){var i,s,o=document.cookie,n=e+"-"+t,r=o.indexOf(n+"=");return r>-1&&(o=o.substr(r),i=o.indexOf(";"),i>-1&&(o=o.substr(0,i)),s=o.replace(n+"=","")),!!s&&JSON.parse(s)}},Persistence.prototype.writers={local:function(e,t,i){localStorage.setItem(e+"-"+t,JSON.stringify(i))},cookie:function(e,t,i){var s=new Date;s.setDate(s.getDate()+1e4),document.cookie=e+"-"+t+"="+JSON.stringify(i)+"; expires="+s.toUTCString()}},Tabulator.prototype.registerModule("persistence",Persistence);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/print.js b/app/static/vendors/tabulator/js/modules/print.js
deleted file mode 100644 (file)
index 940f1a9..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-
-var Print = function Print(table) {
-       this.table = table; //hold Tabulator object
-       this.element = false;
-       this.manualBlock = false;
-};
-
-Print.prototype.initialize = function () {
-       window.addEventListener("beforeprint", this.replaceTable.bind(this));
-       window.addEventListener("afterprint", this.cleanup.bind(this));
-};
-
-Print.prototype.replaceTable = function () {
-       if (!this.manualBlock) {
-               this.element = document.createElement("div");
-               this.element.classList.add("tabulator-print-table");
-
-               this.element.appendChild(this.table.modules.export.genereateTable(this.table.options.printConfig, this.table.options.printStyled, this.table.options.printRowRange, "print"));
-
-               this.table.element.style.display = "none";
-
-               this.table.element.parentNode.insertBefore(this.element, this.table.element);
-       }
-};
-
-Print.prototype.cleanup = function () {
-       document.body.classList.remove("tabulator-print-fullscreen-hide");
-
-       if (this.element && this.element.parentNode) {
-               this.element.parentNode.removeChild(this.element);
-               this.table.element.style.display = "";
-       }
-};
-
-Print.prototype.printFullscreen = function (visible, style, config) {
-       var scrollX = window.scrollX,
-           scrollY = window.scrollY,
-           headerEl = document.createElement("div"),
-           footerEl = document.createElement("div"),
-           tableEl = this.table.modules.export.genereateTable(typeof config != "undefined" ? config : this.table.options.printConfig, typeof style != "undefined" ? style : this.table.options.printStyled, visible, "print"),
-           headerContent,
-           footerContent;
-
-       this.manualBlock = true;
-
-       this.element = document.createElement("div");
-       this.element.classList.add("tabulator-print-fullscreen");
-
-       if (this.table.options.printHeader) {
-               headerEl.classList.add("tabulator-print-header");
-
-               headerContent = typeof this.table.options.printHeader == "function" ? this.table.options.printHeader.call(this.table) : this.table.options.printHeader;
-
-               if (typeof headerContent == "string") {
-                       headerEl.innerHTML = headerContent;
-               } else {
-                       headerEl.appendChild(headerContent);
-               }
-
-               this.element.appendChild(headerEl);
-       }
-
-       this.element.appendChild(tableEl);
-
-       if (this.table.options.printFooter) {
-               footerEl.classList.add("tabulator-print-footer");
-
-               footerContent = typeof this.table.options.printFooter == "function" ? this.table.options.printFooter.call(this.table) : this.table.options.printFooter;
-
-               if (typeof footerContent == "string") {
-                       footerEl.innerHTML = footerContent;
-               } else {
-                       footerEl.appendChild(footerContent);
-               }
-
-               this.element.appendChild(footerEl);
-       }
-
-       document.body.classList.add("tabulator-print-fullscreen-hide");
-       document.body.appendChild(this.element);
-
-       if (this.table.options.printFormatter) {
-               this.table.options.printFormatter(this.element, tableEl);
-       }
-
-       window.print();
-
-       this.cleanup();
-
-       window.scrollTo(scrollX, scrollY);
-
-       this.manualBlock = false;
-};
-
-Tabulator.prototype.registerModule("print", Print);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/print.min.js b/app/static/vendors/tabulator/js/modules/print.min.js
deleted file mode 100644 (file)
index b46279c..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-var Print=function(t){this.table=t,this.element=!1,this.manualBlock=!1};Print.prototype.initialize=function(){window.addEventListener("beforeprint",this.replaceTable.bind(this)),window.addEventListener("afterprint",this.cleanup.bind(this))},Print.prototype.replaceTable=function(){this.manualBlock||(this.element=document.createElement("div"),this.element.classList.add("tabulator-print-table"),this.element.appendChild(this.table.modules.export.genereateTable(this.table.options.printConfig,this.table.options.printStyled,this.table.options.printRowRange,"print")),this.table.element.style.display="none",this.table.element.parentNode.insertBefore(this.element,this.table.element))},Print.prototype.cleanup=function(){document.body.classList.remove("tabulator-print-fullscreen-hide"),this.element&&this.element.parentNode&&(this.element.parentNode.removeChild(this.element),this.table.element.style.display="")},Print.prototype.printFullscreen=function(t,e,i){var n,l,o=window.scrollX,a=window.scrollY,s=document.createElement("div"),r=document.createElement("div"),p=this.table.modules.export.genereateTable(void 0!==i?i:this.table.options.printConfig,void 0!==e?e:this.table.options.printStyled,t,"print");this.manualBlock=!0,this.element=document.createElement("div"),this.element.classList.add("tabulator-print-fullscreen"),this.table.options.printHeader&&(s.classList.add("tabulator-print-header"),n="function"==typeof this.table.options.printHeader?this.table.options.printHeader.call(this.table):this.table.options.printHeader,"string"==typeof n?s.innerHTML=n:s.appendChild(n),this.element.appendChild(s)),this.element.appendChild(p),this.table.options.printFooter&&(r.classList.add("tabulator-print-footer"),l="function"==typeof this.table.options.printFooter?this.table.options.printFooter.call(this.table):this.table.options.printFooter,"string"==typeof l?r.innerHTML=l:r.appendChild(l),this.element.appendChild(r)),document.body.classList.add("tabulator-print-fullscreen-hide"),document.body.appendChild(this.element),this.table.options.printFormatter&&this.table.options.printFormatter(this.element,p),window.print(),this.cleanup(),window.scrollTo(o,a),this.manualBlock=!1},Tabulator.prototype.registerModule("print",Print);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/reactive_data.js b/app/static/vendors/tabulator/js/modules/reactive_data.js
deleted file mode 100644 (file)
index eb73971..0000000
+++ /dev/null
@@ -1,235 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-
-var ReactiveData = function ReactiveData(table) {
-       this.table = table; //hold Tabulator object
-       this.data = false;
-       this.blocked = false; //block reactivity while performing update
-       this.origFuncs = {}; // hold original data array functions to allow replacement after data is done with
-       this.currentVersion = 0;
-};
-
-ReactiveData.prototype.watchData = function (data) {
-       var self = this,
-           pushFunc,
-           version;
-
-       this.currentVersion++;
-
-       version = this.currentVersion;
-
-       self.unwatchData();
-
-       self.data = data;
-
-       //override array push function
-       self.origFuncs.push = data.push;
-
-       Object.defineProperty(self.data, "push", {
-               enumerable: false,
-               configurable: true,
-               value: function value() {
-                       var args = Array.from(arguments);
-
-                       if (!self.blocked && version === self.currentVersion) {
-                               args.forEach(function (arg) {
-                                       self.table.rowManager.addRowActual(arg, false);
-                               });
-                       }
-
-                       return self.origFuncs.push.apply(data, arguments);
-               }
-       });
-
-       //override array unshift function
-       self.origFuncs.unshift = data.unshift;
-
-       Object.defineProperty(self.data, "unshift", {
-               enumerable: false,
-               configurable: true,
-               value: function value() {
-                       var args = Array.from(arguments);
-
-                       if (!self.blocked && version === self.currentVersion) {
-                               args.forEach(function (arg) {
-                                       self.table.rowManager.addRowActual(arg, true);
-                               });
-                       }
-
-                       return self.origFuncs.unshift.apply(data, arguments);
-               }
-       });
-
-       //override array shift function
-       self.origFuncs.shift = data.shift;
-
-       Object.defineProperty(self.data, "shift", {
-               enumerable: false,
-               configurable: true,
-               value: function value() {
-                       var row;
-
-                       if (!self.blocked && version === self.currentVersion) {
-                               if (self.data.length) {
-                                       row = self.table.rowManager.getRowFromDataObject(self.data[0]);
-
-                                       if (row) {
-                                               row.deleteActual();
-                                       }
-                               }
-                       }
-
-                       return self.origFuncs.shift.call(data);
-               }
-       });
-
-       //override array pop function
-       self.origFuncs.pop = data.pop;
-
-       Object.defineProperty(self.data, "pop", {
-               enumerable: false,
-               configurable: true,
-               value: function value() {
-                       var row;
-                       if (!self.blocked && version === self.currentVersion) {
-                               if (self.data.length) {
-                                       row = self.table.rowManager.getRowFromDataObject(self.data[self.data.length - 1]);
-
-                                       if (row) {
-                                               row.deleteActual();
-                                       }
-                               }
-                       }
-                       return self.origFuncs.pop.call(data);
-               }
-       });
-
-       //override array splice function
-       self.origFuncs.splice = data.splice;
-
-       Object.defineProperty(self.data, "splice", {
-               enumerable: false,
-               configurable: true,
-               value: function value() {
-                       var args = Array.from(arguments),
-                           start = args[0] < 0 ? data.length + args[0] : args[0],
-                           end = args[1],
-                           newRows = args[2] ? args.slice(2) : false,
-                           startRow;
-
-                       if (!self.blocked && version === self.currentVersion) {
-
-                               //add new rows
-                               if (newRows) {
-                                       startRow = data[start] ? self.table.rowManager.getRowFromDataObject(data[start]) : false;
-
-                                       if (startRow) {
-                                               newRows.forEach(function (rowData) {
-                                                       self.table.rowManager.addRowActual(rowData, true, startRow, true);
-                                               });
-                                       } else {
-                                               newRows = newRows.slice().reverse();
-
-                                               newRows.forEach(function (rowData) {
-                                                       self.table.rowManager.addRowActual(rowData, true, false, true);
-                                               });
-                                       }
-                               }
-
-                               //delete removed rows
-                               if (end !== 0) {
-                                       var oldRows = data.slice(start, typeof args[1] === "undefined" ? args[1] : start + end);
-
-                                       oldRows.forEach(function (rowData, i) {
-                                               var row = self.table.rowManager.getRowFromDataObject(rowData);
-
-                                               if (row) {
-                                                       row.deleteActual(i !== oldRows.length - 1);
-                                               }
-                                       });
-                               }
-
-                               if (newRows || end !== 0) {
-                                       self.table.rowManager.reRenderInPosition();
-                               }
-                       }
-
-                       return self.origFuncs.splice.apply(data, arguments);
-               }
-       });
-};
-
-ReactiveData.prototype.unwatchData = function () {
-       if (this.data !== false) {
-               for (var key in this.origFuncs) {
-                       Object.defineProperty(this.data, key, {
-                               enumerable: true,
-                               configurable: true,
-                               writable: true,
-                               value: this.origFuncs.key
-                       });
-               }
-       }
-};
-
-ReactiveData.prototype.watchRow = function (row) {
-       var self = this,
-           data = row.getData();
-
-       this.blocked = true;
-
-       for (var key in data) {
-               this.watchKey(row, data, key);
-       }
-
-       this.blocked = false;
-};
-
-ReactiveData.prototype.watchKey = function (row, data, key) {
-       var self = this,
-           props = Object.getOwnPropertyDescriptor(data, key),
-           value = data[key],
-           version = this.currentVersion;
-
-       Object.defineProperty(data, key, {
-               set: function set(newValue) {
-                       value = newValue;
-                       if (!self.blocked && version === self.currentVersion) {
-                               var update = {};
-                               update[key] = newValue;
-                               row.updateData(update);
-                       }
-
-                       if (props.set) {
-                               props.set(newValue);
-                       }
-               },
-               get: function get() {
-
-                       if (props.get) {
-                               props.get();
-                       }
-
-                       return value;
-               }
-       });
-};
-
-ReactiveData.prototype.unwatchRow = function (row) {
-       var data = row.getData();
-
-       for (var key in data) {
-               Object.defineProperty(data, key, {
-                       value: data[key]
-               });
-       }
-};
-
-ReactiveData.prototype.block = function () {
-       this.blocked = true;
-};
-
-ReactiveData.prototype.unblock = function () {
-       this.blocked = false;
-};
-
-Tabulator.prototype.registerModule("reactiveData", ReactiveData);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/reactive_data.min.js b/app/static/vendors/tabulator/js/modules/reactive_data.min.js
deleted file mode 100644 (file)
index c5dc047..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-var ReactiveData=function(e){this.table=e,this.data=!1,this.blocked=!1,this.origFuncs={},this.currentVersion=0};ReactiveData.prototype.watchData=function(e){var t,a=this;this.currentVersion++,t=this.currentVersion,a.unwatchData(),a.data=e,a.origFuncs.push=e.push,Object.defineProperty(a.data,"push",{enumerable:!1,configurable:!0,value:function(){var r=Array.from(arguments);return a.blocked||t!==a.currentVersion||r.forEach(function(e){a.table.rowManager.addRowActual(e,!1)}),a.origFuncs.push.apply(e,arguments)}}),a.origFuncs.unshift=e.unshift,Object.defineProperty(a.data,"unshift",{enumerable:!1,configurable:!0,value:function(){var r=Array.from(arguments);return a.blocked||t!==a.currentVersion||r.forEach(function(e){a.table.rowManager.addRowActual(e,!0)}),a.origFuncs.unshift.apply(e,arguments)}}),a.origFuncs.shift=e.shift,Object.defineProperty(a.data,"shift",{enumerable:!1,configurable:!0,value:function(){var r;return a.blocked||t!==a.currentVersion||a.data.length&&(r=a.table.rowManager.getRowFromDataObject(a.data[0]))&&r.deleteActual(),a.origFuncs.shift.call(e)}}),a.origFuncs.pop=e.pop,Object.defineProperty(a.data,"pop",{enumerable:!1,configurable:!0,value:function(){var r;return a.blocked||t!==a.currentVersion||a.data.length&&(r=a.table.rowManager.getRowFromDataObject(a.data[a.data.length-1]))&&r.deleteActual(),a.origFuncs.pop.call(e)}}),a.origFuncs.splice=e.splice,Object.defineProperty(a.data,"splice",{enumerable:!1,configurable:!0,value:function(){var r,o=Array.from(arguments),n=o[0]<0?e.length+o[0]:o[0],c=o[1],i=!!o[2]&&o.slice(2);if(!a.blocked&&t===a.currentVersion){if(i&&(r=!!e[n]&&a.table.rowManager.getRowFromDataObject(e[n]),r?i.forEach(function(e){a.table.rowManager.addRowActual(e,!0,r,!0)}):(i=i.slice().reverse(),i.forEach(function(e){a.table.rowManager.addRowActual(e,!0,!1,!0)}))),0!==c){var u=e.slice(n,void 0===o[1]?o[1]:n+c);u.forEach(function(e,t){var r=a.table.rowManager.getRowFromDataObject(e);r&&r.deleteActual(t!==u.length-1)})}(i||0!==c)&&a.table.rowManager.reRenderInPosition()}return a.origFuncs.splice.apply(e,arguments)}})},ReactiveData.prototype.unwatchData=function(){if(!1!==this.data)for(var e in this.origFuncs)Object.defineProperty(this.data,e,{enumerable:!0,configurable:!0,writable:!0,value:this.origFuncs.key})},ReactiveData.prototype.watchRow=function(e){var t=e.getData();this.blocked=!0;for(var a in t)this.watchKey(e,t,a);this.blocked=!1},ReactiveData.prototype.watchKey=function(e,t,a){var r=this,o=Object.getOwnPropertyDescriptor(t,a),n=t[a],c=this.currentVersion;Object.defineProperty(t,a,{set:function(t){if(n=t,!r.blocked&&c===r.currentVersion){var i={};i[a]=t,e.updateData(i)}o.set&&o.set(t)},get:function(){return o.get&&o.get(),n}})},ReactiveData.prototype.unwatchRow=function(e){var t=e.getData();for(var a in t)Object.defineProperty(t,a,{value:t[a]})},ReactiveData.prototype.block=function(){this.blocked=!0},ReactiveData.prototype.unblock=function(){this.blocked=!1},Tabulator.prototype.registerModule("reactiveData",ReactiveData);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/resize_columns.js b/app/static/vendors/tabulator/js/modules/resize_columns.js
deleted file mode 100644 (file)
index 753c02b..0000000
+++ /dev/null
@@ -1,163 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-
-var ResizeColumns = function ResizeColumns(table) {
-       this.table = table; //hold Tabulator object
-       this.startColumn = false;
-       this.startX = false;
-       this.startWidth = false;
-       this.handle = null;
-       this.prevHandle = null;
-};
-
-ResizeColumns.prototype.initializeColumn = function (type, column, element) {
-       var self = this,
-           variableHeight = false,
-           mode = this.table.options.resizableColumns;
-
-       //set column resize mode
-       if (type === "header") {
-               variableHeight = column.definition.formatter == "textarea" || column.definition.variableHeight;
-               column.modules.resize = { variableHeight: variableHeight };
-       }
-
-       if (mode === true || mode == type) {
-
-               var handle = document.createElement('div');
-               handle.className = "tabulator-col-resize-handle";
-
-               var prevHandle = document.createElement('div');
-               prevHandle.className = "tabulator-col-resize-handle prev";
-
-               handle.addEventListener("click", function (e) {
-                       e.stopPropagation();
-               });
-
-               var handleDown = function handleDown(e) {
-                       var nearestColumn = column.getLastColumn();
-
-                       if (nearestColumn && self._checkResizability(nearestColumn)) {
-                               self.startColumn = column;
-                               self._mouseDown(e, nearestColumn, handle);
-                       }
-               };
-
-               handle.addEventListener("mousedown", handleDown);
-               handle.addEventListener("touchstart", handleDown, { passive: true });
-
-               //reszie column on  double click
-               handle.addEventListener("dblclick", function (e) {
-                       var col = column.getLastColumn();
-
-                       if (col && self._checkResizability(col)) {
-                               e.stopPropagation();
-                               col.reinitializeWidth(true);
-                       }
-               });
-
-               prevHandle.addEventListener("click", function (e) {
-                       e.stopPropagation();
-               });
-
-               var prevHandleDown = function prevHandleDown(e) {
-                       var nearestColumn, colIndex, prevColumn;
-
-                       nearestColumn = column.getFirstColumn();
-
-                       if (nearestColumn) {
-                               colIndex = self.table.columnManager.findColumnIndex(nearestColumn);
-                               prevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;
-
-                               if (prevColumn && self._checkResizability(prevColumn)) {
-                                       self.startColumn = column;
-                                       self._mouseDown(e, prevColumn, prevHandle);
-                               }
-                       }
-               };
-
-               prevHandle.addEventListener("mousedown", prevHandleDown);
-               prevHandle.addEventListener("touchstart", prevHandleDown, { passive: true });
-
-               //resize column on double click
-               prevHandle.addEventListener("dblclick", function (e) {
-                       var nearestColumn, colIndex, prevColumn;
-
-                       nearestColumn = column.getFirstColumn();
-
-                       if (nearestColumn) {
-                               colIndex = self.table.columnManager.findColumnIndex(nearestColumn);
-                               prevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;
-
-                               if (prevColumn && self._checkResizability(prevColumn)) {
-                                       e.stopPropagation();
-                                       prevColumn.reinitializeWidth(true);
-                               }
-                       }
-               });
-
-               element.appendChild(handle);
-               element.appendChild(prevHandle);
-       }
-};
-
-ResizeColumns.prototype._checkResizability = function (column) {
-       return typeof column.definition.resizable != "undefined" ? column.definition.resizable : this.table.options.resizableColumns;
-};
-
-ResizeColumns.prototype._mouseDown = function (e, column, handle) {
-       var self = this;
-
-       self.table.element.classList.add("tabulator-block-select");
-
-       function mouseMove(e) {
-               // self.table.columnManager.tempScrollBlock();
-
-               column.setWidth(self.startWidth + ((typeof e.screenX === "undefined" ? e.touches[0].screenX : e.screenX) - self.startX));
-
-               if (!self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight) {
-                       column.checkCellHeights();
-               }
-       }
-
-       function mouseUp(e) {
-
-               //block editor from taking action while resizing is taking place
-               if (self.startColumn.modules.edit) {
-                       self.startColumn.modules.edit.blocked = false;
-               }
-
-               if (self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight) {
-                       column.checkCellHeights();
-               }
-
-               document.body.removeEventListener("mouseup", mouseUp);
-               document.body.removeEventListener("mousemove", mouseMove);
-
-               handle.removeEventListener("touchmove", mouseMove);
-               handle.removeEventListener("touchend", mouseUp);
-
-               self.table.element.classList.remove("tabulator-block-select");
-
-               if (self.table.options.persistence && self.table.modExists("persistence", true) && self.table.modules.persistence.config.columns) {
-                       self.table.modules.persistence.save("columns");
-               }
-
-               self.table.options.columnResized.call(self.table, column.getComponent());
-       }
-
-       e.stopPropagation(); //prevent resize from interfereing with movable columns
-
-       //block editor from taking action while resizing is taking place
-       if (self.startColumn.modules.edit) {
-               self.startColumn.modules.edit.blocked = true;
-       }
-
-       self.startX = typeof e.screenX === "undefined" ? e.touches[0].screenX : e.screenX;
-       self.startWidth = column.getWidth();
-
-       document.body.addEventListener("mousemove", mouseMove);
-       document.body.addEventListener("mouseup", mouseUp);
-       handle.addEventListener("touchmove", mouseMove, { passive: true });
-       handle.addEventListener("touchend", mouseUp);
-};
-
-Tabulator.prototype.registerModule("resizeColumns", ResizeColumns);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/resize_columns.min.js b/app/static/vendors/tabulator/js/modules/resize_columns.min.js
deleted file mode 100644 (file)
index 7ae0e38..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-var ResizeColumns=function(e){this.table=e,this.startColumn=!1,this.startX=!1,this.startWidth=!1,this.handle=null,this.prevHandle=null};ResizeColumns.prototype.initializeColumn=function(e,t,n){var o=this,i=!1,s=this.table.options.resizableColumns;if("header"===e&&(i="textarea"==t.definition.formatter||t.definition.variableHeight,t.modules.resize={variableHeight:i}),!0===s||s==e){var a=document.createElement("div");a.className="tabulator-col-resize-handle";var l=document.createElement("div");l.className="tabulator-col-resize-handle prev",a.addEventListener("click",function(e){e.stopPropagation()});var r=function(e){var n=t.getLastColumn();n&&o._checkResizability(n)&&(o.startColumn=t,o._mouseDown(e,n,a))};a.addEventListener("mousedown",r),a.addEventListener("touchstart",r,{passive:!0}),a.addEventListener("dblclick",function(e){var n=t.getLastColumn();n&&o._checkResizability(n)&&(e.stopPropagation(),n.reinitializeWidth(!0))}),l.addEventListener("click",function(e){e.stopPropagation()});var d=function(e){var n,i,s;(n=t.getFirstColumn())&&(i=o.table.columnManager.findColumnIndex(n),(s=i>0&&o.table.columnManager.getColumnByIndex(i-1))&&o._checkResizability(s)&&(o.startColumn=t,o._mouseDown(e,s,l)))};l.addEventListener("mousedown",d),l.addEventListener("touchstart",d,{passive:!0}),l.addEventListener("dblclick",function(e){var n,i,s;(n=t.getFirstColumn())&&(i=o.table.columnManager.findColumnIndex(n),(s=i>0&&o.table.columnManager.getColumnByIndex(i-1))&&o._checkResizability(s)&&(e.stopPropagation(),s.reinitializeWidth(!0)))}),n.appendChild(a),n.appendChild(l)}},ResizeColumns.prototype._checkResizability=function(e){return void 0!==e.definition.resizable?e.definition.resizable:this.table.options.resizableColumns},ResizeColumns.prototype._mouseDown=function(e,t,n){function o(e){t.setWidth(s.startWidth+((void 0===e.screenX?e.touches[0].screenX:e.screenX)-s.startX)),!s.table.browserSlow&&t.modules.resize&&t.modules.resize.variableHeight&&t.checkCellHeights()}function i(e){s.startColumn.modules.edit&&(s.startColumn.modules.edit.blocked=!1),s.table.browserSlow&&t.modules.resize&&t.modules.resize.variableHeight&&t.checkCellHeights(),document.body.removeEventListener("mouseup",i),document.body.removeEventListener("mousemove",o),n.removeEventListener("touchmove",o),n.removeEventListener("touchend",i),s.table.element.classList.remove("tabulator-block-select"),s.table.options.persistence&&s.table.modExists("persistence",!0)&&s.table.modules.persistence.config.columns&&s.table.modules.persistence.save("columns"),s.table.options.columnResized.call(s.table,t.getComponent())}var s=this;s.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),s.startColumn.modules.edit&&(s.startColumn.modules.edit.blocked=!0),s.startX=void 0===e.screenX?e.touches[0].screenX:e.screenX,s.startWidth=t.getWidth(),document.body.addEventListener("mousemove",o),document.body.addEventListener("mouseup",i),n.addEventListener("touchmove",o,{passive:!0}),n.addEventListener("touchend",i)},Tabulator.prototype.registerModule("resizeColumns",ResizeColumns);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/resize_rows.js b/app/static/vendors/tabulator/js/modules/resize_rows.js
deleted file mode 100644 (file)
index 8d39fcd..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-
-var ResizeRows = function ResizeRows(table) {
-       this.table = table; //hold Tabulator object
-       this.startColumn = false;
-       this.startY = false;
-       this.startHeight = false;
-       this.handle = null;
-       this.prevHandle = null;
-};
-
-ResizeRows.prototype.initializeRow = function (row) {
-       var self = this,
-           rowEl = row.getElement();
-
-       var handle = document.createElement('div');
-       handle.className = "tabulator-row-resize-handle";
-
-       var prevHandle = document.createElement('div');
-       prevHandle.className = "tabulator-row-resize-handle prev";
-
-       handle.addEventListener("click", function (e) {
-               e.stopPropagation();
-       });
-
-       var handleDown = function handleDown(e) {
-               self.startRow = row;
-               self._mouseDown(e, row, handle);
-       };
-
-       handle.addEventListener("mousedown", handleDown);
-       handle.addEventListener("touchstart", handleDown, { passive: true });
-
-       prevHandle.addEventListener("click", function (e) {
-               e.stopPropagation();
-       });
-
-       var prevHandleDown = function prevHandleDown(e) {
-               var prevRow = self.table.rowManager.prevDisplayRow(row);
-
-               if (prevRow) {
-                       self.startRow = prevRow;
-                       self._mouseDown(e, prevRow, prevHandle);
-               }
-       };
-
-       prevHandle.addEventListener("mousedown", prevHandleDown);
-       prevHandle.addEventListener("touchstart", prevHandleDown, { passive: true });
-
-       rowEl.appendChild(handle);
-       rowEl.appendChild(prevHandle);
-};
-
-ResizeRows.prototype._mouseDown = function (e, row, handle) {
-       var self = this;
-
-       self.table.element.classList.add("tabulator-block-select");
-
-       function mouseMove(e) {
-               row.setHeight(self.startHeight + ((typeof e.screenY === "undefined" ? e.touches[0].screenY : e.screenY) - self.startY));
-       }
-
-       function mouseUp(e) {
-
-               // //block editor from taking action while resizing is taking place
-               // if(self.startColumn.modules.edit){
-               //      self.startColumn.modules.edit.blocked = false;
-               // }
-
-               document.body.removeEventListener("mouseup", mouseMove);
-               document.body.removeEventListener("mousemove", mouseMove);
-
-               handle.removeEventListener("touchmove", mouseMove);
-               handle.removeEventListener("touchend", mouseUp);
-
-               self.table.element.classList.remove("tabulator-block-select");
-
-               self.table.options.rowResized.call(this.table, row.getComponent());
-       }
-
-       e.stopPropagation(); //prevent resize from interfereing with movable columns
-
-       //block editor from taking action while resizing is taking place
-       // if(self.startColumn.modules.edit){
-       //      self.startColumn.modules.edit.blocked = true;
-       // }
-
-       self.startY = typeof e.screenY === "undefined" ? e.touches[0].screenY : e.screenY;
-       self.startHeight = row.getHeight();
-
-       document.body.addEventListener("mousemove", mouseMove);
-       document.body.addEventListener("mouseup", mouseUp);
-
-       handle.addEventListener("touchmove", mouseMove, { passive: true });
-       handle.addEventListener("touchend", mouseUp);
-};
-
-Tabulator.prototype.registerModule("resizeRows", ResizeRows);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/resize_rows.min.js b/app/static/vendors/tabulator/js/modules/resize_rows.min.js
deleted file mode 100644 (file)
index fb0db00..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-var ResizeRows=function(e){this.table=e,this.startColumn=!1,this.startY=!1,this.startHeight=!1,this.handle=null,this.prevHandle=null};ResizeRows.prototype.initializeRow=function(e){var t=this,o=e.getElement(),s=document.createElement("div");s.className="tabulator-row-resize-handle";var n=document.createElement("div");n.className="tabulator-row-resize-handle prev",s.addEventListener("click",function(e){e.stopPropagation()});var a=function(o){t.startRow=e,t._mouseDown(o,e,s)};s.addEventListener("mousedown",a),s.addEventListener("touchstart",a,{passive:!0}),n.addEventListener("click",function(e){e.stopPropagation()});var r=function(o){var s=t.table.rowManager.prevDisplayRow(e);s&&(t.startRow=s,t._mouseDown(o,s,n))};n.addEventListener("mousedown",r),n.addEventListener("touchstart",r,{passive:!0}),o.appendChild(s),o.appendChild(n)},ResizeRows.prototype._mouseDown=function(e,t,o){function s(e){t.setHeight(a.startHeight+((void 0===e.screenY?e.touches[0].screenY:e.screenY)-a.startY))}function n(e){document.body.removeEventListener("mouseup",s),document.body.removeEventListener("mousemove",s),o.removeEventListener("touchmove",s),o.removeEventListener("touchend",n),a.table.element.classList.remove("tabulator-block-select"),a.table.options.rowResized.call(this.table,t.getComponent())}var a=this;a.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),a.startY=void 0===e.screenY?e.touches[0].screenY:e.screenY,a.startHeight=t.getHeight(),document.body.addEventListener("mousemove",s),document.body.addEventListener("mouseup",n),o.addEventListener("touchmove",s,{passive:!0}),o.addEventListener("touchend",n)},Tabulator.prototype.registerModule("resizeRows",ResizeRows);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/resize_table.js b/app/static/vendors/tabulator/js/modules/resize_table.js
deleted file mode 100644 (file)
index 1286641..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-
-var ResizeTable = function ResizeTable(table) {
-       this.table = table; //hold Tabulator object
-       this.binding = false;
-       this.observer = false;
-       this.containerObserver = false;
-
-       this.tableHeight = 0;
-       this.tableWidth = 0;
-       this.containerHeight = 0;
-       this.containerWidth = 0;
-
-       this.autoResize = false;
-};
-
-ResizeTable.prototype.initialize = function (row) {
-       var _this = this;
-
-       var table = this.table,
-           tableStyle;
-
-       this.tableHeight = table.element.clientHeight;
-       this.tableWidth = table.element.clientWidth;
-
-       if (table.element.parentNode) {
-               this.containerHeight = table.element.parentNode.clientHeight;
-               this.containerWidth = table.element.parentNode.clientWidth;
-       }
-
-       if (typeof ResizeObserver !== "undefined" && table.rowManager.getRenderMode() === "virtual") {
-
-               this.autoResize = true;
-
-               this.observer = new ResizeObserver(function (entry) {
-                       if (!table.browserMobile || table.browserMobile && !table.modules.edit.currentCell) {
-
-                               var nodeHeight = Math.floor(entry[0].contentRect.height);
-                               var nodeWidth = Math.floor(entry[0].contentRect.width);
-
-                               if (_this.tableHeight != nodeHeight || _this.tableWidth != nodeWidth) {
-                                       _this.tableHeight = nodeHeight;
-                                       _this.tableWidth = nodeWidth;
-
-                                       if (table.element.parentNode) {
-                                               _this.containerHeight = table.element.parentNode.clientHeight;
-                                               _this.containerWidth = table.element.parentNode.clientWidth;
-                                       }
-
-                                       table.redraw();
-                               }
-                       }
-               });
-
-               this.observer.observe(table.element);
-
-               tableStyle = window.getComputedStyle(table.element);
-
-               if (this.table.element.parentNode && !this.table.rowManager.fixedHeight && (tableStyle.getPropertyValue("max-height") || tableStyle.getPropertyValue("min-height"))) {
-
-                       this.containerObserver = new ResizeObserver(function (entry) {
-                               if (!table.browserMobile || table.browserMobile && !table.modules.edit.currentCell) {
-
-                                       var nodeHeight = Math.floor(entry[0].contentRect.height);
-                                       var nodeWidth = Math.floor(entry[0].contentRect.width);
-
-                                       if (_this.containerHeight != nodeHeight || _this.containerWidth != nodeWidth) {
-                                               _this.containerHeight = nodeHeight;
-                                               _this.containerWidth = nodeWidth;
-                                               _this.tableHeight = table.element.clientHeight;
-                                               _this.tableWidth = table.element.clientWidth;
-
-                                               table.redraw();
-                                       }
-
-                                       table.redraw();
-                               }
-                       });
-
-                       this.containerObserver.observe(this.table.element.parentNode);
-               }
-       } else {
-               this.binding = function () {
-                       if (!table.browserMobile || table.browserMobile && !table.modules.edit.currentCell) {
-                               table.redraw();
-                       }
-               };
-
-               window.addEventListener("resize", this.binding);
-       }
-};
-
-ResizeTable.prototype.clearBindings = function (row) {
-       if (this.binding) {
-               window.removeEventListener("resize", this.binding);
-       }
-
-       if (this.observer) {
-               this.observer.unobserve(this.table.element);
-       }
-
-       if (this.containerObserver) {
-               this.containerObserver.unobserve(this.table.element.parentNode);
-       }
-};
-
-Tabulator.prototype.registerModule("resizeTable", ResizeTable);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/resize_table.min.js b/app/static/vendors/tabulator/js/modules/resize_table.min.js
deleted file mode 100644 (file)
index e992d75..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-var ResizeTable=function(e){this.table=e,this.binding=!1,this.observer=!1,this.containerObserver=!1,this.tableHeight=0,this.tableWidth=0,this.containerHeight=0,this.containerWidth=0,this.autoResize=!1};ResizeTable.prototype.initialize=function(e){var t,i=this,n=this.table;this.tableHeight=n.element.clientHeight,this.tableWidth=n.element.clientWidth,n.element.parentNode&&(this.containerHeight=n.element.parentNode.clientHeight,this.containerWidth=n.element.parentNode.clientWidth),"undefined"!=typeof ResizeObserver&&"virtual"===n.rowManager.getRenderMode()?(this.autoResize=!0,this.observer=new ResizeObserver(function(e){if(!n.browserMobile||n.browserMobile&&!n.modules.edit.currentCell){var t=Math.floor(e[0].contentRect.height),r=Math.floor(e[0].contentRect.width);i.tableHeight==t&&i.tableWidth==r||(i.tableHeight=t,i.tableWidth=r,n.element.parentNode&&(i.containerHeight=n.element.parentNode.clientHeight,i.containerWidth=n.element.parentNode.clientWidth),n.redraw())}}),this.observer.observe(n.element),t=window.getComputedStyle(n.element),this.table.element.parentNode&&!this.table.rowManager.fixedHeight&&(t.getPropertyValue("max-height")||t.getPropertyValue("min-height"))&&(this.containerObserver=new ResizeObserver(function(e){if(!n.browserMobile||n.browserMobile&&!n.modules.edit.currentCell){var t=Math.floor(e[0].contentRect.height),r=Math.floor(e[0].contentRect.width);i.containerHeight==t&&i.containerWidth==r||(i.containerHeight=t,i.containerWidth=r,i.tableHeight=n.element.clientHeight,i.tableWidth=n.element.clientWidth,n.redraw()),n.redraw()}}),this.containerObserver.observe(this.table.element.parentNode))):(this.binding=function(){(!n.browserMobile||n.browserMobile&&!n.modules.edit.currentCell)&&n.redraw()},window.addEventListener("resize",this.binding))},ResizeTable.prototype.clearBindings=function(e){this.binding&&window.removeEventListener("resize",this.binding),this.observer&&this.observer.unobserve(this.table.element),this.containerObserver&&this.containerObserver.unobserve(this.table.element.parentNode)},Tabulator.prototype.registerModule("resizeTable",ResizeTable);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/responsive_layout.js b/app/static/vendors/tabulator/js/modules/responsive_layout.js
deleted file mode 100644 (file)
index 329f2a6..0000000
+++ /dev/null
@@ -1,301 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-
-var ResponsiveLayout = function ResponsiveLayout(table) {
-       this.table = table; //hold Tabulator object
-       this.columns = [];
-       this.hiddenColumns = [];
-       this.mode = "";
-       this.index = 0;
-       this.collapseFormatter = [];
-       this.collapseStartOpen = true;
-       this.collapseHandleColumn = false;
-};
-
-//generate resposive columns list
-ResponsiveLayout.prototype.initialize = function () {
-       var self = this,
-           columns = [];
-
-       this.mode = this.table.options.responsiveLayout;
-       this.collapseFormatter = this.table.options.responsiveLayoutCollapseFormatter || this.formatCollapsedData;
-       this.collapseStartOpen = this.table.options.responsiveLayoutCollapseStartOpen;
-       this.hiddenColumns = [];
-
-       //detemine level of responsivity for each column
-       this.table.columnManager.columnsByIndex.forEach(function (column, i) {
-               if (column.modules.responsive) {
-                       if (column.modules.responsive.order && column.modules.responsive.visible) {
-                               column.modules.responsive.index = i;
-                               columns.push(column);
-
-                               if (!column.visible && self.mode === "collapse") {
-                                       self.hiddenColumns.push(column);
-                               }
-                       }
-               }
-       });
-
-       //sort list by responsivity
-       columns = columns.reverse();
-       columns = columns.sort(function (a, b) {
-               var diff = b.modules.responsive.order - a.modules.responsive.order;
-               return diff || b.modules.responsive.index - a.modules.responsive.index;
-       });
-
-       this.columns = columns;
-
-       if (this.mode === "collapse") {
-               this.generateCollapsedContent();
-       }
-
-       //assign collapse column
-       for (var _iterator = this.table.columnManager.columnsByIndex, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
-               var _ref;
-
-               if (_isArray) {
-                       if (_i >= _iterator.length) break;
-                       _ref = _iterator[_i++];
-               } else {
-                       _i = _iterator.next();
-                       if (_i.done) break;
-                       _ref = _i.value;
-               }
-
-               var col = _ref;
-
-               if (col.definition.formatter == "responsiveCollapse") {
-                       this.collapseHandleColumn = col;
-                       break;
-               }
-       }
-
-       if (this.collapseHandleColumn) {
-               if (this.hiddenColumns.length) {
-                       this.collapseHandleColumn.show();
-               } else {
-                       this.collapseHandleColumn.hide();
-               }
-       }
-};
-
-//define layout information
-ResponsiveLayout.prototype.initializeColumn = function (column) {
-       var def = column.getDefinition();
-
-       column.modules.responsive = { order: typeof def.responsive === "undefined" ? 1 : def.responsive, visible: def.visible === false ? false : true };
-};
-
-ResponsiveLayout.prototype.initializeRow = function (row) {
-       var el;
-
-       if (row.type !== "calc") {
-               el = document.createElement("div");
-               el.classList.add("tabulator-responsive-collapse");
-
-               row.modules.responsiveLayout = {
-                       element: el,
-                       open: this.collapseStartOpen
-               };
-
-               if (!this.collapseStartOpen) {
-                       el.style.display = 'none';
-               }
-       }
-};
-
-ResponsiveLayout.prototype.layoutRow = function (row) {
-       var rowEl = row.getElement();
-
-       if (row.modules.responsiveLayout) {
-               rowEl.appendChild(row.modules.responsiveLayout.element);
-               this.generateCollapsedRowContent(row);
-       }
-};
-
-//update column visibility
-ResponsiveLayout.prototype.updateColumnVisibility = function (column, visible) {
-       var index;
-       if (column.modules.responsive) {
-               column.modules.responsive.visible = visible;
-               this.initialize();
-       }
-};
-
-ResponsiveLayout.prototype.hideColumn = function (column) {
-       var colCount = this.hiddenColumns.length;
-
-       column.hide(false, true);
-
-       if (this.mode === "collapse") {
-               this.hiddenColumns.unshift(column);
-               this.generateCollapsedContent();
-
-               if (this.collapseHandleColumn && !colCount) {
-                       this.collapseHandleColumn.show();
-               }
-       }
-};
-
-ResponsiveLayout.prototype.showColumn = function (column) {
-       var index;
-
-       column.show(false, true);
-       //set column width to prevent calculation loops on uninitialized columns
-       column.setWidth(column.getWidth());
-
-       if (this.mode === "collapse") {
-               index = this.hiddenColumns.indexOf(column);
-
-               if (index > -1) {
-                       this.hiddenColumns.splice(index, 1);
-               }
-
-               this.generateCollapsedContent();
-
-               if (this.collapseHandleColumn && !this.hiddenColumns.length) {
-                       this.collapseHandleColumn.hide();
-               }
-       }
-};
-
-//redraw columns to fit space
-ResponsiveLayout.prototype.update = function () {
-       var self = this,
-           working = true;
-
-       while (working) {
-
-               var width = self.table.modules.layout.getMode() == "fitColumns" ? self.table.columnManager.getFlexBaseWidth() : self.table.columnManager.getWidth();
-
-               var diff = (self.table.options.headerVisible ? self.table.columnManager.element.clientWidth : self.table.element.clientWidth) - width;
-
-               if (diff < 0) {
-                       //table is too wide
-                       var column = self.columns[self.index];
-
-                       if (column) {
-                               self.hideColumn(column);
-                               self.index++;
-                       } else {
-                               working = false;
-                       }
-               } else {
-
-                       //table has spare space
-                       var _column = self.columns[self.index - 1];
-
-                       if (_column) {
-                               if (diff > 0) {
-                                       if (diff >= _column.getWidth()) {
-                                               self.showColumn(_column);
-                                               self.index--;
-                                       } else {
-                                               working = false;
-                                       }
-                               } else {
-                                       working = false;
-                               }
-                       } else {
-                               working = false;
-                       }
-               }
-
-               if (!self.table.rowManager.activeRowsCount) {
-                       self.table.rowManager.renderEmptyScroll();
-               }
-       }
-};
-
-ResponsiveLayout.prototype.generateCollapsedContent = function () {
-       var self = this,
-           rows = this.table.rowManager.getDisplayRows();
-
-       rows.forEach(function (row) {
-               self.generateCollapsedRowContent(row);
-       });
-};
-
-ResponsiveLayout.prototype.generateCollapsedRowContent = function (row) {
-       var el, contents;
-
-       if (row.modules.responsiveLayout) {
-               el = row.modules.responsiveLayout.element;
-
-               while (el.firstChild) {
-                       el.removeChild(el.firstChild);
-               }contents = this.collapseFormatter(this.generateCollapsedRowData(row));
-               if (contents) {
-                       el.appendChild(contents);
-               }
-       }
-};
-
-ResponsiveLayout.prototype.generateCollapsedRowData = function (row) {
-       var self = this,
-           data = row.getData(),
-           output = [],
-           mockCellComponent;
-
-       this.hiddenColumns.forEach(function (column) {
-               var value = column.getFieldValue(data);
-
-               if (column.definition.title && column.field) {
-                       if (column.modules.format && self.table.options.responsiveLayoutCollapseUseFormatters) {
-
-                               mockCellComponent = {
-                                       value: false,
-                                       data: {},
-                                       getValue: function getValue() {
-                                               return value;
-                                       },
-                                       getData: function getData() {
-                                               return data;
-                                       },
-                                       getElement: function getElement() {
-                                               return document.createElement("div");
-                                       },
-                                       getRow: function getRow() {
-                                               return row.getComponent();
-                                       },
-                                       getColumn: function getColumn() {
-                                               return column.getComponent();
-                                       }
-                               };
-
-                               output.push({
-                                       title: column.definition.title,
-                                       value: column.modules.format.formatter.call(self.table.modules.format, mockCellComponent, column.modules.format.params)
-                               });
-                       } else {
-                               output.push({
-                                       title: column.definition.title,
-                                       value: value
-                               });
-                       }
-               }
-       });
-
-       return output;
-};
-
-ResponsiveLayout.prototype.formatCollapsedData = function (data) {
-       var list = document.createElement("table"),
-           listContents = "";
-
-       data.forEach(function (item) {
-               var div = document.createElement("div");
-
-               if (item.value instanceof Node) {
-                       div.appendChild(item.value);
-                       item.value = div.innerHTML;
-               }
-
-               listContents += "<tr><td><strong>" + item.title + "</strong></td><td>" + item.value + "</td></tr>";
-       });
-
-       list.innerHTML = listContents;
-
-       return Object.keys(data).length ? list : "";
-};
-
-Tabulator.prototype.registerModule("responsiveLayout", ResponsiveLayout);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/responsive_layout.min.js b/app/static/vendors/tabulator/js/modules/responsive_layout.min.js
deleted file mode 100644 (file)
index 4ef6538..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-var ResponsiveLayout=function(e){this.table=e,this.columns=[],this.hiddenColumns=[],this.mode="",this.index=0,this.collapseFormatter=[],this.collapseStartOpen=!0,this.collapseHandleColumn=!1};ResponsiveLayout.prototype.initialize=function(){var e=this,t=[];this.mode=this.table.options.responsiveLayout,this.collapseFormatter=this.table.options.responsiveLayoutCollapseFormatter||this.formatCollapsedData,this.collapseStartOpen=this.table.options.responsiveLayoutCollapseStartOpen,this.hiddenColumns=[],this.table.columnManager.columnsByIndex.forEach(function(o,n){o.modules.responsive&&o.modules.responsive.order&&o.modules.responsive.visible&&(o.modules.responsive.index=n,t.push(o),o.visible||"collapse"!==e.mode||e.hiddenColumns.push(o))}),t=t.reverse(),t=t.sort(function(e,t){return t.modules.responsive.order-e.modules.responsive.order||t.modules.responsive.index-e.modules.responsive.index}),this.columns=t,"collapse"===this.mode&&this.generateCollapsedContent();for(var o=this.table.columnManager.columnsByIndex,n=Array.isArray(o),s=0,o=n?o:o[Symbol.iterator]();;){var i;if(n){if(s>=o.length)break;i=o[s++]}else{if(s=o.next(),s.done)break;i=s.value}var l=i;if("responsiveCollapse"==l.definition.formatter){this.collapseHandleColumn=l;break}}this.collapseHandleColumn&&(this.hiddenColumns.length?this.collapseHandleColumn.show():this.collapseHandleColumn.hide())},ResponsiveLayout.prototype.initializeColumn=function(e){var t=e.getDefinition();e.modules.responsive={order:void 0===t.responsive?1:t.responsive,visible:!1!==t.visible}},ResponsiveLayout.prototype.initializeRow=function(e){var t;"calc"!==e.type&&(t=document.createElement("div"),t.classList.add("tabulator-responsive-collapse"),e.modules.responsiveLayout={element:t,open:this.collapseStartOpen},this.collapseStartOpen||(t.style.display="none"))},ResponsiveLayout.prototype.layoutRow=function(e){var t=e.getElement();e.modules.responsiveLayout&&(t.appendChild(e.modules.responsiveLayout.element),this.generateCollapsedRowContent(e))},ResponsiveLayout.prototype.updateColumnVisibility=function(e,t){e.modules.responsive&&(e.modules.responsive.visible=t,this.initialize())},ResponsiveLayout.prototype.hideColumn=function(e){var t=this.hiddenColumns.length;e.hide(!1,!0),"collapse"===this.mode&&(this.hiddenColumns.unshift(e),this.generateCollapsedContent(),this.collapseHandleColumn&&!t&&this.collapseHandleColumn.show())},ResponsiveLayout.prototype.showColumn=function(e){var t;e.show(!1,!0),e.setWidth(e.getWidth()),"collapse"===this.mode&&(t=this.hiddenColumns.indexOf(e),t>-1&&this.hiddenColumns.splice(t,1),this.generateCollapsedContent(),this.collapseHandleColumn&&!this.hiddenColumns.length&&this.collapseHandleColumn.hide())},ResponsiveLayout.prototype.update=function(){for(var e=this,t=!0;t;){var o="fitColumns"==e.table.modules.layout.getMode()?e.table.columnManager.getFlexBaseWidth():e.table.columnManager.getWidth(),n=(e.table.options.headerVisible?e.table.columnManager.element.clientWidth:e.table.element.clientWidth)-o;if(n<0){var s=e.columns[e.index];s?(e.hideColumn(s),e.index++):t=!1}else{var i=e.columns[e.index-1];i&&n>0&&n>=i.getWidth()?(e.showColumn(i),e.index--):t=!1}e.table.rowManager.activeRowsCount||e.table.rowManager.renderEmptyScroll()}},ResponsiveLayout.prototype.generateCollapsedContent=function(){var e=this;this.table.rowManager.getDisplayRows().forEach(function(t){e.generateCollapsedRowContent(t)})},ResponsiveLayout.prototype.generateCollapsedRowContent=function(e){var t,o;if(e.modules.responsiveLayout){for(t=e.modules.responsiveLayout.element;t.firstChild;)t.removeChild(t.firstChild);o=this.collapseFormatter(this.generateCollapsedRowData(e)),o&&t.appendChild(o)}},ResponsiveLayout.prototype.generateCollapsedRowData=function(e){var t,o=this,n=e.getData(),s=[];return this.hiddenColumns.forEach(function(i){var l=i.getFieldValue(n);i.definition.title&&i.field&&(i.modules.format&&o.table.options.responsiveLayoutCollapseUseFormatters?(t={value:!1,data:{},getValue:function(){return l},getData:function(){return n},getElement:function(){return document.createElement("div")},getRow:function(){return e.getComponent()},getColumn:function(){return i.getComponent()}},s.push({title:i.definition.title,value:i.modules.format.formatter.call(o.table.modules.format,t,i.modules.format.params)})):s.push({title:i.definition.title,value:l}))}),s},ResponsiveLayout.prototype.formatCollapsedData=function(e){var t=document.createElement("table"),o="";return e.forEach(function(e){var t=document.createElement("div");e.value instanceof Node&&(t.appendChild(e.value),e.value=t.innerHTML),o+="<tr><td><strong>"+e.title+"</strong></td><td>"+e.value+"</td></tr>"}),t.innerHTML=o,Object.keys(e).length?t:""},Tabulator.prototype.registerModule("responsiveLayout",ResponsiveLayout);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/select_row.js b/app/static/vendors/tabulator/js/modules/select_row.js
deleted file mode 100644 (file)
index 2869429..0000000
+++ /dev/null
@@ -1,417 +0,0 @@
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-
-var SelectRow = function SelectRow(table) {
-       this.table = table; //hold Tabulator object
-       this.selecting = false; //flag selecting in progress
-       this.lastClickedRow = false; //last clicked row
-       this.selectPrev = []; //hold previously selected element for drag drop selection
-       this.selectedRows = []; //hold selected rows
-       this.headerCheckboxElement = null; // hold header select element
-};
-
-SelectRow.prototype.clearSelectionData = function (silent) {
-       this.selecting = false;
-       this.lastClickedRow = false;
-       this.selectPrev = [];
-       this.selectedRows = [];
-
-       if (!silent) {
-               this._rowSelectionChanged();
-       }
-};
-
-SelectRow.prototype.initializeRow = function (row) {
-       var self = this,
-           element = row.getElement();
-
-       // trigger end of row selection
-       var endSelect = function endSelect() {
-
-               setTimeout(function () {
-                       self.selecting = false;
-               }, 50);
-
-               document.body.removeEventListener("mouseup", endSelect);
-       };
-
-       row.modules.select = { selected: false };
-
-       //set row selection class
-       if (self.table.options.selectableCheck.call(this.table, row.getComponent())) {
-               element.classList.add("tabulator-selectable");
-               element.classList.remove("tabulator-unselectable");
-
-               if (self.table.options.selectable && self.table.options.selectable != "highlight") {
-                       if (self.table.options.selectableRangeMode === "click") {
-                               element.addEventListener("click", function (e) {
-                                       if (e.shiftKey) {
-                                               self.table._clearSelection();
-                                               self.lastClickedRow = self.lastClickedRow || row;
-
-                                               var lastClickedRowIdx = self.table.rowManager.getDisplayRowIndex(self.lastClickedRow);
-                                               var rowIdx = self.table.rowManager.getDisplayRowIndex(row);
-
-                                               var fromRowIdx = lastClickedRowIdx <= rowIdx ? lastClickedRowIdx : rowIdx;
-                                               var toRowIdx = lastClickedRowIdx >= rowIdx ? lastClickedRowIdx : rowIdx;
-
-                                               var rows = self.table.rowManager.getDisplayRows().slice(0);
-                                               var toggledRows = rows.splice(fromRowIdx, toRowIdx - fromRowIdx + 1);
-
-                                               if (e.ctrlKey || e.metaKey) {
-                                                       toggledRows.forEach(function (toggledRow) {
-                                                               if (toggledRow !== self.lastClickedRow) {
-
-                                                                       if (self.table.options.selectable !== true && !self.isRowSelected(row)) {
-                                                                               if (self.selectedRows.length < self.table.options.selectable) {
-                                                                                       self.toggleRow(toggledRow);
-                                                                               }
-                                                                       } else {
-                                                                               self.toggleRow(toggledRow);
-                                                                       }
-                                                               }
-                                                       });
-                                                       self.lastClickedRow = row;
-                                               } else {
-                                                       self.deselectRows(undefined, true);
-
-                                                       if (self.table.options.selectable !== true) {
-                                                               if (toggledRows.length > self.table.options.selectable) {
-                                                                       toggledRows = toggledRows.slice(0, self.table.options.selectable);
-                                                               }
-                                                       }
-
-                                                       self.selectRows(toggledRows);
-                                               }
-                                               self.table._clearSelection();
-                                       } else if (e.ctrlKey || e.metaKey) {
-                                               self.toggleRow(row);
-                                               self.lastClickedRow = row;
-                                       } else {
-                                               self.deselectRows(undefined, true);
-                                               self.selectRows(row);
-                                               self.lastClickedRow = row;
-                                       }
-                               });
-                       } else {
-                               element.addEventListener("click", function (e) {
-                                       if (!self.table.modExists("edit") || !self.table.modules.edit.getCurrentCell()) {
-                                               self.table._clearSelection();
-                                       }
-
-                                       if (!self.selecting) {
-                                               self.toggleRow(row);
-                                       }
-                               });
-
-                               element.addEventListener("mousedown", function (e) {
-                                       if (e.shiftKey) {
-                                               self.table._clearSelection();
-
-                                               self.selecting = true;
-
-                                               self.selectPrev = [];
-
-                                               document.body.addEventListener("mouseup", endSelect);
-                                               document.body.addEventListener("keyup", endSelect);
-
-                                               self.toggleRow(row);
-
-                                               return false;
-                                       }
-                               });
-
-                               element.addEventListener("mouseenter", function (e) {
-                                       if (self.selecting) {
-                                               self.table._clearSelection();
-                                               self.toggleRow(row);
-
-                                               if (self.selectPrev[1] == row) {
-                                                       self.toggleRow(self.selectPrev[0]);
-                                               }
-                                       }
-                               });
-
-                               element.addEventListener("mouseout", function (e) {
-                                       if (self.selecting) {
-                                               self.table._clearSelection();
-                                               self.selectPrev.unshift(row);
-                                       }
-                               });
-                       }
-               }
-       } else {
-               element.classList.add("tabulator-unselectable");
-               element.classList.remove("tabulator-selectable");
-       }
-};
-
-//toggle row selection
-SelectRow.prototype.toggleRow = function (row) {
-       if (this.table.options.selectableCheck.call(this.table, row.getComponent())) {
-               if (row.modules.select && row.modules.select.selected) {
-                       this._deselectRow(row);
-               } else {
-                       this._selectRow(row);
-               }
-       }
-};
-
-//select a number of rows
-SelectRow.prototype.selectRows = function (rows) {
-       var _this = this;
-
-       var rowMatch;
-
-       switch (typeof rows === "undefined" ? "undefined" : _typeof(rows)) {
-               case "undefined":
-                       this.table.rowManager.rows.forEach(function (row) {
-                               _this._selectRow(row, true, true);
-                       });
-
-                       this._rowSelectionChanged();
-                       break;
-
-               case "string":
-
-                       rowMatch = this.table.rowManager.findRow(rows);
-
-                       if (rowMatch) {
-                               this._selectRow(rowMatch, true, true);
-                       } else {
-                               this.table.rowManager.getRows(rows).forEach(function (row) {
-                                       _this._selectRow(row, true, true);
-                               });
-                       }
-
-                       this._rowSelectionChanged();
-                       break;
-
-               default:
-                       if (Array.isArray(rows)) {
-                               rows.forEach(function (row) {
-                                       _this._selectRow(row, true, true);
-                               });
-
-                               this._rowSelectionChanged();
-                       } else {
-                               this._selectRow(rows, false, true);
-                       }
-                       break;
-       }
-};
-
-//select an individual row
-SelectRow.prototype._selectRow = function (rowInfo, silent, force) {
-       var index;
-
-       //handle max row count
-       if (!isNaN(this.table.options.selectable) && this.table.options.selectable !== true && !force) {
-               if (this.selectedRows.length >= this.table.options.selectable) {
-                       if (this.table.options.selectableRollingSelection) {
-                               this._deselectRow(this.selectedRows[0]);
-                       } else {
-                               return false;
-                       }
-               }
-       }
-
-       var row = this.table.rowManager.findRow(rowInfo);
-
-       if (row) {
-               if (this.selectedRows.indexOf(row) == -1) {
-                       if (!row.modules.select) {
-                               row.modules.select = {};
-                       }
-
-                       row.modules.select.selected = true;
-                       if (row.modules.select.checkboxEl) {
-                               row.modules.select.checkboxEl.checked = true;
-                       }
-                       row.getElement().classList.add("tabulator-selected");
-
-                       this.selectedRows.push(row);
-
-                       if (this.table.options.dataTreeSelectPropagate) {
-                               this.childRowSelection(row, true);
-                       }
-
-                       if (!silent) {
-                               this.table.options.rowSelected.call(this.table, row.getComponent());
-                       }
-
-                       this._rowSelectionChanged(silent);
-               }
-       } else {
-               if (!silent) {
-                       console.warn("Selection Error - No such row found, ignoring selection:" + rowInfo);
-               }
-       }
-};
-
-SelectRow.prototype.isRowSelected = function (row) {
-       return this.selectedRows.indexOf(row) !== -1;
-};
-
-//deselect a number of rows
-SelectRow.prototype.deselectRows = function (rows, silent) {
-       var self = this,
-           rowCount;
-
-       if (typeof rows == "undefined") {
-
-               rowCount = self.selectedRows.length;
-
-               for (var i = 0; i < rowCount; i++) {
-                       self._deselectRow(self.selectedRows[0], true);
-               }
-
-               self._rowSelectionChanged(silent);
-       } else {
-               if (Array.isArray(rows)) {
-                       rows.forEach(function (row) {
-                               self._deselectRow(row, true);
-                       });
-
-                       self._rowSelectionChanged(silent);
-               } else {
-                       self._deselectRow(rows, silent);
-               }
-       }
-};
-
-//deselect an individual row
-SelectRow.prototype._deselectRow = function (rowInfo, silent) {
-       var self = this,
-           row = self.table.rowManager.findRow(rowInfo),
-           index;
-
-       if (row) {
-               index = self.selectedRows.findIndex(function (selectedRow) {
-                       return selectedRow == row;
-               });
-
-               if (index > -1) {
-
-                       if (!row.modules.select) {
-                               row.modules.select = {};
-                       }
-
-                       row.modules.select.selected = false;
-                       if (row.modules.select.checkboxEl) {
-                               row.modules.select.checkboxEl.checked = false;
-                       }
-                       row.getElement().classList.remove("tabulator-selected");
-                       self.selectedRows.splice(index, 1);
-
-                       if (this.table.options.dataTreeSelectPropagate) {
-                               this.childRowSelection(row, false);
-                       }
-
-                       if (!silent) {
-                               self.table.options.rowDeselected.call(this.table, row.getComponent());
-                       }
-
-                       self._rowSelectionChanged(silent);
-               }
-       } else {
-               if (!silent) {
-                       console.warn("Deselection Error - No such row found, ignoring selection:" + rowInfo);
-               }
-       }
-};
-
-SelectRow.prototype.getSelectedData = function () {
-       var data = [];
-
-       this.selectedRows.forEach(function (row) {
-               data.push(row.getData());
-       });
-
-       return data;
-};
-
-SelectRow.prototype.getSelectedRows = function () {
-
-       var rows = [];
-
-       this.selectedRows.forEach(function (row) {
-               rows.push(row.getComponent());
-       });
-
-       return rows;
-};
-
-SelectRow.prototype._rowSelectionChanged = function (silent) {
-       if (this.headerCheckboxElement) {
-               if (this.selectedRows.length === 0) {
-                       this.headerCheckboxElement.checked = false;
-                       this.headerCheckboxElement.indeterminate = false;
-               } else if (this.table.rowManager.rows.length === this.selectedRows.length) {
-                       this.headerCheckboxElement.checked = true;
-                       this.headerCheckboxElement.indeterminate = false;
-               } else {
-                       this.headerCheckboxElement.indeterminate = true;
-                       this.headerCheckboxElement.checked = false;
-               }
-       }
-
-       if (!silent) {
-               this.table.options.rowSelectionChanged.call(this.table, this.getSelectedData(), this.getSelectedRows());
-       }
-};
-
-SelectRow.prototype.registerRowSelectCheckbox = function (row, element) {
-       if (!row._row.modules.select) {
-               row._row.modules.select = {};
-       }
-
-       row._row.modules.select.checkboxEl = element;
-};
-
-SelectRow.prototype.registerHeaderSelectCheckbox = function (element) {
-       this.headerCheckboxElement = element;
-};
-
-SelectRow.prototype.childRowSelection = function (row, select) {
-       var children = this.table.modules.dataTree.getChildren(row);
-
-       if (select) {
-               for (var _iterator = children, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
-                       var _ref;
-
-                       if (_isArray) {
-                               if (_i >= _iterator.length) break;
-                               _ref = _iterator[_i++];
-                       } else {
-                               _i = _iterator.next();
-                               if (_i.done) break;
-                               _ref = _i.value;
-                       }
-
-                       var child = _ref;
-
-                       this._selectRow(child, true);
-               }
-       } else {
-               for (var _iterator2 = children, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
-                       var _ref2;
-
-                       if (_isArray2) {
-                               if (_i2 >= _iterator2.length) break;
-                               _ref2 = _iterator2[_i2++];
-                       } else {
-                               _i2 = _iterator2.next();
-                               if (_i2.done) break;
-                               _ref2 = _i2.value;
-                       }
-
-                       var _child = _ref2;
-
-                       this._deselectRow(_child, true);
-               }
-       }
-};
-
-Tabulator.prototype.registerModule("selectRow", SelectRow);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/select_row.min.js b/app/static/vendors/tabulator/js/modules/select_row.min.js
deleted file mode 100644 (file)
index 488d7e6..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},SelectRow=function(e){this.table=e,this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],this.headerCheckboxElement=null};SelectRow.prototype.clearSelectionData=function(e){this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],e||this._rowSelectionChanged()},SelectRow.prototype.initializeRow=function(e){var t=this,o=e.getElement(),l=function e(){setTimeout(function(){t.selecting=!1},50),document.body.removeEventListener("mouseup",e)};e.modules.select={selected:!1},t.table.options.selectableCheck.call(this.table,e.getComponent())?(o.classList.add("tabulator-selectable"),o.classList.remove("tabulator-unselectable"),t.table.options.selectable&&"highlight"!=t.table.options.selectable&&("click"===t.table.options.selectableRangeMode?o.addEventListener("click",function(o){if(o.shiftKey){t.table._clearSelection(),t.lastClickedRow=t.lastClickedRow||e;var l=t.table.rowManager.getDisplayRowIndex(t.lastClickedRow),s=t.table.rowManager.getDisplayRowIndex(e),c=l<=s?l:s,i=l>=s?l:s,n=t.table.rowManager.getDisplayRows().slice(0),a=n.splice(c,i-c+1);o.ctrlKey||o.metaKey?(a.forEach(function(o){o!==t.lastClickedRow&&(!0===t.table.options.selectable||t.isRowSelected(e)?t.toggleRow(o):t.selectedRows.length<t.table.options.selectable&&t.toggleRow(o))}),t.lastClickedRow=e):(t.deselectRows(void 0,!0),!0!==t.table.options.selectable&&a.length>t.table.options.selectable&&(a=a.slice(0,t.table.options.selectable)),t.selectRows(a)),t.table._clearSelection()}else o.ctrlKey||o.metaKey?(t.toggleRow(e),t.lastClickedRow=e):(t.deselectRows(void 0,!0),t.selectRows(e),t.lastClickedRow=e)}):(o.addEventListener("click",function(o){t.table.modExists("edit")&&t.table.modules.edit.getCurrentCell()||t.table._clearSelection(),t.selecting||t.toggleRow(e)}),o.addEventListener("mousedown",function(o){if(o.shiftKey)return t.table._clearSelection(),t.selecting=!0,t.selectPrev=[],document.body.addEventListener("mouseup",l),document.body.addEventListener("keyup",l),t.toggleRow(e),!1}),o.addEventListener("mouseenter",function(o){t.selecting&&(t.table._clearSelection(),t.toggleRow(e),t.selectPrev[1]==e&&t.toggleRow(t.selectPrev[0]))}),o.addEventListener("mouseout",function(o){t.selecting&&(t.table._clearSelection(),t.selectPrev.unshift(e))})))):(o.classList.add("tabulator-unselectable"),o.classList.remove("tabulator-selectable"))},SelectRow.prototype.toggleRow=function(e){this.table.options.selectableCheck.call(this.table,e.getComponent())&&(e.modules.select&&e.modules.select.selected?this._deselectRow(e):this._selectRow(e))},SelectRow.prototype.selectRows=function(e){var t,o=this;switch(void 0===e?"undefined":_typeof(e)){case"undefined":this.table.rowManager.rows.forEach(function(e){o._selectRow(e,!0,!0)}),this._rowSelectionChanged();break;case"string":t=this.table.rowManager.findRow(e),t?this._selectRow(t,!0,!0):this.table.rowManager.getRows(e).forEach(function(e){o._selectRow(e,!0,!0)}),this._rowSelectionChanged();break;default:Array.isArray(e)?(e.forEach(function(e){o._selectRow(e,!0,!0)}),this._rowSelectionChanged()):this._selectRow(e,!1,!0)}},SelectRow.prototype._selectRow=function(e,t,o){if(!isNaN(this.table.options.selectable)&&!0!==this.table.options.selectable&&!o&&this.selectedRows.length>=this.table.options.selectable){if(!this.table.options.selectableRollingSelection)return!1;this._deselectRow(this.selectedRows[0])}var l=this.table.rowManager.findRow(e);l?-1==this.selectedRows.indexOf(l)&&(l.modules.select||(l.modules.select={}),l.modules.select.selected=!0,l.modules.select.checkboxEl&&(l.modules.select.checkboxEl.checked=!0),l.getElement().classList.add("tabulator-selected"),this.selectedRows.push(l),this.table.options.dataTreeSelectPropagate&&this.childRowSelection(l,!0),t||this.table.options.rowSelected.call(this.table,l.getComponent()),this._rowSelectionChanged(t)):t||console.warn("Selection Error - No such row found, ignoring selection:"+e)},SelectRow.prototype.isRowSelected=function(e){return-1!==this.selectedRows.indexOf(e)},SelectRow.prototype.deselectRows=function(e,t){var o,l=this;if(void 0===e){o=l.selectedRows.length;for(var s=0;s<o;s++)l._deselectRow(l.selectedRows[0],!0);l._rowSelectionChanged(t)}else Array.isArray(e)?(e.forEach(function(e){l._deselectRow(e,!0)}),l._rowSelectionChanged(t)):l._deselectRow(e,t)},SelectRow.prototype._deselectRow=function(e,t){var o,l=this,s=l.table.rowManager.findRow(e);s?(o=l.selectedRows.findIndex(function(e){return e==s}))>-1&&(s.modules.select||(s.modules.select={}),s.modules.select.selected=!1,s.modules.select.checkboxEl&&(s.modules.select.checkboxEl.checked=!1),s.getElement().classList.remove("tabulator-selected"),l.selectedRows.splice(o,1),this.table.options.dataTreeSelectPropagate&&this.childRowSelection(s,!1),t||l.table.options.rowDeselected.call(this.table,s.getComponent()),l._rowSelectionChanged(t)):t||console.warn("Deselection Error - No such row found, ignoring selection:"+e)},SelectRow.prototype.getSelectedData=function(){var e=[];return this.selectedRows.forEach(function(t){e.push(t.getData())}),e},SelectRow.prototype.getSelectedRows=function(){var e=[];return this.selectedRows.forEach(function(t){e.push(t.getComponent())}),e},SelectRow.prototype._rowSelectionChanged=function(e){this.headerCheckboxElement&&(0===this.selectedRows.length?(this.headerCheckboxElement.checked=!1,this.headerCheckboxElement.indeterminate=!1):this.table.rowManager.rows.length===this.selectedRows.length?(this.headerCheckboxElement.checked=!0,this.headerCheckboxElement.indeterminate=!1):(this.headerCheckboxElement.indeterminate=!0,this.headerCheckboxElement.checked=!1)),e||this.table.options.rowSelectionChanged.call(this.table,this.getSelectedData(),this.getSelectedRows())},SelectRow.prototype.registerRowSelectCheckbox=function(e,t){e._row.modules.select||(e._row.modules.select={}),e._row.modules.select.checkboxEl=t},SelectRow.prototype.registerHeaderSelectCheckbox=function(e){this.headerCheckboxElement=e},SelectRow.prototype.childRowSelection=function(e,t){var o=this.table.modules.dataTree.getChildren(e);if(t)for(var l=o,s=Array.isArray(l),c=0,l=s?l:l[Symbol.iterator]();;){var i;if(s){if(c>=l.length)break;i=l[c++]}else{if(c=l.next(),c.done)break;i=c.value}var n=i;this._selectRow(n,!0)}else for(var a=o,r=Array.isArray(a),d=0,a=r?a:a[Symbol.iterator]();;){var h;if(r){if(d>=a.length)break;h=a[d++]}else{if(d=a.next(),d.done)break;h=d.value}var w=h;this._deselectRow(w,!0)}},Tabulator.prototype.registerModule("selectRow",SelectRow);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/sort.js b/app/static/vendors/tabulator/js/modules/sort.js
deleted file mode 100644 (file)
index 2422968..0000000
+++ /dev/null
@@ -1,571 +0,0 @@
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-
-var Sort = function Sort(table) {
-       this.table = table; //hold Tabulator object
-       this.sortList = []; //holder current sort
-       this.changed = false; //has the sort changed since last render
-};
-
-//initialize column header for sorting
-Sort.prototype.initializeColumn = function (column, content) {
-       var self = this,
-           sorter = false,
-           colEl,
-           arrowEl;
-
-       switch (_typeof(column.definition.sorter)) {
-               case "string":
-                       if (self.sorters[column.definition.sorter]) {
-                               sorter = self.sorters[column.definition.sorter];
-                       } else {
-                               console.warn("Sort Error - No such sorter found: ", column.definition.sorter);
-                       }
-                       break;
-
-               case "function":
-                       sorter = column.definition.sorter;
-                       break;
-       }
-
-       column.modules.sort = {
-               sorter: sorter, dir: "none",
-               params: column.definition.sorterParams || {},
-               startingDir: column.definition.headerSortStartingDir || "asc",
-               tristate: typeof column.definition.headerSortTristate !== "undefined" ? column.definition.headerSortTristate : this.table.options.headerSortTristate
-       };
-
-       if (typeof column.definition.headerSort === "undefined" ? this.table.options.headerSort !== false : column.definition.headerSort !== false) {
-
-               colEl = column.getElement();
-
-               colEl.classList.add("tabulator-sortable");
-
-               arrowEl = document.createElement("div");
-               arrowEl.classList.add("tabulator-arrow");
-               //create sorter arrow
-               content.appendChild(arrowEl);
-
-               //sort on click
-               colEl.addEventListener("click", function (e) {
-                       var dir = "",
-                           sorters = [],
-                           match = false;
-
-                       if (column.modules.sort) {
-                               if (column.modules.sort.tristate) {
-                                       if (column.modules.sort.dir == "none") {
-                                               dir = column.modules.sort.startingDir;
-                                       } else {
-                                               if (column.modules.sort.dir == column.modules.sort.startingDir) {
-                                                       dir = column.modules.sort.dir == "asc" ? "desc" : "asc";
-                                               } else {
-                                                       dir = "none";
-                                               }
-                                       }
-                               } else {
-                                       switch (column.modules.sort.dir) {
-                                               case "asc":
-                                                       dir = "desc";
-                                                       break;
-
-                                               case "desc":
-                                                       dir = "asc";
-                                                       break;
-
-                                               default:
-                                                       dir = column.modules.sort.startingDir;
-                                       }
-                               }
-
-                               if (self.table.options.columnHeaderSortMulti && (e.shiftKey || e.ctrlKey)) {
-                                       sorters = self.getSort();
-
-                                       match = sorters.findIndex(function (sorter) {
-                                               return sorter.field === column.getField();
-                                       });
-
-                                       if (match > -1) {
-                                               sorters[match].dir = dir;
-
-                                               if (match != sorters.length - 1) {
-                                                       match = sorters.splice(match, 1)[0];
-                                                       if (dir != "none") {
-                                                               sorters.push(match);
-                                                       }
-                                               }
-                                       } else {
-                                               if (dir != "none") {
-                                                       sorters.push({ column: column, dir: dir });
-                                               }
-                                       }
-
-                                       //add to existing sort
-                                       self.setSort(sorters);
-                               } else {
-                                       if (dir == "none") {
-                                               self.clear();
-                                       } else {
-                                               //sort by column only
-                                               self.setSort(column, dir);
-                                       }
-                               }
-
-                               self.table.rowManager.sorterRefresh(!self.sortList.length);
-                       }
-               });
-       }
-};
-
-//check if the sorters have changed since last use
-Sort.prototype.hasChanged = function () {
-       var changed = this.changed;
-       this.changed = false;
-       return changed;
-};
-
-//return current sorters
-Sort.prototype.getSort = function () {
-       var self = this,
-           sorters = [];
-
-       self.sortList.forEach(function (item) {
-               if (item.column) {
-                       sorters.push({ column: item.column.getComponent(), field: item.column.getField(), dir: item.dir });
-               }
-       });
-
-       return sorters;
-};
-
-//change sort list and trigger sort
-Sort.prototype.setSort = function (sortList, dir) {
-       var self = this,
-           newSortList = [];
-
-       if (!Array.isArray(sortList)) {
-               sortList = [{ column: sortList, dir: dir }];
-       }
-
-       sortList.forEach(function (item) {
-               var column;
-
-               column = self.table.columnManager.findColumn(item.column);
-
-               if (column) {
-                       item.column = column;
-                       newSortList.push(item);
-                       self.changed = true;
-               } else {
-                       console.warn("Sort Warning - Sort field does not exist and is being ignored: ", item.column);
-               }
-       });
-
-       self.sortList = newSortList;
-
-       if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.sort) {
-               this.table.modules.persistence.save("sort");
-       }
-};
-
-//clear sorters
-Sort.prototype.clear = function () {
-       this.setSort([]);
-};
-
-//find appropriate sorter for column
-Sort.prototype.findSorter = function (column) {
-       var row = this.table.rowManager.activeRows[0],
-           sorter = "string",
-           field,
-           value;
-
-       if (row) {
-               row = row.getData();
-               field = column.getField();
-
-               if (field) {
-
-                       value = column.getFieldValue(row);
-
-                       switch (typeof value === "undefined" ? "undefined" : _typeof(value)) {
-                               case "undefined":
-                                       sorter = "string";
-                                       break;
-
-                               case "boolean":
-                                       sorter = "boolean";
-                                       break;
-
-                               default:
-                                       if (!isNaN(value) && value !== "") {
-                                               sorter = "number";
-                                       } else {
-                                               if (value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)) {
-                                                       sorter = "alphanum";
-                                               }
-                                       }
-                                       break;
-                       }
-               }
-       }
-
-       return this.sorters[sorter];
-};
-
-//work through sort list sorting data
-Sort.prototype.sort = function (data) {
-       var self = this,
-           sortList = this.table.options.sortOrderReverse ? self.sortList.slice().reverse() : self.sortList,
-           sortListActual = [],
-           rowComponents = [],
-           lastSort;
-
-       if (self.table.options.dataSorting) {
-               self.table.options.dataSorting.call(self.table, self.getSort());
-       }
-
-       self.clearColumnHeaders();
-
-       if (!self.table.options.ajaxSorting) {
-
-               //build list of valid sorters and trigger column specific callbacks before sort begins
-               sortList.forEach(function (item, i) {
-                       var sortObj = item.column.modules.sort;
-
-                       if (item.column && sortObj) {
-
-                               //if no sorter has been defined, take a guess
-                               if (!sortObj.sorter) {
-                                       sortObj.sorter = self.findSorter(item.column);
-                               }
-
-                               item.params = typeof sortObj.params === "function" ? sortObj.params(item.column.getComponent(), item.dir) : sortObj.params;
-
-                               sortListActual.push(item);
-                       }
-
-                       self.setColumnHeader(item.column, item.dir);
-               });
-
-               //sort data
-               if (sortListActual.length) {
-                       self._sortItems(data, sortListActual);
-               }
-       } else {
-               sortList.forEach(function (item, i) {
-                       self.setColumnHeader(item.column, item.dir);
-               });
-       }
-
-       if (self.table.options.dataSorted) {
-               data.forEach(function (row) {
-                       rowComponents.push(row.getComponent());
-               });
-
-               self.table.options.dataSorted.call(self.table, self.getSort(), rowComponents);
-       }
-};
-
-//clear sort arrows on columns
-Sort.prototype.clearColumnHeaders = function () {
-       this.table.columnManager.getRealColumns().forEach(function (column) {
-               if (column.modules.sort) {
-                       column.modules.sort.dir = "none";
-                       column.getElement().setAttribute("aria-sort", "none");
-               }
-       });
-};
-
-//set the column header sort direction
-Sort.prototype.setColumnHeader = function (column, dir) {
-       column.modules.sort.dir = dir;
-       column.getElement().setAttribute("aria-sort", dir);
-};
-
-//sort each item in sort list
-Sort.prototype._sortItems = function (data, sortList) {
-       var _this = this;
-
-       var sorterCount = sortList.length - 1;
-
-       data.sort(function (a, b) {
-               var result;
-
-               for (var i = sorterCount; i >= 0; i--) {
-                       var sortItem = sortList[i];
-
-                       result = _this._sortRow(a, b, sortItem.column, sortItem.dir, sortItem.params);
-
-                       if (result !== 0) {
-                               break;
-                       }
-               }
-
-               return result;
-       });
-};
-
-//process individual rows for a sort function on active data
-Sort.prototype._sortRow = function (a, b, column, dir, params) {
-       var el1Comp, el2Comp, colComp;
-
-       //switch elements depending on search direction
-       var el1 = dir == "asc" ? a : b;
-       var el2 = dir == "asc" ? b : a;
-
-       a = column.getFieldValue(el1.getData());
-       b = column.getFieldValue(el2.getData());
-
-       a = typeof a !== "undefined" ? a : "";
-       b = typeof b !== "undefined" ? b : "";
-
-       el1Comp = el1.getComponent();
-       el2Comp = el2.getComponent();
-
-       return column.modules.sort.sorter.call(this, a, b, el1Comp, el2Comp, column.getComponent(), dir, params);
-};
-
-//default data sorters
-Sort.prototype.sorters = {
-
-       //sort numbers
-       number: function number(a, b, aRow, bRow, column, dir, params) {
-               var alignEmptyValues = params.alignEmptyValues;
-               var decimal = params.decimalSeparator || ".";
-               var thousand = params.thousandSeparator || ",";
-               var emptyAlign = 0;
-
-               a = parseFloat(String(a).split(thousand).join("").split(decimal).join("."));
-               b = parseFloat(String(b).split(thousand).join("").split(decimal).join("."));
-
-               //handle non numeric values
-               if (isNaN(a)) {
-                       emptyAlign = isNaN(b) ? 0 : -1;
-               } else if (isNaN(b)) {
-                       emptyAlign = 1;
-               } else {
-                       //compare valid values
-                       return a - b;
-               }
-
-               //fix empty values in position
-               if (alignEmptyValues === "top" && dir === "desc" || alignEmptyValues === "bottom" && dir === "asc") {
-                       emptyAlign *= -1;
-               }
-
-               return emptyAlign;
-       },
-
-       //sort strings
-       string: function string(a, b, aRow, bRow, column, dir, params) {
-               var alignEmptyValues = params.alignEmptyValues;
-               var emptyAlign = 0;
-               var locale;
-
-               //handle empty values
-               if (!a) {
-                       emptyAlign = !b ? 0 : -1;
-               } else if (!b) {
-                       emptyAlign = 1;
-               } else {
-                       //compare valid values
-                       switch (_typeof(params.locale)) {
-                               case "boolean":
-                                       if (params.locale) {
-                                               locale = this.table.modules.localize.getLocale();
-                                       }
-                                       break;
-                               case "string":
-                                       locale = params.locale;
-                                       break;
-                       }
-
-                       return String(a).toLowerCase().localeCompare(String(b).toLowerCase(), locale);
-               }
-
-               //fix empty values in position
-               if (alignEmptyValues === "top" && dir === "desc" || alignEmptyValues === "bottom" && dir === "asc") {
-                       emptyAlign *= -1;
-               }
-
-               return emptyAlign;
-       },
-
-       //sort date
-       date: function date(a, b, aRow, bRow, column, dir, params) {
-               if (!params.format) {
-                       params.format = "DD/MM/YYYY";
-               }
-
-               return this.sorters.datetime.call(this, a, b, aRow, bRow, column, dir, params);
-       },
-
-       //sort HH:mm formatted times
-       time: function time(a, b, aRow, bRow, column, dir, params) {
-               if (!params.format) {
-                       params.format = "HH:mm";
-               }
-
-               return this.sorters.datetime.call(this, a, b, aRow, bRow, column, dir, params);
-       },
-
-       //sort datetime
-       datetime: function datetime(a, b, aRow, bRow, column, dir, params) {
-               var format = params.format || "DD/MM/YYYY HH:mm:ss",
-                   alignEmptyValues = params.alignEmptyValues,
-                   emptyAlign = 0;
-
-               if (typeof moment != "undefined") {
-                       a = moment(a, format);
-                       b = moment(b, format);
-
-                       if (!a.isValid()) {
-                               emptyAlign = !b.isValid() ? 0 : -1;
-                       } else if (!b.isValid()) {
-                               emptyAlign = 1;
-                       } else {
-                               //compare valid values
-                               return a - b;
-                       }
-
-                       //fix empty values in position
-                       if (alignEmptyValues === "top" && dir === "desc" || alignEmptyValues === "bottom" && dir === "asc") {
-                               emptyAlign *= -1;
-                       }
-
-                       return emptyAlign;
-               } else {
-                       console.error("Sort Error - 'datetime' sorter is dependant on moment.js");
-               }
-       },
-
-       //sort booleans
-       boolean: function boolean(a, b, aRow, bRow, column, dir, params) {
-               var el1 = a === true || a === "true" || a === "True" || a === 1 ? 1 : 0;
-               var el2 = b === true || b === "true" || b === "True" || b === 1 ? 1 : 0;
-
-               return el1 - el2;
-       },
-
-       //sort if element contains any data
-       array: function array(a, b, aRow, bRow, column, dir, params) {
-               var el1 = 0;
-               var el2 = 0;
-               var type = params.type || "length";
-               var alignEmptyValues = params.alignEmptyValues;
-               var emptyAlign = 0;
-
-               function calc(value) {
-
-                       switch (type) {
-                               case "length":
-                                       return value.length;
-                                       break;
-
-                               case "sum":
-                                       return value.reduce(function (c, d) {
-                                               return c + d;
-                                       });
-                                       break;
-
-                               case "max":
-                                       return Math.max.apply(null, value);
-                                       break;
-
-                               case "min":
-                                       return Math.min.apply(null, value);
-                                       break;
-
-                               case "avg":
-                                       return value.reduce(function (c, d) {
-                                               return c + d;
-                                       }) / value.length;
-                                       break;
-                       }
-               }
-
-               //handle non array values
-               if (!Array.isArray(a)) {
-                       alignEmptyValues = !Array.isArray(b) ? 0 : -1;
-               } else if (!Array.isArray(b)) {
-                       alignEmptyValues = 1;
-               } else {
-
-                       //compare valid values
-                       el1 = a ? calc(a) : 0;
-                       el2 = b ? calc(b) : 0;
-
-                       return el1 - el2;
-               }
-
-               //fix empty values in position
-               if (alignEmptyValues === "top" && dir === "desc" || alignEmptyValues === "bottom" && dir === "asc") {
-                       emptyAlign *= -1;
-               }
-
-               return emptyAlign;
-       },
-
-       //sort if element contains any data
-       exists: function exists(a, b, aRow, bRow, column, dir, params) {
-               var el1 = typeof a == "undefined" ? 0 : 1;
-               var el2 = typeof b == "undefined" ? 0 : 1;
-
-               return el1 - el2;
-       },
-
-       //sort alpha numeric strings
-       alphanum: function alphanum(as, bs, aRow, bRow, column, dir, params) {
-               var a,
-                   b,
-                   a1,
-                   b1,
-                   i = 0,
-                   L,
-                   rx = /(\d+)|(\D+)/g,
-                   rd = /\d/;
-               var alignEmptyValues = params.alignEmptyValues;
-               var emptyAlign = 0;
-
-               //handle empty values
-               if (!as && as !== 0) {
-                       emptyAlign = !bs && bs !== 0 ? 0 : -1;
-               } else if (!bs && bs !== 0) {
-                       emptyAlign = 1;
-               } else {
-
-                       if (isFinite(as) && isFinite(bs)) return as - bs;
-                       a = String(as).toLowerCase();
-                       b = String(bs).toLowerCase();
-                       if (a === b) return 0;
-                       if (!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1;
-                       a = a.match(rx);
-                       b = b.match(rx);
-                       L = a.length > b.length ? b.length : a.length;
-                       while (i < L) {
-                               a1 = a[i];
-                               b1 = b[i++];
-                               if (a1 !== b1) {
-                                       if (isFinite(a1) && isFinite(b1)) {
-                                               if (a1.charAt(0) === "0") a1 = "." + a1;
-                                               if (b1.charAt(0) === "0") b1 = "." + b1;
-                                               return a1 - b1;
-                                       } else return a1 > b1 ? 1 : -1;
-                               }
-                       }
-
-                       return a.length > b.length;
-               }
-
-               //fix empty values in position
-               if (alignEmptyValues === "top" && dir === "desc" || alignEmptyValues === "bottom" && dir === "asc") {
-                       emptyAlign *= -1;
-               }
-
-               return emptyAlign;
-       }
-};
-
-Tabulator.prototype.registerModule("sort", Sort);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/sort.min.js b/app/static/vendors/tabulator/js/modules/sort.min.js
deleted file mode 100644 (file)
index d0b4cb0..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Sort=function(t){this.table=t,this.sortList=[],this.changed=!1};Sort.prototype.initializeColumn=function(t,e){var r,o,n=this,i=!1;switch(_typeof(t.definition.sorter)){case"string":n.sorters[t.definition.sorter]?i=n.sorters[t.definition.sorter]:console.warn("Sort Error - No such sorter found: ",t.definition.sorter);break;case"function":i=t.definition.sorter}t.modules.sort={sorter:i,dir:"none",params:t.definition.sorterParams||{},startingDir:t.definition.headerSortStartingDir||"asc",tristate:void 0!==t.definition.headerSortTristate?t.definition.headerSortTristate:this.table.options.headerSortTristate},(void 0===t.definition.headerSort?!1!==this.table.options.headerSort:!1!==t.definition.headerSort)&&(r=t.getElement(),r.classList.add("tabulator-sortable"),o=document.createElement("div"),o.classList.add("tabulator-arrow"),e.appendChild(o),r.addEventListener("click",function(e){var r="",o=[],i=!1;if(t.modules.sort){if(t.modules.sort.tristate)r="none"==t.modules.sort.dir?t.modules.sort.startingDir:t.modules.sort.dir==t.modules.sort.startingDir?"asc"==t.modules.sort.dir?"desc":"asc":"none";else switch(t.modules.sort.dir){case"asc":r="desc";break;case"desc":r="asc";break;default:r=t.modules.sort.startingDir}n.table.options.columnHeaderSortMulti&&(e.shiftKey||e.ctrlKey)?(o=n.getSort(),i=o.findIndex(function(e){return e.field===t.getField()}),i>-1?(o[i].dir=r,i!=o.length-1&&(i=o.splice(i,1)[0],"none"!=r&&o.push(i))):"none"!=r&&o.push({column:t,dir:r}),n.setSort(o)):"none"==r?n.clear():n.setSort(t,r),n.table.rowManager.sorterRefresh(!n.sortList.length)}}))},Sort.prototype.hasChanged=function(){var t=this.changed;return this.changed=!1,t},Sort.prototype.getSort=function(){var t=this,e=[];return t.sortList.forEach(function(t){t.column&&e.push({column:t.column.getComponent(),field:t.column.getField(),dir:t.dir})}),e},Sort.prototype.setSort=function(t,e){var r=this,o=[];Array.isArray(t)||(t=[{column:t,dir:e}]),t.forEach(function(t){var e;e=r.table.columnManager.findColumn(t.column),e?(t.column=e,o.push(t),r.changed=!0):console.warn("Sort Warning - Sort field does not exist and is being ignored: ",t.column)}),r.sortList=o,this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.sort&&this.table.modules.persistence.save("sort")},Sort.prototype.clear=function(){this.setSort([])},Sort.prototype.findSorter=function(t){var e,r=this.table.rowManager.activeRows[0],o="string";if(r&&(r=r.getData(),t.getField()))switch(e=t.getFieldValue(r),void 0===e?"undefined":_typeof(e)){case"undefined":o="string";break;case"boolean":o="boolean";break;default:isNaN(e)||""===e?e.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)&&(o="alphanum"):o="number"}return this.sorters[o]},Sort.prototype.sort=function(t){var e=this,r=this.table.options.sortOrderReverse?e.sortList.slice().reverse():e.sortList,o=[],n=[];e.table.options.dataSorting&&e.table.options.dataSorting.call(e.table,e.getSort()),e.clearColumnHeaders(),e.table.options.ajaxSorting?r.forEach(function(t,r){e.setColumnHeader(t.column,t.dir)}):(r.forEach(function(t,r){var n=t.column.modules.sort;t.column&&n&&(n.sorter||(n.sorter=e.findSorter(t.column)),t.params="function"==typeof n.params?n.params(t.column.getComponent(),t.dir):n.params,o.push(t)),e.setColumnHeader(t.column,t.dir)}),o.length&&e._sortItems(t,o)),e.table.options.dataSorted&&(t.forEach(function(t){n.push(t.getComponent())}),e.table.options.dataSorted.call(e.table,e.getSort(),n))},Sort.prototype.clearColumnHeaders=function(){this.table.columnManager.getRealColumns().forEach(function(t){t.modules.sort&&(t.modules.sort.dir="none",t.getElement().setAttribute("aria-sort","none"))})},Sort.prototype.setColumnHeader=function(t,e){t.modules.sort.dir=e,t.getElement().setAttribute("aria-sort",e)},Sort.prototype._sortItems=function(t,e){var r=this,o=e.length-1;t.sort(function(t,n){for(var i,s=o;s>=0;s--){var a=e[s];if(0!==(i=r._sortRow(t,n,a.column,a.dir,a.params)))break}return i})},Sort.prototype._sortRow=function(t,e,r,o,n){var i,s,a="asc"==o?t:e,l="asc"==o?e:t;return t=r.getFieldValue(a.getData()),e=r.getFieldValue(l.getData()),t=void 0!==t?t:"",e=void 0!==e?e:"",i=a.getComponent(),s=l.getComponent(),r.modules.sort.sorter.call(this,t,e,i,s,r.getComponent(),o,n)},Sort.prototype.sorters={number:function(t,e,r,o,n,i,s){var a=s.alignEmptyValues,l=s.decimalSeparator||".",u=s.thousandSeparator||",",c=0;if(t=parseFloat(String(t).split(u).join("").split(l).join(".")),e=parseFloat(String(e).split(u).join("").split(l).join(".")),isNaN(t))c=isNaN(e)?0:-1;else{if(!isNaN(e))return t-e;c=1}return("top"===a&&"desc"===i||"bottom"===a&&"asc"===i)&&(c*=-1),c},string:function(t,e,r,o,n,i,s){var a,l=s.alignEmptyValues,u=0;if(t){if(e){switch(_typeof(s.locale)){case"boolean":s.locale&&(a=this.table.modules.localize.getLocale());break;case"string":a=s.locale}return String(t).toLowerCase().localeCompare(String(e).toLowerCase(),a)}u=1}else u=e?-1:0;return("top"===l&&"desc"===i||"bottom"===l&&"asc"===i)&&(u*=-1),u},date:function(t,e,r,o,n,i,s){return s.format||(s.format="DD/MM/YYYY"),this.sorters.datetime.call(this,t,e,r,o,n,i,s)},time:function(t,e,r,o,n,i,s){return s.format||(s.format="HH:mm"),this.sorters.datetime.call(this,t,e,r,o,n,i,s)},datetime:function(t,e,r,o,n,i,s){var a=s.format||"DD/MM/YYYY HH:mm:ss",l=s.alignEmptyValues,u=0;if("undefined"!=typeof moment){if(t=moment(t,a),e=moment(e,a),t.isValid()){if(e.isValid())return t-e;u=1}else u=e.isValid()?-1:0;return("top"===l&&"desc"===i||"bottom"===l&&"asc"===i)&&(u*=-1),u}console.error("Sort Error - 'datetime' sorter is dependant on moment.js")},boolean:function(t,e,r,o,n,i,s){return(!0===t||"true"===t||"True"===t||1===t?1:0)-(!0===e||"true"===e||"True"===e||1===e?1:0)},array:function(t,e,r,o,n,i,s){function a(t){switch(c){case"length":return t.length;case"sum":return t.reduce(function(t,e){return t+e});case"max":return Math.max.apply(null,t);case"min":return Math.min.apply(null,t);case"avg":return t.reduce(function(t,e){return t+e})/t.length}}var l=0,u=0,c=s.type||"length",d=s.alignEmptyValues,m=0;if(Array.isArray(t)){if(Array.isArray(e))return l=t?a(t):0,u=e?a(e):0,l-u;d=1}else d=Array.isArray(e)?-1:0;return("top"===d&&"desc"===i||"bottom"===d&&"asc"===i)&&(m*=-1),m},exists:function(t,e,r,o,n,i,s){return(void 0===t?0:1)-(void 0===e?0:1)},alphanum:function(t,e,r,o,n,i,s){var a,l,u,c,d,m=0,f=/(\d+)|(\D+)/g,p=/\d/,h=s.alignEmptyValues,g=0;if(t||0===t){if(e||0===e){if(isFinite(t)&&isFinite(e))return t-e;if(a=String(t).toLowerCase(),l=String(e).toLowerCase(),a===l)return 0;if(!p.test(a)||!p.test(l))return a>l?1:-1;for(a=a.match(f),l=l.match(f),d=a.length>l.length?l.length:a.length;m<d;)if(u=a[m],c=l[m++],u!==c)return isFinite(u)&&isFinite(c)?("0"===u.charAt(0)&&(u="."+u),"0"===c.charAt(0)&&(c="."+c),u-c):u>c?1:-1;return a.length>l.length}g=1}else g=e||0===e?-1:0;return("top"===h&&"desc"===i||"bottom"===h&&"asc"===i)&&(g*=-1),g}},Tabulator.prototype.registerModule("sort",Sort);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/validate.js b/app/static/vendors/tabulator/js/modules/validate.js
deleted file mode 100644 (file)
index b5f6182..0000000
+++ /dev/null
@@ -1,286 +0,0 @@
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-
-var Validate = function Validate(table) {
-       this.table = table;
-       this.invalidCells = [];
-};
-
-//validate
-Validate.prototype.initializeColumn = function (column) {
-       var self = this,
-           config = [],
-           validator;
-
-       if (column.definition.validator) {
-
-               if (Array.isArray(column.definition.validator)) {
-                       column.definition.validator.forEach(function (item) {
-                               validator = self._extractValidator(item);
-
-                               if (validator) {
-                                       config.push(validator);
-                               }
-                       });
-               } else {
-                       validator = this._extractValidator(column.definition.validator);
-
-                       if (validator) {
-                               config.push(validator);
-                       }
-               }
-
-               column.modules.validate = config.length ? config : false;
-       }
-};
-
-Validate.prototype._extractValidator = function (value) {
-       var type, params, pos;
-
-       switch (typeof value === "undefined" ? "undefined" : _typeof(value)) {
-               case "string":
-                       pos = value.indexOf(':');
-
-                       if (pos > -1) {
-                               type = value.substring(0, pos);
-                               params = value.substring(pos + 1);
-                       } else {
-                               type = value;
-                       }
-
-                       return this._buildValidator(type, params);
-                       break;
-
-               case "function":
-                       return this._buildValidator(value);
-                       break;
-
-               case "object":
-                       return this._buildValidator(value.type, value.parameters);
-                       break;
-       }
-};
-
-Validate.prototype._buildValidator = function (type, params) {
-
-       var func = typeof type == "function" ? type : this.validators[type];
-
-       if (!func) {
-               console.warn("Validator Setup Error - No matching validator found:", type);
-               return false;
-       } else {
-               return {
-                       type: typeof type == "function" ? "function" : type,
-                       func: func,
-                       params: params
-               };
-       }
-};
-
-Validate.prototype.validate = function (validators, cell, value) {
-       var self = this,
-           valid = [],
-           invalidIndex = this.invalidCells.indexOf(cell);
-
-       if (validators) {
-               validators.forEach(function (item) {
-                       if (!item.func.call(self, cell.getComponent(), value, item.params)) {
-                               valid.push({
-                                       type: item.type,
-                                       parameters: item.params
-                               });
-                       }
-               });
-       }
-
-       valid = valid.length ? valid : true;
-
-       if (!cell.modules.validate) {
-               cell.modules.validate = {};
-       }
-
-       if (valid === true) {
-               cell.modules.validate.invalid = false;
-               cell.getElement().classList.remove("tabulator-validation-fail");
-
-               if (invalidIndex > -1) {
-                       this.invalidCells.splice(invalidIndex, 1);
-               }
-       } else {
-               cell.modules.validate.invalid = true;
-
-               if (this.table.options.validationMode !== "manual") {
-                       cell.getElement().classList.add("tabulator-validation-fail");
-               }
-
-               if (invalidIndex == -1) {
-                       this.invalidCells.push(cell);
-               }
-       }
-
-       return valid;
-};
-
-Validate.prototype.getInvalidCells = function () {
-       var output = [];
-
-       this.invalidCells.forEach(function (cell) {
-               output.push(cell.getComponent());
-       });
-
-       return output;
-};
-
-Validate.prototype.clearValidation = function (cell) {
-       var invalidIndex;
-
-       if (cell.modules.validate && cell.modules.validate.invalid) {
-
-               cell.element.classList.remove("tabulator-validation-fail");
-               cell.modules.validate.invalid = false;
-
-               invalidIndex = this.invalidCells.indexOf(cell);
-
-               if (invalidIndex > -1) {
-                       this.invalidCells.splice(invalidIndex, 1);
-               }
-       }
-};
-
-Validate.prototype.validators = {
-
-       //is integer
-       integer: function integer(cell, value, parameters) {
-               if (value === "" || value === null || typeof value === "undefined") {
-                       return true;
-               }
-               value = Number(value);
-               return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;
-       },
-
-       //is float
-       float: function float(cell, value, parameters) {
-               if (value === "" || value === null || typeof value === "undefined") {
-                       return true;
-               }
-               value = Number(value);
-               return typeof value === 'number' && isFinite(value) && value % 1 !== 0;
-       },
-
-       //must be a number
-       numeric: function numeric(cell, value, parameters) {
-               if (value === "" || value === null || typeof value === "undefined") {
-                       return true;
-               }
-               return !isNaN(value);
-       },
-
-       //must be a string
-       string: function string(cell, value, parameters) {
-               if (value === "" || value === null || typeof value === "undefined") {
-                       return true;
-               }
-               return isNaN(value);
-       },
-
-       //maximum value
-       max: function max(cell, value, parameters) {
-               if (value === "" || value === null || typeof value === "undefined") {
-                       return true;
-               }
-               return parseFloat(value) <= parameters;
-       },
-
-       //minimum value
-       min: function min(cell, value, parameters) {
-               if (value === "" || value === null || typeof value === "undefined") {
-                       return true;
-               }
-               return parseFloat(value) >= parameters;
-       },
-
-       //starts with  value
-       starts: function starts(cell, value, parameters) {
-               if (value === "" || value === null || typeof value === "undefined") {
-                       return true;
-               }
-               return String(value).toLowerCase().startsWith(String(parameters).toLowerCase());
-       },
-
-       //ends with  value
-       ends: function ends(cell, value, parameters) {
-               if (value === "" || value === null || typeof value === "undefined") {
-                       return true;
-               }
-               return String(value).toLowerCase().endsWith(String(parameters).toLowerCase());
-       },
-
-       //minimum string length
-       minLength: function minLength(cell, value, parameters) {
-               if (value === "" || value === null || typeof value === "undefined") {
-                       return true;
-               }
-               return String(value).length >= parameters;
-       },
-
-       //maximum string length
-       maxLength: function maxLength(cell, value, parameters) {
-               if (value === "" || value === null || typeof value === "undefined") {
-                       return true;
-               }
-               return String(value).length <= parameters;
-       },
-
-       //in provided value list
-       in: function _in(cell, value, parameters) {
-               if (value === "" || value === null || typeof value === "undefined") {
-                       return true;
-               }
-               if (typeof parameters == "string") {
-                       parameters = parameters.split("|");
-               }
-
-               return value === "" || parameters.indexOf(value) > -1;
-       },
-
-       //must match provided regex
-       regex: function regex(cell, value, parameters) {
-               if (value === "" || value === null || typeof value === "undefined") {
-                       return true;
-               }
-               var reg = new RegExp(parameters);
-
-               return reg.test(value);
-       },
-
-       //value must be unique in this column
-       unique: function unique(cell, value, parameters) {
-               if (value === "" || value === null || typeof value === "undefined") {
-                       return true;
-               }
-               var unique = true;
-
-               var cellData = cell.getData();
-               var column = cell.getColumn()._getSelf();
-
-               this.table.rowManager.rows.forEach(function (row) {
-                       var data = row.getData();
-
-                       if (data !== cellData) {
-                               if (value == column.getFieldValue(data)) {
-                                       unique = false;
-                               }
-                       }
-               });
-
-               return unique;
-       },
-
-       //must have a value
-       required: function required(cell, value, parameters) {
-               return value !== "" && value !== null && typeof value !== "undefined";
-       }
-};
-
-Tabulator.prototype.registerModule("validate", Validate);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/modules/validate.min.js b/app/static/vendors/tabulator/js/modules/validate.min.js
deleted file mode 100644 (file)
index fc189c0..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Validate=function(t){this.table=t,this.invalidCells=[]};Validate.prototype.initializeColumn=function(t){var i,n=this,e=[];t.definition.validator&&(Array.isArray(t.definition.validator)?t.definition.validator.forEach(function(t){(i=n._extractValidator(t))&&e.push(i)}):(i=this._extractValidator(t.definition.validator))&&e.push(i),t.modules.validate=!!e.length&&e)},Validate.prototype._extractValidator=function(t){var i,n,e;switch(void 0===t?"undefined":_typeof(t)){case"string":return e=t.indexOf(":"),e>-1?(i=t.substring(0,e),n=t.substring(e+1)):i=t,this._buildValidator(i,n);case"function":return this._buildValidator(t);case"object":return this._buildValidator(t.type,t.parameters)}},Validate.prototype._buildValidator=function(t,i){var n="function"==typeof t?t:this.validators[t];return n?{type:"function"==typeof t?"function":t,func:n,params:i}:(console.warn("Validator Setup Error - No matching validator found:",t),!1)},Validate.prototype.validate=function(t,i,n){var e=this,a=[],o=this.invalidCells.indexOf(i);return t&&t.forEach(function(t){t.func.call(e,i.getComponent(),n,t.params)||a.push({type:t.type,parameters:t.params})}),a=!a.length||a,i.modules.validate||(i.modules.validate={}),!0===a?(i.modules.validate.invalid=!1,i.getElement().classList.remove("tabulator-validation-fail"),o>-1&&this.invalidCells.splice(o,1)):(i.modules.validate.invalid=!0,"manual"!==this.table.options.validationMode&&i.getElement().classList.add("tabulator-validation-fail"),-1==o&&this.invalidCells.push(i)),a},Validate.prototype.getInvalidCells=function(){var t=[];return this.invalidCells.forEach(function(i){t.push(i.getComponent())}),t},Validate.prototype.clearValidation=function(t){var i;t.modules.validate&&t.modules.validate.invalid&&(t.element.classList.remove("tabulator-validation-fail"),t.modules.validate.invalid=!1,(i=this.invalidCells.indexOf(t))>-1&&this.invalidCells.splice(i,1))},Validate.prototype.validators={integer:function(t,i,n){return""===i||null===i||void 0===i||"number"==typeof(i=Number(i))&&isFinite(i)&&Math.floor(i)===i},float:function(t,i,n){return""===i||null===i||void 0===i||"number"==typeof(i=Number(i))&&isFinite(i)&&i%1!=0},numeric:function(t,i,n){return""===i||null===i||void 0===i||!isNaN(i)},string:function(t,i,n){return""===i||null===i||void 0===i||isNaN(i)},max:function(t,i,n){return""===i||null===i||void 0===i||parseFloat(i)<=n},min:function(t,i,n){return""===i||null===i||void 0===i||parseFloat(i)>=n},starts:function(t,i,n){return""===i||null===i||void 0===i||String(i).toLowerCase().startsWith(String(n).toLowerCase())},ends:function(t,i,n){return""===i||null===i||void 0===i||String(i).toLowerCase().endsWith(String(n).toLowerCase())},minLength:function(t,i,n){return""===i||null===i||void 0===i||String(i).length>=n},maxLength:function(t,i,n){return""===i||null===i||void 0===i||String(i).length<=n},in:function(t,i,n){return""===i||null===i||void 0===i||("string"==typeof n&&(n=n.split("|")),""===i||n.indexOf(i)>-1)},regex:function(t,i,n){return""===i||null===i||void 0===i||new RegExp(n).test(i)},unique:function(t,i,n){if(""===i||null===i||void 0===i)return!0;var e=!0,a=t.getData(),o=t.getColumn()._getSelf();return this.table.rowManager.rows.forEach(function(t){var n=t.getData();n!==a&&i==o.getFieldValue(n)&&(e=!1)}),e},required:function(t,i,n){return""!==i&&null!==i&&void 0!==i}},Tabulator.prototype.registerModule("validate",Validate);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/tabulator.js b/app/static/vendors/tabulator/js/tabulator.js
deleted file mode 100644 (file)
index 256e565..0000000
+++ /dev/null
@@ -1,24907 +0,0 @@
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-
-;(function (global, factory) {
-       if ((typeof exports === 'undefined' ? 'undefined' : _typeof(exports)) === 'object' && typeof module !== 'undefined') {
-               module.exports = factory();
-       } else if (typeof define === 'function' && define.amd) {
-               define(factory);
-       } else {
-               global.Tabulator = factory();
-       }
-})(this, function () {
-
-       'use strict';
-
-       // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex
-
-
-       if (!Array.prototype.findIndex) {
-
-               Object.defineProperty(Array.prototype, 'findIndex', {
-
-                       value: function value(predicate) {
-
-                               // 1. Let O be ? ToObject(this value).
-
-
-                               if (this == null) {
-
-                                       throw new TypeError('"this" is null or not defined');
-                               }
-
-                               var o = Object(this);
-
-                               // 2. Let len be ? ToLength(? Get(O, "length")).
-
-
-                               var len = o.length >>> 0;
-
-                               // 3. If IsCallable(predicate) is false, throw a TypeError exception.
-
-
-                               if (typeof predicate !== 'function') {
-
-                                       throw new TypeError('predicate must be a function');
-                               }
-
-                               // 4. If thisArg was supplied, let T be thisArg; else let T be undefined.
-
-
-                               var thisArg = arguments[1];
-
-                               // 5. Let k be 0.
-
-
-                               var k = 0;
-
-                               // 6. Repeat, while k < len
-
-
-                               while (k < len) {
-
-                                       // a. Let Pk be ! ToString(k).
-
-
-                                       // b. Let kValue be ? Get(O, Pk).
-
-
-                                       // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).
-
-
-                                       // d. If testResult is true, return k.
-
-
-                                       var kValue = o[k];
-
-                                       if (predicate.call(thisArg, kValue, k, o)) {
-
-                                               return k;
-                                       }
-
-                                       // e. Increase k by 1.
-
-
-                                       k++;
-                               }
-
-                               // 7. Return -1.
-
-
-                               return -1;
-                       }
-
-               });
-       }
-
-       // https://tc39.github.io/ecma262/#sec-array.prototype.find
-
-
-       if (!Array.prototype.find) {
-
-               Object.defineProperty(Array.prototype, 'find', {
-
-                       value: function value(predicate) {
-
-                               // 1. Let O be ? ToObject(this value).
-
-
-                               if (this == null) {
-
-                                       throw new TypeError('"this" is null or not defined');
-                               }
-
-                               var o = Object(this);
-
-                               // 2. Let len be ? ToLength(? Get(O, "length")).
-
-
-                               var len = o.length >>> 0;
-
-                               // 3. If IsCallable(predicate) is false, throw a TypeError exception.
-
-
-                               if (typeof predicate !== 'function') {
-
-                                       throw new TypeError('predicate must be a function');
-                               }
-
-                               // 4. If thisArg was supplied, let T be thisArg; else let T be undefined.
-
-
-                               var thisArg = arguments[1];
-
-                               // 5. Let k be 0.
-
-
-                               var k = 0;
-
-                               // 6. Repeat, while k < len
-
-
-                               while (k < len) {
-
-                                       // a. Let Pk be ! ToString(k).
-
-
-                                       // b. Let kValue be ? Get(O, Pk).
-
-
-                                       // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).
-
-
-                                       // d. If testResult is true, return kValue.
-
-
-                                       var kValue = o[k];
-
-                                       if (predicate.call(thisArg, kValue, k, o)) {
-
-                                               return kValue;
-                                       }
-
-                                       // e. Increase k by 1.
-
-
-                                       k++;
-                               }
-
-                               // 7. Return undefined.
-
-
-                               return undefined;
-                       }
-
-               });
-       }
-
-       // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes#Polyfill
-
-
-       if (!String.prototype.includes) {
-
-               String.prototype.includes = function (search, start) {
-
-                       'use strict';
-
-                       if (search instanceof RegExp) {
-
-                               throw TypeError('first argument must not be a RegExp');
-                       }
-
-                       if (start === undefined) {
-                               start = 0;
-                       }
-
-                       return this.indexOf(search, start) !== -1;
-               };
-       }
-
-       // https://tc39.github.io/ecma262/#sec-array.prototype.includes
-
-
-       if (!Array.prototype.includes) {
-
-               Object.defineProperty(Array.prototype, 'includes', {
-
-                       value: function value(searchElement, fromIndex) {
-
-                               if (this == null) {
-
-                                       throw new TypeError('"this" is null or not defined');
-                               }
-
-                               // 1. Let O be ? ToObject(this value).
-
-
-                               var o = Object(this);
-
-                               // 2. Let len be ? ToLength(? Get(O, "length")).
-
-
-                               var len = o.length >>> 0;
-
-                               // 3. If len is 0, return false.
-
-
-                               if (len === 0) {
-
-                                       return false;
-                               }
-
-                               // 4. Let n be ? ToInteger(fromIndex).
-
-
-                               //    (If fromIndex is undefined, this step produces the value 0.)
-
-
-                               var n = fromIndex | 0;
-
-                               // 5. If n ≥ 0, then
-
-
-                               //  a. Let k be n.
-
-
-                               // 6. Else n < 0,
-
-
-                               //  a. Let k be len + n.
-
-
-                               //  b. If k < 0, let k be 0.
-
-
-                               var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);
-
-                               function sameValueZero(x, y) {
-
-                                       return x === y || typeof x === 'number' && typeof y === 'number' && isNaN(x) && isNaN(y);
-                               }
-
-                               // 7. Repeat, while k < len
-
-
-                               while (k < len) {
-
-                                       // a. Let elementK be the result of ? Get(O, ! ToString(k)).
-
-
-                                       // b. If SameValueZero(searchElement, elementK) is true, return true.
-
-
-                                       if (sameValueZero(o[k], searchElement)) {
-
-                                               return true;
-                                       }
-
-                                       // c. Increase k by 1.
-
-
-                                       k++;
-                               }
-
-                               // 8. Return false
-
-
-                               return false;
-                       }
-
-               });
-       }
-
-       // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#Polyfill
-
-
-       if (typeof Object.assign !== 'function') {
-
-               // Must be writable: true, enumerable: false, configurable: true
-
-
-               Object.defineProperty(Object, "assign", {
-
-                       value: function assign(target, varArgs) {
-                               // .length of function is 2
-
-
-                               'use strict';
-
-                               if (target === null || target === undefined) {
-
-                                       throw new TypeError('Cannot convert undefined or null to object');
-                               }
-
-                               var to = Object(target);
-
-                               for (var index = 1; index < arguments.length; index++) {
-
-                                       var nextSource = arguments[index];
-
-                                       if (nextSource !== null && nextSource !== undefined) {
-
-                                               for (var nextKey in nextSource) {
-
-                                                       // Avoid bugs when hasOwnProperty is shadowed
-
-
-                                                       if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {
-
-                                                               to[nextKey] = nextSource[nextKey];
-                                                       }
-                                               }
-                                       }
-                               }
-
-                               return to;
-                       },
-
-                       writable: true,
-
-                       configurable: true
-
-               });
-       }
-
-       var ColumnManager = function ColumnManager(table) {
-
-               this.table = table; //hold parent table
-
-
-               this.blockHozScrollEvent = false;
-
-               this.headersElement = this.createHeadersElement();
-
-               this.element = this.createHeaderElement(); //containing element
-
-
-               this.rowManager = null; //hold row manager object
-
-
-               this.columns = []; // column definition object
-
-
-               this.columnsByIndex = []; //columns by index
-
-
-               this.columnsByField = {}; //columns by field
-
-
-               this.scrollLeft = 0;
-
-               this.element.insertBefore(this.headersElement, this.element.firstChild);
-       };
-
-       ////////////// Setup Functions /////////////////
-
-
-       ColumnManager.prototype.createHeadersElement = function () {
-
-               var el = document.createElement("div");
-
-               el.classList.add("tabulator-headers");
-
-               return el;
-       };
-
-       ColumnManager.prototype.createHeaderElement = function () {
-
-               var el = document.createElement("div");
-
-               el.classList.add("tabulator-header");
-
-               if (!this.table.options.headerVisible) {
-
-                       el.classList.add("tabulator-header-hidden");
-               }
-
-               return el;
-       };
-
-       ColumnManager.prototype.initialize = function () {
-
-               var self = this;
-
-               //scroll body along with header
-
-
-               // self.element.addEventListener("scroll", function(e){
-
-
-               //      if(!self.blockHozScrollEvent){
-
-
-               //              self.table.rowManager.scrollHorizontal(self.element.scrollLeft);
-
-
-               //      }
-
-
-               // });
-
-       };
-
-       //link to row manager
-
-
-       ColumnManager.prototype.setRowManager = function (manager) {
-
-               this.rowManager = manager;
-       };
-
-       //return containing element
-
-
-       ColumnManager.prototype.getElement = function () {
-
-               return this.element;
-       };
-
-       //return header containing element
-
-
-       ColumnManager.prototype.getHeadersElement = function () {
-
-               return this.headersElement;
-       };
-
-       // ColumnManager.prototype.tempScrollBlock = function(){
-
-
-       //      clearTimeout(this.blockHozScrollEvent);
-
-
-       //      this.blockHozScrollEvent = setTimeout(() => {this.blockHozScrollEvent = false;}, 50);
-
-
-       // }
-
-
-       //scroll horizontally to match table body
-
-
-       ColumnManager.prototype.scrollHorizontal = function (left) {
-
-               var hozAdjust = 0,
-                   scrollWidth = this.element.scrollWidth - this.table.element.clientWidth;
-
-               // this.tempScrollBlock();
-
-
-               this.element.scrollLeft = left;
-
-               //adjust for vertical scrollbar moving table when present
-
-
-               if (left > scrollWidth) {
-
-                       hozAdjust = left - scrollWidth;
-
-                       this.element.style.marginLeft = -hozAdjust + "px";
-               } else {
-
-                       this.element.style.marginLeft = 0;
-               }
-
-               //keep frozen columns fixed in position
-
-
-               //this._calcFrozenColumnsPos(hozAdjust + 3);
-
-
-               this.scrollLeft = left;
-
-               if (this.table.modExists("frozenColumns")) {
-
-                       this.table.modules.frozenColumns.scrollHorizontal();
-               }
-       };
-
-       ///////////// Column Setup Functions /////////////
-
-
-       ColumnManager.prototype.generateColumnsFromRowData = function (data) {
-
-               var cols = [],
-                   row,
-                   sorter;
-
-               if (data && data.length) {
-
-                       row = data[0];
-
-                       for (var key in row) {
-
-                               var col = {
-
-                                       field: key,
-
-                                       title: key
-
-                               };
-
-                               var value = row[key];
-
-                               switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
-
-                                       case "undefined":
-
-                                               sorter = "string";
-
-                                               break;
-
-                                       case "boolean":
-
-                                               sorter = "boolean";
-
-                                               break;
-
-                                       case "object":
-
-                                               if (Array.isArray(value)) {
-
-                                                       sorter = "array";
-                                               } else {
-
-                                                       sorter = "string";
-                                               }
-
-                                               break;
-
-                                       default:
-
-                                               if (!isNaN(value) && value !== "") {
-
-                                                       sorter = "number";
-                                               } else {
-
-                                                       if (value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)) {
-
-                                                               sorter = "alphanum";
-                                                       } else {
-
-                                                               sorter = "string";
-                                                       }
-                                               }
-
-                                               break;
-
-                               }
-
-                               col.sorter = sorter;
-
-                               cols.push(col);
-                       }
-
-                       this.table.options.columns = cols;
-
-                       this.setColumns(this.table.options.columns);
-               }
-       };
-
-       ColumnManager.prototype.setColumns = function (cols, row) {
-
-               var self = this;
-
-               while (self.headersElement.firstChild) {
-                       self.headersElement.removeChild(self.headersElement.firstChild);
-               }self.columns = [];
-
-               self.columnsByIndex = [];
-
-               self.columnsByField = {};
-
-               //reset frozen columns
-
-
-               if (self.table.modExists("frozenColumns")) {
-
-                       self.table.modules.frozenColumns.reset();
-               }
-
-               cols.forEach(function (def, i) {
-
-                       self._addColumn(def);
-               });
-
-               self._reIndexColumns();
-
-               if (self.table.options.responsiveLayout && self.table.modExists("responsiveLayout", true)) {
-
-                       self.table.modules.responsiveLayout.initialize();
-               }
-
-               self.redraw(true);
-       };
-
-       ColumnManager.prototype._addColumn = function (definition, before, nextToColumn) {
-
-               var column = new Column(definition, this),
-                   colEl = column.getElement(),
-                   index = nextToColumn ? this.findColumnIndex(nextToColumn) : nextToColumn;
-
-               if (nextToColumn && index > -1) {
-
-                       var parentIndex = this.columns.indexOf(nextToColumn.getTopColumn());
-
-                       var nextEl = nextToColumn.getElement();
-
-                       if (before) {
-
-                               this.columns.splice(parentIndex, 0, column);
-
-                               nextEl.parentNode.insertBefore(colEl, nextEl);
-                       } else {
-
-                               this.columns.splice(parentIndex + 1, 0, column);
-
-                               nextEl.parentNode.insertBefore(colEl, nextEl.nextSibling);
-                       }
-               } else {
-
-                       if (before) {
-
-                               this.columns.unshift(column);
-
-                               this.headersElement.insertBefore(column.getElement(), this.headersElement.firstChild);
-                       } else {
-
-                               this.columns.push(column);
-
-                               this.headersElement.appendChild(column.getElement());
-                       }
-
-                       column.columnRendered();
-               }
-
-               return column;
-       };
-
-       ColumnManager.prototype.registerColumnField = function (col) {
-
-               if (col.definition.field) {
-
-                       this.columnsByField[col.definition.field] = col;
-               }
-       };
-
-       ColumnManager.prototype.registerColumnPosition = function (col) {
-
-               this.columnsByIndex.push(col);
-       };
-
-       ColumnManager.prototype._reIndexColumns = function () {
-
-               this.columnsByIndex = [];
-
-               this.columns.forEach(function (column) {
-
-                       column.reRegisterPosition();
-               });
-       };
-
-       //ensure column headers take up the correct amount of space in column groups
-
-
-       ColumnManager.prototype._verticalAlignHeaders = function () {
-
-               var self = this,
-                   minHeight = 0;
-
-               self.columns.forEach(function (column) {
-
-                       var height;
-
-                       column.clearVerticalAlign();
-
-                       height = column.getHeight();
-
-                       if (height > minHeight) {
-
-                               minHeight = height;
-                       }
-               });
-
-               self.columns.forEach(function (column) {
-
-                       column.verticalAlign(self.table.options.columnHeaderVertAlign, minHeight);
-               });
-
-               self.rowManager.adjustTableSize();
-       };
-
-       //////////////// Column Details /////////////////
-
-
-       ColumnManager.prototype.findColumn = function (subject) {
-
-               var self = this;
-
-               if ((typeof subject === 'undefined' ? 'undefined' : _typeof(subject)) == "object") {
-
-                       if (subject instanceof Column) {
-
-                               //subject is column element
-
-
-                               return subject;
-                       } else if (subject instanceof ColumnComponent) {
-
-                               //subject is public column component
-
-
-                               return subject._getSelf() || false;
-                       } else if (typeof HTMLElement !== "undefined" && subject instanceof HTMLElement) {
-
-                               //subject is a HTML element of the column header
-
-
-                               var match = self.columns.find(function (column) {
-
-                                       return column.element === subject;
-                               });
-
-                               return match || false;
-                       }
-               } else {
-
-                       //subject should be treated as the field name of the column
-
-
-                       return this.columnsByField[subject] || false;
-               }
-
-               //catch all for any other type of input
-
-
-               return false;
-       };
-
-       ColumnManager.prototype.getColumnByField = function (field) {
-
-               return this.columnsByField[field];
-       };
-
-       ColumnManager.prototype.getColumnsByFieldRoot = function (root) {
-               var _this = this;
-
-               var matches = [];
-
-               Object.keys(this.columnsByField).forEach(function (field) {
-
-                       var fieldRoot = field.split(".")[0];
-
-                       if (fieldRoot === root) {
-
-                               matches.push(_this.columnsByField[field]);
-                       }
-               });
-
-               return matches;
-       };
-
-       ColumnManager.prototype.getColumnByIndex = function (index) {
-
-               return this.columnsByIndex[index];
-       };
-
-       ColumnManager.prototype.getFirstVisibileColumn = function (index) {
-
-               var index = this.columnsByIndex.findIndex(function (col) {
-
-                       return col.visible;
-               });
-
-               return index > -1 ? this.columnsByIndex[index] : false;
-       };
-
-       ColumnManager.prototype.getColumns = function () {
-
-               return this.columns;
-       };
-
-       ColumnManager.prototype.findColumnIndex = function (column) {
-
-               return this.columnsByIndex.findIndex(function (col) {
-
-                       return column === col;
-               });
-       };
-
-       //return all columns that are not groups
-
-
-       ColumnManager.prototype.getRealColumns = function () {
-
-               return this.columnsByIndex;
-       };
-
-       //travers across columns and call action
-
-
-       ColumnManager.prototype.traverse = function (callback) {
-
-               var self = this;
-
-               self.columnsByIndex.forEach(function (column, i) {
-
-                       callback(column, i);
-               });
-       };
-
-       //get defintions of actual columns
-
-
-       ColumnManager.prototype.getDefinitions = function (active) {
-
-               var self = this,
-                   output = [];
-
-               self.columnsByIndex.forEach(function (column) {
-
-                       if (!active || active && column.visible) {
-
-                               output.push(column.getDefinition());
-                       }
-               });
-
-               return output;
-       };
-
-       //get full nested definition tree
-
-
-       ColumnManager.prototype.getDefinitionTree = function () {
-
-               var self = this,
-                   output = [];
-
-               self.columns.forEach(function (column) {
-
-                       output.push(column.getDefinition(true));
-               });
-
-               return output;
-       };
-
-       ColumnManager.prototype.getComponents = function (structured) {
-
-               var self = this,
-                   output = [],
-                   columns = structured ? self.columns : self.columnsByIndex;
-
-               columns.forEach(function (column) {
-
-                       output.push(column.getComponent());
-               });
-
-               return output;
-       };
-
-       ColumnManager.prototype.getWidth = function () {
-
-               var width = 0;
-
-               this.columnsByIndex.forEach(function (column) {
-
-                       if (column.visible) {
-
-                               width += column.getWidth();
-                       }
-               });
-
-               return width;
-       };
-
-       ColumnManager.prototype.moveColumn = function (from, to, after) {
-
-               this.moveColumnActual(from, to, after);
-
-               if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-                       this.table.modules.responsiveLayout.initialize();
-               }
-
-               if (this.table.modExists("columnCalcs")) {
-
-                       this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
-               }
-
-               to.element.parentNode.insertBefore(from.element, to.element);
-
-               if (after) {
-
-                       to.element.parentNode.insertBefore(to.element, from.element);
-               }
-
-               this._verticalAlignHeaders();
-
-               this.table.rowManager.reinitialize();
-       };
-
-       ColumnManager.prototype.moveColumnActual = function (from, to, after) {
-
-               if (from.parent.isGroup) {
-
-                       this._moveColumnInArray(from.parent.columns, from, to, after);
-               } else {
-
-                       this._moveColumnInArray(this.columns, from, to, after);
-               }
-
-               this._moveColumnInArray(this.columnsByIndex, from, to, after, true);
-
-               if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-                       this.table.modules.responsiveLayout.initialize();
-               }
-
-               if (this.table.options.columnMoved) {
-
-                       this.table.options.columnMoved.call(this.table, from.getComponent(), this.table.columnManager.getComponents());
-               }
-
-               if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.columns) {
-
-                       this.table.modules.persistence.save("columns");
-               }
-       };
-
-       ColumnManager.prototype._moveColumnInArray = function (columns, from, to, after, updateRows) {
-
-               var fromIndex = columns.indexOf(from),
-                   toIndex;
-
-               if (fromIndex > -1) {
-
-                       columns.splice(fromIndex, 1);
-
-                       toIndex = columns.indexOf(to);
-
-                       if (toIndex > -1) {
-
-                               if (after) {
-
-                                       toIndex = toIndex + 1;
-                               }
-                       } else {
-
-                               toIndex = fromIndex;
-                       }
-
-                       columns.splice(toIndex, 0, from);
-
-                       if (updateRows) {
-
-                               this.table.rowManager.rows.forEach(function (row) {
-
-                                       if (row.cells.length) {
-
-                                               var cell = row.cells.splice(fromIndex, 1)[0];
-
-                                               row.cells.splice(toIndex, 0, cell);
-                                       }
-                               });
-                       }
-               }
-       };
-
-       ColumnManager.prototype.scrollToColumn = function (column, position, ifVisible) {
-               var _this2 = this;
-
-               var left = 0,
-                   offset = 0,
-                   adjust = 0,
-                   colEl = column.getElement();
-
-               return new Promise(function (resolve, reject) {
-
-                       if (typeof position === "undefined") {
-
-                               position = _this2.table.options.scrollToColumnPosition;
-                       }
-
-                       if (typeof ifVisible === "undefined") {
-
-                               ifVisible = _this2.table.options.scrollToColumnIfVisible;
-                       }
-
-                       if (column.visible) {
-
-                               //align to correct position
-
-
-                               switch (position) {
-
-                                       case "middle":
-
-                                       case "center":
-
-                                               adjust = -_this2.element.clientWidth / 2;
-
-                                               break;
-
-                                       case "right":
-
-                                               adjust = colEl.clientWidth - _this2.headersElement.clientWidth;
-
-                                               break;
-
-                               }
-
-                               //check column visibility
-
-
-                               if (!ifVisible) {
-
-                                       offset = colEl.offsetLeft;
-
-                                       if (offset > 0 && offset + colEl.offsetWidth < _this2.element.clientWidth) {
-
-                                               return false;
-                                       }
-                               }
-
-                               //calculate scroll position
-
-
-                               left = colEl.offsetLeft + _this2.element.scrollLeft + adjust;
-
-                               left = Math.max(Math.min(left, _this2.table.rowManager.element.scrollWidth - _this2.table.rowManager.element.clientWidth), 0);
-
-                               _this2.table.rowManager.scrollHorizontal(left);
-
-                               _this2.scrollHorizontal(left);
-
-                               resolve();
-                       } else {
-
-                               console.warn("Scroll Error - Column not visible");
-
-                               reject("Scroll Error - Column not visible");
-                       }
-               });
-       };
-
-       //////////////// Cell Management /////////////////
-
-
-       ColumnManager.prototype.generateCells = function (row) {
-
-               var self = this;
-
-               var cells = [];
-
-               self.columnsByIndex.forEach(function (column) {
-
-                       cells.push(column.generateCell(row));
-               });
-
-               return cells;
-       };
-
-       //////////////// Column Management /////////////////
-
-
-       ColumnManager.prototype.getFlexBaseWidth = function () {
-
-               var self = this,
-                   totalWidth = self.table.element.clientWidth,
-                   //table element width
-
-
-               fixedWidth = 0;
-
-               //adjust for vertical scrollbar if present
-
-
-               if (self.rowManager.element.scrollHeight > self.rowManager.element.clientHeight) {
-
-                       totalWidth -= self.rowManager.element.offsetWidth - self.rowManager.element.clientWidth;
-               }
-
-               this.columnsByIndex.forEach(function (column) {
-
-                       var width, minWidth, colWidth;
-
-                       if (column.visible) {
-
-                               width = column.definition.width || 0;
-
-                               minWidth = typeof column.minWidth == "undefined" ? self.table.options.columnMinWidth : parseInt(column.minWidth);
-
-                               if (typeof width == "string") {
-
-                                       if (width.indexOf("%") > -1) {
-
-                                               colWidth = totalWidth / 100 * parseInt(width);
-                                       } else {
-
-                                               colWidth = parseInt(width);
-                                       }
-                               } else {
-
-                                       colWidth = width;
-                               }
-
-                               fixedWidth += colWidth > minWidth ? colWidth : minWidth;
-                       }
-               });
-
-               return fixedWidth;
-       };
-
-       ColumnManager.prototype.addColumn = function (definition, before, nextToColumn) {
-               var _this3 = this;
-
-               return new Promise(function (resolve, reject) {
-
-                       var column = _this3._addColumn(definition, before, nextToColumn);
-
-                       _this3._reIndexColumns();
-
-                       if (_this3.table.options.responsiveLayout && _this3.table.modExists("responsiveLayout", true)) {
-
-                               _this3.table.modules.responsiveLayout.initialize();
-                       }
-
-                       if (_this3.table.modExists("columnCalcs")) {
-
-                               _this3.table.modules.columnCalcs.recalc(_this3.table.rowManager.activeRows);
-                       }
-
-                       _this3.redraw();
-
-                       if (_this3.table.modules.layout.getMode() != "fitColumns") {
-
-                               column.reinitializeWidth();
-                       }
-
-                       _this3._verticalAlignHeaders();
-
-                       _this3.table.rowManager.reinitialize();
-
-                       resolve(column);
-               });
-       };
-
-       //remove column from system
-
-
-       ColumnManager.prototype.deregisterColumn = function (column) {
-
-               var field = column.getField(),
-                   index;
-
-               //remove from field list
-
-
-               if (field) {
-
-                       delete this.columnsByField[field];
-               }
-
-               //remove from index list
-
-
-               index = this.columnsByIndex.indexOf(column);
-
-               if (index > -1) {
-
-                       this.columnsByIndex.splice(index, 1);
-               }
-
-               //remove from column list
-
-
-               index = this.columns.indexOf(column);
-
-               if (index > -1) {
-
-                       this.columns.splice(index, 1);
-               }
-
-               if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-                       this.table.modules.responsiveLayout.initialize();
-               }
-
-               this.redraw();
-       };
-
-       //redraw columns
-
-
-       ColumnManager.prototype.redraw = function (force) {
-
-               if (force) {
-
-                       if (Tabulator.prototype.helpers.elVisible(this.element)) {
-
-                               this._verticalAlignHeaders();
-                       }
-
-                       this.table.rowManager.resetScroll();
-
-                       this.table.rowManager.reinitialize();
-               }
-
-               if (["fitColumns", "fitDataStretch"].indexOf(this.table.modules.layout.getMode()) > -1) {
-
-                       this.table.modules.layout.layout();
-               } else {
-
-                       if (force) {
-
-                               this.table.modules.layout.layout();
-                       } else {
-
-                               if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-                                       this.table.modules.responsiveLayout.update();
-                               }
-                       }
-               }
-
-               if (this.table.modExists("frozenColumns")) {
-
-                       this.table.modules.frozenColumns.layout();
-               }
-
-               if (this.table.modExists("columnCalcs")) {
-
-                       this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
-               }
-
-               if (force) {
-
-                       if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.columns) {
-
-                               this.table.modules.persistence.save("columns");
-                       }
-
-                       if (this.table.modExists("columnCalcs")) {
-
-                               this.table.modules.columnCalcs.redraw();
-                       }
-               }
-
-               this.table.footerManager.redraw();
-       };
-
-       //public column object
-
-       var ColumnComponent = function ColumnComponent(column) {
-
-               this._column = column;
-
-               this.type = "ColumnComponent";
-       };
-
-       ColumnComponent.prototype.getElement = function () {
-
-               return this._column.getElement();
-       };
-
-       ColumnComponent.prototype.getDefinition = function () {
-
-               return this._column.getDefinition();
-       };
-
-       ColumnComponent.prototype.getField = function () {
-
-               return this._column.getField();
-       };
-
-       ColumnComponent.prototype.getCells = function () {
-
-               var cells = [];
-
-               this._column.cells.forEach(function (cell) {
-
-                       cells.push(cell.getComponent());
-               });
-
-               return cells;
-       };
-
-       ColumnComponent.prototype.getVisibility = function () {
-
-               console.warn("getVisibility function is deprecated, you should now use the isVisible function");
-
-               return this._column.visible;
-       };
-
-       ColumnComponent.prototype.isVisible = function () {
-
-               return this._column.visible;
-       };
-
-       ColumnComponent.prototype.show = function () {
-
-               if (this._column.isGroup) {
-
-                       this._column.columns.forEach(function (column) {
-
-                               column.show();
-                       });
-               } else {
-
-                       this._column.show();
-               }
-       };
-
-       ColumnComponent.prototype.hide = function () {
-
-               if (this._column.isGroup) {
-
-                       this._column.columns.forEach(function (column) {
-
-                               column.hide();
-                       });
-               } else {
-
-                       this._column.hide();
-               }
-       };
-
-       ColumnComponent.prototype.toggle = function () {
-
-               if (this._column.visible) {
-
-                       this.hide();
-               } else {
-
-                       this.show();
-               }
-       };
-
-       ColumnComponent.prototype.delete = function () {
-
-               return this._column.delete();
-       };
-
-       ColumnComponent.prototype.getSubColumns = function () {
-
-               var output = [];
-
-               if (this._column.columns.length) {
-
-                       this._column.columns.forEach(function (column) {
-
-                               output.push(column.getComponent());
-                       });
-               }
-
-               return output;
-       };
-
-       ColumnComponent.prototype.getParentColumn = function () {
-
-               return this._column.parent instanceof Column ? this._column.parent.getComponent() : false;
-       };
-
-       ColumnComponent.prototype._getSelf = function () {
-
-               return this._column;
-       };
-
-       ColumnComponent.prototype.scrollTo = function () {
-
-               return this._column.table.columnManager.scrollToColumn(this._column);
-       };
-
-       ColumnComponent.prototype.getTable = function () {
-
-               return this._column.table;
-       };
-
-       ColumnComponent.prototype.headerFilterFocus = function () {
-
-               if (this._column.table.modExists("filter", true)) {
-
-                       this._column.table.modules.filter.setHeaderFilterFocus(this._column);
-               }
-       };
-
-       ColumnComponent.prototype.reloadHeaderFilter = function () {
-
-               if (this._column.table.modExists("filter", true)) {
-
-                       this._column.table.modules.filter.reloadHeaderFilter(this._column);
-               }
-       };
-
-       ColumnComponent.prototype.getHeaderFilterValue = function () {
-
-               if (this._column.table.modExists("filter", true)) {
-
-                       return this._column.table.modules.filter.getHeaderFilterValue(this._column);
-               }
-       };
-
-       ColumnComponent.prototype.setHeaderFilterValue = function (value) {
-
-               if (this._column.table.modExists("filter", true)) {
-
-                       this._column.table.modules.filter.setHeaderFilterValue(this._column, value);
-               }
-       };
-
-       ColumnComponent.prototype.move = function (to, after) {
-
-               var toColumn = this._column.table.columnManager.findColumn(to);
-
-               if (toColumn) {
-
-                       this._column.table.columnManager.moveColumn(this._column, toColumn, after);
-               } else {
-
-                       console.warn("Move Error - No matching column found:", toColumn);
-               }
-       };
-
-       ColumnComponent.prototype.getNextColumn = function () {
-
-               var nextCol = this._column.nextColumn();
-
-               return nextCol ? nextCol.getComponent() : false;
-       };
-
-       ColumnComponent.prototype.getPrevColumn = function () {
-
-               var prevCol = this._column.prevColumn();
-
-               return prevCol ? prevCol.getComponent() : false;
-       };
-
-       ColumnComponent.prototype.updateDefinition = function (updates) {
-
-               return this._column.updateDefinition(updates);
-       };
-
-       ColumnComponent.prototype.getWidth = function () {
-
-               return this._column.getWidth();
-       };
-
-       ColumnComponent.prototype.setWidth = function (width) {
-
-               if (width === true) {
-
-                       return this._column.reinitializeWidth(true);
-               } else {
-
-                       return this._column.setWidth(width);
-               }
-       };
-
-       ColumnComponent.prototype.validate = function () {
-
-               return this._column.validate();
-       };
-
-       var Column = function Column(def, parent) {
-
-               var self = this;
-
-               this.table = parent.table;
-
-               this.definition = def; //column definition
-
-               this.parent = parent; //hold parent object
-
-               this.type = "column"; //type of element
-
-               this.columns = []; //child columns
-
-               this.cells = []; //cells bound to this column
-
-               this.element = this.createElement(); //column header element
-
-               this.contentElement = false;
-
-               this.titleElement = false;
-
-               this.groupElement = this.createGroupElement(); //column group holder element
-
-               this.isGroup = false;
-
-               this.tooltip = false; //hold column tooltip
-
-               this.hozAlign = ""; //horizontal text alignment
-
-               this.vertAlign = ""; //vert text alignment
-
-
-               //multi dimensional filed handling
-
-               this.field = "";
-
-               this.fieldStructure = "";
-
-               this.getFieldValue = "";
-
-               this.setFieldValue = "";
-
-               this.titleFormatterRendered = false;
-
-               this.setField(this.definition.field);
-
-               if (this.table.options.invalidOptionWarnings) {
-
-                       this.checkDefinition();
-               }
-
-               this.modules = {}; //hold module variables;
-
-
-               this.cellEvents = {
-
-                       cellClick: false,
-
-                       cellDblClick: false,
-
-                       cellContext: false,
-
-                       cellTap: false,
-
-                       cellDblTap: false,
-
-                       cellTapHold: false,
-
-                       cellMouseEnter: false,
-
-                       cellMouseLeave: false,
-
-                       cellMouseOver: false,
-
-                       cellMouseOut: false,
-
-                       cellMouseMove: false
-
-               };
-
-               this.width = null; //column width
-
-               this.widthStyled = ""; //column width prestyled to improve render efficiency
-
-               this.minWidth = null; //column minimum width
-
-               this.minWidthStyled = ""; //column minimum prestyled to improve render efficiency
-
-               this.widthFixed = false; //user has specified a width for this column
-
-
-               this.visible = true; //default visible state
-
-
-               this.component = null;
-
-               this._mapDepricatedFunctionality();
-
-               //initialize column
-
-               if (def.columns) {
-
-                       this.isGroup = true;
-
-                       def.columns.forEach(function (def, i) {
-
-                               var newCol = new Column(def, self);
-
-                               self.attachColumn(newCol);
-                       });
-
-                       self.checkColumnVisibility();
-               } else {
-
-                       parent.registerColumnField(this);
-               }
-
-               if (def.rowHandle && this.table.options.movableRows !== false && this.table.modExists("moveRow")) {
-
-                       this.table.modules.moveRow.setHandle(true);
-               }
-
-               this._buildHeader();
-
-               this.bindModuleColumns();
-       };
-
-       Column.prototype.createElement = function () {
-
-               var el = document.createElement("div");
-
-               el.classList.add("tabulator-col");
-
-               el.setAttribute("role", "columnheader");
-
-               el.setAttribute("aria-sort", "none");
-
-               return el;
-       };
-
-       Column.prototype.createGroupElement = function () {
-
-               var el = document.createElement("div");
-
-               el.classList.add("tabulator-col-group-cols");
-
-               return el;
-       };
-
-       Column.prototype.checkDefinition = function () {
-               var _this4 = this;
-
-               Object.keys(this.definition).forEach(function (key) {
-
-                       if (_this4.defaultOptionList.indexOf(key) === -1) {
-
-                               console.warn("Invalid column definition option in '" + (_this4.field || _this4.definition.title) + "' column:", key);
-                       }
-               });
-       };
-
-       Column.prototype.setField = function (field) {
-
-               this.field = field;
-
-               this.fieldStructure = field ? this.table.options.nestedFieldSeparator ? field.split(this.table.options.nestedFieldSeparator) : [field] : [];
-
-               this.getFieldValue = this.fieldStructure.length > 1 ? this._getNestedData : this._getFlatData;
-
-               this.setFieldValue = this.fieldStructure.length > 1 ? this._setNestedData : this._setFlatData;
-       };
-
-       //register column position with column manager
-
-       Column.prototype.registerColumnPosition = function (column) {
-
-               this.parent.registerColumnPosition(column);
-       };
-
-       //register column position with column manager
-
-       Column.prototype.registerColumnField = function (column) {
-
-               this.parent.registerColumnField(column);
-       };
-
-       //trigger position registration
-
-       Column.prototype.reRegisterPosition = function () {
-
-               if (this.isGroup) {
-
-                       this.columns.forEach(function (column) {
-
-                               column.reRegisterPosition();
-                       });
-               } else {
-
-                       this.registerColumnPosition(this);
-               }
-       };
-
-       Column.prototype._mapDepricatedFunctionality = function () {
-
-               if (typeof this.definition.hideInHtml !== "undefined") {
-
-                       this.definition.htmlOutput = !this.definition.hideInHtml;
-
-                       console.warn("hideInHtml column definition property is deprecated, you should now use htmlOutput");
-               }
-
-               if (typeof this.definition.align !== "undefined") {
-
-                       this.definition.hozAlign = this.definition.align;
-
-                       console.warn("align column definition property is deprecated, you should now use hozAlign");
-               }
-
-               if (typeof this.definition.downloadTitle !== "undefined") {
-
-                       this.definition.titleDownload = this.definition.downloadTitle;
-
-                       console.warn("downloadTitle definition property is deprecated, you should now use titleDownload");
-               }
-       };
-
-       Column.prototype.setTooltip = function () {
-
-               var self = this,
-                   def = self.definition;
-
-               //set header tooltips
-
-               var tooltip = def.headerTooltip || def.tooltip === false ? def.headerTooltip : self.table.options.tooltipsHeader;
-
-               if (tooltip) {
-
-                       if (tooltip === true) {
-
-                               if (def.field) {
-
-                                       self.table.modules.localize.bind("columns|" + def.field, function (value) {
-
-                                               self.element.setAttribute("title", value || def.title);
-                                       });
-                               } else {
-
-                                       self.element.setAttribute("title", def.title);
-                               }
-                       } else {
-
-                               if (typeof tooltip == "function") {
-
-                                       tooltip = tooltip(self.getComponent());
-
-                                       if (tooltip === false) {
-
-                                               tooltip = "";
-                                       }
-                               }
-
-                               self.element.setAttribute("title", tooltip);
-                       }
-               } else {
-
-                       self.element.setAttribute("title", "");
-               }
-       };
-
-       //build header element
-
-       Column.prototype._buildHeader = function () {
-
-               var self = this,
-                   def = self.definition;
-
-               while (self.element.firstChild) {
-                       self.element.removeChild(self.element.firstChild);
-               }if (def.headerVertical) {
-
-                       self.element.classList.add("tabulator-col-vertical");
-
-                       if (def.headerVertical === "flip") {
-
-                               self.element.classList.add("tabulator-col-vertical-flip");
-                       }
-               }
-
-               self.contentElement = self._bindEvents();
-
-               self.contentElement = self._buildColumnHeaderContent();
-
-               self.element.appendChild(self.contentElement);
-
-               if (self.isGroup) {
-
-                       self._buildGroupHeader();
-               } else {
-
-                       self._buildColumnHeader();
-               }
-
-               self.setTooltip();
-
-               //set resizable handles
-
-               if (self.table.options.resizableColumns && self.table.modExists("resizeColumns")) {
-
-                       self.table.modules.resizeColumns.initializeColumn("header", self, self.element);
-               }
-
-               //set resizable handles
-
-               if (def.headerFilter && self.table.modExists("filter") && self.table.modExists("edit")) {
-
-                       if (typeof def.headerFilterPlaceholder !== "undefined" && def.field) {
-
-                               self.table.modules.localize.setHeaderFilterColumnPlaceholder(def.field, def.headerFilterPlaceholder);
-                       }
-
-                       self.table.modules.filter.initializeColumn(self);
-               }
-
-               //set resizable handles
-
-               if (self.table.modExists("frozenColumns")) {
-
-                       self.table.modules.frozenColumns.initializeColumn(self);
-               }
-
-               //set movable column
-
-               if (self.table.options.movableColumns && !self.isGroup && self.table.modExists("moveColumn")) {
-
-                       self.table.modules.moveColumn.initializeColumn(self);
-               }
-
-               //set calcs column
-
-               if ((def.topCalc || def.bottomCalc) && self.table.modExists("columnCalcs")) {
-
-                       self.table.modules.columnCalcs.initializeColumn(self);
-               }
-
-               //handle persistence
-
-               if (self.table.modExists("persistence") && self.table.modules.persistence.config.columns) {
-
-                       self.table.modules.persistence.initializeColumn(self);
-               }
-
-               //update header tooltip on mouse enter
-
-               self.element.addEventListener("mouseenter", function (e) {
-
-                       self.setTooltip();
-               });
-       };
-
-       Column.prototype._bindEvents = function () {
-
-               var self = this,
-                   def = self.definition,
-                   dblTap,
-                   tapHold,
-                   tap;
-
-               //setup header click event bindings
-
-               if (typeof def.headerClick == "function") {
-
-                       self.element.addEventListener("click", function (e) {
-                               def.headerClick(e, self.getComponent());
-                       });
-               }
-
-               if (typeof def.headerDblClick == "function") {
-
-                       self.element.addEventListener("dblclick", function (e) {
-                               def.headerDblClick(e, self.getComponent());
-                       });
-               }
-
-               if (typeof def.headerContext == "function") {
-
-                       self.element.addEventListener("contextmenu", function (e) {
-                               def.headerContext(e, self.getComponent());
-                       });
-               }
-
-               //setup header tap event bindings
-
-               if (typeof def.headerTap == "function") {
-
-                       tap = false;
-
-                       self.element.addEventListener("touchstart", function (e) {
-
-                               tap = true;
-                       }, { passive: true });
-
-                       self.element.addEventListener("touchend", function (e) {
-
-                               if (tap) {
-
-                                       def.headerTap(e, self.getComponent());
-                               }
-
-                               tap = false;
-                       });
-               }
-
-               if (typeof def.headerDblTap == "function") {
-
-                       dblTap = null;
-
-                       self.element.addEventListener("touchend", function (e) {
-
-                               if (dblTap) {
-
-                                       clearTimeout(dblTap);
-
-                                       dblTap = null;
-
-                                       def.headerDblTap(e, self.getComponent());
-                               } else {
-
-                                       dblTap = setTimeout(function () {
-
-                                               clearTimeout(dblTap);
-
-                                               dblTap = null;
-                                       }, 300);
-                               }
-                       });
-               }
-
-               if (typeof def.headerTapHold == "function") {
-
-                       tapHold = null;
-
-                       self.element.addEventListener("touchstart", function (e) {
-
-                               clearTimeout(tapHold);
-
-                               tapHold = setTimeout(function () {
-
-                                       clearTimeout(tapHold);
-
-                                       tapHold = null;
-
-                                       tap = false;
-
-                                       def.headerTapHold(e, self.getComponent());
-                               }, 1000);
-                       }, { passive: true });
-
-                       self.element.addEventListener("touchend", function (e) {
-
-                               clearTimeout(tapHold);
-
-                               tapHold = null;
-                       });
-               }
-
-               //store column cell click event bindings
-
-               if (typeof def.cellClick == "function") {
-
-                       self.cellEvents.cellClick = def.cellClick;
-               }
-
-               if (typeof def.cellDblClick == "function") {
-
-                       self.cellEvents.cellDblClick = def.cellDblClick;
-               }
-
-               if (typeof def.cellContext == "function") {
-
-                       self.cellEvents.cellContext = def.cellContext;
-               }
-
-               //store column mouse event bindings
-
-               if (typeof def.cellMouseEnter == "function") {
-
-                       self.cellEvents.cellMouseEnter = def.cellMouseEnter;
-               }
-
-               if (typeof def.cellMouseLeave == "function") {
-
-                       self.cellEvents.cellMouseLeave = def.cellMouseLeave;
-               }
-
-               if (typeof def.cellMouseOver == "function") {
-
-                       self.cellEvents.cellMouseOver = def.cellMouseOver;
-               }
-
-               if (typeof def.cellMouseOut == "function") {
-
-                       self.cellEvents.cellMouseOut = def.cellMouseOut;
-               }
-
-               if (typeof def.cellMouseMove == "function") {
-
-                       self.cellEvents.cellMouseMove = def.cellMouseMove;
-               }
-
-               //setup column cell tap event bindings
-
-               if (typeof def.cellTap == "function") {
-
-                       self.cellEvents.cellTap = def.cellTap;
-               }
-
-               if (typeof def.cellDblTap == "function") {
-
-                       self.cellEvents.cellDblTap = def.cellDblTap;
-               }
-
-               if (typeof def.cellTapHold == "function") {
-
-                       self.cellEvents.cellTapHold = def.cellTapHold;
-               }
-
-               //setup column cell edit callbacks
-
-               if (typeof def.cellEdited == "function") {
-
-                       self.cellEvents.cellEdited = def.cellEdited;
-               }
-
-               if (typeof def.cellEditing == "function") {
-
-                       self.cellEvents.cellEditing = def.cellEditing;
-               }
-
-               if (typeof def.cellEditCancelled == "function") {
-
-                       self.cellEvents.cellEditCancelled = def.cellEditCancelled;
-               }
-       };
-
-       //build header element for header
-
-       Column.prototype._buildColumnHeader = function () {
-
-               var self = this,
-                   def = self.definition,
-                   table = self.table,
-                   sortable;
-
-               //set column sorter
-
-               if (table.modExists("sort")) {
-
-                       table.modules.sort.initializeColumn(self, self.contentElement);
-               }
-
-               //set column header context menu
-
-               if ((def.headerContextMenu || def.headerMenu) && table.modExists("menu")) {
-
-                       table.modules.menu.initializeColumnHeader(self);
-               }
-
-               //set column formatter
-
-               if (table.modExists("format")) {
-
-                       table.modules.format.initializeColumn(self);
-               }
-
-               //set column editor
-
-               if (typeof def.editor != "undefined" && table.modExists("edit")) {
-
-                       table.modules.edit.initializeColumn(self);
-               }
-
-               //set colum validator
-
-               if (typeof def.validator != "undefined" && table.modExists("validate")) {
-
-                       table.modules.validate.initializeColumn(self);
-               }
-
-               //set column mutator
-
-               if (table.modExists("mutator")) {
-
-                       table.modules.mutator.initializeColumn(self);
-               }
-
-               //set column accessor
-
-               if (table.modExists("accessor")) {
-
-                       table.modules.accessor.initializeColumn(self);
-               }
-
-               //set respoviveLayout
-
-               if (_typeof(table.options.responsiveLayout) && table.modExists("responsiveLayout")) {
-
-                       table.modules.responsiveLayout.initializeColumn(self);
-               }
-
-               //set column visibility
-
-               if (typeof def.visible != "undefined") {
-
-                       if (def.visible) {
-
-                               self.show(true);
-                       } else {
-
-                               self.hide(true);
-                       }
-               }
-
-               //asign additional css classes to column header
-
-               if (def.cssClass) {
-
-                       var classeNames = def.cssClass.split(" ");
-
-                       classeNames.forEach(function (className) {
-
-                               self.element.classList.add(className);
-                       });
-               }
-
-               if (def.field) {
-
-                       this.element.setAttribute("tabulator-field", def.field);
-               }
-
-               //set min width if present
-
-               self.setMinWidth(typeof def.minWidth == "undefined" ? self.table.options.columnMinWidth : parseInt(def.minWidth));
-
-               self.reinitializeWidth();
-
-               //set tooltip if present
-
-               self.tooltip = self.definition.tooltip || self.definition.tooltip === false ? self.definition.tooltip : self.table.options.tooltips;
-
-               //set orizontal text alignment
-
-               self.hozAlign = typeof self.definition.hozAlign == "undefined" ? self.table.options.cellHozAlign : self.definition.hozAlign;
-
-               self.vertAlign = typeof self.definition.vertAlign == "undefined" ? self.table.options.cellVertAlign : self.definition.vertAlign;
-       };
-
-       Column.prototype._buildColumnHeaderContent = function () {
-
-               var def = this.definition,
-                   table = this.table;
-
-               var contentElement = document.createElement("div");
-
-               contentElement.classList.add("tabulator-col-content");
-
-               this.titleElement = this._buildColumnHeaderTitle();
-
-               contentElement.appendChild(this.titleElement);
-
-               return contentElement;
-       };
-
-       //build title element of column
-
-       Column.prototype._buildColumnHeaderTitle = function () {
-
-               var self = this,
-                   def = self.definition,
-                   table = self.table,
-                   title;
-
-               var titleHolderElement = document.createElement("div");
-
-               titleHolderElement.classList.add("tabulator-col-title");
-
-               if (def.editableTitle) {
-
-                       var titleElement = document.createElement("input");
-
-                       titleElement.classList.add("tabulator-title-editor");
-
-                       titleElement.addEventListener("click", function (e) {
-
-                               e.stopPropagation();
-
-                               titleElement.focus();
-                       });
-
-                       titleElement.addEventListener("change", function () {
-
-                               def.title = titleElement.value;
-
-                               table.options.columnTitleChanged.call(self.table, self.getComponent());
-                       });
-
-                       titleHolderElement.appendChild(titleElement);
-
-                       if (def.field) {
-
-                               table.modules.localize.bind("columns|" + def.field, function (text) {
-
-                                       titleElement.value = text || def.title || "&nbsp;";
-                               });
-                       } else {
-
-                               titleElement.value = def.title || "&nbsp;";
-                       }
-               } else {
-
-                       if (def.field) {
-
-                               table.modules.localize.bind("columns|" + def.field, function (text) {
-
-                                       self._formatColumnHeaderTitle(titleHolderElement, text || def.title || "&nbsp;");
-                               });
-                       } else {
-
-                               self._formatColumnHeaderTitle(titleHolderElement, def.title || "&nbsp;");
-                       }
-               }
-
-               return titleHolderElement;
-       };
-
-       Column.prototype._formatColumnHeaderTitle = function (el, title) {
-               var _this5 = this;
-
-               var formatter, contents, params, mockCell, onRendered;
-
-               if (this.definition.titleFormatter && this.table.modExists("format")) {
-
-                       formatter = this.table.modules.format.getFormatter(this.definition.titleFormatter);
-
-                       onRendered = function onRendered(callback) {
-
-                               _this5.titleFormatterRendered = callback;
-                       };
-
-                       mockCell = {
-
-                               getValue: function getValue() {
-
-                                       return title;
-                               },
-
-                               getElement: function getElement() {
-
-                                       return el;
-                               }
-
-                       };
-
-                       params = this.definition.titleFormatterParams || {};
-
-                       params = typeof params === "function" ? params() : params;
-
-                       contents = formatter.call(this.table.modules.format, mockCell, params, onRendered);
-
-                       switch (typeof contents === 'undefined' ? 'undefined' : _typeof(contents)) {
-
-                               case "object":
-
-                                       if (contents instanceof Node) {
-
-                                               el.appendChild(contents);
-                                       } else {
-
-                                               el.innerHTML = "";
-
-                                               console.warn("Format Error - Title formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:", contents);
-                                       }
-
-                                       break;
-
-                               case "undefined":
-
-                               case "null":
-
-                                       el.innerHTML = "";
-
-                                       break;
-
-                               default:
-
-                                       el.innerHTML = contents;
-
-                       }
-               } else {
-
-                       el.innerHTML = title;
-               }
-       };
-
-       //build header element for column group
-
-       Column.prototype._buildGroupHeader = function () {
-               var _this6 = this;
-
-               this.element.classList.add("tabulator-col-group");
-
-               this.element.setAttribute("role", "columngroup");
-
-               this.element.setAttribute("aria-title", this.definition.title);
-
-               //asign additional css classes to column header
-
-               if (this.definition.cssClass) {
-
-                       var classeNames = this.definition.cssClass.split(" ");
-
-                       classeNames.forEach(function (className) {
-
-                               _this6.element.classList.add(className);
-                       });
-               }
-
-               //set column header context menu
-
-               if ((this.definition.headerContextMenu || this.definition.headerMenu) && this.table.modExists("menu")) {
-
-                       this.table.modules.menu.initializeColumnHeader(this);
-               }
-
-               this.element.appendChild(this.groupElement);
-       };
-
-       //flat field lookup
-
-       Column.prototype._getFlatData = function (data) {
-
-               return data[this.field];
-       };
-
-       //nested field lookup
-
-       Column.prototype._getNestedData = function (data) {
-
-               var dataObj = data,
-                   structure = this.fieldStructure,
-                   length = structure.length,
-                   output;
-
-               for (var _i = 0; _i < length; _i++) {
-
-                       dataObj = dataObj[structure[_i]];
-
-                       output = dataObj;
-
-                       if (!dataObj) {
-
-                               break;
-                       }
-               }
-
-               return output;
-       };
-
-       //flat field set
-
-       Column.prototype._setFlatData = function (data, value) {
-
-               if (this.field) {
-
-                       data[this.field] = value;
-               }
-       };
-
-       //nested field set
-
-       Column.prototype._setNestedData = function (data, value) {
-
-               var dataObj = data,
-                   structure = this.fieldStructure,
-                   length = structure.length;
-
-               for (var _i2 = 0; _i2 < length; _i2++) {
-
-                       if (_i2 == length - 1) {
-
-                               dataObj[structure[_i2]] = value;
-                       } else {
-
-                               if (!dataObj[structure[_i2]]) {
-
-                                       if (typeof value !== "undefined") {
-
-                                               dataObj[structure[_i2]] = {};
-                                       } else {
-
-                                               break;
-                                       }
-                               }
-
-                               dataObj = dataObj[structure[_i2]];
-                       }
-               }
-       };
-
-       //attach column to this group
-
-       Column.prototype.attachColumn = function (column) {
-
-               var self = this;
-
-               if (self.groupElement) {
-
-                       self.columns.push(column);
-
-                       self.groupElement.appendChild(column.getElement());
-               } else {
-
-                       console.warn("Column Warning - Column being attached to another column instead of column group");
-               }
-       };
-
-       //vertically align header in column
-
-       Column.prototype.verticalAlign = function (alignment, height) {
-
-               //calculate height of column header and group holder element
-
-               var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : height || this.parent.getHeadersElement().clientHeight;
-
-               // var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : this.parent.getHeadersElement().clientHeight;
-
-
-               this.element.style.height = parentHeight + "px";
-
-               if (this.isGroup) {
-
-                       this.groupElement.style.minHeight = parentHeight - this.contentElement.offsetHeight + "px";
-               }
-
-               //vertically align cell contents
-
-               if (!this.isGroup && alignment !== "top") {
-
-                       if (alignment === "bottom") {
-
-                               this.element.style.paddingTop = this.element.clientHeight - this.contentElement.offsetHeight + "px";
-                       } else {
-
-                               this.element.style.paddingTop = (this.element.clientHeight - this.contentElement.offsetHeight) / 2 + "px";
-                       }
-               }
-
-               this.columns.forEach(function (column) {
-
-                       column.verticalAlign(alignment);
-               });
-       };
-
-       //clear vertical alignmenet
-
-       Column.prototype.clearVerticalAlign = function () {
-
-               this.element.style.paddingTop = "";
-
-               this.element.style.height = "";
-
-               this.element.style.minHeight = "";
-
-               this.groupElement.style.minHeight = "";
-
-               this.columns.forEach(function (column) {
-
-                       column.clearVerticalAlign();
-               });
-       };
-
-       Column.prototype.bindModuleColumns = function () {
-
-               //check if rownum formatter is being used on a column
-
-               if (this.definition.formatter == "rownum") {
-
-                       this.table.rowManager.rowNumColumn = this;
-               }
-       };
-
-       //// Retreive Column Information ////
-
-
-       //return column header element
-
-       Column.prototype.getElement = function () {
-
-               return this.element;
-       };
-
-       //return colunm group element
-
-       Column.prototype.getGroupElement = function () {
-
-               return this.groupElement;
-       };
-
-       //return field name
-
-       Column.prototype.getField = function () {
-
-               return this.field;
-       };
-
-       //return the first column in a group
-
-       Column.prototype.getFirstColumn = function () {
-
-               if (!this.isGroup) {
-
-                       return this;
-               } else {
-
-                       if (this.columns.length) {
-
-                               return this.columns[0].getFirstColumn();
-                       } else {
-
-                               return false;
-                       }
-               }
-       };
-
-       //return the last column in a group
-
-       Column.prototype.getLastColumn = function () {
-
-               if (!this.isGroup) {
-
-                       return this;
-               } else {
-
-                       if (this.columns.length) {
-
-                               return this.columns[this.columns.length - 1].getLastColumn();
-                       } else {
-
-                               return false;
-                       }
-               }
-       };
-
-       //return all columns in a group
-
-       Column.prototype.getColumns = function () {
-
-               return this.columns;
-       };
-
-       //return all columns in a group
-
-       Column.prototype.getCells = function () {
-
-               return this.cells;
-       };
-
-       //retreive the top column in a group of columns
-
-       Column.prototype.getTopColumn = function () {
-
-               if (this.parent.isGroup) {
-
-                       return this.parent.getTopColumn();
-               } else {
-
-                       return this;
-               }
-       };
-
-       //return column definition object
-
-       Column.prototype.getDefinition = function (updateBranches) {
-
-               var colDefs = [];
-
-               if (this.isGroup && updateBranches) {
-
-                       this.columns.forEach(function (column) {
-
-                               colDefs.push(column.getDefinition(true));
-                       });
-
-                       this.definition.columns = colDefs;
-               }
-
-               return this.definition;
-       };
-
-       //////////////////// Actions ////////////////////
-
-
-       Column.prototype.checkColumnVisibility = function () {
-
-               var visible = false;
-
-               this.columns.forEach(function (column) {
-
-                       if (column.visible) {
-
-                               visible = true;
-                       }
-               });
-
-               if (visible) {
-
-                       this.show();
-
-                       this.parent.table.options.columnVisibilityChanged.call(this.table, this.getComponent(), false);
-               } else {
-
-                       this.hide();
-               }
-       };
-
-       //show column
-
-       Column.prototype.show = function (silent, responsiveToggle) {
-
-               if (!this.visible) {
-
-                       this.visible = true;
-
-                       this.element.style.display = "";
-
-                       if (this.parent.isGroup) {
-
-                               this.parent.checkColumnVisibility();
-                       }
-
-                       this.cells.forEach(function (cell) {
-
-                               cell.show();
-                       });
-
-                       if (!this.isGroup && this.width === null) {
-
-                               this.reinitializeWidth();
-                       }
-
-                       this.table.columnManager._verticalAlignHeaders();
-
-                       if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.columns) {
-
-                               this.table.modules.persistence.save("columns");
-                       }
-
-                       if (!responsiveToggle && this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-                               this.table.modules.responsiveLayout.updateColumnVisibility(this, this.visible);
-                       }
-
-                       if (!silent) {
-
-                               this.table.options.columnVisibilityChanged.call(this.table, this.getComponent(), true);
-                       }
-
-                       if (this.parent.isGroup) {
-
-                               this.parent.matchChildWidths();
-                       }
-               }
-       };
-
-       //hide column
-
-       Column.prototype.hide = function (silent, responsiveToggle) {
-
-               if (this.visible) {
-
-                       this.visible = false;
-
-                       this.element.style.display = "none";
-
-                       this.table.columnManager._verticalAlignHeaders();
-
-                       if (this.parent.isGroup) {
-
-                               this.parent.checkColumnVisibility();
-                       }
-
-                       this.cells.forEach(function (cell) {
-
-                               cell.hide();
-                       });
-
-                       if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.columns) {
-
-                               this.table.modules.persistence.save("columns");
-                       }
-
-                       if (!responsiveToggle && this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-                               this.table.modules.responsiveLayout.updateColumnVisibility(this, this.visible);
-                       }
-
-                       if (!silent) {
-
-                               this.table.options.columnVisibilityChanged.call(this.table, this.getComponent(), false);
-                       }
-
-                       if (this.parent.isGroup) {
-
-                               this.parent.matchChildWidths();
-                       }
-               }
-       };
-
-       Column.prototype.matchChildWidths = function () {
-
-               var childWidth = 0;
-
-               if (this.contentElement && this.columns.length) {
-
-                       this.columns.forEach(function (column) {
-
-                               if (column.visible) {
-
-                                       childWidth += column.getWidth();
-                               }
-                       });
-
-                       this.contentElement.style.maxWidth = childWidth - 1 + "px";
-
-                       if (this.parent.isGroup) {
-
-                               this.parent.matchChildWidths();
-                       }
-               }
-       };
-
-       Column.prototype.setWidth = function (width) {
-
-               this.widthFixed = true;
-
-               this.setWidthActual(width);
-       };
-
-       Column.prototype.setWidthActual = function (width) {
-
-               if (isNaN(width)) {
-
-                       width = Math.floor(this.table.element.clientWidth / 100 * parseInt(width));
-               }
-
-               width = Math.max(this.minWidth, width);
-
-               this.width = width;
-
-               this.widthStyled = width ? width + "px" : "";
-
-               this.element.style.width = this.widthStyled;
-
-               if (!this.isGroup) {
-
-                       this.cells.forEach(function (cell) {
-
-                               cell.setWidth();
-                       });
-               }
-
-               if (this.parent.isGroup) {
-
-                       this.parent.matchChildWidths();
-               }
-
-               //set resizable handles
-
-               if (this.table.modExists("frozenColumns")) {
-
-                       this.table.modules.frozenColumns.layout();
-               }
-       };
-
-       Column.prototype.checkCellHeights = function () {
-
-               var rows = [];
-
-               this.cells.forEach(function (cell) {
-
-                       if (cell.row.heightInitialized) {
-
-                               if (cell.row.getElement().offsetParent !== null) {
-
-                                       rows.push(cell.row);
-
-                                       cell.row.clearCellHeight();
-                               } else {
-
-                                       cell.row.heightInitialized = false;
-                               }
-                       }
-               });
-
-               rows.forEach(function (row) {
-
-                       row.calcHeight();
-               });
-
-               rows.forEach(function (row) {
-
-                       row.setCellHeight();
-               });
-       };
-
-       Column.prototype.getWidth = function () {
-
-               var width = 0;
-
-               if (this.isGroup) {
-
-                       this.columns.forEach(function (column) {
-
-                               if (column.visible) {
-
-                                       width += column.getWidth();
-                               }
-                       });
-               } else {
-
-                       width = this.width;
-               }
-
-               return width;
-       };
-
-       Column.prototype.getHeight = function () {
-
-               return this.element.offsetHeight;
-       };
-
-       Column.prototype.setMinWidth = function (minWidth) {
-
-               this.minWidth = minWidth;
-
-               this.minWidthStyled = minWidth ? minWidth + "px" : "";
-
-               this.element.style.minWidth = this.minWidthStyled;
-
-               this.cells.forEach(function (cell) {
-
-                       cell.setMinWidth();
-               });
-       };
-
-       Column.prototype.delete = function () {
-               var _this7 = this;
-
-               return new Promise(function (resolve, reject) {
-
-                       if (_this7.isGroup) {
-
-                               _this7.columns.forEach(function (column) {
-
-                                       column.delete();
-                               });
-                       }
-
-                       //cancel edit if column is currently being edited
-
-                       if (_this7.table.modExists("edit")) {
-
-                               if (_this7.table.modules.edit.currentCell.column === _this7) {
-
-                                       _this7.table.modules.edit.cancelEdit();
-                               }
-                       }
-
-                       var cellCount = _this7.cells.length;
-
-                       for (var _i3 = 0; _i3 < cellCount; _i3++) {
-
-                               _this7.cells[0].delete();
-                       }
-
-                       _this7.element.parentNode.removeChild(_this7.element);
-
-                       _this7.table.columnManager.deregisterColumn(_this7);
-
-                       resolve();
-               });
-       };
-
-       Column.prototype.columnRendered = function () {
-
-               if (this.titleFormatterRendered) {
-
-                       this.titleFormatterRendered();
-               }
-       };
-
-       Column.prototype.validate = function () {
-
-               var invalid = [];
-
-               this.cells.forEach(function (cell) {
-
-                       if (!cell.validate()) {
-
-                               invalid.push(cell.getComponent());
-                       }
-               });
-
-               return invalid.length ? invalid : true;
-       };
-
-       //////////////// Cell Management /////////////////
-
-
-       //generate cell for this column
-
-       Column.prototype.generateCell = function (row) {
-
-               var self = this;
-
-               var cell = new Cell(self, row);
-
-               this.cells.push(cell);
-
-               return cell;
-       };
-
-       Column.prototype.nextColumn = function () {
-
-               var index = this.table.columnManager.findColumnIndex(this);
-
-               return index > -1 ? this._nextVisibleColumn(index + 1) : false;
-       };
-
-       Column.prototype._nextVisibleColumn = function (index) {
-
-               var column = this.table.columnManager.getColumnByIndex(index);
-
-               return !column || column.visible ? column : this._nextVisibleColumn(index + 1);
-       };
-
-       Column.prototype.prevColumn = function () {
-
-               var index = this.table.columnManager.findColumnIndex(this);
-
-               return index > -1 ? this._prevVisibleColumn(index - 1) : false;
-       };
-
-       Column.prototype._prevVisibleColumn = function (index) {
-
-               var column = this.table.columnManager.getColumnByIndex(index);
-
-               return !column || column.visible ? column : this._prevVisibleColumn(index - 1);
-       };
-
-       Column.prototype.reinitializeWidth = function (force) {
-
-               this.widthFixed = false;
-
-               //set width if present
-
-               if (typeof this.definition.width !== "undefined" && !force) {
-
-                       this.setWidth(this.definition.width);
-               }
-
-               //hide header filters to prevent them altering column width
-
-               if (this.table.modExists("filter")) {
-
-                       this.table.modules.filter.hideHeaderFilterElements();
-               }
-
-               this.fitToData();
-
-               //show header filters again after layout is complete
-
-               if (this.table.modExists("filter")) {
-
-                       this.table.modules.filter.showHeaderFilterElements();
-               }
-       };
-
-       //set column width to maximum cell width
-
-       Column.prototype.fitToData = function () {
-
-               var self = this;
-
-               if (!this.widthFixed) {
-
-                       this.element.style.width = "";
-
-                       self.cells.forEach(function (cell) {
-
-                               cell.clearWidth();
-                       });
-               }
-
-               var maxWidth = this.element.offsetWidth;
-
-               if (!self.width || !this.widthFixed) {
-
-                       self.cells.forEach(function (cell) {
-
-                               var width = cell.getWidth();
-
-                               if (width > maxWidth) {
-
-                                       maxWidth = width;
-                               }
-                       });
-
-                       if (maxWidth) {
-
-                               self.setWidthActual(maxWidth + 1);
-                       }
-               }
-       };
-
-       Column.prototype.updateDefinition = function (updates) {
-               var _this8 = this;
-
-               return new Promise(function (resolve, reject) {
-
-                       var definition;
-
-                       if (!_this8.isGroup) {
-
-                               definition = Object.assign({}, _this8.getDefinition());
-
-                               definition = Object.assign(definition, updates);
-
-                               _this8.table.columnManager.addColumn(definition, false, _this8).then(function (column) {
-
-                                       if (definition.field == _this8.field) {
-
-                                               _this8.field = false; //cleair field name to prevent deletion of duplicate column from arrays
-                                       }
-
-                                       _this8.delete().then(function () {
-
-                                               resolve(column.getComponent());
-                                       }).catch(function (err) {
-
-                                               reject(err);
-                                       });
-                               }).catch(function (err) {
-
-                                       reject(err);
-                               });
-                       } else {
-
-                               console.warn("Column Update Error - The updateDefintion function is only available on columns, not column groups");
-
-                               reject("Column Update Error - The updateDefintion function is only available on columns, not column groups");
-                       }
-               });
-       };
-
-       Column.prototype.deleteCell = function (cell) {
-
-               var index = this.cells.indexOf(cell);
-
-               if (index > -1) {
-
-                       this.cells.splice(index, 1);
-               }
-       };
-
-       Column.prototype.defaultOptionList = ["title", "field", "columns", "visible", "align", "hozAlign", "vertAlign", "width", "minWidth", "widthGrow", "widthShrink", "resizable", "frozen", "responsive", "tooltip", "cssClass", "rowHandle", "hideInHtml", "print", "htmlOutput", "sorter", "sorterParams", "formatter", "formatterParams", "variableHeight", "editable", "editor", "editorParams", "validator", "mutator", "mutatorParams", "mutatorData", "mutatorDataParams", "mutatorEdit", "mutatorEditParams", "mutatorClipboard", "mutatorClipboardParams", "accessor", "accessorParams", "accessorData", "accessorDataParams", "accessorDownload", "accessorDownloadParams", "accessorClipboard", "accessorClipboardParams", "accessorPrint", "accessorPrintParams", "accessorHtmlOutput", "accessorHtmlOutputParams", "clipboard", "download", "downloadTitle", "topCalc", "topCalcParams", "topCalcFormatter", "topCalcFormatterParams", "bottomCalc", "bottomCalcParams", "bottomCalcFormatter", "bottomCalcFormatterParams", "cellClick", "cellDblClick", "cellContext", "cellTap", "cellDblTap", "cellTapHold", "cellMouseEnter", "cellMouseLeave", "cellMouseOver", "cellMouseOut", "cellMouseMove", "cellEditing", "cellEdited", "cellEditCancelled", "headerSort", "headerSortStartingDir", "headerSortTristate", "headerClick", "headerDblClick", "headerContext", "headerTap", "headerDblTap", "headerTapHold", "headerTooltip", "headerVertical", "editableTitle", "titleFormatter", "titleFormatterParams", "headerFilter", "headerFilterPlaceholder", "headerFilterParams", "headerFilterEmptyCheck", "headerFilterFunc", "headerFilterFuncParams", "headerFilterLiveFilter", "print", "headerContextMenu", "headerMenu", "contextMenu", "formatterPrint", "formatterPrintParams", "formatterClipboard", "formatterClipboardParams", "formatterHtmlOutput", "formatterHtmlOutputParams", "titlePrint", "titleClipboard", "titleHtmlOutput", "titleDownload"];
-
-       //////////////// Event Bindings /////////////////
-
-
-       //////////////// Object Generation /////////////////
-
-       Column.prototype.getComponent = function () {
-
-               if (!this.component) {
-
-                       this.component = new ColumnComponent(this);
-               }
-
-               return this.component;
-       };
-
-       var RowManager = function RowManager(table) {
-
-               this.table = table;
-
-               this.element = this.createHolderElement(); //containing element
-
-               this.tableElement = this.createTableElement(); //table element
-
-               this.heightFixer = this.createTableElement(); //table element
-
-               this.columnManager = null; //hold column manager object
-
-               this.height = 0; //hold height of table element
-
-
-               this.firstRender = false; //handle first render
-
-               this.renderMode = "virtual"; //current rendering mode
-
-               this.fixedHeight = false; //current rendering mode
-
-
-               this.rows = []; //hold row data objects
-
-               this.activeRows = []; //rows currently available to on display in the table
-
-               this.activeRowsCount = 0; //count of active rows
-
-
-               this.displayRows = []; //rows currently on display in the table
-
-               this.displayRowsCount = 0; //count of display rows
-
-
-               this.scrollTop = 0;
-
-               this.scrollLeft = 0;
-
-               this.vDomRowHeight = 20; //approximation of row heights for padding
-
-
-               this.vDomTop = 0; //hold position for first rendered row in the virtual DOM
-
-               this.vDomBottom = 0; //hold possition for last rendered row in the virtual DOM
-
-
-               this.vDomScrollPosTop = 0; //last scroll position of the vDom top;
-
-               this.vDomScrollPosBottom = 0; //last scroll position of the vDom bottom;
-
-
-               this.vDomTopPad = 0; //hold value of padding for top of virtual DOM
-
-               this.vDomBottomPad = 0; //hold value of padding for bottom of virtual DOM
-
-
-               this.vDomMaxRenderChain = 90; //the maximum number of dom elements that can be rendered in 1 go
-
-
-               this.vDomWindowBuffer = 0; //window row buffer before removing elements, to smooth scrolling
-
-
-               this.vDomWindowMinTotalRows = 20; //minimum number of rows to be generated in virtual dom (prevent buffering issues on tables with tall rows)
-
-               this.vDomWindowMinMarginRows = 5; //minimum number of rows to be generated in virtual dom margin
-
-
-               this.vDomTopNewRows = []; //rows to normalize after appending to optimize render speed
-
-               this.vDomBottomNewRows = []; //rows to normalize after appending to optimize render speed
-
-
-               this.rowNumColumn = false; //hold column component for row number column
-
-
-               this.redrawBlock = false; //prevent redraws to allow multiple data manipulations becore continuing
-
-               this.redrawBlockRestoreConfig = false; //store latest redraw function calls for when redraw is needed
-
-               this.redrawBlockRederInPosition = false; //store latest redraw function calls for when redraw is needed
-       };
-
-       //////////////// Setup Functions /////////////////
-
-
-       RowManager.prototype.createHolderElement = function () {
-
-               var el = document.createElement("div");
-
-               el.classList.add("tabulator-tableHolder");
-
-               el.setAttribute("tabindex", 0);
-
-               return el;
-       };
-
-       RowManager.prototype.createTableElement = function () {
-
-               var el = document.createElement("div");
-
-               el.classList.add("tabulator-table");
-
-               return el;
-       };
-
-       //return containing element
-
-       RowManager.prototype.getElement = function () {
-
-               return this.element;
-       };
-
-       //return table element
-
-       RowManager.prototype.getTableElement = function () {
-
-               return this.tableElement;
-       };
-
-       //return position of row in table
-
-       RowManager.prototype.getRowPosition = function (row, active) {
-
-               if (active) {
-
-                       return this.activeRows.indexOf(row);
-               } else {
-
-                       return this.rows.indexOf(row);
-               }
-       };
-
-       //link to column manager
-
-       RowManager.prototype.setColumnManager = function (manager) {
-
-               this.columnManager = manager;
-       };
-
-       RowManager.prototype.initialize = function () {
-
-               var self = this;
-
-               self.setRenderMode();
-
-               //initialize manager
-
-               self.element.appendChild(self.tableElement);
-
-               self.firstRender = true;
-
-               //scroll header along with table body
-
-               self.element.addEventListener("scroll", function () {
-
-                       var left = self.element.scrollLeft;
-
-                       //handle horizontal scrolling
-
-                       if (self.scrollLeft != left) {
-
-                               self.columnManager.scrollHorizontal(left);
-
-                               if (self.table.options.groupBy) {
-
-                                       self.table.modules.groupRows.scrollHeaders(left);
-                               }
-
-                               if (self.table.modExists("columnCalcs")) {
-
-                                       self.table.modules.columnCalcs.scrollHorizontal(left);
-                               }
-
-                               self.table.options.scrollHorizontal(left);
-                       }
-
-                       self.scrollLeft = left;
-               });
-
-               //handle virtual dom scrolling
-
-               if (this.renderMode === "virtual") {
-
-                       self.element.addEventListener("scroll", function () {
-
-                               var top = self.element.scrollTop;
-
-                               var dir = self.scrollTop > top;
-
-                               //handle verical scrolling
-
-                               if (self.scrollTop != top) {
-
-                                       self.scrollTop = top;
-
-                                       self.scrollVertical(dir);
-
-                                       if (self.table.options.ajaxProgressiveLoad == "scroll") {
-
-                                               self.table.modules.ajax.nextPage(self.element.scrollHeight - self.element.clientHeight - top);
-                                       }
-
-                                       self.table.options.scrollVertical(top);
-                               } else {
-
-                                       self.scrollTop = top;
-                               }
-                       });
-               }
-       };
-
-       ////////////////// Row Manipulation //////////////////
-
-
-       RowManager.prototype.findRow = function (subject) {
-
-               var self = this;
-
-               if ((typeof subject === 'undefined' ? 'undefined' : _typeof(subject)) == "object") {
-
-                       if (subject instanceof Row) {
-
-                               //subject is row element
-
-                               return subject;
-                       } else if (subject instanceof RowComponent) {
-
-                               //subject is public row component
-
-                               return subject._getSelf() || false;
-                       } else if (typeof HTMLElement !== "undefined" && subject instanceof HTMLElement) {
-
-                               //subject is a HTML element of the row
-
-                               var match = self.rows.find(function (row) {
-
-                                       return row.element === subject;
-                               });
-
-                               return match || false;
-                       }
-               } else if (typeof subject == "undefined" || subject === null) {
-
-                       return false;
-               } else {
-
-                       //subject should be treated as the index of the row
-
-                       var _match = self.rows.find(function (row) {
-
-                               return row.data[self.table.options.index] == subject;
-                       });
-
-                       return _match || false;
-               }
-
-               //catch all for any other type of input
-
-
-               return false;
-       };
-
-       RowManager.prototype.getRowFromDataObject = function (data) {
-
-               var match = this.rows.find(function (row) {
-
-                       return row.data === data;
-               });
-
-               return match || false;
-       };
-
-       RowManager.prototype.getRowFromPosition = function (position, active) {
-
-               if (active) {
-
-                       return this.activeRows[position];
-               } else {
-
-                       return this.rows[position];
-               }
-       };
-
-       RowManager.prototype.scrollToRow = function (row, position, ifVisible) {
-               var _this9 = this;
-
-               var rowIndex = this.getDisplayRows().indexOf(row),
-                   rowEl = row.getElement(),
-                   rowTop,
-                   offset = 0;
-
-               return new Promise(function (resolve, reject) {
-
-                       if (rowIndex > -1) {
-
-                               if (typeof position === "undefined") {
-
-                                       position = _this9.table.options.scrollToRowPosition;
-                               }
-
-                               if (typeof ifVisible === "undefined") {
-
-                                       ifVisible = _this9.table.options.scrollToRowIfVisible;
-                               }
-
-                               if (position === "nearest") {
-
-                                       switch (_this9.renderMode) {
-
-                                               case "classic":
-
-                                                       rowTop = Tabulator.prototype.helpers.elOffset(rowEl).top;
-
-                                                       position = Math.abs(_this9.element.scrollTop - rowTop) > Math.abs(_this9.element.scrollTop + _this9.element.clientHeight - rowTop) ? "bottom" : "top";
-
-                                                       break;
-
-                                               case "virtual":
-
-                                                       position = Math.abs(_this9.vDomTop - rowIndex) > Math.abs(_this9.vDomBottom - rowIndex) ? "bottom" : "top";
-
-                                                       break;
-
-                                       }
-                               }
-
-                               //check row visibility
-
-                               if (!ifVisible) {
-
-                                       if (Tabulator.prototype.helpers.elVisible(rowEl)) {
-
-                                               offset = Tabulator.prototype.helpers.elOffset(rowEl).top - Tabulator.prototype.helpers.elOffset(_this9.element).top;
-
-                                               if (offset > 0 && offset < _this9.element.clientHeight - rowEl.offsetHeight) {
-
-                                                       return false;
-                                               }
-                                       }
-                               }
-
-                               //scroll to row
-
-                               switch (_this9.renderMode) {
-
-                                       case "classic":
-
-                                               _this9.element.scrollTop = Tabulator.prototype.helpers.elOffset(rowEl).top - Tabulator.prototype.helpers.elOffset(_this9.element).top + _this9.element.scrollTop;
-
-                                               break;
-
-                                       case "virtual":
-
-                                               _this9._virtualRenderFill(rowIndex, true);
-
-                                               break;
-
-                               }
-
-                               //align to correct position
-
-                               switch (position) {
-
-                                       case "middle":
-
-                                       case "center":
-
-                                               if (_this9.element.scrollHeight - _this9.element.scrollTop == _this9.element.clientHeight) {
-
-                                                       _this9.element.scrollTop = _this9.element.scrollTop + (rowEl.offsetTop - _this9.element.scrollTop) - (_this9.element.scrollHeight - rowEl.offsetTop) / 2;
-                                               } else {
-
-                                                       _this9.element.scrollTop = _this9.element.scrollTop - _this9.element.clientHeight / 2;
-                                               }
-
-                                               break;
-
-                                       case "bottom":
-
-                                               if (_this9.element.scrollHeight - _this9.element.scrollTop == _this9.element.clientHeight) {
-
-                                                       _this9.element.scrollTop = _this9.element.scrollTop - (_this9.element.scrollHeight - rowEl.offsetTop) + rowEl.offsetHeight;
-                                               } else {
-
-                                                       _this9.element.scrollTop = _this9.element.scrollTop - _this9.element.clientHeight + rowEl.offsetHeight;
-                                               }
-
-                                               break;
-
-                               }
-
-                               resolve();
-                       } else {
-
-                               console.warn("Scroll Error - Row not visible");
-
-                               reject("Scroll Error - Row not visible");
-                       }
-               });
-       };
-
-       ////////////////// Data Handling //////////////////
-
-
-       RowManager.prototype.setData = function (data, renderInPosition, columnsChanged) {
-               var _this10 = this;
-
-               var self = this;
-
-               return new Promise(function (resolve, reject) {
-
-                       if (renderInPosition && _this10.getDisplayRows().length) {
-
-                               if (self.table.options.pagination) {
-
-                                       self._setDataActual(data, true);
-                               } else {
-
-                                       _this10.reRenderInPosition(function () {
-
-                                               self._setDataActual(data);
-                                       });
-                               }
-                       } else {
-
-                               if (_this10.table.options.autoColumns && columnsChanged) {
-
-                                       _this10.table.columnManager.generateColumnsFromRowData(data);
-                               }
-
-                               _this10.resetScroll();
-
-                               _this10._setDataActual(data);
-                       }
-
-                       resolve();
-               });
-       };
-
-       RowManager.prototype._setDataActual = function (data, renderInPosition) {
-
-               var self = this;
-
-               self.table.options.dataLoading.call(this.table, data);
-
-               this._wipeElements();
-
-               if (this.table.options.history && this.table.modExists("history")) {
-
-                       this.table.modules.history.clear();
-               }
-
-               if (Array.isArray(data)) {
-
-                       if (this.table.modExists("selectRow")) {
-
-                               this.table.modules.selectRow.clearSelectionData();
-                       }
-
-                       if (this.table.options.reactiveData && this.table.modExists("reactiveData", true)) {
-
-                               this.table.modules.reactiveData.watchData(data);
-                       }
-
-                       data.forEach(function (def, i) {
-
-                               if (def && (typeof def === 'undefined' ? 'undefined' : _typeof(def)) === "object") {
-
-                                       var row = new Row(def, self);
-
-                                       self.rows.push(row);
-                               } else {
-
-                                       console.warn("Data Loading Warning - Invalid row data detected and ignored, expecting object but received:", def);
-                               }
-                       });
-
-                       self.table.options.dataLoaded.call(this.table, data);
-
-                       self.refreshActiveData(false, false, renderInPosition);
-               } else {
-
-                       console.error("Data Loading Error - Unable to process data due to invalid data type \nExpecting: array \nReceived: ", typeof data === 'undefined' ? 'undefined' : _typeof(data), "\nData:     ", data);
-               }
-       };
-
-       RowManager.prototype._wipeElements = function () {
-
-               this.rows.forEach(function (row) {
-
-                       row.wipe();
-               });
-
-               if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-
-                       this.table.modules.groupRows.wipe();
-               }
-
-               this.rows = [];
-       };
-
-       RowManager.prototype.deleteRow = function (row, blockRedraw) {
-
-               var allIndex = this.rows.indexOf(row),
-                   activeIndex = this.activeRows.indexOf(row);
-
-               if (activeIndex > -1) {
-
-                       this.activeRows.splice(activeIndex, 1);
-               }
-
-               if (allIndex > -1) {
-
-                       this.rows.splice(allIndex, 1);
-               }
-
-               this.setActiveRows(this.activeRows);
-
-               this.displayRowIterator(function (rows) {
-
-                       var displayIndex = rows.indexOf(row);
-
-                       if (displayIndex > -1) {
-
-                               rows.splice(displayIndex, 1);
-                       }
-               });
-
-               if (!blockRedraw) {
-
-                       this.reRenderInPosition();
-               }
-
-               this.regenerateRowNumbers();
-
-               this.table.options.rowDeleted.call(this.table, row.getComponent());
-
-               this.table.options.dataEdited.call(this.table, this.getData());
-
-               if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-
-                       this.table.modules.groupRows.updateGroupRows(true);
-               } else if (this.table.options.pagination && this.table.modExists("page")) {
-
-                       this.refreshActiveData(false, false, true);
-               } else {
-
-                       if (this.table.options.pagination && this.table.modExists("page")) {
-
-                               this.refreshActiveData("page");
-                       }
-               }
-       };
-
-       RowManager.prototype.addRow = function (data, pos, index, blockRedraw) {
-
-               var row = this.addRowActual(data, pos, index, blockRedraw);
-
-               if (this.table.options.history && this.table.modExists("history")) {
-
-                       this.table.modules.history.action("rowAdd", row, { data: data, pos: pos, index: index });
-               }
-
-               return row;
-       };
-
-       //add multiple rows
-
-       RowManager.prototype.addRows = function (data, pos, index) {
-               var _this11 = this;
-
-               var self = this,
-                   length = 0,
-                   rows = [];
-
-               return new Promise(function (resolve, reject) {
-
-                       pos = _this11.findAddRowPos(pos);
-
-                       if (!Array.isArray(data)) {
-
-                               data = [data];
-                       }
-
-                       length = data.length - 1;
-
-                       if (typeof index == "undefined" && pos || typeof index !== "undefined" && !pos) {
-
-                               data.reverse();
-                       }
-
-                       data.forEach(function (item, i) {
-
-                               var row = self.addRow(item, pos, index, true);
-
-                               rows.push(row);
-                       });
-
-                       if (_this11.table.options.groupBy && _this11.table.modExists("groupRows")) {
-
-                               _this11.table.modules.groupRows.updateGroupRows(true);
-                       } else if (_this11.table.options.pagination && _this11.table.modExists("page")) {
-
-                               _this11.refreshActiveData(false, false, true);
-                       } else {
-
-                               _this11.reRenderInPosition();
-                       }
-
-                       //recalc column calculations if present
-
-                       if (_this11.table.modExists("columnCalcs")) {
-
-                               _this11.table.modules.columnCalcs.recalc(_this11.table.rowManager.activeRows);
-                       }
-
-                       _this11.regenerateRowNumbers();
-
-                       resolve(rows);
-               });
-       };
-
-       RowManager.prototype.findAddRowPos = function (pos) {
-
-               if (typeof pos === "undefined") {
-
-                       pos = this.table.options.addRowPos;
-               }
-
-               if (pos === "pos") {
-
-                       pos = true;
-               }
-
-               if (pos === "bottom") {
-
-                       pos = false;
-               }
-
-               return pos;
-       };
-
-       RowManager.prototype.addRowActual = function (data, pos, index, blockRedraw) {
-
-               var row = data instanceof Row ? data : new Row(data || {}, this),
-                   top = this.findAddRowPos(pos),
-                   allIndex = -1,
-                   activeIndex,
-                   dispRows;
-
-               if (!index && this.table.options.pagination && this.table.options.paginationAddRow == "page") {
-
-                       dispRows = this.getDisplayRows();
-
-                       if (top) {
-
-                               if (dispRows.length) {
-
-                                       index = dispRows[0];
-                               } else {
-
-                                       if (this.activeRows.length) {
-
-                                               index = this.activeRows[this.activeRows.length - 1];
-
-                                               top = false;
-                                       }
-                               }
-                       } else {
-
-                               if (dispRows.length) {
-
-                                       index = dispRows[dispRows.length - 1];
-
-                                       top = dispRows.length < this.table.modules.page.getPageSize() ? false : true;
-                               }
-                       }
-               }
-
-               if (typeof index !== "undefined") {
-
-                       index = this.findRow(index);
-               }
-
-               if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-
-                       this.table.modules.groupRows.assignRowToGroup(row);
-
-                       var groupRows = row.getGroup().rows;
-
-                       if (groupRows.length > 1) {
-
-                               if (!index || index && groupRows.indexOf(index) == -1) {
-
-                                       if (top) {
-
-                                               if (groupRows[0] !== row) {
-
-                                                       index = groupRows[0];
-
-                                                       this._moveRowInArray(row.getGroup().rows, row, index, !top);
-                                               }
-                                       } else {
-
-                                               if (groupRows[groupRows.length - 1] !== row) {
-
-                                                       index = groupRows[groupRows.length - 1];
-
-                                                       this._moveRowInArray(row.getGroup().rows, row, index, !top);
-                                               }
-                                       }
-                               } else {
-
-                                       this._moveRowInArray(row.getGroup().rows, row, index, !top);
-                               }
-                       }
-               }
-
-               if (index) {
-
-                       allIndex = this.rows.indexOf(index);
-               }
-
-               if (index && allIndex > -1) {
-
-                       activeIndex = this.activeRows.indexOf(index);
-
-                       this.displayRowIterator(function (rows) {
-
-                               var displayIndex = rows.indexOf(index);
-
-                               if (displayIndex > -1) {
-
-                                       rows.splice(top ? displayIndex : displayIndex + 1, 0, row);
-                               }
-                       });
-
-                       if (activeIndex > -1) {
-
-                               this.activeRows.splice(top ? activeIndex : activeIndex + 1, 0, row);
-                       }
-
-                       this.rows.splice(top ? allIndex : allIndex + 1, 0, row);
-               } else {
-
-                       if (top) {
-
-                               this.displayRowIterator(function (rows) {
-
-                                       rows.unshift(row);
-                               });
-
-                               this.activeRows.unshift(row);
-
-                               this.rows.unshift(row);
-                       } else {
-
-                               this.displayRowIterator(function (rows) {
-
-                                       rows.push(row);
-                               });
-
-                               this.activeRows.push(row);
-
-                               this.rows.push(row);
-                       }
-               }
-
-               this.setActiveRows(this.activeRows);
-
-               this.table.options.rowAdded.call(this.table, row.getComponent());
-
-               this.table.options.dataEdited.call(this.table, this.getData());
-
-               if (!blockRedraw) {
-
-                       this.reRenderInPosition();
-               }
-
-               return row;
-       };
-
-       RowManager.prototype.moveRow = function (from, to, after) {
-
-               if (this.table.options.history && this.table.modExists("history")) {
-
-                       this.table.modules.history.action("rowMove", from, { posFrom: this.getRowPosition(from), posTo: this.getRowPosition(to), to: to, after: after });
-               }
-
-               this.moveRowActual(from, to, after);
-
-               this.regenerateRowNumbers();
-
-               this.table.options.rowMoved.call(this.table, from.getComponent());
-       };
-
-       RowManager.prototype.moveRowActual = function (from, to, after) {
-               var _this12 = this;
-
-               this._moveRowInArray(this.rows, from, to, after);
-
-               this._moveRowInArray(this.activeRows, from, to, after);
-
-               this.displayRowIterator(function (rows) {
-
-                       _this12._moveRowInArray(rows, from, to, after);
-               });
-
-               if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-
-                       if (!after && to instanceof Group) {
-
-                               to = this.table.rowManager.prevDisplayRow(from) || to;
-                       }
-
-                       var toGroup = to.getGroup();
-
-                       var fromGroup = from.getGroup();
-
-                       if (toGroup === fromGroup) {
-
-                               this._moveRowInArray(toGroup.rows, from, to, after);
-                       } else {
-
-                               if (fromGroup) {
-
-                                       fromGroup.removeRow(from);
-                               }
-
-                               toGroup.insertRow(from, to, after);
-                       }
-               }
-       };
-
-       RowManager.prototype._moveRowInArray = function (rows, from, to, after) {
-
-               var fromIndex, toIndex, start, end;
-
-               if (from !== to) {
-
-                       fromIndex = rows.indexOf(from);
-
-                       if (fromIndex > -1) {
-
-                               rows.splice(fromIndex, 1);
-
-                               toIndex = rows.indexOf(to);
-
-                               if (toIndex > -1) {
-
-                                       if (after) {
-
-                                               rows.splice(toIndex + 1, 0, from);
-                                       } else {
-
-                                               rows.splice(toIndex, 0, from);
-                                       }
-                               } else {
-
-                                       rows.splice(fromIndex, 0, from);
-                               }
-                       }
-
-                       //restyle rows
-
-                       if (rows === this.getDisplayRows()) {
-
-                               start = fromIndex < toIndex ? fromIndex : toIndex;
-
-                               end = toIndex > fromIndex ? toIndex : fromIndex + 1;
-
-                               for (var _i4 = start; _i4 <= end; _i4++) {
-
-                                       if (rows[_i4]) {
-
-                                               this.styleRow(rows[_i4], _i4);
-                                       }
-                               }
-                       }
-               }
-       };
-
-       RowManager.prototype.clearData = function () {
-
-               this.setData([]);
-       };
-
-       RowManager.prototype.getRowIndex = function (row) {
-
-               return this.findRowIndex(row, this.rows);
-       };
-
-       RowManager.prototype.getDisplayRowIndex = function (row) {
-
-               var index = this.getDisplayRows().indexOf(row);
-
-               return index > -1 ? index : false;
-       };
-
-       RowManager.prototype.nextDisplayRow = function (row, rowOnly) {
-
-               var index = this.getDisplayRowIndex(row),
-                   nextRow = false;
-
-               if (index !== false && index < this.displayRowsCount - 1) {
-
-                       nextRow = this.getDisplayRows()[index + 1];
-               }
-
-               if (nextRow && (!(nextRow instanceof Row) || nextRow.type != "row")) {
-
-                       return this.nextDisplayRow(nextRow, rowOnly);
-               }
-
-               return nextRow;
-       };
-
-       RowManager.prototype.prevDisplayRow = function (row, rowOnly) {
-
-               var index = this.getDisplayRowIndex(row),
-                   prevRow = false;
-
-               if (index) {
-
-                       prevRow = this.getDisplayRows()[index - 1];
-               }
-
-               if (rowOnly && prevRow && (!(prevRow instanceof Row) || prevRow.type != "row")) {
-
-                       return this.prevDisplayRow(prevRow, rowOnly);
-               }
-
-               return prevRow;
-       };
-
-       RowManager.prototype.findRowIndex = function (row, list) {
-
-               var rowIndex;
-
-               row = this.findRow(row);
-
-               if (row) {
-
-                       rowIndex = list.indexOf(row);
-
-                       if (rowIndex > -1) {
-
-                               return rowIndex;
-                       }
-               }
-
-               return false;
-       };
-
-       RowManager.prototype.getData = function (active, transform) {
-
-               var output = [],
-                   rows = this.getRows(active);
-
-               rows.forEach(function (row) {
-
-                       if (row.type == "row") {
-
-                               output.push(row.getData(transform || "data"));
-                       }
-               });
-
-               return output;
-       };
-
-       RowManager.prototype.getComponents = function (active) {
-
-               var output = [],
-                   rows = this.getRows(active);
-
-               rows.forEach(function (row) {
-
-                       output.push(row.getComponent());
-               });
-
-               return output;
-       };
-
-       RowManager.prototype.getDataCount = function (active) {
-
-               var rows = this.getRows(active);
-
-               return rows.length;
-       };
-
-       RowManager.prototype._genRemoteRequest = function () {
-               var _this13 = this;
-
-               var table = this.table,
-                   options = table.options,
-                   params = {};
-
-               if (table.modExists("page")) {
-
-                       //set sort data if defined
-
-                       if (options.ajaxSorting) {
-
-                               var sorters = this.table.modules.sort.getSort();
-
-                               sorters.forEach(function (item) {
-
-                                       delete item.column;
-                               });
-
-                               params[this.table.modules.page.paginationDataSentNames.sorters] = sorters;
-                       }
-
-                       //set filter data if defined
-
-                       if (options.ajaxFiltering) {
-
-                               var filters = this.table.modules.filter.getFilters(true, true);
-
-                               params[this.table.modules.page.paginationDataSentNames.filters] = filters;
-                       }
-
-                       this.table.modules.ajax.setParams(params, true);
-               }
-
-               table.modules.ajax.sendRequest().then(function (data) {
-
-                       _this13._setDataActual(data, true);
-               }).catch(function (e) {});
-       };
-
-       //choose the path to refresh data after a filter update
-
-       RowManager.prototype.filterRefresh = function () {
-
-               var table = this.table,
-                   options = table.options,
-                   left = this.scrollLeft;
-
-               if (options.ajaxFiltering) {
-
-                       if (options.pagination == "remote" && table.modExists("page")) {
-
-                               table.modules.page.reset(true);
-
-                               table.modules.page.setPage(1).then(function () {}).catch(function () {});
-                       } else if (options.ajaxProgressiveLoad) {
-
-                               table.modules.ajax.loadData().then(function () {}).catch(function () {});
-                       } else {
-
-                               //assume data is url, make ajax call to url to get data
-
-                               this._genRemoteRequest();
-                       }
-               } else {
-
-                       this.refreshActiveData("filter");
-               }
-
-               this.scrollHorizontal(left);
-       };
-
-       //choose the path to refresh data after a sorter update
-
-       RowManager.prototype.sorterRefresh = function (loadOrignalData) {
-
-               var table = this.table,
-                   options = this.table.options,
-                   left = this.scrollLeft;
-
-               if (options.ajaxSorting) {
-
-                       if ((options.pagination == "remote" || options.progressiveLoad) && table.modExists("page")) {
-
-                               table.modules.page.reset(true);
-
-                               table.modules.page.setPage(1).then(function () {}).catch(function () {});
-                       } else if (options.ajaxProgressiveLoad) {
-
-                               table.modules.ajax.loadData().then(function () {}).catch(function () {});
-                       } else {
-
-                               //assume data is url, make ajax call to url to get data
-
-                               this._genRemoteRequest();
-                       }
-               } else {
-
-                       this.refreshActiveData(loadOrignalData ? "filter" : "sort");
-               }
-
-               this.scrollHorizontal(left);
-       };
-
-       RowManager.prototype.scrollHorizontal = function (left) {
-
-               this.scrollLeft = left;
-
-               this.element.scrollLeft = left;
-
-               if (this.table.options.groupBy) {
-
-                       this.table.modules.groupRows.scrollHeaders(left);
-               }
-
-               if (this.table.modExists("columnCalcs")) {
-
-                       this.table.modules.columnCalcs.scrollHorizontal(left);
-               }
-       };
-
-       //set active data set
-
-       RowManager.prototype.refreshActiveData = function (stage, skipStage, renderInPosition) {
-
-               var self = this,
-                   table = this.table,
-                   cascadeOrder = ["all", "filter", "sort", "display", "freeze", "group", "tree", "page"],
-                   displayIndex;
-
-               if (this.redrawBlock) {
-
-                       if (!this.redrawBlockRestoreConfig || cascadeOrder.indexOf(stage) < cascadeOrder.indexOf(this.redrawBlockRestoreConfig.stage)) {
-
-                               this.redrawBlockRestoreConfig = {
-
-                                       stage: stage,
-
-                                       skipStage: skipStage,
-
-                                       renderInPosition: renderInPosition
-
-                               };
-                       }
-
-                       return;
-               } else {
-
-                       if (self.table.modExists("edit")) {
-
-                               self.table.modules.edit.cancelEdit();
-                       }
-
-                       if (!stage) {
-
-                               stage = "all";
-                       }
-
-                       if (table.options.selectable && !table.options.selectablePersistence && table.modExists("selectRow")) {
-
-                               table.modules.selectRow.deselectRows();
-                       }
-
-                       //cascade through data refresh stages
-
-                       switch (stage) {
-
-                               case "all":
-
-                               case "filter":
-
-                                       if (!skipStage) {
-
-                                               if (table.modExists("filter")) {
-
-                                                       self.setActiveRows(table.modules.filter.filter(self.rows));
-                                               } else {
-
-                                                       self.setActiveRows(self.rows.slice(0));
-                                               }
-                                       } else {
-
-                                               skipStage = false;
-                                       }
-
-                               case "sort":
-
-                                       if (!skipStage) {
-
-                                               if (table.modExists("sort")) {
-
-                                                       table.modules.sort.sort(this.activeRows);
-                                               }
-                                       } else {
-
-                                               skipStage = false;
-                                       }
-
-                                       //regenerate row numbers for row number formatter if in use
-
-                                       this.regenerateRowNumbers();
-
-                               //generic stage to allow for pipeline trigger after the data manipulation stage
-
-                               case "display":
-
-                                       this.resetDisplayRows();
-
-                               case "freeze":
-
-                                       if (!skipStage) {
-
-                                               if (this.table.modExists("frozenRows")) {
-
-                                                       if (table.modules.frozenRows.isFrozen()) {
-
-                                                               if (!table.modules.frozenRows.getDisplayIndex()) {
-
-                                                                       table.modules.frozenRows.setDisplayIndex(this.getNextDisplayIndex());
-                                                               }
-
-                                                               displayIndex = table.modules.frozenRows.getDisplayIndex();
-
-                                                               displayIndex = self.setDisplayRows(table.modules.frozenRows.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
-
-                                                               if (displayIndex !== true) {
-
-                                                                       table.modules.frozenRows.setDisplayIndex(displayIndex);
-                                                               }
-                                                       }
-                                               }
-                                       } else {
-
-                                               skipStage = false;
-                                       }
-
-                               case "group":
-
-                                       if (!skipStage) {
-
-                                               if (table.options.groupBy && table.modExists("groupRows")) {
-
-                                                       if (!table.modules.groupRows.getDisplayIndex()) {
-
-                                                               table.modules.groupRows.setDisplayIndex(this.getNextDisplayIndex());
-                                                       }
-
-                                                       displayIndex = table.modules.groupRows.getDisplayIndex();
-
-                                                       displayIndex = self.setDisplayRows(table.modules.groupRows.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
-
-                                                       if (displayIndex !== true) {
-
-                                                               table.modules.groupRows.setDisplayIndex(displayIndex);
-                                                       }
-                                               }
-                                       } else {
-
-                                               skipStage = false;
-                                       }
-
-                               case "tree":
-
-                                       if (!skipStage) {
-
-                                               if (table.options.dataTree && table.modExists("dataTree")) {
-
-                                                       if (!table.modules.dataTree.getDisplayIndex()) {
-
-                                                               table.modules.dataTree.setDisplayIndex(this.getNextDisplayIndex());
-                                                       }
-
-                                                       displayIndex = table.modules.dataTree.getDisplayIndex();
-
-                                                       displayIndex = self.setDisplayRows(table.modules.dataTree.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
-
-                                                       if (displayIndex !== true) {
-
-                                                               table.modules.dataTree.setDisplayIndex(displayIndex);
-                                                       }
-                                               }
-                                       } else {
-
-                                               skipStage = false;
-                                       }
-
-                                       if (table.options.pagination && table.modExists("page") && !renderInPosition) {
-
-                                               if (table.modules.page.getMode() == "local") {
-
-                                                       table.modules.page.reset();
-                                               }
-                                       }
-
-                               case "page":
-
-                                       if (!skipStage) {
-
-                                               if (table.options.pagination && table.modExists("page")) {
-
-                                                       if (!table.modules.page.getDisplayIndex()) {
-
-                                                               table.modules.page.setDisplayIndex(this.getNextDisplayIndex());
-                                                       }
-
-                                                       displayIndex = table.modules.page.getDisplayIndex();
-
-                                                       if (table.modules.page.getMode() == "local") {
-
-                                                               table.modules.page.setMaxRows(this.getDisplayRows(displayIndex - 1).length);
-                                                       }
-
-                                                       displayIndex = self.setDisplayRows(table.modules.page.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
-
-                                                       if (displayIndex !== true) {
-
-                                                               table.modules.page.setDisplayIndex(displayIndex);
-                                                       }
-                                               }
-                                       } else {
-
-                                               skipStage = false;
-                                       }
-
-                       }
-
-                       if (Tabulator.prototype.helpers.elVisible(self.element)) {
-
-                               if (renderInPosition) {
-
-                                       self.reRenderInPosition();
-                               } else {
-
-                                       self.renderTable();
-
-                                       if (table.options.layoutColumnsOnNewData) {
-
-                                               self.table.columnManager.redraw(true);
-                                       }
-                               }
-                       }
-
-                       if (table.modExists("columnCalcs")) {
-
-                               table.modules.columnCalcs.recalc(this.activeRows);
-                       }
-               }
-       };
-
-       //regenerate row numbers for row number formatter if in use
-
-       RowManager.prototype.regenerateRowNumbers = function () {
-               var _this14 = this;
-
-               if (this.rowNumColumn) {
-
-                       this.activeRows.forEach(function (row) {
-
-                               var cell = row.getCell(_this14.rowNumColumn);
-
-                               if (cell) {
-
-                                       cell._generateContents();
-                               }
-                       });
-               }
-       };
-
-       RowManager.prototype.setActiveRows = function (activeRows) {
-
-               this.activeRows = activeRows;
-
-               this.activeRowsCount = this.activeRows.length;
-       };
-
-       //reset display rows array
-
-       RowManager.prototype.resetDisplayRows = function () {
-
-               this.displayRows = [];
-
-               this.displayRows.push(this.activeRows.slice(0));
-
-               this.displayRowsCount = this.displayRows[0].length;
-
-               if (this.table.modExists("frozenRows")) {
-
-                       this.table.modules.frozenRows.setDisplayIndex(0);
-               }
-
-               if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-
-                       this.table.modules.groupRows.setDisplayIndex(0);
-               }
-
-               if (this.table.options.pagination && this.table.modExists("page")) {
-
-                       this.table.modules.page.setDisplayIndex(0);
-               }
-       };
-
-       RowManager.prototype.getNextDisplayIndex = function () {
-
-               return this.displayRows.length;
-       };
-
-       //set display row pipeline data
-
-       RowManager.prototype.setDisplayRows = function (displayRows, index) {
-
-               var output = true;
-
-               if (index && typeof this.displayRows[index] != "undefined") {
-
-                       this.displayRows[index] = displayRows;
-
-                       output = true;
-               } else {
-
-                       this.displayRows.push(displayRows);
-
-                       output = index = this.displayRows.length - 1;
-               }
-
-               if (index == this.displayRows.length - 1) {
-
-                       this.displayRowsCount = this.displayRows[this.displayRows.length - 1].length;
-               }
-
-               return output;
-       };
-
-       RowManager.prototype.getDisplayRows = function (index) {
-
-               if (typeof index == "undefined") {
-
-                       return this.displayRows.length ? this.displayRows[this.displayRows.length - 1] : [];
-               } else {
-
-                       return this.displayRows[index] || [];
-               }
-       };
-
-       RowManager.prototype.getVisibleRows = function (viewable) {
-
-               var topEdge = this.element.scrollTop,
-                   bottomEdge = this.element.clientHeight + topEdge,
-                   topFound = false,
-                   topRow = 0,
-                   bottomRow = 0,
-                   rows = this.getDisplayRows();
-
-               if (viewable) {
-
-                       this.getDisplayRows();
-
-                       for (var i = this.vDomTop; i <= this.vDomBottom; i++) {
-
-                               if (rows[i]) {
-
-                                       if (!topFound) {
-
-                                               if (topEdge - rows[i].getElement().offsetTop >= 0) {
-
-                                                       topRow = i;
-                                               } else {
-
-                                                       topFound = true;
-
-                                                       if (bottomEdge - rows[i].getElement().offsetTop >= 0) {
-
-                                                               bottomRow = i;
-                                                       } else {
-
-                                                               break;
-                                                       }
-                                               }
-                                       } else {
-
-                                               if (bottomEdge - rows[i].getElement().offsetTop >= 0) {
-
-                                                       bottomRow = i;
-                                               } else {
-
-                                                       break;
-                                               }
-                                       }
-                               }
-                       }
-               } else {
-
-                       topRow = this.vDomTop;
-
-                       bottomRow = this.vDomBottom;
-               }
-
-               return rows.slice(topRow, bottomRow + 1);
-       };
-
-       //repeat action accross display rows
-
-       RowManager.prototype.displayRowIterator = function (callback) {
-
-               this.displayRows.forEach(callback);
-
-               this.displayRowsCount = this.displayRows[this.displayRows.length - 1].length;
-       };
-
-       //return only actual rows (not group headers etc)
-
-       RowManager.prototype.getRows = function (active) {
-
-               var rows;
-
-               switch (active) {
-
-                       case "active":
-
-                               rows = this.activeRows;
-
-                               break;
-
-                       case "display":
-
-                               rows = this.table.rowManager.getDisplayRows();
-
-                               break;
-
-                       case "visible":
-
-                               rows = this.getVisibleRows(true);
-
-                               break;
-
-                       default:
-
-                               rows = this.rows;
-
-               }
-
-               return rows;
-       };
-
-       ///////////////// Table Rendering /////////////////
-
-
-       //trigger rerender of table in current position
-
-       RowManager.prototype.reRenderInPosition = function (callback) {
-
-               if (this.getRenderMode() == "virtual") {
-
-                       if (this.redrawBlock) {
-
-                               if (callback) {
-
-                                       callback();
-                               } else {
-
-                                       this.redrawBlockRederInPosition = true;
-                               }
-                       } else {
-
-                               var scrollTop = this.element.scrollTop;
-
-                               var topRow = false;
-
-                               var topOffset = false;
-
-                               var left = this.scrollLeft;
-
-                               var rows = this.getDisplayRows();
-
-                               for (var i = this.vDomTop; i <= this.vDomBottom; i++) {
-
-                                       if (rows[i]) {
-
-                                               var diff = scrollTop - rows[i].getElement().offsetTop;
-
-                                               if (topOffset === false || Math.abs(diff) < topOffset) {
-
-                                                       topOffset = diff;
-
-                                                       topRow = i;
-                                               } else {
-
-                                                       break;
-                                               }
-                                       }
-                               }
-
-                               if (callback) {
-
-                                       callback();
-                               }
-
-                               this._virtualRenderFill(topRow === false ? this.displayRowsCount - 1 : topRow, true, topOffset || 0);
-
-                               this.scrollHorizontal(left);
-                       }
-               } else {
-
-                       this.renderTable();
-
-                       if (callback) {
-
-                               callback();
-                       }
-               }
-       };
-
-       RowManager.prototype.setRenderMode = function () {
-
-               if (this.table.options.virtualDom) {
-
-                       this.renderMode = "virtual";
-
-                       if (this.table.element.clientHeight || this.table.options.height) {
-
-                               this.fixedHeight = true;
-                       } else {
-
-                               this.fixedHeight = false;
-                       }
-               } else {
-
-                       this.renderMode = "classic";
-               }
-       };
-
-       RowManager.prototype.getRenderMode = function () {
-
-               return this.renderMode;
-       };
-
-       RowManager.prototype.renderTable = function () {
-
-               this.table.options.renderStarted.call(this.table);
-
-               this.element.scrollTop = 0;
-
-               switch (this.renderMode) {
-
-                       case "classic":
-
-                               this._simpleRender();
-
-                               break;
-
-                       case "virtual":
-
-                               this._virtualRenderFill();
-
-                               break;
-
-               }
-
-               if (this.firstRender) {
-
-                       if (this.displayRowsCount) {
-
-                               this.firstRender = false;
-
-                               this.table.modules.layout.layout();
-                       } else {
-
-                               this.renderEmptyScroll();
-                       }
-               }
-
-               if (this.table.modExists("frozenColumns")) {
-
-                       this.table.modules.frozenColumns.layout();
-               }
-
-               if (!this.displayRowsCount) {
-
-                       if (this.table.options.placeholder) {
-
-                               this.table.options.placeholder.setAttribute("tabulator-render-mode", this.renderMode);
-
-                               this.getElement().appendChild(this.table.options.placeholder);
-
-                               this.table.options.placeholder.style.width = this.table.columnManager.getWidth() + "px";
-                       }
-               }
-
-               this.table.options.renderComplete.call(this.table);
-       };
-
-       //simple render on heightless table
-
-       RowManager.prototype._simpleRender = function () {
-
-               this._clearVirtualDom();
-
-               if (this.displayRowsCount) {
-
-                       this.checkClassicModeGroupHeaderWidth();
-               } else {
-
-                       this.renderEmptyScroll();
-               }
-       };
-
-       RowManager.prototype.checkClassicModeGroupHeaderWidth = function () {
-
-               var self = this,
-                   element = this.tableElement,
-                   onlyGroupHeaders = true;
-
-               self.getDisplayRows().forEach(function (row, index) {
-
-                       self.styleRow(row, index);
-
-                       element.appendChild(row.getElement());
-
-                       row.initialize(true);
-
-                       if (row.type !== "group") {
-
-                               onlyGroupHeaders = false;
-                       }
-               });
-
-               if (onlyGroupHeaders) {
-
-                       element.style.minWidth = self.table.columnManager.getWidth() + "px";
-               } else {
-
-                       element.style.minWidth = "";
-               }
-       };
-
-       //show scrollbars on empty table div
-
-       RowManager.prototype.renderEmptyScroll = function () {
-
-               if (this.table.options.placeholder) {
-
-                       this.tableElement.style.display = "none";
-               } else {
-
-                       this.tableElement.style.minWidth = this.table.columnManager.getWidth() + "px";
-
-                       this.tableElement.style.minHeight = "1px";
-
-                       this.tableElement.style.visibility = "hidden";
-               }
-       };
-
-       RowManager.prototype._clearVirtualDom = function () {
-
-               var element = this.tableElement;
-
-               if (this.table.options.placeholder && this.table.options.placeholder.parentNode) {
-
-                       this.table.options.placeholder.parentNode.removeChild(this.table.options.placeholder);
-               }
-
-               // element.children.detach();
-
-               while (element.firstChild) {
-                       element.removeChild(element.firstChild);
-               }element.style.paddingTop = "";
-
-               element.style.paddingBottom = "";
-
-               element.style.minWidth = "";
-
-               element.style.minHeight = "";
-
-               element.style.display = "";
-
-               element.style.visibility = "";
-
-               this.scrollTop = 0;
-
-               this.scrollLeft = 0;
-
-               this.vDomTop = 0;
-
-               this.vDomBottom = 0;
-
-               this.vDomTopPad = 0;
-
-               this.vDomBottomPad = 0;
-       };
-
-       RowManager.prototype.styleRow = function (row, index) {
-
-               var rowEl = row.getElement();
-
-               if (index % 2) {
-
-                       rowEl.classList.add("tabulator-row-even");
-
-                       rowEl.classList.remove("tabulator-row-odd");
-               } else {
-
-                       rowEl.classList.add("tabulator-row-odd");
-
-                       rowEl.classList.remove("tabulator-row-even");
-               }
-       };
-
-       //full virtual render
-
-       RowManager.prototype._virtualRenderFill = function (position, forceMove, offset) {
-
-               var self = this,
-                   element = self.tableElement,
-                   holder = self.element,
-                   topPad = 0,
-                   rowsHeight = 0,
-                   topPadHeight = 0,
-                   i = 0,
-                   onlyGroupHeaders = true,
-                   rows = self.getDisplayRows();
-
-               position = position || 0;
-
-               offset = offset || 0;
-
-               if (!position) {
-
-                       self._clearVirtualDom();
-               } else {
-
-                       while (element.firstChild) {
-                               element.removeChild(element.firstChild);
-                       } //check if position is too close to bottom of table
-
-                       var heightOccupied = (self.displayRowsCount - position + 1) * self.vDomRowHeight;
-
-                       if (heightOccupied < self.height) {
-
-                               position -= Math.ceil((self.height - heightOccupied) / self.vDomRowHeight);
-
-                               if (position < 0) {
-
-                                       position = 0;
-                               }
-                       }
-
-                       //calculate initial pad
-
-                       topPad = Math.min(Math.max(Math.floor(self.vDomWindowBuffer / self.vDomRowHeight), self.vDomWindowMinMarginRows), position);
-
-                       position -= topPad;
-               }
-
-               if (self.displayRowsCount && Tabulator.prototype.helpers.elVisible(self.element)) {
-
-                       self.vDomTop = position;
-
-                       self.vDomBottom = position - 1;
-
-                       while ((rowsHeight <= self.height + self.vDomWindowBuffer || i < self.vDomWindowMinTotalRows) && self.vDomBottom < self.displayRowsCount - 1) {
-
-                               var index = self.vDomBottom + 1,
-                                   row = rows[index],
-                                   rowHeight = 0;
-
-                               self.styleRow(row, index);
-
-                               element.appendChild(row.getElement());
-
-                               if (!row.initialized) {
-
-                                       row.initialize(true);
-                               } else {
-
-                                       if (!row.heightInitialized) {
-
-                                               row.normalizeHeight(true);
-                                       }
-                               }
-
-                               rowHeight = row.getHeight();
-
-                               if (i < topPad) {
-
-                                       topPadHeight += rowHeight;
-                               } else {
-
-                                       rowsHeight += rowHeight;
-                               }
-
-                               if (rowHeight > this.vDomWindowBuffer) {
-
-                                       this.vDomWindowBuffer = rowHeight * 2;
-                               }
-
-                               if (row.type !== "group") {
-
-                                       onlyGroupHeaders = false;
-                               }
-
-                               self.vDomBottom++;
-
-                               i++;
-                       }
-
-                       if (!position) {
-
-                               this.vDomTopPad = 0;
-
-                               //adjust rowheight to match average of rendered elements
-
-                               self.vDomRowHeight = Math.floor((rowsHeight + topPadHeight) / i);
-
-                               self.vDomBottomPad = self.vDomRowHeight * (self.displayRowsCount - self.vDomBottom - 1);
-
-                               self.vDomScrollHeight = topPadHeight + rowsHeight + self.vDomBottomPad - self.height;
-                       } else {
-
-                               self.vDomTopPad = !forceMove ? self.scrollTop - topPadHeight : self.vDomRowHeight * this.vDomTop + offset;
-
-                               self.vDomBottomPad = self.vDomBottom == self.displayRowsCount - 1 ? 0 : Math.max(self.vDomScrollHeight - self.vDomTopPad - rowsHeight - topPadHeight, 0);
-                       }
-
-                       element.style.paddingTop = self.vDomTopPad + "px";
-
-                       element.style.paddingBottom = self.vDomBottomPad + "px";
-
-                       if (forceMove) {
-
-                               this.scrollTop = self.vDomTopPad + topPadHeight + offset - (this.element.scrollWidth > this.element.clientWidth ? this.element.offsetHeight - this.element.clientHeight : 0);
-                       }
-
-                       this.scrollTop = Math.min(this.scrollTop, this.element.scrollHeight - this.height);
-
-                       //adjust for horizontal scrollbar if present (and not at top of table)
-
-                       if (this.element.scrollWidth > this.element.offsetWidth && forceMove) {
-
-                               this.scrollTop += this.element.offsetHeight - this.element.clientHeight;
-                       }
-
-                       this.vDomScrollPosTop = this.scrollTop;
-
-                       this.vDomScrollPosBottom = this.scrollTop;
-
-                       holder.scrollTop = this.scrollTop;
-
-                       element.style.minWidth = onlyGroupHeaders ? self.table.columnManager.getWidth() + "px" : "";
-
-                       if (self.table.options.groupBy) {
-
-                               if (self.table.modules.layout.getMode() != "fitDataFill" && self.displayRowsCount == self.table.modules.groupRows.countGroups()) {
-
-                                       self.tableElement.style.minWidth = self.table.columnManager.getWidth();
-                               }
-                       }
-               } else {
-
-                       this.renderEmptyScroll();
-               }
-
-               if (!this.fixedHeight) {
-
-                       this.adjustTableSize();
-               }
-       };
-
-       //handle vertical scrolling
-
-       RowManager.prototype.scrollVertical = function (dir) {
-
-               var topDiff = this.scrollTop - this.vDomScrollPosTop;
-
-               var bottomDiff = this.scrollTop - this.vDomScrollPosBottom;
-
-               var margin = this.vDomWindowBuffer * 2;
-
-               if (-topDiff > margin || bottomDiff > margin) {
-
-                       //if big scroll redraw table;
-
-                       var left = this.scrollLeft;
-
-                       this._virtualRenderFill(Math.floor(this.element.scrollTop / this.element.scrollHeight * this.displayRowsCount));
-
-                       this.scrollHorizontal(left);
-               } else {
-
-                       if (dir) {
-
-                               //scrolling up
-
-                               if (topDiff < 0) {
-
-                                       this._addTopRow(-topDiff);
-                               }
-
-                               if (bottomDiff < 0) {
-
-                                       //hide bottom row if needed
-
-                                       if (this.vDomScrollHeight - this.scrollTop > this.vDomWindowBuffer) {
-
-                                               this._removeBottomRow(-bottomDiff);
-                                       } else {
-
-                                               this.vDomScrollPosBottom = this.scrollTop;
-                                       }
-                               }
-                       } else {
-
-                               //scrolling down
-
-                               if (topDiff >= 0) {
-
-                                       //hide top row if needed
-
-                                       if (this.scrollTop > this.vDomWindowBuffer) {
-
-                                               this._removeTopRow(topDiff);
-                                       } else {
-
-                                               this.vDomScrollPosTop = this.scrollTop;
-                                       }
-                               }
-
-                               if (bottomDiff >= 0) {
-
-                                       this._addBottomRow(bottomDiff);
-                               }
-                       }
-               }
-       };
-
-       RowManager.prototype._addTopRow = function (topDiff) {
-               var i = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
-
-
-               var table = this.tableElement,
-                   rows = this.getDisplayRows();
-
-               if (this.vDomTop) {
-
-                       var index = this.vDomTop - 1,
-                           topRow = rows[index],
-                           topRowHeight = topRow.getHeight() || this.vDomRowHeight;
-
-                       //hide top row if needed
-
-                       if (topDiff >= topRowHeight) {
-
-                               this.styleRow(topRow, index);
-
-                               table.insertBefore(topRow.getElement(), table.firstChild);
-
-                               if (!topRow.initialized || !topRow.heightInitialized) {
-
-                                       this.vDomTopNewRows.push(topRow);
-
-                                       if (!topRow.heightInitialized) {
-
-                                               topRow.clearCellHeight();
-                                       }
-                               }
-
-                               topRow.initialize();
-
-                               this.vDomTopPad -= topRowHeight;
-
-                               if (this.vDomTopPad < 0) {
-
-                                       this.vDomTopPad = index * this.vDomRowHeight;
-                               }
-
-                               if (!index) {
-
-                                       this.vDomTopPad = 0;
-                               }
-
-                               table.style.paddingTop = this.vDomTopPad + "px";
-
-                               this.vDomScrollPosTop -= topRowHeight;
-
-                               this.vDomTop--;
-                       }
-
-                       topDiff = -(this.scrollTop - this.vDomScrollPosTop);
-
-                       if (topRow.getHeight() > this.vDomWindowBuffer) {
-
-                               this.vDomWindowBuffer = topRow.getHeight() * 2;
-                       }
-
-                       if (i < this.vDomMaxRenderChain && this.vDomTop && topDiff >= (rows[this.vDomTop - 1].getHeight() || this.vDomRowHeight)) {
-
-                               this._addTopRow(topDiff, i + 1);
-                       } else {
-
-                               this._quickNormalizeRowHeight(this.vDomTopNewRows);
-                       }
-               }
-       };
-
-       RowManager.prototype._removeTopRow = function (topDiff) {
-
-               var table = this.tableElement,
-                   topRow = this.getDisplayRows()[this.vDomTop],
-                   topRowHeight = topRow.getHeight() || this.vDomRowHeight;
-
-               if (topDiff >= topRowHeight) {
-
-                       var rowEl = topRow.getElement();
-
-                       rowEl.parentNode.removeChild(rowEl);
-
-                       this.vDomTopPad += topRowHeight;
-
-                       table.style.paddingTop = this.vDomTopPad + "px";
-
-                       this.vDomScrollPosTop += this.vDomTop ? topRowHeight : topRowHeight + this.vDomWindowBuffer;
-
-                       this.vDomTop++;
-
-                       topDiff = this.scrollTop - this.vDomScrollPosTop;
-
-                       this._removeTopRow(topDiff);
-               }
-       };
-
-       RowManager.prototype._addBottomRow = function (bottomDiff) {
-               var i = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
-
-
-               var table = this.tableElement,
-                   rows = this.getDisplayRows();
-
-               if (this.vDomBottom < this.displayRowsCount - 1) {
-
-                       var index = this.vDomBottom + 1,
-                           bottomRow = rows[index],
-                           bottomRowHeight = bottomRow.getHeight() || this.vDomRowHeight;
-
-                       //hide bottom row if needed
-
-                       if (bottomDiff >= bottomRowHeight) {
-
-                               this.styleRow(bottomRow, index);
-
-                               table.appendChild(bottomRow.getElement());
-
-                               if (!bottomRow.initialized || !bottomRow.heightInitialized) {
-
-                                       this.vDomBottomNewRows.push(bottomRow);
-
-                                       if (!bottomRow.heightInitialized) {
-
-                                               bottomRow.clearCellHeight();
-                                       }
-                               }
-
-                               bottomRow.initialize();
-
-                               this.vDomBottomPad -= bottomRowHeight;
-
-                               if (this.vDomBottomPad < 0 || index == this.displayRowsCount - 1) {
-
-                                       this.vDomBottomPad = 0;
-                               }
-
-                               table.style.paddingBottom = this.vDomBottomPad + "px";
-
-                               this.vDomScrollPosBottom += bottomRowHeight;
-
-                               this.vDomBottom++;
-                       }
-
-                       bottomDiff = this.scrollTop - this.vDomScrollPosBottom;
-
-                       if (bottomRow.getHeight() > this.vDomWindowBuffer) {
-
-                               this.vDomWindowBuffer = bottomRow.getHeight() * 2;
-                       }
-
-                       if (i < this.vDomMaxRenderChain && this.vDomBottom < this.displayRowsCount - 1 && bottomDiff >= (rows[this.vDomBottom + 1].getHeight() || this.vDomRowHeight)) {
-
-                               this._addBottomRow(bottomDiff, i + 1);
-                       } else {
-
-                               this._quickNormalizeRowHeight(this.vDomBottomNewRows);
-                       }
-               }
-       };
-
-       RowManager.prototype._removeBottomRow = function (bottomDiff) {
-
-               var table = this.tableElement,
-                   bottomRow = this.getDisplayRows()[this.vDomBottom],
-                   bottomRowHeight = bottomRow.getHeight() || this.vDomRowHeight;
-
-               if (bottomDiff >= bottomRowHeight) {
-
-                       var rowEl = bottomRow.getElement();
-
-                       if (rowEl.parentNode) {
-
-                               rowEl.parentNode.removeChild(rowEl);
-                       }
-
-                       this.vDomBottomPad += bottomRowHeight;
-
-                       if (this.vDomBottomPad < 0) {
-
-                               this.vDomBottomPad = 0;
-                       }
-
-                       table.style.paddingBottom = this.vDomBottomPad + "px";
-
-                       this.vDomScrollPosBottom -= bottomRowHeight;
-
-                       this.vDomBottom--;
-
-                       bottomDiff = -(this.scrollTop - this.vDomScrollPosBottom);
-
-                       this._removeBottomRow(bottomDiff);
-               }
-       };
-
-       RowManager.prototype._quickNormalizeRowHeight = function (rows) {
-
-               rows.forEach(function (row) {
-
-                       row.calcHeight();
-               });
-
-               rows.forEach(function (row) {
-
-                       row.setCellHeight();
-               });
-
-               rows.length = 0;
-       };
-
-       //normalize height of active rows
-
-       RowManager.prototype.normalizeHeight = function () {
-
-               this.activeRows.forEach(function (row) {
-
-                       row.normalizeHeight();
-               });
-       };
-
-       //adjust the height of the table holder to fit in the Tabulator element
-
-       RowManager.prototype.adjustTableSize = function () {
-
-               var initialHeight = this.element.clientHeight,
-                   modExists;
-
-               if (this.renderMode === "virtual") {
-
-                       var otherHeight = this.columnManager.getElement().offsetHeight + (this.table.footerManager && !this.table.footerManager.external ? this.table.footerManager.getElement().offsetHeight : 0);
-
-                       if (this.fixedHeight) {
-
-                               this.element.style.minHeight = "calc(100% - " + otherHeight + "px)";
-
-                               this.element.style.height = "calc(100% - " + otherHeight + "px)";
-
-                               this.element.style.maxHeight = "calc(100% - " + otherHeight + "px)";
-                       } else {
-
-                               this.element.style.height = "";
-
-                               this.element.style.height = this.table.element.clientHeight - otherHeight + "px";
-
-                               this.element.scrollTop = this.scrollTop;
-                       }
-
-                       this.height = this.element.clientHeight;
-
-                       this.vDomWindowBuffer = this.table.options.virtualDomBuffer || this.height;
-
-                       //check if the table has changed size when dealing with variable height tables
-
-                       if (!this.fixedHeight && initialHeight != this.element.clientHeight) {
-
-                               modExists = this.table.modExists("resizeTable");
-
-                               if (modExists && !this.table.modules.resizeTable.autoResize || !modExists) {
-
-                                       this.redraw();
-                               }
-                       }
-               }
-       };
-
-       //renitialize all rows
-
-       RowManager.prototype.reinitialize = function () {
-
-               this.rows.forEach(function (row) {
-
-                       row.reinitialize();
-               });
-       };
-
-       //prevent table from being redrawn
-
-       RowManager.prototype.blockRedraw = function () {
-
-               this.redrawBlock = true;
-
-               this.redrawBlockRestoreConfig = false;
-       };
-
-       //restore table redrawing
-
-       RowManager.prototype.restoreRedraw = function () {
-
-               this.redrawBlock = false;
-
-               if (this.redrawBlockRestoreConfig) {
-
-                       this.refreshActiveData(this.redrawBlockRestoreConfig.stage, this.redrawBlockRestoreConfig.skipStage, this.redrawBlockRestoreConfig.renderInPosition);
-
-                       this.redrawBlockRestoreConfig = false;
-               } else {
-
-                       if (this.redrawBlockRederInPosition) {
-
-                               this.reRenderInPosition();
-                       }
-               }
-
-               this.redrawBlockRederInPosition = false;
-       };
-
-       //redraw table
-
-       RowManager.prototype.redraw = function (force) {
-
-               var pos = 0,
-                   left = this.scrollLeft;
-
-               this.adjustTableSize();
-
-               this.table.tableWidth = this.table.element.clientWidth;
-
-               if (!force) {
-
-                       if (this.renderMode == "classic") {
-
-                               if (this.table.options.groupBy) {
-
-                                       this.refreshActiveData("group", false, false);
-                               } else {
-
-                                       this._simpleRender();
-                               }
-                       } else {
-
-                               this.reRenderInPosition();
-
-                               this.scrollHorizontal(left);
-                       }
-
-                       if (!this.displayRowsCount) {
-
-                               if (this.table.options.placeholder) {
-
-                                       this.getElement().appendChild(this.table.options.placeholder);
-                               }
-                       }
-               } else {
-
-                       this.renderTable();
-               }
-       };
-
-       RowManager.prototype.resetScroll = function () {
-
-               this.element.scrollLeft = 0;
-
-               this.element.scrollTop = 0;
-
-               if (this.table.browser === "ie") {
-
-                       var event = document.createEvent("Event");
-
-                       event.initEvent("scroll", false, true);
-
-                       this.element.dispatchEvent(event);
-               } else {
-
-                       this.element.dispatchEvent(new Event('scroll'));
-               }
-       };
-
-       //public row object
-
-       var RowComponent = function RowComponent(row) {
-
-               this._row = row;
-       };
-
-       RowComponent.prototype.getData = function (transform) {
-
-               return this._row.getData(transform);
-       };
-
-       RowComponent.prototype.getElement = function () {
-
-               return this._row.getElement();
-       };
-
-       RowComponent.prototype.getCells = function () {
-
-               var cells = [];
-
-               this._row.getCells().forEach(function (cell) {
-
-                       cells.push(cell.getComponent());
-               });
-
-               return cells;
-       };
-
-       RowComponent.prototype.getCell = function (column) {
-
-               var cell = this._row.getCell(column);
-
-               return cell ? cell.getComponent() : false;
-       };
-
-       RowComponent.prototype.getIndex = function () {
-
-               return this._row.getData("data")[this._row.table.options.index];
-       };
-
-       RowComponent.prototype.getPosition = function (active) {
-
-               return this._row.table.rowManager.getRowPosition(this._row, active);
-       };
-
-       RowComponent.prototype.delete = function () {
-
-               return this._row.delete();
-       };
-
-       RowComponent.prototype.scrollTo = function () {
-
-               return this._row.table.rowManager.scrollToRow(this._row);
-       };
-
-       RowComponent.prototype.pageTo = function () {
-
-               if (this._row.table.modExists("page", true)) {
-
-                       return this._row.table.modules.page.setPageToRow(this._row);
-               }
-       };
-
-       RowComponent.prototype.move = function (to, after) {
-
-               this._row.moveToRow(to, after);
-       };
-
-       RowComponent.prototype.update = function (data) {
-
-               return this._row.updateData(data);
-       };
-
-       RowComponent.prototype.normalizeHeight = function () {
-
-               this._row.normalizeHeight(true);
-       };
-
-       RowComponent.prototype.select = function () {
-
-               this._row.table.modules.selectRow.selectRows(this._row);
-       };
-
-       RowComponent.prototype.deselect = function () {
-
-               this._row.table.modules.selectRow.deselectRows(this._row);
-       };
-
-       RowComponent.prototype.toggleSelect = function () {
-
-               this._row.table.modules.selectRow.toggleRow(this._row);
-       };
-
-       RowComponent.prototype.isSelected = function () {
-
-               return this._row.table.modules.selectRow.isRowSelected(this._row);
-       };
-
-       RowComponent.prototype._getSelf = function () {
-
-               return this._row;
-       };
-
-       RowComponent.prototype.validate = function () {
-
-               return this._row.validate();
-       };
-
-       RowComponent.prototype.freeze = function () {
-
-               if (this._row.table.modExists("frozenRows", true)) {
-
-                       this._row.table.modules.frozenRows.freezeRow(this._row);
-               }
-       };
-
-       RowComponent.prototype.unfreeze = function () {
-
-               if (this._row.table.modExists("frozenRows", true)) {
-
-                       this._row.table.modules.frozenRows.unfreezeRow(this._row);
-               }
-       };
-
-       RowComponent.prototype.isFrozen = function () {
-
-               if (this._row.table.modExists("frozenRows", true)) {
-
-                       var index = this._row.table.modules.frozenRows.rows.indexOf(this._row);
-
-                       return index > -1;
-               }
-
-               return false;
-       };
-
-       RowComponent.prototype.treeCollapse = function () {
-
-               if (this._row.table.modExists("dataTree", true)) {
-
-                       this._row.table.modules.dataTree.collapseRow(this._row);
-               }
-       };
-
-       RowComponent.prototype.treeExpand = function () {
-
-               if (this._row.table.modExists("dataTree", true)) {
-
-                       this._row.table.modules.dataTree.expandRow(this._row);
-               }
-       };
-
-       RowComponent.prototype.treeToggle = function () {
-
-               if (this._row.table.modExists("dataTree", true)) {
-
-                       this._row.table.modules.dataTree.toggleRow(this._row);
-               }
-       };
-
-       RowComponent.prototype.getTreeParent = function () {
-
-               if (this._row.table.modExists("dataTree", true)) {
-
-                       return this._row.table.modules.dataTree.getTreeParent(this._row);
-               }
-
-               return false;
-       };
-
-       RowComponent.prototype.getTreeChildren = function () {
-
-               if (this._row.table.modExists("dataTree", true)) {
-
-                       return this._row.table.modules.dataTree.getTreeChildren(this._row);
-               }
-
-               return false;
-       };
-
-       RowComponent.prototype.addTreeChild = function (data, pos, index) {
-
-               if (this._row.table.modExists("dataTree", true)) {
-
-                       return this._row.table.modules.dataTree.addTreeChildRow(this._row, data, pos, index);
-               }
-
-               return false;
-       };
-
-       RowComponent.prototype.reformat = function () {
-
-               return this._row.reinitialize();
-       };
-
-       RowComponent.prototype.getGroup = function () {
-
-               return this._row.getGroup().getComponent();
-       };
-
-       RowComponent.prototype.getTable = function () {
-
-               return this._row.table;
-       };
-
-       RowComponent.prototype.getNextRow = function () {
-
-               var row = this._row.nextRow();
-
-               return row ? row.getComponent() : row;
-       };
-
-       RowComponent.prototype.getPrevRow = function () {
-
-               var row = this._row.prevRow();
-
-               return row ? row.getComponent() : row;
-       };
-
-       var Row = function Row(data, parent) {
-               var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "row";
-
-
-               this.table = parent.table;
-
-               this.parent = parent;
-
-               this.data = {};
-
-               this.type = type; //type of element
-
-               this.element = this.createElement();
-
-               this.modules = {}; //hold module variables;
-
-               this.cells = [];
-
-               this.height = 0; //hold element height
-
-               this.heightStyled = ""; //hold element height prestyled to improve render efficiency
-
-               this.manualHeight = false; //user has manually set row height
-
-               this.outerHeight = 0; //holde lements outer height
-
-               this.initialized = false; //element has been rendered
-
-               this.heightInitialized = false; //element has resized cells to fit
-
-
-               this.component = null;
-
-               this.setData(data);
-
-               this.generateElement();
-       };
-
-       Row.prototype.createElement = function () {
-
-               var el = document.createElement("div");
-
-               el.classList.add("tabulator-row");
-
-               el.setAttribute("role", "row");
-
-               return el;
-       };
-
-       Row.prototype.getElement = function () {
-
-               return this.element;
-       };
-
-       Row.prototype.detachElement = function () {
-
-               if (this.element && this.element.parentNode) {
-
-                       this.element.parentNode.removeChild(this.element);
-               }
-       };
-
-       Row.prototype.generateElement = function () {
-
-               var self = this,
-                   dblTap,
-                   tapHold,
-                   tap;
-
-               //set row selection characteristics
-
-               if (self.table.options.selectable !== false && self.table.modExists("selectRow")) {
-
-                       self.table.modules.selectRow.initializeRow(this);
-               }
-
-               //setup movable rows
-
-               if (self.table.options.movableRows !== false && self.table.modExists("moveRow")) {
-
-                       self.table.modules.moveRow.initializeRow(this);
-               }
-
-               //setup data tree
-
-               if (self.table.options.dataTree !== false && self.table.modExists("dataTree")) {
-
-                       self.table.modules.dataTree.initializeRow(this);
-               }
-
-               //setup column colapse container
-
-               if (self.table.options.responsiveLayout === "collapse" && self.table.modExists("responsiveLayout")) {
-
-                       self.table.modules.responsiveLayout.initializeRow(this);
-               }
-
-               //set column menu
-
-               if (self.table.options.rowContextMenu && this.table.modExists("menu")) {
-
-                       self.table.modules.menu.initializeRow(this);
-               }
-
-               //handle row click events
-
-               if (self.table.options.rowClick) {
-
-                       self.element.addEventListener("click", function (e) {
-
-                               self.table.options.rowClick(e, self.getComponent());
-                       });
-               }
-
-               if (self.table.options.rowDblClick) {
-
-                       self.element.addEventListener("dblclick", function (e) {
-
-                               self.table.options.rowDblClick(e, self.getComponent());
-                       });
-               }
-
-               if (self.table.options.rowContext) {
-
-                       self.element.addEventListener("contextmenu", function (e) {
-
-                               self.table.options.rowContext(e, self.getComponent());
-                       });
-               }
-
-               //handle mouse events
-
-               if (self.table.options.rowMouseEnter) {
-
-                       self.element.addEventListener("mouseenter", function (e) {
-
-                               self.table.options.rowMouseEnter(e, self.getComponent());
-                       });
-               }
-
-               if (self.table.options.rowMouseLeave) {
-
-                       self.element.addEventListener("mouseleave", function (e) {
-
-                               self.table.options.rowMouseLeave(e, self.getComponent());
-                       });
-               }
-
-               if (self.table.options.rowMouseOver) {
-
-                       self.element.addEventListener("mouseover", function (e) {
-
-                               self.table.options.rowMouseOver(e, self.getComponent());
-                       });
-               }
-
-               if (self.table.options.rowMouseOut) {
-
-                       self.element.addEventListener("mouseout", function (e) {
-
-                               self.table.options.rowMouseOut(e, self.getComponent());
-                       });
-               }
-
-               if (self.table.options.rowMouseMove) {
-
-                       self.element.addEventListener("mousemove", function (e) {
-
-                               self.table.options.rowMouseMove(e, self.getComponent());
-                       });
-               }
-
-               if (self.table.options.rowTap) {
-
-                       tap = false;
-
-                       self.element.addEventListener("touchstart", function (e) {
-
-                               tap = true;
-                       }, { passive: true });
-
-                       self.element.addEventListener("touchend", function (e) {
-
-                               if (tap) {
-
-                                       self.table.options.rowTap(e, self.getComponent());
-                               }
-
-                               tap = false;
-                       });
-               }
-
-               if (self.table.options.rowDblTap) {
-
-                       dblTap = null;
-
-                       self.element.addEventListener("touchend", function (e) {
-
-                               if (dblTap) {
-
-                                       clearTimeout(dblTap);
-
-                                       dblTap = null;
-
-                                       self.table.options.rowDblTap(e, self.getComponent());
-                               } else {
-
-                                       dblTap = setTimeout(function () {
-
-                                               clearTimeout(dblTap);
-
-                                               dblTap = null;
-                                       }, 300);
-                               }
-                       });
-               }
-
-               if (self.table.options.rowTapHold) {
-
-                       tapHold = null;
-
-                       self.element.addEventListener("touchstart", function (e) {
-
-                               clearTimeout(tapHold);
-
-                               tapHold = setTimeout(function () {
-
-                                       clearTimeout(tapHold);
-
-                                       tapHold = null;
-
-                                       tap = false;
-
-                                       self.table.options.rowTapHold(e, self.getComponent());
-                               }, 1000);
-                       }, { passive: true });
-
-                       self.element.addEventListener("touchend", function (e) {
-
-                               clearTimeout(tapHold);
-
-                               tapHold = null;
-                       });
-               }
-       };
-
-       Row.prototype.generateCells = function () {
-
-               this.cells = this.table.columnManager.generateCells(this);
-       };
-
-       //functions to setup on first render
-
-       Row.prototype.initialize = function (force) {
-
-               var self = this;
-
-               if (!self.initialized || force) {
-
-                       self.deleteCells();
-
-                       while (self.element.firstChild) {
-                               self.element.removeChild(self.element.firstChild);
-                       } //handle frozen cells
-
-                       if (this.table.modExists("frozenColumns")) {
-
-                               this.table.modules.frozenColumns.layoutRow(this);
-                       }
-
-                       this.generateCells();
-
-                       self.cells.forEach(function (cell) {
-
-                               self.element.appendChild(cell.getElement());
-
-                               cell.cellRendered();
-                       });
-
-                       if (force) {
-
-                               self.normalizeHeight();
-                       }
-
-                       //setup movable rows
-
-                       if (self.table.options.dataTree && self.table.modExists("dataTree")) {
-
-                               self.table.modules.dataTree.layoutRow(this);
-                       }
-
-                       //setup column colapse container
-
-                       if (self.table.options.responsiveLayout === "collapse" && self.table.modExists("responsiveLayout")) {
-
-                               self.table.modules.responsiveLayout.layoutRow(this);
-                       }
-
-                       if (self.table.options.rowFormatter) {
-
-                               self.table.options.rowFormatter(self.getComponent());
-                       }
-
-                       //set resizable handles
-
-                       if (self.table.options.resizableRows && self.table.modExists("resizeRows")) {
-
-                               self.table.modules.resizeRows.initializeRow(self);
-                       }
-
-                       self.initialized = true;
-               }
-       };
-
-       Row.prototype.reinitializeHeight = function () {
-
-               this.heightInitialized = false;
-
-               if (this.element.offsetParent !== null) {
-
-                       this.normalizeHeight(true);
-               }
-       };
-
-       Row.prototype.reinitialize = function () {
-
-               this.initialized = false;
-
-               this.heightInitialized = false;
-
-               if (!this.manualHeight) {
-
-                       this.height = 0;
-
-                       this.heightStyled = "";
-               }
-
-               if (this.element.offsetParent !== null) {
-
-                       this.initialize(true);
-               }
-       };
-
-       //get heights when doing bulk row style calcs in virtual DOM
-
-       Row.prototype.calcHeight = function (force) {
-
-               var maxHeight = 0,
-                   minHeight = this.table.options.resizableRows ? this.element.clientHeight : 0;
-
-               this.cells.forEach(function (cell) {
-
-                       var height = cell.getHeight();
-
-                       if (height > maxHeight) {
-
-                               maxHeight = height;
-                       }
-               });
-
-               if (force) {
-
-                       this.height = Math.max(maxHeight, minHeight);
-               } else {
-
-                       this.height = this.manualHeight ? this.height : Math.max(maxHeight, minHeight);
-               }
-
-               this.heightStyled = this.height ? this.height + "px" : "";
-
-               this.outerHeight = this.element.offsetHeight;
-       };
-
-       //set of cells
-
-       Row.prototype.setCellHeight = function () {
-
-               this.cells.forEach(function (cell) {
-
-                       cell.setHeight();
-               });
-
-               this.heightInitialized = true;
-       };
-
-       Row.prototype.clearCellHeight = function () {
-
-               this.cells.forEach(function (cell) {
-
-                       cell.clearHeight();
-               });
-       };
-
-       //normalize the height of elements in the row
-
-       Row.prototype.normalizeHeight = function (force) {
-
-               if (force) {
-
-                       this.clearCellHeight();
-               }
-
-               this.calcHeight(force);
-
-               this.setCellHeight();
-       };
-
-       // Row.prototype.setHeight = function(height){
-
-       //      this.height = height;
-
-
-       //      this.setCellHeight();
-
-       // };
-
-
-       //set height of rows
-
-       Row.prototype.setHeight = function (height, force) {
-
-               if (this.height != height || force) {
-
-                       this.manualHeight = true;
-
-                       this.height = height;
-
-                       this.heightStyled = height ? height + "px" : "";
-
-                       this.setCellHeight();
-
-                       // this.outerHeight = this.element.outerHeight();
-
-                       this.outerHeight = this.element.offsetHeight;
-               }
-       };
-
-       //return rows outer height
-
-       Row.prototype.getHeight = function () {
-
-               return this.outerHeight;
-       };
-
-       //return rows outer Width
-
-       Row.prototype.getWidth = function () {
-
-               return this.element.offsetWidth;
-       };
-
-       //////////////// Cell Management /////////////////
-
-
-       Row.prototype.deleteCell = function (cell) {
-
-               var index = this.cells.indexOf(cell);
-
-               if (index > -1) {
-
-                       this.cells.splice(index, 1);
-               }
-       };
-
-       //////////////// Data Management /////////////////
-
-
-       Row.prototype.setData = function (data) {
-
-               if (this.table.modExists("mutator")) {
-
-                       data = this.table.modules.mutator.transformRow(data, "data");
-               }
-
-               this.data = data;
-
-               if (this.table.options.reactiveData && this.table.modExists("reactiveData", true)) {
-
-                       this.table.modules.reactiveData.watchRow(this);
-               }
-       };
-
-       //update the rows data
-
-       Row.prototype.updateData = function (updatedData) {
-               var _this15 = this;
-
-               var visible = Tabulator.prototype.helpers.elVisible(this.element),
-                   tempData = {},
-                   newRowData;
-
-               return new Promise(function (resolve, reject) {
-
-                       if (typeof updatedData === "string") {
-
-                               updatedData = JSON.parse(updatedData);
-                       }
-
-                       if (_this15.table.options.reactiveData && _this15.table.modExists("reactiveData", true)) {
-
-                               _this15.table.modules.reactiveData.block();
-                       }
-
-                       //mutate incomming data if needed
-
-                       if (_this15.table.modExists("mutator")) {
-
-                               tempData = Object.assign(tempData, _this15.data);
-
-                               tempData = Object.assign(tempData, updatedData);
-
-                               newRowData = _this15.table.modules.mutator.transformRow(tempData, "data", updatedData);
-                       } else {
-
-                               newRowData = updatedData;
-                       }
-
-                       //set data
-
-                       for (var attrname in newRowData) {
-
-                               _this15.data[attrname] = newRowData[attrname];
-                       }
-
-                       if (_this15.table.options.reactiveData && _this15.table.modExists("reactiveData", true)) {
-
-                               _this15.table.modules.reactiveData.unblock();
-                       }
-
-                       //update affected cells only
-
-                       for (var attrname in updatedData) {
-
-                               var columns = _this15.table.columnManager.getColumnsByFieldRoot(attrname);
-
-                               columns.forEach(function (column) {
-
-                                       var cell = _this15.getCell(column.getField());
-
-                                       if (cell) {
-
-                                               var value = column.getFieldValue(newRowData);
-
-                                               if (cell.getValue() != value) {
-
-                                                       cell.setValueProcessData(value);
-
-                                                       if (visible) {
-
-                                                               cell.cellRendered();
-                                                       }
-                                               }
-                                       }
-                               });
-                       }
-
-                       //Partial reinitialization if visible
-
-                       if (visible) {
-
-                               _this15.normalizeHeight(true);
-
-                               if (_this15.table.options.rowFormatter) {
-
-                                       _this15.table.options.rowFormatter(_this15.getComponent());
-                               }
-                       } else {
-
-                               _this15.initialized = false;
-
-                               _this15.height = 0;
-
-                               _this15.heightStyled = "";
-                       }
-
-                       if (_this15.table.options.dataTree !== false && _this15.table.modExists("dataTree") && _this15.table.modules.dataTree.redrawNeeded(updatedData)) {
-
-                               _this15.table.modules.dataTree.initializeRow(_this15);
-
-                               _this15.table.modules.dataTree.layoutRow(_this15);
-
-                               _this15.table.rowManager.refreshActiveData("tree", false, true);
-                       }
-
-                       //this.reinitialize();
-
-
-                       _this15.table.options.rowUpdated.call(_this15.table, _this15.getComponent());
-
-                       resolve();
-               });
-       };
-
-       Row.prototype.getData = function (transform) {
-
-               var self = this;
-
-               if (transform) {
-
-                       if (self.table.modExists("accessor")) {
-
-                               return self.table.modules.accessor.transformRow(self.data, transform);
-                       }
-               } else {
-
-                       return this.data;
-               }
-       };
-
-       Row.prototype.getCell = function (column) {
-
-               var match = false;
-
-               column = this.table.columnManager.findColumn(column);
-
-               match = this.cells.find(function (cell) {
-
-                       return cell.column === column;
-               });
-
-               return match;
-       };
-
-       Row.prototype.getCellIndex = function (findCell) {
-
-               return this.cells.findIndex(function (cell) {
-
-                       return cell === findCell;
-               });
-       };
-
-       Row.prototype.findNextEditableCell = function (index) {
-
-               var nextCell = false;
-
-               if (index < this.cells.length - 1) {
-
-                       for (var i = index + 1; i < this.cells.length; i++) {
-
-                               var cell = this.cells[i];
-
-                               if (cell.column.modules.edit && Tabulator.prototype.helpers.elVisible(cell.getElement())) {
-
-                                       var allowEdit = true;
-
-                                       if (typeof cell.column.modules.edit.check == "function") {
-
-                                               allowEdit = cell.column.modules.edit.check(cell.getComponent());
-                                       }
-
-                                       if (allowEdit) {
-
-                                               nextCell = cell;
-
-                                               break;
-                                       }
-                               }
-                       }
-               }
-
-               return nextCell;
-       };
-
-       Row.prototype.findPrevEditableCell = function (index) {
-
-               var prevCell = false;
-
-               if (index > 0) {
-
-                       for (var i = index - 1; i >= 0; i--) {
-
-                               var cell = this.cells[i],
-                                   allowEdit = true;
-
-                               if (cell.column.modules.edit && Tabulator.prototype.helpers.elVisible(cell.getElement())) {
-
-                                       if (typeof cell.column.modules.edit.check == "function") {
-
-                                               allowEdit = cell.column.modules.edit.check(cell.getComponent());
-                                       }
-
-                                       if (allowEdit) {
-
-                                               prevCell = cell;
-
-                                               break;
-                                       }
-                               }
-                       }
-               }
-
-               return prevCell;
-       };
-
-       Row.prototype.getCells = function () {
-
-               return this.cells;
-       };
-
-       Row.prototype.nextRow = function () {
-
-               var row = this.table.rowManager.nextDisplayRow(this, true);
-
-               return row || false;
-       };
-
-       Row.prototype.prevRow = function () {
-
-               var row = this.table.rowManager.prevDisplayRow(this, true);
-
-               return row || false;
-       };
-
-       Row.prototype.moveToRow = function (to, before) {
-
-               var toRow = this.table.rowManager.findRow(to);
-
-               if (toRow) {
-
-                       this.table.rowManager.moveRowActual(this, toRow, !before);
-
-                       this.table.rowManager.refreshActiveData("display", false, true);
-               } else {
-
-                       console.warn("Move Error - No matching row found:", to);
-               }
-       };
-
-       Row.prototype.validate = function () {
-
-               var invalid = [];
-
-               this.cells.forEach(function (cell) {
-
-                       if (!cell.validate()) {
-
-                               invalid.push(cell.getComponent());
-                       }
-               });
-
-               return invalid.length ? invalid : true;
-       };
-
-       ///////////////////// Actions  /////////////////////
-
-
-       Row.prototype.delete = function () {
-               var _this16 = this;
-
-               return new Promise(function (resolve, reject) {
-
-                       var index, rows;
-
-                       if (_this16.table.options.history && _this16.table.modExists("history")) {
-
-                               if (_this16.table.options.groupBy && _this16.table.modExists("groupRows")) {
-
-                                       rows = _this16.getGroup().rows;
-
-                                       index = rows.indexOf(_this16);
-
-                                       if (index) {
-
-                                               index = rows[index - 1];
-                                       }
-                               } else {
-
-                                       index = _this16.table.rowManager.getRowIndex(_this16);
-
-                                       if (index) {
-
-                                               index = _this16.table.rowManager.rows[index - 1];
-                                       }
-                               }
-
-                               _this16.table.modules.history.action("rowDelete", _this16, { data: _this16.getData(), pos: !index, index: index });
-                       }
-
-                       _this16.deleteActual();
-
-                       resolve();
-               });
-       };
-
-       Row.prototype.deleteActual = function (blockRedraw) {
-
-               var index = this.table.rowManager.getRowIndex(this);
-
-               //deselect row if it is selected
-
-               if (this.table.modExists("selectRow")) {
-
-                       this.table.modules.selectRow._deselectRow(this, true);
-               }
-
-               //cancel edit if row is currently being edited
-
-               if (this.table.modExists("edit")) {
-
-                       if (this.table.modules.edit.currentCell.row === this) {
-
-                               this.table.modules.edit.cancelEdit();
-                       }
-               }
-
-               // if(this.table.options.dataTree && this.table.modExists("dataTree")){
-
-               //      this.table.modules.dataTree.collapseRow(this, true);
-
-               // }
-
-
-               //remove any reactive data watchers from row object
-
-               if (this.table.options.reactiveData && this.table.modExists("reactiveData", true)) {}
-
-               // this.table.modules.reactiveData.unwatchRow(this);
-
-               //remove from group
-
-               if (this.modules.group) {
-
-                       this.modules.group.removeRow(this);
-               }
-
-               this.table.rowManager.deleteRow(this, blockRedraw);
-
-               this.deleteCells();
-
-               this.initialized = false;
-
-               this.heightInitialized = false;
-
-               if (this.table.options.dataTree && this.table.modExists("dataTree", true)) {
-
-                       this.table.modules.dataTree.rowDelete(this);
-               }
-
-               //recalc column calculations if present
-
-               if (this.table.modExists("columnCalcs")) {
-
-                       if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-
-                               this.table.modules.columnCalcs.recalcRowGroup(this);
-                       } else {
-
-                               this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
-                       }
-               }
-       };
-
-       Row.prototype.deleteCells = function () {
-
-               var cellCount = this.cells.length;
-
-               for (var _i5 = 0; _i5 < cellCount; _i5++) {
-
-                       this.cells[0].delete();
-               }
-       };
-
-       Row.prototype.wipe = function () {
-
-               this.deleteCells();
-
-               while (this.element.firstChild) {
-                       this.element.removeChild(this.element.firstChild);
-               }this.element = false;
-
-               this.modules = {};
-
-               if (this.element.parentNode) {
-
-                       this.element.parentNode.removeChild(this.element);
-               }
-       };
-
-       Row.prototype.getGroup = function () {
-
-               return this.modules.group || false;
-       };
-
-       //////////////// Object Generation /////////////////
-
-       Row.prototype.getComponent = function () {
-
-               if (!this.component) {
-
-                       this.component = new RowComponent(this);
-               }
-
-               return this.component;
-       };
-
-       //public row object
-
-       var CellComponent = function CellComponent(cell) {
-
-               this._cell = cell;
-       };
-
-       CellComponent.prototype.getValue = function () {
-
-               return this._cell.getValue();
-       };
-
-       CellComponent.prototype.getOldValue = function () {
-
-               return this._cell.getOldValue();
-       };
-
-       CellComponent.prototype.getElement = function () {
-
-               return this._cell.getElement();
-       };
-
-       CellComponent.prototype.getRow = function () {
-
-               return this._cell.row.getComponent();
-       };
-
-       CellComponent.prototype.getData = function () {
-
-               return this._cell.row.getData();
-       };
-
-       CellComponent.prototype.getField = function () {
-
-               return this._cell.column.getField();
-       };
-
-       CellComponent.prototype.getColumn = function () {
-
-               return this._cell.column.getComponent();
-       };
-
-       CellComponent.prototype.setValue = function (value, mutate) {
-
-               if (typeof mutate == "undefined") {
-
-                       mutate = true;
-               }
-
-               this._cell.setValue(value, mutate);
-       };
-
-       CellComponent.prototype.restoreOldValue = function () {
-
-               this._cell.setValueActual(this._cell.getOldValue());
-       };
-
-       CellComponent.prototype.edit = function (force) {
-
-               return this._cell.edit(force);
-       };
-
-       CellComponent.prototype.cancelEdit = function () {
-
-               this._cell.cancelEdit();
-       };
-
-       CellComponent.prototype.isEdited = function () {
-
-               return !!this._cell.modules.edit && this._cell.modules.edit.edited;
-       };
-
-       CellComponent.prototype.clearEdited = function () {
-
-               if (self.table.modExists("edit", true)) {
-
-                       this._cell.table.modules.edit.clearEdited(this._cell);
-               }
-       };
-
-       CellComponent.prototype.isValid = function () {
-
-               return this._cell.modules.validate ? !this._cell.modules.validate.invalid : true;
-       };
-
-       CellComponent.prototype.validate = function () {
-
-               return this._cell.validate();
-       };
-
-       CellComponent.prototype.clearValidation = function () {
-
-               if (self.table.modExists("validate", true)) {
-
-                       this._cell.table.modules.validate.clearValidation(this._cell);
-               }
-       };
-
-       CellComponent.prototype.nav = function () {
-
-               return this._cell.nav();
-       };
-
-       CellComponent.prototype.checkHeight = function () {
-
-               this._cell.checkHeight();
-       };
-
-       CellComponent.prototype.getTable = function () {
-
-               return this._cell.table;
-       };
-
-       CellComponent.prototype._getSelf = function () {
-
-               return this._cell;
-       };
-
-       var Cell = function Cell(column, row) {
-
-               this.table = column.table;
-
-               this.column = column;
-
-               this.row = row;
-
-               this.element = null;
-
-               this.value = null;
-
-               this.oldValue = null;
-
-               this.modules = {};
-
-               this.height = null;
-
-               this.width = null;
-
-               this.minWidth = null;
-
-               this.component = null;
-
-               this.build();
-       };
-
-       //////////////// Setup Functions /////////////////
-
-
-       //generate element
-
-       Cell.prototype.build = function () {
-
-               this.generateElement();
-
-               this.setWidth();
-
-               this._configureCell();
-
-               this.setValueActual(this.column.getFieldValue(this.row.data));
-       };
-
-       Cell.prototype.generateElement = function () {
-
-               this.element = document.createElement('div');
-
-               this.element.className = "tabulator-cell";
-
-               this.element.setAttribute("role", "gridcell");
-
-               this.element = this.element;
-       };
-
-       Cell.prototype._configureCell = function () {
-
-               var self = this,
-                   cellEvents = self.column.cellEvents,
-                   element = self.element,
-                   field = this.column.getField(),
-                   vertAligns = {
-
-                       top: "flex-start",
-
-                       bottom: "flex-end",
-
-                       middle: "center"
-
-               },
-                   hozAligns = {
-
-                       left: "flex-start",
-
-                       right: "flex-end",
-
-                       center: "center"
-
-               };
-
-               //set text alignment
-
-               element.style.textAlign = self.column.hozAlign;
-
-               if (self.column.vertAlign) {
-
-                       element.style.display = "inline-flex";
-
-                       element.style.alignItems = vertAligns[self.column.vertAlign] || "";
-
-                       if (self.column.hozAlign) {
-
-                               element.style.justifyContent = hozAligns[self.column.hozAlign] || "";
-                       }
-               }
-
-               if (field) {
-
-                       element.setAttribute("tabulator-field", field);
-               }
-
-               //add class to cell if needed
-
-               if (self.column.definition.cssClass) {
-
-                       var classNames = self.column.definition.cssClass.split(" ");
-
-                       classNames.forEach(function (className) {
-
-                               element.classList.add(className);
-                       });
-               }
-
-               //update tooltip on mouse enter
-
-               if (this.table.options.tooltipGenerationMode === "hover") {
-
-                       element.addEventListener("mouseenter", function (e) {
-
-                               self._generateTooltip();
-                       });
-               }
-
-               self._bindClickEvents(cellEvents);
-
-               self._bindTouchEvents(cellEvents);
-
-               self._bindMouseEvents(cellEvents);
-
-               if (self.column.modules.edit) {
-
-                       self.table.modules.edit.bindEditor(self);
-               }
-
-               if (self.column.definition.rowHandle && self.table.options.movableRows !== false && self.table.modExists("moveRow")) {
-
-                       self.table.modules.moveRow.initializeCell(self);
-               }
-
-               //hide cell if not visible
-
-               if (!self.column.visible) {
-
-                       self.hide();
-               }
-       };
-
-       Cell.prototype._bindClickEvents = function (cellEvents) {
-
-               var self = this,
-                   element = self.element;
-
-               //set event bindings
-
-               if (cellEvents.cellClick || self.table.options.cellClick) {
-
-                       element.addEventListener("click", function (e) {
-
-                               var component = self.getComponent();
-
-                               if (cellEvents.cellClick) {
-
-                                       cellEvents.cellClick.call(self.table, e, component);
-                               }
-
-                               if (self.table.options.cellClick) {
-
-                                       self.table.options.cellClick.call(self.table, e, component);
-                               }
-                       });
-               }
-
-               if (cellEvents.cellDblClick || this.table.options.cellDblClick) {
-
-                       element.addEventListener("dblclick", function (e) {
-
-                               var component = self.getComponent();
-
-                               if (cellEvents.cellDblClick) {
-
-                                       cellEvents.cellDblClick.call(self.table, e, component);
-                               }
-
-                               if (self.table.options.cellDblClick) {
-
-                                       self.table.options.cellDblClick.call(self.table, e, component);
-                               }
-                       });
-               } else {
-
-                       element.addEventListener("dblclick", function (e) {
-
-                               if (self.table.modExists("edit")) {
-
-                                       if (self.table.modules.edit.currentCell === self) {
-
-                                               return; //prevent instant selection of editor content
-                                       }
-                               }
-
-                               e.preventDefault();
-
-                               try {
-
-                                       if (document.selection) {
-                                               // IE
-
-                                               var range = document.body.createTextRange();
-
-                                               range.moveToElementText(self.element);
-
-                                               range.select();
-                                       } else if (window.getSelection) {
-
-                                               var range = document.createRange();
-
-                                               range.selectNode(self.element);
-
-                                               window.getSelection().removeAllRanges();
-
-                                               window.getSelection().addRange(range);
-                                       }
-                               } catch (e) {}
-                       });
-               }
-
-               if (cellEvents.cellContext || this.table.options.cellContext) {
-
-                       element.addEventListener("contextmenu", function (e) {
-
-                               var component = self.getComponent();
-
-                               if (cellEvents.cellContext) {
-
-                                       cellEvents.cellContext.call(self.table, e, component);
-                               }
-
-                               if (self.table.options.cellContext) {
-
-                                       self.table.options.cellContext.call(self.table, e, component);
-                               }
-                       });
-               }
-       };
-
-       Cell.prototype._bindMouseEvents = function (cellEvents) {
-
-               var self = this,
-                   element = self.element;
-
-               if (cellEvents.cellMouseEnter || self.table.options.cellMouseEnter) {
-
-                       element.addEventListener("mouseenter", function (e) {
-
-                               var component = self.getComponent();
-
-                               if (cellEvents.cellMouseEnter) {
-
-                                       cellEvents.cellMouseEnter.call(self.table, e, component);
-                               }
-
-                               if (self.table.options.cellMouseEnter) {
-
-                                       self.table.options.cellMouseEnter.call(self.table, e, component);
-                               }
-                       });
-               }
-
-               if (cellEvents.cellMouseLeave || self.table.options.cellMouseLeave) {
-
-                       element.addEventListener("mouseleave", function (e) {
-
-                               var component = self.getComponent();
-
-                               if (cellEvents.cellMouseLeave) {
-
-                                       cellEvents.cellMouseLeave.call(self.table, e, component);
-                               }
-
-                               if (self.table.options.cellMouseLeave) {
-
-                                       self.table.options.cellMouseLeave.call(self.table, e, component);
-                               }
-                       });
-               }
-
-               if (cellEvents.cellMouseOver || self.table.options.cellMouseOver) {
-
-                       element.addEventListener("mouseover", function (e) {
-
-                               var component = self.getComponent();
-
-                               if (cellEvents.cellMouseOver) {
-
-                                       cellEvents.cellMouseOver.call(self.table, e, component);
-                               }
-
-                               if (self.table.options.cellMouseOver) {
-
-                                       self.table.options.cellMouseOver.call(self.table, e, component);
-                               }
-                       });
-               }
-
-               if (cellEvents.cellMouseOut || self.table.options.cellMouseOut) {
-
-                       element.addEventListener("mouseout", function (e) {
-
-                               var component = self.getComponent();
-
-                               if (cellEvents.cellMouseOut) {
-
-                                       cellEvents.cellMouseOut.call(self.table, e, component);
-                               }
-
-                               if (self.table.options.cellMouseOut) {
-
-                                       self.table.options.cellMouseOut.call(self.table, e, component);
-                               }
-                       });
-               }
-
-               if (cellEvents.cellMouseMove || self.table.options.cellMouseMove) {
-
-                       element.addEventListener("mousemove", function (e) {
-
-                               var component = self.getComponent();
-
-                               if (cellEvents.cellMouseMove) {
-
-                                       cellEvents.cellMouseMove.call(self.table, e, component);
-                               }
-
-                               if (self.table.options.cellMouseMove) {
-
-                                       self.table.options.cellMouseMove.call(self.table, e, component);
-                               }
-                       });
-               }
-       };
-
-       Cell.prototype._bindTouchEvents = function (cellEvents) {
-
-               var self = this,
-                   element = self.element,
-                   dblTap,
-                   tapHold,
-                   tap;
-
-               if (cellEvents.cellTap || this.table.options.cellTap) {
-
-                       tap = false;
-
-                       element.addEventListener("touchstart", function (e) {
-
-                               tap = true;
-                       }, { passive: true });
-
-                       element.addEventListener("touchend", function (e) {
-
-                               if (tap) {
-
-                                       var component = self.getComponent();
-
-                                       if (cellEvents.cellTap) {
-
-                                               cellEvents.cellTap.call(self.table, e, component);
-                                       }
-
-                                       if (self.table.options.cellTap) {
-
-                                               self.table.options.cellTap.call(self.table, e, component);
-                                       }
-                               }
-
-                               tap = false;
-                       });
-               }
-
-               if (cellEvents.cellDblTap || this.table.options.cellDblTap) {
-
-                       dblTap = null;
-
-                       element.addEventListener("touchend", function (e) {
-
-                               if (dblTap) {
-
-                                       clearTimeout(dblTap);
-
-                                       dblTap = null;
-
-                                       var component = self.getComponent();
-
-                                       if (cellEvents.cellDblTap) {
-
-                                               cellEvents.cellDblTap.call(self.table, e, component);
-                                       }
-
-                                       if (self.table.options.cellDblTap) {
-
-                                               self.table.options.cellDblTap.call(self.table, e, component);
-                                       }
-                               } else {
-
-                                       dblTap = setTimeout(function () {
-
-                                               clearTimeout(dblTap);
-
-                                               dblTap = null;
-                                       }, 300);
-                               }
-                       });
-               }
-
-               if (cellEvents.cellTapHold || this.table.options.cellTapHold) {
-
-                       tapHold = null;
-
-                       element.addEventListener("touchstart", function (e) {
-
-                               clearTimeout(tapHold);
-
-                               tapHold = setTimeout(function () {
-
-                                       clearTimeout(tapHold);
-
-                                       tapHold = null;
-
-                                       tap = false;
-
-                                       var component = self.getComponent();
-
-                                       if (cellEvents.cellTapHold) {
-
-                                               cellEvents.cellTapHold.call(self.table, e, component);
-                                       }
-
-                                       if (self.table.options.cellTapHold) {
-
-                                               self.table.options.cellTapHold.call(self.table, e, component);
-                                       }
-                               }, 1000);
-                       }, { passive: true });
-
-                       element.addEventListener("touchend", function (e) {
-
-                               clearTimeout(tapHold);
-
-                               tapHold = null;
-                       });
-               }
-       };
-
-       //generate cell contents
-
-       Cell.prototype._generateContents = function () {
-
-               var val;
-
-               if (this.table.modExists("format")) {
-
-                       val = this.table.modules.format.formatValue(this);
-               } else {
-
-                       val = this.element.innerHTML = this.value;
-               }
-
-               switch (typeof val === 'undefined' ? 'undefined' : _typeof(val)) {
-
-                       case "object":
-
-                               if (val instanceof Node) {
-
-                                       //clear previous cell contents
-
-                                       while (this.element.firstChild) {
-                                               this.element.removeChild(this.element.firstChild);
-                                       }this.element.appendChild(val);
-                               } else {
-
-                                       this.element.innerHTML = "";
-
-                                       if (val != null) {
-
-                                               console.warn("Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:", val);
-                                       }
-                               }
-
-                               break;
-
-                       case "undefined":
-
-                       case "null":
-
-                               this.element.innerHTML = "";
-
-                               break;
-
-                       default:
-
-                               this.element.innerHTML = val;
-
-               }
-       };
-
-       Cell.prototype.cellRendered = function () {
-
-               if (this.table.modExists("format") && this.table.modules.format.cellRendered) {
-
-                       this.table.modules.format.cellRendered(this);
-               }
-       };
-
-       //generate tooltip text
-
-       Cell.prototype._generateTooltip = function () {
-
-               var tooltip = this.column.tooltip;
-
-               if (tooltip) {
-
-                       if (tooltip === true) {
-
-                               tooltip = this.value;
-                       } else if (typeof tooltip == "function") {
-
-                               tooltip = tooltip(this.getComponent());
-
-                               if (tooltip === false) {
-
-                                       tooltip = "";
-                               }
-                       }
-
-                       if (typeof tooltip === "undefined") {
-
-                               tooltip = "";
-                       }
-
-                       this.element.setAttribute("title", tooltip);
-               } else {
-
-                       this.element.setAttribute("title", "");
-               }
-       };
-
-       //////////////////// Getters ////////////////////
-
-       Cell.prototype.getElement = function () {
-
-               return this.element;
-       };
-
-       Cell.prototype.getValue = function () {
-
-               return this.value;
-       };
-
-       Cell.prototype.getOldValue = function () {
-
-               return this.oldValue;
-       };
-
-       //////////////////// Actions ////////////////////
-
-
-       Cell.prototype.setValue = function (value, mutate) {
-
-               var changed = this.setValueProcessData(value, mutate),
-                   component;
-
-               if (changed) {
-
-                       if (this.table.options.history && this.table.modExists("history")) {
-
-                               this.table.modules.history.action("cellEdit", this, { oldValue: this.oldValue, newValue: this.value });
-                       }
-
-                       component = this.getComponent();
-
-                       if (this.column.cellEvents.cellEdited) {
-
-                               this.column.cellEvents.cellEdited.call(this.table, component);
-                       }
-
-                       this.cellRendered();
-
-                       this.table.options.cellEdited.call(this.table, component);
-
-                       this.table.options.dataEdited.call(this.table, this.table.rowManager.getData());
-               }
-       };
-
-       Cell.prototype.setValueProcessData = function (value, mutate) {
-
-               var changed = false;
-
-               if (this.value != value) {
-
-                       changed = true;
-
-                       if (mutate) {
-
-                               if (this.column.modules.mutate) {
-
-                                       value = this.table.modules.mutator.transformCell(this, value);
-                               }
-                       }
-               }
-
-               this.setValueActual(value);
-
-               if (changed && this.table.modExists("columnCalcs")) {
-
-                       if (this.column.definition.topCalc || this.column.definition.bottomCalc) {
-
-                               if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-
-                                       if (this.table.options.columnCalcs == "table" || this.table.options.columnCalcs == "both") {
-
-                                               this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
-                                       }
-
-                                       if (this.table.options.columnCalcs != "table") {
-
-                                               this.table.modules.columnCalcs.recalcRowGroup(this.row);
-                                       }
-                               } else {
-
-                                       this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
-                               }
-                       }
-               }
-
-               return changed;
-       };
-
-       Cell.prototype.setValueActual = function (value) {
-
-               this.oldValue = this.value;
-
-               this.value = value;
-
-               if (this.table.options.reactiveData && this.table.modExists("reactiveData")) {
-
-                       this.table.modules.reactiveData.block();
-               }
-
-               this.column.setFieldValue(this.row.data, value);
-
-               if (this.table.options.reactiveData && this.table.modExists("reactiveData")) {
-
-                       this.table.modules.reactiveData.unblock();
-               }
-
-               this._generateContents();
-
-               this._generateTooltip();
-
-               //set resizable handles
-
-               if (this.table.options.resizableColumns && this.table.modExists("resizeColumns")) {
-
-                       this.table.modules.resizeColumns.initializeColumn("cell", this.column, this.element);
-               }
-
-               //set column menu
-
-               if (this.column.definition.contextMenu && this.table.modExists("menu")) {
-
-                       this.table.modules.menu.initializeCell(this);
-               }
-
-               //handle frozen cells
-
-               if (this.table.modExists("frozenColumns")) {
-
-                       this.table.modules.frozenColumns.layoutElement(this.element, this.column);
-               }
-       };
-
-       Cell.prototype.setWidth = function () {
-
-               this.width = this.column.width;
-
-               this.element.style.width = this.column.widthStyled;
-       };
-
-       Cell.prototype.clearWidth = function () {
-
-               this.width = "";
-
-               this.element.style.width = "";
-       };
-
-       Cell.prototype.getWidth = function () {
-
-               return this.width || this.element.offsetWidth;
-       };
-
-       Cell.prototype.setMinWidth = function () {
-
-               this.minWidth = this.column.minWidth;
-
-               this.element.style.minWidth = this.column.minWidthStyled;
-       };
-
-       Cell.prototype.checkHeight = function () {
-
-               // var height = this.element.css("height");
-
-               this.row.reinitializeHeight();
-       };
-
-       Cell.prototype.clearHeight = function () {
-
-               this.element.style.height = "";
-
-               this.height = null;
-       };
-
-       Cell.prototype.setHeight = function () {
-
-               this.height = this.row.height;
-
-               this.element.style.height = this.row.heightStyled;
-       };
-
-       Cell.prototype.getHeight = function () {
-
-               return this.height || this.element.offsetHeight;
-       };
-
-       Cell.prototype.show = function () {
-
-               this.element.style.display = "";
-       };
-
-       Cell.prototype.hide = function () {
-
-               this.element.style.display = "none";
-       };
-
-       Cell.prototype.edit = function (force) {
-
-               if (this.table.modExists("edit", true)) {
-
-                       return this.table.modules.edit.editCell(this, force);
-               }
-       };
-
-       Cell.prototype.cancelEdit = function () {
-
-               if (this.table.modExists("edit", true)) {
-
-                       var editing = this.table.modules.edit.getCurrentCell();
-
-                       if (editing && editing._getSelf() === this) {
-
-                               this.table.modules.edit.cancelEdit();
-                       } else {
-
-                               console.warn("Cancel Editor Error - This cell is not currently being edited ");
-                       }
-               }
-       };
-
-       Cell.prototype.validate = function () {
-
-               if (this.column.modules.validate && this.table.modExists("validate", true)) {
-
-                       var valid = this.table.modules.validate.validate(this.column.modules.validate, this, this.getValue());
-
-                       return valid === true;
-               } else {
-
-                       return true;
-               }
-       };
-
-       Cell.prototype.delete = function () {
-
-               if (!this.table.rowManager.redrawBlock) {
-
-                       this.element.parentNode.removeChild(this.element);
-               }
-
-               if (this.modules.validate && this.modules.validate.invalid) {
-
-                       this.table.modules.validate.clearValidation(this);
-               }
-
-               if (this.modules.edit && this.modules.edit.edited) {
-
-                       this.table.modules.edit.clearEdited(this);
-               }
-
-               this.element = false;
-
-               this.column.deleteCell(this);
-
-               this.row.deleteCell(this);
-
-               this.calcs = {};
-       };
-
-       //////////////// Navigation /////////////////
-
-
-       Cell.prototype.nav = function () {
-
-               var self = this,
-                   nextCell = false,
-                   index = this.row.getCellIndex(this);
-
-               return {
-
-                       next: function next() {
-
-                               var nextCell = this.right(),
-                                   nextRow;
-
-                               if (!nextCell) {
-
-                                       nextRow = self.table.rowManager.nextDisplayRow(self.row, true);
-
-                                       if (nextRow) {
-
-                                               nextCell = nextRow.findNextEditableCell(-1);
-
-                                               if (nextCell) {
-
-                                                       nextCell.edit();
-
-                                                       return true;
-                                               }
-                                       }
-                               } else {
-
-                                       return true;
-                               }
-
-                               return false;
-                       },
-
-                       prev: function prev() {
-
-                               var nextCell = this.left(),
-                                   prevRow;
-
-                               if (!nextCell) {
-
-                                       prevRow = self.table.rowManager.prevDisplayRow(self.row, true);
-
-                                       if (prevRow) {
-
-                                               nextCell = prevRow.findPrevEditableCell(prevRow.cells.length);
-
-                                               if (nextCell) {
-
-                                                       nextCell.edit();
-
-                                                       return true;
-                                               }
-                                       }
-                               } else {
-
-                                       return true;
-                               }
-
-                               return false;
-                       },
-
-                       left: function left() {
-
-                               nextCell = self.row.findPrevEditableCell(index);
-
-                               if (nextCell) {
-
-                                       nextCell.edit();
-
-                                       return true;
-                               } else {
-
-                                       return false;
-                               }
-                       },
-
-                       right: function right() {
-
-                               nextCell = self.row.findNextEditableCell(index);
-
-                               if (nextCell) {
-
-                                       nextCell.edit();
-
-                                       return true;
-                               } else {
-
-                                       return false;
-                               }
-                       },
-
-                       up: function up() {
-
-                               var nextRow = self.table.rowManager.prevDisplayRow(self.row, true);
-
-                               if (nextRow) {
-
-                                       nextRow.cells[index].edit();
-                               }
-                       },
-
-                       down: function down() {
-
-                               var nextRow = self.table.rowManager.nextDisplayRow(self.row, true);
-
-                               if (nextRow) {
-
-                                       nextRow.cells[index].edit();
-                               }
-                       }
-
-               };
-       };
-
-       Cell.prototype.getIndex = function () {
-
-               this.row.getCellIndex(this);
-       };
-
-       //////////////// Object Generation /////////////////
-
-       Cell.prototype.getComponent = function () {
-
-               if (!this.component) {
-
-                       this.component = new CellComponent(this);
-               }
-
-               return this.component;
-       };
-
-       var FooterManager = function FooterManager(table) {
-
-               this.table = table;
-
-               this.active = false;
-
-               this.element = this.createElement(); //containing element
-
-               this.external = false;
-
-               this.links = [];
-
-               this._initialize();
-       };
-
-       FooterManager.prototype.createElement = function () {
-
-               var el = document.createElement("div");
-
-               el.classList.add("tabulator-footer");
-
-               return el;
-       };
-
-       FooterManager.prototype._initialize = function (element) {
-
-               if (this.table.options.footerElement) {
-
-                       switch (_typeof(this.table.options.footerElement)) {
-
-                               case "string":
-
-                                       if (this.table.options.footerElement[0] === "<") {
-
-                                               this.element.innerHTML = this.table.options.footerElement;
-                                       } else {
-
-                                               this.external = true;
-
-                                               this.element = document.querySelector(this.table.options.footerElement);
-                                       }
-
-                                       break;
-
-                               default:
-
-                                       this.element = this.table.options.footerElement;
-
-                                       break;
-
-                       }
-               }
-       };
-
-       FooterManager.prototype.getElement = function () {
-
-               return this.element;
-       };
-
-       FooterManager.prototype.append = function (element, parent) {
-
-               this.activate(parent);
-
-               this.element.appendChild(element);
-
-               this.table.rowManager.adjustTableSize();
-       };
-
-       FooterManager.prototype.prepend = function (element, parent) {
-
-               this.activate(parent);
-
-               this.element.insertBefore(element, this.element.firstChild);
-
-               this.table.rowManager.adjustTableSize();
-       };
-
-       FooterManager.prototype.remove = function (element) {
-
-               element.parentNode.removeChild(element);
-
-               this.deactivate();
-       };
-
-       FooterManager.prototype.deactivate = function (force) {
-
-               if (!this.element.firstChild || force) {
-
-                       if (!this.external) {
-
-                               this.element.parentNode.removeChild(this.element);
-                       }
-
-                       this.active = false;
-               }
-
-               // this.table.rowManager.adjustTableSize();
-       };
-
-       FooterManager.prototype.activate = function (parent) {
-
-               if (!this.active) {
-
-                       this.active = true;
-
-                       if (!this.external) {
-
-                               this.table.element.appendChild(this.getElement());
-
-                               this.table.element.style.display = '';
-                       }
-               }
-
-               if (parent) {
-
-                       this.links.push(parent);
-               }
-       };
-
-       FooterManager.prototype.redraw = function () {
-
-               this.links.forEach(function (link) {
-
-                       link.footerRedraw();
-               });
-       };
-
-       var Tabulator = function Tabulator(element, options) {
-
-               this.options = {};
-
-               this.columnManager = null; // hold Column Manager
-
-               this.rowManager = null; //hold Row Manager
-
-               this.footerManager = null; //holder Footer Manager
-
-               this.browser = ""; //hold current browser type
-
-               this.browserSlow = false; //handle reduced functionality for slower browsers
-
-               this.browserMobile = false; //check if running on moble, prevent resize cancelling edit on keyboard appearence
-
-
-               this.modules = {}; //hold all modules bound to this table
-
-
-               this.initializeElement(element);
-
-               this.initializeOptions(options || {});
-
-               this._create();
-
-               Tabulator.prototype.comms.register(this); //register table for inderdevice communication
-       };
-
-       //default setup options
-
-       Tabulator.prototype.defaultOptions = {
-
-               height: false, //height of tabulator
-
-               minHeight: false, //minimum height of tabulator
-
-               maxHeight: false, //maximum height of tabulator
-
-
-               layout: "fitData", ///layout type "fitColumns" | "fitData"
-
-               layoutColumnsOnNewData: false, //update column widths on setData
-
-
-               columnMinWidth: 40, //minimum global width for a column
-
-               columnHeaderVertAlign: "top", //vertical alignment of column headers
-
-               columnVertAlign: false, // DEPRECATED - Left to allow warning
-
-
-               resizableColumns: true, //resizable columns
-
-               resizableRows: false, //resizable rows
-
-               autoResize: true, //auto resize table
-
-
-               columns: [], //store for colum header info
-
-
-               cellHozAlign: "", //horizontal align columns
-
-               cellVertAlign: "", //certical align columns
-
-
-               data: [], //default starting data
-
-
-               autoColumns: false, //build columns from data row structure
-
-
-               reactiveData: false, //enable data reactivity
-
-
-               nestedFieldSeparator: ".", //seperatpr for nested data
-
-
-               tooltips: false, //Tool tip value
-
-               tooltipsHeader: false, //Tool tip for headers
-
-               tooltipGenerationMode: "load", //when to generate tooltips
-
-
-               initialSort: false, //initial sorting criteria
-
-               initialFilter: false, //initial filtering criteria
-
-               initialHeaderFilter: false, //initial header filtering criteria
-
-
-               columnHeaderSortMulti: true, //multiple or single column sorting
-
-
-               sortOrderReverse: false, //reverse internal sort ordering
-
-
-               headerSort: true, //set default global header sort
-
-               headerSortTristate: false, //set default tristate header sorting
-
-
-               footerElement: false, //hold footer element
-
-
-               index: "id", //filed for row index
-
-
-               keybindings: [], //array for keybindings
-
-
-               tabEndNewRow: false, //create new row when tab to end of table
-
-
-               invalidOptionWarnings: true, //allow toggling of invalid option warnings
-
-
-               clipboard: false, //enable clipboard
-
-               clipboardCopyStyled: true, //formatted table data
-
-               clipboardCopyConfig: false, //clipboard config
-
-               clipboardCopyFormatter: false, //DEPRICATED - REMOVE in 5.0
-
-               clipboardCopyRowRange: "active", //restrict clipboard to visible rows only
-
-               clipboardPasteParser: "table", //convert pasted clipboard data to rows
-
-               clipboardPasteAction: "insert", //how to insert pasted data into the table
-
-
-               clipboardCopied: function clipboardCopied() {}, //data has been copied to the clipboard
-
-               clipboardPasted: function clipboardPasted() {}, //data has been pasted into the table
-
-               clipboardPasteError: function clipboardPasteError() {}, //data has not successfully been pasted into the table
-
-
-               downloadDataFormatter: false, //function to manipulate table data before it is downloaded
-
-               downloadReady: function downloadReady(data, blob) {
-                       return blob;
-               }, //function to manipulate download data
-
-               downloadComplete: false, //function to manipulate download data
-
-               downloadConfig: {}, //download config
-
-               downloadRowRange: "active", //restrict download to active rows only
-
-
-               dataTree: false, //enable data tree
-
-               dataTreeElementColumn: false,
-
-               dataTreeBranchElement: true, //show data tree branch element
-
-               dataTreeChildIndent: 9, //data tree child indent in px
-
-               dataTreeChildField: "_children", //data tre column field to look for child rows
-
-               dataTreeCollapseElement: false, //data tree row collapse element
-
-               dataTreeExpandElement: false, //data tree row expand element
-
-               dataTreeStartExpanded: false,
-
-               dataTreeRowExpanded: function dataTreeRowExpanded() {}, //row has been expanded
-
-               dataTreeRowCollapsed: function dataTreeRowCollapsed() {}, //row has been collapsed
-
-               dataTreeChildColumnCalcs: false, //include visible data tree rows in column calculations
-
-               dataTreeSelectPropagate: false, //seleccting a parent row selects its children
-
-
-               printAsHtml: false, //enable print as html
-
-               printFormatter: false, //printing page formatter
-
-               printHeader: false, //page header contents
-
-               printFooter: false, //page footer contents
-
-               printCopyStyle: true, //DEPRICATED - REMOVE in 5.0
-
-               printStyled: true, //enable print as html styling
-
-               printVisibleRows: true, //DEPRICATED - REMOVE in 5.0
-
-               printRowRange: "visible", //restrict print to visible rows only
-
-               printConfig: {}, //print config options
-
-
-               addRowPos: "bottom", //position to insert blank rows, top|bottom
-
-
-               selectable: "highlight", //highlight rows on hover
-
-               selectableRangeMode: "drag", //highlight rows on hover
-
-               selectableRollingSelection: true, //roll selection once maximum number of selectable rows is reached
-
-               selectablePersistence: true, // maintain selection when table view is updated
-
-               selectableCheck: function selectableCheck(data, row) {
-                       return true;
-               }, //check wheather row is selectable
-
-
-               headerFilterLiveFilterDelay: 300, //delay before updating column after user types in header filter
-
-               headerFilterPlaceholder: false, //placeholder text to display in header filters
-
-
-               headerVisible: true, //hide header
-
-
-               history: false, //enable edit history
-
-
-               locale: false, //current system language
-
-               langs: {},
-
-               virtualDom: true, //enable DOM virtualization
-
-               virtualDomBuffer: 0, // set virtual DOM buffer size
-
-
-               persistentLayout: false, //DEPRICATED - REMOVE in 5.0
-
-               persistentSort: false, //DEPRICATED - REMOVE in 5.0
-
-               persistentFilter: false, //DEPRICATED - REMOVE in 5.0
-
-               persistenceID: "", //key for persistent storage
-
-               persistenceMode: true, //mode for storing persistence information
-
-               persistenceReaderFunc: false, //function for handling persistence data reading
-
-               persistenceWriterFunc: false, //function for handling persistence data writing
-
-
-               persistence: false,
-
-               responsiveLayout: false, //responsive layout flags
-
-               responsiveLayoutCollapseStartOpen: true, //start showing collapsed data
-
-               responsiveLayoutCollapseUseFormatters: true, //responsive layout collapse formatter
-
-               responsiveLayoutCollapseFormatter: false, //responsive layout collapse formatter
-
-
-               pagination: false, //set pagination type
-
-               paginationSize: false, //set number of rows to a page
-
-               paginationInitialPage: 1, //initail page to show on load
-
-               paginationButtonCount: 5, // set count of page button
-
-               paginationSizeSelector: false, //add pagination size selector element
-
-               paginationElement: false, //element to hold pagination numbers
-
-               paginationDataSent: {}, //pagination data sent to the server
-
-               paginationDataReceived: {}, //pagination data received from the server
-
-               paginationAddRow: "page", //add rows on table or page
-
-
-               ajaxURL: false, //url for ajax loading
-
-               ajaxURLGenerator: false,
-
-               ajaxParams: {}, //params for ajax loading
-
-               ajaxConfig: "get", //ajax request type
-
-               ajaxContentType: "form", //ajax request type
-
-               ajaxRequestFunc: false, //promise function
-
-               ajaxLoader: true, //show loader
-
-               ajaxLoaderLoading: false, //loader element
-
-               ajaxLoaderError: false, //loader element
-
-               ajaxFiltering: false,
-
-               ajaxSorting: false,
-
-               ajaxProgressiveLoad: false, //progressive loading
-
-               ajaxProgressiveLoadDelay: 0, //delay between requests
-
-               ajaxProgressiveLoadScrollMargin: 0, //margin before scroll begins
-
-
-               groupBy: false, //enable table grouping and set field to group by
-
-               groupStartOpen: true, //starting state of group
-
-               groupValues: false,
-
-               groupHeader: false, //header generation function
-
-               groupHeaderPrint: null,
-
-               groupHeaderClipboard: null,
-
-               groupHeaderHtmlOutput: null,
-
-               groupHeaderDownload: null,
-
-               htmlOutputConfig: false, //html outypu config
-
-
-               movableColumns: false, //enable movable columns
-
-
-               movableRows: false, //enable movable rows
-
-               movableRowsConnectedTables: false, //tables for movable rows to be connected to
-
-               movableRowsConnectedElements: false, //other elements for movable rows to be connected to
-
-               movableRowsSender: false,
-
-               movableRowsReceiver: "insert",
-
-               movableRowsSendingStart: function movableRowsSendingStart() {},
-
-               movableRowsSent: function movableRowsSent() {},
-
-               movableRowsSentFailed: function movableRowsSentFailed() {},
-
-               movableRowsSendingStop: function movableRowsSendingStop() {},
-
-               movableRowsReceivingStart: function movableRowsReceivingStart() {},
-
-               movableRowsReceived: function movableRowsReceived() {},
-
-               movableRowsReceivedFailed: function movableRowsReceivedFailed() {},
-
-               movableRowsReceivingStop: function movableRowsReceivingStop() {},
-
-               movableRowsElementDrop: function movableRowsElementDrop() {},
-
-               scrollToRowPosition: "top",
-
-               scrollToRowIfVisible: true,
-
-               scrollToColumnPosition: "left",
-
-               scrollToColumnIfVisible: true,
-
-               rowFormatter: false,
-
-               rowFormatterPrint: null,
-
-               rowFormatterClipboard: null,
-
-               rowFormatterHtmlOutput: null,
-
-               placeholder: false,
-
-               //table building callbacks
-
-               tableBuilding: function tableBuilding() {},
-
-               tableBuilt: function tableBuilt() {},
-
-               //render callbacks
-
-               renderStarted: function renderStarted() {},
-
-               renderComplete: function renderComplete() {},
-
-               //row callbacks
-
-               rowClick: false,
-
-               rowDblClick: false,
-
-               rowContext: false,
-
-               rowTap: false,
-
-               rowDblTap: false,
-
-               rowTapHold: false,
-
-               rowMouseEnter: false,
-
-               rowMouseLeave: false,
-
-               rowMouseOver: false,
-
-               rowMouseOut: false,
-
-               rowMouseMove: false,
-
-               rowContextMenu: false,
-
-               rowAdded: function rowAdded() {},
-
-               rowDeleted: function rowDeleted() {},
-
-               rowMoved: function rowMoved() {},
-
-               rowUpdated: function rowUpdated() {},
-
-               rowSelectionChanged: function rowSelectionChanged() {},
-
-               rowSelected: function rowSelected() {},
-
-               rowDeselected: function rowDeselected() {},
-
-               rowResized: function rowResized() {},
-
-               //cell callbacks
-
-               //row callbacks
-
-               cellClick: false,
-
-               cellDblClick: false,
-
-               cellContext: false,
-
-               cellTap: false,
-
-               cellDblTap: false,
-
-               cellTapHold: false,
-
-               cellMouseEnter: false,
-
-               cellMouseLeave: false,
-
-               cellMouseOver: false,
-
-               cellMouseOut: false,
-
-               cellMouseMove: false,
-
-               cellEditing: function cellEditing() {},
-
-               cellEdited: function cellEdited() {},
-
-               cellEditCancelled: function cellEditCancelled() {},
-
-               //column callbacks
-
-               columnMoved: false,
-
-               columnResized: function columnResized() {},
-
-               columnTitleChanged: function columnTitleChanged() {},
-
-               columnVisibilityChanged: function columnVisibilityChanged() {},
-
-               //HTML iport callbacks
-
-               htmlImporting: function htmlImporting() {},
-
-               htmlImported: function htmlImported() {},
-
-               //data callbacks
-
-               dataLoading: function dataLoading() {},
-
-               dataLoaded: function dataLoaded() {},
-
-               dataEdited: function dataEdited() {},
-
-               //ajax callbacks
-
-               ajaxRequesting: function ajaxRequesting() {},
-
-               ajaxResponse: false,
-
-               ajaxError: function ajaxError() {},
-
-               //filtering callbacks
-
-               dataFiltering: false,
-
-               dataFiltered: false,
-
-               //sorting callbacks
-
-               dataSorting: function dataSorting() {},
-
-               dataSorted: function dataSorted() {},
-
-               //grouping callbacks
-
-               groupToggleElement: "arrow",
-
-               groupClosedShowCalcs: false,
-
-               dataGrouping: function dataGrouping() {},
-
-               dataGrouped: false,
-
-               groupVisibilityChanged: function groupVisibilityChanged() {},
-
-               groupClick: false,
-
-               groupDblClick: false,
-
-               groupContext: false,
-
-               groupContextMenu: false,
-
-               groupTap: false,
-
-               groupDblTap: false,
-
-               groupTapHold: false,
-
-               columnCalcs: true,
-
-               //pagination callbacks
-
-               pageLoaded: function pageLoaded() {},
-
-               //localization callbacks
-
-               localized: function localized() {},
-
-               //validation callbacks
-
-               validationMode: "blocking",
-
-               validationFailed: function validationFailed() {},
-
-               //history callbacks
-
-               historyUndo: function historyUndo() {},
-
-               historyRedo: function historyRedo() {},
-
-               //scroll callbacks
-
-               scrollHorizontal: function scrollHorizontal() {},
-
-               scrollVertical: function scrollVertical() {}
-
-       };
-
-       Tabulator.prototype.initializeOptions = function (options) {
-
-               //warn user if option is not available
-
-               if (options.invalidOptionWarnings !== false) {
-
-                       for (var key in options) {
-
-                               if (typeof this.defaultOptions[key] === "undefined") {
-
-                                       console.warn("Invalid table constructor option:", key);
-                               }
-                       }
-               }
-
-               //assign options to table
-
-               for (var key in this.defaultOptions) {
-
-                       if (key in options) {
-
-                               this.options[key] = options[key];
-                       } else {
-
-                               if (Array.isArray(this.defaultOptions[key])) {
-
-                                       this.options[key] = [];
-                               } else if (_typeof(this.defaultOptions[key]) === "object" && this.defaultOptions[key] !== null) {
-
-                                       this.options[key] = {};
-                               } else {
-
-                                       this.options[key] = this.defaultOptions[key];
-                               }
-                       }
-               }
-       };
-
-       Tabulator.prototype.initializeElement = function (element) {
-
-               if (typeof HTMLElement !== "undefined" && element instanceof HTMLElement) {
-
-                       this.element = element;
-
-                       return true;
-               } else if (typeof element === "string") {
-
-                       this.element = document.querySelector(element);
-
-                       if (this.element) {
-
-                               return true;
-                       } else {
-
-                               console.error("Tabulator Creation Error - no element found matching selector: ", element);
-
-                               return false;
-                       }
-               } else {
-
-                       console.error("Tabulator Creation Error - Invalid element provided:", element);
-
-                       return false;
-               }
-       };
-
-       //convert depricated functionality to new functions
-
-       Tabulator.prototype._mapDepricatedFunctionality = function () {
-
-               //map depricated persistance setup options
-
-               if (this.options.persistentLayout || this.options.persistentSort || this.options.persistentFilter) {
-
-                       if (!this.options.persistence) {
-
-                               this.options.persistence = {};
-                       }
-               }
-
-               if (this.options.downloadDataFormatter) {
-
-                       console.warn("DEPRECATION WARNING - downloadDataFormatter option has been deprecated");
-               }
-
-               if (typeof this.options.clipboardCopyHeader !== "undefined") {
-
-                       this.options.columnHeaders = this.options.clipboardCopyHeader;
-
-                       console.warn("DEPRECATION WARNING - clipboardCopyHeader option has been deprecated, please use the columnHeaders property on the clipboardCopyConfig option");
-               }
-
-               if (this.options.printVisibleRows !== true) {
-
-                       console.warn("printVisibleRows option is deprecated, you should now use the printRowRange option");
-
-                       this.options.persistence.printRowRange = "active";
-               }
-
-               if (this.options.printCopyStyle !== true) {
-
-                       console.warn("printCopyStyle option is deprecated, you should now use the printStyled option");
-
-                       this.options.persistence.printStyled = this.options.printCopyStyle;
-               }
-
-               if (this.options.persistentLayout) {
-
-                       console.warn("persistentLayout option is deprecated, you should now use the persistence option");
-
-                       if (this.options.persistence !== true && typeof this.options.persistence.columns === "undefined") {
-
-                               this.options.persistence.columns = true;
-                       }
-               }
-
-               if (this.options.persistentSort) {
-
-                       console.warn("persistentSort option is deprecated, you should now use the persistence option");
-
-                       if (this.options.persistence !== true && typeof this.options.persistence.sort === "undefined") {
-
-                               this.options.persistence.sort = true;
-                       }
-               }
-
-               if (this.options.persistentFilter) {
-
-                       console.warn("persistentFilter option is deprecated, you should now use the persistence option");
-
-                       if (this.options.persistence !== true && typeof this.options.persistence.filter === "undefined") {
-
-                               this.options.persistence.filter = true;
-                       }
-               }
-
-               if (this.options.columnVertAlign) {
-
-                       console.warn("columnVertAlign option is deprecated, you should now use the columnHeaderVertAlign option");
-
-                       this.options.columnHeaderVertAlign = this.options.columnVertAlign;
-               }
-       };
-
-       Tabulator.prototype._clearSelection = function () {
-
-               this.element.classList.add("tabulator-block-select");
-
-               if (window.getSelection) {
-
-                       if (window.getSelection().empty) {
-                               // Chrome
-
-                               window.getSelection().empty();
-                       } else if (window.getSelection().removeAllRanges) {
-                               // Firefox
-
-                               window.getSelection().removeAllRanges();
-                       }
-               } else if (document.selection) {
-                       // IE?
-
-                       document.selection.empty();
-               }
-
-               this.element.classList.remove("tabulator-block-select");
-       };
-
-       //concreate table
-
-       Tabulator.prototype._create = function () {
-
-               this._clearObjectPointers();
-
-               this._mapDepricatedFunctionality();
-
-               this.bindModules();
-
-               if (this.element.tagName === "TABLE") {
-
-                       if (this.modExists("htmlTableImport", true)) {
-
-                               this.modules.htmlTableImport.parseTable();
-                       }
-               }
-
-               this.columnManager = new ColumnManager(this);
-
-               this.rowManager = new RowManager(this);
-
-               this.footerManager = new FooterManager(this);
-
-               this.columnManager.setRowManager(this.rowManager);
-
-               this.rowManager.setColumnManager(this.columnManager);
-
-               this._buildElement();
-
-               this._loadInitialData();
-       };
-
-       //clear pointers to objects in default config object
-
-       Tabulator.prototype._clearObjectPointers = function () {
-
-               this.options.columns = this.options.columns.slice(0);
-
-               if (!this.options.reactiveData) {
-
-                       this.options.data = this.options.data.slice(0);
-               }
-       };
-
-       //build tabulator element
-
-       Tabulator.prototype._buildElement = function () {
-               var _this17 = this;
-
-               var element = this.element,
-                   mod = this.modules,
-                   options = this.options;
-
-               options.tableBuilding.call(this);
-
-               element.classList.add("tabulator");
-
-               element.setAttribute("role", "grid");
-
-               //empty element
-
-               while (element.firstChild) {
-                       element.removeChild(element.firstChild);
-               } //set table height
-
-               if (options.height) {
-
-                       options.height = isNaN(options.height) ? options.height : options.height + "px";
-
-                       element.style.height = options.height;
-               }
-
-               //set table min height
-
-               if (options.minHeight !== false) {
-
-                       options.minHeight = isNaN(options.minHeight) ? options.minHeight : options.minHeight + "px";
-
-                       element.style.minHeight = options.minHeight;
-               }
-
-               //set table maxHeight
-
-               if (options.maxHeight !== false) {
-
-                       options.maxHeight = isNaN(options.maxHeight) ? options.maxHeight : options.maxHeight + "px";
-
-                       element.style.maxHeight = options.maxHeight;
-               }
-
-               this.columnManager.initialize();
-
-               this.rowManager.initialize();
-
-               this._detectBrowser();
-
-               if (this.modExists("layout", true)) {
-
-                       mod.layout.initialize(options.layout);
-               }
-
-               //set localization
-
-               if (options.headerFilterPlaceholder !== false) {
-
-                       mod.localize.setHeaderFilterPlaceholder(options.headerFilterPlaceholder);
-               }
-
-               for (var locale in options.langs) {
-
-                       mod.localize.installLang(locale, options.langs[locale]);
-               }
-
-               mod.localize.setLocale(options.locale);
-
-               //configure placeholder element
-
-               if (typeof options.placeholder == "string") {
-
-                       var el = document.createElement("div");
-
-                       el.classList.add("tabulator-placeholder");
-
-                       var span = document.createElement("span");
-
-                       span.innerHTML = options.placeholder;
-
-                       el.appendChild(span);
-
-                       options.placeholder = el;
-               }
-
-               //build table elements
-
-               element.appendChild(this.columnManager.getElement());
-
-               element.appendChild(this.rowManager.getElement());
-
-               if (options.footerElement) {
-
-                       this.footerManager.activate();
-               }
-
-               if (options.persistence && this.modExists("persistence", true)) {
-
-                       mod.persistence.initialize();
-               }
-
-               if (options.persistence && this.modExists("persistence", true) && mod.persistence.config.columns) {
-
-                       options.columns = mod.persistence.load("columns", options.columns);
-               }
-
-               if (options.movableRows && this.modExists("moveRow")) {
-
-                       mod.moveRow.initialize();
-               }
-
-               if (options.autoColumns && this.options.data) {
-
-                       this.columnManager.generateColumnsFromRowData(this.options.data);
-               }
-
-               if (this.modExists("columnCalcs")) {
-
-                       mod.columnCalcs.initialize();
-               }
-
-               this.columnManager.setColumns(options.columns);
-
-               if (options.dataTree && this.modExists("dataTree", true)) {
-
-                       mod.dataTree.initialize();
-               }
-
-               if (this.modExists("frozenRows")) {
-
-                       this.modules.frozenRows.initialize();
-               }
-
-               if ((options.persistence && this.modExists("persistence", true) && mod.persistence.config.sort || options.initialSort) && this.modExists("sort", true)) {
-
-                       var sorters = [];
-
-                       if (options.persistence && this.modExists("persistence", true) && mod.persistence.config.sort) {
-
-                               sorters = mod.persistence.load("sort");
-
-                               if (sorters === false && options.initialSort) {
-
-                                       sorters = options.initialSort;
-                               }
-                       } else if (options.initialSort) {
-
-                               sorters = options.initialSort;
-                       }
-
-                       mod.sort.setSort(sorters);
-               }
-
-               if ((options.persistence && this.modExists("persistence", true) && mod.persistence.config.filter || options.initialFilter) && this.modExists("filter", true)) {
-
-                       var filters = [];
-
-                       if (options.persistence && this.modExists("persistence", true) && mod.persistence.config.filter) {
-
-                               filters = mod.persistence.load("filter");
-
-                               if (filters === false && options.initialFilter) {
-
-                                       filters = options.initialFilter;
-                               }
-                       } else if (options.initialFilter) {
-
-                               filters = options.initialFilter;
-                       }
-
-                       mod.filter.setFilter(filters);
-               }
-
-               if (options.initialHeaderFilter && this.modExists("filter", true)) {
-
-                       options.initialHeaderFilter.forEach(function (item) {
-
-                               var column = _this17.columnManager.findColumn(item.field);
-
-                               if (column) {
-
-                                       mod.filter.setHeaderFilterValue(column, item.value);
-                               } else {
-
-                                       console.warn("Column Filter Error - No matching column found:", item.field);
-
-                                       return false;
-                               }
-                       });
-               }
-
-               if (this.modExists("ajax")) {
-
-                       mod.ajax.initialize();
-               }
-
-               if (options.pagination && this.modExists("page", true)) {
-
-                       mod.page.initialize();
-               }
-
-               if (options.groupBy && this.modExists("groupRows", true)) {
-
-                       mod.groupRows.initialize();
-               }
-
-               if (this.modExists("keybindings")) {
-
-                       mod.keybindings.initialize();
-               }
-
-               if (this.modExists("selectRow")) {
-
-                       mod.selectRow.clearSelectionData(true);
-               }
-
-               if (options.autoResize && this.modExists("resizeTable")) {
-
-                       mod.resizeTable.initialize();
-               }
-
-               if (this.modExists("clipboard")) {
-
-                       mod.clipboard.initialize();
-               }
-
-               if (options.printAsHtml && this.modExists("print")) {
-
-                       mod.print.initialize();
-               }
-
-               options.tableBuilt.call(this);
-       };
-
-       Tabulator.prototype._loadInitialData = function () {
-
-               var self = this;
-
-               if (self.options.pagination && self.modExists("page")) {
-
-                       self.modules.page.reset(true, true);
-
-                       if (self.options.pagination == "local") {
-
-                               if (self.options.data.length) {
-
-                                       self.rowManager.setData(self.options.data, false, true);
-                               } else {
-
-                                       if ((self.options.ajaxURL || self.options.ajaxURLGenerator) && self.modExists("ajax")) {
-
-                                               self.modules.ajax.loadData(false, true).then(function () {}).catch(function () {
-
-                                                       if (self.options.paginationInitialPage) {
-
-                                                               self.modules.page.setPage(self.options.paginationInitialPage);
-                                                       }
-                                               });
-
-                                               return;
-                                       } else {
-
-                                               self.rowManager.setData(self.options.data, false, true);
-                                       }
-                               }
-
-                               if (self.options.paginationInitialPage) {
-
-                                       self.modules.page.setPage(self.options.paginationInitialPage);
-                               }
-                       } else {
-
-                               if (self.options.ajaxURL) {
-
-                                       self.modules.page.setPage(self.options.paginationInitialPage).then(function () {}).catch(function () {});
-                               } else {
-
-                                       self.rowManager.setData([], false, true);
-                               }
-                       }
-               } else {
-
-                       if (self.options.data.length) {
-
-                               self.rowManager.setData(self.options.data);
-                       } else {
-
-                               if ((self.options.ajaxURL || self.options.ajaxURLGenerator) && self.modExists("ajax")) {
-
-                                       self.modules.ajax.loadData(false, true).then(function () {}).catch(function () {});
-                               } else {
-
-                                       self.rowManager.setData(self.options.data, false, true);
-                               }
-                       }
-               }
-       };
-
-       //deconstructor
-
-       Tabulator.prototype.destroy = function () {
-
-               var element = this.element;
-
-               Tabulator.prototype.comms.deregister(this); //deregister table from inderdevice communication
-
-
-               if (this.options.reactiveData && this.modExists("reactiveData", true)) {
-
-                       this.modules.reactiveData.unwatchData();
-               }
-
-               //clear row data
-
-               this.rowManager.rows.forEach(function (row) {
-
-                       row.wipe();
-               });
-
-               this.rowManager.rows = [];
-
-               this.rowManager.activeRows = [];
-
-               this.rowManager.displayRows = [];
-
-               //clear event bindings
-
-               if (this.options.autoResize && this.modExists("resizeTable")) {
-
-                       this.modules.resizeTable.clearBindings();
-               }
-
-               if (this.modExists("keybindings")) {
-
-                       this.modules.keybindings.clearBindings();
-               }
-
-               //clear DOM
-
-               while (element.firstChild) {
-                       element.removeChild(element.firstChild);
-               }element.classList.remove("tabulator");
-       };
-
-       Tabulator.prototype._detectBrowser = function () {
-
-               var ua = navigator.userAgent || navigator.vendor || window.opera;
-
-               if (ua.indexOf("Trident") > -1) {
-
-                       this.browser = "ie";
-
-                       this.browserSlow = true;
-               } else if (ua.indexOf("Edge") > -1) {
-
-                       this.browser = "edge";
-
-                       this.browserSlow = true;
-               } else if (ua.indexOf("Firefox") > -1) {
-
-                       this.browser = "firefox";
-
-                       this.browserSlow = false;
-               } else {
-
-                       this.browser = "other";
-
-                       this.browserSlow = false;
-               }
-
-               this.browserMobile = /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(ua) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(ua.substr(0, 4));
-       };
-
-       ////////////////// Data Handling //////////////////
-
-
-       //block table redrawing
-
-       Tabulator.prototype.blockRedraw = function () {
-
-               return this.rowManager.blockRedraw();
-       };
-
-       //restore table redrawing
-
-       Tabulator.prototype.restoreRedraw = function () {
-
-               return this.rowManager.restoreRedraw();
-       };
-
-       //local data from local file
-
-       Tabulator.prototype.setDataFromLocalFile = function (extensions) {
-               var _this18 = this;
-
-               return new Promise(function (resolve, reject) {
-
-                       var input = document.createElement("input");
-
-                       input.type = "file";
-
-                       input.accept = extensions || ".json,application/json";
-
-                       input.addEventListener("change", function (e) {
-
-                               var file = input.files[0],
-                                   reader = new FileReader(),
-                                   data;
-
-                               reader.readAsText(file);
-
-                               reader.onload = function (e) {
-
-                                       try {
-
-                                               data = JSON.parse(reader.result);
-                                       } catch (e) {
-
-                                               console.warn("File Load Error - File contents is invalid JSON", e);
-
-                                               reject(e);
-
-                                               return;
-                                       }
-
-                                       _this18._setData(data).then(function (data) {
-
-                                               resolve(data);
-                                       }).catch(function (err) {
-
-                                               resolve(err);
-                                       });
-                               };
-
-                               reader.onerror = function (e) {
-
-                                       console.warn("File Load Error - Unable to read file");
-
-                                       reject();
-                               };
-                       });
-
-                       input.click();
-               });
-       };
-
-       //load data
-
-       Tabulator.prototype.setData = function (data, params, config) {
-
-               if (this.modExists("ajax")) {
-
-                       this.modules.ajax.blockActiveRequest();
-               }
-
-               return this._setData(data, params, config, false, true);
-       };
-
-       Tabulator.prototype._setData = function (data, params, config, inPosition, columnsChanged) {
-
-               var self = this;
-
-               if (typeof data === "string") {
-
-                       if (data.indexOf("{") == 0 || data.indexOf("[") == 0) {
-
-                               //data is a json encoded string
-
-                               return self.rowManager.setData(JSON.parse(data), inPosition, columnsChanged);
-                       } else {
-
-                               if (self.modExists("ajax", true)) {
-
-                                       if (params) {
-
-                                               self.modules.ajax.setParams(params);
-                                       }
-
-                                       if (config) {
-
-                                               self.modules.ajax.setConfig(config);
-                                       }
-
-                                       self.modules.ajax.setUrl(data);
-
-                                       if (self.options.pagination == "remote" && self.modExists("page", true)) {
-
-                                               self.modules.page.reset(true, true);
-
-                                               return self.modules.page.setPage(1);
-                                       } else {
-
-                                               //assume data is url, make ajax call to url to get data
-
-                                               return self.modules.ajax.loadData(inPosition, columnsChanged);
-                                       }
-                               }
-                       }
-               } else {
-
-                       if (data) {
-
-                               //asume data is already an object
-
-                               return self.rowManager.setData(data, inPosition, columnsChanged);
-                       } else {
-
-                               //no data provided, check if ajaxURL is present;
-
-                               if (self.modExists("ajax") && (self.modules.ajax.getUrl || self.options.ajaxURLGenerator)) {
-
-                                       if (self.options.pagination == "remote" && self.modExists("page", true)) {
-
-                                               self.modules.page.reset(true, true);
-
-                                               return self.modules.page.setPage(1);
-                                       } else {
-
-                                               return self.modules.ajax.loadData(inPosition, columnsChanged);
-                                       }
-                               } else {
-
-                                       //empty data
-
-                                       return self.rowManager.setData([], inPosition, columnsChanged);
-                               }
-                       }
-               }
-       };
-
-       //clear data
-
-       Tabulator.prototype.clearData = function () {
-
-               if (this.modExists("ajax")) {
-
-                       this.modules.ajax.blockActiveRequest();
-               }
-
-               this.rowManager.clearData();
-       };
-
-       //get table data array
-
-       Tabulator.prototype.getData = function (active) {
-
-               if (active === true) {
-
-                       console.warn("passing a boolean to the getData function is deprecated, you should now pass the string 'active'");
-
-                       active = "active";
-               }
-
-               return this.rowManager.getData(active);
-       };
-
-       //get table data array count
-
-       Tabulator.prototype.getDataCount = function (active) {
-
-               if (active === true) {
-
-                       console.warn("passing a boolean to the getDataCount function is deprecated, you should now pass the string 'active'");
-
-                       active = "active";
-               }
-
-               return this.rowManager.getDataCount(active);
-       };
-
-       //search for specific row components
-
-       Tabulator.prototype.searchRows = function (field, type, value) {
-
-               if (this.modExists("filter", true)) {
-
-                       return this.modules.filter.search("rows", field, type, value);
-               }
-       };
-
-       //search for specific data
-
-       Tabulator.prototype.searchData = function (field, type, value) {
-
-               if (this.modExists("filter", true)) {
-
-                       return this.modules.filter.search("data", field, type, value);
-               }
-       };
-
-       //get table html
-
-       Tabulator.prototype.getHtml = function (visible, style, config) {
-
-               if (this.modExists("export", true)) {
-
-                       return this.modules.export.getHtml(visible, style, config);
-               }
-       };
-
-       //get print html
-
-       Tabulator.prototype.print = function (visible, style, config) {
-
-               if (this.modExists("print", true)) {
-
-                       return this.modules.print.printFullscreen(visible, style, config);
-               }
-       };
-
-       //retrieve Ajax URL
-
-       Tabulator.prototype.getAjaxUrl = function () {
-
-               if (this.modExists("ajax", true)) {
-
-                       return this.modules.ajax.getUrl();
-               }
-       };
-
-       //replace data, keeping table in position with same sort
-
-       Tabulator.prototype.replaceData = function (data, params, config) {
-
-               if (this.modExists("ajax")) {
-
-                       this.modules.ajax.blockActiveRequest();
-               }
-
-               return this._setData(data, params, config, true);
-       };
-
-       //update table data
-
-       Tabulator.prototype.updateData = function (data) {
-               var _this19 = this;
-
-               var self = this;
-
-               var responses = 0;
-
-               return new Promise(function (resolve, reject) {
-
-                       if (_this19.modExists("ajax")) {
-
-                               _this19.modules.ajax.blockActiveRequest();
-                       }
-
-                       if (typeof data === "string") {
-
-                               data = JSON.parse(data);
-                       }
-
-                       if (data) {
-
-                               data.forEach(function (item) {
-
-                                       var row = self.rowManager.findRow(item[self.options.index]);
-
-                                       if (row) {
-
-                                               responses++;
-
-                                               row.updateData(item).then(function () {
-
-                                                       responses--;
-
-                                                       if (!responses) {
-
-                                                               resolve();
-                                                       }
-                                               });
-                                       }
-                               });
-                       } else {
-
-                               console.warn("Update Error - No data provided");
-
-                               reject("Update Error - No data provided");
-                       }
-               });
-       };
-
-       Tabulator.prototype.addData = function (data, pos, index) {
-               var _this20 = this;
-
-               return new Promise(function (resolve, reject) {
-
-                       if (_this20.modExists("ajax")) {
-
-                               _this20.modules.ajax.blockActiveRequest();
-                       }
-
-                       if (typeof data === "string") {
-
-                               data = JSON.parse(data);
-                       }
-
-                       if (data) {
-
-                               _this20.rowManager.addRows(data, pos, index).then(function (rows) {
-
-                                       var output = [];
-
-                                       rows.forEach(function (row) {
-
-                                               output.push(row.getComponent());
-                                       });
-
-                                       resolve(output);
-                               });
-                       } else {
-
-                               console.warn("Update Error - No data provided");
-
-                               reject("Update Error - No data provided");
-                       }
-               });
-       };
-
-       //update table data
-
-       Tabulator.prototype.updateOrAddData = function (data) {
-               var _this21 = this;
-
-               var self = this,
-                   rows = [],
-                   responses = 0;
-
-               return new Promise(function (resolve, reject) {
-
-                       if (_this21.modExists("ajax")) {
-
-                               _this21.modules.ajax.blockActiveRequest();
-                       }
-
-                       if (typeof data === "string") {
-
-                               data = JSON.parse(data);
-                       }
-
-                       if (data) {
-
-                               data.forEach(function (item) {
-
-                                       var row = self.rowManager.findRow(item[self.options.index]);
-
-                                       responses++;
-
-                                       if (row) {
-
-                                               row.updateData(item).then(function () {
-
-                                                       responses--;
-
-                                                       rows.push(row.getComponent());
-
-                                                       if (!responses) {
-
-                                                               resolve(rows);
-                                                       }
-                                               });
-                                       } else {
-
-                                               self.rowManager.addRows(item).then(function (newRows) {
-
-                                                       responses--;
-
-                                                       rows.push(newRows[0].getComponent());
-
-                                                       if (!responses) {
-
-                                                               resolve(rows);
-                                                       }
-                                               });
-                                       }
-                               });
-                       } else {
-
-                               console.warn("Update Error - No data provided");
-
-                               reject("Update Error - No data provided");
-                       }
-               });
-       };
-
-       //get row object
-
-       Tabulator.prototype.getRow = function (index) {
-
-               var row = this.rowManager.findRow(index);
-
-               if (row) {
-
-                       return row.getComponent();
-               } else {
-
-                       console.warn("Find Error - No matching row found:", index);
-
-                       return false;
-               }
-       };
-
-       //get row object
-
-       Tabulator.prototype.getRowFromPosition = function (position, active) {
-
-               var row = this.rowManager.getRowFromPosition(position, active);
-
-               if (row) {
-
-                       return row.getComponent();
-               } else {
-
-                       console.warn("Find Error - No matching row found:", position);
-
-                       return false;
-               }
-       };
-
-       //delete row from table
-
-       Tabulator.prototype.deleteRow = function (index) {
-               var _this22 = this;
-
-               return new Promise(function (resolve, reject) {
-
-                       var self = _this22,
-                           count = 0,
-                           successCount = 0,
-                           foundRows = [];
-
-                       function doneCheck() {
-
-                               count++;
-
-                               if (count == index.length) {
-
-                                       if (successCount) {
-
-                                               self.rowManager.reRenderInPosition();
-
-                                               resolve();
-                                       }
-                               }
-                       }
-
-                       if (!Array.isArray(index)) {
-
-                               index = [index];
-                       }
-
-                       //find matching rows
-
-                       index.forEach(function (item) {
-
-                               var row = _this22.rowManager.findRow(item, true);
-
-                               if (row) {
-
-                                       foundRows.push(row);
-                               } else {
-
-                                       console.warn("Delete Error - No matching row found:", item);
-
-                                       reject("Delete Error - No matching row found");
-
-                                       doneCheck();
-                               }
-                       });
-
-                       //sort rows into correct order to ensure smooth delete from table
-
-                       foundRows.sort(function (a, b) {
-
-                               return _this22.rowManager.rows.indexOf(a) > _this22.rowManager.rows.indexOf(b) ? 1 : -1;
-                       });
-
-                       foundRows.forEach(function (row) {
-
-                               row.delete().then(function () {
-
-                                       successCount++;
-
-                                       doneCheck();
-                               }).catch(function (err) {
-
-                                       doneCheck();
-
-                                       reject(err);
-                               });
-                       });
-               });
-       };
-
-       //add row to table
-
-       Tabulator.prototype.addRow = function (data, pos, index) {
-               var _this23 = this;
-
-               return new Promise(function (resolve, reject) {
-
-                       if (typeof data === "string") {
-
-                               data = JSON.parse(data);
-                       }
-
-                       _this23.rowManager.addRows(data, pos, index).then(function (rows) {
-
-                               //recalc column calculations if present
-
-                               if (_this23.modExists("columnCalcs")) {
-
-                                       _this23.modules.columnCalcs.recalc(_this23.rowManager.activeRows);
-                               }
-
-                               resolve(rows[0].getComponent());
-                       });
-               });
-       };
-
-       //update a row if it exitsts otherwise create it
-
-       Tabulator.prototype.updateOrAddRow = function (index, data) {
-               var _this24 = this;
-
-               return new Promise(function (resolve, reject) {
-
-                       var row = _this24.rowManager.findRow(index);
-
-                       if (typeof data === "string") {
-
-                               data = JSON.parse(data);
-                       }
-
-                       if (row) {
-
-                               row.updateData(data).then(function () {
-
-                                       //recalc column calculations if present
-
-                                       if (_this24.modExists("columnCalcs")) {
-
-                                               _this24.modules.columnCalcs.recalc(_this24.rowManager.activeRows);
-                                       }
-
-                                       resolve(row.getComponent());
-                               }).catch(function (err) {
-
-                                       reject(err);
-                               });
-                       } else {
-
-                               row = _this24.rowManager.addRows(data).then(function (rows) {
-
-                                       //recalc column calculations if present
-
-                                       if (_this24.modExists("columnCalcs")) {
-
-                                               _this24.modules.columnCalcs.recalc(_this24.rowManager.activeRows);
-                                       }
-
-                                       resolve(rows[0].getComponent());
-                               }).catch(function (err) {
-
-                                       reject(err);
-                               });
-                       }
-               });
-       };
-
-       //update row data
-
-       Tabulator.prototype.updateRow = function (index, data) {
-               var _this25 = this;
-
-               return new Promise(function (resolve, reject) {
-
-                       var row = _this25.rowManager.findRow(index);
-
-                       if (typeof data === "string") {
-
-                               data = JSON.parse(data);
-                       }
-
-                       if (row) {
-
-                               row.updateData(data).then(function () {
-
-                                       resolve(row.getComponent());
-                               }).catch(function (err) {
-
-                                       reject(err);
-                               });
-                       } else {
-
-                               console.warn("Update Error - No matching row found:", index);
-
-                               reject("Update Error - No matching row found");
-                       }
-               });
-       };
-
-       //scroll to row in DOM
-
-       Tabulator.prototype.scrollToRow = function (index, position, ifVisible) {
-               var _this26 = this;
-
-               return new Promise(function (resolve, reject) {
-
-                       var row = _this26.rowManager.findRow(index);
-
-                       if (row) {
-
-                               _this26.rowManager.scrollToRow(row, position, ifVisible).then(function () {
-
-                                       resolve();
-                               }).catch(function (err) {
-
-                                       reject(err);
-                               });
-                       } else {
-
-                               console.warn("Scroll Error - No matching row found:", index);
-
-                               reject("Scroll Error - No matching row found");
-                       }
-               });
-       };
-
-       Tabulator.prototype.moveRow = function (from, to, after) {
-
-               var fromRow = this.rowManager.findRow(from);
-
-               if (fromRow) {
-
-                       fromRow.moveToRow(to, after);
-               } else {
-
-                       console.warn("Move Error - No matching row found:", from);
-               }
-       };
-
-       Tabulator.prototype.getRows = function (active) {
-
-               if (active === true) {
-
-                       console.warn("passing a boolean to the getRows function is deprecated, you should now pass the string 'active'");
-
-                       active = "active";
-               }
-
-               return this.rowManager.getComponents(active);
-       };
-
-       //get position of row in table
-
-       Tabulator.prototype.getRowPosition = function (index, active) {
-
-               var row = this.rowManager.findRow(index);
-
-               if (row) {
-
-                       return this.rowManager.getRowPosition(row, active);
-               } else {
-
-                       console.warn("Position Error - No matching row found:", index);
-
-                       return false;
-               }
-       };
-
-       //copy table data to clipboard
-
-       Tabulator.prototype.copyToClipboard = function (selector) {
-
-               if (this.modExists("clipboard", true)) {
-
-                       this.modules.clipboard.copy(selector);
-               }
-       };
-
-       /////////////// Column Functions  ///////////////
-
-
-       Tabulator.prototype.setColumns = function (definition) {
-
-               this.columnManager.setColumns(definition);
-       };
-
-       Tabulator.prototype.getColumns = function (structured) {
-
-               return this.columnManager.getComponents(structured);
-       };
-
-       Tabulator.prototype.getColumn = function (field) {
-
-               var col = this.columnManager.findColumn(field);
-
-               if (col) {
-
-                       return col.getComponent();
-               } else {
-
-                       console.warn("Find Error - No matching column found:", field);
-
-                       return false;
-               }
-       };
-
-       Tabulator.prototype.getColumnDefinitions = function () {
-
-               return this.columnManager.getDefinitionTree();
-       };
-
-       Tabulator.prototype.getColumnLayout = function () {
-
-               if (this.modExists("persistence", true)) {
-
-                       return this.modules.persistence.parseColumns(this.columnManager.getColumns());
-               }
-       };
-
-       Tabulator.prototype.setColumnLayout = function (layout) {
-
-               if (this.modExists("persistence", true)) {
-
-                       this.columnManager.setColumns(this.modules.persistence.mergeDefinition(this.options.columns, layout));
-
-                       return true;
-               }
-
-               return false;
-       };
-
-       Tabulator.prototype.showColumn = function (field) {
-
-               var column = this.columnManager.findColumn(field);
-
-               if (column) {
-
-                       column.show();
-
-                       if (this.options.responsiveLayout && this.modExists("responsiveLayout", true)) {
-
-                               this.modules.responsiveLayout.update();
-                       }
-               } else {
-
-                       console.warn("Column Show Error - No matching column found:", field);
-
-                       return false;
-               }
-       };
-
-       Tabulator.prototype.hideColumn = function (field) {
-
-               var column = this.columnManager.findColumn(field);
-
-               if (column) {
-
-                       column.hide();
-
-                       if (this.options.responsiveLayout && this.modExists("responsiveLayout", true)) {
-
-                               this.modules.responsiveLayout.update();
-                       }
-               } else {
-
-                       console.warn("Column Hide Error - No matching column found:", field);
-
-                       return false;
-               }
-       };
-
-       Tabulator.prototype.toggleColumn = function (field) {
-
-               var column = this.columnManager.findColumn(field);
-
-               if (column) {
-
-                       if (column.visible) {
-
-                               column.hide();
-                       } else {
-
-                               column.show();
-                       }
-               } else {
-
-                       console.warn("Column Visibility Toggle Error - No matching column found:", field);
-
-                       return false;
-               }
-       };
-
-       Tabulator.prototype.addColumn = function (definition, before, field) {
-               var _this27 = this;
-
-               return new Promise(function (resolve, reject) {
-
-                       var column = _this27.columnManager.findColumn(field);
-
-                       _this27.columnManager.addColumn(definition, before, column).then(function (column) {
-
-                               resolve(column.getComponent());
-                       }).catch(function (err) {
-
-                               reject(err);
-                       });
-               });
-       };
-
-       Tabulator.prototype.deleteColumn = function (field) {
-               var _this28 = this;
-
-               return new Promise(function (resolve, reject) {
-
-                       var column = _this28.columnManager.findColumn(field);
-
-                       if (column) {
-
-                               column.delete().then(function () {
-
-                                       resolve();
-                               }).catch(function (err) {
-
-                                       reject(err);
-                               });
-                       } else {
-
-                               console.warn("Column Delete Error - No matching column found:", field);
-
-                               reject();
-                       }
-               });
-       };
-
-       Tabulator.prototype.updateColumnDefinition = function (field, definition) {
-               var _this29 = this;
-
-               return new Promise(function (resolve, reject) {
-
-                       var column = _this29.columnManager.findColumn(field);
-
-                       if (column) {
-
-                               column.updateDefinition(definition).then(function (col) {
-
-                                       resolve(col);
-                               }).catch(function (err) {
-
-                                       reject(err);
-                               });
-                       } else {
-
-                               console.warn("Column Update Error - No matching column found:", field);
-
-                               reject();
-                       }
-               });
-       };
-
-       Tabulator.prototype.moveColumn = function (from, to, after) {
-
-               var fromColumn = this.columnManager.findColumn(from);
-
-               var toColumn = this.columnManager.findColumn(to);
-
-               if (fromColumn) {
-
-                       if (toColumn) {
-
-                               this.columnManager.moveColumn(fromColumn, toColumn, after);
-                       } else {
-
-                               console.warn("Move Error - No matching column found:", toColumn);
-                       }
-               } else {
-
-                       console.warn("Move Error - No matching column found:", from);
-               }
-       };
-
-       //scroll to column in DOM
-
-       Tabulator.prototype.scrollToColumn = function (field, position, ifVisible) {
-               var _this30 = this;
-
-               return new Promise(function (resolve, reject) {
-
-                       var column = _this30.columnManager.findColumn(field);
-
-                       if (column) {
-
-                               _this30.columnManager.scrollToColumn(column, position, ifVisible).then(function () {
-
-                                       resolve();
-                               }).catch(function (err) {
-
-                                       reject(err);
-                               });
-                       } else {
-
-                               console.warn("Scroll Error - No matching column found:", field);
-
-                               reject("Scroll Error - No matching column found");
-                       }
-               });
-       };
-
-       //////////// Localization Functions  ////////////
-
-       Tabulator.prototype.setLocale = function (locale) {
-
-               this.modules.localize.setLocale(locale);
-       };
-
-       Tabulator.prototype.getLocale = function () {
-
-               return this.modules.localize.getLocale();
-       };
-
-       Tabulator.prototype.getLang = function (locale) {
-
-               return this.modules.localize.getLang(locale);
-       };
-
-       //////////// General Public Functions ////////////
-
-
-       //redraw list without updating data
-
-       Tabulator.prototype.redraw = function (force) {
-
-               this.columnManager.redraw(force);
-
-               this.rowManager.redraw(force);
-       };
-
-       Tabulator.prototype.setHeight = function (height) {
-
-               if (this.rowManager.renderMode !== "classic") {
-
-                       this.options.height = isNaN(height) ? height : height + "px";
-
-                       this.element.style.height = this.options.height;
-
-                       this.rowManager.setRenderMode();
-
-                       this.rowManager.redraw();
-               } else {
-
-                       console.warn("setHeight function is not available in classic render mode");
-               }
-       };
-
-       ///////////////////// Sorting ////////////////////
-
-
-       //trigger sort
-
-       Tabulator.prototype.setSort = function (sortList, dir) {
-
-               if (this.modExists("sort", true)) {
-
-                       this.modules.sort.setSort(sortList, dir);
-
-                       this.rowManager.sorterRefresh();
-               }
-       };
-
-       Tabulator.prototype.getSorters = function () {
-
-               if (this.modExists("sort", true)) {
-
-                       return this.modules.sort.getSort();
-               }
-       };
-
-       Tabulator.prototype.clearSort = function () {
-
-               if (this.modExists("sort", true)) {
-
-                       this.modules.sort.clear();
-
-                       this.rowManager.sorterRefresh();
-               }
-       };
-
-       ///////////////////// Filtering ////////////////////
-
-
-       //set standard filters
-
-       Tabulator.prototype.setFilter = function (field, type, value, params) {
-
-               if (this.modExists("filter", true)) {
-
-                       this.modules.filter.setFilter(field, type, value, params);
-
-                       this.rowManager.filterRefresh();
-               }
-       };
-
-       //add filter to array
-
-       Tabulator.prototype.addFilter = function (field, type, value, params) {
-
-               if (this.modExists("filter", true)) {
-
-                       this.modules.filter.addFilter(field, type, value, params);
-
-                       this.rowManager.filterRefresh();
-               }
-       };
-
-       //get all filters
-
-       Tabulator.prototype.getFilters = function (all) {
-
-               if (this.modExists("filter", true)) {
-
-                       return this.modules.filter.getFilters(all);
-               }
-       };
-
-       Tabulator.prototype.setHeaderFilterFocus = function (field) {
-
-               if (this.modExists("filter", true)) {
-
-                       var column = this.columnManager.findColumn(field);
-
-                       if (column) {
-
-                               this.modules.filter.setHeaderFilterFocus(column);
-                       } else {
-
-                               console.warn("Column Filter Focus Error - No matching column found:", field);
-
-                               return false;
-                       }
-               }
-       };
-
-       Tabulator.prototype.getHeaderFilterValue = function (field) {
-
-               if (this.modExists("filter", true)) {
-
-                       var column = this.columnManager.findColumn(field);
-
-                       if (column) {
-
-                               return this.modules.filter.getHeaderFilterValue(column);
-                       } else {
-
-                               console.warn("Column Filter Error - No matching column found:", field);
-                       }
-               }
-       };
-
-       Tabulator.prototype.setHeaderFilterValue = function (field, value) {
-
-               if (this.modExists("filter", true)) {
-
-                       var column = this.columnManager.findColumn(field);
-
-                       if (column) {
-
-                               this.modules.filter.setHeaderFilterValue(column, value);
-                       } else {
-
-                               console.warn("Column Filter Error - No matching column found:", field);
-
-                               return false;
-                       }
-               }
-       };
-
-       Tabulator.prototype.getHeaderFilters = function () {
-
-               if (this.modExists("filter", true)) {
-
-                       return this.modules.filter.getHeaderFilters();
-               }
-       };
-
-       //remove filter from array
-
-       Tabulator.prototype.removeFilter = function (field, type, value) {
-
-               if (this.modExists("filter", true)) {
-
-                       this.modules.filter.removeFilter(field, type, value);
-
-                       this.rowManager.filterRefresh();
-               }
-       };
-
-       //clear filters
-
-       Tabulator.prototype.clearFilter = function (all) {
-
-               if (this.modExists("filter", true)) {
-
-                       this.modules.filter.clearFilter(all);
-
-                       this.rowManager.filterRefresh();
-               }
-       };
-
-       //clear header filters
-
-       Tabulator.prototype.clearHeaderFilter = function () {
-
-               if (this.modExists("filter", true)) {
-
-                       this.modules.filter.clearHeaderFilter();
-
-                       this.rowManager.filterRefresh();
-               }
-       };
-
-       ///////////////////// select ////////////////////
-
-       Tabulator.prototype.selectRow = function (rows) {
-
-               if (this.modExists("selectRow", true)) {
-
-                       if (rows === true) {
-
-                               console.warn("passing a boolean to the selectRowselectRow function is deprecated, you should now pass the string 'active'");
-
-                               rows = "active";
-                       }
-
-                       this.modules.selectRow.selectRows(rows);
-               }
-       };
-
-       Tabulator.prototype.deselectRow = function (rows) {
-
-               if (this.modExists("selectRow", true)) {
-
-                       this.modules.selectRow.deselectRows(rows);
-               }
-       };
-
-       Tabulator.prototype.toggleSelectRow = function (row) {
-
-               if (this.modExists("selectRow", true)) {
-
-                       this.modules.selectRow.toggleRow(row);
-               }
-       };
-
-       Tabulator.prototype.getSelectedRows = function () {
-
-               if (this.modExists("selectRow", true)) {
-
-                       return this.modules.selectRow.getSelectedRows();
-               }
-       };
-
-       Tabulator.prototype.getSelectedData = function () {
-
-               if (this.modExists("selectRow", true)) {
-
-                       return this.modules.selectRow.getSelectedData();
-               }
-       };
-
-       ///////////////////// validation  ////////////////////
-
-       Tabulator.prototype.getInvalidCells = function () {
-
-               if (this.modExists("validate", true)) {
-
-                       return this.modules.validate.getInvalidCells();
-               }
-       };
-
-       Tabulator.prototype.clearCellValidation = function (cells) {
-               var _this31 = this;
-
-               if (this.modExists("validate", true)) {
-
-                       if (!cells) {
-
-                               cells = this.modules.validate.getInvalidCells();
-                       }
-
-                       if (!Array.isArray(cells)) {
-
-                               cells = [cells];
-                       }
-
-                       cells.forEach(function (cell) {
-
-                               _this31.modules.validate.clearValidation(cell._getSelf());
-                       });
-               }
-       };
-
-       Tabulator.prototype.validate = function (cells) {
-
-               var output = [];
-
-               //clear row data
-
-               this.rowManager.rows.forEach(function (row) {
-
-                       var valid = row.validate();
-
-                       if (valid !== true) {
-
-                               output = output.concat(valid);
-                       }
-               });
-
-               return output.length ? output : true;
-       };
-
-       //////////// Pagination Functions  ////////////
-
-
-       Tabulator.prototype.setMaxPage = function (max) {
-
-               if (this.options.pagination && this.modExists("page")) {
-
-                       this.modules.page.setMaxPage(max);
-               } else {
-
-                       return false;
-               }
-       };
-
-       Tabulator.prototype.setPage = function (page) {
-
-               if (this.options.pagination && this.modExists("page")) {
-
-                       return this.modules.page.setPage(page);
-               } else {
-
-                       return new Promise(function (resolve, reject) {
-                               reject();
-                       });
-               }
-       };
-
-       Tabulator.prototype.setPageToRow = function (row) {
-               var _this32 = this;
-
-               return new Promise(function (resolve, reject) {
-
-                       if (_this32.options.pagination && _this32.modExists("page")) {
-
-                               row = _this32.rowManager.findRow(row);
-
-                               if (row) {
-
-                                       _this32.modules.page.setPageToRow(row).then(function () {
-
-                                               resolve();
-                                       }).catch(function () {
-
-                                               reject();
-                                       });
-                               } else {
-
-                                       reject();
-                               }
-                       } else {
-
-                               reject();
-                       }
-               });
-       };
-
-       Tabulator.prototype.setPageSize = function (size) {
-
-               if (this.options.pagination && this.modExists("page")) {
-
-                       this.modules.page.setPageSize(size);
-
-                       this.modules.page.setPage(1).then(function () {}).catch(function () {});
-               } else {
-
-                       return false;
-               }
-       };
-
-       Tabulator.prototype.getPageSize = function () {
-
-               if (this.options.pagination && this.modExists("page", true)) {
-
-                       return this.modules.page.getPageSize();
-               }
-       };
-
-       Tabulator.prototype.previousPage = function () {
-
-               if (this.options.pagination && this.modExists("page")) {
-
-                       this.modules.page.previousPage();
-               } else {
-
-                       return false;
-               }
-       };
-
-       Tabulator.prototype.nextPage = function () {
-
-               if (this.options.pagination && this.modExists("page")) {
-
-                       this.modules.page.nextPage();
-               } else {
-
-                       return false;
-               }
-       };
-
-       Tabulator.prototype.getPage = function () {
-
-               if (this.options.pagination && this.modExists("page")) {
-
-                       return this.modules.page.getPage();
-               } else {
-
-                       return false;
-               }
-       };
-
-       Tabulator.prototype.getPageMax = function () {
-
-               if (this.options.pagination && this.modExists("page")) {
-
-                       return this.modules.page.getPageMax();
-               } else {
-
-                       return false;
-               }
-       };
-
-       ///////////////// Grouping Functions ///////////////
-
-
-       Tabulator.prototype.setGroupBy = function (groups) {
-
-               if (this.modExists("groupRows", true)) {
-
-                       this.options.groupBy = groups;
-
-                       this.modules.groupRows.initialize();
-
-                       this.rowManager.refreshActiveData("display");
-
-                       if (this.options.persistence && this.modExists("persistence", true) && this.modules.persistence.config.group) {
-
-                               this.modules.persistence.save("group");
-                       }
-               } else {
-
-                       return false;
-               }
-       };
-
-       Tabulator.prototype.setGroupStartOpen = function (values) {
-
-               if (this.modExists("groupRows", true)) {
-
-                       this.options.groupStartOpen = values;
-
-                       this.modules.groupRows.initialize();
-
-                       if (this.options.groupBy) {
-
-                               this.rowManager.refreshActiveData("group");
-
-                               if (this.options.persistence && this.modExists("persistence", true) && this.modules.persistence.config.group) {
-
-                                       this.modules.persistence.save("group");
-                               }
-                       } else {
-
-                               console.warn("Grouping Update - cant refresh view, no groups have been set");
-                       }
-               } else {
-
-                       return false;
-               }
-       };
-
-       Tabulator.prototype.setGroupHeader = function (values) {
-
-               if (this.modExists("groupRows", true)) {
-
-                       this.options.groupHeader = values;
-
-                       this.modules.groupRows.initialize();
-
-                       if (this.options.groupBy) {
-
-                               this.rowManager.refreshActiveData("group");
-
-                               if (this.options.persistence && this.modExists("persistence", true) && this.modules.persistence.config.group) {
-
-                                       this.modules.persistence.save("group");
-                               }
-                       } else {
-
-                               console.warn("Grouping Update - cant refresh view, no groups have been set");
-                       }
-               } else {
-
-                       return false;
-               }
-       };
-
-       Tabulator.prototype.getGroups = function (values) {
-
-               if (this.modExists("groupRows", true)) {
-
-                       return this.modules.groupRows.getGroups(true);
-               } else {
-
-                       return false;
-               }
-       };
-
-       // get grouped table data in the same format as getData()
-
-       Tabulator.prototype.getGroupedData = function () {
-
-               if (this.modExists("groupRows", true)) {
-
-                       return this.options.groupBy ? this.modules.groupRows.getGroupedData() : this.getData();
-               }
-       };
-
-       Tabulator.prototype.getEditedCells = function () {
-
-               if (this.modExists("edit", true)) {
-
-                       return this.modules.edit.getEditedCells();
-               }
-       };
-
-       Tabulator.prototype.clearCellEdited = function (cells) {
-               var _this33 = this;
-
-               if (this.modExists("edit", true)) {
-
-                       if (!cells) {
-
-                               cells = this.modules.edit.getEditedCells();
-                       }
-
-                       if (!Array.isArray(cells)) {
-
-                               cells = [cells];
-                       }
-
-                       cells.forEach(function (cell) {
-
-                               _this33.modules.edit.clearEdited(cell._getSelf());
-                       });
-               }
-       };
-
-       ///////////////// Column Calculation Functions ///////////////
-
-       Tabulator.prototype.getCalcResults = function () {
-
-               if (this.modExists("columnCalcs", true)) {
-
-                       return this.modules.columnCalcs.getResults();
-               } else {
-
-                       return false;
-               }
-       };
-
-       Tabulator.prototype.recalc = function () {
-
-               if (this.modExists("columnCalcs", true)) {
-
-                       this.modules.columnCalcs.recalcAll(this.rowManager.activeRows);
-               }
-       };
-
-       /////////////// Navigation Management //////////////
-
-
-       Tabulator.prototype.navigatePrev = function () {
-
-               var cell = false;
-
-               if (this.modExists("edit", true)) {
-
-                       cell = this.modules.edit.currentCell;
-
-                       if (cell) {
-
-                               return cell.nav().prev();
-                       }
-               }
-
-               return false;
-       };
-
-       Tabulator.prototype.navigateNext = function () {
-
-               var cell = false;
-
-               if (this.modExists("edit", true)) {
-
-                       cell = this.modules.edit.currentCell;
-
-                       if (cell) {
-
-                               return cell.nav().next();
-                       }
-               }
-
-               return false;
-       };
-
-       Tabulator.prototype.navigateLeft = function () {
-
-               var cell = false;
-
-               if (this.modExists("edit", true)) {
-
-                       cell = this.modules.edit.currentCell;
-
-                       if (cell) {
-
-                               e.preventDefault();
-
-                               return cell.nav().left();
-                       }
-               }
-
-               return false;
-       };
-
-       Tabulator.prototype.navigateRight = function () {
-
-               var cell = false;
-
-               if (this.modExists("edit", true)) {
-
-                       cell = this.modules.edit.currentCell;
-
-                       if (cell) {
-
-                               e.preventDefault();
-
-                               return cell.nav().right();
-                       }
-               }
-
-               return false;
-       };
-
-       Tabulator.prototype.navigateUp = function () {
-
-               var cell = false;
-
-               if (this.modExists("edit", true)) {
-
-                       cell = this.modules.edit.currentCell;
-
-                       if (cell) {
-
-                               e.preventDefault();
-
-                               return cell.nav().up();
-                       }
-               }
-
-               return false;
-       };
-
-       Tabulator.prototype.navigateDown = function () {
-
-               var cell = false;
-
-               if (this.modExists("edit", true)) {
-
-                       cell = this.modules.edit.currentCell;
-
-                       if (cell) {
-
-                               e.preventDefault();
-
-                               return cell.nav().down();
-                       }
-               }
-
-               return false;
-       };
-
-       /////////////// History Management //////////////
-
-       Tabulator.prototype.undo = function () {
-
-               if (this.options.history && this.modExists("history", true)) {
-
-                       return this.modules.history.undo();
-               } else {
-
-                       return false;
-               }
-       };
-
-       Tabulator.prototype.redo = function () {
-
-               if (this.options.history && this.modExists("history", true)) {
-
-                       return this.modules.history.redo();
-               } else {
-
-                       return false;
-               }
-       };
-
-       Tabulator.prototype.getHistoryUndoSize = function () {
-
-               if (this.options.history && this.modExists("history", true)) {
-
-                       return this.modules.history.getHistoryUndoSize();
-               } else {
-
-                       return false;
-               }
-       };
-
-       Tabulator.prototype.getHistoryRedoSize = function () {
-
-               if (this.options.history && this.modExists("history", true)) {
-
-                       return this.modules.history.getHistoryRedoSize();
-               } else {
-
-                       return false;
-               }
-       };
-
-       /////////////// Download Management //////////////
-
-
-       Tabulator.prototype.download = function (type, filename, options, active) {
-
-               if (this.modExists("download", true)) {
-
-                       this.modules.download.download(type, filename, options, active);
-               }
-       };
-
-       Tabulator.prototype.downloadToTab = function (type, filename, options, active) {
-
-               if (this.modExists("download", true)) {
-
-                       this.modules.download.download(type, filename, options, active, true);
-               }
-       };
-
-       /////////// Inter Table Communications ///////////
-
-
-       Tabulator.prototype.tableComms = function (table, module, action, data) {
-
-               this.modules.comms.receive(table, module, action, data);
-       };
-
-       ////////////// Extension Management //////////////
-
-
-       //object to hold module
-
-       Tabulator.prototype.moduleBindings = {};
-
-       //extend module
-
-       Tabulator.prototype.extendModule = function (name, property, values) {
-
-               if (Tabulator.prototype.moduleBindings[name]) {
-
-                       var source = Tabulator.prototype.moduleBindings[name].prototype[property];
-
-                       if (source) {
-
-                               if ((typeof values === 'undefined' ? 'undefined' : _typeof(values)) == "object") {
-
-                                       for (var key in values) {
-
-                                               source[key] = values[key];
-                                       }
-                               } else {
-
-                                       console.warn("Module Error - Invalid value type, it must be an object");
-                               }
-                       } else {
-
-                               console.warn("Module Error - property does not exist:", property);
-                       }
-               } else {
-
-                       console.warn("Module Error - module does not exist:", name);
-               }
-       };
-
-       //add module to tabulator
-
-       Tabulator.prototype.registerModule = function (name, module) {
-
-               var self = this;
-
-               Tabulator.prototype.moduleBindings[name] = module;
-       };
-
-       //ensure that module are bound to instantiated function
-
-       Tabulator.prototype.bindModules = function () {
-
-               this.modules = {};
-
-               for (var name in Tabulator.prototype.moduleBindings) {
-
-                       this.modules[name] = new Tabulator.prototype.moduleBindings[name](this);
-               }
-       };
-
-       //Check for module
-
-       Tabulator.prototype.modExists = function (plugin, required) {
-
-               if (this.modules[plugin]) {
-
-                       return true;
-               } else {
-
-                       if (required) {
-
-                               console.error("Tabulator Module Not Installed: " + plugin);
-                       }
-
-                       return false;
-               }
-       };
-
-       Tabulator.prototype.helpers = {
-
-               elVisible: function elVisible(el) {
-
-                       return !(el.offsetWidth <= 0 && el.offsetHeight <= 0);
-               },
-
-               elOffset: function elOffset(el) {
-
-                       var box = el.getBoundingClientRect();
-
-                       return {
-
-                               top: box.top + window.pageYOffset - document.documentElement.clientTop,
-
-                               left: box.left + window.pageXOffset - document.documentElement.clientLeft
-
-                       };
-               },
-
-               deepClone: function deepClone(obj) {
-
-                       var clone = Array.isArray(obj) ? [] : {};
-
-                       for (var i in obj) {
-
-                               if (obj[i] != null && _typeof(obj[i]) === "object") {
-
-                                       if (obj[i] instanceof Date) {
-
-                                               clone[i] = new Date(obj[i]);
-                                       } else {
-
-                                               clone[i] = this.deepClone(obj[i]);
-                                       }
-                               } else {
-
-                                       clone[i] = obj[i];
-                               }
-                       }
-
-                       return clone;
-               }
-
-       };
-
-       Tabulator.prototype.comms = {
-
-               tables: [],
-
-               register: function register(table) {
-
-                       Tabulator.prototype.comms.tables.push(table);
-               },
-
-               deregister: function deregister(table) {
-
-                       var index = Tabulator.prototype.comms.tables.indexOf(table);
-
-                       if (index > -1) {
-
-                               Tabulator.prototype.comms.tables.splice(index, 1);
-                       }
-               },
-
-               lookupTable: function lookupTable(query, silent) {
-
-                       var results = [],
-                           matches,
-                           match;
-
-                       if (typeof query === "string") {
-
-                               matches = document.querySelectorAll(query);
-
-                               if (matches.length) {
-
-                                       for (var i = 0; i < matches.length; i++) {
-
-                                               match = Tabulator.prototype.comms.matchElement(matches[i]);
-
-                                               if (match) {
-
-                                                       results.push(match);
-                                               }
-                                       }
-                               }
-                       } else if (typeof HTMLElement !== "undefined" && query instanceof HTMLElement || query instanceof Tabulator) {
-
-                               match = Tabulator.prototype.comms.matchElement(query);
-
-                               if (match) {
-
-                                       results.push(match);
-                               }
-                       } else if (Array.isArray(query)) {
-
-                               query.forEach(function (item) {
-
-                                       results = results.concat(Tabulator.prototype.comms.lookupTable(item));
-                               });
-                       } else {
-
-                               if (!silent) {
-
-                                       console.warn("Table Connection Error - Invalid Selector", query);
-                               }
-                       }
-
-                       return results;
-               },
-
-               matchElement: function matchElement(element) {
-
-                       return Tabulator.prototype.comms.tables.find(function (table) {
-
-                               return element instanceof Tabulator ? table === element : table.element === element;
-                       });
-               }
-
-       };
-
-       Tabulator.prototype.findTable = function (query) {
-
-               var results = Tabulator.prototype.comms.lookupTable(query, true);
-
-               return Array.isArray(results) && !results.length ? false : results;
-       };
-
-       var Layout = function Layout(table) {
-
-               this.table = table;
-
-               this.mode = null;
-       };
-
-       //initialize layout system
-
-
-       Layout.prototype.initialize = function (layout) {
-
-               if (this.modes[layout]) {
-
-                       this.mode = layout;
-               } else {
-
-                       console.warn("Layout Error - invalid mode set, defaulting to 'fitData' : " + layout);
-
-                       this.mode = 'fitData';
-               }
-
-               this.table.element.setAttribute("tabulator-layout", this.mode);
-       };
-
-       Layout.prototype.getMode = function () {
-
-               return this.mode;
-       };
-
-       //trigger table layout
-
-
-       Layout.prototype.layout = function () {
-
-               this.modes[this.mode].call(this, this.table.columnManager.columnsByIndex);
-       };
-
-       //layout render functions
-
-
-       Layout.prototype.modes = {
-
-               //resize columns to fit data they contain
-
-
-               "fitData": function fitData(columns) {
-
-                       columns.forEach(function (column) {
-
-                               column.reinitializeWidth();
-                       });
-
-                       if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-                               this.table.modules.responsiveLayout.update();
-                       }
-               },
-
-               //resize columns to fit data they contain and stretch row to fill table
-
-
-               "fitDataFill": function fitDataFill(columns) {
-
-                       columns.forEach(function (column) {
-
-                               column.reinitializeWidth();
-                       });
-
-                       if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-                               this.table.modules.responsiveLayout.update();
-                       }
-               },
-
-               //resize columns to fit data they contain
-
-
-               "fitDataTable": function fitDataTable(columns) {
-
-                       columns.forEach(function (column) {
-
-                               column.reinitializeWidth();
-                       });
-
-                       if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-                               this.table.modules.responsiveLayout.update();
-                       }
-               },
-
-               //resize columns to fit data the contain and stretch last column to fill table
-
-
-               "fitDataStretch": function fitDataStretch(columns) {
-                       var _this34 = this;
-
-                       var colsWidth = 0,
-                           tableWidth = this.table.rowManager.element.clientWidth,
-                           gap = 0,
-                           lastCol = false;
-
-                       columns.forEach(function (column, i) {
-
-                               if (!column.widthFixed) {
-
-                                       column.reinitializeWidth();
-                               }
-
-                               if (_this34.table.options.responsiveLayout ? column.modules.responsive.visible : column.visible) {
-
-                                       lastCol = column;
-                               }
-
-                               if (column.visible) {
-
-                                       colsWidth += column.getWidth();
-                               }
-                       });
-
-                       if (lastCol) {
-
-                               gap = tableWidth - colsWidth + lastCol.getWidth();
-
-                               if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-                                       lastCol.setWidth(0);
-
-                                       this.table.modules.responsiveLayout.update();
-                               }
-
-                               if (gap > 0) {
-
-                                       lastCol.setWidth(gap);
-                               } else {
-
-                                       lastCol.reinitializeWidth();
-                               }
-                       } else {
-
-                               if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-                                       this.table.modules.responsiveLayout.update();
-                               }
-                       }
-               },
-
-               //resize columns to fit
-
-
-               "fitColumns": function fitColumns(columns) {
-
-                       var self = this;
-
-                       var totalWidth = self.table.element.clientWidth; //table element width
-
-
-                       var fixedWidth = 0; //total width of columns with a defined width
-
-
-                       var flexWidth = 0; //total width available to flexible columns
-
-
-                       var flexGrowUnits = 0; //total number of widthGrow blocks accross all columns
-
-
-                       var flexColWidth = 0; //desired width of flexible columns
-
-
-                       var flexColumns = []; //array of flexible width columns
-
-
-                       var fixedShrinkColumns = []; //array of fixed width columns that can shrink
-
-
-                       var flexShrinkUnits = 0; //total number of widthShrink blocks accross all columns
-
-
-                       var overflowWidth = 0; //horizontal overflow width
-
-
-                       var gapFill = 0; //number of pixels to be added to final column to close and half pixel gaps
-
-
-                       function calcWidth(width) {
-
-                               var colWidth;
-
-                               if (typeof width == "string") {
-
-                                       if (width.indexOf("%") > -1) {
-
-                                               colWidth = totalWidth / 100 * parseInt(width);
-                                       } else {
-
-                                               colWidth = parseInt(width);
-                                       }
-                               } else {
-
-                                       colWidth = width;
-                               }
-
-                               return colWidth;
-                       }
-
-                       //ensure columns resize to take up the correct amount of space
-
-
-                       function scaleColumns(columns, freeSpace, colWidth, shrinkCols) {
-
-                               var oversizeCols = [],
-                                   oversizeSpace = 0,
-                                   remainingSpace = 0,
-                                   nextColWidth = 0,
-                                   gap = 0,
-                                   changeUnits = 0,
-                                   undersizeCols = [];
-
-                               function calcGrow(col) {
-
-                                       return colWidth * (col.column.definition.widthGrow || 1);
-                               }
-
-                               function calcShrink(col) {
-
-                                       return calcWidth(col.width) - colWidth * (col.column.definition.widthShrink || 0);
-                               }
-
-                               columns.forEach(function (col, i) {
-
-                                       var width = shrinkCols ? calcShrink(col) : calcGrow(col);
-
-                                       if (col.column.minWidth >= width) {
-
-                                               oversizeCols.push(col);
-                                       } else {
-
-                                               undersizeCols.push(col);
-
-                                               changeUnits += shrinkCols ? col.column.definition.widthShrink || 1 : col.column.definition.widthGrow || 1;
-                                       }
-                               });
-
-                               if (oversizeCols.length) {
-
-                                       oversizeCols.forEach(function (col) {
-
-                                               oversizeSpace += shrinkCols ? col.width - col.column.minWidth : col.column.minWidth;
-
-                                               col.width = col.column.minWidth;
-                                       });
-
-                                       remainingSpace = freeSpace - oversizeSpace;
-
-                                       nextColWidth = changeUnits ? Math.floor(remainingSpace / changeUnits) : remainingSpace;
-
-                                       gap = remainingSpace - nextColWidth * changeUnits;
-
-                                       gap += scaleColumns(undersizeCols, remainingSpace, nextColWidth, shrinkCols);
-                               } else {
-
-                                       gap = changeUnits ? freeSpace - Math.floor(freeSpace / changeUnits) * changeUnits : freeSpace;
-
-                                       undersizeCols.forEach(function (column) {
-
-                                               column.width = shrinkCols ? calcShrink(column) : calcGrow(column);
-                                       });
-                               }
-
-                               return gap;
-                       }
-
-                       if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-                               this.table.modules.responsiveLayout.update();
-                       }
-
-                       //adjust for vertical scrollbar if present
-
-
-                       if (this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight) {
-
-                               totalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;
-                       }
-
-                       columns.forEach(function (column) {
-
-                               var width, minWidth, colWidth;
-
-                               if (column.visible) {
-
-                                       width = column.definition.width;
-
-                                       minWidth = parseInt(column.minWidth);
-
-                                       if (width) {
-
-                                               colWidth = calcWidth(width);
-
-                                               fixedWidth += colWidth > minWidth ? colWidth : minWidth;
-
-                                               if (column.definition.widthShrink) {
-
-                                                       fixedShrinkColumns.push({
-
-                                                               column: column,
-
-                                                               width: colWidth > minWidth ? colWidth : minWidth
-
-                                                       });
-
-                                                       flexShrinkUnits += column.definition.widthShrink;
-                                               }
-                                       } else {
-
-                                               flexColumns.push({
-
-                                                       column: column,
-
-                                                       width: 0
-
-                                               });
-
-                                               flexGrowUnits += column.definition.widthGrow || 1;
-                                       }
-                               }
-                       });
-
-                       //calculate available space
-
-
-                       flexWidth = totalWidth - fixedWidth;
-
-                       //calculate correct column size
-
-
-                       flexColWidth = Math.floor(flexWidth / flexGrowUnits);
-
-                       //generate column widths
-
-
-                       var gapFill = scaleColumns(flexColumns, flexWidth, flexColWidth, false);
-
-                       //increase width of last column to account for rounding errors
-
-
-                       if (flexColumns.length && gapFill > 0) {
-
-                               flexColumns[flexColumns.length - 1].width += +gapFill;
-                       }
-
-                       //caculate space for columns to be shrunk into
-
-
-                       flexColumns.forEach(function (col) {
-
-                               flexWidth -= col.width;
-                       });
-
-                       overflowWidth = Math.abs(gapFill) + flexWidth;
-
-                       //shrink oversize columns if there is no available space
-
-
-                       if (overflowWidth > 0 && flexShrinkUnits) {
-
-                               gapFill = scaleColumns(fixedShrinkColumns, overflowWidth, Math.floor(overflowWidth / flexShrinkUnits), true);
-                       }
-
-                       //decrease width of last column to account for rounding errors
-
-
-                       if (fixedShrinkColumns.length) {
-
-                               fixedShrinkColumns[fixedShrinkColumns.length - 1].width -= gapFill;
-                       }
-
-                       flexColumns.forEach(function (col) {
-
-                               col.column.setWidth(col.width);
-                       });
-
-                       fixedShrinkColumns.forEach(function (col) {
-
-                               col.column.setWidth(col.width);
-                       });
-               }
-
-       };
-
-       Tabulator.prototype.registerModule("layout", Layout);
-
-       var Localize = function Localize(table) {
-
-               this.table = table; //hold Tabulator object
-
-               this.locale = "default"; //current locale
-
-               this.lang = false; //current language
-
-               this.bindings = {}; //update events to call when locale is changed
-       };
-
-       //set header placehoder
-
-       Localize.prototype.setHeaderFilterPlaceholder = function (placeholder) {
-
-               this.langs.default.headerFilters.default = placeholder;
-       };
-
-       //set header filter placeholder by column
-
-       Localize.prototype.setHeaderFilterColumnPlaceholder = function (column, placeholder) {
-
-               this.langs.default.headerFilters.columns[column] = placeholder;
-
-               if (this.lang && !this.lang.headerFilters.columns[column]) {
-
-                       this.lang.headerFilters.columns[column] = placeholder;
-               }
-       };
-
-       //setup a lang description object
-
-       Localize.prototype.installLang = function (locale, lang) {
-
-               if (this.langs[locale]) {
-
-                       this._setLangProp(this.langs[locale], lang);
-               } else {
-
-                       this.langs[locale] = lang;
-               }
-       };
-
-       Localize.prototype._setLangProp = function (lang, values) {
-
-               for (var key in values) {
-
-                       if (lang[key] && _typeof(lang[key]) == "object") {
-
-                               this._setLangProp(lang[key], values[key]);
-                       } else {
-
-                               lang[key] = values[key];
-                       }
-               }
-       };
-
-       //set current locale
-
-       Localize.prototype.setLocale = function (desiredLocale) {
-
-               var self = this;
-
-               desiredLocale = desiredLocale || "default";
-
-               //fill in any matching languge values
-
-               function traverseLang(trans, path) {
-
-                       for (var prop in trans) {
-
-                               if (_typeof(trans[prop]) == "object") {
-
-                                       if (!path[prop]) {
-
-                                               path[prop] = {};
-                                       }
-
-                                       traverseLang(trans[prop], path[prop]);
-                               } else {
-
-                                       path[prop] = trans[prop];
-                               }
-                       }
-               }
-
-               //determing correct locale to load
-
-               if (desiredLocale === true && navigator.language) {
-
-                       //get local from system
-
-                       desiredLocale = navigator.language.toLowerCase();
-               }
-
-               if (desiredLocale) {
-
-                       //if locale is not set, check for matching top level locale else use default
-
-                       if (!self.langs[desiredLocale]) {
-
-                               var prefix = desiredLocale.split("-")[0];
-
-                               if (self.langs[prefix]) {
-
-                                       console.warn("Localization Error - Exact matching locale not found, using closest match: ", desiredLocale, prefix);
-
-                                       desiredLocale = prefix;
-                               } else {
-
-                                       console.warn("Localization Error - Matching locale not found, using default: ", desiredLocale);
-
-                                       desiredLocale = "default";
-                               }
-                       }
-               }
-
-               self.locale = desiredLocale;
-
-               //load default lang template
-
-               self.lang = Tabulator.prototype.helpers.deepClone(self.langs.default || {});
-
-               if (desiredLocale != "default") {
-
-                       traverseLang(self.langs[desiredLocale], self.lang);
-               }
-
-               self.table.options.localized.call(self.table, self.locale, self.lang);
-
-               self._executeBindings();
-       };
-
-       //get current locale
-
-       Localize.prototype.getLocale = function (locale) {
-
-               return self.locale;
-       };
-
-       //get lang object for given local or current if none provided
-
-       Localize.prototype.getLang = function (locale) {
-
-               return locale ? this.langs[locale] : this.lang;
-       };
-
-       //get text for current locale
-
-       Localize.prototype.getText = function (path, value) {
-
-               var path = value ? path + "|" + value : path,
-                   pathArray = path.split("|"),
-                   text = this._getLangElement(pathArray, this.locale);
-
-               // if(text === false){
-
-               //      console.warn("Localization Error - Matching localized text not found for given path: ", path);
-
-               // }
-
-
-               return text || "";
-       };
-
-       //traverse langs object and find localized copy
-
-       Localize.prototype._getLangElement = function (path, locale) {
-
-               var self = this;
-
-               var root = self.lang;
-
-               path.forEach(function (level) {
-
-                       var rootPath;
-
-                       if (root) {
-
-                               rootPath = root[level];
-
-                               if (typeof rootPath != "undefined") {
-
-                                       root = rootPath;
-                               } else {
-
-                                       root = false;
-                               }
-                       }
-               });
-
-               return root;
-       };
-
-       //set update binding
-
-       Localize.prototype.bind = function (path, callback) {
-
-               if (!this.bindings[path]) {
-
-                       this.bindings[path] = [];
-               }
-
-               this.bindings[path].push(callback);
-
-               callback(this.getText(path), this.lang);
-       };
-
-       //itterate through bindings and trigger updates
-
-       Localize.prototype._executeBindings = function () {
-
-               var self = this;
-
-               var _loop = function _loop(path) {
-
-                       self.bindings[path].forEach(function (binding) {
-
-                               binding(self.getText(path), self.lang);
-                       });
-               };
-
-               for (var path in self.bindings) {
-                       _loop(path);
-               }
-       };
-
-       //Localized text listings
-
-       Localize.prototype.langs = {
-
-               "default": { //hold default locale text
-
-                       "groups": {
-
-                               "item": "item",
-
-                               "items": "items"
-
-                       },
-
-                       "columns": {},
-
-                       "ajax": {
-
-                               "loading": "Loading",
-
-                               "error": "Error"
-
-                       },
-
-                       "pagination": {
-
-                               "page_size": "Page Size",
-
-                               "page_title": "Show Page",
-
-                               "first": "First",
-
-                               "first_title": "First Page",
-
-                               "last": "Last",
-
-                               "last_title": "Last Page",
-
-                               "prev": "Prev",
-
-                               "prev_title": "Prev Page",
-
-                               "next": "Next",
-
-                               "next_title": "Next Page",
-
-                               "all": "All"
-
-                       },
-
-                       "headerFilters": {
-
-                               "default": "filter column...",
-
-                               "columns": {}
-
-                       }
-
-               }
-
-       };
-
-       Tabulator.prototype.registerModule("localize", Localize);
-
-       var Comms = function Comms(table) {
-
-               this.table = table;
-       };
-
-       Comms.prototype.getConnections = function (selectors) {
-
-               var self = this,
-                   connections = [],
-                   connection;
-
-               connection = Tabulator.prototype.comms.lookupTable(selectors);
-
-               connection.forEach(function (con) {
-
-                       if (self.table !== con) {
-
-                               connections.push(con);
-                       }
-               });
-
-               return connections;
-       };
-
-       Comms.prototype.send = function (selectors, module, action, data) {
-
-               var self = this,
-                   connections = this.getConnections(selectors);
-
-               connections.forEach(function (connection) {
-
-                       connection.tableComms(self.table.element, module, action, data);
-               });
-
-               if (!connections.length && selectors) {
-
-                       console.warn("Table Connection Error - No tables matching selector found", selectors);
-               }
-       };
-
-       Comms.prototype.receive = function (table, module, action, data) {
-
-               if (this.table.modExists(module)) {
-
-                       return this.table.modules[module].commsReceived(table, action, data);
-               } else {
-
-                       console.warn("Inter-table Comms Error - no such module:", module);
-               }
-       };
-
-       Tabulator.prototype.registerModule("comms", Comms);
-
-       var Accessor = function Accessor(table) {
-               this.table = table; //hold Tabulator object
-               this.allowedTypes = ["", "data", "download", "clipboard", "print", "htmlOutput"]; //list of accessor types
-       };
-
-       //initialize column accessor
-       Accessor.prototype.initializeColumn = function (column) {
-               var self = this,
-                   match = false,
-                   config = {};
-
-               this.allowedTypes.forEach(function (type) {
-                       var key = "accessor" + (type.charAt(0).toUpperCase() + type.slice(1)),
-                           accessor;
-
-                       if (column.definition[key]) {
-                               accessor = self.lookupAccessor(column.definition[key]);
-
-                               if (accessor) {
-                                       match = true;
-
-                                       config[key] = {
-                                               accessor: accessor,
-                                               params: column.definition[key + "Params"] || {}
-                                       };
-                               }
-                       }
-               });
-
-               if (match) {
-                       column.modules.accessor = config;
-               }
-       };
-
-       Accessor.prototype.lookupAccessor = function (value) {
-               var accessor = false;
-
-               //set column accessor
-               switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
-                       case "string":
-                               if (this.accessors[value]) {
-                                       accessor = this.accessors[value];
-                               } else {
-                                       console.warn("Accessor Error - No such accessor found, ignoring: ", value);
-                               }
-                               break;
-
-                       case "function":
-                               accessor = value;
-                               break;
-               }
-
-               return accessor;
-       };
-
-       //apply accessor to row
-       Accessor.prototype.transformRow = function (dataIn, type) {
-               var self = this,
-                   key = "accessor" + (type.charAt(0).toUpperCase() + type.slice(1));
-
-               //clone data object with deep copy to isolate internal data from returned result
-               var data = Tabulator.prototype.helpers.deepClone(dataIn || {});
-
-               self.table.columnManager.traverse(function (column) {
-                       var value, accessor, params, component;
-
-                       if (column.modules.accessor) {
-
-                               accessor = column.modules.accessor[key] || column.modules.accessor.accessor || false;
-
-                               if (accessor) {
-                                       value = column.getFieldValue(data);
-
-                                       if (value != "undefined") {
-                                               component = column.getComponent();
-                                               params = typeof accessor.params === "function" ? accessor.params(value, data, type, component) : accessor.params;
-                                               column.setFieldValue(data, accessor.accessor(value, data, type, params, component));
-                                       }
-                               }
-                       }
-               });
-
-               return data;
-       },
-
-       //default accessors
-       Accessor.prototype.accessors = {};
-
-       Tabulator.prototype.registerModule("accessor", Accessor);
-       var Ajax = function Ajax(table) {
-
-               this.table = table; //hold Tabulator object
-               this.config = false; //hold config object for ajax request
-               this.url = ""; //request URL
-               this.urlGenerator = false;
-               this.params = false; //request parameters
-
-               this.loaderElement = this.createLoaderElement(); //loader message div
-               this.msgElement = this.createMsgElement(); //message element
-               this.loadingElement = false;
-               this.errorElement = false;
-               this.loaderPromise = false;
-
-               this.progressiveLoad = false;
-               this.loading = false;
-
-               this.requestOrder = 0; //prevent requests comming out of sequence if overridden by another load request
-       };
-
-       //initialize setup options
-       Ajax.prototype.initialize = function () {
-               var template;
-
-               this.loaderElement.appendChild(this.msgElement);
-
-               if (this.table.options.ajaxLoaderLoading) {
-                       if (typeof this.table.options.ajaxLoaderLoading == "string") {
-                               template = document.createElement('template');
-                               template.innerHTML = this.table.options.ajaxLoaderLoading.trim();
-                               this.loadingElement = template.content.firstChild;
-                       } else {
-                               this.loadingElement = this.table.options.ajaxLoaderLoading;
-                       }
-               }
-
-               this.loaderPromise = this.table.options.ajaxRequestFunc || this.defaultLoaderPromise;
-
-               this.urlGenerator = this.table.options.ajaxURLGenerator || this.defaultURLGenerator;
-
-               if (this.table.options.ajaxLoaderError) {
-                       if (typeof this.table.options.ajaxLoaderError == "string") {
-                               template = document.createElement('template');
-                               template.innerHTML = this.table.options.ajaxLoaderError.trim();
-                               this.errorElement = template.content.firstChild;
-                       } else {
-                               this.errorElement = this.table.options.ajaxLoaderError;
-                       }
-               }
-
-               if (this.table.options.ajaxParams) {
-                       this.setParams(this.table.options.ajaxParams);
-               }
-
-               if (this.table.options.ajaxConfig) {
-                       this.setConfig(this.table.options.ajaxConfig);
-               }
-
-               if (this.table.options.ajaxURL) {
-                       this.setUrl(this.table.options.ajaxURL);
-               }
-
-               if (this.table.options.ajaxProgressiveLoad) {
-                       if (this.table.options.pagination) {
-                               this.progressiveLoad = false;
-                               console.error("Progressive Load Error - Pagination and progressive load cannot be used at the same time");
-                       } else {
-                               if (this.table.modExists("page")) {
-                                       this.progressiveLoad = this.table.options.ajaxProgressiveLoad;
-                                       this.table.modules.page.initializeProgressive(this.progressiveLoad);
-                               } else {
-                                       console.error("Pagination plugin is required for progressive ajax loading");
-                               }
-                       }
-               }
-       };
-
-       Ajax.prototype.createLoaderElement = function () {
-               var el = document.createElement("div");
-               el.classList.add("tabulator-loader");
-               return el;
-       };
-
-       Ajax.prototype.createMsgElement = function () {
-               var el = document.createElement("div");
-
-               el.classList.add("tabulator-loader-msg");
-               el.setAttribute("role", "alert");
-
-               return el;
-       };
-
-       //set ajax params
-       Ajax.prototype.setParams = function (params, update) {
-               if (update) {
-                       this.params = this.params || {};
-
-                       for (var key in params) {
-                               this.params[key] = params[key];
-                       }
-               } else {
-                       this.params = params;
-               }
-       };
-
-       Ajax.prototype.getParams = function () {
-               return this.params || {};
-       };
-
-       //load config object
-       Ajax.prototype.setConfig = function (config) {
-               this._loadDefaultConfig();
-
-               if (typeof config == "string") {
-                       this.config.method = config;
-               } else {
-                       for (var key in config) {
-                               this.config[key] = config[key];
-                       }
-               }
-       };
-
-       //create config object from default
-       Ajax.prototype._loadDefaultConfig = function (force) {
-               var self = this;
-               if (!self.config || force) {
-
-                       self.config = {};
-
-                       //load base config from defaults
-                       for (var key in self.defaultConfig) {
-                               self.config[key] = self.defaultConfig[key];
-                       }
-               }
-       };
-
-       //set request url
-       Ajax.prototype.setUrl = function (url) {
-               this.url = url;
-       };
-
-       //get request url
-       Ajax.prototype.getUrl = function () {
-               return this.url;
-       };
-
-       //lstandard loading function
-       Ajax.prototype.loadData = function (inPosition, columnsChanged) {
-               var self = this;
-
-               if (this.progressiveLoad) {
-                       return this._loadDataProgressive();
-               } else {
-                       return this._loadDataStandard(inPosition, columnsChanged);
-               }
-       };
-
-       Ajax.prototype.nextPage = function (diff) {
-               var margin;
-
-               if (!this.loading) {
-
-                       margin = this.table.options.ajaxProgressiveLoadScrollMargin || this.table.rowManager.getElement().clientHeight * 2;
-
-                       if (diff < margin) {
-                               this.table.modules.page.nextPage().then(function () {}).catch(function () {});
-                       }
-               }
-       };
-
-       Ajax.prototype.blockActiveRequest = function () {
-               this.requestOrder++;
-       };
-
-       Ajax.prototype._loadDataProgressive = function () {
-               this.table.rowManager.setData([]);
-               return this.table.modules.page.setPage(1);
-       };
-
-       Ajax.prototype._loadDataStandard = function (inPosition, columnsChanged) {
-               var _this35 = this;
-
-               return new Promise(function (resolve, reject) {
-                       _this35.sendRequest(inPosition).then(function (data) {
-                               _this35.table.rowManager.setData(data, inPosition, columnsChanged).then(function () {
-                                       resolve();
-                               }).catch(function (e) {
-                                       reject(e);
-                               });
-                       }).catch(function (e) {
-                               reject(e);
-                       });
-               });
-       };
-
-       Ajax.prototype.generateParamsList = function (data, prefix) {
-               var self = this,
-                   output = [];
-
-               prefix = prefix || "";
-
-               if (Array.isArray(data)) {
-                       data.forEach(function (item, i) {
-                               output = output.concat(self.generateParamsList(item, prefix ? prefix + "[" + i + "]" : i));
-                       });
-               } else if ((typeof data === 'undefined' ? 'undefined' : _typeof(data)) === "object") {
-                       for (var key in data) {
-                               output = output.concat(self.generateParamsList(data[key], prefix ? prefix + "[" + key + "]" : key));
-                       }
-               } else {
-                       output.push({ key: prefix, value: data });
-               }
-
-               return output;
-       };
-
-       Ajax.prototype.serializeParams = function (params) {
-               var output = this.generateParamsList(params),
-                   encoded = [];
-
-               output.forEach(function (item) {
-                       encoded.push(encodeURIComponent(item.key) + "=" + encodeURIComponent(item.value));
-               });
-
-               return encoded.join("&");
-       };
-
-       //send ajax request
-       Ajax.prototype.sendRequest = function (silent) {
-               var _this36 = this;
-
-               var self = this,
-                   url = self.url,
-                   requestNo,
-                   esc,
-                   query;
-
-               self.requestOrder++;
-               requestNo = self.requestOrder;
-
-               self._loadDefaultConfig();
-
-               return new Promise(function (resolve, reject) {
-                       if (self.table.options.ajaxRequesting.call(_this36.table, self.url, self.params) !== false) {
-
-                               self.loading = true;
-
-                               if (!silent) {
-                                       self.showLoader();
-                               }
-
-                               _this36.loaderPromise(url, self.config, self.params).then(function (data) {
-                                       if (requestNo === self.requestOrder) {
-                                               if (self.table.options.ajaxResponse) {
-                                                       data = self.table.options.ajaxResponse.call(self.table, self.url, self.params, data);
-                                               }
-                                               resolve(data);
-
-                                               self.hideLoader();
-                                               self.loading = false;
-                                       } else {
-                                               console.warn("Ajax Response Blocked - An active ajax request was blocked by an attempt to change table data while the request was being made");
-                                       }
-                               }).catch(function (error) {
-                                       console.error("Ajax Load Error: ", error);
-                                       self.table.options.ajaxError.call(self.table, error);
-
-                                       self.showError();
-
-                                       setTimeout(function () {
-                                               self.hideLoader();
-                                       }, 3000);
-
-                                       self.loading = false;
-
-                                       reject();
-                               });
-                       } else {
-                               reject();
-                       }
-               });
-       };
-
-       Ajax.prototype.showLoader = function () {
-               var shouldLoad = typeof this.table.options.ajaxLoader === "function" ? this.table.options.ajaxLoader() : this.table.options.ajaxLoader;
-
-               if (shouldLoad) {
-
-                       this.hideLoader();
-
-                       while (this.msgElement.firstChild) {
-                               this.msgElement.removeChild(this.msgElement.firstChild);
-                       }this.msgElement.classList.remove("tabulator-error");
-                       this.msgElement.classList.add("tabulator-loading");
-
-                       if (this.loadingElement) {
-                               this.msgElement.appendChild(this.loadingElement);
-                       } else {
-                               this.msgElement.innerHTML = this.table.modules.localize.getText("ajax|loading");
-                       }
-
-                       this.table.element.appendChild(this.loaderElement);
-               }
-       };
-
-       Ajax.prototype.showError = function () {
-               this.hideLoader();
-
-               while (this.msgElement.firstChild) {
-                       this.msgElement.removeChild(this.msgElement.firstChild);
-               }this.msgElement.classList.remove("tabulator-loading");
-               this.msgElement.classList.add("tabulator-error");
-
-               if (this.errorElement) {
-                       this.msgElement.appendChild(this.errorElement);
-               } else {
-                       this.msgElement.innerHTML = this.table.modules.localize.getText("ajax|error");
-               }
-
-               this.table.element.appendChild(this.loaderElement);
-       };
-
-       Ajax.prototype.hideLoader = function () {
-               if (this.loaderElement.parentNode) {
-                       this.loaderElement.parentNode.removeChild(this.loaderElement);
-               }
-       };
-
-       //default ajax config object
-       Ajax.prototype.defaultConfig = {
-               method: "GET"
-       };
-
-       Ajax.prototype.defaultURLGenerator = function (url, config, params) {
-
-               if (url) {
-                       if (params && Object.keys(params).length) {
-                               if (!config.method || config.method.toLowerCase() == "get") {
-                                       config.method = "get";
-
-                                       url += (url.includes("?") ? "&" : "?") + this.serializeParams(params);
-                               }
-                       }
-               }
-
-               return url;
-       };
-
-       Ajax.prototype.defaultLoaderPromise = function (url, config, params) {
-               var self = this,
-                   contentType;
-
-               return new Promise(function (resolve, reject) {
-
-                       //set url
-                       url = self.urlGenerator(url, config, params);
-
-                       //set body content if not GET request
-                       if (config.method.toUpperCase() != "GET") {
-                               contentType = _typeof(self.table.options.ajaxContentType) === "object" ? self.table.options.ajaxContentType : self.contentTypeFormatters[self.table.options.ajaxContentType];
-                               if (contentType) {
-
-                                       for (var key in contentType.headers) {
-                                               if (!config.headers) {
-                                                       config.headers = {};
-                                               }
-
-                                               if (typeof config.headers[key] === "undefined") {
-                                                       config.headers[key] = contentType.headers[key];
-                                               }
-                                       }
-
-                                       config.body = contentType.body.call(self, url, config, params);
-                               } else {
-                                       console.warn("Ajax Error - Invalid ajaxContentType value:", self.table.options.ajaxContentType);
-                               }
-                       }
-
-                       if (url) {
-
-                               //configure headers
-                               if (typeof config.headers === "undefined") {
-                                       config.headers = {};
-                               }
-
-                               if (typeof config.headers.Accept === "undefined") {
-                                       config.headers.Accept = "application/json";
-                               }
-
-                               if (typeof config.headers["X-Requested-With"] === "undefined") {
-                                       config.headers["X-Requested-With"] = "XMLHttpRequest";
-                               }
-
-                               if (typeof config.mode === "undefined") {
-                                       config.mode = "cors";
-                               }
-
-                               if (config.mode == "cors") {
-
-                                       if (typeof config.headers["Access-Control-Allow-Origin"] === "undefined") {
-                                               config.headers["Access-Control-Allow-Origin"] = window.location.origin;
-                                       }
-
-                                       if (typeof config.credentials === "undefined") {
-                                               config.credentials = 'same-origin';
-                                       }
-                               } else {
-                                       if (typeof config.credentials === "undefined") {
-                                               config.credentials = 'include';
-                                       }
-                               }
-
-                               //send request
-                               fetch(url, config).then(function (response) {
-                                       if (response.ok) {
-                                               response.json().then(function (data) {
-                                                       resolve(data);
-                                               }).catch(function (error) {
-                                                       reject(error);
-                                                       console.warn("Ajax Load Error - Invalid JSON returned", error);
-                                               });
-                                       } else {
-                                               console.error("Ajax Load Error - Connection Error: " + response.status, response.statusText);
-                                               reject(response);
-                                       }
-                               }).catch(function (error) {
-                                       console.error("Ajax Load Error - Connection Error: ", error);
-                                       reject(error);
-                               });
-                       } else {
-                               console.warn("Ajax Load Error - No URL Set");
-                               resolve([]);
-                       }
-               });
-       };
-
-       Ajax.prototype.contentTypeFormatters = {
-               "json": {
-                       headers: {
-                               'Content-Type': 'application/json'
-                       },
-                       body: function body(url, config, params) {
-                               return JSON.stringify(params);
-                       }
-               },
-               "form": {
-                       headers: {},
-                       body: function body(url, config, params) {
-                               var output = this.generateParamsList(params),
-                                   form = new FormData();
-
-                               output.forEach(function (item) {
-                                       form.append(item.key, item.value);
-                               });
-
-                               return form;
-                       }
-               }
-       };
-
-       Tabulator.prototype.registerModule("ajax", Ajax);
-
-       var ColumnCalcs = function ColumnCalcs(table) {
-               this.table = table; //hold Tabulator object
-               this.topCalcs = [];
-               this.botCalcs = [];
-               this.genColumn = false;
-               this.topElement = this.createElement();
-               this.botElement = this.createElement();
-               this.topRow = false;
-               this.botRow = false;
-               this.topInitialized = false;
-               this.botInitialized = false;
-
-               this.initialize();
-       };
-
-       ColumnCalcs.prototype.createElement = function () {
-               var el = document.createElement("div");
-               el.classList.add("tabulator-calcs-holder");
-               return el;
-       };
-
-       ColumnCalcs.prototype.initialize = function () {
-               this.genColumn = new Column({ field: "value" }, this);
-       };
-
-       //dummy functions to handle being mock column manager
-       ColumnCalcs.prototype.registerColumnField = function () {};
-
-       //initialize column calcs
-       ColumnCalcs.prototype.initializeColumn = function (column) {
-               var def = column.definition;
-
-               var config = {
-                       topCalcParams: def.topCalcParams || {},
-                       botCalcParams: def.bottomCalcParams || {}
-               };
-
-               if (def.topCalc) {
-
-                       switch (_typeof(def.topCalc)) {
-                               case "string":
-                                       if (this.calculations[def.topCalc]) {
-                                               config.topCalc = this.calculations[def.topCalc];
-                                       } else {
-                                               console.warn("Column Calc Error - No such calculation found, ignoring: ", def.topCalc);
-                                       }
-                                       break;
-
-                               case "function":
-                                       config.topCalc = def.topCalc;
-                                       break;
-
-                       }
-
-                       if (config.topCalc) {
-                               column.modules.columnCalcs = config;
-                               this.topCalcs.push(column);
-
-                               if (this.table.options.columnCalcs != "group") {
-                                       this.initializeTopRow();
-                               }
-                       }
-               }
-
-               if (def.bottomCalc) {
-                       switch (_typeof(def.bottomCalc)) {
-                               case "string":
-                                       if (this.calculations[def.bottomCalc]) {
-                                               config.botCalc = this.calculations[def.bottomCalc];
-                                       } else {
-                                               console.warn("Column Calc Error - No such calculation found, ignoring: ", def.bottomCalc);
-                                       }
-                                       break;
-
-                               case "function":
-                                       config.botCalc = def.bottomCalc;
-                                       break;
-
-                       }
-
-                       if (config.botCalc) {
-                               column.modules.columnCalcs = config;
-                               this.botCalcs.push(column);
-
-                               if (this.table.options.columnCalcs != "group") {
-                                       this.initializeBottomRow();
-                               }
-                       }
-               }
-       };
-
-       ColumnCalcs.prototype.removeCalcs = function () {
-               var changed = false;
-
-               if (this.topInitialized) {
-                       this.topInitialized = false;
-                       this.topElement.parentNode.removeChild(this.topElement);
-                       changed = true;
-               }
-
-               if (this.botInitialized) {
-                       this.botInitialized = false;
-                       this.table.footerManager.remove(this.botElement);
-                       changed = true;
-               }
-
-               if (changed) {
-                       this.table.rowManager.adjustTableSize();
-               }
-       };
-
-       ColumnCalcs.prototype.initializeTopRow = function () {
-               if (!this.topInitialized) {
-                       // this.table.columnManager.headersElement.after(this.topElement);
-                       this.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);
-                       this.topInitialized = true;
-               }
-       };
-
-       ColumnCalcs.prototype.initializeBottomRow = function () {
-               if (!this.botInitialized) {
-                       this.table.footerManager.prepend(this.botElement);
-                       this.botInitialized = true;
-               }
-       };
-
-       ColumnCalcs.prototype.scrollHorizontal = function (left) {
-               var hozAdjust = 0,
-                   scrollWidth = this.table.columnManager.getElement().scrollWidth - this.table.element.clientWidth;
-
-               if (this.botInitialized) {
-                       this.botRow.getElement().style.marginLeft = -left + "px";
-               }
-       };
-
-       ColumnCalcs.prototype.recalc = function (rows) {
-               var data, row;
-
-               if (this.topInitialized || this.botInitialized) {
-                       data = this.rowsToData(rows);
-
-                       if (this.topInitialized) {
-                               if (this.topRow) {
-                                       this.topRow.deleteCells();
-                               }
-
-                               row = this.generateRow("top", this.rowsToData(rows));
-                               this.topRow = row;
-                               while (this.topElement.firstChild) {
-                                       this.topElement.removeChild(this.topElement.firstChild);
-                               }this.topElement.appendChild(row.getElement());
-                               row.initialize(true);
-                       }
-
-                       if (this.botInitialized) {
-                               if (this.botRow) {
-                                       this.botRow.deleteCells();
-                               }
-
-                               row = this.generateRow("bottom", this.rowsToData(rows));
-                               this.botRow = row;
-                               while (this.botElement.firstChild) {
-                                       this.botElement.removeChild(this.botElement.firstChild);
-                               }this.botElement.appendChild(row.getElement());
-                               row.initialize(true);
-                       }
-
-                       this.table.rowManager.adjustTableSize();
-
-                       //set resizable handles
-                       if (this.table.modExists("frozenColumns")) {
-                               this.table.modules.frozenColumns.layout();
-                       }
-               }
-       };
-
-       ColumnCalcs.prototype.recalcRowGroup = function (row) {
-               this.recalcGroup(this.table.modules.groupRows.getRowGroup(row));
-       };
-
-       ColumnCalcs.prototype.recalcAll = function () {
-               var _this37 = this;
-
-               if (this.topCalcs.length || this.botCalcs.length) {
-                       if (this.table.options.columnCalcs !== "group") {
-                               this.recalc(this.table.rowManager.activeRows);
-                       }
-
-                       if (this.table.options.groupBy && this.table.options.columnCalcs !== "table") {
-
-                               var groups = table.modules.groupRows.getChildGroups();
-
-                               groups.forEach(function (group) {
-                                       _this37.recalcGroup(group);
-                               });
-                       }
-               }
-       };
-
-       ColumnCalcs.prototype.recalcGroup = function (group) {
-               var data, rowData;
-
-               if (group) {
-                       if (group.calcs) {
-                               if (group.calcs.bottom) {
-                                       data = this.rowsToData(group.rows);
-                                       rowData = this.generateRowData("bottom", data);
-
-                                       group.calcs.bottom.updateData(rowData);
-                                       group.calcs.bottom.reinitialize();
-                               }
-
-                               if (group.calcs.top) {
-                                       data = this.rowsToData(group.rows);
-                                       rowData = this.generateRowData("top", data);
-
-                                       group.calcs.top.updateData(rowData);
-                                       group.calcs.top.reinitialize();
-                               }
-                       }
-               }
-       };
-
-       //generate top stats row
-       ColumnCalcs.prototype.generateTopRow = function (rows) {
-               return this.generateRow("top", this.rowsToData(rows));
-       };
-       //generate bottom stats row
-       ColumnCalcs.prototype.generateBottomRow = function (rows) {
-               return this.generateRow("bottom", this.rowsToData(rows));
-       };
-
-       ColumnCalcs.prototype.rowsToData = function (rows) {
-               var _this38 = this;
-
-               var data = [];
-
-               rows.forEach(function (row) {
-                       data.push(row.getData());
-
-                       if (_this38.table.options.dataTree && _this38.table.options.dataTreeChildColumnCalcs) {
-                               if (row.modules.dataTree.open) {
-                                       var children = _this38.rowsToData(_this38.table.modules.dataTree.getFilteredTreeChildren(row));
-                                       data = data.concat(children);
-                               }
-                       }
-               });
-
-               return data;
-       };
-
-       //generate stats row
-       ColumnCalcs.prototype.generateRow = function (pos, data) {
-               var self = this,
-                   rowData = this.generateRowData(pos, data),
-                   row;
-
-               if (self.table.modExists("mutator")) {
-                       self.table.modules.mutator.disable();
-               }
-
-               row = new Row(rowData, this, "calc");
-
-               if (self.table.modExists("mutator")) {
-                       self.table.modules.mutator.enable();
-               }
-
-               row.getElement().classList.add("tabulator-calcs", "tabulator-calcs-" + pos);
-
-               row.generateCells = function () {
-
-                       var cells = [];
-
-                       self.table.columnManager.columnsByIndex.forEach(function (column) {
-
-                               //set field name of mock column
-                               self.genColumn.setField(column.getField());
-                               self.genColumn.hozAlign = column.hozAlign;
-
-                               if (column.definition[pos + "CalcFormatter"] && self.table.modExists("format")) {
-
-                                       self.genColumn.modules.format = {
-                                               formatter: self.table.modules.format.getFormatter(column.definition[pos + "CalcFormatter"]),
-                                               params: column.definition[pos + "CalcFormatterParams"]
-                                       };
-                               } else {
-                                       self.genColumn.modules.format = {
-                                               formatter: self.table.modules.format.getFormatter("plaintext"),
-                                               params: {}
-                                       };
-                               }
-
-                               //ensure css class defintion is replicated to calculation cell
-                               self.genColumn.definition.cssClass = column.definition.cssClass;
-
-                               //generate cell and assign to correct column
-                               var cell = new Cell(self.genColumn, row);
-                               cell.column = column;
-                               cell.setWidth();
-
-                               column.cells.push(cell);
-                               cells.push(cell);
-
-                               if (!column.visible) {
-                                       cell.hide();
-                               }
-                       });
-
-                       this.cells = cells;
-               };
-
-               return row;
-       };
-
-       //generate stats row
-       ColumnCalcs.prototype.generateRowData = function (pos, data) {
-               var rowData = {},
-                   calcs = pos == "top" ? this.topCalcs : this.botCalcs,
-                   type = pos == "top" ? "topCalc" : "botCalc",
-                   params,
-                   paramKey;
-
-               calcs.forEach(function (column) {
-                       var values = [];
-
-                       if (column.modules.columnCalcs && column.modules.columnCalcs[type]) {
-                               data.forEach(function (item) {
-                                       values.push(column.getFieldValue(item));
-                               });
-
-                               paramKey = type + "Params";
-                               params = typeof column.modules.columnCalcs[paramKey] === "function" ? column.modules.columnCalcs[paramKey](values, data) : column.modules.columnCalcs[paramKey];
-
-                               column.setFieldValue(rowData, column.modules.columnCalcs[type](values, data, params));
-                       }
-               });
-
-               return rowData;
-       };
-
-       ColumnCalcs.prototype.hasTopCalcs = function () {
-               return !!this.topCalcs.length;
-       };
-
-       ColumnCalcs.prototype.hasBottomCalcs = function () {
-               return !!this.botCalcs.length;
-       };
-
-       //handle table redraw
-       ColumnCalcs.prototype.redraw = function () {
-               if (this.topRow) {
-                       this.topRow.normalizeHeight(true);
-               }
-               if (this.botRow) {
-                       this.botRow.normalizeHeight(true);
-               }
-       };
-
-       //return the calculated
-       ColumnCalcs.prototype.getResults = function () {
-               var self = this,
-                   results = {},
-                   groups;
-
-               if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-                       groups = this.table.modules.groupRows.getGroups(true);
-
-                       groups.forEach(function (group) {
-                               results[group.getKey()] = self.getGroupResults(group);
-                       });
-               } else {
-                       results = {
-                               top: this.topRow ? this.topRow.getData() : {},
-                               bottom: this.botRow ? this.botRow.getData() : {}
-                       };
-               }
-
-               return results;
-       };
-
-       //get results from a group
-       ColumnCalcs.prototype.getGroupResults = function (group) {
-               var self = this,
-                   groupObj = group._getSelf(),
-                   subGroups = group.getSubGroups(),
-                   subGroupResults = {},
-                   results = {};
-
-               subGroups.forEach(function (subgroup) {
-                       subGroupResults[subgroup.getKey()] = self.getGroupResults(subgroup);
-               });
-
-               results = {
-                       top: groupObj.calcs.top ? groupObj.calcs.top.getData() : {},
-                       bottom: groupObj.calcs.bottom ? groupObj.calcs.bottom.getData() : {},
-                       groups: subGroupResults
-               };
-
-               return results;
-       };
-
-       //default calculations
-       ColumnCalcs.prototype.calculations = {
-               "avg": function avg(values, data, calcParams) {
-                       var output = 0,
-                           precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : 2;
-
-                       if (values.length) {
-                               output = values.reduce(function (sum, value) {
-                                       value = Number(value);
-                                       return sum + value;
-                               });
-
-                               output = output / values.length;
-
-                               output = precision !== false ? output.toFixed(precision) : output;
-                       }
-
-                       return parseFloat(output).toString();
-               },
-               "max": function max(values, data, calcParams) {
-                       var output = null,
-                           precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : false;
-
-                       values.forEach(function (value) {
-
-                               value = Number(value);
-
-                               if (value > output || output === null) {
-                                       output = value;
-                               }
-                       });
-
-                       return output !== null ? precision !== false ? output.toFixed(precision) : output : "";
-               },
-               "min": function min(values, data, calcParams) {
-                       var output = null,
-                           precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : false;
-
-                       values.forEach(function (value) {
-
-                               value = Number(value);
-
-                               if (value < output || output === null) {
-                                       output = value;
-                               }
-                       });
-
-                       return output !== null ? precision !== false ? output.toFixed(precision) : output : "";
-               },
-               "sum": function sum(values, data, calcParams) {
-                       var output = 0,
-                           precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : false;
-
-                       if (values.length) {
-                               values.forEach(function (value) {
-                                       value = Number(value);
-
-                                       output += !isNaN(value) ? Number(value) : 0;
-                               });
-                       }
-
-                       return precision !== false ? output.toFixed(precision) : output;
-               },
-               "concat": function concat(values, data, calcParams) {
-                       var output = 0;
-
-                       if (values.length) {
-                               output = values.reduce(function (sum, value) {
-                                       return String(sum) + String(value);
-                               });
-                       }
-
-                       return output;
-               },
-               "count": function count(values, data, calcParams) {
-                       var output = 0;
-
-                       if (values.length) {
-                               values.forEach(function (value) {
-                                       if (value) {
-                                               output++;
-                                       }
-                               });
-                       }
-
-                       return output;
-               }
-       };
-
-       Tabulator.prototype.registerModule("columnCalcs", ColumnCalcs);
-
-       var Clipboard = function Clipboard(table) {
-               this.table = table;
-               this.mode = true;
-
-               this.pasteParser = function () {};
-               this.pasteAction = function () {};
-               this.customSelection = false;
-               this.rowRange = false;
-               this.blocked = true; //block copy actions not originating from this command
-       };
-
-       Clipboard.prototype.initialize = function () {
-               var _this39 = this;
-
-               this.mode = this.table.options.clipboard;
-
-               this.rowRange = this.table.options.clipboardCopyRowRange;
-
-               if (this.mode === true || this.mode === "copy") {
-                       this.table.element.addEventListener("copy", function (e) {
-                               var plain, html, list;
-
-                               if (!_this39.blocked) {
-                                       e.preventDefault();
-
-                                       if (_this39.customSelection) {
-                                               plain = _this39.customSelection;
-
-                                               if (_this39.table.options.clipboardCopyFormatter) {
-                                                       plain = _this39.table.options.clipboardCopyFormatter("plain", plain);
-                                               }
-                                       } else {
-
-                                               var list = _this39.table.modules.export.generateExportList(_this39.rowRange, _this39.table.options.clipboardCopyStyled, _this39.table.options.clipboardCopyConfig, "clipboard");
-
-                                               html = _this39.table.modules.export.genereateHTMLTable(list);
-                                               plain = html ? _this39.generatePlainContent(list) : "";
-
-                                               if (_this39.table.options.clipboardCopyFormatter) {
-                                                       plain = _this39.table.options.clipboardCopyFormatter("plain", plain);
-                                                       html = _this39.table.options.clipboardCopyFormatter("html", html);
-                                               }
-                                       }
-
-                                       if (window.clipboardData && window.clipboardData.setData) {
-                                               window.clipboardData.setData('Text', plain);
-                                       } else if (e.clipboardData && e.clipboardData.setData) {
-                                               e.clipboardData.setData('text/plain', plain);
-                                               if (html) {
-                                                       e.clipboardData.setData('text/html', html);
-                                               }
-                                       } else if (e.originalEvent && e.originalEvent.clipboardData.setData) {
-                                               e.originalEvent.clipboardData.setData('text/plain', plain);
-                                               if (html) {
-                                                       e.originalEvent.clipboardData.setData('text/html', html);
-                                               }
-                                       }
-
-                                       _this39.table.options.clipboardCopied.call(_this39.table, plain, html);
-
-                                       _this39.reset();
-                               }
-                       });
-               }
-
-               if (this.mode === true || this.mode === "paste") {
-                       this.table.element.addEventListener("paste", function (e) {
-                               _this39.paste(e);
-                       });
-               }
-
-               this.setPasteParser(this.table.options.clipboardPasteParser);
-               this.setPasteAction(this.table.options.clipboardPasteAction);
-       };
-
-       Clipboard.prototype.reset = function () {
-               this.blocked = false;
-               this.originalSelectionText = "";
-       };
-
-       Clipboard.prototype.generatePlainContent = function (list) {
-               var output = [];
-
-               list.forEach(function (row) {
-                       var rowData = [];
-
-                       row.columns.forEach(function (col) {
-                               var value = "";
-
-                               if (col) {
-
-                                       if (row.type === "group") {
-                                               col.value = col.component.getKey();
-                                       }
-
-                                       switch (_typeof(col.value)) {
-                                               case "object":
-                                                       value = JSON.stringify(col.value);
-                                                       break;
-
-                                               case "undefined":
-                                               case "null":
-                                                       value = "";
-                                                       break;
-
-                                               default:
-                                                       value = col.value;
-                                       }
-                               }
-
-                               rowData.push(value);
-                       });
-
-                       output.push(rowData.join("\t"));
-               });
-
-               return output.join("\n");
-       };
-
-       Clipboard.prototype.copy = function (range, internal) {
-               var range, sel, textRange;
-               this.blocked = false;
-               this.customSelection = false;
-
-               if (this.mode === true || this.mode === "copy") {
-
-                       this.rowRange = range || this.table.options.clipboardCopyRowRange;
-
-                       if (typeof window.getSelection != "undefined" && typeof document.createRange != "undefined") {
-                               range = document.createRange();
-                               range.selectNodeContents(this.table.element);
-                               sel = window.getSelection();
-
-                               if (sel.toString() && internal) {
-                                       this.customSelection = sel.toString();
-                               }
-
-                               sel.removeAllRanges();
-                               sel.addRange(range);
-                       } else if (typeof document.selection != "undefined" && typeof document.body.createTextRange != "undefined") {
-                               textRange = document.body.createTextRange();
-                               textRange.moveToElementText(this.table.element);
-                               textRange.select();
-                       }
-
-                       document.execCommand('copy');
-
-                       if (sel) {
-                               sel.removeAllRanges();
-                       }
-               }
-       };
-
-       //PASTE EVENT HANDLING
-
-       Clipboard.prototype.setPasteAction = function (action) {
-
-               switch (typeof action === 'undefined' ? 'undefined' : _typeof(action)) {
-                       case "string":
-                               this.pasteAction = this.pasteActions[action];
-
-                               if (!this.pasteAction) {
-                                       console.warn("Clipboard Error - No such paste action found:", action);
-                               }
-                               break;
-
-                       case "function":
-                               this.pasteAction = action;
-                               break;
-               }
-       };
-
-       Clipboard.prototype.setPasteParser = function (parser) {
-               switch (typeof parser === 'undefined' ? 'undefined' : _typeof(parser)) {
-                       case "string":
-                               this.pasteParser = this.pasteParsers[parser];
-
-                               if (!this.pasteParser) {
-                                       console.warn("Clipboard Error - No such paste parser found:", parser);
-                               }
-                               break;
-
-                       case "function":
-                               this.pasteParser = parser;
-                               break;
-               }
-       };
-
-       Clipboard.prototype.paste = function (e) {
-               var data, rowData, rows;
-
-               if (this.checkPaseOrigin(e)) {
-
-                       data = this.getPasteData(e);
-
-                       rowData = this.pasteParser.call(this, data);
-
-                       if (rowData) {
-                               e.preventDefault();
-
-                               if (this.table.modExists("mutator")) {
-                                       rowData = this.mutateData(rowData);
-                               }
-
-                               rows = this.pasteAction.call(this, rowData);
-                               this.table.options.clipboardPasted.call(this.table, data, rowData, rows);
-                       } else {
-                               this.table.options.clipboardPasteError.call(this.table, data);
-                       }
-               }
-       };
-
-       Clipboard.prototype.mutateData = function (data) {
-               var self = this,
-                   output = [];
-
-               if (Array.isArray(data)) {
-                       data.forEach(function (row) {
-                               output.push(self.table.modules.mutator.transformRow(row, "clipboard"));
-                       });
-               } else {
-                       output = data;
-               }
-
-               return output;
-       };
-
-       Clipboard.prototype.checkPaseOrigin = function (e) {
-               var valid = true;
-
-               if (e.target.tagName != "DIV" || this.table.modules.edit.currentCell) {
-                       valid = false;
-               }
-
-               return valid;
-       };
-
-       Clipboard.prototype.getPasteData = function (e) {
-               var data;
-
-               if (window.clipboardData && window.clipboardData.getData) {
-                       data = window.clipboardData.getData('Text');
-               } else if (e.clipboardData && e.clipboardData.getData) {
-                       data = e.clipboardData.getData('text/plain');
-               } else if (e.originalEvent && e.originalEvent.clipboardData.getData) {
-                       data = e.originalEvent.clipboardData.getData('text/plain');
-               }
-
-               return data;
-       };
-
-       Clipboard.prototype.pasteParsers = {
-               table: function table(clipboard) {
-                       var data = [],
-                           success = false,
-                           headerFindSuccess = true,
-                           columns = this.table.columnManager.columns,
-                           columnMap = [],
-                           rows = [];
-
-                       //get data from clipboard into array of columns and rows.
-                       clipboard = clipboard.split("\n");
-
-                       clipboard.forEach(function (row) {
-                               data.push(row.split("\t"));
-                       });
-
-                       if (data.length && !(data.length === 1 && data[0].length < 2)) {
-                               success = true;
-
-                               //check if headers are present by title
-                               data[0].forEach(function (value) {
-                                       var column = columns.find(function (column) {
-                                               return value && column.definition.title && value.trim() && column.definition.title.trim() === value.trim();
-                                       });
-
-                                       if (column) {
-                                               columnMap.push(column);
-                                       } else {
-                                               headerFindSuccess = false;
-                                       }
-                               });
-
-                               //check if column headers are present by field
-                               if (!headerFindSuccess) {
-                                       headerFindSuccess = true;
-                                       columnMap = [];
-
-                                       data[0].forEach(function (value) {
-                                               var column = columns.find(function (column) {
-                                                       return value && column.field && value.trim() && column.field.trim() === value.trim();
-                                               });
-
-                                               if (column) {
-                                                       columnMap.push(column);
-                                               } else {
-                                                       headerFindSuccess = false;
-                                               }
-                                       });
-
-                                       if (!headerFindSuccess) {
-                                               columnMap = this.table.columnManager.columnsByIndex;
-                                       }
-                               }
-
-                               //remove header row if found
-                               if (headerFindSuccess) {
-                                       data.shift();
-                               }
-
-                               data.forEach(function (item) {
-                                       var row = {};
-
-                                       item.forEach(function (value, i) {
-                                               if (columnMap[i]) {
-                                                       row[columnMap[i].field] = value;
-                                               }
-                                       });
-
-                                       rows.push(row);
-                               });
-
-                               return rows;
-                       } else {
-                               return false;
-                       }
-               }
-       };
-
-       Clipboard.prototype.pasteActions = {
-               replace: function replace(rows) {
-                       return this.table.setData(rows);
-               },
-               update: function update(rows) {
-                       return this.table.updateOrAddData(rows);
-               },
-               insert: function insert(rows) {
-                       return this.table.addData(rows);
-               }
-       };
-
-       Tabulator.prototype.registerModule("clipboard", Clipboard);
-
-       var DataTree = function DataTree(table) {
-               this.table = table;
-               this.indent = 10;
-               this.field = "";
-               this.collapseEl = null;
-               this.expandEl = null;
-               this.branchEl = null;
-               this.elementField = false;
-
-               this.startOpen = function () {};
-
-               this.displayIndex = 0;
-       };
-
-       DataTree.prototype.initialize = function () {
-               var dummyEl = null,
-                   firstCol = this.table.columnManager.getFirstVisibileColumn(),
-                   options = this.table.options;
-
-               this.field = options.dataTreeChildField;
-               this.indent = options.dataTreeChildIndent;
-               this.elementField = options.dataTreeElementColumn || (firstCol ? firstCol.field : false);
-
-               if (options.dataTreeBranchElement) {
-
-                       if (options.dataTreeBranchElement === true) {
-                               this.branchEl = document.createElement("div");
-                               this.branchEl.classList.add("tabulator-data-tree-branch");
-                       } else {
-                               if (typeof options.dataTreeBranchElement === "string") {
-                                       dummyEl = document.createElement("div");
-                                       dummyEl.innerHTML = options.dataTreeBranchElement;
-                                       this.branchEl = dummyEl.firstChild;
-                               } else {
-                                       this.branchEl = options.dataTreeBranchElement;
-                               }
-                       }
-               }
-
-               if (options.dataTreeCollapseElement) {
-                       if (typeof options.dataTreeCollapseElement === "string") {
-                               dummyEl = document.createElement("div");
-                               dummyEl.innerHTML = options.dataTreeCollapseElement;
-                               this.collapseEl = dummyEl.firstChild;
-                       } else {
-                               this.collapseEl = options.dataTreeCollapseElement;
-                       }
-               } else {
-                       this.collapseEl = document.createElement("div");
-                       this.collapseEl.classList.add("tabulator-data-tree-control");
-                       this.collapseEl.tabIndex = 0;
-                       this.collapseEl.innerHTML = "<div class='tabulator-data-tree-control-collapse'></div>";
-               }
-
-               if (options.dataTreeExpandElement) {
-                       if (typeof options.dataTreeExpandElement === "string") {
-                               dummyEl = document.createElement("div");
-                               dummyEl.innerHTML = options.dataTreeExpandElement;
-                               this.expandEl = dummyEl.firstChild;
-                       } else {
-                               this.expandEl = options.dataTreeExpandElement;
-                       }
-               } else {
-                       this.expandEl = document.createElement("div");
-                       this.expandEl.classList.add("tabulator-data-tree-control");
-                       this.expandEl.tabIndex = 0;
-                       this.expandEl.innerHTML = "<div class='tabulator-data-tree-control-expand'></div>";
-               }
-
-               switch (_typeof(options.dataTreeStartExpanded)) {
-                       case "boolean":
-                               this.startOpen = function (row, index) {
-                                       return options.dataTreeStartExpanded;
-                               };
-                               break;
-
-                       case "function":
-                               this.startOpen = options.dataTreeStartExpanded;
-                               break;
-
-                       default:
-                               this.startOpen = function (row, index) {
-                                       return options.dataTreeStartExpanded[index];
-                               };
-                               break;
-               }
-       };
-
-       DataTree.prototype.initializeRow = function (row) {
-               var childArray = row.getData()[this.field];
-               var isArray = Array.isArray(childArray);
-
-               var children = isArray || !isArray && (typeof childArray === 'undefined' ? 'undefined' : _typeof(childArray)) === "object" && childArray !== null;
-
-               if (!children && row.modules.dataTree && row.modules.dataTree.branchEl) {
-                       row.modules.dataTree.branchEl.parentNode.removeChild(row.modules.dataTree.branchEl);
-               }
-
-               if (!children && row.modules.dataTree && row.modules.dataTree.controlEl) {
-                       row.modules.dataTree.controlEl.parentNode.removeChild(row.modules.dataTree.controlEl);
-               }
-
-               row.modules.dataTree = {
-                       index: row.modules.dataTree ? row.modules.dataTree.index : 0,
-                       open: children ? row.modules.dataTree ? row.modules.dataTree.open : this.startOpen(row.getComponent(), 0) : false,
-                       controlEl: row.modules.dataTree && children ? row.modules.dataTree.controlEl : false,
-                       branchEl: row.modules.dataTree && children ? row.modules.dataTree.branchEl : false,
-                       parent: row.modules.dataTree ? row.modules.dataTree.parent : false,
-                       children: children
-               };
-       };
-
-       DataTree.prototype.layoutRow = function (row) {
-               var cell = this.elementField ? row.getCell(this.elementField) : row.getCells()[0],
-                   el = cell.getElement(),
-                   config = row.modules.dataTree;
-
-               if (config.branchEl) {
-                       if (config.branchEl.parentNode) {
-                               config.branchEl.parentNode.removeChild(config.branchEl);
-                       }
-                       config.branchEl = false;
-               }
-
-               if (config.controlEl) {
-                       if (config.controlEl.parentNode) {
-                               config.controlEl.parentNode.removeChild(config.controlEl);
-                       }
-                       config.controlEl = false;
-               }
-
-               this.generateControlElement(row, el);
-
-               row.element.classList.add("tabulator-tree-level-" + config.index);
-
-               if (config.index) {
-                       if (this.branchEl) {
-                               config.branchEl = this.branchEl.cloneNode(true);
-                               el.insertBefore(config.branchEl, el.firstChild);
-                               config.branchEl.style.marginLeft = (config.branchEl.offsetWidth + config.branchEl.style.marginRight) * (config.index - 1) + config.index * this.indent + "px";
-                       } else {
-                               el.style.paddingLeft = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + config.index * this.indent + "px";
-                       }
-               }
-       };
-
-       DataTree.prototype.generateControlElement = function (row, el) {
-               var _this40 = this;
-
-               var config = row.modules.dataTree,
-                   el = el || row.getCells()[0].getElement(),
-                   oldControl = config.controlEl;
-
-               if (config.children !== false) {
-
-                       if (config.open) {
-                               config.controlEl = this.collapseEl.cloneNode(true);
-                               config.controlEl.addEventListener("click", function (e) {
-                                       e.stopPropagation();
-                                       _this40.collapseRow(row);
-                               });
-                       } else {
-                               config.controlEl = this.expandEl.cloneNode(true);
-                               config.controlEl.addEventListener("click", function (e) {
-                                       e.stopPropagation();
-                                       _this40.expandRow(row);
-                               });
-                       }
-
-                       config.controlEl.addEventListener("mousedown", function (e) {
-                               e.stopPropagation();
-                       });
-
-                       if (oldControl && oldControl.parentNode === el) {
-                               oldControl.parentNode.replaceChild(config.controlEl, oldControl);
-                       } else {
-                               el.insertBefore(config.controlEl, el.firstChild);
-                       }
-               }
-       };
-
-       DataTree.prototype.setDisplayIndex = function (index) {
-               this.displayIndex = index;
-       };
-
-       DataTree.prototype.getDisplayIndex = function () {
-               return this.displayIndex;
-       };
-
-       DataTree.prototype.getRows = function (rows) {
-               var _this41 = this;
-
-               var output = [];
-
-               rows.forEach(function (row, i) {
-                       var config, children;
-
-                       output.push(row);
-
-                       if (row instanceof Row) {
-
-                               config = row.modules.dataTree.children;
-
-                               if (!config.index && config.children !== false) {
-                                       children = _this41.getChildren(row);
-
-                                       children.forEach(function (child) {
-                                               output.push(child);
-                                       });
-                               }
-                       }
-               });
-
-               return output;
-       };
-
-       DataTree.prototype.getChildren = function (row) {
-               var _this42 = this;
-
-               var config = row.modules.dataTree,
-                   children = [],
-                   output = [];
-
-               if (config.children !== false && config.open) {
-                       if (!Array.isArray(config.children)) {
-                               config.children = this.generateChildren(row);
-                       }
-
-                       if (this.table.modExists("filter")) {
-                               children = this.table.modules.filter.filter(config.children);
-                       } else {
-                               children = config.children;
-                       }
-
-                       if (this.table.modExists("sort")) {
-                               this.table.modules.sort.sort(children);
-                       }
-
-                       children.forEach(function (child) {
-                               output.push(child);
-
-                               var subChildren = _this42.getChildren(child);
-
-                               subChildren.forEach(function (sub) {
-                                       output.push(sub);
-                               });
-                       });
-               }
-
-               return output;
-       };
-
-       DataTree.prototype.generateChildren = function (row) {
-               var _this43 = this;
-
-               var children = [];
-
-               var childArray = row.getData()[this.field];
-
-               if (!Array.isArray(childArray)) {
-                       childArray = [childArray];
-               }
-
-               childArray.forEach(function (childData) {
-                       var childRow = new Row(childData || {}, _this43.table.rowManager);
-                       childRow.modules.dataTree.index = row.modules.dataTree.index + 1;
-                       childRow.modules.dataTree.parent = row;
-                       if (childRow.modules.dataTree.children) {
-                               childRow.modules.dataTree.open = _this43.startOpen(childRow.getComponent(), childRow.modules.dataTree.index);
-                       }
-                       children.push(childRow);
-               });
-
-               return children;
-       };
-
-       DataTree.prototype.expandRow = function (row, silent) {
-               var config = row.modules.dataTree;
-
-               if (config.children !== false) {
-                       config.open = true;
-
-                       row.reinitialize();
-
-                       this.table.rowManager.refreshActiveData("tree", false, true);
-
-                       this.table.options.dataTreeRowExpanded(row.getComponent(), row.modules.dataTree.index);
-               }
-       };
-
-       DataTree.prototype.collapseRow = function (row) {
-               var config = row.modules.dataTree;
-
-               if (config.children !== false) {
-                       config.open = false;
-
-                       row.reinitialize();
-
-                       this.table.rowManager.refreshActiveData("tree", false, true);
-
-                       this.table.options.dataTreeRowCollapsed(row.getComponent(), row.modules.dataTree.index);
-               }
-       };
-
-       DataTree.prototype.toggleRow = function (row) {
-               var config = row.modules.dataTree;
-
-               if (config.children !== false) {
-                       if (config.open) {
-                               this.collapseRow(row);
-                       } else {
-                               this.expandRow(row);
-                       }
-               }
-       };
-
-       DataTree.prototype.getTreeParent = function (row) {
-               return row.modules.dataTree.parent ? row.modules.dataTree.parent.getComponent() : false;
-       };
-
-       DataTree.prototype.getFilteredTreeChildren = function (row) {
-               var config = row.modules.dataTree,
-                   output = [],
-                   children;
-
-               if (config.children) {
-
-                       if (!Array.isArray(config.children)) {
-                               config.children = this.generateChildren(row);
-                       }
-
-                       if (this.table.modExists("filter")) {
-                               children = this.table.modules.filter.filter(config.children);
-                       } else {
-                               children = config.children;
-                       }
-
-                       children.forEach(function (childRow) {
-                               if (childRow instanceof Row) {
-                                       output.push(childRow);
-                               }
-                       });
-               }
-
-               return output;
-       };
-
-       DataTree.prototype.rowDelete = function (row) {
-               var parent = row.modules.dataTree.parent,
-                   childIndex;
-
-               if (parent) {
-                       childIndex = this.findChildIndex(row, parent);
-
-                       if (childIndex !== false) {
-                               parent.data[this.field].splice(childIndex, 1);
-                       }
-
-                       if (!parent.data[this.field].length) {
-                               delete parent.data[this.field];
-                       }
-
-                       this.initializeRow(parent);
-                       this.layoutRow(parent);
-               }
-
-               this.table.rowManager.refreshActiveData("tree", false, true);
-       };
-
-       DataTree.prototype.addTreeChildRow = function (row, data, top, index) {
-               var childIndex = false;
-
-               if (typeof data === "string") {
-                       data = JSON.parse(data);
-               }
-
-               if (!Array.isArray(row.data[this.field])) {
-                       row.data[this.field] = [];
-
-                       row.modules.dataTree.open = this.startOpen(row.getComponent(), row.modules.dataTree.index);
-               }
-
-               if (typeof index !== "undefined") {
-                       childIndex = this.findChildIndex(index, row);
-
-                       if (childIndex !== false) {
-                               row.data[this.field].splice(top ? childIndex : childIndex + 1, 0, data);
-                       }
-               }
-
-               if (childIndex === false) {
-                       if (top) {
-                               row.data[this.field].unshift(data);
-                       } else {
-                               row.data[this.field].push(data);
-                       }
-               }
-
-               this.initializeRow(row);
-               this.layoutRow(row);
-
-               this.table.rowManager.refreshActiveData("tree", false, true);
-       };
-
-       DataTree.prototype.findChildIndex = function (subject, parent) {
-               var _this44 = this;
-
-               var match = false;
-
-               if ((typeof subject === 'undefined' ? 'undefined' : _typeof(subject)) == "object") {
-
-                       if (subject instanceof Row) {
-                               //subject is row element
-                               match = subject.data;
-                       } else if (subject instanceof RowComponent) {
-                               //subject is public row component
-                               match = subject._getSelf().data;
-                       } else if (typeof HTMLElement !== "undefined" && subject instanceof HTMLElement) {
-                               if (parent.modules.dataTree) {
-                                       match = parent.modules.dataTree.children.find(function (childRow) {
-                                               return childRow instanceof Row ? childRow.element === subject : false;
-                                       });
-
-                                       if (match) {
-                                               match = match.data;
-                                       }
-                               }
-                       }
-               } else if (typeof subject == "undefined" || subject === null) {
-                       match = false;
-               } else {
-                       //subject should be treated as the index of the row
-                       match = parent.data[this.field].find(function (row) {
-                               return row.data[_this44.table.options.index] == subject;
-                       });
-               }
-
-               if (match) {
-
-                       if (Array.isArray(parent.data[this.field])) {
-                               match = parent.data[this.field].indexOf(match);
-                       }
-
-                       if (match == -1) {
-                               match = false;
-                       }
-               }
-
-               //catch all for any other type of input
-
-               return match;
-       };
-
-       DataTree.prototype.getTreeChildren = function (row) {
-               var config = row.modules.dataTree,
-                   output = [];
-
-               if (config.children) {
-
-                       if (!Array.isArray(config.children)) {
-                               config.children = this.generateChildren(row);
-                       }
-
-                       config.children.forEach(function (childRow) {
-                               if (childRow instanceof Row) {
-                                       output.push(childRow.getComponent());
-                               }
-                       });
-               }
-
-               return output;
-       };
-
-       DataTree.prototype.checkForRestyle = function (cell) {
-               if (!cell.row.cells.indexOf(cell)) {
-                       cell.row.reinitialize();
-               }
-       };
-
-       DataTree.prototype.getChildField = function () {
-               return this.field;
-       };
-
-       DataTree.prototype.redrawNeeded = function (data) {
-               return (this.field ? typeof data[this.field] !== "undefined" : false) || (this.elementField ? typeof data[this.elementField] !== "undefined" : false);
-       };
-
-       Tabulator.prototype.registerModule("dataTree", DataTree);
-
-       var Download = function Download(table) {
-               this.table = table; //hold Tabulator object
-       };
-
-       //trigger file download
-       Download.prototype.download = function (type, filename, options, range, interceptCallback) {
-               var self = this,
-                   downloadFunc = false;
-
-               function buildLink(data, mime) {
-                       if (interceptCallback) {
-                               if (interceptCallback === true) {
-                                       self.triggerDownload(data, mime, type, filename, true);
-                               } else {
-                                       interceptCallback(data);
-                               }
-                       } else {
-                               self.triggerDownload(data, mime, type, filename);
-                       }
-               }
-
-               if (typeof type == "function") {
-                       downloadFunc = type;
-               } else {
-                       if (self.downloaders[type]) {
-                               downloadFunc = self.downloaders[type];
-                       } else {
-                               console.warn("Download Error - No such download type found: ", type);
-                       }
-               }
-
-               if (downloadFunc) {
-                       var list = this.generateExportList(range);
-
-                       downloadFunc.call(this.table, list, options || {}, buildLink);
-               }
-       };
-
-       Download.prototype.generateExportList = function (range) {
-               var list = this.table.modules.export.generateExportList(this.table.options.downloadConfig, false, range || this.table.options.downloadRowRange, "download");
-
-               //assign group header formatter
-               var groupHeader = this.table.options.groupHeaderDownload;
-
-               if (groupHeader && !Array.isArray(groupHeader)) {
-                       groupHeader = [groupHeader];
-               }
-
-               list.forEach(function (row) {
-                       var group;
-
-                       if (row.type === "group") {
-                               group = row.columns[0];
-
-                               if (groupHeader && groupHeader[row.indent]) {
-                                       group.value = groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);
-                               }
-                       }
-               });
-
-               return list;
-       };
-
-       Download.prototype.triggerDownload = function (data, mime, type, filename, newTab) {
-               var element = document.createElement('a'),
-                   blob = new Blob([data], { type: mime }),
-                   filename = filename || "Tabulator." + (typeof type === "function" ? "txt" : type);
-
-               blob = this.table.options.downloadReady.call(this.table, data, blob);
-
-               if (blob) {
-
-                       if (newTab) {
-                               window.open(window.URL.createObjectURL(blob));
-                       } else {
-                               if (navigator.msSaveOrOpenBlob) {
-                                       navigator.msSaveOrOpenBlob(blob, filename);
-                               } else {
-                                       element.setAttribute('href', window.URL.createObjectURL(blob));
-
-                                       //set file title
-                                       element.setAttribute('download', filename);
-
-                                       //trigger download
-                                       element.style.display = 'none';
-                                       document.body.appendChild(element);
-                                       element.click();
-
-                                       //remove temporary link element
-                                       document.body.removeChild(element);
-                               }
-                       }
-
-                       if (this.table.options.downloadComplete) {
-                               this.table.options.downloadComplete();
-                       }
-               }
-       };
-
-       Download.prototype.commsReceived = function (table, action, data) {
-               switch (action) {
-                       case "intercept":
-                               this.download(data.type, "", data.options, data.active, data.intercept);
-                               break;
-               }
-       };
-
-       //downloaders
-       Download.prototype.downloaders = {
-               csv: function csv(list, options, setFileContents) {
-                       var delimiter = options && options.delimiter ? options.delimiter : ",",
-                           fileContents = [],
-                           headers = [];
-
-                       list.forEach(function (row) {
-                               var item = [];
-
-                               switch (row.type) {
-                                       case "group":
-                                               console.warn("Download Warning - CSV downloader cannot process row groups");
-                                               break;
-
-                                       case "calc":
-                                               console.warn("Download Warning - CSV downloader cannot process column calculations");
-                                               break;
-
-                                       case "header":
-                                               row.columns.forEach(function (col, i) {
-                                                       if (col && col.depth === 1) {
-                                                               headers[i] = typeof col.value == "undefined" || typeof col.value == "null" ? "" : col.value;
-                                                       }
-                                               });
-                                               break;
-
-                                       case "row":
-                                               row.columns.forEach(function (col) {
-
-                                                       if (col) {
-
-                                                               switch (_typeof(col.value)) {
-                                                                       case "object":
-                                                                               col.value = JSON.stringify(col.value);
-                                                                               break;
-
-                                                                       case "undefined":
-                                                                       case "null":
-                                                                               col.value = "";
-                                                                               break;
-                                                               }
-
-                                                               item.push('"' + String(col.value).split('"').join('""') + '"');
-                                                       }
-                                               });
-
-                                               fileContents.push(item.join(delimiter));
-                                               break;
-                               }
-                       });
-
-                       if (headers.length) {
-                               fileContents = [headers].concat(fileContents);
-                       }
-
-                       fileContents = fileContents.join("\n");
-
-                       if (options.bom) {
-                               fileContents = '\uFEFF' + fileContents;
-                       }
-
-                       setFileContents(fileContents, "text/csv");
-               },
-
-               json: function json(list, options, setFileContents) {
-                       var fileContents = [];
-
-                       list.forEach(function (row) {
-                               var item = {};
-
-                               switch (row.type) {
-                                       case "header":
-                                               break;
-
-                                       case "group":
-                                               console.warn("Download Warning - JSON downloader cannot process row groups");
-                                               break;
-
-                                       case "calc":
-                                               console.warn("Download Warning - JSON downloader cannot process column calculations");
-                                               break;
-
-                                       case "row":
-                                               row.columns.forEach(function (col) {
-                                                       if (col) {
-                                                               item[col.component.getField()] = col.value;
-                                                       }
-                                               });
-
-                                               fileContents.push(item);
-                                               break;
-                               }
-                       });
-
-                       fileContents = JSON.stringify(fileContents, null, '\t');
-
-                       setFileContents(fileContents, "application/json");
-               },
-
-               pdf: function pdf(list, options, setFileContents) {
-                       var header = [],
-                           body = [],
-                           autoTableParams = {},
-                           rowGroupStyles = options.rowGroupStyles || {
-                               fontStyle: "bold",
-                               fontSize: 12,
-                               cellPadding: 6,
-                               fillColor: 220
-                       },
-                           rowCalcStyles = options.rowCalcStyles || {
-                               fontStyle: "bold",
-                               fontSize: 10,
-                               cellPadding: 4,
-                               fillColor: 232
-                       },
-                           jsPDFParams = options.jsPDF || {},
-                           title = options && options.title ? options.title : "";
-
-                       if (!jsPDFParams.orientation) {
-                               jsPDFParams.orientation = options.orientation || "landscape";
-                       }
-
-                       if (!jsPDFParams.unit) {
-                               jsPDFParams.unit = "pt";
-                       }
-
-                       //parse row list
-                       list.forEach(function (row) {
-                               var item = {};
-
-                               switch (row.type) {
-                                       case "header":
-                                               header.push(parseRow(row));
-                                               break;
-
-                                       case "group":
-                                               body.push(parseRow(row, rowGroupStyles));
-                                               break;
-
-                                       case "calc":
-                                               body.push(parseRow(row, rowCalcStyles));
-                                               break;
-
-                                       case "row":
-                                               body.push(parseRow(row));
-                                               break;
-                               }
-                       });
-
-                       function parseRow(row, styles) {
-                               var rowData = [];
-
-                               row.columns.forEach(function (col) {
-                                       var cell;
-
-                                       if (col) {
-                                               switch (_typeof(col.value)) {
-                                                       case "object":
-                                                               col.value = JSON.stringify(col.value);
-                                                               break;
-
-                                                       case "undefined":
-                                                       case "null":
-                                                               col.value = "";
-                                                               break;
-                                               }
-
-                                               cell = {
-                                                       content: col.value,
-                                                       colSpan: col.width,
-                                                       rowSpan: col.height
-                                               };
-
-                                               if (styles) {
-                                                       cell.styles = styles;
-                                               }
-
-                                               rowData.push(cell);
-                                       } else {
-                                               rowData.push("");
-                                       }
-                               });
-
-                               return rowData;
-                       }
-
-                       //configure PDF
-                       var doc = new jsPDF(jsPDFParams); //set document to landscape, better for most tables
-
-                       if (options && options.autoTable) {
-                               if (typeof options.autoTable === "function") {
-                                       autoTableParams = options.autoTable(doc) || {};
-                               } else {
-                                       autoTableParams = options.autoTable;
-                               }
-                       }
-
-                       if (title) {
-                               autoTableParams.addPageContent = function (data) {
-                                       doc.text(title, 40, 30);
-                               };
-                       }
-
-                       autoTableParams.head = header;
-                       autoTableParams.body = body;
-
-                       doc.autoTable(autoTableParams);
-
-                       if (options && options.documentProcessing) {
-                               options.documentProcessing(doc);
-                       }
-
-                       setFileContents(doc.output("arraybuffer"), "application/pdf");
-               },
-
-               xlsx: function xlsx(list, options, setFileContents) {
-                       var self = this,
-                           sheetName = options.sheetName || "Sheet1",
-                           workbook = XLSX.utils.book_new(),
-                           output;
-
-                       workbook.SheetNames = [];
-                       workbook.Sheets = {};
-
-                       function generateSheet() {
-                               var rows = [],
-                                   merges = [],
-                                   worksheet = {},
-                                   range = { s: { c: 0, r: 0 }, e: { c: list[0] ? list[0].columns.reduce(function (a, b) {
-                                                       return a + (b && b.width ? b.width : 1);
-                                               }, 0) : 0, r: list.length } };
-
-                               //parse row list
-                               list.forEach(function (row, i) {
-                                       var rowData = [];
-
-                                       row.columns.forEach(function (col, j) {
-
-                                               if (col) {
-                                                       rowData.push(!(col.value instanceof Date) && _typeof(col.value) === "object" ? JSON.stringify(col.value) : col.value);
-
-                                                       if (col.width > 1 || col.height > -1) {
-                                                               merges.push({ s: { r: i, c: j }, e: { r: i + col.height - 1, c: j + col.width - 1 } });
-                                                       }
-                                               } else {
-                                                       rowData.push("");
-                                               }
-                                       });
-
-                                       rows.push(rowData);
-                               });
-
-                               //convert rows to worksheet
-                               XLSX.utils.sheet_add_aoa(worksheet, rows);
-
-                               worksheet['!ref'] = XLSX.utils.encode_range(range);
-
-                               if (merges.length) {
-                                       worksheet["!merges"] = merges;
-                               }
-
-                               return worksheet;
-                       }
-
-                       if (options.sheetOnly) {
-                               setFileContents(generateSheet());
-                               return;
-                       }
-
-                       if (options.sheets) {
-                               for (var sheet in options.sheets) {
-
-                                       if (options.sheets[sheet] === true) {
-                                               workbook.SheetNames.push(sheet);
-                                               workbook.Sheets[sheet] = generateSheet();
-                                       } else {
-
-                                               workbook.SheetNames.push(sheet);
-
-                                               this.table.modules.comms.send(options.sheets[sheet], "download", "intercept", {
-                                                       type: "xlsx",
-                                                       options: { sheetOnly: true },
-                                                       active: self.active,
-                                                       intercept: function intercept(data) {
-                                                               workbook.Sheets[sheet] = data;
-                                                       }
-                                               });
-                                       }
-                               }
-                       } else {
-                               workbook.SheetNames.push(sheetName);
-                               workbook.Sheets[sheetName] = generateSheet();
-                       }
-
-                       if (options.documentProcessing) {
-                               workbook = options.documentProcessing(workbook);
-                       }
-
-                       //convert workbook to binary array
-                       function s2ab(s) {
-                               var buf = new ArrayBuffer(s.length);
-                               var view = new Uint8Array(buf);
-                               for (var i = 0; i != s.length; ++i) {
-                                       view[i] = s.charCodeAt(i) & 0xFF;
-                               }return buf;
-                       }
-
-                       output = XLSX.write(workbook, { bookType: 'xlsx', bookSST: true, type: 'binary' });
-
-                       setFileContents(s2ab(output), "application/octet-stream");
-               },
-
-               html: function html(list, options, setFileContents) {
-                       if (this.modExists("export", true)) {
-                               setFileContents(this.modules.export.genereateHTMLTable(list), "text/html");
-                       }
-               }
-
-       };
-
-       Tabulator.prototype.registerModule("download", Download);
-
-       var Edit = function Edit(table) {
-               this.table = table; //hold Tabulator object
-               this.currentCell = false; //hold currently editing cell
-               this.mouseClick = false; //hold mousedown state to prevent click binding being overriden by editor opening
-               this.recursionBlock = false; //prevent focus recursion
-               this.invalidEdit = false;
-               this.editedCells = [];
-       };
-
-       //initialize column editor
-       Edit.prototype.initializeColumn = function (column) {
-               var self = this,
-                   config = {
-                       editor: false,
-                       blocked: false,
-                       check: column.definition.editable,
-                       params: column.definition.editorParams || {}
-               };
-
-               //set column editor
-               switch (_typeof(column.definition.editor)) {
-                       case "string":
-
-                               if (column.definition.editor === "tick") {
-                                       column.definition.editor = "tickCross";
-                                       console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor");
-                               }
-
-                               if (self.editors[column.definition.editor]) {
-                                       config.editor = self.editors[column.definition.editor];
-                               } else {
-                                       console.warn("Editor Error - No such editor found: ", column.definition.editor);
-                               }
-                               break;
-
-                       case "function":
-                               config.editor = column.definition.editor;
-                               break;
-
-                       case "boolean":
-
-                               if (column.definition.editor === true) {
-
-                                       if (typeof column.definition.formatter !== "function") {
-
-                                               if (column.definition.formatter === "tick") {
-                                                       column.definition.formatter = "tickCross";
-                                                       console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor");
-                                               }
-
-                                               if (self.editors[column.definition.formatter]) {
-                                                       config.editor = self.editors[column.definition.formatter];
-                                               } else {
-                                                       config.editor = self.editors["input"];
-                                               }
-                                       } else {
-                                               console.warn("Editor Error - Cannot auto lookup editor for a custom formatter: ", column.definition.formatter);
-                                       }
-                               }
-                               break;
-               }
-
-               if (config.editor) {
-                       column.modules.edit = config;
-               }
-       };
-
-       Edit.prototype.getCurrentCell = function () {
-               return this.currentCell ? this.currentCell.getComponent() : false;
-       };
-
-       Edit.prototype.clearEditor = function (cancel) {
-               var cell = this.currentCell,
-                   cellEl;
-
-               this.invalidEdit = false;
-
-               if (cell) {
-                       this.currentCell = false;
-
-                       cellEl = cell.getElement();
-
-                       if (cancel) {
-                               cell.validate();
-                       } else {
-                               cellEl.classList.remove("tabulator-validation-fail");
-                       }
-
-                       cellEl.classList.remove("tabulator-editing");
-                       while (cellEl.firstChild) {
-                               cellEl.removeChild(cellEl.firstChild);
-                       }cell.row.getElement().classList.remove("tabulator-row-editing");
-               }
-       };
-
-       Edit.prototype.cancelEdit = function () {
-
-               if (this.currentCell) {
-                       var cell = this.currentCell;
-                       var component = this.currentCell.getComponent();
-
-                       this.clearEditor(true);
-                       cell.setValueActual(cell.getValue());
-                       cell.cellRendered();
-
-                       if (cell.column.cellEvents.cellEditCancelled) {
-                               cell.column.cellEvents.cellEditCancelled.call(this.table, component);
-                       }
-
-                       this.table.options.cellEditCancelled.call(this.table, component);
-               }
-       };
-
-       //return a formatted value for a cell
-       Edit.prototype.bindEditor = function (cell) {
-               var self = this,
-                   element = cell.getElement();
-
-               element.setAttribute("tabindex", 0);
-
-               element.addEventListener("click", function (e) {
-                       if (!element.classList.contains("tabulator-editing")) {
-                               element.focus({ preventScroll: true });
-                       }
-               });
-
-               element.addEventListener("mousedown", function (e) {
-                       self.mouseClick = true;
-               });
-
-               element.addEventListener("focus", function (e) {
-                       if (!self.recursionBlock) {
-                               self.edit(cell, e, false);
-                       }
-               });
-       };
-
-       Edit.prototype.focusCellNoEvent = function (cell, block) {
-               this.recursionBlock = true;
-               if (!(block && this.table.browser === "ie")) {
-                       cell.getElement().focus({ preventScroll: true });
-               }
-               this.recursionBlock = false;
-       };
-
-       Edit.prototype.editCell = function (cell, forceEdit) {
-               this.focusCellNoEvent(cell);
-               this.edit(cell, false, forceEdit);
-       };
-
-       Edit.prototype.focusScrollAdjust = function (cell) {
-               if (this.table.rowManager.getRenderMode() == "virtual") {
-                       var topEdge = this.table.rowManager.element.scrollTop,
-                           bottomEdge = this.table.rowManager.element.clientHeight + this.table.rowManager.element.scrollTop,
-                           rowEl = cell.row.getElement(),
-                           offset = rowEl.offsetTop;
-
-                       if (rowEl.offsetTop < topEdge) {
-                               this.table.rowManager.element.scrollTop -= topEdge - rowEl.offsetTop;
-                       } else {
-                               if (rowEl.offsetTop + rowEl.offsetHeight > bottomEdge) {
-                                       this.table.rowManager.element.scrollTop += rowEl.offsetTop + rowEl.offsetHeight - bottomEdge;
-                               }
-                       }
-               }
-       };
-
-       Edit.prototype.edit = function (cell, e, forceEdit) {
-               var self = this,
-                   allowEdit = true,
-                   rendered = function rendered() {},
-                   element = cell.getElement(),
-                   cellEditor,
-                   component,
-                   params;
-
-               //prevent editing if another cell is refusing to leave focus (eg. validation fail)
-               if (this.currentCell) {
-                       if (!this.invalidEdit) {
-                               this.cancelEdit();
-                       }
-                       return;
-               }
-
-               //handle successfull value change
-               function success(value) {
-                       if (self.currentCell === cell) {
-                               var valid = true;
-
-                               if (cell.column.modules.validate && self.table.modExists("validate") && self.table.options.validationMode != "manual") {
-                                       valid = self.table.modules.validate.validate(cell.column.modules.validate, cell, value);
-                               }
-
-                               if (valid === true || self.table.options.validationMode === "highlight") {
-                                       self.clearEditor();
-                                       cell.setValue(value, true);
-
-                                       if (!cell.modules.edit) {
-                                               cell.modules.edit = {};
-                                       }
-
-                                       cell.modules.edit.edited = true;
-
-                                       if (self.editedCells.indexOf(cell) == -1) {
-                                               self.editedCells.push(cell);
-                                       }
-
-                                       if (self.table.options.dataTree && self.table.modExists("dataTree")) {
-                                               self.table.modules.dataTree.checkForRestyle(cell);
-                                       }
-
-                                       if (valid !== true) {
-                                               element.classList.add("tabulator-validation-fail");
-                                               return false;
-                                       }
-
-                                       return true;
-                               } else {
-                                       self.invalidEdit = true;
-                                       element.classList.add("tabulator-validation-fail");
-                                       self.focusCellNoEvent(cell, true);
-                                       rendered();
-                                       self.table.options.validationFailed.call(self.table, cell.getComponent(), value, valid);
-
-                                       return false;
-                               }
-                       } else {
-                               // console.warn("Edit Success Error - cannot call success on a cell that is no longer being edited");
-                       }
-               }
-
-               //handle aborted edit
-               function cancel() {
-                       if (self.currentCell === cell) {
-                               self.cancelEdit();
-
-                               if (self.table.options.dataTree && self.table.modExists("dataTree")) {
-                                       self.table.modules.dataTree.checkForRestyle(cell);
-                               }
-                       } else {
-                               // console.warn("Edit Success Error - cannot call cancel on a cell that is no longer being edited");
-                       }
-               }
-
-               function onRendered(callback) {
-                       rendered = callback;
-               }
-
-               if (!cell.column.modules.edit.blocked) {
-                       if (e) {
-                               e.stopPropagation();
-                       }
-
-                       switch (_typeof(cell.column.modules.edit.check)) {
-                               case "function":
-                                       allowEdit = cell.column.modules.edit.check(cell.getComponent());
-                                       break;
-
-                               case "boolean":
-                                       allowEdit = cell.column.modules.edit.check;
-                                       break;
-                       }
-
-                       if (allowEdit || forceEdit) {
-
-                               self.cancelEdit();
-
-                               self.currentCell = cell;
-
-                               this.focusScrollAdjust(cell);
-
-                               component = cell.getComponent();
-
-                               if (this.mouseClick) {
-                                       this.mouseClick = false;
-
-                                       if (cell.column.cellEvents.cellClick) {
-                                               cell.column.cellEvents.cellClick.call(this.table, e, component);
-                                       }
-                               }
-
-                               if (cell.column.cellEvents.cellEditing) {
-                                       cell.column.cellEvents.cellEditing.call(this.table, component);
-                               }
-
-                               self.table.options.cellEditing.call(this.table, component);
-
-                               params = typeof cell.column.modules.edit.params === "function" ? cell.column.modules.edit.params(component) : cell.column.modules.edit.params;
-
-                               cellEditor = cell.column.modules.edit.editor.call(self, component, onRendered, success, cancel, params);
-
-                               //if editor returned, add to DOM, if false, abort edit
-                               if (cellEditor !== false) {
-
-                                       if (cellEditor instanceof Node) {
-                                               element.classList.add("tabulator-editing");
-                                               cell.row.getElement().classList.add("tabulator-row-editing");
-                                               while (element.firstChild) {
-                                                       element.removeChild(element.firstChild);
-                                               }element.appendChild(cellEditor);
-
-                                               //trigger onRendered Callback
-                                               rendered();
-
-                                               //prevent editing from triggering rowClick event
-                                               var children = element.children;
-
-                                               for (var i = 0; i < children.length; i++) {
-                                                       children[i].addEventListener("click", function (e) {
-                                                               e.stopPropagation();
-                                                       });
-                                               }
-                                       } else {
-                                               console.warn("Edit Error - Editor should return an instance of Node, the editor returned:", cellEditor);
-                                               element.blur();
-                                               return false;
-                                       }
-                               } else {
-                                       element.blur();
-                                       return false;
-                               }
-
-                               return true;
-                       } else {
-                               this.mouseClick = false;
-                               element.blur();
-                               return false;
-                       }
-               } else {
-                       this.mouseClick = false;
-                       element.blur();
-                       return false;
-               }
-       };
-
-       Edit.prototype.maskInput = function (el, options) {
-               var mask = options.mask,
-                   maskLetter = typeof options.maskLetterChar !== "undefined" ? options.maskLetterChar : "A",
-                   maskNumber = typeof options.maskNumberChar !== "undefined" ? options.maskNumberChar : "9",
-                   maskWildcard = typeof options.maskWildcardChar !== "undefined" ? options.maskWildcardChar : "*",
-                   success = false;
-
-               function fillSymbols(index) {
-                       var symbol = mask[index];
-                       if (typeof symbol !== "undefined" && symbol !== maskWildcard && symbol !== maskLetter && symbol !== maskNumber) {
-                               el.value = el.value + "" + symbol;
-                               fillSymbols(index + 1);
-                       }
-               }
-
-               el.addEventListener("keydown", function (e) {
-                       var index = el.value.length,
-                           char = e.key;
-
-                       if (e.keyCode > 46) {
-                               if (index >= mask.length) {
-                                       e.preventDefault();
-                                       e.stopPropagation();
-                                       success = false;
-                                       return false;
-                               } else {
-                                       switch (mask[index]) {
-                                               case maskLetter:
-                                                       if (char.toUpperCase() == char.toLowerCase()) {
-                                                               e.preventDefault();
-                                                               e.stopPropagation();
-                                                               success = false;
-                                                               return false;
-                                                       }
-                                                       break;
-
-                                               case maskNumber:
-                                                       if (isNaN(char)) {
-                                                               e.preventDefault();
-                                                               e.stopPropagation();
-                                                               success = false;
-                                                               return false;
-                                                       }
-                                                       break;
-
-                                               case maskWildcard:
-                                                       break;
-
-                                               default:
-                                                       if (char !== mask[index]) {
-                                                               e.preventDefault();
-                                                               e.stopPropagation();
-                                                               success = false;
-                                                               return false;
-                                                       }
-                                       }
-                               }
-
-                               success = true;
-                       }
-
-                       return;
-               });
-
-               el.addEventListener("keyup", function (e) {
-                       if (e.keyCode > 46) {
-                               if (options.maskAutoFill) {
-                                       fillSymbols(el.value.length);
-                               }
-                       }
-               });
-
-               if (!el.placeholder) {
-                       el.placeholder = mask;
-               }
-
-               if (options.maskAutoFill) {
-                       fillSymbols(el.value.length);
-               }
-       };
-
-       Edit.prototype.getEditedCells = function () {
-               var output = [];
-
-               this.editedCells.forEach(function (cell) {
-                       output.push(cell.getComponent());
-               });
-
-               return output;
-       };
-
-       Edit.prototype.clearEdited = function (cell) {
-               var editIndex;
-
-               if (cell.modules.edit && cell.modules.edit.edited) {
-                       cell.modules.validate.invalid = false;
-
-                       editIndex = this.editedCells.indexOf(cell);
-
-                       if (editIndex > -1) {
-                               this.editedCells.splice(editIndex, 1);
-                       }
-               }
-       };
-
-       //default data editors
-       Edit.prototype.editors = {
-
-               //input element
-               input: function input(cell, onRendered, success, cancel, editorParams) {
-
-                       //create and style input
-                       var cellValue = cell.getValue(),
-                           input = document.createElement("input");
-
-                       input.setAttribute("type", editorParams.search ? "search" : "text");
-
-                       input.style.padding = "4px";
-                       input.style.width = "100%";
-                       input.style.boxSizing = "border-box";
-
-                       if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
-                               for (var key in editorParams.elementAttributes) {
-                                       if (key.charAt(0) == "+") {
-                                               key = key.slice(1);
-                                               input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
-                                       } else {
-                                               input.setAttribute(key, editorParams.elementAttributes[key]);
-                                       }
-                               }
-                       }
-
-                       input.value = typeof cellValue !== "undefined" ? cellValue : "";
-
-                       onRendered(function () {
-                               input.focus({ preventScroll: true });
-                               input.style.height = "100%";
-                       });
-
-                       function onChange(e) {
-                               if ((cellValue === null || typeof cellValue === "undefined") && input.value !== "" || input.value !== cellValue) {
-                                       if (success(input.value)) {
-                                               cellValue = input.value; //persist value if successfully validated incase editor is used as header filter
-                                       }
-                               } else {
-                                       cancel();
-                               }
-                       }
-
-                       //submit new value on blur or change
-                       input.addEventListener("change", onChange);
-                       input.addEventListener("blur", onChange);
-
-                       //submit new value on enter
-                       input.addEventListener("keydown", function (e) {
-                               switch (e.keyCode) {
-                                       // case 9:
-                                       case 13:
-                                               onChange(e);
-                                               break;
-
-                                       case 27:
-                                               cancel();
-                                               break;
-                               }
-                       });
-
-                       if (editorParams.mask) {
-                               this.table.modules.edit.maskInput(input, editorParams);
-                       }
-
-                       return input;
-               },
-
-               //resizable text area element
-               textarea: function textarea(cell, onRendered, success, cancel, editorParams) {
-                       var self = this,
-                           cellValue = cell.getValue(),
-                           vertNav = editorParams.verticalNavigation || "hybrid",
-                           value = String(cellValue !== null && typeof cellValue !== "undefined" ? cellValue : ""),
-                           count = (value.match(/(?:\r\n|\r|\n)/g) || []).length + 1,
-                           input = document.createElement("textarea"),
-                           scrollHeight = 0;
-
-                       //create and style input
-                       input.style.display = "block";
-                       input.style.padding = "2px";
-                       input.style.height = "100%";
-                       input.style.width = "100%";
-                       input.style.boxSizing = "border-box";
-                       input.style.whiteSpace = "pre-wrap";
-                       input.style.resize = "none";
-
-                       if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
-                               for (var key in editorParams.elementAttributes) {
-                                       if (key.charAt(0) == "+") {
-                                               key = key.slice(1);
-                                               input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
-                                       } else {
-                                               input.setAttribute(key, editorParams.elementAttributes[key]);
-                                       }
-                               }
-                       }
-
-                       input.value = value;
-
-                       onRendered(function () {
-                               input.focus({ preventScroll: true });
-                               input.style.height = "100%";
-                       });
-
-                       function onChange(e) {
-
-                               if ((cellValue === null || typeof cellValue === "undefined") && input.value !== "" || input.value !== cellValue) {
-
-                                       if (success(input.value)) {
-                                               cellValue = input.value; //persist value if successfully validated incase editor is used as header filter
-                                       }
-
-                                       setTimeout(function () {
-                                               cell.getRow().normalizeHeight();
-                                       }, 300);
-                               } else {
-                                       cancel();
-                               }
-                       }
-
-                       //submit new value on blur or change
-                       input.addEventListener("change", onChange);
-                       input.addEventListener("blur", onChange);
-
-                       input.addEventListener("keyup", function () {
-
-                               input.style.height = "";
-
-                               var heightNow = input.scrollHeight;
-
-                               input.style.height = heightNow + "px";
-
-                               if (heightNow != scrollHeight) {
-                                       scrollHeight = heightNow;
-                                       cell.getRow().normalizeHeight();
-                               }
-                       });
-
-                       input.addEventListener("keydown", function (e) {
-
-                               switch (e.keyCode) {
-                                       case 27:
-                                               cancel();
-                                               break;
-
-                                       case 38:
-                                               //up arrow
-                                               if (vertNav == "editor" || vertNav == "hybrid" && input.selectionStart) {
-                                                       e.stopImmediatePropagation();
-                                                       e.stopPropagation();
-                                               }
-
-                                               break;
-
-                                       case 40:
-                                               //down arrow
-                                               if (vertNav == "editor" || vertNav == "hybrid" && input.selectionStart !== input.value.length) {
-                                                       e.stopImmediatePropagation();
-                                                       e.stopPropagation();
-                                               }
-                                               break;
-                               }
-                       });
-
-                       if (editorParams.mask) {
-                               this.table.modules.edit.maskInput(input, editorParams);
-                       }
-
-                       return input;
-               },
-
-               //input element with type of number
-               number: function number(cell, onRendered, success, cancel, editorParams) {
-
-                       var cellValue = cell.getValue(),
-                           vertNav = editorParams.verticalNavigation || "editor",
-                           input = document.createElement("input");
-
-                       input.setAttribute("type", "number");
-
-                       if (typeof editorParams.max != "undefined") {
-                               input.setAttribute("max", editorParams.max);
-                       }
-
-                       if (typeof editorParams.min != "undefined") {
-                               input.setAttribute("min", editorParams.min);
-                       }
-
-                       if (typeof editorParams.step != "undefined") {
-                               input.setAttribute("step", editorParams.step);
-                       }
-
-                       //create and style input
-                       input.style.padding = "4px";
-                       input.style.width = "100%";
-                       input.style.boxSizing = "border-box";
-
-                       if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
-                               for (var key in editorParams.elementAttributes) {
-                                       if (key.charAt(0) == "+") {
-                                               key = key.slice(1);
-                                               input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
-                                       } else {
-                                               input.setAttribute(key, editorParams.elementAttributes[key]);
-                                       }
-                               }
-                       }
-
-                       input.value = cellValue;
-
-                       var blurFunc = function blurFunc(e) {
-                               onChange();
-                       };
-
-                       onRendered(function () {
-                               //submit new value on blur
-                               input.removeEventListener("blur", blurFunc);
-
-                               input.focus({ preventScroll: true });
-                               input.style.height = "100%";
-
-                               //submit new value on blur
-                               input.addEventListener("blur", blurFunc);
-                       });
-
-                       function onChange() {
-                               var value = input.value;
-
-                               if (!isNaN(value) && value !== "") {
-                                       value = Number(value);
-                               }
-
-                               if (value !== cellValue) {
-                                       if (success(value)) {
-                                               cellValue = value; //persist value if successfully validated incase editor is used as header filter
-                                       }
-                               } else {
-                                       cancel();
-                               }
-                       }
-
-                       //submit new value on enter
-                       input.addEventListener("keydown", function (e) {
-                               switch (e.keyCode) {
-                                       case 13:
-                                               // case 9:
-                                               onChange();
-                                               break;
-
-                                       case 27:
-                                               cancel();
-                                               break;
-
-                                       case 38: //up arrow
-                                       case 40:
-                                               //down arrow
-                                               if (vertNav == "editor") {
-                                                       e.stopImmediatePropagation();
-                                                       e.stopPropagation();
-                                               }
-                                               break;
-                               }
-                       });
-
-                       if (editorParams.mask) {
-                               this.table.modules.edit.maskInput(input, editorParams);
-                       }
-
-                       return input;
-               },
-
-               //input element with type of number
-               range: function range(cell, onRendered, success, cancel, editorParams) {
-
-                       var cellValue = cell.getValue(),
-                           input = document.createElement("input");
-
-                       input.setAttribute("type", "range");
-
-                       if (typeof editorParams.max != "undefined") {
-                               input.setAttribute("max", editorParams.max);
-                       }
-
-                       if (typeof editorParams.min != "undefined") {
-                               input.setAttribute("min", editorParams.min);
-                       }
-
-                       if (typeof editorParams.step != "undefined") {
-                               input.setAttribute("step", editorParams.step);
-                       }
-
-                       //create and style input
-                       input.style.padding = "4px";
-                       input.style.width = "100%";
-                       input.style.boxSizing = "border-box";
-
-                       if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
-                               for (var key in editorParams.elementAttributes) {
-                                       if (key.charAt(0) == "+") {
-                                               key = key.slice(1);
-                                               input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
-                                       } else {
-                                               input.setAttribute(key, editorParams.elementAttributes[key]);
-                                       }
-                               }
-                       }
-
-                       input.value = cellValue;
-
-                       onRendered(function () {
-                               input.focus({ preventScroll: true });
-                               input.style.height = "100%";
-                       });
-
-                       function onChange() {
-                               var value = input.value;
-
-                               if (!isNaN(value) && value !== "") {
-                                       value = Number(value);
-                               }
-
-                               if (value != cellValue) {
-                                       if (success(value)) {
-                                               cellValue = value; //persist value if successfully validated incase editor is used as header filter
-                                       }
-                               } else {
-                                       cancel();
-                               }
-                       }
-
-                       //submit new value on blur
-                       input.addEventListener("blur", function (e) {
-                               onChange();
-                       });
-
-                       //submit new value on enter
-                       input.addEventListener("keydown", function (e) {
-                               switch (e.keyCode) {
-                                       case 13:
-                                               // case 9:
-                                               onChange();
-                                               break;
-
-                                       case 27:
-                                               cancel();
-                                               break;
-                               }
-                       });
-
-                       return input;
-               },
-
-               //select
-               select: function select(cell, onRendered, success, cancel, editorParams) {
-                       var self = this,
-                           cellEl = cell.getElement(),
-                           initialValue = cell.getValue(),
-                           vertNav = editorParams.verticalNavigation || "editor",
-                           initialDisplayValue = typeof initialValue !== "undefined" || initialValue === null ? initialValue : typeof editorParams.defaultValue !== "undefined" ? editorParams.defaultValue : [],
-                           input = document.createElement("input"),
-                           listEl = document.createElement("div"),
-                           multiselect = editorParams.multiselect,
-                           dataItems = [],
-                           currentItem = {},
-                           displayItems = [],
-                           currentItems = [],
-                           blurable = true;
-
-                       this.table.rowManager.element.addEventListener("scroll", cancelItem);
-
-                       if (Array.isArray(editorParams) || !Array.isArray(editorParams) && (typeof editorParams === 'undefined' ? 'undefined' : _typeof(editorParams)) === "object" && !editorParams.values) {
-                               console.warn("DEPRECATION WARNING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object");
-                               editorParams = { values: editorParams };
-                       }
-
-                       function getUniqueColumnValues(field) {
-                               var output = {},
-                                   data = self.table.getData(),
-                                   column;
-
-                               if (field) {
-                                       column = self.table.columnManager.getColumnByField(field);
-                               } else {
-                                       column = cell.getColumn()._getSelf();
-                               }
-
-                               if (column) {
-                                       data.forEach(function (row) {
-                                               var val = column.getFieldValue(row);
-
-                                               if (val !== null && typeof val !== "undefined" && val !== "") {
-                                                       output[val] = true;
-                                               }
-                                       });
-
-                                       if (editorParams.sortValuesList) {
-                                               if (editorParams.sortValuesList == "asc") {
-                                                       output = Object.keys(output).sort();
-                                               } else {
-                                                       output = Object.keys(output).sort().reverse();
-                                               }
-                                       } else {
-                                               output = Object.keys(output);
-                                       }
-                               } else {
-                                       console.warn("unable to find matching column to create select lookup list:", field);
-                               }
-
-                               return output;
-                       }
-
-                       function parseItems(inputValues, curentValues) {
-                               var dataList = [];
-                               var displayList = [];
-
-                               function processComplexListItem(item) {
-                                       var item = {
-                                               label: item.label,
-                                               value: item.value,
-                                               itemParams: item.itemParams,
-                                               elementAttributes: item.elementAttributes,
-                                               element: false
-                                       };
-
-                                       // if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){
-                                       //      setCurrentItem(item);
-                                       // }
-
-                                       if (curentValues.indexOf(item.value) > -1) {
-                                               setItem(item);
-                                       }
-
-                                       dataList.push(item);
-                                       displayList.push(item);
-
-                                       return item;
-                               }
-
-                               if (typeof inputValues == "function") {
-                                       inputValues = inputValues(cell);
-                               }
-
-                               if (Array.isArray(inputValues)) {
-                                       inputValues.forEach(function (value) {
-                                               var item;
-
-                                               if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === "object") {
-
-                                                       if (value.options) {
-                                                               item = {
-                                                                       label: value.label,
-                                                                       group: true,
-                                                                       itemParams: value.itemParams,
-                                                                       elementAttributes: value.elementAttributes,
-                                                                       element: false
-                                                               };
-
-                                                               displayList.push(item);
-
-                                                               value.options.forEach(function (item) {
-                                                                       processComplexListItem(item);
-                                                               });
-                                                       } else {
-                                                               processComplexListItem(value);
-                                                       }
-                                               } else {
-
-                                                       item = {
-                                                               label: value,
-                                                               value: value,
-                                                               element: false
-                                                       };
-
-                                                       // if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){
-                                                       //      setCurrentItem(item);
-                                                       // }
-
-                                                       if (curentValues.indexOf(item.value) > -1) {
-                                                               setItem(item);
-                                                       }
-
-                                                       dataList.push(item);
-                                                       displayList.push(item);
-                                               }
-                                       });
-                               } else {
-                                       for (var key in inputValues) {
-                                               var item = {
-                                                       label: inputValues[key],
-                                                       value: key,
-                                                       element: false
-                                               };
-
-                                               // if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){
-                                               //      setCurrentItem(item);
-                                               // }
-
-                                               if (curentValues.indexOf(item.value) > -1) {
-                                                       setItem(item);
-                                               }
-
-                                               dataList.push(item);
-                                               displayList.push(item);
-                                       }
-                               }
-
-                               dataItems = dataList;
-                               displayItems = displayList;
-
-                               fillList();
-                       }
-
-                       function fillList() {
-                               while (listEl.firstChild) {
-                                       listEl.removeChild(listEl.firstChild);
-                               }displayItems.forEach(function (item) {
-
-                                       var el = item.element;
-
-                                       if (!el) {
-                                               el = document.createElement("div");
-                                               item.label = editorParams.listItemFormatter ? editorParams.listItemFormatter(item.value, item.label, cell, el, item.itemParams) : item.label;
-                                               if (item.group) {
-                                                       el.classList.add("tabulator-edit-select-list-group");
-                                                       el.tabIndex = 0;
-                                                       el.innerHTML = item.label === "" ? "&nbsp;" : item.label;
-                                               } else {
-                                                       el.classList.add("tabulator-edit-select-list-item");
-                                                       el.tabIndex = 0;
-                                                       el.innerHTML = item.label === "" ? "&nbsp;" : item.label;
-
-                                                       el.addEventListener("click", function () {
-                                                               // setCurrentItem(item);
-                                                               // chooseItem();
-                                                               if (multiselect) {
-                                                                       toggleItem(item);
-                                                                       input.focus();
-                                                               } else {
-                                                                       chooseItem(item);
-                                                               }
-                                                       });
-
-                                                       // if(item === currentItem){
-                                                       //      el.classList.add("active");
-                                                       // }
-
-                                                       if (currentItems.indexOf(item) > -1) {
-                                                               el.classList.add("active");
-                                                       }
-                                               }
-
-                                               if (item.elementAttributes && _typeof(item.elementAttributes) == "object") {
-                                                       for (var key in item.elementAttributes) {
-                                                               if (key.charAt(0) == "+") {
-                                                                       key = key.slice(1);
-                                                                       el.setAttribute(key, input.getAttribute(key) + item.elementAttributes["+" + key]);
-                                                               } else {
-                                                                       el.setAttribute(key, item.elementAttributes[key]);
-                                                               }
-                                                       }
-                                               }
-                                               el.addEventListener("mousedown", function () {
-                                                       blurable = false;
-
-                                                       setTimeout(function () {
-                                                               blurable = true;
-                                                       }, 10);
-                                               });
-
-                                               item.element = el;
-                                       }
-
-                                       listEl.appendChild(el);
-                               });
-                       }
-
-                       function setCurrentItem(item, active) {
-
-                               if (!multiselect && currentItem && currentItem.element) {
-                                       currentItem.element.classList.remove("active");
-                               }
-
-                               if (currentItem && currentItem.element) {
-                                       currentItem.element.classList.remove("focused");
-                               }
-
-                               currentItem = item;
-
-                               if (item.element) {
-                                       item.element.classList.add("focused");
-                                       if (active) {
-                                               item.element.classList.add("active");
-                                       }
-                               }
-                       }
-
-                       // function chooseItem(){
-                       //      hideList();
-
-                       //      if(initialValue !== currentItem.value){
-                       //              initialValue = currentItem.value;
-                       //              success(currentItem.value);
-                       //      }else{
-                       //              cancel();
-                       //      }
-                       // }
-
-                       function setItem(item) {
-                               var index = currentItems.indexOf(item);
-
-                               if (index == -1) {
-                                       currentItems.push(item);
-                                       setCurrentItem(item, true);
-                               }
-
-                               fillInput();
-                       }
-
-                       function unsetItem(index) {
-                               var item = currentItems[index];
-
-                               if (index > -1) {
-                                       currentItems.splice(index, 1);
-                                       if (item.element) {
-                                               item.element.classList.remove("active");
-                                       }
-                               }
-                       }
-
-                       function toggleItem(item) {
-                               if (!item) {
-                                       item = currentItem;
-                               }
-
-                               var index = currentItems.indexOf(item);
-
-                               if (index > -1) {
-                                       unsetItem(index);
-                               } else {
-                                       if (multiselect !== true && currentItems.length >= multiselect) {
-                                               unsetItem(0);
-                                       }
-
-                                       setItem(item);
-                               }
-
-                               fillInput();
-                       }
-
-                       function chooseItem(item) {
-                               hideList();
-
-                               if (!item) {
-                                       item = currentItem;
-                               }
-
-                               if (item) {
-                                       success(item.value);
-                               }
-                       }
-
-                       function chooseItems() {
-                               hideList();
-
-                               var output = [];
-
-                               currentItems.forEach(function (item) {
-                                       output.push(item.value);
-                               });
-
-                               success(output);
-                       }
-
-                       function fillInput() {
-                               var output = [];
-
-                               currentItems.forEach(function (item) {
-                                       output.push(item.label);
-                               });
-
-                               input.value = output.join(", ");
-                       }
-
-                       function cancelItem() {
-                               hideList();
-                               cancel();
-                       }
-
-                       function showList() {
-                               if (!listEl.parentNode) {
-
-                                       if (editorParams.values === true) {
-                                               parseItems(getUniqueColumnValues(), initialDisplayValue);
-                                       } else if (typeof editorParams.values === "string") {
-                                               parseItems(getUniqueColumnValues(editorParams.values), initialDisplayValue);
-                                       } else {
-                                               parseItems(editorParams.values || [], initialDisplayValue);
-                                       }
-
-                                       var offset = Tabulator.prototype.helpers.elOffset(cellEl);
-
-                                       listEl.style.minWidth = cellEl.offsetWidth + "px";
-
-                                       listEl.style.top = offset.top + cellEl.offsetHeight + "px";
-                                       listEl.style.left = offset.left + "px";
-
-                                       listEl.addEventListener("mousedown", function (e) {
-                                               blurable = false;
-
-                                               setTimeout(function () {
-                                                       blurable = true;
-                                               }, 10);
-                                       });
-
-                                       document.body.appendChild(listEl);
-                               }
-                       }
-
-                       function hideList() {
-                               if (listEl.parentNode) {
-                                       listEl.parentNode.removeChild(listEl);
-                               }
-
-                               removeScrollListener();
-                       }
-
-                       function removeScrollListener() {
-                               self.table.rowManager.element.removeEventListener("scroll", cancelItem);
-                       }
-
-                       //style input
-                       input.setAttribute("type", "text");
-
-                       input.style.padding = "4px";
-                       input.style.width = "100%";
-                       input.style.boxSizing = "border-box";
-                       input.style.cursor = "default";
-                       input.readOnly = this.currentCell != false;
-
-                       if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
-                               for (var key in editorParams.elementAttributes) {
-                                       if (key.charAt(0) == "+") {
-                                               key = key.slice(1);
-                                               input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
-                                       } else {
-                                               input.setAttribute(key, editorParams.elementAttributes[key]);
-                                       }
-                               }
-                       }
-
-                       input.value = typeof initialValue !== "undefined" || initialValue === null ? initialValue : "";
-
-                       // if(editorParams.values === true){
-                       //      parseItems(getUniqueColumnValues(), initialValue);
-                       // }else if(typeof editorParams.values === "string"){
-                       //      parseItems(getUniqueColumnValues(editorParams.values), initialValue);
-                       // }else{
-                       //      parseItems(editorParams.values || [], initialValue);
-                       // }
-
-                       //allow key based navigation
-                       input.addEventListener("keydown", function (e) {
-                               var index;
-
-                               switch (e.keyCode) {
-                                       case 38:
-                                               //up arrow
-                                               index = dataItems.indexOf(currentItem);
-
-                                               if (vertNav == "editor" || vertNav == "hybrid" && index) {
-                                                       e.stopImmediatePropagation();
-                                                       e.stopPropagation();
-                                                       e.preventDefault();
-
-                                                       if (index > 0) {
-                                                               setCurrentItem(dataItems[index - 1], !multiselect);
-                                                       }
-                                               }
-                                               break;
-
-                                       case 40:
-                                               //down arrow
-                                               index = dataItems.indexOf(currentItem);
-
-                                               if (vertNav == "editor" || vertNav == "hybrid" && index < dataItems.length - 1) {
-                                                       e.stopImmediatePropagation();
-                                                       e.stopPropagation();
-                                                       e.preventDefault();
-
-                                                       if (index < dataItems.length - 1) {
-                                                               if (index == -1) {
-                                                                       setCurrentItem(dataItems[0], !multiselect);
-                                                               } else {
-                                                                       setCurrentItem(dataItems[index + 1], !multiselect);
-                                                               }
-                                                       }
-                                               }
-                                               break;
-
-                                       case 37: //left arrow
-                                       case 39:
-                                               //right arrow
-                                               e.stopImmediatePropagation();
-                                               e.stopPropagation();
-                                               e.preventDefault();
-                                               break;
-
-                                       case 13:
-                                               //enter
-                                               // chooseItem();
-
-                                               if (multiselect) {
-                                                       toggleItem();
-                                               } else {
-                                                       chooseItem();
-                                               }
-
-                                               break;
-
-                                       case 27:
-                                               //escape
-                                               cancelItem();
-                                               break;
-                               }
-                       });
-
-                       input.addEventListener("blur", function (e) {
-                               if (blurable) {
-                                       if (multiselect) {
-                                               chooseItems();
-                                       } else {
-                                               cancelItem();
-                                       }
-                               }
-                       });
-
-                       input.addEventListener("focus", function (e) {
-                               showList();
-                       });
-
-                       //style list element
-                       listEl = document.createElement("div");
-                       listEl.classList.add("tabulator-edit-select-list");
-
-                       onRendered(function () {
-                               input.style.height = "100%";
-                               input.focus({ preventScroll: true });
-                       });
-
-                       return input;
-               },
-
-               //autocomplete
-               autocomplete: function autocomplete(cell, onRendered, success, cancel, editorParams) {
-                       var self = this,
-                           cellEl = cell.getElement(),
-                           initialValue = cell.getValue(),
-                           vertNav = editorParams.verticalNavigation || "editor",
-                           initialDisplayValue = typeof initialValue !== "undefined" || initialValue === null ? initialValue : typeof editorParams.defaultValue !== "undefined" ? editorParams.defaultValue : "",
-                           input = document.createElement("input"),
-                           listEl = document.createElement("div"),
-                           allItems = [],
-                           displayItems = [],
-                           values = [],
-                           currentItem = false,
-                           blurable = true,
-                           uniqueColumnValues = false;
-
-                       this.table.rowManager.element.addEventListener("scroll", cancelItem);
-
-                       //style input
-                       input.setAttribute("type", "search");
-
-                       input.style.padding = "4px";
-                       input.style.width = "100%";
-                       input.style.boxSizing = "border-box";
-
-                       if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
-                               for (var key in editorParams.elementAttributes) {
-                                       if (key.charAt(0) == "+") {
-                                               key = key.slice(1);
-                                               input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
-                                       } else {
-                                               input.setAttribute(key, editorParams.elementAttributes[key]);
-                                       }
-                               }
-                       }
-
-                       //style list element
-                       listEl.classList.add("tabulator-edit-select-list");
-
-                       listEl.addEventListener("mousedown", function (e) {
-                               blurable = false;
-
-                               setTimeout(function () {
-                                       blurable = true;
-                               }, 10);
-                       });
-
-                       function genUniqueColumnValues() {
-                               if (editorParams.values === true) {
-                                       uniqueColumnValues = getUniqueColumnValues();
-                               } else if (typeof editorParams.values === "string") {
-                                       uniqueColumnValues = getUniqueColumnValues(editorParams.values);
-                               }
-                       }
-
-                       function getUniqueColumnValues(field) {
-                               var output = {},
-                                   data = self.table.getData(),
-                                   column;
-
-                               if (field) {
-                                       column = self.table.columnManager.getColumnByField(field);
-                               } else {
-                                       column = cell.getColumn()._getSelf();
-                               }
-
-                               if (column) {
-                                       data.forEach(function (row) {
-                                               var val = column.getFieldValue(row);
-
-                                               if (val !== null && typeof val !== "undefined" && val !== "") {
-                                                       output[val] = true;
-                                               }
-                                       });
-
-                                       if (editorParams.sortValuesList) {
-                                               if (editorParams.sortValuesList == "asc") {
-                                                       output = Object.keys(output).sort();
-                                               } else {
-                                                       output = Object.keys(output).sort().reverse();
-                                               }
-                                       } else {
-                                               output = Object.keys(output);
-                                       }
-                               } else {
-                                       console.warn("unable to find matching column to create autocomplete lookup list:", field);
-                               }
-
-                               return output;
-                       }
-
-                       function filterList(term, intialLoad) {
-                               var matches = [],
-                                   values,
-                                   items,
-                                   searchEl;
-
-                               //lookup base values list
-                               if (uniqueColumnValues) {
-                                       values = uniqueColumnValues;
-                               } else {
-                                       values = editorParams.values || [];
-                               }
-
-                               if (editorParams.searchFunc) {
-                                       matches = editorParams.searchFunc(term, values);
-
-                                       if (matches instanceof Promise) {
-
-                                               addNotice(typeof editorParams.searchingPlaceholder !== "undefined" ? editorParams.searchingPlaceholder : "Searching...");
-
-                                               matches.then(function (result) {
-                                                       fillListIfNotEmpty(parseItems(result), intialLoad);
-                                               }).catch(function (err) {
-                                                       console.err("error in autocomplete search promise:", err);
-                                               });
-                                       } else {
-                                               fillListIfNotEmpty(parseItems(matches), intialLoad);
-                                       }
-                               } else {
-                                       items = parseItems(values);
-
-                                       if (term === "") {
-                                               if (editorParams.showListOnEmpty) {
-                                                       matches = items;
-                                               }
-                                       } else {
-                                               items.forEach(function (item) {
-                                                       if (item.value !== null || typeof item.value !== "undefined") {
-                                                               if (String(item.value).toLowerCase().indexOf(String(term).toLowerCase()) > -1 || String(item.title).toLowerCase().indexOf(String(term).toLowerCase()) > -1) {
-                                                                       matches.push(item);
-                                                               }
-                                                       }
-                                               });
-                                       }
-
-                                       fillListIfNotEmpty(matches, intialLoad);
-                               }
-                       }
-
-                       function addNotice(notice) {
-                               var searchEl = document.createElement("div");
-
-                               clearList();
-
-                               if (notice !== false) {
-                                       searchEl.classList.add("tabulator-edit-select-list-notice");
-                                       searchEl.tabIndex = 0;
-
-                                       if (notice instanceof Node) {
-                                               searchEl.appendChild(notice);
-                                       } else {
-                                               searchEl.innerHTML = notice;
-                                       }
-
-                                       listEl.appendChild(searchEl);
-                               }
-                       }
-
-                       function parseItems(inputValues) {
-                               var itemList = [];
-
-                               if (Array.isArray(inputValues)) {
-                                       inputValues.forEach(function (value) {
-
-                                               var item = {};
-
-                                               if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === "object") {
-                                                       item.title = editorParams.listItemFormatter ? editorParams.listItemFormatter(value.value, value.label) : value.label;
-                                                       item.value = value.value;
-                                               } else {
-                                                       item.title = editorParams.listItemFormatter ? editorParams.listItemFormatter(value, value) : value;
-                                                       item.value = value;
-                                               }
-
-                                               itemList.push(item);
-                                       });
-                               } else {
-                                       for (var key in inputValues) {
-                                               var item = {
-                                                       title: editorParams.listItemFormatter ? editorParams.listItemFormatter(key, inputValues[key]) : inputValues[key],
-                                                       value: key
-                                               };
-
-                                               itemList.push(item);
-                                       }
-                               }
-
-                               return itemList;
-                       }
-
-                       function clearList() {
-                               while (listEl.firstChild) {
-                                       listEl.removeChild(listEl.firstChild);
-                               }
-                       }
-
-                       function fillListIfNotEmpty(items, intialLoad) {
-                               if (items.length) {
-                                       fillList(items, intialLoad);
-                               } else {
-                                       if (editorParams.emptyPlaceholder) {
-                                               addNotice(editorParams.emptyPlaceholder);
-                                       }
-                               }
-                       }
-
-                       function fillList(items, intialLoad) {
-                               var current = false;
-
-                               clearList();
-
-                               displayItems = items;
-
-                               displayItems.forEach(function (item) {
-                                       var el = item.element;
-
-                                       if (!el) {
-                                               el = document.createElement("div");
-                                               el.classList.add("tabulator-edit-select-list-item");
-                                               el.tabIndex = 0;
-                                               el.innerHTML = item.title;
-
-                                               el.addEventListener("click", function (e) {
-                                                       setCurrentItem(item);
-                                                       chooseItem();
-                                               });
-
-                                               el.addEventListener("mousedown", function (e) {
-                                                       blurable = false;
-
-                                                       setTimeout(function () {
-                                                               blurable = true;
-                                                       }, 10);
-                                               });
-
-                                               item.element = el;
-
-                                               if (intialLoad && item.value == initialValue) {
-                                                       input.value = item.title;
-                                                       item.element.classList.add("active");
-                                                       current = true;
-                                               }
-
-                                               if (item === currentItem) {
-                                                       item.element.classList.add("active");
-                                                       current = true;
-                                               }
-                                       }
-
-                                       listEl.appendChild(el);
-                               });
-
-                               if (!current) {
-                                       setCurrentItem(false);
-                               }
-                       }
-
-                       function chooseItem() {
-                               hideList();
-
-                               if (currentItem) {
-                                       if (initialValue !== currentItem.value) {
-                                               initialValue = currentItem.value;
-                                               input.value = currentItem.title;
-                                               success(currentItem.value);
-                                       } else {
-                                               cancel();
-                                       }
-                               } else {
-                                       if (editorParams.freetext) {
-                                               initialValue = input.value;
-                                               success(input.value);
-                                       } else {
-                                               if (editorParams.allowEmpty && input.value === "") {
-                                                       initialValue = input.value;
-                                                       success(input.value);
-                                               } else {
-                                                       cancel();
-                                               }
-                                       }
-                               }
-                       }
-
-                       function showList() {
-                               if (!listEl.parentNode) {
-                                       while (listEl.firstChild) {
-                                               listEl.removeChild(listEl.firstChild);
-                                       }var offset = Tabulator.prototype.helpers.elOffset(cellEl);
-
-                                       listEl.style.minWidth = cellEl.offsetWidth + "px";
-
-                                       listEl.style.top = offset.top + cellEl.offsetHeight + "px";
-                                       listEl.style.left = offset.left + "px";
-                                       document.body.appendChild(listEl);
-                               }
-                       }
-
-                       function setCurrentItem(item, showInputValue) {
-                               if (currentItem && currentItem.element) {
-                                       currentItem.element.classList.remove("active");
-                               }
-
-                               currentItem = item;
-
-                               if (item && item.element) {
-                                       item.element.classList.add("active");
-                               }
-                       }
-
-                       function hideList() {
-                               if (listEl.parentNode) {
-                                       listEl.parentNode.removeChild(listEl);
-                               }
-
-                               removeScrollListener();
-                       }
-
-                       function cancelItem() {
-                               hideList();
-                               cancel();
-                       }
-
-                       function removeScrollListener() {
-                               self.table.rowManager.element.removeEventListener("scroll", cancelItem);
-                       }
-
-                       //allow key based navigation
-                       input.addEventListener("keydown", function (e) {
-                               var index;
-
-                               switch (e.keyCode) {
-                                       case 38:
-                                               //up arrow
-                                               index = displayItems.indexOf(currentItem);
-
-                                               if (vertNav == "editor" || vertNav == "hybrid" && index) {
-                                                       e.stopImmediatePropagation();
-                                                       e.stopPropagation();
-                                                       e.preventDefault();
-
-                                                       if (index > 0) {
-                                                               setCurrentItem(displayItems[index - 1]);
-                                                       } else {
-                                                               setCurrentItem(false);
-                                                       }
-                                               }
-                                               break;
-
-                                       case 40:
-                                               //down arrow
-
-                                               index = displayItems.indexOf(currentItem);
-
-                                               if (vertNav == "editor" || vertNav == "hybrid" && index < displayItems.length - 1) {
-
-                                                       e.stopImmediatePropagation();
-                                                       e.stopPropagation();
-                                                       e.preventDefault();
-
-                                                       if (index < displayItems.length - 1) {
-                                                               if (index == -1) {
-                                                                       setCurrentItem(displayItems[0]);
-                                                               } else {
-                                                                       setCurrentItem(displayItems[index + 1]);
-                                                               }
-                                                       }
-                                               }
-                                               break;
-
-                                       case 37: //left arrow
-                                       case 39:
-                                               //right arrow
-                                               e.stopImmediatePropagation();
-                                               e.stopPropagation();
-                                               // e.preventDefault();
-                                               break;
-
-                                       case 13:
-                                               //enter
-                                               chooseItem();
-                                               break;
-
-                                       case 27:
-                                               //escape
-                                               cancelItem();
-                                               break;
-
-                                       case 36: //home
-                                       case 35:
-                                               //end
-                                               //prevent table navigation while using input element
-                                               e.stopImmediatePropagation();
-                                               break;
-                               }
-                       });
-
-                       input.addEventListener("keyup", function (e) {
-
-                               switch (e.keyCode) {
-                                       case 38: //up arrow
-                                       case 37: //left arrow
-                                       case 39: //up arrow
-                                       case 40: //right arrow
-                                       case 13: //enter
-                                       case 27:
-                                               //escape
-                                               break;
-
-                                       default:
-                                               filterList(input.value);
-                               }
-                       });
-
-                       input.addEventListener("search", function (e) {
-                               filterList(input.value);
-                       });
-
-                       input.addEventListener("blur", function (e) {
-                               if (blurable) {
-                                       chooseItem();
-                               }
-                       });
-
-                       input.addEventListener("focus", function (e) {
-                               var value = initialDisplayValue;
-                               genUniqueColumnValues();
-                               showList();
-                               input.value = value;
-                               filterList(value, true);
-                       });
-
-                       onRendered(function () {
-                               input.style.height = "100%";
-                               input.focus({ preventScroll: true });
-                       });
-
-                       if (editorParams.mask) {
-                               this.table.modules.edit.maskInput(input, editorParams);
-                       }
-
-                       return input;
-               },
-
-               //star rating
-               star: function star(cell, onRendered, success, cancel, editorParams) {
-                       var self = this,
-                           element = cell.getElement(),
-                           value = cell.getValue(),
-                           maxStars = element.getElementsByTagName("svg").length || 5,
-                           size = element.getElementsByTagName("svg")[0] ? element.getElementsByTagName("svg")[0].getAttribute("width") : 14,
-                           stars = [],
-                           starsHolder = document.createElement("div"),
-                           star = document.createElementNS('http://www.w3.org/2000/svg', "svg");
-
-                       //change star type
-                       function starChange(val) {
-                               stars.forEach(function (star, i) {
-                                       if (i < val) {
-                                               if (self.table.browser == "ie") {
-                                                       star.setAttribute("class", "tabulator-star-active");
-                                               } else {
-                                                       star.classList.replace("tabulator-star-inactive", "tabulator-star-active");
-                                               }
-
-                                               star.innerHTML = '<polygon fill="#488CE9" stroke="#014AAE" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>';
-                                       } else {
-                                               if (self.table.browser == "ie") {
-                                                       star.setAttribute("class", "tabulator-star-inactive");
-                                               } else {
-                                                       star.classList.replace("tabulator-star-active", "tabulator-star-inactive");
-                                               }
-
-                                               star.innerHTML = '<polygon fill="#010155" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>';
-                                       }
-                               });
-                       }
-
-                       //build stars
-                       function buildStar(i) {
-
-                               var starHolder = document.createElement("span");
-                               var nextStar = star.cloneNode(true);
-
-                               stars.push(nextStar);
-
-                               starHolder.addEventListener("mouseenter", function (e) {
-                                       e.stopPropagation();
-                                       e.stopImmediatePropagation();
-                                       starChange(i);
-                               });
-
-                               starHolder.addEventListener("mousemove", function (e) {
-                                       e.stopPropagation();
-                                       e.stopImmediatePropagation();
-                               });
-
-                               starHolder.addEventListener("click", function (e) {
-                                       e.stopPropagation();
-                                       e.stopImmediatePropagation();
-                                       success(i);
-                                       element.blur();
-                               });
-
-                               starHolder.appendChild(nextStar);
-                               starsHolder.appendChild(starHolder);
-                       }
-
-                       //handle keyboard navigation value change
-                       function changeValue(val) {
-                               value = val;
-                               starChange(val);
-                       }
-
-                       //style cell
-                       element.style.whiteSpace = "nowrap";
-                       element.style.overflow = "hidden";
-                       element.style.textOverflow = "ellipsis";
-
-                       //style holding element
-                       starsHolder.style.verticalAlign = "middle";
-                       starsHolder.style.display = "inline-block";
-                       starsHolder.style.padding = "4px";
-
-                       //style star
-                       star.setAttribute("width", size);
-                       star.setAttribute("height", size);
-                       star.setAttribute("viewBox", "0 0 512 512");
-                       star.setAttribute("xml:space", "preserve");
-                       star.style.padding = "0 1px";
-
-                       if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
-                               for (var key in editorParams.elementAttributes) {
-                                       if (key.charAt(0) == "+") {
-                                               key = key.slice(1);
-                                               starsHolder.setAttribute(key, starsHolder.getAttribute(key) + editorParams.elementAttributes["+" + key]);
-                                       } else {
-                                               starsHolder.setAttribute(key, editorParams.elementAttributes[key]);
-                                       }
-                               }
-                       }
-
-                       //create correct number of stars
-                       for (var i = 1; i <= maxStars; i++) {
-                               buildStar(i);
-                       }
-
-                       //ensure value does not exceed number of stars
-                       value = Math.min(parseInt(value), maxStars);
-
-                       // set initial styling of stars
-                       starChange(value);
-
-                       starsHolder.addEventListener("mousemove", function (e) {
-                               starChange(0);
-                       });
-
-                       starsHolder.addEventListener("click", function (e) {
-                               success(0);
-                       });
-
-                       element.addEventListener("blur", function (e) {
-                               cancel();
-                       });
-
-                       //allow key based navigation
-                       element.addEventListener("keydown", function (e) {
-                               switch (e.keyCode) {
-                                       case 39:
-                                               //right arrow
-                                               changeValue(value + 1);
-                                               break;
-
-                                       case 37:
-                                               //left arrow
-                                               changeValue(value - 1);
-                                               break;
-
-                                       case 13:
-                                               //enter
-                                               success(value);
-                                               break;
-
-                                       case 27:
-                                               //escape
-                                               cancel();
-                                               break;
-                               }
-                       });
-
-                       return starsHolder;
-               },
-
-               //draggable progress bar
-               progress: function progress(cell, onRendered, success, cancel, editorParams) {
-                       var element = cell.getElement(),
-                           max = typeof editorParams.max === "undefined" ? element.getElementsByTagName("div")[0].getAttribute("max") || 100 : editorParams.max,
-                           min = typeof editorParams.min === "undefined" ? element.getElementsByTagName("div")[0].getAttribute("min") || 0 : editorParams.min,
-                           percent = (max - min) / 100,
-                           value = cell.getValue() || 0,
-                           handle = document.createElement("div"),
-                           bar = document.createElement("div"),
-                           mouseDrag,
-                           mouseDragWidth;
-
-                       //set new value
-                       function updateValue() {
-                               var calcVal = percent * Math.round(bar.offsetWidth / (element.clientWidth / 100)) + min;
-                               success(calcVal);
-                               element.setAttribute("aria-valuenow", calcVal);
-                               element.setAttribute("aria-label", value);
-                       }
-
-                       //style handle
-                       handle.style.position = "absolute";
-                       handle.style.right = "0";
-                       handle.style.top = "0";
-                       handle.style.bottom = "0";
-                       handle.style.width = "5px";
-                       handle.classList.add("tabulator-progress-handle");
-
-                       //style bar
-                       bar.style.display = "inline-block";
-                       bar.style.position = "relative";
-                       // bar.style.top = "8px";
-                       // bar.style.bottom = "8px";
-                       // bar.style.left = "4px";
-                       // bar.style.marginRight = "4px";
-                       bar.style.height = "100%";
-                       bar.style.backgroundColor = "#488CE9";
-                       bar.style.maxWidth = "100%";
-                       bar.style.minWidth = "0%";
-
-                       if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
-                               for (var key in editorParams.elementAttributes) {
-                                       if (key.charAt(0) == "+") {
-                                               key = key.slice(1);
-                                               bar.setAttribute(key, bar.getAttribute(key) + editorParams.elementAttributes["+" + key]);
-                                       } else {
-                                               bar.setAttribute(key, editorParams.elementAttributes[key]);
-                                       }
-                               }
-                       }
-
-                       //style cell
-                       element.style.padding = "4px 4px";
-
-                       //make sure value is in range
-                       value = Math.min(parseFloat(value), max);
-                       value = Math.max(parseFloat(value), min);
-
-                       //workout percentage
-                       value = Math.round((value - min) / percent);
-                       // bar.style.right = value + "%";
-                       bar.style.width = value + "%";
-
-                       element.setAttribute("aria-valuemin", min);
-                       element.setAttribute("aria-valuemax", max);
-
-                       bar.appendChild(handle);
-
-                       handle.addEventListener("mousedown", function (e) {
-                               mouseDrag = e.screenX;
-                               mouseDragWidth = bar.offsetWidth;
-                       });
-
-                       handle.addEventListener("mouseover", function () {
-                               handle.style.cursor = "ew-resize";
-                       });
-
-                       element.addEventListener("mousemove", function (e) {
-                               if (mouseDrag) {
-                                       bar.style.width = mouseDragWidth + e.screenX - mouseDrag + "px";
-                               }
-                       });
-
-                       element.addEventListener("mouseup", function (e) {
-                               if (mouseDrag) {
-                                       e.stopPropagation();
-                                       e.stopImmediatePropagation();
-
-                                       mouseDrag = false;
-                                       mouseDragWidth = false;
-
-                                       updateValue();
-                               }
-                       });
-
-                       //allow key based navigation
-                       element.addEventListener("keydown", function (e) {
-                               switch (e.keyCode) {
-                                       case 39:
-                                               //right arrow
-                                               e.preventDefault();
-                                               bar.style.width = bar.clientWidth + element.clientWidth / 100 + "px";
-                                               break;
-
-                                       case 37:
-                                               //left arrow
-                                               e.preventDefault();
-                                               bar.style.width = bar.clientWidth - element.clientWidth / 100 + "px";
-                                               break;
-
-                                       case 9: //tab
-                                       case 13:
-                                               //enter
-                                               updateValue();
-                                               break;
-
-                                       case 27:
-                                               //escape
-                                               cancel();
-                                               break;
-
-                               }
-                       });
-
-                       element.addEventListener("blur", function () {
-                               cancel();
-                       });
-
-                       return bar;
-               },
-
-               //checkbox
-               tickCross: function tickCross(cell, onRendered, success, cancel, editorParams) {
-                       var value = cell.getValue(),
-                           input = document.createElement("input"),
-                           tristate = editorParams.tristate,
-                           indetermValue = typeof editorParams.indeterminateValue === "undefined" ? null : editorParams.indeterminateValue,
-                           indetermState = false;
-
-                       input.setAttribute("type", "checkbox");
-                       input.style.marginTop = "5px";
-                       input.style.boxSizing = "border-box";
-
-                       if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
-                               for (var key in editorParams.elementAttributes) {
-                                       if (key.charAt(0) == "+") {
-                                               key = key.slice(1);
-                                               input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
-                                       } else {
-                                               input.setAttribute(key, editorParams.elementAttributes[key]);
-                                       }
-                               }
-                       }
-
-                       input.value = value;
-
-                       if (tristate && (typeof value === "undefined" || value === indetermValue || value === "")) {
-                               indetermState = true;
-                               input.indeterminate = true;
-                       }
-
-                       if (this.table.browser != "firefox") {
-                               //prevent blur issue on mac firefox
-                               onRendered(function () {
-                                       input.focus({ preventScroll: true });
-                               });
-                       }
-
-                       input.checked = value === true || value === "true" || value === "True" || value === 1;
-
-                       function setValue(blur) {
-                               if (tristate) {
-                                       if (!blur) {
-                                               if (input.checked && !indetermState) {
-                                                       input.checked = false;
-                                                       input.indeterminate = true;
-                                                       indetermState = true;
-                                                       return indetermValue;
-                                               } else {
-                                                       indetermState = false;
-                                                       return input.checked;
-                                               }
-                                       } else {
-                                               if (indetermState) {
-                                                       return indetermValue;
-                                               } else {
-                                                       return input.checked;
-                                               }
-                                       }
-                               } else {
-                                       return input.checked;
-                               }
-                       }
-
-                       //submit new value on blur
-                       input.addEventListener("change", function (e) {
-                               success(setValue());
-                       });
-
-                       input.addEventListener("blur", function (e) {
-                               success(setValue(true));
-                       });
-
-                       //submit new value on enter
-                       input.addEventListener("keydown", function (e) {
-                               if (e.keyCode == 13) {
-                                       success(setValue());
-                               }
-                               if (e.keyCode == 27) {
-                                       cancel();
-                               }
-                       });
-
-                       return input;
-               }
-       };
-
-       Tabulator.prototype.registerModule("edit", Edit);
-
-       var ExportRow = function ExportRow(type, columns, component, indent) {
-               this.type = type;
-               this.columns = columns;
-               this.component = component || false;
-               this.indent = indent || 0;
-       };
-
-       var ExportColumn = function ExportColumn(value, component, width, height, depth) {
-               this.value = value;
-               this.component = component || false;
-               this.width = width;
-               this.height = height;
-               this.depth = depth;
-       };
-
-       var Export = function Export(table) {
-               this.table = table; //hold Tabulator object
-               this.config = {};
-               this.cloneTableStyle = true;
-               this.colVisProp = "";
-       };
-
-       Export.prototype.generateExportList = function (config, style, range, colVisProp) {
-               this.cloneTableStyle = style;
-               this.config = config || {};
-               this.colVisProp = colVisProp;
-
-               var headers = this.config.columnHeaders !== false ? this.headersToExportRows(this.generateColumnGroupHeaders()) : [];
-               var body = this.bodyToExportRows(this.rowLookup(range));
-
-               return headers.concat(body);
-       };
-
-       Export.prototype.genereateTable = function (config, style, range, colVisProp) {
-               var list = this.generateExportList(config, style, range, colVisProp);
-
-               return this.genereateTableElement(list);
-       };
-
-       Export.prototype.rowLookup = function (range) {
-               var _this45 = this;
-
-               var rows = [];
-
-               if (typeof range == "function") {
-                       range.call(this.table).forEach(function (row) {
-                               row = _this45.table.rowManager.findRow(row);
-
-                               if (row) {
-                                       rows.push(row);
-                               }
-                       });
-               } else {
-                       switch (range) {
-                               case true:
-                               case "visible":
-                                       rows = this.table.rowManager.getVisibleRows(true);
-                                       break;
-
-                               case "all":
-                                       rows = this.table.rowManager.rows;
-                                       break;
-
-                               case "selected":
-                                       rows = this.table.modules.selectRow.selectedRows;
-                                       break;
-
-                               case "active":
-                               default:
-                                       rows = this.table.rowManager.getDisplayRows();
-                       }
-               }
-
-               return Object.assign([], rows);
-       };
-
-       Export.prototype.generateColumnGroupHeaders = function () {
-               var _this46 = this;
-
-               var output = [];
-
-               var columns = this.config.columnGroups !== false ? this.table.columnManager.columns : this.table.columnManager.columnsByIndex;
-
-               columns.forEach(function (column) {
-                       var colData = _this46.processColumnGroup(column);
-
-                       if (colData) {
-                               output.push(colData);
-                       }
-               });
-
-               return output;
-       };
-
-       Export.prototype.processColumnGroup = function (column) {
-               var _this47 = this;
-
-               var subGroups = column.columns,
-                   maxDepth = 0,
-                   title = column.definition["title" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))] || column.definition.title;
-
-               var groupData = {
-                       title: title,
-                       column: column,
-                       depth: 1
-               };
-
-               if (subGroups.length) {
-                       groupData.subGroups = [];
-                       groupData.width = 0;
-
-                       subGroups.forEach(function (subGroup) {
-                               var subGroupData = _this47.processColumnGroup(subGroup);
-
-                               if (subGroupData) {
-                                       groupData.width += subGroupData.width;
-                                       groupData.subGroups.push(subGroupData);
-
-                                       if (subGroupData.depth > maxDepth) {
-                                               maxDepth = subGroupData.depth;
-                                       }
-                               }
-                       });
-
-                       groupData.depth += maxDepth;
-
-                       if (!groupData.width) {
-                               return false;
-                       }
-               } else {
-                       if (this.columnVisCheck(column)) {
-                               groupData.width = 1;
-                       } else {
-                               return false;
-                       }
-               }
-
-               return groupData;
-       };
-
-       Export.prototype.columnVisCheck = function (column) {
-               return column.definition[this.colVisProp] !== false && (column.visible || !column.visible && column.definition[this.colVisProp]);
-       };
-
-       Export.prototype.headersToExportRows = function (columns) {
-               var headers = [],
-                   headerDepth = 0,
-                   exportRows = [];
-
-               function parseColumnGroup(column, level) {
-
-                       var depth = headerDepth - level;
-
-                       if (typeof headers[level] === "undefined") {
-                               headers[level] = [];
-                       }
-
-                       column.height = column.subGroups ? 1 : depth - column.depth + 1;
-
-                       headers[level].push(column);
-
-                       if (column.height > 1) {
-                               for (var _i6 = 1; _i6 < column.height; _i6++) {
-
-                                       if (typeof headers[level + _i6] === "undefined") {
-                                               headers[level + _i6] = [];
-                                       }
-
-                                       headers[level + _i6].push(false);
-                               }
-                       }
-
-                       if (column.width > 1) {
-                               for (var _i7 = 1; _i7 < column.width; _i7++) {
-                                       headers[level].push(false);
-                               }
-                       }
-
-                       if (column.subGroups) {
-                               column.subGroups.forEach(function (subGroup) {
-                                       parseColumnGroup(subGroup, level + 1);
-                               });
-                       }
-               }
-
-               //calculate maximum header debth
-               columns.forEach(function (column) {
-                       if (column.depth > headerDepth) {
-                               headerDepth = column.depth;
-                       }
-               });
-
-               columns.forEach(function (column) {
-                       parseColumnGroup(column, 0);
-               });
-
-               headers.forEach(function (header) {
-                       var columns = [];
-
-                       header.forEach(function (col) {
-                               if (col) {
-                                       columns.push(new ExportColumn(col.title, col.column.getComponent(), col.width, col.height, col.depth));
-                               } else {
-                                       columns.push(null);
-                               }
-                       });
-
-                       exportRows.push(new ExportRow("header", columns));
-               });
-
-               return exportRows;
-       };
-
-       Export.prototype.bodyToExportRows = function (rows) {
-               var _this48 = this;
-
-               var columns = [];
-               var exportRows = [];
-
-               this.table.columnManager.columnsByIndex.forEach(function (column) {
-                       if (_this48.columnVisCheck(column)) {
-                               columns.push(column.getComponent());
-                       }
-               });
-
-               if (this.config.columnCalcs !== false && this.table.modExists("columnCalcs")) {
-                       if (this.table.modules.columnCalcs.topInitialized) {
-                               rows.unshift(this.table.modules.columnCalcs.topRow);
-                       }
-
-                       if (this.table.modules.columnCalcs.botInitialized) {
-                               rows.push(this.table.modules.columnCalcs.botRow);
-                       }
-               }
-
-               rows = rows.filter(function (row) {
-                       switch (row.type) {
-                               case "group":
-                                       return _this48.config.rowGroups !== false;
-                                       break;
-
-                               case "calc":
-                                       return _this48.config.columnCalcs !== false;
-                                       break;
-
-                               case "row":
-                                       return !(_this48.table.options.dataTree && _this48.config.dataTree === false && row.modules.dataTree.parent);
-                                       break;
-                       }
-
-                       return true;
-               });
-
-               rows.forEach(function (row, i) {
-                       var rowData = row.getData(_this48.colVisProp);
-                       var exportCols = [];
-                       var indent = 0;
-
-                       switch (row.type) {
-                               case "group":
-                                       indent = row.level;
-                                       exportCols.push(new ExportColumn(row.key, row.getComponent(), columns.length, 1));
-                                       break;
-
-                               case "calc":
-                               case "row":
-                                       columns.forEach(function (col) {
-                                               exportCols.push(new ExportColumn(col._column.getFieldValue(rowData), col, 1, 1));
-                                       });
-
-                                       if (_this48.table.options.dataTree && _this48.config.dataTree !== false) {
-                                               indent = row.modules.dataTree.index;
-                                       }
-                                       break;
-                       }
-
-                       exportRows.push(new ExportRow(row.type, exportCols, row.getComponent(), indent));
-               });
-
-               return exportRows;
-       };
-
-       Export.prototype.genereateTableElement = function (list) {
-               var _this49 = this;
-
-               var table = document.createElement("table"),
-                   headerEl = document.createElement("thead"),
-                   bodyEl = document.createElement("tbody"),
-                   styles = this.lookupTableStyles(),
-                   rowFormatter = this.table.options["rowFormatter" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))],
-                   setup = {};
-
-               setup.rowFormatter = rowFormatter !== null ? rowFormatter : this.table.options.rowFormatter;
-
-               if (this.table.options.dataTree && this.config.dataTree !== false && this.table.modExists("columnCalcs")) {
-                       setup.treeElementField = this.table.modules.dataTree.elementField;
-               }
-
-               //assign group header formatter
-               setup.groupHeader = this.table.options["groupHeader" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))];
-
-               if (setup.groupHeader && !Array.isArray(setup.groupHeader)) {
-                       setup.groupHeader = [setup.groupHeader];
-               }
-
-               table.classList.add("tabulator-print-table");
-
-               this.mapElementStyles(this.table.columnManager.getHeadersElement(), headerEl, ["border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]);
-
-               if (list.length > 1000) {
-                       console.warn("It may take a long time to render an HTML table with more than 1000 rows");
-               }
-
-               list.forEach(function (row, i) {
-                       switch (row.type) {
-                               case "header":
-                                       headerEl.appendChild(_this49.genereateHeaderElement(row, setup, styles));
-                                       break;
-
-                               case "group":
-                                       bodyEl.appendChild(_this49.genereateGroupElement(row, setup, styles));
-                                       break;
-
-                               case "calc":
-                                       bodyEl.appendChild(_this49.genereateCalcElement(row, setup, styles));
-                                       break;
-
-                               case "row":
-                                       var rowEl = _this49.genereateRowElement(row, setup, styles);
-                                       _this49.mapElementStyles(i % 2 && styles.evenRow ? styles.evenRow : styles.oddRow, rowEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "background-color"]);
-                                       bodyEl.appendChild(rowEl);
-                                       break;
-                       }
-               });
-
-               if (headerEl.innerHTML) {
-                       table.appendChild(headerEl);
-               }
-
-               table.appendChild(bodyEl);
-
-               this.mapElementStyles(this.table.element, table, ["border-top", "border-left", "border-right", "border-bottom"]);
-               return table;
-       };
-
-       Export.prototype.lookupTableStyles = function () {
-               var styles = {};
-
-               //lookup row styles
-               if (this.cloneTableStyle && window.getComputedStyle) {
-                       styles.oddRow = this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)");
-                       styles.evenRow = this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)");
-                       styles.calcRow = this.table.element.querySelector(".tabulator-row.tabulator-calcs");
-                       styles.firstRow = this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)");
-                       styles.firstGroup = this.table.element.getElementsByClassName("tabulator-group")[0];
-
-                       if (styles.firstRow) {
-                               styles.styleCells = styles.firstRow.getElementsByClassName("tabulator-cell");
-                               styles.firstCell = styles.styleCells[0];
-                               styles.lastCell = styles.styleCells[styles.styleCells.length - 1];
-                       }
-               }
-
-               return styles;
-       };
-
-       Export.prototype.genereateHeaderElement = function (row, setup, styles) {
-               var _this50 = this;
-
-               var rowEl = document.createElement("tr");
-
-               row.columns.forEach(function (column) {
-                       if (column) {
-                               var cellEl = document.createElement("th");
-                               var classNames = column.component._column.definition.cssClass ? column.component._column.definition.cssClass.split(" ") : [];
-
-                               cellEl.colSpan = column.width;
-                               cellEl.rowSpan = column.height;
-
-                               cellEl.innerHTML = column.value;
-
-                               if (_this50.cloneTableStyle) {
-                                       cellEl.style.boxSizing = "border-box";
-                               }
-
-                               classNames.forEach(function (className) {
-                                       cellEl.classList.add(className);
-                               });
-
-                               _this50.mapElementStyles(column.component.getElement(), cellEl, ["text-align", "border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]);
-                               _this50.mapElementStyles(column.component._column.contentElement, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom"]);
-
-                               if (column.component._column.visible) {
-                                       _this50.mapElementStyles(column.component.getElement(), cellEl, ["width"]);
-                               } else {
-                                       if (column.component._column.definition.width) {
-                                               cellEl.style.width = column.component._column.definition.width + "px";
-                                       }
-                               }
-
-                               if (column.component._column.parent) {
-                                       _this50.mapElementStyles(column.component._column.parent.groupElement, cellEl, ["border-top"]);
-                               }
-
-                               rowEl.appendChild(cellEl);
-                       }
-               });
-
-               return rowEl;
-       };
-
-       Export.prototype.genereateGroupElement = function (row, setup, styles) {
-
-               var rowEl = document.createElement("tr"),
-                   cellEl = document.createElement("td"),
-                   group = row.columns[0];
-
-               rowEl.classList.add("tabulator-print-table-row");
-
-               if (setup.groupHeader && setup.groupHeader[row.indent]) {
-                       group.value = setup.groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);
-               } else {
-                       if (setup.groupHeader === false) {
-                               group.value = group.value;
-                       } else {
-                               group.value = row.component._group.generator(group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);
-                       }
-               }
-
-               cellEl.colSpan = group.width;
-               cellEl.innerHTML = group.value;
-
-               rowEl.classList.add("tabulator-print-table-group");
-               rowEl.classList.add("tabulator-group-level-" + row.indent);
-
-               if (group.component.getVisibility()) {
-                       rowEl.classList.add("tabulator-group-visible");
-               }
-
-               this.mapElementStyles(styles.firstGroup, rowEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "background-color"]);
-               this.mapElementStyles(styles.firstGroup, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom"]);
-
-               rowEl.appendChild(cellEl);
-
-               return rowEl;
-       };
-
-       Export.prototype.genereateCalcElement = function (row, setup, styles) {
-               var rowEl = this.genereateRowElement(row, setup, styles);
-
-               rowEl.classList.add("tabulator-print-table-calcs");
-               this.mapElementStyles(styles.calcRow, rowEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "background-color"]);
-
-               return rowEl;
-       };
-
-       Export.prototype.genereateRowElement = function (row, setup, styles) {
-               var _this51 = this;
-
-               var rowEl = document.createElement("tr");
-
-               rowEl.classList.add("tabulator-print-table-row");
-
-               row.columns.forEach(function (col) {
-
-                       if (col) {
-                               var cellEl = document.createElement("td"),
-                                   column = col.component._column,
-                                   value = col.value;
-
-                               var cellWrapper = {
-                                       modules: {},
-                                       getValue: function getValue() {
-                                               return value;
-                                       },
-                                       getField: function getField() {
-                                               return column.definition.field;
-                                       },
-                                       getElement: function getElement() {
-                                               return cellEl;
-                                       },
-                                       getColumn: function getColumn() {
-                                               return column.getComponent();
-                                       },
-                                       getData: function getData() {
-                                               return rowData;
-                                       },
-                                       getRow: function getRow() {
-                                               return row.getComponent();
-                                       },
-                                       getComponent: function getComponent() {
-                                               return cellWrapper;
-                                       },
-                                       column: column
-                               };
-
-                               var classNames = column.definition.cssClass ? column.definition.cssClass.split(" ") : [];
-
-                               classNames.forEach(function (className) {
-                                       cellEl.classList.add(className);
-                               });
-
-                               if (_this51.table.modExists("format") && _this51.config.formatCells !== false) {
-                                       value = _this51.table.modules.format.formatExportValue(cellWrapper, _this51.colVisProp);
-                               } else {
-                                       switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
-                                               case "object":
-                                                       value = JSON.stringify(value);
-                                                       break;
-
-                                               case "undefined":
-                                               case "null":
-                                                       value = "";
-                                                       break;
-
-                                               default:
-                                                       value = value;
-                                       }
-                               }
-
-                               if (value instanceof Node) {
-                                       cellEl.appendChild(value);
-                               } else {
-                                       cellEl.innerHTML = value;
-                               }
-
-                               if (styles.firstCell) {
-                                       _this51.mapElementStyles(styles.firstCell, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom", "border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size"]);
-
-                                       if (column.definition.align) {
-                                               cellEl.style.textAlign = column.definition.align;
-                                       }
-                               }
-
-                               if (_this51.table.options.dataTree && _this51.config.dataTree !== false) {
-                                       if (setup.treeElementField && setup.treeElementField == column.field || !setup.treeElementField && i == 0) {
-                                               if (row.component._row.modules.dataTree.controlEl) {
-                                                       cellEl.insertBefore(row.component._row.modules.dataTree.controlEl.cloneNode(true), cellEl.firstChild);
-                                               }
-                                               if (row.component._row.modules.dataTree.branchEl) {
-                                                       cellEl.insertBefore(row.component._row.modules.dataTree.branchEl.cloneNode(true), cellEl.firstChild);
-                                               }
-                                       }
-                               }
-
-                               rowEl.appendChild(cellEl);
-
-                               if (cellWrapper.modules.format && cellWrapper.modules.format.renderedCallback) {
-                                       cellWrapper.modules.format.renderedCallback();
-                               }
-
-                               if (setup.rowFormatter && _this51.config.formatCells !== false) {
-                                       var rowComponent = row.getComponent();
-
-                                       rowComponent.getElement = function () {
-                                               return rowEl;
-                                       };
-
-                                       setup.rowFormatter(rowComponent);
-                               }
-                       }
-               });
-
-               return rowEl;
-       };
-
-       Export.prototype.genereateHTMLTable = function (list) {
-               var holder = document.createElement("div");
-
-               holder.appendChild(this.genereateTableElement(list));
-
-               return holder.innerHTML;
-       };
-
-       Export.prototype.getHtml = function (visible, style, config, colVisProp) {
-               var list = this.generateExportList(config || this.table.options.htmlOutputConfig, style, visible, colVisProp || "htmlOutput");
-
-               return this.genereateHTMLTable(list);
-       };
-
-       Export.prototype.mapElementStyles = function (from, to, props) {
-               if (this.cloneTableStyle && from && to) {
-
-                       var lookup = {
-                               "background-color": "backgroundColor",
-                               "color": "fontColor",
-                               "width": "width",
-                               "font-weight": "fontWeight",
-                               "font-family": "fontFamily",
-                               "font-size": "fontSize",
-                               "text-align": "textAlign",
-                               "border-top": "borderTop",
-                               "border-left": "borderLeft",
-                               "border-right": "borderRight",
-                               "border-bottom": "borderBottom",
-                               "padding-top": "paddingTop",
-                               "padding-left": "paddingLeft",
-                               "padding-right": "paddingRight",
-                               "padding-bottom": "paddingBottom"
-                       };
-
-                       if (window.getComputedStyle) {
-                               var fromStyle = window.getComputedStyle(from);
-
-                               props.forEach(function (prop) {
-                                       to.style[lookup[prop]] = fromStyle.getPropertyValue(prop);
-                               });
-                       }
-               }
-       };
-
-       Tabulator.prototype.registerModule("export", Export);
-
-       var Filter = function Filter(table) {
-
-               this.table = table; //hold Tabulator object
-
-               this.filterList = []; //hold filter list
-               this.headerFilters = {}; //hold column filters
-               this.headerFilterColumns = []; //hold columns that use header filters
-
-               this.prevHeaderFilterChangeCheck = "";
-               this.prevHeaderFilterChangeCheck = "{}";
-
-               this.changed = false; //has filtering changed since last render
-       };
-
-       //initialize column header filter
-       Filter.prototype.initializeColumn = function (column, value) {
-               var self = this,
-                   field = column.getField(),
-                   params;
-
-               //handle successfull value change
-               function success(value) {
-                       var filterType = column.modules.filter.tagType == "input" && column.modules.filter.attrType == "text" || column.modules.filter.tagType == "textarea" ? "partial" : "match",
-                           type = "",
-                           filterChangeCheck = "",
-                           filterFunc;
-
-                       if (typeof column.modules.filter.prevSuccess === "undefined" || column.modules.filter.prevSuccess !== value) {
-
-                               column.modules.filter.prevSuccess = value;
-
-                               if (!column.modules.filter.emptyFunc(value)) {
-                                       column.modules.filter.value = value;
-
-                                       switch (_typeof(column.definition.headerFilterFunc)) {
-                                               case "string":
-                                                       if (self.filters[column.definition.headerFilterFunc]) {
-                                                               type = column.definition.headerFilterFunc;
-                                                               filterFunc = function filterFunc(data) {
-                                                                       var params = column.definition.headerFilterFuncParams || {};
-                                                                       var fieldVal = column.getFieldValue(data);
-
-                                                                       params = typeof params === "function" ? params(value, fieldVal, data) : params;
-
-                                                                       return self.filters[column.definition.headerFilterFunc](value, fieldVal, data, params);
-                                                               };
-                                                       } else {
-                                                               console.warn("Header Filter Error - Matching filter function not found: ", column.definition.headerFilterFunc);
-                                                       }
-                                                       break;
-
-                                               case "function":
-                                                       filterFunc = function filterFunc(data) {
-                                                               var params = column.definition.headerFilterFuncParams || {};
-                                                               var fieldVal = column.getFieldValue(data);
-
-                                                               params = typeof params === "function" ? params(value, fieldVal, data) : params;
-
-                                                               return column.definition.headerFilterFunc(value, fieldVal, data, params);
-                                                       };
-
-                                                       type = filterFunc;
-                                                       break;
-                                       }
-
-                                       if (!filterFunc) {
-                                               switch (filterType) {
-                                                       case "partial":
-                                                               filterFunc = function filterFunc(data) {
-                                                                       var colVal = column.getFieldValue(data);
-
-                                                                       if (typeof colVal !== 'undefined' && colVal !== null) {
-                                                                               return String(colVal).toLowerCase().indexOf(String(value).toLowerCase()) > -1;
-                                                                       } else {
-                                                                               return false;
-                                                                       }
-                                                               };
-                                                               type = "like";
-                                                               break;
-
-                                                       default:
-                                                               filterFunc = function filterFunc(data) {
-                                                                       return column.getFieldValue(data) == value;
-                                                               };
-                                                               type = "=";
-                                               }
-                                       }
-
-                                       self.headerFilters[field] = { value: value, func: filterFunc, type: type, params: params || {} };
-                               } else {
-                                       delete self.headerFilters[field];
-                               }
-
-                               filterChangeCheck = JSON.stringify(self.headerFilters);
-
-                               if (self.prevHeaderFilterChangeCheck !== filterChangeCheck) {
-                                       self.prevHeaderFilterChangeCheck = filterChangeCheck;
-
-                                       self.changed = true;
-                                       self.table.rowManager.filterRefresh();
-                               }
-                       }
-
-                       return true;
-               }
-
-               column.modules.filter = {
-                       success: success,
-                       attrType: false,
-                       tagType: false,
-                       emptyFunc: false
-               };
-
-               this.generateHeaderFilterElement(column);
-       };
-
-       Filter.prototype.generateHeaderFilterElement = function (column, initialValue, reinitialize) {
-               var _this52 = this;
-
-               var self = this,
-                   success = column.modules.filter.success,
-                   field = column.getField(),
-                   filterElement,
-                   editor,
-                   editorElement,
-                   cellWrapper,
-                   typingTimer,
-                   searchTrigger,
-                   params;
-
-               //handle aborted edit
-               function cancel() {}
-
-               if (column.modules.filter.headerElement && column.modules.filter.headerElement.parentNode) {
-                       column.contentElement.removeChild(column.modules.filter.headerElement.parentNode);
-               }
-
-               if (field) {
-
-                       //set empty value function
-                       column.modules.filter.emptyFunc = column.definition.headerFilterEmptyCheck || function (value) {
-                               return !value && value !== "0";
-                       };
-
-                       filterElement = document.createElement("div");
-                       filterElement.classList.add("tabulator-header-filter");
-
-                       //set column editor
-                       switch (_typeof(column.definition.headerFilter)) {
-                               case "string":
-                                       if (self.table.modules.edit.editors[column.definition.headerFilter]) {
-                                               editor = self.table.modules.edit.editors[column.definition.headerFilter];
-
-                                               if ((column.definition.headerFilter === "tick" || column.definition.headerFilter === "tickCross") && !column.definition.headerFilterEmptyCheck) {
-                                                       column.modules.filter.emptyFunc = function (value) {
-                                                               return value !== true && value !== false;
-                                                       };
-                                               }
-                                       } else {
-                                               console.warn("Filter Error - Cannot build header filter, No such editor found: ", column.definition.editor);
-                                       }
-                                       break;
-
-                               case "function":
-                                       editor = column.definition.headerFilter;
-                                       break;
-
-                               case "boolean":
-                                       if (column.modules.edit && column.modules.edit.editor) {
-                                               editor = column.modules.edit.editor;
-                                       } else {
-                                               if (column.definition.formatter && self.table.modules.edit.editors[column.definition.formatter]) {
-                                                       editor = self.table.modules.edit.editors[column.definition.formatter];
-
-                                                       if ((column.definition.formatter === "tick" || column.definition.formatter === "tickCross") && !column.definition.headerFilterEmptyCheck) {
-                                                               column.modules.filter.emptyFunc = function (value) {
-                                                                       return value !== true && value !== false;
-                                                               };
-                                                       }
-                                               } else {
-                                                       editor = self.table.modules.edit.editors["input"];
-                                               }
-                                       }
-                                       break;
-                       }
-
-                       if (editor) {
-
-                               cellWrapper = {
-                                       getValue: function getValue() {
-                                               return typeof initialValue !== "undefined" ? initialValue : "";
-                                       },
-                                       getField: function getField() {
-                                               return column.definition.field;
-                                       },
-                                       getElement: function getElement() {
-                                               return filterElement;
-                                       },
-                                       getColumn: function getColumn() {
-                                               return column.getComponent();
-                                       },
-                                       getRow: function getRow() {
-                                               return {
-                                                       normalizeHeight: function normalizeHeight() {}
-                                               };
-                                       }
-                               };
-
-                               params = column.definition.headerFilterParams || {};
-
-                               params = typeof params === "function" ? params.call(self.table) : params;
-
-                               editorElement = editor.call(this.table.modules.edit, cellWrapper, function () {}, success, cancel, params);
-
-                               if (!editorElement) {
-                                       console.warn("Filter Error - Cannot add filter to " + field + " column, editor returned a value of false");
-                                       return;
-                               }
-
-                               if (!(editorElement instanceof Node)) {
-                                       console.warn("Filter Error - Cannot add filter to " + field + " column, editor should return an instance of Node, the editor returned:", editorElement);
-                                       return;
-                               }
-
-                               //set Placeholder Text
-                               if (field) {
-                                       self.table.modules.localize.bind("headerFilters|columns|" + column.definition.field, function (value) {
-                                               editorElement.setAttribute("placeholder", typeof value !== "undefined" && value ? value : self.table.modules.localize.getText("headerFilters|default"));
-                                       });
-                               } else {
-                                       self.table.modules.localize.bind("headerFilters|default", function (value) {
-                                               editorElement.setAttribute("placeholder", typeof self.column.definition.headerFilterPlaceholder !== "undefined" && self.column.definition.headerFilterPlaceholder ? self.column.definition.headerFilterPlaceholder : value);
-                                       });
-                               }
-
-                               //focus on element on click
-                               editorElement.addEventListener("click", function (e) {
-                                       e.stopPropagation();
-                                       editorElement.focus();
-                               });
-
-                               editorElement.addEventListener("focus", function (e) {
-                                       var left = _this52.table.columnManager.element.scrollLeft;
-
-                                       if (left !== _this52.table.rowManager.element.scrollLeft) {
-                                               _this52.table.rowManager.scrollHorizontal(left);
-                                               _this52.table.columnManager.scrollHorizontal(left);
-                                       }
-                               });
-
-                               //live update filters as user types
-                               typingTimer = false;
-
-                               searchTrigger = function searchTrigger(e) {
-                                       if (typingTimer) {
-                                               clearTimeout(typingTimer);
-                                       }
-
-                                       typingTimer = setTimeout(function () {
-                                               success(editorElement.value);
-                                       }, self.table.options.headerFilterLiveFilterDelay);
-                               };
-
-                               column.modules.filter.headerElement = editorElement;
-                               column.modules.filter.attrType = editorElement.hasAttribute("type") ? editorElement.getAttribute("type").toLowerCase() : "";
-                               column.modules.filter.tagType = editorElement.tagName.toLowerCase();
-
-                               if (column.definition.headerFilterLiveFilter !== false) {
-
-                                       if (!(column.definition.headerFilter === 'autocomplete' || column.definition.headerFilter === 'tickCross' || (column.definition.editor === 'autocomplete' || column.definition.editor === 'tickCross') && column.definition.headerFilter === true)) {
-                                               editorElement.addEventListener("keyup", searchTrigger);
-                                               editorElement.addEventListener("search", searchTrigger);
-
-                                               //update number filtered columns on change
-                                               if (column.modules.filter.attrType == "number") {
-                                                       editorElement.addEventListener("change", function (e) {
-                                                               success(editorElement.value);
-                                                       });
-                                               }
-
-                                               //change text inputs to search inputs to allow for clearing of field
-                                               if (column.modules.filter.attrType == "text" && this.table.browser !== "ie") {
-                                                       editorElement.setAttribute("type", "search");
-                                                       // editorElement.off("change blur"); //prevent blur from triggering filter and preventing selection click
-                                               }
-                                       }
-
-                                       //prevent input and select elements from propegating click to column sorters etc
-                                       if (column.modules.filter.tagType == "input" || column.modules.filter.tagType == "select" || column.modules.filter.tagType == "textarea") {
-                                               editorElement.addEventListener("mousedown", function (e) {
-                                                       e.stopPropagation();
-                                               });
-                                       }
-                               }
-
-                               filterElement.appendChild(editorElement);
-
-                               column.contentElement.appendChild(filterElement);
-
-                               if (!reinitialize) {
-                                       self.headerFilterColumns.push(column);
-                               }
-                       }
-               } else {
-                       console.warn("Filter Error - Cannot add header filter, column has no field set:", column.definition.title);
-               }
-       };
-
-       //hide all header filter elements (used to ensure correct column widths in "fitData" layout mode)
-       Filter.prototype.hideHeaderFilterElements = function () {
-               this.headerFilterColumns.forEach(function (column) {
-                       if (column.modules.filter && column.modules.filter.headerElement) {
-                               column.modules.filter.headerElement.style.display = 'none';
-                       }
-               });
-       };
-
-       //show all header filter elements (used to ensure correct column widths in "fitData" layout mode)
-       Filter.prototype.showHeaderFilterElements = function () {
-               this.headerFilterColumns.forEach(function (column) {
-                       if (column.modules.filter && column.modules.filter.headerElement) {
-                               column.modules.filter.headerElement.style.display = '';
-                       }
-               });
-       };
-
-       //programatically set focus of header filter
-       Filter.prototype.setHeaderFilterFocus = function (column) {
-               if (column.modules.filter && column.modules.filter.headerElement) {
-                       column.modules.filter.headerElement.focus();
-               } else {
-                       console.warn("Column Filter Focus Error - No header filter set on column:", column.getField());
-               }
-       };
-
-       //programmatically get value of header filter
-       Filter.prototype.getHeaderFilterValue = function (column) {
-               if (column.modules.filter && column.modules.filter.headerElement) {
-                       return column.modules.filter.headerElement.value;
-               } else {
-                       console.warn("Column Filter Error - No header filter set on column:", column.getField());
-               }
-       };
-
-       //programatically set value of header filter
-       Filter.prototype.setHeaderFilterValue = function (column, value) {
-               if (column) {
-                       if (column.modules.filter && column.modules.filter.headerElement) {
-                               this.generateHeaderFilterElement(column, value, true);
-                               column.modules.filter.success(value);
-                       } else {
-                               console.warn("Column Filter Error - No header filter set on column:", column.getField());
-                       }
-               }
-       };
-
-       Filter.prototype.reloadHeaderFilter = function (column) {
-               if (column) {
-                       if (column.modules.filter && column.modules.filter.headerElement) {
-                               this.generateHeaderFilterElement(column, column.modules.filter.value, true);
-                       } else {
-                               console.warn("Column Filter Error - No header filter set on column:", column.getField());
-                       }
-               }
-       };
-
-       //check if the filters has changed since last use
-       Filter.prototype.hasChanged = function () {
-               var changed = this.changed;
-               this.changed = false;
-               return changed;
-       };
-
-       //set standard filters
-       Filter.prototype.setFilter = function (field, type, value, params) {
-               var self = this;
-
-               self.filterList = [];
-
-               if (!Array.isArray(field)) {
-                       field = [{ field: field, type: type, value: value, params: params }];
-               }
-
-               self.addFilter(field);
-       };
-
-       //add filter to array
-       Filter.prototype.addFilter = function (field, type, value, params) {
-               var self = this;
-
-               if (!Array.isArray(field)) {
-                       field = [{ field: field, type: type, value: value, params: params }];
-               }
-
-               field.forEach(function (filter) {
-
-                       filter = self.findFilter(filter);
-
-                       if (filter) {
-                               self.filterList.push(filter);
-
-                               self.changed = true;
-                       }
-               });
-
-               if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.filter) {
-                       this.table.modules.persistence.save("filter");
-               }
-       };
-
-       Filter.prototype.findFilter = function (filter) {
-               var self = this,
-                   column;
-
-               if (Array.isArray(filter)) {
-                       return this.findSubFilters(filter);
-               }
-
-               var filterFunc = false;
-
-               if (typeof filter.field == "function") {
-                       filterFunc = function filterFunc(data) {
-                               return filter.field(data, filter.type || {}); // pass params to custom filter function
-                       };
-               } else {
-
-                       if (self.filters[filter.type]) {
-
-                               column = self.table.columnManager.getColumnByField(filter.field);
-
-                               if (column) {
-                                       filterFunc = function filterFunc(data) {
-                                               return self.filters[filter.type](filter.value, column.getFieldValue(data), data, filter.params || {});
-                                       };
-                               } else {
-                                       filterFunc = function filterFunc(data) {
-                                               return self.filters[filter.type](filter.value, data[filter.field], data, filter.params || {});
-                                       };
-                               }
-                       } else {
-                               console.warn("Filter Error - No such filter type found, ignoring: ", filter.type);
-                       }
-               }
-
-               filter.func = filterFunc;
-
-               return filter.func ? filter : false;
-       };
-
-       Filter.prototype.findSubFilters = function (filters) {
-               var self = this,
-                   output = [];
-
-               filters.forEach(function (filter) {
-                       filter = self.findFilter(filter);
-
-                       if (filter) {
-                               output.push(filter);
-                       }
-               });
-
-               return output.length ? output : false;
-       };
-
-       //get all filters
-       Filter.prototype.getFilters = function (all, ajax) {
-               var output = [];
-
-               if (all) {
-                       output = this.getHeaderFilters();
-               }
-
-               if (ajax) {
-                       output.forEach(function (item) {
-                               if (typeof item.type == "function") {
-                                       item.type = "function";
-                               }
-                       });
-               }
-
-               output = output.concat(this.filtersToArray(this.filterList, ajax));
-
-               return output;
-       };
-
-       //filter to Object
-       Filter.prototype.filtersToArray = function (filterList, ajax) {
-               var _this53 = this;
-
-               var output = [];
-
-               filterList.forEach(function (filter) {
-                       var item;
-
-                       if (Array.isArray(filter)) {
-                               output.push(_this53.filtersToArray(filter, ajax));
-                       } else {
-                               item = { field: filter.field, type: filter.type, value: filter.value };
-
-                               if (ajax) {
-                                       if (typeof item.type == "function") {
-                                               item.type = "function";
-                                       }
-                               }
-
-                               output.push(item);
-                       }
-               });
-
-               return output;
-       };
-
-       //get all filters
-       Filter.prototype.getHeaderFilters = function () {
-               var self = this,
-                   output = [];
-
-               for (var key in this.headerFilters) {
-                       output.push({ field: key, type: this.headerFilters[key].type, value: this.headerFilters[key].value });
-               }
-
-               return output;
-       };
-
-       //remove filter from array
-       Filter.prototype.removeFilter = function (field, type, value) {
-               var self = this;
-
-               if (!Array.isArray(field)) {
-                       field = [{ field: field, type: type, value: value }];
-               }
-
-               field.forEach(function (filter) {
-                       var index = -1;
-
-                       if (_typeof(filter.field) == "object") {
-                               index = self.filterList.findIndex(function (element) {
-                                       return filter === element;
-                               });
-                       } else {
-                               index = self.filterList.findIndex(function (element) {
-                                       return filter.field === element.field && filter.type === element.type && filter.value === element.value;
-                               });
-                       }
-
-                       if (index > -1) {
-                               self.filterList.splice(index, 1);
-                               self.changed = true;
-                       } else {
-                               console.warn("Filter Error - No matching filter type found, ignoring: ", filter.type);
-                       }
-               });
-
-               if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.filter) {
-                       this.table.modules.persistence.save("filter");
-               }
-       };
-
-       //clear filters
-       Filter.prototype.clearFilter = function (all) {
-               this.filterList = [];
-
-               if (all) {
-                       this.clearHeaderFilter();
-               }
-
-               this.changed = true;
-
-               if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.filter) {
-                       this.table.modules.persistence.save("filter");
-               }
-       };
-
-       //clear header filters
-       Filter.prototype.clearHeaderFilter = function () {
-               var self = this;
-
-               this.headerFilters = {};
-               self.prevHeaderFilterChangeCheck = "{}";
-
-               this.headerFilterColumns.forEach(function (column) {
-                       column.modules.filter.value = null;
-                       column.modules.filter.prevSuccess = undefined;
-                       self.reloadHeaderFilter(column);
-               });
-
-               this.changed = true;
-       };
-
-       //search data and return matching rows
-       Filter.prototype.search = function (searchType, field, type, value) {
-               var self = this,
-                   activeRows = [],
-                   filterList = [];
-
-               if (!Array.isArray(field)) {
-                       field = [{ field: field, type: type, value: value }];
-               }
-
-               field.forEach(function (filter) {
-                       filter = self.findFilter(filter);
-
-                       if (filter) {
-                               filterList.push(filter);
-                       }
-               });
-
-               this.table.rowManager.rows.forEach(function (row) {
-                       var match = true;
-
-                       filterList.forEach(function (filter) {
-                               if (!self.filterRecurse(filter, row.getData())) {
-                                       match = false;
-                               }
-                       });
-
-                       if (match) {
-                               activeRows.push(searchType === "data" ? row.getData("data") : row.getComponent());
-                       }
-               });
-
-               return activeRows;
-       };
-
-       //filter row array
-       Filter.prototype.filter = function (rowList, filters) {
-               var self = this,
-                   activeRows = [],
-                   activeRowComponents = [];
-
-               if (self.table.options.dataFiltering) {
-                       self.table.options.dataFiltering.call(self.table, self.getFilters());
-               }
-
-               if (!self.table.options.ajaxFiltering && (self.filterList.length || Object.keys(self.headerFilters).length)) {
-
-                       rowList.forEach(function (row) {
-                               if (self.filterRow(row)) {
-                                       activeRows.push(row);
-                               }
-                       });
-               } else {
-                       activeRows = rowList.slice(0);
-               }
-
-               if (self.table.options.dataFiltered) {
-
-                       activeRows.forEach(function (row) {
-                               activeRowComponents.push(row.getComponent());
-                       });
-
-                       self.table.options.dataFiltered.call(self.table, self.getFilters(), activeRowComponents);
-               }
-
-               return activeRows;
-       };
-
-       //filter individual row
-       Filter.prototype.filterRow = function (row, filters) {
-               var self = this,
-                   match = true,
-                   data = row.getData();
-
-               self.filterList.forEach(function (filter) {
-                       if (!self.filterRecurse(filter, data)) {
-                               match = false;
-                       }
-               });
-
-               for (var field in self.headerFilters) {
-                       if (!self.headerFilters[field].func(data)) {
-                               match = false;
-                       }
-               }
-
-               return match;
-       };
-
-       Filter.prototype.filterRecurse = function (filter, data) {
-               var self = this,
-                   match = false;
-
-               if (Array.isArray(filter)) {
-                       filter.forEach(function (subFilter) {
-                               if (self.filterRecurse(subFilter, data)) {
-                                       match = true;
-                               }
-                       });
-               } else {
-                       match = filter.func(data);
-               }
-
-               return match;
-       };
-
-       //list of available filters
-       Filter.prototype.filters = {
-
-               //equal to
-               "=": function _(filterVal, rowVal, rowData, filterParams) {
-                       return rowVal == filterVal ? true : false;
-               },
-
-               //less than
-               "<": function _(filterVal, rowVal, rowData, filterParams) {
-                       return rowVal < filterVal ? true : false;
-               },
-
-               //less than or equal to
-               "<=": function _(filterVal, rowVal, rowData, filterParams) {
-                       return rowVal <= filterVal ? true : false;
-               },
-
-               //greater than
-               ">": function _(filterVal, rowVal, rowData, filterParams) {
-                       return rowVal > filterVal ? true : false;
-               },
-
-               //greater than or equal to
-               ">=": function _(filterVal, rowVal, rowData, filterParams) {
-                       return rowVal >= filterVal ? true : false;
-               },
-
-               //not equal to
-               "!=": function _(filterVal, rowVal, rowData, filterParams) {
-                       return rowVal != filterVal ? true : false;
-               },
-
-               "regex": function regex(filterVal, rowVal, rowData, filterParams) {
-
-                       if (typeof filterVal == "string") {
-                               filterVal = new RegExp(filterVal);
-                       }
-
-                       return filterVal.test(rowVal);
-               },
-
-               //contains the string
-               "like": function like(filterVal, rowVal, rowData, filterParams) {
-                       if (filterVal === null || typeof filterVal === "undefined") {
-                               return rowVal === filterVal ? true : false;
-                       } else {
-                               if (typeof rowVal !== 'undefined' && rowVal !== null) {
-                                       return String(rowVal).toLowerCase().indexOf(filterVal.toLowerCase()) > -1;
-                               } else {
-                                       return false;
-                               }
-                       }
-               },
-
-               //contains the keywords
-               "keywords": function keywords(filterVal, rowVal, rowData, filterParams) {
-                       var keywords = filterVal.toLowerCase().split(typeof filterParams.separator === "undefined" ? " " : filterParams.separator),
-                           value = String(rowVal === null || typeof rowVal === "undefined" ? "" : rowVal).toLowerCase(),
-                           matches = [];
-
-                       keywords.forEach(function (keyword) {
-                               if (value.includes(keyword)) {
-                                       matches.push(true);
-                               }
-                       });
-
-                       return filterParams.matchAll ? matches.length === keywords.length : !!matches.length;
-               },
-
-               //starts with the string
-               "starts": function starts(filterVal, rowVal, rowData, filterParams) {
-                       if (filterVal === null || typeof filterVal === "undefined") {
-                               return rowVal === filterVal ? true : false;
-                       } else {
-                               if (typeof rowVal !== 'undefined' && rowVal !== null) {
-                                       return String(rowVal).toLowerCase().startsWith(filterVal.toLowerCase());
-                               } else {
-                                       return false;
-                               }
-                       }
-               },
-
-               //ends with the string
-               "ends": function ends(filterVal, rowVal, rowData, filterParams) {
-                       if (filterVal === null || typeof filterVal === "undefined") {
-                               return rowVal === filterVal ? true : false;
-                       } else {
-                               if (typeof rowVal !== 'undefined' && rowVal !== null) {
-                                       return String(rowVal).toLowerCase().endsWith(filterVal.toLowerCase());
-                               } else {
-                                       return false;
-                               }
-                       }
-               },
-
-               //in array
-               "in": function _in(filterVal, rowVal, rowData, filterParams) {
-                       if (Array.isArray(filterVal)) {
-                               return filterVal.indexOf(rowVal) > -1;
-                       } else {
-                               console.warn("Filter Error - filter value is not an array:", filterVal);
-                               return false;
-                       }
-               }
-       };
-
-       Tabulator.prototype.registerModule("filter", Filter);
-
-       var Format = function Format(table) {
-               this.table = table; //hold Tabulator object
-       };
-
-       //initialize column formatter
-       Format.prototype.initializeColumn = function (column) {
-               column.modules.format = this.lookupFormatter(column, "");
-
-               if (typeof column.definition.formatterPrint !== "undefined") {
-                       column.modules.format.print = this.lookupFormatter(column, "Print");
-               }
-
-               if (typeof column.definition.formatterClipboard !== "undefined") {
-                       column.modules.format.clipboard = this.lookupFormatter(column, "Clipboard");
-               }
-
-               if (typeof column.definition.formatterHtmlOutput !== "undefined") {
-                       column.modules.format.htmlOutput = this.lookupFormatter(column, "HtmlOutput");
-               }
-       };
-
-       Format.prototype.lookupFormatter = function (column, type) {
-               var config = { params: column.definition["formatter" + type + "Params"] || {} },
-                   formatter = column.definition["formatter" + type];
-
-               //set column formatter
-               switch (typeof formatter === 'undefined' ? 'undefined' : _typeof(formatter)) {
-                       case "string":
-
-                               if (formatter === "tick") {
-                                       formatter = "tickCross";
-
-                                       if (typeof config.params.crossElement == "undefined") {
-                                               config.params.crossElement = false;
-                                       }
-
-                                       console.warn("DEPRECATION WARNING - the tick formatter has been deprecated, please use the tickCross formatter with the crossElement param set to false");
-                               }
-
-                               if (this.formatters[formatter]) {
-                                       config.formatter = this.formatters[formatter];
-                               } else {
-                                       console.warn("Formatter Error - No such formatter found: ", formatter);
-                                       config.formatter = this.formatters.plaintext;
-                               }
-                               break;
-
-                       case "function":
-                               config.formatter = formatter;
-                               break;
-
-                       default:
-                               config.formatter = this.formatters.plaintext;
-                               break;
-               }
-
-               return config;
-       };
-
-       Format.prototype.cellRendered = function (cell) {
-               if (cell.modules.format && cell.modules.format.renderedCallback) {
-                       cell.modules.format.renderedCallback();
-               }
-       };
-
-       //return a formatted value for a cell
-       Format.prototype.formatValue = function (cell) {
-               var component = cell.getComponent(),
-                   params = typeof cell.column.modules.format.params === "function" ? cell.column.modules.format.params(component) : cell.column.modules.format.params;
-
-               function onRendered(callback) {
-                       if (!cell.modules.format) {
-                               cell.modules.format = {};
-                       }
-
-                       cell.modules.format.renderedCallback = callback;
-               }
-
-               return cell.column.modules.format.formatter.call(this, component, params, onRendered);
-       };
-
-       Format.prototype.formatExportValue = function (cell, type) {
-               var formatter = cell.column.modules.format[type],
-                   params;
-
-               if (formatter) {
-                       var onRendered = function onRendered(callback) {
-                               if (!cell.modules.format) {
-                                       cell.modules.format = {};
-                               }
-
-                               cell.modules.format.renderedCallback = callback;
-                       };
-
-                       params = typeof formatter.params === "function" ? formatter.params(component) : formatter.params;
-
-                       return formatter.formatter.call(this, cell.getComponent(), params, onRendered);
-               } else {
-                       return this.formatValue(cell);
-               }
-       };
-
-       Format.prototype.sanitizeHTML = function (value) {
-               if (value) {
-                       var entityMap = {
-                               '&': '&amp;',
-                               '<': '&lt;',
-                               '>': '&gt;',
-                               '"': '&quot;',
-                               "'": '&#39;',
-                               '/': '&#x2F;',
-                               '`': '&#x60;',
-                               '=': '&#x3D;'
-                       };
-
-                       return String(value).replace(/[&<>"'`=\/]/g, function (s) {
-                               return entityMap[s];
-                       });
-               } else {
-                       return value;
-               }
-       };
-
-       Format.prototype.emptyToSpace = function (value) {
-               return value === null || typeof value === "undefined" || value === "" ? "&nbsp;" : value;
-       };
-
-       //get formatter for cell
-       Format.prototype.getFormatter = function (formatter) {
-               var formatter;
-
-               switch (typeof formatter === 'undefined' ? 'undefined' : _typeof(formatter)) {
-                       case "string":
-                               if (this.formatters[formatter]) {
-                                       formatter = this.formatters[formatter];
-                               } else {
-                                       console.warn("Formatter Error - No such formatter found: ", formatter);
-                                       formatter = this.formatters.plaintext;
-                               }
-                               break;
-
-                       case "function":
-                               formatter = formatter;
-                               break;
-
-                       default:
-                               formatter = this.formatters.plaintext;
-                               break;
-               }
-
-               return formatter;
-       };
-
-       //default data formatters
-       Format.prototype.formatters = {
-               //plain text value
-               plaintext: function plaintext(cell, formatterParams, onRendered) {
-                       return this.emptyToSpace(this.sanitizeHTML(cell.getValue()));
-               },
-
-               //html text value
-               html: function html(cell, formatterParams, onRendered) {
-                       return cell.getValue();
-               },
-
-               //multiline text area
-               textarea: function textarea(cell, formatterParams, onRendered) {
-                       cell.getElement().style.whiteSpace = "pre-wrap";
-                       return this.emptyToSpace(this.sanitizeHTML(cell.getValue()));
-               },
-
-               //currency formatting
-               money: function money(cell, formatterParams, onRendered) {
-                       var floatVal = parseFloat(cell.getValue()),
-                           number,
-                           integer,
-                           decimal,
-                           rgx;
-
-                       var decimalSym = formatterParams.decimal || ".";
-                       var thousandSym = formatterParams.thousand || ",";
-                       var symbol = formatterParams.symbol || "";
-                       var after = !!formatterParams.symbolAfter;
-                       var precision = typeof formatterParams.precision !== "undefined" ? formatterParams.precision : 2;
-
-                       if (isNaN(floatVal)) {
-                               return this.emptyToSpace(this.sanitizeHTML(cell.getValue()));
-                       }
-
-                       number = precision !== false ? floatVal.toFixed(precision) : floatVal;
-                       number = String(number).split(".");
-
-                       integer = number[0];
-                       decimal = number.length > 1 ? decimalSym + number[1] : "";
-
-                       rgx = /(\d+)(\d{3})/;
-
-                       while (rgx.test(integer)) {
-                               integer = integer.replace(rgx, "$1" + thousandSym + "$2");
-                       }
-
-                       return after ? integer + decimal + symbol : symbol + integer + decimal;
-               },
-
-               //clickable anchor tag
-               link: function link(cell, formatterParams, onRendered) {
-                       var value = cell.getValue(),
-                           urlPrefix = formatterParams.urlPrefix || "",
-                           download = formatterParams.download,
-                           label = value,
-                           el = document.createElement("a"),
-                           data;
-
-                       if (formatterParams.labelField) {
-                               data = cell.getData();
-                               label = data[formatterParams.labelField];
-                       }
-
-                       if (formatterParams.label) {
-                               switch (_typeof(formatterParams.label)) {
-                                       case "string":
-                                               label = formatterParams.label;
-                                               break;
-
-                                       case "function":
-                                               label = formatterParams.label(cell);
-                                               break;
-                               }
-                       }
-
-                       if (label) {
-                               if (formatterParams.urlField) {
-                                       data = cell.getData();
-                                       value = data[formatterParams.urlField];
-                               }
-
-                               if (formatterParams.url) {
-                                       switch (_typeof(formatterParams.url)) {
-                                               case "string":
-                                                       value = formatterParams.url;
-                                                       break;
-
-                                               case "function":
-                                                       value = formatterParams.url(cell);
-                                                       break;
-                                       }
-                               }
-
-                               el.setAttribute("href", urlPrefix + value);
-
-                               if (formatterParams.target) {
-                                       el.setAttribute("target", formatterParams.target);
-                               }
-
-                               if (formatterParams.download) {
-
-                                       if (typeof download == "function") {
-                                               download = download(cell);
-                                       } else {
-                                               download = download === true ? "" : download;
-                                       }
-
-                                       el.setAttribute("download", download);
-                               }
-
-                               el.innerHTML = this.emptyToSpace(this.sanitizeHTML(label));
-
-                               return el;
-                       } else {
-                               return "&nbsp;";
-                       }
-               },
-
-               //image element
-               image: function image(cell, formatterParams, onRendered) {
-                       var el = document.createElement("img");
-                       el.setAttribute("src", cell.getValue());
-
-                       switch (_typeof(formatterParams.height)) {
-                               case "number":
-                                       el.style.height = formatterParams.height + "px";
-                                       break;
-
-                               case "string":
-                                       el.style.height = formatterParams.height;
-                                       break;
-                       }
-
-                       switch (_typeof(formatterParams.width)) {
-                               case "number":
-                                       el.style.width = formatterParams.width + "px";
-                                       break;
-
-                               case "string":
-                                       el.style.width = formatterParams.width;
-                                       break;
-                       }
-
-                       el.addEventListener("load", function () {
-                               cell.getRow().normalizeHeight();
-                       });
-
-                       return el;
-               },
-
-               //tick or cross
-               tickCross: function tickCross(cell, formatterParams, onRendered) {
-                       var value = cell.getValue(),
-                           element = cell.getElement(),
-                           empty = formatterParams.allowEmpty,
-                           truthy = formatterParams.allowTruthy,
-                           tick = typeof formatterParams.tickElement !== "undefined" ? formatterParams.tickElement : '<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34  c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351  l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07  l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>',
-                           cross = typeof formatterParams.crossElement !== "undefined" ? formatterParams.crossElement : '<svg enable-background="new 0 0 24 24" height="14" width="14"  viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272  c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0  l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269  c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73  L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>';
-
-                       if (truthy && value || value === true || value === "true" || value === "True" || value === 1 || value === "1") {
-                               element.setAttribute("aria-checked", true);
-                               return tick || "";
-                       } else {
-                               if (empty && (value === "null" || value === "" || value === null || typeof value === "undefined")) {
-                                       element.setAttribute("aria-checked", "mixed");
-                                       return "";
-                               } else {
-                                       element.setAttribute("aria-checked", false);
-                                       return cross || "";
-                               }
-                       }
-               },
-
-               datetime: function datetime(cell, formatterParams, onRendered) {
-                       var inputFormat = formatterParams.inputFormat || "YYYY-MM-DD hh:mm:ss";
-                       var outputFormat = formatterParams.outputFormat || "DD/MM/YYYY hh:mm:ss";
-                       var invalid = typeof formatterParams.invalidPlaceholder !== "undefined" ? formatterParams.invalidPlaceholder : "";
-                       var value = cell.getValue();
-
-                       var newDatetime = moment(value, inputFormat);
-
-                       if (newDatetime.isValid()) {
-                               return formatterParams.timezone ? newDatetime.tz(formatterParams.timezone).format(outputFormat) : newDatetime.format(outputFormat);
-                       } else {
-
-                               if (invalid === true) {
-                                       return value;
-                               } else if (typeof invalid === "function") {
-                                       return invalid(value);
-                               } else {
-                                       return invalid;
-                               }
-                       }
-               },
-
-               datetimediff: function datetime(cell, formatterParams, onRendered) {
-                       var inputFormat = formatterParams.inputFormat || "YYYY-MM-DD hh:mm:ss";
-                       var invalid = typeof formatterParams.invalidPlaceholder !== "undefined" ? formatterParams.invalidPlaceholder : "";
-                       var suffix = typeof formatterParams.suffix !== "undefined" ? formatterParams.suffix : false;
-                       var unit = typeof formatterParams.unit !== "undefined" ? formatterParams.unit : undefined;
-                       var humanize = typeof formatterParams.humanize !== "undefined" ? formatterParams.humanize : false;
-                       var date = typeof formatterParams.date !== "undefined" ? formatterParams.date : moment();
-                       var value = cell.getValue();
-
-                       var newDatetime = moment(value, inputFormat);
-
-                       if (newDatetime.isValid()) {
-                               if (humanize) {
-                                       return moment.duration(newDatetime.diff(date)).humanize(suffix);
-                               } else {
-                                       return newDatetime.diff(date, unit) + (suffix ? " " + suffix : "");
-                               }
-                       } else {
-
-                               if (invalid === true) {
-                                       return value;
-                               } else if (typeof invalid === "function") {
-                                       return invalid(value);
-                               } else {
-                                       return invalid;
-                               }
-                       }
-               },
-
-               //select
-               lookup: function lookup(cell, formatterParams, onRendered) {
-                       var value = cell.getValue();
-
-                       if (typeof formatterParams[value] === "undefined") {
-                               console.warn('Missing display value for ' + value);
-                               return value;
-                       }
-
-                       return formatterParams[value];
-               },
-
-               //star rating
-               star: function star(cell, formatterParams, onRendered) {
-                       var value = cell.getValue(),
-                           element = cell.getElement(),
-                           maxStars = formatterParams && formatterParams.stars ? formatterParams.stars : 5,
-                           stars = document.createElement("span"),
-                           star = document.createElementNS('http://www.w3.org/2000/svg', "svg"),
-                           starActive = '<polygon fill="#FFEA00" stroke="#C1AB60" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>',
-                           starInactive = '<polygon fill="#D2D2D2" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>';
-
-                       //style stars holder
-                       stars.style.verticalAlign = "middle";
-
-                       //style star
-                       star.setAttribute("width", "14");
-                       star.setAttribute("height", "14");
-                       star.setAttribute("viewBox", "0 0 512 512");
-                       star.setAttribute("xml:space", "preserve");
-                       star.style.padding = "0 1px";
-
-                       value = value && !isNaN(value) ? parseInt(value) : 0;
-
-                       value = Math.max(0, Math.min(value, maxStars));
-
-                       for (var i = 1; i <= maxStars; i++) {
-                               var nextStar = star.cloneNode(true);
-                               nextStar.innerHTML = i <= value ? starActive : starInactive;
-
-                               stars.appendChild(nextStar);
-                       }
-
-                       element.style.whiteSpace = "nowrap";
-                       element.style.overflow = "hidden";
-                       element.style.textOverflow = "ellipsis";
-
-                       element.setAttribute("aria-label", value);
-
-                       return stars;
-               },
-
-               traffic: function traffic(cell, formatterParams, onRendered) {
-                       var value = this.sanitizeHTML(cell.getValue()) || 0,
-                           el = document.createElement("span"),
-                           max = formatterParams && formatterParams.max ? formatterParams.max : 100,
-                           min = formatterParams && formatterParams.min ? formatterParams.min : 0,
-                           colors = formatterParams && typeof formatterParams.color !== "undefined" ? formatterParams.color : ["red", "orange", "green"],
-                           color = "#666666",
-                           percent,
-                           percentValue;
-
-                       if (isNaN(value) || typeof cell.getValue() === "undefined") {
-                               return;
-                       }
-
-                       el.classList.add("tabulator-traffic-light");
-
-                       //make sure value is in range
-                       percentValue = parseFloat(value) <= max ? parseFloat(value) : max;
-                       percentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;
-
-                       //workout percentage
-                       percent = (max - min) / 100;
-                       percentValue = Math.round((percentValue - min) / percent);
-
-                       //set color
-                       switch (typeof colors === 'undefined' ? 'undefined' : _typeof(colors)) {
-                               case "string":
-                                       color = colors;
-                                       break;
-                               case "function":
-                                       color = colors(value);
-                                       break;
-                               case "object":
-                                       if (Array.isArray(colors)) {
-                                               var unit = 100 / colors.length;
-                                               var index = Math.floor(percentValue / unit);
-
-                                               index = Math.min(index, colors.length - 1);
-                                               index = Math.max(index, 0);
-                                               color = colors[index];
-                                               break;
-                                       }
-                       }
-
-                       el.style.backgroundColor = color;
-
-                       return el;
-               },
-
-               //progress bar
-               progress: function progress(cell, formatterParams, onRendered) {
-                       //progress bar
-                       var value = this.sanitizeHTML(cell.getValue()) || 0,
-                           element = cell.getElement(),
-                           max = formatterParams && formatterParams.max ? formatterParams.max : 100,
-                           min = formatterParams && formatterParams.min ? formatterParams.min : 0,
-                           legendAlign = formatterParams && formatterParams.legendAlign ? formatterParams.legendAlign : "center",
-                           percent,
-                           percentValue,
-                           color,
-                           legend,
-                           legendColor,
-                           top,
-                           left,
-                           right,
-                           bottom;
-
-                       //make sure value is in range
-                       percentValue = parseFloat(value) <= max ? parseFloat(value) : max;
-                       percentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;
-
-                       //workout percentage
-                       percent = (max - min) / 100;
-                       percentValue = Math.round((percentValue - min) / percent);
-
-                       //set bar color
-                       switch (_typeof(formatterParams.color)) {
-                               case "string":
-                                       color = formatterParams.color;
-                                       break;
-                               case "function":
-                                       color = formatterParams.color(value);
-                                       break;
-                               case "object":
-                                       if (Array.isArray(formatterParams.color)) {
-                                               var unit = 100 / formatterParams.color.length;
-                                               var index = Math.floor(percentValue / unit);
-
-                                               index = Math.min(index, formatterParams.color.length - 1);
-                                               index = Math.max(index, 0);
-                                               color = formatterParams.color[index];
-                                               break;
-                                       }
-                               default:
-                                       color = "#2DC214";
-                       }
-
-                       //generate legend
-                       switch (_typeof(formatterParams.legend)) {
-                               case "string":
-                                       legend = formatterParams.legend;
-                                       break;
-                               case "function":
-                                       legend = formatterParams.legend(value);
-                                       break;
-                               case "boolean":
-                                       legend = value;
-                                       break;
-                               default:
-                                       legend = false;
-                       }
-
-                       //set legend color
-                       switch (_typeof(formatterParams.legendColor)) {
-                               case "string":
-                                       legendColor = formatterParams.legendColor;
-                                       break;
-                               case "function":
-                                       legendColor = formatterParams.legendColor(value);
-                                       break;
-                               case "object":
-                                       if (Array.isArray(formatterParams.legendColor)) {
-                                               var unit = 100 / formatterParams.legendColor.length;
-                                               var index = Math.floor(percentValue / unit);
-
-                                               index = Math.min(index, formatterParams.legendColor.length - 1);
-                                               index = Math.max(index, 0);
-                                               legendColor = formatterParams.legendColor[index];
-                                       }
-                                       break;
-                               default:
-                                       legendColor = "#000";
-                       }
-
-                       element.style.minWidth = "30px";
-                       element.style.position = "relative";
-
-                       element.setAttribute("aria-label", percentValue);
-
-                       var barEl = document.createElement("div");
-                       barEl.style.display = "inline-block";
-                       barEl.style.position = "relative";
-                       barEl.style.width = percentValue + "%";
-                       barEl.style.backgroundColor = color;
-                       barEl.style.height = "100%";
-
-                       barEl.setAttribute('data-max', max);
-                       barEl.setAttribute('data-min', min);
-
-                       if (legend) {
-                               var legendEl = document.createElement("div");
-                               legendEl.style.position = "absolute";
-                               legendEl.style.top = "4px";
-                               legendEl.style.left = 0;
-                               legendEl.style.textAlign = legendAlign;
-                               legendEl.style.width = "100%";
-                               legendEl.style.color = legendColor;
-                               legendEl.innerHTML = legend;
-                       }
-
-                       onRendered(function () {
-
-                               //handle custom element needed if formatter is to be included in printed/downloaded output
-                               if (!(cell instanceof CellComponent)) {
-                                       var holderEl = document.createElement("div");
-                                       holderEl.style.position = "absolute";
-                                       holderEl.style.top = "4px";
-                                       holderEl.style.bottom = "4px";
-                                       holderEl.style.left = "4px";
-                                       holderEl.style.right = "4px";
-
-                                       element.appendChild(holderEl);
-
-                                       element = holderEl;
-                               }
-
-                               element.appendChild(barEl);
-
-                               if (legend) {
-                                       element.appendChild(legendEl);
-                               }
-                       });
-
-                       return "";
-               },
-
-               //background color
-               color: function color(cell, formatterParams, onRendered) {
-                       cell.getElement().style.backgroundColor = this.sanitizeHTML(cell.getValue());
-                       return "";
-               },
-
-               //tick icon
-               buttonTick: function buttonTick(cell, formatterParams, onRendered) {
-                       return '<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34  c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351  l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07  l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>';
-               },
-
-               //cross icon
-               buttonCross: function buttonCross(cell, formatterParams, onRendered) {
-                       return '<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272  c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0  l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269  c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73  L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>';
-               },
-
-               //current row number
-               rownum: function rownum(cell, formatterParams, onRendered) {
-                       return this.table.rowManager.activeRows.indexOf(cell.getRow()._getSelf()) + 1;
-               },
-
-               //row handle
-               handle: function handle(cell, formatterParams, onRendered) {
-                       cell.getElement().classList.add("tabulator-row-handle");
-                       return "<div class='tabulator-row-handle-box'><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div></div>";
-               },
-
-               responsiveCollapse: function responsiveCollapse(cell, formatterParams, onRendered) {
-                       var self = this,
-                           open = false,
-                           el = document.createElement("div"),
-                           config = cell.getRow()._row.modules.responsiveLayout;
-
-                       el.classList.add("tabulator-responsive-collapse-toggle");
-                       el.innerHTML = "<span class='tabulator-responsive-collapse-toggle-open'>+</span><span class='tabulator-responsive-collapse-toggle-close'>-</span>";
-
-                       cell.getElement().classList.add("tabulator-row-handle");
-
-                       function toggleList(isOpen) {
-                               var collapseEl = config.element;
-
-                               config.open = isOpen;
-
-                               if (collapseEl) {
-
-                                       if (config.open) {
-                                               el.classList.add("open");
-                                               collapseEl.style.display = '';
-                                       } else {
-                                               el.classList.remove("open");
-                                               collapseEl.style.display = 'none';
-                                       }
-                               }
-                       }
-
-                       el.addEventListener("click", function (e) {
-                               e.stopImmediatePropagation();
-                               toggleList(!config.open);
-                       });
-
-                       toggleList(config.open);
-
-                       return el;
-               },
-
-               rowSelection: function rowSelection(cell) {
-                       var _this54 = this;
-
-                       var checkbox = document.createElement("input");
-
-                       checkbox.type = 'checkbox';
-
-                       if (this.table.modExists("selectRow", true)) {
-
-                               checkbox.addEventListener("click", function (e) {
-                                       e.stopPropagation();
-                               });
-
-                               if (typeof cell.getRow == 'function') {
-                                       var row = cell.getRow();
-
-                                       checkbox.addEventListener("change", function (e) {
-                                               row.toggleSelect();
-                                       });
-
-                                       checkbox.checked = row.isSelected();
-                                       this.table.modules.selectRow.registerRowSelectCheckbox(row, checkbox);
-                               } else {
-                                       checkbox.addEventListener("change", function (e) {
-                                               if (_this54.table.modules.selectRow.selectedRows.length) {
-                                                       _this54.table.deselectRow();
-                                               } else {
-                                                       _this54.table.selectRow();
-                                               }
-                                       });
-
-                                       this.table.modules.selectRow.registerHeaderSelectCheckbox(checkbox);
-                               }
-                       }
-                       return checkbox;
-               }
-       };
-
-       Tabulator.prototype.registerModule("format", Format);
-
-       var FrozenColumns = function FrozenColumns(table) {
-               this.table = table; //hold Tabulator object
-               this.leftColumns = [];
-               this.rightColumns = [];
-               this.leftMargin = 0;
-               this.rightMargin = 0;
-               this.rightPadding = 0;
-               this.initializationMode = "left";
-               this.active = false;
-               this.scrollEndTimer = false;
-       };
-
-       //reset initial state
-       FrozenColumns.prototype.reset = function () {
-               this.initializationMode = "left";
-               this.leftColumns = [];
-               this.rightColumns = [];
-               this.leftMargin = 0;
-               this.rightMargin = 0;
-               this.rightMargin = 0;
-               this.active = false;
-
-               this.table.columnManager.headersElement.style.marginLeft = 0;
-               this.table.columnManager.element.style.paddingRight = 0;
-       };
-
-       //initialize specific column
-       FrozenColumns.prototype.initializeColumn = function (column) {
-               var config = { margin: 0, edge: false };
-
-               if (!column.isGroup) {
-
-                       if (this.frozenCheck(column)) {
-
-                               config.position = this.initializationMode;
-
-                               if (this.initializationMode == "left") {
-                                       this.leftColumns.push(column);
-                               } else {
-                                       this.rightColumns.unshift(column);
-                               }
-
-                               this.active = true;
-
-                               column.modules.frozen = config;
-                       } else {
-                               this.initializationMode = "right";
-                       }
-               }
-       };
-
-       FrozenColumns.prototype.frozenCheck = function (column) {
-               var frozen = false;
-
-               if (column.parent.isGroup && column.definition.frozen) {
-                       console.warn("Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups");
-               }
-
-               if (column.parent.isGroup) {
-                       return this.frozenCheck(column.parent);
-               } else {
-                       return column.definition.frozen;
-               }
-
-               return frozen;
-       };
-
-       //quick layout to smooth horizontal scrolling
-       FrozenColumns.prototype.scrollHorizontal = function () {
-               var _this55 = this;
-
-               var rows;
-
-               if (this.active) {
-                       clearTimeout(this.scrollEndTimer);
-
-                       //layout all rows after scroll is complete
-                       this.scrollEndTimer = setTimeout(function () {
-                               _this55.layout();
-                       }, 100);
-
-                       rows = this.table.rowManager.getVisibleRows();
-
-                       this.calcMargins();
-
-                       this.layoutColumnPosition();
-
-                       this.layoutCalcRows();
-
-                       rows.forEach(function (row) {
-                               if (row.type === "row") {
-                                       _this55.layoutRow(row);
-                               }
-                       });
-
-                       this.table.rowManager.tableElement.style.marginRight = this.rightMargin;
-               }
-       };
-
-       //calculate margins for rows
-       FrozenColumns.prototype.calcMargins = function () {
-               this.leftMargin = this._calcSpace(this.leftColumns, this.leftColumns.length) + "px";
-               this.table.columnManager.headersElement.style.marginLeft = this.leftMargin;
-
-               this.rightMargin = this._calcSpace(this.rightColumns, this.rightColumns.length) + "px";
-               this.table.columnManager.element.style.paddingRight = this.rightMargin;
-
-               //calculate right frozen columns
-               this.rightPadding = this.table.rowManager.element.clientWidth + this.table.columnManager.scrollLeft;
-       };
-
-       //layout calculation rows
-       FrozenColumns.prototype.layoutCalcRows = function () {
-               if (this.table.modExists("columnCalcs")) {
-                       if (this.table.modules.columnCalcs.topInitialized && this.table.modules.columnCalcs.topRow) {
-                               this.layoutRow(this.table.modules.columnCalcs.topRow);
-                       }
-                       if (this.table.modules.columnCalcs.botInitialized && this.table.modules.columnCalcs.botRow) {
-                               this.layoutRow(this.table.modules.columnCalcs.botRow);
-                       }
-               }
-       };
-
-       //calculate column positions and layout headers
-       FrozenColumns.prototype.layoutColumnPosition = function (allCells) {
-               var _this56 = this;
-
-               var leftParents = [];
-
-               this.leftColumns.forEach(function (column, i) {
-                       column.modules.frozen.margin = _this56._calcSpace(_this56.leftColumns, i) + _this56.table.columnManager.scrollLeft + "px";
-
-                       if (i == _this56.leftColumns.length - 1) {
-                               column.modules.frozen.edge = true;
-                       } else {
-                               column.modules.frozen.edge = false;
-                       }
-
-                       if (column.parent.isGroup) {
-                               var parentEl = _this56.getColGroupParentElement(column);
-                               if (!leftParents.includes(parentEl)) {
-                                       _this56.layoutElement(parentEl, column);
-                                       leftParents.push(parentEl);
-                               }
-
-                               if (column.modules.frozen.edge) {
-                                       parentEl.classList.add("tabulator-frozen-" + column.modules.frozen.position);
-                               }
-                       } else {
-                               _this56.layoutElement(column.getElement(), column);
-                       }
-
-                       if (allCells) {
-                               column.cells.forEach(function (cell) {
-                                       _this56.layoutElement(cell.getElement(), column);
-                               });
-                       }
-               });
-
-               this.rightColumns.forEach(function (column, i) {
-                       column.modules.frozen.margin = _this56.rightPadding - _this56._calcSpace(_this56.rightColumns, i + 1) + "px";
-
-                       if (i == _this56.rightColumns.length - 1) {
-                               column.modules.frozen.edge = true;
-                       } else {
-                               column.modules.frozen.edge = false;
-                       }
-
-                       if (column.parent.isGroup) {
-                               _this56.layoutElement(_this56.getColGroupParentElement(column), column);
-                       } else {
-                               _this56.layoutElement(column.getElement(), column);
-                       }
-
-                       if (allCells) {
-                               column.cells.forEach(function (cell) {
-                                       _this56.layoutElement(cell.getElement(), column);
-                               });
-                       }
-               });
-       };
-
-       FrozenColumns.prototype.getColGroupParentElement = function (column) {
-               return column.parent.isGroup ? this.getColGroupParentElement(column.parent) : column.getElement();
-       };
-
-       //layout columns appropropriatly
-       FrozenColumns.prototype.layout = function () {
-               var self = this,
-                   rightMargin = 0;
-
-               if (self.active) {
-
-                       //calculate row padding
-                       this.calcMargins();
-
-                       // self.table.rowManager.activeRows.forEach(function(row){
-                       //      self.layoutRow(row);
-                       // });
-
-                       // if(self.table.options.dataTree){
-                       self.table.rowManager.getDisplayRows().forEach(function (row) {
-                               if (row.type === "row") {
-                                       self.layoutRow(row);
-                               }
-                       });
-                       // }
-
-                       this.layoutCalcRows();
-
-                       //calculate left columns
-                       this.layoutColumnPosition(true);
-
-                       // if(tableHolder.scrollHeight > tableHolder.clientHeight){
-                       //      rightMargin -= tableHolder.offsetWidth - tableHolder.clientWidth;
-                       // }
-
-                       this.table.rowManager.tableElement.style.marginRight = this.rightMargin;
-               }
-       };
-
-       FrozenColumns.prototype.layoutRow = function (row) {
-               var _this57 = this;
-
-               var rowEl = row.getElement();
-
-               rowEl.style.paddingLeft = this.leftMargin;
-               // rowEl.style.paddingRight = this.rightMargin + "px";
-
-               this.leftColumns.forEach(function (column) {
-                       var cell = row.getCell(column);
-
-                       if (cell) {
-                               _this57.layoutElement(cell.getElement(), column);
-                       }
-               });
-
-               this.rightColumns.forEach(function (column) {
-                       var cell = row.getCell(column);
-
-                       if (cell) {
-                               _this57.layoutElement(cell.getElement(), column);
-                       }
-               });
-       };
-
-       FrozenColumns.prototype.layoutElement = function (element, column) {
-
-               if (column.modules.frozen) {
-                       element.style.position = "absolute";
-                       element.style.left = column.modules.frozen.margin;
-
-                       element.classList.add("tabulator-frozen");
-
-                       if (column.modules.frozen.edge) {
-                               element.classList.add("tabulator-frozen-" + column.modules.frozen.position);
-                       }
-               }
-       };
-
-       FrozenColumns.prototype._calcSpace = function (columns, index) {
-               var width = 0;
-
-               for (var _i8 = 0; _i8 < index; _i8++) {
-                       if (columns[_i8].visible) {
-                               width += columns[_i8].getWidth();
-                       }
-               }
-
-               return width;
-       };
-
-       Tabulator.prototype.registerModule("frozenColumns", FrozenColumns);
-       var FrozenRows = function FrozenRows(table) {
-               this.table = table; //hold Tabulator object
-               this.topElement = document.createElement("div");
-               this.rows = [];
-               this.displayIndex = 0; //index in display pipeline
-       };
-
-       FrozenRows.prototype.initialize = function () {
-               this.rows = [];
-
-               this.topElement.classList.add("tabulator-frozen-rows-holder");
-
-               // this.table.columnManager.element.append(this.topElement);
-               this.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);
-       };
-
-       FrozenRows.prototype.setDisplayIndex = function (index) {
-               this.displayIndex = index;
-       };
-
-       FrozenRows.prototype.getDisplayIndex = function () {
-               return this.displayIndex;
-       };
-
-       FrozenRows.prototype.isFrozen = function () {
-               return !!this.rows.length;
-       };
-
-       //filter frozen rows out of display data
-       FrozenRows.prototype.getRows = function (rows) {
-               var self = this,
-                   frozen = [],
-                   output = rows.slice(0);
-
-               this.rows.forEach(function (row) {
-                       var index = output.indexOf(row);
-
-                       if (index > -1) {
-                               output.splice(index, 1);
-                       }
-               });
-
-               return output;
-       };
-
-       FrozenRows.prototype.freezeRow = function (row) {
-               if (!row.modules.frozen) {
-                       row.modules.frozen = true;
-                       this.topElement.appendChild(row.getElement());
-                       row.initialize();
-                       row.normalizeHeight();
-                       this.table.rowManager.adjustTableSize();
-
-                       this.rows.push(row);
-
-                       this.table.rowManager.refreshActiveData("display");
-
-                       this.styleRows();
-               } else {
-                       console.warn("Freeze Error - Row is already frozen");
-               }
-       };
-
-       FrozenRows.prototype.unfreezeRow = function (row) {
-               var index = this.rows.indexOf(row);
-
-               if (row.modules.frozen) {
-
-                       row.modules.frozen = false;
-
-                       var rowEl = row.getElement();
-                       rowEl.parentNode.removeChild(rowEl);
-
-                       this.table.rowManager.adjustTableSize();
-
-                       this.rows.splice(index, 1);
-
-                       this.table.rowManager.refreshActiveData("display");
-
-                       if (this.rows.length) {
-                               this.styleRows();
-                       }
-               } else {
-                       console.warn("Freeze Error - Row is already unfrozen");
-               }
-       };
-
-       FrozenRows.prototype.styleRows = function (row) {
-               var self = this;
-
-               this.rows.forEach(function (row, i) {
-                       self.table.rowManager.styleRow(row, i);
-               });
-       };
-
-       Tabulator.prototype.registerModule("frozenRows", FrozenRows);
-
-       //public group object
-       var GroupComponent = function GroupComponent(group) {
-               this._group = group;
-               this.type = "GroupComponent";
-       };
-
-       GroupComponent.prototype.getKey = function () {
-               return this._group.key;
-       };
-
-       GroupComponent.prototype.getField = function () {
-               return this._group.field;
-       };
-
-       GroupComponent.prototype.getElement = function () {
-               return this._group.element;
-       };
-
-       GroupComponent.prototype.getRows = function () {
-               return this._group.getRows(true);
-       };
-
-       GroupComponent.prototype.getSubGroups = function () {
-               return this._group.getSubGroups(true);
-       };
-
-       GroupComponent.prototype.getParentGroup = function () {
-               return this._group.parent ? this._group.parent.getComponent() : false;
-       };
-
-       GroupComponent.prototype.getVisibility = function () {
-               console.warn("getVisibility function is deprecated, you should now use the isVisible function");
-               return this._group.visible;
-       };
-
-       GroupComponent.prototype.isVisible = function () {
-               return this._group.visible;
-       };
-
-       GroupComponent.prototype.show = function () {
-               this._group.show();
-       };
-
-       GroupComponent.prototype.hide = function () {
-               this._group.hide();
-       };
-
-       GroupComponent.prototype.toggle = function () {
-               this._group.toggleVisibility();
-       };
-
-       GroupComponent.prototype._getSelf = function () {
-               return this._group;
-       };
-
-       GroupComponent.prototype.getTable = function () {
-               return this._group.groupManager.table;
-       };
-
-       //////////////////////////////////////////////////
-       //////////////// Group Functions /////////////////
-       //////////////////////////////////////////////////
-
-       var Group = function Group(groupManager, parent, level, key, field, generator, oldGroup) {
-
-               this.groupManager = groupManager;
-               this.parent = parent;
-               this.key = key;
-               this.level = level;
-               this.field = field;
-               this.hasSubGroups = level < groupManager.groupIDLookups.length - 1;
-               this.addRow = this.hasSubGroups ? this._addRowToGroup : this._addRow;
-               this.type = "group"; //type of element
-               this.old = oldGroup;
-               this.rows = [];
-               this.groups = [];
-               this.groupList = [];
-               this.generator = generator;
-               this.elementContents = false;
-               this.height = 0;
-               this.outerHeight = 0;
-               this.initialized = false;
-               this.calcs = {};
-               this.initialized = false;
-               this.modules = {};
-               this.arrowElement = false;
-
-               this.visible = oldGroup ? oldGroup.visible : typeof groupManager.startOpen[level] !== "undefined" ? groupManager.startOpen[level] : groupManager.startOpen[0];
-
-               this.component = null;
-
-               this.createElements();
-               this.addBindings();
-
-               this.createValueGroups();
-       };
-
-       Group.prototype.wipe = function () {
-               if (this.groupList.length) {
-                       this.groupList.forEach(function (group) {
-                               group.wipe();
-                       });
-               } else {
-                       this.element = false;
-                       this.arrowElement = false;
-                       this.elementContents = false;
-               }
-       };
-
-       Group.prototype.createElements = function () {
-               var arrow = document.createElement("div");
-               arrow.classList.add("tabulator-arrow");
-
-               this.element = document.createElement("div");
-               this.element.classList.add("tabulator-row");
-               this.element.classList.add("tabulator-group");
-               this.element.classList.add("tabulator-group-level-" + this.level);
-               this.element.setAttribute("role", "rowgroup");
-
-               this.arrowElement = document.createElement("div");
-               this.arrowElement.classList.add("tabulator-group-toggle");
-               this.arrowElement.appendChild(arrow);
-
-               //setup movable rows
-               if (this.groupManager.table.options.movableRows !== false && this.groupManager.table.modExists("moveRow")) {
-                       this.groupManager.table.modules.moveRow.initializeGroupHeader(this);
-               }
-       };
-
-       Group.prototype.createValueGroups = function () {
-               var _this58 = this;
-
-               var level = this.level + 1;
-               if (this.groupManager.allowedValues && this.groupManager.allowedValues[level]) {
-                       this.groupManager.allowedValues[level].forEach(function (value) {
-                               _this58._createGroup(value, level);
-                       });
-               }
-       };
-
-       Group.prototype.addBindings = function () {
-               var self = this,
-                   dblTap,
-                   tapHold,
-                   tap,
-                   toggleElement;
-
-               //handle group click events
-               if (self.groupManager.table.options.groupClick) {
-                       self.element.addEventListener("click", function (e) {
-                               self.groupManager.table.options.groupClick.call(self.groupManager.table, e, self.getComponent());
-                       });
-               }
-
-               if (self.groupManager.table.options.groupDblClick) {
-                       self.element.addEventListener("dblclick", function (e) {
-                               self.groupManager.table.options.groupDblClick.call(self.groupManager.table, e, self.getComponent());
-                       });
-               }
-
-               if (self.groupManager.table.options.groupContext) {
-                       self.element.addEventListener("contextmenu", function (e) {
-                               self.groupManager.table.options.groupContext.call(self.groupManager.table, e, self.getComponent());
-                       });
-               }
-
-               if (self.groupManager.table.options.groupContextMenu && self.groupManager.table.modExists("menu")) {
-                       self.groupManager.table.modules.menu.initializeGroup.call(self.groupManager.table.modules.menu, self);
-               }
-
-               if (self.groupManager.table.options.groupTap) {
-
-                       tap = false;
-
-                       self.element.addEventListener("touchstart", function (e) {
-                               tap = true;
-                       }, { passive: true });
-
-                       self.element.addEventListener("touchend", function (e) {
-                               if (tap) {
-                                       self.groupManager.table.options.groupTap(e, self.getComponent());
-                               }
-
-                               tap = false;
-                       });
-               }
-
-               if (self.groupManager.table.options.groupDblTap) {
-
-                       dblTap = null;
-
-                       self.element.addEventListener("touchend", function (e) {
-
-                               if (dblTap) {
-                                       clearTimeout(dblTap);
-                                       dblTap = null;
-
-                                       self.groupManager.table.options.groupDblTap(e, self.getComponent());
-                               } else {
-
-                                       dblTap = setTimeout(function () {
-                                               clearTimeout(dblTap);
-                                               dblTap = null;
-                                       }, 300);
-                               }
-                       });
-               }
-
-               if (self.groupManager.table.options.groupTapHold) {
-
-                       tapHold = null;
-
-                       self.element.addEventListener("touchstart", function (e) {
-                               clearTimeout(tapHold);
-
-                               tapHold = setTimeout(function () {
-                                       clearTimeout(tapHold);
-                                       tapHold = null;
-                                       tap = false;
-                                       self.groupManager.table.options.groupTapHold(e, self.getComponent());
-                               }, 1000);
-                       }, { passive: true });
-
-                       self.element.addEventListener("touchend", function (e) {
-                               clearTimeout(tapHold);
-                               tapHold = null;
-                       });
-               }
-
-               if (self.groupManager.table.options.groupToggleElement) {
-                       toggleElement = self.groupManager.table.options.groupToggleElement == "arrow" ? self.arrowElement : self.element;
-
-                       toggleElement.addEventListener("click", function (e) {
-                               e.stopPropagation();
-                               e.stopImmediatePropagation();
-                               self.toggleVisibility();
-                       });
-               }
-       };
-
-       Group.prototype._createGroup = function (groupID, level) {
-               var groupKey = level + "_" + groupID;
-               var group = new Group(this.groupManager, this, level, groupID, this.groupManager.groupIDLookups[level].field, this.groupManager.headerGenerator[level] || this.groupManager.headerGenerator[0], this.old ? this.old.groups[groupKey] : false);
-
-               this.groups[groupKey] = group;
-               this.groupList.push(group);
-       };
-
-       Group.prototype._addRowToGroup = function (row) {
-
-               var level = this.level + 1;
-
-               if (this.hasSubGroups) {
-                       var groupID = this.groupManager.groupIDLookups[level].func(row.getData()),
-                           groupKey = level + "_" + groupID;
-
-                       if (this.groupManager.allowedValues && this.groupManager.allowedValues[level]) {
-                               if (this.groups[groupKey]) {
-                                       this.groups[groupKey].addRow(row);
-                               }
-                       } else {
-                               if (!this.groups[groupKey]) {
-                                       this._createGroup(groupID, level);
-                               }
-
-                               this.groups[groupKey].addRow(row);
-                       }
-               }
-       };
-
-       Group.prototype._addRow = function (row) {
-               this.rows.push(row);
-               row.modules.group = this;
-       };
-
-       Group.prototype.insertRow = function (row, to, after) {
-               var data = this.conformRowData({});
-
-               row.updateData(data);
-
-               var toIndex = this.rows.indexOf(to);
-
-               if (toIndex > -1) {
-                       if (after) {
-                               this.rows.splice(toIndex + 1, 0, row);
-                       } else {
-                               this.rows.splice(toIndex, 0, row);
-                       }
-               } else {
-                       if (after) {
-                               this.rows.push(row);
-                       } else {
-                               this.rows.unshift(row);
-                       }
-               }
-
-               row.modules.group = this;
-
-               this.generateGroupHeaderContents();
-
-               if (this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.options.columnCalcs != "table") {
-                       this.groupManager.table.modules.columnCalcs.recalcGroup(this);
-               }
-
-               this.groupManager.updateGroupRows(true);
-       };
-
-       Group.prototype.scrollHeader = function (left) {
-               this.arrowElement.style.marginLeft = left;
-
-               this.groupList.forEach(function (child) {
-                       child.scrollHeader(left);
-               });
-       };
-
-       Group.prototype.getRowIndex = function (row) {};
-
-       //update row data to match grouping contraints
-       Group.prototype.conformRowData = function (data) {
-               if (this.field) {
-                       data[this.field] = this.key;
-               } else {
-                       console.warn("Data Conforming Error - Cannot conform row data to match new group as groupBy is a function");
-               }
-
-               if (this.parent) {
-                       data = this.parent.conformRowData(data);
-               }
-
-               return data;
-       };
-
-       Group.prototype.removeRow = function (row) {
-               var index = this.rows.indexOf(row);
-               var el = row.getElement();
-
-               if (index > -1) {
-                       this.rows.splice(index, 1);
-               }
-
-               if (!this.groupManager.table.options.groupValues && !this.rows.length) {
-                       if (this.parent) {
-                               this.parent.removeGroup(this);
-                       } else {
-                               this.groupManager.removeGroup(this);
-                       }
-
-                       this.groupManager.updateGroupRows(true);
-               } else {
-
-                       if (el.parentNode) {
-                               el.parentNode.removeChild(el);
-                       }
-
-                       this.generateGroupHeaderContents();
-
-                       if (this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.options.columnCalcs != "table") {
-                               this.groupManager.table.modules.columnCalcs.recalcGroup(this);
-                       }
-               }
-       };
-
-       Group.prototype.removeGroup = function (group) {
-               var groupKey = group.level + "_" + group.key,
-                   index;
-
-               if (this.groups[groupKey]) {
-                       delete this.groups[groupKey];
-
-                       index = this.groupList.indexOf(group);
-
-                       if (index > -1) {
-                               this.groupList.splice(index, 1);
-                       }
-
-                       if (!this.groupList.length) {
-                               if (this.parent) {
-                                       this.parent.removeGroup(this);
-                               } else {
-                                       this.groupManager.removeGroup(this);
-                               }
-                       }
-               }
-       };
-
-       Group.prototype.getHeadersAndRows = function (noCalc) {
-               var output = [];
-
-               output.push(this);
-
-               this._visSet();
-
-               if (this.visible) {
-                       if (this.groupList.length) {
-                               this.groupList.forEach(function (group) {
-                                       output = output.concat(group.getHeadersAndRows(noCalc));
-                               });
-                       } else {
-                               if (!noCalc && this.groupManager.table.options.columnCalcs != "table" && this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.modules.columnCalcs.hasTopCalcs()) {
-                                       if (this.calcs.top) {
-                                               this.calcs.top.detachElement();
-                                               this.calcs.top.deleteCells();
-                                       }
-
-                                       this.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);
-                                       output.push(this.calcs.top);
-                               }
-
-                               output = output.concat(this.rows);
-
-                               if (!noCalc && this.groupManager.table.options.columnCalcs != "table" && this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()) {
-                                       if (this.calcs.bottom) {
-                                               this.calcs.bottom.detachElement();
-                                               this.calcs.bottom.deleteCells();
-                                       }
-
-                                       this.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);
-                                       output.push(this.calcs.bottom);
-                               }
-                       }
-               } else {
-                       if (!this.groupList.length && this.groupManager.table.options.columnCalcs != "table") {
-
-                               if (this.groupManager.table.modExists("columnCalcs")) {
-
-                                       if (!noCalc && this.groupManager.table.modules.columnCalcs.hasTopCalcs()) {
-                                               if (this.calcs.top) {
-                                                       this.calcs.top.detachElement();
-                                                       this.calcs.top.deleteCells();
-                                               }
-
-                                               if (this.groupManager.table.options.groupClosedShowCalcs) {
-                                                       this.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);
-                                                       output.push(this.calcs.top);
-                                               }
-                                       }
-
-                                       if (!noCalc && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()) {
-                                               if (this.calcs.bottom) {
-                                                       this.calcs.bottom.detachElement();
-                                                       this.calcs.bottom.deleteCells();
-                                               }
-
-                                               if (this.groupManager.table.options.groupClosedShowCalcs) {
-                                                       this.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);
-                                                       output.push(this.calcs.bottom);
-                                               }
-                                       }
-                               }
-                       }
-               }
-
-               return output;
-       };
-
-       Group.prototype.getData = function (visible, transform) {
-               var self = this,
-                   output = [];
-
-               this._visSet();
-
-               if (!visible || visible && this.visible) {
-                       this.rows.forEach(function (row) {
-                               output.push(row.getData(transform || "data"));
-                       });
-               }
-
-               return output;
-       };
-
-       // Group.prototype.getRows = function(){
-       //      this._visSet();
-
-       //      return this.visible ? this.rows : [];
-       // };
-
-       Group.prototype.getRowCount = function () {
-               var count = 0;
-
-               if (this.groupList.length) {
-                       this.groupList.forEach(function (group) {
-                               count += group.getRowCount();
-                       });
-               } else {
-                       count = this.rows.length;
-               }
-               return count;
-       };
-
-       Group.prototype.toggleVisibility = function () {
-               if (this.visible) {
-                       this.hide();
-               } else {
-                       this.show();
-               }
-       };
-
-       Group.prototype.hide = function () {
-               this.visible = false;
-
-               if (this.groupManager.table.rowManager.getRenderMode() == "classic" && !this.groupManager.table.options.pagination) {
-
-                       this.element.classList.remove("tabulator-group-visible");
-
-                       if (this.groupList.length) {
-                               this.groupList.forEach(function (group) {
-
-                                       var rows = group.getHeadersAndRows();
-
-                                       rows.forEach(function (row) {
-                                               row.detachElement();
-                                       });
-                               });
-                       } else {
-                               this.rows.forEach(function (row) {
-                                       var rowEl = row.getElement();
-                                       rowEl.parentNode.removeChild(rowEl);
-                               });
-                       }
-
-                       this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());
-
-                       this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();
-               } else {
-                       this.groupManager.updateGroupRows(true);
-               }
-
-               this.groupManager.table.options.groupVisibilityChanged.call(this.table, this.getComponent(), false);
-       };
-
-       Group.prototype.show = function () {
-               var self = this;
-
-               self.visible = true;
-
-               if (this.groupManager.table.rowManager.getRenderMode() == "classic" && !this.groupManager.table.options.pagination) {
-
-                       this.element.classList.add("tabulator-group-visible");
-
-                       var prev = self.getElement();
-
-                       if (this.groupList.length) {
-                               this.groupList.forEach(function (group) {
-                                       var rows = group.getHeadersAndRows();
-
-                                       rows.forEach(function (row) {
-                                               var rowEl = row.getElement();
-                                               prev.parentNode.insertBefore(rowEl, prev.nextSibling);
-                                               row.initialize();
-                                               prev = rowEl;
-                                       });
-                               });
-                       } else {
-                               self.rows.forEach(function (row) {
-                                       var rowEl = row.getElement();
-                                       prev.parentNode.insertBefore(rowEl, prev.nextSibling);
-                                       row.initialize();
-                                       prev = rowEl;
-                               });
-                       }
-
-                       this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());
-
-                       this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();
-               } else {
-                       this.groupManager.updateGroupRows(true);
-               }
-
-               this.groupManager.table.options.groupVisibilityChanged.call(this.table, this.getComponent(), true);
-       };
-
-       Group.prototype._visSet = function () {
-               var data = [];
-
-               if (typeof this.visible == "function") {
-
-                       this.rows.forEach(function (row) {
-                               data.push(row.getData());
-                       });
-
-                       this.visible = this.visible(this.key, this.getRowCount(), data, this.getComponent());
-               }
-       };
-
-       Group.prototype.getRowGroup = function (row) {
-               var match = false;
-               if (this.groupList.length) {
-                       this.groupList.forEach(function (group) {
-                               var result = group.getRowGroup(row);
-
-                               if (result) {
-                                       match = result;
-                               }
-                       });
-               } else {
-                       if (this.rows.find(function (item) {
-                               return item === row;
-                       })) {
-                               match = this;
-                       }
-               }
-
-               return match;
-       };
-
-       Group.prototype.getSubGroups = function (component) {
-               var output = [];
-
-               this.groupList.forEach(function (child) {
-                       output.push(component ? child.getComponent() : child);
-               });
-
-               return output;
-       };
-
-       Group.prototype.getRows = function (compoment) {
-               var output = [];
-
-               this.rows.forEach(function (row) {
-                       output.push(compoment ? row.getComponent() : row);
-               });
-
-               return output;
-       };
-
-       Group.prototype.generateGroupHeaderContents = function () {
-               var data = [];
-
-               this.rows.forEach(function (row) {
-                       data.push(row.getData());
-               });
-
-               this.elementContents = this.generator(this.key, this.getRowCount(), data, this.getComponent());
-
-               while (this.element.firstChild) {
-                       this.element.removeChild(this.element.firstChild);
-               }if (typeof this.elementContents === "string") {
-                       this.element.innerHTML = this.elementContents;
-               } else {
-                       this.element.appendChild(this.elementContents);
-               }
-
-               this.element.insertBefore(this.arrowElement, this.element.firstChild);
-       };
-
-       ////////////// Standard Row Functions //////////////
-
-       Group.prototype.getElement = function () {
-               this.addBindingsd = false;
-
-               this._visSet();
-
-               if (this.visible) {
-                       this.element.classList.add("tabulator-group-visible");
-               } else {
-                       this.element.classList.remove("tabulator-group-visible");
-               }
-
-               for (var i = 0; i < this.element.childNodes.length; ++i) {
-                       this.element.childNodes[i].parentNode.removeChild(this.element.childNodes[i]);
-               }
-
-               this.generateGroupHeaderContents();
-
-               // this.addBindings();
-
-               return this.element;
-       };
-
-       Group.prototype.detachElement = function () {
-               if (this.element && this.element.parentNode) {
-                       this.element.parentNode.removeChild(this.element);
-               }
-       };
-
-       //normalize the height of elements in the row
-       Group.prototype.normalizeHeight = function () {
-               this.setHeight(this.element.clientHeight);
-       };
-
-       Group.prototype.initialize = function (force) {
-               if (!this.initialized || force) {
-                       this.normalizeHeight();
-                       this.initialized = true;
-               }
-       };
-
-       Group.prototype.reinitialize = function () {
-               this.initialized = false;
-               this.height = 0;
-
-               if (Tabulator.prototype.helpers.elVisible(this.element)) {
-                       this.initialize(true);
-               }
-       };
-
-       Group.prototype.setHeight = function (height) {
-               if (this.height != height) {
-                       this.height = height;
-                       this.outerHeight = this.element.offsetHeight;
-               }
-       };
-
-       //return rows outer height
-       Group.prototype.getHeight = function () {
-               return this.outerHeight;
-       };
-
-       Group.prototype.getGroup = function () {
-               return this;
-       };
-
-       Group.prototype.reinitializeHeight = function () {};
-       Group.prototype.calcHeight = function () {};
-       Group.prototype.setCellHeight = function () {};
-       Group.prototype.clearCellHeight = function () {};
-
-       //////////////// Object Generation /////////////////
-       Group.prototype.getComponent = function () {
-               if (!this.component) {
-                       this.component = new GroupComponent(this);
-               }
-
-               return this.component;
-       };
-
-       //////////////////////////////////////////////////
-       ////////////// Group Row Extension ///////////////
-       //////////////////////////////////////////////////
-
-       var GroupRows = function GroupRows(table) {
-
-               this.table = table; //hold Tabulator object
-
-               this.groupIDLookups = false; //enable table grouping and set field to group by
-               this.startOpen = [function () {
-                       return false;
-               }]; //starting state of group
-               this.headerGenerator = [function () {
-                       return "";
-               }];
-               this.groupList = []; //ordered list of groups
-               this.allowedValues = false;
-               this.groups = {}; //hold row groups
-               this.displayIndex = 0; //index in display pipeline
-       };
-
-       //initialize group configuration
-       GroupRows.prototype.initialize = function () {
-               var self = this,
-                   groupBy = self.table.options.groupBy,
-                   startOpen = self.table.options.groupStartOpen,
-                   groupHeader = self.table.options.groupHeader;
-
-               this.allowedValues = self.table.options.groupValues;
-
-               if (Array.isArray(groupBy) && Array.isArray(groupHeader) && groupBy.length > groupHeader.length) {
-                       console.warn("Error creating group headers, groupHeader array is shorter than groupBy array");
-               }
-
-               self.headerGenerator = [function () {
-                       return "";
-               }];
-               this.startOpen = [function () {
-                       return false;
-               }]; //starting state of group
-
-               self.table.modules.localize.bind("groups|item", function (langValue, lang) {
-                       self.headerGenerator[0] = function (value, count, data) {
-                               //header layout function
-                               return (typeof value === "undefined" ? "" : value) + "<span>(" + count + " " + (count === 1 ? langValue : lang.groups.items) + ")</span>";
-                       };
-               });
-
-               this.groupIDLookups = [];
-
-               if (Array.isArray(groupBy) || groupBy) {
-                       if (this.table.modExists("columnCalcs") && this.table.options.columnCalcs != "table" && this.table.options.columnCalcs != "both") {
-                               this.table.modules.columnCalcs.removeCalcs();
-                       }
-               } else {
-                       if (this.table.modExists("columnCalcs") && this.table.options.columnCalcs != "group") {
-
-                               var cols = this.table.columnManager.getRealColumns();
-
-                               cols.forEach(function (col) {
-                                       if (col.definition.topCalc) {
-                                               self.table.modules.columnCalcs.initializeTopRow();
-                                       }
-
-                                       if (col.definition.bottomCalc) {
-                                               self.table.modules.columnCalcs.initializeBottomRow();
-                                       }
-                               });
-                       }
-               }
-
-               if (!Array.isArray(groupBy)) {
-                       groupBy = [groupBy];
-               }
-
-               groupBy.forEach(function (group, i) {
-                       var lookupFunc, column;
-
-                       if (typeof group == "function") {
-                               lookupFunc = group;
-                       } else {
-                               column = self.table.columnManager.getColumnByField(group);
-
-                               if (column) {
-                                       lookupFunc = function lookupFunc(data) {
-                                               return column.getFieldValue(data);
-                                       };
-                               } else {
-                                       lookupFunc = function lookupFunc(data) {
-                                               return data[group];
-                                       };
-                               }
-                       }
-
-                       self.groupIDLookups.push({
-                               field: typeof group === "function" ? false : group,
-                               func: lookupFunc,
-                               values: self.allowedValues ? self.allowedValues[i] : false
-                       });
-               });
-
-               if (startOpen) {
-
-                       if (!Array.isArray(startOpen)) {
-                               startOpen = [startOpen];
-                       }
-
-                       startOpen.forEach(function (level) {
-                               level = typeof level == "function" ? level : function () {
-                                       return true;
-                               };
-                       });
-
-                       self.startOpen = startOpen;
-               }
-
-               if (groupHeader) {
-                       self.headerGenerator = Array.isArray(groupHeader) ? groupHeader : [groupHeader];
-               }
-
-               this.initialized = true;
-       };
-
-       GroupRows.prototype.setDisplayIndex = function (index) {
-               this.displayIndex = index;
-       };
-
-       GroupRows.prototype.getDisplayIndex = function () {
-               return this.displayIndex;
-       };
-
-       //return appropriate rows with group headers
-       GroupRows.prototype.getRows = function (rows) {
-               if (this.groupIDLookups.length) {
-
-                       this.table.options.dataGrouping.call(this.table);
-
-                       this.generateGroups(rows);
-
-                       if (this.table.options.dataGrouped) {
-                               this.table.options.dataGrouped.call(this.table, this.getGroups(true));
-                       }
-
-                       return this.updateGroupRows();
-               } else {
-                       return rows.slice(0);
-               }
-       };
-
-       GroupRows.prototype.getGroups = function (compoment) {
-               var groupComponents = [];
-
-               this.groupList.forEach(function (group) {
-                       groupComponents.push(compoment ? group.getComponent() : group);
-               });
-
-               return groupComponents;
-       };
-
-       GroupRows.prototype.getChildGroups = function (group) {
-               var _this59 = this;
-
-               var groupComponents = [];
-
-               if (!group) {
-                       group = this;
-               }
-
-               group.groupList.forEach(function (child) {
-                       if (child.groupList.length) {
-                               groupComponents = groupComponents.concat(_this59.getChildGroups(child));
-                       } else {
-                               groupComponents.push(child);
-                       }
-               });
-
-               return groupComponents;
-       };
-
-       GroupRows.prototype.wipe = function () {
-               this.groupList.forEach(function (group) {
-                       group.wipe();
-               });
-       };
-
-       GroupRows.prototype.pullGroupListData = function (groupList) {
-               var self = this;
-               var groupListData = [];
-
-               groupList.forEach(function (group) {
-                       var groupHeader = {};
-                       groupHeader.level = 0;
-                       groupHeader.rowCount = 0;
-                       groupHeader.headerContent = "";
-                       var childData = [];
-
-                       if (group.hasSubGroups) {
-                               childData = self.pullGroupListData(group.groupList);
-
-                               groupHeader.level = group.level;
-                               groupHeader.rowCount = childData.length - group.groupList.length; // data length minus number of sub-headers
-                               groupHeader.headerContent = group.generator(group.key, groupHeader.rowCount, group.rows, group);
-
-                               groupListData.push(groupHeader);
-                               groupListData = groupListData.concat(childData);
-                       } else {
-                               groupHeader.level = group.level;
-                               groupHeader.headerContent = group.generator(group.key, group.rows.length, group.rows, group);
-                               groupHeader.rowCount = group.getRows().length;
-
-                               groupListData.push(groupHeader);
-
-                               group.getRows().forEach(function (row) {
-                                       groupListData.push(row.getData("data"));
-                               });
-                       }
-               });
-
-               return groupListData;
-       };
-
-       GroupRows.prototype.getGroupedData = function () {
-
-               return this.pullGroupListData(this.groupList);
-       };
-
-       GroupRows.prototype.getRowGroup = function (row) {
-               var match = false;
-
-               this.groupList.forEach(function (group) {
-                       var result = group.getRowGroup(row);
-
-                       if (result) {
-                               match = result;
-                       }
-               });
-
-               return match;
-       };
-
-       GroupRows.prototype.countGroups = function () {
-               return this.groupList.length;
-       };
-
-       GroupRows.prototype.generateGroups = function (rows) {
-               var self = this,
-                   oldGroups = self.groups;
-
-               self.groups = {};
-               self.groupList = [];
-
-               if (this.allowedValues && this.allowedValues[0]) {
-                       this.allowedValues[0].forEach(function (value) {
-                               self.createGroup(value, 0, oldGroups);
-                       });
-
-                       rows.forEach(function (row) {
-                               self.assignRowToExistingGroup(row, oldGroups);
-                       });
-               } else {
-                       rows.forEach(function (row) {
-                               self.assignRowToGroup(row, oldGroups);
-                       });
-               }
-       };
-
-       GroupRows.prototype.createGroup = function (groupID, level, oldGroups) {
-               var groupKey = level + "_" + groupID,
-                   group;
-
-               oldGroups = oldGroups || [];
-
-               group = new Group(this, false, level, groupID, this.groupIDLookups[0].field, this.headerGenerator[0], oldGroups[groupKey]);
-
-               this.groups[groupKey] = group;
-               this.groupList.push(group);
-       };
-
-       // GroupRows.prototype.assignRowToGroup = function(row, oldGroups){
-       //      var groupID = this.groupIDLookups[0].func(row.getData()),
-       //      groupKey = "0_" + groupID;
-
-       //      if(!this.groups[groupKey]){
-       //              this.createGroup(groupID, 0, oldGroups);
-       //      }
-
-       //      this.groups[groupKey].addRow(row);
-       // };
-
-       GroupRows.prototype.assignRowToExistingGroup = function (row, oldGroups) {
-               var groupID = this.groupIDLookups[0].func(row.getData()),
-                   groupKey = "0_" + groupID;
-
-               if (this.groups[groupKey]) {
-                       this.groups[groupKey].addRow(row);
-               }
-       };
-
-       GroupRows.prototype.assignRowToGroup = function (row, oldGroups) {
-               var groupID = this.groupIDLookups[0].func(row.getData()),
-                   newGroupNeeded = !this.groups["0_" + groupID];
-
-               if (newGroupNeeded) {
-                       this.createGroup(groupID, 0, oldGroups);
-               }
-
-               this.groups["0_" + groupID].addRow(row);
-
-               return !newGroupNeeded;
-       };
-
-       GroupRows.prototype.updateGroupRows = function (force) {
-               var self = this,
-                   output = [],
-                   oldRowCount;
-
-               self.groupList.forEach(function (group) {
-                       output = output.concat(group.getHeadersAndRows());
-               });
-
-               //force update of table display
-               if (force) {
-
-                       var displayIndex = self.table.rowManager.setDisplayRows(output, this.getDisplayIndex());
-
-                       if (displayIndex !== true) {
-                               this.setDisplayIndex(displayIndex);
-                       }
-
-                       self.table.rowManager.refreshActiveData("group", true, true);
-               }
-
-               return output;
-       };
-
-       GroupRows.prototype.scrollHeaders = function (left) {
-               left = left + "px";
-
-               this.groupList.forEach(function (group) {
-                       group.scrollHeader(left);
-               });
-       };
-
-       GroupRows.prototype.removeGroup = function (group) {
-               var groupKey = group.level + "_" + group.key,
-                   index;
-
-               if (this.groups[groupKey]) {
-                       delete this.groups[groupKey];
-
-                       index = this.groupList.indexOf(group);
-
-                       if (index > -1) {
-                               this.groupList.splice(index, 1);
-                       }
-               }
-       };
-
-       Tabulator.prototype.registerModule("groupRows", GroupRows);
-       var History = function History(table) {
-               this.table = table; //hold Tabulator object
-
-               this.history = [];
-               this.index = -1;
-       };
-
-       History.prototype.clear = function () {
-               this.history = [];
-               this.index = -1;
-       };
-
-       History.prototype.action = function (type, component, data) {
-
-               this.history = this.history.slice(0, this.index + 1);
-
-               this.history.push({
-                       type: type,
-                       component: component,
-                       data: data
-               });
-
-               this.index++;
-       };
-
-       History.prototype.getHistoryUndoSize = function () {
-               return this.index + 1;
-       };
-
-       History.prototype.getHistoryRedoSize = function () {
-               return this.history.length - (this.index + 1);
-       };
-
-       History.prototype.undo = function () {
-
-               if (this.index > -1) {
-                       var action = this.history[this.index];
-
-                       this.undoers[action.type].call(this, action);
-
-                       this.index--;
-
-                       this.table.options.historyUndo.call(this.table, action.type, action.component.getComponent(), action.data);
-
-                       return true;
-               } else {
-                       console.warn("History Undo Error - No more history to undo");
-                       return false;
-               }
-       };
-
-       History.prototype.redo = function () {
-               if (this.history.length - 1 > this.index) {
-
-                       this.index++;
-
-                       var action = this.history[this.index];
-
-                       this.redoers[action.type].call(this, action);
-
-                       this.table.options.historyRedo.call(this.table, action.type, action.component.getComponent(), action.data);
-
-                       return true;
-               } else {
-                       console.warn("History Redo Error - No more history to redo");
-                       return false;
-               }
-       };
-
-       History.prototype.undoers = {
-               cellEdit: function cellEdit(action) {
-                       action.component.setValueProcessData(action.data.oldValue);
-               },
-
-               rowAdd: function rowAdd(action) {
-                       action.component.deleteActual();
-               },
-
-               rowDelete: function rowDelete(action) {
-                       var newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);
-
-                       if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-                               this.table.modules.groupRows.updateGroupRows(true);
-                       }
-
-                       this._rebindRow(action.component, newRow);
-               },
-
-               rowMove: function rowMove(action) {
-                       this.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.posFrom], !action.data.after);
-                       this.table.rowManager.redraw();
-               }
-       };
-
-       History.prototype.redoers = {
-               cellEdit: function cellEdit(action) {
-                       action.component.setValueProcessData(action.data.newValue);
-               },
-
-               rowAdd: function rowAdd(action) {
-                       var newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);
-
-                       if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-                               this.table.modules.groupRows.updateGroupRows(true);
-                       }
-
-                       this._rebindRow(action.component, newRow);
-               },
-
-               rowDelete: function rowDelete(action) {
-                       action.component.deleteActual();
-               },
-
-               rowMove: function rowMove(action) {
-                       this.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.posTo], action.data.after);
-                       this.table.rowManager.redraw();
-               }
-       };
-
-       //rebind rows to new element after deletion
-       History.prototype._rebindRow = function (oldRow, newRow) {
-               this.history.forEach(function (action) {
-                       if (action.component instanceof Row) {
-                               if (action.component === oldRow) {
-                                       action.component = newRow;
-                               }
-                       } else if (action.component instanceof Cell) {
-                               if (action.component.row === oldRow) {
-                                       var field = action.component.column.getField();
-
-                                       if (field) {
-                                               action.component = newRow.getCell(field);
-                                       }
-                               }
-                       }
-               });
-       };
-
-       Tabulator.prototype.registerModule("history", History);
-       var HtmlTableImport = function HtmlTableImport(table) {
-               this.table = table; //hold Tabulator object
-               this.fieldIndex = [];
-               this.hasIndex = false;
-       };
-
-       HtmlTableImport.prototype.parseTable = function () {
-               var self = this,
-                   element = self.table.element,
-                   options = self.table.options,
-                   columns = options.columns,
-                   headers = element.getElementsByTagName("th"),
-                   rows = element.getElementsByTagName("tbody")[0],
-                   data = [],
-                   newTable;
-
-               self.hasIndex = false;
-
-               self.table.options.htmlImporting.call(this.table);
-
-               rows = rows ? rows.getElementsByTagName("tr") : [];
-
-               //check for tablator inline options
-               self._extractOptions(element, options);
-
-               if (headers.length) {
-                       self._extractHeaders(headers, rows);
-               } else {
-                       self._generateBlankHeaders(headers, rows);
-               }
-
-               //iterate through table rows and build data set
-               for (var index = 0; index < rows.length; index++) {
-                       var row = rows[index],
-                           cells = row.getElementsByTagName("td"),
-                           item = {};
-
-                       //create index if the dont exist in table
-                       if (!self.hasIndex) {
-                               item[options.index] = index;
-                       }
-
-                       for (var i = 0; i < cells.length; i++) {
-                               var cell = cells[i];
-                               if (typeof this.fieldIndex[i] !== "undefined") {
-                                       item[this.fieldIndex[i]] = cell.innerHTML;
-                               }
-                       }
-
-                       //add row data to item
-                       data.push(item);
-               }
-
-               //create new element
-               var newElement = document.createElement("div");
-
-               //transfer attributes to new element
-               var attributes = element.attributes;
-
-               // loop through attributes and apply them on div
-
-               for (var i in attributes) {
-                       if (_typeof(attributes[i]) == "object") {
-                               newElement.setAttribute(attributes[i].name, attributes[i].value);
-                       }
-               }
-
-               // replace table with div element
-               element.parentNode.replaceChild(newElement, element);
-
-               options.data = data;
-
-               self.table.options.htmlImported.call(this.table);
-
-               // // newElement.tabulator(options);
-
-               this.table.element = newElement;
-       };
-
-       //extract tabulator attribute options
-       HtmlTableImport.prototype._extractOptions = function (element, options, defaultOptions) {
-               var attributes = element.attributes;
-               var optionsArr = defaultOptions ? Object.assign([], defaultOptions) : Object.keys(options);
-               var optionsList = {};
-
-               optionsArr.forEach(function (item) {
-                       optionsList[item.toLowerCase()] = item;
-               });
-
-               for (var index in attributes) {
-                       var attrib = attributes[index];
-                       var name;
-
-                       if (attrib && (typeof attrib === 'undefined' ? 'undefined' : _typeof(attrib)) == "object" && attrib.name && attrib.name.indexOf("tabulator-") === 0) {
-                               name = attrib.name.replace("tabulator-", "");
-
-                               if (typeof optionsList[name] !== "undefined") {
-                                       options[optionsList[name]] = this._attribValue(attrib.value);
-                               }
-                       }
-               }
-       };
-
-       //get value of attribute
-       HtmlTableImport.prototype._attribValue = function (value) {
-               if (value === "true") {
-                       return true;
-               }
-
-               if (value === "false") {
-                       return false;
-               }
-
-               return value;
-       };
-
-       //find column if it has already been defined
-       HtmlTableImport.prototype._findCol = function (title) {
-               var match = this.table.options.columns.find(function (column) {
-                       return column.title === title;
-               });
-
-               return match || false;
-       };
-
-       //extract column from headers
-       HtmlTableImport.prototype._extractHeaders = function (headers, rows) {
-               for (var index = 0; index < headers.length; index++) {
-                       var header = headers[index],
-                           exists = false,
-                           col = this._findCol(header.textContent),
-                           width,
-                           attributes;
-
-                       if (col) {
-                               exists = true;
-                       } else {
-                               col = { title: header.textContent.trim() };
-                       }
-
-                       if (!col.field) {
-                               col.field = header.textContent.trim().toLowerCase().replace(" ", "_");
-                       }
-
-                       width = header.getAttribute("width");
-
-                       if (width && !col.width) {
-                               col.width = width;
-                       }
-
-                       //check for tablator inline options
-                       attributes = header.attributes;
-
-                       // //check for tablator inline options
-                       this._extractOptions(header, col, Column.prototype.defaultOptionList);
-
-                       this.fieldIndex[index] = col.field;
-
-                       if (col.field == this.table.options.index) {
-                               this.hasIndex = true;
-                       }
-
-                       if (!exists) {
-                               this.table.options.columns.push(col);
-                       }
-               }
-       };
-
-       //generate blank headers
-       HtmlTableImport.prototype._generateBlankHeaders = function (headers, rows) {
-               for (var index = 0; index < headers.length; index++) {
-                       var header = headers[index],
-                           col = { title: "", field: "col" + index };
-
-                       this.fieldIndex[index] = col.field;
-
-                       var width = header.getAttribute("width");
-
-                       if (width) {
-                               col.width = width;
-                       }
-
-                       this.table.options.columns.push(col);
-               }
-       };
-
-       Tabulator.prototype.registerModule("htmlTableImport", HtmlTableImport);
-       var Keybindings = function Keybindings(table) {
-               this.table = table; //hold Tabulator object
-               this.watchKeys = null;
-               this.pressedKeys = null;
-               this.keyupBinding = false;
-               this.keydownBinding = false;
-       };
-
-       Keybindings.prototype.initialize = function () {
-               var bindings = this.table.options.keybindings,
-                   mergedBindings = {};
-
-               this.watchKeys = {};
-               this.pressedKeys = [];
-
-               if (bindings !== false) {
-
-                       for (var key in this.bindings) {
-                               mergedBindings[key] = this.bindings[key];
-                       }
-
-                       if (Object.keys(bindings).length) {
-
-                               for (var _key in bindings) {
-                                       mergedBindings[_key] = bindings[_key];
-                               }
-                       }
-
-                       this.mapBindings(mergedBindings);
-                       this.bindEvents();
-               }
-       };
-
-       Keybindings.prototype.mapBindings = function (bindings) {
-               var _this60 = this;
-
-               var self = this;
-
-               var _loop2 = function _loop2(key) {
-
-                       if (_this60.actions[key]) {
-
-                               if (bindings[key]) {
-
-                                       if (_typeof(bindings[key]) !== "object") {
-                                               bindings[key] = [bindings[key]];
-                                       }
-
-                                       bindings[key].forEach(function (binding) {
-                                               self.mapBinding(key, binding);
-                                       });
-                               }
-                       } else {
-                               console.warn("Key Binding Error - no such action:", key);
-                       }
-               };
-
-               for (var key in bindings) {
-                       _loop2(key);
-               }
-       };
-
-       Keybindings.prototype.mapBinding = function (action, symbolsList) {
-               var self = this;
-
-               var binding = {
-                       action: this.actions[action],
-                       keys: [],
-                       ctrl: false,
-                       shift: false,
-                       meta: false
-               };
-
-               var symbols = symbolsList.toString().toLowerCase().split(" ").join("").split("+");
-
-               symbols.forEach(function (symbol) {
-                       switch (symbol) {
-                               case "ctrl":
-                                       binding.ctrl = true;
-                                       break;
-
-                               case "shift":
-                                       binding.shift = true;
-                                       break;
-
-                               case "meta":
-                                       binding.meta = true;
-                                       break;
-
-                               default:
-                                       symbol = parseInt(symbol);
-                                       binding.keys.push(symbol);
-
-                                       if (!self.watchKeys[symbol]) {
-                                               self.watchKeys[symbol] = [];
-                                       }
-
-                                       self.watchKeys[symbol].push(binding);
-                       }
-               });
-       };
-
-       Keybindings.prototype.bindEvents = function () {
-               var self = this;
-
-               this.keyupBinding = function (e) {
-                       var code = e.keyCode;
-                       var bindings = self.watchKeys[code];
-
-                       if (bindings) {
-
-                               self.pressedKeys.push(code);
-
-                               bindings.forEach(function (binding) {
-                                       self.checkBinding(e, binding);
-                               });
-                       }
-               };
-
-               this.keydownBinding = function (e) {
-                       var code = e.keyCode;
-                       var bindings = self.watchKeys[code];
-
-                       if (bindings) {
-
-                               var index = self.pressedKeys.indexOf(code);
-
-                               if (index > -1) {
-                                       self.pressedKeys.splice(index, 1);
-                               }
-                       }
-               };
-
-               this.table.element.addEventListener("keydown", this.keyupBinding);
-
-               this.table.element.addEventListener("keyup", this.keydownBinding);
-       };
-
-       Keybindings.prototype.clearBindings = function () {
-               if (this.keyupBinding) {
-                       this.table.element.removeEventListener("keydown", this.keyupBinding);
-               }
-
-               if (this.keydownBinding) {
-                       this.table.element.removeEventListener("keyup", this.keydownBinding);
-               }
-       };
-
-       Keybindings.prototype.checkBinding = function (e, binding) {
-               var self = this,
-                   match = true;
-
-               if (e.ctrlKey == binding.ctrl && e.shiftKey == binding.shift && e.metaKey == binding.meta) {
-                       binding.keys.forEach(function (key) {
-                               var index = self.pressedKeys.indexOf(key);
-
-                               if (index == -1) {
-                                       match = false;
-                               }
-                       });
-
-                       if (match) {
-                               binding.action.call(self, e);
-                       }
-
-                       return true;
-               }
-
-               return false;
-       };
-
-       //default bindings
-       Keybindings.prototype.bindings = {
-               navPrev: "shift + 9",
-               navNext: 9,
-               navUp: 38,
-               navDown: 40,
-               scrollPageUp: 33,
-               scrollPageDown: 34,
-               scrollToStart: 36,
-               scrollToEnd: 35,
-               undo: "ctrl + 90",
-               redo: "ctrl + 89",
-               copyToClipboard: "ctrl + 67"
-       };
-
-       //default actions
-       Keybindings.prototype.actions = {
-               keyBlock: function keyBlock(e) {
-                       e.stopPropagation();
-                       e.preventDefault();
-               },
-               scrollPageUp: function scrollPageUp(e) {
-                       var rowManager = this.table.rowManager,
-                           newPos = rowManager.scrollTop - rowManager.height,
-                           scrollMax = rowManager.element.scrollHeight;
-
-                       e.preventDefault();
-
-                       if (rowManager.displayRowsCount) {
-                               if (newPos >= 0) {
-                                       rowManager.element.scrollTop = newPos;
-                               } else {
-                                       rowManager.scrollToRow(rowManager.getDisplayRows()[0]);
-                               }
-                       }
-
-                       this.table.element.focus();
-               },
-               scrollPageDown: function scrollPageDown(e) {
-                       var rowManager = this.table.rowManager,
-                           newPos = rowManager.scrollTop + rowManager.height,
-                           scrollMax = rowManager.element.scrollHeight;
-
-                       e.preventDefault();
-
-                       if (rowManager.displayRowsCount) {
-                               if (newPos <= scrollMax) {
-                                       rowManager.element.scrollTop = newPos;
-                               } else {
-                                       rowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);
-                               }
-                       }
-
-                       this.table.element.focus();
-               },
-               scrollToStart: function scrollToStart(e) {
-                       var rowManager = this.table.rowManager;
-
-                       e.preventDefault();
-
-                       if (rowManager.displayRowsCount) {
-                               rowManager.scrollToRow(rowManager.getDisplayRows()[0]);
-                       }
-
-                       this.table.element.focus();
-               },
-               scrollToEnd: function scrollToEnd(e) {
-                       var rowManager = this.table.rowManager;
-
-                       e.preventDefault();
-
-                       if (rowManager.displayRowsCount) {
-                               rowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);
-                       }
-
-                       this.table.element.focus();
-               },
-               navPrev: function navPrev(e) {
-                       var cell = false;
-
-                       if (this.table.modExists("edit")) {
-                               cell = this.table.modules.edit.currentCell;
-
-                               if (cell) {
-                                       e.preventDefault();
-                                       cell.nav().prev();
-                               }
-                       }
-               },
-
-               navNext: function navNext(e) {
-                       var cell = false;
-                       var newRow = this.table.options.tabEndNewRow;
-                       var nav;
-
-                       if (this.table.modExists("edit")) {
-                               cell = this.table.modules.edit.currentCell;
-
-                               if (cell) {
-                                       e.preventDefault();
-
-                                       nav = cell.nav();
-
-                                       if (!nav.next()) {
-                                               if (newRow) {
-
-                                                       cell.getElement().firstChild.blur();
-
-                                                       if (newRow === true) {
-                                                               newRow = this.table.addRow({});
-                                                       } else {
-                                                               if (typeof newRow == "function") {
-                                                                       newRow = this.table.addRow(newRow(cell.row.getComponent()));
-                                                               } else {
-                                                                       newRow = this.table.addRow(Object.assign({}, newRow));
-                                                               }
-                                                       }
-
-                                                       newRow.then(function () {
-                                                               setTimeout(function () {
-                                                                       nav.next();
-                                                               });
-                                                       });
-                                               }
-                                       }
-                               }
-                       }
-               },
-
-               navLeft: function navLeft(e) {
-                       var cell = false;
-
-                       if (this.table.modExists("edit")) {
-                               cell = this.table.modules.edit.currentCell;
-
-                               if (cell) {
-                                       e.preventDefault();
-                                       cell.nav().left();
-                               }
-                       }
-               },
-
-               navRight: function navRight(e) {
-                       var cell = false;
-
-                       if (this.table.modExists("edit")) {
-                               cell = this.table.modules.edit.currentCell;
-
-                               if (cell) {
-                                       e.preventDefault();
-                                       cell.nav().right();
-                               }
-                       }
-               },
-
-               navUp: function navUp(e) {
-                       var cell = false;
-
-                       if (this.table.modExists("edit")) {
-                               cell = this.table.modules.edit.currentCell;
-
-                               if (cell) {
-                                       e.preventDefault();
-                                       cell.nav().up();
-                               }
-                       }
-               },
-
-               navDown: function navDown(e) {
-                       var cell = false;
-
-                       if (this.table.modExists("edit")) {
-                               cell = this.table.modules.edit.currentCell;
-
-                               if (cell) {
-                                       e.preventDefault();
-                                       cell.nav().down();
-                               }
-                       }
-               },
-
-               undo: function undo(e) {
-                       var cell = false;
-                       if (this.table.options.history && this.table.modExists("history") && this.table.modExists("edit")) {
-
-                               cell = this.table.modules.edit.currentCell;
-
-                               if (!cell) {
-                                       e.preventDefault();
-                                       this.table.modules.history.undo();
-                               }
-                       }
-               },
-
-               redo: function redo(e) {
-                       var cell = false;
-                       if (this.table.options.history && this.table.modExists("history") && this.table.modExists("edit")) {
-
-                               cell = this.table.modules.edit.currentCell;
-
-                               if (!cell) {
-                                       e.preventDefault();
-                                       this.table.modules.history.redo();
-                               }
-                       }
-               },
-
-               copyToClipboard: function copyToClipboard(e) {
-                       if (!this.table.modules.edit.currentCell) {
-                               if (this.table.modExists("clipboard", true)) {
-                                       this.table.modules.clipboard.copy(false, true);
-                               }
-                       }
-               }
-       };
-
-       Tabulator.prototype.registerModule("keybindings", Keybindings);
-       var Menu = function Menu(table) {
-               this.table = table; //hold Tabulator object
-               this.menuEl = false;
-               this.blurEvent = this.hideMenu.bind(this);
-               this.escEvent = this.escMenu.bind(this);
-               this.nestedMenuBlock = false;
-       };
-
-       Menu.prototype.initializeColumnHeader = function (column) {
-               var _this61 = this;
-
-               var headerMenuEl;
-
-               if (column.definition.headerContextMenu) {
-                       column.getElement().addEventListener("contextmenu", function (e) {
-                               var menu = typeof column.definition.headerContextMenu == "function" ? column.definition.headerContextMenu(column.getComponent()) : column.definition.headerContextMenu;
-
-                               e.preventDefault();
-
-                               _this61.loadMenu(e, column, menu);
-                       });
-               }
-
-               if (column.definition.headerMenu) {
-
-                       headerMenuEl = document.createElement("span");
-                       headerMenuEl.classList.add("tabulator-header-menu-button");
-                       headerMenuEl.innerHTML = "&vellip;";
-
-                       headerMenuEl.addEventListener("click", function (e) {
-                               var menu = typeof column.definition.headerMenu == "function" ? column.definition.headerMenu(column.getComponent()) : column.definition.headerMenu;
-                               e.stopPropagation();
-                               e.preventDefault();
-
-                               _this61.loadMenu(e, column, menu);
-                       });
-
-                       column.titleElement.insertBefore(headerMenuEl, column.titleElement.firstChild);
-               }
-       };
-
-       Menu.prototype.initializeCell = function (cell) {
-               var _this62 = this;
-
-               cell.getElement().addEventListener("contextmenu", function (e) {
-                       var menu = typeof cell.column.definition.contextMenu == "function" ? cell.column.definition.contextMenu(cell.getComponent()) : cell.column.definition.contextMenu;
-
-                       e.stopImmediatePropagation();
-
-                       _this62.loadMenu(e, cell, menu);
-               });
-       };
-
-       Menu.prototype.initializeRow = function (row) {
-               var _this63 = this;
-
-               row.getElement().addEventListener("contextmenu", function (e) {
-                       var menu = typeof _this63.table.options.rowContextMenu == "function" ? _this63.table.options.rowContextMenu(row.getComponent()) : _this63.table.options.rowContextMenu;
-
-                       _this63.loadMenu(e, row, menu);
-               });
-       };
-
-       Menu.prototype.initializeGroup = function (group) {
-               var _this64 = this;
-
-               group.getElement().addEventListener("contextmenu", function (e) {
-                       var menu = typeof _this64.table.options.groupContextMenu == "function" ? _this64.table.options.groupContextMenu(group.getComponent()) : _this64.table.options.groupContextMenu;
-
-                       _this64.loadMenu(e, group, menu);
-               });
-       };
-
-       Menu.prototype.loadMenu = function (e, component, menu) {
-               var _this65 = this;
-
-               var docHeight = Math.max(document.body.offsetHeight, window.innerHeight);
-
-               e.preventDefault();
-
-               //abort if no menu set
-               if (!menu || !menu.length) {
-                       return;
-               }
-
-               if (this.nestedMenuBlock) {
-                       //abort if child menu already open
-                       if (this.isOpen()) {
-                               return;
-                       }
-               } else {
-                       this.nestedMenuBlock = setTimeout(function () {
-                               _this65.nestedMenuBlock = false;
-                       }, 100);
-               }
-
-               this.hideMenu();
-
-               this.menuEl = document.createElement("div");
-               this.menuEl.classList.add("tabulator-menu");
-
-               menu.forEach(function (item) {
-                       var itemEl = document.createElement("div");
-                       var label = item.label;
-                       var disabled = item.disabled;
-
-                       if (item.separator) {
-                               itemEl.classList.add("tabulator-menu-separator");
-                       } else {
-                               itemEl.classList.add("tabulator-menu-item");
-
-                               if (typeof label == "function") {
-                                       label = label(component.getComponent());
-                               }
-
-                               if (label instanceof Node) {
-                                       itemEl.appendChild(label);
-                               } else {
-                                       itemEl.innerHTML = label;
-                               }
-
-                               if (typeof disabled == "function") {
-                                       disabled = disabled(component.getComponent());
-                               }
-
-                               if (disabled) {
-                                       itemEl.classList.add("tabulator-menu-item-disabled");
-                                       itemEl.addEventListener("click", function (e) {
-                                               e.stopPropagation();
-                                       });
-                               } else {
-                                       itemEl.addEventListener("click", function (e) {
-                                               _this65.hideMenu();
-                                               item.action(e, component.getComponent());
-                                       });
-                               }
-                       }
-
-                       _this65.menuEl.appendChild(itemEl);
-               });
-
-               this.menuEl.style.top = e.pageY + "px";
-               this.menuEl.style.left = e.pageX + "px";
-
-               document.body.addEventListener("click", this.blurEvent);
-               this.table.rowManager.element.addEventListener("scroll", this.blurEvent);
-
-               setTimeout(function () {
-                       document.body.addEventListener("contextmenu", _this65.blurEvent);
-               }, 100);
-
-               document.body.addEventListener("keydown", this.escEvent);
-
-               document.body.appendChild(this.menuEl);
-
-               //move menu to start on right edge if it is too close to the edge of the screen
-               if (e.pageX + this.menuEl.offsetWidth >= document.body.offsetWidth) {
-                       this.menuEl.style.left = "";
-                       this.menuEl.style.right = document.body.offsetWidth - e.pageX + "px";
-               }
-
-               //move menu to start on bottom edge if it is too close to the edge of the screen
-               if (e.pageY + this.menuEl.offsetHeight >= docHeight) {
-                       this.menuEl.style.top = "";
-                       this.menuEl.style.bottom = docHeight - e.pageY + "px";
-               }
-       };
-
-       Menu.prototype.isOpen = function () {
-               return !!this.menuEl.parentNode;
-       };
-
-       Menu.prototype.escMenu = function (e) {
-               if (e.keyCode == 27) {
-                       this.hideMenu();
-               }
-       };
-
-       Menu.prototype.hideMenu = function () {
-               if (this.menuEl.parentNode) {
-                       this.menuEl.parentNode.removeChild(this.menuEl);
-               }
-
-               if (this.escEvent) {
-                       document.body.removeEventListener("keydown", this.escEvent);
-               }
-
-               if (this.blurEvent) {
-                       document.body.removeEventListener("click", this.blurEvent);
-                       document.body.removeEventListener("contextmenu", this.blurEvent);
-                       this.table.rowManager.element.removeEventListener("scroll", this.blurEvent);
-               }
-       };
-
-       //default accessors
-       Menu.prototype.menus = {};
-
-       Tabulator.prototype.registerModule("menu", Menu);
-       var MoveColumns = function MoveColumns(table) {
-               this.table = table; //hold Tabulator object
-               this.placeholderElement = this.createPlaceholderElement();
-               this.hoverElement = false; //floating column header element
-               this.checkTimeout = false; //click check timeout holder
-               this.checkPeriod = 250; //period to wait on mousedown to consider this a move and not a click
-               this.moving = false; //currently moving column
-               this.toCol = false; //destination column
-               this.toColAfter = false; //position of moving column relative to the desitnation column
-               this.startX = 0; //starting position within header element
-               this.autoScrollMargin = 40; //auto scroll on edge when within margin
-               this.autoScrollStep = 5; //auto scroll distance in pixels
-               this.autoScrollTimeout = false; //auto scroll timeout
-               this.touchMove = false;
-
-               this.moveHover = this.moveHover.bind(this);
-               this.endMove = this.endMove.bind(this);
-       };
-
-       MoveColumns.prototype.createPlaceholderElement = function () {
-               var el = document.createElement("div");
-
-               el.classList.add("tabulator-col");
-               el.classList.add("tabulator-col-placeholder");
-
-               return el;
-       };
-
-       MoveColumns.prototype.initializeColumn = function (column) {
-               var self = this,
-                   config = {},
-                   colEl;
-
-               if (!column.modules.frozen) {
-
-                       colEl = column.getElement();
-
-                       config.mousemove = function (e) {
-                               if (column.parent === self.moving.parent) {
-                                       if ((self.touchMove ? e.touches[0].pageX : e.pageX) - Tabulator.prototype.helpers.elOffset(colEl).left + self.table.columnManager.element.scrollLeft > column.getWidth() / 2) {
-                                               if (self.toCol !== column || !self.toColAfter) {
-                                                       colEl.parentNode.insertBefore(self.placeholderElement, colEl.nextSibling);
-                                                       self.moveColumn(column, true);
-                                               }
-                                       } else {
-                                               if (self.toCol !== column || self.toColAfter) {
-                                                       colEl.parentNode.insertBefore(self.placeholderElement, colEl);
-                                                       self.moveColumn(column, false);
-                                               }
-                                       }
-                               }
-                       }.bind(self);
-
-                       colEl.addEventListener("mousedown", function (e) {
-                               self.touchMove = false;
-                               if (e.which === 1) {
-                                       self.checkTimeout = setTimeout(function () {
-                                               self.startMove(e, column);
-                                       }, self.checkPeriod);
-                               }
-                       });
-
-                       colEl.addEventListener("mouseup", function (e) {
-                               if (e.which === 1) {
-                                       if (self.checkTimeout) {
-                                               clearTimeout(self.checkTimeout);
-                                       }
-                               }
-                       });
-
-                       self.bindTouchEvents(column);
-               }
-
-               column.modules.moveColumn = config;
-       };
-
-       MoveColumns.prototype.bindTouchEvents = function (column) {
-               var self = this,
-                   colEl = column.getElement(),
-                   startXMove = false,
-                   //shifting center position of the cell
-               dir = false,
-                   currentCol,
-                   nextCol,
-                   prevCol,
-                   nextColWidth,
-                   prevColWidth,
-                   nextColWidthLast,
-                   prevColWidthLast;
-
-               colEl.addEventListener("touchstart", function (e) {
-                       self.checkTimeout = setTimeout(function () {
-                               self.touchMove = true;
-                               currentCol = column;
-                               nextCol = column.nextColumn();
-                               nextColWidth = nextCol ? nextCol.getWidth() / 2 : 0;
-                               prevCol = column.prevColumn();
-                               prevColWidth = prevCol ? prevCol.getWidth() / 2 : 0;
-                               nextColWidthLast = 0;
-                               prevColWidthLast = 0;
-                               startXMove = false;
-
-                               self.startMove(e, column);
-                       }, self.checkPeriod);
-               }, { passive: true });
-
-               colEl.addEventListener("touchmove", function (e) {
-                       var halfCol, diff, moveToCol;
-
-                       if (self.moving) {
-                               self.moveHover(e);
-
-                               if (!startXMove) {
-                                       startXMove = e.touches[0].pageX;
-                               }
-
-                               diff = e.touches[0].pageX - startXMove;
-
-                               if (diff > 0) {
-                                       if (nextCol && diff - nextColWidthLast > nextColWidth) {
-                                               moveToCol = nextCol;
-
-                                               if (moveToCol !== column) {
-                                                       startXMove = e.touches[0].pageX;
-                                                       moveToCol.getElement().parentNode.insertBefore(self.placeholderElement, moveToCol.getElement().nextSibling);
-                                                       self.moveColumn(moveToCol, true);
-                                               }
-                                       }
-                               } else {
-                                       if (prevCol && -diff - prevColWidthLast > prevColWidth) {
-                                               moveToCol = prevCol;
-
-                                               if (moveToCol !== column) {
-                                                       startXMove = e.touches[0].pageX;
-                                                       moveToCol.getElement().parentNode.insertBefore(self.placeholderElement, moveToCol.getElement());
-                                                       self.moveColumn(moveToCol, false);
-                                               }
-                                       }
-                               }
-
-                               if (moveToCol) {
-                                       currentCol = moveToCol;
-                                       nextCol = moveToCol.nextColumn();
-                                       nextColWidthLast = nextColWidth;
-                                       nextColWidth = nextCol ? nextCol.getWidth() / 2 : 0;
-                                       prevCol = moveToCol.prevColumn();
-                                       prevColWidthLast = prevColWidth;
-                                       prevColWidth = prevCol ? prevCol.getWidth() / 2 : 0;
-                               }
-                       }
-               }, { passive: true });
-
-               colEl.addEventListener("touchend", function (e) {
-                       if (self.checkTimeout) {
-                               clearTimeout(self.checkTimeout);
-                       }
-                       if (self.moving) {
-                               self.endMove(e);
-                       }
-               });
-       };
-
-       MoveColumns.prototype.startMove = function (e, column) {
-               var element = column.getElement();
-
-               this.moving = column;
-               this.startX = (this.touchMove ? e.touches[0].pageX : e.pageX) - Tabulator.prototype.helpers.elOffset(element).left;
-
-               this.table.element.classList.add("tabulator-block-select");
-
-               //create placeholder
-               this.placeholderElement.style.width = column.getWidth() + "px";
-               this.placeholderElement.style.height = column.getHeight() + "px";
-
-               element.parentNode.insertBefore(this.placeholderElement, element);
-               element.parentNode.removeChild(element);
-
-               //create hover element
-               this.hoverElement = element.cloneNode(true);
-               this.hoverElement.classList.add("tabulator-moving");
-
-               this.table.columnManager.getElement().appendChild(this.hoverElement);
-
-               this.hoverElement.style.left = "0";
-               this.hoverElement.style.bottom = "0";
-
-               if (!this.touchMove) {
-                       this._bindMouseMove();
-
-                       document.body.addEventListener("mousemove", this.moveHover);
-                       document.body.addEventListener("mouseup", this.endMove);
-               }
-
-               this.moveHover(e);
-       };
-
-       MoveColumns.prototype._bindMouseMove = function () {
-               this.table.columnManager.columnsByIndex.forEach(function (column) {
-                       if (column.modules.moveColumn.mousemove) {
-                               column.getElement().addEventListener("mousemove", column.modules.moveColumn.mousemove);
-                       }
-               });
-       };
-
-       MoveColumns.prototype._unbindMouseMove = function () {
-               this.table.columnManager.columnsByIndex.forEach(function (column) {
-                       if (column.modules.moveColumn.mousemove) {
-                               column.getElement().removeEventListener("mousemove", column.modules.moveColumn.mousemove);
-                       }
-               });
-       };
-
-       MoveColumns.prototype.moveColumn = function (column, after) {
-               var movingCells = this.moving.getCells();
-
-               this.toCol = column;
-               this.toColAfter = after;
-
-               if (after) {
-                       column.getCells().forEach(function (cell, i) {
-                               var cellEl = cell.getElement();
-                               cellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl.nextSibling);
-                       });
-               } else {
-                       column.getCells().forEach(function (cell, i) {
-                               var cellEl = cell.getElement();
-                               cellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl);
-                       });
-               }
-       };
-
-       MoveColumns.prototype.endMove = function (e) {
-               if (e.which === 1 || this.touchMove) {
-                       this._unbindMouseMove();
-
-                       this.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);
-                       this.placeholderElement.parentNode.removeChild(this.placeholderElement);
-                       this.hoverElement.parentNode.removeChild(this.hoverElement);
-
-                       this.table.element.classList.remove("tabulator-block-select");
-
-                       if (this.toCol) {
-                               this.table.columnManager.moveColumnActual(this.moving, this.toCol, this.toColAfter);
-                       }
-
-                       this.moving = false;
-                       this.toCol = false;
-                       this.toColAfter = false;
-
-                       if (!this.touchMove) {
-                               document.body.removeEventListener("mousemove", this.moveHover);
-                               document.body.removeEventListener("mouseup", this.endMove);
-                       }
-               }
-       };
-
-       MoveColumns.prototype.moveHover = function (e) {
-               var self = this,
-                   columnHolder = self.table.columnManager.getElement(),
-                   scrollLeft = columnHolder.scrollLeft,
-                   xPos = (self.touchMove ? e.touches[0].pageX : e.pageX) - Tabulator.prototype.helpers.elOffset(columnHolder).left + scrollLeft,
-                   scrollPos;
-
-               self.hoverElement.style.left = xPos - self.startX + "px";
-
-               if (xPos - scrollLeft < self.autoScrollMargin) {
-                       if (!self.autoScrollTimeout) {
-                               self.autoScrollTimeout = setTimeout(function () {
-                                       scrollPos = Math.max(0, scrollLeft - 5);
-                                       self.table.rowManager.getElement().scrollLeft = scrollPos;
-                                       self.autoScrollTimeout = false;
-                               }, 1);
-                       }
-               }
-
-               if (scrollLeft + columnHolder.clientWidth - xPos < self.autoScrollMargin) {
-                       if (!self.autoScrollTimeout) {
-                               self.autoScrollTimeout = setTimeout(function () {
-                                       scrollPos = Math.min(columnHolder.clientWidth, scrollLeft + 5);
-                                       self.table.rowManager.getElement().scrollLeft = scrollPos;
-                                       self.autoScrollTimeout = false;
-                               }, 1);
-                       }
-               }
-       };
-
-       Tabulator.prototype.registerModule("moveColumn", MoveColumns);
-
-       var MoveRows = function MoveRows(table) {
-
-               this.table = table; //hold Tabulator object
-               this.placeholderElement = this.createPlaceholderElement();
-               this.hoverElement = false; //floating row header element
-               this.checkTimeout = false; //click check timeout holder
-               this.checkPeriod = 150; //period to wait on mousedown to consider this a move and not a click
-               this.moving = false; //currently moving row
-               this.toRow = false; //destination row
-               this.toRowAfter = false; //position of moving row relative to the desitnation row
-               this.hasHandle = false; //row has handle instead of fully movable row
-               this.startY = 0; //starting Y position within header element
-               this.startX = 0; //starting X position within header element
-
-               this.moveHover = this.moveHover.bind(this);
-               this.endMove = this.endMove.bind(this);
-               this.tableRowDropEvent = false;
-
-               this.touchMove = false;
-
-               this.connection = false;
-               this.connectionSelectorsTables = false;
-               this.connectionSelectorsElements = false;
-               this.connectionElements = [];
-               this.connections = [];
-
-               this.connectedTable = false;
-               this.connectedRow = false;
-       };
-
-       MoveRows.prototype.createPlaceholderElement = function () {
-               var el = document.createElement("div");
-
-               el.classList.add("tabulator-row");
-               el.classList.add("tabulator-row-placeholder");
-
-               return el;
-       };
-
-       MoveRows.prototype.initialize = function (handle) {
-               this.connectionSelectorsTables = this.table.options.movableRowsConnectedTables;
-               this.connectionSelectorsElements = this.table.options.movableRowsConnectedElements;
-
-               this.connection = this.connectionSelectorsTables || this.connectionSelectorsElements;
-       };
-
-       MoveRows.prototype.setHandle = function (handle) {
-               this.hasHandle = handle;
-       };
-
-       MoveRows.prototype.initializeGroupHeader = function (group) {
-               var self = this,
-                   config = {},
-                   rowEl;
-
-               //inter table drag drop
-               config.mouseup = function (e) {
-                       self.tableRowDrop(e, row);
-               }.bind(self);
-
-               //same table drag drop
-               config.mousemove = function (e) {
-                       if (e.pageY - Tabulator.prototype.helpers.elOffset(group.element).top + self.table.rowManager.element.scrollTop > group.getHeight() / 2) {
-                               if (self.toRow !== group || !self.toRowAfter) {
-                                       var rowEl = group.getElement();
-                                       rowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);
-                                       self.moveRow(group, true);
-                               }
-                       } else {
-                               if (self.toRow !== group || self.toRowAfter) {
-                                       var rowEl = group.getElement();
-                                       if (rowEl.previousSibling) {
-                                               rowEl.parentNode.insertBefore(self.placeholderElement, rowEl);
-                                               self.moveRow(group, false);
-                                       }
-                               }
-                       }
-               }.bind(self);
-
-               group.modules.moveRow = config;
-       };
-
-       MoveRows.prototype.initializeRow = function (row) {
-               var self = this,
-                   config = {},
-                   rowEl;
-
-               //inter table drag drop
-               config.mouseup = function (e) {
-                       self.tableRowDrop(e, row);
-               }.bind(self);
-
-               //same table drag drop
-               config.mousemove = function (e) {
-                       if (e.pageY - Tabulator.prototype.helpers.elOffset(row.element).top + self.table.rowManager.element.scrollTop > row.getHeight() / 2) {
-                               if (self.toRow !== row || !self.toRowAfter) {
-                                       var rowEl = row.getElement();
-                                       rowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);
-                                       self.moveRow(row, true);
-                               }
-                       } else {
-                               if (self.toRow !== row || self.toRowAfter) {
-                                       var rowEl = row.getElement();
-                                       rowEl.parentNode.insertBefore(self.placeholderElement, rowEl);
-                                       self.moveRow(row, false);
-                               }
-                       }
-               }.bind(self);
-
-               if (!this.hasHandle) {
-
-                       rowEl = row.getElement();
-
-                       rowEl.addEventListener("mousedown", function (e) {
-                               if (e.which === 1) {
-                                       self.checkTimeout = setTimeout(function () {
-                                               self.startMove(e, row);
-                                       }, self.checkPeriod);
-                               }
-                       });
-
-                       rowEl.addEventListener("mouseup", function (e) {
-                               if (e.which === 1) {
-                                       if (self.checkTimeout) {
-                                               clearTimeout(self.checkTimeout);
-                                       }
-                               }
-                       });
-
-                       this.bindTouchEvents(row, row.getElement());
-               }
-
-               row.modules.moveRow = config;
-       };
-
-       MoveRows.prototype.initializeCell = function (cell) {
-               var self = this,
-                   cellEl = cell.getElement();
-
-               cellEl.addEventListener("mousedown", function (e) {
-                       if (e.which === 1) {
-                               self.checkTimeout = setTimeout(function () {
-                                       self.startMove(e, cell.row);
-                               }, self.checkPeriod);
-                       }
-               });
-
-               cellEl.addEventListener("mouseup", function (e) {
-                       if (e.which === 1) {
-                               if (self.checkTimeout) {
-                                       clearTimeout(self.checkTimeout);
-                               }
-                       }
-               });
-
-               this.bindTouchEvents(cell.row, cell.getElement());
-       };
-
-       MoveRows.prototype.bindTouchEvents = function (row, element) {
-               var self = this,
-                   startYMove = false,
-                   //shifting center position of the cell
-               dir = false,
-                   currentRow,
-                   nextRow,
-                   prevRow,
-                   nextRowHeight,
-                   prevRowHeight,
-                   nextRowHeightLast,
-                   prevRowHeightLast;
-
-               element.addEventListener("touchstart", function (e) {
-                       self.checkTimeout = setTimeout(function () {
-                               self.touchMove = true;
-                               currentRow = row;
-                               nextRow = row.nextRow();
-                               nextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0;
-                               prevRow = row.prevRow();
-                               prevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0;
-                               nextRowHeightLast = 0;
-                               prevRowHeightLast = 0;
-                               startYMove = false;
-
-                               self.startMove(e, row);
-                       }, self.checkPeriod);
-               }, { passive: true });
-               this.moving, this.toRow, this.toRowAfter;
-               element.addEventListener("touchmove", function (e) {
-
-                       var halfCol, diff, moveToRow;
-
-                       if (self.moving) {
-                               e.preventDefault();
-
-                               self.moveHover(e);
-
-                               if (!startYMove) {
-                                       startYMove = e.touches[0].pageY;
-                               }
-
-                               diff = e.touches[0].pageY - startYMove;
-
-                               if (diff > 0) {
-                                       if (nextRow && diff - nextRowHeightLast > nextRowHeight) {
-                                               moveToRow = nextRow;
-
-                                               if (moveToRow !== row) {
-                                                       startYMove = e.touches[0].pageY;
-                                                       moveToRow.getElement().parentNode.insertBefore(self.placeholderElement, moveToRow.getElement().nextSibling);
-                                                       self.moveRow(moveToRow, true);
-                                               }
-                                       }
-                               } else {
-                                       if (prevRow && -diff - prevRowHeightLast > prevRowHeight) {
-                                               moveToRow = prevRow;
-
-                                               if (moveToRow !== row) {
-                                                       startYMove = e.touches[0].pageY;
-                                                       moveToRow.getElement().parentNode.insertBefore(self.placeholderElement, moveToRow.getElement());
-                                                       self.moveRow(moveToRow, false);
-                                               }
-                                       }
-                               }
-
-                               if (moveToRow) {
-                                       currentRow = moveToRow;
-                                       nextRow = moveToRow.nextRow();
-                                       nextRowHeightLast = nextRowHeight;
-                                       nextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0;
-                                       prevRow = moveToRow.prevRow();
-                                       prevRowHeightLast = prevRowHeight;
-                                       prevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0;
-                               }
-                       }
-               });
-
-               element.addEventListener("touchend", function (e) {
-                       if (self.checkTimeout) {
-                               clearTimeout(self.checkTimeout);
-                       }
-                       if (self.moving) {
-                               self.endMove(e);
-                               self.touchMove = false;
-                       }
-               });
-       };
-
-       MoveRows.prototype._bindMouseMove = function () {
-               var self = this;
-
-               self.table.rowManager.getDisplayRows().forEach(function (row) {
-                       if ((row.type === "row" || row.type === "group") && row.modules.moveRow.mousemove) {
-                               row.getElement().addEventListener("mousemove", row.modules.moveRow.mousemove);
-                       }
-               });
-       };
-
-       MoveRows.prototype._unbindMouseMove = function () {
-               var self = this;
-
-               self.table.rowManager.getDisplayRows().forEach(function (row) {
-                       if ((row.type === "row" || row.type === "group") && row.modules.moveRow.mousemove) {
-                               row.getElement().removeEventListener("mousemove", row.modules.moveRow.mousemove);
-                       }
-               });
-       };
-
-       MoveRows.prototype.startMove = function (e, row) {
-               var element = row.getElement();
-
-               this.setStartPosition(e, row);
-
-               this.moving = row;
-
-               this.table.element.classList.add("tabulator-block-select");
-
-               //create placeholder
-               this.placeholderElement.style.width = row.getWidth() + "px";
-               this.placeholderElement.style.height = row.getHeight() + "px";
-
-               if (!this.connection) {
-                       element.parentNode.insertBefore(this.placeholderElement, element);
-                       element.parentNode.removeChild(element);
-               } else {
-                       this.table.element.classList.add("tabulator-movingrow-sending");
-                       this.connectToTables(row);
-               }
-
-               //create hover element
-               this.hoverElement = element.cloneNode(true);
-               this.hoverElement.classList.add("tabulator-moving");
-
-               if (this.connection) {
-                       document.body.appendChild(this.hoverElement);
-                       this.hoverElement.style.left = "0";
-                       this.hoverElement.style.top = "0";
-                       this.hoverElement.style.width = this.table.element.clientWidth + "px";
-                       this.hoverElement.style.whiteSpace = "nowrap";
-                       this.hoverElement.style.overflow = "hidden";
-                       this.hoverElement.style.pointerEvents = "none";
-               } else {
-                       this.table.rowManager.getTableElement().appendChild(this.hoverElement);
-
-                       this.hoverElement.style.left = "0";
-                       this.hoverElement.style.top = "0";
-
-                       this._bindMouseMove();
-               }
-
-               document.body.addEventListener("mousemove", this.moveHover);
-               document.body.addEventListener("mouseup", this.endMove);
-
-               this.moveHover(e);
-       };
-
-       MoveRows.prototype.setStartPosition = function (e, row) {
-               var pageX = this.touchMove ? e.touches[0].pageX : e.pageX,
-                   pageY = this.touchMove ? e.touches[0].pageY : e.pageY,
-                   element,
-                   position;
-
-               element = row.getElement();
-               if (this.connection) {
-                       position = element.getBoundingClientRect();
-
-                       this.startX = position.left - pageX + window.pageXOffset;
-                       this.startY = position.top - pageY + window.pageYOffset;
-               } else {
-                       this.startY = pageY - element.getBoundingClientRect().top;
-               }
-       };
-
-       MoveRows.prototype.endMove = function (e) {
-               if (!e || e.which === 1 || this.touchMove) {
-                       this._unbindMouseMove();
-
-                       if (!this.connection) {
-                               this.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);
-                               this.placeholderElement.parentNode.removeChild(this.placeholderElement);
-                       }
-
-                       this.hoverElement.parentNode.removeChild(this.hoverElement);
-
-                       this.table.element.classList.remove("tabulator-block-select");
-
-                       if (this.toRow) {
-                               this.table.rowManager.moveRow(this.moving, this.toRow, this.toRowAfter);
-                       }
-
-                       this.moving = false;
-                       this.toRow = false;
-                       this.toRowAfter = false;
-
-                       document.body.removeEventListener("mousemove", this.moveHover);
-                       document.body.removeEventListener("mouseup", this.endMove);
-
-                       if (this.connection) {
-                               this.table.element.classList.remove("tabulator-movingrow-sending");
-                               this.disconnectFromTables();
-                       }
-               }
-       };
-
-       MoveRows.prototype.moveRow = function (row, after) {
-               this.toRow = row;
-               this.toRowAfter = after;
-       };
-
-       MoveRows.prototype.moveHover = function (e) {
-               if (this.connection) {
-                       this.moveHoverConnections.call(this, e);
-               } else {
-                       this.moveHoverTable.call(this, e);
-               }
-       };
-
-       MoveRows.prototype.moveHoverTable = function (e) {
-               var rowHolder = this.table.rowManager.getElement(),
-                   scrollTop = rowHolder.scrollTop,
-                   yPos = (this.touchMove ? e.touches[0].pageY : e.pageY) - rowHolder.getBoundingClientRect().top + scrollTop,
-                   scrollPos;
-
-               this.hoverElement.style.top = yPos - this.startY + "px";
-       };
-
-       MoveRows.prototype.moveHoverConnections = function (e) {
-               this.hoverElement.style.left = this.startX + (this.touchMove ? e.touches[0].pageX : e.pageX) + "px";
-               this.hoverElement.style.top = this.startY + (this.touchMove ? e.touches[0].pageY : e.pageY) + "px";
-       };
-
-       MoveRows.prototype.elementRowDrop = function (e, element, row) {
-               if (this.table.options.movableRowsElementDrop) {
-                       this.table.options.movableRowsElementDrop(e, element, row ? row.getComponent() : false);
-               }
-       };
-
-       //establish connection with other tables
-       MoveRows.prototype.connectToTables = function (row) {
-               var _this66 = this;
-
-               var connectionTables;
-
-               if (this.connectionSelectorsTables) {
-                       connectionTables = this.table.modules.comms.getConnections(this.connectionSelectorsTables);
-
-                       this.table.options.movableRowsSendingStart.call(this.table, connectionTables);
-
-                       this.table.modules.comms.send(this.connectionSelectorsTables, "moveRow", "connect", {
-                               row: row
-                       });
-               }
-
-               if (this.connectionSelectorsElements) {
-
-                       this.connectionElements = [];
-
-                       if (!Array.isArray(this.connectionSelectorsElements)) {
-                               this.connectionSelectorsElements = [this.connectionSelectorsElements];
-                       }
-
-                       this.connectionSelectorsElements.forEach(function (query) {
-                               if (typeof query === "string") {
-                                       _this66.connectionElements = _this66.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(query)));
-                               } else {
-                                       _this66.connectionElements.push(query);
-                               }
-                       });
-
-                       this.connectionElements.forEach(function (element) {
-                               var dropEvent = function dropEvent(e) {
-                                       _this66.elementRowDrop(e, element, _this66.moving);
-                               };
-
-                               element.addEventListener("mouseup", dropEvent);
-                               element.tabulatorElementDropEvent = dropEvent;
-
-                               element.classList.add("tabulator-movingrow-receiving");
-                       });
-               }
-       };
-
-       //disconnect from other tables
-       MoveRows.prototype.disconnectFromTables = function () {
-               var connectionTables;
-
-               if (this.connectionSelectorsTables) {
-                       connectionTables = this.table.modules.comms.getConnections(this.connectionSelectorsTables);
-
-                       this.table.options.movableRowsSendingStop.call(this.table, connectionTables);
-
-                       this.table.modules.comms.send(this.connectionSelectorsTables, "moveRow", "disconnect");
-               }
-
-               this.connectionElements.forEach(function (element) {
-                       element.classList.remove("tabulator-movingrow-receiving");
-                       element.removeEventListener("mouseup", element.tabulatorElementDropEvent);
-                       delete element.tabulatorElementDropEvent;
-               });
-       };
-
-       //accept incomming connection
-       MoveRows.prototype.connect = function (table, row) {
-               var self = this;
-               if (!this.connectedTable) {
-                       this.connectedTable = table;
-                       this.connectedRow = row;
-
-                       this.table.element.classList.add("tabulator-movingrow-receiving");
-
-                       self.table.rowManager.getDisplayRows().forEach(function (row) {
-                               if (row.type === "row" && row.modules.moveRow && row.modules.moveRow.mouseup) {
-                                       row.getElement().addEventListener("mouseup", row.modules.moveRow.mouseup);
-                               }
-                       });
-
-                       self.tableRowDropEvent = self.tableRowDrop.bind(self);
-
-                       self.table.element.addEventListener("mouseup", self.tableRowDropEvent);
-
-                       this.table.options.movableRowsReceivingStart.call(this.table, row, table);
-
-                       return true;
-               } else {
-                       console.warn("Move Row Error - Table cannot accept connection, already connected to table:", this.connectedTable);
-                       return false;
-               }
-       };
-
-       //close incomming connection
-       MoveRows.prototype.disconnect = function (table) {
-               var self = this;
-               if (table === this.connectedTable) {
-                       this.connectedTable = false;
-                       this.connectedRow = false;
-
-                       this.table.element.classList.remove("tabulator-movingrow-receiving");
-
-                       self.table.rowManager.getDisplayRows().forEach(function (row) {
-                               if (row.type === "row" && row.modules.moveRow && row.modules.moveRow.mouseup) {
-                                       row.getElement().removeEventListener("mouseup", row.modules.moveRow.mouseup);
-                               }
-                       });
-
-                       self.table.element.removeEventListener("mouseup", self.tableRowDropEvent);
-
-                       this.table.options.movableRowsReceivingStop.call(this.table, table);
-               } else {
-                       console.warn("Move Row Error - trying to disconnect from non connected table");
-               }
-       };
-
-       MoveRows.prototype.dropComplete = function (table, row, success) {
-               var sender = false;
-
-               if (success) {
-
-                       switch (_typeof(this.table.options.movableRowsSender)) {
-                               case "string":
-                                       sender = this.senders[this.table.options.movableRowsSender];
-                                       break;
-
-                               case "function":
-                                       sender = this.table.options.movableRowsSender;
-                                       break;
-                       }
-
-                       if (sender) {
-                               sender.call(this, this.moving.getComponent(), row ? row.getComponent() : undefined, table);
-                       } else {
-                               if (this.table.options.movableRowsSender) {
-                                       console.warn("Mover Row Error - no matching sender found:", this.table.options.movableRowsSender);
-                               }
-                       }
-
-                       this.table.options.movableRowsSent.call(this.table, this.moving.getComponent(), row ? row.getComponent() : undefined, table);
-               } else {
-                       this.table.options.movableRowsSentFailed.call(this.table, this.moving.getComponent(), row ? row.getComponent() : undefined, table);
-               }
-
-               this.endMove();
-       };
-
-       MoveRows.prototype.tableRowDrop = function (e, row) {
-               var receiver = false,
-                   success = false;
-
-               console.trace("drop");
-
-               e.stopImmediatePropagation();
-
-               switch (_typeof(this.table.options.movableRowsReceiver)) {
-                       case "string":
-                               receiver = this.receivers[this.table.options.movableRowsReceiver];
-                               break;
-
-                       case "function":
-                               receiver = this.table.options.movableRowsReceiver;
-                               break;
-               }
-
-               if (receiver) {
-                       success = receiver.call(this, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);
-               } else {
-                       console.warn("Mover Row Error - no matching receiver found:", this.table.options.movableRowsReceiver);
-               }
-
-               if (success) {
-                       this.table.options.movableRowsReceived.call(this.table, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);
-               } else {
-                       this.table.options.movableRowsReceivedFailed.call(this.table, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);
-               }
-
-               this.table.modules.comms.send(this.connectedTable, "moveRow", "dropcomplete", {
-                       row: row,
-                       success: success
-               });
-       };
-
-       MoveRows.prototype.receivers = {
-               insert: function insert(fromRow, toRow, fromTable) {
-                       this.table.addRow(fromRow.getData(), undefined, toRow);
-                       return true;
-               },
-
-               add: function add(fromRow, toRow, fromTable) {
-                       this.table.addRow(fromRow.getData());
-                       return true;
-               },
-
-               update: function update(fromRow, toRow, fromTable) {
-                       if (toRow) {
-                               toRow.update(fromRow.getData());
-                               return true;
-                       }
-
-                       return false;
-               },
-
-               replace: function replace(fromRow, toRow, fromTable) {
-                       if (toRow) {
-                               this.table.addRow(fromRow.getData(), undefined, toRow);
-                               toRow.delete();
-                               return true;
-                       }
-
-                       return false;
-               }
-       };
-
-       MoveRows.prototype.senders = {
-               delete: function _delete(fromRow, toRow, toTable) {
-                       fromRow.delete();
-               }
-       };
-
-       MoveRows.prototype.commsReceived = function (table, action, data) {
-               switch (action) {
-                       case "connect":
-                               return this.connect(table, data.row);
-                               break;
-
-                       case "disconnect":
-                               return this.disconnect(table);
-                               break;
-
-                       case "dropcomplete":
-                               return this.dropComplete(table, data.row, data.success);
-                               break;
-               }
-       };
-
-       Tabulator.prototype.registerModule("moveRow", MoveRows);
-       var Mutator = function Mutator(table) {
-               this.table = table; //hold Tabulator object
-               this.allowedTypes = ["", "data", "edit", "clipboard"]; //list of muatation types
-               this.enabled = true;
-       };
-
-       //initialize column mutator
-       Mutator.prototype.initializeColumn = function (column) {
-               var self = this,
-                   match = false,
-                   config = {};
-
-               this.allowedTypes.forEach(function (type) {
-                       var key = "mutator" + (type.charAt(0).toUpperCase() + type.slice(1)),
-                           mutator;
-
-                       if (column.definition[key]) {
-                               mutator = self.lookupMutator(column.definition[key]);
-
-                               if (mutator) {
-                                       match = true;
-
-                                       config[key] = {
-                                               mutator: mutator,
-                                               params: column.definition[key + "Params"] || {}
-                                       };
-                               }
-                       }
-               });
-
-               if (match) {
-                       column.modules.mutate = config;
-               }
-       };
-
-       Mutator.prototype.lookupMutator = function (value) {
-               var mutator = false;
-
-               //set column mutator
-               switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
-                       case "string":
-                               if (this.mutators[value]) {
-                                       mutator = this.mutators[value];
-                               } else {
-                                       console.warn("Mutator Error - No such mutator found, ignoring: ", value);
-                               }
-                               break;
-
-                       case "function":
-                               mutator = value;
-                               break;
-               }
-
-               return mutator;
-       };
-
-       //apply mutator to row
-       Mutator.prototype.transformRow = function (data, type, updatedData) {
-               var self = this,
-                   key = "mutator" + (type.charAt(0).toUpperCase() + type.slice(1)),
-                   value;
-
-               if (this.enabled) {
-
-                       self.table.columnManager.traverse(function (column) {
-                               var mutator, params, component;
-
-                               if (column.modules.mutate) {
-                                       mutator = column.modules.mutate[key] || column.modules.mutate.mutator || false;
-
-                                       if (mutator) {
-                                               value = column.getFieldValue(typeof updatedData !== "undefined" ? updatedData : data);
-
-                                               if (type == "data" || typeof value !== "undefined") {
-                                                       component = column.getComponent();
-                                                       params = typeof mutator.params === "function" ? mutator.params(value, data, type, component) : mutator.params;
-                                                       column.setFieldValue(data, mutator.mutator(value, data, type, params, component));
-                                               }
-                                       }
-                               }
-                       });
-               }
-
-               return data;
-       };
-
-       //apply mutator to new cell value
-       Mutator.prototype.transformCell = function (cell, value) {
-               var mutator = cell.column.modules.mutate.mutatorEdit || cell.column.modules.mutate.mutator || false,
-                   tempData = {};
-
-               if (mutator) {
-                       tempData = Object.assign(tempData, cell.row.getData());
-                       cell.column.setFieldValue(tempData, value);
-                       return mutator.mutator(value, tempData, "edit", mutator.params, cell.getComponent());
-               } else {
-                       return value;
-               }
-       };
-
-       Mutator.prototype.enable = function () {
-               this.enabled = true;
-       };
-
-       Mutator.prototype.disable = function () {
-               this.enabled = false;
-       };
-
-       //default mutators
-       Mutator.prototype.mutators = {};
-
-       Tabulator.prototype.registerModule("mutator", Mutator);
-       var Page = function Page(table) {
-
-               this.table = table; //hold Tabulator object
-
-               this.mode = "local";
-               this.progressiveLoad = false;
-
-               this.size = 0;
-               this.page = 1;
-               this.count = 5;
-               this.max = 1;
-
-               this.displayIndex = 0; //index in display pipeline
-
-               this.initialLoad = true;
-
-               this.pageSizes = [];
-
-               this.dataReceivedNames = {};
-               this.dataSentNames = {};
-
-               this.createElements();
-       };
-
-       Page.prototype.createElements = function () {
-
-               var button;
-
-               this.element = document.createElement("span");
-               this.element.classList.add("tabulator-paginator");
-
-               this.pagesElement = document.createElement("span");
-               this.pagesElement.classList.add("tabulator-pages");
-
-               button = document.createElement("button");
-               button.classList.add("tabulator-page");
-               button.setAttribute("type", "button");
-               button.setAttribute("role", "button");
-               button.setAttribute("aria-label", "");
-               button.setAttribute("title", "");
-
-               this.firstBut = button.cloneNode(true);
-               this.firstBut.setAttribute("data-page", "first");
-
-               this.prevBut = button.cloneNode(true);
-               this.prevBut.setAttribute("data-page", "prev");
-
-               this.nextBut = button.cloneNode(true);
-               this.nextBut.setAttribute("data-page", "next");
-
-               this.lastBut = button.cloneNode(true);
-               this.lastBut.setAttribute("data-page", "last");
-
-               if (this.table.options.paginationSizeSelector) {
-                       this.pageSizeSelect = document.createElement("select");
-                       this.pageSizeSelect.classList.add("tabulator-page-size");
-               }
-       };
-
-       Page.prototype.generatePageSizeSelectList = function () {
-               var _this67 = this;
-
-               var pageSizes = [];
-
-               if (this.pageSizeSelect) {
-
-                       if (Array.isArray(this.table.options.paginationSizeSelector)) {
-                               pageSizes = this.table.options.paginationSizeSelector;
-                               this.pageSizes = pageSizes;
-
-                               if (this.pageSizes.indexOf(this.size) == -1) {
-                                       pageSizes.unshift(this.size);
-                               }
-                       } else {
-
-                               if (this.pageSizes.indexOf(this.size) == -1) {
-                                       pageSizes = [];
-
-                                       for (var _i9 = 1; _i9 < 5; _i9++) {
-                                               pageSizes.push(this.size * _i9);
-                                       }
-
-                                       this.pageSizes = pageSizes;
-                               } else {
-                                       pageSizes = this.pageSizes;
-                               }
-                       }
-
-                       while (this.pageSizeSelect.firstChild) {
-                               this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);
-                       }pageSizes.forEach(function (item) {
-                               var itemEl = document.createElement("option");
-                               itemEl.value = item;
-
-                               if (item === true) {
-                                       _this67.table.modules.localize.bind("pagination|all", function (value) {
-                                               itemEl.innerHTML = value;
-                                       });
-                               } else {
-                                       itemEl.innerHTML = item;
-                               }
-
-                               _this67.pageSizeSelect.appendChild(itemEl);
-                       });
-
-                       this.pageSizeSelect.value = this.size;
-               }
-       };
-
-       //setup pageination
-       Page.prototype.initialize = function (hidden) {
-               var self = this,
-                   pageSelectLabel,
-                   testElRow,
-                   testElCell;
-
-               //update param names
-               this.dataSentNames = Object.assign({}, this.paginationDataSentNames);
-               this.dataSentNames = Object.assign(this.dataSentNames, this.table.options.paginationDataSent);
-
-               this.dataReceivedNames = Object.assign({}, this.paginationDataReceivedNames);
-               this.dataReceivedNames = Object.assign(this.dataReceivedNames, this.table.options.paginationDataReceived);
-
-               //build pagination element
-
-               //bind localizations
-               self.table.modules.localize.bind("pagination|first", function (value) {
-                       self.firstBut.innerHTML = value;
-               });
-
-               self.table.modules.localize.bind("pagination|first_title", function (value) {
-                       self.firstBut.setAttribute("aria-label", value);
-                       self.firstBut.setAttribute("title", value);
-               });
-
-               self.table.modules.localize.bind("pagination|prev", function (value) {
-                       self.prevBut.innerHTML = value;
-               });
-
-               self.table.modules.localize.bind("pagination|prev_title", function (value) {
-                       self.prevBut.setAttribute("aria-label", value);
-                       self.prevBut.setAttribute("title", value);
-               });
-
-               self.table.modules.localize.bind("pagination|next", function (value) {
-                       self.nextBut.innerHTML = value;
-               });
-
-               self.table.modules.localize.bind("pagination|next_title", function (value) {
-                       self.nextBut.setAttribute("aria-label", value);
-                       self.nextBut.setAttribute("title", value);
-               });
-
-               self.table.modules.localize.bind("pagination|last", function (value) {
-                       self.lastBut.innerHTML = value;
-               });
-
-               self.table.modules.localize.bind("pagination|last_title", function (value) {
-                       self.lastBut.setAttribute("aria-label", value);
-                       self.lastBut.setAttribute("title", value);
-               });
-
-               //click bindings
-               self.firstBut.addEventListener("click", function () {
-                       self.setPage(1);
-               });
-
-               self.prevBut.addEventListener("click", function () {
-                       self.previousPage();
-               });
-
-               self.nextBut.addEventListener("click", function () {
-                       self.nextPage().then(function () {}).catch(function () {});
-               });
-
-               self.lastBut.addEventListener("click", function () {
-                       self.setPage(self.max);
-               });
-
-               if (self.table.options.paginationElement) {
-                       self.element = self.table.options.paginationElement;
-               }
-
-               if (this.pageSizeSelect) {
-                       pageSelectLabel = document.createElement("label");
-
-                       self.table.modules.localize.bind("pagination|page_size", function (value) {
-                               self.pageSizeSelect.setAttribute("aria-label", value);
-                               self.pageSizeSelect.setAttribute("title", value);
-                               pageSelectLabel.innerHTML = value;
-                       });
-
-                       self.element.appendChild(pageSelectLabel);
-                       self.element.appendChild(self.pageSizeSelect);
-
-                       self.pageSizeSelect.addEventListener("change", function (e) {
-                               self.setPageSize(self.pageSizeSelect.value == "true" ? true : self.pageSizeSelect.value);
-                               self.setPage(1).then(function () {}).catch(function () {});
-                       });
-               }
-
-               //append to DOM
-               self.element.appendChild(self.firstBut);
-               self.element.appendChild(self.prevBut);
-               self.element.appendChild(self.pagesElement);
-               self.element.appendChild(self.nextBut);
-               self.element.appendChild(self.lastBut);
-
-               if (!self.table.options.paginationElement && !hidden) {
-                       self.table.footerManager.append(self.element, self);
-               }
-
-               //set default values
-               self.mode = self.table.options.pagination;
-
-               if (self.table.options.paginationSize) {
-                       self.size = self.table.options.paginationSize;
-               } else {
-                       testElRow = document.createElement("div");
-                       testElRow.classList.add("tabulator-row");
-                       testElRow.style.visibility = hidden;
-
-                       testElCell = document.createElement("div");
-                       testElCell.classList.add("tabulator-cell");
-                       testElCell.innerHTML = "Page Row Test";
-
-                       testElRow.appendChild(testElCell);
-
-                       self.table.rowManager.getTableElement().appendChild(testElRow);
-
-                       self.size = Math.floor(self.table.rowManager.getElement().clientHeight / testElRow.offsetHeight);
-
-                       self.table.rowManager.getTableElement().removeChild(testElRow);
-               }
-
-               // self.page = self.table.options.paginationInitialPage || 1;
-               self.count = self.table.options.paginationButtonCount;
-
-               self.generatePageSizeSelectList();
-       };
-
-       Page.prototype.initializeProgressive = function (mode) {
-               this.initialize(true);
-               this.mode = "progressive_" + mode;
-               this.progressiveLoad = true;
-       };
-
-       Page.prototype.setDisplayIndex = function (index) {
-               this.displayIndex = index;
-       };
-
-       Page.prototype.getDisplayIndex = function () {
-               return this.displayIndex;
-       };
-
-       //calculate maximum page from number of rows
-       Page.prototype.setMaxRows = function (rowCount) {
-               if (!rowCount) {
-                       this.max = 1;
-               } else {
-                       this.max = this.size === true ? 1 : Math.ceil(rowCount / this.size);
-               }
-
-               if (this.page > this.max) {
-                       this.page = this.max;
-               }
-       };
-
-       //reset to first page without triggering action
-       Page.prototype.reset = function (force, columnsChanged) {
-               if (this.mode == "local" || force) {
-                       this.page = 1;
-               }
-
-               if (columnsChanged) {
-                       this.initialLoad = true;
-               }
-
-               return true;
-       };
-
-       //set the maxmum page
-       Page.prototype.setMaxPage = function (max) {
-
-               max = parseInt(max);
-
-               this.max = max || 1;
-
-               if (this.page > this.max) {
-                       this.page = this.max;
-                       this.trigger();
-               }
-       };
-
-       //set current page number
-       Page.prototype.setPage = function (page) {
-               var _this68 = this;
-
-               var self = this;
-
-               switch (page) {
-                       case "first":
-                               return this.setPage(1);
-                               break;
-
-                       case "prev":
-                               return this.previousPage();
-                               break;
-
-                       case "next":
-                               return this.nextPage();
-                               break;
-
-                       case "last":
-                               return this.setPage(this.max);
-                               break;
-               }
-
-               return new Promise(function (resolve, reject) {
-
-                       page = parseInt(page);
-
-                       if (page > 0 && page <= _this68.max) {
-                               _this68.page = page;
-                               _this68.trigger().then(function () {
-                                       resolve();
-                               }).catch(function () {
-                                       reject();
-                               });
-
-                               if (self.table.options.persistence && self.table.modExists("persistence", true) && self.table.modules.persistence.config.page) {
-                                       self.table.modules.persistence.save("page");
-                               }
-                       } else {
-                               console.warn("Pagination Error - Requested page is out of range of 1 - " + _this68.max + ":", page);
-                               reject();
-                       }
-               });
-       };
-
-       Page.prototype.setPageToRow = function (row) {
-               var _this69 = this;
-
-               return new Promise(function (resolve, reject) {
-
-                       var rows = _this69.table.rowManager.getDisplayRows(_this69.displayIndex - 1);
-                       var index = rows.indexOf(row);
-
-                       if (index > -1) {
-                               var page = _this69.size === true ? 1 : Math.ceil((index + 1) / _this69.size);
-
-                               _this69.setPage(page).then(function () {
-                                       resolve();
-                               }).catch(function () {
-                                       reject();
-                               });
-                       } else {
-                               console.warn("Pagination Error - Requested row is not visible");
-                               reject();
-                       }
-               });
-       };
-
-       Page.prototype.setPageSize = function (size) {
-               if (size !== true) {
-                       size = parseInt(size);
-               }
-
-               if (size > 0) {
-                       this.size = size;
-               }
-
-               if (this.pageSizeSelect) {
-                       // this.pageSizeSelect.value = size;
-                       this.generatePageSizeSelectList();
-               }
-
-               if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.page) {
-                       this.table.modules.persistence.save("page");
-               }
-       };
-
-       //setup the pagination buttons
-       Page.prototype._setPageButtons = function () {
-               var self = this;
-
-               var leftSize = Math.floor((this.count - 1) / 2);
-               var rightSize = Math.ceil((this.count - 1) / 2);
-               var min = this.max - this.page + leftSize + 1 < this.count ? this.max - this.count + 1 : Math.max(this.page - leftSize, 1);
-               var max = this.page <= rightSize ? Math.min(this.count, this.max) : Math.min(this.page + rightSize, this.max);
-
-               while (self.pagesElement.firstChild) {
-                       self.pagesElement.removeChild(self.pagesElement.firstChild);
-               }if (self.page == 1) {
-                       self.firstBut.disabled = true;
-                       self.prevBut.disabled = true;
-               } else {
-                       self.firstBut.disabled = false;
-                       self.prevBut.disabled = false;
-               }
-
-               if (self.page == self.max) {
-                       self.lastBut.disabled = true;
-                       self.nextBut.disabled = true;
-               } else {
-                       self.lastBut.disabled = false;
-                       self.nextBut.disabled = false;
-               }
-
-               for (var _i10 = min; _i10 <= max; _i10++) {
-                       if (_i10 > 0 && _i10 <= self.max) {
-                               self.pagesElement.appendChild(self._generatePageButton(_i10));
-                       }
-               }
-
-               this.footerRedraw();
-       };
-
-       Page.prototype._generatePageButton = function (page) {
-               var self = this,
-                   button = document.createElement("button");
-
-               button.classList.add("tabulator-page");
-               if (page == self.page) {
-                       button.classList.add("active");
-               }
-
-               button.setAttribute("type", "button");
-               button.setAttribute("role", "button");
-
-               self.table.modules.localize.bind("pagination|page_title", function (value) {
-                       button.setAttribute("aria-label", value + " " + page);
-                       button.setAttribute("title", value + " " + page);
-               });
-
-               button.setAttribute("data-page", page);
-               button.textContent = page;
-
-               button.addEventListener("click", function (e) {
-                       self.setPage(page);
-               });
-
-               return button;
-       };
-
-       //previous page
-       Page.prototype.previousPage = function () {
-               var _this70 = this;
-
-               return new Promise(function (resolve, reject) {
-                       if (_this70.page > 1) {
-                               _this70.page--;
-                               _this70.trigger().then(function () {
-                                       resolve();
-                               }).catch(function () {
-                                       reject();
-                               });
-
-                               if (_this70.table.options.persistence && _this70.table.modExists("persistence", true) && _this70.table.modules.persistence.config.page) {
-                                       _this70.table.modules.persistence.save("page");
-                               }
-                       } else {
-                               console.warn("Pagination Error - Previous page would be less than page 1:", 0);
-                               reject();
-                       }
-               });
-       };
-
-       //next page
-       Page.prototype.nextPage = function () {
-               var _this71 = this;
-
-               return new Promise(function (resolve, reject) {
-                       if (_this71.page < _this71.max) {
-                               _this71.page++;
-                               _this71.trigger().then(function () {
-                                       resolve();
-                               }).catch(function () {
-                                       reject();
-                               });
-
-                               if (_this71.table.options.persistence && _this71.table.modExists("persistence", true) && _this71.table.modules.persistence.config.page) {
-                                       _this71.table.modules.persistence.save("page");
-                               }
-                       } else {
-                               if (!_this71.progressiveLoad) {
-                                       console.warn("Pagination Error - Next page would be greater than maximum page of " + _this71.max + ":", _this71.max + 1);
-                               }
-                               reject();
-                       }
-               });
-       };
-
-       //return current page number
-       Page.prototype.getPage = function () {
-               return this.page;
-       };
-
-       //return max page number
-       Page.prototype.getPageMax = function () {
-               return this.max;
-       };
-
-       Page.prototype.getPageSize = function (size) {
-               return this.size;
-       };
-
-       Page.prototype.getMode = function () {
-               return this.mode;
-       };
-
-       //return appropriate rows for current page
-       Page.prototype.getRows = function (data) {
-               var output, start, end;
-
-               if (this.mode == "local") {
-                       output = [];
-
-                       if (this.size === true) {
-                               start = 0;
-                               end = data.length - 1;
-                       } else {
-                               start = this.size * (this.page - 1);
-                               end = start + parseInt(this.size);
-                       }
-
-                       this._setPageButtons();
-
-                       for (var _i11 = start; _i11 < end; _i11++) {
-                               if (data[_i11]) {
-                                       output.push(data[_i11]);
-                               }
-                       }
-
-                       return output;
-               } else {
-
-                       this._setPageButtons();
-
-                       return data.slice(0);
-               }
-       };
-
-       Page.prototype.trigger = function () {
-               var _this72 = this;
-
-               var left;
-
-               return new Promise(function (resolve, reject) {
-
-                       switch (_this72.mode) {
-                               case "local":
-                                       left = _this72.table.rowManager.scrollLeft;
-
-                                       _this72.table.rowManager.refreshActiveData("page");
-                                       _this72.table.rowManager.scrollHorizontal(left);
-
-                                       _this72.table.options.pageLoaded.call(_this72.table, _this72.getPage());
-                                       resolve();
-                                       break;
-
-                               case "remote":
-                               case "progressive_load":
-                               case "progressive_scroll":
-                                       _this72.table.modules.ajax.blockActiveRequest();
-                                       _this72._getRemotePage().then(function () {
-                                               resolve();
-                                       }).catch(function () {
-                                               reject();
-                                       });
-                                       break;
-
-                               default:
-                                       console.warn("Pagination Error - no such pagination mode:", _this72.mode);
-                                       reject();
-                       }
-               });
-       };
-
-       Page.prototype._getRemotePage = function () {
-               var _this73 = this;
-
-               var self = this,
-                   oldParams,
-                   pageParams;
-
-               return new Promise(function (resolve, reject) {
-
-                       if (!self.table.modExists("ajax", true)) {
-                               reject();
-                       }
-
-                       //record old params and restore after request has been made
-                       oldParams = Tabulator.prototype.helpers.deepClone(self.table.modules.ajax.getParams() || {});
-                       pageParams = self.table.modules.ajax.getParams();
-
-                       //configure request params
-                       pageParams[_this73.dataSentNames.page] = self.page;
-
-                       //set page size if defined
-                       if (_this73.size) {
-                               pageParams[_this73.dataSentNames.size] = _this73.size;
-                       }
-
-                       //set sort data if defined
-                       if (_this73.table.options.ajaxSorting && _this73.table.modExists("sort")) {
-                               var sorters = self.table.modules.sort.getSort();
-
-                               sorters.forEach(function (item) {
-                                       delete item.column;
-                               });
-
-                               pageParams[_this73.dataSentNames.sorters] = sorters;
-                       }
-
-                       //set filter data if defined
-                       if (_this73.table.options.ajaxFiltering && _this73.table.modExists("filter")) {
-                               var filters = self.table.modules.filter.getFilters(true, true);
-                               pageParams[_this73.dataSentNames.filters] = filters;
-                       }
-
-                       self.table.modules.ajax.setParams(pageParams);
-
-                       self.table.modules.ajax.sendRequest(_this73.progressiveLoad).then(function (data) {
-                               self._parseRemoteData(data);
-                               resolve();
-                       }).catch(function (e) {
-                               reject();
-                       });
-
-                       self.table.modules.ajax.setParams(oldParams);
-               });
-       };
-
-       Page.prototype._parseRemoteData = function (data) {
-               var self = this,
-                   left,
-                   data,
-                   margin;
-
-               if (typeof data[this.dataReceivedNames.last_page] === "undefined") {
-                       console.warn("Remote Pagination Error - Server response missing '" + this.dataReceivedNames.last_page + "' property");
-               }
-
-               if (data[this.dataReceivedNames.data]) {
-                       this.max = parseInt(data[this.dataReceivedNames.last_page]) || 1;
-
-                       if (this.progressiveLoad) {
-                               switch (this.mode) {
-                                       case "progressive_load":
-
-                                               if (this.page == 1) {
-                                                       this.table.rowManager.setData(data[this.dataReceivedNames.data], false, this.initialLoad && this.page == 1);
-                                               } else {
-                                                       this.table.rowManager.addRows(data[this.dataReceivedNames.data]);
-                                               }
-
-                                               if (this.page < this.max) {
-                                                       setTimeout(function () {
-                                                               self.nextPage().then(function () {}).catch(function () {});
-                                                       }, self.table.options.ajaxProgressiveLoadDelay);
-                                               }
-                                               break;
-
-                                       case "progressive_scroll":
-                                               data = this.table.rowManager.getData().concat(data[this.dataReceivedNames.data]);
-
-                                               this.table.rowManager.setData(data, true, this.initialLoad && this.page == 1);
-
-                                               margin = this.table.options.ajaxProgressiveLoadScrollMargin || this.table.rowManager.element.clientHeight * 2;
-
-                                               if (self.table.rowManager.element.scrollHeight <= self.table.rowManager.element.clientHeight + margin) {
-                                                       self.nextPage().then(function () {}).catch(function () {});
-                                               }
-                                               break;
-                               }
-                       } else {
-                               left = this.table.rowManager.scrollLeft;
-
-                               this.table.rowManager.setData(data[this.dataReceivedNames.data], false, this.initialLoad && this.page == 1);
-
-                               this.table.rowManager.scrollHorizontal(left);
-
-                               this.table.columnManager.scrollHorizontal(left);
-
-                               this.table.options.pageLoaded.call(this.table, this.getPage());
-                       }
-
-                       this.initialLoad = false;
-               } else {
-                       console.warn("Remote Pagination Error - Server response missing '" + this.dataReceivedNames.data + "' property");
-               }
-       };
-
-       //handle the footer element being redrawn
-       Page.prototype.footerRedraw = function () {
-               var footer = this.table.footerManager.element;
-
-               if (Math.ceil(footer.clientWidth) - footer.scrollWidth < 0) {
-                       this.pagesElement.style.display = 'none';
-               } else {
-                       this.pagesElement.style.display = '';
-
-                       if (Math.ceil(footer.clientWidth) - footer.scrollWidth < 0) {
-                               this.pagesElement.style.display = 'none';
-                       }
-               }
-       };
-
-       //set the paramter names for pagination requests
-       Page.prototype.paginationDataSentNames = {
-               "page": "page",
-               "size": "size",
-               "sorters": "sorters",
-               // "sort_dir":"sort_dir",
-               "filters": "filters"
-               // "filter_value":"filter_value",
-               // "filter_type":"filter_type",
-       };
-
-       //set the property names for pagination responses
-       Page.prototype.paginationDataReceivedNames = {
-               "current_page": "current_page",
-               "last_page": "last_page",
-               "data": "data"
-       };
-
-       Tabulator.prototype.registerModule("page", Page);
-
-       var Persistence = function Persistence(table) {
-               this.table = table; //hold Tabulator object
-               this.mode = "";
-               this.id = "";
-               // this.persistProps = ["field", "width", "visible"];
-               this.defWatcherBlock = false;
-               this.config = {};
-               this.readFunc = false;
-               this.writeFunc = false;
-       };
-
-       // Test for whether localStorage is available for use.
-       Persistence.prototype.localStorageTest = function () {
-               var testKey = "_tabulator_test";
-
-               try {
-                       window.localStorage.setItem(testKey, testKey);
-                       window.localStorage.removeItem(testKey);
-                       return true;
-               } catch (e) {
-                       return false;
-               }
-       };
-
-       //setup parameters
-       Persistence.prototype.initialize = function () {
-               //determine persistent layout storage type
-
-               var mode = this.table.options.persistenceMode,
-                   id = this.table.options.persistenceID,
-                   retreivedData;
-
-               this.mode = mode !== true ? mode : this.localStorageTest() ? "local" : "cookie";
-
-               if (this.table.options.persistenceReaderFunc) {
-                       if (typeof this.table.options.persistenceReaderFunc === "function") {
-                               this.readFunc = this.table.options.persistenceReaderFunc;
-                       } else {
-                               if (this.readers[this.table.options.persistenceReaderFunc]) {
-                                       this.readFunc = this.readers[this.table.options.persistenceReaderFunc];
-                               } else {
-                                       console.warn("Persistence Read Error - invalid reader set", this.table.options.persistenceReaderFunc);
-                               }
-                       }
-               } else {
-                       if (this.readers[this.mode]) {
-                               this.readFunc = this.readers[this.mode];
-                       } else {
-                               console.warn("Persistence Read Error - invalid reader set", this.mode);
-                       }
-               }
-
-               if (this.table.options.persistenceWriterFunc) {
-                       if (typeof this.table.options.persistenceWriterFunc === "function") {
-                               this.writeFunc = this.table.options.persistenceWriterFunc;
-                       } else {
-                               if (this.readers[this.table.options.persistenceWriterFunc]) {
-                                       this.writeFunc = this.readers[this.table.options.persistenceWriterFunc];
-                               } else {
-                                       console.warn("Persistence Write Error - invalid reader set", this.table.options.persistenceWriterFunc);
-                               }
-                       }
-               } else {
-                       if (this.writers[this.mode]) {
-                               this.writeFunc = this.writers[this.mode];
-                       } else {
-                               console.warn("Persistence Write Error - invalid writer set", this.mode);
-                       }
-               }
-
-               //set storage tag
-               this.id = "tabulator-" + (id || this.table.element.getAttribute("id") || "");
-
-               this.config = {
-                       sort: this.table.options.persistence === true || this.table.options.persistence.sort,
-                       filter: this.table.options.persistence === true || this.table.options.persistence.filter,
-                       group: this.table.options.persistence === true || this.table.options.persistence.group,
-                       page: this.table.options.persistence === true || this.table.options.persistence.page,
-                       columns: this.table.options.persistence === true ? ["title", "width", "visible"] : this.table.options.persistence.columns
-               };
-
-               //load pagination data if needed
-               if (this.config.page) {
-                       retreivedData = this.retreiveData("page");
-
-                       if (retreivedData) {
-                               if (typeof retreivedData.paginationSize !== "undefined" && (this.config.page === true || this.config.page.size)) {
-                                       this.table.options.paginationSize = retreivedData.paginationSize;
-                               }
-
-                               if (typeof retreivedData.paginationInitialPage !== "undefined" && (this.config.page === true || this.config.page.page)) {
-                                       this.table.options.paginationInitialPage = retreivedData.paginationInitialPage;
-                               }
-                       }
-               }
-
-               //load group data if needed
-               if (this.config.group) {
-                       retreivedData = this.retreiveData("group");
-
-                       if (retreivedData) {
-                               if (typeof retreivedData.groupBy !== "undefined" && (this.config.group === true || this.config.group.groupBy)) {
-                                       this.table.options.groupBy = retreivedData.groupBy;
-                               }
-                               if (typeof retreivedData.groupStartOpen !== "undefined" && (this.config.group === true || this.config.group.groupStartOpen)) {
-                                       this.table.options.groupStartOpen = retreivedData.groupStartOpen;
-                               }
-                               if (typeof retreivedData.groupHeader !== "undefined" && (this.config.group === true || this.config.group.groupHeader)) {
-                                       this.table.options.groupHeader = retreivedData.groupHeader;
-                               }
-                       }
-               }
-       };
-
-       Persistence.prototype.initializeColumn = function (column) {
-               var self = this,
-                   def,
-                   keys;
-
-               if (this.config.columns) {
-                       this.defWatcherBlock = true;
-
-                       def = column.getDefinition();
-
-                       keys = this.config.columns === true ? Object.keys(def) : this.config.columns;
-
-                       keys.forEach(function (key) {
-                               var props = Object.getOwnPropertyDescriptor(def, key);
-                               var value = def[key];
-                               if (props) {
-                                       Object.defineProperty(def, key, {
-                                               set: function set(newValue) {
-                                                       value = newValue;
-
-                                                       if (!self.defWatcherBlock) {
-                                                               self.save("columns");
-                                                       }
-
-                                                       if (props.set) {
-                                                               props.set(newValue);
-                                                       }
-                                               },
-                                               get: function get() {
-                                                       if (props.get) {
-                                                               props.get();
-                                                       }
-                                                       return value;
-                                               }
-                                       });
-                               }
-                       });
-
-                       this.defWatcherBlock = false;
-               }
-       };
-
-       //load saved definitions
-       Persistence.prototype.load = function (type, current) {
-               var data = this.retreiveData(type);
-
-               if (current) {
-                       data = data ? this.mergeDefinition(current, data) : current;
-               }
-
-               return data;
-       };
-
-       //retreive data from memory
-       Persistence.prototype.retreiveData = function (type) {
-               return this.readFunc ? this.readFunc(this.id, type) : false;
-       };
-
-       //merge old and new column definitions
-       Persistence.prototype.mergeDefinition = function (oldCols, newCols) {
-               var self = this,
-                   output = [];
-
-               // oldCols = oldCols || [];
-               newCols = newCols || [];
-
-               newCols.forEach(function (column, to) {
-
-                       var from = self._findColumn(oldCols, column),
-                           keys;
-
-                       if (from) {
-
-                               if (self.config.columns === true || self.config.columns == undefined) {
-                                       keys = Object.keys(from);
-                                       keys.push("width");
-                               } else {
-                                       keys = self.config.columns;
-                               }
-
-                               keys.forEach(function (key) {
-                                       if (typeof column[key] !== "undefined") {
-                                               from[key] = column[key];
-                                       }
-                               });
-
-                               if (from.columns) {
-                                       from.columns = self.mergeDefinition(from.columns, column.columns);
-                               }
-
-                               output.push(from);
-                       }
-               });
-
-               oldCols.forEach(function (column, i) {
-                       var from = self._findColumn(newCols, column);
-                       if (!from) {
-                               if (output.length > i) {
-                                       output.splice(i, 0, column);
-                               } else {
-                                       output.push(column);
-                               }
-                       }
-               });
-
-               return output;
-       };
-
-       //find matching columns
-       Persistence.prototype._findColumn = function (columns, subject) {
-               var type = subject.columns ? "group" : subject.field ? "field" : "object";
-
-               return columns.find(function (col) {
-                       switch (type) {
-                               case "group":
-                                       return col.title === subject.title && col.columns.length === subject.columns.length;
-                                       break;
-
-                               case "field":
-                                       return col.field === subject.field;
-                                       break;
-
-                               case "object":
-                                       return col === subject;
-                                       break;
-                       }
-               });
-       };
-
-       //save data
-       Persistence.prototype.save = function (type) {
-               var data = {};
-
-               switch (type) {
-                       case "columns":
-                               data = this.parseColumns(this.table.columnManager.getColumns());
-                               break;
-
-                       case "filter":
-                               data = this.table.modules.filter.getFilters();
-                               break;
-
-                       case "sort":
-                               data = this.validateSorters(this.table.modules.sort.getSort());
-                               break;
-
-                       case "group":
-                               data = this.getGroupConfig();
-                               break;
-
-                       case "page":
-                               data = this.getPageConfig();
-                               break;
-               }
-
-               if (this.writeFunc) {
-                       this.writeFunc(this.id, type, data);
-               }
-       };
-
-       //ensure sorters contain no function data
-       Persistence.prototype.validateSorters = function (data) {
-               data.forEach(function (item) {
-                       item.column = item.field;
-                       delete item.field;
-               });
-
-               return data;
-       };
-
-       Persistence.prototype.getGroupConfig = function () {
-               if (this.config.group) {
-                       if (this.config.group === true || this.config.group.groupBy) {
-                               data.groupBy = this.table.options.groupBy;
-                       }
-
-                       if (this.config.group === true || this.config.group.groupStartOpen) {
-                               data.groupStartOpen = this.table.options.groupStartOpen;
-                       }
-
-                       if (this.config.group === true || this.config.group.groupHeader) {
-                               data.groupHeader = this.table.options.groupHeader;
-                       }
-               }
-
-               return data;
-       };
-
-       Persistence.prototype.getPageConfig = function () {
-               var data = {};
-
-               if (this.config.page) {
-                       if (this.config.page === true || this.config.page.size) {
-                               data.paginationSize = this.table.modules.page.getPageSize();
-                       }
-
-                       if (this.config.page === true || this.config.page.page) {
-                               data.paginationInitialPage = this.table.modules.page.getPage();
-                       }
-               }
-
-               return data;
-       };
-
-       //parse columns for data to store
-       Persistence.prototype.parseColumns = function (columns) {
-               var self = this,
-                   definitions = [];
-
-               columns.forEach(function (column) {
-                       var defStore = {},
-                           colDef = column.getDefinition(),
-                           keys;
-
-                       if (column.isGroup) {
-                               defStore.title = colDef.title;
-                               defStore.columns = self.parseColumns(column.getColumns());
-                       } else {
-                               defStore.field = column.getField();
-
-                               if (self.config.columns === true || self.config.columns == undefined) {
-                                       keys = Object.keys(colDef);
-                                       keys.push("width");
-                               } else {
-                                       keys = self.config.columns;
-                               }
-
-                               keys.forEach(function (key) {
-
-                                       switch (key) {
-                                               case "width":
-                                                       defStore.width = column.getWidth();
-                                                       break;
-                                               case "visible":
-                                                       defStore.visible = column.visible;
-                                                       break;
-
-                                               default:
-                                                       defStore[key] = colDef[key];
-                                       }
-                               });
-                       }
-
-                       definitions.push(defStore);
-               });
-
-               return definitions;
-       };
-
-       // read peristence information from storage
-       Persistence.prototype.readers = {
-               local: function local(id, type) {
-                       var data = localStorage.getItem(id + "-" + type);
-
-                       return data ? JSON.parse(data) : false;
-               },
-               cookie: function cookie(id, type) {
-                       var cookie = document.cookie,
-                           key = id + "-" + type,
-                           cookiePos = cookie.indexOf(key + "="),
-                           end,
-                           data;
-
-                       //if cookie exists, decode and load column data into tabulator
-                       if (cookiePos > -1) {
-                               cookie = cookie.substr(cookiePos);
-
-                               end = cookie.indexOf(";");
-
-                               if (end > -1) {
-                                       cookie = cookie.substr(0, end);
-                               }
-
-                               data = cookie.replace(key + "=", "");
-                       }
-
-                       return data ? JSON.parse(data) : false;
-               }
-       };
-
-       //write persistence information to storage
-       Persistence.prototype.writers = {
-               local: function local(id, type, data) {
-                       localStorage.setItem(id + "-" + type, JSON.stringify(data));
-               },
-               cookie: function cookie(id, type, data) {
-                       var expireDate = new Date();
-
-                       expireDate.setDate(expireDate.getDate() + 10000);
-
-                       document.cookie = id + "-" + type + "=" + JSON.stringify(data) + "; expires=" + expireDate.toUTCString();
-               }
-       };
-
-       Tabulator.prototype.registerModule("persistence", Persistence);
-
-       var Print = function Print(table) {
-               this.table = table; //hold Tabulator object
-               this.element = false;
-               this.manualBlock = false;
-       };
-
-       Print.prototype.initialize = function () {
-               window.addEventListener("beforeprint", this.replaceTable.bind(this));
-               window.addEventListener("afterprint", this.cleanup.bind(this));
-       };
-
-       Print.prototype.replaceTable = function () {
-               if (!this.manualBlock) {
-                       this.element = document.createElement("div");
-                       this.element.classList.add("tabulator-print-table");
-
-                       this.element.appendChild(this.table.modules.export.genereateTable(this.table.options.printConfig, this.table.options.printStyled, this.table.options.printRowRange, "print"));
-
-                       this.table.element.style.display = "none";
-
-                       this.table.element.parentNode.insertBefore(this.element, this.table.element);
-               }
-       };
-
-       Print.prototype.cleanup = function () {
-               document.body.classList.remove("tabulator-print-fullscreen-hide");
-
-               if (this.element && this.element.parentNode) {
-                       this.element.parentNode.removeChild(this.element);
-                       this.table.element.style.display = "";
-               }
-       };
-
-       Print.prototype.printFullscreen = function (visible, style, config) {
-               var scrollX = window.scrollX,
-                   scrollY = window.scrollY,
-                   headerEl = document.createElement("div"),
-                   footerEl = document.createElement("div"),
-                   tableEl = this.table.modules.export.genereateTable(typeof config != "undefined" ? config : this.table.options.printConfig, typeof style != "undefined" ? style : this.table.options.printStyled, visible, "print"),
-                   headerContent,
-                   footerContent;
-
-               this.manualBlock = true;
-
-               this.element = document.createElement("div");
-               this.element.classList.add("tabulator-print-fullscreen");
-
-               if (this.table.options.printHeader) {
-                       headerEl.classList.add("tabulator-print-header");
-
-                       headerContent = typeof this.table.options.printHeader == "function" ? this.table.options.printHeader.call(this.table) : this.table.options.printHeader;
-
-                       if (typeof headerContent == "string") {
-                               headerEl.innerHTML = headerContent;
-                       } else {
-                               headerEl.appendChild(headerContent);
-                       }
-
-                       this.element.appendChild(headerEl);
-               }
-
-               this.element.appendChild(tableEl);
-
-               if (this.table.options.printFooter) {
-                       footerEl.classList.add("tabulator-print-footer");
-
-                       footerContent = typeof this.table.options.printFooter == "function" ? this.table.options.printFooter.call(this.table) : this.table.options.printFooter;
-
-                       if (typeof footerContent == "string") {
-                               footerEl.innerHTML = footerContent;
-                       } else {
-                               footerEl.appendChild(footerContent);
-                       }
-
-                       this.element.appendChild(footerEl);
-               }
-
-               document.body.classList.add("tabulator-print-fullscreen-hide");
-               document.body.appendChild(this.element);
-
-               if (this.table.options.printFormatter) {
-                       this.table.options.printFormatter(this.element, tableEl);
-               }
-
-               window.print();
-
-               this.cleanup();
-
-               window.scrollTo(scrollX, scrollY);
-
-               this.manualBlock = false;
-       };
-
-       Tabulator.prototype.registerModule("print", Print);
-       var ReactiveData = function ReactiveData(table) {
-               this.table = table; //hold Tabulator object
-               this.data = false;
-               this.blocked = false; //block reactivity while performing update
-               this.origFuncs = {}; // hold original data array functions to allow replacement after data is done with
-               this.currentVersion = 0;
-       };
-
-       ReactiveData.prototype.watchData = function (data) {
-               var self = this,
-                   pushFunc,
-                   version;
-
-               this.currentVersion++;
-
-               version = this.currentVersion;
-
-               self.unwatchData();
-
-               self.data = data;
-
-               //override array push function
-               self.origFuncs.push = data.push;
-
-               Object.defineProperty(self.data, "push", {
-                       enumerable: false,
-                       configurable: true,
-                       value: function value() {
-                               var args = Array.from(arguments);
-
-                               if (!self.blocked && version === self.currentVersion) {
-                                       args.forEach(function (arg) {
-                                               self.table.rowManager.addRowActual(arg, false);
-                                       });
-                               }
-
-                               return self.origFuncs.push.apply(data, arguments);
-                       }
-               });
-
-               //override array unshift function
-               self.origFuncs.unshift = data.unshift;
-
-               Object.defineProperty(self.data, "unshift", {
-                       enumerable: false,
-                       configurable: true,
-                       value: function value() {
-                               var args = Array.from(arguments);
-
-                               if (!self.blocked && version === self.currentVersion) {
-                                       args.forEach(function (arg) {
-                                               self.table.rowManager.addRowActual(arg, true);
-                                       });
-                               }
-
-                               return self.origFuncs.unshift.apply(data, arguments);
-                       }
-               });
-
-               //override array shift function
-               self.origFuncs.shift = data.shift;
-
-               Object.defineProperty(self.data, "shift", {
-                       enumerable: false,
-                       configurable: true,
-                       value: function value() {
-                               var row;
-
-                               if (!self.blocked && version === self.currentVersion) {
-                                       if (self.data.length) {
-                                               row = self.table.rowManager.getRowFromDataObject(self.data[0]);
-
-                                               if (row) {
-                                                       row.deleteActual();
-                                               }
-                                       }
-                               }
-
-                               return self.origFuncs.shift.call(data);
-                       }
-               });
-
-               //override array pop function
-               self.origFuncs.pop = data.pop;
-
-               Object.defineProperty(self.data, "pop", {
-                       enumerable: false,
-                       configurable: true,
-                       value: function value() {
-                               var row;
-                               if (!self.blocked && version === self.currentVersion) {
-                                       if (self.data.length) {
-                                               row = self.table.rowManager.getRowFromDataObject(self.data[self.data.length - 1]);
-
-                                               if (row) {
-                                                       row.deleteActual();
-                                               }
-                                       }
-                               }
-                               return self.origFuncs.pop.call(data);
-                       }
-               });
-
-               //override array splice function
-               self.origFuncs.splice = data.splice;
-
-               Object.defineProperty(self.data, "splice", {
-                       enumerable: false,
-                       configurable: true,
-                       value: function value() {
-                               var args = Array.from(arguments),
-                                   start = args[0] < 0 ? data.length + args[0] : args[0],
-                                   end = args[1],
-                                   newRows = args[2] ? args.slice(2) : false,
-                                   startRow;
-
-                               if (!self.blocked && version === self.currentVersion) {
-
-                                       //add new rows
-                                       if (newRows) {
-                                               startRow = data[start] ? self.table.rowManager.getRowFromDataObject(data[start]) : false;
-
-                                               if (startRow) {
-                                                       newRows.forEach(function (rowData) {
-                                                               self.table.rowManager.addRowActual(rowData, true, startRow, true);
-                                                       });
-                                               } else {
-                                                       newRows = newRows.slice().reverse();
-
-                                                       newRows.forEach(function (rowData) {
-                                                               self.table.rowManager.addRowActual(rowData, true, false, true);
-                                                       });
-                                               }
-                                       }
-
-                                       //delete removed rows
-                                       if (end !== 0) {
-                                               var oldRows = data.slice(start, typeof args[1] === "undefined" ? args[1] : start + end);
-
-                                               oldRows.forEach(function (rowData, i) {
-                                                       var row = self.table.rowManager.getRowFromDataObject(rowData);
-
-                                                       if (row) {
-                                                               row.deleteActual(i !== oldRows.length - 1);
-                                                       }
-                                               });
-                                       }
-
-                                       if (newRows || end !== 0) {
-                                               self.table.rowManager.reRenderInPosition();
-                                       }
-                               }
-
-                               return self.origFuncs.splice.apply(data, arguments);
-                       }
-               });
-       };
-
-       ReactiveData.prototype.unwatchData = function () {
-               if (this.data !== false) {
-                       for (var key in this.origFuncs) {
-                               Object.defineProperty(this.data, key, {
-                                       enumerable: true,
-                                       configurable: true,
-                                       writable: true,
-                                       value: this.origFuncs.key
-                               });
-                       }
-               }
-       };
-
-       ReactiveData.prototype.watchRow = function (row) {
-               var self = this,
-                   data = row.getData();
-
-               this.blocked = true;
-
-               for (var key in data) {
-                       this.watchKey(row, data, key);
-               }
-
-               this.blocked = false;
-       };
-
-       ReactiveData.prototype.watchKey = function (row, data, key) {
-               var self = this,
-                   props = Object.getOwnPropertyDescriptor(data, key),
-                   value = data[key],
-                   version = this.currentVersion;
-
-               Object.defineProperty(data, key, {
-                       set: function set(newValue) {
-                               value = newValue;
-                               if (!self.blocked && version === self.currentVersion) {
-                                       var update = {};
-                                       update[key] = newValue;
-                                       row.updateData(update);
-                               }
-
-                               if (props.set) {
-                                       props.set(newValue);
-                               }
-                       },
-                       get: function get() {
-
-                               if (props.get) {
-                                       props.get();
-                               }
-
-                               return value;
-                       }
-               });
-       };
-
-       ReactiveData.prototype.unwatchRow = function (row) {
-               var data = row.getData();
-
-               for (var key in data) {
-                       Object.defineProperty(data, key, {
-                               value: data[key]
-                       });
-               }
-       };
-
-       ReactiveData.prototype.block = function () {
-               this.blocked = true;
-       };
-
-       ReactiveData.prototype.unblock = function () {
-               this.blocked = false;
-       };
-
-       Tabulator.prototype.registerModule("reactiveData", ReactiveData);
-
-       var ResizeColumns = function ResizeColumns(table) {
-               this.table = table; //hold Tabulator object
-               this.startColumn = false;
-               this.startX = false;
-               this.startWidth = false;
-               this.handle = null;
-               this.prevHandle = null;
-       };
-
-       ResizeColumns.prototype.initializeColumn = function (type, column, element) {
-               var self = this,
-                   variableHeight = false,
-                   mode = this.table.options.resizableColumns;
-
-               //set column resize mode
-               if (type === "header") {
-                       variableHeight = column.definition.formatter == "textarea" || column.definition.variableHeight;
-                       column.modules.resize = { variableHeight: variableHeight };
-               }
-
-               if (mode === true || mode == type) {
-
-                       var handle = document.createElement('div');
-                       handle.className = "tabulator-col-resize-handle";
-
-                       var prevHandle = document.createElement('div');
-                       prevHandle.className = "tabulator-col-resize-handle prev";
-
-                       handle.addEventListener("click", function (e) {
-                               e.stopPropagation();
-                       });
-
-                       var handleDown = function handleDown(e) {
-                               var nearestColumn = column.getLastColumn();
-
-                               if (nearestColumn && self._checkResizability(nearestColumn)) {
-                                       self.startColumn = column;
-                                       self._mouseDown(e, nearestColumn, handle);
-                               }
-                       };
-
-                       handle.addEventListener("mousedown", handleDown);
-                       handle.addEventListener("touchstart", handleDown, { passive: true });
-
-                       //reszie column on  double click
-                       handle.addEventListener("dblclick", function (e) {
-                               var col = column.getLastColumn();
-
-                               if (col && self._checkResizability(col)) {
-                                       e.stopPropagation();
-                                       col.reinitializeWidth(true);
-                               }
-                       });
-
-                       prevHandle.addEventListener("click", function (e) {
-                               e.stopPropagation();
-                       });
-
-                       var prevHandleDown = function prevHandleDown(e) {
-                               var nearestColumn, colIndex, prevColumn;
-
-                               nearestColumn = column.getFirstColumn();
-
-                               if (nearestColumn) {
-                                       colIndex = self.table.columnManager.findColumnIndex(nearestColumn);
-                                       prevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;
-
-                                       if (prevColumn && self._checkResizability(prevColumn)) {
-                                               self.startColumn = column;
-                                               self._mouseDown(e, prevColumn, prevHandle);
-                                       }
-                               }
-                       };
-
-                       prevHandle.addEventListener("mousedown", prevHandleDown);
-                       prevHandle.addEventListener("touchstart", prevHandleDown, { passive: true });
-
-                       //resize column on double click
-                       prevHandle.addEventListener("dblclick", function (e) {
-                               var nearestColumn, colIndex, prevColumn;
-
-                               nearestColumn = column.getFirstColumn();
-
-                               if (nearestColumn) {
-                                       colIndex = self.table.columnManager.findColumnIndex(nearestColumn);
-                                       prevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;
-
-                                       if (prevColumn && self._checkResizability(prevColumn)) {
-                                               e.stopPropagation();
-                                               prevColumn.reinitializeWidth(true);
-                                       }
-                               }
-                       });
-
-                       element.appendChild(handle);
-                       element.appendChild(prevHandle);
-               }
-       };
-
-       ResizeColumns.prototype._checkResizability = function (column) {
-               return typeof column.definition.resizable != "undefined" ? column.definition.resizable : this.table.options.resizableColumns;
-       };
-
-       ResizeColumns.prototype._mouseDown = function (e, column, handle) {
-               var self = this;
-
-               self.table.element.classList.add("tabulator-block-select");
-
-               function mouseMove(e) {
-                       // self.table.columnManager.tempScrollBlock();
-
-                       column.setWidth(self.startWidth + ((typeof e.screenX === "undefined" ? e.touches[0].screenX : e.screenX) - self.startX));
-
-                       if (!self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight) {
-                               column.checkCellHeights();
-                       }
-               }
-
-               function mouseUp(e) {
-
-                       //block editor from taking action while resizing is taking place
-                       if (self.startColumn.modules.edit) {
-                               self.startColumn.modules.edit.blocked = false;
-                       }
-
-                       if (self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight) {
-                               column.checkCellHeights();
-                       }
-
-                       document.body.removeEventListener("mouseup", mouseUp);
-                       document.body.removeEventListener("mousemove", mouseMove);
-
-                       handle.removeEventListener("touchmove", mouseMove);
-                       handle.removeEventListener("touchend", mouseUp);
-
-                       self.table.element.classList.remove("tabulator-block-select");
-
-                       if (self.table.options.persistence && self.table.modExists("persistence", true) && self.table.modules.persistence.config.columns) {
-                               self.table.modules.persistence.save("columns");
-                       }
-
-                       self.table.options.columnResized.call(self.table, column.getComponent());
-               }
-
-               e.stopPropagation(); //prevent resize from interfereing with movable columns
-
-               //block editor from taking action while resizing is taking place
-               if (self.startColumn.modules.edit) {
-                       self.startColumn.modules.edit.blocked = true;
-               }
-
-               self.startX = typeof e.screenX === "undefined" ? e.touches[0].screenX : e.screenX;
-               self.startWidth = column.getWidth();
-
-               document.body.addEventListener("mousemove", mouseMove);
-               document.body.addEventListener("mouseup", mouseUp);
-               handle.addEventListener("touchmove", mouseMove, { passive: true });
-               handle.addEventListener("touchend", mouseUp);
-       };
-
-       Tabulator.prototype.registerModule("resizeColumns", ResizeColumns);
-       var ResizeRows = function ResizeRows(table) {
-               this.table = table; //hold Tabulator object
-               this.startColumn = false;
-               this.startY = false;
-               this.startHeight = false;
-               this.handle = null;
-               this.prevHandle = null;
-       };
-
-       ResizeRows.prototype.initializeRow = function (row) {
-               var self = this,
-                   rowEl = row.getElement();
-
-               var handle = document.createElement('div');
-               handle.className = "tabulator-row-resize-handle";
-
-               var prevHandle = document.createElement('div');
-               prevHandle.className = "tabulator-row-resize-handle prev";
-
-               handle.addEventListener("click", function (e) {
-                       e.stopPropagation();
-               });
-
-               var handleDown = function handleDown(e) {
-                       self.startRow = row;
-                       self._mouseDown(e, row, handle);
-               };
-
-               handle.addEventListener("mousedown", handleDown);
-               handle.addEventListener("touchstart", handleDown, { passive: true });
-
-               prevHandle.addEventListener("click", function (e) {
-                       e.stopPropagation();
-               });
-
-               var prevHandleDown = function prevHandleDown(e) {
-                       var prevRow = self.table.rowManager.prevDisplayRow(row);
-
-                       if (prevRow) {
-                               self.startRow = prevRow;
-                               self._mouseDown(e, prevRow, prevHandle);
-                       }
-               };
-
-               prevHandle.addEventListener("mousedown", prevHandleDown);
-               prevHandle.addEventListener("touchstart", prevHandleDown, { passive: true });
-
-               rowEl.appendChild(handle);
-               rowEl.appendChild(prevHandle);
-       };
-
-       ResizeRows.prototype._mouseDown = function (e, row, handle) {
-               var self = this;
-
-               self.table.element.classList.add("tabulator-block-select");
-
-               function mouseMove(e) {
-                       row.setHeight(self.startHeight + ((typeof e.screenY === "undefined" ? e.touches[0].screenY : e.screenY) - self.startY));
-               }
-
-               function mouseUp(e) {
-
-                       // //block editor from taking action while resizing is taking place
-                       // if(self.startColumn.modules.edit){
-                       //      self.startColumn.modules.edit.blocked = false;
-                       // }
-
-                       document.body.removeEventListener("mouseup", mouseMove);
-                       document.body.removeEventListener("mousemove", mouseMove);
-
-                       handle.removeEventListener("touchmove", mouseMove);
-                       handle.removeEventListener("touchend", mouseUp);
-
-                       self.table.element.classList.remove("tabulator-block-select");
-
-                       self.table.options.rowResized.call(this.table, row.getComponent());
-               }
-
-               e.stopPropagation(); //prevent resize from interfereing with movable columns
-
-               //block editor from taking action while resizing is taking place
-               // if(self.startColumn.modules.edit){
-               //      self.startColumn.modules.edit.blocked = true;
-               // }
-
-               self.startY = typeof e.screenY === "undefined" ? e.touches[0].screenY : e.screenY;
-               self.startHeight = row.getHeight();
-
-               document.body.addEventListener("mousemove", mouseMove);
-               document.body.addEventListener("mouseup", mouseUp);
-
-               handle.addEventListener("touchmove", mouseMove, { passive: true });
-               handle.addEventListener("touchend", mouseUp);
-       };
-
-       Tabulator.prototype.registerModule("resizeRows", ResizeRows);
-       var ResizeTable = function ResizeTable(table) {
-               this.table = table; //hold Tabulator object
-               this.binding = false;
-               this.observer = false;
-               this.containerObserver = false;
-
-               this.tableHeight = 0;
-               this.tableWidth = 0;
-               this.containerHeight = 0;
-               this.containerWidth = 0;
-
-               this.autoResize = false;
-       };
-
-       ResizeTable.prototype.initialize = function (row) {
-               var _this74 = this;
-
-               var table = this.table,
-                   tableStyle;
-
-               this.tableHeight = table.element.clientHeight;
-               this.tableWidth = table.element.clientWidth;
-
-               if (table.element.parentNode) {
-                       this.containerHeight = table.element.parentNode.clientHeight;
-                       this.containerWidth = table.element.parentNode.clientWidth;
-               }
-
-               if (typeof ResizeObserver !== "undefined" && table.rowManager.getRenderMode() === "virtual") {
-
-                       this.autoResize = true;
-
-                       this.observer = new ResizeObserver(function (entry) {
-                               if (!table.browserMobile || table.browserMobile && !table.modules.edit.currentCell) {
-
-                                       var nodeHeight = Math.floor(entry[0].contentRect.height);
-                                       var nodeWidth = Math.floor(entry[0].contentRect.width);
-
-                                       if (_this74.tableHeight != nodeHeight || _this74.tableWidth != nodeWidth) {
-                                               _this74.tableHeight = nodeHeight;
-                                               _this74.tableWidth = nodeWidth;
-
-                                               if (table.element.parentNode) {
-                                                       _this74.containerHeight = table.element.parentNode.clientHeight;
-                                                       _this74.containerWidth = table.element.parentNode.clientWidth;
-                                               }
-
-                                               table.redraw();
-                                       }
-                               }
-                       });
-
-                       this.observer.observe(table.element);
-
-                       tableStyle = window.getComputedStyle(table.element);
-
-                       if (this.table.element.parentNode && !this.table.rowManager.fixedHeight && (tableStyle.getPropertyValue("max-height") || tableStyle.getPropertyValue("min-height"))) {
-
-                               this.containerObserver = new ResizeObserver(function (entry) {
-                                       if (!table.browserMobile || table.browserMobile && !table.modules.edit.currentCell) {
-
-                                               var nodeHeight = Math.floor(entry[0].contentRect.height);
-                                               var nodeWidth = Math.floor(entry[0].contentRect.width);
-
-                                               if (_this74.containerHeight != nodeHeight || _this74.containerWidth != nodeWidth) {
-                                                       _this74.containerHeight = nodeHeight;
-                                                       _this74.containerWidth = nodeWidth;
-                                                       _this74.tableHeight = table.element.clientHeight;
-                                                       _this74.tableWidth = table.element.clientWidth;
-
-                                                       table.redraw();
-                                               }
-
-                                               table.redraw();
-                                       }
-                               });
-
-                               this.containerObserver.observe(this.table.element.parentNode);
-                       }
-               } else {
-                       this.binding = function () {
-                               if (!table.browserMobile || table.browserMobile && !table.modules.edit.currentCell) {
-                                       table.redraw();
-                               }
-                       };
-
-                       window.addEventListener("resize", this.binding);
-               }
-       };
-
-       ResizeTable.prototype.clearBindings = function (row) {
-               if (this.binding) {
-                       window.removeEventListener("resize", this.binding);
-               }
-
-               if (this.observer) {
-                       this.observer.unobserve(this.table.element);
-               }
-
-               if (this.containerObserver) {
-                       this.containerObserver.unobserve(this.table.element.parentNode);
-               }
-       };
-
-       Tabulator.prototype.registerModule("resizeTable", ResizeTable);
-       var ResponsiveLayout = function ResponsiveLayout(table) {
-               this.table = table; //hold Tabulator object
-               this.columns = [];
-               this.hiddenColumns = [];
-               this.mode = "";
-               this.index = 0;
-               this.collapseFormatter = [];
-               this.collapseStartOpen = true;
-               this.collapseHandleColumn = false;
-       };
-
-       //generate resposive columns list
-       ResponsiveLayout.prototype.initialize = function () {
-               var self = this,
-                   columns = [];
-
-               this.mode = this.table.options.responsiveLayout;
-               this.collapseFormatter = this.table.options.responsiveLayoutCollapseFormatter || this.formatCollapsedData;
-               this.collapseStartOpen = this.table.options.responsiveLayoutCollapseStartOpen;
-               this.hiddenColumns = [];
-
-               //detemine level of responsivity for each column
-               this.table.columnManager.columnsByIndex.forEach(function (column, i) {
-                       if (column.modules.responsive) {
-                               if (column.modules.responsive.order && column.modules.responsive.visible) {
-                                       column.modules.responsive.index = i;
-                                       columns.push(column);
-
-                                       if (!column.visible && self.mode === "collapse") {
-                                               self.hiddenColumns.push(column);
-                                       }
-                               }
-                       }
-               });
-
-               //sort list by responsivity
-               columns = columns.reverse();
-               columns = columns.sort(function (a, b) {
-                       var diff = b.modules.responsive.order - a.modules.responsive.order;
-                       return diff || b.modules.responsive.index - a.modules.responsive.index;
-               });
-
-               this.columns = columns;
-
-               if (this.mode === "collapse") {
-                       this.generateCollapsedContent();
-               }
-
-               //assign collapse column
-               for (var _iterator = this.table.columnManager.columnsByIndex, _isArray = Array.isArray(_iterator), _i12 = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
-                       var _ref;
-
-                       if (_isArray) {
-                               if (_i12 >= _iterator.length) break;
-                               _ref = _iterator[_i12++];
-                       } else {
-                               _i12 = _iterator.next();
-                               if (_i12.done) break;
-                               _ref = _i12.value;
-                       }
-
-                       var col = _ref;
-
-                       if (col.definition.formatter == "responsiveCollapse") {
-                               this.collapseHandleColumn = col;
-                               break;
-                       }
-               }
-
-               if (this.collapseHandleColumn) {
-                       if (this.hiddenColumns.length) {
-                               this.collapseHandleColumn.show();
-                       } else {
-                               this.collapseHandleColumn.hide();
-                       }
-               }
-       };
-
-       //define layout information
-       ResponsiveLayout.prototype.initializeColumn = function (column) {
-               var def = column.getDefinition();
-
-               column.modules.responsive = { order: typeof def.responsive === "undefined" ? 1 : def.responsive, visible: def.visible === false ? false : true };
-       };
-
-       ResponsiveLayout.prototype.initializeRow = function (row) {
-               var el;
-
-               if (row.type !== "calc") {
-                       el = document.createElement("div");
-                       el.classList.add("tabulator-responsive-collapse");
-
-                       row.modules.responsiveLayout = {
-                               element: el,
-                               open: this.collapseStartOpen
-                       };
-
-                       if (!this.collapseStartOpen) {
-                               el.style.display = 'none';
-                       }
-               }
-       };
-
-       ResponsiveLayout.prototype.layoutRow = function (row) {
-               var rowEl = row.getElement();
-
-               if (row.modules.responsiveLayout) {
-                       rowEl.appendChild(row.modules.responsiveLayout.element);
-                       this.generateCollapsedRowContent(row);
-               }
-       };
-
-       //update column visibility
-       ResponsiveLayout.prototype.updateColumnVisibility = function (column, visible) {
-               var index;
-               if (column.modules.responsive) {
-                       column.modules.responsive.visible = visible;
-                       this.initialize();
-               }
-       };
-
-       ResponsiveLayout.prototype.hideColumn = function (column) {
-               var colCount = this.hiddenColumns.length;
-
-               column.hide(false, true);
-
-               if (this.mode === "collapse") {
-                       this.hiddenColumns.unshift(column);
-                       this.generateCollapsedContent();
-
-                       if (this.collapseHandleColumn && !colCount) {
-                               this.collapseHandleColumn.show();
-                       }
-               }
-       };
-
-       ResponsiveLayout.prototype.showColumn = function (column) {
-               var index;
-
-               column.show(false, true);
-               //set column width to prevent calculation loops on uninitialized columns
-               column.setWidth(column.getWidth());
-
-               if (this.mode === "collapse") {
-                       index = this.hiddenColumns.indexOf(column);
-
-                       if (index > -1) {
-                               this.hiddenColumns.splice(index, 1);
-                       }
-
-                       this.generateCollapsedContent();
-
-                       if (this.collapseHandleColumn && !this.hiddenColumns.length) {
-                               this.collapseHandleColumn.hide();
-                       }
-               }
-       };
-
-       //redraw columns to fit space
-       ResponsiveLayout.prototype.update = function () {
-               var self = this,
-                   working = true;
-
-               while (working) {
-
-                       var width = self.table.modules.layout.getMode() == "fitColumns" ? self.table.columnManager.getFlexBaseWidth() : self.table.columnManager.getWidth();
-
-                       var diff = (self.table.options.headerVisible ? self.table.columnManager.element.clientWidth : self.table.element.clientWidth) - width;
-
-                       if (diff < 0) {
-                               //table is too wide
-                               var column = self.columns[self.index];
-
-                               if (column) {
-                                       self.hideColumn(column);
-                                       self.index++;
-                               } else {
-                                       working = false;
-                               }
-                       } else {
-
-                               //table has spare space
-                               var _column = self.columns[self.index - 1];
-
-                               if (_column) {
-                                       if (diff > 0) {
-                                               if (diff >= _column.getWidth()) {
-                                                       self.showColumn(_column);
-                                                       self.index--;
-                                               } else {
-                                                       working = false;
-                                               }
-                                       } else {
-                                               working = false;
-                                       }
-                               } else {
-                                       working = false;
-                               }
-                       }
-
-                       if (!self.table.rowManager.activeRowsCount) {
-                               self.table.rowManager.renderEmptyScroll();
-                       }
-               }
-       };
-
-       ResponsiveLayout.prototype.generateCollapsedContent = function () {
-               var self = this,
-                   rows = this.table.rowManager.getDisplayRows();
-
-               rows.forEach(function (row) {
-                       self.generateCollapsedRowContent(row);
-               });
-       };
-
-       ResponsiveLayout.prototype.generateCollapsedRowContent = function (row) {
-               var el, contents;
-
-               if (row.modules.responsiveLayout) {
-                       el = row.modules.responsiveLayout.element;
-
-                       while (el.firstChild) {
-                               el.removeChild(el.firstChild);
-                       }contents = this.collapseFormatter(this.generateCollapsedRowData(row));
-                       if (contents) {
-                               el.appendChild(contents);
-                       }
-               }
-       };
-
-       ResponsiveLayout.prototype.generateCollapsedRowData = function (row) {
-               var self = this,
-                   data = row.getData(),
-                   output = [],
-                   mockCellComponent;
-
-               this.hiddenColumns.forEach(function (column) {
-                       var value = column.getFieldValue(data);
-
-                       if (column.definition.title && column.field) {
-                               if (column.modules.format && self.table.options.responsiveLayoutCollapseUseFormatters) {
-
-                                       mockCellComponent = {
-                                               value: false,
-                                               data: {},
-                                               getValue: function getValue() {
-                                                       return value;
-                                               },
-                                               getData: function getData() {
-                                                       return data;
-                                               },
-                                               getElement: function getElement() {
-                                                       return document.createElement("div");
-                                               },
-                                               getRow: function getRow() {
-                                                       return row.getComponent();
-                                               },
-                                               getColumn: function getColumn() {
-                                                       return column.getComponent();
-                                               }
-                                       };
-
-                                       output.push({
-                                               title: column.definition.title,
-                                               value: column.modules.format.formatter.call(self.table.modules.format, mockCellComponent, column.modules.format.params)
-                                       });
-                               } else {
-                                       output.push({
-                                               title: column.definition.title,
-                                               value: value
-                                       });
-                               }
-                       }
-               });
-
-               return output;
-       };
-
-       ResponsiveLayout.prototype.formatCollapsedData = function (data) {
-               var list = document.createElement("table"),
-                   listContents = "";
-
-               data.forEach(function (item) {
-                       var div = document.createElement("div");
-
-                       if (item.value instanceof Node) {
-                               div.appendChild(item.value);
-                               item.value = div.innerHTML;
-                       }
-
-                       listContents += "<tr><td><strong>" + item.title + "</strong></td><td>" + item.value + "</td></tr>";
-               });
-
-               list.innerHTML = listContents;
-
-               return Object.keys(data).length ? list : "";
-       };
-
-       Tabulator.prototype.registerModule("responsiveLayout", ResponsiveLayout);
-
-       var SelectRow = function SelectRow(table) {
-               this.table = table; //hold Tabulator object
-               this.selecting = false; //flag selecting in progress
-               this.lastClickedRow = false; //last clicked row
-               this.selectPrev = []; //hold previously selected element for drag drop selection
-               this.selectedRows = []; //hold selected rows
-               this.headerCheckboxElement = null; // hold header select element
-       };
-
-       SelectRow.prototype.clearSelectionData = function (silent) {
-               this.selecting = false;
-               this.lastClickedRow = false;
-               this.selectPrev = [];
-               this.selectedRows = [];
-
-               if (!silent) {
-                       this._rowSelectionChanged();
-               }
-       };
-
-       SelectRow.prototype.initializeRow = function (row) {
-               var self = this,
-                   element = row.getElement();
-
-               // trigger end of row selection
-               var endSelect = function endSelect() {
-
-                       setTimeout(function () {
-                               self.selecting = false;
-                       }, 50);
-
-                       document.body.removeEventListener("mouseup", endSelect);
-               };
-
-               row.modules.select = { selected: false };
-
-               //set row selection class
-               if (self.table.options.selectableCheck.call(this.table, row.getComponent())) {
-                       element.classList.add("tabulator-selectable");
-                       element.classList.remove("tabulator-unselectable");
-
-                       if (self.table.options.selectable && self.table.options.selectable != "highlight") {
-                               if (self.table.options.selectableRangeMode === "click") {
-                                       element.addEventListener("click", function (e) {
-                                               if (e.shiftKey) {
-                                                       self.table._clearSelection();
-                                                       self.lastClickedRow = self.lastClickedRow || row;
-
-                                                       var lastClickedRowIdx = self.table.rowManager.getDisplayRowIndex(self.lastClickedRow);
-                                                       var rowIdx = self.table.rowManager.getDisplayRowIndex(row);
-
-                                                       var fromRowIdx = lastClickedRowIdx <= rowIdx ? lastClickedRowIdx : rowIdx;
-                                                       var toRowIdx = lastClickedRowIdx >= rowIdx ? lastClickedRowIdx : rowIdx;
-
-                                                       var rows = self.table.rowManager.getDisplayRows().slice(0);
-                                                       var toggledRows = rows.splice(fromRowIdx, toRowIdx - fromRowIdx + 1);
-
-                                                       if (e.ctrlKey || e.metaKey) {
-                                                               toggledRows.forEach(function (toggledRow) {
-                                                                       if (toggledRow !== self.lastClickedRow) {
-
-                                                                               if (self.table.options.selectable !== true && !self.isRowSelected(row)) {
-                                                                                       if (self.selectedRows.length < self.table.options.selectable) {
-                                                                                               self.toggleRow(toggledRow);
-                                                                                       }
-                                                                               } else {
-                                                                                       self.toggleRow(toggledRow);
-                                                                               }
-                                                                       }
-                                                               });
-                                                               self.lastClickedRow = row;
-                                                       } else {
-                                                               self.deselectRows(undefined, true);
-
-                                                               if (self.table.options.selectable !== true) {
-                                                                       if (toggledRows.length > self.table.options.selectable) {
-                                                                               toggledRows = toggledRows.slice(0, self.table.options.selectable);
-                                                                       }
-                                                               }
-
-                                                               self.selectRows(toggledRows);
-                                                       }
-                                                       self.table._clearSelection();
-                                               } else if (e.ctrlKey || e.metaKey) {
-                                                       self.toggleRow(row);
-                                                       self.lastClickedRow = row;
-                                               } else {
-                                                       self.deselectRows(undefined, true);
-                                                       self.selectRows(row);
-                                                       self.lastClickedRow = row;
-                                               }
-                                       });
-                               } else {
-                                       element.addEventListener("click", function (e) {
-                                               if (!self.table.modExists("edit") || !self.table.modules.edit.getCurrentCell()) {
-                                                       self.table._clearSelection();
-                                               }
-
-                                               if (!self.selecting) {
-                                                       self.toggleRow(row);
-                                               }
-                                       });
-
-                                       element.addEventListener("mousedown", function (e) {
-                                               if (e.shiftKey) {
-                                                       self.table._clearSelection();
-
-                                                       self.selecting = true;
-
-                                                       self.selectPrev = [];
-
-                                                       document.body.addEventListener("mouseup", endSelect);
-                                                       document.body.addEventListener("keyup", endSelect);
-
-                                                       self.toggleRow(row);
-
-                                                       return false;
-                                               }
-                                       });
-
-                                       element.addEventListener("mouseenter", function (e) {
-                                               if (self.selecting) {
-                                                       self.table._clearSelection();
-                                                       self.toggleRow(row);
-
-                                                       if (self.selectPrev[1] == row) {
-                                                               self.toggleRow(self.selectPrev[0]);
-                                                       }
-                                               }
-                                       });
-
-                                       element.addEventListener("mouseout", function (e) {
-                                               if (self.selecting) {
-                                                       self.table._clearSelection();
-                                                       self.selectPrev.unshift(row);
-                                               }
-                                       });
-                               }
-                       }
-               } else {
-                       element.classList.add("tabulator-unselectable");
-                       element.classList.remove("tabulator-selectable");
-               }
-       };
-
-       //toggle row selection
-       SelectRow.prototype.toggleRow = function (row) {
-               if (this.table.options.selectableCheck.call(this.table, row.getComponent())) {
-                       if (row.modules.select && row.modules.select.selected) {
-                               this._deselectRow(row);
-                       } else {
-                               this._selectRow(row);
-                       }
-               }
-       };
-
-       //select a number of rows
-       SelectRow.prototype.selectRows = function (rows) {
-               var _this75 = this;
-
-               var rowMatch;
-
-               switch (typeof rows === 'undefined' ? 'undefined' : _typeof(rows)) {
-                       case "undefined":
-                               this.table.rowManager.rows.forEach(function (row) {
-                                       _this75._selectRow(row, true, true);
-                               });
-
-                               this._rowSelectionChanged();
-                               break;
-
-                       case "string":
-
-                               rowMatch = this.table.rowManager.findRow(rows);
-
-                               if (rowMatch) {
-                                       this._selectRow(rowMatch, true, true);
-                               } else {
-                                       this.table.rowManager.getRows(rows).forEach(function (row) {
-                                               _this75._selectRow(row, true, true);
-                                       });
-                               }
-
-                               this._rowSelectionChanged();
-                               break;
-
-                       default:
-                               if (Array.isArray(rows)) {
-                                       rows.forEach(function (row) {
-                                               _this75._selectRow(row, true, true);
-                                       });
-
-                                       this._rowSelectionChanged();
-                               } else {
-                                       this._selectRow(rows, false, true);
-                               }
-                               break;
-               }
-       };
-
-       //select an individual row
-       SelectRow.prototype._selectRow = function (rowInfo, silent, force) {
-               var index;
-
-               //handle max row count
-               if (!isNaN(this.table.options.selectable) && this.table.options.selectable !== true && !force) {
-                       if (this.selectedRows.length >= this.table.options.selectable) {
-                               if (this.table.options.selectableRollingSelection) {
-                                       this._deselectRow(this.selectedRows[0]);
-                               } else {
-                                       return false;
-                               }
-                       }
-               }
-
-               var row = this.table.rowManager.findRow(rowInfo);
-
-               if (row) {
-                       if (this.selectedRows.indexOf(row) == -1) {
-                               if (!row.modules.select) {
-                                       row.modules.select = {};
-                               }
-
-                               row.modules.select.selected = true;
-                               if (row.modules.select.checkboxEl) {
-                                       row.modules.select.checkboxEl.checked = true;
-                               }
-                               row.getElement().classList.add("tabulator-selected");
-
-                               this.selectedRows.push(row);
-
-                               if (this.table.options.dataTreeSelectPropagate) {
-                                       this.childRowSelection(row, true);
-                               }
-
-                               if (!silent) {
-                                       this.table.options.rowSelected.call(this.table, row.getComponent());
-                               }
-
-                               this._rowSelectionChanged(silent);
-                       }
-               } else {
-                       if (!silent) {
-                               console.warn("Selection Error - No such row found, ignoring selection:" + rowInfo);
-                       }
-               }
-       };
-
-       SelectRow.prototype.isRowSelected = function (row) {
-               return this.selectedRows.indexOf(row) !== -1;
-       };
-
-       //deselect a number of rows
-       SelectRow.prototype.deselectRows = function (rows, silent) {
-               var self = this,
-                   rowCount;
-
-               if (typeof rows == "undefined") {
-
-                       rowCount = self.selectedRows.length;
-
-                       for (var _i13 = 0; _i13 < rowCount; _i13++) {
-                               self._deselectRow(self.selectedRows[0], true);
-                       }
-
-                       self._rowSelectionChanged(silent);
-               } else {
-                       if (Array.isArray(rows)) {
-                               rows.forEach(function (row) {
-                                       self._deselectRow(row, true);
-                               });
-
-                               self._rowSelectionChanged(silent);
-                       } else {
-                               self._deselectRow(rows, silent);
-                       }
-               }
-       };
-
-       //deselect an individual row
-       SelectRow.prototype._deselectRow = function (rowInfo, silent) {
-               var self = this,
-                   row = self.table.rowManager.findRow(rowInfo),
-                   index;
-
-               if (row) {
-                       index = self.selectedRows.findIndex(function (selectedRow) {
-                               return selectedRow == row;
-                       });
-
-                       if (index > -1) {
-
-                               if (!row.modules.select) {
-                                       row.modules.select = {};
-                               }
-
-                               row.modules.select.selected = false;
-                               if (row.modules.select.checkboxEl) {
-                                       row.modules.select.checkboxEl.checked = false;
-                               }
-                               row.getElement().classList.remove("tabulator-selected");
-                               self.selectedRows.splice(index, 1);
-
-                               if (this.table.options.dataTreeSelectPropagate) {
-                                       this.childRowSelection(row, false);
-                               }
-
-                               if (!silent) {
-                                       self.table.options.rowDeselected.call(this.table, row.getComponent());
-                               }
-
-                               self._rowSelectionChanged(silent);
-                       }
-               } else {
-                       if (!silent) {
-                               console.warn("Deselection Error - No such row found, ignoring selection:" + rowInfo);
-                       }
-               }
-       };
-
-       SelectRow.prototype.getSelectedData = function () {
-               var data = [];
-
-               this.selectedRows.forEach(function (row) {
-                       data.push(row.getData());
-               });
-
-               return data;
-       };
-
-       SelectRow.prototype.getSelectedRows = function () {
-
-               var rows = [];
-
-               this.selectedRows.forEach(function (row) {
-                       rows.push(row.getComponent());
-               });
-
-               return rows;
-       };
-
-       SelectRow.prototype._rowSelectionChanged = function (silent) {
-               if (this.headerCheckboxElement) {
-                       if (this.selectedRows.length === 0) {
-                               this.headerCheckboxElement.checked = false;
-                               this.headerCheckboxElement.indeterminate = false;
-                       } else if (this.table.rowManager.rows.length === this.selectedRows.length) {
-                               this.headerCheckboxElement.checked = true;
-                               this.headerCheckboxElement.indeterminate = false;
-                       } else {
-                               this.headerCheckboxElement.indeterminate = true;
-                               this.headerCheckboxElement.checked = false;
-                       }
-               }
-
-               if (!silent) {
-                       this.table.options.rowSelectionChanged.call(this.table, this.getSelectedData(), this.getSelectedRows());
-               }
-       };
-
-       SelectRow.prototype.registerRowSelectCheckbox = function (row, element) {
-               if (!row._row.modules.select) {
-                       row._row.modules.select = {};
-               }
-
-               row._row.modules.select.checkboxEl = element;
-       };
-
-       SelectRow.prototype.registerHeaderSelectCheckbox = function (element) {
-               this.headerCheckboxElement = element;
-       };
-
-       SelectRow.prototype.childRowSelection = function (row, select) {
-               var children = this.table.modules.dataTree.getChildren(row);
-
-               if (select) {
-                       for (var _iterator2 = children, _isArray2 = Array.isArray(_iterator2), _i14 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
-                               var _ref2;
-
-                               if (_isArray2) {
-                                       if (_i14 >= _iterator2.length) break;
-                                       _ref2 = _iterator2[_i14++];
-                               } else {
-                                       _i14 = _iterator2.next();
-                                       if (_i14.done) break;
-                                       _ref2 = _i14.value;
-                               }
-
-                               var child = _ref2;
-
-                               this._selectRow(child, true);
-                       }
-               } else {
-                       for (var _iterator3 = children, _isArray3 = Array.isArray(_iterator3), _i15 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {
-                               var _ref3;
-
-                               if (_isArray3) {
-                                       if (_i15 >= _iterator3.length) break;
-                                       _ref3 = _iterator3[_i15++];
-                               } else {
-                                       _i15 = _iterator3.next();
-                                       if (_i15.done) break;
-                                       _ref3 = _i15.value;
-                               }
-
-                               var _child = _ref3;
-
-                               this._deselectRow(_child, true);
-                       }
-               }
-       };
-
-       Tabulator.prototype.registerModule("selectRow", SelectRow);
-
-       var Sort = function Sort(table) {
-               this.table = table; //hold Tabulator object
-               this.sortList = []; //holder current sort
-               this.changed = false; //has the sort changed since last render
-       };
-
-       //initialize column header for sorting
-       Sort.prototype.initializeColumn = function (column, content) {
-               var self = this,
-                   sorter = false,
-                   colEl,
-                   arrowEl;
-
-               switch (_typeof(column.definition.sorter)) {
-                       case "string":
-                               if (self.sorters[column.definition.sorter]) {
-                                       sorter = self.sorters[column.definition.sorter];
-                               } else {
-                                       console.warn("Sort Error - No such sorter found: ", column.definition.sorter);
-                               }
-                               break;
-
-                       case "function":
-                               sorter = column.definition.sorter;
-                               break;
-               }
-
-               column.modules.sort = {
-                       sorter: sorter, dir: "none",
-                       params: column.definition.sorterParams || {},
-                       startingDir: column.definition.headerSortStartingDir || "asc",
-                       tristate: typeof column.definition.headerSortTristate !== "undefined" ? column.definition.headerSortTristate : this.table.options.headerSortTristate
-               };
-
-               if (typeof column.definition.headerSort === "undefined" ? this.table.options.headerSort !== false : column.definition.headerSort !== false) {
-
-                       colEl = column.getElement();
-
-                       colEl.classList.add("tabulator-sortable");
-
-                       arrowEl = document.createElement("div");
-                       arrowEl.classList.add("tabulator-arrow");
-                       //create sorter arrow
-                       content.appendChild(arrowEl);
-
-                       //sort on click
-                       colEl.addEventListener("click", function (e) {
-                               var dir = "",
-                                   sorters = [],
-                                   match = false;
-
-                               if (column.modules.sort) {
-                                       if (column.modules.sort.tristate) {
-                                               if (column.modules.sort.dir == "none") {
-                                                       dir = column.modules.sort.startingDir;
-                                               } else {
-                                                       if (column.modules.sort.dir == column.modules.sort.startingDir) {
-                                                               dir = column.modules.sort.dir == "asc" ? "desc" : "asc";
-                                                       } else {
-                                                               dir = "none";
-                                                       }
-                                               }
-                                       } else {
-                                               switch (column.modules.sort.dir) {
-                                                       case "asc":
-                                                               dir = "desc";
-                                                               break;
-
-                                                       case "desc":
-                                                               dir = "asc";
-                                                               break;
-
-                                                       default:
-                                                               dir = column.modules.sort.startingDir;
-                                               }
-                                       }
-
-                                       if (self.table.options.columnHeaderSortMulti && (e.shiftKey || e.ctrlKey)) {
-                                               sorters = self.getSort();
-
-                                               match = sorters.findIndex(function (sorter) {
-                                                       return sorter.field === column.getField();
-                                               });
-
-                                               if (match > -1) {
-                                                       sorters[match].dir = dir;
-
-                                                       if (match != sorters.length - 1) {
-                                                               match = sorters.splice(match, 1)[0];
-                                                               if (dir != "none") {
-                                                                       sorters.push(match);
-                                                               }
-                                                       }
-                                               } else {
-                                                       if (dir != "none") {
-                                                               sorters.push({ column: column, dir: dir });
-                                                       }
-                                               }
-
-                                               //add to existing sort
-                                               self.setSort(sorters);
-                                       } else {
-                                               if (dir == "none") {
-                                                       self.clear();
-                                               } else {
-                                                       //sort by column only
-                                                       self.setSort(column, dir);
-                                               }
-                                       }
-
-                                       self.table.rowManager.sorterRefresh(!self.sortList.length);
-                               }
-                       });
-               }
-       };
-
-       //check if the sorters have changed since last use
-       Sort.prototype.hasChanged = function () {
-               var changed = this.changed;
-               this.changed = false;
-               return changed;
-       };
-
-       //return current sorters
-       Sort.prototype.getSort = function () {
-               var self = this,
-                   sorters = [];
-
-               self.sortList.forEach(function (item) {
-                       if (item.column) {
-                               sorters.push({ column: item.column.getComponent(), field: item.column.getField(), dir: item.dir });
-                       }
-               });
-
-               return sorters;
-       };
-
-       //change sort list and trigger sort
-       Sort.prototype.setSort = function (sortList, dir) {
-               var self = this,
-                   newSortList = [];
-
-               if (!Array.isArray(sortList)) {
-                       sortList = [{ column: sortList, dir: dir }];
-               }
-
-               sortList.forEach(function (item) {
-                       var column;
-
-                       column = self.table.columnManager.findColumn(item.column);
-
-                       if (column) {
-                               item.column = column;
-                               newSortList.push(item);
-                               self.changed = true;
-                       } else {
-                               console.warn("Sort Warning - Sort field does not exist and is being ignored: ", item.column);
-                       }
-               });
-
-               self.sortList = newSortList;
-
-               if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.sort) {
-                       this.table.modules.persistence.save("sort");
-               }
-       };
-
-       //clear sorters
-       Sort.prototype.clear = function () {
-               this.setSort([]);
-       };
-
-       //find appropriate sorter for column
-       Sort.prototype.findSorter = function (column) {
-               var row = this.table.rowManager.activeRows[0],
-                   sorter = "string",
-                   field,
-                   value;
-
-               if (row) {
-                       row = row.getData();
-                       field = column.getField();
-
-                       if (field) {
-
-                               value = column.getFieldValue(row);
-
-                               switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
-                                       case "undefined":
-                                               sorter = "string";
-                                               break;
-
-                                       case "boolean":
-                                               sorter = "boolean";
-                                               break;
-
-                                       default:
-                                               if (!isNaN(value) && value !== "") {
-                                                       sorter = "number";
-                                               } else {
-                                                       if (value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)) {
-                                                               sorter = "alphanum";
-                                                       }
-                                               }
-                                               break;
-                               }
-                       }
-               }
-
-               return this.sorters[sorter];
-       };
-
-       //work through sort list sorting data
-       Sort.prototype.sort = function (data) {
-               var self = this,
-                   sortList = this.table.options.sortOrderReverse ? self.sortList.slice().reverse() : self.sortList,
-                   sortListActual = [],
-                   rowComponents = [],
-                   lastSort;
-
-               if (self.table.options.dataSorting) {
-                       self.table.options.dataSorting.call(self.table, self.getSort());
-               }
-
-               self.clearColumnHeaders();
-
-               if (!self.table.options.ajaxSorting) {
-
-                       //build list of valid sorters and trigger column specific callbacks before sort begins
-                       sortList.forEach(function (item, i) {
-                               var sortObj = item.column.modules.sort;
-
-                               if (item.column && sortObj) {
-
-                                       //if no sorter has been defined, take a guess
-                                       if (!sortObj.sorter) {
-                                               sortObj.sorter = self.findSorter(item.column);
-                                       }
-
-                                       item.params = typeof sortObj.params === "function" ? sortObj.params(item.column.getComponent(), item.dir) : sortObj.params;
-
-                                       sortListActual.push(item);
-                               }
-
-                               self.setColumnHeader(item.column, item.dir);
-                       });
-
-                       //sort data
-                       if (sortListActual.length) {
-                               self._sortItems(data, sortListActual);
-                       }
-               } else {
-                       sortList.forEach(function (item, i) {
-                               self.setColumnHeader(item.column, item.dir);
-                       });
-               }
-
-               if (self.table.options.dataSorted) {
-                       data.forEach(function (row) {
-                               rowComponents.push(row.getComponent());
-                       });
-
-                       self.table.options.dataSorted.call(self.table, self.getSort(), rowComponents);
-               }
-       };
-
-       //clear sort arrows on columns
-       Sort.prototype.clearColumnHeaders = function () {
-               this.table.columnManager.getRealColumns().forEach(function (column) {
-                       if (column.modules.sort) {
-                               column.modules.sort.dir = "none";
-                               column.getElement().setAttribute("aria-sort", "none");
-                       }
-               });
-       };
-
-       //set the column header sort direction
-       Sort.prototype.setColumnHeader = function (column, dir) {
-               column.modules.sort.dir = dir;
-               column.getElement().setAttribute("aria-sort", dir);
-       };
-
-       //sort each item in sort list
-       Sort.prototype._sortItems = function (data, sortList) {
-               var _this76 = this;
-
-               var sorterCount = sortList.length - 1;
-
-               data.sort(function (a, b) {
-                       var result;
-
-                       for (var i = sorterCount; i >= 0; i--) {
-                               var sortItem = sortList[i];
-
-                               result = _this76._sortRow(a, b, sortItem.column, sortItem.dir, sortItem.params);
-
-                               if (result !== 0) {
-                                       break;
-                               }
-                       }
-
-                       return result;
-               });
-       };
-
-       //process individual rows for a sort function on active data
-       Sort.prototype._sortRow = function (a, b, column, dir, params) {
-               var el1Comp, el2Comp, colComp;
-
-               //switch elements depending on search direction
-               var el1 = dir == "asc" ? a : b;
-               var el2 = dir == "asc" ? b : a;
-
-               a = column.getFieldValue(el1.getData());
-               b = column.getFieldValue(el2.getData());
-
-               a = typeof a !== "undefined" ? a : "";
-               b = typeof b !== "undefined" ? b : "";
-
-               el1Comp = el1.getComponent();
-               el2Comp = el2.getComponent();
-
-               return column.modules.sort.sorter.call(this, a, b, el1Comp, el2Comp, column.getComponent(), dir, params);
-       };
-
-       //default data sorters
-       Sort.prototype.sorters = {
-
-               //sort numbers
-               number: function number(a, b, aRow, bRow, column, dir, params) {
-                       var alignEmptyValues = params.alignEmptyValues;
-                       var decimal = params.decimalSeparator || ".";
-                       var thousand = params.thousandSeparator || ",";
-                       var emptyAlign = 0;
-
-                       a = parseFloat(String(a).split(thousand).join("").split(decimal).join("."));
-                       b = parseFloat(String(b).split(thousand).join("").split(decimal).join("."));
-
-                       //handle non numeric values
-                       if (isNaN(a)) {
-                               emptyAlign = isNaN(b) ? 0 : -1;
-                       } else if (isNaN(b)) {
-                               emptyAlign = 1;
-                       } else {
-                               //compare valid values
-                               return a - b;
-                       }
-
-                       //fix empty values in position
-                       if (alignEmptyValues === "top" && dir === "desc" || alignEmptyValues === "bottom" && dir === "asc") {
-                               emptyAlign *= -1;
-                       }
-
-                       return emptyAlign;
-               },
-
-               //sort strings
-               string: function string(a, b, aRow, bRow, column, dir, params) {
-                       var alignEmptyValues = params.alignEmptyValues;
-                       var emptyAlign = 0;
-                       var locale;
-
-                       //handle empty values
-                       if (!a) {
-                               emptyAlign = !b ? 0 : -1;
-                       } else if (!b) {
-                               emptyAlign = 1;
-                       } else {
-                               //compare valid values
-                               switch (_typeof(params.locale)) {
-                                       case "boolean":
-                                               if (params.locale) {
-                                                       locale = this.table.modules.localize.getLocale();
-                                               }
-                                               break;
-                                       case "string":
-                                               locale = params.locale;
-                                               break;
-                               }
-
-                               return String(a).toLowerCase().localeCompare(String(b).toLowerCase(), locale);
-                       }
-
-                       //fix empty values in position
-                       if (alignEmptyValues === "top" && dir === "desc" || alignEmptyValues === "bottom" && dir === "asc") {
-                               emptyAlign *= -1;
-                       }
-
-                       return emptyAlign;
-               },
-
-               //sort date
-               date: function date(a, b, aRow, bRow, column, dir, params) {
-                       if (!params.format) {
-                               params.format = "DD/MM/YYYY";
-                       }
-
-                       return this.sorters.datetime.call(this, a, b, aRow, bRow, column, dir, params);
-               },
-
-               //sort HH:mm formatted times
-               time: function time(a, b, aRow, bRow, column, dir, params) {
-                       if (!params.format) {
-                               params.format = "HH:mm";
-                       }
-
-                       return this.sorters.datetime.call(this, a, b, aRow, bRow, column, dir, params);
-               },
-
-               //sort datetime
-               datetime: function datetime(a, b, aRow, bRow, column, dir, params) {
-                       var format = params.format || "DD/MM/YYYY HH:mm:ss",
-                           alignEmptyValues = params.alignEmptyValues,
-                           emptyAlign = 0;
-
-                       if (typeof moment != "undefined") {
-                               a = moment(a, format);
-                               b = moment(b, format);
-
-                               if (!a.isValid()) {
-                                       emptyAlign = !b.isValid() ? 0 : -1;
-                               } else if (!b.isValid()) {
-                                       emptyAlign = 1;
-                               } else {
-                                       //compare valid values
-                                       return a - b;
-                               }
-
-                               //fix empty values in position
-                               if (alignEmptyValues === "top" && dir === "desc" || alignEmptyValues === "bottom" && dir === "asc") {
-                                       emptyAlign *= -1;
-                               }
-
-                               return emptyAlign;
-                       } else {
-                               console.error("Sort Error - 'datetime' sorter is dependant on moment.js");
-                       }
-               },
-
-               //sort booleans
-               boolean: function boolean(a, b, aRow, bRow, column, dir, params) {
-                       var el1 = a === true || a === "true" || a === "True" || a === 1 ? 1 : 0;
-                       var el2 = b === true || b === "true" || b === "True" || b === 1 ? 1 : 0;
-
-                       return el1 - el2;
-               },
-
-               //sort if element contains any data
-               array: function array(a, b, aRow, bRow, column, dir, params) {
-                       var el1 = 0;
-                       var el2 = 0;
-                       var type = params.type || "length";
-                       var alignEmptyValues = params.alignEmptyValues;
-                       var emptyAlign = 0;
-
-                       function calc(value) {
-
-                               switch (type) {
-                                       case "length":
-                                               return value.length;
-                                               break;
-
-                                       case "sum":
-                                               return value.reduce(function (c, d) {
-                                                       return c + d;
-                                               });
-                                               break;
-
-                                       case "max":
-                                               return Math.max.apply(null, value);
-                                               break;
-
-                                       case "min":
-                                               return Math.min.apply(null, value);
-                                               break;
-
-                                       case "avg":
-                                               return value.reduce(function (c, d) {
-                                                       return c + d;
-                                               }) / value.length;
-                                               break;
-                               }
-                       }
-
-                       //handle non array values
-                       if (!Array.isArray(a)) {
-                               alignEmptyValues = !Array.isArray(b) ? 0 : -1;
-                       } else if (!Array.isArray(b)) {
-                               alignEmptyValues = 1;
-                       } else {
-
-                               //compare valid values
-                               el1 = a ? calc(a) : 0;
-                               el2 = b ? calc(b) : 0;
-
-                               return el1 - el2;
-                       }
-
-                       //fix empty values in position
-                       if (alignEmptyValues === "top" && dir === "desc" || alignEmptyValues === "bottom" && dir === "asc") {
-                               emptyAlign *= -1;
-                       }
-
-                       return emptyAlign;
-               },
-
-               //sort if element contains any data
-               exists: function exists(a, b, aRow, bRow, column, dir, params) {
-                       var el1 = typeof a == "undefined" ? 0 : 1;
-                       var el2 = typeof b == "undefined" ? 0 : 1;
-
-                       return el1 - el2;
-               },
-
-               //sort alpha numeric strings
-               alphanum: function alphanum(as, bs, aRow, bRow, column, dir, params) {
-                       var a,
-                           b,
-                           a1,
-                           b1,
-                           i = 0,
-                           L,
-                           rx = /(\d+)|(\D+)/g,
-                           rd = /\d/;
-                       var alignEmptyValues = params.alignEmptyValues;
-                       var emptyAlign = 0;
-
-                       //handle empty values
-                       if (!as && as !== 0) {
-                               emptyAlign = !bs && bs !== 0 ? 0 : -1;
-                       } else if (!bs && bs !== 0) {
-                               emptyAlign = 1;
-                       } else {
-
-                               if (isFinite(as) && isFinite(bs)) return as - bs;
-                               a = String(as).toLowerCase();
-                               b = String(bs).toLowerCase();
-                               if (a === b) return 0;
-                               if (!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1;
-                               a = a.match(rx);
-                               b = b.match(rx);
-                               L = a.length > b.length ? b.length : a.length;
-                               while (i < L) {
-                                       a1 = a[i];
-                                       b1 = b[i++];
-                                       if (a1 !== b1) {
-                                               if (isFinite(a1) && isFinite(b1)) {
-                                                       if (a1.charAt(0) === "0") a1 = "." + a1;
-                                                       if (b1.charAt(0) === "0") b1 = "." + b1;
-                                                       return a1 - b1;
-                                               } else return a1 > b1 ? 1 : -1;
-                                       }
-                               }
-
-                               return a.length > b.length;
-                       }
-
-                       //fix empty values in position
-                       if (alignEmptyValues === "top" && dir === "desc" || alignEmptyValues === "bottom" && dir === "asc") {
-                               emptyAlign *= -1;
-                       }
-
-                       return emptyAlign;
-               }
-       };
-
-       Tabulator.prototype.registerModule("sort", Sort);
-
-       var Validate = function Validate(table) {
-               this.table = table;
-               this.invalidCells = [];
-       };
-
-       //validate
-       Validate.prototype.initializeColumn = function (column) {
-               var self = this,
-                   config = [],
-                   validator;
-
-               if (column.definition.validator) {
-
-                       if (Array.isArray(column.definition.validator)) {
-                               column.definition.validator.forEach(function (item) {
-                                       validator = self._extractValidator(item);
-
-                                       if (validator) {
-                                               config.push(validator);
-                                       }
-                               });
-                       } else {
-                               validator = this._extractValidator(column.definition.validator);
-
-                               if (validator) {
-                                       config.push(validator);
-                               }
-                       }
-
-                       column.modules.validate = config.length ? config : false;
-               }
-       };
-
-       Validate.prototype._extractValidator = function (value) {
-               var type, params, pos;
-
-               switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
-                       case "string":
-                               pos = value.indexOf(':');
-
-                               if (pos > -1) {
-                                       type = value.substring(0, pos);
-                                       params = value.substring(pos + 1);
-                               } else {
-                                       type = value;
-                               }
-
-                               return this._buildValidator(type, params);
-                               break;
-
-                       case "function":
-                               return this._buildValidator(value);
-                               break;
-
-                       case "object":
-                               return this._buildValidator(value.type, value.parameters);
-                               break;
-               }
-       };
-
-       Validate.prototype._buildValidator = function (type, params) {
-
-               var func = typeof type == "function" ? type : this.validators[type];
-
-               if (!func) {
-                       console.warn("Validator Setup Error - No matching validator found:", type);
-                       return false;
-               } else {
-                       return {
-                               type: typeof type == "function" ? "function" : type,
-                               func: func,
-                               params: params
-                       };
-               }
-       };
-
-       Validate.prototype.validate = function (validators, cell, value) {
-               var self = this,
-                   valid = [],
-                   invalidIndex = this.invalidCells.indexOf(cell);
-
-               if (validators) {
-                       validators.forEach(function (item) {
-                               if (!item.func.call(self, cell.getComponent(), value, item.params)) {
-                                       valid.push({
-                                               type: item.type,
-                                               parameters: item.params
-                                       });
-                               }
-                       });
-               }
-
-               valid = valid.length ? valid : true;
-
-               if (!cell.modules.validate) {
-                       cell.modules.validate = {};
-               }
-
-               if (valid === true) {
-                       cell.modules.validate.invalid = false;
-                       cell.getElement().classList.remove("tabulator-validation-fail");
-
-                       if (invalidIndex > -1) {
-                               this.invalidCells.splice(invalidIndex, 1);
-                       }
-               } else {
-                       cell.modules.validate.invalid = true;
-
-                       if (this.table.options.validationMode !== "manual") {
-                               cell.getElement().classList.add("tabulator-validation-fail");
-                       }
-
-                       if (invalidIndex == -1) {
-                               this.invalidCells.push(cell);
-                       }
-               }
-
-               return valid;
-       };
-
-       Validate.prototype.getInvalidCells = function () {
-               var output = [];
-
-               this.invalidCells.forEach(function (cell) {
-                       output.push(cell.getComponent());
-               });
-
-               return output;
-       };
-
-       Validate.prototype.clearValidation = function (cell) {
-               var invalidIndex;
-
-               if (cell.modules.validate && cell.modules.validate.invalid) {
-
-                       cell.element.classList.remove("tabulator-validation-fail");
-                       cell.modules.validate.invalid = false;
-
-                       invalidIndex = this.invalidCells.indexOf(cell);
-
-                       if (invalidIndex > -1) {
-                               this.invalidCells.splice(invalidIndex, 1);
-                       }
-               }
-       };
-
-       Validate.prototype.validators = {
-
-               //is integer
-               integer: function integer(cell, value, parameters) {
-                       if (value === "" || value === null || typeof value === "undefined") {
-                               return true;
-                       }
-                       value = Number(value);
-                       return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;
-               },
-
-               //is float
-               float: function float(cell, value, parameters) {
-                       if (value === "" || value === null || typeof value === "undefined") {
-                               return true;
-                       }
-                       value = Number(value);
-                       return typeof value === 'number' && isFinite(value) && value % 1 !== 0;
-               },
-
-               //must be a number
-               numeric: function numeric(cell, value, parameters) {
-                       if (value === "" || value === null || typeof value === "undefined") {
-                               return true;
-                       }
-                       return !isNaN(value);
-               },
-
-               //must be a string
-               string: function string(cell, value, parameters) {
-                       if (value === "" || value === null || typeof value === "undefined") {
-                               return true;
-                       }
-                       return isNaN(value);
-               },
-
-               //maximum value
-               max: function max(cell, value, parameters) {
-                       if (value === "" || value === null || typeof value === "undefined") {
-                               return true;
-                       }
-                       return parseFloat(value) <= parameters;
-               },
-
-               //minimum value
-               min: function min(cell, value, parameters) {
-                       if (value === "" || value === null || typeof value === "undefined") {
-                               return true;
-                       }
-                       return parseFloat(value) >= parameters;
-               },
-
-               //starts with  value
-               starts: function starts(cell, value, parameters) {
-                       if (value === "" || value === null || typeof value === "undefined") {
-                               return true;
-                       }
-                       return String(value).toLowerCase().startsWith(String(parameters).toLowerCase());
-               },
-
-               //ends with  value
-               ends: function ends(cell, value, parameters) {
-                       if (value === "" || value === null || typeof value === "undefined") {
-                               return true;
-                       }
-                       return String(value).toLowerCase().endsWith(String(parameters).toLowerCase());
-               },
-
-               //minimum string length
-               minLength: function minLength(cell, value, parameters) {
-                       if (value === "" || value === null || typeof value === "undefined") {
-                               return true;
-                       }
-                       return String(value).length >= parameters;
-               },
-
-               //maximum string length
-               maxLength: function maxLength(cell, value, parameters) {
-                       if (value === "" || value === null || typeof value === "undefined") {
-                               return true;
-                       }
-                       return String(value).length <= parameters;
-               },
-
-               //in provided value list
-               in: function _in(cell, value, parameters) {
-                       if (value === "" || value === null || typeof value === "undefined") {
-                               return true;
-                       }
-                       if (typeof parameters == "string") {
-                               parameters = parameters.split("|");
-                       }
-
-                       return value === "" || parameters.indexOf(value) > -1;
-               },
-
-               //must match provided regex
-               regex: function regex(cell, value, parameters) {
-                       if (value === "" || value === null || typeof value === "undefined") {
-                               return true;
-                       }
-                       var reg = new RegExp(parameters);
-
-                       return reg.test(value);
-               },
-
-               //value must be unique in this column
-               unique: function unique(cell, value, parameters) {
-                       if (value === "" || value === null || typeof value === "undefined") {
-                               return true;
-                       }
-                       var unique = true;
-
-                       var cellData = cell.getData();
-                       var column = cell.getColumn()._getSelf();
-
-                       this.table.rowManager.rows.forEach(function (row) {
-                               var data = row.getData();
-
-                               if (data !== cellData) {
-                                       if (value == column.getFieldValue(data)) {
-                                               unique = false;
-                                       }
-                               }
-                       });
-
-                       return unique;
-               },
-
-               //must have a value
-               required: function required(cell, value, parameters) {
-                       return value !== "" && value !== null && typeof value !== "undefined";
-               }
-       };
-
-       Tabulator.prototype.registerModule("validate", Validate);
-
-       return Tabulator;
-});
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/tabulator.min.js b/app/static/vendors/tabulator/js/tabulator.min.js
deleted file mode 100644 (file)
index 74f4780..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};!function(e,t){"object"===("undefined"==typeof exports?"undefined":_typeof(exports))&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.Tabulator=t()}(this,function(){"use strict";Array.prototype.findIndex||Object.defineProperty(Array.prototype,"findIndex",{value:function(e){if(null==this)throw new TypeError('"this" is null or not defined');var t=Object(this),o=t.length>>>0;if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var i=arguments[1],n=0;n<o;){var s=t[n];if(e.call(i,s,n,t))return n;n++}return-1}}),Array.prototype.find||Object.defineProperty(Array.prototype,"find",{value:function(e){if(null==this)throw new TypeError('"this" is null or not defined');var t=Object(this),o=t.length>>>0;if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var i=arguments[1],n=0;n<o;){var s=t[n];if(e.call(i,s,n,t))return s;n++}}}),String.prototype.includes||(String.prototype.includes=function(e,t){if(e instanceof RegExp)throw TypeError("first argument must not be a RegExp");return void 0===t&&(t=0),-1!==this.indexOf(e,t)}),Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{value:function(e,t){if(null==this)throw new TypeError('"this" is null or not defined');var o=Object(this),i=o.length>>>0;if(0===i)return!1;for(var n=0|t,s=Math.max(n>=0?n:i-Math.abs(n),0);s<i;){if(function(e,t){return e===t||"number"==typeof e&&"number"==typeof t&&isNaN(e)&&isNaN(t)}(o[s],e))return!0;s++}return!1}}),"function"!=typeof Object.assign&&Object.defineProperty(Object,"assign",{value:function(e,t){if(null===e||void 0===e)throw new TypeError("Cannot convert undefined or null to object");for(var o=Object(e),i=1;i<arguments.length;i++){var n=arguments[i];if(null!==n&&void 0!==n)for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(o[s]=n[s])}return o},writable:!0,configurable:!0});var t=function(e){this.table=e,this.blockHozScrollEvent=!1,this.headersElement=this.createHeadersElement(),this.element=this.createHeaderElement(),this.rowManager=null,this.columns=[],this.columnsByIndex=[],this.columnsByField={},this.scrollLeft=0,this.element.insertBefore(this.headersElement,this.element.firstChild)};t.prototype.createHeadersElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-headers"),e},t.prototype.createHeaderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-header"),this.table.options.headerVisible||e.classList.add("tabulator-header-hidden"),e},t.prototype.initialize=function(){},t.prototype.setRowManager=function(e){this.rowManager=e},t.prototype.getElement=function(){return this.element},t.prototype.getHeadersElement=function(){return this.headersElement},t.prototype.scrollHorizontal=function(e){var t=0,o=this.element.scrollWidth-this.table.element.clientWidth;this.element.scrollLeft=e,e>o?(t=e-o,this.element.style.marginLeft=-t+"px"):this.element.style.marginLeft=0,this.scrollLeft=e,this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.scrollHorizontal()},t.prototype.generateColumnsFromRowData=function(e){var t,o,i=[];if(e&&e.length){t=e[0];for(var n in t){var s={field:n,title:n},r=t[n];switch(void 0===r?"undefined":_typeof(r)){case"undefined":o="string";break;case"boolean":o="boolean";break;case"object":o=Array.isArray(r)?"array":"string";break;default:o=isNaN(r)||""===r?r.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)?"alphanum":"string":"number"}s.sorter=o,i.push(s)}this.table.options.columns=i,this.setColumns(this.table.options.columns)}},t.prototype.setColumns=function(e,t){for(var o=this;o.headersElement.firstChild;)o.headersElement.removeChild(o.headersElement.firstChild);o.columns=[],o.columnsByIndex=[],o.columnsByField={},o.table.modExists("frozenColumns")&&o.table.modules.frozenColumns.reset(),e.forEach(function(e,t){o._addColumn(e)}),o._reIndexColumns(),o.table.options.responsiveLayout&&o.table.modExists("responsiveLayout",!0)&&o.table.modules.responsiveLayout.initialize(),o.redraw(!0)},t.prototype._addColumn=function(e,t,o){var i=new n(e,this),s=i.getElement(),r=o?this.findColumnIndex(o):o;if(o&&r>-1){var a=this.columns.indexOf(o.getTopColumn()),l=o.getElement();t?(this.columns.splice(a,0,i),l.parentNode.insertBefore(s,l)):(this.columns.splice(a+1,0,i),l.parentNode.insertBefore(s,l.nextSibling))}else t?(this.columns.unshift(i),this.headersElement.insertBefore(i.getElement(),this.headersElement.firstChild)):(this.columns.push(i),this.headersElement.appendChild(i.getElement())),i.columnRendered();return i},t.prototype.registerColumnField=function(e){e.definition.field&&(this.columnsByField[e.definition.field]=e)},t.prototype.registerColumnPosition=function(e){this.columnsByIndex.push(e)},t.prototype._reIndexColumns=function(){this.columnsByIndex=[],this.columns.forEach(function(e){e.reRegisterPosition()})},t.prototype._verticalAlignHeaders=function(){var e=this,t=0;e.columns.forEach(function(e){var o;e.clearVerticalAlign(),(o=e.getHeight())>t&&(t=o)}),e.columns.forEach(function(o){o.verticalAlign(e.table.options.columnHeaderVertAlign,t)}),e.rowManager.adjustTableSize()},t.prototype.findColumn=function(e){var t=this;if("object"!=(void 0===e?"undefined":_typeof(e)))return this.columnsByField[e]||!1;if(e instanceof n)return e;if(e instanceof o)return e._getSelf()||!1;if("undefined"!=typeof HTMLElement&&e instanceof HTMLElement){return t.columns.find(function(t){return t.element===e})||!1}return!1},t.prototype.getColumnByField=function(e){return this.columnsByField[e]},t.prototype.getColumnsByFieldRoot=function(e){var t=this,o=[];return Object.keys(this.columnsByField).forEach(function(i){i.split(".")[0]===e&&o.push(t.columnsByField[i])}),o},t.prototype.getColumnByIndex=function(e){return this.columnsByIndex[e]},t.prototype.getFirstVisibileColumn=function(e){var e=this.columnsByIndex.findIndex(function(e){return e.visible});return e>-1&&this.columnsByIndex[e]},t.prototype.getColumns=function(){return this.columns},t.prototype.findColumnIndex=function(e){return this.columnsByIndex.findIndex(function(t){return e===t})},t.prototype.getRealColumns=function(){return this.columnsByIndex},t.prototype.traverse=function(e){this.columnsByIndex.forEach(function(t,o){e(t,o)})},t.prototype.getDefinitions=function(e){var t=this,o=[];return t.columnsByIndex.forEach(function(t){(!e||e&&t.visible)&&o.push(t.getDefinition())}),o},t.prototype.getDefinitionTree=function(){var e=this,t=[];return e.columns.forEach(function(e){t.push(e.getDefinition(!0))}),t},t.prototype.getComponents=function(e){var t=this,o=[];return(e?t.columns:t.columnsByIndex).forEach(function(e){o.push(e.getComponent())}),o},t.prototype.getWidth=function(){var e=0;return this.columnsByIndex.forEach(function(t){t.visible&&(e+=t.getWidth())}),e},t.prototype.moveColumn=function(e,t,o){this.moveColumnActual(e,t,o),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),t.element.parentNode.insertBefore(e.element,t.element),o&&t.element.parentNode.insertBefore(t.element,e.element),this._verticalAlignHeaders(),this.table.rowManager.reinitialize()},t.prototype.moveColumnActual=function(e,t,o){e.parent.isGroup?this._moveColumnInArray(e.parent.columns,e,t,o):this._moveColumnInArray(this.columns,e,t,o),this._moveColumnInArray(this.columnsByIndex,e,t,o,!0),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.table.options.columnMoved&&this.table.options.columnMoved.call(this.table,e.getComponent(),this.table.columnManager.getComponents()),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.columns&&this.table.modules.persistence.save("columns")},t.prototype._moveColumnInArray=function(e,t,o,i,n){var s,r=e.indexOf(t);r>-1&&(e.splice(r,1),s=e.indexOf(o),s>-1?i&&(s+=1):s=r,e.splice(s,0,t),n&&this.table.rowManager.rows.forEach(function(e){if(e.cells.length){var t=e.cells.splice(r,1)[0];e.cells.splice(s,0,t)}}))},t.prototype.scrollToColumn=function(e,t,o){var i=this,n=0,s=0,r=0,a=e.getElement();return new Promise(function(l,c){if(void 0===t&&(t=i.table.options.scrollToColumnPosition),void 0===o&&(o=i.table.options.scrollToColumnIfVisible),e.visible){switch(t){case"middle":case"center":r=-i.element.clientWidth/2;break;case"right":r=a.clientWidth-i.headersElement.clientWidth}if(!o&&(s=a.offsetLeft)>0&&s+a.offsetWidth<i.element.clientWidth)return!1;n=a.offsetLeft+i.element.scrollLeft+r,n=Math.max(Math.min(n,i.table.rowManager.element.scrollWidth-i.table.rowManager.element.clientWidth),0),i.table.rowManager.scrollHorizontal(n),i.scrollHorizontal(n),l()}else console.warn("Scroll Error - Column not visible"),c("Scroll Error - Column not visible")})},t.prototype.generateCells=function(e){var t=this,o=[];return t.columnsByIndex.forEach(function(t){o.push(t.generateCell(e))}),o},t.prototype.getFlexBaseWidth=function(){var e=this,t=e.table.element.clientWidth,o=0;return e.rowManager.element.scrollHeight>e.rowManager.element.clientHeight&&(t-=e.rowManager.element.offsetWidth-e.rowManager.element.clientWidth),this.columnsByIndex.forEach(function(i){var n,s,r;i.visible&&(n=i.definition.width||0,s=void 0===i.minWidth?e.table.options.columnMinWidth:parseInt(i.minWidth),r="string"==typeof n?n.indexOf("%")>-1?t/100*parseInt(n):parseInt(n):n,o+=r>s?r:s)}),o},t.prototype.addColumn=function(e,t,o){var i=this;return new Promise(function(n,s){var r=i._addColumn(e,t,o);i._reIndexColumns(),i.table.options.responsiveLayout&&i.table.modExists("responsiveLayout",!0)&&i.table.modules.responsiveLayout.initialize(),i.table.modExists("columnCalcs")&&i.table.modules.columnCalcs.recalc(i.table.rowManager.activeRows),i.redraw(),"fitColumns"!=i.table.modules.layout.getMode()&&r.reinitializeWidth(),i._verticalAlignHeaders(),i.table.rowManager.reinitialize(),n(r)})},t.prototype.deregisterColumn=function(e){var t,o=e.getField();o&&delete this.columnsByField[o],t=this.columnsByIndex.indexOf(e),t>-1&&this.columnsByIndex.splice(t,1),t=this.columns.indexOf(e),t>-1&&this.columns.splice(t,1),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.redraw()},t.prototype.redraw=function(e){e&&(d.prototype.helpers.elVisible(this.element)&&this._verticalAlignHeaders(),this.table.rowManager.resetScroll(),this.table.rowManager.reinitialize()),["fitColumns","fitDataStretch"].indexOf(this.table.modules.layout.getMode())>-1?this.table.modules.layout.layout():e?this.table.modules.layout.layout():this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout(),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),e&&(this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.columns&&this.table.modules.persistence.save("columns"),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.redraw()),this.table.footerManager.redraw()};var o=function(e){this._column=e,this.type="ColumnComponent"};o.prototype.getElement=function(){return this._column.getElement()},o.prototype.getDefinition=function(){return this._column.getDefinition()},o.prototype.getField=function(){return this._column.getField()},o.prototype.getCells=function(){var e=[];return this._column.cells.forEach(function(t){e.push(t.getComponent())}),e},o.prototype.getVisibility=function(){return console.warn("getVisibility function is deprecated, you should now use the isVisible function"),this._column.visible},o.prototype.isVisible=function(){return this._column.visible},o.prototype.show=function(){this._column.isGroup?this._column.columns.forEach(function(e){e.show()}):this._column.show()},o.prototype.hide=function(){this._column.isGroup?this._column.columns.forEach(function(e){e.hide()}):this._column.hide()},o.prototype.toggle=function(){this._column.visible?this.hide():this.show()},o.prototype.delete=function(){return this._column.delete()},o.prototype.getSubColumns=function(){var e=[];return this._column.columns.length&&this._column.columns.forEach(function(t){e.push(t.getComponent())}),e},o.prototype.getParentColumn=function(){return this._column.parent instanceof n&&this._column.parent.getComponent()},o.prototype._getSelf=function(){return this._column},o.prototype.scrollTo=function(){return this._column.table.columnManager.scrollToColumn(this._column)},o.prototype.getTable=function(){return this._column.table},o.prototype.headerFilterFocus=function(){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.setHeaderFilterFocus(this._column)},o.prototype.reloadHeaderFilter=function(){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.reloadHeaderFilter(this._column)},o.prototype.getHeaderFilterValue=function(){if(this._column.table.modExists("filter",!0))return this._column.table.modules.filter.getHeaderFilterValue(this._column)},o.prototype.setHeaderFilterValue=function(e){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.setHeaderFilterValue(this._column,e)},o.prototype.move=function(e,t){var o=this._column.table.columnManager.findColumn(e);o?this._column.table.columnManager.moveColumn(this._column,o,t):console.warn("Move Error - No matching column found:",o)},o.prototype.getNextColumn=function(){var e=this._column.nextColumn();return!!e&&e.getComponent()},o.prototype.getPrevColumn=function(){var e=this._column.prevColumn();return!!e&&e.getComponent()},o.prototype.updateDefinition=function(e){return this._column.updateDefinition(e)},o.prototype.getWidth=function(){return this._column.getWidth()},o.prototype.setWidth=function(e){return!0===e?this._column.reinitializeWidth(!0):this._column.setWidth(e)},o.prototype.validate=function(){return this._column.validate()};var n=function e(t,o){var i=this;this.table=o.table,this.definition=t,this.parent=o,this.type="column",this.columns=[],this.cells=[],this.element=this.createElement(),this.contentElement=!1,this.titleElement=!1,this.groupElement=this.createGroupElement(),this.isGroup=!1,this.tooltip=!1,this.hozAlign="",this.vertAlign="",this.field="",this.fieldStructure="",this.getFieldValue="",this.setFieldValue="",this.titleFormatterRendered=!1,this.setField(this.definition.field),this.table.options.invalidOptionWarnings&&this.checkDefinition(),this.modules={},this.cellEvents={cellClick:!1,cellDblClick:!1,cellContext:!1,cellTap:!1,cellDblTap:!1,cellTapHold:!1,cellMouseEnter:!1,cellMouseLeave:!1,cellMouseOver:!1,cellMouseOut:!1,cellMouseMove:!1},this.width=null,this.widthStyled="",this.minWidth=null,this.minWidthStyled="",this.widthFixed=!1,this.visible=!0,this.component=null,this._mapDepricatedFunctionality(),t.columns?(this.isGroup=!0,t.columns.forEach(function(t,o){var n=new e(t,i);i.attachColumn(n)}),i.checkColumnVisibility()):o.registerColumnField(this),t.rowHandle&&!1!==this.table.options.movableRows&&this.table.modExists("moveRow")&&this.table.modules.moveRow.setHandle(!0),this._buildHeader(),this.bindModuleColumns()};n.prototype.createElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-col"),e.setAttribute("role","columnheader"),e.setAttribute("aria-sort","none"),e},n.prototype.createGroupElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-col-group-cols"),e},n.prototype.checkDefinition=function(){var e=this;Object.keys(this.definition).forEach(function(t){-1===e.defaultOptionList.indexOf(t)&&console.warn("Invalid column definition option in '"+(e.field||e.definition.title)+"' column:",t)})},n.prototype.setField=function(e){this.field=e,this.fieldStructure=e?this.table.options.nestedFieldSeparator?e.split(this.table.options.nestedFieldSeparator):[e]:[],this.getFieldValue=this.fieldStructure.length>1?this._getNestedData:this._getFlatData,this.setFieldValue=this.fieldStructure.length>1?this._setNestedData:this._setFlatData},n.prototype.registerColumnPosition=function(e){this.parent.registerColumnPosition(e)},n.prototype.registerColumnField=function(e){this.parent.registerColumnField(e)},n.prototype.reRegisterPosition=function(){this.isGroup?this.columns.forEach(function(e){e.reRegisterPosition()}):this.registerColumnPosition(this)},n.prototype._mapDepricatedFunctionality=function(){void 0!==this.definition.hideInHtml&&(this.definition.htmlOutput=!this.definition.hideInHtml,console.warn("hideInHtml column definition property is deprecated, you should now use htmlOutput")),void 0!==this.definition.align&&(this.definition.hozAlign=this.definition.align,console.warn("align column definition property is deprecated, you should now use hozAlign")),void 0!==this.definition.downloadTitle&&(this.definition.titleDownload=this.definition.downloadTitle,console.warn("downloadTitle definition property is deprecated, you should now use titleDownload"))},n.prototype.setTooltip=function(){var e=this,t=e.definition,o=t.headerTooltip||!1===t.tooltip?t.headerTooltip:e.table.options.tooltipsHeader;o?!0===o?t.field?e.table.modules.localize.bind("columns|"+t.field,function(o){e.element.setAttribute("title",o||t.title)}):e.element.setAttribute("title",t.title):("function"==typeof o&&!1===(o=o(e.getComponent()))&&(o=""),e.element.setAttribute("title",o)):e.element.setAttribute("title","")},n.prototype._buildHeader=function(){for(var e=this,t=e.definition;e.element.firstChild;)e.element.removeChild(e.element.firstChild);t.headerVertical&&(e.element.classList.add("tabulator-col-vertical"),"flip"===t.headerVertical&&e.element.classList.add("tabulator-col-vertical-flip")),e.contentElement=e._bindEvents(),e.contentElement=e._buildColumnHeaderContent(),e.element.appendChild(e.contentElement),e.isGroup?e._buildGroupHeader():e._buildColumnHeader(),e.setTooltip(),e.table.options.resizableColumns&&e.table.modExists("resizeColumns")&&e.table.modules.resizeColumns.initializeColumn("header",e,e.element),t.headerFilter&&e.table.modExists("filter")&&e.table.modExists("edit")&&(void 0!==t.headerFilterPlaceholder&&t.field&&e.table.modules.localize.setHeaderFilterColumnPlaceholder(t.field,t.headerFilterPlaceholder),e.table.modules.filter.initializeColumn(e)),e.table.modExists("frozenColumns")&&e.table.modules.frozenColumns.initializeColumn(e),e.table.options.movableColumns&&!e.isGroup&&e.table.modExists("moveColumn")&&e.table.modules.moveColumn.initializeColumn(e),(t.topCalc||t.bottomCalc)&&e.table.modExists("columnCalcs")&&e.table.modules.columnCalcs.initializeColumn(e),e.table.modExists("persistence")&&e.table.modules.persistence.config.columns&&e.table.modules.persistence.initializeColumn(e),e.element.addEventListener("mouseenter",function(t){e.setTooltip()})},n.prototype._bindEvents=function(){var e,t,o,i=this,n=i.definition;"function"==typeof n.headerClick&&i.element.addEventListener("click",function(e){n.headerClick(e,i.getComponent())}),"function"==typeof n.headerDblClick&&i.element.addEventListener("dblclick",function(e){n.headerDblClick(e,i.getComponent())}),"function"==typeof n.headerContext&&i.element.addEventListener("contextmenu",function(e){n.headerContext(e,i.getComponent())}),"function"==typeof n.headerTap&&(o=!1,i.element.addEventListener("touchstart",function(e){o=!0},{passive:!0}),i.element.addEventListener("touchend",function(e){o&&n.headerTap(e,i.getComponent()),o=!1})),"function"==typeof n.headerDblTap&&(e=null,i.element.addEventListener("touchend",function(t){e?(clearTimeout(e),e=null,n.headerDblTap(t,i.getComponent())):e=setTimeout(function(){clearTimeout(e),e=null},300)})),"function"==typeof n.headerTapHold&&(t=null,i.element.addEventListener("touchstart",function(e){clearTimeout(t),t=setTimeout(function(){clearTimeout(t),t=null,o=!1,n.headerTapHold(e,i.getComponent())},1e3)},{passive:!0}),i.element.addEventListener("touchend",function(e){clearTimeout(t),t=null})),"function"==typeof n.cellClick&&(i.cellEvents.cellClick=n.cellClick),"function"==typeof n.cellDblClick&&(i.cellEvents.cellDblClick=n.cellDblClick),"function"==typeof n.cellContext&&(i.cellEvents.cellContext=n.cellContext),"function"==typeof n.cellMouseEnter&&(i.cellEvents.cellMouseEnter=n.cellMouseEnter),"function"==typeof n.cellMouseLeave&&(i.cellEvents.cellMouseLeave=n.cellMouseLeave),"function"==typeof n.cellMouseOver&&(i.cellEvents.cellMouseOver=n.cellMouseOver),"function"==typeof n.cellMouseOut&&(i.cellEvents.cellMouseOut=n.cellMouseOut),"function"==typeof n.cellMouseMove&&(i.cellEvents.cellMouseMove=n.cellMouseMove),"function"==typeof n.cellTap&&(i.cellEvents.cellTap=n.cellTap),"function"==typeof n.cellDblTap&&(i.cellEvents.cellDblTap=n.cellDblTap),"function"==typeof n.cellTapHold&&(i.cellEvents.cellTapHold=n.cellTapHold),"function"==typeof n.cellEdited&&(i.cellEvents.cellEdited=n.cellEdited),"function"==typeof n.cellEditing&&(i.cellEvents.cellEditing=n.cellEditing),"function"==typeof n.cellEditCancelled&&(i.cellEvents.cellEditCancelled=n.cellEditCancelled)},n.prototype._buildColumnHeader=function(){var e=this,t=e.definition,o=e.table;if(o.modExists("sort")&&o.modules.sort.initializeColumn(e,e.contentElement),(t.headerContextMenu||t.headerMenu)&&o.modExists("menu")&&o.modules.menu.initializeColumnHeader(e),o.modExists("format")&&o.modules.format.initializeColumn(e),void 0!==t.editor&&o.modExists("edit")&&o.modules.edit.initializeColumn(e),void 0!==t.validator&&o.modExists("validate")&&o.modules.validate.initializeColumn(e),o.modExists("mutator")&&o.modules.mutator.initializeColumn(e),o.modExists("accessor")&&o.modules.accessor.initializeColumn(e),_typeof(o.options.responsiveLayout)&&o.modExists("responsiveLayout")&&o.modules.responsiveLayout.initializeColumn(e),void 0!==t.visible&&(t.visible?e.show(!0):e.hide(!0)),t.cssClass){t.cssClass.split(" ").forEach(function(t){e.element.classList.add(t)})}t.field&&this.element.setAttribute("tabulator-field",t.field),e.setMinWidth(void 0===t.minWidth?e.table.options.columnMinWidth:parseInt(t.minWidth)),e.reinitializeWidth(),e.tooltip=e.definition.tooltip||!1===e.definition.tooltip?e.definition.tooltip:e.table.options.tooltips,e.hozAlign=void 0===e.definition.hozAlign?e.table.options.cellHozAlign:e.definition.hozAlign,e.vertAlign=void 0===e.definition.vertAlign?e.table.options.cellVertAlign:e.definition.vertAlign},n.prototype._buildColumnHeaderContent=function(){var e=(this.definition,this.table,document.createElement("div"));return e.classList.add("tabulator-col-content"),this.titleElement=this._buildColumnHeaderTitle(),e.appendChild(this.titleElement),e},n.prototype._buildColumnHeaderTitle=function(){var e=this,t=e.definition,o=e.table,i=document.createElement("div");if(i.classList.add("tabulator-col-title"),t.editableTitle){var n=document.createElement("input");n.classList.add("tabulator-title-editor"),n.addEventListener("click",function(e){e.stopPropagation(),n.focus()}),n.addEventListener("change",function(){t.title=n.value,o.options.columnTitleChanged.call(e.table,e.getComponent())}),i.appendChild(n),t.field?o.modules.localize.bind("columns|"+t.field,function(e){n.value=e||t.title||"&nbsp;"}):n.value=t.title||"&nbsp;"}else t.field?o.modules.localize.bind("columns|"+t.field,function(o){e._formatColumnHeaderTitle(i,o||t.title||"&nbsp;")}):e._formatColumnHeaderTitle(i,t.title||"&nbsp;");return i},n.prototype._formatColumnHeaderTitle=function(e,t){var o,i,n,s,r,a=this;if(this.definition.titleFormatter&&this.table.modExists("format"))switch(o=this.table.modules.format.getFormatter(this.definition.titleFormatter),r=function(e){a.titleFormatterRendered=e},s={getValue:function(){return t},getElement:function(){return e}},n=this.definition.titleFormatterParams||{},n="function"==typeof n?n():n,i=o.call(this.table.modules.format,s,n,r),void 0===i?"undefined":_typeof(i)){case"object":i instanceof Node?e.appendChild(i):(e.innerHTML="",console.warn("Format Error - Title formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:",i));break;case"undefined":case"null":e.innerHTML="";break;default:e.innerHTML=i}else e.innerHTML=t},n.prototype._buildGroupHeader=function(){var e=this;if(this.element.classList.add("tabulator-col-group"),this.element.setAttribute("role","columngroup"),this.element.setAttribute("aria-title",this.definition.title),this.definition.cssClass){this.definition.cssClass.split(" ").forEach(function(t){e.element.classList.add(t)})}(this.definition.headerContextMenu||this.definition.headerMenu)&&this.table.modExists("menu")&&this.table.modules.menu.initializeColumnHeader(this),this.element.appendChild(this.groupElement)},n.prototype._getFlatData=function(e){return e[this.field]},n.prototype._getNestedData=function(e){for(var t,o=e,i=this.fieldStructure,n=i.length,s=0;s<n&&(o=o[i[s]],t=o,o);s++);return t},n.prototype._setFlatData=function(e,t){this.field&&(e[this.field]=t)},n.prototype._setNestedData=function(e,t){for(var o=e,i=this.fieldStructure,n=i.length,s=0;s<n;s++)if(s==n-1)o[i[s]]=t;else{if(!o[i[s]]){if(void 0===t)break;o[i[s]]={}}o=o[i[s]]}},n.prototype.attachColumn=function(e){var t=this;t.groupElement?(t.columns.push(e),t.groupElement.appendChild(e.getElement())):console.warn("Column Warning - Column being attached to another column instead of column group")},n.prototype.verticalAlign=function(e,t){var o=this.parent.isGroup?this.parent.getGroupElement().clientHeight:t||this.parent.getHeadersElement().clientHeight;this.element.style.height=o+"px",this.isGroup&&(this.groupElement.style.minHeight=o-this.contentElement.offsetHeight+"px"),this.isGroup||"top"===e||(this.element.style.paddingTop="bottom"===e?this.element.clientHeight-this.contentElement.offsetHeight+"px":(this.element.clientHeight-this.contentElement.offsetHeight)/2+"px"),this.columns.forEach(function(t){t.verticalAlign(e)})},n.prototype.clearVerticalAlign=function(){this.element.style.paddingTop="",this.element.style.height="",this.element.style.minHeight="",this.groupElement.style.minHeight="",this.columns.forEach(function(e){e.clearVerticalAlign()})},n.prototype.bindModuleColumns=function(){"rownum"==this.definition.formatter&&(this.table.rowManager.rowNumColumn=this)},n.prototype.getElement=function(){return this.element},n.prototype.getGroupElement=function(){return this.groupElement},n.prototype.getField=function(){return this.field},n.prototype.getFirstColumn=function(){return this.isGroup?!!this.columns.length&&this.columns[0].getFirstColumn():this},n.prototype.getLastColumn=function(){return this.isGroup?!!this.columns.length&&this.columns[this.columns.length-1].getLastColumn():this},n.prototype.getColumns=function(){return this.columns},n.prototype.getCells=function(){return this.cells},n.prototype.getTopColumn=function(){return this.parent.isGroup?this.parent.getTopColumn():this},n.prototype.getDefinition=function(e){var t=[];return this.isGroup&&e&&(this.columns.forEach(function(e){t.push(e.getDefinition(!0))}),this.definition.columns=t),this.definition},n.prototype.checkColumnVisibility=function(){var e=!1;this.columns.forEach(function(t){t.visible&&(e=!0)}),e?(this.show(),this.parent.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!1)):this.hide()},n.prototype.show=function(e,t){this.visible||(this.visible=!0,this.element.style.display="",this.parent.isGroup&&this.parent.checkColumnVisibility(),this.cells.forEach(function(e){e.show()}),this.isGroup||null!==this.width||this.reinitializeWidth(),this.table.columnManager._verticalAlignHeaders(),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.columns&&this.table.modules.persistence.save("columns"),!t&&this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.updateColumnVisibility(this,this.visible),e||this.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!0),this.parent.isGroup&&this.parent.matchChildWidths())},n.prototype.hide=function(e,t){this.visible&&(this.visible=!1,this.element.style.display="none",this.table.columnManager._verticalAlignHeaders(),this.parent.isGroup&&this.parent.checkColumnVisibility(),this.cells.forEach(function(e){e.hide()}),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.columns&&this.table.modules.persistence.save("columns"),!t&&this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.updateColumnVisibility(this,this.visible),e||this.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!1),this.parent.isGroup&&this.parent.matchChildWidths())},n.prototype.matchChildWidths=function(){var e=0;this.contentElement&&this.columns.length&&(this.columns.forEach(function(t){t.visible&&(e+=t.getWidth())}),this.contentElement.style.maxWidth=e-1+"px",this.parent.isGroup&&this.parent.matchChildWidths())},n.prototype.setWidth=function(e){this.widthFixed=!0,this.setWidthActual(e)},n.prototype.setWidthActual=function(e){isNaN(e)&&(e=Math.floor(this.table.element.clientWidth/100*parseInt(e))),e=Math.max(this.minWidth,e),this.width=e,this.widthStyled=e?e+"px":"",this.element.style.width=this.widthStyled,this.isGroup||this.cells.forEach(function(e){e.setWidth()}),this.parent.isGroup&&this.parent.matchChildWidths(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout()},n.prototype.checkCellHeights=function(){var e=[];this.cells.forEach(function(t){t.row.heightInitialized&&(null!==t.row.getElement().offsetParent?(e.push(t.row),t.row.clearCellHeight()):t.row.heightInitialized=!1)}),e.forEach(function(e){e.calcHeight()}),e.forEach(function(e){e.setCellHeight()})},n.prototype.getWidth=function(){var e=0;return this.isGroup?this.columns.forEach(function(t){t.visible&&(e+=t.getWidth())}):e=this.width,e},n.prototype.getHeight=function(){return this.element.offsetHeight},n.prototype.setMinWidth=function(e){this.minWidth=e,this.minWidthStyled=e?e+"px":"",this.element.style.minWidth=this.minWidthStyled,this.cells.forEach(function(e){e.setMinWidth()})},n.prototype.delete=function(){var e=this;return new Promise(function(t,o){e.isGroup&&e.columns.forEach(function(e){e.delete()}),e.table.modExists("edit")&&e.table.modules.edit.currentCell.column===e&&e.table.modules.edit.cancelEdit();for(var i=e.cells.length,n=0;n<i;n++)e.cells[0].delete();e.element.parentNode.removeChild(e.element),e.table.columnManager.deregisterColumn(e),t()})},n.prototype.columnRendered=function(){this.titleFormatterRendered&&this.titleFormatterRendered()},n.prototype.validate=function(){var e=[];return this.cells.forEach(function(t){t.validate()||e.push(t.getComponent())}),!e.length||e},n.prototype.generateCell=function(e){var t=this,o=new c(t,e);return this.cells.push(o),o},n.prototype.nextColumn=function(){var e=this.table.columnManager.findColumnIndex(this);return e>-1&&this._nextVisibleColumn(e+1)},n.prototype._nextVisibleColumn=function(e){var t=this.table.columnManager.getColumnByIndex(e);return!t||t.visible?t:this._nextVisibleColumn(e+1)},n.prototype.prevColumn=function(){var e=this.table.columnManager.findColumnIndex(this);return e>-1&&this._prevVisibleColumn(e-1)},n.prototype._prevVisibleColumn=function(e){var t=this.table.columnManager.getColumnByIndex(e);return!t||t.visible?t:this._prevVisibleColumn(e-1)},n.prototype.reinitializeWidth=function(e){this.widthFixed=!1,
-void 0===this.definition.width||e||this.setWidth(this.definition.width),this.table.modExists("filter")&&this.table.modules.filter.hideHeaderFilterElements(),this.fitToData(),this.table.modExists("filter")&&this.table.modules.filter.showHeaderFilterElements()},n.prototype.fitToData=function(){var e=this;this.widthFixed||(this.element.style.width="",e.cells.forEach(function(e){e.clearWidth()}));var t=this.element.offsetWidth;e.width&&this.widthFixed||(e.cells.forEach(function(e){var o=e.getWidth();o>t&&(t=o)}),t&&e.setWidthActual(t+1))},n.prototype.updateDefinition=function(e){var t=this;return new Promise(function(o,i){var n;t.isGroup?(console.warn("Column Update Error - The updateDefintion function is only available on columns, not column groups"),i("Column Update Error - The updateDefintion function is only available on columns, not column groups")):(n=Object.assign({},t.getDefinition()),n=Object.assign(n,e),t.table.columnManager.addColumn(n,!1,t).then(function(e){n.field==t.field&&(t.field=!1),t.delete().then(function(){o(e.getComponent())}).catch(function(e){i(e)})}).catch(function(e){i(e)}))})},n.prototype.deleteCell=function(e){var t=this.cells.indexOf(e);t>-1&&this.cells.splice(t,1)},n.prototype.defaultOptionList=["title","field","columns","visible","align","hozAlign","vertAlign","width","minWidth","widthGrow","widthShrink","resizable","frozen","responsive","tooltip","cssClass","rowHandle","hideInHtml","print","htmlOutput","sorter","sorterParams","formatter","formatterParams","variableHeight","editable","editor","editorParams","validator","mutator","mutatorParams","mutatorData","mutatorDataParams","mutatorEdit","mutatorEditParams","mutatorClipboard","mutatorClipboardParams","accessor","accessorParams","accessorData","accessorDataParams","accessorDownload","accessorDownloadParams","accessorClipboard","accessorClipboardParams","accessorPrint","accessorPrintParams","accessorHtmlOutput","accessorHtmlOutputParams","clipboard","download","downloadTitle","topCalc","topCalcParams","topCalcFormatter","topCalcFormatterParams","bottomCalc","bottomCalcParams","bottomCalcFormatter","bottomCalcFormatterParams","cellClick","cellDblClick","cellContext","cellTap","cellDblTap","cellTapHold","cellMouseEnter","cellMouseLeave","cellMouseOver","cellMouseOut","cellMouseMove","cellEditing","cellEdited","cellEditCancelled","headerSort","headerSortStartingDir","headerSortTristate","headerClick","headerDblClick","headerContext","headerTap","headerDblTap","headerTapHold","headerTooltip","headerVertical","editableTitle","titleFormatter","titleFormatterParams","headerFilter","headerFilterPlaceholder","headerFilterParams","headerFilterEmptyCheck","headerFilterFunc","headerFilterFuncParams","headerFilterLiveFilter","print","headerContextMenu","headerMenu","contextMenu","formatterPrint","formatterPrintParams","formatterClipboard","formatterClipboardParams","formatterHtmlOutput","formatterHtmlOutputParams","titlePrint","titleClipboard","titleHtmlOutput","titleDownload"],n.prototype.getComponent=function(){return this.component||(this.component=new o(this)),this.component};var s=function(e){this.table=e,this.element=this.createHolderElement(),this.tableElement=this.createTableElement(),this.heightFixer=this.createTableElement(),this.columnManager=null,this.height=0,this.firstRender=!1,this.renderMode="virtual",this.fixedHeight=!1,this.rows=[],this.activeRows=[],this.activeRowsCount=0,this.displayRows=[],this.displayRowsCount=0,this.scrollTop=0,this.scrollLeft=0,this.vDomRowHeight=20,this.vDomTop=0,this.vDomBottom=0,this.vDomScrollPosTop=0,this.vDomScrollPosBottom=0,this.vDomTopPad=0,this.vDomBottomPad=0,this.vDomMaxRenderChain=90,this.vDomWindowBuffer=0,this.vDomWindowMinTotalRows=20,this.vDomWindowMinMarginRows=5,this.vDomTopNewRows=[],this.vDomBottomNewRows=[],this.rowNumColumn=!1,this.redrawBlock=!1,this.redrawBlockRestoreConfig=!1,this.redrawBlockRederInPosition=!1};s.prototype.createHolderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-tableHolder"),e.setAttribute("tabindex",0),e},s.prototype.createTableElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-table"),e},s.prototype.getElement=function(){return this.element},s.prototype.getTableElement=function(){return this.tableElement},s.prototype.getRowPosition=function(e,t){return t?this.activeRows.indexOf(e):this.rows.indexOf(e)},s.prototype.setColumnManager=function(e){this.columnManager=e},s.prototype.initialize=function(){var e=this;e.setRenderMode(),e.element.appendChild(e.tableElement),e.firstRender=!0,e.element.addEventListener("scroll",function(){var t=e.element.scrollLeft;e.scrollLeft!=t&&(e.columnManager.scrollHorizontal(t),e.table.options.groupBy&&e.table.modules.groupRows.scrollHeaders(t),e.table.modExists("columnCalcs")&&e.table.modules.columnCalcs.scrollHorizontal(t),e.table.options.scrollHorizontal(t)),e.scrollLeft=t}),"virtual"===this.renderMode&&e.element.addEventListener("scroll",function(){var t=e.element.scrollTop,o=e.scrollTop>t;e.scrollTop!=t?(e.scrollTop=t,e.scrollVertical(o),"scroll"==e.table.options.ajaxProgressiveLoad&&e.table.modules.ajax.nextPage(e.element.scrollHeight-e.element.clientHeight-t),e.table.options.scrollVertical(t)):e.scrollTop=t})},s.prototype.findRow=function(e){var t=this;if("object"!=(void 0===e?"undefined":_typeof(e))){if(void 0===e||null===e)return!1;return t.rows.find(function(o){return o.data[t.table.options.index]==e})||!1}if(e instanceof a)return e;if(e instanceof r)return e._getSelf()||!1;if("undefined"!=typeof HTMLElement&&e instanceof HTMLElement){return t.rows.find(function(t){return t.element===e})||!1}return!1},s.prototype.getRowFromDataObject=function(e){return this.rows.find(function(t){return t.data===e})||!1},s.prototype.getRowFromPosition=function(e,t){return t?this.activeRows[e]:this.rows[e]},s.prototype.scrollToRow=function(e,t,o){var i,n=this,s=this.getDisplayRows().indexOf(e),r=e.getElement(),a=0;return new Promise(function(e,l){if(s>-1){if(void 0===t&&(t=n.table.options.scrollToRowPosition),void 0===o&&(o=n.table.options.scrollToRowIfVisible),"nearest"===t)switch(n.renderMode){case"classic":i=d.prototype.helpers.elOffset(r).top,t=Math.abs(n.element.scrollTop-i)>Math.abs(n.element.scrollTop+n.element.clientHeight-i)?"bottom":"top";break;case"virtual":t=Math.abs(n.vDomTop-s)>Math.abs(n.vDomBottom-s)?"bottom":"top"}if(!o&&d.prototype.helpers.elVisible(r)&&(a=d.prototype.helpers.elOffset(r).top-d.prototype.helpers.elOffset(n.element).top)>0&&a<n.element.clientHeight-r.offsetHeight)return!1;switch(n.renderMode){case"classic":n.element.scrollTop=d.prototype.helpers.elOffset(r).top-d.prototype.helpers.elOffset(n.element).top+n.element.scrollTop;break;case"virtual":n._virtualRenderFill(s,!0)}switch(t){case"middle":case"center":n.element.scrollHeight-n.element.scrollTop==n.element.clientHeight?n.element.scrollTop=n.element.scrollTop+(r.offsetTop-n.element.scrollTop)-(n.element.scrollHeight-r.offsetTop)/2:n.element.scrollTop=n.element.scrollTop-n.element.clientHeight/2;break;case"bottom":n.element.scrollHeight-n.element.scrollTop==n.element.clientHeight?n.element.scrollTop=n.element.scrollTop-(n.element.scrollHeight-r.offsetTop)+r.offsetHeight:n.element.scrollTop=n.element.scrollTop-n.element.clientHeight+r.offsetHeight}e()}else console.warn("Scroll Error - Row not visible"),l("Scroll Error - Row not visible")})},s.prototype.setData=function(e,t,o){var i=this,n=this;return new Promise(function(s,r){t&&i.getDisplayRows().length?n.table.options.pagination?n._setDataActual(e,!0):i.reRenderInPosition(function(){n._setDataActual(e)}):(i.table.options.autoColumns&&o&&i.table.columnManager.generateColumnsFromRowData(e),i.resetScroll(),i._setDataActual(e)),s()})},s.prototype._setDataActual=function(e,t){var o=this;o.table.options.dataLoading.call(this.table,e),this._wipeElements(),this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.clear(),Array.isArray(e)?(this.table.modExists("selectRow")&&this.table.modules.selectRow.clearSelectionData(),this.table.options.reactiveData&&this.table.modExists("reactiveData",!0)&&this.table.modules.reactiveData.watchData(e),e.forEach(function(e,t){if(e&&"object"===(void 0===e?"undefined":_typeof(e))){var i=new a(e,o);o.rows.push(i)}else console.warn("Data Loading Warning - Invalid row data detected and ignored, expecting object but received:",e)}),o.table.options.dataLoaded.call(this.table,e),o.refreshActiveData(!1,!1,t)):console.error("Data Loading Error - Unable to process data due to invalid data type \nExpecting: array \nReceived: ",void 0===e?"undefined":_typeof(e),"\nData:     ",e)},s.prototype._wipeElements=function(){this.rows.forEach(function(e){e.wipe()}),this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.wipe(),this.rows=[]},s.prototype.deleteRow=function(e,t){var o=this.rows.indexOf(e),i=this.activeRows.indexOf(e);i>-1&&this.activeRows.splice(i,1),o>-1&&this.rows.splice(o,1),this.setActiveRows(this.activeRows),this.displayRowIterator(function(t){var o=t.indexOf(e);o>-1&&t.splice(o,1)}),t||this.reRenderInPosition(),this.regenerateRowNumbers(),this.table.options.rowDeleted.call(this.table,e.getComponent()),this.table.options.dataEdited.call(this.table,this.getData()),this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.groupRows.updateGroupRows(!0):this.table.options.pagination&&this.table.modExists("page")?this.refreshActiveData(!1,!1,!0):this.table.options.pagination&&this.table.modExists("page")&&this.refreshActiveData("page")},s.prototype.addRow=function(e,t,o,i){var n=this.addRowActual(e,t,o,i);return this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("rowAdd",n,{data:e,pos:t,index:o}),n},s.prototype.addRows=function(e,t,o){var i=this,n=this,s=0,r=[];return new Promise(function(a,l){t=i.findAddRowPos(t),Array.isArray(e)||(e=[e]),s=e.length-1,(void 0===o&&t||void 0!==o&&!t)&&e.reverse(),e.forEach(function(e,i){var s=n.addRow(e,t,o,!0);r.push(s)}),i.table.options.groupBy&&i.table.modExists("groupRows")?i.table.modules.groupRows.updateGroupRows(!0):i.table.options.pagination&&i.table.modExists("page")?i.refreshActiveData(!1,!1,!0):i.reRenderInPosition(),i.table.modExists("columnCalcs")&&i.table.modules.columnCalcs.recalc(i.table.rowManager.activeRows),i.regenerateRowNumbers(),a(r)})},s.prototype.findAddRowPos=function(e){return void 0===e&&(e=this.table.options.addRowPos),"pos"===e&&(e=!0),"bottom"===e&&(e=!1),e},s.prototype.addRowActual=function(e,t,o,i){var n,s,r=e instanceof a?e:new a(e||{},this),l=this.findAddRowPos(t),c=-1;if(!o&&this.table.options.pagination&&"page"==this.table.options.paginationAddRow&&(s=this.getDisplayRows(),l?s.length?o=s[0]:this.activeRows.length&&(o=this.activeRows[this.activeRows.length-1],l=!1):s.length&&(o=s[s.length-1],l=!(s.length<this.table.modules.page.getPageSize()))),void 0!==o&&(o=this.findRow(o)),this.table.options.groupBy&&this.table.modExists("groupRows")){this.table.modules.groupRows.assignRowToGroup(r);var u=r.getGroup().rows;u.length>1&&(!o||o&&-1==u.indexOf(o)?l?u[0]!==r&&(o=u[0],this._moveRowInArray(r.getGroup().rows,r,o,!l)):u[u.length-1]!==r&&(o=u[u.length-1],this._moveRowInArray(r.getGroup().rows,r,o,!l)):this._moveRowInArray(r.getGroup().rows,r,o,!l))}return o&&(c=this.rows.indexOf(o)),o&&c>-1?(n=this.activeRows.indexOf(o),this.displayRowIterator(function(e){var t=e.indexOf(o);t>-1&&e.splice(l?t:t+1,0,r)}),n>-1&&this.activeRows.splice(l?n:n+1,0,r),this.rows.splice(l?c:c+1,0,r)):l?(this.displayRowIterator(function(e){e.unshift(r)}),this.activeRows.unshift(r),this.rows.unshift(r)):(this.displayRowIterator(function(e){e.push(r)}),this.activeRows.push(r),this.rows.push(r)),this.setActiveRows(this.activeRows),this.table.options.rowAdded.call(this.table,r.getComponent()),this.table.options.dataEdited.call(this.table,this.getData()),i||this.reRenderInPosition(),r},s.prototype.moveRow=function(e,t,o){this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("rowMove",e,{posFrom:this.getRowPosition(e),posTo:this.getRowPosition(t),to:t,after:o}),this.moveRowActual(e,t,o),this.regenerateRowNumbers(),this.table.options.rowMoved.call(this.table,e.getComponent())},s.prototype.moveRowActual=function(e,t,o){var i=this;if(this._moveRowInArray(this.rows,e,t,o),this._moveRowInArray(this.activeRows,e,t,o),this.displayRowIterator(function(n){i._moveRowInArray(n,e,t,o)}),this.table.options.groupBy&&this.table.modExists("groupRows")){!o&&t instanceof S&&(t=this.table.rowManager.prevDisplayRow(e)||t);var n=t.getGroup(),s=e.getGroup();n===s?this._moveRowInArray(n.rows,e,t,o):(s&&s.removeRow(e),n.insertRow(e,t,o))}},s.prototype._moveRowInArray=function(e,t,o,i){var n,s,r,a;if(t!==o&&(n=e.indexOf(t),n>-1&&(e.splice(n,1),s=e.indexOf(o),s>-1?i?e.splice(s+1,0,t):e.splice(s,0,t):e.splice(n,0,t)),e===this.getDisplayRows())){r=n<s?n:s,a=s>n?s:n+1;for(var l=r;l<=a;l++)e[l]&&this.styleRow(e[l],l)}},s.prototype.clearData=function(){this.setData([])},s.prototype.getRowIndex=function(e){return this.findRowIndex(e,this.rows)},s.prototype.getDisplayRowIndex=function(e){var t=this.getDisplayRows().indexOf(e);return t>-1&&t},s.prototype.nextDisplayRow=function(e,t){var o=this.getDisplayRowIndex(e),i=!1;return!1!==o&&o<this.displayRowsCount-1&&(i=this.getDisplayRows()[o+1]),!i||i instanceof a&&"row"==i.type?i:this.nextDisplayRow(i,t)},s.prototype.prevDisplayRow=function(e,t){var o=this.getDisplayRowIndex(e),i=!1;return o&&(i=this.getDisplayRows()[o-1]),!t||!i||i instanceof a&&"row"==i.type?i:this.prevDisplayRow(i,t)},s.prototype.findRowIndex=function(e,t){var o;return!!((e=this.findRow(e))&&(o=t.indexOf(e))>-1)&&o},s.prototype.getData=function(e,t){var o=[];return this.getRows(e).forEach(function(e){"row"==e.type&&o.push(e.getData(t||"data"))}),o},s.prototype.getComponents=function(e){var t=[];return this.getRows(e).forEach(function(e){t.push(e.getComponent())}),t},s.prototype.getDataCount=function(e){return this.getRows(e).length},s.prototype._genRemoteRequest=function(){var e=this,t=this.table,o=t.options,i={};if(t.modExists("page")){if(o.ajaxSorting){var n=this.table.modules.sort.getSort();n.forEach(function(e){delete e.column}),i[this.table.modules.page.paginationDataSentNames.sorters]=n}if(o.ajaxFiltering){var s=this.table.modules.filter.getFilters(!0,!0);i[this.table.modules.page.paginationDataSentNames.filters]=s}this.table.modules.ajax.setParams(i,!0)}t.modules.ajax.sendRequest().then(function(t){e._setDataActual(t,!0)}).catch(function(e){})},s.prototype.filterRefresh=function(){var e=this.table,t=e.options,o=this.scrollLeft;t.ajaxFiltering?"remote"==t.pagination&&e.modExists("page")?(e.modules.page.reset(!0),e.modules.page.setPage(1).then(function(){}).catch(function(){})):t.ajaxProgressiveLoad?e.modules.ajax.loadData().then(function(){}).catch(function(){}):this._genRemoteRequest():this.refreshActiveData("filter"),this.scrollHorizontal(o)},s.prototype.sorterRefresh=function(e){var t=this.table,o=this.table.options,i=this.scrollLeft;o.ajaxSorting?("remote"==o.pagination||o.progressiveLoad)&&t.modExists("page")?(t.modules.page.reset(!0),t.modules.page.setPage(1).then(function(){}).catch(function(){})):o.ajaxProgressiveLoad?t.modules.ajax.loadData().then(function(){}).catch(function(){}):this._genRemoteRequest():this.refreshActiveData(e?"filter":"sort"),this.scrollHorizontal(i)},s.prototype.scrollHorizontal=function(e){this.scrollLeft=e,this.element.scrollLeft=e,this.table.options.groupBy&&this.table.modules.groupRows.scrollHeaders(e),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.scrollHorizontal(e)},s.prototype.refreshActiveData=function(e,t,o){var i,n=this,s=this.table,r=["all","filter","sort","display","freeze","group","tree","page"];if(this.redrawBlock)return void((!this.redrawBlockRestoreConfig||r.indexOf(e)<r.indexOf(this.redrawBlockRestoreConfig.stage))&&(this.redrawBlockRestoreConfig={stage:e,skipStage:t,renderInPosition:o}));switch(n.table.modExists("edit")&&n.table.modules.edit.cancelEdit(),e||(e="all"),s.options.selectable&&!s.options.selectablePersistence&&s.modExists("selectRow")&&s.modules.selectRow.deselectRows(),e){case"all":case"filter":t?t=!1:s.modExists("filter")?n.setActiveRows(s.modules.filter.filter(n.rows)):n.setActiveRows(n.rows.slice(0));case"sort":t?t=!1:s.modExists("sort")&&s.modules.sort.sort(this.activeRows),this.regenerateRowNumbers();case"display":this.resetDisplayRows();case"freeze":t?t=!1:this.table.modExists("frozenRows")&&s.modules.frozenRows.isFrozen()&&(s.modules.frozenRows.getDisplayIndex()||s.modules.frozenRows.setDisplayIndex(this.getNextDisplayIndex()),i=s.modules.frozenRows.getDisplayIndex(),!0!==(i=n.setDisplayRows(s.modules.frozenRows.getRows(this.getDisplayRows(i-1)),i))&&s.modules.frozenRows.setDisplayIndex(i));case"group":t?t=!1:s.options.groupBy&&s.modExists("groupRows")&&(s.modules.groupRows.getDisplayIndex()||s.modules.groupRows.setDisplayIndex(this.getNextDisplayIndex()),i=s.modules.groupRows.getDisplayIndex(),!0!==(i=n.setDisplayRows(s.modules.groupRows.getRows(this.getDisplayRows(i-1)),i))&&s.modules.groupRows.setDisplayIndex(i));case"tree":t?t=!1:s.options.dataTree&&s.modExists("dataTree")&&(s.modules.dataTree.getDisplayIndex()||s.modules.dataTree.setDisplayIndex(this.getNextDisplayIndex()),i=s.modules.dataTree.getDisplayIndex(),!0!==(i=n.setDisplayRows(s.modules.dataTree.getRows(this.getDisplayRows(i-1)),i))&&s.modules.dataTree.setDisplayIndex(i)),s.options.pagination&&s.modExists("page")&&!o&&"local"==s.modules.page.getMode()&&s.modules.page.reset();case"page":t?t=!1:s.options.pagination&&s.modExists("page")&&(s.modules.page.getDisplayIndex()||s.modules.page.setDisplayIndex(this.getNextDisplayIndex()),i=s.modules.page.getDisplayIndex(),"local"==s.modules.page.getMode()&&s.modules.page.setMaxRows(this.getDisplayRows(i-1).length),!0!==(i=n.setDisplayRows(s.modules.page.getRows(this.getDisplayRows(i-1)),i))&&s.modules.page.setDisplayIndex(i))}d.prototype.helpers.elVisible(n.element)&&(o?n.reRenderInPosition():(n.renderTable(),s.options.layoutColumnsOnNewData&&n.table.columnManager.redraw(!0))),s.modExists("columnCalcs")&&s.modules.columnCalcs.recalc(this.activeRows)},s.prototype.regenerateRowNumbers=function(){var e=this;this.rowNumColumn&&this.activeRows.forEach(function(t){var o=t.getCell(e.rowNumColumn);o&&o._generateContents()})},s.prototype.setActiveRows=function(e){this.activeRows=e,this.activeRowsCount=this.activeRows.length},s.prototype.resetDisplayRows=function(){this.displayRows=[],this.displayRows.push(this.activeRows.slice(0)),this.displayRowsCount=this.displayRows[0].length,this.table.modExists("frozenRows")&&this.table.modules.frozenRows.setDisplayIndex(0),this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.setDisplayIndex(0),this.table.options.pagination&&this.table.modExists("page")&&this.table.modules.page.setDisplayIndex(0)},s.prototype.getNextDisplayIndex=function(){return this.displayRows.length},s.prototype.setDisplayRows=function(e,t){var o=!0;return t&&void 0!==this.displayRows[t]?(this.displayRows[t]=e,o=!0):(this.displayRows.push(e),o=t=this.displayRows.length-1),t==this.displayRows.length-1&&(this.displayRowsCount=this.displayRows[this.displayRows.length-1].length),o},s.prototype.getDisplayRows=function(e){return void 0===e?this.displayRows.length?this.displayRows[this.displayRows.length-1]:[]:this.displayRows[e]||[]},s.prototype.getVisibleRows=function(e){var t=this.element.scrollTop,o=this.element.clientHeight+t,i=!1,n=0,s=0,r=this.getDisplayRows();if(e){this.getDisplayRows();for(var a=this.vDomTop;a<=this.vDomBottom;a++)if(r[a])if(i){if(!(o-r[a].getElement().offsetTop>=0))break;s=a}else if(t-r[a].getElement().offsetTop>=0)n=a;else{if(i=!0,!(o-r[a].getElement().offsetTop>=0))break;s=a}}else n=this.vDomTop,s=this.vDomBottom;return r.slice(n,s+1)},s.prototype.displayRowIterator=function(e){this.displayRows.forEach(e),this.displayRowsCount=this.displayRows[this.displayRows.length-1].length},s.prototype.getRows=function(e){var t;switch(e){case"active":t=this.activeRows;break;case"display":t=this.table.rowManager.getDisplayRows();break;case"visible":t=this.getVisibleRows(!0);break;default:t=this.rows}return t},s.prototype.reRenderInPosition=function(e){if("virtual"==this.getRenderMode())if(this.redrawBlock)e?e():this.redrawBlockRederInPosition=!0;else{for(var t=this.element.scrollTop,o=!1,i=!1,n=this.scrollLeft,s=this.getDisplayRows(),r=this.vDomTop;r<=this.vDomBottom;r++)if(s[r]){var a=t-s[r].getElement().offsetTop;if(!(!1===i||Math.abs(a)<i))break;i=a,o=r}e&&e(),this._virtualRenderFill(!1===o?this.displayRowsCount-1:o,!0,i||0),this.scrollHorizontal(n)}else this.renderTable(),e&&e()},s.prototype.setRenderMode=function(){this.table.options.virtualDom?(this.renderMode="virtual",this.table.element.clientHeight||this.table.options.height?this.fixedHeight=!0:this.fixedHeight=!1):this.renderMode="classic"},s.prototype.getRenderMode=function(){return this.renderMode},s.prototype.renderTable=function(){switch(this.table.options.renderStarted.call(this.table),this.element.scrollTop=0,this.renderMode){case"classic":this._simpleRender();break;case"virtual":this._virtualRenderFill()}this.firstRender&&(this.displayRowsCount?(this.firstRender=!1,this.table.modules.layout.layout()):this.renderEmptyScroll()),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout(),this.displayRowsCount||this.table.options.placeholder&&(this.table.options.placeholder.setAttribute("tabulator-render-mode",this.renderMode),this.getElement().appendChild(this.table.options.placeholder),this.table.options.placeholder.style.width=this.table.columnManager.getWidth()+"px"),this.table.options.renderComplete.call(this.table)},s.prototype._simpleRender=function(){this._clearVirtualDom(),this.displayRowsCount?this.checkClassicModeGroupHeaderWidth():this.renderEmptyScroll()},s.prototype.checkClassicModeGroupHeaderWidth=function(){var e=this,t=this.tableElement,o=!0;e.getDisplayRows().forEach(function(i,n){e.styleRow(i,n),t.appendChild(i.getElement()),i.initialize(!0),"group"!==i.type&&(o=!1)}),t.style.minWidth=o?e.table.columnManager.getWidth()+"px":""},s.prototype.renderEmptyScroll=function(){this.table.options.placeholder?this.tableElement.style.display="none":(this.tableElement.style.minWidth=this.table.columnManager.getWidth()+"px",this.tableElement.style.minHeight="1px",this.tableElement.style.visibility="hidden")},s.prototype._clearVirtualDom=function(){var e=this.tableElement;for(this.table.options.placeholder&&this.table.options.placeholder.parentNode&&this.table.options.placeholder.parentNode.removeChild(this.table.options.placeholder);e.firstChild;)e.removeChild(e.firstChild);e.style.paddingTop="",e.style.paddingBottom="",e.style.minWidth="",e.style.minHeight="",e.style.display="",e.style.visibility="",this.scrollTop=0,this.scrollLeft=0,this.vDomTop=0,this.vDomBottom=0,this.vDomTopPad=0,this.vDomBottomPad=0},s.prototype.styleRow=function(e,t){var o=e.getElement();t%2?(o.classList.add("tabulator-row-even"),o.classList.remove("tabulator-row-odd")):(o.classList.add("tabulator-row-odd"),o.classList.remove("tabulator-row-even"))},s.prototype._virtualRenderFill=function(e,t,o){var i=this,n=i.tableElement,s=i.element,r=0,a=0,l=0,c=0,u=!0,h=i.getDisplayRows();if(e=e||0,o=o||0,e){for(;n.firstChild;)n.removeChild(n.firstChild);var p=(i.displayRowsCount-e+1)*i.vDomRowHeight;p<i.height&&(e-=Math.ceil((i.height-p)/i.vDomRowHeight))<0&&(e=0),r=Math.min(Math.max(Math.floor(i.vDomWindowBuffer/i.vDomRowHeight),i.vDomWindowMinMarginRows),e),e-=r}else i._clearVirtualDom();if(i.displayRowsCount&&d.prototype.helpers.elVisible(i.element)){for(i.vDomTop=e,i.vDomBottom=e-1;(a<=i.height+i.vDomWindowBuffer||c<i.vDomWindowMinTotalRows)&&i.vDomBottom<i.displayRowsCount-1;){var m=i.vDomBottom+1,f=h[m],g=0;i.styleRow(f,m),n.appendChild(f.getElement()),f.initialized?f.heightInitialized||f.normalizeHeight(!0):f.initialize(!0),g=f.getHeight(),c<r?l+=g:a+=g,g>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*g),"group"!==f.type&&(u=!1),i.vDomBottom++,c++}e?(i.vDomTopPad=t?i.vDomRowHeight*this.vDomTop+o:i.scrollTop-l,i.vDomBottomPad=i.vDomBottom==i.displayRowsCount-1?0:Math.max(i.vDomScrollHeight-i.vDomTopPad-a-l,0)):(this.vDomTopPad=0,i.vDomRowHeight=Math.floor((a+l)/c),i.vDomBottomPad=i.vDomRowHeight*(i.displayRowsCount-i.vDomBottom-1),i.vDomScrollHeight=l+a+i.vDomBottomPad-i.height),n.style.paddingTop=i.vDomTopPad+"px",n.style.paddingBottom=i.vDomBottomPad+"px",t&&(this.scrollTop=i.vDomTopPad+l+o-(this.element.scrollWidth>this.element.clientWidth?this.element.offsetHeight-this.element.clientHeight:0)),this.scrollTop=Math.min(this.scrollTop,this.element.scrollHeight-this.height),this.element.scrollWidth>this.element.offsetWidth&&t&&(this.scrollTop+=this.element.offsetHeight-this.element.clientHeight),this.vDomScrollPosTop=this.scrollTop,this.vDomScrollPosBottom=this.scrollTop,s.scrollTop=this.scrollTop,n.style.minWidth=u?i.table.columnManager.getWidth()+"px":"",i.table.options.groupBy&&"fitDataFill"!=i.table.modules.layout.getMode()&&i.displayRowsCount==i.table.modules.groupRows.countGroups()&&(i.tableElement.style.minWidth=i.table.columnManager.getWidth())}else this.renderEmptyScroll();this.fixedHeight||this.adjustTableSize()},s.prototype.scrollVertical=function(e){var t=this.scrollTop-this.vDomScrollPosTop,o=this.scrollTop-this.vDomScrollPosBottom,i=2*this.vDomWindowBuffer;if(-t>i||o>i){var n=this.scrollLeft;this._virtualRenderFill(Math.floor(this.element.scrollTop/this.element.scrollHeight*this.displayRowsCount)),this.scrollHorizontal(n)}else e?(t<0&&this._addTopRow(-t),o<0&&(this.vDomScrollHeight-this.scrollTop>this.vDomWindowBuffer?this._removeBottomRow(-o):this.vDomScrollPosBottom=this.scrollTop)):(t>=0&&(this.scrollTop>this.vDomWindowBuffer?this._removeTopRow(t):this.vDomScrollPosTop=this.scrollTop),o>=0&&this._addBottomRow(o))},s.prototype._addTopRow=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,o=this.tableElement,i=this.getDisplayRows();if(this.vDomTop){var n=this.vDomTop-1,s=i[n],r=s.getHeight()||this.vDomRowHeight;e>=r&&(this.styleRow(s,n),o.insertBefore(s.getElement(),o.firstChild),s.initialized&&s.heightInitialized||(this.vDomTopNewRows.push(s),s.heightInitialized||s.clearCellHeight()),s.initialize(),this.vDomTopPad-=r,this.vDomTopPad<0&&(this.vDomTopPad=n*this.vDomRowHeight),n||(this.vDomTopPad=0),o.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop-=r,this.vDomTop--),e=-(this.scrollTop-this.vDomScrollPosTop),s.getHeight()>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*s.getHeight()),t<this.vDomMaxRenderChain&&this.vDomTop&&e>=(i[this.vDomTop-1].getHeight()||this.vDomRowHeight)?this._addTopRow(e,t+1):this._quickNormalizeRowHeight(this.vDomTopNewRows)}},s.prototype._removeTopRow=function(e){var t=this.tableElement,o=this.getDisplayRows()[this.vDomTop],i=o.getHeight()||this.vDomRowHeight;if(e>=i){var n=o.getElement();n.parentNode.removeChild(n),this.vDomTopPad+=i,t.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop+=this.vDomTop?i:i+this.vDomWindowBuffer,this.vDomTop++,e=this.scrollTop-this.vDomScrollPosTop,this._removeTopRow(e)}},s.prototype._addBottomRow=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,o=this.tableElement,i=this.getDisplayRows();if(this.vDomBottom<this.displayRowsCount-1){var n=this.vDomBottom+1,s=i[n],r=s.getHeight()||this.vDomRowHeight;e>=r&&(this.styleRow(s,n),o.appendChild(s.getElement()),s.initialized&&s.heightInitialized||(this.vDomBottomNewRows.push(s),s.heightInitialized||s.clearCellHeight()),s.initialize(),this.vDomBottomPad-=r,(this.vDomBottomPad<0||n==this.displayRowsCount-1)&&(this.vDomBottomPad=0),o.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom+=r,this.vDomBottom++),e=this.scrollTop-this.vDomScrollPosBottom,s.getHeight()>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*s.getHeight()),t<this.vDomMaxRenderChain&&this.vDomBottom<this.displayRowsCount-1&&e>=(i[this.vDomBottom+1].getHeight()||this.vDomRowHeight)?this._addBottomRow(e,t+1):this._quickNormalizeRowHeight(this.vDomBottomNewRows)}},s.prototype._removeBottomRow=function(e){var t=this.tableElement,o=this.getDisplayRows()[this.vDomBottom],i=o.getHeight()||this.vDomRowHeight;if(e>=i){var n=o.getElement();n.parentNode&&n.parentNode.removeChild(n),this.vDomBottomPad+=i,this.vDomBottomPad<0&&(this.vDomBottomPad=0),t.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom-=i,this.vDomBottom--,e=-(this.scrollTop-this.vDomScrollPosBottom),this._removeBottomRow(e)}},s.prototype._quickNormalizeRowHeight=function(e){e.forEach(function(e){e.calcHeight()}),e.forEach(function(e){e.setCellHeight()}),e.length=0},s.prototype.normalizeHeight=function(){this.activeRows.forEach(function(e){e.normalizeHeight()})},s.prototype.adjustTableSize=function(){var e,t=this.element.clientHeight;if("virtual"===this.renderMode){var o=this.columnManager.getElement().offsetHeight+(this.table.footerManager&&!this.table.footerManager.external?this.table.footerManager.getElement().offsetHeight:0);this.fixedHeight?(this.element.style.minHeight="calc(100% - "+o+"px)",this.element.style.height="calc(100% - "+o+"px)",this.element.style.maxHeight="calc(100% - "+o+"px)"):(this.element.style.height="",this.element.style.height=this.table.element.clientHeight-o+"px",this.element.scrollTop=this.scrollTop),this.height=this.element.clientHeight,this.vDomWindowBuffer=this.table.options.virtualDomBuffer||this.height,this.fixedHeight||t==this.element.clientHeight||((e=this.table.modExists("resizeTable"))&&!this.table.modules.resizeTable.autoResize||!e)&&this.redraw()}},s.prototype.reinitialize=function(){this.rows.forEach(function(e){e.reinitialize()})},s.prototype.blockRedraw=function(){this.redrawBlock=!0,this.redrawBlockRestoreConfig=!1},s.prototype.restoreRedraw=function(){this.redrawBlock=!1,this.redrawBlockRestoreConfig?(this.refreshActiveData(this.redrawBlockRestoreConfig.stage,this.redrawBlockRestoreConfig.skipStage,this.redrawBlockRestoreConfig.renderInPosition),this.redrawBlockRestoreConfig=!1):this.redrawBlockRederInPosition&&this.reRenderInPosition(),this.redrawBlockRederInPosition=!1},s.prototype.redraw=function(e){var t=this.scrollLeft;this.adjustTableSize(),this.table.tableWidth=this.table.element.clientWidth,e?this.renderTable():("classic"==this.renderMode?this.table.options.groupBy?this.refreshActiveData("group",!1,!1):this._simpleRender():(this.reRenderInPosition(),this.scrollHorizontal(t)),this.displayRowsCount||this.table.options.placeholder&&this.getElement().appendChild(this.table.options.placeholder))},s.prototype.resetScroll=function(){if(this.element.scrollLeft=0,this.element.scrollTop=0,"ie"===this.table.browser){var e=document.createEvent("Event");e.initEvent("scroll",!1,!0),this.element.dispatchEvent(e)}else this.element.dispatchEvent(new Event("scroll"))};var r=function(e){this._row=e};r.prototype.getData=function(e){return this._row.getData(e)},r.prototype.getElement=function(){return this._row.getElement()},r.prototype.getCells=function(){var e=[];return this._row.getCells().forEach(function(t){e.push(t.getComponent())}),e},r.prototype.getCell=function(e){var t=this._row.getCell(e);return!!t&&t.getComponent()},r.prototype.getIndex=function(){return this._row.getData("data")[this._row.table.options.index]},r.prototype.getPosition=function(e){return this._row.table.rowManager.getRowPosition(this._row,e)},r.prototype.delete=function(){return this._row.delete()},r.prototype.scrollTo=function(){return this._row.table.rowManager.scrollToRow(this._row)},r.prototype.pageTo=function(){if(this._row.table.modExists("page",!0))return this._row.table.modules.page.setPageToRow(this._row)},r.prototype.move=function(e,t){this._row.moveToRow(e,t)},r.prototype.update=function(e){return this._row.updateData(e)},
-r.prototype.normalizeHeight=function(){this._row.normalizeHeight(!0)},r.prototype.select=function(){this._row.table.modules.selectRow.selectRows(this._row)},r.prototype.deselect=function(){this._row.table.modules.selectRow.deselectRows(this._row)},r.prototype.toggleSelect=function(){this._row.table.modules.selectRow.toggleRow(this._row)},r.prototype.isSelected=function(){return this._row.table.modules.selectRow.isRowSelected(this._row)},r.prototype._getSelf=function(){return this._row},r.prototype.validate=function(){return this._row.validate()},r.prototype.freeze=function(){this._row.table.modExists("frozenRows",!0)&&this._row.table.modules.frozenRows.freezeRow(this._row)},r.prototype.unfreeze=function(){this._row.table.modExists("frozenRows",!0)&&this._row.table.modules.frozenRows.unfreezeRow(this._row)},r.prototype.isFrozen=function(){if(this._row.table.modExists("frozenRows",!0)){return this._row.table.modules.frozenRows.rows.indexOf(this._row)>-1}return!1},r.prototype.treeCollapse=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.collapseRow(this._row)},r.prototype.treeExpand=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.expandRow(this._row)},r.prototype.treeToggle=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.toggleRow(this._row)},r.prototype.getTreeParent=function(){return!!this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.getTreeParent(this._row)},r.prototype.getTreeChildren=function(){return!!this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.getTreeChildren(this._row)},r.prototype.addTreeChild=function(e,t,o){return!!this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.addTreeChildRow(this._row,e,t,o)},r.prototype.reformat=function(){return this._row.reinitialize()},r.prototype.getGroup=function(){return this._row.getGroup().getComponent()},r.prototype.getTable=function(){return this._row.table},r.prototype.getNextRow=function(){var e=this._row.nextRow();return e?e.getComponent():e},r.prototype.getPrevRow=function(){var e=this._row.prevRow();return e?e.getComponent():e};var a=function(e,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"row";this.table=t.table,this.parent=t,this.data={},this.type=o,this.element=this.createElement(),this.modules={},this.cells=[],this.height=0,this.heightStyled="",this.manualHeight=!1,this.outerHeight=0,this.initialized=!1,this.heightInitialized=!1,this.component=null,this.setData(e),this.generateElement()};a.prototype.createElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-row"),e.setAttribute("role","row"),e},a.prototype.getElement=function(){return this.element},a.prototype.detachElement=function(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)},a.prototype.generateElement=function(){var e,t,o,i=this;!1!==i.table.options.selectable&&i.table.modExists("selectRow")&&i.table.modules.selectRow.initializeRow(this),!1!==i.table.options.movableRows&&i.table.modExists("moveRow")&&i.table.modules.moveRow.initializeRow(this),!1!==i.table.options.dataTree&&i.table.modExists("dataTree")&&i.table.modules.dataTree.initializeRow(this),"collapse"===i.table.options.responsiveLayout&&i.table.modExists("responsiveLayout")&&i.table.modules.responsiveLayout.initializeRow(this),i.table.options.rowContextMenu&&this.table.modExists("menu")&&i.table.modules.menu.initializeRow(this),i.table.options.rowClick&&i.element.addEventListener("click",function(e){i.table.options.rowClick(e,i.getComponent())}),i.table.options.rowDblClick&&i.element.addEventListener("dblclick",function(e){i.table.options.rowDblClick(e,i.getComponent())}),i.table.options.rowContext&&i.element.addEventListener("contextmenu",function(e){i.table.options.rowContext(e,i.getComponent())}),i.table.options.rowMouseEnter&&i.element.addEventListener("mouseenter",function(e){i.table.options.rowMouseEnter(e,i.getComponent())}),i.table.options.rowMouseLeave&&i.element.addEventListener("mouseleave",function(e){i.table.options.rowMouseLeave(e,i.getComponent())}),i.table.options.rowMouseOver&&i.element.addEventListener("mouseover",function(e){i.table.options.rowMouseOver(e,i.getComponent())}),i.table.options.rowMouseOut&&i.element.addEventListener("mouseout",function(e){i.table.options.rowMouseOut(e,i.getComponent())}),i.table.options.rowMouseMove&&i.element.addEventListener("mousemove",function(e){i.table.options.rowMouseMove(e,i.getComponent())}),i.table.options.rowTap&&(o=!1,i.element.addEventListener("touchstart",function(e){o=!0},{passive:!0}),i.element.addEventListener("touchend",function(e){o&&i.table.options.rowTap(e,i.getComponent()),o=!1})),i.table.options.rowDblTap&&(e=null,i.element.addEventListener("touchend",function(t){e?(clearTimeout(e),e=null,i.table.options.rowDblTap(t,i.getComponent())):e=setTimeout(function(){clearTimeout(e),e=null},300)})),i.table.options.rowTapHold&&(t=null,i.element.addEventListener("touchstart",function(e){clearTimeout(t),t=setTimeout(function(){clearTimeout(t),t=null,o=!1,i.table.options.rowTapHold(e,i.getComponent())},1e3)},{passive:!0}),i.element.addEventListener("touchend",function(e){clearTimeout(t),t=null}))},a.prototype.generateCells=function(){this.cells=this.table.columnManager.generateCells(this)},a.prototype.initialize=function(e){var t=this;if(!t.initialized||e){for(t.deleteCells();t.element.firstChild;)t.element.removeChild(t.element.firstChild);this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layoutRow(this),this.generateCells(),t.cells.forEach(function(e){t.element.appendChild(e.getElement()),e.cellRendered()}),e&&t.normalizeHeight(),t.table.options.dataTree&&t.table.modExists("dataTree")&&t.table.modules.dataTree.layoutRow(this),"collapse"===t.table.options.responsiveLayout&&t.table.modExists("responsiveLayout")&&t.table.modules.responsiveLayout.layoutRow(this),t.table.options.rowFormatter&&t.table.options.rowFormatter(t.getComponent()),t.table.options.resizableRows&&t.table.modExists("resizeRows")&&t.table.modules.resizeRows.initializeRow(t),t.initialized=!0}},a.prototype.reinitializeHeight=function(){this.heightInitialized=!1,null!==this.element.offsetParent&&this.normalizeHeight(!0)},a.prototype.reinitialize=function(){this.initialized=!1,this.heightInitialized=!1,this.manualHeight||(this.height=0,this.heightStyled=""),null!==this.element.offsetParent&&this.initialize(!0)},a.prototype.calcHeight=function(e){var t=0,o=this.table.options.resizableRows?this.element.clientHeight:0;this.cells.forEach(function(e){var o=e.getHeight();o>t&&(t=o)}),this.height=e?Math.max(t,o):this.manualHeight?this.height:Math.max(t,o),this.heightStyled=this.height?this.height+"px":"",this.outerHeight=this.element.offsetHeight},a.prototype.setCellHeight=function(){this.cells.forEach(function(e){e.setHeight()}),this.heightInitialized=!0},a.prototype.clearCellHeight=function(){this.cells.forEach(function(e){e.clearHeight()})},a.prototype.normalizeHeight=function(e){e&&this.clearCellHeight(),this.calcHeight(e),this.setCellHeight()},a.prototype.setHeight=function(e,t){(this.height!=e||t)&&(this.manualHeight=!0,this.height=e,this.heightStyled=e?e+"px":"",this.setCellHeight(),this.outerHeight=this.element.offsetHeight)},a.prototype.getHeight=function(){return this.outerHeight},a.prototype.getWidth=function(){return this.element.offsetWidth},a.prototype.deleteCell=function(e){var t=this.cells.indexOf(e);t>-1&&this.cells.splice(t,1)},a.prototype.setData=function(e){this.table.modExists("mutator")&&(e=this.table.modules.mutator.transformRow(e,"data")),this.data=e,this.table.options.reactiveData&&this.table.modExists("reactiveData",!0)&&this.table.modules.reactiveData.watchRow(this)},a.prototype.updateData=function(e){var t,o=this,i=d.prototype.helpers.elVisible(this.element),n={};return new Promise(function(s,r){"string"==typeof e&&(e=JSON.parse(e)),o.table.options.reactiveData&&o.table.modExists("reactiveData",!0)&&o.table.modules.reactiveData.block(),o.table.modExists("mutator")?(n=Object.assign(n,o.data),n=Object.assign(n,e),t=o.table.modules.mutator.transformRow(n,"data",e)):t=e;for(var a in t)o.data[a]=t[a];o.table.options.reactiveData&&o.table.modExists("reactiveData",!0)&&o.table.modules.reactiveData.unblock();for(var a in e){o.table.columnManager.getColumnsByFieldRoot(a).forEach(function(e){var n=o.getCell(e.getField());if(n){var s=e.getFieldValue(t);n.getValue()!=s&&(n.setValueProcessData(s),i&&n.cellRendered())}})}i?(o.normalizeHeight(!0),o.table.options.rowFormatter&&o.table.options.rowFormatter(o.getComponent())):(o.initialized=!1,o.height=0,o.heightStyled=""),!1!==o.table.options.dataTree&&o.table.modExists("dataTree")&&o.table.modules.dataTree.redrawNeeded(e)&&(o.table.modules.dataTree.initializeRow(o),o.table.modules.dataTree.layoutRow(o),o.table.rowManager.refreshActiveData("tree",!1,!0)),o.table.options.rowUpdated.call(o.table,o.getComponent()),s()})},a.prototype.getData=function(e){var t=this;return e?t.table.modExists("accessor")?t.table.modules.accessor.transformRow(t.data,e):void 0:this.data},a.prototype.getCell=function(e){return e=this.table.columnManager.findColumn(e),this.cells.find(function(t){return t.column===e})},a.prototype.getCellIndex=function(e){return this.cells.findIndex(function(t){return t===e})},a.prototype.findNextEditableCell=function(e){var t=!1;if(e<this.cells.length-1)for(var o=e+1;o<this.cells.length;o++){var i=this.cells[o];if(i.column.modules.edit&&d.prototype.helpers.elVisible(i.getElement())){var n=!0;if("function"==typeof i.column.modules.edit.check&&(n=i.column.modules.edit.check(i.getComponent())),n){t=i;break}}}return t},a.prototype.findPrevEditableCell=function(e){var t=!1;if(e>0)for(var o=e-1;o>=0;o--){var i=this.cells[o],n=!0;if(i.column.modules.edit&&d.prototype.helpers.elVisible(i.getElement())&&("function"==typeof i.column.modules.edit.check&&(n=i.column.modules.edit.check(i.getComponent())),n)){t=i;break}}return t},a.prototype.getCells=function(){return this.cells},a.prototype.nextRow=function(){return this.table.rowManager.nextDisplayRow(this,!0)||!1},a.prototype.prevRow=function(){return this.table.rowManager.prevDisplayRow(this,!0)||!1},a.prototype.moveToRow=function(e,t){var o=this.table.rowManager.findRow(e);o?(this.table.rowManager.moveRowActual(this,o,!t),this.table.rowManager.refreshActiveData("display",!1,!0)):console.warn("Move Error - No matching row found:",e)},a.prototype.validate=function(){var e=[];return this.cells.forEach(function(t){t.validate()||e.push(t.getComponent())}),!e.length||e},a.prototype.delete=function(){var e=this;return new Promise(function(t,o){var i,n;e.table.options.history&&e.table.modExists("history")&&(e.table.options.groupBy&&e.table.modExists("groupRows")?(n=e.getGroup().rows,(i=n.indexOf(e))&&(i=n[i-1])):(i=e.table.rowManager.getRowIndex(e))&&(i=e.table.rowManager.rows[i-1]),e.table.modules.history.action("rowDelete",e,{data:e.getData(),pos:!i,index:i})),e.deleteActual(),t()})},a.prototype.deleteActual=function(e){this.table.rowManager.getRowIndex(this);this.table.modExists("selectRow")&&this.table.modules.selectRow._deselectRow(this,!0),this.table.modExists("edit")&&this.table.modules.edit.currentCell.row===this&&this.table.modules.edit.cancelEdit(),this.table.options.reactiveData&&this.table.modExists("reactiveData",!0),this.modules.group&&this.modules.group.removeRow(this),this.table.rowManager.deleteRow(this,e),this.deleteCells(),this.initialized=!1,this.heightInitialized=!1,this.table.options.dataTree&&this.table.modExists("dataTree",!0)&&this.table.modules.dataTree.rowDelete(this),this.table.modExists("columnCalcs")&&(this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.columnCalcs.recalcRowGroup(this):this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows))},a.prototype.deleteCells=function(){for(var e=this.cells.length,t=0;t<e;t++)this.cells[0].delete()},a.prototype.wipe=function(){for(this.deleteCells();this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.element=!1,this.modules={},this.element.parentNode&&this.element.parentNode.removeChild(this.element)},a.prototype.getGroup=function(){return this.modules.group||!1},a.prototype.getComponent=function(){return this.component||(this.component=new r(this)),this.component};var l=function(e){this._cell=e};l.prototype.getValue=function(){return this._cell.getValue()},l.prototype.getOldValue=function(){return this._cell.getOldValue()},l.prototype.getElement=function(){return this._cell.getElement()},l.prototype.getRow=function(){return this._cell.row.getComponent()},l.prototype.getData=function(){return this._cell.row.getData()},l.prototype.getField=function(){return this._cell.column.getField()},l.prototype.getColumn=function(){return this._cell.column.getComponent()},l.prototype.setValue=function(e,t){void 0===t&&(t=!0),this._cell.setValue(e,t)},l.prototype.restoreOldValue=function(){this._cell.setValueActual(this._cell.getOldValue())},l.prototype.edit=function(e){return this._cell.edit(e)},l.prototype.cancelEdit=function(){this._cell.cancelEdit()},l.prototype.isEdited=function(){return!!this._cell.modules.edit&&this._cell.modules.edit.edited},l.prototype.clearEdited=function(){self.table.modExists("edit",!0)&&this._cell.table.modules.edit.clearEdited(this._cell)},l.prototype.isValid=function(){return!this._cell.modules.validate||!this._cell.modules.validate.invalid},l.prototype.validate=function(){return this._cell.validate()},l.prototype.clearValidation=function(){self.table.modExists("validate",!0)&&this._cell.table.modules.validate.clearValidation(this._cell)},l.prototype.nav=function(){return this._cell.nav()},l.prototype.checkHeight=function(){this._cell.checkHeight()},l.prototype.getTable=function(){return this._cell.table},l.prototype._getSelf=function(){return this._cell};var c=function(e,t){this.table=e.table,this.column=e,this.row=t,this.element=null,this.value=null,this.oldValue=null,this.modules={},this.height=null,this.width=null,this.minWidth=null,this.component=null,this.build()};c.prototype.build=function(){this.generateElement(),this.setWidth(),this._configureCell(),this.setValueActual(this.column.getFieldValue(this.row.data))},c.prototype.generateElement=function(){this.element=document.createElement("div"),this.element.className="tabulator-cell",this.element.setAttribute("role","gridcell"),this.element=this.element},c.prototype._configureCell=function(){var e=this,t=e.column.cellEvents,o=e.element,i=this.column.getField(),n={top:"flex-start",bottom:"flex-end",middle:"center"},s={left:"flex-start",right:"flex-end",center:"center"};if(o.style.textAlign=e.column.hozAlign,e.column.vertAlign&&(o.style.display="inline-flex",o.style.alignItems=n[e.column.vertAlign]||"",e.column.hozAlign&&(o.style.justifyContent=s[e.column.hozAlign]||"")),i&&o.setAttribute("tabulator-field",i),e.column.definition.cssClass){e.column.definition.cssClass.split(" ").forEach(function(e){o.classList.add(e)})}"hover"===this.table.options.tooltipGenerationMode&&o.addEventListener("mouseenter",function(t){e._generateTooltip()}),e._bindClickEvents(t),e._bindTouchEvents(t),e._bindMouseEvents(t),e.column.modules.edit&&e.table.modules.edit.bindEditor(e),e.column.definition.rowHandle&&!1!==e.table.options.movableRows&&e.table.modExists("moveRow")&&e.table.modules.moveRow.initializeCell(e),e.column.visible||e.hide()},c.prototype._bindClickEvents=function(e){var t=this,o=t.element;(e.cellClick||t.table.options.cellClick)&&o.addEventListener("click",function(o){var i=t.getComponent();e.cellClick&&e.cellClick.call(t.table,o,i),t.table.options.cellClick&&t.table.options.cellClick.call(t.table,o,i)}),e.cellDblClick||this.table.options.cellDblClick?o.addEventListener("dblclick",function(o){var i=t.getComponent();e.cellDblClick&&e.cellDblClick.call(t.table,o,i),t.table.options.cellDblClick&&t.table.options.cellDblClick.call(t.table,o,i)}):o.addEventListener("dblclick",function(e){if(!t.table.modExists("edit")||t.table.modules.edit.currentCell!==t){e.preventDefault();try{if(document.selection){var o=document.body.createTextRange();o.moveToElementText(t.element),o.select()}else if(window.getSelection){var o=document.createRange();o.selectNode(t.element),window.getSelection().removeAllRanges(),window.getSelection().addRange(o)}}catch(e){}}}),(e.cellContext||this.table.options.cellContext)&&o.addEventListener("contextmenu",function(o){var i=t.getComponent();e.cellContext&&e.cellContext.call(t.table,o,i),t.table.options.cellContext&&t.table.options.cellContext.call(t.table,o,i)})},c.prototype._bindMouseEvents=function(e){var t=this,o=t.element;(e.cellMouseEnter||t.table.options.cellMouseEnter)&&o.addEventListener("mouseenter",function(o){var i=t.getComponent();e.cellMouseEnter&&e.cellMouseEnter.call(t.table,o,i),t.table.options.cellMouseEnter&&t.table.options.cellMouseEnter.call(t.table,o,i)}),(e.cellMouseLeave||t.table.options.cellMouseLeave)&&o.addEventListener("mouseleave",function(o){var i=t.getComponent();e.cellMouseLeave&&e.cellMouseLeave.call(t.table,o,i),t.table.options.cellMouseLeave&&t.table.options.cellMouseLeave.call(t.table,o,i)}),(e.cellMouseOver||t.table.options.cellMouseOver)&&o.addEventListener("mouseover",function(o){var i=t.getComponent();e.cellMouseOver&&e.cellMouseOver.call(t.table,o,i),t.table.options.cellMouseOver&&t.table.options.cellMouseOver.call(t.table,o,i)}),(e.cellMouseOut||t.table.options.cellMouseOut)&&o.addEventListener("mouseout",function(o){var i=t.getComponent();e.cellMouseOut&&e.cellMouseOut.call(t.table,o,i),t.table.options.cellMouseOut&&t.table.options.cellMouseOut.call(t.table,o,i)}),(e.cellMouseMove||t.table.options.cellMouseMove)&&o.addEventListener("mousemove",function(o){var i=t.getComponent();e.cellMouseMove&&e.cellMouseMove.call(t.table,o,i),t.table.options.cellMouseMove&&t.table.options.cellMouseMove.call(t.table,o,i)})},c.prototype._bindTouchEvents=function(e){var t,o,i,n=this,s=n.element;(e.cellTap||this.table.options.cellTap)&&(i=!1,s.addEventListener("touchstart",function(e){i=!0},{passive:!0}),s.addEventListener("touchend",function(t){if(i){var o=n.getComponent();e.cellTap&&e.cellTap.call(n.table,t,o),n.table.options.cellTap&&n.table.options.cellTap.call(n.table,t,o)}i=!1})),(e.cellDblTap||this.table.options.cellDblTap)&&(t=null,s.addEventListener("touchend",function(o){if(t){clearTimeout(t),t=null;var i=n.getComponent();e.cellDblTap&&e.cellDblTap.call(n.table,o,i),n.table.options.cellDblTap&&n.table.options.cellDblTap.call(n.table,o,i)}else t=setTimeout(function(){clearTimeout(t),t=null},300)})),(e.cellTapHold||this.table.options.cellTapHold)&&(o=null,s.addEventListener("touchstart",function(t){clearTimeout(o),o=setTimeout(function(){clearTimeout(o),o=null,i=!1;var s=n.getComponent();e.cellTapHold&&e.cellTapHold.call(n.table,t,s),n.table.options.cellTapHold&&n.table.options.cellTapHold.call(n.table,t,s)},1e3)},{passive:!0}),s.addEventListener("touchend",function(e){clearTimeout(o),o=null}))},c.prototype._generateContents=function(){var e;switch(e=this.table.modExists("format")?this.table.modules.format.formatValue(this):this.element.innerHTML=this.value,void 0===e?"undefined":_typeof(e)){case"object":if(e instanceof Node){for(;this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.element.appendChild(e)}else this.element.innerHTML="",null!=e&&console.warn("Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:",e);break;case"undefined":case"null":this.element.innerHTML="";break;default:this.element.innerHTML=e}},c.prototype.cellRendered=function(){this.table.modExists("format")&&this.table.modules.format.cellRendered&&this.table.modules.format.cellRendered(this)},c.prototype._generateTooltip=function(){var e=this.column.tooltip;e?(!0===e?e=this.value:"function"==typeof e&&!1===(e=e(this.getComponent()))&&(e=""),void 0===e&&(e=""),this.element.setAttribute("title",e)):this.element.setAttribute("title","")},c.prototype.getElement=function(){return this.element},c.prototype.getValue=function(){return this.value},c.prototype.getOldValue=function(){return this.oldValue},c.prototype.setValue=function(e,t){var o,i=this.setValueProcessData(e,t);i&&(this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("cellEdit",this,{oldValue:this.oldValue,newValue:this.value}),o=this.getComponent(),this.column.cellEvents.cellEdited&&this.column.cellEvents.cellEdited.call(this.table,o),this.cellRendered(),this.table.options.cellEdited.call(this.table,o),this.table.options.dataEdited.call(this.table,this.table.rowManager.getData()))},c.prototype.setValueProcessData=function(e,t){var o=!1;return this.value!=e&&(o=!0,t&&this.column.modules.mutate&&(e=this.table.modules.mutator.transformCell(this,e))),this.setValueActual(e),o&&this.table.modExists("columnCalcs")&&(this.column.definition.topCalc||this.column.definition.bottomCalc)&&(this.table.options.groupBy&&this.table.modExists("groupRows")?("table"!=this.table.options.columnCalcs&&"both"!=this.table.options.columnCalcs||this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),"table"!=this.table.options.columnCalcs&&this.table.modules.columnCalcs.recalcRowGroup(this.row)):this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows)),o},c.prototype.setValueActual=function(e){this.oldValue=this.value,this.value=e,this.table.options.reactiveData&&this.table.modExists("reactiveData")&&this.table.modules.reactiveData.block(),this.column.setFieldValue(this.row.data,e),this.table.options.reactiveData&&this.table.modExists("reactiveData")&&this.table.modules.reactiveData.unblock(),this._generateContents(),this._generateTooltip(),this.table.options.resizableColumns&&this.table.modExists("resizeColumns")&&this.table.modules.resizeColumns.initializeColumn("cell",this.column,this.element),this.column.definition.contextMenu&&this.table.modExists("menu")&&this.table.modules.menu.initializeCell(this),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layoutElement(this.element,this.column)},c.prototype.setWidth=function(){this.width=this.column.width,this.element.style.width=this.column.widthStyled},c.prototype.clearWidth=function(){this.width="",this.element.style.width=""},c.prototype.getWidth=function(){return this.width||this.element.offsetWidth},c.prototype.setMinWidth=function(){this.minWidth=this.column.minWidth,this.element.style.minWidth=this.column.minWidthStyled},c.prototype.checkHeight=function(){this.row.reinitializeHeight()},c.prototype.clearHeight=function(){this.element.style.height="",this.height=null},c.prototype.setHeight=function(){this.height=this.row.height,this.element.style.height=this.row.heightStyled},c.prototype.getHeight=function(){return this.height||this.element.offsetHeight},c.prototype.show=function(){this.element.style.display=""},c.prototype.hide=function(){this.element.style.display="none"},c.prototype.edit=function(e){if(this.table.modExists("edit",!0))return this.table.modules.edit.editCell(this,e)},c.prototype.cancelEdit=function(){if(this.table.modExists("edit",!0)){var e=this.table.modules.edit.getCurrentCell();e&&e._getSelf()===this?this.table.modules.edit.cancelEdit():console.warn("Cancel Editor Error - This cell is not currently being edited ")}},c.prototype.validate=function(){if(this.column.modules.validate&&this.table.modExists("validate",!0)){return!0===this.table.modules.validate.validate(this.column.modules.validate,this,this.getValue())}return!0},c.prototype.delete=function(){this.table.rowManager.redrawBlock||this.element.parentNode.removeChild(this.element),this.modules.validate&&this.modules.validate.invalid&&this.table.modules.validate.clearValidation(this),this.modules.edit&&this.modules.edit.edited&&this.table.modules.edit.clearEdited(this),this.element=!1,this.column.deleteCell(this),this.row.deleteCell(this),this.calcs={}},c.prototype.nav=function(){var e=this,t=!1,o=this.row.getCellIndex(this);return{next:function(){var t,o=this.right();return!!o||!(!(t=e.table.rowManager.nextDisplayRow(e.row,!0))||!(o=t.findNextEditableCell(-1)))&&(o.edit(),!0)},prev:function(){var t,o=this.left();return!!o||!(!(t=e.table.rowManager.prevDisplayRow(e.row,!0))||!(o=t.findPrevEditableCell(t.cells.length)))&&(o.edit(),!0)},left:function(){return!!(t=e.row.findPrevEditableCell(o))&&(t.edit(),!0)},right:function(){return!!(t=e.row.findNextEditableCell(o))&&(t.edit(),!0)},up:function(){var t=e.table.rowManager.prevDisplayRow(e.row,!0);t&&t.cells[o].edit()},down:function(){var t=e.table.rowManager.nextDisplayRow(e.row,!0);t&&t.cells[o].edit()}}},c.prototype.getIndex=function(){this.row.getCellIndex(this)},c.prototype.getComponent=function(){return this.component||(this.component=new l(this)),this.component};var u=function(e){this.table=e,this.active=!1,this.element=this.createElement(),this.external=!1,this.links=[],this._initialize()};u.prototype.createElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-footer"),e},u.prototype._initialize=function(e){if(this.table.options.footerElement)switch(_typeof(this.table.options.footerElement)){case"string":"<"===this.table.options.footerElement[0]?this.element.innerHTML=this.table.options.footerElement:(this.external=!0,this.element=document.querySelector(this.table.options.footerElement));break;default:this.element=this.table.options.footerElement}},u.prototype.getElement=function(){return this.element},u.prototype.append=function(e,t){this.activate(t),this.element.appendChild(e),this.table.rowManager.adjustTableSize()},u.prototype.prepend=function(e,t){this.activate(t),this.element.insertBefore(e,this.element.firstChild),this.table.rowManager.adjustTableSize()},u.prototype.remove=function(e){e.parentNode.removeChild(e),this.deactivate()},u.prototype.deactivate=function(e){this.element.firstChild&&!e||(this.external||this.element.parentNode.removeChild(this.element),this.active=!1)},u.prototype.activate=function(e){this.active||(this.active=!0,this.external||(this.table.element.appendChild(this.getElement()),this.table.element.style.display="")),e&&this.links.push(e)},u.prototype.redraw=function(){this.links.forEach(function(e){e.footerRedraw()})};var d=function e(t,o){this.options={},this.columnManager=null,this.rowManager=null,this.footerManager=null,this.browser="",this.browserSlow=!1,this.browserMobile=!1,this.modules={},this.initializeElement(t),this.initializeOptions(o||{}),this._create(),e.prototype.comms.register(this)};d.prototype.defaultOptions={height:!1,minHeight:!1,maxHeight:!1,layout:"fitData",layoutColumnsOnNewData:!1,columnMinWidth:40,columnHeaderVertAlign:"top",columnVertAlign:!1,resizableColumns:!0,resizableRows:!1,autoResize:!0,columns:[],cellHozAlign:"",cellVertAlign:"",data:[],autoColumns:!1,reactiveData:!1,nestedFieldSeparator:".",tooltips:!1,tooltipsHeader:!1,tooltipGenerationMode:"load",initialSort:!1,initialFilter:!1,initialHeaderFilter:!1,columnHeaderSortMulti:!0,sortOrderReverse:!1,headerSort:!0,headerSortTristate:!1,footerElement:!1,index:"id",keybindings:[],tabEndNewRow:!1,invalidOptionWarnings:!0,clipboard:!1,clipboardCopyStyled:!0,clipboardCopyConfig:!1,clipboardCopyFormatter:!1,clipboardCopyRowRange:"active",clipboardPasteParser:"table",clipboardPasteAction:"insert",clipboardCopied:function(){},clipboardPasted:function(){},clipboardPasteError:function(){},downloadDataFormatter:!1,downloadReady:function(e,t){return t},downloadComplete:!1,downloadConfig:{},downloadRowRange:"active",dataTree:!1,dataTreeElementColumn:!1,dataTreeBranchElement:!0,dataTreeChildIndent:9,dataTreeChildField:"_children",dataTreeCollapseElement:!1,dataTreeExpandElement:!1,dataTreeStartExpanded:!1,dataTreeRowExpanded:function(){},dataTreeRowCollapsed:function(){},dataTreeChildColumnCalcs:!1,dataTreeSelectPropagate:!1,printAsHtml:!1,printFormatter:!1,printHeader:!1,printFooter:!1,printCopyStyle:!0,printStyled:!0,printVisibleRows:!0,printRowRange:"visible",printConfig:{},addRowPos:"bottom",selectable:"highlight",selectableRangeMode:"drag",selectableRollingSelection:!0,selectablePersistence:!0,selectableCheck:function(e,t){return!0},headerFilterLiveFilterDelay:300,headerFilterPlaceholder:!1,headerVisible:!0,history:!1,locale:!1,langs:{},virtualDom:!0,virtualDomBuffer:0,persistentLayout:!1,persistentSort:!1,persistentFilter:!1,persistenceID:"",persistenceMode:!0,persistenceReaderFunc:!1,persistenceWriterFunc:!1,persistence:!1,responsiveLayout:!1,responsiveLayoutCollapseStartOpen:!0,responsiveLayoutCollapseUseFormatters:!0,responsiveLayoutCollapseFormatter:!1,pagination:!1,paginationSize:!1,paginationInitialPage:1,paginationButtonCount:5,paginationSizeSelector:!1,paginationElement:!1,paginationDataSent:{},paginationDataReceived:{},paginationAddRow:"page",ajaxURL:!1,ajaxURLGenerator:!1,ajaxParams:{},ajaxConfig:"get",ajaxContentType:"form",ajaxRequestFunc:!1,ajaxLoader:!0,ajaxLoaderLoading:!1,ajaxLoaderError:!1,ajaxFiltering:!1,ajaxSorting:!1,ajaxProgressiveLoad:!1,ajaxProgressiveLoadDelay:0,ajaxProgressiveLoadScrollMargin:0,groupBy:!1,groupStartOpen:!0,groupValues:!1,groupHeader:!1,groupHeaderPrint:null,groupHeaderClipboard:null,groupHeaderHtmlOutput:null,groupHeaderDownload:null,htmlOutputConfig:!1,movableColumns:!1,movableRows:!1,movableRowsConnectedTables:!1,movableRowsConnectedElements:!1,movableRowsSender:!1,movableRowsReceiver:"insert",movableRowsSendingStart:function(){},movableRowsSent:function(){},movableRowsSentFailed:function(){},movableRowsSendingStop:function(){},movableRowsReceivingStart:function(){},movableRowsReceived:function(){},movableRowsReceivedFailed:function(){},movableRowsReceivingStop:function(){},movableRowsElementDrop:function(){},scrollToRowPosition:"top",scrollToRowIfVisible:!0,scrollToColumnPosition:"left",scrollToColumnIfVisible:!0,rowFormatter:!1,rowFormatterPrint:null,rowFormatterClipboard:null,rowFormatterHtmlOutput:null,placeholder:!1,tableBuilding:function(){},tableBuilt:function(){},renderStarted:function(){},renderComplete:function(){},rowClick:!1,rowDblClick:!1,rowContext:!1,rowTap:!1,rowDblTap:!1,rowTapHold:!1,rowMouseEnter:!1,rowMouseLeave:!1,rowMouseOver:!1,rowMouseOut:!1,rowMouseMove:!1,rowContextMenu:!1,rowAdded:function(){},rowDeleted:function(){},rowMoved:function(){},rowUpdated:function(){},rowSelectionChanged:function(){},rowSelected:function(){},rowDeselected:function(){},rowResized:function(){},cellClick:!1,cellDblClick:!1,cellContext:!1,cellTap:!1,cellDblTap:!1,cellTapHold:!1,cellMouseEnter:!1,cellMouseLeave:!1,cellMouseOver:!1,cellMouseOut:!1,cellMouseMove:!1,cellEditing:function(){},cellEdited:function(){},cellEditCancelled:function(){},columnMoved:!1,columnResized:function(){},columnTitleChanged:function(){},columnVisibilityChanged:function(){},htmlImporting:function(){},htmlImported:function(){},dataLoading:function(){},dataLoaded:function(){},dataEdited:function(){},ajaxRequesting:function(){},ajaxResponse:!1,ajaxError:function(){},dataFiltering:!1,dataFiltered:!1,dataSorting:function(){},dataSorted:function(){},groupToggleElement:"arrow",groupClosedShowCalcs:!1,dataGrouping:function(){},dataGrouped:!1,groupVisibilityChanged:function(){},groupClick:!1,groupDblClick:!1,groupContext:!1,groupContextMenu:!1,groupTap:!1,groupDblTap:!1,groupTapHold:!1,columnCalcs:!0,pageLoaded:function(){},localized:function(){},validationMode:"blocking",validationFailed:function(){},historyUndo:function(){},historyRedo:function(){},scrollHorizontal:function(){},scrollVertical:function(){}},d.prototype.initializeOptions=function(e){if(!1!==e.invalidOptionWarnings)for(var t in e)void 0===this.defaultOptions[t]&&console.warn("Invalid table constructor option:",t)
-;for(var t in this.defaultOptions)t in e?this.options[t]=e[t]:Array.isArray(this.defaultOptions[t])?this.options[t]=[]:"object"===_typeof(this.defaultOptions[t])&&null!==this.defaultOptions[t]?this.options[t]={}:this.options[t]=this.defaultOptions[t]},d.prototype.initializeElement=function(e){return"undefined"!=typeof HTMLElement&&e instanceof HTMLElement?(this.element=e,!0):"string"==typeof e?(this.element=document.querySelector(e),!!this.element||(console.error("Tabulator Creation Error - no element found matching selector: ",e),!1)):(console.error("Tabulator Creation Error - Invalid element provided:",e),!1)},d.prototype._mapDepricatedFunctionality=function(){(this.options.persistentLayout||this.options.persistentSort||this.options.persistentFilter)&&(this.options.persistence||(this.options.persistence={})),this.options.downloadDataFormatter&&console.warn("DEPRECATION WARNING - downloadDataFormatter option has been deprecated"),void 0!==this.options.clipboardCopyHeader&&(this.options.columnHeaders=this.options.clipboardCopyHeader,console.warn("DEPRECATION WARNING - clipboardCopyHeader option has been deprecated, please use the columnHeaders property on the clipboardCopyConfig option")),!0!==this.options.printVisibleRows&&(console.warn("printVisibleRows option is deprecated, you should now use the printRowRange option"),this.options.persistence.printRowRange="active"),!0!==this.options.printCopyStyle&&(console.warn("printCopyStyle option is deprecated, you should now use the printStyled option"),this.options.persistence.printStyled=this.options.printCopyStyle),this.options.persistentLayout&&(console.warn("persistentLayout option is deprecated, you should now use the persistence option"),!0!==this.options.persistence&&void 0===this.options.persistence.columns&&(this.options.persistence.columns=!0)),this.options.persistentSort&&(console.warn("persistentSort option is deprecated, you should now use the persistence option"),!0!==this.options.persistence&&void 0===this.options.persistence.sort&&(this.options.persistence.sort=!0)),this.options.persistentFilter&&(console.warn("persistentFilter option is deprecated, you should now use the persistence option"),!0!==this.options.persistence&&void 0===this.options.persistence.filter&&(this.options.persistence.filter=!0)),this.options.columnVertAlign&&(console.warn("columnVertAlign option is deprecated, you should now use the columnHeaderVertAlign option"),this.options.columnHeaderVertAlign=this.options.columnVertAlign)},d.prototype._clearSelection=function(){this.element.classList.add("tabulator-block-select"),window.getSelection?window.getSelection().empty?window.getSelection().empty():window.getSelection().removeAllRanges&&window.getSelection().removeAllRanges():document.selection&&document.selection.empty(),this.element.classList.remove("tabulator-block-select")},d.prototype._create=function(){this._clearObjectPointers(),this._mapDepricatedFunctionality(),this.bindModules(),"TABLE"===this.element.tagName&&this.modExists("htmlTableImport",!0)&&this.modules.htmlTableImport.parseTable(),this.columnManager=new t(this),this.rowManager=new s(this),this.footerManager=new u(this),this.columnManager.setRowManager(this.rowManager),this.rowManager.setColumnManager(this.columnManager),this._buildElement(),this._loadInitialData()},d.prototype._clearObjectPointers=function(){this.options.columns=this.options.columns.slice(0),this.options.reactiveData||(this.options.data=this.options.data.slice(0))},d.prototype._buildElement=function(){var e=this,t=this.element,o=this.modules,i=this.options;for(i.tableBuilding.call(this),t.classList.add("tabulator"),t.setAttribute("role","grid");t.firstChild;)t.removeChild(t.firstChild);i.height&&(i.height=isNaN(i.height)?i.height:i.height+"px",t.style.height=i.height),!1!==i.minHeight&&(i.minHeight=isNaN(i.minHeight)?i.minHeight:i.minHeight+"px",t.style.minHeight=i.minHeight),!1!==i.maxHeight&&(i.maxHeight=isNaN(i.maxHeight)?i.maxHeight:i.maxHeight+"px",t.style.maxHeight=i.maxHeight),this.columnManager.initialize(),this.rowManager.initialize(),this._detectBrowser(),this.modExists("layout",!0)&&o.layout.initialize(i.layout),!1!==i.headerFilterPlaceholder&&o.localize.setHeaderFilterPlaceholder(i.headerFilterPlaceholder);for(var n in i.langs)o.localize.installLang(n,i.langs[n]);if(o.localize.setLocale(i.locale),"string"==typeof i.placeholder){var s=document.createElement("div");s.classList.add("tabulator-placeholder");var r=document.createElement("span");r.innerHTML=i.placeholder,s.appendChild(r),i.placeholder=s}if(t.appendChild(this.columnManager.getElement()),t.appendChild(this.rowManager.getElement()),i.footerElement&&this.footerManager.activate(),i.persistence&&this.modExists("persistence",!0)&&o.persistence.initialize(),i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.columns&&(i.columns=o.persistence.load("columns",i.columns)),i.movableRows&&this.modExists("moveRow")&&o.moveRow.initialize(),i.autoColumns&&this.options.data&&this.columnManager.generateColumnsFromRowData(this.options.data),this.modExists("columnCalcs")&&o.columnCalcs.initialize(),this.columnManager.setColumns(i.columns),i.dataTree&&this.modExists("dataTree",!0)&&o.dataTree.initialize(),this.modExists("frozenRows")&&this.modules.frozenRows.initialize(),(i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.sort||i.initialSort)&&this.modExists("sort",!0)){var a=[];i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.sort?!1===(a=o.persistence.load("sort"))&&i.initialSort&&(a=i.initialSort):i.initialSort&&(a=i.initialSort),o.sort.setSort(a)}if((i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.filter||i.initialFilter)&&this.modExists("filter",!0)){var l=[];i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.filter?!1===(l=o.persistence.load("filter"))&&i.initialFilter&&(l=i.initialFilter):i.initialFilter&&(l=i.initialFilter),o.filter.setFilter(l)}i.initialHeaderFilter&&this.modExists("filter",!0)&&i.initialHeaderFilter.forEach(function(t){var i=e.columnManager.findColumn(t.field);if(!i)return console.warn("Column Filter Error - No matching column found:",t.field),!1;o.filter.setHeaderFilterValue(i,t.value)}),this.modExists("ajax")&&o.ajax.initialize(),i.pagination&&this.modExists("page",!0)&&o.page.initialize(),i.groupBy&&this.modExists("groupRows",!0)&&o.groupRows.initialize(),this.modExists("keybindings")&&o.keybindings.initialize(),this.modExists("selectRow")&&o.selectRow.clearSelectionData(!0),i.autoResize&&this.modExists("resizeTable")&&o.resizeTable.initialize(),this.modExists("clipboard")&&o.clipboard.initialize(),i.printAsHtml&&this.modExists("print")&&o.print.initialize(),i.tableBuilt.call(this)},d.prototype._loadInitialData=function(){var e=this;if(e.options.pagination&&e.modExists("page"))if(e.modules.page.reset(!0,!0),"local"==e.options.pagination){if(e.options.data.length)e.rowManager.setData(e.options.data,!1,!0);else{if((e.options.ajaxURL||e.options.ajaxURLGenerator)&&e.modExists("ajax"))return void e.modules.ajax.loadData(!1,!0).then(function(){}).catch(function(){e.options.paginationInitialPage&&e.modules.page.setPage(e.options.paginationInitialPage)});e.rowManager.setData(e.options.data,!1,!0)}e.options.paginationInitialPage&&e.modules.page.setPage(e.options.paginationInitialPage)}else e.options.ajaxURL?e.modules.page.setPage(e.options.paginationInitialPage).then(function(){}).catch(function(){}):e.rowManager.setData([],!1,!0);else e.options.data.length?e.rowManager.setData(e.options.data):(e.options.ajaxURL||e.options.ajaxURLGenerator)&&e.modExists("ajax")?e.modules.ajax.loadData(!1,!0).then(function(){}).catch(function(){}):e.rowManager.setData(e.options.data,!1,!0)},d.prototype.destroy=function(){var e=this.element;for(d.prototype.comms.deregister(this),this.options.reactiveData&&this.modExists("reactiveData",!0)&&this.modules.reactiveData.unwatchData(),this.rowManager.rows.forEach(function(e){e.wipe()}),this.rowManager.rows=[],this.rowManager.activeRows=[],this.rowManager.displayRows=[],this.options.autoResize&&this.modExists("resizeTable")&&this.modules.resizeTable.clearBindings(),this.modExists("keybindings")&&this.modules.keybindings.clearBindings();e.firstChild;)e.removeChild(e.firstChild);e.classList.remove("tabulator")},d.prototype._detectBrowser=function(){var e=navigator.userAgent||navigator.vendor||window.opera;e.indexOf("Trident")>-1?(this.browser="ie",this.browserSlow=!0):e.indexOf("Edge")>-1?(this.browser="edge",this.browserSlow=!0):e.indexOf("Firefox")>-1?(this.browser="firefox",this.browserSlow=!1):(this.browser="other",this.browserSlow=!1),this.browserMobile=/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(e)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(e.substr(0,4))},d.prototype.blockRedraw=function(){return this.rowManager.blockRedraw()},d.prototype.restoreRedraw=function(){return this.rowManager.restoreRedraw()},d.prototype.setDataFromLocalFile=function(e){var t=this;return new Promise(function(o,i){var n=document.createElement("input");n.type="file",n.accept=e||".json,application/json",n.addEventListener("change",function(e){var s,r=n.files[0],a=new FileReader;a.readAsText(r),a.onload=function(e){try{s=JSON.parse(a.result)}catch(e){return console.warn("File Load Error - File contents is invalid JSON",e),void i(e)}t._setData(s).then(function(e){o(e)}).catch(function(e){o(e)})},a.onerror=function(e){console.warn("File Load Error - Unable to read file"),i()}}),n.click()})},d.prototype.setData=function(e,t,o){return this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this._setData(e,t,o,!1,!0)},d.prototype._setData=function(e,t,o,i,n){var s=this;return"string"!=typeof e?e?s.rowManager.setData(e,i,n):s.modExists("ajax")&&(s.modules.ajax.getUrl||s.options.ajaxURLGenerator)?"remote"==s.options.pagination&&s.modExists("page",!0)?(s.modules.page.reset(!0,!0),s.modules.page.setPage(1)):s.modules.ajax.loadData(i,n):s.rowManager.setData([],i,n):0==e.indexOf("{")||0==e.indexOf("[")?s.rowManager.setData(JSON.parse(e),i,n):s.modExists("ajax",!0)?(t&&s.modules.ajax.setParams(t),o&&s.modules.ajax.setConfig(o),s.modules.ajax.setUrl(e),"remote"==s.options.pagination&&s.modExists("page",!0)?(s.modules.page.reset(!0,!0),s.modules.page.setPage(1)):s.modules.ajax.loadData(i,n)):void 0},d.prototype.clearData=function(){this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this.rowManager.clearData()},d.prototype.getData=function(e){return!0===e&&(console.warn("passing a boolean to the getData function is deprecated, you should now pass the string 'active'"),e="active"),this.rowManager.getData(e)},d.prototype.getDataCount=function(e){return!0===e&&(console.warn("passing a boolean to the getDataCount function is deprecated, you should now pass the string 'active'"),e="active"),this.rowManager.getDataCount(e)},d.prototype.searchRows=function(e,t,o){if(this.modExists("filter",!0))return this.modules.filter.search("rows",e,t,o)},d.prototype.searchData=function(e,t,o){if(this.modExists("filter",!0))return this.modules.filter.search("data",e,t,o)},d.prototype.getHtml=function(e,t,o){if(this.modExists("export",!0))return this.modules.export.getHtml(e,t,o)},d.prototype.print=function(e,t,o){if(this.modExists("print",!0))return this.modules.print.printFullscreen(e,t,o)},d.prototype.getAjaxUrl=function(){if(this.modExists("ajax",!0))return this.modules.ajax.getUrl()},d.prototype.replaceData=function(e,t,o){return this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this._setData(e,t,o,!0)},d.prototype.updateData=function(e){var t=this,o=this,i=0;return new Promise(function(n,s){t.modExists("ajax")&&t.modules.ajax.blockActiveRequest(),"string"==typeof e&&(e=JSON.parse(e)),e?e.forEach(function(e){var t=o.rowManager.findRow(e[o.options.index]);t&&(i++,t.updateData(e).then(function(){--i||n()}))}):(console.warn("Update Error - No data provided"),s("Update Error - No data provided"))})},d.prototype.addData=function(e,t,o){var i=this;return new Promise(function(n,s){i.modExists("ajax")&&i.modules.ajax.blockActiveRequest(),"string"==typeof e&&(e=JSON.parse(e)),e?i.rowManager.addRows(e,t,o).then(function(e){var t=[];e.forEach(function(e){t.push(e.getComponent())}),n(t)}):(console.warn("Update Error - No data provided"),s("Update Error - No data provided"))})},d.prototype.updateOrAddData=function(e){var t=this,o=this,i=[],n=0;return new Promise(function(s,r){t.modExists("ajax")&&t.modules.ajax.blockActiveRequest(),"string"==typeof e&&(e=JSON.parse(e)),e?e.forEach(function(e){var t=o.rowManager.findRow(e[o.options.index]);n++,t?t.updateData(e).then(function(){n--,i.push(t.getComponent()),n||s(i)}):o.rowManager.addRows(e).then(function(e){n--,i.push(e[0].getComponent()),n||s(i)})}):(console.warn("Update Error - No data provided"),r("Update Error - No data provided"))})},d.prototype.getRow=function(e){var t=this.rowManager.findRow(e);return t?t.getComponent():(console.warn("Find Error - No matching row found:",e),!1)},d.prototype.getRowFromPosition=function(e,t){var o=this.rowManager.getRowFromPosition(e,t);return o?o.getComponent():(console.warn("Find Error - No matching row found:",e),!1)},d.prototype.deleteRow=function(e){var t=this;return new Promise(function(o,i){function n(){++r==e.length&&a&&(s.rowManager.reRenderInPosition(),o())}var s=t,r=0,a=0,l=[];Array.isArray(e)||(e=[e]),e.forEach(function(e){var o=t.rowManager.findRow(e,!0);o?l.push(o):(console.warn("Delete Error - No matching row found:",e),i("Delete Error - No matching row found"),n())}),l.sort(function(e,o){return t.rowManager.rows.indexOf(e)>t.rowManager.rows.indexOf(o)?1:-1}),l.forEach(function(e){e.delete().then(function(){a++,n()}).catch(function(e){n(),i(e)})})})},d.prototype.addRow=function(e,t,o){var i=this;return new Promise(function(n,s){"string"==typeof e&&(e=JSON.parse(e)),i.rowManager.addRows(e,t,o).then(function(e){i.modExists("columnCalcs")&&i.modules.columnCalcs.recalc(i.rowManager.activeRows),n(e[0].getComponent())})})},d.prototype.updateOrAddRow=function(e,t){var o=this;return new Promise(function(i,n){var s=o.rowManager.findRow(e);"string"==typeof t&&(t=JSON.parse(t)),s?s.updateData(t).then(function(){o.modExists("columnCalcs")&&o.modules.columnCalcs.recalc(o.rowManager.activeRows),i(s.getComponent())}).catch(function(e){n(e)}):s=o.rowManager.addRows(t).then(function(e){o.modExists("columnCalcs")&&o.modules.columnCalcs.recalc(o.rowManager.activeRows),i(e[0].getComponent())}).catch(function(e){n(e)})})},d.prototype.updateRow=function(e,t){var o=this;return new Promise(function(i,n){var s=o.rowManager.findRow(e);"string"==typeof t&&(t=JSON.parse(t)),s?s.updateData(t).then(function(){i(s.getComponent())}).catch(function(e){n(e)}):(console.warn("Update Error - No matching row found:",e),n("Update Error - No matching row found"))})},d.prototype.scrollToRow=function(e,t,o){var i=this;return new Promise(function(n,s){var r=i.rowManager.findRow(e);r?i.rowManager.scrollToRow(r,t,o).then(function(){n()}).catch(function(e){s(e)}):(console.warn("Scroll Error - No matching row found:",e),s("Scroll Error - No matching row found"))})},d.prototype.moveRow=function(e,t,o){var i=this.rowManager.findRow(e);i?i.moveToRow(t,o):console.warn("Move Error - No matching row found:",e)},d.prototype.getRows=function(e){return!0===e&&(console.warn("passing a boolean to the getRows function is deprecated, you should now pass the string 'active'"),e="active"),this.rowManager.getComponents(e)},d.prototype.getRowPosition=function(e,t){var o=this.rowManager.findRow(e);return o?this.rowManager.getRowPosition(o,t):(console.warn("Position Error - No matching row found:",e),!1)},d.prototype.copyToClipboard=function(e){this.modExists("clipboard",!0)&&this.modules.clipboard.copy(e)},d.prototype.setColumns=function(e){this.columnManager.setColumns(e)},d.prototype.getColumns=function(e){return this.columnManager.getComponents(e)},d.prototype.getColumn=function(e){var t=this.columnManager.findColumn(e);return t?t.getComponent():(console.warn("Find Error - No matching column found:",e),!1)},d.prototype.getColumnDefinitions=function(){return this.columnManager.getDefinitionTree()},d.prototype.getColumnLayout=function(){if(this.modExists("persistence",!0))return this.modules.persistence.parseColumns(this.columnManager.getColumns())},d.prototype.setColumnLayout=function(e){return!!this.modExists("persistence",!0)&&(this.columnManager.setColumns(this.modules.persistence.mergeDefinition(this.options.columns,e)),!0)},d.prototype.showColumn=function(e){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Show Error - No matching column found:",e),!1;t.show(),this.options.responsiveLayout&&this.modExists("responsiveLayout",!0)&&this.modules.responsiveLayout.update()},d.prototype.hideColumn=function(e){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Hide Error - No matching column found:",e),!1;t.hide(),this.options.responsiveLayout&&this.modExists("responsiveLayout",!0)&&this.modules.responsiveLayout.update()},d.prototype.toggleColumn=function(e){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Visibility Toggle Error - No matching column found:",e),!1;t.visible?t.hide():t.show()},d.prototype.addColumn=function(e,t,o){var i=this;return new Promise(function(n,s){var r=i.columnManager.findColumn(o);i.columnManager.addColumn(e,t,r).then(function(e){n(e.getComponent())}).catch(function(e){s(e)})})},d.prototype.deleteColumn=function(e){var t=this;return new Promise(function(o,i){var n=t.columnManager.findColumn(e);n?n.delete().then(function(){o()}).catch(function(e){i(e)}):(console.warn("Column Delete Error - No matching column found:",e),i())})},d.prototype.updateColumnDefinition=function(e,t){var o=this;return new Promise(function(i,n){var s=o.columnManager.findColumn(e);s?s.updateDefinition(t).then(function(e){i(e)}).catch(function(e){n(e)}):(console.warn("Column Update Error - No matching column found:",e),n())})},d.prototype.moveColumn=function(e,t,o){var i=this.columnManager.findColumn(e),n=this.columnManager.findColumn(t);i?n?this.columnManager.moveColumn(i,n,o):console.warn("Move Error - No matching column found:",n):console.warn("Move Error - No matching column found:",e)},d.prototype.scrollToColumn=function(e,t,o){var i=this;return new Promise(function(n,s){var r=i.columnManager.findColumn(e);r?i.columnManager.scrollToColumn(r,t,o).then(function(){n()}).catch(function(e){s(e)}):(console.warn("Scroll Error - No matching column found:",e),s("Scroll Error - No matching column found"))})},d.prototype.setLocale=function(e){this.modules.localize.setLocale(e)},d.prototype.getLocale=function(){return this.modules.localize.getLocale()},d.prototype.getLang=function(e){return this.modules.localize.getLang(e)},d.prototype.redraw=function(e){this.columnManager.redraw(e),this.rowManager.redraw(e)},d.prototype.setHeight=function(e){"classic"!==this.rowManager.renderMode?(this.options.height=isNaN(e)?e:e+"px",this.element.style.height=this.options.height,this.rowManager.setRenderMode(),this.rowManager.redraw()):console.warn("setHeight function is not available in classic render mode")},d.prototype.setSort=function(e,t){this.modExists("sort",!0)&&(this.modules.sort.setSort(e,t),this.rowManager.sorterRefresh())},d.prototype.getSorters=function(){if(this.modExists("sort",!0))return this.modules.sort.getSort()},d.prototype.clearSort=function(){this.modExists("sort",!0)&&(this.modules.sort.clear(),this.rowManager.sorterRefresh())},d.prototype.setFilter=function(e,t,o,i){this.modExists("filter",!0)&&(this.modules.filter.setFilter(e,t,o,i),this.rowManager.filterRefresh())},d.prototype.addFilter=function(e,t,o,i){this.modExists("filter",!0)&&(this.modules.filter.addFilter(e,t,o,i),this.rowManager.filterRefresh())},d.prototype.getFilters=function(e){if(this.modExists("filter",!0))return this.modules.filter.getFilters(e)},d.prototype.setHeaderFilterFocus=function(e){if(this.modExists("filter",!0)){var t=this.columnManager.findColumn(e);if(!t)return console.warn("Column Filter Focus Error - No matching column found:",e),!1;this.modules.filter.setHeaderFilterFocus(t)}},d.prototype.getHeaderFilterValue=function(e){if(this.modExists("filter",!0)){var t=this.columnManager.findColumn(e);if(t)return this.modules.filter.getHeaderFilterValue(t);console.warn("Column Filter Error - No matching column found:",e)}},d.prototype.setHeaderFilterValue=function(e,t){if(this.modExists("filter",!0)){var o=this.columnManager.findColumn(e);if(!o)return console.warn("Column Filter Error - No matching column found:",e),!1;this.modules.filter.setHeaderFilterValue(o,t)}},d.prototype.getHeaderFilters=function(){if(this.modExists("filter",!0))return this.modules.filter.getHeaderFilters()},d.prototype.removeFilter=function(e,t,o){this.modExists("filter",!0)&&(this.modules.filter.removeFilter(e,t,o),this.rowManager.filterRefresh())},d.prototype.clearFilter=function(e){this.modExists("filter",!0)&&(this.modules.filter.clearFilter(e),this.rowManager.filterRefresh())},d.prototype.clearHeaderFilter=function(){this.modExists("filter",!0)&&(this.modules.filter.clearHeaderFilter(),this.rowManager.filterRefresh())},d.prototype.selectRow=function(e){this.modExists("selectRow",!0)&&(!0===e&&(console.warn("passing a boolean to the selectRowselectRow function is deprecated, you should now pass the string 'active'"),e="active"),this.modules.selectRow.selectRows(e))},d.prototype.deselectRow=function(e){this.modExists("selectRow",!0)&&this.modules.selectRow.deselectRows(e)},d.prototype.toggleSelectRow=function(e){this.modExists("selectRow",!0)&&this.modules.selectRow.toggleRow(e)},d.prototype.getSelectedRows=function(){if(this.modExists("selectRow",!0))return this.modules.selectRow.getSelectedRows()},d.prototype.getSelectedData=function(){if(this.modExists("selectRow",!0))return this.modules.selectRow.getSelectedData()},d.prototype.getInvalidCells=function(){if(this.modExists("validate",!0))return this.modules.validate.getInvalidCells()},d.prototype.clearCellValidation=function(e){var t=this;this.modExists("validate",!0)&&(e||(e=this.modules.validate.getInvalidCells()),Array.isArray(e)||(e=[e]),e.forEach(function(e){t.modules.validate.clearValidation(e._getSelf())}))},d.prototype.validate=function(e){var t=[];return this.rowManager.rows.forEach(function(e){var o=e.validate();!0!==o&&(t=t.concat(o))}),!t.length||t},d.prototype.setMaxPage=function(e){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.setMaxPage(e)},d.prototype.setPage=function(e){return this.options.pagination&&this.modExists("page")?this.modules.page.setPage(e):new Promise(function(e,t){t()})},d.prototype.setPageToRow=function(e){var t=this;return new Promise(function(o,i){t.options.pagination&&t.modExists("page")?(e=t.rowManager.findRow(e),e?t.modules.page.setPageToRow(e).then(function(){o()}).catch(function(){i()}):i()):i()})},d.prototype.setPageSize=function(e){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.setPageSize(e),this.modules.page.setPage(1).then(function(){}).catch(function(){})},d.prototype.getPageSize=function(){if(this.options.pagination&&this.modExists("page",!0))return this.modules.page.getPageSize()},d.prototype.previousPage=function(){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.previousPage()},d.prototype.nextPage=function(){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.nextPage()},d.prototype.getPage=function(){return!(!this.options.pagination||!this.modExists("page"))&&this.modules.page.getPage()},d.prototype.getPageMax=function(){return!(!this.options.pagination||!this.modExists("page"))&&this.modules.page.getPageMax()},d.prototype.setGroupBy=function(e){if(!this.modExists("groupRows",!0))return!1;this.options.groupBy=e,this.modules.groupRows.initialize(),this.rowManager.refreshActiveData("display"),this.options.persistence&&this.modExists("persistence",!0)&&this.modules.persistence.config.group&&this.modules.persistence.save("group")},d.prototype.setGroupStartOpen=function(e){if(!this.modExists("groupRows",!0))return!1;this.options.groupStartOpen=e,this.modules.groupRows.initialize(),this.options.groupBy?(this.rowManager.refreshActiveData("group"),this.options.persistence&&this.modExists("persistence",!0)&&this.modules.persistence.config.group&&this.modules.persistence.save("group")):console.warn("Grouping Update - cant refresh view, no groups have been set")},d.prototype.setGroupHeader=function(e){if(!this.modExists("groupRows",!0))return!1;this.options.groupHeader=e,this.modules.groupRows.initialize(),this.options.groupBy?(this.rowManager.refreshActiveData("group"),this.options.persistence&&this.modExists("persistence",!0)&&this.modules.persistence.config.group&&this.modules.persistence.save("group")):console.warn("Grouping Update - cant refresh view, no groups have been set")},d.prototype.getGroups=function(e){return!!this.modExists("groupRows",!0)&&this.modules.groupRows.getGroups(!0)},d.prototype.getGroupedData=function(){if(this.modExists("groupRows",!0))return this.options.groupBy?this.modules.groupRows.getGroupedData():this.getData()},d.prototype.getEditedCells=function(){if(this.modExists("edit",!0))return this.modules.edit.getEditedCells()},d.prototype.clearCellEdited=function(e){var t=this;this.modExists("edit",!0)&&(e||(e=this.modules.edit.getEditedCells()),Array.isArray(e)||(e=[e]),e.forEach(function(e){t.modules.edit.clearEdited(e._getSelf())}))},d.prototype.getCalcResults=function(){return!!this.modExists("columnCalcs",!0)&&this.modules.columnCalcs.getResults()},d.prototype.recalc=function(){this.modExists("columnCalcs",!0)&&this.modules.columnCalcs.recalcAll(this.rowManager.activeRows)},d.prototype.navigatePrev=function(){var e=!1;return!(!this.modExists("edit",!0)||!(e=this.modules.edit.currentCell))&&e.nav().prev()},d.prototype.navigateNext=function(){var e=!1;return!(!this.modExists("edit",!0)||!(e=this.modules.edit.currentCell))&&e.nav().next()},d.prototype.navigateLeft=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().left())},d.prototype.navigateRight=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().right())},d.prototype.navigateUp=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().up())},d.prototype.navigateDown=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().down())},d.prototype.undo=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.undo()},d.prototype.redo=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.redo()},d.prototype.getHistoryUndoSize=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.getHistoryUndoSize()},d.prototype.getHistoryRedoSize=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.getHistoryRedoSize()},d.prototype.download=function(e,t,o,i){this.modExists("download",!0)&&this.modules.download.download(e,t,o,i)},d.prototype.downloadToTab=function(e,t,o,i){this.modExists("download",!0)&&this.modules.download.download(e,t,o,i,!0)},d.prototype.tableComms=function(e,t,o,i){this.modules.comms.receive(e,t,o,i)},d.prototype.moduleBindings={},d.prototype.extendModule=function(e,t,o){if(d.prototype.moduleBindings[e]){var i=d.prototype.moduleBindings[e].prototype[t];if(i)if("object"==(void 0===o?"undefined":_typeof(o)))for(var n in o)i[n]=o[n];else console.warn("Module Error - Invalid value type, it must be an object");else console.warn("Module Error - property does not exist:",t)}else console.warn("Module Error - module does not exist:",e)},d.prototype.registerModule=function(e,t){d.prototype.moduleBindings[e]=t},d.prototype.bindModules=function(){this.modules={};for(var e in d.prototype.moduleBindings)this.modules[e]=new d.prototype.moduleBindings[e](this)},d.prototype.modExists=function(e,t){return!!this.modules[e]||(t&&console.error("Tabulator Module Not Installed: "+e),!1)},d.prototype.helpers={elVisible:function(e){return!(e.offsetWidth<=0&&e.offsetHeight<=0)},elOffset:function(e){var t=e.getBoundingClientRect();return{top:t.top+window.pageYOffset-document.documentElement.clientTop,left:t.left+window.pageXOffset-document.documentElement.clientLeft}},deepClone:function(e){var t=Array.isArray(e)?[]:{};for(var o in e)null!=e[o]&&"object"===_typeof(e[o])?e[o]instanceof Date?t[o]=new Date(e[o]):t[o]=this.deepClone(e[o]):t[o]=e[o];return t}},d.prototype.comms={tables:[],register:function(e){d.prototype.comms.tables.push(e)},deregister:function(e){var t=d.prototype.comms.tables.indexOf(e);t>-1&&d.prototype.comms.tables.splice(t,1)},lookupTable:function(e,t){var o,i,n=[];if("string"==typeof e){if(o=document.querySelectorAll(e),o.length)for(var s=0;s<o.length;s++)(i=d.prototype.comms.matchElement(o[s]))&&n.push(i)}else"undefined"!=typeof HTMLElement&&e instanceof HTMLElement||e instanceof d?(i=d.prototype.comms.matchElement(e))&&n.push(i):Array.isArray(e)?e.forEach(function(e){n=n.concat(d.prototype.comms.lookupTable(e))}):t||console.warn("Table Connection Error - Invalid Selector",e);return n},matchElement:function(e){return d.prototype.comms.tables.find(function(t){return e instanceof d?t===e:t.element===e})}},d.prototype.findTable=function(e){var t=d.prototype.comms.lookupTable(e,!0);return!(Array.isArray(t)&&!t.length)&&t};var h=function(e){this.table=e,this.mode=null};h.prototype.initialize=function(e){this.modes[e]?this.mode=e:(console.warn("Layout Error - invalid mode set, defaulting to 'fitData' : "+e),this.mode="fitData"),this.table.element.setAttribute("tabulator-layout",this.mode)},h.prototype.getMode=function(){return this.mode},h.prototype.layout=function(){this.modes[this.mode].call(this,this.table.columnManager.columnsByIndex)},h.prototype.modes={
-fitData:function(e){e.forEach(function(e){e.reinitializeWidth()}),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitDataFill:function(e){e.forEach(function(e){e.reinitializeWidth()}),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitDataTable:function(e){e.forEach(function(e){e.reinitializeWidth()}),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitDataStretch:function(e){var t=this,o=0,i=this.table.rowManager.element.clientWidth,n=0,s=!1;e.forEach(function(e,i){e.widthFixed||e.reinitializeWidth(),(t.table.options.responsiveLayout?e.modules.responsive.visible:e.visible)&&(s=e),e.visible&&(o+=e.getWidth())}),s?(n=i-o+s.getWidth(),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&(s.setWidth(0),this.table.modules.responsiveLayout.update()),n>0?s.setWidth(n):s.reinitializeWidth()):this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitColumns:function(e){function t(e){return"string"==typeof e?e.indexOf("%")>-1?n/100*parseInt(e):parseInt(e):e}function o(e,i,n,s){function r(e){return n*(e.column.definition.widthGrow||1)}function a(e){return t(e.width)-n*(e.column.definition.widthShrink||0)}var l=[],c=0,u=0,d=0,h=0,p=0,m=[];return e.forEach(function(e,t){var o=s?a(e):r(e);e.column.minWidth>=o?l.push(e):(m.push(e),p+=s?e.column.definition.widthShrink||1:e.column.definition.widthGrow||1)}),l.length?(l.forEach(function(e){c+=s?e.width-e.column.minWidth:e.column.minWidth,e.width=e.column.minWidth}),u=i-c,d=p?Math.floor(u/p):u,h=u-d*p,h+=o(m,u,d,s)):(h=p?i-Math.floor(i/p)*p:i,m.forEach(function(e){e.width=s?a(e):r(e)})),h}var i=this,n=i.table.element.clientWidth,s=0,r=0,a=0,l=0,c=[],u=[],d=0,h=0,p=0;this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update(),this.table.rowManager.element.scrollHeight>this.table.rowManager.element.clientHeight&&(n-=this.table.rowManager.element.offsetWidth-this.table.rowManager.element.clientWidth),e.forEach(function(e){var o,i,n;e.visible&&(o=e.definition.width,i=parseInt(e.minWidth),o?(n=t(o),s+=n>i?n:i,e.definition.widthShrink&&(u.push({column:e,width:n>i?n:i}),d+=e.definition.widthShrink)):(c.push({column:e,width:0}),a+=e.definition.widthGrow||1))}),r=n-s,l=Math.floor(r/a);var p=o(c,r,l,!1);c.length&&p>0&&(c[c.length-1].width+=+p),c.forEach(function(e){r-=e.width}),h=Math.abs(p)+r,h>0&&d&&(p=o(u,h,Math.floor(h/d),!0)),u.length&&(u[u.length-1].width-=p),c.forEach(function(e){e.column.setWidth(e.width)}),u.forEach(function(e){e.column.setWidth(e.width)})}},d.prototype.registerModule("layout",h);var p=function(e){this.table=e,this.locale="default",this.lang=!1,this.bindings={}};p.prototype.setHeaderFilterPlaceholder=function(e){this.langs.default.headerFilters.default=e},p.prototype.setHeaderFilterColumnPlaceholder=function(e,t){this.langs.default.headerFilters.columns[e]=t,this.lang&&!this.lang.headerFilters.columns[e]&&(this.lang.headerFilters.columns[e]=t)},p.prototype.installLang=function(e,t){this.langs[e]?this._setLangProp(this.langs[e],t):this.langs[e]=t},p.prototype._setLangProp=function(e,t){for(var o in t)e[o]&&"object"==_typeof(e[o])?this._setLangProp(e[o],t[o]):e[o]=t[o]},p.prototype.setLocale=function(e){function t(e,o){for(var i in e)"object"==_typeof(e[i])?(o[i]||(o[i]={}),t(e[i],o[i])):o[i]=e[i]}var o=this;if(e=e||"default",!0===e&&navigator.language&&(e=navigator.language.toLowerCase()),e&&!o.langs[e]){var i=e.split("-")[0];o.langs[i]?(console.warn("Localization Error - Exact matching locale not found, using closest match: ",e,i),e=i):(console.warn("Localization Error - Matching locale not found, using default: ",e),e="default")}o.locale=e,o.lang=d.prototype.helpers.deepClone(o.langs.default||{}),"default"!=e&&t(o.langs[e],o.lang),o.table.options.localized.call(o.table,o.locale,o.lang),o._executeBindings()},p.prototype.getLocale=function(e){return self.locale},p.prototype.getLang=function(e){return e?this.langs[e]:this.lang},p.prototype.getText=function(e,t){var e=t?e+"|"+t:e,o=e.split("|");return this._getLangElement(o,this.locale)||""},p.prototype._getLangElement=function(e,t){var o=this,i=o.lang;return e.forEach(function(e){var t;i&&(t=i[e],i=void 0!==t&&t)}),i},p.prototype.bind=function(e,t){this.bindings[e]||(this.bindings[e]=[]),this.bindings[e].push(t),t(this.getText(e),this.lang)},p.prototype._executeBindings=function(){var e=this;for(var t in e.bindings)!function(t){e.bindings[t].forEach(function(o){o(e.getText(t),e.lang)})}(t)},p.prototype.langs={default:{groups:{item:"item",items:"items"},columns:{},ajax:{loading:"Loading",error:"Error"},pagination:{page_size:"Page Size",page_title:"Show Page",first:"First",first_title:"First Page",last:"Last",last_title:"Last Page",prev:"Prev",prev_title:"Prev Page",next:"Next",next_title:"Next Page",all:"All"},headerFilters:{default:"filter column...",columns:{}}}},d.prototype.registerModule("localize",p);var m=function(e){this.table=e};m.prototype.getConnections=function(e){var t,o=this,i=[];return t=d.prototype.comms.lookupTable(e),t.forEach(function(e){o.table!==e&&i.push(e)}),i},m.prototype.send=function(e,t,o,i){var n=this,s=this.getConnections(e);s.forEach(function(e){e.tableComms(n.table.element,t,o,i)}),!s.length&&e&&console.warn("Table Connection Error - No tables matching selector found",e)},m.prototype.receive=function(e,t,o,i){if(this.table.modExists(t))return this.table.modules[t].commsReceived(e,o,i);console.warn("Inter-table Comms Error - no such module:",t)},d.prototype.registerModule("comms",m);var f=function(e){this.table=e,this.allowedTypes=["","data","download","clipboard","print","htmlOutput"]};f.prototype.initializeColumn=function(e){var t=this,o=!1,i={};this.allowedTypes.forEach(function(n){var s,r="accessor"+(n.charAt(0).toUpperCase()+n.slice(1));e.definition[r]&&(s=t.lookupAccessor(e.definition[r]))&&(o=!0,i[r]={accessor:s,params:e.definition[r+"Params"]||{}})}),o&&(e.modules.accessor=i)},f.prototype.lookupAccessor=function(e){var t=!1;switch(void 0===e?"undefined":_typeof(e)){case"string":this.accessors[e]?t=this.accessors[e]:console.warn("Accessor Error - No such accessor found, ignoring: ",e);break;case"function":t=e}return t},f.prototype.transformRow=function(e,t){var o=this,i="accessor"+(t.charAt(0).toUpperCase()+t.slice(1)),n=d.prototype.helpers.deepClone(e||{});return o.table.columnManager.traverse(function(e){var o,s,r,a;e.modules.accessor&&(s=e.modules.accessor[i]||e.modules.accessor.accessor||!1)&&"undefined"!=(o=e.getFieldValue(n))&&(a=e.getComponent(),r="function"==typeof s.params?s.params(o,n,t,a):s.params,e.setFieldValue(n,s.accessor(o,n,t,r,a)))}),n},f.prototype.accessors={},d.prototype.registerModule("accessor",f);var g=function(e){this.table=e,this.config=!1,this.url="",this.urlGenerator=!1,this.params=!1,this.loaderElement=this.createLoaderElement(),this.msgElement=this.createMsgElement(),this.loadingElement=!1,this.errorElement=!1,this.loaderPromise=!1,this.progressiveLoad=!1,this.loading=!1,this.requestOrder=0};g.prototype.initialize=function(){var e;this.loaderElement.appendChild(this.msgElement),this.table.options.ajaxLoaderLoading&&("string"==typeof this.table.options.ajaxLoaderLoading?(e=document.createElement("template"),e.innerHTML=this.table.options.ajaxLoaderLoading.trim(),this.loadingElement=e.content.firstChild):this.loadingElement=this.table.options.ajaxLoaderLoading),this.loaderPromise=this.table.options.ajaxRequestFunc||this.defaultLoaderPromise,this.urlGenerator=this.table.options.ajaxURLGenerator||this.defaultURLGenerator,this.table.options.ajaxLoaderError&&("string"==typeof this.table.options.ajaxLoaderError?(e=document.createElement("template"),e.innerHTML=this.table.options.ajaxLoaderError.trim(),this.errorElement=e.content.firstChild):this.errorElement=this.table.options.ajaxLoaderError),this.table.options.ajaxParams&&this.setParams(this.table.options.ajaxParams),this.table.options.ajaxConfig&&this.setConfig(this.table.options.ajaxConfig),this.table.options.ajaxURL&&this.setUrl(this.table.options.ajaxURL),this.table.options.ajaxProgressiveLoad&&(this.table.options.pagination?(this.progressiveLoad=!1,console.error("Progressive Load Error - Pagination and progressive load cannot be used at the same time")):this.table.modExists("page")?(this.progressiveLoad=this.table.options.ajaxProgressiveLoad,this.table.modules.page.initializeProgressive(this.progressiveLoad)):console.error("Pagination plugin is required for progressive ajax loading"))},g.prototype.createLoaderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-loader"),e},g.prototype.createMsgElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-loader-msg"),e.setAttribute("role","alert"),e},g.prototype.setParams=function(e,t){if(t){this.params=this.params||{};for(var o in e)this.params[o]=e[o]}else this.params=e},g.prototype.getParams=function(){return this.params||{}},g.prototype.setConfig=function(e){if(this._loadDefaultConfig(),"string"==typeof e)this.config.method=e;else for(var t in e)this.config[t]=e[t]},g.prototype._loadDefaultConfig=function(e){var t=this;if(!t.config||e){t.config={};for(var o in t.defaultConfig)t.config[o]=t.defaultConfig[o]}},g.prototype.setUrl=function(e){this.url=e},g.prototype.getUrl=function(){return this.url},g.prototype.loadData=function(e,t){return this.progressiveLoad?this._loadDataProgressive():this._loadDataStandard(e,t)},g.prototype.nextPage=function(e){var t;this.loading||(t=this.table.options.ajaxProgressiveLoadScrollMargin||2*this.table.rowManager.getElement().clientHeight,e<t&&this.table.modules.page.nextPage().then(function(){}).catch(function(){}))},g.prototype.blockActiveRequest=function(){this.requestOrder++},g.prototype._loadDataProgressive=function(){return this.table.rowManager.setData([]),this.table.modules.page.setPage(1)},g.prototype._loadDataStandard=function(e,t){var o=this;return new Promise(function(i,n){o.sendRequest(e).then(function(s){o.table.rowManager.setData(s,e,t).then(function(){i()}).catch(function(e){n(e)})}).catch(function(e){n(e)})})},g.prototype.generateParamsList=function(e,t){var o=this,i=[];if(t=t||"",Array.isArray(e))e.forEach(function(e,n){i=i.concat(o.generateParamsList(e,t?t+"["+n+"]":n))});else if("object"===(void 0===e?"undefined":_typeof(e)))for(var n in e)i=i.concat(o.generateParamsList(e[n],t?t+"["+n+"]":n));else i.push({key:t,value:e});return i},g.prototype.serializeParams=function(e){var t=this.generateParamsList(e),o=[];return t.forEach(function(e){o.push(encodeURIComponent(e.key)+"="+encodeURIComponent(e.value))}),o.join("&")},g.prototype.sendRequest=function(e){var t,o=this,i=this,n=i.url;return i.requestOrder++,t=i.requestOrder,i._loadDefaultConfig(),new Promise(function(s,r){!1!==i.table.options.ajaxRequesting.call(o.table,i.url,i.params)?(i.loading=!0,e||i.showLoader(),o.loaderPromise(n,i.config,i.params).then(function(e){t===i.requestOrder?(i.table.options.ajaxResponse&&(e=i.table.options.ajaxResponse.call(i.table,i.url,i.params,e)),s(e),i.hideLoader(),i.loading=!1):console.warn("Ajax Response Blocked - An active ajax request was blocked by an attempt to change table data while the request was being made")}).catch(function(e){console.error("Ajax Load Error: ",e),i.table.options.ajaxError.call(i.table,e),i.showError(),setTimeout(function(){i.hideLoader()},3e3),i.loading=!1,r()})):r()})},g.prototype.showLoader=function(){if("function"==typeof this.table.options.ajaxLoader?this.table.options.ajaxLoader():this.table.options.ajaxLoader){for(this.hideLoader();this.msgElement.firstChild;)this.msgElement.removeChild(this.msgElement.firstChild);this.msgElement.classList.remove("tabulator-error"),this.msgElement.classList.add("tabulator-loading"),this.loadingElement?this.msgElement.appendChild(this.loadingElement):this.msgElement.innerHTML=this.table.modules.localize.getText("ajax|loading"),this.table.element.appendChild(this.loaderElement)}},g.prototype.showError=function(){for(this.hideLoader();this.msgElement.firstChild;)this.msgElement.removeChild(this.msgElement.firstChild);this.msgElement.classList.remove("tabulator-loading"),this.msgElement.classList.add("tabulator-error"),this.errorElement?this.msgElement.appendChild(this.errorElement):this.msgElement.innerHTML=this.table.modules.localize.getText("ajax|error"),this.table.element.appendChild(this.loaderElement)},g.prototype.hideLoader=function(){this.loaderElement.parentNode&&this.loaderElement.parentNode.removeChild(this.loaderElement)},g.prototype.defaultConfig={method:"GET"},g.prototype.defaultURLGenerator=function(e,t,o){return e&&o&&Object.keys(o).length&&(t.method&&"get"!=t.method.toLowerCase()||(t.method="get",e+=(e.includes("?")?"&":"?")+this.serializeParams(o))),e},g.prototype.defaultLoaderPromise=function(e,t,o){var i,n=this;return new Promise(function(s,r){if(e=n.urlGenerator(e,t,o),"GET"!=t.method.toUpperCase())if(i="object"===_typeof(n.table.options.ajaxContentType)?n.table.options.ajaxContentType:n.contentTypeFormatters[n.table.options.ajaxContentType]){for(var a in i.headers)t.headers||(t.headers={}),void 0===t.headers[a]&&(t.headers[a]=i.headers[a]);t.body=i.body.call(n,e,t,o)}else console.warn("Ajax Error - Invalid ajaxContentType value:",n.table.options.ajaxContentType);e?(void 0===t.headers&&(t.headers={}),void 0===t.headers.Accept&&(t.headers.Accept="application/json"),void 0===t.headers["X-Requested-With"]&&(t.headers["X-Requested-With"]="XMLHttpRequest"),void 0===t.mode&&(t.mode="cors"),"cors"==t.mode?(void 0===t.headers["Access-Control-Allow-Origin"]&&(t.headers["Access-Control-Allow-Origin"]=window.location.origin),void 0===t.credentials&&(t.credentials="same-origin")):void 0===t.credentials&&(t.credentials="include"),fetch(e,t).then(function(e){e.ok?e.json().then(function(e){s(e)}).catch(function(e){r(e),console.warn("Ajax Load Error - Invalid JSON returned",e)}):(console.error("Ajax Load Error - Connection Error: "+e.status,e.statusText),r(e))}).catch(function(e){console.error("Ajax Load Error - Connection Error: ",e),r(e)})):(console.warn("Ajax Load Error - No URL Set"),s([]))})},g.prototype.contentTypeFormatters={json:{headers:{"Content-Type":"application/json"},body:function(e,t,o){return JSON.stringify(o)}},form:{headers:{},body:function(e,t,o){var i=this.generateParamsList(o),n=new FormData;return i.forEach(function(e){n.append(e.key,e.value)}),n}}},d.prototype.registerModule("ajax",g);var b=function(e){this.table=e,this.topCalcs=[],this.botCalcs=[],this.genColumn=!1,this.topElement=this.createElement(),this.botElement=this.createElement(),this.topRow=!1,this.botRow=!1,this.topInitialized=!1,this.botInitialized=!1,this.initialize()};b.prototype.createElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-calcs-holder"),e},b.prototype.initialize=function(){this.genColumn=new n({field:"value"},this)},b.prototype.registerColumnField=function(){},b.prototype.initializeColumn=function(e){var t=e.definition,o={topCalcParams:t.topCalcParams||{},botCalcParams:t.bottomCalcParams||{}};if(t.topCalc){switch(_typeof(t.topCalc)){case"string":this.calculations[t.topCalc]?o.topCalc=this.calculations[t.topCalc]:console.warn("Column Calc Error - No such calculation found, ignoring: ",t.topCalc);break;case"function":o.topCalc=t.topCalc}o.topCalc&&(e.modules.columnCalcs=o,this.topCalcs.push(e),"group"!=this.table.options.columnCalcs&&this.initializeTopRow())}if(t.bottomCalc){switch(_typeof(t.bottomCalc)){case"string":this.calculations[t.bottomCalc]?o.botCalc=this.calculations[t.bottomCalc]:console.warn("Column Calc Error - No such calculation found, ignoring: ",t.bottomCalc);break;case"function":o.botCalc=t.bottomCalc}o.botCalc&&(e.modules.columnCalcs=o,this.botCalcs.push(e),"group"!=this.table.options.columnCalcs&&this.initializeBottomRow())}},b.prototype.removeCalcs=function(){var e=!1;this.topInitialized&&(this.topInitialized=!1,this.topElement.parentNode.removeChild(this.topElement),e=!0),this.botInitialized&&(this.botInitialized=!1,this.table.footerManager.remove(this.botElement),e=!0),e&&this.table.rowManager.adjustTableSize()},b.prototype.initializeTopRow=function(){this.topInitialized||(this.table.columnManager.getElement().insertBefore(this.topElement,this.table.columnManager.headersElement.nextSibling),this.topInitialized=!0)},b.prototype.initializeBottomRow=function(){this.botInitialized||(this.table.footerManager.prepend(this.botElement),this.botInitialized=!0)},b.prototype.scrollHorizontal=function(e){this.table.columnManager.getElement().scrollWidth,this.table.element.clientWidth;this.botInitialized&&(this.botRow.getElement().style.marginLeft=-e+"px")},b.prototype.recalc=function(e){var t;if(this.topInitialized||this.botInitialized){if(this.rowsToData(e),this.topInitialized){for(this.topRow&&this.topRow.deleteCells(),t=this.generateRow("top",this.rowsToData(e)),this.topRow=t;this.topElement.firstChild;)this.topElement.removeChild(this.topElement.firstChild);this.topElement.appendChild(t.getElement()),t.initialize(!0)}if(this.botInitialized){for(this.botRow&&this.botRow.deleteCells(),t=this.generateRow("bottom",this.rowsToData(e)),this.botRow=t;this.botElement.firstChild;)this.botElement.removeChild(this.botElement.firstChild);this.botElement.appendChild(t.getElement()),t.initialize(!0)}this.table.rowManager.adjustTableSize(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout()}},b.prototype.recalcRowGroup=function(e){this.recalcGroup(this.table.modules.groupRows.getRowGroup(e))},b.prototype.recalcAll=function(){var e=this;if((this.topCalcs.length||this.botCalcs.length)&&("group"!==this.table.options.columnCalcs&&this.recalc(this.table.rowManager.activeRows),this.table.options.groupBy&&"table"!==this.table.options.columnCalcs)){table.modules.groupRows.getChildGroups().forEach(function(t){e.recalcGroup(t)})}},b.prototype.recalcGroup=function(e){var t,o;e&&e.calcs&&(e.calcs.bottom&&(t=this.rowsToData(e.rows),o=this.generateRowData("bottom",t),e.calcs.bottom.updateData(o),e.calcs.bottom.reinitialize()),e.calcs.top&&(t=this.rowsToData(e.rows),o=this.generateRowData("top",t),e.calcs.top.updateData(o),e.calcs.top.reinitialize()))},b.prototype.generateTopRow=function(e){return this.generateRow("top",this.rowsToData(e))},b.prototype.generateBottomRow=function(e){return this.generateRow("bottom",this.rowsToData(e))},b.prototype.rowsToData=function(e){var t=this,o=[];return e.forEach(function(e){if(o.push(e.getData()),t.table.options.dataTree&&t.table.options.dataTreeChildColumnCalcs&&e.modules.dataTree.open){var i=t.rowsToData(t.table.modules.dataTree.getFilteredTreeChildren(e));o=o.concat(i)}}),o},b.prototype.generateRow=function(e,t){var o,i=this,n=this.generateRowData(e,t);return i.table.modExists("mutator")&&i.table.modules.mutator.disable(),o=new a(n,this,"calc"),i.table.modExists("mutator")&&i.table.modules.mutator.enable(),o.getElement().classList.add("tabulator-calcs","tabulator-calcs-"+e),o.generateCells=function(){var t=[];i.table.columnManager.columnsByIndex.forEach(function(n){i.genColumn.setField(n.getField()),i.genColumn.hozAlign=n.hozAlign,n.definition[e+"CalcFormatter"]&&i.table.modExists("format")?i.genColumn.modules.format={formatter:i.table.modules.format.getFormatter(n.definition[e+"CalcFormatter"]),params:n.definition[e+"CalcFormatterParams"]}:i.genColumn.modules.format={formatter:i.table.modules.format.getFormatter("plaintext"),params:{}},i.genColumn.definition.cssClass=n.definition.cssClass;var s=new c(i.genColumn,o);s.column=n,s.setWidth(),n.cells.push(s),t.push(s),n.visible||s.hide()}),this.cells=t},o},b.prototype.generateRowData=function(e,t){var o,i,n={},s="top"==e?this.topCalcs:this.botCalcs,r="top"==e?"topCalc":"botCalc";return s.forEach(function(e){var s=[];e.modules.columnCalcs&&e.modules.columnCalcs[r]&&(t.forEach(function(t){s.push(e.getFieldValue(t))}),i=r+"Params",o="function"==typeof e.modules.columnCalcs[i]?e.modules.columnCalcs[i](s,t):e.modules.columnCalcs[i],e.setFieldValue(n,e.modules.columnCalcs[r](s,t,o)))}),n},b.prototype.hasTopCalcs=function(){return!!this.topCalcs.length},b.prototype.hasBottomCalcs=function(){return!!this.botCalcs.length},b.prototype.redraw=function(){this.topRow&&this.topRow.normalizeHeight(!0),this.botRow&&this.botRow.normalizeHeight(!0)},b.prototype.getResults=function(){var e,t=this,o={};return this.table.options.groupBy&&this.table.modExists("groupRows")?(e=this.table.modules.groupRows.getGroups(!0),e.forEach(function(e){o[e.getKey()]=t.getGroupResults(e)})):o={top:this.topRow?this.topRow.getData():{},bottom:this.botRow?this.botRow.getData():{}},o},b.prototype.getGroupResults=function(e){var t=this,o=e._getSelf(),i=e.getSubGroups(),n={};return i.forEach(function(e){n[e.getKey()]=t.getGroupResults(e)}),{top:o.calcs.top?o.calcs.top.getData():{},bottom:o.calcs.bottom?o.calcs.bottom.getData():{},groups:n}},b.prototype.calculations={avg:function(e,t,o){var i=0,n=void 0!==o.precision?o.precision:2;return e.length&&(i=e.reduce(function(e,t){return t=Number(t),e+t}),i/=e.length,i=!1!==n?i.toFixed(n):i),parseFloat(i).toString()},max:function(e,t,o){var i=null,n=void 0!==o.precision&&o.precision;return e.forEach(function(e){((e=Number(e))>i||null===i)&&(i=e)}),null!==i?!1!==n?i.toFixed(n):i:""},min:function(e,t,o){var i=null,n=void 0!==o.precision&&o.precision;return e.forEach(function(e){((e=Number(e))<i||null===i)&&(i=e)}),null!==i?!1!==n?i.toFixed(n):i:""},sum:function(e,t,o){var i=0,n=void 0!==o.precision&&o.precision;return e.length&&e.forEach(function(e){e=Number(e),i+=isNaN(e)?0:Number(e)}),!1!==n?i.toFixed(n):i},concat:function(e,t,o){var i=0;return e.length&&(i=e.reduce(function(e,t){return String(e)+String(t)})),i},count:function(e,t,o){var i=0;return e.length&&e.forEach(function(e){e&&i++}),i}},d.prototype.registerModule("columnCalcs",b);var v=function(e){this.table=e,this.mode=!0,this.pasteParser=function(){},this.pasteAction=function(){},this.customSelection=!1,this.rowRange=!1,this.blocked=!0};v.prototype.initialize=function(){var e=this;this.mode=this.table.options.clipboard,this.rowRange=this.table.options.clipboardCopyRowRange,!0!==this.mode&&"copy"!==this.mode||this.table.element.addEventListener("copy",function(t){var o,i,n;if(!e.blocked){if(t.preventDefault(),e.customSelection)o=e.customSelection,e.table.options.clipboardCopyFormatter&&(o=e.table.options.clipboardCopyFormatter("plain",o));else{var n=e.table.modules.export.generateExportList(e.rowRange,e.table.options.clipboardCopyStyled,e.table.options.clipboardCopyConfig,"clipboard");i=e.table.modules.export.genereateHTMLTable(n),o=i?e.generatePlainContent(n):"",e.table.options.clipboardCopyFormatter&&(o=e.table.options.clipboardCopyFormatter("plain",o),i=e.table.options.clipboardCopyFormatter("html",i))}window.clipboardData&&window.clipboardData.setData?window.clipboardData.setData("Text",o):t.clipboardData&&t.clipboardData.setData?(t.clipboardData.setData("text/plain",o),i&&t.clipboardData.setData("text/html",i)):t.originalEvent&&t.originalEvent.clipboardData.setData&&(t.originalEvent.clipboardData.setData("text/plain",o),i&&t.originalEvent.clipboardData.setData("text/html",i)),e.table.options.clipboardCopied.call(e.table,o,i),e.reset()}}),!0!==this.mode&&"paste"!==this.mode||this.table.element.addEventListener("paste",function(t){e.paste(t)}),this.setPasteParser(this.table.options.clipboardPasteParser),this.setPasteAction(this.table.options.clipboardPasteAction)},v.prototype.reset=function(){this.blocked=!1,this.originalSelectionText=""},v.prototype.generatePlainContent=function(e){var t=[];return e.forEach(function(e){var o=[];e.columns.forEach(function(t){var i="";if(t)switch("group"===e.type&&(t.value=t.component.getKey()),_typeof(t.value)){case"object":i=JSON.stringify(t.value);break;case"undefined":case"null":i="";break;default:i=t.value}o.push(i)}),t.push(o.join("\t"))}),t.join("\n")},v.prototype.copy=function(e,t){var e,o,i;this.blocked=!1,this.customSelection=!1,!0!==this.mode&&"copy"!==this.mode||(this.rowRange=e||this.table.options.clipboardCopyRowRange,void 0!==window.getSelection&&void 0!==document.createRange?(e=document.createRange(),e.selectNodeContents(this.table.element),o=window.getSelection(),o.toString()&&t&&(this.customSelection=o.toString()),o.removeAllRanges(),o.addRange(e)):void 0!==document.selection&&void 0!==document.body.createTextRange&&(i=document.body.createTextRange(),i.moveToElementText(this.table.element),i.select()),document.execCommand("copy"),o&&o.removeAllRanges())},v.prototype.setPasteAction=function(e){switch(void 0===e?"undefined":_typeof(e)){case"string":this.pasteAction=this.pasteActions[e],this.pasteAction||console.warn("Clipboard Error - No such paste action found:",e);break;case"function":this.pasteAction=e}},v.prototype.setPasteParser=function(e){switch(void 0===e?"undefined":_typeof(e)){case"string":this.pasteParser=this.pasteParsers[e],this.pasteParser||console.warn("Clipboard Error - No such paste parser found:",e);break;case"function":this.pasteParser=e}},v.prototype.paste=function(e){var t,o,i;this.checkPaseOrigin(e)&&(t=this.getPasteData(e),o=this.pasteParser.call(this,t),o?(e.preventDefault(),this.table.modExists("mutator")&&(o=this.mutateData(o)),i=this.pasteAction.call(this,o),this.table.options.clipboardPasted.call(this.table,t,o,i)):this.table.options.clipboardPasteError.call(this.table,t))},v.prototype.mutateData=function(e){var t=this,o=[];return Array.isArray(e)?e.forEach(function(e){o.push(t.table.modules.mutator.transformRow(e,"clipboard"))}):o=e,o},v.prototype.checkPaseOrigin=function(e){var t=!0;return("DIV"!=e.target.tagName||this.table.modules.edit.currentCell)&&(t=!1),t},v.prototype.getPasteData=function(e){var t;return window.clipboardData&&window.clipboardData.getData?t=window.clipboardData.getData("Text"):e.clipboardData&&e.clipboardData.getData?t=e.clipboardData.getData("text/plain"):e.originalEvent&&e.originalEvent.clipboardData.getData&&(t=e.originalEvent.clipboardData.getData("text/plain")),t},v.prototype.pasteParsers={table:function(e){var t=[],o=!0,i=this.table.columnManager.columns,n=[],s=[];return e=e.split("\n"),e.forEach(function(e){t.push(e.split("\t"))}),!(!t.length||1===t.length&&t[0].length<2)&&(!0,t[0].forEach(function(e){var t=i.find(function(t){return e&&t.definition.title&&e.trim()&&t.definition.title.trim()===e.trim()});t?n.push(t):o=!1}),o||(o=!0,n=[],t[0].forEach(function(e){var t=i.find(function(t){return e&&t.field&&e.trim()&&t.field.trim()===e.trim()});t?n.push(t):o=!1}),o||(n=this.table.columnManager.columnsByIndex)),o&&t.shift(),t.forEach(function(e){var t={};e.forEach(function(e,o){n[o]&&(t[n[o].field]=e)}),s.push(t)}),s)}},v.prototype.pasteActions={replace:function(e){return this.table.setData(e)},update:function(e){return this.table.updateOrAddData(e)},insert:function(e){return this.table.addData(e)}},d.prototype.registerModule("clipboard",v);var y=function(e){this.table=e,this.indent=10,this.field="",this.collapseEl=null,this.expandEl=null,this.branchEl=null,this.elementField=!1,this.startOpen=function(){},this.displayIndex=0};y.prototype.initialize=function(){var e=null,t=this.table.columnManager.getFirstVisibileColumn(),o=this.table.options;switch(this.field=o.dataTreeChildField,this.indent=o.dataTreeChildIndent,this.elementField=o.dataTreeElementColumn||!!t&&t.field,o.dataTreeBranchElement&&(!0===o.dataTreeBranchElement?(this.branchEl=document.createElement("div"),this.branchEl.classList.add("tabulator-data-tree-branch")):"string"==typeof o.dataTreeBranchElement?(e=document.createElement("div"),e.innerHTML=o.dataTreeBranchElement,this.branchEl=e.firstChild):this.branchEl=o.dataTreeBranchElement),o.dataTreeCollapseElement?"string"==typeof o.dataTreeCollapseElement?(e=document.createElement("div"),e.innerHTML=o.dataTreeCollapseElement,this.collapseEl=e.firstChild):this.collapseEl=o.dataTreeCollapseElement:(this.collapseEl=document.createElement("div"),this.collapseEl.classList.add("tabulator-data-tree-control"),this.collapseEl.tabIndex=0,this.collapseEl.innerHTML="<div class='tabulator-data-tree-control-collapse'></div>"),o.dataTreeExpandElement?"string"==typeof o.dataTreeExpandElement?(e=document.createElement("div"),e.innerHTML=o.dataTreeExpandElement,this.expandEl=e.firstChild):this.expandEl=o.dataTreeExpandElement:(this.expandEl=document.createElement("div"),this.expandEl.classList.add("tabulator-data-tree-control"),this.expandEl.tabIndex=0,this.expandEl.innerHTML="<div class='tabulator-data-tree-control-expand'></div>"),_typeof(o.dataTreeStartExpanded)){case"boolean":this.startOpen=function(e,t){return o.dataTreeStartExpanded};break;case"function":this.startOpen=o.dataTreeStartExpanded;break;default:this.startOpen=function(e,t){return o.dataTreeStartExpanded[t]}}},y.prototype.initializeRow=function(e){var t=e.getData()[this.field],o=Array.isArray(t),i=o||!o&&"object"===(void 0===t?"undefined":_typeof(t))&&null!==t;!i&&e.modules.dataTree&&e.modules.dataTree.branchEl&&e.modules.dataTree.branchEl.parentNode.removeChild(e.modules.dataTree.branchEl),!i&&e.modules.dataTree&&e.modules.dataTree.controlEl&&e.modules.dataTree.controlEl.parentNode.removeChild(e.modules.dataTree.controlEl),e.modules.dataTree={index:e.modules.dataTree?e.modules.dataTree.index:0,open:!!i&&(e.modules.dataTree?e.modules.dataTree.open:this.startOpen(e.getComponent(),0)),controlEl:!(!e.modules.dataTree||!i)&&e.modules.dataTree.controlEl,branchEl:!(!e.modules.dataTree||!i)&&e.modules.dataTree.branchEl,parent:!!e.modules.dataTree&&e.modules.dataTree.parent,children:i}},y.prototype.layoutRow=function(e){var t=this.elementField?e.getCell(this.elementField):e.getCells()[0],o=t.getElement(),i=e.modules.dataTree;i.branchEl&&(i.branchEl.parentNode&&i.branchEl.parentNode.removeChild(i.branchEl),i.branchEl=!1),i.controlEl&&(i.controlEl.parentNode&&i.controlEl.parentNode.removeChild(i.controlEl),i.controlEl=!1),this.generateControlElement(e,o),e.element.classList.add("tabulator-tree-level-"+i.index),i.index&&(this.branchEl?(i.branchEl=this.branchEl.cloneNode(!0),o.insertBefore(i.branchEl,o.firstChild),i.branchEl.style.marginLeft=(i.branchEl.offsetWidth+i.branchEl.style.marginRight)*(i.index-1)+i.index*this.indent+"px"):o.style.paddingLeft=parseInt(window.getComputedStyle(o,null).getPropertyValue("padding-left"))+i.index*this.indent+"px")},y.prototype.generateControlElement=function(e,t){var o=this,i=e.modules.dataTree,t=t||e.getCells()[0].getElement(),n=i.controlEl;!1!==i.children&&(i.open?(i.controlEl=this.collapseEl.cloneNode(!0),i.controlEl.addEventListener("click",function(t){t.stopPropagation(),o.collapseRow(e)})):(i.controlEl=this.expandEl.cloneNode(!0),i.controlEl.addEventListener("click",function(t){t.stopPropagation(),o.expandRow(e)})),i.controlEl.addEventListener("mousedown",function(e){e.stopPropagation()}),n&&n.parentNode===t?n.parentNode.replaceChild(i.controlEl,n):t.insertBefore(i.controlEl,t.firstChild))},y.prototype.setDisplayIndex=function(e){this.displayIndex=e},y.prototype.getDisplayIndex=function(){return this.displayIndex},y.prototype.getRows=function(e){var t=this,o=[];return e.forEach(function(e,i){var n,s;o.push(e),e instanceof a&&(n=e.modules.dataTree.children,n.index||!1===n.children||(s=t.getChildren(e),s.forEach(function(e){o.push(e)})))}),o},y.prototype.getChildren=function(e){var t=this,o=e.modules.dataTree,i=[],n=[];return!1!==o.children&&o.open&&(Array.isArray(o.children)||(o.children=this.generateChildren(e)),i=this.table.modExists("filter")?this.table.modules.filter.filter(o.children):o.children,this.table.modExists("sort")&&this.table.modules.sort.sort(i),i.forEach(function(e){n.push(e),t.getChildren(e).forEach(function(e){n.push(e)})})),n},
-y.prototype.generateChildren=function(e){var t=this,o=[],i=e.getData()[this.field];return Array.isArray(i)||(i=[i]),i.forEach(function(i){var n=new a(i||{},t.table.rowManager);n.modules.dataTree.index=e.modules.dataTree.index+1,n.modules.dataTree.parent=e,n.modules.dataTree.children&&(n.modules.dataTree.open=t.startOpen(n.getComponent(),n.modules.dataTree.index)),o.push(n)}),o},y.prototype.expandRow=function(e,t){var o=e.modules.dataTree;!1!==o.children&&(o.open=!0,e.reinitialize(),this.table.rowManager.refreshActiveData("tree",!1,!0),this.table.options.dataTreeRowExpanded(e.getComponent(),e.modules.dataTree.index))},y.prototype.collapseRow=function(e){var t=e.modules.dataTree;!1!==t.children&&(t.open=!1,e.reinitialize(),this.table.rowManager.refreshActiveData("tree",!1,!0),this.table.options.dataTreeRowCollapsed(e.getComponent(),e.modules.dataTree.index))},y.prototype.toggleRow=function(e){var t=e.modules.dataTree;!1!==t.children&&(t.open?this.collapseRow(e):this.expandRow(e))},y.prototype.getTreeParent=function(e){return!!e.modules.dataTree.parent&&e.modules.dataTree.parent.getComponent()},y.prototype.getFilteredTreeChildren=function(e){var t,o=e.modules.dataTree,i=[];return o.children&&(Array.isArray(o.children)||(o.children=this.generateChildren(e)),t=this.table.modExists("filter")?this.table.modules.filter.filter(o.children):o.children,t.forEach(function(e){e instanceof a&&i.push(e)})),i},y.prototype.rowDelete=function(e){var t,o=e.modules.dataTree.parent;o&&(t=this.findChildIndex(e,o),!1!==t&&o.data[this.field].splice(t,1),o.data[this.field].length||delete o.data[this.field],this.initializeRow(o),this.layoutRow(o)),this.table.rowManager.refreshActiveData("tree",!1,!0)},y.prototype.addTreeChildRow=function(e,t,o,i){var n=!1;"string"==typeof t&&(t=JSON.parse(t)),Array.isArray(e.data[this.field])||(e.data[this.field]=[],e.modules.dataTree.open=this.startOpen(e.getComponent(),e.modules.dataTree.index)),void 0!==i&&!1!==(n=this.findChildIndex(i,e))&&e.data[this.field].splice(o?n:n+1,0,t),!1===n&&(o?e.data[this.field].unshift(t):e.data[this.field].push(t)),this.initializeRow(e),this.layoutRow(e),this.table.rowManager.refreshActiveData("tree",!1,!0)},y.prototype.findChildIndex=function(e,t){var o=this,i=!1;return"object"==(void 0===e?"undefined":_typeof(e))?e instanceof a?i=e.data:e instanceof r?i=e._getSelf().data:"undefined"!=typeof HTMLElement&&e instanceof HTMLElement&&t.modules.dataTree&&(i=t.modules.dataTree.children.find(function(t){return t instanceof a&&t.element===e}))&&(i=i.data):i=void 0!==e&&null!==e&&t.data[this.field].find(function(t){return t.data[o.table.options.index]==e}),i&&(Array.isArray(t.data[this.field])&&(i=t.data[this.field].indexOf(i)),-1==i&&(i=!1)),i},y.prototype.getTreeChildren=function(e){var t=e.modules.dataTree,o=[];return t.children&&(Array.isArray(t.children)||(t.children=this.generateChildren(e)),t.children.forEach(function(e){e instanceof a&&o.push(e.getComponent())})),o},y.prototype.checkForRestyle=function(e){e.row.cells.indexOf(e)||e.row.reinitialize()},y.prototype.getChildField=function(){return this.field},y.prototype.redrawNeeded=function(e){return!!this.field&&void 0!==e[this.field]||!!this.elementField&&void 0!==e[this.elementField]},d.prototype.registerModule("dataTree",y);var w=function(e){this.table=e};w.prototype.download=function(e,t,o,i,n){function s(o,i){n?!0===n?r.triggerDownload(o,i,e,t,!0):n(o):r.triggerDownload(o,i,e,t)}var r=this,a=!1;if("function"==typeof e?a=e:r.downloaders[e]?a=r.downloaders[e]:console.warn("Download Error - No such download type found: ",e),a){var l=this.generateExportList(i);a.call(this.table,l,o||{},s)}},w.prototype.generateExportList=function(e){var t=this.table.modules.export.generateExportList(this.table.options.downloadConfig,!1,e||this.table.options.downloadRowRange,"download"),o=this.table.options.groupHeaderDownload;return o&&!Array.isArray(o)&&(o=[o]),t.forEach(function(e){var t;"group"===e.type&&(t=e.columns[0],o&&o[e.indent]&&(t.value=o[e.indent](t.value,e.component._group.getRowCount(),e.component._group.getData(),e.component)))}),t},w.prototype.triggerDownload=function(e,t,o,i,n){var s=document.createElement("a"),r=new Blob([e],{type:t}),i=i||"Tabulator."+("function"==typeof o?"txt":o);(r=this.table.options.downloadReady.call(this.table,e,r))&&(n?window.open(window.URL.createObjectURL(r)):navigator.msSaveOrOpenBlob?navigator.msSaveOrOpenBlob(r,i):(s.setAttribute("href",window.URL.createObjectURL(r)),s.setAttribute("download",i),s.style.display="none",document.body.appendChild(s),s.click(),document.body.removeChild(s)),this.table.options.downloadComplete&&this.table.options.downloadComplete())},w.prototype.commsReceived=function(e,t,o){switch(t){case"intercept":this.download(o.type,"",o.options,o.active,o.intercept)}},w.prototype.downloaders={csv:function(e,t,o){var i=t&&t.delimiter?t.delimiter:",",n=[],s=[];e.forEach(function(e){var t=[];switch(e.type){case"group":console.warn("Download Warning - CSV downloader cannot process row groups");break;case"calc":console.warn("Download Warning - CSV downloader cannot process column calculations");break;case"header":e.columns.forEach(function(e,t){e&&1===e.depth&&(s[t]=void 0===e.value||"null"==typeof e.value?"":e.value)});break;case"row":e.columns.forEach(function(e){if(e){switch(_typeof(e.value)){case"object":e.value=JSON.stringify(e.value);break;case"undefined":case"null":e.value=""}t.push('"'+String(e.value).split('"').join('""')+'"')}}),n.push(t.join(i))}}),s.length&&(n=[s].concat(n)),n=n.join("\n"),t.bom&&(n="\ufeff"+n),o(n,"text/csv")},json:function(e,t,o){var i=[];e.forEach(function(e){var t={};switch(e.type){case"header":break;case"group":console.warn("Download Warning - JSON downloader cannot process row groups");break;case"calc":console.warn("Download Warning - JSON downloader cannot process column calculations");break;case"row":e.columns.forEach(function(e){e&&(t[e.component.getField()]=e.value)}),i.push(t)}}),i=JSON.stringify(i,null,"\t"),o(i,"application/json")},pdf:function(e,t,o){function i(e,t){var o=[];return e.columns.forEach(function(e){var i;if(e){switch(_typeof(e.value)){case"object":e.value=JSON.stringify(e.value);break;case"undefined":case"null":e.value=""}i={content:e.value,colSpan:e.width,rowSpan:e.height},t&&(i.styles=t),o.push(i)}else o.push("")}),o}var n=[],s=[],r={},a=t.rowGroupStyles||{fontStyle:"bold",fontSize:12,cellPadding:6,fillColor:220},l=t.rowCalcStyles||{fontStyle:"bold",fontSize:10,cellPadding:4,fillColor:232},c=t.jsPDF||{},u=t&&t.title?t.title:"";c.orientation||(c.orientation=t.orientation||"landscape"),c.unit||(c.unit="pt"),e.forEach(function(e){switch(e.type){case"header":n.push(i(e));break;case"group":s.push(i(e,a));break;case"calc":s.push(i(e,l));break;case"row":s.push(i(e))}});var d=new jsPDF(c);t&&t.autoTable&&(r="function"==typeof t.autoTable?t.autoTable(d)||{}:t.autoTable),u&&(r.addPageContent=function(e){d.text(u,40,30)}),r.head=n,r.body=s,d.autoTable(r),t&&t.documentProcessing&&t.documentProcessing(d),o(d.output("arraybuffer"),"application/pdf")},xlsx:function(e,t,o){function i(){var t=[],o=[],i={},n={s:{c:0,r:0},e:{c:e[0]?e[0].columns.reduce(function(e,t){return e+(t&&t.width?t.width:1)},0):0,r:e.length}};return e.forEach(function(e,i){var n=[];e.columns.forEach(function(e,t){e?(n.push(e.value instanceof Date||"object"!==_typeof(e.value)?e.value:JSON.stringify(e.value)),(e.width>1||e.height>-1)&&o.push({s:{r:i,c:t},e:{r:i+e.height-1,c:t+e.width-1}})):n.push("")}),t.push(n)}),XLSX.utils.sheet_add_aoa(i,t),i["!ref"]=XLSX.utils.encode_range(n),o.length&&(i["!merges"]=o),i}var n,s=this,r=t.sheetName||"Sheet1",a=XLSX.utils.book_new();if(a.SheetNames=[],a.Sheets={},t.sheetOnly)return void o(i());if(t.sheets)for(var l in t.sheets)!0===t.sheets[l]?(a.SheetNames.push(l),a.Sheets[l]=i()):(a.SheetNames.push(l),this.table.modules.comms.send(t.sheets[l],"download","intercept",{type:"xlsx",options:{sheetOnly:!0},active:s.active,intercept:function(e){a.Sheets[l]=e}}));else a.SheetNames.push(r),a.Sheets[r]=i();t.documentProcessing&&(a=t.documentProcessing(a)),n=XLSX.write(a,{bookType:"xlsx",bookSST:!0,type:"binary"}),o(function(e){for(var t=new ArrayBuffer(e.length),o=new Uint8Array(t),i=0;i!=e.length;++i)o[i]=255&e.charCodeAt(i);return t}(n),"application/octet-stream")},html:function(e,t,o){this.modExists("export",!0)&&o(this.modules.export.genereateHTMLTable(e),"text/html")}},d.prototype.registerModule("download",w);var E=function(e){this.table=e,this.currentCell=!1,this.mouseClick=!1,this.recursionBlock=!1,this.invalidEdit=!1,this.editedCells=[]};E.prototype.initializeColumn=function(e){var t=this,o={editor:!1,blocked:!1,check:e.definition.editable,params:e.definition.editorParams||{}};switch(_typeof(e.definition.editor)){case"string":"tick"===e.definition.editor&&(e.definition.editor="tickCross",console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor")),t.editors[e.definition.editor]?o.editor=t.editors[e.definition.editor]:console.warn("Editor Error - No such editor found: ",e.definition.editor);break;case"function":o.editor=e.definition.editor;break;case"boolean":!0===e.definition.editor&&("function"!=typeof e.definition.formatter?("tick"===e.definition.formatter&&(e.definition.formatter="tickCross",console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor")),t.editors[e.definition.formatter]?o.editor=t.editors[e.definition.formatter]:o.editor=t.editors.input):console.warn("Editor Error - Cannot auto lookup editor for a custom formatter: ",e.definition.formatter))}o.editor&&(e.modules.edit=o)},E.prototype.getCurrentCell=function(){return!!this.currentCell&&this.currentCell.getComponent()},E.prototype.clearEditor=function(e){var t,o=this.currentCell;if(this.invalidEdit=!1,o){for(this.currentCell=!1,t=o.getElement(),e?o.validate():t.classList.remove("tabulator-validation-fail"),t.classList.remove("tabulator-editing");t.firstChild;)t.removeChild(t.firstChild);o.row.getElement().classList.remove("tabulator-row-editing")}},E.prototype.cancelEdit=function(){if(this.currentCell){var e=this.currentCell,t=this.currentCell.getComponent();this.clearEditor(!0),e.setValueActual(e.getValue()),e.cellRendered(),e.column.cellEvents.cellEditCancelled&&e.column.cellEvents.cellEditCancelled.call(this.table,t),this.table.options.cellEditCancelled.call(this.table,t)}},E.prototype.bindEditor=function(e){var t=this,o=e.getElement();o.setAttribute("tabindex",0),o.addEventListener("click",function(e){o.classList.contains("tabulator-editing")||o.focus({preventScroll:!0})}),o.addEventListener("mousedown",function(e){t.mouseClick=!0}),o.addEventListener("focus",function(o){t.recursionBlock||t.edit(e,o,!1)})},E.prototype.focusCellNoEvent=function(e,t){this.recursionBlock=!0,t&&"ie"===this.table.browser||e.getElement().focus({preventScroll:!0}),this.recursionBlock=!1},E.prototype.editCell=function(e,t){this.focusCellNoEvent(e),this.edit(e,!1,t)},E.prototype.focusScrollAdjust=function(e){if("virtual"==this.table.rowManager.getRenderMode()){var t=this.table.rowManager.element.scrollTop,o=this.table.rowManager.element.clientHeight+this.table.rowManager.element.scrollTop,i=e.row.getElement();i.offsetTop;i.offsetTop<t?this.table.rowManager.element.scrollTop-=t-i.offsetTop:i.offsetTop+i.offsetHeight>o&&(this.table.rowManager.element.scrollTop+=i.offsetTop+i.offsetHeight-o)}},E.prototype.edit=function(e,t,o){function i(t){if(c.currentCell===e){var o=!0;return e.column.modules.validate&&c.table.modExists("validate")&&"manual"!=c.table.options.validationMode&&(o=c.table.modules.validate.validate(e.column.modules.validate,e,t)),!0===o||"highlight"===c.table.options.validationMode?(c.clearEditor(),e.setValue(t,!0),e.modules.edit||(e.modules.edit={}),e.modules.edit.edited=!0,-1==c.editedCells.indexOf(e)&&c.editedCells.push(e),c.table.options.dataTree&&c.table.modExists("dataTree")&&c.table.modules.dataTree.checkForRestyle(e),!0===o||(h.classList.add("tabulator-validation-fail"),!1)):(c.invalidEdit=!0,h.classList.add("tabulator-validation-fail"),c.focusCellNoEvent(e,!0),d(),c.table.options.validationFailed.call(c.table,e.getComponent(),t,o),!1)}}function n(){c.currentCell===e&&(c.cancelEdit(),c.table.options.dataTree&&c.table.modExists("dataTree")&&c.table.modules.dataTree.checkForRestyle(e))}function s(e){d=e}var r,a,l,c=this,u=!0,d=function(){},h=e.getElement();if(this.currentCell)return void(this.invalidEdit||this.cancelEdit());if(e.column.modules.edit.blocked)return this.mouseClick=!1,h.blur(),!1;switch(t&&t.stopPropagation(),_typeof(e.column.modules.edit.check)){case"function":u=e.column.modules.edit.check(e.getComponent());break;case"boolean":u=e.column.modules.edit.check}if(u||o){if(c.cancelEdit(),c.currentCell=e,this.focusScrollAdjust(e),a=e.getComponent(),this.mouseClick&&(this.mouseClick=!1,e.column.cellEvents.cellClick&&e.column.cellEvents.cellClick.call(this.table,t,a)),e.column.cellEvents.cellEditing&&e.column.cellEvents.cellEditing.call(this.table,a),c.table.options.cellEditing.call(this.table,a),l="function"==typeof e.column.modules.edit.params?e.column.modules.edit.params(a):e.column.modules.edit.params,!1===(r=e.column.modules.edit.editor.call(c,a,s,i,n,l)))return h.blur(),!1;if(!(r instanceof Node))return console.warn("Edit Error - Editor should return an instance of Node, the editor returned:",r),h.blur(),!1;for(h.classList.add("tabulator-editing"),e.row.getElement().classList.add("tabulator-row-editing");h.firstChild;)h.removeChild(h.firstChild);h.appendChild(r),d();for(var p=h.children,m=0;m<p.length;m++)p[m].addEventListener("click",function(e){e.stopPropagation()});return!0}return this.mouseClick=!1,h.blur(),!1},E.prototype.maskInput=function(e,t){function o(t){var a=i[t];void 0!==a&&a!==r&&a!==n&&a!==s&&(e.value=e.value+""+a,o(t+1))}var i=t.mask,n=void 0!==t.maskLetterChar?t.maskLetterChar:"A",s=void 0!==t.maskNumberChar?t.maskNumberChar:"9",r=void 0!==t.maskWildcardChar?t.maskWildcardChar:"*",a=!1;e.addEventListener("keydown",function(t){var o=e.value.length,l=t.key;if(t.keyCode>46){if(o>=i.length)return t.preventDefault(),t.stopPropagation(),a=!1,!1;switch(i[o]){case n:if(l.toUpperCase()==l.toLowerCase())return t.preventDefault(),t.stopPropagation(),a=!1,!1;break;case s:if(isNaN(l))return t.preventDefault(),t.stopPropagation(),a=!1,!1;break;case r:break;default:if(l!==i[o])return t.preventDefault(),t.stopPropagation(),a=!1,!1}a=!0}}),e.addEventListener("keyup",function(i){i.keyCode>46&&t.maskAutoFill&&o(e.value.length)}),e.placeholder||(e.placeholder=i),t.maskAutoFill&&o(e.value.length)},E.prototype.getEditedCells=function(){var e=[];return this.editedCells.forEach(function(t){e.push(t.getComponent())}),e},E.prototype.clearEdited=function(e){var t;e.modules.edit&&e.modules.edit.edited&&(e.modules.validate.invalid=!1,(t=this.editedCells.indexOf(e))>-1&&this.editedCells.splice(t,1))},E.prototype.editors={input:function(e,t,o,i,n){function s(e){(null===r||void 0===r)&&""!==a.value||a.value!==r?o(a.value)&&(r=a.value):i()}var r=e.getValue(),a=document.createElement("input");if(a.setAttribute("type",n.search?"search":"text"),a.style.padding="4px",a.style.width="100%",a.style.boxSizing="border-box",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var l in n.elementAttributes)"+"==l.charAt(0)?(l=l.slice(1),a.setAttribute(l,a.getAttribute(l)+n.elementAttributes["+"+l])):a.setAttribute(l,n.elementAttributes[l]);return a.value=void 0!==r?r:"",t(function(){a.focus({preventScroll:!0}),a.style.height="100%"}),a.addEventListener("change",s),a.addEventListener("blur",s),a.addEventListener("keydown",function(e){switch(e.keyCode){case 13:s(e);break;case 27:i()}}),n.mask&&this.table.modules.edit.maskInput(a,n),a},textarea:function(e,t,o,i,n){function s(t){(null===r||void 0===r)&&""!==c.value||c.value!==r?(o(c.value)&&(r=c.value),setTimeout(function(){e.getRow().normalizeHeight()},300)):i()}var r=e.getValue(),a=n.verticalNavigation||"hybrid",l=String(null!==r&&void 0!==r?r:""),c=(l.match(/(?:\r\n|\r|\n)/g),document.createElement("textarea")),u=0;if(c.style.display="block",c.style.padding="2px",c.style.height="100%",c.style.width="100%",c.style.boxSizing="border-box",c.style.whiteSpace="pre-wrap",c.style.resize="none",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var d in n.elementAttributes)"+"==d.charAt(0)?(d=d.slice(1),c.setAttribute(d,c.getAttribute(d)+n.elementAttributes["+"+d])):c.setAttribute(d,n.elementAttributes[d]);return c.value=l,t(function(){c.focus({preventScroll:!0}),c.style.height="100%"}),c.addEventListener("change",s),c.addEventListener("blur",s),c.addEventListener("keyup",function(){c.style.height="";var t=c.scrollHeight;c.style.height=t+"px",t!=u&&(u=t,e.getRow().normalizeHeight())}),c.addEventListener("keydown",function(e){switch(e.keyCode){case 27:i();break;case 38:("editor"==a||"hybrid"==a&&c.selectionStart)&&(e.stopImmediatePropagation(),e.stopPropagation());break;case 40:("editor"==a||"hybrid"==a&&c.selectionStart!==c.value.length)&&(e.stopImmediatePropagation(),e.stopPropagation())}}),n.mask&&this.table.modules.edit.maskInput(c,n),c},number:function(e,t,o,i,n){function s(){var e=l.value;isNaN(e)||""===e||(e=Number(e)),e!==r?o(e)&&(r=e):i()}var r=e.getValue(),a=n.verticalNavigation||"editor",l=document.createElement("input");if(l.setAttribute("type","number"),void 0!==n.max&&l.setAttribute("max",n.max),void 0!==n.min&&l.setAttribute("min",n.min),void 0!==n.step&&l.setAttribute("step",n.step),l.style.padding="4px",l.style.width="100%",l.style.boxSizing="border-box",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var c in n.elementAttributes)"+"==c.charAt(0)?(c=c.slice(1),l.setAttribute(c,l.getAttribute(c)+n.elementAttributes["+"+c])):l.setAttribute(c,n.elementAttributes[c]);l.value=r;var u=function(e){s()};return t(function(){l.removeEventListener("blur",u),l.focus({preventScroll:!0}),l.style.height="100%",l.addEventListener("blur",u)}),l.addEventListener("keydown",function(e){switch(e.keyCode){case 13:s();break;case 27:i();break;case 38:case 40:"editor"==a&&(e.stopImmediatePropagation(),e.stopPropagation())}}),n.mask&&this.table.modules.edit.maskInput(l,n),l},range:function(e,t,o,i,n){function s(){var e=a.value;isNaN(e)||""===e||(e=Number(e)),e!=r?o(e)&&(r=e):i()}var r=e.getValue(),a=document.createElement("input");if(a.setAttribute("type","range"),void 0!==n.max&&a.setAttribute("max",n.max),void 0!==n.min&&a.setAttribute("min",n.min),void 0!==n.step&&a.setAttribute("step",n.step),a.style.padding="4px",a.style.width="100%",a.style.boxSizing="border-box",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var l in n.elementAttributes)"+"==l.charAt(0)?(l=l.slice(1),a.setAttribute(l,a.getAttribute(l)+n.elementAttributes["+"+l])):a.setAttribute(l,n.elementAttributes[l]);return a.value=r,t(function(){a.focus({preventScroll:!0}),a.style.height="100%"}),a.addEventListener("blur",function(e){s()}),a.addEventListener("keydown",function(e){switch(e.keyCode){case 13:s();break;case 27:i()}}),a},select:function(e,t,o,i,n){function s(t){var o,i={},s=w.table.getData();return o=t?w.table.columnManager.getColumnByField(t):e.getColumn()._getSelf(),o?(s.forEach(function(e){var t=o.getFieldValue(e);null!==t&&void 0!==t&&""!==t&&(i[t]=!0)}),i=n.sortValuesList?"asc"==n.sortValuesList?Object.keys(i).sort():Object.keys(i).sort().reverse():Object.keys(i)):console.warn("unable to find matching column to create select lookup list:",t),i}function r(t,o){function i(e){var e={label:e.label,value:e.value,itemParams:e.itemParams,elementAttributes:e.elementAttributes,element:!1};return o.indexOf(e.value)>-1&&c(e),n.push(e),s.push(e),e}var n=[],s=[];if("function"==typeof t&&(t=t(e)),Array.isArray(t))t.forEach(function(e){var t;"object"===(void 0===e?"undefined":_typeof(e))?e.options?(t={label:e.label,group:!0,itemParams:e.itemParams,elementAttributes:e.elementAttributes,element:!1},s.push(t),e.options.forEach(function(e){i(e)})):i(e):(t={label:e,value:e,element:!1},o.indexOf(t.value)>-1&&c(t),n.push(t),s.push(t))});else for(var r in t){var l={label:t[r],value:r,element:!1};o.indexOf(l.value)>-1&&c(l),n.push(l),s.push(l)}D=n,S=s,a()}function a(){for(;L.firstChild;)L.removeChild(L.firstChild);S.forEach(function(t){var o=t.element;if(!o){if(o=document.createElement("div"),t.label=n.listItemFormatter?n.listItemFormatter(t.value,t.label,e,o,t.itemParams):t.label,t.group?(o.classList.add("tabulator-edit-select-list-group"),o.tabIndex=0,o.innerHTML=""===t.label?"&nbsp;":t.label):(o.classList.add("tabulator-edit-select-list-item"),o.tabIndex=0,o.innerHTML=""===t.label?"&nbsp;":t.label,o.addEventListener("click",function(){T?(h(t),M.focus()):p(t)}),H.indexOf(t)>-1&&o.classList.add("active")),t.elementAttributes&&"object"==_typeof(t.elementAttributes))for(var i in t.elementAttributes)"+"==i.charAt(0)?(i=i.slice(1),o.setAttribute(i,M.getAttribute(i)+t.elementAttributes["+"+i])):o.setAttribute(i,t.elementAttributes[i]);o.addEventListener("mousedown",function(){z=!1,setTimeout(function(){z=!0},10)}),t.element=o}L.appendChild(o)})}function l(e,t){!T&&k&&k.element&&k.element.classList.remove("active"),k&&k.element&&k.element.classList.remove("focused"),k=e,e.element&&(e.element.classList.add("focused"),t&&e.element.classList.add("active"))}function c(e){-1==H.indexOf(e)&&(H.push(e),l(e,!0)),f()}function u(e){var t=H[e];e>-1&&(H.splice(e,1),t.element&&t.element.classList.remove("active"))}function h(e){e||(e=k);var t=H.indexOf(e);t>-1?u(t):(!0!==T&&H.length>=T&&u(0),c(e)),f()}function p(e){v(),e||(e=k),e&&o(e.value)}function m(){v();var e=[];H.forEach(function(t){e.push(t.value)}),o(e)}function f(){var e=[];H.forEach(function(t){e.push(t.label)}),M.value=e.join(", ")}function g(){v(),i()}function b(){if(!L.parentNode){!0===n.values?r(s(),R):"string"==typeof n.values?r(s(n.values),R):r(n.values||[],R);var e=d.prototype.helpers.elOffset(E);L.style.minWidth=E.offsetWidth+"px",L.style.top=e.top+E.offsetHeight+"px",L.style.left=e.left+"px",L.addEventListener("mousedown",function(e){z=!1,setTimeout(function(){z=!0},10)}),document.body.appendChild(L)}}function v(){L.parentNode&&L.parentNode.removeChild(L),y()}function y(){w.table.rowManager.element.removeEventListener("scroll",g)}var w=this,E=e.getElement(),C=e.getValue(),x=n.verticalNavigation||"editor",R=void 0!==C||null===C?C:void 0!==n.defaultValue?n.defaultValue:[],M=document.createElement("input"),L=document.createElement("div"),T=n.multiselect,D=[],k={},S=[],H=[],z=!0;if(this.table.rowManager.element.addEventListener("scroll",g),(Array.isArray(n)||!Array.isArray(n)&&"object"===(void 0===n?"undefined":_typeof(n))&&!n.values)&&(console.warn("DEPRECATION WARNING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object"),n={values:n}),M.setAttribute("type","text"),M.style.padding="4px",M.style.width="100%",M.style.boxSizing="border-box",M.style.cursor="default",M.readOnly=0!=this.currentCell,n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var A in n.elementAttributes)"+"==A.charAt(0)?(A=A.slice(1),M.setAttribute(A,M.getAttribute(A)+n.elementAttributes["+"+A])):M.setAttribute(A,n.elementAttributes[A]);return M.value=void 0!==C||null===C?C:"",M.addEventListener("keydown",function(e){var t;switch(e.keyCode){case 38:t=D.indexOf(k),("editor"==x||"hybrid"==x&&t)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t>0&&l(D[t-1],!T));break;case 40:t=D.indexOf(k),("editor"==x||"hybrid"==x&&t<D.length-1)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t<D.length-1&&(-1==t?l(D[0],!T):l(D[t+1],!T)));break;case 37:case 39:e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault();break;case 13:T?h():p();break;case 27:g()}}),M.addEventListener("blur",function(e){z&&(T?m():g())}),M.addEventListener("focus",function(e){b()}),L=document.createElement("div"),L.classList.add("tabulator-edit-select-list"),t(function(){M.style.height="100%",M.focus({preventScroll:!0})}),M},autocomplete:function(e,t,o,i,n){function s(){!0===n.values?S=r():"string"==typeof n.values&&(S=r(n.values))}function r(t){var o,i={},s=w.table.getData();return o=t?w.table.columnManager.getColumnByField(t):e.getColumn()._getSelf(),o?(s.forEach(function(e){var t=o.getFieldValue(e);null!==t&&void 0!==t&&""!==t&&(i[t]=!0)}),i=n.sortValuesList?"asc"==n.sortValuesList?Object.keys(i).sort():Object.keys(i).sort().reverse():Object.keys(i)):console.warn("unable to find matching column to create autocomplete lookup list:",t),i}function a(e,t){var o,i,s=[];o=S||(n.values||[]),n.searchFunc?(s=n.searchFunc(e,o),s instanceof Promise?(l(void 0!==n.searchingPlaceholder?n.searchingPlaceholder:"Searching..."),s.then(function(e){h(c(e),t)}).catch(function(e){console.err("error in autocomplete search promise:",e)})):h(c(s),t)):(i=c(o),""===e?n.showListOnEmpty&&(s=i):i.forEach(function(t){null===t.value&&void 0===t.value||(String(t.value).toLowerCase().indexOf(String(e).toLowerCase())>-1||String(t.title).toLowerCase().indexOf(String(e).toLowerCase())>-1)&&s.push(t)}),h(s,t))}function l(e){var t=document.createElement("div");u(),!1!==e&&(t.classList.add("tabulator-edit-select-list-notice"),t.tabIndex=0,e instanceof Node?t.appendChild(e):t.innerHTML=e,L.appendChild(t))}function c(e){var t=[];if(Array.isArray(e))e.forEach(function(e){var o={};"object"===(void 0===e?"undefined":_typeof(e))?(o.title=n.listItemFormatter?n.listItemFormatter(e.value,e.label):e.label,o.value=e.value):(o.title=n.listItemFormatter?n.listItemFormatter(e,e):e,o.value=e),t.push(o)});else for(var o in e){var i={title:n.listItemFormatter?n.listItemFormatter(o,e[o]):e[o],value:o};t.push(i)}return t}function u(){for(;L.firstChild;)L.removeChild(L.firstChild)}function h(e,t){e.length?p(e,t):n.emptyPlaceholder&&l(n.emptyPlaceholder)}function p(e,t){var o=!1;u(),T=e,T.forEach(function(e){var i=e.element;i||(i=document.createElement("div"),i.classList.add("tabulator-edit-select-list-item"),i.tabIndex=0,i.innerHTML=e.title,i.addEventListener("click",function(t){g(e),m()}),i.addEventListener("mousedown",function(e){k=!1,setTimeout(function(){k=!0},10)}),e.element=i,t&&e.value==C&&(M.value=e.title,e.element.classList.add("active"),o=!0),e===D&&(e.element.classList.add("active"),o=!0)),L.appendChild(i)}),o||g(!1)}function m(){b(),D?C!==D.value?(C=D.value,M.value=D.title,o(D.value)):i():n.freetext?(C=M.value,o(M.value)):n.allowEmpty&&""===M.value?(C=M.value,o(M.value)):i()}function f(){if(!L.parentNode){for(;L.firstChild;)L.removeChild(L.firstChild);var e=d.prototype.helpers.elOffset(E);L.style.minWidth=E.offsetWidth+"px",L.style.top=e.top+E.offsetHeight+"px",L.style.left=e.left+"px",document.body.appendChild(L)}}function g(e,t){D&&D.element&&D.element.classList.remove("active"),D=e,e&&e.element&&e.element.classList.add("active")}function b(){L.parentNode&&L.parentNode.removeChild(L),y()}function v(){b(),i()}function y(){w.table.rowManager.element.removeEventListener("scroll",v)}var w=this,E=e.getElement(),C=e.getValue(),x=n.verticalNavigation||"editor",R=void 0!==C||null===C?C:void 0!==n.defaultValue?n.defaultValue:"",M=document.createElement("input"),L=document.createElement("div"),T=[],D=!1,k=!0,S=!1;if(this.table.rowManager.element.addEventListener("scroll",v),M.setAttribute("type","search"),M.style.padding="4px",M.style.width="100%",M.style.boxSizing="border-box",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var H in n.elementAttributes)"+"==H.charAt(0)?(H=H.slice(1),M.setAttribute(H,M.getAttribute(H)+n.elementAttributes["+"+H])):M.setAttribute(H,n.elementAttributes[H]);return L.classList.add("tabulator-edit-select-list"),L.addEventListener("mousedown",function(e){k=!1,setTimeout(function(){k=!0},10)}),M.addEventListener("keydown",function(e){var t;switch(e.keyCode){case 38:t=T.indexOf(D),("editor"==x||"hybrid"==x&&t)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),g(t>0?T[t-1]:!1));break;case 40:t=T.indexOf(D),("editor"==x||"hybrid"==x&&t<T.length-1)&&(e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t<T.length-1&&g(-1==t?T[0]:T[t+1]));break;case 37:case 39:e.stopImmediatePropagation(),e.stopPropagation();break;case 13:m();break;case 27:v();break;case 36:case 35:e.stopImmediatePropagation()}}),M.addEventListener("keyup",function(e){switch(e.keyCode){case 38:case 37:case 39:case 40:case 13:case 27:break;default:a(M.value)}}),M.addEventListener("search",function(e){a(M.value)}),M.addEventListener("blur",function(e){k&&m()}),M.addEventListener("focus",function(e){var t=R;s(),f(),M.value=t,a(t,!0)}),t(function(){M.style.height="100%",M.focus({preventScroll:!0})}),n.mask&&this.table.modules.edit.maskInput(M,n),M},star:function(e,t,o,i,n){function s(e){h.forEach(function(t,o){o<e?("ie"==a.table.browser?t.setAttribute("class","tabulator-star-active"):t.classList.replace("tabulator-star-inactive","tabulator-star-active"),t.innerHTML='<polygon fill="#488CE9" stroke="#014AAE" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>'):("ie"==a.table.browser?t.setAttribute("class","tabulator-star-inactive"):t.classList.replace("tabulator-star-active","tabulator-star-inactive"),t.innerHTML='<polygon fill="#010155" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>')})}function r(e){c=e,s(e)}var a=this,l=e.getElement(),c=e.getValue(),u=l.getElementsByTagName("svg").length||5,d=l.getElementsByTagName("svg")[0]?l.getElementsByTagName("svg")[0].getAttribute("width"):14,h=[],p=document.createElement("div"),m=document.createElementNS("http://www.w3.org/2000/svg","svg");if(l.style.whiteSpace="nowrap",l.style.overflow="hidden",l.style.textOverflow="ellipsis",p.style.verticalAlign="middle",p.style.display="inline-block",p.style.padding="4px",m.setAttribute("width",d),m.setAttribute("height",d),m.setAttribute("viewBox","0 0 512 512"),m.setAttribute("xml:space","preserve"),m.style.padding="0 1px",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var f in n.elementAttributes)"+"==f.charAt(0)?(f=f.slice(1),p.setAttribute(f,p.getAttribute(f)+n.elementAttributes["+"+f])):p.setAttribute(f,n.elementAttributes[f]);for(var g=1;g<=u;g++)!function(e){var t=document.createElement("span"),i=m.cloneNode(!0);h.push(i),t.addEventListener("mouseenter",function(t){t.stopPropagation(),t.stopImmediatePropagation(),s(e)}),t.addEventListener("mousemove",function(e){e.stopPropagation(),e.stopImmediatePropagation()}),t.addEventListener("click",function(t){t.stopPropagation(),t.stopImmediatePropagation(),o(e),l.blur()}),t.appendChild(i),p.appendChild(t)}(g);return c=Math.min(parseInt(c),u),s(c),p.addEventListener("mousemove",function(e){s(0)}),p.addEventListener("click",function(e){o(0)}),l.addEventListener("blur",function(e){i()}),l.addEventListener("keydown",function(e){switch(e.keyCode){case 39:r(c+1);break;case 37:r(c-1);break;case 13:o(c);break;case 27:i()}}),p},progress:function(e,t,o,i,n){function s(){var e=d*Math.round(m.offsetWidth/(l.clientWidth/100))+u;o(e),l.setAttribute("aria-valuenow",e),l.setAttribute("aria-label",h)}var r,a,l=e.getElement(),c=void 0===n.max?l.getElementsByTagName("div")[0].getAttribute("max")||100:n.max,u=void 0===n.min?l.getElementsByTagName("div")[0].getAttribute("min")||0:n.min,d=(c-u)/100,h=e.getValue()||0,p=document.createElement("div"),m=document.createElement("div");if(p.style.position="absolute",p.style.right="0",p.style.top="0",p.style.bottom="0",p.style.width="5px",p.classList.add("tabulator-progress-handle"),m.style.display="inline-block",
-m.style.position="relative",m.style.height="100%",m.style.backgroundColor="#488CE9",m.style.maxWidth="100%",m.style.minWidth="0%",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var f in n.elementAttributes)"+"==f.charAt(0)?(f=f.slice(1),m.setAttribute(f,m.getAttribute(f)+n.elementAttributes["+"+f])):m.setAttribute(f,n.elementAttributes[f]);return l.style.padding="4px 4px",h=Math.min(parseFloat(h),c),h=Math.max(parseFloat(h),u),h=Math.round((h-u)/d),m.style.width=h+"%",l.setAttribute("aria-valuemin",u),l.setAttribute("aria-valuemax",c),m.appendChild(p),p.addEventListener("mousedown",function(e){r=e.screenX,a=m.offsetWidth}),p.addEventListener("mouseover",function(){p.style.cursor="ew-resize"}),l.addEventListener("mousemove",function(e){r&&(m.style.width=a+e.screenX-r+"px")}),l.addEventListener("mouseup",function(e){r&&(e.stopPropagation(),e.stopImmediatePropagation(),r=!1,a=!1,s())}),l.addEventListener("keydown",function(e){switch(e.keyCode){case 39:e.preventDefault(),m.style.width=m.clientWidth+l.clientWidth/100+"px";break;case 37:e.preventDefault(),m.style.width=m.clientWidth-l.clientWidth/100+"px";break;case 9:case 13:s();break;case 27:i()}}),l.addEventListener("blur",function(){i()}),m},tickCross:function(e,t,o,i,n){function s(e){return l?e?u?c:a.checked:a.checked&&!u?(a.checked=!1,a.indeterminate=!0,u=!0,c):(u=!1,a.checked):a.checked}var r=e.getValue(),a=document.createElement("input"),l=n.tristate,c=void 0===n.indeterminateValue?null:n.indeterminateValue,u=!1;if(a.setAttribute("type","checkbox"),a.style.marginTop="5px",a.style.boxSizing="border-box",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var d in n.elementAttributes)"+"==d.charAt(0)?(d=d.slice(1),a.setAttribute(d,a.getAttribute(d)+n.elementAttributes["+"+d])):a.setAttribute(d,n.elementAttributes[d]);return a.value=r,!l||void 0!==r&&r!==c&&""!==r||(u=!0,a.indeterminate=!0),"firefox"!=this.table.browser&&t(function(){a.focus({preventScroll:!0})}),a.checked=!0===r||"true"===r||"True"===r||1===r,a.addEventListener("change",function(e){o(s())}),a.addEventListener("blur",function(e){o(s(!0))}),a.addEventListener("keydown",function(e){13==e.keyCode&&o(s()),27==e.keyCode&&i()}),a}},d.prototype.registerModule("edit",E);var C=function(e,t,o,i){this.type=e,this.columns=t,this.component=o||!1,this.indent=i||0},x=function(e,t,o,i,n){this.value=e,this.component=t||!1,this.width=o,this.height=i,this.depth=n},R=function(e){this.table=e,this.config={},this.cloneTableStyle=!0,this.colVisProp=""};R.prototype.generateExportList=function(e,t,o,i){this.cloneTableStyle=t,this.config=e||{},this.colVisProp=i;var n=!1!==this.config.columnHeaders?this.headersToExportRows(this.generateColumnGroupHeaders()):[],s=this.bodyToExportRows(this.rowLookup(o));return n.concat(s)},R.prototype.genereateTable=function(e,t,o,i){var n=this.generateExportList(e,t,o,i);return this.genereateTableElement(n)},R.prototype.rowLookup=function(e){var t=this,o=[];if("function"==typeof e)e.call(this.table).forEach(function(e){(e=t.table.rowManager.findRow(e))&&o.push(e)});else switch(e){case!0:case"visible":o=this.table.rowManager.getVisibleRows(!0);break;case"all":o=this.table.rowManager.rows;break;case"selected":o=this.table.modules.selectRow.selectedRows;break;case"active":default:o=this.table.rowManager.getDisplayRows()}return Object.assign([],o)},R.prototype.generateColumnGroupHeaders=function(){var e=this,t=[];return(!1!==this.config.columnGroups?this.table.columnManager.columns:this.table.columnManager.columnsByIndex).forEach(function(o){var i=e.processColumnGroup(o);i&&t.push(i)}),t},R.prototype.processColumnGroup=function(e){var t=this,o=e.columns,i=0,n=e.definition["title"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))]||e.definition.title,s={title:n,column:e,depth:1};if(o.length){if(s.subGroups=[],s.width=0,o.forEach(function(e){var o=t.processColumnGroup(e);o&&(s.width+=o.width,s.subGroups.push(o),o.depth>i&&(i=o.depth))}),s.depth+=i,!s.width)return!1}else{if(!this.columnVisCheck(e))return!1;s.width=1}return s},R.prototype.columnVisCheck=function(e){return!1!==e.definition[this.colVisProp]&&(e.visible||!e.visible&&e.definition[this.colVisProp])},R.prototype.headersToExportRows=function(e){function t(e,n){var s=i-n;if(void 0===o[n]&&(o[n]=[]),e.height=e.subGroups?1:s-e.depth+1,o[n].push(e),e.height>1)for(var r=1;r<e.height;r++)void 0===o[n+r]&&(o[n+r]=[]),o[n+r].push(!1);if(e.width>1)for(var a=1;a<e.width;a++)o[n].push(!1);e.subGroups&&e.subGroups.forEach(function(e){t(e,n+1)})}var o=[],i=0,n=[];return e.forEach(function(e){e.depth>i&&(i=e.depth)}),e.forEach(function(e){t(e,0)}),o.forEach(function(e){var t=[];e.forEach(function(e){e?t.push(new x(e.title,e.column.getComponent(),e.width,e.height,e.depth)):t.push(null)}),n.push(new C("header",t))}),n},R.prototype.bodyToExportRows=function(e){var t=this,o=[],i=[];return this.table.columnManager.columnsByIndex.forEach(function(e){t.columnVisCheck(e)&&o.push(e.getComponent())}),!1!==this.config.columnCalcs&&this.table.modExists("columnCalcs")&&(this.table.modules.columnCalcs.topInitialized&&e.unshift(this.table.modules.columnCalcs.topRow),this.table.modules.columnCalcs.botInitialized&&e.push(this.table.modules.columnCalcs.botRow)),e=e.filter(function(e){switch(e.type){case"group":return!1!==t.config.rowGroups;case"calc":return!1!==t.config.columnCalcs;case"row":return!(t.table.options.dataTree&&!1===t.config.dataTree&&e.modules.dataTree.parent)}return!0}),e.forEach(function(e,n){var s=e.getData(t.colVisProp),r=[],a=0;switch(e.type){case"group":a=e.level,r.push(new x(e.key,e.getComponent(),o.length,1));break;case"calc":case"row":o.forEach(function(e){r.push(new x(e._column.getFieldValue(s),e,1,1))}),t.table.options.dataTree&&!1!==t.config.dataTree&&(a=e.modules.dataTree.index)}i.push(new C(e.type,r,e.getComponent(),a))}),i},R.prototype.genereateTableElement=function(e){var t=this,o=document.createElement("table"),i=document.createElement("thead"),n=document.createElement("tbody"),s=this.lookupTableStyles(),r=this.table.options["rowFormatter"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))],a={};return a.rowFormatter=null!==r?r:this.table.options.rowFormatter,this.table.options.dataTree&&!1!==this.config.dataTree&&this.table.modExists("columnCalcs")&&(a.treeElementField=this.table.modules.dataTree.elementField),a.groupHeader=this.table.options["groupHeader"+(this.colVisProp.charAt(0).toUpperCase()+this.colVisProp.slice(1))],a.groupHeader&&!Array.isArray(a.groupHeader)&&(a.groupHeader=[a.groupHeader]),o.classList.add("tabulator-print-table"),this.mapElementStyles(this.table.columnManager.getHeadersElement(),i,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),e.length>1e3&&console.warn("It may take a long time to render an HTML table with more than 1000 rows"),e.forEach(function(e,o){switch(e.type){case"header":i.appendChild(t.genereateHeaderElement(e,a,s));break;case"group":n.appendChild(t.genereateGroupElement(e,a,s));break;case"calc":n.appendChild(t.genereateCalcElement(e,a,s));break;case"row":var r=t.genereateRowElement(e,a,s);t.mapElementStyles(o%2&&s.evenRow?s.evenRow:s.oddRow,r,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),n.appendChild(r)}}),i.innerHTML&&o.appendChild(i),o.appendChild(n),this.mapElementStyles(this.table.element,o,["border-top","border-left","border-right","border-bottom"]),o},R.prototype.lookupTableStyles=function(){var e={};return this.cloneTableStyle&&window.getComputedStyle&&(e.oddRow=this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)"),e.evenRow=this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)"),e.calcRow=this.table.element.querySelector(".tabulator-row.tabulator-calcs"),e.firstRow=this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)"),e.firstGroup=this.table.element.getElementsByClassName("tabulator-group")[0],e.firstRow&&(e.styleCells=e.firstRow.getElementsByClassName("tabulator-cell"),e.firstCell=e.styleCells[0],e.lastCell=e.styleCells[e.styleCells.length-1])),e},R.prototype.genereateHeaderElement=function(e,t,o){var i=this,n=document.createElement("tr");return e.columns.forEach(function(e){if(e){var t=document.createElement("th"),o=e.component._column.definition.cssClass?e.component._column.definition.cssClass.split(" "):[];t.colSpan=e.width,t.rowSpan=e.height,t.innerHTML=e.value,i.cloneTableStyle&&(t.style.boxSizing="border-box"),o.forEach(function(e){t.classList.add(e)}),i.mapElementStyles(e.component.getElement(),t,["text-align","border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),i.mapElementStyles(e.component._column.contentElement,t,["padding-top","padding-left","padding-right","padding-bottom"]),e.component._column.visible?i.mapElementStyles(e.component.getElement(),t,["width"]):e.component._column.definition.width&&(t.style.width=e.component._column.definition.width+"px"),e.component._column.parent&&i.mapElementStyles(e.component._column.parent.groupElement,t,["border-top"]),n.appendChild(t)}}),n},R.prototype.genereateGroupElement=function(e,t,o){var i=document.createElement("tr"),n=document.createElement("td"),s=e.columns[0];return i.classList.add("tabulator-print-table-row"),t.groupHeader&&t.groupHeader[e.indent]?s.value=t.groupHeader[e.indent](s.value,e.component._group.getRowCount(),e.component._group.getData(),e.component):!1===t.groupHeader?s.value=s.value:s.value=e.component._group.generator(s.value,e.component._group.getRowCount(),e.component._group.getData(),e.component),n.colSpan=s.width,n.innerHTML=s.value,i.classList.add("tabulator-print-table-group"),i.classList.add("tabulator-group-level-"+e.indent),s.component.getVisibility()&&i.classList.add("tabulator-group-visible"),this.mapElementStyles(o.firstGroup,i,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),this.mapElementStyles(o.firstGroup,n,["padding-top","padding-left","padding-right","padding-bottom"]),i.appendChild(n),i},R.prototype.genereateCalcElement=function(e,t,o){var i=this.genereateRowElement(e,t,o);return i.classList.add("tabulator-print-table-calcs"),this.mapElementStyles(o.calcRow,i,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),i},R.prototype.genereateRowElement=function(e,t,o){var n=this,s=document.createElement("tr");return s.classList.add("tabulator-print-table-row"),e.columns.forEach(function(r){if(r){var a=document.createElement("td"),l=r.component._column,c=r.value,u={modules:{},getValue:function(){return c},getField:function(){return l.definition.field},getElement:function(){return a},getColumn:function(){return l.getComponent()},getData:function(){return rowData},getRow:function(){return e.getComponent()},getComponent:function(){return u},column:l};if((l.definition.cssClass?l.definition.cssClass.split(" "):[]).forEach(function(e){a.classList.add(e)}),n.table.modExists("format")&&!1!==n.config.formatCells)c=n.table.modules.format.formatExportValue(u,n.colVisProp);else switch(void 0===c?"undefined":_typeof(c)){case"object":c=JSON.stringify(c);break;case"undefined":case"null":c="";break;default:c=c}if(c instanceof Node?a.appendChild(c):a.innerHTML=c,o.firstCell&&(n.mapElementStyles(o.firstCell,a,["padding-top","padding-left","padding-right","padding-bottom","border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size"]),l.definition.align&&(a.style.textAlign=l.definition.align)),n.table.options.dataTree&&!1!==n.config.dataTree&&(t.treeElementField&&t.treeElementField==l.field||!t.treeElementField&&0==i)&&(e.component._row.modules.dataTree.controlEl&&a.insertBefore(e.component._row.modules.dataTree.controlEl.cloneNode(!0),a.firstChild),e.component._row.modules.dataTree.branchEl&&a.insertBefore(e.component._row.modules.dataTree.branchEl.cloneNode(!0),a.firstChild)),s.appendChild(a),u.modules.format&&u.modules.format.renderedCallback&&u.modules.format.renderedCallback(),t.rowFormatter&&!1!==n.config.formatCells){var d=e.getComponent();d.getElement=function(){return s},t.rowFormatter(d)}}}),s},R.prototype.genereateHTMLTable=function(e){var t=document.createElement("div");return t.appendChild(this.genereateTableElement(e)),t.innerHTML},R.prototype.getHtml=function(e,t,o,i){var n=this.generateExportList(o||this.table.options.htmlOutputConfig,t,e,i||"htmlOutput");return this.genereateHTMLTable(n)},R.prototype.mapElementStyles=function(e,t,o){if(this.cloneTableStyle&&e&&t){var i={"background-color":"backgroundColor",color:"fontColor",width:"width","font-weight":"fontWeight","font-family":"fontFamily","font-size":"fontSize","text-align":"textAlign","border-top":"borderTop","border-left":"borderLeft","border-right":"borderRight","border-bottom":"borderBottom","padding-top":"paddingTop","padding-left":"paddingLeft","padding-right":"paddingRight","padding-bottom":"paddingBottom"};if(window.getComputedStyle){var n=window.getComputedStyle(e);o.forEach(function(e){t.style[i[e]]=n.getPropertyValue(e)})}}},d.prototype.registerModule("export",R);var M=function(e){this.table=e,this.filterList=[],this.headerFilters={},this.headerFilterColumns=[],this.prevHeaderFilterChangeCheck="",this.prevHeaderFilterChangeCheck="{}",this.changed=!1};M.prototype.initializeColumn=function(e,t){function o(t){var o,r="input"==e.modules.filter.tagType&&"text"==e.modules.filter.attrType||"textarea"==e.modules.filter.tagType?"partial":"match",a="",l="";if(void 0===e.modules.filter.prevSuccess||e.modules.filter.prevSuccess!==t){if(e.modules.filter.prevSuccess=t,e.modules.filter.emptyFunc(t))delete n.headerFilters[s];else{switch(e.modules.filter.value=t,_typeof(e.definition.headerFilterFunc)){case"string":n.filters[e.definition.headerFilterFunc]?(a=e.definition.headerFilterFunc,o=function(o){var i=e.definition.headerFilterFuncParams||{},s=e.getFieldValue(o);return i="function"==typeof i?i(t,s,o):i,n.filters[e.definition.headerFilterFunc](t,s,o,i)}):console.warn("Header Filter Error - Matching filter function not found: ",e.definition.headerFilterFunc);break;case"function":o=function(o){var i=e.definition.headerFilterFuncParams||{},n=e.getFieldValue(o);return i="function"==typeof i?i(t,n,o):i,e.definition.headerFilterFunc(t,n,o,i)},a=o}if(!o)switch(r){case"partial":o=function(o){var i=e.getFieldValue(o);return void 0!==i&&null!==i&&String(i).toLowerCase().indexOf(String(t).toLowerCase())>-1},a="like";break;default:o=function(o){return e.getFieldValue(o)==t},a="="}n.headerFilters[s]={value:t,func:o,type:a,params:i||{}}}l=JSON.stringify(n.headerFilters),n.prevHeaderFilterChangeCheck!==l&&(n.prevHeaderFilterChangeCheck=l,n.changed=!0,n.table.rowManager.filterRefresh())}return!0}var i,n=this,s=e.getField();e.modules.filter={success:o,attrType:!1,tagType:!1,emptyFunc:!1},this.generateHeaderFilterElement(e)},M.prototype.generateHeaderFilterElement=function(e,t,o){function i(){}var n,s,r,a,l,c,u,d=this,h=this,p=e.modules.filter.success,m=e.getField();if(e.modules.filter.headerElement&&e.modules.filter.headerElement.parentNode&&e.contentElement.removeChild(e.modules.filter.headerElement.parentNode),m){switch(e.modules.filter.emptyFunc=e.definition.headerFilterEmptyCheck||function(e){return!e&&"0"!==e},n=document.createElement("div"),n.classList.add("tabulator-header-filter"),_typeof(e.definition.headerFilter)){case"string":h.table.modules.edit.editors[e.definition.headerFilter]?(s=h.table.modules.edit.editors[e.definition.headerFilter],"tick"!==e.definition.headerFilter&&"tickCross"!==e.definition.headerFilter||e.definition.headerFilterEmptyCheck||(e.modules.filter.emptyFunc=function(e){return!0!==e&&!1!==e})):console.warn("Filter Error - Cannot build header filter, No such editor found: ",e.definition.editor);break;case"function":s=e.definition.headerFilter;break;case"boolean":e.modules.edit&&e.modules.edit.editor?s=e.modules.edit.editor:e.definition.formatter&&h.table.modules.edit.editors[e.definition.formatter]?(s=h.table.modules.edit.editors[e.definition.formatter],"tick"!==e.definition.formatter&&"tickCross"!==e.definition.formatter||e.definition.headerFilterEmptyCheck||(e.modules.filter.emptyFunc=function(e){return!0!==e&&!1!==e})):s=h.table.modules.edit.editors.input}if(s){if(a={getValue:function(){return void 0!==t?t:""},getField:function(){return e.definition.field},getElement:function(){return n},getColumn:function(){return e.getComponent()},getRow:function(){return{normalizeHeight:function(){}}}},u=e.definition.headerFilterParams||{},u="function"==typeof u?u.call(h.table):u,!(r=s.call(this.table.modules.edit,a,function(){},p,i,u)))return void console.warn("Filter Error - Cannot add filter to "+m+" column, editor returned a value of false");if(!(r instanceof Node))return void console.warn("Filter Error - Cannot add filter to "+m+" column, editor should return an instance of Node, the editor returned:",r);m?h.table.modules.localize.bind("headerFilters|columns|"+e.definition.field,function(e){r.setAttribute("placeholder",void 0!==e&&e?e:h.table.modules.localize.getText("headerFilters|default"))}):h.table.modules.localize.bind("headerFilters|default",function(e){r.setAttribute("placeholder",void 0!==h.column.definition.headerFilterPlaceholder&&h.column.definition.headerFilterPlaceholder?h.column.definition.headerFilterPlaceholder:e)}),r.addEventListener("click",function(e){e.stopPropagation(),r.focus()}),r.addEventListener("focus",function(e){var t=d.table.columnManager.element.scrollLeft;t!==d.table.rowManager.element.scrollLeft&&(d.table.rowManager.scrollHorizontal(t),d.table.columnManager.scrollHorizontal(t))}),l=!1,c=function(e){l&&clearTimeout(l),l=setTimeout(function(){p(r.value)},h.table.options.headerFilterLiveFilterDelay)},e.modules.filter.headerElement=r,e.modules.filter.attrType=r.hasAttribute("type")?r.getAttribute("type").toLowerCase():"",e.modules.filter.tagType=r.tagName.toLowerCase(),!1!==e.definition.headerFilterLiveFilter&&("autocomplete"!==e.definition.headerFilter&&"tickCross"!==e.definition.headerFilter&&("autocomplete"!==e.definition.editor&&"tickCross"!==e.definition.editor||!0!==e.definition.headerFilter)&&(r.addEventListener("keyup",c),r.addEventListener("search",c),"number"==e.modules.filter.attrType&&r.addEventListener("change",function(e){p(r.value)}),"text"==e.modules.filter.attrType&&"ie"!==this.table.browser&&r.setAttribute("type","search")),"input"!=e.modules.filter.tagType&&"select"!=e.modules.filter.tagType&&"textarea"!=e.modules.filter.tagType||r.addEventListener("mousedown",function(e){e.stopPropagation()})),n.appendChild(r),e.contentElement.appendChild(n),o||h.headerFilterColumns.push(e)}}else console.warn("Filter Error - Cannot add header filter, column has no field set:",e.definition.title)},M.prototype.hideHeaderFilterElements=function(){this.headerFilterColumns.forEach(function(e){e.modules.filter&&e.modules.filter.headerElement&&(e.modules.filter.headerElement.style.display="none")})},M.prototype.showHeaderFilterElements=function(){this.headerFilterColumns.forEach(function(e){e.modules.filter&&e.modules.filter.headerElement&&(e.modules.filter.headerElement.style.display="")})},M.prototype.setHeaderFilterFocus=function(e){e.modules.filter&&e.modules.filter.headerElement?e.modules.filter.headerElement.focus():console.warn("Column Filter Focus Error - No header filter set on column:",e.getField())},M.prototype.getHeaderFilterValue=function(e){if(e.modules.filter&&e.modules.filter.headerElement)return e.modules.filter.headerElement.value;console.warn("Column Filter Error - No header filter set on column:",e.getField())},M.prototype.setHeaderFilterValue=function(e,t){e&&(e.modules.filter&&e.modules.filter.headerElement?(this.generateHeaderFilterElement(e,t,!0),e.modules.filter.success(t)):console.warn("Column Filter Error - No header filter set on column:",e.getField()))},M.prototype.reloadHeaderFilter=function(e){e&&(e.modules.filter&&e.modules.filter.headerElement?this.generateHeaderFilterElement(e,e.modules.filter.value,!0):console.warn("Column Filter Error - No header filter set on column:",e.getField()))},M.prototype.hasChanged=function(){var e=this.changed;return this.changed=!1,e},M.prototype.setFilter=function(e,t,o,i){var n=this;n.filterList=[],Array.isArray(e)||(e=[{field:e,type:t,value:o,params:i}]),n.addFilter(e)},M.prototype.addFilter=function(e,t,o,i){var n=this;Array.isArray(e)||(e=[{field:e,type:t,value:o,params:i}]),e.forEach(function(e){(e=n.findFilter(e))&&(n.filterList.push(e),n.changed=!0)}),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.filter&&this.table.modules.persistence.save("filter")},M.prototype.findFilter=function(e){var t,o=this;if(Array.isArray(e))return this.findSubFilters(e);var i=!1;return"function"==typeof e.field?i=function(t){return e.field(t,e.type||{})}:o.filters[e.type]?(t=o.table.columnManager.getColumnByField(e.field),i=t?function(i){return o.filters[e.type](e.value,t.getFieldValue(i),i,e.params||{})}:function(t){return o.filters[e.type](e.value,t[e.field],t,e.params||{})}):console.warn("Filter Error - No such filter type found, ignoring: ",e.type),e.func=i,!!e.func&&e},M.prototype.findSubFilters=function(e){var t=this,o=[];return e.forEach(function(e){(e=t.findFilter(e))&&o.push(e)}),!!o.length&&o},M.prototype.getFilters=function(e,t){var o=[];return e&&(o=this.getHeaderFilters()),t&&o.forEach(function(e){"function"==typeof e.type&&(e.type="function")}),o=o.concat(this.filtersToArray(this.filterList,t))},M.prototype.filtersToArray=function(e,t){var o=this,i=[];return e.forEach(function(e){var n;Array.isArray(e)?i.push(o.filtersToArray(e,t)):(n={field:e.field,type:e.type,value:e.value},t&&"function"==typeof n.type&&(n.type="function"),i.push(n))}),i},M.prototype.getHeaderFilters=function(){var e=[];for(var t in this.headerFilters)e.push({field:t,type:this.headerFilters[t].type,value:this.headerFilters[t].value});return e},M.prototype.removeFilter=function(e,t,o){var i=this;Array.isArray(e)||(e=[{field:e,type:t,value:o}]),e.forEach(function(e){var t=-1;t="object"==_typeof(e.field)?i.filterList.findIndex(function(t){return e===t}):i.filterList.findIndex(function(t){return e.field===t.field&&e.type===t.type&&e.value===t.value}),t>-1?(i.filterList.splice(t,1),i.changed=!0):console.warn("Filter Error - No matching filter type found, ignoring: ",e.type)}),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.filter&&this.table.modules.persistence.save("filter")},M.prototype.clearFilter=function(e){this.filterList=[],e&&this.clearHeaderFilter(),this.changed=!0,this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.filter&&this.table.modules.persistence.save("filter")},M.prototype.clearHeaderFilter=function(){var e=this;this.headerFilters={},e.prevHeaderFilterChangeCheck="{}",this.headerFilterColumns.forEach(function(t){t.modules.filter.value=null,t.modules.filter.prevSuccess=void 0,e.reloadHeaderFilter(t)}),this.changed=!0},M.prototype.search=function(e,t,o,i){var n=this,s=[],r=[];return Array.isArray(t)||(t=[{field:t,type:o,value:i}]),t.forEach(function(e){(e=n.findFilter(e))&&r.push(e)}),this.table.rowManager.rows.forEach(function(t){var o=!0;r.forEach(function(e){n.filterRecurse(e,t.getData())||(o=!1)}),o&&s.push("data"===e?t.getData("data"):t.getComponent())}),s},M.prototype.filter=function(e,t){var o=this,i=[],n=[];return o.table.options.dataFiltering&&o.table.options.dataFiltering.call(o.table,o.getFilters()),o.table.options.ajaxFiltering||!o.filterList.length&&!Object.keys(o.headerFilters).length?i=e.slice(0):e.forEach(function(e){o.filterRow(e)&&i.push(e)}),o.table.options.dataFiltered&&(i.forEach(function(e){n.push(e.getComponent())}),o.table.options.dataFiltered.call(o.table,o.getFilters(),n)),i},M.prototype.filterRow=function(e,t){var o=this,i=!0,n=e.getData();o.filterList.forEach(function(e){o.filterRecurse(e,n)||(i=!1)});for(var s in o.headerFilters)o.headerFilters[s].func(n)||(i=!1);return i},M.prototype.filterRecurse=function(e,t){var o=this,i=!1;return Array.isArray(e)?e.forEach(function(e){o.filterRecurse(e,t)&&(i=!0)}):i=e.func(t),i},M.prototype.filters={"=":function(e,t,o,i){return t==e},"<":function(e,t,o,i){return t<e},"<=":function(e,t,o,i){return t<=e},">":function(e,t,o,i){return t>e},">=":function(e,t,o,i){return t>=e},"!=":function(e,t,o,i){return t!=e},regex:function(e,t,o,i){return"string"==typeof e&&(e=new RegExp(e)),e.test(t)},like:function(e,t,o,i){return null===e||void 0===e?t===e:void 0!==t&&null!==t&&String(t).toLowerCase().indexOf(e.toLowerCase())>-1},keywords:function(e,t,o,i){var n=e.toLowerCase().split(void 0===i.separator?" ":i.separator),s=String(null===t||void 0===t?"":t).toLowerCase(),r=[];return n.forEach(function(e){s.includes(e)&&r.push(!0)}),i.matchAll?r.length===n.length:!!r.length},starts:function(e,t,o,i){return null===e||void 0===e?t===e:void 0!==t&&null!==t&&String(t).toLowerCase().startsWith(e.toLowerCase())},ends:function(e,t,o,i){return null===e||void 0===e?t===e:void 0!==t&&null!==t&&String(t).toLowerCase().endsWith(e.toLowerCase())},in:function(e,t,o,i){return Array.isArray(e)?e.indexOf(t)>-1:(console.warn("Filter Error - filter value is not an array:",e),!1)}},d.prototype.registerModule("filter",M);var L=function(e){this.table=e};L.prototype.initializeColumn=function(e){e.modules.format=this.lookupFormatter(e,""),void 0!==e.definition.formatterPrint&&(e.modules.format.print=this.lookupFormatter(e,"Print")),void 0!==e.definition.formatterClipboard&&(e.modules.format.clipboard=this.lookupFormatter(e,"Clipboard")),void 0!==e.definition.formatterHtmlOutput&&(e.modules.format.htmlOutput=this.lookupFormatter(e,"HtmlOutput"))},L.prototype.lookupFormatter=function(e,t){var o={params:e.definition["formatter"+t+"Params"]||{}},i=e.definition["formatter"+t];switch(void 0===i?"undefined":_typeof(i)){case"string":"tick"===i&&(i="tickCross",void 0===o.params.crossElement&&(o.params.crossElement=!1),console.warn("DEPRECATION WARNING - the tick formatter has been deprecated, please use the tickCross formatter with the crossElement param set to false")),this.formatters[i]?o.formatter=this.formatters[i]:(console.warn("Formatter Error - No such formatter found: ",i),o.formatter=this.formatters.plaintext);break;case"function":o.formatter=i;break;default:o.formatter=this.formatters.plaintext}return o},L.prototype.cellRendered=function(e){e.modules.format&&e.modules.format.renderedCallback&&e.modules.format.renderedCallback()},L.prototype.formatValue=function(e){function t(t){e.modules.format||(e.modules.format={}),e.modules.format.renderedCallback=t}var o=e.getComponent(),i="function"==typeof e.column.modules.format.params?e.column.modules.format.params(o):e.column.modules.format.params;return e.column.modules.format.formatter.call(this,o,i,t)},L.prototype.formatExportValue=function(e,t){var o,i=e.column.modules.format[t];if(i){var n=function(t){e.modules.format||(e.modules.format={}),e.modules.format.renderedCallback=t};return o="function"==typeof i.params?i.params(component):i.params,i.formatter.call(this,e.getComponent(),o,n)}return this.formatValue(e)},L.prototype.sanitizeHTML=function(e){if(e){var t={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;","`":"&#x60;","=":"&#x3D;"};return String(e).replace(/[&<>"'`=\/]/g,function(e){return t[e]})}return e},L.prototype.emptyToSpace=function(e){return null===e||void 0===e||""===e?"&nbsp;":e},L.prototype.getFormatter=function(e){var e;switch(void 0===e?"undefined":_typeof(e)){case"string":this.formatters[e]?e=this.formatters[e]:(console.warn("Formatter Error - No such formatter found: ",e),e=this.formatters.plaintext);break;case"function":e=e;break;default:e=this.formatters.plaintext}return e},L.prototype.formatters={plaintext:function(e,t,o){return this.emptyToSpace(this.sanitizeHTML(e.getValue()))},html:function(e,t,o){return e.getValue()},textarea:function(e,t,o){return e.getElement().style.whiteSpace="pre-wrap",this.emptyToSpace(this.sanitizeHTML(e.getValue()))},money:function(e,t,o){var i,n,s,r,a=parseFloat(e.getValue()),l=t.decimal||".",c=t.thousand||",",u=t.symbol||"",d=!!t.symbolAfter,h=void 0!==t.precision?t.precision:2;if(isNaN(a))return this.emptyToSpace(this.sanitizeHTML(e.getValue()));for(i=!1!==h?a.toFixed(h):a,i=String(i).split("."),n=i[0],s=i.length>1?l+i[1]:"",r=/(\d+)(\d{3})/;r.test(n);)n=n.replace(r,"$1"+c+"$2");return d?n+s+u:u+n+s},link:function(e,t,o){var i,n=e.getValue(),s=t.urlPrefix||"",r=t.download,a=n,l=document.createElement("a");if(t.labelField&&(i=e.getData(),a=i[t.labelField]),t.label)switch(_typeof(t.label)){case"string":a=t.label;break;case"function":a=t.label(e)}if(a){if(t.urlField&&(i=e.getData(),n=i[t.urlField]),t.url)switch(_typeof(t.url)){case"string":n=t.url;break;case"function":n=t.url(e)}return l.setAttribute("href",s+n),t.target&&l.setAttribute("target",t.target),t.download&&(r="function"==typeof r?r(e):!0===r?"":r,l.setAttribute("download",r)),l.innerHTML=this.emptyToSpace(this.sanitizeHTML(a)),l}return"&nbsp;"},image:function(e,t,o){var i=document.createElement("img");switch(i.setAttribute("src",e.getValue()),_typeof(t.height)){case"number":i.style.height=t.height+"px";break;case"string":i.style.height=t.height}switch(_typeof(t.width)){case"number":i.style.width=t.width+"px";break;case"string":i.style.width=t.width}return i.addEventListener("load",function(){e.getRow().normalizeHeight()}),i},tickCross:function(e,t,o){var i=e.getValue(),n=e.getElement(),s=t.allowEmpty,r=t.allowTruthy,a=void 0!==t.tickElement?t.tickElement:'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34  c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351  l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07  l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>',l=void 0!==t.crossElement?t.crossElement:'<svg enable-background="new 0 0 24 24" height="14" width="14"  viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272  c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0  l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269  c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73  L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>';return r&&i||!0===i||"true"===i||"True"===i||1===i||"1"===i?(n.setAttribute("aria-checked",!0),a||""):!s||"null"!==i&&""!==i&&null!==i&&void 0!==i?(n.setAttribute("aria-checked",!1),l||""):(n.setAttribute("aria-checked","mixed"),"")},datetime:function(e,t,o){var i=t.inputFormat||"YYYY-MM-DD hh:mm:ss",n=t.outputFormat||"DD/MM/YYYY hh:mm:ss",s=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",r=e.getValue(),a=moment(r,i);return a.isValid()?t.timezone?a.tz(t.timezone).format(n):a.format(n):!0===s?r:"function"==typeof s?s(r):s},datetimediff:function(e,t,o){
-var i=t.inputFormat||"YYYY-MM-DD hh:mm:ss",n=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",s=void 0!==t.suffix&&t.suffix,r=void 0!==t.unit?t.unit:void 0,a=void 0!==t.humanize&&t.humanize,l=void 0!==t.date?t.date:moment(),c=e.getValue(),u=moment(c,i);return u.isValid()?a?moment.duration(u.diff(l)).humanize(s):u.diff(l,r)+(s?" "+s:""):!0===n?c:"function"==typeof n?n(c):n},lookup:function(e,t,o){var i=e.getValue();return void 0===t[i]?(console.warn("Missing display value for "+i),i):t[i]},star:function(e,t,o){var i=e.getValue(),n=e.getElement(),s=t&&t.stars?t.stars:5,r=document.createElement("span"),a=document.createElementNS("http://www.w3.org/2000/svg","svg");r.style.verticalAlign="middle",a.setAttribute("width","14"),a.setAttribute("height","14"),a.setAttribute("viewBox","0 0 512 512"),a.setAttribute("xml:space","preserve"),a.style.padding="0 1px",i=i&&!isNaN(i)?parseInt(i):0,i=Math.max(0,Math.min(i,s));for(var l=1;l<=s;l++){var c=a.cloneNode(!0);c.innerHTML=l<=i?'<polygon fill="#FFEA00" stroke="#C1AB60" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>':'<polygon fill="#D2D2D2" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>',r.appendChild(c)}return n.style.whiteSpace="nowrap",n.style.overflow="hidden",n.style.textOverflow="ellipsis",n.setAttribute("aria-label",i),r},traffic:function(e,t,o){var i,n,s=this.sanitizeHTML(e.getValue())||0,r=document.createElement("span"),a=t&&t.max?t.max:100,l=t&&t.min?t.min:0,c=t&&void 0!==t.color?t.color:["red","orange","green"],u="#666666";if(!isNaN(s)&&void 0!==e.getValue()){switch(r.classList.add("tabulator-traffic-light"),n=parseFloat(s)<=a?parseFloat(s):a,n=parseFloat(n)>=l?parseFloat(n):l,i=(a-l)/100,n=Math.round((n-l)/i),void 0===c?"undefined":_typeof(c)){case"string":u=c;break;case"function":u=c(s);break;case"object":if(Array.isArray(c)){var d=100/c.length,h=Math.floor(n/d);h=Math.min(h,c.length-1),h=Math.max(h,0),u=c[h];break}}return r.style.backgroundColor=u,r}},progress:function(e,t,o){var i,n,s,r,a,c=this.sanitizeHTML(e.getValue())||0,u=e.getElement(),d=t&&t.max?t.max:100,h=t&&t.min?t.min:0,p=t&&t.legendAlign?t.legendAlign:"center";switch(n=parseFloat(c)<=d?parseFloat(c):d,n=parseFloat(n)>=h?parseFloat(n):h,i=(d-h)/100,n=Math.round((n-h)/i),_typeof(t.color)){case"string":s=t.color;break;case"function":s=t.color(c);break;case"object":if(Array.isArray(t.color)){var m=100/t.color.length,f=Math.floor(n/m);f=Math.min(f,t.color.length-1),f=Math.max(f,0),s=t.color[f];break}default:s="#2DC214"}switch(_typeof(t.legend)){case"string":r=t.legend;break;case"function":r=t.legend(c);break;case"boolean":r=c;break;default:r=!1}switch(_typeof(t.legendColor)){case"string":a=t.legendColor;break;case"function":a=t.legendColor(c);break;case"object":if(Array.isArray(t.legendColor)){var m=100/t.legendColor.length,f=Math.floor(n/m);f=Math.min(f,t.legendColor.length-1),f=Math.max(f,0),a=t.legendColor[f]}break;default:a="#000"}u.style.minWidth="30px",u.style.position="relative",u.setAttribute("aria-label",n);var g=document.createElement("div");if(g.style.display="inline-block",g.style.position="relative",g.style.width=n+"%",g.style.backgroundColor=s,g.style.height="100%",g.setAttribute("data-max",d),g.setAttribute("data-min",h),r){var b=document.createElement("div");b.style.position="absolute",b.style.top="4px",b.style.left=0,b.style.textAlign=p,b.style.width="100%",b.style.color=a,b.innerHTML=r}return o(function(){if(!(e instanceof l)){var t=document.createElement("div");t.style.position="absolute",t.style.top="4px",t.style.bottom="4px",t.style.left="4px",t.style.right="4px",u.appendChild(t),u=t}u.appendChild(g),r&&u.appendChild(b)}),""},color:function(e,t,o){return e.getElement().style.backgroundColor=this.sanitizeHTML(e.getValue()),""},buttonTick:function(e,t,o){return'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34  c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351  l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07  l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>'},buttonCross:function(e,t,o){return'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272  c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0  l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269  c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73  L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>'},rownum:function(e,t,o){return this.table.rowManager.activeRows.indexOf(e.getRow()._getSelf())+1},handle:function(e,t,o){return e.getElement().classList.add("tabulator-row-handle"),"<div class='tabulator-row-handle-box'><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div></div>"},responsiveCollapse:function(e,t,o){function i(e){var t=s.element;s.open=e,t&&(s.open?(n.classList.add("open"),t.style.display=""):(n.classList.remove("open"),t.style.display="none"))}var n=document.createElement("div"),s=e.getRow()._row.modules.responsiveLayout;return n.classList.add("tabulator-responsive-collapse-toggle"),n.innerHTML="<span class='tabulator-responsive-collapse-toggle-open'>+</span><span class='tabulator-responsive-collapse-toggle-close'>-</span>",e.getElement().classList.add("tabulator-row-handle"),n.addEventListener("click",function(e){e.stopImmediatePropagation(),i(!s.open)}),i(s.open),n},rowSelection:function(e){var t=this,o=document.createElement("input");if(o.type="checkbox",this.table.modExists("selectRow",!0))if(o.addEventListener("click",function(e){e.stopPropagation()}),"function"==typeof e.getRow){var i=e.getRow();o.addEventListener("change",function(e){i.toggleSelect()}),o.checked=i.isSelected(),this.table.modules.selectRow.registerRowSelectCheckbox(i,o)}else o.addEventListener("change",function(e){t.table.modules.selectRow.selectedRows.length?t.table.deselectRow():t.table.selectRow()}),this.table.modules.selectRow.registerHeaderSelectCheckbox(o);return o}},d.prototype.registerModule("format",L);var T=function(e){this.table=e,this.leftColumns=[],this.rightColumns=[],this.leftMargin=0,this.rightMargin=0,this.rightPadding=0,this.initializationMode="left",this.active=!1,this.scrollEndTimer=!1};T.prototype.reset=function(){this.initializationMode="left",this.leftColumns=[],this.rightColumns=[],this.leftMargin=0,this.rightMargin=0,this.rightMargin=0,this.active=!1,this.table.columnManager.headersElement.style.marginLeft=0,this.table.columnManager.element.style.paddingRight=0},T.prototype.initializeColumn=function(e){var t={margin:0,edge:!1};e.isGroup||(this.frozenCheck(e)?(t.position=this.initializationMode,"left"==this.initializationMode?this.leftColumns.push(e):this.rightColumns.unshift(e),this.active=!0,e.modules.frozen=t):this.initializationMode="right")},T.prototype.frozenCheck=function(e){return e.parent.isGroup&&e.definition.frozen&&console.warn("Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups"),e.parent.isGroup?this.frozenCheck(e.parent):e.definition.frozen},T.prototype.scrollHorizontal=function(){var e,t=this;this.active&&(clearTimeout(this.scrollEndTimer),this.scrollEndTimer=setTimeout(function(){t.layout()},100),e=this.table.rowManager.getVisibleRows(),this.calcMargins(),this.layoutColumnPosition(),this.layoutCalcRows(),e.forEach(function(e){"row"===e.type&&t.layoutRow(e)}),this.table.rowManager.tableElement.style.marginRight=this.rightMargin)},T.prototype.calcMargins=function(){this.leftMargin=this._calcSpace(this.leftColumns,this.leftColumns.length)+"px",this.table.columnManager.headersElement.style.marginLeft=this.leftMargin,this.rightMargin=this._calcSpace(this.rightColumns,this.rightColumns.length)+"px",this.table.columnManager.element.style.paddingRight=this.rightMargin,this.rightPadding=this.table.rowManager.element.clientWidth+this.table.columnManager.scrollLeft},T.prototype.layoutCalcRows=function(){this.table.modExists("columnCalcs")&&(this.table.modules.columnCalcs.topInitialized&&this.table.modules.columnCalcs.topRow&&this.layoutRow(this.table.modules.columnCalcs.topRow),this.table.modules.columnCalcs.botInitialized&&this.table.modules.columnCalcs.botRow&&this.layoutRow(this.table.modules.columnCalcs.botRow))},T.prototype.layoutColumnPosition=function(e){var t=this,o=[];this.leftColumns.forEach(function(i,n){if(i.modules.frozen.margin=t._calcSpace(t.leftColumns,n)+t.table.columnManager.scrollLeft+"px",n==t.leftColumns.length-1?i.modules.frozen.edge=!0:i.modules.frozen.edge=!1,i.parent.isGroup){var s=t.getColGroupParentElement(i);o.includes(s)||(t.layoutElement(s,i),o.push(s)),i.modules.frozen.edge&&s.classList.add("tabulator-frozen-"+i.modules.frozen.position)}else t.layoutElement(i.getElement(),i);e&&i.cells.forEach(function(e){t.layoutElement(e.getElement(),i)})}),this.rightColumns.forEach(function(o,i){o.modules.frozen.margin=t.rightPadding-t._calcSpace(t.rightColumns,i+1)+"px",i==t.rightColumns.length-1?o.modules.frozen.edge=!0:o.modules.frozen.edge=!1,o.parent.isGroup?t.layoutElement(t.getColGroupParentElement(o),o):t.layoutElement(o.getElement(),o),e&&o.cells.forEach(function(e){t.layoutElement(e.getElement(),o)})})},T.prototype.getColGroupParentElement=function(e){return e.parent.isGroup?this.getColGroupParentElement(e.parent):e.getElement()},T.prototype.layout=function(){var e=this;e.active&&(this.calcMargins(),e.table.rowManager.getDisplayRows().forEach(function(t){"row"===t.type&&e.layoutRow(t)}),this.layoutCalcRows(),this.layoutColumnPosition(!0),this.table.rowManager.tableElement.style.marginRight=this.rightMargin)},T.prototype.layoutRow=function(e){var t=this;e.getElement().style.paddingLeft=this.leftMargin,this.leftColumns.forEach(function(o){var i=e.getCell(o);i&&t.layoutElement(i.getElement(),o)}),this.rightColumns.forEach(function(o){var i=e.getCell(o);i&&t.layoutElement(i.getElement(),o)})},T.prototype.layoutElement=function(e,t){t.modules.frozen&&(e.style.position="absolute",e.style.left=t.modules.frozen.margin,e.classList.add("tabulator-frozen"),t.modules.frozen.edge&&e.classList.add("tabulator-frozen-"+t.modules.frozen.position))},T.prototype._calcSpace=function(e,t){for(var o=0,i=0;i<t;i++)e[i].visible&&(o+=e[i].getWidth());return o},d.prototype.registerModule("frozenColumns",T);var D=function(e){this.table=e,this.topElement=document.createElement("div"),this.rows=[],this.displayIndex=0};D.prototype.initialize=function(){this.rows=[],this.topElement.classList.add("tabulator-frozen-rows-holder"),this.table.columnManager.getElement().insertBefore(this.topElement,this.table.columnManager.headersElement.nextSibling)},D.prototype.setDisplayIndex=function(e){this.displayIndex=e},D.prototype.getDisplayIndex=function(){return this.displayIndex},D.prototype.isFrozen=function(){return!!this.rows.length},D.prototype.getRows=function(e){var t=e.slice(0);return this.rows.forEach(function(e){var o=t.indexOf(e);o>-1&&t.splice(o,1)}),t},D.prototype.freezeRow=function(e){e.modules.frozen?console.warn("Freeze Error - Row is already frozen"):(e.modules.frozen=!0,this.topElement.appendChild(e.getElement()),e.initialize(),e.normalizeHeight(),this.table.rowManager.adjustTableSize(),this.rows.push(e),this.table.rowManager.refreshActiveData("display"),this.styleRows())},D.prototype.unfreezeRow=function(e){var t=this.rows.indexOf(e);if(e.modules.frozen){e.modules.frozen=!1;var o=e.getElement();o.parentNode.removeChild(o),this.table.rowManager.adjustTableSize(),this.rows.splice(t,1),this.table.rowManager.refreshActiveData("display"),this.rows.length&&this.styleRows()}else console.warn("Freeze Error - Row is already unfrozen")},D.prototype.styleRows=function(e){var t=this;this.rows.forEach(function(e,o){t.table.rowManager.styleRow(e,o)})},d.prototype.registerModule("frozenRows",D);var k=function(e){this._group=e,this.type="GroupComponent"};k.prototype.getKey=function(){return this._group.key},k.prototype.getField=function(){return this._group.field},k.prototype.getElement=function(){return this._group.element},k.prototype.getRows=function(){return this._group.getRows(!0)},k.prototype.getSubGroups=function(){return this._group.getSubGroups(!0)},k.prototype.getParentGroup=function(){return!!this._group.parent&&this._group.parent.getComponent()},k.prototype.getVisibility=function(){return console.warn("getVisibility function is deprecated, you should now use the isVisible function"),this._group.visible},k.prototype.isVisible=function(){return this._group.visible},k.prototype.show=function(){this._group.show()},k.prototype.hide=function(){this._group.hide()},k.prototype.toggle=function(){this._group.toggleVisibility()},k.prototype._getSelf=function(){return this._group},k.prototype.getTable=function(){return this._group.groupManager.table};var S=function(e,t,o,i,n,s,r){this.groupManager=e,this.parent=t,this.key=i,this.level=o,this.field=n,this.hasSubGroups=o<e.groupIDLookups.length-1,this.addRow=this.hasSubGroups?this._addRowToGroup:this._addRow,this.type="group",this.old=r,this.rows=[],this.groups=[],this.groupList=[],this.generator=s,this.elementContents=!1,this.height=0,this.outerHeight=0,this.initialized=!1,this.calcs={},this.initialized=!1,this.modules={},this.arrowElement=!1,this.visible=r?r.visible:void 0!==e.startOpen[o]?e.startOpen[o]:e.startOpen[0],this.component=null,this.createElements(),this.addBindings(),this.createValueGroups()};S.prototype.wipe=function(){this.groupList.length?this.groupList.forEach(function(e){e.wipe()}):(this.element=!1,this.arrowElement=!1,this.elementContents=!1)},S.prototype.createElements=function(){var e=document.createElement("div");e.classList.add("tabulator-arrow"),this.element=document.createElement("div"),this.element.classList.add("tabulator-row"),this.element.classList.add("tabulator-group"),this.element.classList.add("tabulator-group-level-"+this.level),this.element.setAttribute("role","rowgroup"),this.arrowElement=document.createElement("div"),this.arrowElement.classList.add("tabulator-group-toggle"),this.arrowElement.appendChild(e),!1!==this.groupManager.table.options.movableRows&&this.groupManager.table.modExists("moveRow")&&this.groupManager.table.modules.moveRow.initializeGroupHeader(this)},S.prototype.createValueGroups=function(){var e=this,t=this.level+1;this.groupManager.allowedValues&&this.groupManager.allowedValues[t]&&this.groupManager.allowedValues[t].forEach(function(o){e._createGroup(o,t)})},S.prototype.addBindings=function(){var e,t,o,i,n=this;n.groupManager.table.options.groupClick&&n.element.addEventListener("click",function(e){n.groupManager.table.options.groupClick.call(n.groupManager.table,e,n.getComponent())}),n.groupManager.table.options.groupDblClick&&n.element.addEventListener("dblclick",function(e){n.groupManager.table.options.groupDblClick.call(n.groupManager.table,e,n.getComponent())}),n.groupManager.table.options.groupContext&&n.element.addEventListener("contextmenu",function(e){n.groupManager.table.options.groupContext.call(n.groupManager.table,e,n.getComponent())}),n.groupManager.table.options.groupContextMenu&&n.groupManager.table.modExists("menu")&&n.groupManager.table.modules.menu.initializeGroup.call(n.groupManager.table.modules.menu,n),n.groupManager.table.options.groupTap&&(o=!1,n.element.addEventListener("touchstart",function(e){o=!0},{passive:!0}),n.element.addEventListener("touchend",function(e){o&&n.groupManager.table.options.groupTap(e,n.getComponent()),o=!1})),n.groupManager.table.options.groupDblTap&&(e=null,n.element.addEventListener("touchend",function(t){e?(clearTimeout(e),e=null,n.groupManager.table.options.groupDblTap(t,n.getComponent())):e=setTimeout(function(){clearTimeout(e),e=null},300)})),n.groupManager.table.options.groupTapHold&&(t=null,n.element.addEventListener("touchstart",function(e){clearTimeout(t),t=setTimeout(function(){clearTimeout(t),t=null,o=!1,n.groupManager.table.options.groupTapHold(e,n.getComponent())},1e3)},{passive:!0}),n.element.addEventListener("touchend",function(e){clearTimeout(t),t=null})),n.groupManager.table.options.groupToggleElement&&(i="arrow"==n.groupManager.table.options.groupToggleElement?n.arrowElement:n.element,i.addEventListener("click",function(e){e.stopPropagation(),e.stopImmediatePropagation(),n.toggleVisibility()}))},S.prototype._createGroup=function(e,t){var o=t+"_"+e,i=new S(this.groupManager,this,t,e,this.groupManager.groupIDLookups[t].field,this.groupManager.headerGenerator[t]||this.groupManager.headerGenerator[0],!!this.old&&this.old.groups[o]);this.groups[o]=i,this.groupList.push(i)},S.prototype._addRowToGroup=function(e){var t=this.level+1;if(this.hasSubGroups){var o=this.groupManager.groupIDLookups[t].func(e.getData()),i=t+"_"+o;this.groupManager.allowedValues&&this.groupManager.allowedValues[t]?this.groups[i]&&this.groups[i].addRow(e):(this.groups[i]||this._createGroup(o,t),this.groups[i].addRow(e))}},S.prototype._addRow=function(e){this.rows.push(e),e.modules.group=this},S.prototype.insertRow=function(e,t,o){var i=this.conformRowData({});e.updateData(i);var n=this.rows.indexOf(t);n>-1?o?this.rows.splice(n+1,0,e):this.rows.splice(n,0,e):o?this.rows.push(e):this.rows.unshift(e),e.modules.group=this,this.generateGroupHeaderContents(),this.groupManager.table.modExists("columnCalcs")&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modules.columnCalcs.recalcGroup(this),this.groupManager.updateGroupRows(!0)},S.prototype.scrollHeader=function(e){this.arrowElement.style.marginLeft=e,this.groupList.forEach(function(t){t.scrollHeader(e)})},S.prototype.getRowIndex=function(e){},S.prototype.conformRowData=function(e){return this.field?e[this.field]=this.key:console.warn("Data Conforming Error - Cannot conform row data to match new group as groupBy is a function"),this.parent&&(e=this.parent.conformRowData(e)),e},S.prototype.removeRow=function(e){var t=this.rows.indexOf(e),o=e.getElement();t>-1&&this.rows.splice(t,1),this.groupManager.table.options.groupValues||this.rows.length?(o.parentNode&&o.parentNode.removeChild(o),this.generateGroupHeaderContents(),this.groupManager.table.modExists("columnCalcs")&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modules.columnCalcs.recalcGroup(this)):(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this),this.groupManager.updateGroupRows(!0))},S.prototype.removeGroup=function(e){var t,o=e.level+"_"+e.key;this.groups[o]&&(delete this.groups[o],t=this.groupList.indexOf(e),t>-1&&this.groupList.splice(t,1),this.groupList.length||(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this)))},S.prototype.getHeadersAndRows=function(e){var t=[];return t.push(this),this._visSet(),this.visible?this.groupList.length?this.groupList.forEach(function(o){t=t.concat(o.getHeadersAndRows(e))}):(!e&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),t.push(this.calcs.top)),t=t.concat(this.rows),!e&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),t.push(this.calcs.bottom))):this.groupList.length||"table"==this.groupManager.table.options.columnCalcs||this.groupManager.table.modExists("columnCalcs")&&(!e&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),t.push(this.calcs.top))),!e&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),t.push(this.calcs.bottom)))),t},S.prototype.getData=function(e,t){var o=[];return this._visSet(),(!e||e&&this.visible)&&this.rows.forEach(function(e){o.push(e.getData(t||"data"))}),o},S.prototype.getRowCount=function(){var e=0;return this.groupList.length?this.groupList.forEach(function(t){e+=t.getRowCount()}):e=this.rows.length,e},S.prototype.toggleVisibility=function(){this.visible?this.hide():this.show()},S.prototype.hide=function(){this.visible=!1,"classic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination?this.groupManager.updateGroupRows(!0):(this.element.classList.remove("tabulator-group-visible"),this.groupList.length?this.groupList.forEach(function(e){e.getHeadersAndRows().forEach(function(e){e.detachElement()})}):this.rows.forEach(function(e){var t=e.getElement();t.parentNode.removeChild(t)}),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()),this.groupManager.table.options.groupVisibilityChanged.call(this.table,this.getComponent(),!1)},S.prototype.show=function(){var e=this;if(e.visible=!0,"classic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination)this.groupManager.updateGroupRows(!0);else{this.element.classList.add("tabulator-group-visible");var t=e.getElement();this.groupList.length?this.groupList.forEach(function(e){e.getHeadersAndRows().forEach(function(e){var o=e.getElement();t.parentNode.insertBefore(o,t.nextSibling),e.initialize(),t=o})}):e.rows.forEach(function(e){var o=e.getElement();t.parentNode.insertBefore(o,t.nextSibling),e.initialize(),t=o}),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()}this.groupManager.table.options.groupVisibilityChanged.call(this.table,this.getComponent(),!0)},S.prototype._visSet=function(){var e=[];"function"==typeof this.visible&&(this.rows.forEach(function(t){e.push(t.getData())}),this.visible=this.visible(this.key,this.getRowCount(),e,this.getComponent()))},S.prototype.getRowGroup=function(e){var t=!1;return this.groupList.length?this.groupList.forEach(function(o){var i=o.getRowGroup(e);i&&(t=i)}):this.rows.find(function(t){return t===e})&&(t=this),t},S.prototype.getSubGroups=function(e){var t=[];return this.groupList.forEach(function(o){t.push(e?o.getComponent():o)}),t},S.prototype.getRows=function(e){var t=[];return this.rows.forEach(function(o){t.push(e?o.getComponent():o)}),t},S.prototype.generateGroupHeaderContents=function(){var e=[];for(this.rows.forEach(function(t){e.push(t.getData())}),this.elementContents=this.generator(this.key,this.getRowCount(),e,this.getComponent());this.element.firstChild;)this.element.removeChild(this.element.firstChild);"string"==typeof this.elementContents?this.element.innerHTML=this.elementContents:this.element.appendChild(this.elementContents),this.element.insertBefore(this.arrowElement,this.element.firstChild)},S.prototype.getElement=function(){this.addBindingsd=!1,this._visSet(),this.visible?this.element.classList.add("tabulator-group-visible"):this.element.classList.remove("tabulator-group-visible");for(var e=0;e<this.element.childNodes.length;++e)this.element.childNodes[e].parentNode.removeChild(this.element.childNodes[e]);return this.generateGroupHeaderContents(),this.element},S.prototype.detachElement=function(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)},S.prototype.normalizeHeight=function(){this.setHeight(this.element.clientHeight)},S.prototype.initialize=function(e){this.initialized&&!e||(this.normalizeHeight(),this.initialized=!0)},S.prototype.reinitialize=function(){this.initialized=!1,this.height=0,d.prototype.helpers.elVisible(this.element)&&this.initialize(!0)},S.prototype.setHeight=function(e){this.height!=e&&(this.height=e,this.outerHeight=this.element.offsetHeight)},S.prototype.getHeight=function(){return this.outerHeight},S.prototype.getGroup=function(){return this},S.prototype.reinitializeHeight=function(){},S.prototype.calcHeight=function(){},S.prototype.setCellHeight=function(){},S.prototype.clearCellHeight=function(){},S.prototype.getComponent=function(){return this.component||(this.component=new k(this)),this.component};var H=function(e){this.table=e,this.groupIDLookups=!1,this.startOpen=[function(){return!1}],this.headerGenerator=[function(){return""}],this.groupList=[],this.allowedValues=!1,this.groups={},this.displayIndex=0};H.prototype.initialize=function(){var e=this,t=e.table.options.groupBy,o=e.table.options.groupStartOpen,i=e.table.options.groupHeader;if(this.allowedValues=e.table.options.groupValues,Array.isArray(t)&&Array.isArray(i)&&t.length>i.length&&console.warn("Error creating group headers, groupHeader array is shorter than groupBy array"),e.headerGenerator=[function(){return""}],this.startOpen=[function(){return!1}],e.table.modules.localize.bind("groups|item",function(t,o){e.headerGenerator[0]=function(e,i,n){return(void 0===e?"":e)+"<span>("+i+" "+(1===i?t:o.groups.items)+")</span>"}}),this.groupIDLookups=[],Array.isArray(t)||t)this.table.modExists("columnCalcs")&&"table"!=this.table.options.columnCalcs&&"both"!=this.table.options.columnCalcs&&this.table.modules.columnCalcs.removeCalcs();else if(this.table.modExists("columnCalcs")&&"group"!=this.table.options.columnCalcs){var n=this.table.columnManager.getRealColumns();n.forEach(function(t){t.definition.topCalc&&e.table.modules.columnCalcs.initializeTopRow(),t.definition.bottomCalc&&e.table.modules.columnCalcs.initializeBottomRow()})}Array.isArray(t)||(t=[t]),t.forEach(function(t,o){var i,n;"function"==typeof t?i=t:(n=e.table.columnManager.getColumnByField(t),i=n?function(e){return n.getFieldValue(e)}:function(e){return e[t]}),e.groupIDLookups.push({field:"function"!=typeof t&&t,func:i,values:!!e.allowedValues&&e.allowedValues[o]})}),o&&(Array.isArray(o)||(o=[o]),o.forEach(function(e){e="function"==typeof e?e:function(){return!0}}),e.startOpen=o),i&&(e.headerGenerator=Array.isArray(i)?i:[i]),this.initialized=!0},H.prototype.setDisplayIndex=function(e){this.displayIndex=e},H.prototype.getDisplayIndex=function(){return this.displayIndex},H.prototype.getRows=function(e){return this.groupIDLookups.length?(this.table.options.dataGrouping.call(this.table),this.generateGroups(e),this.table.options.dataGrouped&&this.table.options.dataGrouped.call(this.table,this.getGroups(!0)),this.updateGroupRows()):e.slice(0)},H.prototype.getGroups=function(e){var t=[];return this.groupList.forEach(function(o){t.push(e?o.getComponent():o)}),t},H.prototype.getChildGroups=function(e){var t=this,o=[];return e||(e=this),e.groupList.forEach(function(e){e.groupList.length?o=o.concat(t.getChildGroups(e)):o.push(e)}),o},H.prototype.wipe=function(){this.groupList.forEach(function(e){e.wipe()})},H.prototype.pullGroupListData=function(e){var t=this,o=[];return e.forEach(function(e){var i={};i.level=0,i.rowCount=0,i.headerContent="";var n=[];e.hasSubGroups?(n=t.pullGroupListData(e.groupList),i.level=e.level,i.rowCount=n.length-e.groupList.length,i.headerContent=e.generator(e.key,i.rowCount,e.rows,e),o.push(i),o=o.concat(n)):(i.level=e.level,i.headerContent=e.generator(e.key,e.rows.length,e.rows,e),i.rowCount=e.getRows().length,o.push(i),e.getRows().forEach(function(e){o.push(e.getData("data"))}))}),o},H.prototype.getGroupedData=function(){return this.pullGroupListData(this.groupList)},H.prototype.getRowGroup=function(e){var t=!1;return this.groupList.forEach(function(o){var i=o.getRowGroup(e);i&&(t=i)}),t},H.prototype.countGroups=function(){return this.groupList.length},H.prototype.generateGroups=function(e){var t=this,o=t.groups;t.groups={},t.groupList=[],this.allowedValues&&this.allowedValues[0]?(this.allowedValues[0].forEach(function(e){t.createGroup(e,0,o)}),e.forEach(function(e){t.assignRowToExistingGroup(e,o)})):e.forEach(function(e){t.assignRowToGroup(e,o)})},H.prototype.createGroup=function(e,t,o){var i,n=t+"_"+e;o=o||[],i=new S(this,!1,t,e,this.groupIDLookups[0].field,this.headerGenerator[0],o[n]),this.groups[n]=i,this.groupList.push(i)},H.prototype.assignRowToExistingGroup=function(e,t){var o=this.groupIDLookups[0].func(e.getData()),i="0_"+o;this.groups[i]&&this.groups[i].addRow(e)},H.prototype.assignRowToGroup=function(e,t){var o=this.groupIDLookups[0].func(e.getData()),i=!this.groups["0_"+o];return i&&this.createGroup(o,0,t),this.groups["0_"+o].addRow(e),!i},H.prototype.updateGroupRows=function(e){var t=this,o=[];if(t.groupList.forEach(function(e){o=o.concat(e.getHeadersAndRows())}),e){var i=t.table.rowManager.setDisplayRows(o,this.getDisplayIndex());!0!==i&&this.setDisplayIndex(i),t.table.rowManager.refreshActiveData("group",!0,!0)}return o},H.prototype.scrollHeaders=function(e){e+="px",this.groupList.forEach(function(t){t.scrollHeader(e)})},H.prototype.removeGroup=function(e){var t,o=e.level+"_"+e.key;this.groups[o]&&(delete this.groups[o],(t=this.groupList.indexOf(e))>-1&&this.groupList.splice(t,1))},d.prototype.registerModule("groupRows",H);var z=function(e){this.table=e,this.history=[],this.index=-1};z.prototype.clear=function(){this.history=[],this.index=-1},z.prototype.action=function(e,t,o){this.history=this.history.slice(0,this.index+1),this.history.push({type:e,component:t,data:o}),this.index++},z.prototype.getHistoryUndoSize=function(){return this.index+1},z.prototype.getHistoryRedoSize=function(){return this.history.length-(this.index+1)},z.prototype.undo=function(){if(this.index>-1){var e=this.history[this.index];return this.undoers[e.type].call(this,e),this.index--,this.table.options.historyUndo.call(this.table,e.type,e.component.getComponent(),e.data),!0}return console.warn("History Undo Error - No more history to undo"),!1},z.prototype.redo=function(){if(this.history.length-1>this.index){this.index++;var e=this.history[this.index];return this.redoers[e.type].call(this,e),this.table.options.historyRedo.call(this.table,e.type,e.component.getComponent(),e.data),!0}return console.warn("History Redo Error - No more history to redo"),!1},z.prototype.undoers={cellEdit:function(e){e.component.setValueProcessData(e.data.oldValue)},rowAdd:function(e){e.component.deleteActual()},rowDelete:function(e){var t=this.table.rowManager.addRowActual(e.data.data,e.data.pos,e.data.index);this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.updateGroupRows(!0),this._rebindRow(e.component,t)},rowMove:function(e){
-this.table.rowManager.moveRowActual(e.component,this.table.rowManager.rows[e.data.posFrom],!e.data.after),this.table.rowManager.redraw()}},z.prototype.redoers={cellEdit:function(e){e.component.setValueProcessData(e.data.newValue)},rowAdd:function(e){var t=this.table.rowManager.addRowActual(e.data.data,e.data.pos,e.data.index);this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.updateGroupRows(!0),this._rebindRow(e.component,t)},rowDelete:function(e){e.component.deleteActual()},rowMove:function(e){this.table.rowManager.moveRowActual(e.component,this.table.rowManager.rows[e.data.posTo],e.data.after),this.table.rowManager.redraw()}},z.prototype._rebindRow=function(e,t){this.history.forEach(function(o){if(o.component instanceof a)o.component===e&&(o.component=t);else if(o.component instanceof c&&o.component.row===e){var i=o.component.column.getField();i&&(o.component=t.getCell(i))}})},d.prototype.registerModule("history",z);var A=function(e){this.table=e,this.fieldIndex=[],this.hasIndex=!1};A.prototype.parseTable=function(){var e=this,t=e.table.element,o=e.table.options,i=(o.columns,t.getElementsByTagName("th")),n=t.getElementsByTagName("tbody")[0],s=[];e.hasIndex=!1,e.table.options.htmlImporting.call(this.table),n=n?n.getElementsByTagName("tr"):[],e._extractOptions(t,o),i.length?e._extractHeaders(i,n):e._generateBlankHeaders(i,n);for(var r=0;r<n.length;r++){var a=n[r],l=a.getElementsByTagName("td"),c={};e.hasIndex||(c[o.index]=r);for(var u=0;u<l.length;u++){var d=l[u];void 0!==this.fieldIndex[u]&&(c[this.fieldIndex[u]]=d.innerHTML)}s.push(c)}var h=document.createElement("div"),p=t.attributes;for(var u in p)"object"==_typeof(p[u])&&h.setAttribute(p[u].name,p[u].value);t.parentNode.replaceChild(h,t),o.data=s,e.table.options.htmlImported.call(this.table),this.table.element=h},A.prototype._extractOptions=function(e,t,o){var i=e.attributes,n=o?Object.assign([],o):Object.keys(t),s={};n.forEach(function(e){s[e.toLowerCase()]=e});for(var r in i){var a,l=i[r];l&&"object"==(void 0===l?"undefined":_typeof(l))&&l.name&&0===l.name.indexOf("tabulator-")&&(a=l.name.replace("tabulator-",""),void 0!==s[a]&&(t[s[a]]=this._attribValue(l.value)))}},A.prototype._attribValue=function(e){return"true"===e||"false"!==e&&e},A.prototype._findCol=function(e){return this.table.options.columns.find(function(t){return t.title===e})||!1},A.prototype._extractHeaders=function(e,t){for(var o=0;o<e.length;o++){var i,s=e[o],r=!1,a=this._findCol(s.textContent);a?r=!0:a={title:s.textContent.trim()},a.field||(a.field=s.textContent.trim().toLowerCase().replace(" ","_")),i=s.getAttribute("width"),i&&!a.width&&(a.width=i),s.attributes,this._extractOptions(s,a,n.prototype.defaultOptionList),this.fieldIndex[o]=a.field,a.field==this.table.options.index&&(this.hasIndex=!0),r||this.table.options.columns.push(a)}},A.prototype._generateBlankHeaders=function(e,t){for(var o=0;o<e.length;o++){var i=e[o],n={title:"",field:"col"+o};this.fieldIndex[o]=n.field;var s=i.getAttribute("width");s&&(n.width=s),this.table.options.columns.push(n)}},d.prototype.registerModule("htmlTableImport",A);var _=function(e){this.table=e,this.watchKeys=null,this.pressedKeys=null,this.keyupBinding=!1,this.keydownBinding=!1};_.prototype.initialize=function(){var e=this.table.options.keybindings,t={};if(this.watchKeys={},this.pressedKeys=[],!1!==e){for(var o in this.bindings)t[o]=this.bindings[o];if(Object.keys(e).length)for(var i in e)t[i]=e[i];this.mapBindings(t),this.bindEvents()}},_.prototype.mapBindings=function(e){var t=this,o=this;for(var i in e)!function(i){t.actions[i]?e[i]&&("object"!==_typeof(e[i])&&(e[i]=[e[i]]),e[i].forEach(function(e){o.mapBinding(i,e)})):console.warn("Key Binding Error - no such action:",i)}(i)},_.prototype.mapBinding=function(e,t){var o=this,i={action:this.actions[e],keys:[],ctrl:!1,shift:!1,meta:!1};t.toString().toLowerCase().split(" ").join("").split("+").forEach(function(e){switch(e){case"ctrl":i.ctrl=!0;break;case"shift":i.shift=!0;break;case"meta":i.meta=!0;break;default:e=parseInt(e),i.keys.push(e),o.watchKeys[e]||(o.watchKeys[e]=[]),o.watchKeys[e].push(i)}})},_.prototype.bindEvents=function(){var e=this;this.keyupBinding=function(t){var o=t.keyCode,i=e.watchKeys[o];i&&(e.pressedKeys.push(o),i.forEach(function(o){e.checkBinding(t,o)}))},this.keydownBinding=function(t){var o=t.keyCode;if(e.watchKeys[o]){var i=e.pressedKeys.indexOf(o);i>-1&&e.pressedKeys.splice(i,1)}},this.table.element.addEventListener("keydown",this.keyupBinding),this.table.element.addEventListener("keyup",this.keydownBinding)},_.prototype.clearBindings=function(){this.keyupBinding&&this.table.element.removeEventListener("keydown",this.keyupBinding),this.keydownBinding&&this.table.element.removeEventListener("keyup",this.keydownBinding)},_.prototype.checkBinding=function(e,t){var o=this,i=!0;return e.ctrlKey==t.ctrl&&e.shiftKey==t.shift&&e.metaKey==t.meta&&(t.keys.forEach(function(e){-1==o.pressedKeys.indexOf(e)&&(i=!1)}),i&&t.action.call(o,e),!0)},_.prototype.bindings={navPrev:"shift + 9",navNext:9,navUp:38,navDown:40,scrollPageUp:33,scrollPageDown:34,scrollToStart:36,scrollToEnd:35,undo:"ctrl + 90",redo:"ctrl + 89",copyToClipboard:"ctrl + 67"},_.prototype.actions={keyBlock:function(e){e.stopPropagation(),e.preventDefault()},scrollPageUp:function(e){var t=this.table.rowManager,o=t.scrollTop-t.height;t.element.scrollHeight;e.preventDefault(),t.displayRowsCount&&(o>=0?t.element.scrollTop=o:t.scrollToRow(t.getDisplayRows()[0])),this.table.element.focus()},scrollPageDown:function(e){var t=this.table.rowManager,o=t.scrollTop+t.height,i=t.element.scrollHeight;e.preventDefault(),t.displayRowsCount&&(o<=i?t.element.scrollTop=o:t.scrollToRow(t.getDisplayRows()[t.displayRowsCount-1])),this.table.element.focus()},scrollToStart:function(e){var t=this.table.rowManager;e.preventDefault(),t.displayRowsCount&&t.scrollToRow(t.getDisplayRows()[0]),this.table.element.focus()},scrollToEnd:function(e){var t=this.table.rowManager;e.preventDefault(),t.displayRowsCount&&t.scrollToRow(t.getDisplayRows()[t.displayRowsCount-1]),this.table.element.focus()},navPrev:function(e){var t=!1;this.table.modExists("edit")&&(t=this.table.modules.edit.currentCell)&&(e.preventDefault(),t.nav().prev())},navNext:function(e){var t,o=!1,i=this.table.options.tabEndNewRow;this.table.modExists("edit")&&(o=this.table.modules.edit.currentCell)&&(e.preventDefault(),t=o.nav(),t.next()||i&&(o.getElement().firstChild.blur(),i=!0===i?this.table.addRow({}):"function"==typeof i?this.table.addRow(i(o.row.getComponent())):this.table.addRow(Object.assign({},i)),i.then(function(){setTimeout(function(){t.next()})})))},navLeft:function(e){var t=!1;this.table.modExists("edit")&&(t=this.table.modules.edit.currentCell)&&(e.preventDefault(),t.nav().left())},navRight:function(e){var t=!1;this.table.modExists("edit")&&(t=this.table.modules.edit.currentCell)&&(e.preventDefault(),t.nav().right())},navUp:function(e){var t=!1;this.table.modExists("edit")&&(t=this.table.modules.edit.currentCell)&&(e.preventDefault(),t.nav().up())},navDown:function(e){var t=!1;this.table.modExists("edit")&&(t=this.table.modules.edit.currentCell)&&(e.preventDefault(),t.nav().down())},undo:function(e){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(e.preventDefault(),this.table.modules.history.undo()))},redo:function(e){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(e.preventDefault(),this.table.modules.history.redo()))},copyToClipboard:function(e){this.table.modules.edit.currentCell||this.table.modExists("clipboard",!0)&&this.table.modules.clipboard.copy(!1,!0)}},d.prototype.registerModule("keybindings",_);var P=function(e){this.table=e,this.menuEl=!1,this.blurEvent=this.hideMenu.bind(this),this.escEvent=this.escMenu.bind(this),this.nestedMenuBlock=!1};P.prototype.initializeColumnHeader=function(e){var t,o=this;e.definition.headerContextMenu&&e.getElement().addEventListener("contextmenu",function(t){var i="function"==typeof e.definition.headerContextMenu?e.definition.headerContextMenu(e.getComponent()):e.definition.headerContextMenu;t.preventDefault(),o.loadMenu(t,e,i)}),e.definition.headerMenu&&(t=document.createElement("span"),t.classList.add("tabulator-header-menu-button"),t.innerHTML="&vellip;",t.addEventListener("click",function(t){var i="function"==typeof e.definition.headerMenu?e.definition.headerMenu(e.getComponent()):e.definition.headerMenu;t.stopPropagation(),t.preventDefault(),o.loadMenu(t,e,i)}),e.titleElement.insertBefore(t,e.titleElement.firstChild))},P.prototype.initializeCell=function(e){var t=this;e.getElement().addEventListener("contextmenu",function(o){var i="function"==typeof e.column.definition.contextMenu?e.column.definition.contextMenu(e.getComponent()):e.column.definition.contextMenu;o.stopImmediatePropagation(),t.loadMenu(o,e,i)})},P.prototype.initializeRow=function(e){var t=this;e.getElement().addEventListener("contextmenu",function(o){var i="function"==typeof t.table.options.rowContextMenu?t.table.options.rowContextMenu(e.getComponent()):t.table.options.rowContextMenu;t.loadMenu(o,e,i)})},P.prototype.initializeGroup=function(e){var t=this;e.getElement().addEventListener("contextmenu",function(o){var i="function"==typeof t.table.options.groupContextMenu?t.table.options.groupContextMenu(e.getComponent()):t.table.options.groupContextMenu;t.loadMenu(o,e,i)})},P.prototype.loadMenu=function(e,t,o){var i=this,n=Math.max(document.body.offsetHeight,window.innerHeight);if(e.preventDefault(),o&&o.length){if(this.nestedMenuBlock){if(this.isOpen())return}else this.nestedMenuBlock=setTimeout(function(){i.nestedMenuBlock=!1},100);this.hideMenu(),this.menuEl=document.createElement("div"),this.menuEl.classList.add("tabulator-menu"),o.forEach(function(e){var o=document.createElement("div"),n=e.label,s=e.disabled;e.separator?o.classList.add("tabulator-menu-separator"):(o.classList.add("tabulator-menu-item"),"function"==typeof n&&(n=n(t.getComponent())),n instanceof Node?o.appendChild(n):o.innerHTML=n,"function"==typeof s&&(s=s(t.getComponent())),s?(o.classList.add("tabulator-menu-item-disabled"),o.addEventListener("click",function(e){e.stopPropagation()})):o.addEventListener("click",function(o){i.hideMenu(),e.action(o,t.getComponent())})),i.menuEl.appendChild(o)}),this.menuEl.style.top=e.pageY+"px",this.menuEl.style.left=e.pageX+"px",document.body.addEventListener("click",this.blurEvent),this.table.rowManager.element.addEventListener("scroll",this.blurEvent),setTimeout(function(){document.body.addEventListener("contextmenu",i.blurEvent)},100),document.body.addEventListener("keydown",this.escEvent),document.body.appendChild(this.menuEl),e.pageX+this.menuEl.offsetWidth>=document.body.offsetWidth&&(this.menuEl.style.left="",this.menuEl.style.right=document.body.offsetWidth-e.pageX+"px"),e.pageY+this.menuEl.offsetHeight>=n&&(this.menuEl.style.top="",this.menuEl.style.bottom=n-e.pageY+"px")}},P.prototype.isOpen=function(){return!!this.menuEl.parentNode},P.prototype.escMenu=function(e){27==e.keyCode&&this.hideMenu()},P.prototype.hideMenu=function(){this.menuEl.parentNode&&this.menuEl.parentNode.removeChild(this.menuEl),this.escEvent&&document.body.removeEventListener("keydown",this.escEvent),this.blurEvent&&(document.body.removeEventListener("click",this.blurEvent),document.body.removeEventListener("contextmenu",this.blurEvent),this.table.rowManager.element.removeEventListener("scroll",this.blurEvent))},P.prototype.menus={},d.prototype.registerModule("menu",P);var F=function(e){this.table=e,this.placeholderElement=this.createPlaceholderElement(),this.hoverElement=!1,this.checkTimeout=!1,this.checkPeriod=250,this.moving=!1,this.toCol=!1,this.toColAfter=!1,this.startX=0,this.autoScrollMargin=40,this.autoScrollStep=5,this.autoScrollTimeout=!1,this.touchMove=!1,this.moveHover=this.moveHover.bind(this),this.endMove=this.endMove.bind(this)};F.prototype.createPlaceholderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-col"),e.classList.add("tabulator-col-placeholder"),e},F.prototype.initializeColumn=function(e){var t,o=this,i={};e.modules.frozen||(t=e.getElement(),i.mousemove=function(i){e.parent===o.moving.parent&&((o.touchMove?i.touches[0].pageX:i.pageX)-d.prototype.helpers.elOffset(t).left+o.table.columnManager.element.scrollLeft>e.getWidth()/2?o.toCol===e&&o.toColAfter||(t.parentNode.insertBefore(o.placeholderElement,t.nextSibling),o.moveColumn(e,!0)):(o.toCol!==e||o.toColAfter)&&(t.parentNode.insertBefore(o.placeholderElement,t),o.moveColumn(e,!1)))}.bind(o),t.addEventListener("mousedown",function(t){o.touchMove=!1,1===t.which&&(o.checkTimeout=setTimeout(function(){o.startMove(t,e)},o.checkPeriod))}),t.addEventListener("mouseup",function(e){1===e.which&&o.checkTimeout&&clearTimeout(o.checkTimeout)}),o.bindTouchEvents(e)),e.modules.moveColumn=i},F.prototype.bindTouchEvents=function(e){var t,o,i,n,s,r,a,l=this,c=e.getElement(),u=!1;c.addEventListener("touchstart",function(c){l.checkTimeout=setTimeout(function(){l.touchMove=!0,t=e,o=e.nextColumn(),n=o?o.getWidth()/2:0,i=e.prevColumn(),s=i?i.getWidth()/2:0,r=0,a=0,u=!1,l.startMove(c,e)},l.checkPeriod)},{passive:!0}),c.addEventListener("touchmove",function(c){var d,h;l.moving&&(l.moveHover(c),u||(u=c.touches[0].pageX),d=c.touches[0].pageX-u,d>0?o&&d-r>n&&(h=o)!==e&&(u=c.touches[0].pageX,h.getElement().parentNode.insertBefore(l.placeholderElement,h.getElement().nextSibling),l.moveColumn(h,!0)):i&&-d-a>s&&(h=i)!==e&&(u=c.touches[0].pageX,h.getElement().parentNode.insertBefore(l.placeholderElement,h.getElement()),l.moveColumn(h,!1)),h&&(t=h,o=h.nextColumn(),r=n,n=o?o.getWidth()/2:0,i=h.prevColumn(),a=s,s=i?i.getWidth()/2:0))},{passive:!0}),c.addEventListener("touchend",function(e){l.checkTimeout&&clearTimeout(l.checkTimeout),l.moving&&l.endMove(e)})},F.prototype.startMove=function(e,t){var o=t.getElement();this.moving=t,this.startX=(this.touchMove?e.touches[0].pageX:e.pageX)-d.prototype.helpers.elOffset(o).left,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=t.getWidth()+"px",this.placeholderElement.style.height=t.getHeight()+"px",o.parentNode.insertBefore(this.placeholderElement,o),o.parentNode.removeChild(o),this.hoverElement=o.cloneNode(!0),this.hoverElement.classList.add("tabulator-moving"),this.table.columnManager.getElement().appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.bottom="0",this.touchMove||(this._bindMouseMove(),document.body.addEventListener("mousemove",this.moveHover),document.body.addEventListener("mouseup",this.endMove)),this.moveHover(e)},F.prototype._bindMouseMove=function(){this.table.columnManager.columnsByIndex.forEach(function(e){e.modules.moveColumn.mousemove&&e.getElement().addEventListener("mousemove",e.modules.moveColumn.mousemove)})},F.prototype._unbindMouseMove=function(){this.table.columnManager.columnsByIndex.forEach(function(e){e.modules.moveColumn.mousemove&&e.getElement().removeEventListener("mousemove",e.modules.moveColumn.mousemove)})},F.prototype.moveColumn=function(e,t){var o=this.moving.getCells();this.toCol=e,this.toColAfter=t,t?e.getCells().forEach(function(e,t){var i=e.getElement();i.parentNode.insertBefore(o[t].getElement(),i.nextSibling)}):e.getCells().forEach(function(e,t){var i=e.getElement();i.parentNode.insertBefore(o[t].getElement(),i)})},F.prototype.endMove=function(e){(1===e.which||this.touchMove)&&(this._unbindMouseMove(),this.placeholderElement.parentNode.insertBefore(this.moving.getElement(),this.placeholderElement.nextSibling),this.placeholderElement.parentNode.removeChild(this.placeholderElement),this.hoverElement.parentNode.removeChild(this.hoverElement),this.table.element.classList.remove("tabulator-block-select"),this.toCol&&this.table.columnManager.moveColumnActual(this.moving,this.toCol,this.toColAfter),this.moving=!1,this.toCol=!1,this.toColAfter=!1,this.touchMove||(document.body.removeEventListener("mousemove",this.moveHover),document.body.removeEventListener("mouseup",this.endMove)))},F.prototype.moveHover=function(e){var t,o=this,i=o.table.columnManager.getElement(),n=i.scrollLeft,s=(o.touchMove?e.touches[0].pageX:e.pageX)-d.prototype.helpers.elOffset(i).left+n;o.hoverElement.style.left=s-o.startX+"px",s-n<o.autoScrollMargin&&(o.autoScrollTimeout||(o.autoScrollTimeout=setTimeout(function(){t=Math.max(0,n-5),o.table.rowManager.getElement().scrollLeft=t,o.autoScrollTimeout=!1},1))),n+i.clientWidth-s<o.autoScrollMargin&&(o.autoScrollTimeout||(o.autoScrollTimeout=setTimeout(function(){t=Math.min(i.clientWidth,n+5),o.table.rowManager.getElement().scrollLeft=t,o.autoScrollTimeout=!1},1)))},d.prototype.registerModule("moveColumn",F);var N=function(e){this.table=e,this.placeholderElement=this.createPlaceholderElement(),this.hoverElement=!1,this.checkTimeout=!1,this.checkPeriod=150,this.moving=!1,this.toRow=!1,this.toRowAfter=!1,this.hasHandle=!1,this.startY=0,this.startX=0,this.moveHover=this.moveHover.bind(this),this.endMove=this.endMove.bind(this),this.tableRowDropEvent=!1,this.touchMove=!1,this.connection=!1,this.connectionSelectorsTables=!1,this.connectionSelectorsElements=!1,this.connectionElements=[],this.connections=[],this.connectedTable=!1,this.connectedRow=!1};N.prototype.createPlaceholderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-row"),e.classList.add("tabulator-row-placeholder"),e},N.prototype.initialize=function(e){this.connectionSelectorsTables=this.table.options.movableRowsConnectedTables,this.connectionSelectorsElements=this.table.options.movableRowsConnectedElements,this.connection=this.connectionSelectorsTables||this.connectionSelectorsElements},N.prototype.setHandle=function(e){this.hasHandle=e},N.prototype.initializeGroupHeader=function(e){var t=this,o={};o.mouseup=function(e){t.tableRowDrop(e,row)}.bind(t),o.mousemove=function(o){if(o.pageY-d.prototype.helpers.elOffset(e.element).top+t.table.rowManager.element.scrollTop>e.getHeight()/2){if(t.toRow!==e||!t.toRowAfter){var i=e.getElement();i.parentNode.insertBefore(t.placeholderElement,i.nextSibling),t.moveRow(e,!0)}}else if(t.toRow!==e||t.toRowAfter){var i=e.getElement();i.previousSibling&&(i.parentNode.insertBefore(t.placeholderElement,i),t.moveRow(e,!1))}}.bind(t),e.modules.moveRow=o},N.prototype.initializeRow=function(e){var t,o=this,i={};i.mouseup=function(t){o.tableRowDrop(t,e)}.bind(o),i.mousemove=function(t){if(t.pageY-d.prototype.helpers.elOffset(e.element).top+o.table.rowManager.element.scrollTop>e.getHeight()/2){if(o.toRow!==e||!o.toRowAfter){var i=e.getElement();i.parentNode.insertBefore(o.placeholderElement,i.nextSibling),o.moveRow(e,!0)}}else if(o.toRow!==e||o.toRowAfter){var i=e.getElement();i.parentNode.insertBefore(o.placeholderElement,i),o.moveRow(e,!1)}}.bind(o),this.hasHandle||(t=e.getElement(),t.addEventListener("mousedown",function(t){1===t.which&&(o.checkTimeout=setTimeout(function(){o.startMove(t,e)},o.checkPeriod))}),t.addEventListener("mouseup",function(e){1===e.which&&o.checkTimeout&&clearTimeout(o.checkTimeout)}),this.bindTouchEvents(e,e.getElement())),e.modules.moveRow=i},N.prototype.initializeCell=function(e){var t=this,o=e.getElement();o.addEventListener("mousedown",function(o){1===o.which&&(t.checkTimeout=setTimeout(function(){t.startMove(o,e.row)},t.checkPeriod))}),o.addEventListener("mouseup",function(e){1===e.which&&t.checkTimeout&&clearTimeout(t.checkTimeout)}),this.bindTouchEvents(e.row,e.getElement())},N.prototype.bindTouchEvents=function(e,t){var o,i,n,s,r,a,l,c=this,u=!1;t.addEventListener("touchstart",function(t){c.checkTimeout=setTimeout(function(){c.touchMove=!0,o=e,i=e.nextRow(),s=i?i.getHeight()/2:0,n=e.prevRow(),r=n?n.getHeight()/2:0,a=0,l=0,u=!1,c.startMove(t,e)},c.checkPeriod)},{passive:!0}),this.moving,this.toRow,this.toRowAfter,t.addEventListener("touchmove",function(t){var d,h;c.moving&&(t.preventDefault(),c.moveHover(t),u||(u=t.touches[0].pageY),d=t.touches[0].pageY-u,d>0?i&&d-a>s&&(h=i)!==e&&(u=t.touches[0].pageY,h.getElement().parentNode.insertBefore(c.placeholderElement,h.getElement().nextSibling),c.moveRow(h,!0)):n&&-d-l>r&&(h=n)!==e&&(u=t.touches[0].pageY,h.getElement().parentNode.insertBefore(c.placeholderElement,h.getElement()),c.moveRow(h,!1)),h&&(o=h,i=h.nextRow(),a=s,s=i?i.getHeight()/2:0,n=h.prevRow(),l=r,r=n?n.getHeight()/2:0))}),t.addEventListener("touchend",function(e){c.checkTimeout&&clearTimeout(c.checkTimeout),c.moving&&(c.endMove(e),c.touchMove=!1)})},N.prototype._bindMouseMove=function(){this.table.rowManager.getDisplayRows().forEach(function(e){"row"!==e.type&&"group"!==e.type||!e.modules.moveRow.mousemove||e.getElement().addEventListener("mousemove",e.modules.moveRow.mousemove)})},N.prototype._unbindMouseMove=function(){this.table.rowManager.getDisplayRows().forEach(function(e){"row"!==e.type&&"group"!==e.type||!e.modules.moveRow.mousemove||e.getElement().removeEventListener("mousemove",e.modules.moveRow.mousemove)})},N.prototype.startMove=function(e,t){var o=t.getElement();this.setStartPosition(e,t),this.moving=t,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=t.getWidth()+"px",this.placeholderElement.style.height=t.getHeight()+"px",this.connection?(this.table.element.classList.add("tabulator-movingrow-sending"),this.connectToTables(t)):(o.parentNode.insertBefore(this.placeholderElement,o),o.parentNode.removeChild(o)),this.hoverElement=o.cloneNode(!0),this.hoverElement.classList.add("tabulator-moving"),this.connection?(document.body.appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.top="0",this.hoverElement.style.width=this.table.element.clientWidth+"px",this.hoverElement.style.whiteSpace="nowrap",this.hoverElement.style.overflow="hidden",this.hoverElement.style.pointerEvents="none"):(this.table.rowManager.getTableElement().appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.top="0",this._bindMouseMove()),document.body.addEventListener("mousemove",this.moveHover),document.body.addEventListener("mouseup",this.endMove),this.moveHover(e)},N.prototype.setStartPosition=function(e,t){var o,i,n=this.touchMove?e.touches[0].pageX:e.pageX,s=this.touchMove?e.touches[0].pageY:e.pageY;o=t.getElement(),this.connection?(i=o.getBoundingClientRect(),this.startX=i.left-n+window.pageXOffset,this.startY=i.top-s+window.pageYOffset):this.startY=s-o.getBoundingClientRect().top},N.prototype.endMove=function(e){e&&1!==e.which&&!this.touchMove||(this._unbindMouseMove(),this.connection||(this.placeholderElement.parentNode.insertBefore(this.moving.getElement(),this.placeholderElement.nextSibling),this.placeholderElement.parentNode.removeChild(this.placeholderElement)),this.hoverElement.parentNode.removeChild(this.hoverElement),this.table.element.classList.remove("tabulator-block-select"),this.toRow&&this.table.rowManager.moveRow(this.moving,this.toRow,this.toRowAfter),this.moving=!1,this.toRow=!1,this.toRowAfter=!1,document.body.removeEventListener("mousemove",this.moveHover),document.body.removeEventListener("mouseup",this.endMove),this.connection&&(this.table.element.classList.remove("tabulator-movingrow-sending"),this.disconnectFromTables()))},N.prototype.moveRow=function(e,t){this.toRow=e,this.toRowAfter=t},N.prototype.moveHover=function(e){this.connection?this.moveHoverConnections.call(this,e):this.moveHoverTable.call(this,e)},N.prototype.moveHoverTable=function(e){var t=this.table.rowManager.getElement(),o=t.scrollTop,i=(this.touchMove?e.touches[0].pageY:e.pageY)-t.getBoundingClientRect().top+o;this.hoverElement.style.top=i-this.startY+"px"},N.prototype.moveHoverConnections=function(e){this.hoverElement.style.left=this.startX+(this.touchMove?e.touches[0].pageX:e.pageX)+"px",this.hoverElement.style.top=this.startY+(this.touchMove?e.touches[0].pageY:e.pageY)+"px"},N.prototype.elementRowDrop=function(e,t,o){this.table.options.movableRowsElementDrop&&this.table.options.movableRowsElementDrop(e,t,!!o&&o.getComponent())},N.prototype.connectToTables=function(e){var t,o=this;this.connectionSelectorsTables&&(t=this.table.modules.comms.getConnections(this.connectionSelectorsTables),this.table.options.movableRowsSendingStart.call(this.table,t),this.table.modules.comms.send(this.connectionSelectorsTables,"moveRow","connect",{row:e})),this.connectionSelectorsElements&&(this.connectionElements=[],Array.isArray(this.connectionSelectorsElements)||(this.connectionSelectorsElements=[this.connectionSelectorsElements]),this.connectionSelectorsElements.forEach(function(e){"string"==typeof e?o.connectionElements=o.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(e))):o.connectionElements.push(e)}),this.connectionElements.forEach(function(e){var t=function(t){o.elementRowDrop(t,e,o.moving)};e.addEventListener("mouseup",t),e.tabulatorElementDropEvent=t,e.classList.add("tabulator-movingrow-receiving")}))},N.prototype.disconnectFromTables=function(){var e;this.connectionSelectorsTables&&(e=this.table.modules.comms.getConnections(this.connectionSelectorsTables),this.table.options.movableRowsSendingStop.call(this.table,e),this.table.modules.comms.send(this.connectionSelectorsTables,"moveRow","disconnect")),this.connectionElements.forEach(function(e){e.classList.remove("tabulator-movingrow-receiving"),e.removeEventListener("mouseup",e.tabulatorElementDropEvent),delete e.tabulatorElementDropEvent})},N.prototype.connect=function(e,t){var o=this;return this.connectedTable?(console.warn("Move Row Error - Table cannot accept connection, already connected to table:",this.connectedTable),!1):(this.connectedTable=e,this.connectedRow=t,this.table.element.classList.add("tabulator-movingrow-receiving"),o.table.rowManager.getDisplayRows().forEach(function(e){"row"===e.type&&e.modules.moveRow&&e.modules.moveRow.mouseup&&e.getElement().addEventListener("mouseup",e.modules.moveRow.mouseup)}),o.tableRowDropEvent=o.tableRowDrop.bind(o),o.table.element.addEventListener("mouseup",o.tableRowDropEvent),this.table.options.movableRowsReceivingStart.call(this.table,t,e),!0)},N.prototype.disconnect=function(e){var t=this;e===this.connectedTable?(this.connectedTable=!1,this.connectedRow=!1,this.table.element.classList.remove("tabulator-movingrow-receiving"),t.table.rowManager.getDisplayRows().forEach(function(e){"row"===e.type&&e.modules.moveRow&&e.modules.moveRow.mouseup&&e.getElement().removeEventListener("mouseup",e.modules.moveRow.mouseup)}),t.table.element.removeEventListener("mouseup",t.tableRowDropEvent),this.table.options.movableRowsReceivingStop.call(this.table,e)):console.warn("Move Row Error - trying to disconnect from non connected table")},N.prototype.dropComplete=function(e,t,o){var i=!1;if(o){switch(_typeof(this.table.options.movableRowsSender)){case"string":i=this.senders[this.table.options.movableRowsSender];break;case"function":i=this.table.options.movableRowsSender}i?i.call(this,this.moving.getComponent(),t?t.getComponent():void 0,e):this.table.options.movableRowsSender&&console.warn("Mover Row Error - no matching sender found:",this.table.options.movableRowsSender),this.table.options.movableRowsSent.call(this.table,this.moving.getComponent(),t?t.getComponent():void 0,e)}else this.table.options.movableRowsSentFailed.call(this.table,this.moving.getComponent(),t?t.getComponent():void 0,e);this.endMove()},N.prototype.tableRowDrop=function(e,t){var o=!1,i=!1;switch(console.trace("drop"),e.stopImmediatePropagation(),_typeof(this.table.options.movableRowsReceiver)){case"string":o=this.receivers[this.table.options.movableRowsReceiver];break;case"function":o=this.table.options.movableRowsReceiver}o?i=o.call(this,this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable):console.warn("Mover Row Error - no matching receiver found:",this.table.options.movableRowsReceiver),i?this.table.options.movableRowsReceived.call(this.table,this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable):this.table.options.movableRowsReceivedFailed.call(this.table,this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable),this.table.modules.comms.send(this.connectedTable,"moveRow","dropcomplete",{row:t,success:i})},N.prototype.receivers={insert:function(e,t,o){return this.table.addRow(e.getData(),void 0,t),!0},add:function(e,t,o){return this.table.addRow(e.getData()),!0},update:function(e,t,o){return!!t&&(t.update(e.getData()),!0)},replace:function(e,t,o){return!!t&&(this.table.addRow(e.getData(),void 0,t),t.delete(),!0)}},N.prototype.senders={delete:function(e,t,o){e.delete()}},N.prototype.commsReceived=function(e,t,o){switch(t){case"connect":return this.connect(e,o.row);case"disconnect":return this.disconnect(e);case"dropcomplete":return this.dropComplete(e,o.row,o.success)}},d.prototype.registerModule("moveRow",N);var B=function(e){this.table=e,this.allowedTypes=["","data","edit","clipboard"],this.enabled=!0};B.prototype.initializeColumn=function(e){var t=this,o=!1,i={};this.allowedTypes.forEach(function(n){var s,r="mutator"+(n.charAt(0).toUpperCase()+n.slice(1));e.definition[r]&&(s=t.lookupMutator(e.definition[r]))&&(o=!0,i[r]={mutator:s,params:e.definition[r+"Params"]||{}})}),o&&(e.modules.mutate=i)},B.prototype.lookupMutator=function(e){var t=!1;switch(void 0===e?"undefined":_typeof(e)){case"string":this.mutators[e]?t=this.mutators[e]:console.warn("Mutator Error - No such mutator found, ignoring: ",e);break;case"function":t=e}return t},B.prototype.transformRow=function(e,t,o){var i,n=this,s="mutator"+(t.charAt(0).toUpperCase()+t.slice(1));return this.enabled&&n.table.columnManager.traverse(function(n){var r,a,l;n.modules.mutate&&(r=n.modules.mutate[s]||n.modules.mutate.mutator||!1)&&(i=n.getFieldValue(void 0!==o?o:e),"data"!=t&&void 0===i||(l=n.getComponent(),a="function"==typeof r.params?r.params(i,e,t,l):r.params,n.setFieldValue(e,r.mutator(i,e,t,a,l))))}),e},B.prototype.transformCell=function(e,t){var o=e.column.modules.mutate.mutatorEdit||e.column.modules.mutate.mutator||!1,i={};return o?(i=Object.assign(i,e.row.getData()),e.column.setFieldValue(i,t),o.mutator(t,i,"edit",o.params,e.getComponent())):t},B.prototype.enable=function(){this.enabled=!0},B.prototype.disable=function(){this.enabled=!1},B.prototype.mutators={},d.prototype.registerModule("mutator",B);var O=function(e){this.table=e,this.mode="local",this.progressiveLoad=!1,this.size=0,this.page=1,this.count=5,this.max=1,this.displayIndex=0,this.initialLoad=!0,this.pageSizes=[],this.dataReceivedNames={},this.dataSentNames={},this.createElements()};O.prototype.createElements=function(){var e;this.element=document.createElement("span"),this.element.classList.add("tabulator-paginator"),this.pagesElement=document.createElement("span"),this.pagesElement.classList.add("tabulator-pages"),e=document.createElement("button"),e.classList.add("tabulator-page"),e.setAttribute("type","button"),e.setAttribute("role","button"),e.setAttribute("aria-label",""),e.setAttribute("title",""),this.firstBut=e.cloneNode(!0),this.firstBut.setAttribute("data-page","first"),this.prevBut=e.cloneNode(!0),this.prevBut.setAttribute("data-page","prev"),this.nextBut=e.cloneNode(!0),this.nextBut.setAttribute("data-page","next"),this.lastBut=e.cloneNode(!0),this.lastBut.setAttribute("data-page","last"),this.table.options.paginationSizeSelector&&(this.pageSizeSelect=document.createElement("select"),this.pageSizeSelect.classList.add("tabulator-page-size"))},O.prototype.generatePageSizeSelectList=function(){var e=this,t=[];if(this.pageSizeSelect){if(Array.isArray(this.table.options.paginationSizeSelector))t=this.table.options.paginationSizeSelector,this.pageSizes=t,-1==this.pageSizes.indexOf(this.size)&&t.unshift(this.size);else if(-1==this.pageSizes.indexOf(this.size)){t=[];for(var o=1;o<5;o++)t.push(this.size*o);this.pageSizes=t}else t=this.pageSizes
-;for(;this.pageSizeSelect.firstChild;)this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);t.forEach(function(t){var o=document.createElement("option");o.value=t,!0===t?e.table.modules.localize.bind("pagination|all",function(e){o.innerHTML=e}):o.innerHTML=t,e.pageSizeSelect.appendChild(o)}),this.pageSizeSelect.value=this.size}},O.prototype.initialize=function(e){var t,o,i,n=this;this.dataSentNames=Object.assign({},this.paginationDataSentNames),this.dataSentNames=Object.assign(this.dataSentNames,this.table.options.paginationDataSent),this.dataReceivedNames=Object.assign({},this.paginationDataReceivedNames),this.dataReceivedNames=Object.assign(this.dataReceivedNames,this.table.options.paginationDataReceived),n.table.modules.localize.bind("pagination|first",function(e){n.firstBut.innerHTML=e}),n.table.modules.localize.bind("pagination|first_title",function(e){n.firstBut.setAttribute("aria-label",e),n.firstBut.setAttribute("title",e)}),n.table.modules.localize.bind("pagination|prev",function(e){n.prevBut.innerHTML=e}),n.table.modules.localize.bind("pagination|prev_title",function(e){n.prevBut.setAttribute("aria-label",e),n.prevBut.setAttribute("title",e)}),n.table.modules.localize.bind("pagination|next",function(e){n.nextBut.innerHTML=e}),n.table.modules.localize.bind("pagination|next_title",function(e){n.nextBut.setAttribute("aria-label",e),n.nextBut.setAttribute("title",e)}),n.table.modules.localize.bind("pagination|last",function(e){n.lastBut.innerHTML=e}),n.table.modules.localize.bind("pagination|last_title",function(e){n.lastBut.setAttribute("aria-label",e),n.lastBut.setAttribute("title",e)}),n.firstBut.addEventListener("click",function(){n.setPage(1)}),n.prevBut.addEventListener("click",function(){n.previousPage()}),n.nextBut.addEventListener("click",function(){n.nextPage().then(function(){}).catch(function(){})}),n.lastBut.addEventListener("click",function(){n.setPage(n.max)}),n.table.options.paginationElement&&(n.element=n.table.options.paginationElement),this.pageSizeSelect&&(t=document.createElement("label"),n.table.modules.localize.bind("pagination|page_size",function(e){n.pageSizeSelect.setAttribute("aria-label",e),n.pageSizeSelect.setAttribute("title",e),t.innerHTML=e}),n.element.appendChild(t),n.element.appendChild(n.pageSizeSelect),n.pageSizeSelect.addEventListener("change",function(e){n.setPageSize("true"==n.pageSizeSelect.value||n.pageSizeSelect.value),n.setPage(1).then(function(){}).catch(function(){})})),n.element.appendChild(n.firstBut),n.element.appendChild(n.prevBut),n.element.appendChild(n.pagesElement),n.element.appendChild(n.nextBut),n.element.appendChild(n.lastBut),n.table.options.paginationElement||e||n.table.footerManager.append(n.element,n),n.mode=n.table.options.pagination,n.table.options.paginationSize?n.size=n.table.options.paginationSize:(o=document.createElement("div"),o.classList.add("tabulator-row"),o.style.visibility=e,i=document.createElement("div"),i.classList.add("tabulator-cell"),i.innerHTML="Page Row Test",o.appendChild(i),n.table.rowManager.getTableElement().appendChild(o),n.size=Math.floor(n.table.rowManager.getElement().clientHeight/o.offsetHeight),n.table.rowManager.getTableElement().removeChild(o)),n.count=n.table.options.paginationButtonCount,n.generatePageSizeSelectList()},O.prototype.initializeProgressive=function(e){this.initialize(!0),this.mode="progressive_"+e,this.progressiveLoad=!0},O.prototype.setDisplayIndex=function(e){this.displayIndex=e},O.prototype.getDisplayIndex=function(){return this.displayIndex},O.prototype.setMaxRows=function(e){this.max=e?!0===this.size?1:Math.ceil(e/this.size):1,this.page>this.max&&(this.page=this.max)},O.prototype.reset=function(e,t){return("local"==this.mode||e)&&(this.page=1),t&&(this.initialLoad=!0),!0},O.prototype.setMaxPage=function(e){e=parseInt(e),this.max=e||1,this.page>this.max&&(this.page=this.max,this.trigger())},O.prototype.setPage=function(e){var t=this,o=this;switch(e){case"first":return this.setPage(1);case"prev":return this.previousPage();case"next":return this.nextPage();case"last":return this.setPage(this.max)}return new Promise(function(i,n){e=parseInt(e),e>0&&e<=t.max?(t.page=e,t.trigger().then(function(){i()}).catch(function(){n()}),o.table.options.persistence&&o.table.modExists("persistence",!0)&&o.table.modules.persistence.config.page&&o.table.modules.persistence.save("page")):(console.warn("Pagination Error - Requested page is out of range of 1 - "+t.max+":",e),n())})},O.prototype.setPageToRow=function(e){var t=this;return new Promise(function(o,i){var n=t.table.rowManager.getDisplayRows(t.displayIndex-1),s=n.indexOf(e);if(s>-1){var r=!0===t.size?1:Math.ceil((s+1)/t.size);t.setPage(r).then(function(){o()}).catch(function(){i()})}else console.warn("Pagination Error - Requested row is not visible"),i()})},O.prototype.setPageSize=function(e){!0!==e&&(e=parseInt(e)),e>0&&(this.size=e),this.pageSizeSelect&&this.generatePageSizeSelectList(),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.page&&this.table.modules.persistence.save("page")},O.prototype._setPageButtons=function(){for(var e=this,t=Math.floor((this.count-1)/2),o=Math.ceil((this.count-1)/2),i=this.max-this.page+t+1<this.count?this.max-this.count+1:Math.max(this.page-t,1),n=this.page<=o?Math.min(this.count,this.max):Math.min(this.page+o,this.max);e.pagesElement.firstChild;)e.pagesElement.removeChild(e.pagesElement.firstChild);1==e.page?(e.firstBut.disabled=!0,e.prevBut.disabled=!0):(e.firstBut.disabled=!1,e.prevBut.disabled=!1),e.page==e.max?(e.lastBut.disabled=!0,e.nextBut.disabled=!0):(e.lastBut.disabled=!1,e.nextBut.disabled=!1);for(var s=i;s<=n;s++)s>0&&s<=e.max&&e.pagesElement.appendChild(e._generatePageButton(s));this.footerRedraw()},O.prototype._generatePageButton=function(e){var t=this,o=document.createElement("button");return o.classList.add("tabulator-page"),e==t.page&&o.classList.add("active"),o.setAttribute("type","button"),o.setAttribute("role","button"),t.table.modules.localize.bind("pagination|page_title",function(t){o.setAttribute("aria-label",t+" "+e),o.setAttribute("title",t+" "+e)}),o.setAttribute("data-page",e),o.textContent=e,o.addEventListener("click",function(o){t.setPage(e)}),o},O.prototype.previousPage=function(){var e=this;return new Promise(function(t,o){e.page>1?(e.page--,e.trigger().then(function(){t()}).catch(function(){o()}),e.table.options.persistence&&e.table.modExists("persistence",!0)&&e.table.modules.persistence.config.page&&e.table.modules.persistence.save("page")):(console.warn("Pagination Error - Previous page would be less than page 1:",0),o())})},O.prototype.nextPage=function(){var e=this;return new Promise(function(t,o){e.page<e.max?(e.page++,e.trigger().then(function(){t()}).catch(function(){o()}),e.table.options.persistence&&e.table.modExists("persistence",!0)&&e.table.modules.persistence.config.page&&e.table.modules.persistence.save("page")):(e.progressiveLoad||console.warn("Pagination Error - Next page would be greater than maximum page of "+e.max+":",e.max+1),o())})},O.prototype.getPage=function(){return this.page},O.prototype.getPageMax=function(){return this.max},O.prototype.getPageSize=function(e){return this.size},O.prototype.getMode=function(){return this.mode},O.prototype.getRows=function(e){var t,o,i;if("local"==this.mode){t=[],!0===this.size?(o=0,i=e.length-1):(o=this.size*(this.page-1),i=o+parseInt(this.size)),this._setPageButtons();for(var n=o;n<i;n++)e[n]&&t.push(e[n]);return t}return this._setPageButtons(),e.slice(0)},O.prototype.trigger=function(){var e,t=this;return new Promise(function(o,i){switch(t.mode){case"local":e=t.table.rowManager.scrollLeft,t.table.rowManager.refreshActiveData("page"),t.table.rowManager.scrollHorizontal(e),t.table.options.pageLoaded.call(t.table,t.getPage()),o();break;case"remote":case"progressive_load":case"progressive_scroll":t.table.modules.ajax.blockActiveRequest(),t._getRemotePage().then(function(){o()}).catch(function(){i()});break;default:console.warn("Pagination Error - no such pagination mode:",t.mode),i()}})},O.prototype._getRemotePage=function(){var e,t,o=this,i=this;return new Promise(function(n,s){if(i.table.modExists("ajax",!0)||s(),e=d.prototype.helpers.deepClone(i.table.modules.ajax.getParams()||{}),t=i.table.modules.ajax.getParams(),t[o.dataSentNames.page]=i.page,o.size&&(t[o.dataSentNames.size]=o.size),o.table.options.ajaxSorting&&o.table.modExists("sort")){var r=i.table.modules.sort.getSort();r.forEach(function(e){delete e.column}),t[o.dataSentNames.sorters]=r}if(o.table.options.ajaxFiltering&&o.table.modExists("filter")){var a=i.table.modules.filter.getFilters(!0,!0);t[o.dataSentNames.filters]=a}i.table.modules.ajax.setParams(t),i.table.modules.ajax.sendRequest(o.progressiveLoad).then(function(e){i._parseRemoteData(e),n()}).catch(function(e){s()}),i.table.modules.ajax.setParams(e)})},O.prototype._parseRemoteData=function(e){var t,e,o,i=this;if(void 0===e[this.dataReceivedNames.last_page]&&console.warn("Remote Pagination Error - Server response missing '"+this.dataReceivedNames.last_page+"' property"),e[this.dataReceivedNames.data]){if(this.max=parseInt(e[this.dataReceivedNames.last_page])||1,this.progressiveLoad)switch(this.mode){case"progressive_load":1==this.page?this.table.rowManager.setData(e[this.dataReceivedNames.data],!1,this.initialLoad&&1==this.page):this.table.rowManager.addRows(e[this.dataReceivedNames.data]),this.page<this.max&&setTimeout(function(){i.nextPage().then(function(){}).catch(function(){})},i.table.options.ajaxProgressiveLoadDelay);break;case"progressive_scroll":e=this.table.rowManager.getData().concat(e[this.dataReceivedNames.data]),this.table.rowManager.setData(e,!0,this.initialLoad&&1==this.page),o=this.table.options.ajaxProgressiveLoadScrollMargin||2*this.table.rowManager.element.clientHeight,i.table.rowManager.element.scrollHeight<=i.table.rowManager.element.clientHeight+o&&i.nextPage().then(function(){}).catch(function(){})}else t=this.table.rowManager.scrollLeft,this.table.rowManager.setData(e[this.dataReceivedNames.data],!1,this.initialLoad&&1==this.page),this.table.rowManager.scrollHorizontal(t),this.table.columnManager.scrollHorizontal(t),this.table.options.pageLoaded.call(this.table,this.getPage());this.initialLoad=!1}else console.warn("Remote Pagination Error - Server response missing '"+this.dataReceivedNames.data+"' property")},O.prototype.footerRedraw=function(){var e=this.table.footerManager.element;Math.ceil(e.clientWidth)-e.scrollWidth<0?this.pagesElement.style.display="none":(this.pagesElement.style.display="",Math.ceil(e.clientWidth)-e.scrollWidth<0&&(this.pagesElement.style.display="none"))},O.prototype.paginationDataSentNames={page:"page",size:"size",sorters:"sorters",filters:"filters"},O.prototype.paginationDataReceivedNames={current_page:"current_page",last_page:"last_page",data:"data"},d.prototype.registerModule("page",O);var I=function(e){this.table=e,this.mode="",this.id="",this.defWatcherBlock=!1,this.config={},this.readFunc=!1,this.writeFunc=!1};I.prototype.localStorageTest=function(){var e="_tabulator_test";try{return window.localStorage.setItem(e,e),window.localStorage.removeItem(e),!0}catch(e){return!1}},I.prototype.initialize=function(){var e,t=this.table.options.persistenceMode,o=this.table.options.persistenceID;this.mode=!0!==t?t:this.localStorageTest()?"local":"cookie",this.table.options.persistenceReaderFunc?"function"==typeof this.table.options.persistenceReaderFunc?this.readFunc=this.table.options.persistenceReaderFunc:this.readers[this.table.options.persistenceReaderFunc]?this.readFunc=this.readers[this.table.options.persistenceReaderFunc]:console.warn("Persistence Read Error - invalid reader set",this.table.options.persistenceReaderFunc):this.readers[this.mode]?this.readFunc=this.readers[this.mode]:console.warn("Persistence Read Error - invalid reader set",this.mode),this.table.options.persistenceWriterFunc?"function"==typeof this.table.options.persistenceWriterFunc?this.writeFunc=this.table.options.persistenceWriterFunc:this.readers[this.table.options.persistenceWriterFunc]?this.writeFunc=this.readers[this.table.options.persistenceWriterFunc]:console.warn("Persistence Write Error - invalid reader set",this.table.options.persistenceWriterFunc):this.writers[this.mode]?this.writeFunc=this.writers[this.mode]:console.warn("Persistence Write Error - invalid writer set",this.mode),this.id="tabulator-"+(o||this.table.element.getAttribute("id")||""),this.config={sort:!0===this.table.options.persistence||this.table.options.persistence.sort,filter:!0===this.table.options.persistence||this.table.options.persistence.filter,group:!0===this.table.options.persistence||this.table.options.persistence.group,page:!0===this.table.options.persistence||this.table.options.persistence.page,columns:!0===this.table.options.persistence?["title","width","visible"]:this.table.options.persistence.columns},this.config.page&&(e=this.retreiveData("page"))&&(void 0===e.paginationSize||!0!==this.config.page&&!this.config.page.size||(this.table.options.paginationSize=e.paginationSize),void 0===e.paginationInitialPage||!0!==this.config.page&&!this.config.page.page||(this.table.options.paginationInitialPage=e.paginationInitialPage)),this.config.group&&(e=this.retreiveData("group"))&&(void 0===e.groupBy||!0!==this.config.group&&!this.config.group.groupBy||(this.table.options.groupBy=e.groupBy),void 0===e.groupStartOpen||!0!==this.config.group&&!this.config.group.groupStartOpen||(this.table.options.groupStartOpen=e.groupStartOpen),void 0===e.groupHeader||!0!==this.config.group&&!this.config.group.groupHeader||(this.table.options.groupHeader=e.groupHeader))},I.prototype.initializeColumn=function(e){var t,o,i=this;this.config.columns&&(this.defWatcherBlock=!0,t=e.getDefinition(),o=!0===this.config.columns?Object.keys(t):this.config.columns,o.forEach(function(e){var o=Object.getOwnPropertyDescriptor(t,e),n=t[e];o&&Object.defineProperty(t,e,{set:function(e){n=e,i.defWatcherBlock||i.save("columns"),o.set&&o.set(e)},get:function(){return o.get&&o.get(),n}})}),this.defWatcherBlock=!1)},I.prototype.load=function(e,t){var o=this.retreiveData(e);return t&&(o=o?this.mergeDefinition(t,o):t),o},I.prototype.retreiveData=function(e){return!!this.readFunc&&this.readFunc(this.id,e)},I.prototype.mergeDefinition=function(e,t){var o=this,i=[];return t=t||[],t.forEach(function(t,n){var s,r=o._findColumn(e,t);r&&(!0===o.config.columns||void 0==o.config.columns?(s=Object.keys(r),s.push("width")):s=o.config.columns,s.forEach(function(e){void 0!==t[e]&&(r[e]=t[e])}),r.columns&&(r.columns=o.mergeDefinition(r.columns,t.columns)),i.push(r))}),e.forEach(function(e,n){o._findColumn(t,e)||(i.length>n?i.splice(n,0,e):i.push(e))}),i},I.prototype._findColumn=function(e,t){var o=t.columns?"group":t.field?"field":"object";return e.find(function(e){switch(o){case"group":return e.title===t.title&&e.columns.length===t.columns.length;case"field":return e.field===t.field;case"object":return e===t}})},I.prototype.save=function(e){var t={};switch(e){case"columns":t=this.parseColumns(this.table.columnManager.getColumns());break;case"filter":t=this.table.modules.filter.getFilters();break;case"sort":t=this.validateSorters(this.table.modules.sort.getSort());break;case"group":t=this.getGroupConfig();break;case"page":t=this.getPageConfig()}this.writeFunc&&this.writeFunc(this.id,e,t)},I.prototype.validateSorters=function(e){return e.forEach(function(e){e.column=e.field,delete e.field}),e},I.prototype.getGroupConfig=function(){return this.config.group&&((!0===this.config.group||this.config.group.groupBy)&&(data.groupBy=this.table.options.groupBy),(!0===this.config.group||this.config.group.groupStartOpen)&&(data.groupStartOpen=this.table.options.groupStartOpen),(!0===this.config.group||this.config.group.groupHeader)&&(data.groupHeader=this.table.options.groupHeader)),data},I.prototype.getPageConfig=function(){var e={};return this.config.page&&((!0===this.config.page||this.config.page.size)&&(e.paginationSize=this.table.modules.page.getPageSize()),(!0===this.config.page||this.config.page.page)&&(e.paginationInitialPage=this.table.modules.page.getPage())),e},I.prototype.parseColumns=function(e){var t=this,o=[];return e.forEach(function(e){var i,n={},s=e.getDefinition();e.isGroup?(n.title=s.title,n.columns=t.parseColumns(e.getColumns())):(n.field=e.getField(),!0===t.config.columns||void 0==t.config.columns?(i=Object.keys(s),i.push("width")):i=t.config.columns,i.forEach(function(t){switch(t){case"width":n.width=e.getWidth();break;case"visible":n.visible=e.visible;break;default:n[t]=s[t]}})),o.push(n)}),o},I.prototype.readers={local:function(e,t){var o=localStorage.getItem(e+"-"+t);return!!o&&JSON.parse(o)},cookie:function(e,t){var o,i,n=document.cookie,s=e+"-"+t,r=n.indexOf(s+"=");return r>-1&&(n=n.substr(r),o=n.indexOf(";"),o>-1&&(n=n.substr(0,o)),i=n.replace(s+"=","")),!!i&&JSON.parse(i)}},I.prototype.writers={local:function(e,t,o){localStorage.setItem(e+"-"+t,JSON.stringify(o))},cookie:function(e,t,o){var i=new Date;i.setDate(i.getDate()+1e4),document.cookie=e+"-"+t+"="+JSON.stringify(o)+"; expires="+i.toUTCString()}},d.prototype.registerModule("persistence",I);var j=function(e){this.table=e,this.element=!1,this.manualBlock=!1};j.prototype.initialize=function(){window.addEventListener("beforeprint",this.replaceTable.bind(this)),window.addEventListener("afterprint",this.cleanup.bind(this))},j.prototype.replaceTable=function(){this.manualBlock||(this.element=document.createElement("div"),this.element.classList.add("tabulator-print-table"),this.element.appendChild(this.table.modules.export.genereateTable(this.table.options.printConfig,this.table.options.printStyled,this.table.options.printRowRange,"print")),this.table.element.style.display="none",this.table.element.parentNode.insertBefore(this.element,this.table.element))},j.prototype.cleanup=function(){document.body.classList.remove("tabulator-print-fullscreen-hide"),this.element&&this.element.parentNode&&(this.element.parentNode.removeChild(this.element),this.table.element.style.display="")},j.prototype.printFullscreen=function(e,t,o){var i,n,s=window.scrollX,r=window.scrollY,a=document.createElement("div"),l=document.createElement("div"),c=this.table.modules.export.genereateTable(void 0!==o?o:this.table.options.printConfig,void 0!==t?t:this.table.options.printStyled,e,"print");this.manualBlock=!0,this.element=document.createElement("div"),this.element.classList.add("tabulator-print-fullscreen"),this.table.options.printHeader&&(a.classList.add("tabulator-print-header"),i="function"==typeof this.table.options.printHeader?this.table.options.printHeader.call(this.table):this.table.options.printHeader,"string"==typeof i?a.innerHTML=i:a.appendChild(i),this.element.appendChild(a)),this.element.appendChild(c),this.table.options.printFooter&&(l.classList.add("tabulator-print-footer"),n="function"==typeof this.table.options.printFooter?this.table.options.printFooter.call(this.table):this.table.options.printFooter,"string"==typeof n?l.innerHTML=n:l.appendChild(n),this.element.appendChild(l)),document.body.classList.add("tabulator-print-fullscreen-hide"),document.body.appendChild(this.element),this.table.options.printFormatter&&this.table.options.printFormatter(this.element,c),window.print(),this.cleanup(),window.scrollTo(s,r),this.manualBlock=!1},d.prototype.registerModule("print",j);var V=function(e){this.table=e,this.data=!1,this.blocked=!1,this.origFuncs={},this.currentVersion=0};V.prototype.watchData=function(e){var t,o=this;this.currentVersion++,t=this.currentVersion,o.unwatchData(),o.data=e,o.origFuncs.push=e.push,Object.defineProperty(o.data,"push",{enumerable:!1,configurable:!0,value:function(){var i=Array.from(arguments);return o.blocked||t!==o.currentVersion||i.forEach(function(e){o.table.rowManager.addRowActual(e,!1)}),o.origFuncs.push.apply(e,arguments)}}),o.origFuncs.unshift=e.unshift,Object.defineProperty(o.data,"unshift",{enumerable:!1,configurable:!0,value:function(){var i=Array.from(arguments);return o.blocked||t!==o.currentVersion||i.forEach(function(e){o.table.rowManager.addRowActual(e,!0)}),o.origFuncs.unshift.apply(e,arguments)}}),o.origFuncs.shift=e.shift,Object.defineProperty(o.data,"shift",{enumerable:!1,configurable:!0,value:function(){var i;return o.blocked||t!==o.currentVersion||o.data.length&&(i=o.table.rowManager.getRowFromDataObject(o.data[0]))&&i.deleteActual(),o.origFuncs.shift.call(e)}}),o.origFuncs.pop=e.pop,Object.defineProperty(o.data,"pop",{enumerable:!1,configurable:!0,value:function(){var i;return o.blocked||t!==o.currentVersion||o.data.length&&(i=o.table.rowManager.getRowFromDataObject(o.data[o.data.length-1]))&&i.deleteActual(),o.origFuncs.pop.call(e)}}),o.origFuncs.splice=e.splice,Object.defineProperty(o.data,"splice",{enumerable:!1,configurable:!0,value:function(){var i,n=Array.from(arguments),s=n[0]<0?e.length+n[0]:n[0],r=n[1],a=!!n[2]&&n.slice(2);if(!o.blocked&&t===o.currentVersion){if(a&&(i=!!e[s]&&o.table.rowManager.getRowFromDataObject(e[s]),i?a.forEach(function(e){o.table.rowManager.addRowActual(e,!0,i,!0)}):(a=a.slice().reverse(),a.forEach(function(e){o.table.rowManager.addRowActual(e,!0,!1,!0)}))),0!==r){var l=e.slice(s,void 0===n[1]?n[1]:s+r);l.forEach(function(e,t){var i=o.table.rowManager.getRowFromDataObject(e);i&&i.deleteActual(t!==l.length-1)})}(a||0!==r)&&o.table.rowManager.reRenderInPosition()}return o.origFuncs.splice.apply(e,arguments)}})},V.prototype.unwatchData=function(){if(!1!==this.data)for(var e in this.origFuncs)Object.defineProperty(this.data,e,{enumerable:!0,configurable:!0,writable:!0,value:this.origFuncs.key})},V.prototype.watchRow=function(e){var t=e.getData();this.blocked=!0;for(var o in t)this.watchKey(e,t,o);this.blocked=!1},V.prototype.watchKey=function(e,t,o){var i=this,n=Object.getOwnPropertyDescriptor(t,o),s=t[o],r=this.currentVersion;Object.defineProperty(t,o,{set:function(t){if(s=t,!i.blocked&&r===i.currentVersion){var a={};a[o]=t,e.updateData(a)}n.set&&n.set(t)},get:function(){return n.get&&n.get(),s}})},V.prototype.unwatchRow=function(e){var t=e.getData();for(var o in t)Object.defineProperty(t,o,{value:t[o]})},V.prototype.block=function(){this.blocked=!0},V.prototype.unblock=function(){this.blocked=!1},d.prototype.registerModule("reactiveData",V);var W=function(e){this.table=e,this.startColumn=!1,this.startX=!1,this.startWidth=!1,this.handle=null,this.prevHandle=null};W.prototype.initializeColumn=function(e,t,o){var i=this,n=!1,s=this.table.options.resizableColumns;if("header"===e&&(n="textarea"==t.definition.formatter||t.definition.variableHeight,t.modules.resize={variableHeight:n}),!0===s||s==e){var r=document.createElement("div");r.className="tabulator-col-resize-handle";var a=document.createElement("div");a.className="tabulator-col-resize-handle prev",r.addEventListener("click",function(e){e.stopPropagation()});var l=function(e){var o=t.getLastColumn();o&&i._checkResizability(o)&&(i.startColumn=t,i._mouseDown(e,o,r))};r.addEventListener("mousedown",l),r.addEventListener("touchstart",l,{passive:!0}),r.addEventListener("dblclick",function(e){var o=t.getLastColumn();o&&i._checkResizability(o)&&(e.stopPropagation(),o.reinitializeWidth(!0))}),a.addEventListener("click",function(e){e.stopPropagation()});var c=function(e){var o,n,s;(o=t.getFirstColumn())&&(n=i.table.columnManager.findColumnIndex(o),(s=n>0&&i.table.columnManager.getColumnByIndex(n-1))&&i._checkResizability(s)&&(i.startColumn=t,i._mouseDown(e,s,a)))};a.addEventListener("mousedown",c),a.addEventListener("touchstart",c,{passive:!0}),a.addEventListener("dblclick",function(e){var o,n,s;(o=t.getFirstColumn())&&(n=i.table.columnManager.findColumnIndex(o),(s=n>0&&i.table.columnManager.getColumnByIndex(n-1))&&i._checkResizability(s)&&(e.stopPropagation(),s.reinitializeWidth(!0)))}),o.appendChild(r),o.appendChild(a)}},W.prototype._checkResizability=function(e){return void 0!==e.definition.resizable?e.definition.resizable:this.table.options.resizableColumns},W.prototype._mouseDown=function(e,t,o){function i(e){t.setWidth(s.startWidth+((void 0===e.screenX?e.touches[0].screenX:e.screenX)-s.startX)),!s.table.browserSlow&&t.modules.resize&&t.modules.resize.variableHeight&&t.checkCellHeights()}function n(e){s.startColumn.modules.edit&&(s.startColumn.modules.edit.blocked=!1),s.table.browserSlow&&t.modules.resize&&t.modules.resize.variableHeight&&t.checkCellHeights(),document.body.removeEventListener("mouseup",n),document.body.removeEventListener("mousemove",i),o.removeEventListener("touchmove",i),o.removeEventListener("touchend",n),s.table.element.classList.remove("tabulator-block-select"),s.table.options.persistence&&s.table.modExists("persistence",!0)&&s.table.modules.persistence.config.columns&&s.table.modules.persistence.save("columns"),s.table.options.columnResized.call(s.table,t.getComponent())}var s=this;s.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),s.startColumn.modules.edit&&(s.startColumn.modules.edit.blocked=!0),s.startX=void 0===e.screenX?e.touches[0].screenX:e.screenX,s.startWidth=t.getWidth(),document.body.addEventListener("mousemove",i),document.body.addEventListener("mouseup",n),o.addEventListener("touchmove",i,{passive:!0}),o.addEventListener("touchend",n)},d.prototype.registerModule("resizeColumns",W);var G=function(e){this.table=e,this.startColumn=!1,this.startY=!1,this.startHeight=!1,this.handle=null,this.prevHandle=null};G.prototype.initializeRow=function(e){var t=this,o=e.getElement(),i=document.createElement("div");i.className="tabulator-row-resize-handle";var n=document.createElement("div");n.className="tabulator-row-resize-handle prev",i.addEventListener("click",function(e){e.stopPropagation()});var s=function(o){t.startRow=e,t._mouseDown(o,e,i)};i.addEventListener("mousedown",s),i.addEventListener("touchstart",s,{passive:!0}),n.addEventListener("click",function(e){e.stopPropagation()});var r=function(o){var i=t.table.rowManager.prevDisplayRow(e);i&&(t.startRow=i,t._mouseDown(o,i,n))};n.addEventListener("mousedown",r),n.addEventListener("touchstart",r,{passive:!0}),o.appendChild(i),o.appendChild(n)},G.prototype._mouseDown=function(e,t,o){function i(e){t.setHeight(s.startHeight+((void 0===e.screenY?e.touches[0].screenY:e.screenY)-s.startY))}function n(e){document.body.removeEventListener("mouseup",i),document.body.removeEventListener("mousemove",i),o.removeEventListener("touchmove",i),o.removeEventListener("touchend",n),s.table.element.classList.remove("tabulator-block-select"),s.table.options.rowResized.call(this.table,t.getComponent())}var s=this;s.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),s.startY=void 0===e.screenY?e.touches[0].screenY:e.screenY,s.startHeight=t.getHeight(),document.body.addEventListener("mousemove",i),document.body.addEventListener("mouseup",n),o.addEventListener("touchmove",i,{passive:!0}),o.addEventListener("touchend",n)},d.prototype.registerModule("resizeRows",G);var U=function(e){this.table=e,this.binding=!1,this.observer=!1,this.containerObserver=!1,this.tableHeight=0,this.tableWidth=0,this.containerHeight=0,this.containerWidth=0,this.autoResize=!1};U.prototype.initialize=function(e){var t,o=this,i=this.table;this.tableHeight=i.element.clientHeight,this.tableWidth=i.element.clientWidth,i.element.parentNode&&(this.containerHeight=i.element.parentNode.clientHeight,this.containerWidth=i.element.parentNode.clientWidth),"undefined"!=typeof ResizeObserver&&"virtual"===i.rowManager.getRenderMode()?(this.autoResize=!0,this.observer=new ResizeObserver(function(e){if(!i.browserMobile||i.browserMobile&&!i.modules.edit.currentCell){var t=Math.floor(e[0].contentRect.height),n=Math.floor(e[0].contentRect.width);o.tableHeight==t&&o.tableWidth==n||(o.tableHeight=t,o.tableWidth=n,i.element.parentNode&&(o.containerHeight=i.element.parentNode.clientHeight,o.containerWidth=i.element.parentNode.clientWidth),i.redraw())}}),this.observer.observe(i.element),t=window.getComputedStyle(i.element),this.table.element.parentNode&&!this.table.rowManager.fixedHeight&&(t.getPropertyValue("max-height")||t.getPropertyValue("min-height"))&&(this.containerObserver=new ResizeObserver(function(e){if(!i.browserMobile||i.browserMobile&&!i.modules.edit.currentCell){var t=Math.floor(e[0].contentRect.height),n=Math.floor(e[0].contentRect.width);o.containerHeight==t&&o.containerWidth==n||(o.containerHeight=t,o.containerWidth=n,o.tableHeight=i.element.clientHeight,o.tableWidth=i.element.clientWidth,i.redraw()),i.redraw()}}),this.containerObserver.observe(this.table.element.parentNode))):(this.binding=function(){(!i.browserMobile||i.browserMobile&&!i.modules.edit.currentCell)&&i.redraw()},window.addEventListener("resize",this.binding))},U.prototype.clearBindings=function(e){this.binding&&window.removeEventListener("resize",this.binding),this.observer&&this.observer.unobserve(this.table.element),this.containerObserver&&this.containerObserver.unobserve(this.table.element.parentNode)},d.prototype.registerModule("resizeTable",U);var Y=function(e){this.table=e,this.columns=[],this.hiddenColumns=[],this.mode="",this.index=0,this.collapseFormatter=[],this.collapseStartOpen=!0,this.collapseHandleColumn=!1};Y.prototype.initialize=function(){var e=this,t=[];this.mode=this.table.options.responsiveLayout,this.collapseFormatter=this.table.options.responsiveLayoutCollapseFormatter||this.formatCollapsedData,this.collapseStartOpen=this.table.options.responsiveLayoutCollapseStartOpen,this.hiddenColumns=[],this.table.columnManager.columnsByIndex.forEach(function(o,i){o.modules.responsive&&o.modules.responsive.order&&o.modules.responsive.visible&&(o.modules.responsive.index=i,t.push(o),o.visible||"collapse"!==e.mode||e.hiddenColumns.push(o))}),t=t.reverse(),t=t.sort(function(e,t){return t.modules.responsive.order-e.modules.responsive.order||t.modules.responsive.index-e.modules.responsive.index}),this.columns=t,"collapse"===this.mode&&this.generateCollapsedContent();for(var o=this.table.columnManager.columnsByIndex,i=Array.isArray(o),n=0,o=i?o:o[Symbol.iterator]();;){var s;if(i){if(n>=o.length)break;s=o[n++]}else{if(n=o.next(),n.done)break;s=n.value}var r=s;if("responsiveCollapse"==r.definition.formatter){this.collapseHandleColumn=r;break}}this.collapseHandleColumn&&(this.hiddenColumns.length?this.collapseHandleColumn.show():this.collapseHandleColumn.hide())},Y.prototype.initializeColumn=function(e){var t=e.getDefinition();e.modules.responsive={order:void 0===t.responsive?1:t.responsive,visible:!1!==t.visible}},Y.prototype.initializeRow=function(e){var t;"calc"!==e.type&&(t=document.createElement("div"),t.classList.add("tabulator-responsive-collapse"),e.modules.responsiveLayout={element:t,open:this.collapseStartOpen},this.collapseStartOpen||(t.style.display="none"))},Y.prototype.layoutRow=function(e){var t=e.getElement();e.modules.responsiveLayout&&(t.appendChild(e.modules.responsiveLayout.element),this.generateCollapsedRowContent(e))},Y.prototype.updateColumnVisibility=function(e,t){e.modules.responsive&&(e.modules.responsive.visible=t,this.initialize())},Y.prototype.hideColumn=function(e){var t=this.hiddenColumns.length;e.hide(!1,!0),"collapse"===this.mode&&(this.hiddenColumns.unshift(e),this.generateCollapsedContent(),this.collapseHandleColumn&&!t&&this.collapseHandleColumn.show())},Y.prototype.showColumn=function(e){var t;e.show(!1,!0),e.setWidth(e.getWidth()),"collapse"===this.mode&&(t=this.hiddenColumns.indexOf(e),t>-1&&this.hiddenColumns.splice(t,1),this.generateCollapsedContent(),this.collapseHandleColumn&&!this.hiddenColumns.length&&this.collapseHandleColumn.hide())},Y.prototype.update=function(){for(var e=this,t=!0;t;){var o="fitColumns"==e.table.modules.layout.getMode()?e.table.columnManager.getFlexBaseWidth():e.table.columnManager.getWidth(),i=(e.table.options.headerVisible?e.table.columnManager.element.clientWidth:e.table.element.clientWidth)-o;if(i<0){var n=e.columns[e.index];n?(e.hideColumn(n),e.index++):t=!1}else{var s=e.columns[e.index-1]
-;s&&i>0&&i>=s.getWidth()?(e.showColumn(s),e.index--):t=!1}e.table.rowManager.activeRowsCount||e.table.rowManager.renderEmptyScroll()}},Y.prototype.generateCollapsedContent=function(){var e=this;this.table.rowManager.getDisplayRows().forEach(function(t){e.generateCollapsedRowContent(t)})},Y.prototype.generateCollapsedRowContent=function(e){var t,o;if(e.modules.responsiveLayout){for(t=e.modules.responsiveLayout.element;t.firstChild;)t.removeChild(t.firstChild);o=this.collapseFormatter(this.generateCollapsedRowData(e)),o&&t.appendChild(o)}},Y.prototype.generateCollapsedRowData=function(e){var t,o=this,i=e.getData(),n=[];return this.hiddenColumns.forEach(function(s){var r=s.getFieldValue(i);s.definition.title&&s.field&&(s.modules.format&&o.table.options.responsiveLayoutCollapseUseFormatters?(t={value:!1,data:{},getValue:function(){return r},getData:function(){return i},getElement:function(){return document.createElement("div")},getRow:function(){return e.getComponent()},getColumn:function(){return s.getComponent()}},n.push({title:s.definition.title,value:s.modules.format.formatter.call(o.table.modules.format,t,s.modules.format.params)})):n.push({title:s.definition.title,value:r}))}),n},Y.prototype.formatCollapsedData=function(e){var t=document.createElement("table"),o="";return e.forEach(function(e){var t=document.createElement("div");e.value instanceof Node&&(t.appendChild(e.value),e.value=t.innerHTML),o+="<tr><td><strong>"+e.title+"</strong></td><td>"+e.value+"</td></tr>"}),t.innerHTML=o,Object.keys(e).length?t:""},d.prototype.registerModule("responsiveLayout",Y);var q=function(e){this.table=e,this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],this.headerCheckboxElement=null};q.prototype.clearSelectionData=function(e){this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],e||this._rowSelectionChanged()},q.prototype.initializeRow=function(e){var t=this,o=e.getElement(),i=function e(){setTimeout(function(){t.selecting=!1},50),document.body.removeEventListener("mouseup",e)};e.modules.select={selected:!1},t.table.options.selectableCheck.call(this.table,e.getComponent())?(o.classList.add("tabulator-selectable"),o.classList.remove("tabulator-unselectable"),t.table.options.selectable&&"highlight"!=t.table.options.selectable&&("click"===t.table.options.selectableRangeMode?o.addEventListener("click",function(o){if(o.shiftKey){t.table._clearSelection(),t.lastClickedRow=t.lastClickedRow||e;var i=t.table.rowManager.getDisplayRowIndex(t.lastClickedRow),n=t.table.rowManager.getDisplayRowIndex(e),s=i<=n?i:n,r=i>=n?i:n,a=t.table.rowManager.getDisplayRows().slice(0),l=a.splice(s,r-s+1);o.ctrlKey||o.metaKey?(l.forEach(function(o){o!==t.lastClickedRow&&(!0===t.table.options.selectable||t.isRowSelected(e)?t.toggleRow(o):t.selectedRows.length<t.table.options.selectable&&t.toggleRow(o))}),t.lastClickedRow=e):(t.deselectRows(void 0,!0),!0!==t.table.options.selectable&&l.length>t.table.options.selectable&&(l=l.slice(0,t.table.options.selectable)),t.selectRows(l)),t.table._clearSelection()}else o.ctrlKey||o.metaKey?(t.toggleRow(e),t.lastClickedRow=e):(t.deselectRows(void 0,!0),t.selectRows(e),t.lastClickedRow=e)}):(o.addEventListener("click",function(o){t.table.modExists("edit")&&t.table.modules.edit.getCurrentCell()||t.table._clearSelection(),t.selecting||t.toggleRow(e)}),o.addEventListener("mousedown",function(o){if(o.shiftKey)return t.table._clearSelection(),t.selecting=!0,t.selectPrev=[],document.body.addEventListener("mouseup",i),document.body.addEventListener("keyup",i),t.toggleRow(e),!1}),o.addEventListener("mouseenter",function(o){t.selecting&&(t.table._clearSelection(),t.toggleRow(e),t.selectPrev[1]==e&&t.toggleRow(t.selectPrev[0]))}),o.addEventListener("mouseout",function(o){t.selecting&&(t.table._clearSelection(),t.selectPrev.unshift(e))})))):(o.classList.add("tabulator-unselectable"),o.classList.remove("tabulator-selectable"))},q.prototype.toggleRow=function(e){this.table.options.selectableCheck.call(this.table,e.getComponent())&&(e.modules.select&&e.modules.select.selected?this._deselectRow(e):this._selectRow(e))},q.prototype.selectRows=function(e){var t,o=this;switch(void 0===e?"undefined":_typeof(e)){case"undefined":this.table.rowManager.rows.forEach(function(e){o._selectRow(e,!0,!0)}),this._rowSelectionChanged();break;case"string":t=this.table.rowManager.findRow(e),t?this._selectRow(t,!0,!0):this.table.rowManager.getRows(e).forEach(function(e){o._selectRow(e,!0,!0)}),this._rowSelectionChanged();break;default:Array.isArray(e)?(e.forEach(function(e){o._selectRow(e,!0,!0)}),this._rowSelectionChanged()):this._selectRow(e,!1,!0)}},q.prototype._selectRow=function(e,t,o){if(!isNaN(this.table.options.selectable)&&!0!==this.table.options.selectable&&!o&&this.selectedRows.length>=this.table.options.selectable){if(!this.table.options.selectableRollingSelection)return!1;this._deselectRow(this.selectedRows[0])}var i=this.table.rowManager.findRow(e);i?-1==this.selectedRows.indexOf(i)&&(i.modules.select||(i.modules.select={}),i.modules.select.selected=!0,i.modules.select.checkboxEl&&(i.modules.select.checkboxEl.checked=!0),i.getElement().classList.add("tabulator-selected"),this.selectedRows.push(i),this.table.options.dataTreeSelectPropagate&&this.childRowSelection(i,!0),t||this.table.options.rowSelected.call(this.table,i.getComponent()),this._rowSelectionChanged(t)):t||console.warn("Selection Error - No such row found, ignoring selection:"+e)},q.prototype.isRowSelected=function(e){return-1!==this.selectedRows.indexOf(e)},q.prototype.deselectRows=function(e,t){var o,i=this;if(void 0===e){o=i.selectedRows.length;for(var n=0;n<o;n++)i._deselectRow(i.selectedRows[0],!0);i._rowSelectionChanged(t)}else Array.isArray(e)?(e.forEach(function(e){i._deselectRow(e,!0)}),i._rowSelectionChanged(t)):i._deselectRow(e,t)},q.prototype._deselectRow=function(e,t){var o,i=this,n=i.table.rowManager.findRow(e);n?(o=i.selectedRows.findIndex(function(e){return e==n}))>-1&&(n.modules.select||(n.modules.select={}),n.modules.select.selected=!1,n.modules.select.checkboxEl&&(n.modules.select.checkboxEl.checked=!1),n.getElement().classList.remove("tabulator-selected"),i.selectedRows.splice(o,1),this.table.options.dataTreeSelectPropagate&&this.childRowSelection(n,!1),t||i.table.options.rowDeselected.call(this.table,n.getComponent()),i._rowSelectionChanged(t)):t||console.warn("Deselection Error - No such row found, ignoring selection:"+e)},q.prototype.getSelectedData=function(){var e=[];return this.selectedRows.forEach(function(t){e.push(t.getData())}),e},q.prototype.getSelectedRows=function(){var e=[];return this.selectedRows.forEach(function(t){e.push(t.getComponent())}),e},q.prototype._rowSelectionChanged=function(e){this.headerCheckboxElement&&(0===this.selectedRows.length?(this.headerCheckboxElement.checked=!1,this.headerCheckboxElement.indeterminate=!1):this.table.rowManager.rows.length===this.selectedRows.length?(this.headerCheckboxElement.checked=!0,this.headerCheckboxElement.indeterminate=!1):(this.headerCheckboxElement.indeterminate=!0,this.headerCheckboxElement.checked=!1)),e||this.table.options.rowSelectionChanged.call(this.table,this.getSelectedData(),this.getSelectedRows())},q.prototype.registerRowSelectCheckbox=function(e,t){e._row.modules.select||(e._row.modules.select={}),e._row.modules.select.checkboxEl=t},q.prototype.registerHeaderSelectCheckbox=function(e){this.headerCheckboxElement=e},q.prototype.childRowSelection=function(e,t){var o=this.table.modules.dataTree.getChildren(e);if(t)for(var i=o,n=Array.isArray(i),s=0,i=n?i:i[Symbol.iterator]();;){var r;if(n){if(s>=i.length)break;r=i[s++]}else{if(s=i.next(),s.done)break;r=s.value}var a=r;this._selectRow(a,!0)}else for(var l=o,c=Array.isArray(l),u=0,l=c?l:l[Symbol.iterator]();;){var d;if(c){if(u>=l.length)break;d=l[u++]}else{if(u=l.next(),u.done)break;d=u.value}var h=d;this._deselectRow(h,!0)}},d.prototype.registerModule("selectRow",q);var X=function(e){this.table=e,this.sortList=[],this.changed=!1};X.prototype.initializeColumn=function(e,t){var o,i,n=this,s=!1;switch(_typeof(e.definition.sorter)){case"string":n.sorters[e.definition.sorter]?s=n.sorters[e.definition.sorter]:console.warn("Sort Error - No such sorter found: ",e.definition.sorter);break;case"function":s=e.definition.sorter}e.modules.sort={sorter:s,dir:"none",params:e.definition.sorterParams||{},startingDir:e.definition.headerSortStartingDir||"asc",tristate:void 0!==e.definition.headerSortTristate?e.definition.headerSortTristate:this.table.options.headerSortTristate},(void 0===e.definition.headerSort?!1!==this.table.options.headerSort:!1!==e.definition.headerSort)&&(o=e.getElement(),o.classList.add("tabulator-sortable"),i=document.createElement("div"),i.classList.add("tabulator-arrow"),t.appendChild(i),o.addEventListener("click",function(t){var o="",i=[],s=!1;if(e.modules.sort){if(e.modules.sort.tristate)o="none"==e.modules.sort.dir?e.modules.sort.startingDir:e.modules.sort.dir==e.modules.sort.startingDir?"asc"==e.modules.sort.dir?"desc":"asc":"none";else switch(e.modules.sort.dir){case"asc":o="desc";break;case"desc":o="asc";break;default:o=e.modules.sort.startingDir}n.table.options.columnHeaderSortMulti&&(t.shiftKey||t.ctrlKey)?(i=n.getSort(),s=i.findIndex(function(t){return t.field===e.getField()}),s>-1?(i[s].dir=o,s!=i.length-1&&(s=i.splice(s,1)[0],"none"!=o&&i.push(s))):"none"!=o&&i.push({column:e,dir:o}),n.setSort(i)):"none"==o?n.clear():n.setSort(e,o),n.table.rowManager.sorterRefresh(!n.sortList.length)}}))},X.prototype.hasChanged=function(){var e=this.changed;return this.changed=!1,e},X.prototype.getSort=function(){var e=this,t=[];return e.sortList.forEach(function(e){e.column&&t.push({column:e.column.getComponent(),field:e.column.getField(),dir:e.dir})}),t},X.prototype.setSort=function(e,t){var o=this,i=[];Array.isArray(e)||(e=[{column:e,dir:t}]),e.forEach(function(e){var t;t=o.table.columnManager.findColumn(e.column),t?(e.column=t,i.push(e),o.changed=!0):console.warn("Sort Warning - Sort field does not exist and is being ignored: ",e.column)}),o.sortList=i,this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.sort&&this.table.modules.persistence.save("sort")},X.prototype.clear=function(){this.setSort([])},X.prototype.findSorter=function(e){var t,o=this.table.rowManager.activeRows[0],i="string";if(o&&(o=o.getData(),e.getField()))switch(t=e.getFieldValue(o),void 0===t?"undefined":_typeof(t)){case"undefined":i="string";break;case"boolean":i="boolean";break;default:isNaN(t)||""===t?t.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)&&(i="alphanum"):i="number"}return this.sorters[i]},X.prototype.sort=function(e){var t=this,o=this.table.options.sortOrderReverse?t.sortList.slice().reverse():t.sortList,i=[],n=[];t.table.options.dataSorting&&t.table.options.dataSorting.call(t.table,t.getSort()),t.clearColumnHeaders(),t.table.options.ajaxSorting?o.forEach(function(e,o){t.setColumnHeader(e.column,e.dir)}):(o.forEach(function(e,o){var n=e.column.modules.sort;e.column&&n&&(n.sorter||(n.sorter=t.findSorter(e.column)),e.params="function"==typeof n.params?n.params(e.column.getComponent(),e.dir):n.params,i.push(e)),t.setColumnHeader(e.column,e.dir)}),i.length&&t._sortItems(e,i)),t.table.options.dataSorted&&(e.forEach(function(e){n.push(e.getComponent())}),t.table.options.dataSorted.call(t.table,t.getSort(),n))},X.prototype.clearColumnHeaders=function(){this.table.columnManager.getRealColumns().forEach(function(e){e.modules.sort&&(e.modules.sort.dir="none",e.getElement().setAttribute("aria-sort","none"))})},X.prototype.setColumnHeader=function(e,t){e.modules.sort.dir=t,e.getElement().setAttribute("aria-sort",t)},X.prototype._sortItems=function(e,t){var o=this,i=t.length-1;e.sort(function(e,n){for(var s,r=i;r>=0;r--){var a=t[r];if(0!==(s=o._sortRow(e,n,a.column,a.dir,a.params)))break}return s})},X.prototype._sortRow=function(e,t,o,i,n){var s,r,a="asc"==i?e:t,l="asc"==i?t:e;return e=o.getFieldValue(a.getData()),t=o.getFieldValue(l.getData()),e=void 0!==e?e:"",t=void 0!==t?t:"",s=a.getComponent(),r=l.getComponent(),o.modules.sort.sorter.call(this,e,t,s,r,o.getComponent(),i,n)},X.prototype.sorters={number:function(e,t,o,i,n,s,r){var a=r.alignEmptyValues,l=r.decimalSeparator||".",c=r.thousandSeparator||",",u=0;if(e=parseFloat(String(e).split(c).join("").split(l).join(".")),t=parseFloat(String(t).split(c).join("").split(l).join(".")),isNaN(e))u=isNaN(t)?0:-1;else{if(!isNaN(t))return e-t;u=1}return("top"===a&&"desc"===s||"bottom"===a&&"asc"===s)&&(u*=-1),u},string:function(e,t,o,i,n,s,r){var a,l=r.alignEmptyValues,c=0;if(e){if(t){switch(_typeof(r.locale)){case"boolean":r.locale&&(a=this.table.modules.localize.getLocale());break;case"string":a=r.locale}return String(e).toLowerCase().localeCompare(String(t).toLowerCase(),a)}c=1}else c=t?-1:0;return("top"===l&&"desc"===s||"bottom"===l&&"asc"===s)&&(c*=-1),c},date:function(e,t,o,i,n,s,r){return r.format||(r.format="DD/MM/YYYY"),this.sorters.datetime.call(this,e,t,o,i,n,s,r)},time:function(e,t,o,i,n,s,r){return r.format||(r.format="HH:mm"),this.sorters.datetime.call(this,e,t,o,i,n,s,r)},datetime:function(e,t,o,i,n,s,r){var a=r.format||"DD/MM/YYYY HH:mm:ss",l=r.alignEmptyValues,c=0;if("undefined"!=typeof moment){if(e=moment(e,a),t=moment(t,a),e.isValid()){if(t.isValid())return e-t;c=1}else c=t.isValid()?-1:0;return("top"===l&&"desc"===s||"bottom"===l&&"asc"===s)&&(c*=-1),c}console.error("Sort Error - 'datetime' sorter is dependant on moment.js")},boolean:function(e,t,o,i,n,s,r){return(!0===e||"true"===e||"True"===e||1===e?1:0)-(!0===t||"true"===t||"True"===t||1===t?1:0)},array:function(e,t,o,i,n,s,r){function a(e){switch(u){case"length":return e.length;case"sum":return e.reduce(function(e,t){return e+t});case"max":return Math.max.apply(null,e);case"min":return Math.min.apply(null,e);case"avg":return e.reduce(function(e,t){return e+t})/e.length}}var l=0,c=0,u=r.type||"length",d=r.alignEmptyValues,h=0;if(Array.isArray(e)){if(Array.isArray(t))return l=e?a(e):0,c=t?a(t):0,l-c;d=1}else d=Array.isArray(t)?-1:0;return("top"===d&&"desc"===s||"bottom"===d&&"asc"===s)&&(h*=-1),h},exists:function(e,t,o,i,n,s,r){return(void 0===e?0:1)-(void 0===t?0:1)},alphanum:function(e,t,o,i,n,s,r){var a,l,c,u,d,h=0,p=/(\d+)|(\D+)/g,m=/\d/,f=r.alignEmptyValues,g=0;if(e||0===e){if(t||0===t){if(isFinite(e)&&isFinite(t))return e-t;if(a=String(e).toLowerCase(),l=String(t).toLowerCase(),a===l)return 0;if(!m.test(a)||!m.test(l))return a>l?1:-1;for(a=a.match(p),l=l.match(p),d=a.length>l.length?l.length:a.length;h<d;)if(c=a[h],u=l[h++],c!==u)return isFinite(c)&&isFinite(u)?("0"===c.charAt(0)&&(c="."+c),"0"===u.charAt(0)&&(u="."+u),c-u):c>u?1:-1;return a.length>l.length}g=1}else g=t||0===t?-1:0;return("top"===f&&"desc"===s||"bottom"===f&&"asc"===s)&&(g*=-1),g}},d.prototype.registerModule("sort",X);var K=function(e){this.table=e,this.invalidCells=[]};return K.prototype.initializeColumn=function(e){var t,o=this,i=[];e.definition.validator&&(Array.isArray(e.definition.validator)?e.definition.validator.forEach(function(e){(t=o._extractValidator(e))&&i.push(t)}):(t=this._extractValidator(e.definition.validator))&&i.push(t),e.modules.validate=!!i.length&&i)},K.prototype._extractValidator=function(e){var t,o,i;switch(void 0===e?"undefined":_typeof(e)){case"string":return i=e.indexOf(":"),i>-1?(t=e.substring(0,i),o=e.substring(i+1)):t=e,this._buildValidator(t,o);case"function":return this._buildValidator(e);case"object":return this._buildValidator(e.type,e.parameters)}},K.prototype._buildValidator=function(e,t){var o="function"==typeof e?e:this.validators[e];return o?{type:"function"==typeof e?"function":e,func:o,params:t}:(console.warn("Validator Setup Error - No matching validator found:",e),!1)},K.prototype.validate=function(e,t,o){var i=this,n=[],s=this.invalidCells.indexOf(t);return e&&e.forEach(function(e){e.func.call(i,t.getComponent(),o,e.params)||n.push({type:e.type,parameters:e.params})}),n=!n.length||n,t.modules.validate||(t.modules.validate={}),!0===n?(t.modules.validate.invalid=!1,t.getElement().classList.remove("tabulator-validation-fail"),s>-1&&this.invalidCells.splice(s,1)):(t.modules.validate.invalid=!0,"manual"!==this.table.options.validationMode&&t.getElement().classList.add("tabulator-validation-fail"),-1==s&&this.invalidCells.push(t)),n},K.prototype.getInvalidCells=function(){var e=[];return this.invalidCells.forEach(function(t){e.push(t.getComponent())}),e},K.prototype.clearValidation=function(e){var t;e.modules.validate&&e.modules.validate.invalid&&(e.element.classList.remove("tabulator-validation-fail"),e.modules.validate.invalid=!1,(t=this.invalidCells.indexOf(e))>-1&&this.invalidCells.splice(t,1))},K.prototype.validators={integer:function(e,t,o){return""===t||null===t||void 0===t||"number"==typeof(t=Number(t))&&isFinite(t)&&Math.floor(t)===t},float:function(e,t,o){return""===t||null===t||void 0===t||"number"==typeof(t=Number(t))&&isFinite(t)&&t%1!=0},numeric:function(e,t,o){return""===t||null===t||void 0===t||!isNaN(t)},string:function(e,t,o){return""===t||null===t||void 0===t||isNaN(t)},max:function(e,t,o){return""===t||null===t||void 0===t||parseFloat(t)<=o},min:function(e,t,o){return""===t||null===t||void 0===t||parseFloat(t)>=o},starts:function(e,t,o){return""===t||null===t||void 0===t||String(t).toLowerCase().startsWith(String(o).toLowerCase())},ends:function(e,t,o){return""===t||null===t||void 0===t||String(t).toLowerCase().endsWith(String(o).toLowerCase())},minLength:function(e,t,o){return""===t||null===t||void 0===t||String(t).length>=o},maxLength:function(e,t,o){return""===t||null===t||void 0===t||String(t).length<=o},in:function(e,t,o){return""===t||null===t||void 0===t||("string"==typeof o&&(o=o.split("|")),""===t||o.indexOf(t)>-1)},regex:function(e,t,o){return""===t||null===t||void 0===t||new RegExp(o).test(t)},unique:function(e,t,o){if(""===t||null===t||void 0===t)return!0;var i=!0,n=e.getData(),s=e.getColumn()._getSelf();return this.table.rowManager.rows.forEach(function(e){var o=e.getData();o!==n&&t==s.getFieldValue(o)&&(i=!1)}),i},required:function(e,t,o){return""!==t&&null!==t&&void 0!==t}},d.prototype.registerModule("validate",K),d});
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/tabulator_core.js b/app/static/vendors/tabulator/js/tabulator_core.js
deleted file mode 100644 (file)
index 1c4797a..0000000
+++ /dev/null
@@ -1,8906 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-
-'use strict';
-
-// https://tc39.github.io/ecma262/#sec-array.prototype.findIndex
-
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-if (!Array.prototype.findIndex) {
-
-       Object.defineProperty(Array.prototype, 'findIndex', {
-
-               value: function value(predicate) {
-
-                       // 1. Let O be ? ToObject(this value).
-
-                       if (this == null) {
-
-                               throw new TypeError('"this" is null or not defined');
-                       }
-
-                       var o = Object(this);
-
-                       // 2. Let len be ? ToLength(? Get(O, "length")).
-
-                       var len = o.length >>> 0;
-
-                       // 3. If IsCallable(predicate) is false, throw a TypeError exception.
-
-                       if (typeof predicate !== 'function') {
-
-                               throw new TypeError('predicate must be a function');
-                       }
-
-                       // 4. If thisArg was supplied, let T be thisArg; else let T be undefined.
-
-                       var thisArg = arguments[1];
-
-                       // 5. Let k be 0.
-
-                       var k = 0;
-
-                       // 6. Repeat, while k < len
-
-                       while (k < len) {
-
-                               // a. Let Pk be ! ToString(k).
-
-                               // b. Let kValue be ? Get(O, Pk).
-
-                               // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).
-
-                               // d. If testResult is true, return k.
-
-                               var kValue = o[k];
-
-                               if (predicate.call(thisArg, kValue, k, o)) {
-
-                                       return k;
-                               }
-
-                               // e. Increase k by 1.
-
-                               k++;
-                       }
-
-                       // 7. Return -1.
-
-                       return -1;
-               }
-
-       });
-}
-
-// https://tc39.github.io/ecma262/#sec-array.prototype.find
-
-if (!Array.prototype.find) {
-
-       Object.defineProperty(Array.prototype, 'find', {
-
-               value: function value(predicate) {
-
-                       // 1. Let O be ? ToObject(this value).
-
-                       if (this == null) {
-
-                               throw new TypeError('"this" is null or not defined');
-                       }
-
-                       var o = Object(this);
-
-                       // 2. Let len be ? ToLength(? Get(O, "length")).
-
-                       var len = o.length >>> 0;
-
-                       // 3. If IsCallable(predicate) is false, throw a TypeError exception.
-
-                       if (typeof predicate !== 'function') {
-
-                               throw new TypeError('predicate must be a function');
-                       }
-
-                       // 4. If thisArg was supplied, let T be thisArg; else let T be undefined.
-
-                       var thisArg = arguments[1];
-
-                       // 5. Let k be 0.
-
-                       var k = 0;
-
-                       // 6. Repeat, while k < len
-
-                       while (k < len) {
-
-                               // a. Let Pk be ! ToString(k).
-
-                               // b. Let kValue be ? Get(O, Pk).
-
-                               // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).
-
-                               // d. If testResult is true, return kValue.
-
-                               var kValue = o[k];
-
-                               if (predicate.call(thisArg, kValue, k, o)) {
-
-                                       return kValue;
-                               }
-
-                               // e. Increase k by 1.
-
-                               k++;
-                       }
-
-                       // 7. Return undefined.
-
-                       return undefined;
-               }
-
-       });
-}
-
-// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes#Polyfill
-
-if (!String.prototype.includes) {
-
-       String.prototype.includes = function (search, start) {
-
-               'use strict';
-
-               if (search instanceof RegExp) {
-
-                       throw TypeError('first argument must not be a RegExp');
-               }
-
-               if (start === undefined) {
-                       start = 0;
-               }
-
-               return this.indexOf(search, start) !== -1;
-       };
-}
-
-// https://tc39.github.io/ecma262/#sec-array.prototype.includes
-
-if (!Array.prototype.includes) {
-
-       Object.defineProperty(Array.prototype, 'includes', {
-
-               value: function value(searchElement, fromIndex) {
-
-                       if (this == null) {
-
-                               throw new TypeError('"this" is null or not defined');
-                       }
-
-                       // 1. Let O be ? ToObject(this value).
-
-                       var o = Object(this);
-
-                       // 2. Let len be ? ToLength(? Get(O, "length")).
-
-                       var len = o.length >>> 0;
-
-                       // 3. If len is 0, return false.
-
-                       if (len === 0) {
-
-                               return false;
-                       }
-
-                       // 4. Let n be ? ToInteger(fromIndex).
-
-                       //    (If fromIndex is undefined, this step produces the value 0.)
-
-                       var n = fromIndex | 0;
-
-                       // 5. If n ≥ 0, then
-
-                       //  a. Let k be n.
-
-                       // 6. Else n < 0,
-
-                       //  a. Let k be len + n.
-
-                       //  b. If k < 0, let k be 0.
-
-                       var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);
-
-                       function sameValueZero(x, y) {
-
-                               return x === y || typeof x === 'number' && typeof y === 'number' && isNaN(x) && isNaN(y);
-                       }
-
-                       // 7. Repeat, while k < len
-
-                       while (k < len) {
-
-                               // a. Let elementK be the result of ? Get(O, ! ToString(k)).
-
-                               // b. If SameValueZero(searchElement, elementK) is true, return true.
-
-                               if (sameValueZero(o[k], searchElement)) {
-
-                                       return true;
-                               }
-
-                               // c. Increase k by 1.
-
-                               k++;
-                       }
-
-                       // 8. Return false
-
-                       return false;
-               }
-
-       });
-}
-
-// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#Polyfill
-
-if (typeof Object.assign !== 'function') {
-
-       // Must be writable: true, enumerable: false, configurable: true
-
-       Object.defineProperty(Object, "assign", {
-
-               value: function assign(target, varArgs) {
-                       // .length of function is 2
-
-                       'use strict';
-
-                       if (target === null || target === undefined) {
-
-                               throw new TypeError('Cannot convert undefined or null to object');
-                       }
-
-                       var to = Object(target);
-
-                       for (var index = 1; index < arguments.length; index++) {
-
-                               var nextSource = arguments[index];
-
-                               if (nextSource !== null && nextSource !== undefined) {
-
-                                       for (var nextKey in nextSource) {
-
-                                               // Avoid bugs when hasOwnProperty is shadowed
-
-                                               if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {
-
-                                                       to[nextKey] = nextSource[nextKey];
-                                               }
-                                       }
-                               }
-                       }
-
-                       return to;
-               },
-
-               writable: true,
-
-               configurable: true
-
-       });
-}
-
-var ColumnManager = function ColumnManager(table) {
-
-       this.table = table; //hold parent table
-
-       this.blockHozScrollEvent = false;
-
-       this.headersElement = this.createHeadersElement();
-
-       this.element = this.createHeaderElement(); //containing element
-
-       this.rowManager = null; //hold row manager object
-
-       this.columns = []; // column definition object
-
-       this.columnsByIndex = []; //columns by index
-
-       this.columnsByField = {}; //columns by field
-
-       this.scrollLeft = 0;
-
-       this.element.insertBefore(this.headersElement, this.element.firstChild);
-};
-
-////////////// Setup Functions /////////////////
-
-
-ColumnManager.prototype.createHeadersElement = function () {
-
-       var el = document.createElement("div");
-
-       el.classList.add("tabulator-headers");
-
-       return el;
-};
-
-ColumnManager.prototype.createHeaderElement = function () {
-
-       var el = document.createElement("div");
-
-       el.classList.add("tabulator-header");
-
-       if (!this.table.options.headerVisible) {
-
-               el.classList.add("tabulator-header-hidden");
-       }
-
-       return el;
-};
-
-ColumnManager.prototype.initialize = function () {
-
-       var self = this;
-
-       //scroll body along with header
-
-       // self.element.addEventListener("scroll", function(e){
-
-       //      if(!self.blockHozScrollEvent){
-
-       //              self.table.rowManager.scrollHorizontal(self.element.scrollLeft);
-
-       //      }
-
-       // });
-};
-
-//link to row manager
-
-ColumnManager.prototype.setRowManager = function (manager) {
-
-       this.rowManager = manager;
-};
-
-//return containing element
-
-ColumnManager.prototype.getElement = function () {
-
-       return this.element;
-};
-
-//return header containing element
-
-ColumnManager.prototype.getHeadersElement = function () {
-
-       return this.headersElement;
-};
-
-// ColumnManager.prototype.tempScrollBlock = function(){
-
-//     clearTimeout(this.blockHozScrollEvent);
-
-//     this.blockHozScrollEvent = setTimeout(() => {this.blockHozScrollEvent = false;}, 50);
-
-// }
-
-
-//scroll horizontally to match table body
-
-ColumnManager.prototype.scrollHorizontal = function (left) {
-
-       var hozAdjust = 0,
-           scrollWidth = this.element.scrollWidth - this.table.element.clientWidth;
-
-       // this.tempScrollBlock();
-
-       this.element.scrollLeft = left;
-
-       //adjust for vertical scrollbar moving table when present
-
-       if (left > scrollWidth) {
-
-               hozAdjust = left - scrollWidth;
-
-               this.element.style.marginLeft = -hozAdjust + "px";
-       } else {
-
-               this.element.style.marginLeft = 0;
-       }
-
-       //keep frozen columns fixed in position
-
-       //this._calcFrozenColumnsPos(hozAdjust + 3);
-
-
-       this.scrollLeft = left;
-
-       if (this.table.modExists("frozenColumns")) {
-
-               this.table.modules.frozenColumns.scrollHorizontal();
-       }
-};
-
-///////////// Column Setup Functions /////////////
-
-
-ColumnManager.prototype.generateColumnsFromRowData = function (data) {
-
-       var cols = [],
-           row,
-           sorter;
-
-       if (data && data.length) {
-
-               row = data[0];
-
-               for (var key in row) {
-
-                       var col = {
-
-                               field: key,
-
-                               title: key
-
-                       };
-
-                       var value = row[key];
-
-                       switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
-
-                               case "undefined":
-
-                                       sorter = "string";
-
-                                       break;
-
-                               case "boolean":
-
-                                       sorter = "boolean";
-
-                                       break;
-
-                               case "object":
-
-                                       if (Array.isArray(value)) {
-
-                                               sorter = "array";
-                                       } else {
-
-                                               sorter = "string";
-                                       }
-
-                                       break;
-
-                               default:
-
-                                       if (!isNaN(value) && value !== "") {
-
-                                               sorter = "number";
-                                       } else {
-
-                                               if (value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)) {
-
-                                                       sorter = "alphanum";
-                                               } else {
-
-                                                       sorter = "string";
-                                               }
-                                       }
-
-                                       break;
-
-                       }
-
-                       col.sorter = sorter;
-
-                       cols.push(col);
-               }
-
-               this.table.options.columns = cols;
-
-               this.setColumns(this.table.options.columns);
-       }
-};
-
-ColumnManager.prototype.setColumns = function (cols, row) {
-
-       var self = this;
-
-       while (self.headersElement.firstChild) {
-               self.headersElement.removeChild(self.headersElement.firstChild);
-       }self.columns = [];
-
-       self.columnsByIndex = [];
-
-       self.columnsByField = {};
-
-       //reset frozen columns
-
-       if (self.table.modExists("frozenColumns")) {
-
-               self.table.modules.frozenColumns.reset();
-       }
-
-       cols.forEach(function (def, i) {
-
-               self._addColumn(def);
-       });
-
-       self._reIndexColumns();
-
-       if (self.table.options.responsiveLayout && self.table.modExists("responsiveLayout", true)) {
-
-               self.table.modules.responsiveLayout.initialize();
-       }
-
-       self.redraw(true);
-};
-
-ColumnManager.prototype._addColumn = function (definition, before, nextToColumn) {
-
-       var column = new Column(definition, this),
-           colEl = column.getElement(),
-           index = nextToColumn ? this.findColumnIndex(nextToColumn) : nextToColumn;
-
-       if (nextToColumn && index > -1) {
-
-               var parentIndex = this.columns.indexOf(nextToColumn.getTopColumn());
-
-               var nextEl = nextToColumn.getElement();
-
-               if (before) {
-
-                       this.columns.splice(parentIndex, 0, column);
-
-                       nextEl.parentNode.insertBefore(colEl, nextEl);
-               } else {
-
-                       this.columns.splice(parentIndex + 1, 0, column);
-
-                       nextEl.parentNode.insertBefore(colEl, nextEl.nextSibling);
-               }
-       } else {
-
-               if (before) {
-
-                       this.columns.unshift(column);
-
-                       this.headersElement.insertBefore(column.getElement(), this.headersElement.firstChild);
-               } else {
-
-                       this.columns.push(column);
-
-                       this.headersElement.appendChild(column.getElement());
-               }
-
-               column.columnRendered();
-       }
-
-       return column;
-};
-
-ColumnManager.prototype.registerColumnField = function (col) {
-
-       if (col.definition.field) {
-
-               this.columnsByField[col.definition.field] = col;
-       }
-};
-
-ColumnManager.prototype.registerColumnPosition = function (col) {
-
-       this.columnsByIndex.push(col);
-};
-
-ColumnManager.prototype._reIndexColumns = function () {
-
-       this.columnsByIndex = [];
-
-       this.columns.forEach(function (column) {
-
-               column.reRegisterPosition();
-       });
-};
-
-//ensure column headers take up the correct amount of space in column groups
-
-ColumnManager.prototype._verticalAlignHeaders = function () {
-
-       var self = this,
-           minHeight = 0;
-
-       self.columns.forEach(function (column) {
-
-               var height;
-
-               column.clearVerticalAlign();
-
-               height = column.getHeight();
-
-               if (height > minHeight) {
-
-                       minHeight = height;
-               }
-       });
-
-       self.columns.forEach(function (column) {
-
-               column.verticalAlign(self.table.options.columnHeaderVertAlign, minHeight);
-       });
-
-       self.rowManager.adjustTableSize();
-};
-
-//////////////// Column Details /////////////////
-
-
-ColumnManager.prototype.findColumn = function (subject) {
-
-       var self = this;
-
-       if ((typeof subject === 'undefined' ? 'undefined' : _typeof(subject)) == "object") {
-
-               if (subject instanceof Column) {
-
-                       //subject is column element
-
-                       return subject;
-               } else if (subject instanceof ColumnComponent) {
-
-                       //subject is public column component
-
-                       return subject._getSelf() || false;
-               } else if (typeof HTMLElement !== "undefined" && subject instanceof HTMLElement) {
-
-                       //subject is a HTML element of the column header
-
-                       var match = self.columns.find(function (column) {
-
-                               return column.element === subject;
-                       });
-
-                       return match || false;
-               }
-       } else {
-
-               //subject should be treated as the field name of the column
-
-               return this.columnsByField[subject] || false;
-       }
-
-       //catch all for any other type of input
-
-
-       return false;
-};
-
-ColumnManager.prototype.getColumnByField = function (field) {
-
-       return this.columnsByField[field];
-};
-
-ColumnManager.prototype.getColumnsByFieldRoot = function (root) {
-       var _this = this;
-
-       var matches = [];
-
-       Object.keys(this.columnsByField).forEach(function (field) {
-
-               var fieldRoot = field.split(".")[0];
-
-               if (fieldRoot === root) {
-
-                       matches.push(_this.columnsByField[field]);
-               }
-       });
-
-       return matches;
-};
-
-ColumnManager.prototype.getColumnByIndex = function (index) {
-
-       return this.columnsByIndex[index];
-};
-
-ColumnManager.prototype.getFirstVisibileColumn = function (index) {
-
-       var index = this.columnsByIndex.findIndex(function (col) {
-
-               return col.visible;
-       });
-
-       return index > -1 ? this.columnsByIndex[index] : false;
-};
-
-ColumnManager.prototype.getColumns = function () {
-
-       return this.columns;
-};
-
-ColumnManager.prototype.findColumnIndex = function (column) {
-
-       return this.columnsByIndex.findIndex(function (col) {
-
-               return column === col;
-       });
-};
-
-//return all columns that are not groups
-
-ColumnManager.prototype.getRealColumns = function () {
-
-       return this.columnsByIndex;
-};
-
-//travers across columns and call action
-
-ColumnManager.prototype.traverse = function (callback) {
-
-       var self = this;
-
-       self.columnsByIndex.forEach(function (column, i) {
-
-               callback(column, i);
-       });
-};
-
-//get defintions of actual columns
-
-ColumnManager.prototype.getDefinitions = function (active) {
-
-       var self = this,
-           output = [];
-
-       self.columnsByIndex.forEach(function (column) {
-
-               if (!active || active && column.visible) {
-
-                       output.push(column.getDefinition());
-               }
-       });
-
-       return output;
-};
-
-//get full nested definition tree
-
-ColumnManager.prototype.getDefinitionTree = function () {
-
-       var self = this,
-           output = [];
-
-       self.columns.forEach(function (column) {
-
-               output.push(column.getDefinition(true));
-       });
-
-       return output;
-};
-
-ColumnManager.prototype.getComponents = function (structured) {
-
-       var self = this,
-           output = [],
-           columns = structured ? self.columns : self.columnsByIndex;
-
-       columns.forEach(function (column) {
-
-               output.push(column.getComponent());
-       });
-
-       return output;
-};
-
-ColumnManager.prototype.getWidth = function () {
-
-       var width = 0;
-
-       this.columnsByIndex.forEach(function (column) {
-
-               if (column.visible) {
-
-                       width += column.getWidth();
-               }
-       });
-
-       return width;
-};
-
-ColumnManager.prototype.moveColumn = function (from, to, after) {
-
-       this.moveColumnActual(from, to, after);
-
-       if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-               this.table.modules.responsiveLayout.initialize();
-       }
-
-       if (this.table.modExists("columnCalcs")) {
-
-               this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
-       }
-
-       to.element.parentNode.insertBefore(from.element, to.element);
-
-       if (after) {
-
-               to.element.parentNode.insertBefore(to.element, from.element);
-       }
-
-       this._verticalAlignHeaders();
-
-       this.table.rowManager.reinitialize();
-};
-
-ColumnManager.prototype.moveColumnActual = function (from, to, after) {
-
-       if (from.parent.isGroup) {
-
-               this._moveColumnInArray(from.parent.columns, from, to, after);
-       } else {
-
-               this._moveColumnInArray(this.columns, from, to, after);
-       }
-
-       this._moveColumnInArray(this.columnsByIndex, from, to, after, true);
-
-       if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-               this.table.modules.responsiveLayout.initialize();
-       }
-
-       if (this.table.options.columnMoved) {
-
-               this.table.options.columnMoved.call(this.table, from.getComponent(), this.table.columnManager.getComponents());
-       }
-
-       if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.columns) {
-
-               this.table.modules.persistence.save("columns");
-       }
-};
-
-ColumnManager.prototype._moveColumnInArray = function (columns, from, to, after, updateRows) {
-
-       var fromIndex = columns.indexOf(from),
-           toIndex;
-
-       if (fromIndex > -1) {
-
-               columns.splice(fromIndex, 1);
-
-               toIndex = columns.indexOf(to);
-
-               if (toIndex > -1) {
-
-                       if (after) {
-
-                               toIndex = toIndex + 1;
-                       }
-               } else {
-
-                       toIndex = fromIndex;
-               }
-
-               columns.splice(toIndex, 0, from);
-
-               if (updateRows) {
-
-                       this.table.rowManager.rows.forEach(function (row) {
-
-                               if (row.cells.length) {
-
-                                       var cell = row.cells.splice(fromIndex, 1)[0];
-
-                                       row.cells.splice(toIndex, 0, cell);
-                               }
-                       });
-               }
-       }
-};
-
-ColumnManager.prototype.scrollToColumn = function (column, position, ifVisible) {
-       var _this2 = this;
-
-       var left = 0,
-           offset = 0,
-           adjust = 0,
-           colEl = column.getElement();
-
-       return new Promise(function (resolve, reject) {
-
-               if (typeof position === "undefined") {
-
-                       position = _this2.table.options.scrollToColumnPosition;
-               }
-
-               if (typeof ifVisible === "undefined") {
-
-                       ifVisible = _this2.table.options.scrollToColumnIfVisible;
-               }
-
-               if (column.visible) {
-
-                       //align to correct position
-
-                       switch (position) {
-
-                               case "middle":
-
-                               case "center":
-
-                                       adjust = -_this2.element.clientWidth / 2;
-
-                                       break;
-
-                               case "right":
-
-                                       adjust = colEl.clientWidth - _this2.headersElement.clientWidth;
-
-                                       break;
-
-                       }
-
-                       //check column visibility
-
-                       if (!ifVisible) {
-
-                               offset = colEl.offsetLeft;
-
-                               if (offset > 0 && offset + colEl.offsetWidth < _this2.element.clientWidth) {
-
-                                       return false;
-                               }
-                       }
-
-                       //calculate scroll position
-
-                       left = colEl.offsetLeft + _this2.element.scrollLeft + adjust;
-
-                       left = Math.max(Math.min(left, _this2.table.rowManager.element.scrollWidth - _this2.table.rowManager.element.clientWidth), 0);
-
-                       _this2.table.rowManager.scrollHorizontal(left);
-
-                       _this2.scrollHorizontal(left);
-
-                       resolve();
-               } else {
-
-                       console.warn("Scroll Error - Column not visible");
-
-                       reject("Scroll Error - Column not visible");
-               }
-       });
-};
-
-//////////////// Cell Management /////////////////
-
-
-ColumnManager.prototype.generateCells = function (row) {
-
-       var self = this;
-
-       var cells = [];
-
-       self.columnsByIndex.forEach(function (column) {
-
-               cells.push(column.generateCell(row));
-       });
-
-       return cells;
-};
-
-//////////////// Column Management /////////////////
-
-
-ColumnManager.prototype.getFlexBaseWidth = function () {
-
-       var self = this,
-           totalWidth = self.table.element.clientWidth,
-           //table element width
-
-       fixedWidth = 0;
-
-       //adjust for vertical scrollbar if present
-
-       if (self.rowManager.element.scrollHeight > self.rowManager.element.clientHeight) {
-
-               totalWidth -= self.rowManager.element.offsetWidth - self.rowManager.element.clientWidth;
-       }
-
-       this.columnsByIndex.forEach(function (column) {
-
-               var width, minWidth, colWidth;
-
-               if (column.visible) {
-
-                       width = column.definition.width || 0;
-
-                       minWidth = typeof column.minWidth == "undefined" ? self.table.options.columnMinWidth : parseInt(column.minWidth);
-
-                       if (typeof width == "string") {
-
-                               if (width.indexOf("%") > -1) {
-
-                                       colWidth = totalWidth / 100 * parseInt(width);
-                               } else {
-
-                                       colWidth = parseInt(width);
-                               }
-                       } else {
-
-                               colWidth = width;
-                       }
-
-                       fixedWidth += colWidth > minWidth ? colWidth : minWidth;
-               }
-       });
-
-       return fixedWidth;
-};
-
-ColumnManager.prototype.addColumn = function (definition, before, nextToColumn) {
-       var _this3 = this;
-
-       return new Promise(function (resolve, reject) {
-
-               var column = _this3._addColumn(definition, before, nextToColumn);
-
-               _this3._reIndexColumns();
-
-               if (_this3.table.options.responsiveLayout && _this3.table.modExists("responsiveLayout", true)) {
-
-                       _this3.table.modules.responsiveLayout.initialize();
-               }
-
-               if (_this3.table.modExists("columnCalcs")) {
-
-                       _this3.table.modules.columnCalcs.recalc(_this3.table.rowManager.activeRows);
-               }
-
-               _this3.redraw();
-
-               if (_this3.table.modules.layout.getMode() != "fitColumns") {
-
-                       column.reinitializeWidth();
-               }
-
-               _this3._verticalAlignHeaders();
-
-               _this3.table.rowManager.reinitialize();
-
-               resolve(column);
-       });
-};
-
-//remove column from system
-
-ColumnManager.prototype.deregisterColumn = function (column) {
-
-       var field = column.getField(),
-           index;
-
-       //remove from field list
-
-       if (field) {
-
-               delete this.columnsByField[field];
-       }
-
-       //remove from index list
-
-       index = this.columnsByIndex.indexOf(column);
-
-       if (index > -1) {
-
-               this.columnsByIndex.splice(index, 1);
-       }
-
-       //remove from column list
-
-       index = this.columns.indexOf(column);
-
-       if (index > -1) {
-
-               this.columns.splice(index, 1);
-       }
-
-       if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-               this.table.modules.responsiveLayout.initialize();
-       }
-
-       this.redraw();
-};
-
-//redraw columns
-
-ColumnManager.prototype.redraw = function (force) {
-
-       if (force) {
-
-               if (Tabulator.prototype.helpers.elVisible(this.element)) {
-
-                       this._verticalAlignHeaders();
-               }
-
-               this.table.rowManager.resetScroll();
-
-               this.table.rowManager.reinitialize();
-       }
-
-       if (["fitColumns", "fitDataStretch"].indexOf(this.table.modules.layout.getMode()) > -1) {
-
-               this.table.modules.layout.layout();
-       } else {
-
-               if (force) {
-
-                       this.table.modules.layout.layout();
-               } else {
-
-                       if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-                               this.table.modules.responsiveLayout.update();
-                       }
-               }
-       }
-
-       if (this.table.modExists("frozenColumns")) {
-
-               this.table.modules.frozenColumns.layout();
-       }
-
-       if (this.table.modExists("columnCalcs")) {
-
-               this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
-       }
-
-       if (force) {
-
-               if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.columns) {
-
-                       this.table.modules.persistence.save("columns");
-               }
-
-               if (this.table.modExists("columnCalcs")) {
-
-                       this.table.modules.columnCalcs.redraw();
-               }
-       }
-
-       this.table.footerManager.redraw();
-};
-
-//public column object
-var ColumnComponent = function ColumnComponent(column) {
-       this._column = column;
-       this.type = "ColumnComponent";
-};
-
-ColumnComponent.prototype.getElement = function () {
-       return this._column.getElement();
-};
-
-ColumnComponent.prototype.getDefinition = function () {
-       return this._column.getDefinition();
-};
-
-ColumnComponent.prototype.getField = function () {
-       return this._column.getField();
-};
-
-ColumnComponent.prototype.getCells = function () {
-       var cells = [];
-
-       this._column.cells.forEach(function (cell) {
-               cells.push(cell.getComponent());
-       });
-
-       return cells;
-};
-
-ColumnComponent.prototype.getVisibility = function () {
-       console.warn("getVisibility function is deprecated, you should now use the isVisible function");
-       return this._column.visible;
-};
-
-ColumnComponent.prototype.isVisible = function () {
-       return this._column.visible;
-};
-
-ColumnComponent.prototype.show = function () {
-       if (this._column.isGroup) {
-               this._column.columns.forEach(function (column) {
-                       column.show();
-               });
-       } else {
-               this._column.show();
-       }
-};
-
-ColumnComponent.prototype.hide = function () {
-       if (this._column.isGroup) {
-               this._column.columns.forEach(function (column) {
-                       column.hide();
-               });
-       } else {
-               this._column.hide();
-       }
-};
-
-ColumnComponent.prototype.toggle = function () {
-       if (this._column.visible) {
-               this.hide();
-       } else {
-               this.show();
-       }
-};
-
-ColumnComponent.prototype.delete = function () {
-       return this._column.delete();
-};
-
-ColumnComponent.prototype.getSubColumns = function () {
-       var output = [];
-
-       if (this._column.columns.length) {
-               this._column.columns.forEach(function (column) {
-                       output.push(column.getComponent());
-               });
-       }
-
-       return output;
-};
-
-ColumnComponent.prototype.getParentColumn = function () {
-       return this._column.parent instanceof Column ? this._column.parent.getComponent() : false;
-};
-
-ColumnComponent.prototype._getSelf = function () {
-       return this._column;
-};
-
-ColumnComponent.prototype.scrollTo = function () {
-       return this._column.table.columnManager.scrollToColumn(this._column);
-};
-
-ColumnComponent.prototype.getTable = function () {
-       return this._column.table;
-};
-
-ColumnComponent.prototype.headerFilterFocus = function () {
-       if (this._column.table.modExists("filter", true)) {
-               this._column.table.modules.filter.setHeaderFilterFocus(this._column);
-       }
-};
-
-ColumnComponent.prototype.reloadHeaderFilter = function () {
-       if (this._column.table.modExists("filter", true)) {
-               this._column.table.modules.filter.reloadHeaderFilter(this._column);
-       }
-};
-
-ColumnComponent.prototype.getHeaderFilterValue = function () {
-       if (this._column.table.modExists("filter", true)) {
-               return this._column.table.modules.filter.getHeaderFilterValue(this._column);
-       }
-};
-
-ColumnComponent.prototype.setHeaderFilterValue = function (value) {
-       if (this._column.table.modExists("filter", true)) {
-               this._column.table.modules.filter.setHeaderFilterValue(this._column, value);
-       }
-};
-
-ColumnComponent.prototype.move = function (to, after) {
-       var toColumn = this._column.table.columnManager.findColumn(to);
-
-       if (toColumn) {
-               this._column.table.columnManager.moveColumn(this._column, toColumn, after);
-       } else {
-               console.warn("Move Error - No matching column found:", toColumn);
-       }
-};
-
-ColumnComponent.prototype.getNextColumn = function () {
-       var nextCol = this._column.nextColumn();
-
-       return nextCol ? nextCol.getComponent() : false;
-};
-
-ColumnComponent.prototype.getPrevColumn = function () {
-       var prevCol = this._column.prevColumn();
-
-       return prevCol ? prevCol.getComponent() : false;
-};
-
-ColumnComponent.prototype.updateDefinition = function (updates) {
-       return this._column.updateDefinition(updates);
-};
-
-ColumnComponent.prototype.getWidth = function () {
-       return this._column.getWidth();
-};
-
-ColumnComponent.prototype.setWidth = function (width) {
-       if (width === true) {
-               return this._column.reinitializeWidth(true);
-       } else {
-               return this._column.setWidth(width);
-       }
-};
-
-ColumnComponent.prototype.validate = function () {
-       return this._column.validate();
-};
-
-var Column = function Column(def, parent) {
-       var self = this;
-
-       this.table = parent.table;
-       this.definition = def; //column definition
-       this.parent = parent; //hold parent object
-       this.type = "column"; //type of element
-       this.columns = []; //child columns
-       this.cells = []; //cells bound to this column
-       this.element = this.createElement(); //column header element
-       this.contentElement = false;
-       this.titleElement = false;
-       this.groupElement = this.createGroupElement(); //column group holder element
-       this.isGroup = false;
-       this.tooltip = false; //hold column tooltip
-       this.hozAlign = ""; //horizontal text alignment
-       this.vertAlign = ""; //vert text alignment
-
-       //multi dimensional filed handling
-       this.field = "";
-       this.fieldStructure = "";
-       this.getFieldValue = "";
-       this.setFieldValue = "";
-
-       this.titleFormatterRendered = false;
-
-       this.setField(this.definition.field);
-
-       if (this.table.options.invalidOptionWarnings) {
-               this.checkDefinition();
-       }
-
-       this.modules = {}; //hold module variables;
-
-       this.cellEvents = {
-               cellClick: false,
-               cellDblClick: false,
-               cellContext: false,
-               cellTap: false,
-               cellDblTap: false,
-               cellTapHold: false,
-               cellMouseEnter: false,
-               cellMouseLeave: false,
-               cellMouseOver: false,
-               cellMouseOut: false,
-               cellMouseMove: false
-       };
-
-       this.width = null; //column width
-       this.widthStyled = ""; //column width prestyled to improve render efficiency
-       this.minWidth = null; //column minimum width
-       this.minWidthStyled = ""; //column minimum prestyled to improve render efficiency
-       this.widthFixed = false; //user has specified a width for this column
-
-       this.visible = true; //default visible state
-
-       this.component = null;
-
-       this._mapDepricatedFunctionality();
-
-       //initialize column
-       if (def.columns) {
-
-               this.isGroup = true;
-
-               def.columns.forEach(function (def, i) {
-                       var newCol = new Column(def, self);
-                       self.attachColumn(newCol);
-               });
-
-               self.checkColumnVisibility();
-       } else {
-               parent.registerColumnField(this);
-       }
-
-       if (def.rowHandle && this.table.options.movableRows !== false && this.table.modExists("moveRow")) {
-               this.table.modules.moveRow.setHandle(true);
-       }
-
-       this._buildHeader();
-
-       this.bindModuleColumns();
-};
-
-Column.prototype.createElement = function () {
-       var el = document.createElement("div");
-
-       el.classList.add("tabulator-col");
-       el.setAttribute("role", "columnheader");
-       el.setAttribute("aria-sort", "none");
-
-       return el;
-};
-
-Column.prototype.createGroupElement = function () {
-       var el = document.createElement("div");
-
-       el.classList.add("tabulator-col-group-cols");
-
-       return el;
-};
-
-Column.prototype.checkDefinition = function () {
-       var _this4 = this;
-
-       Object.keys(this.definition).forEach(function (key) {
-               if (_this4.defaultOptionList.indexOf(key) === -1) {
-                       console.warn("Invalid column definition option in '" + (_this4.field || _this4.definition.title) + "' column:", key);
-               }
-       });
-};
-
-Column.prototype.setField = function (field) {
-       this.field = field;
-       this.fieldStructure = field ? this.table.options.nestedFieldSeparator ? field.split(this.table.options.nestedFieldSeparator) : [field] : [];
-       this.getFieldValue = this.fieldStructure.length > 1 ? this._getNestedData : this._getFlatData;
-       this.setFieldValue = this.fieldStructure.length > 1 ? this._setNestedData : this._setFlatData;
-};
-
-//register column position with column manager
-Column.prototype.registerColumnPosition = function (column) {
-       this.parent.registerColumnPosition(column);
-};
-
-//register column position with column manager
-Column.prototype.registerColumnField = function (column) {
-       this.parent.registerColumnField(column);
-};
-
-//trigger position registration
-Column.prototype.reRegisterPosition = function () {
-       if (this.isGroup) {
-               this.columns.forEach(function (column) {
-                       column.reRegisterPosition();
-               });
-       } else {
-               this.registerColumnPosition(this);
-       }
-};
-
-Column.prototype._mapDepricatedFunctionality = function () {
-       if (typeof this.definition.hideInHtml !== "undefined") {
-               this.definition.htmlOutput = !this.definition.hideInHtml;
-               console.warn("hideInHtml column definition property is deprecated, you should now use htmlOutput");
-       }
-
-       if (typeof this.definition.align !== "undefined") {
-               this.definition.hozAlign = this.definition.align;
-               console.warn("align column definition property is deprecated, you should now use hozAlign");
-       }
-
-       if (typeof this.definition.downloadTitle !== "undefined") {
-               this.definition.titleDownload = this.definition.downloadTitle;
-               console.warn("downloadTitle definition property is deprecated, you should now use titleDownload");
-       }
-};
-
-Column.prototype.setTooltip = function () {
-       var self = this,
-           def = self.definition;
-
-       //set header tooltips
-       var tooltip = def.headerTooltip || def.tooltip === false ? def.headerTooltip : self.table.options.tooltipsHeader;
-
-       if (tooltip) {
-               if (tooltip === true) {
-                       if (def.field) {
-                               self.table.modules.localize.bind("columns|" + def.field, function (value) {
-                                       self.element.setAttribute("title", value || def.title);
-                               });
-                       } else {
-                               self.element.setAttribute("title", def.title);
-                       }
-               } else {
-                       if (typeof tooltip == "function") {
-                               tooltip = tooltip(self.getComponent());
-
-                               if (tooltip === false) {
-                                       tooltip = "";
-                               }
-                       }
-
-                       self.element.setAttribute("title", tooltip);
-               }
-       } else {
-               self.element.setAttribute("title", "");
-       }
-};
-
-//build header element
-Column.prototype._buildHeader = function () {
-       var self = this,
-           def = self.definition;
-
-       while (self.element.firstChild) {
-               self.element.removeChild(self.element.firstChild);
-       }if (def.headerVertical) {
-               self.element.classList.add("tabulator-col-vertical");
-
-               if (def.headerVertical === "flip") {
-                       self.element.classList.add("tabulator-col-vertical-flip");
-               }
-       }
-
-       self.contentElement = self._bindEvents();
-
-       self.contentElement = self._buildColumnHeaderContent();
-
-       self.element.appendChild(self.contentElement);
-
-       if (self.isGroup) {
-               self._buildGroupHeader();
-       } else {
-               self._buildColumnHeader();
-       }
-
-       self.setTooltip();
-
-       //set resizable handles
-       if (self.table.options.resizableColumns && self.table.modExists("resizeColumns")) {
-               self.table.modules.resizeColumns.initializeColumn("header", self, self.element);
-       }
-
-       //set resizable handles
-       if (def.headerFilter && self.table.modExists("filter") && self.table.modExists("edit")) {
-               if (typeof def.headerFilterPlaceholder !== "undefined" && def.field) {
-                       self.table.modules.localize.setHeaderFilterColumnPlaceholder(def.field, def.headerFilterPlaceholder);
-               }
-
-               self.table.modules.filter.initializeColumn(self);
-       }
-
-       //set resizable handles
-       if (self.table.modExists("frozenColumns")) {
-               self.table.modules.frozenColumns.initializeColumn(self);
-       }
-
-       //set movable column
-       if (self.table.options.movableColumns && !self.isGroup && self.table.modExists("moveColumn")) {
-               self.table.modules.moveColumn.initializeColumn(self);
-       }
-
-       //set calcs column
-       if ((def.topCalc || def.bottomCalc) && self.table.modExists("columnCalcs")) {
-               self.table.modules.columnCalcs.initializeColumn(self);
-       }
-
-       //handle persistence
-       if (self.table.modExists("persistence") && self.table.modules.persistence.config.columns) {
-               self.table.modules.persistence.initializeColumn(self);
-       }
-
-       //update header tooltip on mouse enter
-       self.element.addEventListener("mouseenter", function (e) {
-               self.setTooltip();
-       });
-};
-
-Column.prototype._bindEvents = function () {
-
-       var self = this,
-           def = self.definition,
-           dblTap,
-           tapHold,
-           tap;
-
-       //setup header click event bindings
-       if (typeof def.headerClick == "function") {
-               self.element.addEventListener("click", function (e) {
-                       def.headerClick(e, self.getComponent());
-               });
-       }
-
-       if (typeof def.headerDblClick == "function") {
-               self.element.addEventListener("dblclick", function (e) {
-                       def.headerDblClick(e, self.getComponent());
-               });
-       }
-
-       if (typeof def.headerContext == "function") {
-               self.element.addEventListener("contextmenu", function (e) {
-                       def.headerContext(e, self.getComponent());
-               });
-       }
-
-       //setup header tap event bindings
-       if (typeof def.headerTap == "function") {
-               tap = false;
-
-               self.element.addEventListener("touchstart", function (e) {
-                       tap = true;
-               }, { passive: true });
-
-               self.element.addEventListener("touchend", function (e) {
-                       if (tap) {
-                               def.headerTap(e, self.getComponent());
-                       }
-
-                       tap = false;
-               });
-       }
-
-       if (typeof def.headerDblTap == "function") {
-               dblTap = null;
-
-               self.element.addEventListener("touchend", function (e) {
-
-                       if (dblTap) {
-                               clearTimeout(dblTap);
-                               dblTap = null;
-
-                               def.headerDblTap(e, self.getComponent());
-                       } else {
-
-                               dblTap = setTimeout(function () {
-                                       clearTimeout(dblTap);
-                                       dblTap = null;
-                               }, 300);
-                       }
-               });
-       }
-
-       if (typeof def.headerTapHold == "function") {
-               tapHold = null;
-
-               self.element.addEventListener("touchstart", function (e) {
-                       clearTimeout(tapHold);
-
-                       tapHold = setTimeout(function () {
-                               clearTimeout(tapHold);
-                               tapHold = null;
-                               tap = false;
-                               def.headerTapHold(e, self.getComponent());
-                       }, 1000);
-               }, { passive: true });
-
-               self.element.addEventListener("touchend", function (e) {
-                       clearTimeout(tapHold);
-                       tapHold = null;
-               });
-       }
-
-       //store column cell click event bindings
-       if (typeof def.cellClick == "function") {
-               self.cellEvents.cellClick = def.cellClick;
-       }
-
-       if (typeof def.cellDblClick == "function") {
-               self.cellEvents.cellDblClick = def.cellDblClick;
-       }
-
-       if (typeof def.cellContext == "function") {
-               self.cellEvents.cellContext = def.cellContext;
-       }
-
-       //store column mouse event bindings
-       if (typeof def.cellMouseEnter == "function") {
-               self.cellEvents.cellMouseEnter = def.cellMouseEnter;
-       }
-
-       if (typeof def.cellMouseLeave == "function") {
-               self.cellEvents.cellMouseLeave = def.cellMouseLeave;
-       }
-
-       if (typeof def.cellMouseOver == "function") {
-               self.cellEvents.cellMouseOver = def.cellMouseOver;
-       }
-
-       if (typeof def.cellMouseOut == "function") {
-               self.cellEvents.cellMouseOut = def.cellMouseOut;
-       }
-
-       if (typeof def.cellMouseMove == "function") {
-               self.cellEvents.cellMouseMove = def.cellMouseMove;
-       }
-
-       //setup column cell tap event bindings
-       if (typeof def.cellTap == "function") {
-               self.cellEvents.cellTap = def.cellTap;
-       }
-
-       if (typeof def.cellDblTap == "function") {
-               self.cellEvents.cellDblTap = def.cellDblTap;
-       }
-
-       if (typeof def.cellTapHold == "function") {
-               self.cellEvents.cellTapHold = def.cellTapHold;
-       }
-
-       //setup column cell edit callbacks
-       if (typeof def.cellEdited == "function") {
-               self.cellEvents.cellEdited = def.cellEdited;
-       }
-
-       if (typeof def.cellEditing == "function") {
-               self.cellEvents.cellEditing = def.cellEditing;
-       }
-
-       if (typeof def.cellEditCancelled == "function") {
-               self.cellEvents.cellEditCancelled = def.cellEditCancelled;
-       }
-};
-
-//build header element for header
-Column.prototype._buildColumnHeader = function () {
-       var self = this,
-           def = self.definition,
-           table = self.table,
-           sortable;
-
-       //set column sorter
-       if (table.modExists("sort")) {
-               table.modules.sort.initializeColumn(self, self.contentElement);
-       }
-
-       //set column header context menu
-       if ((def.headerContextMenu || def.headerMenu) && table.modExists("menu")) {
-               table.modules.menu.initializeColumnHeader(self);
-       }
-
-       //set column formatter
-       if (table.modExists("format")) {
-               table.modules.format.initializeColumn(self);
-       }
-
-       //set column editor
-       if (typeof def.editor != "undefined" && table.modExists("edit")) {
-               table.modules.edit.initializeColumn(self);
-       }
-
-       //set colum validator
-       if (typeof def.validator != "undefined" && table.modExists("validate")) {
-               table.modules.validate.initializeColumn(self);
-       }
-
-       //set column mutator
-       if (table.modExists("mutator")) {
-               table.modules.mutator.initializeColumn(self);
-       }
-
-       //set column accessor
-       if (table.modExists("accessor")) {
-               table.modules.accessor.initializeColumn(self);
-       }
-
-       //set respoviveLayout
-       if (_typeof(table.options.responsiveLayout) && table.modExists("responsiveLayout")) {
-               table.modules.responsiveLayout.initializeColumn(self);
-       }
-
-       //set column visibility
-       if (typeof def.visible != "undefined") {
-               if (def.visible) {
-                       self.show(true);
-               } else {
-                       self.hide(true);
-               }
-       }
-
-       //asign additional css classes to column header
-       if (def.cssClass) {
-               var classeNames = def.cssClass.split(" ");
-               classeNames.forEach(function (className) {
-                       self.element.classList.add(className);
-               });
-       }
-
-       if (def.field) {
-               this.element.setAttribute("tabulator-field", def.field);
-       }
-
-       //set min width if present
-       self.setMinWidth(typeof def.minWidth == "undefined" ? self.table.options.columnMinWidth : parseInt(def.minWidth));
-
-       self.reinitializeWidth();
-
-       //set tooltip if present
-       self.tooltip = self.definition.tooltip || self.definition.tooltip === false ? self.definition.tooltip : self.table.options.tooltips;
-
-       //set orizontal text alignment
-       self.hozAlign = typeof self.definition.hozAlign == "undefined" ? self.table.options.cellHozAlign : self.definition.hozAlign;
-       self.vertAlign = typeof self.definition.vertAlign == "undefined" ? self.table.options.cellVertAlign : self.definition.vertAlign;
-};
-
-Column.prototype._buildColumnHeaderContent = function () {
-       var def = this.definition,
-           table = this.table;
-
-       var contentElement = document.createElement("div");
-       contentElement.classList.add("tabulator-col-content");
-
-       this.titleElement = this._buildColumnHeaderTitle();
-
-       contentElement.appendChild(this.titleElement);
-
-       return contentElement;
-};
-
-//build title element of column
-Column.prototype._buildColumnHeaderTitle = function () {
-       var self = this,
-           def = self.definition,
-           table = self.table,
-           title;
-
-       var titleHolderElement = document.createElement("div");
-       titleHolderElement.classList.add("tabulator-col-title");
-
-       if (def.editableTitle) {
-               var titleElement = document.createElement("input");
-               titleElement.classList.add("tabulator-title-editor");
-
-               titleElement.addEventListener("click", function (e) {
-                       e.stopPropagation();
-                       titleElement.focus();
-               });
-
-               titleElement.addEventListener("change", function () {
-                       def.title = titleElement.value;
-                       table.options.columnTitleChanged.call(self.table, self.getComponent());
-               });
-
-               titleHolderElement.appendChild(titleElement);
-
-               if (def.field) {
-                       table.modules.localize.bind("columns|" + def.field, function (text) {
-                               titleElement.value = text || def.title || "&nbsp;";
-                       });
-               } else {
-                       titleElement.value = def.title || "&nbsp;";
-               }
-       } else {
-               if (def.field) {
-                       table.modules.localize.bind("columns|" + def.field, function (text) {
-                               self._formatColumnHeaderTitle(titleHolderElement, text || def.title || "&nbsp;");
-                       });
-               } else {
-                       self._formatColumnHeaderTitle(titleHolderElement, def.title || "&nbsp;");
-               }
-       }
-
-       return titleHolderElement;
-};
-
-Column.prototype._formatColumnHeaderTitle = function (el, title) {
-       var _this5 = this;
-
-       var formatter, contents, params, mockCell, onRendered;
-
-       if (this.definition.titleFormatter && this.table.modExists("format")) {
-
-               formatter = this.table.modules.format.getFormatter(this.definition.titleFormatter);
-
-               onRendered = function onRendered(callback) {
-                       _this5.titleFormatterRendered = callback;
-               };
-
-               mockCell = {
-                       getValue: function getValue() {
-                               return title;
-                       },
-                       getElement: function getElement() {
-                               return el;
-                       }
-               };
-
-               params = this.definition.titleFormatterParams || {};
-
-               params = typeof params === "function" ? params() : params;
-
-               contents = formatter.call(this.table.modules.format, mockCell, params, onRendered);
-
-               switch (typeof contents === 'undefined' ? 'undefined' : _typeof(contents)) {
-                       case "object":
-                               if (contents instanceof Node) {
-                                       el.appendChild(contents);
-                               } else {
-                                       el.innerHTML = "";
-                                       console.warn("Format Error - Title formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:", contents);
-                               }
-                               break;
-                       case "undefined":
-                       case "null":
-                               el.innerHTML = "";
-                               break;
-                       default:
-                               el.innerHTML = contents;
-               }
-       } else {
-               el.innerHTML = title;
-       }
-};
-
-//build header element for column group
-Column.prototype._buildGroupHeader = function () {
-       var _this6 = this;
-
-       this.element.classList.add("tabulator-col-group");
-       this.element.setAttribute("role", "columngroup");
-       this.element.setAttribute("aria-title", this.definition.title);
-
-       //asign additional css classes to column header
-       if (this.definition.cssClass) {
-               var classeNames = this.definition.cssClass.split(" ");
-               classeNames.forEach(function (className) {
-                       _this6.element.classList.add(className);
-               });
-       }
-
-       //set column header context menu
-       if ((this.definition.headerContextMenu || this.definition.headerMenu) && this.table.modExists("menu")) {
-               this.table.modules.menu.initializeColumnHeader(this);
-       }
-
-       this.element.appendChild(this.groupElement);
-};
-
-//flat field lookup
-Column.prototype._getFlatData = function (data) {
-       return data[this.field];
-};
-
-//nested field lookup
-Column.prototype._getNestedData = function (data) {
-       var dataObj = data,
-           structure = this.fieldStructure,
-           length = structure.length,
-           output;
-
-       for (var i = 0; i < length; i++) {
-
-               dataObj = dataObj[structure[i]];
-
-               output = dataObj;
-
-               if (!dataObj) {
-                       break;
-               }
-       }
-
-       return output;
-};
-
-//flat field set
-Column.prototype._setFlatData = function (data, value) {
-       if (this.field) {
-               data[this.field] = value;
-       }
-};
-
-//nested field set
-Column.prototype._setNestedData = function (data, value) {
-       var dataObj = data,
-           structure = this.fieldStructure,
-           length = structure.length;
-
-       for (var i = 0; i < length; i++) {
-
-               if (i == length - 1) {
-                       dataObj[structure[i]] = value;
-               } else {
-                       if (!dataObj[structure[i]]) {
-                               if (typeof value !== "undefined") {
-                                       dataObj[structure[i]] = {};
-                               } else {
-                                       break;
-                               }
-                       }
-
-                       dataObj = dataObj[structure[i]];
-               }
-       }
-};
-
-//attach column to this group
-Column.prototype.attachColumn = function (column) {
-       var self = this;
-
-       if (self.groupElement) {
-               self.columns.push(column);
-               self.groupElement.appendChild(column.getElement());
-       } else {
-               console.warn("Column Warning - Column being attached to another column instead of column group");
-       }
-};
-
-//vertically align header in column
-Column.prototype.verticalAlign = function (alignment, height) {
-
-       //calculate height of column header and group holder element
-       var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : height || this.parent.getHeadersElement().clientHeight;
-       // var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : this.parent.getHeadersElement().clientHeight;
-
-       this.element.style.height = parentHeight + "px";
-
-       if (this.isGroup) {
-               this.groupElement.style.minHeight = parentHeight - this.contentElement.offsetHeight + "px";
-       }
-
-       //vertically align cell contents
-       if (!this.isGroup && alignment !== "top") {
-               if (alignment === "bottom") {
-                       this.element.style.paddingTop = this.element.clientHeight - this.contentElement.offsetHeight + "px";
-               } else {
-                       this.element.style.paddingTop = (this.element.clientHeight - this.contentElement.offsetHeight) / 2 + "px";
-               }
-       }
-
-       this.columns.forEach(function (column) {
-               column.verticalAlign(alignment);
-       });
-};
-
-//clear vertical alignmenet
-Column.prototype.clearVerticalAlign = function () {
-       this.element.style.paddingTop = "";
-       this.element.style.height = "";
-       this.element.style.minHeight = "";
-       this.groupElement.style.minHeight = "";
-
-       this.columns.forEach(function (column) {
-               column.clearVerticalAlign();
-       });
-};
-
-Column.prototype.bindModuleColumns = function () {
-       //check if rownum formatter is being used on a column
-       if (this.definition.formatter == "rownum") {
-               this.table.rowManager.rowNumColumn = this;
-       }
-};
-
-//// Retreive Column Information ////
-
-//return column header element
-Column.prototype.getElement = function () {
-       return this.element;
-};
-
-//return colunm group element
-Column.prototype.getGroupElement = function () {
-       return this.groupElement;
-};
-
-//return field name
-Column.prototype.getField = function () {
-       return this.field;
-};
-
-//return the first column in a group
-Column.prototype.getFirstColumn = function () {
-       if (!this.isGroup) {
-               return this;
-       } else {
-               if (this.columns.length) {
-                       return this.columns[0].getFirstColumn();
-               } else {
-                       return false;
-               }
-       }
-};
-
-//return the last column in a group
-Column.prototype.getLastColumn = function () {
-       if (!this.isGroup) {
-               return this;
-       } else {
-               if (this.columns.length) {
-                       return this.columns[this.columns.length - 1].getLastColumn();
-               } else {
-                       return false;
-               }
-       }
-};
-
-//return all columns in a group
-Column.prototype.getColumns = function () {
-       return this.columns;
-};
-
-//return all columns in a group
-Column.prototype.getCells = function () {
-       return this.cells;
-};
-
-//retreive the top column in a group of columns
-Column.prototype.getTopColumn = function () {
-       if (this.parent.isGroup) {
-               return this.parent.getTopColumn();
-       } else {
-               return this;
-       }
-};
-
-//return column definition object
-Column.prototype.getDefinition = function (updateBranches) {
-       var colDefs = [];
-
-       if (this.isGroup && updateBranches) {
-               this.columns.forEach(function (column) {
-                       colDefs.push(column.getDefinition(true));
-               });
-
-               this.definition.columns = colDefs;
-       }
-
-       return this.definition;
-};
-
-//////////////////// Actions ////////////////////
-
-Column.prototype.checkColumnVisibility = function () {
-       var visible = false;
-
-       this.columns.forEach(function (column) {
-               if (column.visible) {
-                       visible = true;
-               }
-       });
-
-       if (visible) {
-               this.show();
-               this.parent.table.options.columnVisibilityChanged.call(this.table, this.getComponent(), false);
-       } else {
-               this.hide();
-       }
-};
-
-//show column
-Column.prototype.show = function (silent, responsiveToggle) {
-       if (!this.visible) {
-               this.visible = true;
-
-               this.element.style.display = "";
-
-               if (this.parent.isGroup) {
-                       this.parent.checkColumnVisibility();
-               }
-
-               this.cells.forEach(function (cell) {
-                       cell.show();
-               });
-
-               if (!this.isGroup && this.width === null) {
-                       this.reinitializeWidth();
-               }
-
-               this.table.columnManager._verticalAlignHeaders();
-
-               if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.columns) {
-                       this.table.modules.persistence.save("columns");
-               }
-
-               if (!responsiveToggle && this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-                       this.table.modules.responsiveLayout.updateColumnVisibility(this, this.visible);
-               }
-
-               if (!silent) {
-                       this.table.options.columnVisibilityChanged.call(this.table, this.getComponent(), true);
-               }
-
-               if (this.parent.isGroup) {
-                       this.parent.matchChildWidths();
-               }
-       }
-};
-
-//hide column
-Column.prototype.hide = function (silent, responsiveToggle) {
-       if (this.visible) {
-               this.visible = false;
-
-               this.element.style.display = "none";
-
-               this.table.columnManager._verticalAlignHeaders();
-
-               if (this.parent.isGroup) {
-                       this.parent.checkColumnVisibility();
-               }
-
-               this.cells.forEach(function (cell) {
-                       cell.hide();
-               });
-
-               if (this.table.options.persistence && this.table.modExists("persistence", true) && this.table.modules.persistence.config.columns) {
-                       this.table.modules.persistence.save("columns");
-               }
-
-               if (!responsiveToggle && this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-                       this.table.modules.responsiveLayout.updateColumnVisibility(this, this.visible);
-               }
-
-               if (!silent) {
-                       this.table.options.columnVisibilityChanged.call(this.table, this.getComponent(), false);
-               }
-
-               if (this.parent.isGroup) {
-                       this.parent.matchChildWidths();
-               }
-       }
-};
-
-Column.prototype.matchChildWidths = function () {
-       var childWidth = 0;
-
-       if (this.contentElement && this.columns.length) {
-               this.columns.forEach(function (column) {
-                       if (column.visible) {
-                               childWidth += column.getWidth();
-                       }
-               });
-
-               this.contentElement.style.maxWidth = childWidth - 1 + "px";
-
-               if (this.parent.isGroup) {
-                       this.parent.matchChildWidths();
-               }
-       }
-};
-
-Column.prototype.setWidth = function (width) {
-       this.widthFixed = true;
-       this.setWidthActual(width);
-};
-
-Column.prototype.setWidthActual = function (width) {
-       if (isNaN(width)) {
-               width = Math.floor(this.table.element.clientWidth / 100 * parseInt(width));
-       }
-
-       width = Math.max(this.minWidth, width);
-
-       this.width = width;
-       this.widthStyled = width ? width + "px" : "";
-
-       this.element.style.width = this.widthStyled;
-
-       if (!this.isGroup) {
-               this.cells.forEach(function (cell) {
-                       cell.setWidth();
-               });
-       }
-
-       if (this.parent.isGroup) {
-               this.parent.matchChildWidths();
-       }
-
-       //set resizable handles
-       if (this.table.modExists("frozenColumns")) {
-               this.table.modules.frozenColumns.layout();
-       }
-};
-
-Column.prototype.checkCellHeights = function () {
-       var rows = [];
-
-       this.cells.forEach(function (cell) {
-               if (cell.row.heightInitialized) {
-                       if (cell.row.getElement().offsetParent !== null) {
-                               rows.push(cell.row);
-                               cell.row.clearCellHeight();
-                       } else {
-                               cell.row.heightInitialized = false;
-                       }
-               }
-       });
-
-       rows.forEach(function (row) {
-               row.calcHeight();
-       });
-
-       rows.forEach(function (row) {
-               row.setCellHeight();
-       });
-};
-
-Column.prototype.getWidth = function () {
-       var width = 0;
-
-       if (this.isGroup) {
-               this.columns.forEach(function (column) {
-                       if (column.visible) {
-                               width += column.getWidth();
-                       }
-               });
-       } else {
-               width = this.width;
-       }
-
-       return width;
-};
-
-Column.prototype.getHeight = function () {
-       return this.element.offsetHeight;
-};
-
-Column.prototype.setMinWidth = function (minWidth) {
-       this.minWidth = minWidth;
-       this.minWidthStyled = minWidth ? minWidth + "px" : "";
-
-       this.element.style.minWidth = this.minWidthStyled;
-
-       this.cells.forEach(function (cell) {
-               cell.setMinWidth();
-       });
-};
-
-Column.prototype.delete = function () {
-       var _this7 = this;
-
-       return new Promise(function (resolve, reject) {
-
-               if (_this7.isGroup) {
-                       _this7.columns.forEach(function (column) {
-                               column.delete();
-                       });
-               }
-
-               //cancel edit if column is currently being edited
-               if (_this7.table.modExists("edit")) {
-                       if (_this7.table.modules.edit.currentCell.column === _this7) {
-                               _this7.table.modules.edit.cancelEdit();
-                       }
-               }
-
-               var cellCount = _this7.cells.length;
-
-               for (var i = 0; i < cellCount; i++) {
-                       _this7.cells[0].delete();
-               }
-
-               _this7.element.parentNode.removeChild(_this7.element);
-
-               _this7.table.columnManager.deregisterColumn(_this7);
-
-               resolve();
-       });
-};
-
-Column.prototype.columnRendered = function () {
-       if (this.titleFormatterRendered) {
-               this.titleFormatterRendered();
-       }
-};
-
-Column.prototype.validate = function () {
-       var invalid = [];
-
-       this.cells.forEach(function (cell) {
-               if (!cell.validate()) {
-                       invalid.push(cell.getComponent());
-               }
-       });
-
-       return invalid.length ? invalid : true;
-};
-
-//////////////// Cell Management /////////////////
-
-//generate cell for this column
-Column.prototype.generateCell = function (row) {
-       var self = this;
-
-       var cell = new Cell(self, row);
-
-       this.cells.push(cell);
-
-       return cell;
-};
-
-Column.prototype.nextColumn = function () {
-       var index = this.table.columnManager.findColumnIndex(this);
-       return index > -1 ? this._nextVisibleColumn(index + 1) : false;
-};
-
-Column.prototype._nextVisibleColumn = function (index) {
-       var column = this.table.columnManager.getColumnByIndex(index);
-       return !column || column.visible ? column : this._nextVisibleColumn(index + 1);
-};
-
-Column.prototype.prevColumn = function () {
-       var index = this.table.columnManager.findColumnIndex(this);
-       return index > -1 ? this._prevVisibleColumn(index - 1) : false;
-};
-
-Column.prototype._prevVisibleColumn = function (index) {
-       var column = this.table.columnManager.getColumnByIndex(index);
-       return !column || column.visible ? column : this._prevVisibleColumn(index - 1);
-};
-
-Column.prototype.reinitializeWidth = function (force) {
-       this.widthFixed = false;
-
-       //set width if present
-       if (typeof this.definition.width !== "undefined" && !force) {
-               this.setWidth(this.definition.width);
-       }
-
-       //hide header filters to prevent them altering column width
-       if (this.table.modExists("filter")) {
-               this.table.modules.filter.hideHeaderFilterElements();
-       }
-
-       this.fitToData();
-
-       //show header filters again after layout is complete
-       if (this.table.modExists("filter")) {
-               this.table.modules.filter.showHeaderFilterElements();
-       }
-};
-
-//set column width to maximum cell width
-Column.prototype.fitToData = function () {
-       var self = this;
-
-       if (!this.widthFixed) {
-               this.element.style.width = "";
-
-               self.cells.forEach(function (cell) {
-                       cell.clearWidth();
-               });
-       }
-
-       var maxWidth = this.element.offsetWidth;
-
-       if (!self.width || !this.widthFixed) {
-               self.cells.forEach(function (cell) {
-                       var width = cell.getWidth();
-
-                       if (width > maxWidth) {
-                               maxWidth = width;
-                       }
-               });
-
-               if (maxWidth) {
-                       self.setWidthActual(maxWidth + 1);
-               }
-       }
-};
-
-Column.prototype.updateDefinition = function (updates) {
-       var _this8 = this;
-
-       return new Promise(function (resolve, reject) {
-               var definition;
-
-               if (!_this8.isGroup) {
-                       definition = Object.assign({}, _this8.getDefinition());
-                       definition = Object.assign(definition, updates);
-
-                       _this8.table.columnManager.addColumn(definition, false, _this8).then(function (column) {
-
-                               if (definition.field == _this8.field) {
-                                       _this8.field = false; //cleair field name to prevent deletion of duplicate column from arrays
-                               }
-
-                               _this8.delete().then(function () {
-                                       resolve(column.getComponent());
-                               }).catch(function (err) {
-                                       reject(err);
-                               });
-                       }).catch(function (err) {
-                               reject(err);
-                       });
-               } else {
-                       console.warn("Column Update Error - The updateDefintion function is only available on columns, not column groups");
-                       reject("Column Update Error - The updateDefintion function is only available on columns, not column groups");
-               }
-       });
-};
-
-Column.prototype.deleteCell = function (cell) {
-       var index = this.cells.indexOf(cell);
-
-       if (index > -1) {
-               this.cells.splice(index, 1);
-       }
-};
-
-Column.prototype.defaultOptionList = ["title", "field", "columns", "visible", "align", "hozAlign", "vertAlign", "width", "minWidth", "widthGrow", "widthShrink", "resizable", "frozen", "responsive", "tooltip", "cssClass", "rowHandle", "hideInHtml", "print", "htmlOutput", "sorter", "sorterParams", "formatter", "formatterParams", "variableHeight", "editable", "editor", "editorParams", "validator", "mutator", "mutatorParams", "mutatorData", "mutatorDataParams", "mutatorEdit", "mutatorEditParams", "mutatorClipboard", "mutatorClipboardParams", "accessor", "accessorParams", "accessorData", "accessorDataParams", "accessorDownload", "accessorDownloadParams", "accessorClipboard", "accessorClipboardParams", "accessorPrint", "accessorPrintParams", "accessorHtmlOutput", "accessorHtmlOutputParams", "clipboard", "download", "downloadTitle", "topCalc", "topCalcParams", "topCalcFormatter", "topCalcFormatterParams", "bottomCalc", "bottomCalcParams", "bottomCalcFormatter", "bottomCalcFormatterParams", "cellClick", "cellDblClick", "cellContext", "cellTap", "cellDblTap", "cellTapHold", "cellMouseEnter", "cellMouseLeave", "cellMouseOver", "cellMouseOut", "cellMouseMove", "cellEditing", "cellEdited", "cellEditCancelled", "headerSort", "headerSortStartingDir", "headerSortTristate", "headerClick", "headerDblClick", "headerContext", "headerTap", "headerDblTap", "headerTapHold", "headerTooltip", "headerVertical", "editableTitle", "titleFormatter", "titleFormatterParams", "headerFilter", "headerFilterPlaceholder", "headerFilterParams", "headerFilterEmptyCheck", "headerFilterFunc", "headerFilterFuncParams", "headerFilterLiveFilter", "print", "headerContextMenu", "headerMenu", "contextMenu", "formatterPrint", "formatterPrintParams", "formatterClipboard", "formatterClipboardParams", "formatterHtmlOutput", "formatterHtmlOutputParams", "titlePrint", "titleClipboard", "titleHtmlOutput", "titleDownload"];
-
-//////////////// Event Bindings /////////////////
-
-//////////////// Object Generation /////////////////
-Column.prototype.getComponent = function () {
-       if (!this.component) {
-               this.component = new ColumnComponent(this);
-       }
-
-       return this.component;
-};
-
-var RowManager = function RowManager(table) {
-
-       this.table = table;
-       this.element = this.createHolderElement(); //containing element
-       this.tableElement = this.createTableElement(); //table element
-       this.heightFixer = this.createTableElement(); //table element
-       this.columnManager = null; //hold column manager object
-       this.height = 0; //hold height of table element
-
-       this.firstRender = false; //handle first render
-       this.renderMode = "virtual"; //current rendering mode
-       this.fixedHeight = false; //current rendering mode
-
-       this.rows = []; //hold row data objects
-       this.activeRows = []; //rows currently available to on display in the table
-       this.activeRowsCount = 0; //count of active rows
-
-       this.displayRows = []; //rows currently on display in the table
-       this.displayRowsCount = 0; //count of display rows
-
-       this.scrollTop = 0;
-       this.scrollLeft = 0;
-
-       this.vDomRowHeight = 20; //approximation of row heights for padding
-
-       this.vDomTop = 0; //hold position for first rendered row in the virtual DOM
-       this.vDomBottom = 0; //hold possition for last rendered row in the virtual DOM
-
-       this.vDomScrollPosTop = 0; //last scroll position of the vDom top;
-       this.vDomScrollPosBottom = 0; //last scroll position of the vDom bottom;
-
-       this.vDomTopPad = 0; //hold value of padding for top of virtual DOM
-       this.vDomBottomPad = 0; //hold value of padding for bottom of virtual DOM
-
-       this.vDomMaxRenderChain = 90; //the maximum number of dom elements that can be rendered in 1 go
-
-       this.vDomWindowBuffer = 0; //window row buffer before removing elements, to smooth scrolling
-
-       this.vDomWindowMinTotalRows = 20; //minimum number of rows to be generated in virtual dom (prevent buffering issues on tables with tall rows)
-       this.vDomWindowMinMarginRows = 5; //minimum number of rows to be generated in virtual dom margin
-
-       this.vDomTopNewRows = []; //rows to normalize after appending to optimize render speed
-       this.vDomBottomNewRows = []; //rows to normalize after appending to optimize render speed
-
-       this.rowNumColumn = false; //hold column component for row number column
-
-       this.redrawBlock = false; //prevent redraws to allow multiple data manipulations becore continuing
-       this.redrawBlockRestoreConfig = false; //store latest redraw function calls for when redraw is needed
-       this.redrawBlockRederInPosition = false; //store latest redraw function calls for when redraw is needed
-};
-
-//////////////// Setup Functions /////////////////
-
-RowManager.prototype.createHolderElement = function () {
-       var el = document.createElement("div");
-
-       el.classList.add("tabulator-tableHolder");
-       el.setAttribute("tabindex", 0);
-
-       return el;
-};
-
-RowManager.prototype.createTableElement = function () {
-       var el = document.createElement("div");
-
-       el.classList.add("tabulator-table");
-
-       return el;
-};
-
-//return containing element
-RowManager.prototype.getElement = function () {
-       return this.element;
-};
-
-//return table element
-RowManager.prototype.getTableElement = function () {
-       return this.tableElement;
-};
-
-//return position of row in table
-RowManager.prototype.getRowPosition = function (row, active) {
-       if (active) {
-               return this.activeRows.indexOf(row);
-       } else {
-               return this.rows.indexOf(row);
-       }
-};
-
-//link to column manager
-RowManager.prototype.setColumnManager = function (manager) {
-       this.columnManager = manager;
-};
-
-RowManager.prototype.initialize = function () {
-       var self = this;
-
-       self.setRenderMode();
-
-       //initialize manager
-       self.element.appendChild(self.tableElement);
-
-       self.firstRender = true;
-
-       //scroll header along with table body
-       self.element.addEventListener("scroll", function () {
-               var left = self.element.scrollLeft;
-
-               //handle horizontal scrolling
-               if (self.scrollLeft != left) {
-                       self.columnManager.scrollHorizontal(left);
-
-                       if (self.table.options.groupBy) {
-                               self.table.modules.groupRows.scrollHeaders(left);
-                       }
-
-                       if (self.table.modExists("columnCalcs")) {
-                               self.table.modules.columnCalcs.scrollHorizontal(left);
-                       }
-
-                       self.table.options.scrollHorizontal(left);
-               }
-
-               self.scrollLeft = left;
-       });
-
-       //handle virtual dom scrolling
-       if (this.renderMode === "virtual") {
-
-               self.element.addEventListener("scroll", function () {
-                       var top = self.element.scrollTop;
-                       var dir = self.scrollTop > top;
-
-                       //handle verical scrolling
-                       if (self.scrollTop != top) {
-                               self.scrollTop = top;
-                               self.scrollVertical(dir);
-
-                               if (self.table.options.ajaxProgressiveLoad == "scroll") {
-                                       self.table.modules.ajax.nextPage(self.element.scrollHeight - self.element.clientHeight - top);
-                               }
-
-                               self.table.options.scrollVertical(top);
-                       } else {
-                               self.scrollTop = top;
-                       }
-               });
-       }
-};
-
-////////////////// Row Manipulation //////////////////
-
-RowManager.prototype.findRow = function (subject) {
-       var self = this;
-
-       if ((typeof subject === 'undefined' ? 'undefined' : _typeof(subject)) == "object") {
-
-               if (subject instanceof Row) {
-                       //subject is row element
-                       return subject;
-               } else if (subject instanceof RowComponent) {
-                       //subject is public row component
-                       return subject._getSelf() || false;
-               } else if (typeof HTMLElement !== "undefined" && subject instanceof HTMLElement) {
-                       //subject is a HTML element of the row
-                       var match = self.rows.find(function (row) {
-                               return row.element === subject;
-                       });
-
-                       return match || false;
-               }
-       } else if (typeof subject == "undefined" || subject === null) {
-               return false;
-       } else {
-               //subject should be treated as the index of the row
-               var _match = self.rows.find(function (row) {
-                       return row.data[self.table.options.index] == subject;
-               });
-
-               return _match || false;
-       }
-
-       //catch all for any other type of input
-
-       return false;
-};
-
-RowManager.prototype.getRowFromDataObject = function (data) {
-       var match = this.rows.find(function (row) {
-               return row.data === data;
-       });
-
-       return match || false;
-};
-
-RowManager.prototype.getRowFromPosition = function (position, active) {
-       if (active) {
-               return this.activeRows[position];
-       } else {
-               return this.rows[position];
-       }
-};
-
-RowManager.prototype.scrollToRow = function (row, position, ifVisible) {
-       var _this9 = this;
-
-       var rowIndex = this.getDisplayRows().indexOf(row),
-           rowEl = row.getElement(),
-           rowTop,
-           offset = 0;
-
-       return new Promise(function (resolve, reject) {
-               if (rowIndex > -1) {
-
-                       if (typeof position === "undefined") {
-                               position = _this9.table.options.scrollToRowPosition;
-                       }
-
-                       if (typeof ifVisible === "undefined") {
-                               ifVisible = _this9.table.options.scrollToRowIfVisible;
-                       }
-
-                       if (position === "nearest") {
-                               switch (_this9.renderMode) {
-                                       case "classic":
-                                               rowTop = Tabulator.prototype.helpers.elOffset(rowEl).top;
-                                               position = Math.abs(_this9.element.scrollTop - rowTop) > Math.abs(_this9.element.scrollTop + _this9.element.clientHeight - rowTop) ? "bottom" : "top";
-                                               break;
-                                       case "virtual":
-                                               position = Math.abs(_this9.vDomTop - rowIndex) > Math.abs(_this9.vDomBottom - rowIndex) ? "bottom" : "top";
-                                               break;
-                               }
-                       }
-
-                       //check row visibility
-                       if (!ifVisible) {
-                               if (Tabulator.prototype.helpers.elVisible(rowEl)) {
-                                       offset = Tabulator.prototype.helpers.elOffset(rowEl).top - Tabulator.prototype.helpers.elOffset(_this9.element).top;
-
-                                       if (offset > 0 && offset < _this9.element.clientHeight - rowEl.offsetHeight) {
-                                               return false;
-                                       }
-                               }
-                       }
-
-                       //scroll to row
-                       switch (_this9.renderMode) {
-                               case "classic":
-                                       _this9.element.scrollTop = Tabulator.prototype.helpers.elOffset(rowEl).top - Tabulator.prototype.helpers.elOffset(_this9.element).top + _this9.element.scrollTop;
-                                       break;
-                               case "virtual":
-                                       _this9._virtualRenderFill(rowIndex, true);
-                                       break;
-                       }
-
-                       //align to correct position
-                       switch (position) {
-                               case "middle":
-                               case "center":
-
-                                       if (_this9.element.scrollHeight - _this9.element.scrollTop == _this9.element.clientHeight) {
-                                               _this9.element.scrollTop = _this9.element.scrollTop + (rowEl.offsetTop - _this9.element.scrollTop) - (_this9.element.scrollHeight - rowEl.offsetTop) / 2;
-                                       } else {
-                                               _this9.element.scrollTop = _this9.element.scrollTop - _this9.element.clientHeight / 2;
-                                       }
-
-                                       break;
-
-                               case "bottom":
-
-                                       if (_this9.element.scrollHeight - _this9.element.scrollTop == _this9.element.clientHeight) {
-                                               _this9.element.scrollTop = _this9.element.scrollTop - (_this9.element.scrollHeight - rowEl.offsetTop) + rowEl.offsetHeight;
-                                       } else {
-                                               _this9.element.scrollTop = _this9.element.scrollTop - _this9.element.clientHeight + rowEl.offsetHeight;
-                                       }
-
-                                       break;
-                       }
-
-                       resolve();
-               } else {
-                       console.warn("Scroll Error - Row not visible");
-                       reject("Scroll Error - Row not visible");
-               }
-       });
-};
-
-////////////////// Data Handling //////////////////
-
-RowManager.prototype.setData = function (data, renderInPosition, columnsChanged) {
-       var _this10 = this;
-
-       var self = this;
-
-       return new Promise(function (resolve, reject) {
-               if (renderInPosition && _this10.getDisplayRows().length) {
-                       if (self.table.options.pagination) {
-                               self._setDataActual(data, true);
-                       } else {
-                               _this10.reRenderInPosition(function () {
-                                       self._setDataActual(data);
-                               });
-                       }
-               } else {
-                       if (_this10.table.options.autoColumns && columnsChanged) {
-                               _this10.table.columnManager.generateColumnsFromRowData(data);
-                       }
-                       _this10.resetScroll();
-                       _this10._setDataActual(data);
-               }
-
-               resolve();
-       });
-};
-
-RowManager.prototype._setDataActual = function (data, renderInPosition) {
-       var self = this;
-
-       self.table.options.dataLoading.call(this.table, data);
-
-       this._wipeElements();
-
-       if (this.table.options.history && this.table.modExists("history")) {
-               this.table.modules.history.clear();
-       }
-
-       if (Array.isArray(data)) {
-
-               if (this.table.modExists("selectRow")) {
-                       this.table.modules.selectRow.clearSelectionData();
-               }
-
-               if (this.table.options.reactiveData && this.table.modExists("reactiveData", true)) {
-                       this.table.modules.reactiveData.watchData(data);
-               }
-
-               data.forEach(function (def, i) {
-                       if (def && (typeof def === 'undefined' ? 'undefined' : _typeof(def)) === "object") {
-                               var row = new Row(def, self);
-                               self.rows.push(row);
-                       } else {
-                               console.warn("Data Loading Warning - Invalid row data detected and ignored, expecting object but received:", def);
-                       }
-               });
-
-               self.table.options.dataLoaded.call(this.table, data);
-
-               self.refreshActiveData(false, false, renderInPosition);
-       } else {
-               console.error("Data Loading Error - Unable to process data due to invalid data type \nExpecting: array \nReceived: ", typeof data === 'undefined' ? 'undefined' : _typeof(data), "\nData:     ", data);
-       }
-};
-
-RowManager.prototype._wipeElements = function () {
-       this.rows.forEach(function (row) {
-               row.wipe();
-       });
-
-       if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-               this.table.modules.groupRows.wipe();
-       }
-
-       this.rows = [];
-};
-
-RowManager.prototype.deleteRow = function (row, blockRedraw) {
-       var allIndex = this.rows.indexOf(row),
-           activeIndex = this.activeRows.indexOf(row);
-
-       if (activeIndex > -1) {
-               this.activeRows.splice(activeIndex, 1);
-       }
-
-       if (allIndex > -1) {
-               this.rows.splice(allIndex, 1);
-       }
-
-       this.setActiveRows(this.activeRows);
-
-       this.displayRowIterator(function (rows) {
-               var displayIndex = rows.indexOf(row);
-
-               if (displayIndex > -1) {
-                       rows.splice(displayIndex, 1);
-               }
-       });
-
-       if (!blockRedraw) {
-               this.reRenderInPosition();
-       }
-
-       this.regenerateRowNumbers();
-
-       this.table.options.rowDeleted.call(this.table, row.getComponent());
-
-       this.table.options.dataEdited.call(this.table, this.getData());
-
-       if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-               this.table.modules.groupRows.updateGroupRows(true);
-       } else if (this.table.options.pagination && this.table.modExists("page")) {
-               this.refreshActiveData(false, false, true);
-       } else {
-               if (this.table.options.pagination && this.table.modExists("page")) {
-                       this.refreshActiveData("page");
-               }
-       }
-};
-
-RowManager.prototype.addRow = function (data, pos, index, blockRedraw) {
-
-       var row = this.addRowActual(data, pos, index, blockRedraw);
-
-       if (this.table.options.history && this.table.modExists("history")) {
-               this.table.modules.history.action("rowAdd", row, { data: data, pos: pos, index: index });
-       }
-
-       return row;
-};
-
-//add multiple rows
-RowManager.prototype.addRows = function (data, pos, index) {
-       var _this11 = this;
-
-       var self = this,
-           length = 0,
-           rows = [];
-
-       return new Promise(function (resolve, reject) {
-               pos = _this11.findAddRowPos(pos);
-
-               if (!Array.isArray(data)) {
-                       data = [data];
-               }
-
-               length = data.length - 1;
-
-               if (typeof index == "undefined" && pos || typeof index !== "undefined" && !pos) {
-                       data.reverse();
-               }
-
-               data.forEach(function (item, i) {
-                       var row = self.addRow(item, pos, index, true);
-                       rows.push(row);
-               });
-
-               if (_this11.table.options.groupBy && _this11.table.modExists("groupRows")) {
-                       _this11.table.modules.groupRows.updateGroupRows(true);
-               } else if (_this11.table.options.pagination && _this11.table.modExists("page")) {
-                       _this11.refreshActiveData(false, false, true);
-               } else {
-                       _this11.reRenderInPosition();
-               }
-
-               //recalc column calculations if present
-               if (_this11.table.modExists("columnCalcs")) {
-                       _this11.table.modules.columnCalcs.recalc(_this11.table.rowManager.activeRows);
-               }
-
-               _this11.regenerateRowNumbers();
-               resolve(rows);
-       });
-};
-
-RowManager.prototype.findAddRowPos = function (pos) {
-       if (typeof pos === "undefined") {
-               pos = this.table.options.addRowPos;
-       }
-
-       if (pos === "pos") {
-               pos = true;
-       }
-
-       if (pos === "bottom") {
-               pos = false;
-       }
-
-       return pos;
-};
-
-RowManager.prototype.addRowActual = function (data, pos, index, blockRedraw) {
-       var row = data instanceof Row ? data : new Row(data || {}, this),
-           top = this.findAddRowPos(pos),
-           allIndex = -1,
-           activeIndex,
-           dispRows;
-
-       if (!index && this.table.options.pagination && this.table.options.paginationAddRow == "page") {
-               dispRows = this.getDisplayRows();
-
-               if (top) {
-                       if (dispRows.length) {
-                               index = dispRows[0];
-                       } else {
-                               if (this.activeRows.length) {
-                                       index = this.activeRows[this.activeRows.length - 1];
-                                       top = false;
-                               }
-                       }
-               } else {
-                       if (dispRows.length) {
-                               index = dispRows[dispRows.length - 1];
-                               top = dispRows.length < this.table.modules.page.getPageSize() ? false : true;
-                       }
-               }
-       }
-
-       if (typeof index !== "undefined") {
-               index = this.findRow(index);
-       }
-
-       if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-               this.table.modules.groupRows.assignRowToGroup(row);
-
-               var groupRows = row.getGroup().rows;
-
-               if (groupRows.length > 1) {
-
-                       if (!index || index && groupRows.indexOf(index) == -1) {
-                               if (top) {
-                                       if (groupRows[0] !== row) {
-                                               index = groupRows[0];
-                                               this._moveRowInArray(row.getGroup().rows, row, index, !top);
-                                       }
-                               } else {
-                                       if (groupRows[groupRows.length - 1] !== row) {
-                                               index = groupRows[groupRows.length - 1];
-                                               this._moveRowInArray(row.getGroup().rows, row, index, !top);
-                                       }
-                               }
-                       } else {
-                               this._moveRowInArray(row.getGroup().rows, row, index, !top);
-                       }
-               }
-       }
-
-       if (index) {
-               allIndex = this.rows.indexOf(index);
-       }
-
-       if (index && allIndex > -1) {
-               activeIndex = this.activeRows.indexOf(index);
-
-               this.displayRowIterator(function (rows) {
-                       var displayIndex = rows.indexOf(index);
-
-                       if (displayIndex > -1) {
-                               rows.splice(top ? displayIndex : displayIndex + 1, 0, row);
-                       }
-               });
-
-               if (activeIndex > -1) {
-                       this.activeRows.splice(top ? activeIndex : activeIndex + 1, 0, row);
-               }
-
-               this.rows.splice(top ? allIndex : allIndex + 1, 0, row);
-       } else {
-
-               if (top) {
-
-                       this.displayRowIterator(function (rows) {
-                               rows.unshift(row);
-                       });
-
-                       this.activeRows.unshift(row);
-                       this.rows.unshift(row);
-               } else {
-                       this.displayRowIterator(function (rows) {
-                               rows.push(row);
-                       });
-
-                       this.activeRows.push(row);
-                       this.rows.push(row);
-               }
-       }
-
-       this.setActiveRows(this.activeRows);
-
-       this.table.options.rowAdded.call(this.table, row.getComponent());
-
-       this.table.options.dataEdited.call(this.table, this.getData());
-
-       if (!blockRedraw) {
-               this.reRenderInPosition();
-       }
-
-       return row;
-};
-
-RowManager.prototype.moveRow = function (from, to, after) {
-       if (this.table.options.history && this.table.modExists("history")) {
-               this.table.modules.history.action("rowMove", from, { posFrom: this.getRowPosition(from), posTo: this.getRowPosition(to), to: to, after: after });
-       }
-
-       this.moveRowActual(from, to, after);
-
-       this.regenerateRowNumbers();
-
-       this.table.options.rowMoved.call(this.table, from.getComponent());
-};
-
-RowManager.prototype.moveRowActual = function (from, to, after) {
-       var _this12 = this;
-
-       this._moveRowInArray(this.rows, from, to, after);
-       this._moveRowInArray(this.activeRows, from, to, after);
-
-       this.displayRowIterator(function (rows) {
-               _this12._moveRowInArray(rows, from, to, after);
-       });
-
-       if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-
-               if (!after && to instanceof Group) {
-                       to = this.table.rowManager.prevDisplayRow(from) || to;
-               }
-
-               var toGroup = to.getGroup();
-               var fromGroup = from.getGroup();
-
-               if (toGroup === fromGroup) {
-                       this._moveRowInArray(toGroup.rows, from, to, after);
-               } else {
-                       if (fromGroup) {
-                               fromGroup.removeRow(from);
-                       }
-
-                       toGroup.insertRow(from, to, after);
-               }
-       }
-};
-
-RowManager.prototype._moveRowInArray = function (rows, from, to, after) {
-       var fromIndex, toIndex, start, end;
-
-       if (from !== to) {
-
-               fromIndex = rows.indexOf(from);
-
-               if (fromIndex > -1) {
-
-                       rows.splice(fromIndex, 1);
-
-                       toIndex = rows.indexOf(to);
-
-                       if (toIndex > -1) {
-
-                               if (after) {
-                                       rows.splice(toIndex + 1, 0, from);
-                               } else {
-                                       rows.splice(toIndex, 0, from);
-                               }
-                       } else {
-                               rows.splice(fromIndex, 0, from);
-                       }
-               }
-
-               //restyle rows
-               if (rows === this.getDisplayRows()) {
-
-                       start = fromIndex < toIndex ? fromIndex : toIndex;
-                       end = toIndex > fromIndex ? toIndex : fromIndex + 1;
-
-                       for (var i = start; i <= end; i++) {
-                               if (rows[i]) {
-                                       this.styleRow(rows[i], i);
-                               }
-                       }
-               }
-       }
-};
-
-RowManager.prototype.clearData = function () {
-       this.setData([]);
-};
-
-RowManager.prototype.getRowIndex = function (row) {
-       return this.findRowIndex(row, this.rows);
-};
-
-RowManager.prototype.getDisplayRowIndex = function (row) {
-       var index = this.getDisplayRows().indexOf(row);
-       return index > -1 ? index : false;
-};
-
-RowManager.prototype.nextDisplayRow = function (row, rowOnly) {
-       var index = this.getDisplayRowIndex(row),
-           nextRow = false;
-
-       if (index !== false && index < this.displayRowsCount - 1) {
-               nextRow = this.getDisplayRows()[index + 1];
-       }
-
-       if (nextRow && (!(nextRow instanceof Row) || nextRow.type != "row")) {
-               return this.nextDisplayRow(nextRow, rowOnly);
-       }
-
-       return nextRow;
-};
-
-RowManager.prototype.prevDisplayRow = function (row, rowOnly) {
-       var index = this.getDisplayRowIndex(row),
-           prevRow = false;
-
-       if (index) {
-               prevRow = this.getDisplayRows()[index - 1];
-       }
-
-       if (rowOnly && prevRow && (!(prevRow instanceof Row) || prevRow.type != "row")) {
-               return this.prevDisplayRow(prevRow, rowOnly);
-       }
-
-       return prevRow;
-};
-
-RowManager.prototype.findRowIndex = function (row, list) {
-       var rowIndex;
-
-       row = this.findRow(row);
-
-       if (row) {
-               rowIndex = list.indexOf(row);
-
-               if (rowIndex > -1) {
-                       return rowIndex;
-               }
-       }
-
-       return false;
-};
-
-RowManager.prototype.getData = function (active, transform) {
-       var output = [],
-           rows = this.getRows(active);
-
-       rows.forEach(function (row) {
-               if (row.type == "row") {
-                       output.push(row.getData(transform || "data"));
-               }
-       });
-
-       return output;
-};
-
-RowManager.prototype.getComponents = function (active) {
-       var output = [],
-           rows = this.getRows(active);
-
-       rows.forEach(function (row) {
-               output.push(row.getComponent());
-       });
-
-       return output;
-};
-
-RowManager.prototype.getDataCount = function (active) {
-       var rows = this.getRows(active);
-
-       return rows.length;
-};
-
-RowManager.prototype._genRemoteRequest = function () {
-       var _this13 = this;
-
-       var table = this.table,
-           options = table.options,
-           params = {};
-
-       if (table.modExists("page")) {
-               //set sort data if defined
-               if (options.ajaxSorting) {
-                       var sorters = this.table.modules.sort.getSort();
-
-                       sorters.forEach(function (item) {
-                               delete item.column;
-                       });
-
-                       params[this.table.modules.page.paginationDataSentNames.sorters] = sorters;
-               }
-
-               //set filter data if defined
-               if (options.ajaxFiltering) {
-                       var filters = this.table.modules.filter.getFilters(true, true);
-
-                       params[this.table.modules.page.paginationDataSentNames.filters] = filters;
-               }
-
-               this.table.modules.ajax.setParams(params, true);
-       }
-
-       table.modules.ajax.sendRequest().then(function (data) {
-               _this13._setDataActual(data, true);
-       }).catch(function (e) {});
-};
-
-//choose the path to refresh data after a filter update
-RowManager.prototype.filterRefresh = function () {
-       var table = this.table,
-           options = table.options,
-           left = this.scrollLeft;
-
-       if (options.ajaxFiltering) {
-               if (options.pagination == "remote" && table.modExists("page")) {
-                       table.modules.page.reset(true);
-                       table.modules.page.setPage(1).then(function () {}).catch(function () {});
-               } else if (options.ajaxProgressiveLoad) {
-                       table.modules.ajax.loadData().then(function () {}).catch(function () {});
-               } else {
-                       //assume data is url, make ajax call to url to get data
-                       this._genRemoteRequest();
-               }
-       } else {
-               this.refreshActiveData("filter");
-       }
-
-       this.scrollHorizontal(left);
-};
-
-//choose the path to refresh data after a sorter update
-RowManager.prototype.sorterRefresh = function (loadOrignalData) {
-       var table = this.table,
-           options = this.table.options,
-           left = this.scrollLeft;
-
-       if (options.ajaxSorting) {
-               if ((options.pagination == "remote" || options.progressiveLoad) && table.modExists("page")) {
-                       table.modules.page.reset(true);
-                       table.modules.page.setPage(1).then(function () {}).catch(function () {});
-               } else if (options.ajaxProgressiveLoad) {
-                       table.modules.ajax.loadData().then(function () {}).catch(function () {});
-               } else {
-                       //assume data is url, make ajax call to url to get data
-                       this._genRemoteRequest();
-               }
-       } else {
-               this.refreshActiveData(loadOrignalData ? "filter" : "sort");
-       }
-
-       this.scrollHorizontal(left);
-};
-
-RowManager.prototype.scrollHorizontal = function (left) {
-       this.scrollLeft = left;
-       this.element.scrollLeft = left;
-
-       if (this.table.options.groupBy) {
-               this.table.modules.groupRows.scrollHeaders(left);
-       }
-
-       if (this.table.modExists("columnCalcs")) {
-               this.table.modules.columnCalcs.scrollHorizontal(left);
-       }
-};
-
-//set active data set
-RowManager.prototype.refreshActiveData = function (stage, skipStage, renderInPosition) {
-       var self = this,
-           table = this.table,
-           cascadeOrder = ["all", "filter", "sort", "display", "freeze", "group", "tree", "page"],
-           displayIndex;
-
-       if (this.redrawBlock) {
-
-               if (!this.redrawBlockRestoreConfig || cascadeOrder.indexOf(stage) < cascadeOrder.indexOf(this.redrawBlockRestoreConfig.stage)) {
-                       this.redrawBlockRestoreConfig = {
-                               stage: stage,
-                               skipStage: skipStage,
-                               renderInPosition: renderInPosition
-                       };
-               }
-
-               return;
-       } else {
-
-               if (self.table.modExists("edit")) {
-                       self.table.modules.edit.cancelEdit();
-               }
-
-               if (!stage) {
-                       stage = "all";
-               }
-
-               if (table.options.selectable && !table.options.selectablePersistence && table.modExists("selectRow")) {
-                       table.modules.selectRow.deselectRows();
-               }
-
-               //cascade through data refresh stages
-               switch (stage) {
-                       case "all":
-
-                       case "filter":
-                               if (!skipStage) {
-                                       if (table.modExists("filter")) {
-                                               self.setActiveRows(table.modules.filter.filter(self.rows));
-                                       } else {
-                                               self.setActiveRows(self.rows.slice(0));
-                                       }
-                               } else {
-                                       skipStage = false;
-                               }
-
-                       case "sort":
-                               if (!skipStage) {
-                                       if (table.modExists("sort")) {
-                                               table.modules.sort.sort(this.activeRows);
-                                       }
-                               } else {
-                                       skipStage = false;
-                               }
-
-                               //regenerate row numbers for row number formatter if in use
-                               this.regenerateRowNumbers();
-
-                       //generic stage to allow for pipeline trigger after the data manipulation stage
-                       case "display":
-                               this.resetDisplayRows();
-
-                       case "freeze":
-                               if (!skipStage) {
-                                       if (this.table.modExists("frozenRows")) {
-                                               if (table.modules.frozenRows.isFrozen()) {
-                                                       if (!table.modules.frozenRows.getDisplayIndex()) {
-                                                               table.modules.frozenRows.setDisplayIndex(this.getNextDisplayIndex());
-                                                       }
-
-                                                       displayIndex = table.modules.frozenRows.getDisplayIndex();
-
-                                                       displayIndex = self.setDisplayRows(table.modules.frozenRows.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
-
-                                                       if (displayIndex !== true) {
-                                                               table.modules.frozenRows.setDisplayIndex(displayIndex);
-                                                       }
-                                               }
-                                       }
-                               } else {
-                                       skipStage = false;
-                               }
-
-                       case "group":
-                               if (!skipStage) {
-                                       if (table.options.groupBy && table.modExists("groupRows")) {
-
-                                               if (!table.modules.groupRows.getDisplayIndex()) {
-                                                       table.modules.groupRows.setDisplayIndex(this.getNextDisplayIndex());
-                                               }
-
-                                               displayIndex = table.modules.groupRows.getDisplayIndex();
-
-                                               displayIndex = self.setDisplayRows(table.modules.groupRows.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
-
-                                               if (displayIndex !== true) {
-                                                       table.modules.groupRows.setDisplayIndex(displayIndex);
-                                               }
-                                       }
-                               } else {
-                                       skipStage = false;
-                               }
-
-                       case "tree":
-
-                               if (!skipStage) {
-                                       if (table.options.dataTree && table.modExists("dataTree")) {
-                                               if (!table.modules.dataTree.getDisplayIndex()) {
-                                                       table.modules.dataTree.setDisplayIndex(this.getNextDisplayIndex());
-                                               }
-
-                                               displayIndex = table.modules.dataTree.getDisplayIndex();
-
-                                               displayIndex = self.setDisplayRows(table.modules.dataTree.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
-
-                                               if (displayIndex !== true) {
-                                                       table.modules.dataTree.setDisplayIndex(displayIndex);
-                                               }
-                                       }
-                               } else {
-                                       skipStage = false;
-                               }
-
-                               if (table.options.pagination && table.modExists("page") && !renderInPosition) {
-                                       if (table.modules.page.getMode() == "local") {
-                                               table.modules.page.reset();
-                                       }
-                               }
-
-                       case "page":
-                               if (!skipStage) {
-                                       if (table.options.pagination && table.modExists("page")) {
-
-                                               if (!table.modules.page.getDisplayIndex()) {
-                                                       table.modules.page.setDisplayIndex(this.getNextDisplayIndex());
-                                               }
-
-                                               displayIndex = table.modules.page.getDisplayIndex();
-
-                                               if (table.modules.page.getMode() == "local") {
-                                                       table.modules.page.setMaxRows(this.getDisplayRows(displayIndex - 1).length);
-                                               }
-
-                                               displayIndex = self.setDisplayRows(table.modules.page.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
-
-                                               if (displayIndex !== true) {
-                                                       table.modules.page.setDisplayIndex(displayIndex);
-                                               }
-                                       }
-                               } else {
-                                       skipStage = false;
-                               }
-               }
-
-               if (Tabulator.prototype.helpers.elVisible(self.element)) {
-                       if (renderInPosition) {
-                               self.reRenderInPosition();
-                       } else {
-                               self.renderTable();
-                               if (table.options.layoutColumnsOnNewData) {
-                                       self.table.columnManager.redraw(true);
-                               }
-                       }
-               }
-
-               if (table.modExists("columnCalcs")) {
-                       table.modules.columnCalcs.recalc(this.activeRows);
-               }
-       }
-};
-
-//regenerate row numbers for row number formatter if in use
-RowManager.prototype.regenerateRowNumbers = function () {
-       var _this14 = this;
-
-       if (this.rowNumColumn) {
-               this.activeRows.forEach(function (row) {
-                       var cell = row.getCell(_this14.rowNumColumn);
-
-                       if (cell) {
-                               cell._generateContents();
-                       }
-               });
-       }
-};
-
-RowManager.prototype.setActiveRows = function (activeRows) {
-       this.activeRows = activeRows;
-       this.activeRowsCount = this.activeRows.length;
-};
-
-//reset display rows array
-RowManager.prototype.resetDisplayRows = function () {
-       this.displayRows = [];
-
-       this.displayRows.push(this.activeRows.slice(0));
-
-       this.displayRowsCount = this.displayRows[0].length;
-
-       if (this.table.modExists("frozenRows")) {
-               this.table.modules.frozenRows.setDisplayIndex(0);
-       }
-
-       if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-               this.table.modules.groupRows.setDisplayIndex(0);
-       }
-
-       if (this.table.options.pagination && this.table.modExists("page")) {
-               this.table.modules.page.setDisplayIndex(0);
-       }
-};
-
-RowManager.prototype.getNextDisplayIndex = function () {
-       return this.displayRows.length;
-};
-
-//set display row pipeline data
-RowManager.prototype.setDisplayRows = function (displayRows, index) {
-
-       var output = true;
-
-       if (index && typeof this.displayRows[index] != "undefined") {
-               this.displayRows[index] = displayRows;
-               output = true;
-       } else {
-               this.displayRows.push(displayRows);
-               output = index = this.displayRows.length - 1;
-       }
-
-       if (index == this.displayRows.length - 1) {
-               this.displayRowsCount = this.displayRows[this.displayRows.length - 1].length;
-       }
-
-       return output;
-};
-
-RowManager.prototype.getDisplayRows = function (index) {
-       if (typeof index == "undefined") {
-               return this.displayRows.length ? this.displayRows[this.displayRows.length - 1] : [];
-       } else {
-               return this.displayRows[index] || [];
-       }
-};
-
-RowManager.prototype.getVisibleRows = function (viewable) {
-       var topEdge = this.element.scrollTop,
-           bottomEdge = this.element.clientHeight + topEdge,
-           topFound = false,
-           topRow = 0,
-           bottomRow = 0,
-           rows = this.getDisplayRows();
-
-       if (viewable) {
-
-               this.getDisplayRows();
-               for (var i = this.vDomTop; i <= this.vDomBottom; i++) {
-                       if (rows[i]) {
-                               if (!topFound) {
-                                       if (topEdge - rows[i].getElement().offsetTop >= 0) {
-                                               topRow = i;
-                                       } else {
-                                               topFound = true;
-
-                                               if (bottomEdge - rows[i].getElement().offsetTop >= 0) {
-                                                       bottomRow = i;
-                                               } else {
-                                                       break;
-                                               }
-                                       }
-                               } else {
-                                       if (bottomEdge - rows[i].getElement().offsetTop >= 0) {
-                                               bottomRow = i;
-                                       } else {
-                                               break;
-                                       }
-                               }
-                       }
-               }
-       } else {
-               topRow = this.vDomTop;
-               bottomRow = this.vDomBottom;
-       }
-
-       return rows.slice(topRow, bottomRow + 1);
-};
-
-//repeat action accross display rows
-RowManager.prototype.displayRowIterator = function (callback) {
-       this.displayRows.forEach(callback);
-
-       this.displayRowsCount = this.displayRows[this.displayRows.length - 1].length;
-};
-
-//return only actual rows (not group headers etc)
-RowManager.prototype.getRows = function (active) {
-       var rows;
-
-       switch (active) {
-               case "active":
-                       rows = this.activeRows;
-                       break;
-
-               case "display":
-                       rows = this.table.rowManager.getDisplayRows();
-                       break;
-
-               case "visible":
-                       rows = this.getVisibleRows(true);
-                       break;
-
-               default:
-                       rows = this.rows;
-       }
-
-       return rows;
-};
-
-///////////////// Table Rendering /////////////////
-
-//trigger rerender of table in current position
-RowManager.prototype.reRenderInPosition = function (callback) {
-       if (this.getRenderMode() == "virtual") {
-
-               if (this.redrawBlock) {
-                       if (callback) {
-                               callback();
-                       } else {
-                               this.redrawBlockRederInPosition = true;
-                       }
-               } else {
-                       var scrollTop = this.element.scrollTop;
-                       var topRow = false;
-                       var topOffset = false;
-
-                       var left = this.scrollLeft;
-
-                       var rows = this.getDisplayRows();
-
-                       for (var i = this.vDomTop; i <= this.vDomBottom; i++) {
-
-                               if (rows[i]) {
-                                       var diff = scrollTop - rows[i].getElement().offsetTop;
-
-                                       if (topOffset === false || Math.abs(diff) < topOffset) {
-                                               topOffset = diff;
-                                               topRow = i;
-                                       } else {
-                                               break;
-                                       }
-                               }
-                       }
-
-                       if (callback) {
-                               callback();
-                       }
-
-                       this._virtualRenderFill(topRow === false ? this.displayRowsCount - 1 : topRow, true, topOffset || 0);
-
-                       this.scrollHorizontal(left);
-               }
-       } else {
-               this.renderTable();
-
-               if (callback) {
-                       callback();
-               }
-       }
-};
-
-RowManager.prototype.setRenderMode = function () {
-
-       if (this.table.options.virtualDom) {
-
-               this.renderMode = "virtual";
-
-               if (this.table.element.clientHeight || this.table.options.height) {
-                       this.fixedHeight = true;
-               } else {
-                       this.fixedHeight = false;
-               }
-       } else {
-               this.renderMode = "classic";
-       }
-};
-
-RowManager.prototype.getRenderMode = function () {
-       return this.renderMode;
-};
-
-RowManager.prototype.renderTable = function () {
-
-       this.table.options.renderStarted.call(this.table);
-
-       this.element.scrollTop = 0;
-
-       switch (this.renderMode) {
-               case "classic":
-                       this._simpleRender();
-                       break;
-
-               case "virtual":
-                       this._virtualRenderFill();
-                       break;
-       }
-
-       if (this.firstRender) {
-               if (this.displayRowsCount) {
-                       this.firstRender = false;
-                       this.table.modules.layout.layout();
-               } else {
-                       this.renderEmptyScroll();
-               }
-       }
-
-       if (this.table.modExists("frozenColumns")) {
-               this.table.modules.frozenColumns.layout();
-       }
-
-       if (!this.displayRowsCount) {
-               if (this.table.options.placeholder) {
-
-                       this.table.options.placeholder.setAttribute("tabulator-render-mode", this.renderMode);
-
-                       this.getElement().appendChild(this.table.options.placeholder);
-                       this.table.options.placeholder.style.width = this.table.columnManager.getWidth() + "px";
-               }
-       }
-
-       this.table.options.renderComplete.call(this.table);
-};
-
-//simple render on heightless table
-RowManager.prototype._simpleRender = function () {
-       this._clearVirtualDom();
-
-       if (this.displayRowsCount) {
-               this.checkClassicModeGroupHeaderWidth();
-       } else {
-               this.renderEmptyScroll();
-       }
-};
-
-RowManager.prototype.checkClassicModeGroupHeaderWidth = function () {
-       var self = this,
-           element = this.tableElement,
-           onlyGroupHeaders = true;
-
-       self.getDisplayRows().forEach(function (row, index) {
-               self.styleRow(row, index);
-               element.appendChild(row.getElement());
-               row.initialize(true);
-
-               if (row.type !== "group") {
-                       onlyGroupHeaders = false;
-               }
-       });
-
-       if (onlyGroupHeaders) {
-               element.style.minWidth = self.table.columnManager.getWidth() + "px";
-       } else {
-               element.style.minWidth = "";
-       }
-};
-
-//show scrollbars on empty table div
-RowManager.prototype.renderEmptyScroll = function () {
-       if (this.table.options.placeholder) {
-               this.tableElement.style.display = "none";
-       } else {
-               this.tableElement.style.minWidth = this.table.columnManager.getWidth() + "px";
-               this.tableElement.style.minHeight = "1px";
-               this.tableElement.style.visibility = "hidden";
-       }
-};
-
-RowManager.prototype._clearVirtualDom = function () {
-       var element = this.tableElement;
-
-       if (this.table.options.placeholder && this.table.options.placeholder.parentNode) {
-               this.table.options.placeholder.parentNode.removeChild(this.table.options.placeholder);
-       }
-
-       // element.children.detach();
-       while (element.firstChild) {
-               element.removeChild(element.firstChild);
-       }element.style.paddingTop = "";
-       element.style.paddingBottom = "";
-       element.style.minWidth = "";
-       element.style.minHeight = "";
-       element.style.display = "";
-       element.style.visibility = "";
-
-       this.scrollTop = 0;
-       this.scrollLeft = 0;
-       this.vDomTop = 0;
-       this.vDomBottom = 0;
-       this.vDomTopPad = 0;
-       this.vDomBottomPad = 0;
-};
-
-RowManager.prototype.styleRow = function (row, index) {
-       var rowEl = row.getElement();
-
-       if (index % 2) {
-               rowEl.classList.add("tabulator-row-even");
-               rowEl.classList.remove("tabulator-row-odd");
-       } else {
-               rowEl.classList.add("tabulator-row-odd");
-               rowEl.classList.remove("tabulator-row-even");
-       }
-};
-
-//full virtual render
-RowManager.prototype._virtualRenderFill = function (position, forceMove, offset) {
-       var self = this,
-           element = self.tableElement,
-           holder = self.element,
-           topPad = 0,
-           rowsHeight = 0,
-           topPadHeight = 0,
-           i = 0,
-           onlyGroupHeaders = true,
-           rows = self.getDisplayRows();
-
-       position = position || 0;
-
-       offset = offset || 0;
-
-       if (!position) {
-               self._clearVirtualDom();
-       } else {
-               while (element.firstChild) {
-                       element.removeChild(element.firstChild);
-               } //check if position is too close to bottom of table
-               var heightOccupied = (self.displayRowsCount - position + 1) * self.vDomRowHeight;
-
-               if (heightOccupied < self.height) {
-                       position -= Math.ceil((self.height - heightOccupied) / self.vDomRowHeight);
-
-                       if (position < 0) {
-                               position = 0;
-                       }
-               }
-
-               //calculate initial pad
-               topPad = Math.min(Math.max(Math.floor(self.vDomWindowBuffer / self.vDomRowHeight), self.vDomWindowMinMarginRows), position);
-               position -= topPad;
-       }
-
-       if (self.displayRowsCount && Tabulator.prototype.helpers.elVisible(self.element)) {
-
-               self.vDomTop = position;
-
-               self.vDomBottom = position - 1;
-
-               while ((rowsHeight <= self.height + self.vDomWindowBuffer || i < self.vDomWindowMinTotalRows) && self.vDomBottom < self.displayRowsCount - 1) {
-                       var index = self.vDomBottom + 1,
-                           row = rows[index],
-                           rowHeight = 0;
-
-                       self.styleRow(row, index);
-
-                       element.appendChild(row.getElement());
-                       if (!row.initialized) {
-                               row.initialize(true);
-                       } else {
-                               if (!row.heightInitialized) {
-                                       row.normalizeHeight(true);
-                               }
-                       }
-
-                       rowHeight = row.getHeight();
-
-                       if (i < topPad) {
-                               topPadHeight += rowHeight;
-                       } else {
-                               rowsHeight += rowHeight;
-                       }
-
-                       if (rowHeight > this.vDomWindowBuffer) {
-                               this.vDomWindowBuffer = rowHeight * 2;
-                       }
-
-                       if (row.type !== "group") {
-                               onlyGroupHeaders = false;
-                       }
-
-                       self.vDomBottom++;
-                       i++;
-               }
-
-               if (!position) {
-                       this.vDomTopPad = 0;
-                       //adjust rowheight to match average of rendered elements
-                       self.vDomRowHeight = Math.floor((rowsHeight + topPadHeight) / i);
-                       self.vDomBottomPad = self.vDomRowHeight * (self.displayRowsCount - self.vDomBottom - 1);
-
-                       self.vDomScrollHeight = topPadHeight + rowsHeight + self.vDomBottomPad - self.height;
-               } else {
-                       self.vDomTopPad = !forceMove ? self.scrollTop - topPadHeight : self.vDomRowHeight * this.vDomTop + offset;
-                       self.vDomBottomPad = self.vDomBottom == self.displayRowsCount - 1 ? 0 : Math.max(self.vDomScrollHeight - self.vDomTopPad - rowsHeight - topPadHeight, 0);
-               }
-
-               element.style.paddingTop = self.vDomTopPad + "px";
-               element.style.paddingBottom = self.vDomBottomPad + "px";
-
-               if (forceMove) {
-                       this.scrollTop = self.vDomTopPad + topPadHeight + offset - (this.element.scrollWidth > this.element.clientWidth ? this.element.offsetHeight - this.element.clientHeight : 0);
-               }
-
-               this.scrollTop = Math.min(this.scrollTop, this.element.scrollHeight - this.height);
-
-               //adjust for horizontal scrollbar if present (and not at top of table)
-               if (this.element.scrollWidth > this.element.offsetWidth && forceMove) {
-                       this.scrollTop += this.element.offsetHeight - this.element.clientHeight;
-               }
-
-               this.vDomScrollPosTop = this.scrollTop;
-               this.vDomScrollPosBottom = this.scrollTop;
-
-               holder.scrollTop = this.scrollTop;
-
-               element.style.minWidth = onlyGroupHeaders ? self.table.columnManager.getWidth() + "px" : "";
-
-               if (self.table.options.groupBy) {
-                       if (self.table.modules.layout.getMode() != "fitDataFill" && self.displayRowsCount == self.table.modules.groupRows.countGroups()) {
-                               self.tableElement.style.minWidth = self.table.columnManager.getWidth();
-                       }
-               }
-       } else {
-               this.renderEmptyScroll();
-       }
-
-       if (!this.fixedHeight) {
-               this.adjustTableSize();
-       }
-};
-
-//handle vertical scrolling
-RowManager.prototype.scrollVertical = function (dir) {
-       var topDiff = this.scrollTop - this.vDomScrollPosTop;
-       var bottomDiff = this.scrollTop - this.vDomScrollPosBottom;
-       var margin = this.vDomWindowBuffer * 2;
-
-       if (-topDiff > margin || bottomDiff > margin) {
-               //if big scroll redraw table;
-               var left = this.scrollLeft;
-               this._virtualRenderFill(Math.floor(this.element.scrollTop / this.element.scrollHeight * this.displayRowsCount));
-               this.scrollHorizontal(left);
-       } else {
-
-               if (dir) {
-                       //scrolling up
-                       if (topDiff < 0) {
-
-                               this._addTopRow(-topDiff);
-                       }
-
-                       if (bottomDiff < 0) {
-
-                               //hide bottom row if needed
-                               if (this.vDomScrollHeight - this.scrollTop > this.vDomWindowBuffer) {
-                                       this._removeBottomRow(-bottomDiff);
-                               } else {
-                                       this.vDomScrollPosBottom = this.scrollTop;
-                               }
-                       }
-               } else {
-                       //scrolling down
-                       if (topDiff >= 0) {
-
-                               //hide top row if needed
-                               if (this.scrollTop > this.vDomWindowBuffer) {
-
-                                       this._removeTopRow(topDiff);
-                               } else {
-                                       this.vDomScrollPosTop = this.scrollTop;
-                               }
-                       }
-
-                       if (bottomDiff >= 0) {
-
-                               this._addBottomRow(bottomDiff);
-                       }
-               }
-       }
-};
-
-RowManager.prototype._addTopRow = function (topDiff) {
-       var i = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
-
-       var table = this.tableElement,
-           rows = this.getDisplayRows();
-
-       if (this.vDomTop) {
-               var index = this.vDomTop - 1,
-                   topRow = rows[index],
-                   topRowHeight = topRow.getHeight() || this.vDomRowHeight;
-
-               //hide top row if needed
-               if (topDiff >= topRowHeight) {
-                       this.styleRow(topRow, index);
-                       table.insertBefore(topRow.getElement(), table.firstChild);
-                       if (!topRow.initialized || !topRow.heightInitialized) {
-                               this.vDomTopNewRows.push(topRow);
-
-                               if (!topRow.heightInitialized) {
-                                       topRow.clearCellHeight();
-                               }
-                       }
-                       topRow.initialize();
-
-                       this.vDomTopPad -= topRowHeight;
-
-                       if (this.vDomTopPad < 0) {
-                               this.vDomTopPad = index * this.vDomRowHeight;
-                       }
-
-                       if (!index) {
-                               this.vDomTopPad = 0;
-                       }
-
-                       table.style.paddingTop = this.vDomTopPad + "px";
-                       this.vDomScrollPosTop -= topRowHeight;
-                       this.vDomTop--;
-               }
-
-               topDiff = -(this.scrollTop - this.vDomScrollPosTop);
-
-               if (topRow.getHeight() > this.vDomWindowBuffer) {
-                       this.vDomWindowBuffer = topRow.getHeight() * 2;
-               }
-
-               if (i < this.vDomMaxRenderChain && this.vDomTop && topDiff >= (rows[this.vDomTop - 1].getHeight() || this.vDomRowHeight)) {
-                       this._addTopRow(topDiff, i + 1);
-               } else {
-                       this._quickNormalizeRowHeight(this.vDomTopNewRows);
-               }
-       }
-};
-
-RowManager.prototype._removeTopRow = function (topDiff) {
-       var table = this.tableElement,
-           topRow = this.getDisplayRows()[this.vDomTop],
-           topRowHeight = topRow.getHeight() || this.vDomRowHeight;
-
-       if (topDiff >= topRowHeight) {
-
-               var rowEl = topRow.getElement();
-               rowEl.parentNode.removeChild(rowEl);
-
-               this.vDomTopPad += topRowHeight;
-               table.style.paddingTop = this.vDomTopPad + "px";
-               this.vDomScrollPosTop += this.vDomTop ? topRowHeight : topRowHeight + this.vDomWindowBuffer;
-               this.vDomTop++;
-
-               topDiff = this.scrollTop - this.vDomScrollPosTop;
-
-               this._removeTopRow(topDiff);
-       }
-};
-
-RowManager.prototype._addBottomRow = function (bottomDiff) {
-       var i = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
-
-       var table = this.tableElement,
-           rows = this.getDisplayRows();
-
-       if (this.vDomBottom < this.displayRowsCount - 1) {
-               var index = this.vDomBottom + 1,
-                   bottomRow = rows[index],
-                   bottomRowHeight = bottomRow.getHeight() || this.vDomRowHeight;
-
-               //hide bottom row if needed
-               if (bottomDiff >= bottomRowHeight) {
-                       this.styleRow(bottomRow, index);
-                       table.appendChild(bottomRow.getElement());
-
-                       if (!bottomRow.initialized || !bottomRow.heightInitialized) {
-                               this.vDomBottomNewRows.push(bottomRow);
-
-                               if (!bottomRow.heightInitialized) {
-                                       bottomRow.clearCellHeight();
-                               }
-                       }
-
-                       bottomRow.initialize();
-
-                       this.vDomBottomPad -= bottomRowHeight;
-
-                       if (this.vDomBottomPad < 0 || index == this.displayRowsCount - 1) {
-                               this.vDomBottomPad = 0;
-                       }
-
-                       table.style.paddingBottom = this.vDomBottomPad + "px";
-                       this.vDomScrollPosBottom += bottomRowHeight;
-                       this.vDomBottom++;
-               }
-
-               bottomDiff = this.scrollTop - this.vDomScrollPosBottom;
-
-               if (bottomRow.getHeight() > this.vDomWindowBuffer) {
-                       this.vDomWindowBuffer = bottomRow.getHeight() * 2;
-               }
-
-               if (i < this.vDomMaxRenderChain && this.vDomBottom < this.displayRowsCount - 1 && bottomDiff >= (rows[this.vDomBottom + 1].getHeight() || this.vDomRowHeight)) {
-                       this._addBottomRow(bottomDiff, i + 1);
-               } else {
-                       this._quickNormalizeRowHeight(this.vDomBottomNewRows);
-               }
-       }
-};
-
-RowManager.prototype._removeBottomRow = function (bottomDiff) {
-       var table = this.tableElement,
-           bottomRow = this.getDisplayRows()[this.vDomBottom],
-           bottomRowHeight = bottomRow.getHeight() || this.vDomRowHeight;
-
-       if (bottomDiff >= bottomRowHeight) {
-
-               var rowEl = bottomRow.getElement();
-
-               if (rowEl.parentNode) {
-                       rowEl.parentNode.removeChild(rowEl);
-               }
-
-               this.vDomBottomPad += bottomRowHeight;
-
-               if (this.vDomBottomPad < 0) {
-                       this.vDomBottomPad = 0;
-               }
-
-               table.style.paddingBottom = this.vDomBottomPad + "px";
-               this.vDomScrollPosBottom -= bottomRowHeight;
-               this.vDomBottom--;
-
-               bottomDiff = -(this.scrollTop - this.vDomScrollPosBottom);
-
-               this._removeBottomRow(bottomDiff);
-       }
-};
-
-RowManager.prototype._quickNormalizeRowHeight = function (rows) {
-       rows.forEach(function (row) {
-               row.calcHeight();
-       });
-
-       rows.forEach(function (row) {
-               row.setCellHeight();
-       });
-
-       rows.length = 0;
-};
-
-//normalize height of active rows
-RowManager.prototype.normalizeHeight = function () {
-       this.activeRows.forEach(function (row) {
-               row.normalizeHeight();
-       });
-};
-
-//adjust the height of the table holder to fit in the Tabulator element
-RowManager.prototype.adjustTableSize = function () {
-       var initialHeight = this.element.clientHeight,
-           modExists;
-
-       if (this.renderMode === "virtual") {
-               var otherHeight = this.columnManager.getElement().offsetHeight + (this.table.footerManager && !this.table.footerManager.external ? this.table.footerManager.getElement().offsetHeight : 0);
-
-               if (this.fixedHeight) {
-                       this.element.style.minHeight = "calc(100% - " + otherHeight + "px)";
-                       this.element.style.height = "calc(100% - " + otherHeight + "px)";
-                       this.element.style.maxHeight = "calc(100% - " + otherHeight + "px)";
-               } else {
-                       this.element.style.height = "";
-                       this.element.style.height = this.table.element.clientHeight - otherHeight + "px";
-                       this.element.scrollTop = this.scrollTop;
-               }
-
-               this.height = this.element.clientHeight;
-               this.vDomWindowBuffer = this.table.options.virtualDomBuffer || this.height;
-
-               //check if the table has changed size when dealing with variable height tables
-               if (!this.fixedHeight && initialHeight != this.element.clientHeight) {
-                       modExists = this.table.modExists("resizeTable");
-
-                       if (modExists && !this.table.modules.resizeTable.autoResize || !modExists) {
-                               this.redraw();
-                       }
-               }
-       }
-};
-
-//renitialize all rows
-RowManager.prototype.reinitialize = function () {
-       this.rows.forEach(function (row) {
-               row.reinitialize();
-       });
-};
-
-//prevent table from being redrawn
-RowManager.prototype.blockRedraw = function () {
-       this.redrawBlock = true;
-       this.redrawBlockRestoreConfig = false;
-};
-
-//restore table redrawing
-RowManager.prototype.restoreRedraw = function () {
-       this.redrawBlock = false;
-
-       if (this.redrawBlockRestoreConfig) {
-               this.refreshActiveData(this.redrawBlockRestoreConfig.stage, this.redrawBlockRestoreConfig.skipStage, this.redrawBlockRestoreConfig.renderInPosition);
-
-               this.redrawBlockRestoreConfig = false;
-       } else {
-               if (this.redrawBlockRederInPosition) {
-                       this.reRenderInPosition();
-               }
-       }
-
-       this.redrawBlockRederInPosition = false;
-};
-
-//redraw table
-RowManager.prototype.redraw = function (force) {
-       var pos = 0,
-           left = this.scrollLeft;
-
-       this.adjustTableSize();
-
-       this.table.tableWidth = this.table.element.clientWidth;
-
-       if (!force) {
-               if (this.renderMode == "classic") {
-
-                       if (this.table.options.groupBy) {
-                               this.refreshActiveData("group", false, false);
-                       } else {
-                               this._simpleRender();
-                       }
-               } else {
-                       this.reRenderInPosition();
-                       this.scrollHorizontal(left);
-               }
-
-               if (!this.displayRowsCount) {
-                       if (this.table.options.placeholder) {
-                               this.getElement().appendChild(this.table.options.placeholder);
-                       }
-               }
-       } else {
-               this.renderTable();
-       }
-};
-
-RowManager.prototype.resetScroll = function () {
-       this.element.scrollLeft = 0;
-       this.element.scrollTop = 0;
-
-       if (this.table.browser === "ie") {
-               var event = document.createEvent("Event");
-               event.initEvent("scroll", false, true);
-               this.element.dispatchEvent(event);
-       } else {
-               this.element.dispatchEvent(new Event('scroll'));
-       }
-};
-
-//public row object
-var RowComponent = function RowComponent(row) {
-       this._row = row;
-};
-
-RowComponent.prototype.getData = function (transform) {
-       return this._row.getData(transform);
-};
-
-RowComponent.prototype.getElement = function () {
-       return this._row.getElement();
-};
-
-RowComponent.prototype.getCells = function () {
-       var cells = [];
-
-       this._row.getCells().forEach(function (cell) {
-               cells.push(cell.getComponent());
-       });
-
-       return cells;
-};
-
-RowComponent.prototype.getCell = function (column) {
-       var cell = this._row.getCell(column);
-       return cell ? cell.getComponent() : false;
-};
-
-RowComponent.prototype.getIndex = function () {
-       return this._row.getData("data")[this._row.table.options.index];
-};
-
-RowComponent.prototype.getPosition = function (active) {
-       return this._row.table.rowManager.getRowPosition(this._row, active);
-};
-
-RowComponent.prototype.delete = function () {
-       return this._row.delete();
-};
-
-RowComponent.prototype.scrollTo = function () {
-       return this._row.table.rowManager.scrollToRow(this._row);
-};
-
-RowComponent.prototype.pageTo = function () {
-       if (this._row.table.modExists("page", true)) {
-               return this._row.table.modules.page.setPageToRow(this._row);
-       }
-};
-
-RowComponent.prototype.move = function (to, after) {
-       this._row.moveToRow(to, after);
-};
-
-RowComponent.prototype.update = function (data) {
-       return this._row.updateData(data);
-};
-
-RowComponent.prototype.normalizeHeight = function () {
-       this._row.normalizeHeight(true);
-};
-
-RowComponent.prototype.select = function () {
-       this._row.table.modules.selectRow.selectRows(this._row);
-};
-
-RowComponent.prototype.deselect = function () {
-       this._row.table.modules.selectRow.deselectRows(this._row);
-};
-
-RowComponent.prototype.toggleSelect = function () {
-       this._row.table.modules.selectRow.toggleRow(this._row);
-};
-
-RowComponent.prototype.isSelected = function () {
-       return this._row.table.modules.selectRow.isRowSelected(this._row);
-};
-
-RowComponent.prototype._getSelf = function () {
-       return this._row;
-};
-
-RowComponent.prototype.validate = function () {
-       return this._row.validate();
-};
-
-RowComponent.prototype.freeze = function () {
-       if (this._row.table.modExists("frozenRows", true)) {
-               this._row.table.modules.frozenRows.freezeRow(this._row);
-       }
-};
-
-RowComponent.prototype.unfreeze = function () {
-       if (this._row.table.modExists("frozenRows", true)) {
-               this._row.table.modules.frozenRows.unfreezeRow(this._row);
-       }
-};
-
-RowComponent.prototype.isFrozen = function () {
-       if (this._row.table.modExists("frozenRows", true)) {
-               var index = this._row.table.modules.frozenRows.rows.indexOf(this._row);
-               return index > -1;
-       }
-
-       return false;
-};
-
-RowComponent.prototype.treeCollapse = function () {
-       if (this._row.table.modExists("dataTree", true)) {
-               this._row.table.modules.dataTree.collapseRow(this._row);
-       }
-};
-
-RowComponent.prototype.treeExpand = function () {
-       if (this._row.table.modExists("dataTree", true)) {
-               this._row.table.modules.dataTree.expandRow(this._row);
-       }
-};
-
-RowComponent.prototype.treeToggle = function () {
-       if (this._row.table.modExists("dataTree", true)) {
-               this._row.table.modules.dataTree.toggleRow(this._row);
-       }
-};
-
-RowComponent.prototype.getTreeParent = function () {
-       if (this._row.table.modExists("dataTree", true)) {
-               return this._row.table.modules.dataTree.getTreeParent(this._row);
-       }
-
-       return false;
-};
-
-RowComponent.prototype.getTreeChildren = function () {
-       if (this._row.table.modExists("dataTree", true)) {
-               return this._row.table.modules.dataTree.getTreeChildren(this._row);
-       }
-
-       return false;
-};
-
-RowComponent.prototype.addTreeChild = function (data, pos, index) {
-       if (this._row.table.modExists("dataTree", true)) {
-               return this._row.table.modules.dataTree.addTreeChildRow(this._row, data, pos, index);
-       }
-
-       return false;
-};
-
-RowComponent.prototype.reformat = function () {
-       return this._row.reinitialize();
-};
-
-RowComponent.prototype.getGroup = function () {
-       return this._row.getGroup().getComponent();
-};
-
-RowComponent.prototype.getTable = function () {
-       return this._row.table;
-};
-
-RowComponent.prototype.getNextRow = function () {
-       var row = this._row.nextRow();
-       return row ? row.getComponent() : row;
-};
-
-RowComponent.prototype.getPrevRow = function () {
-       var row = this._row.prevRow();
-       return row ? row.getComponent() : row;
-};
-
-var Row = function Row(data, parent) {
-       var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "row";
-
-       this.table = parent.table;
-       this.parent = parent;
-       this.data = {};
-       this.type = type; //type of element
-       this.element = this.createElement();
-       this.modules = {}; //hold module variables;
-       this.cells = [];
-       this.height = 0; //hold element height
-       this.heightStyled = ""; //hold element height prestyled to improve render efficiency
-       this.manualHeight = false; //user has manually set row height
-       this.outerHeight = 0; //holde lements outer height
-       this.initialized = false; //element has been rendered
-       this.heightInitialized = false; //element has resized cells to fit
-
-       this.component = null;
-
-       this.setData(data);
-       this.generateElement();
-};
-
-Row.prototype.createElement = function () {
-       var el = document.createElement("div");
-
-       el.classList.add("tabulator-row");
-       el.setAttribute("role", "row");
-
-       return el;
-};
-
-Row.prototype.getElement = function () {
-       return this.element;
-};
-
-Row.prototype.detachElement = function () {
-       if (this.element && this.element.parentNode) {
-               this.element.parentNode.removeChild(this.element);
-       }
-};
-
-Row.prototype.generateElement = function () {
-       var self = this,
-           dblTap,
-           tapHold,
-           tap;
-
-       //set row selection characteristics
-       if (self.table.options.selectable !== false && self.table.modExists("selectRow")) {
-               self.table.modules.selectRow.initializeRow(this);
-       }
-
-       //setup movable rows
-       if (self.table.options.movableRows !== false && self.table.modExists("moveRow")) {
-               self.table.modules.moveRow.initializeRow(this);
-       }
-
-       //setup data tree
-       if (self.table.options.dataTree !== false && self.table.modExists("dataTree")) {
-               self.table.modules.dataTree.initializeRow(this);
-       }
-
-       //setup column colapse container
-       if (self.table.options.responsiveLayout === "collapse" && self.table.modExists("responsiveLayout")) {
-               self.table.modules.responsiveLayout.initializeRow(this);
-       }
-
-       //set column menu
-       if (self.table.options.rowContextMenu && this.table.modExists("menu")) {
-               self.table.modules.menu.initializeRow(this);
-       }
-
-       //handle row click events
-       if (self.table.options.rowClick) {
-               self.element.addEventListener("click", function (e) {
-                       self.table.options.rowClick(e, self.getComponent());
-               });
-       }
-
-       if (self.table.options.rowDblClick) {
-               self.element.addEventListener("dblclick", function (e) {
-                       self.table.options.rowDblClick(e, self.getComponent());
-               });
-       }
-
-       if (self.table.options.rowContext) {
-               self.element.addEventListener("contextmenu", function (e) {
-                       self.table.options.rowContext(e, self.getComponent());
-               });
-       }
-
-       //handle mouse events
-       if (self.table.options.rowMouseEnter) {
-               self.element.addEventListener("mouseenter", function (e) {
-                       self.table.options.rowMouseEnter(e, self.getComponent());
-               });
-       }
-
-       if (self.table.options.rowMouseLeave) {
-               self.element.addEventListener("mouseleave", function (e) {
-                       self.table.options.rowMouseLeave(e, self.getComponent());
-               });
-       }
-
-       if (self.table.options.rowMouseOver) {
-               self.element.addEventListener("mouseover", function (e) {
-                       self.table.options.rowMouseOver(e, self.getComponent());
-               });
-       }
-
-       if (self.table.options.rowMouseOut) {
-               self.element.addEventListener("mouseout", function (e) {
-                       self.table.options.rowMouseOut(e, self.getComponent());
-               });
-       }
-
-       if (self.table.options.rowMouseMove) {
-               self.element.addEventListener("mousemove", function (e) {
-                       self.table.options.rowMouseMove(e, self.getComponent());
-               });
-       }
-
-       if (self.table.options.rowTap) {
-
-               tap = false;
-
-               self.element.addEventListener("touchstart", function (e) {
-                       tap = true;
-               }, { passive: true });
-
-               self.element.addEventListener("touchend", function (e) {
-                       if (tap) {
-                               self.table.options.rowTap(e, self.getComponent());
-                       }
-
-                       tap = false;
-               });
-       }
-
-       if (self.table.options.rowDblTap) {
-
-               dblTap = null;
-
-               self.element.addEventListener("touchend", function (e) {
-
-                       if (dblTap) {
-                               clearTimeout(dblTap);
-                               dblTap = null;
-
-                               self.table.options.rowDblTap(e, self.getComponent());
-                       } else {
-
-                               dblTap = setTimeout(function () {
-                                       clearTimeout(dblTap);
-                                       dblTap = null;
-                               }, 300);
-                       }
-               });
-       }
-
-       if (self.table.options.rowTapHold) {
-
-               tapHold = null;
-
-               self.element.addEventListener("touchstart", function (e) {
-                       clearTimeout(tapHold);
-
-                       tapHold = setTimeout(function () {
-                               clearTimeout(tapHold);
-                               tapHold = null;
-                               tap = false;
-                               self.table.options.rowTapHold(e, self.getComponent());
-                       }, 1000);
-               }, { passive: true });
-
-               self.element.addEventListener("touchend", function (e) {
-                       clearTimeout(tapHold);
-                       tapHold = null;
-               });
-       }
-};
-
-Row.prototype.generateCells = function () {
-       this.cells = this.table.columnManager.generateCells(this);
-};
-
-//functions to setup on first render
-Row.prototype.initialize = function (force) {
-       var self = this;
-
-       if (!self.initialized || force) {
-
-               self.deleteCells();
-
-               while (self.element.firstChild) {
-                       self.element.removeChild(self.element.firstChild);
-               } //handle frozen cells
-               if (this.table.modExists("frozenColumns")) {
-                       this.table.modules.frozenColumns.layoutRow(this);
-               }
-
-               this.generateCells();
-
-               self.cells.forEach(function (cell) {
-                       self.element.appendChild(cell.getElement());
-                       cell.cellRendered();
-               });
-
-               if (force) {
-                       self.normalizeHeight();
-               }
-
-               //setup movable rows
-               if (self.table.options.dataTree && self.table.modExists("dataTree")) {
-                       self.table.modules.dataTree.layoutRow(this);
-               }
-
-               //setup column colapse container
-               if (self.table.options.responsiveLayout === "collapse" && self.table.modExists("responsiveLayout")) {
-                       self.table.modules.responsiveLayout.layoutRow(this);
-               }
-
-               if (self.table.options.rowFormatter) {
-                       self.table.options.rowFormatter(self.getComponent());
-               }
-
-               //set resizable handles
-               if (self.table.options.resizableRows && self.table.modExists("resizeRows")) {
-                       self.table.modules.resizeRows.initializeRow(self);
-               }
-
-               self.initialized = true;
-       }
-};
-
-Row.prototype.reinitializeHeight = function () {
-       this.heightInitialized = false;
-
-       if (this.element.offsetParent !== null) {
-               this.normalizeHeight(true);
-       }
-};
-
-Row.prototype.reinitialize = function () {
-       this.initialized = false;
-       this.heightInitialized = false;
-
-       if (!this.manualHeight) {
-               this.height = 0;
-               this.heightStyled = "";
-       }
-
-       if (this.element.offsetParent !== null) {
-               this.initialize(true);
-       }
-};
-
-//get heights when doing bulk row style calcs in virtual DOM
-Row.prototype.calcHeight = function (force) {
-
-       var maxHeight = 0,
-           minHeight = this.table.options.resizableRows ? this.element.clientHeight : 0;
-
-       this.cells.forEach(function (cell) {
-               var height = cell.getHeight();
-               if (height > maxHeight) {
-                       maxHeight = height;
-               }
-       });
-
-       if (force) {
-               this.height = Math.max(maxHeight, minHeight);
-       } else {
-               this.height = this.manualHeight ? this.height : Math.max(maxHeight, minHeight);
-       }
-
-       this.heightStyled = this.height ? this.height + "px" : "";
-       this.outerHeight = this.element.offsetHeight;
-};
-
-//set of cells
-Row.prototype.setCellHeight = function () {
-       this.cells.forEach(function (cell) {
-               cell.setHeight();
-       });
-
-       this.heightInitialized = true;
-};
-
-Row.prototype.clearCellHeight = function () {
-       this.cells.forEach(function (cell) {
-               cell.clearHeight();
-       });
-};
-
-//normalize the height of elements in the row
-Row.prototype.normalizeHeight = function (force) {
-
-       if (force) {
-               this.clearCellHeight();
-       }
-
-       this.calcHeight(force);
-
-       this.setCellHeight();
-};
-
-// Row.prototype.setHeight = function(height){
-//     this.height = height;
-
-//     this.setCellHeight();
-// };
-
-//set height of rows
-Row.prototype.setHeight = function (height, force) {
-       if (this.height != height || force) {
-
-               this.manualHeight = true;
-
-               this.height = height;
-               this.heightStyled = height ? height + "px" : "";
-
-               this.setCellHeight();
-
-               // this.outerHeight = this.element.outerHeight();
-               this.outerHeight = this.element.offsetHeight;
-       }
-};
-
-//return rows outer height
-Row.prototype.getHeight = function () {
-       return this.outerHeight;
-};
-
-//return rows outer Width
-Row.prototype.getWidth = function () {
-       return this.element.offsetWidth;
-};
-
-//////////////// Cell Management /////////////////
-
-Row.prototype.deleteCell = function (cell) {
-       var index = this.cells.indexOf(cell);
-
-       if (index > -1) {
-               this.cells.splice(index, 1);
-       }
-};
-
-//////////////// Data Management /////////////////
-
-Row.prototype.setData = function (data) {
-       if (this.table.modExists("mutator")) {
-               data = this.table.modules.mutator.transformRow(data, "data");
-       }
-
-       this.data = data;
-
-       if (this.table.options.reactiveData && this.table.modExists("reactiveData", true)) {
-               this.table.modules.reactiveData.watchRow(this);
-       }
-};
-
-//update the rows data
-Row.prototype.updateData = function (updatedData) {
-       var _this15 = this;
-
-       var visible = Tabulator.prototype.helpers.elVisible(this.element),
-           tempData = {},
-           newRowData;
-
-       return new Promise(function (resolve, reject) {
-
-               if (typeof updatedData === "string") {
-                       updatedData = JSON.parse(updatedData);
-               }
-
-               if (_this15.table.options.reactiveData && _this15.table.modExists("reactiveData", true)) {
-                       _this15.table.modules.reactiveData.block();
-               }
-
-               //mutate incomming data if needed
-               if (_this15.table.modExists("mutator")) {
-
-                       tempData = Object.assign(tempData, _this15.data);
-                       tempData = Object.assign(tempData, updatedData);
-
-                       newRowData = _this15.table.modules.mutator.transformRow(tempData, "data", updatedData);
-               } else {
-                       newRowData = updatedData;
-               }
-
-               //set data
-               for (var attrname in newRowData) {
-                       _this15.data[attrname] = newRowData[attrname];
-               }
-
-               if (_this15.table.options.reactiveData && _this15.table.modExists("reactiveData", true)) {
-                       _this15.table.modules.reactiveData.unblock();
-               }
-
-               //update affected cells only
-               for (var attrname in updatedData) {
-
-                       var columns = _this15.table.columnManager.getColumnsByFieldRoot(attrname);
-
-                       columns.forEach(function (column) {
-                               var cell = _this15.getCell(column.getField());
-
-                               if (cell) {
-                                       var value = column.getFieldValue(newRowData);
-                                       if (cell.getValue() != value) {
-                                               cell.setValueProcessData(value);
-
-                                               if (visible) {
-                                                       cell.cellRendered();
-                                               }
-                                       }
-                               }
-                       });
-               }
-
-               //Partial reinitialization if visible
-               if (visible) {
-                       _this15.normalizeHeight(true);
-
-                       if (_this15.table.options.rowFormatter) {
-                               _this15.table.options.rowFormatter(_this15.getComponent());
-                       }
-               } else {
-                       _this15.initialized = false;
-                       _this15.height = 0;
-                       _this15.heightStyled = "";
-               }
-
-               if (_this15.table.options.dataTree !== false && _this15.table.modExists("dataTree") && _this15.table.modules.dataTree.redrawNeeded(updatedData)) {
-                       _this15.table.modules.dataTree.initializeRow(_this15);
-                       _this15.table.modules.dataTree.layoutRow(_this15);
-                       _this15.table.rowManager.refreshActiveData("tree", false, true);
-               }
-
-               //this.reinitialize();
-
-               _this15.table.options.rowUpdated.call(_this15.table, _this15.getComponent());
-
-               resolve();
-       });
-};
-
-Row.prototype.getData = function (transform) {
-       var self = this;
-
-       if (transform) {
-               if (self.table.modExists("accessor")) {
-                       return self.table.modules.accessor.transformRow(self.data, transform);
-               }
-       } else {
-               return this.data;
-       }
-};
-
-Row.prototype.getCell = function (column) {
-       var match = false;
-
-       column = this.table.columnManager.findColumn(column);
-
-       match = this.cells.find(function (cell) {
-               return cell.column === column;
-       });
-
-       return match;
-};
-
-Row.prototype.getCellIndex = function (findCell) {
-       return this.cells.findIndex(function (cell) {
-               return cell === findCell;
-       });
-};
-
-Row.prototype.findNextEditableCell = function (index) {
-       var nextCell = false;
-
-       if (index < this.cells.length - 1) {
-               for (var i = index + 1; i < this.cells.length; i++) {
-                       var cell = this.cells[i];
-
-                       if (cell.column.modules.edit && Tabulator.prototype.helpers.elVisible(cell.getElement())) {
-                               var allowEdit = true;
-
-                               if (typeof cell.column.modules.edit.check == "function") {
-                                       allowEdit = cell.column.modules.edit.check(cell.getComponent());
-                               }
-
-                               if (allowEdit) {
-                                       nextCell = cell;
-                                       break;
-                               }
-                       }
-               }
-       }
-
-       return nextCell;
-};
-
-Row.prototype.findPrevEditableCell = function (index) {
-       var prevCell = false;
-
-       if (index > 0) {
-               for (var i = index - 1; i >= 0; i--) {
-                       var cell = this.cells[i],
-                           allowEdit = true;
-
-                       if (cell.column.modules.edit && Tabulator.prototype.helpers.elVisible(cell.getElement())) {
-                               if (typeof cell.column.modules.edit.check == "function") {
-                                       allowEdit = cell.column.modules.edit.check(cell.getComponent());
-                               }
-
-                               if (allowEdit) {
-                                       prevCell = cell;
-                                       break;
-                               }
-                       }
-               }
-       }
-
-       return prevCell;
-};
-
-Row.prototype.getCells = function () {
-       return this.cells;
-};
-
-Row.prototype.nextRow = function () {
-       var row = this.table.rowManager.nextDisplayRow(this, true);
-       return row || false;
-};
-
-Row.prototype.prevRow = function () {
-       var row = this.table.rowManager.prevDisplayRow(this, true);
-       return row || false;
-};
-
-Row.prototype.moveToRow = function (to, before) {
-       var toRow = this.table.rowManager.findRow(to);
-
-       if (toRow) {
-               this.table.rowManager.moveRowActual(this, toRow, !before);
-               this.table.rowManager.refreshActiveData("display", false, true);
-       } else {
-               console.warn("Move Error - No matching row found:", to);
-       }
-};
-
-Row.prototype.validate = function () {
-       var invalid = [];
-
-       this.cells.forEach(function (cell) {
-               if (!cell.validate()) {
-                       invalid.push(cell.getComponent());
-               }
-       });
-
-       return invalid.length ? invalid : true;
-};
-
-///////////////////// Actions  /////////////////////
-
-Row.prototype.delete = function () {
-       var _this16 = this;
-
-       return new Promise(function (resolve, reject) {
-               var index, rows;
-
-               if (_this16.table.options.history && _this16.table.modExists("history")) {
-
-                       if (_this16.table.options.groupBy && _this16.table.modExists("groupRows")) {
-                               rows = _this16.getGroup().rows;
-                               index = rows.indexOf(_this16);
-
-                               if (index) {
-                                       index = rows[index - 1];
-                               }
-                       } else {
-                               index = _this16.table.rowManager.getRowIndex(_this16);
-
-                               if (index) {
-                                       index = _this16.table.rowManager.rows[index - 1];
-                               }
-                       }
-
-                       _this16.table.modules.history.action("rowDelete", _this16, { data: _this16.getData(), pos: !index, index: index });
-               }
-
-               _this16.deleteActual();
-
-               resolve();
-       });
-};
-
-Row.prototype.deleteActual = function (blockRedraw) {
-       var index = this.table.rowManager.getRowIndex(this);
-
-       //deselect row if it is selected
-       if (this.table.modExists("selectRow")) {
-               this.table.modules.selectRow._deselectRow(this, true);
-       }
-
-       //cancel edit if row is currently being edited
-       if (this.table.modExists("edit")) {
-               if (this.table.modules.edit.currentCell.row === this) {
-                       this.table.modules.edit.cancelEdit();
-               }
-       }
-
-       // if(this.table.options.dataTree && this.table.modExists("dataTree")){
-       //      this.table.modules.dataTree.collapseRow(this, true);
-       // }
-
-       //remove any reactive data watchers from row object
-       if (this.table.options.reactiveData && this.table.modExists("reactiveData", true)) {}
-       // this.table.modules.reactiveData.unwatchRow(this);
-
-
-       //remove from group
-       if (this.modules.group) {
-               this.modules.group.removeRow(this);
-       }
-
-       this.table.rowManager.deleteRow(this, blockRedraw);
-
-       this.deleteCells();
-
-       this.initialized = false;
-       this.heightInitialized = false;
-
-       if (this.table.options.dataTree && this.table.modExists("dataTree", true)) {
-               this.table.modules.dataTree.rowDelete(this);
-       }
-
-       //recalc column calculations if present
-       if (this.table.modExists("columnCalcs")) {
-               if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-                       this.table.modules.columnCalcs.recalcRowGroup(this);
-               } else {
-                       this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
-               }
-       }
-};
-
-Row.prototype.deleteCells = function () {
-       var cellCount = this.cells.length;
-
-       for (var i = 0; i < cellCount; i++) {
-               this.cells[0].delete();
-       }
-};
-
-Row.prototype.wipe = function () {
-       this.deleteCells();
-
-       while (this.element.firstChild) {
-               this.element.removeChild(this.element.firstChild);
-       }this.element = false;
-       this.modules = {};
-
-       if (this.element.parentNode) {
-               this.element.parentNode.removeChild(this.element);
-       }
-};
-
-Row.prototype.getGroup = function () {
-       return this.modules.group || false;
-};
-
-//////////////// Object Generation /////////////////
-Row.prototype.getComponent = function () {
-       if (!this.component) {
-               this.component = new RowComponent(this);
-       }
-
-       return this.component;
-};
-
-//public row object
-var CellComponent = function CellComponent(cell) {
-       this._cell = cell;
-};
-
-CellComponent.prototype.getValue = function () {
-       return this._cell.getValue();
-};
-
-CellComponent.prototype.getOldValue = function () {
-       return this._cell.getOldValue();
-};
-
-CellComponent.prototype.getElement = function () {
-       return this._cell.getElement();
-};
-
-CellComponent.prototype.getRow = function () {
-       return this._cell.row.getComponent();
-};
-
-CellComponent.prototype.getData = function () {
-       return this._cell.row.getData();
-};
-
-CellComponent.prototype.getField = function () {
-       return this._cell.column.getField();
-};
-
-CellComponent.prototype.getColumn = function () {
-       return this._cell.column.getComponent();
-};
-
-CellComponent.prototype.setValue = function (value, mutate) {
-       if (typeof mutate == "undefined") {
-               mutate = true;
-       }
-
-       this._cell.setValue(value, mutate);
-};
-
-CellComponent.prototype.restoreOldValue = function () {
-       this._cell.setValueActual(this._cell.getOldValue());
-};
-
-CellComponent.prototype.edit = function (force) {
-       return this._cell.edit(force);
-};
-
-CellComponent.prototype.cancelEdit = function () {
-       this._cell.cancelEdit();
-};
-
-CellComponent.prototype.isEdited = function () {
-       return !!this._cell.modules.edit && this._cell.modules.edit.edited;
-};
-
-CellComponent.prototype.clearEdited = function () {
-       if (self.table.modExists("edit", true)) {
-               this._cell.table.modules.edit.clearEdited(this._cell);
-       }
-};
-
-CellComponent.prototype.isValid = function () {
-       return this._cell.modules.validate ? !this._cell.modules.validate.invalid : true;
-};
-
-CellComponent.prototype.validate = function () {
-       return this._cell.validate();
-};
-
-CellComponent.prototype.clearValidation = function () {
-       if (self.table.modExists("validate", true)) {
-               this._cell.table.modules.validate.clearValidation(this._cell);
-       }
-};
-
-CellComponent.prototype.nav = function () {
-       return this._cell.nav();
-};
-
-CellComponent.prototype.checkHeight = function () {
-       this._cell.checkHeight();
-};
-
-CellComponent.prototype.getTable = function () {
-       return this._cell.table;
-};
-
-CellComponent.prototype._getSelf = function () {
-       return this._cell;
-};
-
-var Cell = function Cell(column, row) {
-
-       this.table = column.table;
-       this.column = column;
-       this.row = row;
-       this.element = null;
-       this.value = null;
-       this.oldValue = null;
-       this.modules = {};
-
-       this.height = null;
-       this.width = null;
-       this.minWidth = null;
-
-       this.component = null;
-
-       this.build();
-};
-
-//////////////// Setup Functions /////////////////
-
-//generate element
-Cell.prototype.build = function () {
-       this.generateElement();
-
-       this.setWidth();
-
-       this._configureCell();
-
-       this.setValueActual(this.column.getFieldValue(this.row.data));
-};
-
-Cell.prototype.generateElement = function () {
-       this.element = document.createElement('div');
-       this.element.className = "tabulator-cell";
-       this.element.setAttribute("role", "gridcell");
-       this.element = this.element;
-};
-
-Cell.prototype._configureCell = function () {
-       var self = this,
-           cellEvents = self.column.cellEvents,
-           element = self.element,
-           field = this.column.getField(),
-           vertAligns = {
-               top: "flex-start",
-               bottom: "flex-end",
-               middle: "center"
-       },
-           hozAligns = {
-               left: "flex-start",
-               right: "flex-end",
-               center: "center"
-       };
-
-       //set text alignment
-       element.style.textAlign = self.column.hozAlign;
-
-       if (self.column.vertAlign) {
-               element.style.display = "inline-flex";
-
-               element.style.alignItems = vertAligns[self.column.vertAlign] || "";
-
-               if (self.column.hozAlign) {
-                       element.style.justifyContent = hozAligns[self.column.hozAlign] || "";
-               }
-       }
-
-       if (field) {
-               element.setAttribute("tabulator-field", field);
-       }
-
-       //add class to cell if needed
-       if (self.column.definition.cssClass) {
-               var classNames = self.column.definition.cssClass.split(" ");
-               classNames.forEach(function (className) {
-                       element.classList.add(className);
-               });
-       }
-
-       //update tooltip on mouse enter
-       if (this.table.options.tooltipGenerationMode === "hover") {
-               element.addEventListener("mouseenter", function (e) {
-                       self._generateTooltip();
-               });
-       }
-
-       self._bindClickEvents(cellEvents);
-
-       self._bindTouchEvents(cellEvents);
-
-       self._bindMouseEvents(cellEvents);
-
-       if (self.column.modules.edit) {
-               self.table.modules.edit.bindEditor(self);
-       }
-
-       if (self.column.definition.rowHandle && self.table.options.movableRows !== false && self.table.modExists("moveRow")) {
-               self.table.modules.moveRow.initializeCell(self);
-       }
-
-       //hide cell if not visible
-       if (!self.column.visible) {
-               self.hide();
-       }
-};
-
-Cell.prototype._bindClickEvents = function (cellEvents) {
-       var self = this,
-           element = self.element;
-
-       //set event bindings
-       if (cellEvents.cellClick || self.table.options.cellClick) {
-               element.addEventListener("click", function (e) {
-                       var component = self.getComponent();
-
-                       if (cellEvents.cellClick) {
-                               cellEvents.cellClick.call(self.table, e, component);
-                       }
-
-                       if (self.table.options.cellClick) {
-                               self.table.options.cellClick.call(self.table, e, component);
-                       }
-               });
-       }
-
-       if (cellEvents.cellDblClick || this.table.options.cellDblClick) {
-               element.addEventListener("dblclick", function (e) {
-                       var component = self.getComponent();
-
-                       if (cellEvents.cellDblClick) {
-                               cellEvents.cellDblClick.call(self.table, e, component);
-                       }
-
-                       if (self.table.options.cellDblClick) {
-                               self.table.options.cellDblClick.call(self.table, e, component);
-                       }
-               });
-       } else {
-               element.addEventListener("dblclick", function (e) {
-
-                       if (self.table.modExists("edit")) {
-                               if (self.table.modules.edit.currentCell === self) {
-                                       return; //prevent instant selection of editor content
-                               }
-                       }
-
-                       e.preventDefault();
-
-                       try {
-                               if (document.selection) {
-                                       // IE
-                                       var range = document.body.createTextRange();
-                                       range.moveToElementText(self.element);
-                                       range.select();
-                               } else if (window.getSelection) {
-                                       var range = document.createRange();
-                                       range.selectNode(self.element);
-                                       window.getSelection().removeAllRanges();
-                                       window.getSelection().addRange(range);
-                               }
-                       } catch (e) {}
-               });
-       }
-
-       if (cellEvents.cellContext || this.table.options.cellContext) {
-               element.addEventListener("contextmenu", function (e) {
-                       var component = self.getComponent();
-
-                       if (cellEvents.cellContext) {
-                               cellEvents.cellContext.call(self.table, e, component);
-                       }
-
-                       if (self.table.options.cellContext) {
-                               self.table.options.cellContext.call(self.table, e, component);
-                       }
-               });
-       }
-};
-
-Cell.prototype._bindMouseEvents = function (cellEvents) {
-       var self = this,
-           element = self.element;
-
-       if (cellEvents.cellMouseEnter || self.table.options.cellMouseEnter) {
-               element.addEventListener("mouseenter", function (e) {
-                       var component = self.getComponent();
-
-                       if (cellEvents.cellMouseEnter) {
-                               cellEvents.cellMouseEnter.call(self.table, e, component);
-                       }
-
-                       if (self.table.options.cellMouseEnter) {
-                               self.table.options.cellMouseEnter.call(self.table, e, component);
-                       }
-               });
-       }
-
-       if (cellEvents.cellMouseLeave || self.table.options.cellMouseLeave) {
-               element.addEventListener("mouseleave", function (e) {
-                       var component = self.getComponent();
-
-                       if (cellEvents.cellMouseLeave) {
-                               cellEvents.cellMouseLeave.call(self.table, e, component);
-                       }
-
-                       if (self.table.options.cellMouseLeave) {
-                               self.table.options.cellMouseLeave.call(self.table, e, component);
-                       }
-               });
-       }
-
-       if (cellEvents.cellMouseOver || self.table.options.cellMouseOver) {
-               element.addEventListener("mouseover", function (e) {
-                       var component = self.getComponent();
-
-                       if (cellEvents.cellMouseOver) {
-                               cellEvents.cellMouseOver.call(self.table, e, component);
-                       }
-
-                       if (self.table.options.cellMouseOver) {
-                               self.table.options.cellMouseOver.call(self.table, e, component);
-                       }
-               });
-       }
-
-       if (cellEvents.cellMouseOut || self.table.options.cellMouseOut) {
-               element.addEventListener("mouseout", function (e) {
-                       var component = self.getComponent();
-
-                       if (cellEvents.cellMouseOut) {
-                               cellEvents.cellMouseOut.call(self.table, e, component);
-                       }
-
-                       if (self.table.options.cellMouseOut) {
-                               self.table.options.cellMouseOut.call(self.table, e, component);
-                       }
-               });
-       }
-
-       if (cellEvents.cellMouseMove || self.table.options.cellMouseMove) {
-               element.addEventListener("mousemove", function (e) {
-                       var component = self.getComponent();
-
-                       if (cellEvents.cellMouseMove) {
-                               cellEvents.cellMouseMove.call(self.table, e, component);
-                       }
-
-                       if (self.table.options.cellMouseMove) {
-                               self.table.options.cellMouseMove.call(self.table, e, component);
-                       }
-               });
-       }
-};
-
-Cell.prototype._bindTouchEvents = function (cellEvents) {
-       var self = this,
-           element = self.element,
-           dblTap,
-           tapHold,
-           tap;
-
-       if (cellEvents.cellTap || this.table.options.cellTap) {
-               tap = false;
-
-               element.addEventListener("touchstart", function (e) {
-                       tap = true;
-               }, { passive: true });
-
-               element.addEventListener("touchend", function (e) {
-                       if (tap) {
-                               var component = self.getComponent();
-
-                               if (cellEvents.cellTap) {
-                                       cellEvents.cellTap.call(self.table, e, component);
-                               }
-
-                               if (self.table.options.cellTap) {
-                                       self.table.options.cellTap.call(self.table, e, component);
-                               }
-                       }
-
-                       tap = false;
-               });
-       }
-
-       if (cellEvents.cellDblTap || this.table.options.cellDblTap) {
-               dblTap = null;
-
-               element.addEventListener("touchend", function (e) {
-
-                       if (dblTap) {
-                               clearTimeout(dblTap);
-                               dblTap = null;
-
-                               var component = self.getComponent();
-
-                               if (cellEvents.cellDblTap) {
-                                       cellEvents.cellDblTap.call(self.table, e, component);
-                               }
-
-                               if (self.table.options.cellDblTap) {
-                                       self.table.options.cellDblTap.call(self.table, e, component);
-                               }
-                       } else {
-
-                               dblTap = setTimeout(function () {
-                                       clearTimeout(dblTap);
-                                       dblTap = null;
-                               }, 300);
-                       }
-               });
-       }
-
-       if (cellEvents.cellTapHold || this.table.options.cellTapHold) {
-               tapHold = null;
-
-               element.addEventListener("touchstart", function (e) {
-                       clearTimeout(tapHold);
-
-                       tapHold = setTimeout(function () {
-                               clearTimeout(tapHold);
-                               tapHold = null;
-                               tap = false;
-                               var component = self.getComponent();
-
-                               if (cellEvents.cellTapHold) {
-                                       cellEvents.cellTapHold.call(self.table, e, component);
-                               }
-
-                               if (self.table.options.cellTapHold) {
-                                       self.table.options.cellTapHold.call(self.table, e, component);
-                               }
-                       }, 1000);
-               }, { passive: true });
-
-               element.addEventListener("touchend", function (e) {
-                       clearTimeout(tapHold);
-                       tapHold = null;
-               });
-       }
-};
-
-//generate cell contents
-Cell.prototype._generateContents = function () {
-       var val;
-
-       if (this.table.modExists("format")) {
-               val = this.table.modules.format.formatValue(this);
-       } else {
-               val = this.element.innerHTML = this.value;
-       }
-
-       switch (typeof val === 'undefined' ? 'undefined' : _typeof(val)) {
-               case "object":
-                       if (val instanceof Node) {
-
-                               //clear previous cell contents
-                               while (this.element.firstChild) {
-                                       this.element.removeChild(this.element.firstChild);
-                               }this.element.appendChild(val);
-                       } else {
-                               this.element.innerHTML = "";
-
-                               if (val != null) {
-                                       console.warn("Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:", val);
-                               }
-                       }
-                       break;
-               case "undefined":
-               case "null":
-                       this.element.innerHTML = "";
-                       break;
-               default:
-                       this.element.innerHTML = val;
-       }
-};
-
-Cell.prototype.cellRendered = function () {
-       if (this.table.modExists("format") && this.table.modules.format.cellRendered) {
-               this.table.modules.format.cellRendered(this);
-       }
-};
-
-//generate tooltip text
-Cell.prototype._generateTooltip = function () {
-       var tooltip = this.column.tooltip;
-
-       if (tooltip) {
-               if (tooltip === true) {
-                       tooltip = this.value;
-               } else if (typeof tooltip == "function") {
-                       tooltip = tooltip(this.getComponent());
-
-                       if (tooltip === false) {
-                               tooltip = "";
-                       }
-               }
-
-               if (typeof tooltip === "undefined") {
-                       tooltip = "";
-               }
-
-               this.element.setAttribute("title", tooltip);
-       } else {
-               this.element.setAttribute("title", "");
-       }
-};
-
-//////////////////// Getters ////////////////////
-Cell.prototype.getElement = function () {
-       return this.element;
-};
-
-Cell.prototype.getValue = function () {
-       return this.value;
-};
-
-Cell.prototype.getOldValue = function () {
-       return this.oldValue;
-};
-
-//////////////////// Actions ////////////////////
-
-Cell.prototype.setValue = function (value, mutate) {
-
-       var changed = this.setValueProcessData(value, mutate),
-           component;
-
-       if (changed) {
-               if (this.table.options.history && this.table.modExists("history")) {
-                       this.table.modules.history.action("cellEdit", this, { oldValue: this.oldValue, newValue: this.value });
-               }
-
-               component = this.getComponent();
-
-               if (this.column.cellEvents.cellEdited) {
-                       this.column.cellEvents.cellEdited.call(this.table, component);
-               }
-
-               this.cellRendered();
-
-               this.table.options.cellEdited.call(this.table, component);
-
-               this.table.options.dataEdited.call(this.table, this.table.rowManager.getData());
-       }
-};
-
-Cell.prototype.setValueProcessData = function (value, mutate) {
-       var changed = false;
-
-       if (this.value != value) {
-
-               changed = true;
-
-               if (mutate) {
-                       if (this.column.modules.mutate) {
-                               value = this.table.modules.mutator.transformCell(this, value);
-                       }
-               }
-       }
-
-       this.setValueActual(value);
-
-       if (changed && this.table.modExists("columnCalcs")) {
-               if (this.column.definition.topCalc || this.column.definition.bottomCalc) {
-                       if (this.table.options.groupBy && this.table.modExists("groupRows")) {
-
-                               if (this.table.options.columnCalcs == "table" || this.table.options.columnCalcs == "both") {
-                                       this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
-                               }
-
-                               if (this.table.options.columnCalcs != "table") {
-                                       this.table.modules.columnCalcs.recalcRowGroup(this.row);
-                               }
-                       } else {
-                               this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
-                       }
-               }
-       }
-
-       return changed;
-};
-
-Cell.prototype.setValueActual = function (value) {
-       this.oldValue = this.value;
-
-       this.value = value;
-
-       if (this.table.options.reactiveData && this.table.modExists("reactiveData")) {
-               this.table.modules.reactiveData.block();
-       }
-
-       this.column.setFieldValue(this.row.data, value);
-
-       if (this.table.options.reactiveData && this.table.modExists("reactiveData")) {
-               this.table.modules.reactiveData.unblock();
-       }
-
-       this._generateContents();
-       this._generateTooltip();
-
-       //set resizable handles
-       if (this.table.options.resizableColumns && this.table.modExists("resizeColumns")) {
-               this.table.modules.resizeColumns.initializeColumn("cell", this.column, this.element);
-       }
-
-       //set column menu
-       if (this.column.definition.contextMenu && this.table.modExists("menu")) {
-               this.table.modules.menu.initializeCell(this);
-       }
-
-       //handle frozen cells
-       if (this.table.modExists("frozenColumns")) {
-               this.table.modules.frozenColumns.layoutElement(this.element, this.column);
-       }
-};
-
-Cell.prototype.setWidth = function () {
-       this.width = this.column.width;
-       this.element.style.width = this.column.widthStyled;
-};
-
-Cell.prototype.clearWidth = function () {
-       this.width = "";
-       this.element.style.width = "";
-};
-
-Cell.prototype.getWidth = function () {
-       return this.width || this.element.offsetWidth;
-};
-
-Cell.prototype.setMinWidth = function () {
-       this.minWidth = this.column.minWidth;
-       this.element.style.minWidth = this.column.minWidthStyled;
-};
-
-Cell.prototype.checkHeight = function () {
-       // var height = this.element.css("height");
-       this.row.reinitializeHeight();
-};
-
-Cell.prototype.clearHeight = function () {
-       this.element.style.height = "";
-       this.height = null;
-};
-
-Cell.prototype.setHeight = function () {
-       this.height = this.row.height;
-       this.element.style.height = this.row.heightStyled;
-};
-
-Cell.prototype.getHeight = function () {
-       return this.height || this.element.offsetHeight;
-};
-
-Cell.prototype.show = function () {
-       this.element.style.display = "";
-};
-
-Cell.prototype.hide = function () {
-       this.element.style.display = "none";
-};
-
-Cell.prototype.edit = function (force) {
-       if (this.table.modExists("edit", true)) {
-               return this.table.modules.edit.editCell(this, force);
-       }
-};
-
-Cell.prototype.cancelEdit = function () {
-       if (this.table.modExists("edit", true)) {
-               var editing = this.table.modules.edit.getCurrentCell();
-
-               if (editing && editing._getSelf() === this) {
-                       this.table.modules.edit.cancelEdit();
-               } else {
-                       console.warn("Cancel Editor Error - This cell is not currently being edited ");
-               }
-       }
-};
-
-Cell.prototype.validate = function () {
-       if (this.column.modules.validate && this.table.modExists("validate", true)) {
-               var valid = this.table.modules.validate.validate(this.column.modules.validate, this, this.getValue());
-
-               return valid === true;
-       } else {
-               return true;
-       }
-};
-
-Cell.prototype.delete = function () {
-       if (!this.table.rowManager.redrawBlock) {
-               this.element.parentNode.removeChild(this.element);
-       }
-
-       if (this.modules.validate && this.modules.validate.invalid) {
-               this.table.modules.validate.clearValidation(this);
-       }
-
-       if (this.modules.edit && this.modules.edit.edited) {
-               this.table.modules.edit.clearEdited(this);
-       }
-
-       this.element = false;
-       this.column.deleteCell(this);
-       this.row.deleteCell(this);
-       this.calcs = {};
-};
-
-//////////////// Navigation /////////////////
-
-Cell.prototype.nav = function () {
-
-       var self = this,
-           nextCell = false,
-           index = this.row.getCellIndex(this);
-
-       return {
-               next: function next() {
-                       var nextCell = this.right(),
-                           nextRow;
-
-                       if (!nextCell) {
-                               nextRow = self.table.rowManager.nextDisplayRow(self.row, true);
-
-                               if (nextRow) {
-                                       nextCell = nextRow.findNextEditableCell(-1);
-
-                                       if (nextCell) {
-                                               nextCell.edit();
-                                               return true;
-                                       }
-                               }
-                       } else {
-                               return true;
-                       }
-
-                       return false;
-               },
-               prev: function prev() {
-                       var nextCell = this.left(),
-                           prevRow;
-
-                       if (!nextCell) {
-                               prevRow = self.table.rowManager.prevDisplayRow(self.row, true);
-
-                               if (prevRow) {
-                                       nextCell = prevRow.findPrevEditableCell(prevRow.cells.length);
-
-                                       if (nextCell) {
-                                               nextCell.edit();
-                                               return true;
-                                       }
-                               }
-                       } else {
-                               return true;
-                       }
-
-                       return false;
-               },
-               left: function left() {
-
-                       nextCell = self.row.findPrevEditableCell(index);
-
-                       if (nextCell) {
-                               nextCell.edit();
-                               return true;
-                       } else {
-                               return false;
-                       }
-               },
-               right: function right() {
-                       nextCell = self.row.findNextEditableCell(index);
-
-                       if (nextCell) {
-                               nextCell.edit();
-                               return true;
-                       } else {
-                               return false;
-                       }
-               },
-               up: function up() {
-                       var nextRow = self.table.rowManager.prevDisplayRow(self.row, true);
-
-                       if (nextRow) {
-                               nextRow.cells[index].edit();
-                       }
-               },
-               down: function down() {
-                       var nextRow = self.table.rowManager.nextDisplayRow(self.row, true);
-
-                       if (nextRow) {
-                               nextRow.cells[index].edit();
-                       }
-               }
-
-       };
-};
-
-Cell.prototype.getIndex = function () {
-       this.row.getCellIndex(this);
-};
-
-//////////////// Object Generation /////////////////
-Cell.prototype.getComponent = function () {
-
-       if (!this.component) {
-               this.component = new CellComponent(this);
-       }
-
-       return this.component;
-};
-var FooterManager = function FooterManager(table) {
-       this.table = table;
-       this.active = false;
-       this.element = this.createElement(); //containing element
-       this.external = false;
-       this.links = [];
-
-       this._initialize();
-};
-
-FooterManager.prototype.createElement = function () {
-       var el = document.createElement("div");
-
-       el.classList.add("tabulator-footer");
-
-       return el;
-};
-
-FooterManager.prototype._initialize = function (element) {
-       if (this.table.options.footerElement) {
-
-               switch (_typeof(this.table.options.footerElement)) {
-                       case "string":
-
-                               if (this.table.options.footerElement[0] === "<") {
-                                       this.element.innerHTML = this.table.options.footerElement;
-                               } else {
-                                       this.external = true;
-                                       this.element = document.querySelector(this.table.options.footerElement);
-                               }
-                               break;
-                       default:
-                               this.element = this.table.options.footerElement;
-                               break;
-               }
-       }
-};
-
-FooterManager.prototype.getElement = function () {
-       return this.element;
-};
-
-FooterManager.prototype.append = function (element, parent) {
-       this.activate(parent);
-
-       this.element.appendChild(element);
-       this.table.rowManager.adjustTableSize();
-};
-
-FooterManager.prototype.prepend = function (element, parent) {
-       this.activate(parent);
-
-       this.element.insertBefore(element, this.element.firstChild);
-       this.table.rowManager.adjustTableSize();
-};
-
-FooterManager.prototype.remove = function (element) {
-       element.parentNode.removeChild(element);
-       this.deactivate();
-};
-
-FooterManager.prototype.deactivate = function (force) {
-       if (!this.element.firstChild || force) {
-               if (!this.external) {
-                       this.element.parentNode.removeChild(this.element);
-               }
-               this.active = false;
-       }
-
-       // this.table.rowManager.adjustTableSize();
-};
-
-FooterManager.prototype.activate = function (parent) {
-       if (!this.active) {
-               this.active = true;
-               if (!this.external) {
-                       this.table.element.appendChild(this.getElement());
-                       this.table.element.style.display = '';
-               }
-       }
-
-       if (parent) {
-               this.links.push(parent);
-       }
-};
-
-FooterManager.prototype.redraw = function () {
-       this.links.forEach(function (link) {
-               link.footerRedraw();
-       });
-};
-
-var Tabulator = function Tabulator(element, options) {
-
-       this.options = {};
-
-       this.columnManager = null; // hold Column Manager
-       this.rowManager = null; //hold Row Manager
-       this.footerManager = null; //holder Footer Manager
-       this.browser = ""; //hold current browser type
-       this.browserSlow = false; //handle reduced functionality for slower browsers
-       this.browserMobile = false; //check if running on moble, prevent resize cancelling edit on keyboard appearence
-
-       this.modules = {}; //hold all modules bound to this table
-
-       this.initializeElement(element);
-       this.initializeOptions(options || {});
-       this._create();
-
-       Tabulator.prototype.comms.register(this); //register table for inderdevice communication
-};
-
-//default setup options
-Tabulator.prototype.defaultOptions = {
-
-       height: false, //height of tabulator
-       minHeight: false, //minimum height of tabulator
-       maxHeight: false, //maximum height of tabulator
-
-       layout: "fitData", ///layout type "fitColumns" | "fitData"
-       layoutColumnsOnNewData: false, //update column widths on setData
-
-       columnMinWidth: 40, //minimum global width for a column
-       columnHeaderVertAlign: "top", //vertical alignment of column headers
-       columnVertAlign: false, // DEPRECATED - Left to allow warning
-
-       resizableColumns: true, //resizable columns
-       resizableRows: false, //resizable rows
-       autoResize: true, //auto resize table
-
-       columns: [], //store for colum header info
-
-       cellHozAlign: "", //horizontal align columns
-       cellVertAlign: "", //certical align columns
-
-
-       data: [], //default starting data
-
-       autoColumns: false, //build columns from data row structure
-
-       reactiveData: false, //enable data reactivity
-
-       nestedFieldSeparator: ".", //seperatpr for nested data
-
-       tooltips: false, //Tool tip value
-       tooltipsHeader: false, //Tool tip for headers
-       tooltipGenerationMode: "load", //when to generate tooltips
-
-       initialSort: false, //initial sorting criteria
-       initialFilter: false, //initial filtering criteria
-       initialHeaderFilter: false, //initial header filtering criteria
-
-       columnHeaderSortMulti: true, //multiple or single column sorting
-
-       sortOrderReverse: false, //reverse internal sort ordering
-
-       headerSort: true, //set default global header sort
-       headerSortTristate: false, //set default tristate header sorting
-
-       footerElement: false, //hold footer element
-
-       index: "id", //filed for row index
-
-       keybindings: [], //array for keybindings
-
-       tabEndNewRow: false, //create new row when tab to end of table
-
-       invalidOptionWarnings: true, //allow toggling of invalid option warnings
-
-       clipboard: false, //enable clipboard
-       clipboardCopyStyled: true, //formatted table data
-       clipboardCopyConfig: false, //clipboard config
-       clipboardCopyFormatter: false, //DEPRICATED - REMOVE in 5.0
-       clipboardCopyRowRange: "active", //restrict clipboard to visible rows only
-       clipboardPasteParser: "table", //convert pasted clipboard data to rows
-       clipboardPasteAction: "insert", //how to insert pasted data into the table
-
-       clipboardCopied: function clipboardCopied() {}, //data has been copied to the clipboard
-       clipboardPasted: function clipboardPasted() {}, //data has been pasted into the table
-       clipboardPasteError: function clipboardPasteError() {}, //data has not successfully been pasted into the table
-
-       downloadDataFormatter: false, //function to manipulate table data before it is downloaded
-       downloadReady: function downloadReady(data, blob) {
-               return blob;
-       }, //function to manipulate download data
-       downloadComplete: false, //function to manipulate download data
-       downloadConfig: {}, //download config
-       downloadRowRange: "active", //restrict download to active rows only
-
-       dataTree: false, //enable data tree
-       dataTreeElementColumn: false,
-       dataTreeBranchElement: true, //show data tree branch element
-       dataTreeChildIndent: 9, //data tree child indent in px
-       dataTreeChildField: "_children", //data tre column field to look for child rows
-       dataTreeCollapseElement: false, //data tree row collapse element
-       dataTreeExpandElement: false, //data tree row expand element
-       dataTreeStartExpanded: false,
-       dataTreeRowExpanded: function dataTreeRowExpanded() {}, //row has been expanded
-       dataTreeRowCollapsed: function dataTreeRowCollapsed() {}, //row has been collapsed
-       dataTreeChildColumnCalcs: false, //include visible data tree rows in column calculations
-       dataTreeSelectPropagate: false, //seleccting a parent row selects its children
-
-       printAsHtml: false, //enable print as html
-       printFormatter: false, //printing page formatter
-       printHeader: false, //page header contents
-       printFooter: false, //page footer contents
-       printCopyStyle: true, //DEPRICATED - REMOVE in 5.0
-       printStyled: true, //enable print as html styling
-       printVisibleRows: true, //DEPRICATED - REMOVE in 5.0
-       printRowRange: "visible", //restrict print to visible rows only
-       printConfig: {}, //print config options
-
-       addRowPos: "bottom", //position to insert blank rows, top|bottom
-
-       selectable: "highlight", //highlight rows on hover
-       selectableRangeMode: "drag", //highlight rows on hover
-       selectableRollingSelection: true, //roll selection once maximum number of selectable rows is reached
-       selectablePersistence: true, // maintain selection when table view is updated
-       selectableCheck: function selectableCheck(data, row) {
-               return true;
-       }, //check wheather row is selectable
-
-       headerFilterLiveFilterDelay: 300, //delay before updating column after user types in header filter
-       headerFilterPlaceholder: false, //placeholder text to display in header filters
-
-       headerVisible: true, //hide header
-
-       history: false, //enable edit history
-
-       locale: false, //current system language
-       langs: {},
-
-       virtualDom: true, //enable DOM virtualization
-       virtualDomBuffer: 0, // set virtual DOM buffer size
-
-       persistentLayout: false, //DEPRICATED - REMOVE in 5.0
-       persistentSort: false, //DEPRICATED - REMOVE in 5.0
-       persistentFilter: false, //DEPRICATED - REMOVE in 5.0
-       persistenceID: "", //key for persistent storage
-       persistenceMode: true, //mode for storing persistence information
-       persistenceReaderFunc: false, //function for handling persistence data reading
-       persistenceWriterFunc: false, //function for handling persistence data writing
-
-       persistence: false,
-
-       responsiveLayout: false, //responsive layout flags
-       responsiveLayoutCollapseStartOpen: true, //start showing collapsed data
-       responsiveLayoutCollapseUseFormatters: true, //responsive layout collapse formatter
-       responsiveLayoutCollapseFormatter: false, //responsive layout collapse formatter
-
-       pagination: false, //set pagination type
-       paginationSize: false, //set number of rows to a page
-       paginationInitialPage: 1, //initail page to show on load
-       paginationButtonCount: 5, // set count of page button
-       paginationSizeSelector: false, //add pagination size selector element
-       paginationElement: false, //element to hold pagination numbers
-       paginationDataSent: {}, //pagination data sent to the server
-       paginationDataReceived: {}, //pagination data received from the server
-       paginationAddRow: "page", //add rows on table or page
-
-       ajaxURL: false, //url for ajax loading
-       ajaxURLGenerator: false,
-       ajaxParams: {}, //params for ajax loading
-       ajaxConfig: "get", //ajax request type
-       ajaxContentType: "form", //ajax request type
-       ajaxRequestFunc: false, //promise function
-       ajaxLoader: true, //show loader
-       ajaxLoaderLoading: false, //loader element
-       ajaxLoaderError: false, //loader element
-       ajaxFiltering: false,
-       ajaxSorting: false,
-       ajaxProgressiveLoad: false, //progressive loading
-       ajaxProgressiveLoadDelay: 0, //delay between requests
-       ajaxProgressiveLoadScrollMargin: 0, //margin before scroll begins
-
-       groupBy: false, //enable table grouping and set field to group by
-       groupStartOpen: true, //starting state of group
-       groupValues: false,
-
-       groupHeader: false, //header generation function
-       groupHeaderPrint: null,
-       groupHeaderClipboard: null,
-       groupHeaderHtmlOutput: null,
-       groupHeaderDownload: null,
-
-       htmlOutputConfig: false, //html outypu config
-
-       movableColumns: false, //enable movable columns
-
-       movableRows: false, //enable movable rows
-       movableRowsConnectedTables: false, //tables for movable rows to be connected to
-       movableRowsConnectedElements: false, //other elements for movable rows to be connected to
-       movableRowsSender: false,
-       movableRowsReceiver: "insert",
-       movableRowsSendingStart: function movableRowsSendingStart() {},
-       movableRowsSent: function movableRowsSent() {},
-       movableRowsSentFailed: function movableRowsSentFailed() {},
-       movableRowsSendingStop: function movableRowsSendingStop() {},
-       movableRowsReceivingStart: function movableRowsReceivingStart() {},
-       movableRowsReceived: function movableRowsReceived() {},
-       movableRowsReceivedFailed: function movableRowsReceivedFailed() {},
-       movableRowsReceivingStop: function movableRowsReceivingStop() {},
-       movableRowsElementDrop: function movableRowsElementDrop() {},
-
-       scrollToRowPosition: "top",
-       scrollToRowIfVisible: true,
-
-       scrollToColumnPosition: "left",
-       scrollToColumnIfVisible: true,
-
-       rowFormatter: false,
-       rowFormatterPrint: null,
-       rowFormatterClipboard: null,
-       rowFormatterHtmlOutput: null,
-
-       placeholder: false,
-
-       //table building callbacks
-       tableBuilding: function tableBuilding() {},
-       tableBuilt: function tableBuilt() {},
-
-       //render callbacks
-       renderStarted: function renderStarted() {},
-       renderComplete: function renderComplete() {},
-
-       //row callbacks
-       rowClick: false,
-       rowDblClick: false,
-       rowContext: false,
-       rowTap: false,
-       rowDblTap: false,
-       rowTapHold: false,
-       rowMouseEnter: false,
-       rowMouseLeave: false,
-       rowMouseOver: false,
-       rowMouseOut: false,
-       rowMouseMove: false,
-       rowContextMenu: false,
-       rowAdded: function rowAdded() {},
-       rowDeleted: function rowDeleted() {},
-       rowMoved: function rowMoved() {},
-       rowUpdated: function rowUpdated() {},
-       rowSelectionChanged: function rowSelectionChanged() {},
-       rowSelected: function rowSelected() {},
-       rowDeselected: function rowDeselected() {},
-       rowResized: function rowResized() {},
-
-       //cell callbacks
-       //row callbacks
-       cellClick: false,
-       cellDblClick: false,
-       cellContext: false,
-       cellTap: false,
-       cellDblTap: false,
-       cellTapHold: false,
-       cellMouseEnter: false,
-       cellMouseLeave: false,
-       cellMouseOver: false,
-       cellMouseOut: false,
-       cellMouseMove: false,
-       cellEditing: function cellEditing() {},
-       cellEdited: function cellEdited() {},
-       cellEditCancelled: function cellEditCancelled() {},
-
-       //column callbacks
-       columnMoved: false,
-       columnResized: function columnResized() {},
-       columnTitleChanged: function columnTitleChanged() {},
-       columnVisibilityChanged: function columnVisibilityChanged() {},
-
-       //HTML iport callbacks
-       htmlImporting: function htmlImporting() {},
-       htmlImported: function htmlImported() {},
-
-       //data callbacks
-       dataLoading: function dataLoading() {},
-       dataLoaded: function dataLoaded() {},
-       dataEdited: function dataEdited() {},
-
-       //ajax callbacks
-       ajaxRequesting: function ajaxRequesting() {},
-       ajaxResponse: false,
-       ajaxError: function ajaxError() {},
-
-       //filtering callbacks
-       dataFiltering: false,
-       dataFiltered: false,
-
-       //sorting callbacks
-       dataSorting: function dataSorting() {},
-       dataSorted: function dataSorted() {},
-
-       //grouping callbacks
-       groupToggleElement: "arrow",
-       groupClosedShowCalcs: false,
-       dataGrouping: function dataGrouping() {},
-       dataGrouped: false,
-       groupVisibilityChanged: function groupVisibilityChanged() {},
-       groupClick: false,
-       groupDblClick: false,
-       groupContext: false,
-       groupContextMenu: false,
-       groupTap: false,
-       groupDblTap: false,
-       groupTapHold: false,
-
-       columnCalcs: true,
-
-       //pagination callbacks
-       pageLoaded: function pageLoaded() {},
-
-       //localization callbacks
-       localized: function localized() {},
-
-       //validation callbacks
-       validationMode: "blocking",
-       validationFailed: function validationFailed() {},
-
-       //history callbacks
-       historyUndo: function historyUndo() {},
-       historyRedo: function historyRedo() {},
-
-       //scroll callbacks
-       scrollHorizontal: function scrollHorizontal() {},
-       scrollVertical: function scrollVertical() {}
-};
-
-Tabulator.prototype.initializeOptions = function (options) {
-
-       //warn user if option is not available
-       if (options.invalidOptionWarnings !== false) {
-               for (var key in options) {
-                       if (typeof this.defaultOptions[key] === "undefined") {
-                               console.warn("Invalid table constructor option:", key);
-                       }
-               }
-       }
-
-       //assign options to table
-       for (var key in this.defaultOptions) {
-               if (key in options) {
-                       this.options[key] = options[key];
-               } else {
-                       if (Array.isArray(this.defaultOptions[key])) {
-                               this.options[key] = [];
-                       } else if (_typeof(this.defaultOptions[key]) === "object" && this.defaultOptions[key] !== null) {
-                               this.options[key] = {};
-                       } else {
-                               this.options[key] = this.defaultOptions[key];
-                       }
-               }
-       }
-};
-
-Tabulator.prototype.initializeElement = function (element) {
-
-       if (typeof HTMLElement !== "undefined" && element instanceof HTMLElement) {
-               this.element = element;
-               return true;
-       } else if (typeof element === "string") {
-               this.element = document.querySelector(element);
-
-               if (this.element) {
-                       return true;
-               } else {
-                       console.error("Tabulator Creation Error - no element found matching selector: ", element);
-                       return false;
-               }
-       } else {
-               console.error("Tabulator Creation Error - Invalid element provided:", element);
-               return false;
-       }
-};
-
-//convert depricated functionality to new functions
-Tabulator.prototype._mapDepricatedFunctionality = function () {
-
-       //map depricated persistance setup options
-       if (this.options.persistentLayout || this.options.persistentSort || this.options.persistentFilter) {
-               if (!this.options.persistence) {
-                       this.options.persistence = {};
-               }
-       }
-
-       if (this.options.downloadDataFormatter) {
-               console.warn("DEPRECATION WARNING - downloadDataFormatter option has been deprecated");
-       }
-
-       if (typeof this.options.clipboardCopyHeader !== "undefined") {
-               this.options.columnHeaders = this.options.clipboardCopyHeader;
-               console.warn("DEPRECATION WARNING - clipboardCopyHeader option has been deprecated, please use the columnHeaders property on the clipboardCopyConfig option");
-       }
-
-       if (this.options.printVisibleRows !== true) {
-               console.warn("printVisibleRows option is deprecated, you should now use the printRowRange option");
-
-               this.options.persistence.printRowRange = "active";
-       }
-
-       if (this.options.printCopyStyle !== true) {
-               console.warn("printCopyStyle option is deprecated, you should now use the printStyled option");
-
-               this.options.persistence.printStyled = this.options.printCopyStyle;
-       }
-
-       if (this.options.persistentLayout) {
-               console.warn("persistentLayout option is deprecated, you should now use the persistence option");
-
-               if (this.options.persistence !== true && typeof this.options.persistence.columns === "undefined") {
-                       this.options.persistence.columns = true;
-               }
-       }
-
-       if (this.options.persistentSort) {
-               console.warn("persistentSort option is deprecated, you should now use the persistence option");
-
-               if (this.options.persistence !== true && typeof this.options.persistence.sort === "undefined") {
-                       this.options.persistence.sort = true;
-               }
-       }
-
-       if (this.options.persistentFilter) {
-               console.warn("persistentFilter option is deprecated, you should now use the persistence option");
-
-               if (this.options.persistence !== true && typeof this.options.persistence.filter === "undefined") {
-                       this.options.persistence.filter = true;
-               }
-       }
-
-       if (this.options.columnVertAlign) {
-               console.warn("columnVertAlign option is deprecated, you should now use the columnHeaderVertAlign option");
-
-               this.options.columnHeaderVertAlign = this.options.columnVertAlign;
-       }
-};
-
-Tabulator.prototype._clearSelection = function () {
-
-       this.element.classList.add("tabulator-block-select");
-
-       if (window.getSelection) {
-               if (window.getSelection().empty) {
-                       // Chrome
-                       window.getSelection().empty();
-               } else if (window.getSelection().removeAllRanges) {
-                       // Firefox
-                       window.getSelection().removeAllRanges();
-               }
-       } else if (document.selection) {
-               // IE?
-               document.selection.empty();
-       }
-
-       this.element.classList.remove("tabulator-block-select");
-};
-
-//concreate table
-Tabulator.prototype._create = function () {
-       this._clearObjectPointers();
-
-       this._mapDepricatedFunctionality();
-
-       this.bindModules();
-
-       if (this.element.tagName === "TABLE") {
-               if (this.modExists("htmlTableImport", true)) {
-                       this.modules.htmlTableImport.parseTable();
-               }
-       }
-
-       this.columnManager = new ColumnManager(this);
-       this.rowManager = new RowManager(this);
-       this.footerManager = new FooterManager(this);
-
-       this.columnManager.setRowManager(this.rowManager);
-       this.rowManager.setColumnManager(this.columnManager);
-
-       this._buildElement();
-
-       this._loadInitialData();
-};
-
-//clear pointers to objects in default config object
-Tabulator.prototype._clearObjectPointers = function () {
-       this.options.columns = this.options.columns.slice(0);
-
-       if (!this.options.reactiveData) {
-               this.options.data = this.options.data.slice(0);
-       }
-};
-
-//build tabulator element
-Tabulator.prototype._buildElement = function () {
-       var _this17 = this;
-
-       var element = this.element,
-           mod = this.modules,
-           options = this.options;
-
-       options.tableBuilding.call(this);
-
-       element.classList.add("tabulator");
-       element.setAttribute("role", "grid");
-
-       //empty element
-       while (element.firstChild) {
-               element.removeChild(element.firstChild);
-       } //set table height
-       if (options.height) {
-               options.height = isNaN(options.height) ? options.height : options.height + "px";
-               element.style.height = options.height;
-       }
-
-       //set table min height
-       if (options.minHeight !== false) {
-               options.minHeight = isNaN(options.minHeight) ? options.minHeight : options.minHeight + "px";
-               element.style.minHeight = options.minHeight;
-       }
-
-       //set table maxHeight
-       if (options.maxHeight !== false) {
-               options.maxHeight = isNaN(options.maxHeight) ? options.maxHeight : options.maxHeight + "px";
-               element.style.maxHeight = options.maxHeight;
-       }
-
-       this.columnManager.initialize();
-       this.rowManager.initialize();
-
-       this._detectBrowser();
-
-       if (this.modExists("layout", true)) {
-               mod.layout.initialize(options.layout);
-       }
-
-       //set localization
-       if (options.headerFilterPlaceholder !== false) {
-               mod.localize.setHeaderFilterPlaceholder(options.headerFilterPlaceholder);
-       }
-
-       for (var locale in options.langs) {
-               mod.localize.installLang(locale, options.langs[locale]);
-       }
-
-       mod.localize.setLocale(options.locale);
-
-       //configure placeholder element
-       if (typeof options.placeholder == "string") {
-
-               var el = document.createElement("div");
-               el.classList.add("tabulator-placeholder");
-
-               var span = document.createElement("span");
-               span.innerHTML = options.placeholder;
-
-               el.appendChild(span);
-
-               options.placeholder = el;
-       }
-
-       //build table elements
-       element.appendChild(this.columnManager.getElement());
-       element.appendChild(this.rowManager.getElement());
-
-       if (options.footerElement) {
-               this.footerManager.activate();
-       }
-
-       if (options.persistence && this.modExists("persistence", true)) {
-               mod.persistence.initialize();
-       }
-
-       if (options.persistence && this.modExists("persistence", true) && mod.persistence.config.columns) {
-               options.columns = mod.persistence.load("columns", options.columns);
-       }
-
-       if (options.movableRows && this.modExists("moveRow")) {
-               mod.moveRow.initialize();
-       }
-
-       if (options.autoColumns && this.options.data) {
-               this.columnManager.generateColumnsFromRowData(this.options.data);
-       }
-
-       if (this.modExists("columnCalcs")) {
-               mod.columnCalcs.initialize();
-       }
-
-       this.columnManager.setColumns(options.columns);
-
-       if (options.dataTree && this.modExists("dataTree", true)) {
-               mod.dataTree.initialize();
-       }
-
-       if (this.modExists("frozenRows")) {
-               this.modules.frozenRows.initialize();
-       }
-
-       if ((options.persistence && this.modExists("persistence", true) && mod.persistence.config.sort || options.initialSort) && this.modExists("sort", true)) {
-               var sorters = [];
-
-               if (options.persistence && this.modExists("persistence", true) && mod.persistence.config.sort) {
-                       sorters = mod.persistence.load("sort");
-
-                       if (sorters === false && options.initialSort) {
-                               sorters = options.initialSort;
-                       }
-               } else if (options.initialSort) {
-                       sorters = options.initialSort;
-               }
-
-               mod.sort.setSort(sorters);
-       }
-
-       if ((options.persistence && this.modExists("persistence", true) && mod.persistence.config.filter || options.initialFilter) && this.modExists("filter", true)) {
-               var filters = [];
-
-               if (options.persistence && this.modExists("persistence", true) && mod.persistence.config.filter) {
-                       filters = mod.persistence.load("filter");
-
-                       if (filters === false && options.initialFilter) {
-                               filters = options.initialFilter;
-                       }
-               } else if (options.initialFilter) {
-                       filters = options.initialFilter;
-               }
-
-               mod.filter.setFilter(filters);
-       }
-
-       if (options.initialHeaderFilter && this.modExists("filter", true)) {
-               options.initialHeaderFilter.forEach(function (item) {
-
-                       var column = _this17.columnManager.findColumn(item.field);
-
-                       if (column) {
-                               mod.filter.setHeaderFilterValue(column, item.value);
-                       } else {
-                               console.warn("Column Filter Error - No matching column found:", item.field);
-                               return false;
-                       }
-               });
-       }
-
-       if (this.modExists("ajax")) {
-               mod.ajax.initialize();
-       }
-
-       if (options.pagination && this.modExists("page", true)) {
-               mod.page.initialize();
-       }
-
-       if (options.groupBy && this.modExists("groupRows", true)) {
-               mod.groupRows.initialize();
-       }
-
-       if (this.modExists("keybindings")) {
-               mod.keybindings.initialize();
-       }
-
-       if (this.modExists("selectRow")) {
-               mod.selectRow.clearSelectionData(true);
-       }
-
-       if (options.autoResize && this.modExists("resizeTable")) {
-               mod.resizeTable.initialize();
-       }
-
-       if (this.modExists("clipboard")) {
-               mod.clipboard.initialize();
-       }
-
-       if (options.printAsHtml && this.modExists("print")) {
-               mod.print.initialize();
-       }
-
-       options.tableBuilt.call(this);
-};
-
-Tabulator.prototype._loadInitialData = function () {
-       var self = this;
-
-       if (self.options.pagination && self.modExists("page")) {
-               self.modules.page.reset(true, true);
-
-               if (self.options.pagination == "local") {
-                       if (self.options.data.length) {
-                               self.rowManager.setData(self.options.data, false, true);
-                       } else {
-                               if ((self.options.ajaxURL || self.options.ajaxURLGenerator) && self.modExists("ajax")) {
-                                       self.modules.ajax.loadData(false, true).then(function () {}).catch(function () {
-                                               if (self.options.paginationInitialPage) {
-                                                       self.modules.page.setPage(self.options.paginationInitialPage);
-                                               }
-                                       });
-
-                                       return;
-                               } else {
-                                       self.rowManager.setData(self.options.data, false, true);
-                               }
-                       }
-
-                       if (self.options.paginationInitialPage) {
-                               self.modules.page.setPage(self.options.paginationInitialPage);
-                       }
-               } else {
-                       if (self.options.ajaxURL) {
-                               self.modules.page.setPage(self.options.paginationInitialPage).then(function () {}).catch(function () {});
-                       } else {
-                               self.rowManager.setData([], false, true);
-                       }
-               }
-       } else {
-               if (self.options.data.length) {
-                       self.rowManager.setData(self.options.data);
-               } else {
-                       if ((self.options.ajaxURL || self.options.ajaxURLGenerator) && self.modExists("ajax")) {
-                               self.modules.ajax.loadData(false, true).then(function () {}).catch(function () {});
-                       } else {
-                               self.rowManager.setData(self.options.data, false, true);
-                       }
-               }
-       }
-};
-
-//deconstructor
-Tabulator.prototype.destroy = function () {
-       var element = this.element;
-
-       Tabulator.prototype.comms.deregister(this); //deregister table from inderdevice communication
-
-       if (this.options.reactiveData && this.modExists("reactiveData", true)) {
-               this.modules.reactiveData.unwatchData();
-       }
-
-       //clear row data
-       this.rowManager.rows.forEach(function (row) {
-               row.wipe();
-       });
-
-       this.rowManager.rows = [];
-       this.rowManager.activeRows = [];
-       this.rowManager.displayRows = [];
-
-       //clear event bindings
-       if (this.options.autoResize && this.modExists("resizeTable")) {
-               this.modules.resizeTable.clearBindings();
-       }
-
-       if (this.modExists("keybindings")) {
-               this.modules.keybindings.clearBindings();
-       }
-
-       //clear DOM
-       while (element.firstChild) {
-               element.removeChild(element.firstChild);
-       }element.classList.remove("tabulator");
-};
-
-Tabulator.prototype._detectBrowser = function () {
-       var ua = navigator.userAgent || navigator.vendor || window.opera;
-
-       if (ua.indexOf("Trident") > -1) {
-               this.browser = "ie";
-               this.browserSlow = true;
-       } else if (ua.indexOf("Edge") > -1) {
-               this.browser = "edge";
-               this.browserSlow = true;
-       } else if (ua.indexOf("Firefox") > -1) {
-               this.browser = "firefox";
-               this.browserSlow = false;
-       } else {
-               this.browser = "other";
-               this.browserSlow = false;
-       }
-
-       this.browserMobile = /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(ua) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(ua.substr(0, 4));
-};
-
-////////////////// Data Handling //////////////////
-
-//block table redrawing
-Tabulator.prototype.blockRedraw = function () {
-       return this.rowManager.blockRedraw();
-};
-
-//restore table redrawing
-Tabulator.prototype.restoreRedraw = function () {
-       return this.rowManager.restoreRedraw();
-};
-
-//local data from local file
-Tabulator.prototype.setDataFromLocalFile = function (extensions) {
-       var _this18 = this;
-
-       return new Promise(function (resolve, reject) {
-               var input = document.createElement("input");
-               input.type = "file";
-               input.accept = extensions || ".json,application/json";
-
-               input.addEventListener("change", function (e) {
-                       var file = input.files[0],
-                           reader = new FileReader(),
-                           data;
-
-                       reader.readAsText(file);
-
-                       reader.onload = function (e) {
-
-                               try {
-                                       data = JSON.parse(reader.result);
-                               } catch (e) {
-                                       console.warn("File Load Error - File contents is invalid JSON", e);
-                                       reject(e);
-                                       return;
-                               }
-
-                               _this18._setData(data).then(function (data) {
-                                       resolve(data);
-                               }).catch(function (err) {
-                                       resolve(err);
-                               });
-                       };
-
-                       reader.onerror = function (e) {
-                               console.warn("File Load Error - Unable to read file");
-                               reject();
-                       };
-               });
-
-               input.click();
-       });
-};
-
-//load data
-Tabulator.prototype.setData = function (data, params, config) {
-       if (this.modExists("ajax")) {
-               this.modules.ajax.blockActiveRequest();
-       }
-
-       return this._setData(data, params, config, false, true);
-};
-
-Tabulator.prototype._setData = function (data, params, config, inPosition, columnsChanged) {
-       var self = this;
-
-       if (typeof data === "string") {
-               if (data.indexOf("{") == 0 || data.indexOf("[") == 0) {
-                       //data is a json encoded string
-                       return self.rowManager.setData(JSON.parse(data), inPosition, columnsChanged);
-               } else {
-
-                       if (self.modExists("ajax", true)) {
-                               if (params) {
-                                       self.modules.ajax.setParams(params);
-                               }
-
-                               if (config) {
-                                       self.modules.ajax.setConfig(config);
-                               }
-
-                               self.modules.ajax.setUrl(data);
-
-                               if (self.options.pagination == "remote" && self.modExists("page", true)) {
-                                       self.modules.page.reset(true, true);
-                                       return self.modules.page.setPage(1);
-                               } else {
-                                       //assume data is url, make ajax call to url to get data
-                                       return self.modules.ajax.loadData(inPosition, columnsChanged);
-                               }
-                       }
-               }
-       } else {
-               if (data) {
-                       //asume data is already an object
-                       return self.rowManager.setData(data, inPosition, columnsChanged);
-               } else {
-
-                       //no data provided, check if ajaxURL is present;
-                       if (self.modExists("ajax") && (self.modules.ajax.getUrl || self.options.ajaxURLGenerator)) {
-
-                               if (self.options.pagination == "remote" && self.modExists("page", true)) {
-                                       self.modules.page.reset(true, true);
-                                       return self.modules.page.setPage(1);
-                               } else {
-                                       return self.modules.ajax.loadData(inPosition, columnsChanged);
-                               }
-                       } else {
-                               //empty data
-                               return self.rowManager.setData([], inPosition, columnsChanged);
-                       }
-               }
-       }
-};
-
-//clear data
-Tabulator.prototype.clearData = function () {
-       if (this.modExists("ajax")) {
-               this.modules.ajax.blockActiveRequest();
-       }
-
-       this.rowManager.clearData();
-};
-
-//get table data array
-Tabulator.prototype.getData = function (active) {
-
-       if (active === true) {
-               console.warn("passing a boolean to the getData function is deprecated, you should now pass the string 'active'");
-               active = "active";
-       }
-
-       return this.rowManager.getData(active);
-};
-
-//get table data array count
-Tabulator.prototype.getDataCount = function (active) {
-
-       if (active === true) {
-               console.warn("passing a boolean to the getDataCount function is deprecated, you should now pass the string 'active'");
-               active = "active";
-       }
-
-       return this.rowManager.getDataCount(active);
-};
-
-//search for specific row components
-Tabulator.prototype.searchRows = function (field, type, value) {
-       if (this.modExists("filter", true)) {
-               return this.modules.filter.search("rows", field, type, value);
-       }
-};
-
-//search for specific data
-Tabulator.prototype.searchData = function (field, type, value) {
-       if (this.modExists("filter", true)) {
-               return this.modules.filter.search("data", field, type, value);
-       }
-};
-
-//get table html
-Tabulator.prototype.getHtml = function (visible, style, config) {
-       if (this.modExists("export", true)) {
-               return this.modules.export.getHtml(visible, style, config);
-       }
-};
-
-//get print html
-Tabulator.prototype.print = function (visible, style, config) {
-       if (this.modExists("print", true)) {
-               return this.modules.print.printFullscreen(visible, style, config);
-       }
-};
-
-//retrieve Ajax URL
-Tabulator.prototype.getAjaxUrl = function () {
-       if (this.modExists("ajax", true)) {
-               return this.modules.ajax.getUrl();
-       }
-};
-
-//replace data, keeping table in position with same sort
-Tabulator.prototype.replaceData = function (data, params, config) {
-       if (this.modExists("ajax")) {
-               this.modules.ajax.blockActiveRequest();
-       }
-
-       return this._setData(data, params, config, true);
-};
-
-//update table data
-Tabulator.prototype.updateData = function (data) {
-       var _this19 = this;
-
-       var self = this;
-       var responses = 0;
-
-       return new Promise(function (resolve, reject) {
-               if (_this19.modExists("ajax")) {
-                       _this19.modules.ajax.blockActiveRequest();
-               }
-
-               if (typeof data === "string") {
-                       data = JSON.parse(data);
-               }
-
-               if (data) {
-                       data.forEach(function (item) {
-                               var row = self.rowManager.findRow(item[self.options.index]);
-
-                               if (row) {
-                                       responses++;
-
-                                       row.updateData(item).then(function () {
-                                               responses--;
-
-                                               if (!responses) {
-                                                       resolve();
-                                               }
-                                       });
-                               }
-                       });
-               } else {
-                       console.warn("Update Error - No data provided");
-                       reject("Update Error - No data provided");
-               }
-       });
-};
-
-Tabulator.prototype.addData = function (data, pos, index) {
-       var _this20 = this;
-
-       return new Promise(function (resolve, reject) {
-               if (_this20.modExists("ajax")) {
-                       _this20.modules.ajax.blockActiveRequest();
-               }
-
-               if (typeof data === "string") {
-                       data = JSON.parse(data);
-               }
-
-               if (data) {
-                       _this20.rowManager.addRows(data, pos, index).then(function (rows) {
-                               var output = [];
-
-                               rows.forEach(function (row) {
-                                       output.push(row.getComponent());
-                               });
-
-                               resolve(output);
-                       });
-               } else {
-                       console.warn("Update Error - No data provided");
-                       reject("Update Error - No data provided");
-               }
-       });
-};
-
-//update table data
-Tabulator.prototype.updateOrAddData = function (data) {
-       var _this21 = this;
-
-       var self = this,
-           rows = [],
-           responses = 0;
-
-       return new Promise(function (resolve, reject) {
-               if (_this21.modExists("ajax")) {
-                       _this21.modules.ajax.blockActiveRequest();
-               }
-
-               if (typeof data === "string") {
-                       data = JSON.parse(data);
-               }
-
-               if (data) {
-                       data.forEach(function (item) {
-                               var row = self.rowManager.findRow(item[self.options.index]);
-
-                               responses++;
-
-                               if (row) {
-                                       row.updateData(item).then(function () {
-                                               responses--;
-                                               rows.push(row.getComponent());
-
-                                               if (!responses) {
-                                                       resolve(rows);
-                                               }
-                                       });
-                               } else {
-                                       self.rowManager.addRows(item).then(function (newRows) {
-                                               responses--;
-                                               rows.push(newRows[0].getComponent());
-
-                                               if (!responses) {
-                                                       resolve(rows);
-                                               }
-                                       });
-                               }
-                       });
-               } else {
-                       console.warn("Update Error - No data provided");
-                       reject("Update Error - No data provided");
-               }
-       });
-};
-
-//get row object
-Tabulator.prototype.getRow = function (index) {
-       var row = this.rowManager.findRow(index);
-
-       if (row) {
-               return row.getComponent();
-       } else {
-               console.warn("Find Error - No matching row found:", index);
-               return false;
-       }
-};
-
-//get row object
-Tabulator.prototype.getRowFromPosition = function (position, active) {
-       var row = this.rowManager.getRowFromPosition(position, active);
-
-       if (row) {
-               return row.getComponent();
-       } else {
-               console.warn("Find Error - No matching row found:", position);
-               return false;
-       }
-};
-
-//delete row from table
-Tabulator.prototype.deleteRow = function (index) {
-       var _this22 = this;
-
-       return new Promise(function (resolve, reject) {
-               var self = _this22,
-                   count = 0,
-                   successCount = 0,
-                   foundRows = [];
-
-               function doneCheck() {
-                       count++;
-
-                       if (count == index.length) {
-                               if (successCount) {
-                                       self.rowManager.reRenderInPosition();
-                                       resolve();
-                               }
-                       }
-               }
-
-               if (!Array.isArray(index)) {
-                       index = [index];
-               }
-
-               //find matching rows
-               index.forEach(function (item) {
-                       var row = _this22.rowManager.findRow(item, true);
-
-                       if (row) {
-                               foundRows.push(row);
-                       } else {
-                               console.warn("Delete Error - No matching row found:", item);
-                               reject("Delete Error - No matching row found");
-                               doneCheck();
-                       }
-               });
-
-               //sort rows into correct order to ensure smooth delete from table
-               foundRows.sort(function (a, b) {
-                       return _this22.rowManager.rows.indexOf(a) > _this22.rowManager.rows.indexOf(b) ? 1 : -1;
-               });
-
-               foundRows.forEach(function (row) {
-                       row.delete().then(function () {
-                               successCount++;
-                               doneCheck();
-                       }).catch(function (err) {
-                               doneCheck();
-                               reject(err);
-                       });
-               });
-       });
-};
-
-//add row to table
-Tabulator.prototype.addRow = function (data, pos, index) {
-       var _this23 = this;
-
-       return new Promise(function (resolve, reject) {
-               if (typeof data === "string") {
-                       data = JSON.parse(data);
-               }
-
-               _this23.rowManager.addRows(data, pos, index).then(function (rows) {
-                       //recalc column calculations if present
-                       if (_this23.modExists("columnCalcs")) {
-                               _this23.modules.columnCalcs.recalc(_this23.rowManager.activeRows);
-                       }
-
-                       resolve(rows[0].getComponent());
-               });
-       });
-};
-
-//update a row if it exitsts otherwise create it
-Tabulator.prototype.updateOrAddRow = function (index, data) {
-       var _this24 = this;
-
-       return new Promise(function (resolve, reject) {
-               var row = _this24.rowManager.findRow(index);
-
-               if (typeof data === "string") {
-                       data = JSON.parse(data);
-               }
-
-               if (row) {
-                       row.updateData(data).then(function () {
-                               //recalc column calculations if present
-                               if (_this24.modExists("columnCalcs")) {
-                                       _this24.modules.columnCalcs.recalc(_this24.rowManager.activeRows);
-                               }
-
-                               resolve(row.getComponent());
-                       }).catch(function (err) {
-                               reject(err);
-                       });
-               } else {
-                       row = _this24.rowManager.addRows(data).then(function (rows) {
-                               //recalc column calculations if present
-                               if (_this24.modExists("columnCalcs")) {
-                                       _this24.modules.columnCalcs.recalc(_this24.rowManager.activeRows);
-                               }
-
-                               resolve(rows[0].getComponent());
-                       }).catch(function (err) {
-                               reject(err);
-                       });
-               }
-       });
-};
-
-//update row data
-Tabulator.prototype.updateRow = function (index, data) {
-       var _this25 = this;
-
-       return new Promise(function (resolve, reject) {
-               var row = _this25.rowManager.findRow(index);
-
-               if (typeof data === "string") {
-                       data = JSON.parse(data);
-               }
-
-               if (row) {
-                       row.updateData(data).then(function () {
-                               resolve(row.getComponent());
-                       }).catch(function (err) {
-                               reject(err);
-                       });
-               } else {
-                       console.warn("Update Error - No matching row found:", index);
-                       reject("Update Error - No matching row found");
-               }
-       });
-};
-
-//scroll to row in DOM
-Tabulator.prototype.scrollToRow = function (index, position, ifVisible) {
-       var _this26 = this;
-
-       return new Promise(function (resolve, reject) {
-               var row = _this26.rowManager.findRow(index);
-
-               if (row) {
-                       _this26.rowManager.scrollToRow(row, position, ifVisible).then(function () {
-                               resolve();
-                       }).catch(function (err) {
-                               reject(err);
-                       });
-               } else {
-                       console.warn("Scroll Error - No matching row found:", index);
-                       reject("Scroll Error - No matching row found");
-               }
-       });
-};
-
-Tabulator.prototype.moveRow = function (from, to, after) {
-       var fromRow = this.rowManager.findRow(from);
-
-       if (fromRow) {
-               fromRow.moveToRow(to, after);
-       } else {
-               console.warn("Move Error - No matching row found:", from);
-       }
-};
-
-Tabulator.prototype.getRows = function (active) {
-
-       if (active === true) {
-               console.warn("passing a boolean to the getRows function is deprecated, you should now pass the string 'active'");
-               active = "active";
-       }
-
-       return this.rowManager.getComponents(active);
-};
-
-//get position of row in table
-Tabulator.prototype.getRowPosition = function (index, active) {
-       var row = this.rowManager.findRow(index);
-
-       if (row) {
-               return this.rowManager.getRowPosition(row, active);
-       } else {
-               console.warn("Position Error - No matching row found:", index);
-               return false;
-       }
-};
-
-//copy table data to clipboard
-Tabulator.prototype.copyToClipboard = function (selector) {
-       if (this.modExists("clipboard", true)) {
-               this.modules.clipboard.copy(selector);
-       }
-};
-
-/////////////// Column Functions  ///////////////
-
-Tabulator.prototype.setColumns = function (definition) {
-       this.columnManager.setColumns(definition);
-};
-
-Tabulator.prototype.getColumns = function (structured) {
-       return this.columnManager.getComponents(structured);
-};
-
-Tabulator.prototype.getColumn = function (field) {
-       var col = this.columnManager.findColumn(field);
-
-       if (col) {
-               return col.getComponent();
-       } else {
-               console.warn("Find Error - No matching column found:", field);
-               return false;
-       }
-};
-
-Tabulator.prototype.getColumnDefinitions = function () {
-       return this.columnManager.getDefinitionTree();
-};
-
-Tabulator.prototype.getColumnLayout = function () {
-       if (this.modExists("persistence", true)) {
-               return this.modules.persistence.parseColumns(this.columnManager.getColumns());
-       }
-};
-
-Tabulator.prototype.setColumnLayout = function (layout) {
-       if (this.modExists("persistence", true)) {
-               this.columnManager.setColumns(this.modules.persistence.mergeDefinition(this.options.columns, layout));
-               return true;
-       }
-       return false;
-};
-
-Tabulator.prototype.showColumn = function (field) {
-       var column = this.columnManager.findColumn(field);
-
-       if (column) {
-               column.show();
-
-               if (this.options.responsiveLayout && this.modExists("responsiveLayout", true)) {
-                       this.modules.responsiveLayout.update();
-               }
-       } else {
-               console.warn("Column Show Error - No matching column found:", field);
-               return false;
-       }
-};
-
-Tabulator.prototype.hideColumn = function (field) {
-       var column = this.columnManager.findColumn(field);
-
-       if (column) {
-               column.hide();
-
-               if (this.options.responsiveLayout && this.modExists("responsiveLayout", true)) {
-                       this.modules.responsiveLayout.update();
-               }
-       } else {
-               console.warn("Column Hide Error - No matching column found:", field);
-               return false;
-       }
-};
-
-Tabulator.prototype.toggleColumn = function (field) {
-       var column = this.columnManager.findColumn(field);
-
-       if (column) {
-               if (column.visible) {
-                       column.hide();
-               } else {
-                       column.show();
-               }
-       } else {
-               console.warn("Column Visibility Toggle Error - No matching column found:", field);
-               return false;
-       }
-};
-
-Tabulator.prototype.addColumn = function (definition, before, field) {
-       var _this27 = this;
-
-       return new Promise(function (resolve, reject) {
-               var column = _this27.columnManager.findColumn(field);
-
-               _this27.columnManager.addColumn(definition, before, column).then(function (column) {
-                       resolve(column.getComponent());
-               }).catch(function (err) {
-                       reject(err);
-               });
-       });
-};
-
-Tabulator.prototype.deleteColumn = function (field) {
-       var _this28 = this;
-
-       return new Promise(function (resolve, reject) {
-               var column = _this28.columnManager.findColumn(field);
-
-               if (column) {
-                       column.delete().then(function () {
-                               resolve();
-                       }).catch(function (err) {
-                               reject(err);
-                       });
-               } else {
-                       console.warn("Column Delete Error - No matching column found:", field);
-                       reject();
-               }
-       });
-};
-
-Tabulator.prototype.updateColumnDefinition = function (field, definition) {
-       var _this29 = this;
-
-       return new Promise(function (resolve, reject) {
-               var column = _this29.columnManager.findColumn(field);
-
-               if (column) {
-                       column.updateDefinition(definition).then(function (col) {
-                               resolve(col);
-                       }).catch(function (err) {
-                               reject(err);
-                       });
-               } else {
-                       console.warn("Column Update Error - No matching column found:", field);
-                       reject();
-               }
-       });
-};
-
-Tabulator.prototype.moveColumn = function (from, to, after) {
-       var fromColumn = this.columnManager.findColumn(from);
-       var toColumn = this.columnManager.findColumn(to);
-
-       if (fromColumn) {
-               if (toColumn) {
-                       this.columnManager.moveColumn(fromColumn, toColumn, after);
-               } else {
-                       console.warn("Move Error - No matching column found:", toColumn);
-               }
-       } else {
-               console.warn("Move Error - No matching column found:", from);
-       }
-};
-
-//scroll to column in DOM
-Tabulator.prototype.scrollToColumn = function (field, position, ifVisible) {
-       var _this30 = this;
-
-       return new Promise(function (resolve, reject) {
-               var column = _this30.columnManager.findColumn(field);
-
-               if (column) {
-                       _this30.columnManager.scrollToColumn(column, position, ifVisible).then(function () {
-                               resolve();
-                       }).catch(function (err) {
-                               reject(err);
-                       });
-               } else {
-                       console.warn("Scroll Error - No matching column found:", field);
-                       reject("Scroll Error - No matching column found");
-               }
-       });
-};
-
-//////////// Localization Functions  ////////////
-Tabulator.prototype.setLocale = function (locale) {
-       this.modules.localize.setLocale(locale);
-};
-
-Tabulator.prototype.getLocale = function () {
-       return this.modules.localize.getLocale();
-};
-
-Tabulator.prototype.getLang = function (locale) {
-       return this.modules.localize.getLang(locale);
-};
-
-//////////// General Public Functions ////////////
-
-//redraw list without updating data
-Tabulator.prototype.redraw = function (force) {
-       this.columnManager.redraw(force);
-       this.rowManager.redraw(force);
-};
-
-Tabulator.prototype.setHeight = function (height) {
-
-       if (this.rowManager.renderMode !== "classic") {
-               this.options.height = isNaN(height) ? height : height + "px";
-               this.element.style.height = this.options.height;
-               this.rowManager.setRenderMode();
-               this.rowManager.redraw();
-       } else {
-               console.warn("setHeight function is not available in classic render mode");
-       }
-};
-
-///////////////////// Sorting ////////////////////
-
-//trigger sort
-Tabulator.prototype.setSort = function (sortList, dir) {
-       if (this.modExists("sort", true)) {
-               this.modules.sort.setSort(sortList, dir);
-               this.rowManager.sorterRefresh();
-       }
-};
-
-Tabulator.prototype.getSorters = function () {
-       if (this.modExists("sort", true)) {
-               return this.modules.sort.getSort();
-       }
-};
-
-Tabulator.prototype.clearSort = function () {
-       if (this.modExists("sort", true)) {
-               this.modules.sort.clear();
-               this.rowManager.sorterRefresh();
-       }
-};
-
-///////////////////// Filtering ////////////////////
-
-//set standard filters
-Tabulator.prototype.setFilter = function (field, type, value, params) {
-       if (this.modExists("filter", true)) {
-               this.modules.filter.setFilter(field, type, value, params);
-               this.rowManager.filterRefresh();
-       }
-};
-
-//add filter to array
-Tabulator.prototype.addFilter = function (field, type, value, params) {
-       if (this.modExists("filter", true)) {
-               this.modules.filter.addFilter(field, type, value, params);
-               this.rowManager.filterRefresh();
-       }
-};
-
-//get all filters
-Tabulator.prototype.getFilters = function (all) {
-       if (this.modExists("filter", true)) {
-               return this.modules.filter.getFilters(all);
-       }
-};
-
-Tabulator.prototype.setHeaderFilterFocus = function (field) {
-       if (this.modExists("filter", true)) {
-               var column = this.columnManager.findColumn(field);
-
-               if (column) {
-                       this.modules.filter.setHeaderFilterFocus(column);
-               } else {
-                       console.warn("Column Filter Focus Error - No matching column found:", field);
-                       return false;
-               }
-       }
-};
-
-Tabulator.prototype.getHeaderFilterValue = function (field) {
-       if (this.modExists("filter", true)) {
-               var column = this.columnManager.findColumn(field);
-
-               if (column) {
-                       return this.modules.filter.getHeaderFilterValue(column);
-               } else {
-                       console.warn("Column Filter Error - No matching column found:", field);
-               }
-       }
-};
-
-Tabulator.prototype.setHeaderFilterValue = function (field, value) {
-       if (this.modExists("filter", true)) {
-               var column = this.columnManager.findColumn(field);
-
-               if (column) {
-                       this.modules.filter.setHeaderFilterValue(column, value);
-               } else {
-                       console.warn("Column Filter Error - No matching column found:", field);
-                       return false;
-               }
-       }
-};
-
-Tabulator.prototype.getHeaderFilters = function () {
-       if (this.modExists("filter", true)) {
-               return this.modules.filter.getHeaderFilters();
-       }
-};
-
-//remove filter from array
-Tabulator.prototype.removeFilter = function (field, type, value) {
-       if (this.modExists("filter", true)) {
-               this.modules.filter.removeFilter(field, type, value);
-               this.rowManager.filterRefresh();
-       }
-};
-
-//clear filters
-Tabulator.prototype.clearFilter = function (all) {
-       if (this.modExists("filter", true)) {
-               this.modules.filter.clearFilter(all);
-               this.rowManager.filterRefresh();
-       }
-};
-
-//clear header filters
-Tabulator.prototype.clearHeaderFilter = function () {
-       if (this.modExists("filter", true)) {
-               this.modules.filter.clearHeaderFilter();
-               this.rowManager.filterRefresh();
-       }
-};
-
-///////////////////// select ////////////////////
-Tabulator.prototype.selectRow = function (rows) {
-       if (this.modExists("selectRow", true)) {
-               if (rows === true) {
-                       console.warn("passing a boolean to the selectRowselectRow function is deprecated, you should now pass the string 'active'");
-                       rows = "active";
-               }
-               this.modules.selectRow.selectRows(rows);
-       }
-};
-
-Tabulator.prototype.deselectRow = function (rows) {
-       if (this.modExists("selectRow", true)) {
-               this.modules.selectRow.deselectRows(rows);
-       }
-};
-
-Tabulator.prototype.toggleSelectRow = function (row) {
-       if (this.modExists("selectRow", true)) {
-               this.modules.selectRow.toggleRow(row);
-       }
-};
-
-Tabulator.prototype.getSelectedRows = function () {
-       if (this.modExists("selectRow", true)) {
-               return this.modules.selectRow.getSelectedRows();
-       }
-};
-
-Tabulator.prototype.getSelectedData = function () {
-       if (this.modExists("selectRow", true)) {
-               return this.modules.selectRow.getSelectedData();
-       }
-};
-
-///////////////////// validation  ////////////////////
-Tabulator.prototype.getInvalidCells = function () {
-       if (this.modExists("validate", true)) {
-               return this.modules.validate.getInvalidCells();
-       }
-};
-
-Tabulator.prototype.clearCellValidation = function (cells) {
-       var _this31 = this;
-
-       if (this.modExists("validate", true)) {
-
-               if (!cells) {
-                       cells = this.modules.validate.getInvalidCells();
-               }
-
-               if (!Array.isArray(cells)) {
-                       cells = [cells];
-               }
-
-               cells.forEach(function (cell) {
-                       _this31.modules.validate.clearValidation(cell._getSelf());
-               });
-       }
-};
-
-Tabulator.prototype.validate = function (cells) {
-       var output = [];
-
-       //clear row data
-       this.rowManager.rows.forEach(function (row) {
-               var valid = row.validate();
-
-               if (valid !== true) {
-                       output = output.concat(valid);
-               }
-       });
-
-       return output.length ? output : true;
-};
-
-//////////// Pagination Functions  ////////////
-
-Tabulator.prototype.setMaxPage = function (max) {
-       if (this.options.pagination && this.modExists("page")) {
-               this.modules.page.setMaxPage(max);
-       } else {
-               return false;
-       }
-};
-
-Tabulator.prototype.setPage = function (page) {
-       if (this.options.pagination && this.modExists("page")) {
-               return this.modules.page.setPage(page);
-       } else {
-               return new Promise(function (resolve, reject) {
-                       reject();
-               });
-       }
-};
-
-Tabulator.prototype.setPageToRow = function (row) {
-       var _this32 = this;
-
-       return new Promise(function (resolve, reject) {
-               if (_this32.options.pagination && _this32.modExists("page")) {
-                       row = _this32.rowManager.findRow(row);
-
-                       if (row) {
-                               _this32.modules.page.setPageToRow(row).then(function () {
-                                       resolve();
-                               }).catch(function () {
-                                       reject();
-                               });
-                       } else {
-                               reject();
-                       }
-               } else {
-                       reject();
-               }
-       });
-};
-
-Tabulator.prototype.setPageSize = function (size) {
-       if (this.options.pagination && this.modExists("page")) {
-               this.modules.page.setPageSize(size);
-               this.modules.page.setPage(1).then(function () {}).catch(function () {});
-       } else {
-               return false;
-       }
-};
-
-Tabulator.prototype.getPageSize = function () {
-       if (this.options.pagination && this.modExists("page", true)) {
-               return this.modules.page.getPageSize();
-       }
-};
-
-Tabulator.prototype.previousPage = function () {
-       if (this.options.pagination && this.modExists("page")) {
-               this.modules.page.previousPage();
-       } else {
-               return false;
-       }
-};
-
-Tabulator.prototype.nextPage = function () {
-       if (this.options.pagination && this.modExists("page")) {
-               this.modules.page.nextPage();
-       } else {
-               return false;
-       }
-};
-
-Tabulator.prototype.getPage = function () {
-       if (this.options.pagination && this.modExists("page")) {
-               return this.modules.page.getPage();
-       } else {
-               return false;
-       }
-};
-
-Tabulator.prototype.getPageMax = function () {
-       if (this.options.pagination && this.modExists("page")) {
-               return this.modules.page.getPageMax();
-       } else {
-               return false;
-       }
-};
-
-///////////////// Grouping Functions ///////////////
-
-Tabulator.prototype.setGroupBy = function (groups) {
-       if (this.modExists("groupRows", true)) {
-               this.options.groupBy = groups;
-               this.modules.groupRows.initialize();
-               this.rowManager.refreshActiveData("display");
-
-               if (this.options.persistence && this.modExists("persistence", true) && this.modules.persistence.config.group) {
-                       this.modules.persistence.save("group");
-               }
-       } else {
-               return false;
-       }
-};
-
-Tabulator.prototype.setGroupStartOpen = function (values) {
-       if (this.modExists("groupRows", true)) {
-               this.options.groupStartOpen = values;
-               this.modules.groupRows.initialize();
-               if (this.options.groupBy) {
-                       this.rowManager.refreshActiveData("group");
-
-                       if (this.options.persistence && this.modExists("persistence", true) && this.modules.persistence.config.group) {
-                               this.modules.persistence.save("group");
-                       }
-               } else {
-                       console.warn("Grouping Update - cant refresh view, no groups have been set");
-               }
-       } else {
-               return false;
-       }
-};
-
-Tabulator.prototype.setGroupHeader = function (values) {
-       if (this.modExists("groupRows", true)) {
-               this.options.groupHeader = values;
-               this.modules.groupRows.initialize();
-               if (this.options.groupBy) {
-                       this.rowManager.refreshActiveData("group");
-
-                       if (this.options.persistence && this.modExists("persistence", true) && this.modules.persistence.config.group) {
-                               this.modules.persistence.save("group");
-                       }
-               } else {
-                       console.warn("Grouping Update - cant refresh view, no groups have been set");
-               }
-       } else {
-               return false;
-       }
-};
-
-Tabulator.prototype.getGroups = function (values) {
-       if (this.modExists("groupRows", true)) {
-               return this.modules.groupRows.getGroups(true);
-       } else {
-               return false;
-       }
-};
-
-// get grouped table data in the same format as getData()
-Tabulator.prototype.getGroupedData = function () {
-       if (this.modExists("groupRows", true)) {
-               return this.options.groupBy ? this.modules.groupRows.getGroupedData() : this.getData();
-       }
-};
-
-Tabulator.prototype.getEditedCells = function () {
-       if (this.modExists("edit", true)) {
-               return this.modules.edit.getEditedCells();
-       }
-};
-
-Tabulator.prototype.clearCellEdited = function (cells) {
-       var _this33 = this;
-
-       if (this.modExists("edit", true)) {
-
-               if (!cells) {
-                       cells = this.modules.edit.getEditedCells();
-               }
-
-               if (!Array.isArray(cells)) {
-                       cells = [cells];
-               }
-
-               cells.forEach(function (cell) {
-                       _this33.modules.edit.clearEdited(cell._getSelf());
-               });
-       }
-};
-
-///////////////// Column Calculation Functions ///////////////
-Tabulator.prototype.getCalcResults = function () {
-       if (this.modExists("columnCalcs", true)) {
-               return this.modules.columnCalcs.getResults();
-       } else {
-               return false;
-       }
-};
-
-Tabulator.prototype.recalc = function () {
-       if (this.modExists("columnCalcs", true)) {
-               this.modules.columnCalcs.recalcAll(this.rowManager.activeRows);
-       }
-};
-
-/////////////// Navigation Management //////////////
-
-Tabulator.prototype.navigatePrev = function () {
-       var cell = false;
-
-       if (this.modExists("edit", true)) {
-               cell = this.modules.edit.currentCell;
-
-               if (cell) {
-                       return cell.nav().prev();
-               }
-       }
-
-       return false;
-};
-
-Tabulator.prototype.navigateNext = function () {
-       var cell = false;
-
-       if (this.modExists("edit", true)) {
-               cell = this.modules.edit.currentCell;
-
-               if (cell) {
-                       return cell.nav().next();
-               }
-       }
-
-       return false;
-};
-
-Tabulator.prototype.navigateLeft = function () {
-       var cell = false;
-
-       if (this.modExists("edit", true)) {
-               cell = this.modules.edit.currentCell;
-
-               if (cell) {
-                       e.preventDefault();
-                       return cell.nav().left();
-               }
-       }
-
-       return false;
-};
-
-Tabulator.prototype.navigateRight = function () {
-       var cell = false;
-
-       if (this.modExists("edit", true)) {
-               cell = this.modules.edit.currentCell;
-
-               if (cell) {
-                       e.preventDefault();
-                       return cell.nav().right();
-               }
-       }
-
-       return false;
-};
-
-Tabulator.prototype.navigateUp = function () {
-       var cell = false;
-
-       if (this.modExists("edit", true)) {
-               cell = this.modules.edit.currentCell;
-
-               if (cell) {
-                       e.preventDefault();
-                       return cell.nav().up();
-               }
-       }
-
-       return false;
-};
-
-Tabulator.prototype.navigateDown = function () {
-       var cell = false;
-
-       if (this.modExists("edit", true)) {
-               cell = this.modules.edit.currentCell;
-
-               if (cell) {
-                       e.preventDefault();
-                       return cell.nav().down();
-               }
-       }
-
-       return false;
-};
-
-/////////////// History Management //////////////
-Tabulator.prototype.undo = function () {
-       if (this.options.history && this.modExists("history", true)) {
-               return this.modules.history.undo();
-       } else {
-               return false;
-       }
-};
-
-Tabulator.prototype.redo = function () {
-       if (this.options.history && this.modExists("history", true)) {
-               return this.modules.history.redo();
-       } else {
-               return false;
-       }
-};
-
-Tabulator.prototype.getHistoryUndoSize = function () {
-       if (this.options.history && this.modExists("history", true)) {
-               return this.modules.history.getHistoryUndoSize();
-       } else {
-               return false;
-       }
-};
-
-Tabulator.prototype.getHistoryRedoSize = function () {
-       if (this.options.history && this.modExists("history", true)) {
-               return this.modules.history.getHistoryRedoSize();
-       } else {
-               return false;
-       }
-};
-
-/////////////// Download Management //////////////
-
-Tabulator.prototype.download = function (type, filename, options, active) {
-       if (this.modExists("download", true)) {
-               this.modules.download.download(type, filename, options, active);
-       }
-};
-
-Tabulator.prototype.downloadToTab = function (type, filename, options, active) {
-       if (this.modExists("download", true)) {
-               this.modules.download.download(type, filename, options, active, true);
-       }
-};
-
-/////////// Inter Table Communications ///////////
-
-Tabulator.prototype.tableComms = function (table, module, action, data) {
-       this.modules.comms.receive(table, module, action, data);
-};
-
-////////////// Extension Management //////////////
-
-//object to hold module
-Tabulator.prototype.moduleBindings = {};
-
-//extend module
-Tabulator.prototype.extendModule = function (name, property, values) {
-
-       if (Tabulator.prototype.moduleBindings[name]) {
-               var source = Tabulator.prototype.moduleBindings[name].prototype[property];
-
-               if (source) {
-                       if ((typeof values === 'undefined' ? 'undefined' : _typeof(values)) == "object") {
-                               for (var key in values) {
-                                       source[key] = values[key];
-                               }
-                       } else {
-                               console.warn("Module Error - Invalid value type, it must be an object");
-                       }
-               } else {
-                       console.warn("Module Error - property does not exist:", property);
-               }
-       } else {
-               console.warn("Module Error - module does not exist:", name);
-       }
-};
-
-//add module to tabulator
-Tabulator.prototype.registerModule = function (name, module) {
-       var self = this;
-       Tabulator.prototype.moduleBindings[name] = module;
-};
-
-//ensure that module are bound to instantiated function
-Tabulator.prototype.bindModules = function () {
-       this.modules = {};
-
-       for (var name in Tabulator.prototype.moduleBindings) {
-               this.modules[name] = new Tabulator.prototype.moduleBindings[name](this);
-       }
-};
-
-//Check for module
-Tabulator.prototype.modExists = function (plugin, required) {
-       if (this.modules[plugin]) {
-               return true;
-       } else {
-               if (required) {
-                       console.error("Tabulator Module Not Installed: " + plugin);
-               }
-               return false;
-       }
-};
-
-Tabulator.prototype.helpers = {
-
-       elVisible: function elVisible(el) {
-               return !(el.offsetWidth <= 0 && el.offsetHeight <= 0);
-       },
-
-       elOffset: function elOffset(el) {
-               var box = el.getBoundingClientRect();
-
-               return {
-                       top: box.top + window.pageYOffset - document.documentElement.clientTop,
-                       left: box.left + window.pageXOffset - document.documentElement.clientLeft
-               };
-       },
-
-       deepClone: function deepClone(obj) {
-               var clone = Array.isArray(obj) ? [] : {};
-
-               for (var i in obj) {
-                       if (obj[i] != null && _typeof(obj[i]) === "object") {
-                               if (obj[i] instanceof Date) {
-                                       clone[i] = new Date(obj[i]);
-                               } else {
-                                       clone[i] = this.deepClone(obj[i]);
-                               }
-                       } else {
-                               clone[i] = obj[i];
-                       }
-               }
-               return clone;
-       }
-};
-
-Tabulator.prototype.comms = {
-       tables: [],
-       register: function register(table) {
-               Tabulator.prototype.comms.tables.push(table);
-       },
-       deregister: function deregister(table) {
-               var index = Tabulator.prototype.comms.tables.indexOf(table);
-
-               if (index > -1) {
-                       Tabulator.prototype.comms.tables.splice(index, 1);
-               }
-       },
-       lookupTable: function lookupTable(query, silent) {
-               var results = [],
-                   matches,
-                   match;
-
-               if (typeof query === "string") {
-                       matches = document.querySelectorAll(query);
-
-                       if (matches.length) {
-                               for (var i = 0; i < matches.length; i++) {
-                                       match = Tabulator.prototype.comms.matchElement(matches[i]);
-
-                                       if (match) {
-                                               results.push(match);
-                                       }
-                               }
-                       }
-               } else if (typeof HTMLElement !== "undefined" && query instanceof HTMLElement || query instanceof Tabulator) {
-                       match = Tabulator.prototype.comms.matchElement(query);
-
-                       if (match) {
-                               results.push(match);
-                       }
-               } else if (Array.isArray(query)) {
-                       query.forEach(function (item) {
-                               results = results.concat(Tabulator.prototype.comms.lookupTable(item));
-                       });
-               } else {
-                       if (!silent) {
-                               console.warn("Table Connection Error - Invalid Selector", query);
-                       }
-               }
-
-               return results;
-       },
-       matchElement: function matchElement(element) {
-               return Tabulator.prototype.comms.tables.find(function (table) {
-                       return element instanceof Tabulator ? table === element : table.element === element;
-               });
-       }
-};
-
-Tabulator.prototype.findTable = function (query) {
-       var results = Tabulator.prototype.comms.lookupTable(query, true);
-       return Array.isArray(results) && !results.length ? false : results;
-};
-
-var Layout = function Layout(table) {
-
-       this.table = table;
-
-       this.mode = null;
-};
-
-//initialize layout system
-
-Layout.prototype.initialize = function (layout) {
-
-       if (this.modes[layout]) {
-
-               this.mode = layout;
-       } else {
-
-               console.warn("Layout Error - invalid mode set, defaulting to 'fitData' : " + layout);
-
-               this.mode = 'fitData';
-       }
-
-       this.table.element.setAttribute("tabulator-layout", this.mode);
-};
-
-Layout.prototype.getMode = function () {
-
-       return this.mode;
-};
-
-//trigger table layout
-
-Layout.prototype.layout = function () {
-
-       this.modes[this.mode].call(this, this.table.columnManager.columnsByIndex);
-};
-
-//layout render functions
-
-Layout.prototype.modes = {
-
-       //resize columns to fit data they contain
-
-       "fitData": function fitData(columns) {
-
-               columns.forEach(function (column) {
-
-                       column.reinitializeWidth();
-               });
-
-               if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-                       this.table.modules.responsiveLayout.update();
-               }
-       },
-
-       //resize columns to fit data they contain and stretch row to fill table
-
-       "fitDataFill": function fitDataFill(columns) {
-
-               columns.forEach(function (column) {
-
-                       column.reinitializeWidth();
-               });
-
-               if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-                       this.table.modules.responsiveLayout.update();
-               }
-       },
-
-       //resize columns to fit data they contain
-
-       "fitDataTable": function fitDataTable(columns) {
-
-               columns.forEach(function (column) {
-
-                       column.reinitializeWidth();
-               });
-
-               if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-                       this.table.modules.responsiveLayout.update();
-               }
-       },
-
-       //resize columns to fit data the contain and stretch last column to fill table
-
-       "fitDataStretch": function fitDataStretch(columns) {
-               var _this34 = this;
-
-               var colsWidth = 0,
-                   tableWidth = this.table.rowManager.element.clientWidth,
-                   gap = 0,
-                   lastCol = false;
-
-               columns.forEach(function (column, i) {
-
-                       if (!column.widthFixed) {
-
-                               column.reinitializeWidth();
-                       }
-
-                       if (_this34.table.options.responsiveLayout ? column.modules.responsive.visible : column.visible) {
-
-                               lastCol = column;
-                       }
-
-                       if (column.visible) {
-
-                               colsWidth += column.getWidth();
-                       }
-               });
-
-               if (lastCol) {
-
-                       gap = tableWidth - colsWidth + lastCol.getWidth();
-
-                       if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-                               lastCol.setWidth(0);
-
-                               this.table.modules.responsiveLayout.update();
-                       }
-
-                       if (gap > 0) {
-
-                               lastCol.setWidth(gap);
-                       } else {
-
-                               lastCol.reinitializeWidth();
-                       }
-               } else {
-
-                       if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-                               this.table.modules.responsiveLayout.update();
-                       }
-               }
-       },
-
-       //resize columns to fit
-
-       "fitColumns": function fitColumns(columns) {
-
-               var self = this;
-
-               var totalWidth = self.table.element.clientWidth; //table element width
-
-               var fixedWidth = 0; //total width of columns with a defined width
-
-               var flexWidth = 0; //total width available to flexible columns
-
-               var flexGrowUnits = 0; //total number of widthGrow blocks accross all columns
-
-               var flexColWidth = 0; //desired width of flexible columns
-
-               var flexColumns = []; //array of flexible width columns
-
-               var fixedShrinkColumns = []; //array of fixed width columns that can shrink
-
-               var flexShrinkUnits = 0; //total number of widthShrink blocks accross all columns
-
-               var overflowWidth = 0; //horizontal overflow width
-
-               var gapFill = 0; //number of pixels to be added to final column to close and half pixel gaps
-
-
-               function calcWidth(width) {
-
-                       var colWidth;
-
-                       if (typeof width == "string") {
-
-                               if (width.indexOf("%") > -1) {
-
-                                       colWidth = totalWidth / 100 * parseInt(width);
-                               } else {
-
-                                       colWidth = parseInt(width);
-                               }
-                       } else {
-
-                               colWidth = width;
-                       }
-
-                       return colWidth;
-               }
-
-               //ensure columns resize to take up the correct amount of space
-
-               function scaleColumns(columns, freeSpace, colWidth, shrinkCols) {
-
-                       var oversizeCols = [],
-                           oversizeSpace = 0,
-                           remainingSpace = 0,
-                           nextColWidth = 0,
-                           gap = 0,
-                           changeUnits = 0,
-                           undersizeCols = [];
-
-                       function calcGrow(col) {
-
-                               return colWidth * (col.column.definition.widthGrow || 1);
-                       }
-
-                       function calcShrink(col) {
-
-                               return calcWidth(col.width) - colWidth * (col.column.definition.widthShrink || 0);
-                       }
-
-                       columns.forEach(function (col, i) {
-
-                               var width = shrinkCols ? calcShrink(col) : calcGrow(col);
-
-                               if (col.column.minWidth >= width) {
-
-                                       oversizeCols.push(col);
-                               } else {
-
-                                       undersizeCols.push(col);
-
-                                       changeUnits += shrinkCols ? col.column.definition.widthShrink || 1 : col.column.definition.widthGrow || 1;
-                               }
-                       });
-
-                       if (oversizeCols.length) {
-
-                               oversizeCols.forEach(function (col) {
-
-                                       oversizeSpace += shrinkCols ? col.width - col.column.minWidth : col.column.minWidth;
-
-                                       col.width = col.column.minWidth;
-                               });
-
-                               remainingSpace = freeSpace - oversizeSpace;
-
-                               nextColWidth = changeUnits ? Math.floor(remainingSpace / changeUnits) : remainingSpace;
-
-                               gap = remainingSpace - nextColWidth * changeUnits;
-
-                               gap += scaleColumns(undersizeCols, remainingSpace, nextColWidth, shrinkCols);
-                       } else {
-
-                               gap = changeUnits ? freeSpace - Math.floor(freeSpace / changeUnits) * changeUnits : freeSpace;
-
-                               undersizeCols.forEach(function (column) {
-
-                                       column.width = shrinkCols ? calcShrink(column) : calcGrow(column);
-                               });
-                       }
-
-                       return gap;
-               }
-
-               if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
-
-                       this.table.modules.responsiveLayout.update();
-               }
-
-               //adjust for vertical scrollbar if present
-
-               if (this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight) {
-
-                       totalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;
-               }
-
-               columns.forEach(function (column) {
-
-                       var width, minWidth, colWidth;
-
-                       if (column.visible) {
-
-                               width = column.definition.width;
-
-                               minWidth = parseInt(column.minWidth);
-
-                               if (width) {
-
-                                       colWidth = calcWidth(width);
-
-                                       fixedWidth += colWidth > minWidth ? colWidth : minWidth;
-
-                                       if (column.definition.widthShrink) {
-
-                                               fixedShrinkColumns.push({
-
-                                                       column: column,
-
-                                                       width: colWidth > minWidth ? colWidth : minWidth
-
-                                               });
-
-                                               flexShrinkUnits += column.definition.widthShrink;
-                                       }
-                               } else {
-
-                                       flexColumns.push({
-
-                                               column: column,
-
-                                               width: 0
-
-                                       });
-
-                                       flexGrowUnits += column.definition.widthGrow || 1;
-                               }
-                       }
-               });
-
-               //calculate available space
-
-               flexWidth = totalWidth - fixedWidth;
-
-               //calculate correct column size
-
-               flexColWidth = Math.floor(flexWidth / flexGrowUnits);
-
-               //generate column widths
-
-               var gapFill = scaleColumns(flexColumns, flexWidth, flexColWidth, false);
-
-               //increase width of last column to account for rounding errors
-
-               if (flexColumns.length && gapFill > 0) {
-
-                       flexColumns[flexColumns.length - 1].width += +gapFill;
-               }
-
-               //caculate space for columns to be shrunk into
-
-               flexColumns.forEach(function (col) {
-
-                       flexWidth -= col.width;
-               });
-
-               overflowWidth = Math.abs(gapFill) + flexWidth;
-
-               //shrink oversize columns if there is no available space
-
-               if (overflowWidth > 0 && flexShrinkUnits) {
-
-                       gapFill = scaleColumns(fixedShrinkColumns, overflowWidth, Math.floor(overflowWidth / flexShrinkUnits), true);
-               }
-
-               //decrease width of last column to account for rounding errors
-
-               if (fixedShrinkColumns.length) {
-
-                       fixedShrinkColumns[fixedShrinkColumns.length - 1].width -= gapFill;
-               }
-
-               flexColumns.forEach(function (col) {
-
-                       col.column.setWidth(col.width);
-               });
-
-               fixedShrinkColumns.forEach(function (col) {
-
-                       col.column.setWidth(col.width);
-               });
-       }
-
-};
-
-Tabulator.prototype.registerModule("layout", Layout);
-var Localize = function Localize(table) {
-       this.table = table; //hold Tabulator object
-       this.locale = "default"; //current locale
-       this.lang = false; //current language
-       this.bindings = {}; //update events to call when locale is changed
-};
-
-//set header placehoder
-Localize.prototype.setHeaderFilterPlaceholder = function (placeholder) {
-       this.langs.default.headerFilters.default = placeholder;
-};
-
-//set header filter placeholder by column
-Localize.prototype.setHeaderFilterColumnPlaceholder = function (column, placeholder) {
-       this.langs.default.headerFilters.columns[column] = placeholder;
-
-       if (this.lang && !this.lang.headerFilters.columns[column]) {
-               this.lang.headerFilters.columns[column] = placeholder;
-       }
-};
-
-//setup a lang description object
-Localize.prototype.installLang = function (locale, lang) {
-       if (this.langs[locale]) {
-               this._setLangProp(this.langs[locale], lang);
-       } else {
-               this.langs[locale] = lang;
-       }
-};
-
-Localize.prototype._setLangProp = function (lang, values) {
-       for (var key in values) {
-               if (lang[key] && _typeof(lang[key]) == "object") {
-                       this._setLangProp(lang[key], values[key]);
-               } else {
-                       lang[key] = values[key];
-               }
-       }
-};
-
-//set current locale
-Localize.prototype.setLocale = function (desiredLocale) {
-       var self = this;
-
-       desiredLocale = desiredLocale || "default";
-
-       //fill in any matching languge values
-       function traverseLang(trans, path) {
-               for (var prop in trans) {
-
-                       if (_typeof(trans[prop]) == "object") {
-                               if (!path[prop]) {
-                                       path[prop] = {};
-                               }
-                               traverseLang(trans[prop], path[prop]);
-                       } else {
-                               path[prop] = trans[prop];
-                       }
-               }
-       }
-
-       //determing correct locale to load
-       if (desiredLocale === true && navigator.language) {
-               //get local from system
-               desiredLocale = navigator.language.toLowerCase();
-       }
-
-       if (desiredLocale) {
-
-               //if locale is not set, check for matching top level locale else use default
-               if (!self.langs[desiredLocale]) {
-                       var prefix = desiredLocale.split("-")[0];
-
-                       if (self.langs[prefix]) {
-                               console.warn("Localization Error - Exact matching locale not found, using closest match: ", desiredLocale, prefix);
-                               desiredLocale = prefix;
-                       } else {
-                               console.warn("Localization Error - Matching locale not found, using default: ", desiredLocale);
-                               desiredLocale = "default";
-                       }
-               }
-       }
-
-       self.locale = desiredLocale;
-
-       //load default lang template
-       self.lang = Tabulator.prototype.helpers.deepClone(self.langs.default || {});
-
-       if (desiredLocale != "default") {
-               traverseLang(self.langs[desiredLocale], self.lang);
-       }
-
-       self.table.options.localized.call(self.table, self.locale, self.lang);
-
-       self._executeBindings();
-};
-
-//get current locale
-Localize.prototype.getLocale = function (locale) {
-       return self.locale;
-};
-
-//get lang object for given local or current if none provided
-Localize.prototype.getLang = function (locale) {
-       return locale ? this.langs[locale] : this.lang;
-};
-
-//get text for current locale
-Localize.prototype.getText = function (path, value) {
-       var path = value ? path + "|" + value : path,
-           pathArray = path.split("|"),
-           text = this._getLangElement(pathArray, this.locale);
-
-       // if(text === false){
-       //      console.warn("Localization Error - Matching localized text not found for given path: ", path);
-       // }
-
-       return text || "";
-};
-
-//traverse langs object and find localized copy
-Localize.prototype._getLangElement = function (path, locale) {
-       var self = this;
-       var root = self.lang;
-
-       path.forEach(function (level) {
-               var rootPath;
-
-               if (root) {
-                       rootPath = root[level];
-
-                       if (typeof rootPath != "undefined") {
-                               root = rootPath;
-                       } else {
-                               root = false;
-                       }
-               }
-       });
-
-       return root;
-};
-
-//set update binding
-Localize.prototype.bind = function (path, callback) {
-       if (!this.bindings[path]) {
-               this.bindings[path] = [];
-       }
-
-       this.bindings[path].push(callback);
-
-       callback(this.getText(path), this.lang);
-};
-
-//itterate through bindings and trigger updates
-Localize.prototype._executeBindings = function () {
-       var self = this;
-
-       var _loop = function _loop(path) {
-               self.bindings[path].forEach(function (binding) {
-                       binding(self.getText(path), self.lang);
-               });
-       };
-
-       for (var path in self.bindings) {
-               _loop(path);
-       }
-};
-
-//Localized text listings
-Localize.prototype.langs = {
-       "default": { //hold default locale text
-               "groups": {
-                       "item": "item",
-                       "items": "items"
-               },
-               "columns": {},
-               "ajax": {
-                       "loading": "Loading",
-                       "error": "Error"
-               },
-               "pagination": {
-                       "page_size": "Page Size",
-                       "page_title": "Show Page",
-                       "first": "First",
-                       "first_title": "First Page",
-                       "last": "Last",
-                       "last_title": "Last Page",
-                       "prev": "Prev",
-                       "prev_title": "Prev Page",
-                       "next": "Next",
-                       "next_title": "Next Page",
-                       "all": "All"
-               },
-               "headerFilters": {
-                       "default": "filter column...",
-                       "columns": {}
-               }
-       }
-};
-
-Tabulator.prototype.registerModule("localize", Localize);
-var Comms = function Comms(table) {
-       this.table = table;
-};
-
-Comms.prototype.getConnections = function (selectors) {
-       var self = this,
-           connections = [],
-           connection;
-
-       connection = Tabulator.prototype.comms.lookupTable(selectors);
-
-       connection.forEach(function (con) {
-               if (self.table !== con) {
-                       connections.push(con);
-               }
-       });
-
-       return connections;
-};
-
-Comms.prototype.send = function (selectors, module, action, data) {
-       var self = this,
-           connections = this.getConnections(selectors);
-
-       connections.forEach(function (connection) {
-               connection.tableComms(self.table.element, module, action, data);
-       });
-
-       if (!connections.length && selectors) {
-               console.warn("Table Connection Error - No tables matching selector found", selectors);
-       }
-};
-
-Comms.prototype.receive = function (table, module, action, data) {
-       if (this.table.modExists(module)) {
-               return this.table.modules[module].commsReceived(table, action, data);
-       } else {
-               console.warn("Inter-table Comms Error - no such module:", module);
-       }
-};
-
-Tabulator.prototype.registerModule("comms", Comms);
\ No newline at end of file
diff --git a/app/static/vendors/tabulator/js/tabulator_core.min.js b/app/static/vendors/tabulator/js/tabulator_core.min.js
deleted file mode 100644 (file)
index 92522ab..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-/* Tabulator v4.7.0 (c) Oliver Folkerd */
-"use strict";var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};Array.prototype.findIndex||Object.defineProperty(Array.prototype,"findIndex",{value:function(t){if(null==this)throw new TypeError('"this" is null or not defined');var e=Object(this),o=e.length>>>0;if("function"!=typeof t)throw new TypeError("predicate must be a function");for(var i=arguments[1],n=0;n<o;){var l=e[n];if(t.call(i,l,n,e))return n;n++}return-1}}),Array.prototype.find||Object.defineProperty(Array.prototype,"find",{value:function(t){if(null==this)throw new TypeError('"this" is null or not defined');var e=Object(this),o=e.length>>>0;if("function"!=typeof t)throw new TypeError("predicate must be a function");for(var i=arguments[1],n=0;n<o;){var l=e[n];if(t.call(i,l,n,e))return l;n++}}}),String.prototype.includes||(String.prototype.includes=function(t,e){if(t instanceof RegExp)throw TypeError("first argument must not be a RegExp");return void 0===e&&(e=0),-1!==this.indexOf(t,e)}),Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{value:function(t,e){if(null==this)throw new TypeError('"this" is null or not defined');var o=Object(this),i=o.length>>>0;if(0===i)return!1;for(var n=0|e,l=Math.max(n>=0?n:i-Math.abs(n),0);l<i;){if(function(t,e){return t===e||"number"==typeof t&&"number"==typeof e&&isNaN(t)&&isNaN(e)}(o[l],t))return!0;l++}return!1}}),"function"!=typeof Object.assign&&Object.defineProperty(Object,"assign",{value:function(t,e){if(null===t||void 0===t)throw new TypeError("Cannot convert undefined or null to object");for(var o=Object(t),i=1;i<arguments.length;i++){var n=arguments[i];if(null!==n&&void 0!==n)for(var l in n)Object.prototype.hasOwnProperty.call(n,l)&&(o[l]=n[l])}return o},writable:!0,configurable:!0});var ColumnManager=function(t){this.table=t,this.blockHozScrollEvent=!1,this.headersElement=this.createHeadersElement(),this.element=this.createHeaderElement(),this.rowManager=null,this.columns=[],this.columnsByIndex=[],this.columnsByField={},this.scrollLeft=0,this.element.insertBefore(this.headersElement,this.element.firstChild)};ColumnManager.prototype.createHeadersElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-headers"),t},ColumnManager.prototype.createHeaderElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-header"),this.table.options.headerVisible||t.classList.add("tabulator-header-hidden"),t},ColumnManager.prototype.initialize=function(){},ColumnManager.prototype.setRowManager=function(t){this.rowManager=t},ColumnManager.prototype.getElement=function(){return this.element},ColumnManager.prototype.getHeadersElement=function(){return this.headersElement},ColumnManager.prototype.scrollHorizontal=function(t){var e=0,o=this.element.scrollWidth-this.table.element.clientWidth;this.element.scrollLeft=t,t>o?(e=t-o,this.element.style.marginLeft=-e+"px"):this.element.style.marginLeft=0,this.scrollLeft=t,this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.scrollHorizontal()},ColumnManager.prototype.generateColumnsFromRowData=function(t){var e,o,i=[];if(t&&t.length){e=t[0];for(var n in e){var l={field:n,title:n},s=e[n];switch(void 0===s?"undefined":_typeof(s)){case"undefined":o="string";break;case"boolean":o="boolean";break;case"object":o=Array.isArray(s)?"array":"string";break;default:o=isNaN(s)||""===s?s.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)?"alphanum":"string":"number"}l.sorter=o,i.push(l)}this.table.options.columns=i,this.setColumns(this.table.options.columns)}},ColumnManager.prototype.setColumns=function(t,e){for(var o=this;o.headersElement.firstChild;)o.headersElement.removeChild(o.headersElement.firstChild);o.columns=[],o.columnsByIndex=[],o.columnsByField={},o.table.modExists("frozenColumns")&&o.table.modules.frozenColumns.reset(),t.forEach(function(t,e){o._addColumn(t)}),o._reIndexColumns(),o.table.options.responsiveLayout&&o.table.modExists("responsiveLayout",!0)&&o.table.modules.responsiveLayout.initialize(),o.redraw(!0)},ColumnManager.prototype._addColumn=function(t,e,o){var i=new Column(t,this),n=i.getElement(),l=o?this.findColumnIndex(o):o;if(o&&l>-1){var s=this.columns.indexOf(o.getTopColumn()),a=o.getElement();e?(this.columns.splice(s,0,i),a.parentNode.insertBefore(n,a)):(this.columns.splice(s+1,0,i),a.parentNode.insertBefore(n,a.nextSibling))}else e?(this.columns.unshift(i),this.headersElement.insertBefore(i.getElement(),this.headersElement.firstChild)):(this.columns.push(i),this.headersElement.appendChild(i.getElement())),i.columnRendered();return i},ColumnManager.prototype.registerColumnField=function(t){t.definition.field&&(this.columnsByField[t.definition.field]=t)},ColumnManager.prototype.registerColumnPosition=function(t){this.columnsByIndex.push(t)},ColumnManager.prototype._reIndexColumns=function(){this.columnsByIndex=[],this.columns.forEach(function(t){t.reRegisterPosition()})},ColumnManager.prototype._verticalAlignHeaders=function(){var t=this,e=0;t.columns.forEach(function(t){var o;t.clearVerticalAlign(),(o=t.getHeight())>e&&(e=o)}),t.columns.forEach(function(o){o.verticalAlign(t.table.options.columnHeaderVertAlign,e)}),t.rowManager.adjustTableSize()},ColumnManager.prototype.findColumn=function(t){var e=this;if("object"!=(void 0===t?"undefined":_typeof(t)))return this.columnsByField[t]||!1;if(t instanceof Column)return t;if(t instanceof ColumnComponent)return t._getSelf()||!1;if("undefined"!=typeof HTMLElement&&t instanceof HTMLElement){return e.columns.find(function(e){return e.element===t})||!1}return!1},ColumnManager.prototype.getColumnByField=function(t){return this.columnsByField[t]},ColumnManager.prototype.getColumnsByFieldRoot=function(t){var e=this,o=[];return Object.keys(this.columnsByField).forEach(function(i){i.split(".")[0]===t&&o.push(e.columnsByField[i])}),o},ColumnManager.prototype.getColumnByIndex=function(t){return this.columnsByIndex[t]},ColumnManager.prototype.getFirstVisibileColumn=function(t){var t=this.columnsByIndex.findIndex(function(t){return t.visible});return t>-1&&this.columnsByIndex[t]},ColumnManager.prototype.getColumns=function(){return this.columns},ColumnManager.prototype.findColumnIndex=function(t){return this.columnsByIndex.findIndex(function(e){return t===e})},ColumnManager.prototype.getRealColumns=function(){return this.columnsByIndex},ColumnManager.prototype.traverse=function(t){this.columnsByIndex.forEach(function(e,o){t(e,o)})},ColumnManager.prototype.getDefinitions=function(t){var e=this,o=[];return e.columnsByIndex.forEach(function(e){(!t||t&&e.visible)&&o.push(e.getDefinition())}),o},ColumnManager.prototype.getDefinitionTree=function(){var t=this,e=[];return t.columns.forEach(function(t){e.push(t.getDefinition(!0))}),e},ColumnManager.prototype.getComponents=function(t){var e=this,o=[];return(t?e.columns:e.columnsByIndex).forEach(function(t){o.push(t.getComponent())}),o},ColumnManager.prototype.getWidth=function(){var t=0;return this.columnsByIndex.forEach(function(e){e.visible&&(t+=e.getWidth())}),t},ColumnManager.prototype.moveColumn=function(t,e,o){this.moveColumnActual(t,e,o),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),e.element.parentNode.insertBefore(t.element,e.element),o&&e.element.parentNode.insertBefore(e.element,t.element),this._verticalAlignHeaders(),this.table.rowManager.reinitialize()},ColumnManager.prototype.moveColumnActual=function(t,e,o){t.parent.isGroup?this._moveColumnInArray(t.parent.columns,t,e,o):this._moveColumnInArray(this.columns,t,e,o),this._moveColumnInArray(this.columnsByIndex,t,e,o,!0),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.table.options.columnMoved&&this.table.options.columnMoved.call(this.table,t.getComponent(),this.table.columnManager.getComponents()),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.columns&&this.table.modules.persistence.save("columns")},ColumnManager.prototype._moveColumnInArray=function(t,e,o,i,n){var l,s=t.indexOf(e);s>-1&&(t.splice(s,1),l=t.indexOf(o),l>-1?i&&(l+=1):l=s,t.splice(l,0,e),n&&this.table.rowManager.rows.forEach(function(t){if(t.cells.length){var e=t.cells.splice(s,1)[0];t.cells.splice(l,0,e)}}))},ColumnManager.prototype.scrollToColumn=function(t,e,o){var i=this,n=0,l=0,s=0,a=t.getElement();return new Promise(function(r,u){if(void 0===e&&(e=i.table.options.scrollToColumnPosition),void 0===o&&(o=i.table.options.scrollToColumnIfVisible),t.visible){switch(e){case"middle":case"center":s=-i.element.clientWidth/2;break;case"right":s=a.clientWidth-i.headersElement.clientWidth}if(!o&&(l=a.offsetLeft)>0&&l+a.offsetWidth<i.element.clientWidth)return!1;n=a.offsetLeft+i.element.scrollLeft+s,n=Math.max(Math.min(n,i.table.rowManager.element.scrollWidth-i.table.rowManager.element.clientWidth),0),i.table.rowManager.scrollHorizontal(n),i.scrollHorizontal(n),r()}else console.warn("Scroll Error - Column not visible"),u("Scroll Error - Column not visible")})},ColumnManager.prototype.generateCells=function(t){var e=this,o=[];return e.columnsByIndex.forEach(function(e){o.push(e.generateCell(t))}),o},ColumnManager.prototype.getFlexBaseWidth=function(){var t=this,e=t.table.element.clientWidth,o=0;return t.rowManager.element.scrollHeight>t.rowManager.element.clientHeight&&(e-=t.rowManager.element.offsetWidth-t.rowManager.element.clientWidth),this.columnsByIndex.forEach(function(i){var n,l,s;i.visible&&(n=i.definition.width||0,l=void 0===i.minWidth?t.table.options.columnMinWidth:parseInt(i.minWidth),s="string"==typeof n?n.indexOf("%")>-1?e/100*parseInt(n):parseInt(n):n,o+=s>l?s:l)}),o},ColumnManager.prototype.addColumn=function(t,e,o){var i=this;return new Promise(function(n,l){var s=i._addColumn(t,e,o);i._reIndexColumns(),i.table.options.responsiveLayout&&i.table.modExists("responsiveLayout",!0)&&i.table.modules.responsiveLayout.initialize(),i.table.modExists("columnCalcs")&&i.table.modules.columnCalcs.recalc(i.table.rowManager.activeRows),i.redraw(),"fitColumns"!=i.table.modules.layout.getMode()&&s.reinitializeWidth(),i._verticalAlignHeaders(),i.table.rowManager.reinitialize(),n(s)})},ColumnManager.prototype.deregisterColumn=function(t){var e,o=t.getField();o&&delete this.columnsByField[o],e=this.columnsByIndex.indexOf(t),e>-1&&this.columnsByIndex.splice(e,1),e=this.columns.indexOf(t),e>-1&&this.columns.splice(e,1),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.redraw()},ColumnManager.prototype.redraw=function(t){t&&(Tabulator.prototype.helpers.elVisible(this.element)&&this._verticalAlignHeaders(),this.table.rowManager.resetScroll(),this.table.rowManager.reinitialize()),["fitColumns","fitDataStretch"].indexOf(this.table.modules.layout.getMode())>-1?this.table.modules.layout.layout():t?this.table.modules.layout.layout():this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout(),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),t&&(this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.columns&&this.table.modules.persistence.save("columns"),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.redraw()),this.table.footerManager.redraw()};var ColumnComponent=function(t){this._column=t,this.type="ColumnComponent"};ColumnComponent.prototype.getElement=function(){return this._column.getElement()},ColumnComponent.prototype.getDefinition=function(){return this._column.getDefinition()},ColumnComponent.prototype.getField=function(){return this._column.getField()},ColumnComponent.prototype.getCells=function(){var t=[];return this._column.cells.forEach(function(e){t.push(e.getComponent())}),t},ColumnComponent.prototype.getVisibility=function(){return console.warn("getVisibility function is deprecated, you should now use the isVisible function"),this._column.visible},ColumnComponent.prototype.isVisible=function(){return this._column.visible},ColumnComponent.prototype.show=function(){this._column.isGroup?this._column.columns.forEach(function(t){t.show()}):this._column.show()},ColumnComponent.prototype.hide=function(){this._column.isGroup?this._column.columns.forEach(function(t){t.hide()}):this._column.hide()},ColumnComponent.prototype.toggle=function(){this._column.visible?this.hide():this.show()},ColumnComponent.prototype.delete=function(){return this._column.delete()},ColumnComponent.prototype.getSubColumns=function(){var t=[];return this._column.columns.length&&this._column.columns.forEach(function(e){t.push(e.getComponent())}),t},ColumnComponent.prototype.getParentColumn=function(){return this._column.parent instanceof Column&&this._column.parent.getComponent()},ColumnComponent.prototype._getSelf=function(){return this._column},ColumnComponent.prototype.scrollTo=function(){return this._column.table.columnManager.scrollToColumn(this._column)},ColumnComponent.prototype.getTable=function(){return this._column.table},ColumnComponent.prototype.headerFilterFocus=function(){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.setHeaderFilterFocus(this._column)},ColumnComponent.prototype.reloadHeaderFilter=function(){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.reloadHeaderFilter(this._column)},ColumnComponent.prototype.getHeaderFilterValue=function(){if(this._column.table.modExists("filter",!0))return this._column.table.modules.filter.getHeaderFilterValue(this._column)},ColumnComponent.prototype.setHeaderFilterValue=function(t){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.setHeaderFilterValue(this._column,t)},ColumnComponent.prototype.move=function(t,e){var o=this._column.table.columnManager.findColumn(t);o?this._column.table.columnManager.moveColumn(this._column,o,e):console.warn("Move Error - No matching column found:",o)},ColumnComponent.prototype.getNextColumn=function(){var t=this._column.nextColumn();return!!t&&t.getComponent()},ColumnComponent.prototype.getPrevColumn=function(){var t=this._column.prevColumn();return!!t&&t.getComponent()},ColumnComponent.prototype.updateDefinition=function(t){return this._column.updateDefinition(t)},ColumnComponent.prototype.getWidth=function(){return this._column.getWidth()},ColumnComponent.prototype.setWidth=function(t){return!0===t?this._column.reinitializeWidth(!0):this._column.setWidth(t)},ColumnComponent.prototype.validate=function(){return this._column.validate()};var Column=function t(e,o){var i=this;this.table=o.table,this.definition=e,this.parent=o,this.type="column",this.columns=[],this.cells=[],this.element=this.createElement(),this.contentElement=!1,this.titleElement=!1,this.groupElement=this.createGroupElement(),this.isGroup=!1,this.tooltip=!1,this.hozAlign="",this.vertAlign="",this.field="",this.fieldStructure="",this.getFieldValue="",this.setFieldValue="",this.titleFormatterRendered=!1,this.setField(this.definition.field),this.table.options.invalidOptionWarnings&&this.checkDefinition(),this.modules={},this.cellEvents={cellClick:!1,cellDblClick:!1,cellContext:!1,cellTap:!1,cellDblTap:!1,cellTapHold:!1,cellMouseEnter:!1,cellMouseLeave:!1,cellMouseOver:!1,cellMouseOut:!1,cellMouseMove:!1},this.width=null,this.widthStyled="",this.minWidth=null,this.minWidthStyled="",this.widthFixed=!1,this.visible=!0,this.component=null,this._mapDepricatedFunctionality(),e.columns?(this.isGroup=!0,e.columns.forEach(function(e,o){var n=new t(e,i);i.attachColumn(n)}),i.checkColumnVisibility()):o.registerColumnField(this),e.rowHandle&&!1!==this.table.options.movableRows&&this.table.modExists("moveRow")&&this.table.modules.moveRow.setHandle(!0),this._buildHeader(),this.bindModuleColumns()};Column.prototype.createElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-col"),t.setAttribute("role","columnheader"),t.setAttribute("aria-sort","none"),t},Column.prototype.createGroupElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-col-group-cols"),t},Column.prototype.checkDefinition=function(){var t=this;Object.keys(this.definition).forEach(function(e){-1===t.defaultOptionList.indexOf(e)&&console.warn("Invalid column definition option in '"+(t.field||t.definition.title)+"' column:",e)})},Column.prototype.setField=function(t){this.field=t,this.fieldStructure=t?this.table.options.nestedFieldSeparator?t.split(this.table.options.nestedFieldSeparator):[t]:[],this.getFieldValue=this.fieldStructure.length>1?this._getNestedData:this._getFlatData,this.setFieldValue=this.fieldStructure.length>1?this._setNestedData:this._setFlatData},Column.prototype.registerColumnPosition=function(t){this.parent.registerColumnPosition(t)},Column.prototype.registerColumnField=function(t){this.parent.registerColumnField(t)},Column.prototype.reRegisterPosition=function(){this.isGroup?this.columns.forEach(function(t){t.reRegisterPosition()}):this.registerColumnPosition(this)},Column.prototype._mapDepricatedFunctionality=function(){void 0!==this.definition.hideInHtml&&(this.definition.htmlOutput=!this.definition.hideInHtml,console.warn("hideInHtml column definition property is deprecated, you should now use htmlOutput")),void 0!==this.definition.align&&(this.definition.hozAlign=this.definition.align,console.warn("align column definition property is deprecated, you should now use hozAlign")),void 0!==this.definition.downloadTitle&&(this.definition.titleDownload=this.definition.downloadTitle,console.warn("downloadTitle definition property is deprecated, you should now use titleDownload"))},Column.prototype.setTooltip=function(){var t=this,e=t.definition,o=e.headerTooltip||!1===e.tooltip?e.headerTooltip:t.table.options.tooltipsHeader;o?!0===o?e.field?t.table.modules.localize.bind("columns|"+e.field,function(o){t.element.setAttribute("title",o||e.title)}):t.element.setAttribute("title",e.title):("function"==typeof o&&!1===(o=o(t.getComponent()))&&(o=""),t.element.setAttribute("title",o)):t.element.setAttribute("title","")},Column.prototype._buildHeader=function(){for(var t=this,e=t.definition;t.element.firstChild;)t.element.removeChild(t.element.firstChild);e.headerVertical&&(t.element.classList.add("tabulator-col-vertical"),"flip"===e.headerVertical&&t.element.classList.add("tabulator-col-vertical-flip")),t.contentElement=t._bindEvents(),t.contentElement=t._buildColumnHeaderContent(),t.element.appendChild(t.contentElement),t.isGroup?t._buildGroupHeader():t._buildColumnHeader(),t.setTooltip(),t.table.options.resizableColumns&&t.table.modExists("resizeColumns")&&t.table.modules.resizeColumns.initializeColumn("header",t,t.element),e.headerFilter&&t.table.modExists("filter")&&t.table.modExists("edit")&&(void 0!==e.headerFilterPlaceholder&&e.field&&t.table.modules.localize.setHeaderFilterColumnPlaceholder(e.field,e.headerFilterPlaceholder),t.table.modules.filter.initializeColumn(t)),t.table.modExists("frozenColumns")&&t.table.modules.frozenColumns.initializeColumn(t),t.table.options.movableColumns&&!t.isGroup&&t.table.modExists("moveColumn")&&t.table.modules.moveColumn.initializeColumn(t),(e.topCalc||e.bottomCalc)&&t.table.modExists("columnCalcs")&&t.table.modules.columnCalcs.initializeColumn(t),t.table.modExists("persistence")&&t.table.modules.persistence.config.columns&&t.table.modules.persistence.initializeColumn(t),t.element.addEventListener("mouseenter",function(e){t.setTooltip()})},Column.prototype._bindEvents=function(){var t,e,o,i=this,n=i.definition;"function"==typeof n.headerClick&&i.element.addEventListener("click",function(t){n.headerClick(t,i.getComponent())}),"function"==typeof n.headerDblClick&&i.element.addEventListener("dblclick",function(t){n.headerDblClick(t,i.getComponent())}),"function"==typeof n.headerContext&&i.element.addEventListener("contextmenu",function(t){n.headerContext(t,i.getComponent())}),"function"==typeof n.headerTap&&(o=!1,i.element.addEventListener("touchstart",function(t){o=!0},{passive:!0}),i.element.addEventListener("touchend",function(t){o&&n.headerTap(t,i.getComponent()),o=!1})),"function"==typeof n.headerDblTap&&(t=null,i.element.addEventListener("touchend",function(e){t?(clearTimeout(t),t=null,n.headerDblTap(e,i.getComponent())):t=setTimeout(function(){clearTimeout(t),t=null},300)})),"function"==typeof n.headerTapHold&&(e=null,i.element.addEventListener("touchstart",function(t){clearTimeout(e),e=setTimeout(function(){clearTimeout(e),e=null,o=!1,n.headerTapHold(t,i.getComponent())},1e3)},{passive:!0}),i.element.addEventListener("touchend",function(t){clearTimeout(e),e=null})),"function"==typeof n.cellClick&&(i.cellEvents.cellClick=n.cellClick),"function"==typeof n.cellDblClick&&(i.cellEvents.cellDblClick=n.cellDblClick),"function"==typeof n.cellContext&&(i.cellEvents.cellContext=n.cellContext),"function"==typeof n.cellMouseEnter&&(i.cellEvents.cellMouseEnter=n.cellMouseEnter),"function"==typeof n.cellMouseLeave&&(i.cellEvents.cellMouseLeave=n.cellMouseLeave),"function"==typeof n.cellMouseOver&&(i.cellEvents.cellMouseOver=n.cellMouseOver),"function"==typeof n.cellMouseOut&&(i.cellEvents.cellMouseOut=n.cellMouseOut),"function"==typeof n.cellMouseMove&&(i.cellEvents.cellMouseMove=n.cellMouseMove),"function"==typeof n.cellTap&&(i.cellEvents.cellTap=n.cellTap),"function"==typeof n.cellDblTap&&(i.cellEvents.cellDblTap=n.cellDblTap),"function"==typeof n.cellTapHold&&(i.cellEvents.cellTapHold=n.cellTapHold),"function"==typeof n.cellEdited&&(i.cellEvents.cellEdited=n.cellEdited),"function"==typeof n.cellEditing&&(i.cellEvents.cellEditing=n.cellEditing),"function"==typeof n.cellEditCancelled&&(i.cellEvents.cellEditCancelled=n.cellEditCancelled)},Column.prototype._buildColumnHeader=function(){var t=this,e=t.definition,o=t.table;if(o.modExists("sort")&&o.modules.sort.initializeColumn(t,t.contentElement),(e.headerContextMenu||e.headerMenu)&&o.modExists("menu")&&o.modules.menu.initializeColumnHeader(t),o.modExists("format")&&o.modules.format.initializeColumn(t),void 0!==e.editor&&o.modExists("edit")&&o.modules.edit.initializeColumn(t),void 0!==e.validator&&o.modExists("validate")&&o.modules.validate.initializeColumn(t),o.modExists("mutator")&&o.modules.mutator.initializeColumn(t),o.modExists("accessor")&&o.modules.accessor.initializeColumn(t),_typeof(o.options.responsiveLayout)&&o.modExists("responsiveLayout")&&o.modules.responsiveLayout.initializeColumn(t),void 0!==e.visible&&(e.visible?t.show(!0):t.hide(!0)),e.cssClass){e.cssClass.split(" ").forEach(function(e){t.element.classList.add(e)})}e.field&&this.element.setAttribute("tabulator-field",e.field),t.setMinWidth(void 0===e.minWidth?t.table.options.columnMinWidth:parseInt(e.minWidth)),t.reinitializeWidth(),t.tooltip=t.definition.tooltip||!1===t.definition.tooltip?t.definition.tooltip:t.table.options.tooltips,t.hozAlign=void 0===t.definition.hozAlign?t.table.options.cellHozAlign:t.definition.hozAlign,t.vertAlign=void 0===t.definition.vertAlign?t.table.options.cellVertAlign:t.definition.vertAlign},Column.prototype._buildColumnHeaderContent=function(){var t=(this.definition,this.table,document.createElement("div"));return t.classList.add("tabulator-col-content"),this.titleElement=this._buildColumnHeaderTitle(),t.appendChild(this.titleElement),t},Column.prototype._buildColumnHeaderTitle=function(){var t=this,e=t.definition,o=t.table,i=document.createElement("div");if(i.classList.add("tabulator-col-title"),e.editableTitle){var n=document.createElement("input");n.classList.add("tabulator-title-editor"),n.addEventListener("click",function(t){t.stopPropagation(),n.focus()}),n.addEventListener("change",function(){e.title=n.value,o.options.columnTitleChanged.call(t.table,t.getComponent())}),i.appendChild(n),e.field?o.modules.localize.bind("columns|"+e.field,function(t){n.value=t||e.title||"&nbsp;"}):n.value=e.title||"&nbsp;"}else e.field?o.modules.localize.bind("columns|"+e.field,function(o){t._formatColumnHeaderTitle(i,o||e.title||"&nbsp;")}):t._formatColumnHeaderTitle(i,e.title||"&nbsp;");return i},Column.prototype._formatColumnHeaderTitle=function(t,e){var o,i,n,l,s,a=this;if(this.definition.titleFormatter&&this.table.modExists("format"))switch(o=this.table.modules.format.getFormatter(this.definition.titleFormatter),s=function(t){a.titleFormatterRendered=t},l={getValue:function(){return e},getElement:function(){return t}},n=this.definition.titleFormatterParams||{},n="function"==typeof n?n():n,i=o.call(this.table.modules.format,l,n,s),void 0===i?"undefined":_typeof(i)){case"object":i instanceof Node?t.appendChild(i):(t.innerHTML="",console.warn("Format Error - Title formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:",i));break;case"undefined":case"null":t.innerHTML="";break;default:t.innerHTML=i}else t.innerHTML=e},Column.prototype._buildGroupHeader=function(){var t=this;if(this.element.classList.add("tabulator-col-group"),this.element.setAttribute("role","columngroup"),this.element.setAttribute("aria-title",this.definition.title),this.definition.cssClass){this.definition.cssClass.split(" ").forEach(function(e){t.element.classList.add(e)})}(this.definition.headerContextMenu||this.definition.headerMenu)&&this.table.modExists("menu")&&this.table.modules.menu.initializeColumnHeader(this),this.element.appendChild(this.groupElement)},Column.prototype._getFlatData=function(t){return t[this.field]},Column.prototype._getNestedData=function(t){for(var e,o=t,i=this.fieldStructure,n=i.length,l=0;l<n&&(o=o[i[l]],e=o,o);l++);return e},Column.prototype._setFlatData=function(t,e){this.field&&(t[this.field]=e)},Column.prototype._setNestedData=function(t,e){for(var o=t,i=this.fieldStructure,n=i.length,l=0;l<n;l++)if(l==n-1)o[i[l]]=e;else{if(!o[i[l]]){if(void 0===e)break;o[i[l]]={}}o=o[i[l]]}},Column.prototype.attachColumn=function(t){var e=this;e.groupElement?(e.columns.push(t),e.groupElement.appendChild(t.getElement())):console.warn("Column Warning - Column being attached to another column instead of column group")},Column.prototype.verticalAlign=function(t,e){var o=this.parent.isGroup?this.parent.getGroupElement().clientHeight:e||this.parent.getHeadersElement().clientHeight;this.element.style.height=o+"px",this.isGroup&&(this.groupElement.style.minHeight=o-this.contentElement.offsetHeight+"px"),this.isGroup||"top"===t||(this.element.style.paddingTop="bottom"===t?this.element.clientHeight-this.contentElement.offsetHeight+"px":(this.element.clientHeight-this.contentElement.offsetHeight)/2+"px"),this.columns.forEach(function(e){e.verticalAlign(t)})},Column.prototype.clearVerticalAlign=function(){this.element.style.paddingTop="",this.element.style.height="",this.element.style.minHeight="",this.groupElement.style.minHeight="",this.columns.forEach(function(t){t.clearVerticalAlign()})},Column.prototype.bindModuleColumns=function(){"rownum"==this.definition.formatter&&(this.table.rowManager.rowNumColumn=this)},Column.prototype.getElement=function(){return this.element},Column.prototype.getGroupElement=function(){return this.groupElement},Column.prototype.getField=function(){return this.field},Column.prototype.getFirstColumn=function(){return this.isGroup?!!this.columns.length&&this.columns[0].getFirstColumn():this},Column.prototype.getLastColumn=function(){return this.isGroup?!!this.columns.length&&this.columns[this.columns.length-1].getLastColumn():this},Column.prototype.getColumns=function(){return this.columns},Column.prototype.getCells=function(){return this.cells},Column.prototype.getTopColumn=function(){return this.parent.isGroup?this.parent.getTopColumn():this},Column.prototype.getDefinition=function(t){var e=[];return this.isGroup&&t&&(this.columns.forEach(function(t){e.push(t.getDefinition(!0))}),this.definition.columns=e),this.definition},Column.prototype.checkColumnVisibility=function(){var t=!1;this.columns.forEach(function(e){e.visible&&(t=!0)}),t?(this.show(),this.parent.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!1)):this.hide()},Column.prototype.show=function(t,e){this.visible||(this.visible=!0,this.element.style.display="",this.parent.isGroup&&this.parent.checkColumnVisibility(),this.cells.forEach(function(t){t.show()}),this.isGroup||null!==this.width||this.reinitializeWidth(),this.table.columnManager._verticalAlignHeaders(),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.columns&&this.table.modules.persistence.save("columns"),!e&&this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.updateColumnVisibility(this,this.visible),t||this.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!0),this.parent.isGroup&&this.parent.matchChildWidths())},Column.prototype.hide=function(t,e){this.visible&&(this.visible=!1,this.element.style.display="none",this.table.columnManager._verticalAlignHeaders(),this.parent.isGroup&&this.parent.checkColumnVisibility(),this.cells.forEach(function(t){t.hide()}),this.table.options.persistence&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.config.columns&&this.table.modules.persistence.save("columns"),!e&&this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.updateColumnVisibility(this,this.visible),t||this.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!1),this.parent.isGroup&&this.parent.matchChildWidths())},Column.prototype.matchChildWidths=function(){var t=0;this.contentElement&&this.columns.length&&(this.columns.forEach(function(e){e.visible&&(t+=e.getWidth())}),this.contentElement.style.maxWidth=t-1+"px",this.parent.isGroup&&this.parent.matchChildWidths())},Column.prototype.setWidth=function(t){this.widthFixed=!0,this.setWidthActual(t)},Column.prototype.setWidthActual=function(t){isNaN(t)&&(t=Math.floor(this.table.element.clientWidth/100*parseInt(t))),t=Math.max(this.minWidth,t),this.width=t,this.widthStyled=t?t+"px":"",this.element.style.width=this.widthStyled,this.isGroup||this.cells.forEach(function(t){t.setWidth()}),this.parent.isGroup&&this.parent.matchChildWidths(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout()},Column.prototype.checkCellHeights=function(){var t=[];this.cells.forEach(function(e){e.row.heightInitialized&&(null!==e.row.getElement().offsetParent?(t.push(e.row),e.row.clearCellHeight()):e.row.heightInitialized=!1)}),t.forEach(function(t){t.calcHeight()}),t.forEach(function(t){t.setCellHeight()})},Column.prototype.getWidth=function(){var t=0;return this.isGroup?this.columns.forEach(function(e){e.visible&&(t+=e.getWidth())}):t=this.width,t},Column.prototype.getHeight=function(){return this.element.offsetHeight},Column.prototype.setMinWidth=function(t){this.minWidth=t,this.minWidthStyled=t?t+"px":"",this.element.style.minWidth=this.minWidthStyled,this.cells.forEach(function(t){t.setMinWidth()})},Column.prototype.delete=function(){var t=this;return new Promise(function(e,o){t.isGroup&&t.columns.forEach(function(t){t.delete()}),t.table.modExists("edit")&&t.table.modules.edit.currentCell.column===t&&t.table.modules.edit.cancelEdit();for(var i=t.cells.length,n=0;n<i;n++)t.cells[0].delete();t.element.parentNode.removeChild(t.element),t.table.columnManager.deregisterColumn(t),e()})},Column.prototype.columnRendered=function(){
-this.titleFormatterRendered&&this.titleFormatterRendered()},Column.prototype.validate=function(){var t=[];return this.cells.forEach(function(e){e.validate()||t.push(e.getComponent())}),!t.length||t},Column.prototype.generateCell=function(t){var e=this,o=new Cell(e,t);return this.cells.push(o),o},Column.prototype.nextColumn=function(){var t=this.table.columnManager.findColumnIndex(this);return t>-1&&this._nextVisibleColumn(t+1)},Column.prototype._nextVisibleColumn=function(t){var e=this.table.columnManager.getColumnByIndex(t);return!e||e.visible?e:this._nextVisibleColumn(t+1)},Column.prototype.prevColumn=function(){var t=this.table.columnManager.findColumnIndex(this);return t>-1&&this._prevVisibleColumn(t-1)},Column.prototype._prevVisibleColumn=function(t){var e=this.table.columnManager.getColumnByIndex(t);return!e||e.visible?e:this._prevVisibleColumn(t-1)},Column.prototype.reinitializeWidth=function(t){this.widthFixed=!1,void 0===this.definition.width||t||this.setWidth(this.definition.width),this.table.modExists("filter")&&this.table.modules.filter.hideHeaderFilterElements(),this.fitToData(),this.table.modExists("filter")&&this.table.modules.filter.showHeaderFilterElements()},Column.prototype.fitToData=function(){var t=this;this.widthFixed||(this.element.style.width="",t.cells.forEach(function(t){t.clearWidth()}));var e=this.element.offsetWidth;t.width&&this.widthFixed||(t.cells.forEach(function(t){var o=t.getWidth();o>e&&(e=o)}),e&&t.setWidthActual(e+1))},Column.prototype.updateDefinition=function(t){var e=this;return new Promise(function(o,i){var n;e.isGroup?(console.warn("Column Update Error - The updateDefintion function is only available on columns, not column groups"),i("Column Update Error - The updateDefintion function is only available on columns, not column groups")):(n=Object.assign({},e.getDefinition()),n=Object.assign(n,t),e.table.columnManager.addColumn(n,!1,e).then(function(t){n.field==e.field&&(e.field=!1),e.delete().then(function(){o(t.getComponent())}).catch(function(t){i(t)})}).catch(function(t){i(t)}))})},Column.prototype.deleteCell=function(t){var e=this.cells.indexOf(t);e>-1&&this.cells.splice(e,1)},Column.prototype.defaultOptionList=["title","field","columns","visible","align","hozAlign","vertAlign","width","minWidth","widthGrow","widthShrink","resizable","frozen","responsive","tooltip","cssClass","rowHandle","hideInHtml","print","htmlOutput","sorter","sorterParams","formatter","formatterParams","variableHeight","editable","editor","editorParams","validator","mutator","mutatorParams","mutatorData","mutatorDataParams","mutatorEdit","mutatorEditParams","mutatorClipboard","mutatorClipboardParams","accessor","accessorParams","accessorData","accessorDataParams","accessorDownload","accessorDownloadParams","accessorClipboard","accessorClipboardParams","accessorPrint","accessorPrintParams","accessorHtmlOutput","accessorHtmlOutputParams","clipboard","download","downloadTitle","topCalc","topCalcParams","topCalcFormatter","topCalcFormatterParams","bottomCalc","bottomCalcParams","bottomCalcFormatter","bottomCalcFormatterParams","cellClick","cellDblClick","cellContext","cellTap","cellDblTap","cellTapHold","cellMouseEnter","cellMouseLeave","cellMouseOver","cellMouseOut","cellMouseMove","cellEditing","cellEdited","cellEditCancelled","headerSort","headerSortStartingDir","headerSortTristate","headerClick","headerDblClick","headerContext","headerTap","headerDblTap","headerTapHold","headerTooltip","headerVertical","editableTitle","titleFormatter","titleFormatterParams","headerFilter","headerFilterPlaceholder","headerFilterParams","headerFilterEmptyCheck","headerFilterFunc","headerFilterFuncParams","headerFilterLiveFilter","print","headerContextMenu","headerMenu","contextMenu","formatterPrint","formatterPrintParams","formatterClipboard","formatterClipboardParams","formatterHtmlOutput","formatterHtmlOutputParams","titlePrint","titleClipboard","titleHtmlOutput","titleDownload"],Column.prototype.getComponent=function(){return this.component||(this.component=new ColumnComponent(this)),this.component};var RowManager=function(t){this.table=t,this.element=this.createHolderElement(),this.tableElement=this.createTableElement(),this.heightFixer=this.createTableElement(),this.columnManager=null,this.height=0,this.firstRender=!1,this.renderMode="virtual",this.fixedHeight=!1,this.rows=[],this.activeRows=[],this.activeRowsCount=0,this.displayRows=[],this.displayRowsCount=0,this.scrollTop=0,this.scrollLeft=0,this.vDomRowHeight=20,this.vDomTop=0,this.vDomBottom=0,this.vDomScrollPosTop=0,this.vDomScrollPosBottom=0,this.vDomTopPad=0,this.vDomBottomPad=0,this.vDomMaxRenderChain=90,this.vDomWindowBuffer=0,this.vDomWindowMinTotalRows=20,this.vDomWindowMinMarginRows=5,this.vDomTopNewRows=[],this.vDomBottomNewRows=[],this.rowNumColumn=!1,this.redrawBlock=!1,this.redrawBlockRestoreConfig=!1,this.redrawBlockRederInPosition=!1};RowManager.prototype.createHolderElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-tableHolder"),t.setAttribute("tabindex",0),t},RowManager.prototype.createTableElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-table"),t},RowManager.prototype.getElement=function(){return this.element},RowManager.prototype.getTableElement=function(){return this.tableElement},RowManager.prototype.getRowPosition=function(t,e){return e?this.activeRows.indexOf(t):this.rows.indexOf(t)},RowManager.prototype.setColumnManager=function(t){this.columnManager=t},RowManager.prototype.initialize=function(){var t=this;t.setRenderMode(),t.element.appendChild(t.tableElement),t.firstRender=!0,t.element.addEventListener("scroll",function(){var e=t.element.scrollLeft;t.scrollLeft!=e&&(t.columnManager.scrollHorizontal(e),t.table.options.groupBy&&t.table.modules.groupRows.scrollHeaders(e),t.table.modExists("columnCalcs")&&t.table.modules.columnCalcs.scrollHorizontal(e),t.table.options.scrollHorizontal(e)),t.scrollLeft=e}),"virtual"===this.renderMode&&t.element.addEventListener("scroll",function(){var e=t.element.scrollTop,o=t.scrollTop>e;t.scrollTop!=e?(t.scrollTop=e,t.scrollVertical(o),"scroll"==t.table.options.ajaxProgressiveLoad&&t.table.modules.ajax.nextPage(t.element.scrollHeight-t.element.clientHeight-e),t.table.options.scrollVertical(e)):t.scrollTop=e})},RowManager.prototype.findRow=function(t){var e=this;if("object"!=(void 0===t?"undefined":_typeof(t))){if(void 0===t||null===t)return!1;return e.rows.find(function(o){return o.data[e.table.options.index]==t})||!1}if(t instanceof Row)return t;if(t instanceof RowComponent)return t._getSelf()||!1;if("undefined"!=typeof HTMLElement&&t instanceof HTMLElement){return e.rows.find(function(e){return e.element===t})||!1}return!1},RowManager.prototype.getRowFromDataObject=function(t){return this.rows.find(function(e){return e.data===t})||!1},RowManager.prototype.getRowFromPosition=function(t,e){return e?this.activeRows[t]:this.rows[t]},RowManager.prototype.scrollToRow=function(t,e,o){var i,n=this,l=this.getDisplayRows().indexOf(t),s=t.getElement(),a=0;return new Promise(function(t,r){if(l>-1){if(void 0===e&&(e=n.table.options.scrollToRowPosition),void 0===o&&(o=n.table.options.scrollToRowIfVisible),"nearest"===e)switch(n.renderMode){case"classic":i=Tabulator.prototype.helpers.elOffset(s).top,e=Math.abs(n.element.scrollTop-i)>Math.abs(n.element.scrollTop+n.element.clientHeight-i)?"bottom":"top";break;case"virtual":e=Math.abs(n.vDomTop-l)>Math.abs(n.vDomBottom-l)?"bottom":"top"}if(!o&&Tabulator.prototype.helpers.elVisible(s)&&(a=Tabulator.prototype.helpers.elOffset(s).top-Tabulator.prototype.helpers.elOffset(n.element).top)>0&&a<n.element.clientHeight-s.offsetHeight)return!1;switch(n.renderMode){case"classic":n.element.scrollTop=Tabulator.prototype.helpers.elOffset(s).top-Tabulator.prototype.helpers.elOffset(n.element).top+n.element.scrollTop;break;case"virtual":n._virtualRenderFill(l,!0)}switch(e){case"middle":case"center":n.element.scrollHeight-n.element.scrollTop==n.element.clientHeight?n.element.scrollTop=n.element.scrollTop+(s.offsetTop-n.element.scrollTop)-(n.element.scrollHeight-s.offsetTop)/2:n.element.scrollTop=n.element.scrollTop-n.element.clientHeight/2;break;case"bottom":n.element.scrollHeight-n.element.scrollTop==n.element.clientHeight?n.element.scrollTop=n.element.scrollTop-(n.element.scrollHeight-s.offsetTop)+s.offsetHeight:n.element.scrollTop=n.element.scrollTop-n.element.clientHeight+s.offsetHeight}t()}else console.warn("Scroll Error - Row not visible"),r("Scroll Error - Row not visible")})},RowManager.prototype.setData=function(t,e,o){var i=this,n=this;return new Promise(function(l,s){e&&i.getDisplayRows().length?n.table.options.pagination?n._setDataActual(t,!0):i.reRenderInPosition(function(){n._setDataActual(t)}):(i.table.options.autoColumns&&o&&i.table.columnManager.generateColumnsFromRowData(t),i.resetScroll(),i._setDataActual(t)),l()})},RowManager.prototype._setDataActual=function(t,e){var o=this;o.table.options.dataLoading.call(this.table,t),this._wipeElements(),this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.clear(),Array.isArray(t)?(this.table.modExists("selectRow")&&this.table.modules.selectRow.clearSelectionData(),this.table.options.reactiveData&&this.table.modExists("reactiveData",!0)&&this.table.modules.reactiveData.watchData(t),t.forEach(function(t,e){if(t&&"object"===(void 0===t?"undefined":_typeof(t))){var i=new Row(t,o);o.rows.push(i)}else console.warn("Data Loading Warning - Invalid row data detected and ignored, expecting object but received:",t)}),o.table.options.dataLoaded.call(this.table,t),o.refreshActiveData(!1,!1,e)):console.error("Data Loading Error - Unable to process data due to invalid data type \nExpecting: array \nReceived: ",void 0===t?"undefined":_typeof(t),"\nData:     ",t)},RowManager.prototype._wipeElements=function(){this.rows.forEach(function(t){t.wipe()}),this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.wipe(),this.rows=[]},RowManager.prototype.deleteRow=function(t,e){var o=this.rows.indexOf(t),i=this.activeRows.indexOf(t);i>-1&&this.activeRows.splice(i,1),o>-1&&this.rows.splice(o,1),this.setActiveRows(this.activeRows),this.displayRowIterator(function(e){var o=e.indexOf(t);o>-1&&e.splice(o,1)}),e||this.reRenderInPosition(),this.regenerateRowNumbers(),this.table.options.rowDeleted.call(this.table,t.getComponent()),this.table.options.dataEdited.call(this.table,this.getData()),this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.groupRows.updateGroupRows(!0):this.table.options.pagination&&this.table.modExists("page")?this.refreshActiveData(!1,!1,!0):this.table.options.pagination&&this.table.modExists("page")&&this.refreshActiveData("page")},RowManager.prototype.addRow=function(t,e,o,i){var n=this.addRowActual(t,e,o,i);return this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("rowAdd",n,{data:t,pos:e,index:o}),n},RowManager.prototype.addRows=function(t,e,o){var i=this,n=this,l=0,s=[];return new Promise(function(a,r){e=i.findAddRowPos(e),Array.isArray(t)||(t=[t]),l=t.length-1,(void 0===o&&e||void 0!==o&&!e)&&t.reverse(),t.forEach(function(t,i){var l=n.addRow(t,e,o,!0);s.push(l)}),i.table.options.groupBy&&i.table.modExists("groupRows")?i.table.modules.groupRows.updateGroupRows(!0):i.table.options.pagination&&i.table.modExists("page")?i.refreshActiveData(!1,!1,!0):i.reRenderInPosition(),i.table.modExists("columnCalcs")&&i.table.modules.columnCalcs.recalc(i.table.rowManager.activeRows),i.regenerateRowNumbers(),a(s)})},RowManager.prototype.findAddRowPos=function(t){return void 0===t&&(t=this.table.options.addRowPos),"pos"===t&&(t=!0),"bottom"===t&&(t=!1),t},RowManager.prototype.addRowActual=function(t,e,o,i){var n,l,s=t instanceof Row?t:new Row(t||{},this),a=this.findAddRowPos(e),r=-1;if(!o&&this.table.options.pagination&&"page"==this.table.options.paginationAddRow&&(l=this.getDisplayRows(),a?l.length?o=l[0]:this.activeRows.length&&(o=this.activeRows[this.activeRows.length-1],a=!1):l.length&&(o=l[l.length-1],a=!(l.length<this.table.modules.page.getPageSize()))),void 0!==o&&(o=this.findRow(o)),this.table.options.groupBy&&this.table.modExists("groupRows")){this.table.modules.groupRows.assignRowToGroup(s);var u=s.getGroup().rows;u.length>1&&(!o||o&&-1==u.indexOf(o)?a?u[0]!==s&&(o=u[0],this._moveRowInArray(s.getGroup().rows,s,o,!a)):u[u.length-1]!==s&&(o=u[u.length-1],this._moveRowInArray(s.getGroup().rows,s,o,!a)):this._moveRowInArray(s.getGroup().rows,s,o,!a))}return o&&(r=this.rows.indexOf(o)),o&&r>-1?(n=this.activeRows.indexOf(o),this.displayRowIterator(function(t){var e=t.indexOf(o);e>-1&&t.splice(a?e:e+1,0,s)}),n>-1&&this.activeRows.splice(a?n:n+1,0,s),this.rows.splice(a?r:r+1,0,s)):a?(this.displayRowIterator(function(t){t.unshift(s)}),this.activeRows.unshift(s),this.rows.unshift(s)):(this.displayRowIterator(function(t){t.push(s)}),this.activeRows.push(s),this.rows.push(s)),this.setActiveRows(this.activeRows),this.table.options.rowAdded.call(this.table,s.getComponent()),this.table.options.dataEdited.call(this.table,this.getData()),i||this.reRenderInPosition(),s},RowManager.prototype.moveRow=function(t,e,o){this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("rowMove",t,{posFrom:this.getRowPosition(t),posTo:this.getRowPosition(e),to:e,after:o}),this.moveRowActual(t,e,o),this.regenerateRowNumbers(),this.table.options.rowMoved.call(this.table,t.getComponent())},RowManager.prototype.moveRowActual=function(t,e,o){var i=this;if(this._moveRowInArray(this.rows,t,e,o),this._moveRowInArray(this.activeRows,t,e,o),this.displayRowIterator(function(n){i._moveRowInArray(n,t,e,o)}),this.table.options.groupBy&&this.table.modExists("groupRows")){!o&&e instanceof Group&&(e=this.table.rowManager.prevDisplayRow(t)||e);var n=e.getGroup(),l=t.getGroup();n===l?this._moveRowInArray(n.rows,t,e,o):(l&&l.removeRow(t),n.insertRow(t,e,o))}},RowManager.prototype._moveRowInArray=function(t,e,o,i){var n,l,s,a;if(e!==o&&(n=t.indexOf(e),n>-1&&(t.splice(n,1),l=t.indexOf(o),l>-1?i?t.splice(l+1,0,e):t.splice(l,0,e):t.splice(n,0,e)),t===this.getDisplayRows())){s=n<l?n:l,a=l>n?l:n+1;for(var r=s;r<=a;r++)t[r]&&this.styleRow(t[r],r)}},RowManager.prototype.clearData=function(){this.setData([])},RowManager.prototype.getRowIndex=function(t){return this.findRowIndex(t,this.rows)},RowManager.prototype.getDisplayRowIndex=function(t){var e=this.getDisplayRows().indexOf(t);return e>-1&&e},RowManager.prototype.nextDisplayRow=function(t,e){var o=this.getDisplayRowIndex(t),i=!1;return!1!==o&&o<this.displayRowsCount-1&&(i=this.getDisplayRows()[o+1]),!i||i instanceof Row&&"row"==i.type?i:this.nextDisplayRow(i,e)},RowManager.prototype.prevDisplayRow=function(t,e){var o=this.getDisplayRowIndex(t),i=!1;return o&&(i=this.getDisplayRows()[o-1]),!e||!i||i instanceof Row&&"row"==i.type?i:this.prevDisplayRow(i,e)},RowManager.prototype.findRowIndex=function(t,e){var o;return!!((t=this.findRow(t))&&(o=e.indexOf(t))>-1)&&o},RowManager.prototype.getData=function(t,e){var o=[];return this.getRows(t).forEach(function(t){"row"==t.type&&o.push(t.getData(e||"data"))}),o},RowManager.prototype.getComponents=function(t){var e=[];return this.getRows(t).forEach(function(t){e.push(t.getComponent())}),e},RowManager.prototype.getDataCount=function(t){return this.getRows(t).length},RowManager.prototype._genRemoteRequest=function(){var t=this,e=this.table,o=e.options,i={};if(e.modExists("page")){if(o.ajaxSorting){var n=this.table.modules.sort.getSort();n.forEach(function(t){delete t.column}),i[this.table.modules.page.paginationDataSentNames.sorters]=n}if(o.ajaxFiltering){var l=this.table.modules.filter.getFilters(!0,!0);i[this.table.modules.page.paginationDataSentNames.filters]=l}this.table.modules.ajax.setParams(i,!0)}e.modules.ajax.sendRequest().then(function(e){t._setDataActual(e,!0)}).catch(function(t){})},RowManager.prototype.filterRefresh=function(){var t=this.table,e=t.options,o=this.scrollLeft;e.ajaxFiltering?"remote"==e.pagination&&t.modExists("page")?(t.modules.page.reset(!0),t.modules.page.setPage(1).then(function(){}).catch(function(){})):e.ajaxProgressiveLoad?t.modules.ajax.loadData().then(function(){}).catch(function(){}):this._genRemoteRequest():this.refreshActiveData("filter"),this.scrollHorizontal(o)},RowManager.prototype.sorterRefresh=function(t){var e=this.table,o=this.table.options,i=this.scrollLeft;o.ajaxSorting?("remote"==o.pagination||o.progressiveLoad)&&e.modExists("page")?(e.modules.page.reset(!0),e.modules.page.setPage(1).then(function(){}).catch(function(){})):o.ajaxProgressiveLoad?e.modules.ajax.loadData().then(function(){}).catch(function(){}):this._genRemoteRequest():this.refreshActiveData(t?"filter":"sort"),this.scrollHorizontal(i)},RowManager.prototype.scrollHorizontal=function(t){this.scrollLeft=t,this.element.scrollLeft=t,this.table.options.groupBy&&this.table.modules.groupRows.scrollHeaders(t),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.scrollHorizontal(t)},RowManager.prototype.refreshActiveData=function(t,e,o){var i,n=this,l=this.table,s=["all","filter","sort","display","freeze","group","tree","page"];if(this.redrawBlock)return void((!this.redrawBlockRestoreConfig||s.indexOf(t)<s.indexOf(this.redrawBlockRestoreConfig.stage))&&(this.redrawBlockRestoreConfig={stage:t,skipStage:e,renderInPosition:o}));switch(n.table.modExists("edit")&&n.table.modules.edit.cancelEdit(),t||(t="all"),l.options.selectable&&!l.options.selectablePersistence&&l.modExists("selectRow")&&l.modules.selectRow.deselectRows(),t){case"all":case"filter":e?e=!1:l.modExists("filter")?n.setActiveRows(l.modules.filter.filter(n.rows)):n.setActiveRows(n.rows.slice(0));case"sort":e?e=!1:l.modExists("sort")&&l.modules.sort.sort(this.activeRows),this.regenerateRowNumbers();case"display":this.resetDisplayRows();case"freeze":e?e=!1:this.table.modExists("frozenRows")&&l.modules.frozenRows.isFrozen()&&(l.modules.frozenRows.getDisplayIndex()||l.modules.frozenRows.setDisplayIndex(this.getNextDisplayIndex()),i=l.modules.frozenRows.getDisplayIndex(),!0!==(i=n.setDisplayRows(l.modules.frozenRows.getRows(this.getDisplayRows(i-1)),i))&&l.modules.frozenRows.setDisplayIndex(i));case"group":e?e=!1:l.options.groupBy&&l.modExists("groupRows")&&(l.modules.groupRows.getDisplayIndex()||l.modules.groupRows.setDisplayIndex(this.getNextDisplayIndex()),i=l.modules.groupRows.getDisplayIndex(),!0!==(i=n.setDisplayRows(l.modules.groupRows.getRows(this.getDisplayRows(i-1)),i))&&l.modules.groupRows.setDisplayIndex(i));case"tree":e?e=!1:l.options.dataTree&&l.modExists("dataTree")&&(l.modules.dataTree.getDisplayIndex()||l.modules.dataTree.setDisplayIndex(this.getNextDisplayIndex()),i=l.modules.dataTree.getDisplayIndex(),!0!==(i=n.setDisplayRows(l.modules.dataTree.getRows(this.getDisplayRows(i-1)),i))&&l.modules.dataTree.setDisplayIndex(i)),l.options.pagination&&l.modExists("page")&&!o&&"local"==l.modules.page.getMode()&&l.modules.page.reset();case"page":e?e=!1:l.options.pagination&&l.modExists("page")&&(l.modules.page.getDisplayIndex()||l.modules.page.setDisplayIndex(this.getNextDisplayIndex()),i=l.modules.page.getDisplayIndex(),"local"==l.modules.page.getMode()&&l.modules.page.setMaxRows(this.getDisplayRows(i-1).length),!0!==(i=n.setDisplayRows(l.modules.page.getRows(this.getDisplayRows(i-1)),i))&&l.modules.page.setDisplayIndex(i))}Tabulator.prototype.helpers.elVisible(n.element)&&(o?n.reRenderInPosition():(n.renderTable(),l.options.layoutColumnsOnNewData&&n.table.columnManager.redraw(!0))),l.modExists("columnCalcs")&&l.modules.columnCalcs.recalc(this.activeRows)},RowManager.prototype.regenerateRowNumbers=function(){var t=this;this.rowNumColumn&&this.activeRows.forEach(function(e){var o=e.getCell(t.rowNumColumn);o&&o._generateContents()})},RowManager.prototype.setActiveRows=function(t){this.activeRows=t,this.activeRowsCount=this.activeRows.length},RowManager.prototype.resetDisplayRows=function(){this.displayRows=[],this.displayRows.push(this.activeRows.slice(0)),this.displayRowsCount=this.displayRows[0].length,this.table.modExists("frozenRows")&&this.table.modules.frozenRows.setDisplayIndex(0),this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.setDisplayIndex(0),this.table.options.pagination&&this.table.modExists("page")&&this.table.modules.page.setDisplayIndex(0)},RowManager.prototype.getNextDisplayIndex=function(){return this.displayRows.length},RowManager.prototype.setDisplayRows=function(t,e){var o=!0;return e&&void 0!==this.displayRows[e]?(this.displayRows[e]=t,o=!0):(this.displayRows.push(t),o=e=this.displayRows.length-1),e==this.displayRows.length-1&&(this.displayRowsCount=this.displayRows[this.displayRows.length-1].length),o},RowManager.prototype.getDisplayRows=function(t){return void 0===t?this.displayRows.length?this.displayRows[this.displayRows.length-1]:[]:this.displayRows[t]||[]},RowManager.prototype.getVisibleRows=function(t){var e=this.element.scrollTop,o=this.element.clientHeight+e,i=!1,n=0,l=0,s=this.getDisplayRows();if(t){this.getDisplayRows();for(var a=this.vDomTop;a<=this.vDomBottom;a++)if(s[a])if(i){if(!(o-s[a].getElement().offsetTop>=0))break;l=a}else if(e-s[a].getElement().offsetTop>=0)n=a;else{if(i=!0,!(o-s[a].getElement().offsetTop>=0))break;l=a}}else n=this.vDomTop,l=this.vDomBottom;return s.slice(n,l+1)},RowManager.prototype.displayRowIterator=function(t){this.displayRows.forEach(t),this.displayRowsCount=this.displayRows[this.displayRows.length-1].length},RowManager.prototype.getRows=function(t){var e;switch(t){case"active":e=this.activeRows;break;case"display":e=this.table.rowManager.getDisplayRows();break;case"visible":e=this.getVisibleRows(!0);break;default:e=this.rows}return e},RowManager.prototype.reRenderInPosition=function(t){if("virtual"==this.getRenderMode())if(this.redrawBlock)t?t():this.redrawBlockRederInPosition=!0;else{for(var e=this.element.scrollTop,o=!1,i=!1,n=this.scrollLeft,l=this.getDisplayRows(),s=this.vDomTop;s<=this.vDomBottom;s++)if(l[s]){var a=e-l[s].getElement().offsetTop;if(!(!1===i||Math.abs(a)<i))break;i=a,o=s}t&&t(),this._virtualRenderFill(!1===o?this.displayRowsCount-1:o,!0,i||0),this.scrollHorizontal(n)}else this.renderTable(),t&&t()},RowManager.prototype.setRenderMode=function(){this.table.options.virtualDom?(this.renderMode="virtual",this.table.element.clientHeight||this.table.options.height?this.fixedHeight=!0:this.fixedHeight=!1):this.renderMode="classic"},RowManager.prototype.getRenderMode=function(){return this.renderMode},RowManager.prototype.renderTable=function(){switch(this.table.options.renderStarted.call(this.table),this.element.scrollTop=0,this.renderMode){case"classic":this._simpleRender();break;case"virtual":this._virtualRenderFill()}this.firstRender&&(this.displayRowsCount?(this.firstRender=!1,this.table.modules.layout.layout()):this.renderEmptyScroll()),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout(),this.displayRowsCount||this.table.options.placeholder&&(this.table.options.placeholder.setAttribute("tabulator-render-mode",this.renderMode),this.getElement().appendChild(this.table.options.placeholder),this.table.options.placeholder.style.width=this.table.columnManager.getWidth()+"px"),this.table.options.renderComplete.call(this.table)},RowManager.prototype._simpleRender=function(){this._clearVirtualDom(),this.displayRowsCount?this.checkClassicModeGroupHeaderWidth():this.renderEmptyScroll()},RowManager.prototype.checkClassicModeGroupHeaderWidth=function(){var t=this,e=this.tableElement,o=!0;t.getDisplayRows().forEach(function(i,n){t.styleRow(i,n),e.appendChild(i.getElement()),i.initialize(!0),"group"!==i.type&&(o=!1)}),e.style.minWidth=o?t.table.columnManager.getWidth()+"px":""},RowManager.prototype.renderEmptyScroll=function(){this.table.options.placeholder?this.tableElement.style.display="none":(this.tableElement.style.minWidth=this.table.columnManager.getWidth()+"px",this.tableElement.style.minHeight="1px",this.tableElement.style.visibility="hidden")},RowManager.prototype._clearVirtualDom=function(){var t=this.tableElement;for(this.table.options.placeholder&&this.table.options.placeholder.parentNode&&this.table.options.placeholder.parentNode.removeChild(this.table.options.placeholder);t.firstChild;)t.removeChild(t.firstChild);t.style.paddingTop="",t.style.paddingBottom="",t.style.minWidth="",t.style.minHeight="",t.style.display="",t.style.visibility="",this.scrollTop=0,this.scrollLeft=0,this.vDomTop=0,this.vDomBottom=0,this.vDomTopPad=0,this.vDomBottomPad=0},RowManager.prototype.styleRow=function(t,e){var o=t.getElement();e%2?(o.classList.add("tabulator-row-even"),o.classList.remove("tabulator-row-odd")):(o.classList.add("tabulator-row-odd"),o.classList.remove("tabulator-row-even"))},RowManager.prototype._virtualRenderFill=function(t,e,o){var i=this,n=i.tableElement,l=i.element,s=0,a=0,r=0,u=0,c=!0,h=i.getDisplayRows();if(t=t||0,o=o||0,t){for(;n.firstChild;)n.removeChild(n.firstChild);var d=(i.displayRowsCount-t+1)*i.vDomRowHeight;d<i.height&&(t-=Math.ceil((i.height-d)/i.vDomRowHeight))<0&&(t=0),s=Math.min(Math.max(Math.floor(i.vDomWindowBuffer/i.vDomRowHeight),i.vDomWindowMinMarginRows),t),t-=s}else i._clearVirtualDom();if(i.displayRowsCount&&Tabulator.prototype.helpers.elVisible(i.element)){for(i.vDomTop=t,i.vDomBottom=t-1;(a<=i.height+i.vDomWindowBuffer||u<i.vDomWindowMinTotalRows)&&i.vDomBottom<i.displayRowsCount-1;){var p=i.vDomBottom+1,m=h[p],f=0;i.styleRow(m,p),n.appendChild(m.getElement()),m.initialized?m.heightInitialized||m.normalizeHeight(!0):m.initialize(!0),f=m.getHeight(),u<s?r+=f:a+=f,f>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*f),"group"!==m.type&&(c=!1),i.vDomBottom++,u++}t?(i.vDomTopPad=e?i.vDomRowHeight*this.vDomTop+o:i.scrollTop-r,i.vDomBottomPad=i.vDomBottom==i.displayRowsCount-1?0:Math.max(i.vDomScrollHeight-i.vDomTopPad-a-r,0)):(this.vDomTopPad=0,i.vDomRowHeight=Math.floor((a+r)/u),i.vDomBottomPad=i.vDomRowHeight*(i.displayRowsCount-i.vDomBottom-1),i.vDomScrollHeight=r+a+i.vDomBottomPad-i.height),n.style.paddingTop=i.vDomTopPad+"px",n.style.paddingBottom=i.vDomBottomPad+"px",e&&(this.scrollTop=i.vDomTopPad+r+o-(this.element.scrollWidth>this.element.clientWidth?this.element.offsetHeight-this.element.clientHeight:0)),this.scrollTop=Math.min(this.scrollTop,this.element.scrollHeight-this.height),this.element.scrollWidth>this.element.offsetWidth&&e&&(this.scrollTop+=this.element.offsetHeight-this.element.clientHeight),this.vDomScrollPosTop=this.scrollTop,this.vDomScrollPosBottom=this.scrollTop,l.scrollTop=this.scrollTop,n.style.minWidth=c?i.table.columnManager.getWidth()+"px":"",i.table.options.groupBy&&"fitDataFill"!=i.table.modules.layout.getMode()&&i.displayRowsCount==i.table.modules.groupRows.countGroups()&&(i.tableElement.style.minWidth=i.table.columnManager.getWidth())}else this.renderEmptyScroll();this.fixedHeight||this.adjustTableSize()},RowManager.prototype.scrollVertical=function(t){var e=this.scrollTop-this.vDomScrollPosTop,o=this.scrollTop-this.vDomScrollPosBottom,i=2*this.vDomWindowBuffer;if(-e>i||o>i){var n=this.scrollLeft;this._virtualRenderFill(Math.floor(this.element.scrollTop/this.element.scrollHeight*this.displayRowsCount)),this.scrollHorizontal(n)}else t?(e<0&&this._addTopRow(-e),o<0&&(this.vDomScrollHeight-this.scrollTop>this.vDomWindowBuffer?this._removeBottomRow(-o):this.vDomScrollPosBottom=this.scrollTop)):(e>=0&&(this.scrollTop>this.vDomWindowBuffer?this._removeTopRow(e):this.vDomScrollPosTop=this.scrollTop),o>=0&&this._addBottomRow(o))},RowManager.prototype._addTopRow=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,o=this.tableElement,i=this.getDisplayRows();if(this.vDomTop){var n=this.vDomTop-1,l=i[n],s=l.getHeight()||this.vDomRowHeight;t>=s&&(this.styleRow(l,n),o.insertBefore(l.getElement(),o.firstChild),l.initialized&&l.heightInitialized||(this.vDomTopNewRows.push(l),l.heightInitialized||l.clearCellHeight()),l.initialize(),this.vDomTopPad-=s,this.vDomTopPad<0&&(this.vDomTopPad=n*this.vDomRowHeight),n||(this.vDomTopPad=0),o.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop-=s,this.vDomTop--),t=-(this.scrollTop-this.vDomScrollPosTop),l.getHeight()>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*l.getHeight()),e<this.vDomMaxRenderChain&&this.vDomTop&&t>=(i[this.vDomTop-1].getHeight()||this.vDomRowHeight)?this._addTopRow(t,e+1):this._quickNormalizeRowHeight(this.vDomTopNewRows)}},RowManager.prototype._removeTopRow=function(t){var e=this.tableElement,o=this.getDisplayRows()[this.vDomTop],i=o.getHeight()||this.vDomRowHeight;if(t>=i){var n=o.getElement();n.parentNode.removeChild(n),this.vDomTopPad+=i,e.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop+=this.vDomTop?i:i+this.vDomWindowBuffer,this.vDomTop++,t=this.scrollTop-this.vDomScrollPosTop,this._removeTopRow(t)}},RowManager.prototype._addBottomRow=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,o=this.tableElement,i=this.getDisplayRows();if(this.vDomBottom<this.displayRowsCount-1){var n=this.vDomBottom+1,l=i[n],s=l.getHeight()||this.vDomRowHeight;t>=s&&(this.styleRow(l,n),o.appendChild(l.getElement()),l.initialized&&l.heightInitialized||(this.vDomBottomNewRows.push(l),l.heightInitialized||l.clearCellHeight()),l.initialize(),this.vDomBottomPad-=s,(this.vDomBottomPad<0||n==this.displayRowsCount-1)&&(this.vDomBottomPad=0),o.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom+=s,this.vDomBottom++),t=this.scrollTop-this.vDomScrollPosBottom,l.getHeight()>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*l.getHeight()),e<this.vDomMaxRenderChain&&this.vDomBottom<this.displayRowsCount-1&&t>=(i[this.vDomBottom+1].getHeight()||this.vDomRowHeight)?this._addBottomRow(t,e+1):this._quickNormalizeRowHeight(this.vDomBottomNewRows)}},RowManager.prototype._removeBottomRow=function(t){var e=this.tableElement,o=this.getDisplayRows()[this.vDomBottom],i=o.getHeight()||this.vDomRowHeight;if(t>=i){var n=o.getElement();n.parentNode&&n.parentNode.removeChild(n),this.vDomBottomPad+=i,this.vDomBottomPad<0&&(this.vDomBottomPad=0),e.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom-=i,this.vDomBottom--,t=-(this.scrollTop-this.vDomScrollPosBottom),this._removeBottomRow(t)}},RowManager.prototype._quickNormalizeRowHeight=function(t){t.forEach(function(t){t.calcHeight()}),t.forEach(function(t){t.setCellHeight()}),t.length=0},RowManager.prototype.normalizeHeight=function(){this.activeRows.forEach(function(t){t.normalizeHeight()})},RowManager.prototype.adjustTableSize=function(){var t,e=this.element.clientHeight;if("virtual"===this.renderMode){var o=this.columnManager.getElement().offsetHeight+(this.table.footerManager&&!this.table.footerManager.external?this.table.footerManager.getElement().offsetHeight:0);this.fixedHeight?(this.element.style.minHeight="calc(100% - "+o+"px)",this.element.style.height="calc(100% - "+o+"px)",this.element.style.maxHeight="calc(100% - "+o+"px)"):(this.element.style.height="",this.element.style.height=this.table.element.clientHeight-o+"px",this.element.scrollTop=this.scrollTop),this.height=this.element.clientHeight,this.vDomWindowBuffer=this.table.options.virtualDomBuffer||this.height,this.fixedHeight||e==this.element.clientHeight||((t=this.table.modExists("resizeTable"))&&!this.table.modules.resizeTable.autoResize||!t)&&this.redraw()}},RowManager.prototype.reinitialize=function(){this.rows.forEach(function(t){t.reinitialize()})},RowManager.prototype.blockRedraw=function(){this.redrawBlock=!0,this.redrawBlockRestoreConfig=!1},RowManager.prototype.restoreRedraw=function(){this.redrawBlock=!1,this.redrawBlockRestoreConfig?(this.refreshActiveData(this.redrawBlockRestoreConfig.stage,this.redrawBlockRestoreConfig.skipStage,this.redrawBlockRestoreConfig.renderInPosition),this.redrawBlockRestoreConfig=!1):this.redrawBlockRederInPosition&&this.reRenderInPosition(),this.redrawBlockRederInPosition=!1},
-RowManager.prototype.redraw=function(t){var e=this.scrollLeft;this.adjustTableSize(),this.table.tableWidth=this.table.element.clientWidth,t?this.renderTable():("classic"==this.renderMode?this.table.options.groupBy?this.refreshActiveData("group",!1,!1):this._simpleRender():(this.reRenderInPosition(),this.scrollHorizontal(e)),this.displayRowsCount||this.table.options.placeholder&&this.getElement().appendChild(this.table.options.placeholder))},RowManager.prototype.resetScroll=function(){if(this.element.scrollLeft=0,this.element.scrollTop=0,"ie"===this.table.browser){var t=document.createEvent("Event");t.initEvent("scroll",!1,!0),this.element.dispatchEvent(t)}else this.element.dispatchEvent(new Event("scroll"))};var RowComponent=function(t){this._row=t};RowComponent.prototype.getData=function(t){return this._row.getData(t)},RowComponent.prototype.getElement=function(){return this._row.getElement()},RowComponent.prototype.getCells=function(){var t=[];return this._row.getCells().forEach(function(e){t.push(e.getComponent())}),t},RowComponent.prototype.getCell=function(t){var e=this._row.getCell(t);return!!e&&e.getComponent()},RowComponent.prototype.getIndex=function(){return this._row.getData("data")[this._row.table.options.index]},RowComponent.prototype.getPosition=function(t){return this._row.table.rowManager.getRowPosition(this._row,t)},RowComponent.prototype.delete=function(){return this._row.delete()},RowComponent.prototype.scrollTo=function(){return this._row.table.rowManager.scrollToRow(this._row)},RowComponent.prototype.pageTo=function(){if(this._row.table.modExists("page",!0))return this._row.table.modules.page.setPageToRow(this._row)},RowComponent.prototype.move=function(t,e){this._row.moveToRow(t,e)},RowComponent.prototype.update=function(t){return this._row.updateData(t)},RowComponent.prototype.normalizeHeight=function(){this._row.normalizeHeight(!0)},RowComponent.prototype.select=function(){this._row.table.modules.selectRow.selectRows(this._row)},RowComponent.prototype.deselect=function(){this._row.table.modules.selectRow.deselectRows(this._row)},RowComponent.prototype.toggleSelect=function(){this._row.table.modules.selectRow.toggleRow(this._row)},RowComponent.prototype.isSelected=function(){return this._row.table.modules.selectRow.isRowSelected(this._row)},RowComponent.prototype._getSelf=function(){return this._row},RowComponent.prototype.validate=function(){return this._row.validate()},RowComponent.prototype.freeze=function(){this._row.table.modExists("frozenRows",!0)&&this._row.table.modules.frozenRows.freezeRow(this._row)},RowComponent.prototype.unfreeze=function(){this._row.table.modExists("frozenRows",!0)&&this._row.table.modules.frozenRows.unfreezeRow(this._row)},RowComponent.prototype.isFrozen=function(){if(this._row.table.modExists("frozenRows",!0)){return this._row.table.modules.frozenRows.rows.indexOf(this._row)>-1}return!1},RowComponent.prototype.treeCollapse=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.collapseRow(this._row)},RowComponent.prototype.treeExpand=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.expandRow(this._row)},RowComponent.prototype.treeToggle=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.toggleRow(this._row)},RowComponent.prototype.getTreeParent=function(){return!!this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.getTreeParent(this._row)},RowComponent.prototype.getTreeChildren=function(){return!!this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.getTreeChildren(this._row)},RowComponent.prototype.addTreeChild=function(t,e,o){return!!this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.addTreeChildRow(this._row,t,e,o)},RowComponent.prototype.reformat=function(){return this._row.reinitialize()},RowComponent.prototype.getGroup=function(){return this._row.getGroup().getComponent()},RowComponent.prototype.getTable=function(){return this._row.table},RowComponent.prototype.getNextRow=function(){var t=this._row.nextRow();return t?t.getComponent():t},RowComponent.prototype.getPrevRow=function(){var t=this._row.prevRow();return t?t.getComponent():t};var Row=function(t,e){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"row";this.table=e.table,this.parent=e,this.data={},this.type=o,this.element=this.createElement(),this.modules={},this.cells=[],this.height=0,this.heightStyled="",this.manualHeight=!1,this.outerHeight=0,this.initialized=!1,this.heightInitialized=!1,this.component=null,this.setData(t),this.generateElement()};Row.prototype.createElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-row"),t.setAttribute("role","row"),t},Row.prototype.getElement=function(){return this.element},Row.prototype.detachElement=function(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)},Row.prototype.generateElement=function(){var t,e,o,i=this;!1!==i.table.options.selectable&&i.table.modExists("selectRow")&&i.table.modules.selectRow.initializeRow(this),!1!==i.table.options.movableRows&&i.table.modExists("moveRow")&&i.table.modules.moveRow.initializeRow(this),!1!==i.table.options.dataTree&&i.table.modExists("dataTree")&&i.table.modules.dataTree.initializeRow(this),"collapse"===i.table.options.responsiveLayout&&i.table.modExists("responsiveLayout")&&i.table.modules.responsiveLayout.initializeRow(this),i.table.options.rowContextMenu&&this.table.modExists("menu")&&i.table.modules.menu.initializeRow(this),i.table.options.rowClick&&i.element.addEventListener("click",function(t){i.table.options.rowClick(t,i.getComponent())}),i.table.options.rowDblClick&&i.element.addEventListener("dblclick",function(t){i.table.options.rowDblClick(t,i.getComponent())}),i.table.options.rowContext&&i.element.addEventListener("contextmenu",function(t){i.table.options.rowContext(t,i.getComponent())}),i.table.options.rowMouseEnter&&i.element.addEventListener("mouseenter",function(t){i.table.options.rowMouseEnter(t,i.getComponent())}),i.table.options.rowMouseLeave&&i.element.addEventListener("mouseleave",function(t){i.table.options.rowMouseLeave(t,i.getComponent())}),i.table.options.rowMouseOver&&i.element.addEventListener("mouseover",function(t){i.table.options.rowMouseOver(t,i.getComponent())}),i.table.options.rowMouseOut&&i.element.addEventListener("mouseout",function(t){i.table.options.rowMouseOut(t,i.getComponent())}),i.table.options.rowMouseMove&&i.element.addEventListener("mousemove",function(t){i.table.options.rowMouseMove(t,i.getComponent())}),i.table.options.rowTap&&(o=!1,i.element.addEventListener("touchstart",function(t){o=!0},{passive:!0}),i.element.addEventListener("touchend",function(t){o&&i.table.options.rowTap(t,i.getComponent()),o=!1})),i.table.options.rowDblTap&&(t=null,i.element.addEventListener("touchend",function(e){t?(clearTimeout(t),t=null,i.table.options.rowDblTap(e,i.getComponent())):t=setTimeout(function(){clearTimeout(t),t=null},300)})),i.table.options.rowTapHold&&(e=null,i.element.addEventListener("touchstart",function(t){clearTimeout(e),e=setTimeout(function(){clearTimeout(e),e=null,o=!1,i.table.options.rowTapHold(t,i.getComponent())},1e3)},{passive:!0}),i.element.addEventListener("touchend",function(t){clearTimeout(e),e=null}))},Row.prototype.generateCells=function(){this.cells=this.table.columnManager.generateCells(this)},Row.prototype.initialize=function(t){var e=this;if(!e.initialized||t){for(e.deleteCells();e.element.firstChild;)e.element.removeChild(e.element.firstChild);this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layoutRow(this),this.generateCells(),e.cells.forEach(function(t){e.element.appendChild(t.getElement()),t.cellRendered()}),t&&e.normalizeHeight(),e.table.options.dataTree&&e.table.modExists("dataTree")&&e.table.modules.dataTree.layoutRow(this),"collapse"===e.table.options.responsiveLayout&&e.table.modExists("responsiveLayout")&&e.table.modules.responsiveLayout.layoutRow(this),e.table.options.rowFormatter&&e.table.options.rowFormatter(e.getComponent()),e.table.options.resizableRows&&e.table.modExists("resizeRows")&&e.table.modules.resizeRows.initializeRow(e),e.initialized=!0}},Row.prototype.reinitializeHeight=function(){this.heightInitialized=!1,null!==this.element.offsetParent&&this.normalizeHeight(!0)},Row.prototype.reinitialize=function(){this.initialized=!1,this.heightInitialized=!1,this.manualHeight||(this.height=0,this.heightStyled=""),null!==this.element.offsetParent&&this.initialize(!0)},Row.prototype.calcHeight=function(t){var e=0,o=this.table.options.resizableRows?this.element.clientHeight:0;this.cells.forEach(function(t){var o=t.getHeight();o>e&&(e=o)}),this.height=t?Math.max(e,o):this.manualHeight?this.height:Math.max(e,o),this.heightStyled=this.height?this.height+"px":"",this.outerHeight=this.element.offsetHeight},Row.prototype.setCellHeight=function(){this.cells.forEach(function(t){t.setHeight()}),this.heightInitialized=!0},Row.prototype.clearCellHeight=function(){this.cells.forEach(function(t){t.clearHeight()})},Row.prototype.normalizeHeight=function(t){t&&this.clearCellHeight(),this.calcHeight(t),this.setCellHeight()},Row.prototype.setHeight=function(t,e){(this.height!=t||e)&&(this.manualHeight=!0,this.height=t,this.heightStyled=t?t+"px":"",this.setCellHeight(),this.outerHeight=this.element.offsetHeight)},Row.prototype.getHeight=function(){return this.outerHeight},Row.prototype.getWidth=function(){return this.element.offsetWidth},Row.prototype.deleteCell=function(t){var e=this.cells.indexOf(t);e>-1&&this.cells.splice(e,1)},Row.prototype.setData=function(t){this.table.modExists("mutator")&&(t=this.table.modules.mutator.transformRow(t,"data")),this.data=t,this.table.options.reactiveData&&this.table.modExists("reactiveData",!0)&&this.table.modules.reactiveData.watchRow(this)},Row.prototype.updateData=function(t){var e,o=this,i=Tabulator.prototype.helpers.elVisible(this.element),n={};return new Promise(function(l,s){"string"==typeof t&&(t=JSON.parse(t)),o.table.options.reactiveData&&o.table.modExists("reactiveData",!0)&&o.table.modules.reactiveData.block(),o.table.modExists("mutator")?(n=Object.assign(n,o.data),n=Object.assign(n,t),e=o.table.modules.mutator.transformRow(n,"data",t)):e=t;for(var a in e)o.data[a]=e[a];o.table.options.reactiveData&&o.table.modExists("reactiveData",!0)&&o.table.modules.reactiveData.unblock();for(var a in t){o.table.columnManager.getColumnsByFieldRoot(a).forEach(function(t){var n=o.getCell(t.getField());if(n){var l=t.getFieldValue(e);n.getValue()!=l&&(n.setValueProcessData(l),i&&n.cellRendered())}})}i?(o.normalizeHeight(!0),o.table.options.rowFormatter&&o.table.options.rowFormatter(o.getComponent())):(o.initialized=!1,o.height=0,o.heightStyled=""),!1!==o.table.options.dataTree&&o.table.modExists("dataTree")&&o.table.modules.dataTree.redrawNeeded(t)&&(o.table.modules.dataTree.initializeRow(o),o.table.modules.dataTree.layoutRow(o),o.table.rowManager.refreshActiveData("tree",!1,!0)),o.table.options.rowUpdated.call(o.table,o.getComponent()),l()})},Row.prototype.getData=function(t){var e=this;return t?e.table.modExists("accessor")?e.table.modules.accessor.transformRow(e.data,t):void 0:this.data},Row.prototype.getCell=function(t){return t=this.table.columnManager.findColumn(t),this.cells.find(function(e){return e.column===t})},Row.prototype.getCellIndex=function(t){return this.cells.findIndex(function(e){return e===t})},Row.prototype.findNextEditableCell=function(t){var e=!1;if(t<this.cells.length-1)for(var o=t+1;o<this.cells.length;o++){var i=this.cells[o];if(i.column.modules.edit&&Tabulator.prototype.helpers.elVisible(i.getElement())){var n=!0;if("function"==typeof i.column.modules.edit.check&&(n=i.column.modules.edit.check(i.getComponent())),n){e=i;break}}}return e},Row.prototype.findPrevEditableCell=function(t){var e=!1;if(t>0)for(var o=t-1;o>=0;o--){var i=this.cells[o],n=!0;if(i.column.modules.edit&&Tabulator.prototype.helpers.elVisible(i.getElement())&&("function"==typeof i.column.modules.edit.check&&(n=i.column.modules.edit.check(i.getComponent())),n)){e=i;break}}return e},Row.prototype.getCells=function(){return this.cells},Row.prototype.nextRow=function(){return this.table.rowManager.nextDisplayRow(this,!0)||!1},Row.prototype.prevRow=function(){return this.table.rowManager.prevDisplayRow(this,!0)||!1},Row.prototype.moveToRow=function(t,e){var o=this.table.rowManager.findRow(t);o?(this.table.rowManager.moveRowActual(this,o,!e),this.table.rowManager.refreshActiveData("display",!1,!0)):console.warn("Move Error - No matching row found:",t)},Row.prototype.validate=function(){var t=[];return this.cells.forEach(function(e){e.validate()||t.push(e.getComponent())}),!t.length||t},Row.prototype.delete=function(){var t=this;return new Promise(function(e,o){var i,n;t.table.options.history&&t.table.modExists("history")&&(t.table.options.groupBy&&t.table.modExists("groupRows")?(n=t.getGroup().rows,(i=n.indexOf(t))&&(i=n[i-1])):(i=t.table.rowManager.getRowIndex(t))&&(i=t.table.rowManager.rows[i-1]),t.table.modules.history.action("rowDelete",t,{data:t.getData(),pos:!i,index:i})),t.deleteActual(),e()})},Row.prototype.deleteActual=function(t){this.table.rowManager.getRowIndex(this);this.table.modExists("selectRow")&&this.table.modules.selectRow._deselectRow(this,!0),this.table.modExists("edit")&&this.table.modules.edit.currentCell.row===this&&this.table.modules.edit.cancelEdit(),this.table.options.reactiveData&&this.table.modExists("reactiveData",!0),this.modules.group&&this.modules.group.removeRow(this),this.table.rowManager.deleteRow(this,t),this.deleteCells(),this.initialized=!1,this.heightInitialized=!1,this.table.options.dataTree&&this.table.modExists("dataTree",!0)&&this.table.modules.dataTree.rowDelete(this),this.table.modExists("columnCalcs")&&(this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.columnCalcs.recalcRowGroup(this):this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows))},Row.prototype.deleteCells=function(){for(var t=this.cells.length,e=0;e<t;e++)this.cells[0].delete()},Row.prototype.wipe=function(){for(this.deleteCells();this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.element=!1,this.modules={},this.element.parentNode&&this.element.parentNode.removeChild(this.element)},Row.prototype.getGroup=function(){return this.modules.group||!1},Row.prototype.getComponent=function(){return this.component||(this.component=new RowComponent(this)),this.component};var CellComponent=function(t){this._cell=t};CellComponent.prototype.getValue=function(){return this._cell.getValue()},CellComponent.prototype.getOldValue=function(){return this._cell.getOldValue()},CellComponent.prototype.getElement=function(){return this._cell.getElement()},CellComponent.prototype.getRow=function(){return this._cell.row.getComponent()},CellComponent.prototype.getData=function(){return this._cell.row.getData()},CellComponent.prototype.getField=function(){return this._cell.column.getField()},CellComponent.prototype.getColumn=function(){return this._cell.column.getComponent()},CellComponent.prototype.setValue=function(t,e){void 0===e&&(e=!0),this._cell.setValue(t,e)},CellComponent.prototype.restoreOldValue=function(){this._cell.setValueActual(this._cell.getOldValue())},CellComponent.prototype.edit=function(t){return this._cell.edit(t)},CellComponent.prototype.cancelEdit=function(){this._cell.cancelEdit()},CellComponent.prototype.isEdited=function(){return!!this._cell.modules.edit&&this._cell.modules.edit.edited},CellComponent.prototype.clearEdited=function(){self.table.modExists("edit",!0)&&this._cell.table.modules.edit.clearEdited(this._cell)},CellComponent.prototype.isValid=function(){return!this._cell.modules.validate||!this._cell.modules.validate.invalid},CellComponent.prototype.validate=function(){return this._cell.validate()},CellComponent.prototype.clearValidation=function(){self.table.modExists("validate",!0)&&this._cell.table.modules.validate.clearValidation(this._cell)},CellComponent.prototype.nav=function(){return this._cell.nav()},CellComponent.prototype.checkHeight=function(){this._cell.checkHeight()},CellComponent.prototype.getTable=function(){return this._cell.table},CellComponent.prototype._getSelf=function(){return this._cell};var Cell=function(t,e){this.table=t.table,this.column=t,this.row=e,this.element=null,this.value=null,this.oldValue=null,this.modules={},this.height=null,this.width=null,this.minWidth=null,this.component=null,this.build()};Cell.prototype.build=function(){this.generateElement(),this.setWidth(),this._configureCell(),this.setValueActual(this.column.getFieldValue(this.row.data))},Cell.prototype.generateElement=function(){this.element=document.createElement("div"),this.element.className="tabulator-cell",this.element.setAttribute("role","gridcell"),this.element=this.element},Cell.prototype._configureCell=function(){var t=this,e=t.column.cellEvents,o=t.element,i=this.column.getField(),n={top:"flex-start",bottom:"flex-end",middle:"center"},l={left:"flex-start",right:"flex-end",center:"center"};if(o.style.textAlign=t.column.hozAlign,t.column.vertAlign&&(o.style.display="inline-flex",o.style.alignItems=n[t.column.vertAlign]||"",t.column.hozAlign&&(o.style.justifyContent=l[t.column.hozAlign]||"")),i&&o.setAttribute("tabulator-field",i),t.column.definition.cssClass){t.column.definition.cssClass.split(" ").forEach(function(t){o.classList.add(t)})}"hover"===this.table.options.tooltipGenerationMode&&o.addEventListener("mouseenter",function(e){t._generateTooltip()}),t._bindClickEvents(e),t._bindTouchEvents(e),t._bindMouseEvents(e),t.column.modules.edit&&t.table.modules.edit.bindEditor(t),t.column.definition.rowHandle&&!1!==t.table.options.movableRows&&t.table.modExists("moveRow")&&t.table.modules.moveRow.initializeCell(t),t.column.visible||t.hide()},Cell.prototype._bindClickEvents=function(t){var e=this,o=e.element;(t.cellClick||e.table.options.cellClick)&&o.addEventListener("click",function(o){var i=e.getComponent();t.cellClick&&t.cellClick.call(e.table,o,i),e.table.options.cellClick&&e.table.options.cellClick.call(e.table,o,i)}),t.cellDblClick||this.table.options.cellDblClick?o.addEventListener("dblclick",function(o){var i=e.getComponent();t.cellDblClick&&t.cellDblClick.call(e.table,o,i),e.table.options.cellDblClick&&e.table.options.cellDblClick.call(e.table,o,i)}):o.addEventListener("dblclick",function(t){if(!e.table.modExists("edit")||e.table.modules.edit.currentCell!==e){t.preventDefault();try{if(document.selection){var o=document.body.createTextRange();o.moveToElementText(e.element),o.select()}else if(window.getSelection){var o=document.createRange();o.selectNode(e.element),window.getSelection().removeAllRanges(),window.getSelection().addRange(o)}}catch(t){}}}),(t.cellContext||this.table.options.cellContext)&&o.addEventListener("contextmenu",function(o){var i=e.getComponent();t.cellContext&&t.cellContext.call(e.table,o,i),e.table.options.cellContext&&e.table.options.cellContext.call(e.table,o,i)})},Cell.prototype._bindMouseEvents=function(t){var e=this,o=e.element;(t.cellMouseEnter||e.table.options.cellMouseEnter)&&o.addEventListener("mouseenter",function(o){var i=e.getComponent();t.cellMouseEnter&&t.cellMouseEnter.call(e.table,o,i),e.table.options.cellMouseEnter&&e.table.options.cellMouseEnter.call(e.table,o,i)}),(t.cellMouseLeave||e.table.options.cellMouseLeave)&&o.addEventListener("mouseleave",function(o){var i=e.getComponent();t.cellMouseLeave&&t.cellMouseLeave.call(e.table,o,i),e.table.options.cellMouseLeave&&e.table.options.cellMouseLeave.call(e.table,o,i)}),(t.cellMouseOver||e.table.options.cellMouseOver)&&o.addEventListener("mouseover",function(o){var i=e.getComponent();t.cellMouseOver&&t.cellMouseOver.call(e.table,o,i),e.table.options.cellMouseOver&&e.table.options.cellMouseOver.call(e.table,o,i)}),(t.cellMouseOut||e.table.options.cellMouseOut)&&o.addEventListener("mouseout",function(o){var i=e.getComponent();t.cellMouseOut&&t.cellMouseOut.call(e.table,o,i),e.table.options.cellMouseOut&&e.table.options.cellMouseOut.call(e.table,o,i)}),(t.cellMouseMove||e.table.options.cellMouseMove)&&o.addEventListener("mousemove",function(o){var i=e.getComponent();t.cellMouseMove&&t.cellMouseMove.call(e.table,o,i),e.table.options.cellMouseMove&&e.table.options.cellMouseMove.call(e.table,o,i)})},Cell.prototype._bindTouchEvents=function(t){var e,o,i,n=this,l=n.element;(t.cellTap||this.table.options.cellTap)&&(i=!1,l.addEventListener("touchstart",function(t){i=!0},{passive:!0}),l.addEventListener("touchend",function(e){if(i){var o=n.getComponent();t.cellTap&&t.cellTap.call(n.table,e,o),n.table.options.cellTap&&n.table.options.cellTap.call(n.table,e,o)}i=!1})),(t.cellDblTap||this.table.options.cellDblTap)&&(e=null,l.addEventListener("touchend",function(o){if(e){clearTimeout(e),e=null;var i=n.getComponent();t.cellDblTap&&t.cellDblTap.call(n.table,o,i),n.table.options.cellDblTap&&n.table.options.cellDblTap.call(n.table,o,i)}else e=setTimeout(function(){clearTimeout(e),e=null},300)})),(t.cellTapHold||this.table.options.cellTapHold)&&(o=null,l.addEventListener("touchstart",function(e){clearTimeout(o),o=setTimeout(function(){clearTimeout(o),o=null,i=!1;var l=n.getComponent();t.cellTapHold&&t.cellTapHold.call(n.table,e,l),n.table.options.cellTapHold&&n.table.options.cellTapHold.call(n.table,e,l)},1e3)},{passive:!0}),l.addEventListener("touchend",function(t){clearTimeout(o),o=null}))},Cell.prototype._generateContents=function(){var t;switch(t=this.table.modExists("format")?this.table.modules.format.formatValue(this):this.element.innerHTML=this.value,void 0===t?"undefined":_typeof(t)){case"object":if(t instanceof Node){for(;this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.element.appendChild(t)}else this.element.innerHTML="",null!=t&&console.warn("Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:",t);break;case"undefined":case"null":this.element.innerHTML="";break;default:this.element.innerHTML=t}},Cell.prototype.cellRendered=function(){this.table.modExists("format")&&this.table.modules.format.cellRendered&&this.table.modules.format.cellRendered(this)},Cell.prototype._generateTooltip=function(){var t=this.column.tooltip;t?(!0===t?t=this.value:"function"==typeof t&&!1===(t=t(this.getComponent()))&&(t=""),void 0===t&&(t=""),this.element.setAttribute("title",t)):this.element.setAttribute("title","")},Cell.prototype.getElement=function(){return this.element},Cell.prototype.getValue=function(){return this.value},Cell.prototype.getOldValue=function(){return this.oldValue},Cell.prototype.setValue=function(t,e){var o,i=this.setValueProcessData(t,e);i&&(this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("cellEdit",this,{oldValue:this.oldValue,newValue:this.value}),o=this.getComponent(),this.column.cellEvents.cellEdited&&this.column.cellEvents.cellEdited.call(this.table,o),this.cellRendered(),this.table.options.cellEdited.call(this.table,o),this.table.options.dataEdited.call(this.table,this.table.rowManager.getData()))},Cell.prototype.setValueProcessData=function(t,e){var o=!1;return this.value!=t&&(o=!0,e&&this.column.modules.mutate&&(t=this.table.modules.mutator.transformCell(this,t))),this.setValueActual(t),o&&this.table.modExists("columnCalcs")&&(this.column.definition.topCalc||this.column.definition.bottomCalc)&&(this.table.options.groupBy&&this.table.modExists("groupRows")?("table"!=this.table.options.columnCalcs&&"both"!=this.table.options.columnCalcs||this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),"table"!=this.table.options.columnCalcs&&this.table.modules.columnCalcs.recalcRowGroup(this.row)):this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows)),o},Cell.prototype.setValueActual=function(t){this.oldValue=this.value,this.value=t,this.table.options.reactiveData&&this.table.modExists("reactiveData")&&this.table.modules.reactiveData.block(),this.column.setFieldValue(this.row.data,t),this.table.options.reactiveData&&this.table.modExists("reactiveData")&&this.table.modules.reactiveData.unblock(),this._generateContents(),this._generateTooltip(),this.table.options.resizableColumns&&this.table.modExists("resizeColumns")&&this.table.modules.resizeColumns.initializeColumn("cell",this.column,this.element),this.column.definition.contextMenu&&this.table.modExists("menu")&&this.table.modules.menu.initializeCell(this),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layoutElement(this.element,this.column)},Cell.prototype.setWidth=function(){this.width=this.column.width,this.element.style.width=this.column.widthStyled},Cell.prototype.clearWidth=function(){this.width="",this.element.style.width=""},Cell.prototype.getWidth=function(){return this.width||this.element.offsetWidth},Cell.prototype.setMinWidth=function(){this.minWidth=this.column.minWidth,this.element.style.minWidth=this.column.minWidthStyled},Cell.prototype.checkHeight=function(){this.row.reinitializeHeight()},Cell.prototype.clearHeight=function(){this.element.style.height="",this.height=null},Cell.prototype.setHeight=function(){this.height=this.row.height,this.element.style.height=this.row.heightStyled},Cell.prototype.getHeight=function(){return this.height||this.element.offsetHeight},Cell.prototype.show=function(){this.element.style.display=""},Cell.prototype.hide=function(){this.element.style.display="none"},Cell.prototype.edit=function(t){if(this.table.modExists("edit",!0))return this.table.modules.edit.editCell(this,t)},Cell.prototype.cancelEdit=function(){if(this.table.modExists("edit",!0)){var t=this.table.modules.edit.getCurrentCell();t&&t._getSelf()===this?this.table.modules.edit.cancelEdit():console.warn("Cancel Editor Error - This cell is not currently being edited ")}},Cell.prototype.validate=function(){if(this.column.modules.validate&&this.table.modExists("validate",!0)){return!0===this.table.modules.validate.validate(this.column.modules.validate,this,this.getValue())}return!0},Cell.prototype.delete=function(){this.table.rowManager.redrawBlock||this.element.parentNode.removeChild(this.element),this.modules.validate&&this.modules.validate.invalid&&this.table.modules.validate.clearValidation(this),this.modules.edit&&this.modules.edit.edited&&this.table.modules.edit.clearEdited(this),this.element=!1,this.column.deleteCell(this),this.row.deleteCell(this),this.calcs={}},Cell.prototype.nav=function(){var t=this,e=!1,o=this.row.getCellIndex(this);return{next:function(){var e,o=this.right();return!!o||!(!(e=t.table.rowManager.nextDisplayRow(t.row,!0))||!(o=e.findNextEditableCell(-1)))&&(o.edit(),!0)},prev:function(){var e,o=this.left();return!!o||!(!(e=t.table.rowManager.prevDisplayRow(t.row,!0))||!(o=e.findPrevEditableCell(e.cells.length)))&&(o.edit(),!0)},left:function(){return!!(e=t.row.findPrevEditableCell(o))&&(e.edit(),!0)},right:function(){return!!(e=t.row.findNextEditableCell(o))&&(e.edit(),!0)},up:function(){var e=t.table.rowManager.prevDisplayRow(t.row,!0);e&&e.cells[o].edit()},down:function(){var e=t.table.rowManager.nextDisplayRow(t.row,!0);e&&e.cells[o].edit()}}},Cell.prototype.getIndex=function(){this.row.getCellIndex(this)},Cell.prototype.getComponent=function(){return this.component||(this.component=new CellComponent(this)),this.component};var FooterManager=function(t){this.table=t,this.active=!1,this.element=this.createElement(),this.external=!1,this.links=[],this._initialize()};FooterManager.prototype.createElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-footer"),t},FooterManager.prototype._initialize=function(t){if(this.table.options.footerElement)switch(_typeof(this.table.options.footerElement)){case"string":"<"===this.table.options.footerElement[0]?this.element.innerHTML=this.table.options.footerElement:(this.external=!0,this.element=document.querySelector(this.table.options.footerElement));break;default:this.element=this.table.options.footerElement}},FooterManager.prototype.getElement=function(){return this.element},FooterManager.prototype.append=function(t,e){this.activate(e),this.element.appendChild(t),this.table.rowManager.adjustTableSize()},FooterManager.prototype.prepend=function(t,e){this.activate(e),this.element.insertBefore(t,this.element.firstChild),this.table.rowManager.adjustTableSize()},FooterManager.prototype.remove=function(t){t.parentNode.removeChild(t),this.deactivate()},FooterManager.prototype.deactivate=function(t){this.element.firstChild&&!t||(this.external||this.element.parentNode.removeChild(this.element),this.active=!1)},FooterManager.prototype.activate=function(t){this.active||(this.active=!0,this.external||(this.table.element.appendChild(this.getElement()),this.table.element.style.display="")),t&&this.links.push(t)},FooterManager.prototype.redraw=function(){this.links.forEach(function(t){t.footerRedraw()})};var Tabulator=function t(e,o){this.options={},this.columnManager=null,this.rowManager=null,this.footerManager=null,this.browser="",this.browserSlow=!1,this.browserMobile=!1,this.modules={},this.initializeElement(e),this.initializeOptions(o||{}),this._create(),t.prototype.comms.register(this)};Tabulator.prototype.defaultOptions={height:!1,minHeight:!1,maxHeight:!1,layout:"fitData",layoutColumnsOnNewData:!1,columnMinWidth:40,columnHeaderVertAlign:"top",columnVertAlign:!1,resizableColumns:!0,resizableRows:!1,autoResize:!0,columns:[],cellHozAlign:"",cellVertAlign:"",data:[],autoColumns:!1,reactiveData:!1,nestedFieldSeparator:".",tooltips:!1,tooltipsHeader:!1,tooltipGenerationMode:"load",initialSort:!1,initialFilter:!1,initialHeaderFilter:!1,columnHeaderSortMulti:!0,sortOrderReverse:!1,headerSort:!0,headerSortTristate:!1,footerElement:!1,index:"id",keybindings:[],tabEndNewRow:!1,invalidOptionWarnings:!0,clipboard:!1,clipboardCopyStyled:!0,clipboardCopyConfig:!1,clipboardCopyFormatter:!1,clipboardCopyRowRange:"active",clipboardPasteParser:"table",clipboardPasteAction:"insert",clipboardCopied:function(){},clipboardPasted:function(){},clipboardPasteError:function(){},downloadDataFormatter:!1,downloadReady:function(t,e){return e},downloadComplete:!1,downloadConfig:{},downloadRowRange:"active",dataTree:!1,dataTreeElementColumn:!1,dataTreeBranchElement:!0,dataTreeChildIndent:9,dataTreeChildField:"_children",dataTreeCollapseElement:!1,dataTreeExpandElement:!1,dataTreeStartExpanded:!1,dataTreeRowExpanded:function(){},dataTreeRowCollapsed:function(){},dataTreeChildColumnCalcs:!1,dataTreeSelectPropagate:!1,printAsHtml:!1,printFormatter:!1,printHeader:!1,printFooter:!1,printCopyStyle:!0,printStyled:!0,printVisibleRows:!0,printRowRange:"visible",printConfig:{},addRowPos:"bottom",selectable:"highlight",selectableRangeMode:"drag",selectableRollingSelection:!0,selectablePersistence:!0,selectableCheck:function(t,e){return!0},headerFilterLiveFilterDelay:300,headerFilterPlaceholder:!1,headerVisible:!0,history:!1,locale:!1,langs:{},virtualDom:!0,virtualDomBuffer:0,persistentLayout:!1,persistentSort:!1,persistentFilter:!1,persistenceID:"",persistenceMode:!0,persistenceReaderFunc:!1,persistenceWriterFunc:!1,persistence:!1,responsiveLayout:!1,responsiveLayoutCollapseStartOpen:!0,responsiveLayoutCollapseUseFormatters:!0,responsiveLayoutCollapseFormatter:!1,pagination:!1,paginationSize:!1,paginationInitialPage:1,paginationButtonCount:5,paginationSizeSelector:!1,paginationElement:!1,paginationDataSent:{},paginationDataReceived:{},paginationAddRow:"page",ajaxURL:!1,ajaxURLGenerator:!1,ajaxParams:{},ajaxConfig:"get",ajaxContentType:"form",ajaxRequestFunc:!1,ajaxLoader:!0,ajaxLoaderLoading:!1,ajaxLoaderError:!1,ajaxFiltering:!1,ajaxSorting:!1,ajaxProgressiveLoad:!1,ajaxProgressiveLoadDelay:0,ajaxProgressiveLoadScrollMargin:0,groupBy:!1,groupStartOpen:!0,groupValues:!1,groupHeader:!1,groupHeaderPrint:null,
-groupHeaderClipboard:null,groupHeaderHtmlOutput:null,groupHeaderDownload:null,htmlOutputConfig:!1,movableColumns:!1,movableRows:!1,movableRowsConnectedTables:!1,movableRowsConnectedElements:!1,movableRowsSender:!1,movableRowsReceiver:"insert",movableRowsSendingStart:function(){},movableRowsSent:function(){},movableRowsSentFailed:function(){},movableRowsSendingStop:function(){},movableRowsReceivingStart:function(){},movableRowsReceived:function(){},movableRowsReceivedFailed:function(){},movableRowsReceivingStop:function(){},movableRowsElementDrop:function(){},scrollToRowPosition:"top",scrollToRowIfVisible:!0,scrollToColumnPosition:"left",scrollToColumnIfVisible:!0,rowFormatter:!1,rowFormatterPrint:null,rowFormatterClipboard:null,rowFormatterHtmlOutput:null,placeholder:!1,tableBuilding:function(){},tableBuilt:function(){},renderStarted:function(){},renderComplete:function(){},rowClick:!1,rowDblClick:!1,rowContext:!1,rowTap:!1,rowDblTap:!1,rowTapHold:!1,rowMouseEnter:!1,rowMouseLeave:!1,rowMouseOver:!1,rowMouseOut:!1,rowMouseMove:!1,rowContextMenu:!1,rowAdded:function(){},rowDeleted:function(){},rowMoved:function(){},rowUpdated:function(){},rowSelectionChanged:function(){},rowSelected:function(){},rowDeselected:function(){},rowResized:function(){},cellClick:!1,cellDblClick:!1,cellContext:!1,cellTap:!1,cellDblTap:!1,cellTapHold:!1,cellMouseEnter:!1,cellMouseLeave:!1,cellMouseOver:!1,cellMouseOut:!1,cellMouseMove:!1,cellEditing:function(){},cellEdited:function(){},cellEditCancelled:function(){},columnMoved:!1,columnResized:function(){},columnTitleChanged:function(){},columnVisibilityChanged:function(){},htmlImporting:function(){},htmlImported:function(){},dataLoading:function(){},dataLoaded:function(){},dataEdited:function(){},ajaxRequesting:function(){},ajaxResponse:!1,ajaxError:function(){},dataFiltering:!1,dataFiltered:!1,dataSorting:function(){},dataSorted:function(){},groupToggleElement:"arrow",groupClosedShowCalcs:!1,dataGrouping:function(){},dataGrouped:!1,groupVisibilityChanged:function(){},groupClick:!1,groupDblClick:!1,groupContext:!1,groupContextMenu:!1,groupTap:!1,groupDblTap:!1,groupTapHold:!1,columnCalcs:!0,pageLoaded:function(){},localized:function(){},validationMode:"blocking",validationFailed:function(){},historyUndo:function(){},historyRedo:function(){},scrollHorizontal:function(){},scrollVertical:function(){}},Tabulator.prototype.initializeOptions=function(t){if(!1!==t.invalidOptionWarnings)for(var e in t)void 0===this.defaultOptions[e]&&console.warn("Invalid table constructor option:",e);for(var e in this.defaultOptions)e in t?this.options[e]=t[e]:Array.isArray(this.defaultOptions[e])?this.options[e]=[]:"object"===_typeof(this.defaultOptions[e])&&null!==this.defaultOptions[e]?this.options[e]={}:this.options[e]=this.defaultOptions[e]},Tabulator.prototype.initializeElement=function(t){return"undefined"!=typeof HTMLElement&&t instanceof HTMLElement?(this.element=t,!0):"string"==typeof t?(this.element=document.querySelector(t),!!this.element||(console.error("Tabulator Creation Error - no element found matching selector: ",t),!1)):(console.error("Tabulator Creation Error - Invalid element provided:",t),!1)},Tabulator.prototype._mapDepricatedFunctionality=function(){(this.options.persistentLayout||this.options.persistentSort||this.options.persistentFilter)&&(this.options.persistence||(this.options.persistence={})),this.options.downloadDataFormatter&&console.warn("DEPRECATION WARNING - downloadDataFormatter option has been deprecated"),void 0!==this.options.clipboardCopyHeader&&(this.options.columnHeaders=this.options.clipboardCopyHeader,console.warn("DEPRECATION WARNING - clipboardCopyHeader option has been deprecated, please use the columnHeaders property on the clipboardCopyConfig option")),!0!==this.options.printVisibleRows&&(console.warn("printVisibleRows option is deprecated, you should now use the printRowRange option"),this.options.persistence.printRowRange="active"),!0!==this.options.printCopyStyle&&(console.warn("printCopyStyle option is deprecated, you should now use the printStyled option"),this.options.persistence.printStyled=this.options.printCopyStyle),this.options.persistentLayout&&(console.warn("persistentLayout option is deprecated, you should now use the persistence option"),!0!==this.options.persistence&&void 0===this.options.persistence.columns&&(this.options.persistence.columns=!0)),this.options.persistentSort&&(console.warn("persistentSort option is deprecated, you should now use the persistence option"),!0!==this.options.persistence&&void 0===this.options.persistence.sort&&(this.options.persistence.sort=!0)),this.options.persistentFilter&&(console.warn("persistentFilter option is deprecated, you should now use the persistence option"),!0!==this.options.persistence&&void 0===this.options.persistence.filter&&(this.options.persistence.filter=!0)),this.options.columnVertAlign&&(console.warn("columnVertAlign option is deprecated, you should now use the columnHeaderVertAlign option"),this.options.columnHeaderVertAlign=this.options.columnVertAlign)},Tabulator.prototype._clearSelection=function(){this.element.classList.add("tabulator-block-select"),window.getSelection?window.getSelection().empty?window.getSelection().empty():window.getSelection().removeAllRanges&&window.getSelection().removeAllRanges():document.selection&&document.selection.empty(),this.element.classList.remove("tabulator-block-select")},Tabulator.prototype._create=function(){this._clearObjectPointers(),this._mapDepricatedFunctionality(),this.bindModules(),"TABLE"===this.element.tagName&&this.modExists("htmlTableImport",!0)&&this.modules.htmlTableImport.parseTable(),this.columnManager=new ColumnManager(this),this.rowManager=new RowManager(this),this.footerManager=new FooterManager(this),this.columnManager.setRowManager(this.rowManager),this.rowManager.setColumnManager(this.columnManager),this._buildElement(),this._loadInitialData()},Tabulator.prototype._clearObjectPointers=function(){this.options.columns=this.options.columns.slice(0),this.options.reactiveData||(this.options.data=this.options.data.slice(0))},Tabulator.prototype._buildElement=function(){var t=this,e=this.element,o=this.modules,i=this.options;for(i.tableBuilding.call(this),e.classList.add("tabulator"),e.setAttribute("role","grid");e.firstChild;)e.removeChild(e.firstChild);i.height&&(i.height=isNaN(i.height)?i.height:i.height+"px",e.style.height=i.height),!1!==i.minHeight&&(i.minHeight=isNaN(i.minHeight)?i.minHeight:i.minHeight+"px",e.style.minHeight=i.minHeight),!1!==i.maxHeight&&(i.maxHeight=isNaN(i.maxHeight)?i.maxHeight:i.maxHeight+"px",e.style.maxHeight=i.maxHeight),this.columnManager.initialize(),this.rowManager.initialize(),this._detectBrowser(),this.modExists("layout",!0)&&o.layout.initialize(i.layout),!1!==i.headerFilterPlaceholder&&o.localize.setHeaderFilterPlaceholder(i.headerFilterPlaceholder);for(var n in i.langs)o.localize.installLang(n,i.langs[n]);if(o.localize.setLocale(i.locale),"string"==typeof i.placeholder){var l=document.createElement("div");l.classList.add("tabulator-placeholder");var s=document.createElement("span");s.innerHTML=i.placeholder,l.appendChild(s),i.placeholder=l}if(e.appendChild(this.columnManager.getElement()),e.appendChild(this.rowManager.getElement()),i.footerElement&&this.footerManager.activate(),i.persistence&&this.modExists("persistence",!0)&&o.persistence.initialize(),i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.columns&&(i.columns=o.persistence.load("columns",i.columns)),i.movableRows&&this.modExists("moveRow")&&o.moveRow.initialize(),i.autoColumns&&this.options.data&&this.columnManager.generateColumnsFromRowData(this.options.data),this.modExists("columnCalcs")&&o.columnCalcs.initialize(),this.columnManager.setColumns(i.columns),i.dataTree&&this.modExists("dataTree",!0)&&o.dataTree.initialize(),this.modExists("frozenRows")&&this.modules.frozenRows.initialize(),(i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.sort||i.initialSort)&&this.modExists("sort",!0)){var a=[];i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.sort?!1===(a=o.persistence.load("sort"))&&i.initialSort&&(a=i.initialSort):i.initialSort&&(a=i.initialSort),o.sort.setSort(a)}if((i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.filter||i.initialFilter)&&this.modExists("filter",!0)){var r=[];i.persistence&&this.modExists("persistence",!0)&&o.persistence.config.filter?!1===(r=o.persistence.load("filter"))&&i.initialFilter&&(r=i.initialFilter):i.initialFilter&&(r=i.initialFilter),o.filter.setFilter(r)}i.initialHeaderFilter&&this.modExists("filter",!0)&&i.initialHeaderFilter.forEach(function(e){var i=t.columnManager.findColumn(e.field);if(!i)return console.warn("Column Filter Error - No matching column found:",e.field),!1;o.filter.setHeaderFilterValue(i,e.value)}),this.modExists("ajax")&&o.ajax.initialize(),i.pagination&&this.modExists("page",!0)&&o.page.initialize(),i.groupBy&&this.modExists("groupRows",!0)&&o.groupRows.initialize(),this.modExists("keybindings")&&o.keybindings.initialize(),this.modExists("selectRow")&&o.selectRow.clearSelectionData(!0),i.autoResize&&this.modExists("resizeTable")&&o.resizeTable.initialize(),this.modExists("clipboard")&&o.clipboard.initialize(),i.printAsHtml&&this.modExists("print")&&o.print.initialize(),i.tableBuilt.call(this)},Tabulator.prototype._loadInitialData=function(){var t=this;if(t.options.pagination&&t.modExists("page"))if(t.modules.page.reset(!0,!0),"local"==t.options.pagination){if(t.options.data.length)t.rowManager.setData(t.options.data,!1,!0);else{if((t.options.ajaxURL||t.options.ajaxURLGenerator)&&t.modExists("ajax"))return void t.modules.ajax.loadData(!1,!0).then(function(){}).catch(function(){t.options.paginationInitialPage&&t.modules.page.setPage(t.options.paginationInitialPage)});t.rowManager.setData(t.options.data,!1,!0)}t.options.paginationInitialPage&&t.modules.page.setPage(t.options.paginationInitialPage)}else t.options.ajaxURL?t.modules.page.setPage(t.options.paginationInitialPage).then(function(){}).catch(function(){}):t.rowManager.setData([],!1,!0);else t.options.data.length?t.rowManager.setData(t.options.data):(t.options.ajaxURL||t.options.ajaxURLGenerator)&&t.modExists("ajax")?t.modules.ajax.loadData(!1,!0).then(function(){}).catch(function(){}):t.rowManager.setData(t.options.data,!1,!0)},Tabulator.prototype.destroy=function(){var t=this.element;for(Tabulator.prototype.comms.deregister(this),this.options.reactiveData&&this.modExists("reactiveData",!0)&&this.modules.reactiveData.unwatchData(),this.rowManager.rows.forEach(function(t){t.wipe()}),this.rowManager.rows=[],this.rowManager.activeRows=[],this.rowManager.displayRows=[],this.options.autoResize&&this.modExists("resizeTable")&&this.modules.resizeTable.clearBindings(),this.modExists("keybindings")&&this.modules.keybindings.clearBindings();t.firstChild;)t.removeChild(t.firstChild);t.classList.remove("tabulator")},Tabulator.prototype._detectBrowser=function(){var t=navigator.userAgent||navigator.vendor||window.opera;t.indexOf("Trident")>-1?(this.browser="ie",this.browserSlow=!0):t.indexOf("Edge")>-1?(this.browser="edge",this.browserSlow=!0):t.indexOf("Firefox")>-1?(this.browser="firefox",this.browserSlow=!1):(this.browser="other",this.browserSlow=!1),this.browserMobile=/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(t)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(t.substr(0,4))},Tabulator.prototype.blockRedraw=function(){return this.rowManager.blockRedraw()},Tabulator.prototype.restoreRedraw=function(){return this.rowManager.restoreRedraw()},Tabulator.prototype.setDataFromLocalFile=function(t){var e=this;return new Promise(function(o,i){var n=document.createElement("input");n.type="file",n.accept=t||".json,application/json",n.addEventListener("change",function(t){var l,s=n.files[0],a=new FileReader;a.readAsText(s),a.onload=function(t){try{l=JSON.parse(a.result)}catch(t){return console.warn("File Load Error - File contents is invalid JSON",t),void i(t)}e._setData(l).then(function(t){o(t)}).catch(function(t){o(t)})},a.onerror=function(t){console.warn("File Load Error - Unable to read file"),i()}}),n.click()})},Tabulator.prototype.setData=function(t,e,o){return this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this._setData(t,e,o,!1,!0)},Tabulator.prototype._setData=function(t,e,o,i,n){var l=this;return"string"!=typeof t?t?l.rowManager.setData(t,i,n):l.modExists("ajax")&&(l.modules.ajax.getUrl||l.options.ajaxURLGenerator)?"remote"==l.options.pagination&&l.modExists("page",!0)?(l.modules.page.reset(!0,!0),l.modules.page.setPage(1)):l.modules.ajax.loadData(i,n):l.rowManager.setData([],i,n):0==t.indexOf("{")||0==t.indexOf("[")?l.rowManager.setData(JSON.parse(t),i,n):l.modExists("ajax",!0)?(e&&l.modules.ajax.setParams(e),o&&l.modules.ajax.setConfig(o),l.modules.ajax.setUrl(t),"remote"==l.options.pagination&&l.modExists("page",!0)?(l.modules.page.reset(!0,!0),l.modules.page.setPage(1)):l.modules.ajax.loadData(i,n)):void 0},Tabulator.prototype.clearData=function(){this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this.rowManager.clearData()},Tabulator.prototype.getData=function(t){return!0===t&&(console.warn("passing a boolean to the getData function is deprecated, you should now pass the string 'active'"),t="active"),this.rowManager.getData(t)},Tabulator.prototype.getDataCount=function(t){return!0===t&&(console.warn("passing a boolean to the getDataCount function is deprecated, you should now pass the string 'active'"),t="active"),this.rowManager.getDataCount(t)},Tabulator.prototype.searchRows=function(t,e,o){if(this.modExists("filter",!0))return this.modules.filter.search("rows",t,e,o)},Tabulator.prototype.searchData=function(t,e,o){if(this.modExists("filter",!0))return this.modules.filter.search("data",t,e,o)},Tabulator.prototype.getHtml=function(t,e,o){if(this.modExists("export",!0))return this.modules.export.getHtml(t,e,o)},Tabulator.prototype.print=function(t,e,o){if(this.modExists("print",!0))return this.modules.print.printFullscreen(t,e,o)},Tabulator.prototype.getAjaxUrl=function(){if(this.modExists("ajax",!0))return this.modules.ajax.getUrl()},Tabulator.prototype.replaceData=function(t,e,o){return this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this._setData(t,e,o,!0)},Tabulator.prototype.updateData=function(t){var e=this,o=this,i=0;return new Promise(function(n,l){e.modExists("ajax")&&e.modules.ajax.blockActiveRequest(),"string"==typeof t&&(t=JSON.parse(t)),t?t.forEach(function(t){var e=o.rowManager.findRow(t[o.options.index]);e&&(i++,e.updateData(t).then(function(){--i||n()}))}):(console.warn("Update Error - No data provided"),l("Update Error - No data provided"))})},Tabulator.prototype.addData=function(t,e,o){var i=this;return new Promise(function(n,l){i.modExists("ajax")&&i.modules.ajax.blockActiveRequest(),"string"==typeof t&&(t=JSON.parse(t)),t?i.rowManager.addRows(t,e,o).then(function(t){var e=[];t.forEach(function(t){e.push(t.getComponent())}),n(e)}):(console.warn("Update Error - No data provided"),l("Update Error - No data provided"))})},Tabulator.prototype.updateOrAddData=function(t){var e=this,o=this,i=[],n=0;return new Promise(function(l,s){e.modExists("ajax")&&e.modules.ajax.blockActiveRequest(),"string"==typeof t&&(t=JSON.parse(t)),t?t.forEach(function(t){var e=o.rowManager.findRow(t[o.options.index]);n++,e?e.updateData(t).then(function(){n--,i.push(e.getComponent()),n||l(i)}):o.rowManager.addRows(t).then(function(t){n--,i.push(t[0].getComponent()),n||l(i)})}):(console.warn("Update Error - No data provided"),s("Update Error - No data provided"))})},Tabulator.prototype.getRow=function(t){var e=this.rowManager.findRow(t);return e?e.getComponent():(console.warn("Find Error - No matching row found:",t),!1)},Tabulator.prototype.getRowFromPosition=function(t,e){var o=this.rowManager.getRowFromPosition(t,e);return o?o.getComponent():(console.warn("Find Error - No matching row found:",t),!1)},Tabulator.prototype.deleteRow=function(t){var e=this;return new Promise(function(o,i){function n(){++s==t.length&&a&&(l.rowManager.reRenderInPosition(),o())}var l=e,s=0,a=0,r=[];Array.isArray(t)||(t=[t]),t.forEach(function(t){var o=e.rowManager.findRow(t,!0);o?r.push(o):(console.warn("Delete Error - No matching row found:",t),i("Delete Error - No matching row found"),n())}),r.sort(function(t,o){return e.rowManager.rows.indexOf(t)>e.rowManager.rows.indexOf(o)?1:-1}),r.forEach(function(t){t.delete().then(function(){a++,n()}).catch(function(t){n(),i(t)})})})},Tabulator.prototype.addRow=function(t,e,o){var i=this;return new Promise(function(n,l){"string"==typeof t&&(t=JSON.parse(t)),i.rowManager.addRows(t,e,o).then(function(t){i.modExists("columnCalcs")&&i.modules.columnCalcs.recalc(i.rowManager.activeRows),n(t[0].getComponent())})})},Tabulator.prototype.updateOrAddRow=function(t,e){var o=this;return new Promise(function(i,n){var l=o.rowManager.findRow(t);"string"==typeof e&&(e=JSON.parse(e)),l?l.updateData(e).then(function(){o.modExists("columnCalcs")&&o.modules.columnCalcs.recalc(o.rowManager.activeRows),i(l.getComponent())}).catch(function(t){n(t)}):l=o.rowManager.addRows(e).then(function(t){o.modExists("columnCalcs")&&o.modules.columnCalcs.recalc(o.rowManager.activeRows),i(t[0].getComponent())}).catch(function(t){n(t)})})},Tabulator.prototype.updateRow=function(t,e){var o=this;return new Promise(function(i,n){var l=o.rowManager.findRow(t);"string"==typeof e&&(e=JSON.parse(e)),l?l.updateData(e).then(function(){i(l.getComponent())}).catch(function(t){n(t)}):(console.warn("Update Error - No matching row found:",t),n("Update Error - No matching row found"))})},Tabulator.prototype.scrollToRow=function(t,e,o){var i=this;return new Promise(function(n,l){var s=i.rowManager.findRow(t);s?i.rowManager.scrollToRow(s,e,o).then(function(){n()}).catch(function(t){l(t)}):(console.warn("Scroll Error - No matching row found:",t),l("Scroll Error - No matching row found"))})},Tabulator.prototype.moveRow=function(t,e,o){var i=this.rowManager.findRow(t);i?i.moveToRow(e,o):console.warn("Move Error - No matching row found:",t)},Tabulator.prototype.getRows=function(t){return!0===t&&(console.warn("passing a boolean to the getRows function is deprecated, you should now pass the string 'active'"),t="active"),this.rowManager.getComponents(t)},Tabulator.prototype.getRowPosition=function(t,e){var o=this.rowManager.findRow(t);return o?this.rowManager.getRowPosition(o,e):(console.warn("Position Error - No matching row found:",t),!1)},Tabulator.prototype.copyToClipboard=function(t){this.modExists("clipboard",!0)&&this.modules.clipboard.copy(t)},Tabulator.prototype.setColumns=function(t){this.columnManager.setColumns(t)},Tabulator.prototype.getColumns=function(t){return this.columnManager.getComponents(t)},Tabulator.prototype.getColumn=function(t){var e=this.columnManager.findColumn(t);return e?e.getComponent():(console.warn("Find Error - No matching column found:",t),!1)},Tabulator.prototype.getColumnDefinitions=function(){return this.columnManager.getDefinitionTree()},Tabulator.prototype.getColumnLayout=function(){if(this.modExists("persistence",!0))return this.modules.persistence.parseColumns(this.columnManager.getColumns())},Tabulator.prototype.setColumnLayout=function(t){return!!this.modExists("persistence",!0)&&(this.columnManager.setColumns(this.modules.persistence.mergeDefinition(this.options.columns,t)),!0)},Tabulator.prototype.showColumn=function(t){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Show Error - No matching column found:",t),!1;e.show(),this.options.responsiveLayout&&this.modExists("responsiveLayout",!0)&&this.modules.responsiveLayout.update()},Tabulator.prototype.hideColumn=function(t){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Hide Error - No matching column found:",t),!1;e.hide(),this.options.responsiveLayout&&this.modExists("responsiveLayout",!0)&&this.modules.responsiveLayout.update()},Tabulator.prototype.toggleColumn=function(t){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Visibility Toggle Error - No matching column found:",t),!1;e.visible?e.hide():e.show()},Tabulator.prototype.addColumn=function(t,e,o){var i=this;return new Promise(function(n,l){var s=i.columnManager.findColumn(o);i.columnManager.addColumn(t,e,s).then(function(t){n(t.getComponent())}).catch(function(t){l(t)})})},Tabulator.prototype.deleteColumn=function(t){var e=this;return new Promise(function(o,i){var n=e.columnManager.findColumn(t);n?n.delete().then(function(){o()}).catch(function(t){i(t)}):(console.warn("Column Delete Error - No matching column found:",t),i())})},Tabulator.prototype.updateColumnDefinition=function(t,e){var o=this;return new Promise(function(i,n){var l=o.columnManager.findColumn(t);l?l.updateDefinition(e).then(function(t){i(t)}).catch(function(t){n(t)}):(console.warn("Column Update Error - No matching column found:",t),n())})},Tabulator.prototype.moveColumn=function(t,e,o){var i=this.columnManager.findColumn(t),n=this.columnManager.findColumn(e);i?n?this.columnManager.moveColumn(i,n,o):console.warn("Move Error - No matching column found:",n):console.warn("Move Error - No matching column found:",t)},Tabulator.prototype.scrollToColumn=function(t,e,o){var i=this;return new Promise(function(n,l){var s=i.columnManager.findColumn(t);s?i.columnManager.scrollToColumn(s,e,o).then(function(){n()}).catch(function(t){l(t)}):(console.warn("Scroll Error - No matching column found:",t),l("Scroll Error - No matching column found"))})},Tabulator.prototype.setLocale=function(t){this.modules.localize.setLocale(t)},Tabulator.prototype.getLocale=function(){return this.modules.localize.getLocale()},Tabulator.prototype.getLang=function(t){return this.modules.localize.getLang(t)},Tabulator.prototype.redraw=function(t){this.columnManager.redraw(t),this.rowManager.redraw(t)},Tabulator.prototype.setHeight=function(t){"classic"!==this.rowManager.renderMode?(this.options.height=isNaN(t)?t:t+"px",this.element.style.height=this.options.height,this.rowManager.setRenderMode(),this.rowManager.redraw()):console.warn("setHeight function is not available in classic render mode")},Tabulator.prototype.setSort=function(t,e){this.modExists("sort",!0)&&(this.modules.sort.setSort(t,e),this.rowManager.sorterRefresh())},Tabulator.prototype.getSorters=function(){if(this.modExists("sort",!0))return this.modules.sort.getSort()},Tabulator.prototype.clearSort=function(){this.modExists("sort",!0)&&(this.modules.sort.clear(),this.rowManager.sorterRefresh())},Tabulator.prototype.setFilter=function(t,e,o,i){this.modExists("filter",!0)&&(this.modules.filter.setFilter(t,e,o,i),this.rowManager.filterRefresh())},Tabulator.prototype.addFilter=function(t,e,o,i){this.modExists("filter",!0)&&(this.modules.filter.addFilter(t,e,o,i),this.rowManager.filterRefresh())},Tabulator.prototype.getFilters=function(t){if(this.modExists("filter",!0))return this.modules.filter.getFilters(t)},Tabulator.prototype.setHeaderFilterFocus=function(t){if(this.modExists("filter",!0)){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Filter Focus Error - No matching column found:",t),!1;this.modules.filter.setHeaderFilterFocus(e)}},Tabulator.prototype.getHeaderFilterValue=function(t){if(this.modExists("filter",!0)){var e=this.columnManager.findColumn(t);if(e)return this.modules.filter.getHeaderFilterValue(e);console.warn("Column Filter Error - No matching column found:",t)}},Tabulator.prototype.setHeaderFilterValue=function(t,e){if(this.modExists("filter",!0)){var o=this.columnManager.findColumn(t);if(!o)return console.warn("Column Filter Error - No matching column found:",t),!1;this.modules.filter.setHeaderFilterValue(o,e)}},Tabulator.prototype.getHeaderFilters=function(){if(this.modExists("filter",!0))return this.modules.filter.getHeaderFilters()},Tabulator.prototype.removeFilter=function(t,e,o){this.modExists("filter",!0)&&(this.modules.filter.removeFilter(t,e,o),this.rowManager.filterRefresh())},Tabulator.prototype.clearFilter=function(t){this.modExists("filter",!0)&&(this.modules.filter.clearFilter(t),this.rowManager.filterRefresh())},Tabulator.prototype.clearHeaderFilter=function(){this.modExists("filter",!0)&&(this.modules.filter.clearHeaderFilter(),this.rowManager.filterRefresh())},Tabulator.prototype.selectRow=function(t){this.modExists("selectRow",!0)&&(!0===t&&(console.warn("passing a boolean to the selectRowselectRow function is deprecated, you should now pass the string 'active'"),t="active"),this.modules.selectRow.selectRows(t))},Tabulator.prototype.deselectRow=function(t){this.modExists("selectRow",!0)&&this.modules.selectRow.deselectRows(t)},Tabulator.prototype.toggleSelectRow=function(t){this.modExists("selectRow",!0)&&this.modules.selectRow.toggleRow(t)},Tabulator.prototype.getSelectedRows=function(){if(this.modExists("selectRow",!0))return this.modules.selectRow.getSelectedRows()},Tabulator.prototype.getSelectedData=function(){if(this.modExists("selectRow",!0))return this.modules.selectRow.getSelectedData()},Tabulator.prototype.getInvalidCells=function(){if(this.modExists("validate",!0))return this.modules.validate.getInvalidCells()},Tabulator.prototype.clearCellValidation=function(t){var e=this;this.modExists("validate",!0)&&(t||(t=this.modules.validate.getInvalidCells()),Array.isArray(t)||(t=[t]),t.forEach(function(t){e.modules.validate.clearValidation(t._getSelf())}))},Tabulator.prototype.validate=function(t){var e=[];return this.rowManager.rows.forEach(function(t){var o=t.validate();!0!==o&&(e=e.concat(o))}),!e.length||e},Tabulator.prototype.setMaxPage=function(t){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.setMaxPage(t)},Tabulator.prototype.setPage=function(t){return this.options.pagination&&this.modExists("page")?this.modules.page.setPage(t):new Promise(function(t,e){e()})},Tabulator.prototype.setPageToRow=function(t){var e=this;return new Promise(function(o,i){e.options.pagination&&e.modExists("page")?(t=e.rowManager.findRow(t),t?e.modules.page.setPageToRow(t).then(function(){o()}).catch(function(){i()}):i()):i()})},Tabulator.prototype.setPageSize=function(t){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.setPageSize(t),this.modules.page.setPage(1).then(function(){}).catch(function(){})},Tabulator.prototype.getPageSize=function(){if(this.options.pagination&&this.modExists("page",!0))return this.modules.page.getPageSize()},Tabulator.prototype.previousPage=function(){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.previousPage()},Tabulator.prototype.nextPage=function(){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.nextPage()},Tabulator.prototype.getPage=function(){return!(!this.options.pagination||!this.modExists("page"))&&this.modules.page.getPage()},Tabulator.prototype.getPageMax=function(){return!(!this.options.pagination||!this.modExists("page"))&&this.modules.page.getPageMax()},Tabulator.prototype.setGroupBy=function(t){if(!this.modExists("groupRows",!0))return!1;this.options.groupBy=t,this.modules.groupRows.initialize(),this.rowManager.refreshActiveData("display"),this.options.persistence&&this.modExists("persistence",!0)&&this.modules.persistence.config.group&&this.modules.persistence.save("group")},Tabulator.prototype.setGroupStartOpen=function(t){if(!this.modExists("groupRows",!0))return!1;this.options.groupStartOpen=t,this.modules.groupRows.initialize(),this.options.groupBy?(this.rowManager.refreshActiveData("group"),this.options.persistence&&this.modExists("persistence",!0)&&this.modules.persistence.config.group&&this.modules.persistence.save("group")):console.warn("Grouping Update - cant refresh view, no groups have been set")},Tabulator.prototype.setGroupHeader=function(t){if(!this.modExists("groupRows",!0))return!1;this.options.groupHeader=t,this.modules.groupRows.initialize(),this.options.groupBy?(this.rowManager.refreshActiveData("group"),this.options.persistence&&this.modExists("persistence",!0)&&this.modules.persistence.config.group&&this.modules.persistence.save("group")):console.warn("Grouping Update - cant refresh view, no groups have been set")},Tabulator.prototype.getGroups=function(t){return!!this.modExists("groupRows",!0)&&this.modules.groupRows.getGroups(!0)},Tabulator.prototype.getGroupedData=function(){if(this.modExists("groupRows",!0))return this.options.groupBy?this.modules.groupRows.getGroupedData():this.getData()},Tabulator.prototype.getEditedCells=function(){if(this.modExists("edit",!0))return this.modules.edit.getEditedCells()},Tabulator.prototype.clearCellEdited=function(t){var e=this;this.modExists("edit",!0)&&(t||(t=this.modules.edit.getEditedCells()),Array.isArray(t)||(t=[t]),t.forEach(function(t){e.modules.edit.clearEdited(t._getSelf())}))},Tabulator.prototype.getCalcResults=function(){return!!this.modExists("columnCalcs",!0)&&this.modules.columnCalcs.getResults()},Tabulator.prototype.recalc=function(){this.modExists("columnCalcs",!0)&&this.modules.columnCalcs.recalcAll(this.rowManager.activeRows)},Tabulator.prototype.navigatePrev=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&t.nav().prev()},Tabulator.prototype.navigateNext=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&t.nav().next()},Tabulator.prototype.navigateLeft=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().left())},Tabulator.prototype.navigateRight=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().right())},Tabulator.prototype.navigateUp=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().up())},Tabulator.prototype.navigateDown=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().down())},Tabulator.prototype.undo=function(){
-return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.undo()},Tabulator.prototype.redo=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.redo()},Tabulator.prototype.getHistoryUndoSize=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.getHistoryUndoSize()},Tabulator.prototype.getHistoryRedoSize=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.getHistoryRedoSize()},Tabulator.prototype.download=function(t,e,o,i){this.modExists("download",!0)&&this.modules.download.download(t,e,o,i)},Tabulator.prototype.downloadToTab=function(t,e,o,i){this.modExists("download",!0)&&this.modules.download.download(t,e,o,i,!0)},Tabulator.prototype.tableComms=function(t,e,o,i){this.modules.comms.receive(t,e,o,i)},Tabulator.prototype.moduleBindings={},Tabulator.prototype.extendModule=function(t,e,o){if(Tabulator.prototype.moduleBindings[t]){var i=Tabulator.prototype.moduleBindings[t].prototype[e];if(i)if("object"==(void 0===o?"undefined":_typeof(o)))for(var n in o)i[n]=o[n];else console.warn("Module Error - Invalid value type, it must be an object");else console.warn("Module Error - property does not exist:",e)}else console.warn("Module Error - module does not exist:",t)},Tabulator.prototype.registerModule=function(t,e){Tabulator.prototype.moduleBindings[t]=e},Tabulator.prototype.bindModules=function(){this.modules={};for(var t in Tabulator.prototype.moduleBindings)this.modules[t]=new Tabulator.prototype.moduleBindings[t](this)},Tabulator.prototype.modExists=function(t,e){return!!this.modules[t]||(e&&console.error("Tabulator Module Not Installed: "+t),!1)},Tabulator.prototype.helpers={elVisible:function(t){return!(t.offsetWidth<=0&&t.offsetHeight<=0)},elOffset:function(t){var e=t.getBoundingClientRect();return{top:e.top+window.pageYOffset-document.documentElement.clientTop,left:e.left+window.pageXOffset-document.documentElement.clientLeft}},deepClone:function(t){var e=Array.isArray(t)?[]:{};for(var o in t)null!=t[o]&&"object"===_typeof(t[o])?t[o]instanceof Date?e[o]=new Date(t[o]):e[o]=this.deepClone(t[o]):e[o]=t[o];return e}},Tabulator.prototype.comms={tables:[],register:function(t){Tabulator.prototype.comms.tables.push(t)},deregister:function(t){var e=Tabulator.prototype.comms.tables.indexOf(t);e>-1&&Tabulator.prototype.comms.tables.splice(e,1)},lookupTable:function(t,e){var o,i,n=[];if("string"==typeof t){if(o=document.querySelectorAll(t),o.length)for(var l=0;l<o.length;l++)(i=Tabulator.prototype.comms.matchElement(o[l]))&&n.push(i)}else"undefined"!=typeof HTMLElement&&t instanceof HTMLElement||t instanceof Tabulator?(i=Tabulator.prototype.comms.matchElement(t))&&n.push(i):Array.isArray(t)?t.forEach(function(t){n=n.concat(Tabulator.prototype.comms.lookupTable(t))}):e||console.warn("Table Connection Error - Invalid Selector",t);return n},matchElement:function(t){return Tabulator.prototype.comms.tables.find(function(e){return t instanceof Tabulator?e===t:e.element===t})}},Tabulator.prototype.findTable=function(t){var e=Tabulator.prototype.comms.lookupTable(t,!0);return!(Array.isArray(e)&&!e.length)&&e};var Layout=function(t){this.table=t,this.mode=null};Layout.prototype.initialize=function(t){this.modes[t]?this.mode=t:(console.warn("Layout Error - invalid mode set, defaulting to 'fitData' : "+t),this.mode="fitData"),this.table.element.setAttribute("tabulator-layout",this.mode)},Layout.prototype.getMode=function(){return this.mode},Layout.prototype.layout=function(){this.modes[this.mode].call(this,this.table.columnManager.columnsByIndex)},Layout.prototype.modes={fitData:function(t){t.forEach(function(t){t.reinitializeWidth()}),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitDataFill:function(t){t.forEach(function(t){t.reinitializeWidth()}),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitDataTable:function(t){t.forEach(function(t){t.reinitializeWidth()}),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitDataStretch:function(t){var e=this,o=0,i=this.table.rowManager.element.clientWidth,n=0,l=!1;t.forEach(function(t,i){t.widthFixed||t.reinitializeWidth(),(e.table.options.responsiveLayout?t.modules.responsive.visible:t.visible)&&(l=t),t.visible&&(o+=t.getWidth())}),l?(n=i-o+l.getWidth(),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&(l.setWidth(0),this.table.modules.responsiveLayout.update()),n>0?l.setWidth(n):l.reinitializeWidth()):this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitColumns:function(t){function e(t){return"string"==typeof t?t.indexOf("%")>-1?n/100*parseInt(t):parseInt(t):t}function o(t,i,n,l){function s(t){return n*(t.column.definition.widthGrow||1)}function a(t){return e(t.width)-n*(t.column.definition.widthShrink||0)}var r=[],u=0,c=0,h=0,d=0,p=0,m=[];return t.forEach(function(t,e){var o=l?a(t):s(t);t.column.minWidth>=o?r.push(t):(m.push(t),p+=l?t.column.definition.widthShrink||1:t.column.definition.widthGrow||1)}),r.length?(r.forEach(function(t){u+=l?t.width-t.column.minWidth:t.column.minWidth,t.width=t.column.minWidth}),c=i-u,h=p?Math.floor(c/p):c,d=c-h*p,d+=o(m,c,h,l)):(d=p?i-Math.floor(i/p)*p:i,m.forEach(function(t){t.width=l?a(t):s(t)})),d}var i=this,n=i.table.element.clientWidth,l=0,s=0,a=0,r=0,u=[],c=[],h=0,d=0,p=0;this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update(),this.table.rowManager.element.scrollHeight>this.table.rowManager.element.clientHeight&&(n-=this.table.rowManager.element.offsetWidth-this.table.rowManager.element.clientWidth),t.forEach(function(t){var o,i,n;t.visible&&(o=t.definition.width,i=parseInt(t.minWidth),o?(n=e(o),l+=n>i?n:i,t.definition.widthShrink&&(c.push({column:t,width:n>i?n:i}),h+=t.definition.widthShrink)):(u.push({column:t,width:0}),a+=t.definition.widthGrow||1))}),s=n-l,r=Math.floor(s/a);var p=o(u,s,r,!1);u.length&&p>0&&(u[u.length-1].width+=+p),u.forEach(function(t){s-=t.width}),d=Math.abs(p)+s,d>0&&h&&(p=o(c,d,Math.floor(d/h),!0)),c.length&&(c[c.length-1].width-=p),u.forEach(function(t){t.column.setWidth(t.width)}),c.forEach(function(t){t.column.setWidth(t.width)})}},Tabulator.prototype.registerModule("layout",Layout);var Localize=function(t){this.table=t,this.locale="default",this.lang=!1,this.bindings={}};Localize.prototype.setHeaderFilterPlaceholder=function(t){this.langs.default.headerFilters.default=t},Localize.prototype.setHeaderFilterColumnPlaceholder=function(t,e){this.langs.default.headerFilters.columns[t]=e,this.lang&&!this.lang.headerFilters.columns[t]&&(this.lang.headerFilters.columns[t]=e)},Localize.prototype.installLang=function(t,e){this.langs[t]?this._setLangProp(this.langs[t],e):this.langs[t]=e},Localize.prototype._setLangProp=function(t,e){for(var o in e)t[o]&&"object"==_typeof(t[o])?this._setLangProp(t[o],e[o]):t[o]=e[o]},Localize.prototype.setLocale=function(t){function e(t,o){for(var i in t)"object"==_typeof(t[i])?(o[i]||(o[i]={}),e(t[i],o[i])):o[i]=t[i]}var o=this;if(t=t||"default",!0===t&&navigator.language&&(t=navigator.language.toLowerCase()),t&&!o.langs[t]){var i=t.split("-")[0];o.langs[i]?(console.warn("Localization Error - Exact matching locale not found, using closest match: ",t,i),t=i):(console.warn("Localization Error - Matching locale not found, using default: ",t),t="default")}o.locale=t,o.lang=Tabulator.prototype.helpers.deepClone(o.langs.default||{}),"default"!=t&&e(o.langs[t],o.lang),o.table.options.localized.call(o.table,o.locale,o.lang),o._executeBindings()},Localize.prototype.getLocale=function(t){return self.locale},Localize.prototype.getLang=function(t){return t?this.langs[t]:this.lang},Localize.prototype.getText=function(t,e){var t=e?t+"|"+e:t,o=t.split("|");return this._getLangElement(o,this.locale)||""},Localize.prototype._getLangElement=function(t,e){var o=this,i=o.lang;return t.forEach(function(t){var e;i&&(e=i[t],i=void 0!==e&&e)}),i},Localize.prototype.bind=function(t,e){this.bindings[t]||(this.bindings[t]=[]),this.bindings[t].push(e),e(this.getText(t),this.lang)},Localize.prototype._executeBindings=function(){var t=this;for(var e in t.bindings)!function(e){t.bindings[e].forEach(function(o){o(t.getText(e),t.lang)})}(e)},Localize.prototype.langs={default:{groups:{item:"item",items:"items"},columns:{},ajax:{loading:"Loading",error:"Error"},pagination:{page_size:"Page Size",page_title:"Show Page",first:"First",first_title:"First Page",last:"Last",last_title:"Last Page",prev:"Prev",prev_title:"Prev Page",next:"Next",next_title:"Next Page",all:"All"},headerFilters:{default:"filter column...",columns:{}}}},Tabulator.prototype.registerModule("localize",Localize);var Comms=function(t){this.table=t};Comms.prototype.getConnections=function(t){var e,o=this,i=[];return e=Tabulator.prototype.comms.lookupTable(t),e.forEach(function(t){o.table!==t&&i.push(t)}),i},Comms.prototype.send=function(t,e,o,i){var n=this,l=this.getConnections(t);l.forEach(function(t){t.tableComms(n.table.element,e,o,i)}),!l.length&&t&&console.warn("Table Connection Error - No tables matching selector found",t)},Comms.prototype.receive=function(t,e,o,i){if(this.table.modExists(e))return this.table.modules[e].commsReceived(t,o,i);console.warn("Inter-table Comms Error - no such module:",e)},Tabulator.prototype.registerModule("comms",Comms);
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/changelog.txt b/app/static/vendors/tinymce/changelog.txt
deleted file mode 100644 (file)
index 6aa1bb4..0000000
+++ /dev/null
@@ -1,1467 +0,0 @@
-Version 5.1.3 (2019-12-04)
-    Fixed sticky toolbar not undocking when fullscreen mode is activated #TINY-4390
-    Fixed the "Current Window" target not applying when updating links using the link dialog #TINY-4063
-    Fixed disabled menu items not highlighting when focused #TINY-4339
-    Fixed touch events passing through dialog collection items to the content underneath on Android devices #TINY-4431
-    Fixed keyboard navigation of the Help dialog's Keyboard Navigation tab #TINY-4391
-    Fixed search and replace dialog disappearing when finding offscreen matches on iOS devices #TINY-4350
-    Fixed performance issues where sticky toolbar was jumping while scrolling on slower browsers #TINY-4475
-Version 5.1.2 (2019-11-19)
-    Fixed desktop touch devices using `mobile` configuration overrides #TINY-4345
-    Fixed unable to disable the new scrolling toolbar feature #TINY-4345
-    Fixed touch events passing through any pop-up items to the content underneath on Android devices #TINY-4367
-    Fixed the table selector handles throwing JavaScript exceptions for non-table selections #TINY-4338
-    Fixed `cut` operations not removing selected content on Android devices when the `paste` plugin is enabled #TINY-4362
-    Fixed inline toolbar not constrained to the window width by default #TINY-4314
-    Fixed context toolbar split button chevrons pointing right when they should be pointing down #TINY-4257
-    Fixed unable to access the dialog footer in tabbed dialogs on small screens #TINY-4360
-    Fixed mobile table selectors were hard to select with touch by increasing the size #TINY-4366
-    Fixed mobile table selectors moving when moving outside the editor #TINY-4366
-    Fixed inline toolbars collapsing when using sliding toolbars #TINY-4389
-    Fixed block textpatterns not treating NBSPs as spaces #TINY-4378
-    Fixed backspace not merging blocks when the last element in the preceding block was a `contenteditable="false"` element #TINY-4235
-    Fixed toolbar buttons that only contain text labels overlapping on mobile devices #TINY-4395
-    Fixed quickbars quickimage picker not working on mobile #TINY-4377
-    Fixed fullscreen not resizing in an iOS WKWebView component #TINY-4413
-Version 5.1.1 (2019-10-28)
-    Fixed font formats containing spaces being wrapped in `&quot;` entities instead of single quotes #TINY-4275
-    Fixed alert and confirm dialogs losing focus when clicked #TINY-4248
-    Fixed clicking outside a modal dialog focusing on the document body #TINY-4249
-    Fixed the context toolbar not hiding when scrolled out of view #TINY-4265
-Version 5.1.0 (2019-10-17)
-    Added touch selector handles for table selections on touch devices #TINY-4097
-    Added border width field to Table Cell dialog #TINY-4028
-    Added touch event listener to media plugin to make embeds playable #TINY-4093
-    Added oxide styling options to notifications and tweaked the default variables #TINY-4153
-    Added additional padding to split button chevrons on touch devices, to make them easier to interact with #TINY-4223
-    Added new platform detection functions to `Env` and deprecated older detection properties #TINY-4184
-    Added `inputMode` config field to specify inputmode attribute of `input` dialog components #TINY-4062
-    Added new `inputMode` property to relevant plugins/dialogs #TINY-4102
-    Added new `toolbar_sticky` setting to allow the iframe menubar/toolbar to stick to the top of the window when scrolling #TINY-3982
-    Changed default setting for `toolbar_drawer` to `floating` #TINY-3634
-    Changed mobile phones to use the `silver` theme by default #TINY-3634
-    Changed some editor settings to default to `false` on touch devices:
-        - `menubar`(phones only) #TINY-4077
-        - `table_grid` #TINY-4075
-        - `resize` #TINY-4157
-        - `object_resizing` #TINY-4157
-    Changed toolbars and context toolbars to sidescroll on mobile #TINY-3894 #TINY-4107
-    Changed context menus to render as horizontal menus on touch devices #TINY-4107
-    Changed the editor to use the `VisualViewport` API of the browser where possible #TINY-4078
-    Changed visualblocks toolbar button icon and renamed `paragraph` icon to `visualchars` #TINY-4074
-    Changed Oxide default for `@toolbar-button-chevron-color` to follow toolbar button icon color #TINY-4153
-    Changed the `urlinput` dialog component to use the `url` type attribute #TINY-4102
-    Fixed Safari desktop visual viewport fires resize on fullscreen breaking the restore function #TINY-3976
-    Fixed scroll issues on mobile devices #TINY-3976
-    Fixed context toolbar unable to refresh position on iOS12 #TINY-4107
-    Fixed ctrl+left click not opening links on readonly mode and the preview dialog #TINY-4138
-    Fixed Slider UI component not firing `onChange` event on touch devices #TINY-4092
-    Fixed notifications overlapping instead of stacking #TINY-3478
-    Fixed inline dialogs positioning incorrectly when the page is scrolled #TINY-4018
-    Fixed inline dialogs and menus not repositioning when resizing #TINY-3227
-    Fixed inline toolbar incorrectly stretching to the full width when a width value was provided #TINY-4066
-    Fixed menu chevrons color to follow the menu text color #TINY-4153
-    Fixed table menu selection grid from staying black when using dark skins, now follows border color #TINY-4153
-    Fixed Oxide using the wrong text color variable for menubar button focused state #TINY-4146
-    Fixed the autoresize plugin not keeping the selection in view when resizing #TINY-4094
-    Fixed textpattern plugin throwing exceptions when using `forced_root_block: false` #TINY-4172
-    Fixed missing CSS fill styles for toolbar button icon active state #TINY-4147
-    Fixed an issue where the editor selection could end up inside a short ended element (such as `br`) #TINY-3999
-    Fixed browser selection being lost in inline mode when opening split dropdowns #TINY-4197
-    Fixed backspace throwing an exception when using `forced_root_block: false` #TINY-4099
-    Fixed floating toolbar drawer expanding outside the bounds of the editor #TINY-3941
-    Fixed the autocompleter not activating immediately after a `br` or `contenteditable=false` element #TINY-4194
-    Fixed an issue where the autocompleter would incorrectly close on IE 11 in certain edge cases #TINY-4205
-Version 5.0.16 (2019-09-24)
-    Added new `referrer_policy` setting to add the `referrerpolicy` attribute when loading scripts or stylesheets #TINY-3978
-    Added a slight background color to dialog tab links when focused to aid keyboard navigation #TINY-3877
-    Fixed media poster value not updating on change #TINY-4013
-    Fixed openlink was not registered as a toolbar button #TINY-4024
-    Fixed failing to initialize if a script tag was used inside a SVG #TINY-4087
-    Fixed double top border showing on toolbar without menubar when toolbar_drawer is enabled #TINY-4118
-    Fixed unable to drag inline dialogs to the bottom of the screen when scrolled #TINY-4154
-    Fixed notifications appearing on top of the toolbar when scrolled in inline mode #TINY-4159
-    Fixed notifications displaying incorrectly on IE 11 #TINY-4169
-Version 5.0.15 (2019-09-02)
-    Added a dark `content_css` skin to go with the dark UI skin #TINY-3743
-    Changed the enabled state on toolbar buttons so they don't get the hover effect #TINY-3974
-    Fixed missing CSS active state on toolbar buttons #TINY-3966
-    Fixed `onChange` callback not firing for the colorinput dialog component #TINY-3968
-    Fixed context toolbars not showing in fullscreen mode #TINY-4023
-Version 5.0.14 (2019-08-19)
-    Added an API to reload the autocompleter menu with additional fetch metadata #MENTIONS-17
-    Fixed missing toolbar button border styling options #TINY-3965
-    Fixed image upload progress notification closing before the upload is complete #TINY-3963
-    Fixed inline dialogs not closing on escape when no dialog component is in focus #TINY-3936
-    Fixed plugins not being filtered when defaulting to mobile on phones #TINY-3537
-    Fixed toolbar more drawer showing the content behind it when transitioning between opened and closed states #TINY-3878
-    Fixed focus not returning to the dialog after pressing the "Replace all" button in the search and replace dialog #TINY-3961
-    Removed Oxide variable `@menubar-select-disabled-border-color` and replaced it with `@menubar-select-disabled-border` #TINY-3965
-Version 5.0.13 (2019-08-06)
-    Changed modal dialogs to prevent dragging by default and added new `draggable_modal` setting to restore dragging #TINY-3873
-    Changed the nonbreaking plugin to insert nbsp characters wrapped in spans to aid in filtering. This can be disabled using the `nonbreaking_wrap` setting #TINY-3647
-    Changed backspace behaviour in lists to outdent nested list items when the cursor is at the start of the list item #TINY-3651
-    Fixed sidebar growing beyond editor bounds in IE 11 #TINY-3937
-    Fixed issue with being unable to keyboard navigate disabled toolbar buttons #TINY-3350
-    Fixed issues with backspace and delete in nested contenteditable true and false elements #TINY-3868
-    Fixed issue with losing keyboard navigation in dialogs due to disabled buttons #TINY-3914
-    Fixed `MouseEvent.mozPressure is deprecated` warning in Firefox #TINY-3919
-    Fixed `default_link_target` not being respected when `target_list` is disabled #TINY-3757
-    Fixed mobile plugin filter to only apply to the mobile theme, rather than all mobile platforms #TINY-3405
-    Fixed focus switching to another editor during mode changes #TINY-3852
-    Fixed an exception being thrown when clicking on an uninitialized inline editor #TINY-3925
-    Fixed unable to keyboard navigate to dialog menu buttons #TINY-3933
-    Fixed dialogs being able to be dragged outside the window viewport #TINY-3787
-    Fixed inline dialogs appearing above modal dialogs #TINY-3932
-Version 5.0.12 (2019-07-18)
-    Added ability to utilize UI dialog panels inside other panels #TINY-3305
-    Added help dialog tab explaining keyboard navigation of the editor #TINY-3603
-    Changed the "Find and Replace" design to an inline dialog #TINY-3054
-    Fixed issue where autolink spacebar event was not being fired on Edge #TINY-3891
-    Fixed table selection missing the background color #TINY-3892
-    Fixed removing shortcuts not working for function keys #TINY-3871
-    Fixed non-descriptive UI component type names #TINY-3349
-    Fixed UI registry components rendering as the wrong type when manually specifying a different type #TINY-3385
-    Fixed an issue where dialog checkbox, input, selectbox, textarea and urlinput components couldn't be disabled #TINY-3708
-    Fixed the context toolbar not using viable screen space in inline/distraction free mode #TINY-3717
-    Fixed the context toolbar overlapping the toolbar in various conditions #TINY-3205
-    Fixed IE11 edge case where items were being inserted into the wrong location #TINY-3884
-Version 5.0.11 (2019-07-04)
-    Fixed packaging errors caused by a rollup treeshaking bug (https://github.com/rollup/rollup/issues/2970) #TINY-3866
-    Fixed the customeditor component not able to get data from the dialog api #TINY-3866
-    Fixed collection component tooltips not being translated #TINY-3855
-Version 5.0.10 (2019-07-02)
-    Added support for all HTML color formats in `color_map` setting #TINY-3837
-    Changed backspace key handling to outdent content in appropriate circumstances #TINY-3685
-    Changed default palette for forecolor and backcolor to include some lighter colors suitable for highlights #TINY-2865
-    Changed the search and replace plugin to cycle through results #TINY-3800
-    Fixed inconsistent types causing some properties to be unable to be used in dialog components #TINY-3778
-    Fixed an issue in the Oxide skin where dialog content like outlines and shadows were clipped because of overflow hidden #TINY-3566
-    Fixed the search and replace plugin not resetting state when changing the search query #TINY-3800
-    Fixed backspace in lists not creating an undo level #TINY-3814
-    Fixed the editor to cancel loading in quirks mode where the UI is not supported #TINY-3391
-    Fixed applying fonts not working when the name contained spaces and numbers #TINY-3801
-    Fixed so that initial content is retained when initializing on list items #TINY-3796
-    Fixed inefficient font name and font size current value lookup during rendering #TINY-3813
-    Fixed mobile font copied into the wrong folder for the oxide-dark skin #TINY-3816
-    Fixed an issue where resizing the width of tables would produce inaccurate results #TINY-3827
-    Fixed a memory leak in the Silver theme #TINY-3797
-    Fixed alert and confirm dialogs using incorrect markup causing inconsistent padding #TINY-3835
-    Fixed an issue in the Table plugin with `table_responsive_width` not enforcing units when resizing #TINY-3790
-    Fixed leading, trailing and sequential spaces being lost when pasting plain text #TINY-3726
-    Fixed exception being thrown when creating relative URIs #TINY-3851
-    Fixed focus is no longer set to the editor content during mode changes unless the editor already had focus #TINY-3852
-Version 5.0.9 (2019-06-26)
-    Fixed print plugin not working in Firefox #TINY-3834
-Version 5.0.8 (2019-06-18)
-    Added back support for multiple toolbars #TINY-2195
-    Added support for .m4a files to the media plugin #TINY-3750
-    Added new base_url and suffix editor init options #TINY-3681
-    Fixed incorrect padding for select boxes with visible values #TINY-3780
-    Fixed selection incorrectly changing when programmatically setting selection on contenteditable false elements #TINY-3766
-    Fixed sidebar background being transparent #TINY-3727
-    Fixed the build to remove duplicate iife wrappers #TINY-3689
-    Fixed bogus autocompleter span appearing in content when the autocompleter menu is shown #TINY-3752
-    Fixed toolbar font size select not working with legacyoutput plugin #TINY-2921
-    Fixed the legacyoutput plugin incorrectly aligning images #TINY-3660
-    Fixed remove color not working when using the legacyoutput plugin #TINY-3756
-    Fixed the font size menu applying incorrect sizes when using the legacyoutput plugin #TINY-3773
-    Fixed scrollIntoView not working when the parent window was out of view #TINY-3663
-    Fixed the print plugin printing from the wrong window in IE11 #TINY-3762
-    Fixed content CSS loaded over CORS not loading in the preview plugin with content_css_cors enabled #TINY-3769
-    Fixed the link plugin missing the default "None" option for link list #TINY-3738
-    Fixed small dot visible with menubar and toolbar disabled in inline mode #TINY-3623
-    Fixed space key properly inserts a nbsp before/after block elements #TINY-3745
-    Fixed native context menu not showing with images in IE11 #TINY-3392
-    Fixed inconsistent browser context menu image selection #TINY-3789
-Version 5.0.7 (2019-06-05)
-    Added new toolbar button and menu item for inserting tables via dialog #TINY-3636
-    Added new API for adding/removing/changing tabs in the Help dialog #TINY-3535
-    Added highlighting of matched text in autocompleter items #TINY-3687
-    Added the ability for autocompleters to work with matches that include spaces #TINY-3704
-    Added new `imagetools_fetch_image` callback to allow custom implementations for cors loading of images #TINY-3658
-    Added `'http'` and `https` options to `link_assume_external_targets` to prepend `http://` or `https://` prefixes when URL does not contain a protocol prefix. Patch contributed by francoisfreitag. #GH-4335
-    Changed annotations navigation to work the same as inline boundaries #TINY-3396
-    Changed tabpanel API by adding a `name` field and changing relevant methods to use it #TINY-3535
-    Fixed text color not updating all color buttons when choosing a color #TINY-3602
-    Fixed the autocompleter not working with fragmented text #TINY-3459
-    Fixed the autosave plugin no longer overwrites window.onbeforeunload #TINY-3688
-    Fixed infinite loop in the paste plugin when IE11 takes a long time to process paste events. Patch contributed by lRawd. #GH-4987
-    Fixed image handle locations when using `fixed_toolbar_container`. Patch contributed by t00. #GH-4966
-    Fixed the autoresize plugin not firing `ResizeEditor` events #TINY-3587
-    Fixed editor in fullscreen mode not extending to the bottom of the screen #TINY-3701
-    Fixed list removal when pressing backspace after the start of the list item #TINY-3697
-    Fixed autocomplete not triggering from compositionend events #TINY-3711
-    Fixed `file_picker_callback` could not set the caption field on the insert image dialog #TINY-3172
-    Fixed the autocompleter menu showing up after a selection had been made #TINY-3718
-    Fixed an exception being thrown when a file or number input has focus during initialization. Patch contributed by t00 #GH-2194
-Version 5.0.6 (2019-05-22)
-    Added `icons_url` editor settings to enable icon packs to be loaded from a custom url #TINY-3585
-    Added `image_uploadtab` editor setting to control the visibility of the upload tab in the image dialog #TINY-3606
-    Added new api endpoints to the wordcount plugin and improved character count logic #TINY-3578
-    Changed plugin, language and icon loading errors to log in the console instead of a notification #TINY-3585
-    Fixed the textpattern plugin not working with fragmented text #TINY-3089
-    Fixed various toolbar drawer accessibility issues and added an animation #TINY-3554
-    Fixed issues with selection and ui components when toggling readonly mode #TINY-3592
-    Fixed so readonly mode works with inline editors #TINY-3592
-    Fixed docked inline toolbar positioning when scrolled #TINY-3621
-    Fixed initial value not being set on bespoke select in quickbars and toolbar drawer #TINY-3591
-    Fixed so that nbsp entities aren't trimmed in white-space: pre-line elements #TINY-3642
-    Fixed `mceInsertLink` command inserting spaces instead of url encoded characters #GH-4990
-    Fixed text content floating on top of dialogs in IE11 #TINY-3640
-Version 5.0.5 (2019-05-09)
-    Added menu items to match the forecolor/backcolor toolbar buttons #TINY-2878
-    Added default directionality based on the configured language #TINY-2621
-    Added styles, icons and tests for rtl mode #TINY-2621
-    Fixed autoresize not working with floating elements or when media elements finished loading #TINY-3545
-    Fixed incorrect vertical caret positioning in IE 11 #TINY-3188
-    Fixed submenu anchoring hiding overflowed content #TINY-3564
-    Removed unused and hidden validation icons to avoid displaying phantom tooltips #TINY-2329
-Version 5.0.4 (2019-04-23)
-    Added back URL dialog functionality, which is now available via `editor.windowManager.openUrl()` #TINY-3382
-    Added the missing throbber functionality when calling `editor.setProgressState(true)` #TINY-3453
-    Added function to reset the editor content and undo/dirty state via `editor.resetContent()` #TINY-3435
-    Added the ability to set menu buttons as active #TINY-3274
-    Added `editor.mode` API, featuring a custom editor mode API #TINY-3406
-    Added better styling to floating toolbar drawer #TINY-3479
-    Added the new premium plugins to the Help dialog plugins tab #TINY-3496
-    Added the linkchecker context menu items to the default configuration #TINY-3543
-    Fixed image context menu items showing on placeholder images #TINY-3280
-    Fixed dialog labels and text color contrast within notifications/alert banners to satisfy WCAG 4.5:1 contrast ratio for accessibility #TINY-3351
-    Fixed selectbox and colorpicker items not being translated #TINY-3546
-    Fixed toolbar drawer sliding mode to correctly focus the editor when tabbing via keyboard navigation #TINY-3533
-    Fixed positioning of the styleselect menu in iOS while using the mobile theme #TINY-3505
-    Fixed the menubutton `onSetup` callback to be correctly executed when rendering the menu buttons #TINY-3547
-    Fixed `default_link_target` setting to be correctly utilized when creating a link #TINY-3508
-    Fixed colorpicker floating marginally outside its container #TINY-3026
-    Fixed disabled menu items displaying as active when hovered #TINY-3027
-    Removed redundant mobile wrapper #TINY-3480
-Version 5.0.3 (2019-03-19)
-    Changed empty nested-menu items within the style formats menu to be disabled or hidden if the value of `style_formats_autohide` is `true` #TINY-3310
-    Changed the entire phrase 'Powered by Tiny' in the status bar to be a link instead of just the word 'Tiny' #TINY-3366
-    Changed `formatselect`, `styleselect` and `align` menus to use the `mceToggleFormat` command internally #TINY-3428
-    Fixed toolbar keyboard navigation to work as expected when `toolbar_drawer` is configured #TINY-3432
-    Fixed text direction buttons to display the correct pressed state in selections that have no explicit `dir` property #TINY-3138
-    Fixed the mobile editor to clean up properly when removed #TINY-3445
-    Fixed quickbar toolbars to add an empty box to the screen when it is set to `false` #TINY-3439
-    Fixed an issue where pressing the **Delete/Backspace** key at the edge of tables was creating incorrect selections #TINY-3371
-    Fixed an issue where dialog collection items (emoticon and special character dialogs) couldn't be selected with touch devices #TINY-3444
-    Fixed a type error introduced in TinyMCE version 5.0.2 when calling `editor.getContent()` with nested bookmarks #TINY-3400
-    Fixed an issue that prevented default icons from being overridden #TINY-3449
-    Fixed an issue where **Home/End** keys wouldn't move the caret correctly before or after `contenteditable=false` inline elements #TINY-2995
-    Fixed styles to be preserved in IE 11 when editing via the `fullpage` plugin #TINY-3464
-    Fixed the `link` plugin context toolbar missing the open link button #TINY-3461
-    Fixed inconsistent dialog component spacing #TINY-3436
-Version 5.0.2 (2019-03-05)
-    Added presentation and document presets to `htmlpanel` dialog component #TINY-2694
-    Added missing fixed_toolbar_container setting has been reimplemented in the Silver theme #TINY-2712
-    Added a new toolbar setting `toolbar_drawer` that moves toolbar groups which overflow the editor width into either a `sliding` or `floating` toolbar section #TINY-2874
-    Updated the build process to include package lock files in the dev distribution archive #TINY-2870
-    Fixed inline dialogs did not have aria attributes #TINY-2694
-    Fixed default icons are now available in the UI registry, allowing use outside of toolbar buttons #TINY-3307
-    Fixed a memory leak related to select toolbar items #TINY-2874
-    Fixed a memory leak due to format changed listeners that were never unbound #TINY-3191
-    Fixed an issue where content may have been lost when using permanent bookmarks #TINY-3400
-    Fixed the quicklink toolbar button not rendering in the quickbars plugin #TINY-3125
-    Fixed an issue where menus were generating invalid HTML in some cases #TINY-3323
-    Fixed an issue that could cause the mobile theme to show a blank white screen when the editor was inside an `overflow:hidden` element #TINY-3407
-    Fixed mobile theme using a transparent background and not taking up the full width on iOS #TINY-3414
-    Fixed the template plugin dialog missing the description field #TINY-3337
-    Fixed input dialog components using an invalid default type attribute #TINY-3424
-    Fixed an issue where backspace/delete keys after/before pagebreak elements wouldn't move the caret #TINY-3097
-    Fixed an issue in the table plugin where menu items and toolbar buttons weren't showing correctly based on the selection #TINY-3423
-    Fixed inconsistent button focus styles in Firefox #TINY-3377
-    Fixed the resize icon floating left when all status bar elements were disabled #TINY-3340
-    Fixed the resize handle to not show in fullscreen mode #TINY-3404
-Version 5.0.1 (2019-02-21)
-    Removed paste as text notification banner and paste_plaintext_inform setting #POW-102
-    Fixed an issue where adding links to images would replace the image with text #TINY-3356
-    Fixed an issue where the inline editor could use fractional pixels for positioning #TINY-3202
-    Fixed an issue where uploading non-image files in the Image Plugin upload tab threw an error. #TINY-3244
-    Added H1-H6 toggle button registration to the silver theme #TINY-3070
-    Fixed an issue in the media plugin that was causing the source url and height/width to be lost in certain circumstances #TINY-2858
-    Fixed an issue with the Context Toolbar not being removed when clicking outside of the editor #TINY-2804
-    Fixed an issue where clicking 'Remove link' wouldn't remove the link in certain circumstances #TINY-3199
-    Added code sample toolbar button will now toggle on when the cursor is in a code section #TINY-3040
-    Fixed an issue where the media plugin would fail when parsing dialog data #TINY-3218
-    Fixed an issue where retrieving the selected content as text didn't create newlines #TINY-3197
-    Fixed incorrect keyboard shortcuts in the Help dialog for Windows #TINY-3292
-    Fixed an issue where JSON serialization could produce invalid JSON #TINY-3281
-    Fixed production CSS including references to source maps #TINY-3920
-    Fixed development CSS was not included in the development zip #TINY-3920
-    Fixed the autocompleter matches predicate not matching on the start of words by default #TINY-3306
-    Added new settings to the emoticons plugin to allow additional emoticons to be added #TINY-3088
-    Fixed an issue where the page could be scrolled with modal dialogs open #TINY-2252
-    Fixed an issue where autocomplete menus would show an icon margin when no items had icons #TINY-3329
-    Fixed an issue in the quickbars plugin where images incorrectly showed the text selection toolbar #TINY-3338
-    Fixed an issue that caused the inline editor to fail to render when the target element already had focus #TINY-3353
-Version 5.0.0 (2019-02-04)
-    Full documentation for the version 5 features and changes is available at https://www.tiny.cloud/docs/release-notes/
-
-    Changes since RC2:
-    Fixed an issue where tab panel heights weren't sizing properly on smaller screens and weren't updating on resize #TINY-3242
-    Added links and registered names with * to denote premium plugins in Plugins tab of Help dialog #TINY-3223
-    Changed Tiny 5 mobile skin to look more uniform with desktop #TINY-2650
-    Fixed image tools not having any padding between the label and slider #TINY-3220
-    Blacklisted table, th and td as inline editor target #TINY-717
-    Fixed context toolbar toggle buttons not showing the correct state #TINY-3022
-    Fixed missing separators in the spellchecker context menu between the suggestions and actions #TINY-3217
-    Fixed notification icon positioning in alert banners #TINY-2196
-    Fixed a typo in the word count plugin name #TINY-3062
-    Fixed charmap and emoticons dialogs not having a primary button #TINY-3233
-    Fixed an issue where resizing wouldn't work correctly depending on the box-sizing model #TINY-3278
-Version 5.0.0-rc-2 (2019-01-22)
-    Fixed the link dialog such that it will now retain class attributes when updating links #TINY-2825
-    Added screen reader accessibility for sidebar and statusbar #TINY-2699
-    Updated Emoticons and Charmap dialogs to be screen reader accessible #TINY-2693
-    Fixed "Find and replace" not showing in the "Edit" menu by default #TINY-3061
-    Updated the textpattern plugin to properly support nested patterns and to allow running a command with a value for a pattern with a start and an end #TINY-2991
-    Removed unnecessary 'flex' and unused 'colspan' properties from the new dialog APIs #TINY-2973
-    Changed checkboxes to use a boolean for its state, instead of a string #TINY-2848
-    Fixed dropdown buttons missing the 'type' attribute, which could cause forms to be incorrectly submitted #TINY-2826
-    Fixed emoticon and charmap search not returning expected results in certain cases #TINY-3084
-    Changed formatting menus so they are registered and made the align toolbar button use an icon instead of text #TINY-2880
-    Fixed blank rel_list values throwing an exception in the link plugin #TINY-3149
-Version 5.0.0-rc-1 (2019-01-08)
-    Updated the font select dropdown logic to try to detect the system font stack and show "System Font" as the font name #TINY-2710
-    Fixed readonly mode not fully disabling editing content #TINY-2287
-    Updated the autocompleter to only show when it has matched items #TINY-2350
-    Added editor settings functionality to specify title attributes for toolbar groups #TINY-2690
-    Added icons instead of button text to improve Search and Replace dialog footer appearance #TINY-2654
-    Added `tox-dialog__table` instead of `mce-table-striped` class to enhance Help dialog appearance #TINY-2360
-    Added title attribute to iframes so, screen readers can announce iframe labels #TINY-2692
-    Updated SizeInput labels to "Height" and "Width" instead of Dimensions #TINY-2833
-    Fixed accessibility issues with the font select, font size, style select and format select toolbar dropdowns #TINY-2713
-    Fixed accessibility issues with split dropdowns #TINY-2697
-    Added a wordcount menu item, that defaults to appearing in the tools menu #TINY-2877
-    Fixed the legacyoutput plugin to be compatible with TinyMCE 5.0 #TINY-2301
-    Updated the build process to minify and generate ASCII only output for the emoticons database #TINY-2744
-    Fixed icons not showing correctly in the autocompleter popup #TINY-3029
-    Fixed an issue where preview wouldn't show anything in Edge under certain circumstances #TINY-3035
-    Fixed the height being incorrectly calculated for the autoresize plugin #TINY-2807
-Version 5.0.0-beta-1 (2018-11-30)
-    Changed the name of the "inlite" plugin to "quickbars" #TINY-2831
-    Fixed an inline mode issue where the save plugin upon saving can cause content loss #TINY-2659
-    Changed the background color icon to highlight background icon #TINY-2258
-    Added a new `addNestedMenuItem()` UI registry function and changed all nested menu items to use the new registry functions #TINY-2230
-    Changed Help dialog to be accessible to screen readers #TINY-2687
-    Changed the color swatch to save selected custom colors to local storage for use across sessions #TINY-2722
-    Added title attribute to color swatch colors #TINY-2669
-    Added anchorbar component to anchor inline toolbar dialogs to instead of the toolbar #TINY-2040
-    Added support for toolbar<n> and toolbar array config options to be squashed into a single toolbar and not create multiple toolbars #TINY-2195
-    Added error handling for when forced_root_block config option is set to true #TINY-2261
-    Added functionality for the removed_menuitems config option #TINY-2184
-    Fixed an issue in IE 11 where calling selection.getContent() would return an empty string when the editor didn't have focus #TINY-2325
-    Added the ability to use a string to reference menu items in menu buttons and submenu items #TINY-2253
-    Removed compat3x plugin #TINY-2815
-    Changed `WindowManager` API - methods `getParams`, `setParams` and `getWindows`, and the legacy `windows` property, have been removed. `alert` and `confirm` dialogs are no longer tracked in the window list. #TINY-2603
-Version 5.0.0-preview-4 (2018-11-12)
-    Fixed distraction free plugin #AP-470
-    Removed the tox-custom-editor class that was added to the wrapping element of codemirror #TINY-2211
-    Fixed contents of the input field being selected on focus instead of just recieving an outline highlight #AP-464
-    Added width and height placeholder text to image and media dialog dimensions input #AP-296
-    Fixed styling issues with dialogs and menus in IE 11 #AP-456
-    Fixed custom style format control not honoring custom formats #AP-393
-    Fixed context menu not appearing when clicking an image with a caption #AP-382
-    Fixed directionality of UI when using an RTL language #AP-423
-    Fixed page responsiveness with multiple inline editors #AP-430
-    Added the ability to keyboard navigate through menus, toolbars, sidebar and the status bar sequentially #AP-381
-    Fixed empty toolbar groups appearing through invalid configuration of the `toolbar` property #AP-450
-    Fixed text not being retained when updating links through the link dialog #AP-293
-    Added translation capability back to the editor's UI #AP-282
-    Fixed edit image context menu, context toolbar and toolbar items being incorrectly enabled when selecting invalid images #AP-323
-    Fixed emoji type ahead being shown when typing URLs #AP-366
-    Fixed toolbar configuration properties incorrectly expecting string arrays instead of strings #AP-342
-    Changed the editor resize handle so that it should be disabled when the autoresize plugin is turned on #AP-424
-    Fixed the block formatting toolbar item not showing a "Formatting" title when there is no selection #AP-321
-    Fixed clicking disabled toolbar buttons hiding the toolbar in inline mode #AP-380
-    Fixed `EditorResize` event not being fired upon editor resize #AP-327
-    Fixed tables losing styles when updating through the dialog #AP-368
-    Fixed context toolbar positioning to be more consistent near the edges of the editor #AP-318
-    Added `label` component type for dialogs to group components under a label
-    Fixed table of contents plugin now works with v5 toolbar APIs correctly #AP-347
-    Fixed the `link_context_toolbar` configuration not disabling the context toolbar #AP-458
-    Fixed the link context toolbar showing incorrect relative links #AP-435
-    Fixed the alignment of the icon in alert banner dialog components #TINY-2220
-    Changed UI text for microcopy improvements #TINY-2281
-    Fixed the visual blocks and visual char menu options not displaying their toggled state #TINY-2238
-    Fixed the editor not displaying as fullscreen when toggled #TINY-2237
-Version 5.0.0-preview-3 (2018-10-18)
-    Changed editor layout to use modern CSS properties over manually calculating dimensions #AP-324
-    Changed `autoresize_min_height` and `autoresize_max_height` configurations to `min_height` and `max_height` #AP-324
-    Fixed bugs with editor width jumping when resizing and the iframe not resizing to smaller than 150px in height #AP-324
-    Fixed mobile theme bug that prevented the editor from loading #AP-404
-    Fixed long toolbar groups extending outside of the editor instead of wrapping
-    Changed `Whole word` label in Search and Replace dialog to `Find whole words only` #AP-387
-    Fixed dialog titles so they are now proper case #AP-384
-    Fixed color picker default to be #000000 instead of #ff00ff #AP-216
-    Fixed "match case" option on the Find and Replace dialog is no longer selected by default #AP-298
-    Fixed vertical alignment of toolbar icons #DES-134
-    Fixed toolbar icons not appearing on IE11 #DES-133
-Version 5.0.0-preview-2 (2018-10-10)
-    Changed configuration of color options has been simplified to `color_map`, `color_cols`, and `custom_colors` #AP-328
-    Added swatch is now shown for colorinput fields, instead of the colorpicker directly #AP-328
-    Removed `colorpicker` plugin, it is now in the theme #AP-328
-    Removed `textcolor` plugin, it is now in the theme #AP-328
-    Fixed styleselect not updating the displayed item as the cursor moved #AP-388
-    Changed `height` configuration to apply to the editor frame (including menubar, toolbar, status bar) instead of the content area #AP-324
-    Added fontformats and fontsizes menu items #AP-390
-    Fixed preview iframe not expanding to the dialog size #AP-252
-    Fixed 'meta' shortcuts not translated into platform-specific text #AP-270
-    Fixed tabbed dialogs (Charmap and Emoticons) shrinking when no search results returned
-    Fixed a bug where alert banner icons were not retrieved from icon pack. #AP-330
-    Fixed component styles to flex so they fill large dialogs. #AP-252
-    Fixed editor flashing unstyled during load (still in progress). #AP-349
-Version 5.0.0-preview-1 (2018-10-01)
-    Developer preview 1
-    Initial list of features and changes is available at https://tiny.cloud/docs-preview/release-notes/new-features/
-Version 4.9.3 (2019-01-31)
-    Added a visualchars_default_state setting to the Visualchars Plugin. Patch contributed by mat3e.
-    Fixed a bug where scrolling on a page with more than one editor would cause a ResizeWindow event to fire. #TINY-3247
-    Fixed a bug where if a plugin threw an error during initialisation the whole editor would fail to load. #TINY-3243
-    Fixed a bug where getContent would include bogus elements when valid_elements setting was set up in a specific way. #TINY-3213
-    Fixed a bug where only a few function key names could be used when creating keyboard shortcuts. #TINY-3146
-    Fixed a bug where it wasn't possible to enter spaces into an editor after pressing shift+enter. #TINY-3099
-    Fixed a bug where no caret would be rendered after backspacing to a contenteditable false element. #TINY-2998
-    Fixed a bug where deletion to/from indented lists would leave list fragments in the editor. #TINY-2981
-Version 4.9.2 (2018-12-17)
-    Fixed a bug with pressing the space key on IE 11 would result in nbsp characters being inserted between words at the end of a block. #TINY-2996
-    Fixed a bug where character composition using quote and space on US International keyboards would produce a space instead of a quote. #TINY-2999
-    Fixed a bug where remove format wouldn't remove the inner most inline element in some situations. #TINY-2982
-    Fixed a bug where outdenting an list item would affect attributes on other list items within the same list. #TINY-2971
-    Fixed a bug where the DomParser filters wouldn't be applied for elements created when parsing invalid html. #TINY-2978
-    Fixed a bug where setProgressState wouldn't automatically close floating ui elements like menus. #TINY-2896
-    Fixed a bug where it wasn't possible to navigate out of a figcaption element using the arrow keys. #TINY-2894
-    Fixed a bug where enter key before an image inside a link would remove the image. #TINY-2780
-Version 4.9.1 (2018-12-04)
-    Added functionality to insert html to the replacement feature of the Textpattern Plugin. #TINY-2839
-    Fixed a bug where `editor.selection.getContent({format: 'text'})` didn't work as expected in IE11 on an unfocused editor. #TINY-2862
-    Fixed a bug in the Textpattern Plugin where the editor would get an incorrect selection after inserting a text pattern on Safari. #TINY-2838
-    Fixed a bug where the space bar didn't work correctly in editors with the forced_root_block setting set to false. #TINY-2816
-Version 4.9.0 (2018-11-27)
-    Added a replace feature to the Textpattern Plugin. #TINY-1908
-    Added functionality to the Lists Plugin that improves the indentation logic. #TINY-1790
-    Fixed a bug where it wasn't possible to delete/backspace when the caret was between a contentEditable=false element and a BR. #TINY-2372
-    Fixed a bug where copying table cells without a text selection would fail to copy anything. #TINY-1789
-    Implemented missing `autosave_restore_when_empty` functionality in the Autosave Plugin. Patch contributed by gzzo. #GH-4447
-    Reduced insertion of unnecessary nonbreaking spaces in the editor. #TINY-1879
-Version 4.8.5 (2018-10-30)
-    Added a content_css_cors setting to the editor that adds the crossorigin="anonymous" attribute to link tags added by the StyleSheetLoader. #TINY-1909
-    Fixed a bug where trying to remove formatting with a collapsed selection range would throw an exception. #GH-4636
-    Fixed a bug in the image plugin that caused updating figures to split contenteditable elements. #GH-4563
-    Fixed a bug that was causing incorrect viewport calculations for fixed position UI elements. #TINY-1897
-    Fixed a bug where inline formatting would cause the delete key to do nothing. #TINY-1900
-Version 4.8.4 (2018-10-23)
-    Added support for the HTML5 `main` element. #TINY-1877
-    Changed the keyboard shortcut to move focus to contextual toolbars to Ctrl+F9. #TINY-1812
-    Fixed a bug where content css could not be loaded from another domain. #TINY-1891
-    Fixed a bug on FireFox where the cursor would get stuck between two contenteditable false inline elements located inside of the same block element divided by a BR. #TINY-1878
-    Fixed a bug with the insertContent method where nonbreaking spaces would be inserted incorrectly. #TINY-1868
-    Fixed a bug where the toolbar of the inline editor would not be visible in some scenarios. #TINY-1862
-    Fixed a bug where removing the editor while more than one notification was open would throw an error. #TINY-1845
-    Fixed a bug where the menubutton would be rendered on top of the menu if the viewport didn't have enough height. #TINY-1678
-    Fixed a bug with the annotations api where annotating collapsed selections caused problems. #TBS-2449
-    Fixed a bug where wbr elements were being transformed into whitespace when using the Paste Plugin's paste as text setting. #GH-4638
-    Fixed a bug where the Search and Replace didn't replace spaces correctly. #GH-4632
-    Fixed a bug with sublist items not persisting selection. #GH-4628
-    Fixed a bug with mceInsertRawHTML command not working as expected. #GH-4625
-Version 4.8.3 (2018-09-13)
-    Fixed a bug where the Wordcount Plugin didn't correctly count words within tables on IE11. #TINY-1770
-    Fixed a bug where it wasn't possible to move the caret out of a table on IE11 and Firefox. #TINY-1682
-    Fixed a bug where merging empty blocks didn't work as expected, sometimes causing content to be deleted. #TINY-1781
-    Fixed a bug where the Textcolor Plugin didn't show the correct current color. #TINY-1810
-    Fixed a bug where clear formatting with a collapsed selection would sometimes clear formatting from more content than expected. #TINY-1813 #TINY-1821
-    Fixed a bug with the Table Plugin where it wasn't possible to keyboard navigate to the caption. #TINY-1818
-Version 4.8.2 (2018-08-09)
-    Moved annotator from "experimental" to "annotator" object on editor. #TBS-2398
-    Improved the multiclick normalization across browsers. #TINY-1788
-    Fixed a bug where running getSelectedBlocks with a collapsed selection between block elements would produce incorrect results. #TINY-1787
-    Fixed a bug where the ScriptLoaders loadScript method would not work as expected in FireFox when loaded on the same page as a ShadowDOM polyfill. #TINY-1786
-    Removed reference to ShadowDOM event.path as Blink based browsers now support event.composedPath. #TINY-1785
-    Fixed a bug where a reference to localStorage would throw an "access denied" error in IE11 with strict security settings. #TINY-1782
-    Fixed a bug where pasting using the toolbar button on an inline editor in IE11 would cause a looping behaviour. #TINY-1768
-Version 4.8.1 (2018-07-26)
-    Fixed a bug where the content of inline editors was being cleaned on every call of `editor.save()`. #TINY-1783
-    Fixed a bug where the arrow of the Inlite Theme toolbar was being rendered incorrectly in RTL mode. #TINY-1776
-    Fixed a bug with the Paste Plugin where pasting after inline contenteditable false elements moved the caret to the end of the line. #TINY-1758
-Version 4.8.0 (2018-06-27)
-    Added new "experimental" object in editor, with initial Annotator API. #TBS-2374
-    Fixed a bug where deleting paragraphs inside of table cells would delete the whole table cell. #TINY-1759
-    Fixed a bug in the Table Plugin where removing row height set on the row properties dialog did not update the table. #TINY-1730
-    Fixed a bug with the font select toolbar item didn't update correctly. #TINY-1683
-    Fixed a bug where all bogus elements would not be deleted when removing an inline editor. #TINY-1669
-Version 4.7.13 (2018-05-16)
-    Fixed a bug where Edge 17 wouldn't be able to select images or tables. #TINY-1679
-    Fixed issue where whitespace wasn't preserved when the editor was initialized on pre elements. #TINY-1649
-    Fixed a bug with the fontselect dropdowns throwing an error if the editor was hidden in Firefox. #TINY-1664
-    Fixed a bug where it wasn't possible to merge table cells on IE 11. #TINY-1671
-    Fixed a bug where textcolor wasn't applying properly on IE 11 in some situations. #TINY-1663
-    Fixed a bug where the justifyfull command state wasn't working correctly. #TINY-1677
-    Fixed a bug where the styles wasn't updated correctly when resizing some tables. #TINY-1668
-    Added missing code menu item from the default menu config. #TINY-1648
-    Added new align button for combining the separate align buttons into a menu button. #TINY-1652
-Version 4.7.12 (2018-05-03)
-    Added an option to filter out image svg data urls.
-    Added support for html5 details and summary elements.
-    Changed so the mce-abs-layout-item css rule targets html instead of body. Patch contributed by nazar-pc.
-    Fixed a bug where the "read" step on the mobile theme was still present on android mobile browsers.
-    Fixed a bug where all images in the editor document would reload on any editor change.
-    Fixed a bug with the Table Plugin where ObjectResized event wasn't being triggered on column resize.
-    Fixed so the selection is set to the first suitable caret position after editor.setContent called.
-    Fixed so links with xlink:href attributes are filtered correctly to prevent XSS.
-    Fixed a bug on IE11 where pasting content into an inline editor initialized on a heading element would create new editable elements.
-    Fixed a bug where readonly mode would not work as expected when the editor contained contentEditable=true elements.
-    Fixed a bug where the Link Plugin would throw an error when used together with the webcomponents polyfill. Patch contributed by 4esnog.
-    Fixed a bug where the "Powered by TinyMCE" branding link would break on XHTML pages. Patch contributed by tistre.
-    Fixed a bug where the same id would be used in the blobcache for all pasted images. Patch contributed by thorn0.
-Version 4.7.11 (2018-04-11)
-    Added a new imagetools_credentials_hosts option to the Imagetools Plugin.
-    Fixed a bug where toggling a list containing empty LIs would throw an error. Patch contributed by bradleyke.
-    Fixed a bug where applying block styles to a text with the caret at the end of the paragraph would select all text in the paragraph.
-    Fixed a bug where toggling on the Spellchecker Plugin would trigger isDirty on the editor.
-    Fixed a bug where it was possible to enter content into selection bookmark spans.
-    Fixed a bug where if a non paragraph block was configured in forced_root_block the editor.getContent method would return incorrect values with an empty editor.
-    Fixed a bug where dropdown menu panels stayed open and fixed in position when dragging dialog windows.
-    Fixed a bug where it wasn't possible to extend table cells with the space button in Safari.
-    Fixed a bug where the setupeditor event would thrown an error when using the Compat3x Plugin.
-    Fixed a bug where an error was thrown in FontInfo when called on a detached element.
-Version 4.7.10 (2018-04-03)
-    Removed the "read" step from the mobile theme.
-    Added normalization of triple clicks across browsers in the editor.
-    Added a `hasFocus` method to the editor that checks if the editor has focus.
-    Added correct icon to the Nonbreaking Plugin menu item.
-    Fixed so the `getContent`/`setContent` methods work even if the editor is not initialized.
-    Fixed a bug with the Media Plugin where query strings were being stripped from youtube links.
-    Fixed a bug where image styles were changed/removed when opening and closing the Image Plugin dialog.
-    Fixed a bug in the Table Plugin where some table cell styles were not correctly added to the content html.
-    Fixed a bug in the Spellchecker Plugin where it wasn't possible to change the spellchecker language.
-    Fixed so the the unlink action in the Link Plugin has a menu item and can be added to the contextmenu.
-    Fixed a bug where it wasn't possible to keyboard navigate to the start of an inline element on a new line within the same block element.
-    Fixed a bug with the Text Color Plugin where if used with an inline editor located at the bottom of the screen the colorpicker could appear off screen.
-    Fixed a bug with the UndoManager where undo levels were being added for nbzwsp characters.
-    Fixed a bug with the Table Plugin where the caret would sometimes be lost when keyboard navigating up through a table.
-    Fixed a bug where FontInfo.getFontFamily would throw an error when called on a removed editor.
-    Fixed a bug in Firefox where undo levels were not being added correctly for some specific operations.
-    Fixed a bug where initializing an inline editor inside of a table would make the whole table resizeable.
-    Fixed a bug where the fake cursor that appears next to tables on Firefox was positioned incorrectly when switching to fullscreen.
-    Fixed a bug where zwsp's weren't trimmed from the output from `editor.getContent({ format: 'text' })`.
-    Fixed a bug where the fontsizeselect/fontselect toolbar items showed the body info rather than the first possible caret position info on init.
-    Fixed a bug where it wasn't possible to select all content if the editor only contained an inline boundary element.
-    Fixed a bug where `content_css` urls with query strings wasn't working.
-    Fixed a bug in the Table Plugin where some table row styles were removed when changing other styles in the row properties dialog.
-Version 4.7.9 (2018-02-27)
-    Fixed a bug where the editor target element didn't get the correct style when removing the editor.
-Version 4.7.8 (2018-02-26)
-    Fixed an issue with the Help Plugin where the menuitem name wasn't lowercase.
-    Fixed an issue on MacOS where text and bold text did not have the same line-height in the autocomplete dropdown in the Link Plugin dialog.
-    Fixed a bug where the "paste as text" option in the Paste Plugin didn't work.
-    Fixed a bug where dialog list boxes didn't get positioned correctly in documents with scroll.
-    Fixed a bug where the Inlite Theme didn't use the Table Plugin api to insert correct tables.
-    Fixed a bug where the Inlite Theme panel didn't hide on blur in a correct way.
-    Fixed a bug where placing the cursor before a table in Firefox would scroll to the bottom of the table.
-    Fixed a bug where selecting partial text in table cells with rowspans and deleting would produce faulty tables.
-    Fixed a bug where the Preview Plugin didn't work on Safari due to sandbox security.
-    Fixed a bug where table cell selection using the keyboard threw an error.
-    Fixed so the font size and font family doesn't toggle the text but only sets the selected format on the selected text.
-    Fixed so the built-in spellchecking on Chrome and Safari creates an undo level when replacing words.
-Version 4.7.7 (2018-02-19)
-    Added a border style selector to the advanced tab of the Image Plugin.
-    Added better controls for default table inserted by the Table Plugin.
-    Added new `table_responsive_width` option to the Table Plugin that controls whether to use pixel or percentage widths.
-    Fixed a bug where the Link Plugin text didn't update when a URL was pasted using the context menu.
-    Fixed a bug with the Spellchecker Plugin where using "Add to dictionary" in the context menu threw an error.
-    Fixed a bug in the Media Plugin where the preview node for iframes got default width and height attributes that interfered with width/height styles.
-    Fixed a bug where backslashes were being added to some font family names in Firefox in the fontselect toolbar item.
-    Fixed a bug where errors would be thrown when trying to remove an editor that had not yet been fully initialized.
-    Fixed a bug where the Imagetools Plugin didn't update the images atomically.
-    Fixed a bug where the Fullscreen Plugin was throwing errors when being used on an inline editor.
-    Fixed a bug where drop down menus weren't positioned correctly in inline editors on scroll.
-    Fixed a bug with a semicolon missing at the end of the bundled javascript files.
-    Fixed a bug in the Table Plugin with cursor navigation inside of tables where the cursor would sometimes jump into an incorrect table cells.
-    Fixed a bug where indenting a table that is a list item using the "Increase indent" button would create a nested table.
-    Fixed a bug where text nodes containing only whitespace were being wrapped by paragraph elements.
-    Fixed a bug where whitespace was being inserted after br tags inside of paragraph tags.
-    Fixed a bug where converting an indented paragraph to a list item would cause the list item to have extra padding.
-    Fixed a bug where Copy/Paste in an editor with a lot of content would cause the editor to scroll to the top of the content in IE11.
-    Fixed a bug with a memory leak in the DragHelper. Path contributed by ben-mckernan.
-    Fixed a bug where the advanced tab in the Media Plugin was being shown even if it didn't contain anything. Patch contributed by gabrieeel.
-    Fixed an outdated eventname in the EventUtils. Patch contributed by nazar-pc.
-    Fixed an issue where the Json.parse function would throw an error when being used on a page with strict CSP settings.
-    Fixed so you can place the curser before and after table elements within the editor in Firefox and Edge/IE.
-Version 4.7.6 (2018-01-29)
-    Fixed a bug in the jquery integration where it threw an error saying that "global is not defined".
-    Fixed a bug where deleting a table cell whose previous sibling was set to contenteditable false would create a corrupted table.
-    Fixed a bug where highlighting text in an unfocused editor did not work correctly in IE11/Edge.
-    Fixed a bug where the table resize handles were not being repositioned when activating the Fullscreen Plugin.
-    Fixed a bug where the Imagetools Plugin dialog didn't honor editor RTL settings.
-    Fixed a bug where block elements weren't being merged correctly if you deleted from after a contenteditable false element to the beginning of another block element.
-    Fixed a bug where TinyMCE didn't work with module loaders like webpack.
-Version 4.7.5 (2018-01-22)
-    Fixed bug with the Codesample Plugin where it wasn't possible to edit codesamples when the editor was in inline mode.
-    Fixed bug where focusing on the status bar broke the keyboard navigation functionality.
-    Fixed bug where an error would be thrown on Edge by the Table Plugin when pasting using the PowerPaste Plugin.
-    Fixed bug in the Table Plugin where selecting row border style from the dropdown menu in advanced row properties would throw an error.
-    Fixed bug with icons being rendered incorrectly on Chrome on Mac OS.
-    Fixed bug in the Textcolor Plugin where the font color and background color buttons wouldn't trigger an ExecCommand event.
-    Fixed bug in the Link Plugin where the url field wasn't forced LTR.
-    Fixed bug where the Nonbreaking Plugin incorrectly inserted spaces into tables.
-    Fixed bug with the inline theme where the toolbar wasn't repositioned on window resize.
-Version 4.7.4 (2017-12-05)
-    Fixed bug in the Nonbreaking Plugin where the nonbreaking_force_tab setting was being ignored.
-    Fixed bug in the Table Plugin where changing row height incorrectly converted column widths to pixels.
-    Fixed bug in the Table Plugin on Edge and IE11 where resizing the last column after resizing the table would cause invalid column heights.
-    Fixed bug in the Table Plugin where keyboard navigation was not normalized between browsers.
-    Fixed bug in the Table Plugin where the colorpicker button would show even without defining the colorpicker_callback.
-    Fixed bug in the Table Plugin where it wasn't possible to set the cell background color.
-    Fixed bug where Firefox would throw an error when intialising an editor on an element that is hidden or not yet added to the DOM.
-    Fixed bug where Firefox would throw an error when intialising an editor inside of a hidden iframe.
-Version 4.7.3 (2017-11-23)
-    Added functionality to open the Codesample Plugin dialog when double clicking on a codesample. Patch contributed by dakuzen.
-    Fixed bug where undo/redo didn't work correctly with some formats and caret positions.
-    Fixed bug where the color picker didn't show up in Table Plugin dialogs.
-    Fixed bug where it wasn't possible to change the width of a table through the Table Plugin dialog.
-    Fixed bug where the Charmap Plugin couldn't insert some special characters.
-    Fixed bug where editing a newly inserted link would not actually edit the link but insert a new link next to it.
-    Fixed bug where deleting all content in a table cell made it impossible to place the caret into it.
-    Fixed bug where the vertical alignment field in the Table Plugin cell properties dialog didn't do anything.
-    Fixed bug where an image with a caption showed two sets of resize handles in IE11.
-    Fixed bug where pressing the enter button inside of an h1 with contenteditable set to true would sometimes produce a p tag.
-    Fixed bug with backspace not working as expected before a noneditable element.
-    Fixed bug where operating on tables with invalid rowspans would cause an error to be thrown.
-    Fixed so a real base64 representation of the image is available on the blobInfo that the images_upload_handler gets called with.
-    Fixed so the image upload tab is available when the images_upload_handler is defined (and not only when the images_upload_url is defined).
-Version 4.7.2 (2017-11-07)
-    Added newly rewritten Table Plugin.
-    Added support for attributes with colon in valid_elements and addValidElements.
-    Added support for dailymotion short url in the Media Plugin. Patch contributed by maat8.
-    Added support for converting to half pt when converting font size from px to pt. Patch contributed by danny6514.
-    Added support for location hash to the Autosave plugin to make it work better with SPAs using hash routing.
-    Added support for merging table cells when pasting a table into another table.
-    Changed so the language packs are only loaded once. Patch contributed by 0xor1.
-    Simplified the css for inline boundaries selection by switching to an attribute selector.
-    Fixed bug where an error would be thrown on editor initialization if the window.getSelection() returned null.
-    Fixed bug where holding down control or alt keys made the keyboard navigation inside an inline boundary not work as expected.
-    Fixed bug where applying formats in IE11 produced extra, empty paragraphs in the editor.
-    Fixed bug where the Word Count Plugin didn't count some mathematical operators correctly.
-    Fixed bug where removing an inline editor removed the element that the editor had been initialized on.
-    Fixed bug where setting the selection to the end of an editable container caused some formatting problems.
-    Fixed bug where an error would be thrown sometimes when an editor was removed because of the selection bookmark was being stored asynchronously.
-    Fixed a bug where an editor initialized on an empty list did not contain any valid cursor positions.
-    Fixed a bug with the Context Menu Plugin and webkit browsers on Mac where right-clicking inside a table would produce an incorrect selection.
-    Fixed bug where the Image Plugin constrain proportions setting wasn't working as expected.
-    Fixed bug where deleting the last character in a span with decorations produced an incorrect element when typing.
-    Fixed bug where focusing on inline editors made the toolbar flicker when moving between elements quickly.
-    Fixed bug where the selection would be stored incorrectly in inline editors when the mouseup event was fired outside the editor body.
-    Fixed bug where toggling bold at the end of an inline boundary would toggle off the whole word.
-    Fixed bug where setting the skin to false would not stop the loading of some skin css files.
-    Fixed bug in mobile theme where pinch-to-zoom would break after exiting the editor.
-    Fixed bug where sublists of a fully selected list would not be switched correctly when changing list style.
-    Fixed bug where inserting media by source would break the UndoManager.
-    Fixed bug where inserting some content into the editor with a specific selection would replace some content incorrectly.
-    Fixed bug where selecting all content with ctrl+a in IE11 caused problems with untoggling some formatting.
-    Fixed bug where the Search and Replace Plugin left some marker spans in the editor when undoing and redoing after replacing some content.
-    Fixed bug where the editor would not get a scrollbar when using the Fullscreen and Autoresize plugins together.
-    Fixed bug where the font selector would stop working correctly after selecting fonts three times.
-    Fixed so pressing the enter key inside of an inline boundary inserts a br after the inline boundary element.
-    Fixed a bug where it wasn't possible to use tab navigation inside of a table that was inside of a list.
-    Fixed bug where end_container_on_empty_block would incorrectly remove elements.
-    Fixed bug where content_styles weren't added to the Preview Plugin iframe.
-    Fixed so the beforeSetContent/beforeGetContent events are preventable.
-    Fixed bug where changing height value in Table Plugin advanced tab didn't do anything.
-    Fixed bug where it wasn't possible to remove formatting from content in beginning of table cell.
-Version 4.7.1 (2017-10-09)
-    Fixed bug where theme set to false on an inline editor produced an extra div element after the target element.
-    Fixed bug where the editor drag icon was misaligned with the branding set to false.
-    Fixed bug where doubled menu items were not being removed as expected with the removed_menuitems setting.
-    Fixed bug where the Table of contents plugin threw an error when initialized.
-    Fixed bug where it wasn't possible to add inline formats to text selected right to left.
-    Fixed bug where the paste from plain text mode did not work as expected.
-    Fixed so the style previews do not set color and background color when selected.
-    Fixed bug where the Autolink plugin didn't work as expected with some formats applied on an empty editor.
-    Fixed bug where the Textpattern plugin were throwing errors on some patterns.
-    Fixed bug where the Save plugin saved all editors instead of only the active editor. Patch contributed by dannoe.
-Version 4.7.0 (2017-10-03)
-    Added new mobile ui that is specifically designed for mobile devices.
-    Updated the default skin to be more modern and white since white is preferred by most implementations.
-    Restructured the default menus to be more similar to common office suites like Google Docs.
-    Fixed so theme can be set to false on both inline and iframe editor modes.
-    Fixed bug where inline editor would add/remove the visualblocks css multiple times.
-    Fixed bug where selection wouldn't be properly restored when editor lost focus and commands where invoked.
-    Fixed bug where toc plugin would generate id:s for headers even though a toc wasn't inserted into the content.
-    Fixed bug where is wasn't possible to drag/drop contents within the editor if paste_data_images where set to true.
-    Fixed bug where getParam and close in WindowManager would get the first opened window instead of the last opened window.
-    Fixed bug where delete would delete between cells inside a table in Firefox.
-Version 4.6.7 (2017-09-18)
-    Fixed bug where paste wasn't working in IOS.
-    Fixed bug where the Word Count Plugin didn't count some mathematical operators correctly.
-    Fixed bug where inserting a list in a table caused the cell to expand in height.
-    Fixed bug where pressing enter in a list located inside of a table deleted list items instead of inserting new list item.
-    Fixed bug where copy and pasting table cells produced inconsistent results.
-    Fixed bug where initializing an editor with an ID of 'length' would throw an exception.
-    Fixed bug where it was possible to split a non merged table cell.
-    Fixed bug where copy and pasting a list with a very specific selection into another list would produce a nested list.
-    Fixed bug where copy and pasting ordered lists sometimes produced unordered lists.
-    Fixed bug where padded elements inside other elements would be treated as empty.
-    Added some missing translations to Image, Link and Help plugins.
-    Fixed so you can resize images inside a figure element.
-    Fixed bug where an inline TinyMCE editor initialized on a table did not set selection on load in Chrome.
-    Fixed the positioning of the inlite toolbar when the target element wasn't big enough to fit the toolbar.
-Version 4.6.6 (2017-08-30)
-    Fixed so that notifications wrap long text content instead of bleeding outside the notification element.
-    Fixed so the content_style css is added after the skin and custom stylesheets.
-    Fixed bug where it wasn't possible to remove a table with the Cut button.
-    Fixed bug where the center format wasn't getting the same font size as the other formats in the format preview.
-    Fixed bug where the wordcount plugin wasn't counting hyphenated words correctly.
-    Fixed bug where all content pasted into the editor was added to the end of the editor.
-    Fixed bug where enter keydown on list item selection only deleted content and didn't create a new line.
-    Fixed bug where destroying the editor while the content css was still loading caused error notifications on Firefox.
-    Fixed bug where undoing cut operation in IE11 left some unwanted html in the editor content.
-    Fixed bug where enter keydown would throw an error in IE11.
-    Fixed bug where duplicate instances of an editor were added to the editors array when using the createEditor API.
-    Fixed bug where the formatter applied formats on the wrong content when spellchecker was activated.
-    Fixed bug where switching formats would reset font size on child nodes.
-    Fixed bug where the table caption element weren't always the first descendant to the table tag.
-    Fixed bug where pasting some content into the editor on chrome some newlines were removed.
-    Fixed bug where it wasn't possible to remove a list if a list item was a table element.
-    Fixed bug where copy/pasting partial selections of tables wouldn't produce a proper table.
-    Fixed bug where the searchreplace plugin could not find consecutive spaces.
-    Fixed bug where background color wasn't applied correctly on some partially selected contents.
-Version 4.6.5 (2017-08-02)
-    Added new inline_boundaries_selector that allows you to specify the elements that should have boundaries.
-    Added new local upload feature this allows the user to upload images directly from the image dialog.
-    Added a new api for providing meta data for plugins. It will show up in the help dialog if it's provided.
-    Fixed so that the notifications created by the notification manager are more screen reader accessible.
-    Fixed bug where changing the list format on multiple selected lists didn't change all of the lists.
-    Fixed bug where the nonbreaking plugin would insert multiple undo levels when pressing the tab key.
-    Fixed bug where delete/backspace wouldn't render a caret when all editor contents where deleted.
-    Fixed bug where delete/backspace wouldn't render a caret if the deleted element was a single contentEditable false element.
-    Fixed bug where the wordcount plugin wouldn't count words correctly if word where typed after applying a style format.
-    Fixed bug where the wordcount plugin would count mathematical formulas as multiple words for example 1+1=2.
-    Fixed bug where formatting of triple clicked blocks on Chrome/Safari would result in styles being added outside the visual selection.
-    Fixed bug where paste would add the contents to the end of the editor area when inline mode was used.
-    Fixed bug where toggling off bold formatting on text entered in a new paragraph would add an extra line break.
-    Fixed bug where autolink plugin would only produce a link on every other consecutive link on Firefox.
-    Fixed bug where it wasn't possible to select all contents if the content only had one pre element.
-    Fixed bug where sizzle would produce lagging behavior on some sites due to repaints caused by feature detection.
-    Fixed bug where toggling off inline formats wouldn't include the space on selected contents with leading or trailing spaces.
-    Fixed bug where the cut operation in UI wouldn't work in Chrome.
-    Fixed bug where some legacy editor initialization logic would throw exceptions about editor settings not being defined.
-    Fixed bug where it wasn't possible to apply text color to links if they where part of a non collapsed selection.
-    Fixed bug where an exception would be thrown if the user selected a video element and then moved the focus outside the editor.
-    Fixed bug where list operations didn't work if there where block elements inside the list items.
-    Fixed bug where applying block formats to lists wrapped in block elements would apply to all elements in that wrapped block.
-Version 4.6.4 (2017-06-13)
-    Fixed bug where the editor would move the caret when clicking on the scrollbar next to a content editable false block.
-    Fixed bug where the text color select dropdowns wasn't placed correctly when they didn't fit the width of the screen.
-    Fixed bug where the default editor line height wasn't working for mixed font size contents.
-    Fixed bug where the content css files for inline editors were loaded multiple times for multiple editor instances.
-    Fixed bug where the initial value of the font size/font family dropdowns wasn't displayed.
-    Fixed bug where the I18n api was not supporting arrays as the translation replacement values.
-    Fixed bug where chrome would display "The given range isn't in document." errors for invalid ranges passed to setRng.
-    Fixed bug where the compat3x plugin wasn't working since the global tinymce references wasn't resolved correctly.
-    Fixed bug where the preview plugin wasn't encoding the base url passed into the iframe contents producing a xss bug.
-    Fixed bug where the dom parser/serializer wasn't handling some special elements like noframes, title and xmp.
-    Fixed bug where the dom parser/serializer wasn't handling cdata sections with comments inside.
-    Fixed bug where the editor would scroll to the top of the editable area if a dialog was closed in inline mode.
-    Fixed bug where the link dialog would not display the right rel value if rel_list was configured.
-    Fixed bug where the context menu would select images on some platforms but not others.
-    Fixed bug where the filenames of images were not retained on dragged and drop into the editor from the desktop.
-    Fixed bug where the paste plugin would misrepresent newlines when pasting plain text and having forced_root_block configured.
-    Fixed so that the error messages for the imagetools plugin is more human readable.
-    Fixed so the internal validate setting for the parser/serializer can't be set from editor initialization settings.
-Version 4.6.3 (2017-05-30)
-    Fixed bug where the arrow keys didn't work correctly when navigating on nested inline boundary elements.
-    Fixed bug where delete/backspace didn't work correctly on nested inline boundary elements.
-    Fixed bug where image editing didn't work on subsequent edits of the same image.
-    Fixed bug where charmap descriptions wouldn't properly wrap if they exceeded the width of the box.
-    Fixed bug where the default image upload handler only accepted 200 as a valid http status code.
-    Fixed so rel on target=_blank links gets forced with only noopener instead of both noopener and noreferrer.
-Version 4.6.2 (2017-05-23)
-    Fixed bug where the SaxParser would run out of memory on very large documents.
-    Fixed bug with formatting like font size wasn't applied to del elements.
-    Fixed bug where various api calls would be throwing exceptions if they where invoked on a removed editor instance.
-    Fixed bug where the branding position would be incorrect if the editor was inside a hidden tab and then later showed.
-    Fixed bug where the color levels feature in the imagetools dialog wasn't working properly.
-    Fixed bug where imagetools dialog wouldn't pre-load images from CORS domains, before trying to prepare them for editing.
-    Fixed bug where the tab key would move the caret to the next table cell if being pressed inside a list inside a table.
-    Fixed bug where the cut/copy operations would loose parent context like the current format etc.
-    Fixed bug with format preview not working on invalid elements excluded by valid_elements.
-    Fixed bug where blocks would be merged in incorrect order on backspace/delete.
-    Fixed bug where zero length text nodes would cause issues with the undo logic if there where iframes present.
-    Fixed bug where the font size/family select lists would throw errors if the first node was a comment.
-    Fixed bug with csp having to allow local script evaluation since it was used to detect global scope.
-    Fixed bug where CSP required a relaxed option for javascript: URLs in unsupported legacy browsers.
-    Fixed bug where a fake caret would be rendered for td with the contenteditable=false.
-    Fixed bug where typing would be blocked on IE 11 when within a nested contenteditable=true/false structure.
-Version 4.6.1 (2017-05-10)
-    Added configuration option to list plugin to disable tab indentation.
-    Fixed bug where format change on very specific content could cause the selection to change.
-    Fixed bug where TinyMCE could not be lazyloaded through jquery integration.
-    Fixed bug where entities in style attributes weren't decoded correctly on paste in webkit.
-    Fixed bug where fontsize_formats option had been renamed incorrectly.
-    Fixed bug with broken backspace/delete behaviour between contenteditable=false blocks.
-    Fixed bug where it wasn't possible to backspace to the previous line with the inline boundaries functionality turned on.
-    Fixed bug where is wasn't possible to move caret left and right around a linked image with the inline boundaries functionality turned on.
-    Fixed bug where pressing enter after/before hr element threw exception. Patch contributed bradleyke.
-    Fixed so the CSS in the visualblocks plugin doesn't overwrite background color. Patch contributed by Christian Rank.
-    Fixed bug where multibyte characters weren't encoded correctly. Patch contributed by James Tarkenton.
-    Fixed bug where shift-click to select within contenteditable=true fields wasn't working.
-Version 4.6.0 (2017-05-04)
-    Dropped support for IE 8-10 due to market share and lack of support from Microsoft. See tinymce docs for details.
-    Added an inline boundary caret position feature that makes it easier to type at the beginning/end of links/code elements.
-    Added a help plugin that adds a button and a dialog showing the editor shortcuts and loaded plugins.
-    Added an inline_boundaries option that allows you to disable the inline boundary feature if it's not desired.
-    Added a new ScrollIntoView event that allows you to override the default scroll to element behavior.
-    Added role and aria- attributes as valid elements in the default valid elements config.
-    Added new internal flag for PastePreProcess/PastePostProcess this is useful to know if the paste was coming from an external source.
-    Added new ignore function to UndoManager this works similar to transact except that it doesn't add an undo level by default.
-    Fixed so that urls gets retained for images when being edited. This url is then passed on to the upload handler.
-    Fixed so that the editors would be initialized on readyState interactive instead of complete.
-    Fixed so that the init event of the editor gets fired once all contentCSS files have been properly loaded.
-    Fixed so that width/height of the editor gets taken from the textarea element if it's explicitly specified in styles.
-    Fixed so that keep_styles set to false no longer clones class/style from the previous paragraph on enter.
-    Fixed so that the default line-height is 1.2em to avoid zwnbsp characters from producing text rendering glitches on Windows.
-    Fixed so that loading errors of content css gets presented by a notification message.
-    Fixed so figure image elements can be linked when selected this wraps the figure image in a anchor element.
-    Fixed bug where it wasn't possible to copy/paste rows with colspans by using the table copy/paste feature.
-    Fixed bug where the protect setting wasn't properly applied to header/footer parts when using the fullpage plugin.
-    Fixed bug where custom formats that specified upper case element names where not applied correctly.
-    Fixed bug where some screen readers weren't reading buttons due to an aria specific fix for IE 8.
-    Fixed bug where cut wasn't working correctly on iOS due to it's clipboard API not working correctly.
-    Fixed bug where Edge would paste div elements instead of paragraphs when pasting plain text.
-    Fixed bug where the textpattern plugin wasn't dealing with trailing punctuations correctly.
-    Fixed bug where image editing would some times change the image format from jpg to png.
-    Fixed bug where some UI elements could be inserted into the toolbar even if they where not registered.
-    Fixed bug where it was possible to click the TD instead of the character in the character map and that caused an exception.
-    Fixed bug where the font size/font family dropdowns would sometimes show an incorrect value due to css not being loaded in time.
-    Fixed bug with the media plugin inserting undefined instead of retaining size when media_dimensions was set to false.
-    Fixed bug with deleting images when forced_root_blocks where set to false.
-    Fixed bug where input focus wasn't properly handled on nested content editable elements.
-    Fixed bug where Chrome/Firefox would throw an exception when selecting images due to recent change of setBaseAndExtent support.
-    Fixed bug where malformed blobs would throw exceptions now they are simply ignored.
-    Fixed bug where backspace/delete wouldn't work properly in some cases where all contents was selected in WebKit.
-    Fixed bug with Angular producing errors since it was expecting events objects to be patched with their custom properties.
-    Fixed bug where the formatter would apply formatting to spellchecker errors now all bogus elements are excluded.
-    Fixed bug with backspace/delete inside table caption elements wouldn't behave properly on IE 11.
-    Fixed bug where typing after a contenteditable false inline element could move the caret to the end of that element.
-    Fixed bug where backspace before/after contenteditable false blocks wouldn't properly remove the right element.
-    Fixed bug where backspace before/after contenteditable false inline elements wouldn't properly empty the current block element.
-    Fixed bug where vertical caret navigation with a custom line-height would sometimes match incorrect positions.
-    Fixed bug with paste on Edge where character encoding wasn't handled properly due to a browser bug.
-    Fixed bug with paste on Edge where extra fragment data was inserted into the contents when pasting.
-    Fixed bug with pasting contents when having a whole block element selected on WebKit could cause WebKit spans to appear.
-    Fixed bug where the visualchars plugin wasn't working correctly showing invisible nbsp characters.
-    Fixed bug where browsers would hang if you tried to load some malformed html contents.
-    Fixed bug where the init call promise wouldn't resolve if the specified selector didn't find any matching elements.
-    Fixed bug where the Schema isValidChild function was case sensitive.
-Version 4.5.3 (2017-02-01)
-    Added keyboard navigation for menu buttons when the menu is in focus.
-    Added api to the list plugin for setting custom classes/attributes on lists.
-    Added validation for the anchor plugin input field according to W3C id naming specifications.
-    Fixed bug where media placeholders were removed after resize with the forced_root_block setting set to false.
-    Fixed bug where deleting selections with similar sibling nodes sometimes deleted the whole document.
-    Fixed bug with inlite theme where several toolbars would appear scrolling when more than one instance of the editor was in use.
-    Fixed bug where the editor would throw error with the fontselect plugin on hidden editor instances in Firefox.
-    Fixed bug where the background color would not stretch to the font size.
-    Fixed bug where font size would be removed when changing background color.
-    Fixed bug where the undomanager trimmed away whitespace between nodes on undo/redo.
-    Fixed bug where media_dimensions=false in media plugin caused the editor to throw an error.
-    Fixed bug where IE was producing font/u elements within links on paste.
-    Fixed bug where some button tooltips were broken when compat3x was in use.
-    Fixed bug where backspace/delete/typeover would remove the caption element.
-    Fixed bug where powerspell failed to function when compat3x was enabled.
-    Fixed bug where it wasn't possible to apply sub/sup on text with large font size.
-    Fixed bug where pre tags with spaces weren't treated as content.
-    Fixed bug where Meta+A would select the entire document instead of all contents in nested ce=true elements.
-Version 4.5.2 (2017-01-04)
-    Added missing keyboard shortcut description for the underline menu item in the format menu.
-    Fixed bug where external blob urls wasn't properly handled by editor upload logic. Patch contributed by David Oviedo.
-    Fixed bug where urls wasn't treated as a single word by the wordcount plugin.
-    Fixed bug where nbsp characters wasn't treated as word delimiters by the wordcount plugin.
-    Fixed bug where editor instance wasn't properly passed to the format preview logic. Patch contributed by NullQuery.
-    Fixed bug where the fake caret wasn't hidden when you moved selection to a cE=false element.
-    Fixed bug where it wasn't possible to edit existing code sample blocks.
-    Fixed bug where it wasn't possible to delete editor contents if the selection included an empty block.
-    Fixed bug where the formatter wasn't expanding words on some international characters. Patch contributed by Martin Larochelle.
-    Fixed bug where the open link feature wasn't working correctly on IE 11.
-    Fixed bug where enter before/after a cE=false block wouldn't properly padd the paragraph with an br element.
-    Fixed so font size and font family select boxes always displays a value by using the runtime style as a fallback.
-    Fixed so missing plugins will be logged to console as warnings rather than halting the initialization of the editor.
-    Fixed so splitbuttons become normal buttons in advlist plugin if styles are empty. Patch contributed by René Schleusner.
-    Fixed so you can multi insert rows/cols by selecting table cells and using insert rows/columns.
-Version 4.5.1 (2016-12-07)
-    Fixed bug where the lists plugin wouldn't initialize without the advlist plugins if served from cdn.
-    Fixed bug where selectors with "*" would cause the style format preview to throw an error.
-    Fixed bug with toggling lists off on lists with empty list items would throw an error.
-    Fixed bug where editing images would produce non existing blob uris.
-    Fixed bug where the offscreen toc selection would be treated as the real toc element.
-    Fixed bug where the aria level attribute for element path would have an incorrect start index.
-    Fixed bug where the offscreen selection of cE=false that where very wide would be shown onscreen. Patch contributed by Steven Bufton.
-    Fixed so the default_link_target gets applied to links created by the autolink plugin.
-    Fixed so that the name attribute gets removed by the anchor plugin if editing anchors.
-Version 4.5.0 (2016-11-23)
-    Added new toc plugin allows you to insert table of contents based on editor headings.
-    Added new auto complete menu to all url fields. Adds history, link to anchors etc.
-    Added new sidebar api that allows you to add custom sidebar panels and buttons to toggle these.
-    Added new insert menu button that allows you to have multiple insert functions under the same menu button.
-    Added new open link feature to ctrl+click, alt+enter and context menu.
-    Added new media_embed_handler option to allow the media plugin to be populated with custom embeds.
-    Added new support for editing transparent images using the image tools dialog.
-    Added new images_reuse_filename option to allow filenames of images to be retained for upload.
-    Added new security feature where links with target="_blank" will by default get rel="noopener noreferrer".
-    Added new allow_unsafe_link_target to allow you to opt-out of the target="_blank" security feature.
-    Added new style_formats_autohide option to automatically hide styles based on context.
-    Added new codesample_content_css option to specify where the code sample prism css is loaded from.
-    Added new support for Japanese/Chinese word count following the unicode standards on this.
-    Added new fragmented undo levels this dramatically reduces flicker on contents with iframes.
-    Added new live previews for complex elements like table or lists.
-    Fixed bug where it wasn't possible to properly tab between controls in a dialog with a disabled form item control.
-    Fixed bug where firefox would generate a rectangle on elements produced after/before a cE=false elements.
-    Fixed bug with advlist plugin not switching list element format properly in some edge cases.
-    Fixed bug where col/rowspans wasn't correctly computed by the table plugin in some cases.
-    Fixed bug where the table plugin would thrown an error if object_resizing was disabled.
-    Fixed bug where some invalid markup would cause issues when running in XHTML mode. Patch contributed by Charles Bourasseau.
-    Fixed bug where the fullscreen class wouldn't be removed properly when closing dialogs.
-    Fixed bug where the PastePlainTextToggle event wasn't fired by the paste plugin when the state changed.
-    Fixed bug where table the row type wasn't properly updated in table row dialog. Patch contributed by Matthias Balmer.
-    Fixed bug where select all and cut wouldn't place caret focus back to the editor in WebKit. Patch contributed by Daniel Jalkut.
-    Fixed bug where applying cell/row properties to multiple cells/rows would reset other unchanged properties.
-    Fixed bug where some elements in the schema would have redundant/incorrect children.
-    Fixed bug where selector and target options would cause issues if used together.
-    Fixed bug where drag/drop of images from desktop on chrome would thrown an error.
-    Fixed bug where cut on WebKit/Blink wouldn't add an undo level.
-    Fixed bug where IE 11 would scroll to the cE=false elements when they where selected.
-    Fixed bug where keys like F5 wouldn't work when a cE=false element was selected.
-    Fixed bug where the undo manager wouldn't stop the typing state when commands where executed.
-    Fixed bug where unlink on wrapped links wouldn't work properly.
-    Fixed bug with drag/drop of images on WebKit where the image would be deleted form the source editor.
-    Fixed bug where the visual characters mode would be disabled when contents was extracted from the editor.
-    Fixed bug where some browsers would toggle of formats applied to the caret when clicking in the editor toolbar.
-    Fixed bug where the custom theme function wasn't working correctly.
-    Fixed bug where image option for custom buttons required you to have icon specified as well.
-    Fixed bug where the context menu and contextual toolbars would be visible at the same time and sometimes overlapping.
-    Fixed bug where the noneditable plugin would double wrap elements when using the noneditable_regexp option.
-    Fixed bug where tables would get padding instead of margin when you used the indent button.
-    Fixed bug where the charmap plugin wouldn't properly insert non breaking spaces.
-    Fixed bug where the color previews in color input boxes wasn't properly updated.
-    Fixed bug where the list items of previous lists wasn't merged in the right order.
-    Fixed bug where it wasn't possible to drag/drop inline-block cE=false elements on IE 11.
-    Fixed bug where some table cell merges would produce incorrect rowspan/colspan.
-    Fixed so the font size of the editor defaults to 14px instead of 11px this can be overridden by custom css.
-    Fixed so wordcount is debounced to reduce cpu hogging on larger texts.
-    Fixed so tinymce global gets properly exported as a module when used with some module bundlers.
-    Fixed so it's possible to specify what css properties you want to preview on specific formats.
-    Fixed so anchors are contentEditable=false while within the editor.
-    Fixed so selected contents gets wrapped in a inline code element by the codesample plugin.
-    Fixed so conditional comments gets properly stripped independent of case. Patch contributed by Georgii Dolzhykov.
-    Fixed so some escaped css sequences gets properly handled. Patch contributed by Georgii Dolzhykov.
-    Fixed so notifications with the same message doesn't get displayed at the same time.
-    Fixed so F10 can be used as an alternative key to focus to the toolbar.
-    Fixed various api documentation issues and typos.
-    Removed layer plugin since it wasn't really ported from 3.x and there doesn't seem to be much use for it.
-    Removed moxieplayer.swf from the media plugin since it wasn't used by the media plugin.
-    Removed format state from the advlist plugin to be more consistent with common word processors.
-Version 4.4.3 (2016-09-01)
-    Fixed bug where copy would produce an exception on Chrome.
-    Fixed bug where deleting lists on IE 11 would merge in correct text nodes.
-    Fixed bug where deleting partial lists with indentation wouldn't cause proper normalization.
-Version 4.4.2 (2016-08-25)
-    Added new importcss_exclusive option to disable unique selectors per group.
-    Added new group specific selector_converter option to importcss plugin.
-    Added new codesample_languages option to apply custom languages to codesample plugin.
-    Added new codesample_dialog_width/codesample_dialog_height options.
-    Fixed bug where fullscreen button had an incorrect keyboard shortcut.
-    Fixed bug where backspace/delete wouldn't work correctly from a block to a cE=false element.
-    Fixed bug where smartpaste wasn't detecting links with special characters in them like tilde.
-    Fixed bug where the editor wouldn't get proper focus if you clicked on a cE=false element.
-    Fixed bug where it wasn't possible to copy/paste table rows that had merged cells.
-    Fixed bug where merging cells could some times produce invalid col/rowspan attibute values.
-    Fixed bug where getBody would sometimes thrown an exception now it just returns null if the iframe is clobbered.
-    Fixed bug where drag/drop of cE=false element wasn't properly constrained to viewport.
-    Fixed bug where contextmenu on Mac would collapse any selection to a caret.
-    Fixed bug where rtl mode wasn't rendered properly when loading a language pack with the rtl flag.
-    Fixed bug where Kamer word bounderies would be stripped from contents.
-    Fixed bug where lists would sometimes render two dots or numbers on the same line.
-    Fixed bug where the skin_url wasn't used by the inlite theme.
-    Fixed so data attributes are ignored when comparing formats in the formatter.
-    Fixed so it's possible to disable inline toolbars in the inlite theme.
-    Fixed so template dialog gets resized if it doesn't fit the window viewport.
-Version 4.4.1 (2016-07-26)
-    Added smart_paste option to paste plugin to allow disabling the paste behavior if needed.
-    Fixed bug where png urls wasn't properly detected by the smart paste logic.
-    Fixed bug where the element path wasn't working properly when multiple editor instances where used.
-    Fixed bug with creating lists out of multiple paragraphs would just create one list item instead of multiple.
-    Fixed bug where scroll position wasn't properly handled by the inlite theme to place the toolbar properly.
-    Fixed bug where multiple instances of the editor using the inlite theme didn't render the toolbar properly.
-    Fixed bug where the shortcut label for fullscreen mode didn't match the actual shortcut key.
-    Fixed bug where it wasn't possible to select cE=false blocks using touch devices on for example iOS.
-    Fixed bug where it was possible to select the child image within a cE=false on IE 11.
-    Fixed so inserts of html containing lists doesn't merge with any existing lists unless it's a paste operation.
-Version 4.4.0 (2016-06-30)
-    Added new inlite theme this is a more lightweight inline UI.
-    Added smarter paste logic that auto detects urls in the clipboard and inserts images/links based on that.
-    Added a better image resize algorithm for better image quality in the imagetools plugin.
-    Fixed bug where it wasn't possible to drag/dropping cE=false elements on FF.
-    Fixed bug where backspace/delete before/after a cE=false block would produce a new paragraph.
-    Fixed bug where list style type css property wasn't preserved when indenting lists.
-    Fixed bug where merging of lists where done even if the list style type was different.
-    Fixed bug where the image_dataimg_filter function wasn't used when pasting images.
-    Fixed bug where nested editable within a non editable element would cause scroll on focus in Chrome.
-    Fixed so invalid targets for inline mode is blocked on initialization. We only support elements that can have children.
-Version 4.3.13 (2016-06-08)
-    Added characters with a diacritical mark to charmap plugin. Patch contributed by Dominik Schilling.
-    Added better error handling if the image proxy service would produce errors.
-    Fixed issue with pasting list items into list items would produce nested list rather than a merged list.
-    Fixed bug where table selection could get stuck in selection mode for inline editors.
-    Fixed bug where it was possible to place the caret inside the resize grid elements.
-    Fixed bug where it wasn't possible to place in elements horizontally adjacent cE=false blocks.
-    Fixed bug where multiple notifications wouldn't be properly placed on screen.
-    Fixed bug where multiple editor instance of the same id could be produces in some specific integrations.
-Version 4.3.12 (2016-05-10)
-    Fixed bug where focus calls couldn't be made inside the editors PostRender event handler.
-    Fixed bug where some translations wouldn't work as expected due to a bug in editor.translate.
-    Fixed bug where the node change event could fire with a node out side the root of the editor.
-    Fixed bug where Chrome wouldn't properly present the keyboard paste clipboard details when paste was clicked.
-    Fixed bug where merged cells in tables couldn't be selected from right to left.
-    Fixed bug where insert row wouldn't properly update a merged cells rowspan property.
-    Fixed bug where the color input boxes preview field wasn't properly set on initialization.
-    Fixed bug where IME composition inside table cells wouldn't work as expected on IE 11.
-    Fixed so all shadow dom support is under and experimental flag due to flaky browser support.
-Version 4.3.11 (2016-04-25)
-    Fixed bug where it wasn't possible to insert empty blocks though the API unless they where padded.
-    Fixed bug where you couldn't type the Euro character on Windows.
-    Fixed bug where backspace/delete from a cE=false element to a text block didn't work properly.
-    Fixed bug where the text color default grid would render incorrectly.
-    Fixed bug where the codesample plugin wouldn't load the css in the editor for multiple editors.
-    Fixed so the codesample plugin textarea gets focused by default.
-Version 4.3.10 (2016-04-12)
-    Fixed bug where the key "y" on WebKit couldn't be entered due to conflict with keycode for F10 on keypress.
-Version 4.3.9 (2016-04-12)
-    Added support for focusing the contextual toolbars using keyboard.
-    Added keyboard support for slider UI controls. You can no increase/decrease using arrow keys.
-    Added url pattern matching for Dailymotion to media plugin. Patch contributed by Bertrand Darbon.
-    Added body_class to template plugin preview. Patch contributed by Milen Petrinski.
-    Added options to better override textcolor pickers with custom colors. Patch contributed by Xavier Boubert.
-    Added visual arrows to inline contextual toolbars so that they point to the element being active.
-    Fixed so toolbars for tables or other larger elements get better positioned below the scrollable viewport.
-    Fixed bug where it was possible to click links inside cE=false blocks.
-    Fixed bug where event targets wasn't properly handled in Safari Technical Preview.
-    Fixed bug where drag/drop text in FF 45 would make the editor caret invisible.
-    Fixed bug where the remove state wasn't properly set on editor instances when detected as clobbered.
-    Fixed bug where offscreen selection of some cE=false elements would render onscreen. Patch contributed by Steven Bufton
-    Fixed bug where enter would clone styles out side the root on editors inside a span. Patch contributed by ChristophKaser.
-    Fixed bug where drag/drop of images into the editor didn't work correctly in FF.
-    Fixed so the first item in panels for the imagetools dialog gets proper keyboard focus.
-    Changed the Meta+Shift+F shortcut to Ctrl+Shift+F since Czech, Slovak, Polish languages used the first one for input.
-Version 4.3.8 (2016-03-15)
-    Fixed bug where inserting HR at the end of a block element would produce an extra empty block.
-    Fixed bug where links would be clickable when readonly mode was enabled.
-    Fixed bug where the formatter would normalize to the wrong node on very specific content.
-    Fixed bug where some nested list items couldn't be indented properly.
-    Fixed bug where links where clickable in the preview dialog.
-    Fixed so the alt attribute doesn't get padded with an empty value by default.
-    Fixed so nested alignment works more correctly. You will now alter the alignment to the closest block parent.
-Version 4.3.7 (2016-03-02)
-    Fixed bug where incorrect icons would be rendered for imagetools edit and color levels.
-    Fixed bug where navigation using arrow keys inside a SelectBox didn't move up/down.
-    Fixed bug where the visualblocks plugin would render borders round internal UI elements.
-Version 4.3.6 (2016-03-01)
-    Added new paste_remember_plaintext_info option to allow a global disable of the plain text mode notification.
-    Added new PastePlainTextToggle event that fires when plain text mode toggles on/off.
-    Fixed bug where it wasn't possible to select media elements since the drag logic would snap it to mouse cursor.
-    Fixed bug where it was hard to place the caret inside nested cE=true elements when the outer cE=false element was focused.
-    Fixed bug where editors wouldn't properly initialize if both selector and mode where used.
-    Fixed bug where IME input inside table cells would switch the IME off.
-    Fixed bug where selection inside the first table cell would cause the whole table cell to get selected.
-    Fixed bug where error handling of images being uploaded wouldn't properly handle faulty statuses.
-    Fixed bug where inserting contents before a HR would cause an exception to be thrown.
-    Fixed bug where copy/paste of Excel data would be inserted as an image.
-    Fixed caret position issues with copy/paste of inline block cE=false elements.
-    Fixed issues with various menu item focus bugs in Chrome. Where the focused menu bar item wasn't properly blurred.
-    Fixed so the notifications have a solid background since it would be hard to read if there where text under it.
-    Fixed so notifications gets animated similar to the ones used by dialogs.
-    Fixed so larger images that gets pasted is handled better.
-    Fixed so the window close button is more uniform on various platform and also increased it's hit area.
-Version 4.3.5 (2016-02-11)
-    Npm version bump due to package not being fully updated.
-Version 4.3.4 (2016-02-11)
-    Added new OpenWindow/CloseWindow events that gets fired when windows open/close.
-    Added new NewCell/NewRow events that gets fired when table cells/rows are created.
-    Added new Promise return value to tinymce.init makes it easier to handle initialization.
-    Removed the jQuery version the jQuery plugin is now moved into the main package.
-    Removed jscs from build process since eslint can now handle code style checking.
-    Fixed various bugs with drag/drop of contentEditable:false elements.
-    Fixed bug where deleting of very specific nested list items would result in an odd list.
-    Fixed bug where lists would get merged with adjacent lists outside the editable inline root.
-    Fixed bug where MS Edge would crash when closing a dialog then clicking a menu item.
-    Fixed bug where table cell selection would add undo levels.
-    Fixed bug where table cell selection wasn't removed when inline editor where removed.
-    Fixed bug where table cell selection wouldn't work properly on nested tables.
-    Fixed bug where table merge menu would be available when merging between thead and tbody.
-    Fixed bug where table row/column resize wouldn't get properly removed when the editor was removed.
-    Fixed bug where Chrome would scroll to the editor if there where a empty hash value in document url.
-    Fixed bug where the cache suffix wouldn't work correctly with the importcss plugin.
-    Fixed bug where selection wouldn't work properly on MS Edge on Windows Phone 10.
-    Fixed so adjacent pre blocks gets joined into one pre block since that seems like the user intent.
-    Fixed so events gets properly dispatched in shadow dom. Patch provided by Nazar Mokrynskyi.
-Version 4.3.3 (2016-01-14)
-    Added new table_resize_bars configuration setting.  This setting allows you to disable the table resize bars.
-    Added new beforeInitialize event to tinymce.util.XHR lets you modify XHR properties before open. Patch contributed by Brent Clintel.
-    Added new autolink_pattern setting to autolink plugin. Enables you to override the default autolink formats. Patch contributed by Ben Tiedt.
-    Added new charmap option that lets you override the default charmap of the charmap plugin.
-    Added new charmap_append option that lets you add new characters to the default charmap of the charmap plugin.
-    Added new insertCustomChar event that gets fired when a character is inserted by the charmap plugin.
-    Fixed bug where table cells started with a superfluous &nbsp; in IE10+.
-    Fixed bug where table plugin would retain all BR tags when cells were merged.
-    Fixed bug where media plugin would strip underscores from youtube urls.
-    Fixed bug where IME input would fail on IE 11 if you typed within a table.
-    Fixed bug where double click selection of a word would remove the space before the word on insert contents.
-    Fixed bug where table plugin would produce exceptions when hovering tables with invalid structure.
-    Fixed bug where fullscreen wouldn't scroll back to it's original position when untoggled.
-    Fixed so the template plugins templates setting can be a function that gets a callback that can provide templates.
-Version 4.3.2 (2015-12-14)
-    Fixed bug where the resize bars for table cells were not affected by the object_resizing property.
-    Fixed bug where the contextual table toolbar would appear incorrectly if TinyMCE was initialized inline inside a table.
-    Fixed bug where resizing table cells did not fire a node change event or add an undo level.
-    Fixed bug where double click selection of text on IE 11 wouldn't work properly.
-    Fixed bug where codesample plugin would incorrectly produce br elements inside code elements.
-    Fixed bug where media plugin would strip dashes from youtube urls.
-    Fixed bug where it was possible to move the caret into the table resize bars.
-    Fixed bug where drag/drop into a cE=false element was possible on IE.
-Version 4.3.1 (2015-11-30)
-    Fixed so it's possible to disable the table inline toolbar by setting it to false or an empty string.
-    Fixed bug where it wasn't possible to resize some tables using the drag handles.
-    Fixed bug where unique id:s would clash for multiple editor instances and cE=false selections.
-    Fixed bug where the same plugin could be initialized multiple times.
-    Fixed bug where the table inline toolbars would be displayed at the same time as the image toolbars.
-    Fixed bug where the table selection rect wouldn't be removed when selecting another control element.
-Version 4.3.0 (2015-11-23)
-    Added new table column/row resize support. Makes it a lot more easy to resize the columns/rows in a table.
-    Added new table inline toolbar. Makes it easier to for example add new rows or columns to a table.
-    Added new notification API. Lets you display floating notifications to the end user.
-    Added new codesample plugin that lets you insert syntax highlighted pre elements into the editor.
-    Added new image_caption to images. Lets you create images with captions using a HTML5 figure/figcaption elements.
-    Added new live previews of embeded videos. Lets you play the video right inside the editor.
-    Added new setDirty method and "dirty" event to the editor. Makes it easier to track the dirty state change.
-    Added new setMode method to Editor instances that lets you dynamically switch between design/readonly.
-    Added new core support for contentEditable=false elements within the editor overrides the browsers broken behavior.
-    Rewrote the noneditable plugin to use the new contentEditable false core logic.
-    Fixed so the dirty state doesn't set to false automatically when the undo index is set to 0.
-    Fixed the Selection.placeCaretAt so it works better on IE when the coordinate is between paragraphs.
-    Fixed bug where data-mce-bogus="all" element contents where counted by the word count plugin.
-    Fixed bug where contentEditable=false elements would be indented by the indent buttons.
-    Fixed bug where images within contentEditable=false would be selected in WebKit on mouse click.
-    Fixed bug in DOMUntils split method where the replacement parameter wouldn't work on specific cases.
-    Fixed bug where the importcss plugin would import classes from the skin content css file.
-    Fixed so all button variants have a wrapping span for it's text to make it easier to skin.
-    Fixed so it's easier to exit pre block using the arrow keys.
-    Fixed bug where listboxes with fix widths didn't render correctly.
-Version 4.2.8 (2015-11-13)
-    Fixed bug where it was possible to delete tables as the inline root element if all columns where selected.
-    Fixed bug where the UI buttons active state wasn't properly updated due to recent refactoring of that logic.
-Version 4.2.7 (2015-10-27)
-    Fixed bug where backspace/delete would remove all formats on the last paragraph character in WebKit/Blink.
-    Fixed bug where backspace within a inline format element with a bogus caret container would move the caret.
-    Fixed bug where backspace/delete on selected table cells wouldn't add an undo level.
-    Fixed bug where script tags embedded within the editor could sometimes get a mce- prefix prepended to them
-    Fixed bug where validate: false option could produce an error to be thrown from the Serialization step.
-    Fixed bug where inline editing of a table as the root element could let the user delete that table.
-    Fixed bug where inline editing of a table as the root element wouldn't properly handle enter key.
-    Fixed bug where inline editing of a table as the root element would normalize the selection incorrectly.
-    Fixed bug where inline editing of a list as the root element could let the user delete that list.
-    Fixed bug where inline editing of a list as the root element could let the user split that list.
-    Fixed bug where resize handles would be rendered on editable root elements such as table.
-Version 4.2.6 (2015-09-28)
-    Added capability to set request headers when using XHRs.
-    Added capability to upload local images automatically default delay is set to 30 seconds after editing images.
-    Added commands ids mceEditImage, mceAchor and mceMedia to be avaiable from execCommand.
-    Added Edge browser to saucelabs grunt task. Patch contributed by John-David Dalton.
-    Fixed bug where blob uris not produced by tinymce would produce HTML invalid markup.
-    Fixed bug where selection of contents of a nearly empty editor in Edge would sometimes fail.
-    Fixed bug where color styles woudln't be retained on copy/paste in Blink/Webkit.
-    Fixed bug where the table plugin would throw an error when inserting rows after a child table.
-    Fixed bug where the template plugin wouldn't handle functions as variable replacements.
-    Fixed bug where undo/redo sometimes wouldn't work properly when applying formatting collapsed ranges.
-    Fixed bug where shift+delete wouldn't do a cut operation on Blink/WebKit.
-    Fixed bug where cut action wouldn't properly store the before selection bookmark for the undo level.
-    Fixed bug where backspace in side an empty list element on IE would loose editor focus.
-    Fixed bug where the save plugin wouldn't enable the buttons when a change occurred.
-    Fixed bug where Edge wouldn't initialize the editor if a document.domain was specified.
-    Fixed bug where enter key before nested images would sometimes not properly expand the previous block.
-    Fixed bug where the inline toolbars wouldn't get properly hidden when blurring the editor instance.
-    Fixed bug where Edge would paste Chinese characters on some Windows 10 installations.
-    Fixed bug where IME would loose focus on IE 11 due to the double trailing br bug fix.
-    Fixed bug where the proxy url in imagetools was incorrect. Patch contributed by Wong Ho Wang.
-Version 4.2.5 (2015-08-31)
-    Added fullscreen capability to embedded youtube and vimeo videos.
-    Fixed bug where the uploadImages call didn't work on IE 10.
-    Fixed bug where image place holders would be uploaded by uploadImages call.
-    Fixed bug where images marked with bogus would be uploaded by the uploadImages call.
-    Fixed bug where multiple calls to uploadImages would result in decreased performance.
-    Fixed bug where pagebreaks were editable to imagetools patch contributed by Rasmus Wallin.
-    Fixed bug where the element path could cause too much recursion exception.
-    Fixed bug for domains containing ".min". Patch contributed by Loïc Février.
-    Fixed so validation of external links to accept a number after www. Patch contributed by Victor Carvalho.
-    Fixed so the charmap is exposed though execCommand. Patch contributed by Matthew Will.
-    Fixed so that the image uploads are concurrent for improved performance.
-    Fixed various grammar problems in inline documentation. Patches provided by nikolas.
-Version 4.2.4 (2015-08-17)
-    Added picture as a valid element to the HTML 5 schema. Patch contributed by Adam Taylor.
-    Fixed bug where contents would be duplicated on drag/drop within the same editor.
-    Fixed bug where floating/alignment of images on Edge wouldn't work properly.
-    Fixed bug where it wasn't possible to drag images on IE 11.
-    Fixed bug where image selection on Edge would sometimes fail.
-    Fixed bug where contextual toolbars icons wasn't rendered properly when using the toolbar_items_size.
-    Fixed bug where searchreplace dialog doesn't get prefilled with the selected text.
-    Fixed bug where fragmented matches wouldn't get properly replaced by the searchreplace plugin.
-    Fixed bug where enter key wouldn't place the caret if was after a trailing space within an inline element.
-    Fixed bug where the autolink plugin could produce multiple links for the same text on Gecko.
-    Fixed bug where EditorUpload could sometimes throw an exception if the blob wasn't found.
-    Fixed xss issues with media plugin not properly filtering out some script attributes.
-Version 4.2.3 (2015-07-30)
-    Fixed bug where image selection wasn't possible on Edge due to incompatible setBaseAndExtend API.
-    Fixed bug where image blobs urls where not properly destroyed by the imagetools plugin.
-    Fixed bug where keyboard shortcuts wasn't working correctly on IE 8.
-    Fixed skin issue where the borders of panels where not visible on IE 8.
-Version 4.2.2 (2015-07-22)
-    Fixed bug where float panels were not being hidden on inline editor blur when fixed_toolbar_container config option was in use.
-    Fixed bug where combobox states wasn't properly updated if contents where updated without keyboard.
-    Fixed bug where pasting into textbox or combobox would move the caret to the end of text.
-    Fixed bug where removal of bogus span elements before block elements would remove whitespace between nodes.
-    Fixed bug where repositioning of inline toolbars where async and producing errors if the editor was removed from DOM to early. Patch by iseulde.
-    Fixed bug where element path wasn't working correctly. Patch contributed by iseulde.
-    Fixed bug where menus wasn't rendered correctly when custom images where added to a menu. Patch contributed by Naim Hammadi.
-Version 4.2.1 (2015-06-29)
-    Fixed bug where back/forward buttons in the browser would render blob images as broken images.
-    Fixed bug where Firefox would throw regexp to big error when replacing huge base64 chunks.
-    Fixed bug rendering issues with resize and context toolbars not being placed properly until next animation frame.
-    Fixed bug where the rendering of the image while cropping would some times not be centered correctly.
-    Fixed bug where listbox items with submenus would me selected as active.
-    Fixed bug where context menu where throwing an error when rendering.
-    Fixed bug where resize both option wasn't working due to resent addClass API change. Patch contributed by Jogai.
-    Fixed bug where a hideAll call for container rendered inline toolbars would throw an error.
-    Fixed bug where onclick event handler on combobox could cause issues if element.id was a function by some polluting libraries.
-    Fixed bug where listboxes wouldn't get proper selected sub menu item when using link_list or image_list.
-    Fixed so the UI controls are as wide as 4.1.x to avoid wrapping controls in toolbars.
-    Fixed so the imagetools dialog is adaptive for smaller screen sizes.
-Version 4.2.0 (2015-06-25)
-    Added new flat default skin to make the UI more modern.
-    Added new imagetools plugin, lets you crop/resize and apply filters to images.
-    Added new contextual toolbars support to the API lets you add floating toolbars for specific CSS selectors.
-    Added new promise feature fill as tinymce.util.Promise.
-    Added new built in image upload feature lets you upload any base64 encoded image within the editor as files.
-    Fixed bug where resize handles would appear in the right position in the wrong editor when switching between resizable content in different inline editors.
-    Fixed bug where tables would not be inserted in inline mode due to previous float panel fix.
-    Fixed bug where floating panels would remain open when focus was lost on inline editors.
-    Fixed bug where cut command on Chrome would thrown a browser security exception.
-    Fixed bug where IE 11 sometimes would report an incorrect size for images in the image dialog.
-    Fixed bug where it wasn't possible to remove inline formatting at the end of block elements.
-    Fixed bug where it wasn't possible to delete table cell contents when cell selection was vertical.
-    Fixed bug where table cell wasn't emptied from block elements if delete/backspace where pressed in empty cell.
-    Fixed bug where cmd+shift+arrow didn't work correctly on Firefox mac when selecting to start/end of line.
-    Fixed bug where removal of bogus elements would sometimes remove whitespace between nodes.
-    Fixed bug where the resize handles wasn't updated when the main window was resized.
-    Fixed so script elements gets removed by default to prevent possible XSS issues in default config implementations.
-    Fixed so the UI doesn't need manual reflows when using non native layout managers.
-    Fixed so base64 encoded images doesn't slow down the editor on modern browsers while editing.
-    Fixed so all UI elements uses touch events to improve mobile device support.
-    Removed the touch click quirks patch for iOS since it did more harm than good.
-    Removed the non proportional resize handles since. Unproportional resize can still be done by holding the shift key.
-Version 4.1.10 (2015-05-05)
-    Fixed bug where plugins loaded with compat3x would sometimes throw errors when loading using the jQuery version.
-    Fixed bug where extra empty paragraphs would get deleted in WebKit/Blink due to recent Quriks fix.
-    Fixed bug where the editor wouldn't work properly on IE 12 due to some required browser sniffing.
-    Fixed bug where formatting shortcut keys where interfering with Mac OS X screenshot keys.
-    Fixed bug where the caret wouldn't move to the next/previous line boundary on Cmd+Left/Right on Gecko.
-    Fixed bug where it wasn't possible to remove formats from very specific nested contents.
-    Fixed bug where undo levels wasn't produced when typing letters using the shift or alt+ctrl modifiers.
-    Fixed bug where the dirty state wasn't properly updated when typing using the shift or alt+ctrl modifiers.
-    Fixed bug where an error would be thrown if an autofocused editor was destroyed quickly after its initialization. Patch provided by thorn0.
-    Fixed issue with dirty state not being properly updated on redo operation.
-    Fixed issue with entity decoder not handling incorrectly written numeric entities.
-    Fixed issue where some PI element values wouldn't be properly encoded.
-Version 4.1.9 (2015-03-10)
-    Fixed bug where indentation wouldn't work properly for non list elements.
-    Fixed bug with image plugin not pulling the image dimensions out correctly if a custom document_base_url was used.
-    Fixed bug where ctrl+alt+[1-9] would conflict with the AltGr+[1-9] on Windows. New shortcuts is ctrl+shift+[1-9].
-    Fixed bug with removing formatting on nodes in inline mode would sometimes include nodes outside the editor body.
-    Fixed bug where extra nbsp:s would be inserted when you replaced a word surrounded by spaces using insertContent.
-    Fixed bug with pasting from Google Docs would produce extra strong elements and line feeds.
-Version 4.1.8 (2015-03-05)
-    Added new html5 sizes attribute to img elements used together with srcset.
-    Added new elementpath option that makes it possible to disable the element path but keep the statusbar.
-    Added new option table_style_by_css for the table plugin to set table styling with css rather than table attributes.
-    Added new link_assume_external_targets option to prompt the user to prepend http:// prefix if the supplied link does not contain a protocol prefix.
-    Added new image_prepend_url option to allow a custom base path/url to be added to images.
-    Added new table_appearance_options option to make it possible to disable some options.
-    Added new image_title option to make it possible to alter the title of the image, disabled by default.
-    Fixed bug where selection starting from out side of the body wouldn't produce a proper selection range on IE 11.
-    Fixed bug where pressing enter twice before a table moves the cursor in the table and causes a javascript error.
-    Fixed bug where advanced image styles were not respected.
-    Fixed bug where the less common Shift+Delete didn't produce a proper cut operation on WebKit browsers.
-    Fixed bug where image/media size constrain logic would produce NaN when handling non number values.
-    Fixed bug where internal classes where removed by the removeformat command.
-    Fixed bug with creating links table cell contents with a specific selection would throw a exceptions on WebKit/Blink.
-    Fixed bug where valid_classes option didn't work as expected according to docs. Patch provided by thorn0.
-    Fixed bug where jQuery plugin would patch the internal methods multiple times. Patch provided by Drew Martin.
-    Fixed bug where backspace key wouldn't delete the current selection of newly formatted content.
-    Fixed bug where type over of inline formatting elements wouldn't properly keep the format on WebKit/Blink.
-    Fixed bug where selection needed to be properly normalized on modern IE versions.
-    Fixed bug where Command+Backspace didn't properly delete the whole line of text but the previous word.
-    Fixed bug where UI active states wheren't properly updated on IE if you placed caret within the current range.
-    Fixed bug where delete/backspace on WebKit/Blink would remove span elements created by the user.
-    Fixed bug where delete/backspace would produce incorrect results when deleting between two text blocks with br elements.
-    Fixed bug where captions where removed when pasting from MS Office.
-    Fixed bug where lists plugin wouldn't properly remove fully selected nested lists.
-    Fixed bug where the ttf font used for icons would throw an warning message on Gecko on Mac OS X.
-    Fixed a bug where applying a color to text did not update the undo/redo history.
-    Fixed so shy entities gets displayed when using the visualchars plugin.
-    Fixed so removeformat removes ins/del by default since these might be used for strikethough.
-    Fixed so multiple language packs can be loaded and added to the global I18n data structure.
-    Fixed so transparent color selection gets treated as a normal color selection. Patch contributed by Alexander Hofbauer.
-    Fixed so it's possible to disable autoresize_overflow_padding, autoresize_bottom_margin options by setting them to false.
-    Fixed so the charmap plugin shows the description of the character in the dialog. Patch contributed by Jelle Hissink.
-    Removed address from the default list of block formats since it tends to be missused.
-    Fixed so the pre block format is called preformatted to make it more verbose.
-    Fixed so it's possible to context scope translation strings this isn't needed most of the time.
-    Fixed so the max length of the width/height input fields of the media dialog is 5 instead of 3.
-    Fixed so drag/dropped contents gets properly processed by paste plugin since it's basically a paste. Patch contributed by Greg Fairbanks.
-    Fixed so shortcut keys for headers is ctrl+alt+[1-9] instead of ctrl+[1-9] since these are for switching tabs in the browsers.
-    Fixed so "u" doesn't get converted into a span element by the legacy input filter. Since this is now a valid HTML5 element.
-    Fixed font families in order to provide appropriate web-safe fonts.
-Version 4.1.7 (2014-11-27)
-    Added HTML5 schema support for srcset, source and picture. Patch contributed by mattheu.
-    Added new cache_suffix setting to enable cache busting by producing unique urls.
-    Added new paste_convert_word_fake_lists option to enable users to disable the fake lists convert logic.
-    Fixed so advlist style changes adds undo levels for each change.
-    Fixed bug where WebKit would sometimes produce an exception when the autolink plugin where looking for URLs.
-    Fixed bug where IE 7 wouldn't be rendered properly due to aggressive css compression.
-    Fixed bug where DomQuery wouldn't accept window as constructor element.
-    Fixed bug where the color picker in 3.x dialogs wouldn't work properly. Patch contributed by Callidior.
-    Fixed bug where the image plugin wouldn't respect the document_base_url.
-    Fixed bug where the jQuery plugin would fail to append to elements named array prototype names.
-Version 4.1.6 (2014-10-08)
-    Fixed bug with clicking on the scrollbar of the iframe would cause a JS error to be thrown.
-    Fixed bug where null would produce an exception if you passed it to selection.setRng.
-    Fixed bug where Ctrl/Cmd+Tab would indent the current list item if you switched tabs in the browser.
-    Fixed bug where pasting empty cells from Excel would result in a broken table.
-    Fixed bug where it wasn't possible to switch back to default list style type.
-    Fixed issue where the select all quirk fix would fire for other modifiers than Ctrl/Cmd combinations.
-    Replaced jake with grunt since it is more mainstream and has better plugin support.
-Version 4.1.5 (2014-09-09)
-    Fixed bug where sometimes the resize rectangles wouldn't properly render on images on WebKit/Blink.
-    Fixed bug in list plugin where delete/backspace would merge empty LI elements in lists incorrectly.
-    Fixed bug where empty list elements would result in empty LI elements without it's parent container.
-    Fixed bug where backspace in empty caret formatted element could produce an type error exception of Gecko.
-    Fixed bug where lists pasted from word with a custom start index above 9 wouldn't be properly handled.
-    Fixed bug where tabfocus plugin would tab out of the editor instance even if the default action was prevented.
-    Fixed bug where tabfocus wouldn't tab properly to other adjacent editor instances.
-    Fixed bug where the DOMUtils setStyles wouldn't properly removed or update the data-mce-style attribute.
-    Fixed bug where dialog select boxes would be placed incorrectly if document.body wasn't statically positioned.
-    Fixed bug where pasting would sometimes scroll to the top of page if the user was using the autoresize plugin.
-    Fixed bug where caret wouldn't be properly rendered by Chrome when clicking on the iframes documentElement.
-    Fixed so custom images for menubutton/splitbutton can be provided. Patch contributed by Naim Hammadi.
-    Fixed so the default action of windows closing can be prevented by blocking the default action of the close event.
-    Fixed so nodeChange and focus of the editor isn't automatically performed when opening sub dialogs.
-Version 4.1.4 (2014-08-21)
-    Added new media_filter_html option to media plugin that blocks any conditional comments, scripts etc within a video element.
-    Added new content_security_policy option allows you to set custom policy for iframe contents. Patch contributed by Francois Chagnon.
-    Fixed bug where activate/deactivate events wasn't firing properly when switching between editors.
-    Fixed bug where placing the caret on iOS was difficult due to a WebKit bug with touch events.
-    Fixed bug where the resize helper wouldn't render properly on older IE versions.
-    Fixed bug where resizing images inside tables on older IE versions would sometimes fail depending mouse position.
-    Fixed bug where editor.insertContent would produce an exception when inserting select/option elements.
-    Fixed bug where extra empty paragraphs would be produced if block elements where inserted inside span elements.
-    Fixed bug where the spellchecker menu item wouldn't be properly checked if spell checking was started before it was rendered.
-    Fixed bug where the DomQuery filter function wouldn't remove non elements from collection.
-    Fixed bug where document with custom document.domain wouldn't properly render the editor.
-    Fixed bug where IE 8 would throw exception when trying to enter invalid color values into colorboxes.
-    Fixed bug where undo manager could incorrectly add an extra undo level when custom resize handles was removed.
-    Fixed bug where it wouldn't be possible to alter cell properties properly on table cells on IE 8.
-    Fixed so the color picker button in table dialog isn't shown unless you include the colorpicker plugin or add your own custom color picker.
-    Fixed so activate/deactivate events fire when windowManager opens a window since.
-    Fixed so the table advtab options isn't separated by an underscore to normalize naming with image_advtab option.
-    Fixed so the table cell dialog has proper padding when the advanced tab in disabled.
-Version 4.1.3 (2014-07-29)
-    Added event binding logic to tinymce.util.XHR making it possible to override headers and settings before any request is made.
-    Fixed bug where drag events wasn't fireing properly on older IE versions since the event handlers where bound to document.
-    Fixed bug where drag/dropping contents within the editor on IE would force the contents into plain text mode even if it was internal content.
-    Fixed bug where IE 7 wouldn't open menus properly due to a resize bug in the browser auto closing them immediately.
-    Fixed bug where the DOMUtils getPos logic wouldn't produce a valid coordinate inside the body if the body was positioned non static.
-    Fixed bug where the element path and format state wasn't properly updated if you had the wordcount plugin enabled.
-    Fixed bug where a comment at the beginning of source would produce an exception in the formatter logic.
-    Fixed bug where setAttrib/getAttrib on null would throw exception together with any hooked attributes like style.
-    Fixed bug where table sizes wasn't properly retained when copy/pasting on WebKit/Blink.
-    Fixed bug where WebKit/Blink would produce colors in RGB format instead of the forced HEX format when deleting contents.
-    Fixed bug where the width attribute wasn't updated on tables if you changed the size inside the table dialog.
-    Fixed bug where control selection wasn't properly handled when the caret was placed directly after an image.
-    Fixed bug where selecting the contents of table cells using the selection.select method wouldn't place the caret properly.
-    Fixed bug where the selection state for images wasn't removed when placing the caret right after an image on WebKit/Blink.
-    Fixed bug where all events wasn't properly unbound when and editor instance was removed or destroyed by some external innerHTML call.
-    Fixed bug where it wasn't possible or very hard to select images on iOS when the onscreen keyboard was visible.
-    Fixed so auto_focus can take a boolean argument this will auto focus the last initialized editor might be useful for single inits.
-    Fixed so word auto detect lists logic works better for faked lists that doesn't have specific markup.
-    Fixed so nodeChange gets fired on mouseup as it used to before 4.1.1 we optimized that event to fire less often.
-    Removed the finish menu item from spellchecker menu since it's redundant you can stop spellchecking by toggling menu item or button.
-Version 4.1.2 (2014-07-15)
-    Added offset/grep to DomQuery class works basically the same as it's jQuery equivalent.
-    Fixed bug where backspace/delete or setContent with an empty string would remove header data when using the fullpage plugin.
-    Fixed bug where tinymce.remove with a selector not matching any editors would remove all editors.
-    Fixed bug where resizing of the editor didn't work since the theme was calling setStyles instead of setStyle.
-    Fixed bug where IE 7 would fail to append html fragments to iframe document when using DomQuery.
-    Fixed bug where the getStyle DOMUtils method would produce an exception if it was called with null as it's element.
-    Fixed bug where the paste plugin would remove the element if the none of the paste_webkit_styles rules matched the current style.
-    Fixed bug where contextmenu table items wouldn't work properly on IE since it would some times fire an incorrect selection change.
-    Fixed bug where the padding/border values wasn't used in the size calculation for the body size when using autoresize. Patch contributed by Matt Whelan.
-    Fixed bug where conditional word comments wouldn't be properly removed when pasting plain text.
-    Fixed bug where resizing would sometime fail on IE 11 when the mouseup occurred inside the resizable element.
-    Fixed so the iframe gets initialized without any inline event handlers for better CSP support. Patch contributed by Matt Whelan.
-    Fixed so the tinymce.dom.Sizzle is the latest version of sizzle this resolves the document context bug.
-Version 4.1.1 (2014-07-08)
-    Fixed bug where pasting plain text on some WebKit versions would result in an empty line.
-    Fixed bug where resizing images inside tables on IE 11 wouldn't work properly.
-    Fixed bug where IE 11 would sometimes throw "Invalid argument" exception when editor contents was set to an empty string.
-    Fixed bug where document.activeElement would throw exceptions on IE 9 when that element was hidden or removed from dom.
-    Fixed bug where WebKit/Blink sometimes produced br elements with the Apple-interchange-newline class.
-    Fixed bug where table cell selection wasn't properly removed when copy/pasting table cells.
-    Fixed bug where pasting nested list items from Word wouldn't produce proper semantic nested lists.
-    Fixed bug where right clicking using the contextmenu plugin on WebKit/Blink on Mac OS X would select the target current word or line.
-    Fixed bug where it wasn't possible to alter table cell properties on IE 8 using the context menu.
-    Fixed bug where the resize helper wouldn't be correctly positioned on older IE versions.
-    Fixed bug where fullpage plugin would produce an error if you didn't specify a doctype encoding.
-    Fixed bug where anchor plugin would get the name/id of the current element even if it wasn't anchor element.
-    Fixed bug where visual aids for tables wouldn't be properly disabled when changing the border size.
-    Fixed bug where some control selection events wasn't properly fired on older IE versions.
-    Fixed bug where table cell selection on older IE versions would prevent resizing of images.
-    Fixed bug with paste_data_images paste option not working properly on modern IE versions.
-    Fixed bug where custom elements with underscores in the name wasn't properly parsed/serialized.
-    Fixed bug where applying inline formats to nested list elements would produce an incorrect formatting result.
-    Fixed so it's possible to hide items from elements path by using preventDefault/stopPropagation.
-    Fixed so inline mode toolbar gets rendered right aligned if the editable element positioned to the documents right edge.
-    Fixed so empty inline elements inside empty block elements doesn't get removed if configured to be kept intact.
-    Fixed so DomQuery parentsUntil/prevUntil/nextUntil supports selectors/elements/filters etc.
-    Fixed so legacyoutput plugin overrides fontselect and fontsizeselect controls and handles font elements properly.
-Version 4.1.0 (2014-06-18)
-    Added new file_picker_callback option to replace the old file_browser_callback the latter will still work though.
-    Added new custom colors to textcolor plugin will be displayed if a color picker is provided also shows the latest colors.
-    Added new color_picker_callback option to enable you to add custom color pickers to the editor.
-    Added new advanced tabs to table/cell/row dialogs to enable you to select colors for border/background.
-    Added new colorpicker plugin that lets you select colors from a hsv color picker.
-    Added new tinymce.util.Color class to handle color parsing and converting.
-    Added new colorpicker UI widget element lets you add a hsv color picker to any form/window.
-    Added new textpattern plugin that allows you to use markdown like text patterns to format contents.
-    Added new resize helper element that shows the current width & height while resizing.
-    Added new "once" method to Editor and EventDispatcher enables since callback execution events.
-    Added new jQuery like class under tinymce.dom.DomQuery it's exposed on editor instances (editor.$) and globally under (tinymce.$).
-    Fixed so the default resize method for images are proportional shift/ctrl can be used to make an unproportional size.
-    Fixed bug where the image_dimensions option of the image plugin would cause exceptions when it tried to update the size.
-    Fixed bug where table cell dialog class field wasn't properly updated when editing an a table cell with an existing class.
-    Fixed bug where Safari on Mac would produce webkit-fake-url for pasted images so these are now removed.
-    Fixed bug where the nodeChange event would get fired before the selection was changed when clicking inside the current selection range.
-    Fixed bug where valid_classes option would cause exception when it removed internal prefixed classes like mce-item-.
-    Fixed bug where backspace would cause navigation in IE 8 on an inline element and after a caret formatting was applied.
-    Fixed so placeholder images produced by the media plugin gets selected when inserted/edited.
-    Fixed so it's possible to drag in images when the paste_data_images option is enabled. Might be useful for mail clients.
-    Fixed so images doesn't get a width/height applied if the image_dimensions option is set to false useful for responsive contents.
-    Fixed so it's possible to pass in an optional arguments object for the nodeChanged function to be passed to all nodechange event listeners.
-    Fixed bug where media plugin embed code didn't update correctly.
diff --git a/app/static/vendors/tinymce/js/tinymce/jquery.tinymce.min.js b/app/static/vendors/tinymce/js/tinymce/jquery.tinymce.min.js
deleted file mode 100644 (file)
index 5a6ef56..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-/**
- * Jquery integration plugin.
- *
- * @class tinymce.core.JqueryIntegration
- * @private
- */
-!function(){var f,c,u,p,d,s=[];d="undefined"!=typeof global?global:window,p=d.jQuery;function v(){
-// Reference to tinymce needs to be lazily evaluated since tinymce
-// might be loaded through the compressor or other means
-return d.tinymce}p.fn.tinymce=function(o){var e,t,i,l=this,r="";
-// No match then just ignore the call
-if(!l.length)return l;
-// Get editor instance
-if(!o)return v()?v().get(l[0].id):null;l.css("visibility","hidden");function n(){var a=[],c=0;
-// Apply patches to the jQuery object, only once
-u||(m(),u=!0),
-// Create an editor instance for each matched node
-l.each(function(e,t){var n,i=t.id,r=o.oninit;
-// Generate unique id for target element if needed
-i||(t.id=i=v().DOM.uniqueId()),
-// Only init the editor once
-v().get(i)||(
-// Create editor instance and render it
-n=v().createEditor(i,o),a.push(n),n.on("init",function(){var e,t=r;l.css("visibility",""),
-// Run this if the oninit setting is defined
-// this logic will fire the oninit callback ones each
-// matched editor instance is initialized
-r&&++c==a.length&&("string"==typeof t&&(e=-1===t.indexOf(".")?null:v().resolve(t.replace(/\.\w+$/,"")),t=v().resolve(t)),
-// Call the oninit function with the object
-t.apply(e||v(),a))}))}),
-// Render the editor instances in a separate loop since we
-// need to have the full editors array used in the onInit calls
-p.each(a,function(e,t){t.render()})}
-// Load TinyMCE on demand, if we need to
-if(d.tinymce||c||!(e=o.script_url))
-// Delay the init call until tinymce is loaded
-1===c?s.push(n):n();else{c=1,t=e.substring(0,e.lastIndexOf("/")),
-// Check if it's a dev/src version they want to load then
-// make sure that all plugins, themes etc are loaded in source mode as well
--1!=e.indexOf(".min")&&(r=".min"),
-// Setup tinyMCEPreInit object this will later be used by the TinyMCE
-// core script to locate other resources like CSS files, dialogs etc
-// You can also predefined a tinyMCEPreInit object and then it will use that instead
-d.tinymce=d.tinyMCEPreInit||{base:t,suffix:r},
-// url contains gzip then we assume it's a compressor
--1!=e.indexOf("gzip")&&(i=o.language||"en",e=e+(/\?/.test(e)?"&":"?")+"js=true&core=true&suffix="+escape(r)+"&themes="+escape(o.theme||"modern")+"&plugins="+escape(o.plugins||"")+"&languages="+(i||""),
-// Check if compressor script is already loaded otherwise setup a basic one
-d.tinyMCE_GZ||(d.tinyMCE_GZ={start:function(){function n(e){v().ScriptLoader.markDone(v().baseURI.toAbsolute(e))}
-// Add core languages
-n("langs/"+i+".js"),
-// Add themes with languages
-n("themes/"+o.theme+"/theme"+r+".js"),n("themes/"+o.theme+"/langs/"+i+".js"),
-// Add plugins with languages
-p.each(o.plugins.split(","),function(e,t){t&&(n("plugins/"+t+"/plugin"+r+".js"),n("plugins/"+t+"/langs/"+i+".js"))})},end:function(){}}));var a=document.createElement("script");a.type="text/javascript",a.onload=a.onreadystatechange=function(e){e=e||window.event,2===c||"load"!=e.type&&!/complete|loaded/.test(a.readyState)||(v().dom.Event.domLoaded=1,c=2,
-// Execute callback after mainscript has been loaded and before the initialization occurs
-o.script_loaded&&o.script_loaded(),n(),p.each(s,function(e,t){t()}))},a.src=e,document.body.appendChild(a)}return l},
-// Add :tinymce pseudo selector this will select elements that has been converted into editor instances
-// it's now possible to use things like $('*:tinymce') to get all TinyMCE bound elements.
-p.extend(p.expr[":"],{tinymce:function(e){var t;return!!(e.id&&"tinymce"in d&&(t=v().get(e.id))&&t.editorManager===v())}});
-// This function patches internal jQuery functions so that if
-// you for example remove an div element containing an editor it's
-// automatically destroyed by the TinyMCE API
-var m=function(){function r(e){
-// If the function is remove
-"remove"===e&&this.each(function(e,t){var n=u(t);n&&n.remove()}),this.find("span.mceEditor,div.mceEditor").each(function(e,t){var n=v().get(t.id.replace(/_parent$/,""));n&&n.remove()})}function o(i){var e,t=this;
-// Handle set value
-/*jshint eqnull:true */if(null!=i)r.call(t),
-// Saves the contents before get/set value of textarea/div
-t.each(function(e,t){var n;(n=v().get(t.id))&&n.setContent(i)});else if(0<t.length&&(e=v().get(t[0].id)))return e.getContent()}function l(e){return!!(e&&e.length&&d.tinymce&&e.is(":tinymce"))}
-// Removes any child editor instances by looking for editor wrapper elements
-var u=function(e){var t=null;return e&&e.id&&d.tinymce&&(t=v().get(e.id)),t},s={};
-// Loads or saves contents from/to textarea if the value
-// argument is defined it will set the TinyMCE internal contents
-// Patch some setter/getter functions these will
-// now be able to set/get the contents of editor instances for
-// example $('#editorid').html('Content'); will update the TinyMCE iframe instance
-p.each(["text","html","val"],function(e,t){var a=s[t]=p.fn[t],c="text"===t;p.fn[t]=function(e){var t=this;if(!l(t))return a.apply(t,arguments);if(e!==f)return o.call(t.filter(":tinymce"),e),a.apply(t.not(":tinymce"),arguments),t;// return original set for chaining
-var i="",r=arguments;return(c?t:t.eq(0)).each(function(e,t){var n=u(t);i+=n?c?n.getContent().replace(/<(?:"[^"]*"|'[^']*'|[^'">])*>/g,""):n.getContent({save:!0}):a.apply(p(t),r)}),i}}),
-// Makes it possible to use $('#id').append("content"); to append contents to the TinyMCE editor iframe
-p.each(["append","prepend"],function(e,t){var n=s[t]=p.fn[t],r="prepend"===t;p.fn[t]=function(i){var e=this;return l(e)?i!==f?("string"==typeof i&&e.filter(":tinymce").each(function(e,t){var n=u(t);n&&n.setContent(r?i+n.getContent():n.getContent()+i)}),n.apply(e.not(":tinymce"),arguments),e):void 0:n.apply(e,arguments)}}),
-// Makes sure that the editor instance gets properly destroyed when the parent element is removed
-p.each(["remove","replaceWith","replaceAll","empty"],function(e,t){var n=s[t]=p.fn[t];p.fn[t]=function(){return r.call(this,t),n.apply(this,arguments)}}),s.attr=p.fn.attr,
-// Makes sure that $('#tinymce_id').attr('value') gets the editors current HTML contents
-p.fn.attr=function(e,t){var n=this,i=arguments;if(!e||"value"!==e||!l(n))return s.attr.apply(n,i);if(t!==f)return o.call(n.filter(":tinymce"),t),s.attr.apply(n.not(":tinymce"),i),n;// return original set for chaining
-var r=n[0],a=u(r);return a?a.getContent({save:!0}):s.attr.apply(p(r),i)}}}();
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/langs/de.js b/app/static/vendors/tinymce/js/tinymce/langs/de.js
deleted file mode 100644 (file)
index f7a5b00..0000000
+++ /dev/null
@@ -1,389 +0,0 @@
-tinymce.addI18n('de',{
-"Redo": "Wiederholen",
-"Undo": "R\u00fcckg\u00e4ngig machen",
-"Cut": "Ausschneiden",
-"Copy": "Kopieren",
-"Paste": "Einf\u00fcgen",
-"Select all": "Alles ausw\u00e4hlen",
-"New document": "Neues Dokument",
-"Ok": "Ok",
-"Cancel": "Abbrechen",
-"Visual aids": "Visuelle Hilfen",
-"Bold": "Fett",
-"Italic": "Kursiv",
-"Underline": "Unterstrichen",
-"Strikethrough": "Durchgestrichen",
-"Superscript": "Hochgestellt",
-"Subscript": "Tiefgestellt",
-"Clear formatting": "Formatierung entfernen",
-"Align left": "Linksb\u00fcndig ausrichten",
-"Align center": "Zentrieren",
-"Align right": "Rechtsb\u00fcndig ausrichten",
-"Justify": "Blocksatz",
-"Bullet list": "Aufz\u00e4hlung",
-"Numbered list": "Nummerierte Liste",
-"Decrease indent": "Einzug verkleinern",
-"Increase indent": "Einzug vergr\u00f6\u00dfern",
-"Close": "Schlie\u00dfen",
-"Formats": "Formate",
-"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Ihr Browser unterst\u00fctzt leider keinen direkten Zugriff auf die Zwischenablage. Bitte benutzen Sie die Tastenkombinationen Strg+X\/C\/V.",
-"Headers": "\u00dcberschriften",
-"Header 1": "\u00dcberschrift 1",
-"Header 2": "\u00dcberschrift 2",
-"Header 3": "\u00dcberschrift 3",
-"Header 4": "\u00dcberschrift 4",
-"Header 5": "\u00dcberschrift 5",
-"Header 6": "\u00dcberschrift 6",
-"Headings": "\u00dcberschriften",
-"Heading 1": "Kopfzeile 1",
-"Heading 2": "Kopfzeile 2",
-"Heading 3": "Kopfzeile 3",
-"Heading 4": "Kopfzeile 4",
-"Heading 5": "Kopfzeile 5",
-"Heading 6": "Kopfzeile 6",
-"Preformatted": "Vorformatiert",
-"Div": "Div",
-"Pre": "Pre",
-"Code": "Code",
-"Paragraph": "Absatz",
-"Blockquote": "Blockquote",
-"Inline": "Zeichenformate",
-"Blocks": "Bl\u00f6cke",
-"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Einf\u00fcgen ist nun im einfachen Textmodus. Inhalte werden ab jetzt als unformatierter Text eingef\u00fcgt, bis Sie diese Einstellung wieder ausschalten!",
-"Fonts": "Schriftarten",
-"Font Sizes": "Schriftgr\u00f6\u00dfe",
-"Class": "Klasse",
-"Browse for an image": "Bild...",
-"OR": "ODER",
-"Drop an image here": "Bild hier ablegen",
-"Upload": "Hochladen",
-"Block": "Blocksatz",
-"Align": "Ausrichten",
-"Default": "Standard",
-"Circle": "Kreis",
-"Disc": "Punkt",
-"Square": "Quadrat",
-"Lower Alpha": "Kleinbuchstaben",
-"Lower Greek": "Griechische Kleinbuchstaben",
-"Lower Roman": "R\u00f6mische Zahlen (Kleinbuchstaben)",
-"Upper Alpha": "Gro\u00dfbuchstaben",
-"Upper Roman": "R\u00f6mische Zahlen (Gro\u00dfbuchstaben)",
-"Anchor...": "Textmarke",
-"Name": "Name",
-"Id": "Kennung",
-"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Die Kennung sollte mit einem Buchstaben anfangen. Nachfolgend nur Buchstaben, Zahlen, Striche (Minus), Punkte, Kommas und Unterstriche.",
-"You have unsaved changes are you sure you want to navigate away?": "Die \u00c4nderungen wurden noch nicht gespeichert, sind Sie sicher, dass Sie diese Seite verlassen wollen?",
-"Restore last draft": "Letzten Entwurf wiederherstellen",
-"Special characters...": "Sonderzeichen...",
-"Source code": "Quelltext",
-"Insert\/Edit code sample": "Codebeispiel einf\u00fcgen\/bearbeiten",
-"Language": "Sprache",
-"Code sample...": "Codebeispiel...",
-"Color Picker": "Farbwahl",
-"R": "R",
-"G": "G",
-"B": "B",
-"Left to right": "Von links nach rechts",
-"Right to left": "Von rechts nach links",
-"Emoticons...": "Emoticons...",
-"Metadata and Document Properties": "Dokument-Eigenschaften und -Metadaten",
-"Title": "Titel",
-"Keywords": "Sch\u00fcsselw\u00f6rter",
-"Description": "Beschreibung",
-"Robots": "Robots",
-"Author": "Verfasser",
-"Encoding": "Zeichenkodierung",
-"Fullscreen": "Vollbild",
-"Action": "Aktion",
-"Shortcut": "Shortcut",
-"Help": "Hilfe",
-"Address": "Adresse",
-"Focus to menubar": "Fokus auf Men\u00fcleiste",
-"Focus to toolbar": "Fokus auf Werkzeugleiste",
-"Focus to element path": "Fokus auf Elementpfad",
-"Focus to contextual toolbar": "Fokus auf kontextbezogene Werkzeugleiste",
-"Insert link (if link plugin activated)": "Link einf\u00fcgen (wenn Link-Plugin aktiviert ist)",
-"Save (if save plugin activated)": "Speichern (wenn Save-Plugin aktiviert ist)",
-"Find (if searchreplace plugin activated)": "Suchen einf\u00fcgen (wenn Suchen\/Ersetzen-Plugin aktiviert ist)",
-"Plugins installed ({0}):": "installierte Plugins ({0}):",
-"Premium plugins:": "Premium Plugins:",
-"Learn more...": "Erfahren Sie mehr dazu...",
-"You are using {0}": "Sie verwenden {0}",
-"Plugins": "Plugins",
-"Handy Shortcuts": "Praktische Tastenkombinationen",
-"Horizontal line": "Horizontale Linie",
-"Insert\/edit image": "Bild einf\u00fcgen\/bearbeiten",
-"Image description": "Bildbeschreibung",
-"Source": "Quelle",
-"Dimensions": "Abmessungen",
-"Constrain proportions": "Seitenverh\u00e4ltnis beibehalten",
-"General": "Allgemein",
-"Advanced": "Erweitert",
-"Style": "Stil",
-"Vertical space": "Vertikaler Abstand",
-"Horizontal space": "Horizontaler Abstand",
-"Border": "Rahmen",
-"Insert image": "Bild einf\u00fcgen",
-"Image...": "Bild...",
-"Image list": "Bildliste",
-"Rotate counterclockwise": "Gegen den Uhrzeigersinn drehen",
-"Rotate clockwise": "Im Uhrzeigersinn drehen",
-"Flip vertically": "Vertikal spiegeln",
-"Flip horizontally": "Horizontal spiegeln",
-"Edit image": "Bild bearbeiten",
-"Image options": "Bildeigenschaften",
-"Zoom in": "Ansicht vergr\u00f6\u00dfern",
-"Zoom out": "Ansicht verkleinern",
-"Crop": "Bescheiden",
-"Resize": "Skalieren",
-"Orientation": "Ausrichtung",
-"Brightness": "Helligkeit",
-"Sharpen": "Sch\u00e4rfen",
-"Contrast": "Kontrast",
-"Color levels": "Farbwerte",
-"Gamma": "Gamma",
-"Invert": "Invertieren",
-"Apply": "Anwenden",
-"Back": "Zur\u00fcck",
-"Insert date\/time": "Datum\/Uhrzeit einf\u00fcgen ",
-"Date\/time": "Datum\/Uhrzeit",
-"Insert\/Edit Link": "Link einf\u00fcgen\/bearbeiten",
-"Insert\/edit link": "Link einf\u00fcgen\/bearbeiten",
-"Text to display": "Anzuzeigender Text",
-"Url": "URL",
-"Open link in...": "Link \u00f6ffnen in...",
-"Current window": "Aktuelles Fenster",
-"None": "Keine",
-"New window": "Neues Fenster",
-"Remove link": "Link entfernen",
-"Anchors": "Textmarken",
-"Link...": "Link...",
-"Paste or type a link": "Link einf\u00fcgen oder eintippen",
-"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Diese Adresse scheint eine E-Mail-Adresse zu sein. M\u00f6chten Sie das dazu ben\u00f6tigte \"mailto:\" voranstellen?",
-"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Diese Adresse scheint ein externer Link zu sein. M\u00f6chten Sie das dazu ben\u00f6tigte \"http:\/\/\" voranstellen?",
-"Link list": "Linkliste",
-"Insert video": "Video einf\u00fcgen",
-"Insert\/edit video": "Video einf\u00fcgen\/bearbeiten",
-"Insert\/edit media": "Medien einf\u00fcgen\/bearbeiten",
-"Alternative source": "Alternative Quelle",
-"Alternative source URL": "URL der alternativen Quelle",
-"Media poster (Image URL)": "Medienposter (Bild-URL)",
-"Paste your embed code below:": "F\u00fcgen Sie Ihren Einbettungscode hier ein:",
-"Embed": "Einbetten",
-"Media...": "Medien...",
-"Nonbreaking space": "Gesch\u00fctztes Leerzeichen",
-"Page break": "Seitenumbruch",
-"Paste as text": "Als Text einf\u00fcgen",
-"Preview": "Vorschau",
-"Print...": "Drucken...",
-"Save": "Speichern",
-"Find": "Suchen",
-"Replace with": "Ersetzen durch",
-"Replace": "Ersetzen",
-"Replace all": "Alles ersetzen",
-"Previous": "Vorherige",
-"Next": "Weiter",
-"Find and replace...": "Suchen und ersetzen...",
-"Could not find the specified string.": "Die Zeichenfolge wurde nicht gefunden.",
-"Match case": "Gro\u00df-\/Kleinschreibung beachten",
-"Find whole words only": "Nur ganze W\u00f6rter suchen",
-"Spell check": "Rechschreibpr\u00fcfung",
-"Ignore": "Ignorieren",
-"Ignore all": "Alles Ignorieren",
-"Finish": "Ende",
-"Add to Dictionary": "Zum W\u00f6rterbuch hinzuf\u00fcgen",
-"Insert table": "Tabelle einf\u00fcgen",
-"Table properties": "Tabelleneigenschaften",
-"Delete table": "Tabelle l\u00f6schen",
-"Cell": "Zelle",
-"Row": "Zeile",
-"Column": "Spalte",
-"Cell properties": "Zelleneigenschaften",
-"Merge cells": "Zellen verbinden",
-"Split cell": "Zelle aufteilen",
-"Insert row before": "Neue Zeile davor einf\u00fcgen ",
-"Insert row after": "Neue Zeile danach einf\u00fcgen",
-"Delete row": "Zeile l\u00f6schen",
-"Row properties": "Zeileneigenschaften",
-"Cut row": "Zeile ausschneiden",
-"Copy row": "Zeile kopieren",
-"Paste row before": "Zeile davor einf\u00fcgen",
-"Paste row after": "Zeile danach einf\u00fcgen",
-"Insert column before": "Neue Spalte davor einf\u00fcgen",
-"Insert column after": "Neue Spalte danach einf\u00fcgen",
-"Delete column": "Spalte l\u00f6schen",
-"Cols": "Spalten",
-"Rows": "Zeilen",
-"Width": "Breite",
-"Height": "H\u00f6he",
-"Cell spacing": "Zellenabstand",
-"Cell padding": "Zelleninnenabstand",
-"Show caption": "Beschriftung anzeigen",
-"Left": "Linksb\u00fcndig",
-"Center": "Zentriert",
-"Right": "Rechtsb\u00fcndig",
-"Cell type": "Zellentyp",
-"Scope": "G\u00fcltigkeitsbereich",
-"Alignment": "Ausrichtung",
-"H Align": "Horizontale Ausrichtung",
-"V Align": "Vertikale Ausrichtung",
-"Top": "Oben",
-"Middle": "Mitte",
-"Bottom": "Unten",
-"Header cell": "Kopfzelle",
-"Row group": "Zeilengruppe",
-"Column group": "Spaltengruppe",
-"Row type": "Zeilentyp",
-"Header": "Kopfzeile",
-"Body": "Inhalt",
-"Footer": "Fu\u00dfzeile",
-"Border color": "Rahmenfarbe",
-"Insert template...": "Vorlage einf\u00fcgen...",
-"Templates": "Vorlagen",
-"Template": "Vorlage",
-"Text color": "Textfarbe",
-"Background color": "Hintergrundfarbe",
-"Custom...": "Benutzerdefiniert...",
-"Custom color": "Benutzerdefinierte Farbe",
-"No color": "Keine Farbe",
-"Remove color": "Farbauswahl aufheben",
-"Table of Contents": "Inhaltsverzeichnis",
-"Show blocks": "Bl\u00f6cke anzeigen",
-"Show invisible characters": "Unsichtbare Zeichen anzeigen",
-"Word count": "Anzahl der W\u00f6rter",
-"Words: {0}": "W\u00f6rter: {0}",
-"{0} words": "{0} W\u00f6rter",
-"File": "Datei",
-"Edit": "Bearbeiten",
-"Insert": "Einf\u00fcgen",
-"View": "Ansicht",
-"Format": "Format",
-"Table": "Tabelle",
-"Tools": "Werkzeuge",
-"Powered by {0}": "Betrieben von {0}",
-"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich-Text- Area. Dr\u00fccken Sie ALT-F9 f\u00fcr das Men\u00fc. Dr\u00fccken Sie ALT-F10 f\u00fcr Symbolleiste. Dr\u00fccken Sie ALT-0 f\u00fcr Hilfe",
-"Image title": "Bildtitel",
-"Border width": "Rahmenbreite",
-"Border style": "Rahmenstil",
-"Error": "Fehler",
-"Warn": "Warnung",
-"Valid": "G\u00fcltig",
-"To open the popup, press Shift+Enter": "Dr\u00fccken Sie Umschalt+Eingabe, um das Popup-Fenster zu \u00f6ffnen.",
-"Rich Text Area. Press ALT-0 for help.": "Rich-Text-Bereich. Dr\u00fccken Sie Alt+0 f\u00fcr Hilfe.",
-"System Font": "Betriebssystemschriftart",
-"Failed to upload image: {0}": "Bild konnte nicht hochgeladen werden: {0}",
-"Failed to load plugin: {0} from url {1}": "Plugin konnte nicht geladen werden: {0} von URL {1}",
-"Failed to load plugin url: {0}": "Plugin-URL konnte nicht geladen werden: {0}",
-"Failed to initialize plugin: {0}": "Plugin konnte nicht initialisiert werden: {0}",
-"example": "Beispiel",
-"Search": "Suchen",
-"All": "Alles",
-"Currency": "W\u00e4hrung",
-"Text": "Text",
-"Quotations": "Anf\u00fchrungszeichen",
-"Mathematical": "Mathematisch",
-"Extended Latin": "Erweitertes Latein",
-"Symbols": "Symbole",
-"Arrows": "Pfeile",
-"User Defined": "Benutzerdefiniert",
-"dollar sign": "Dollarzeichen",
-"currency sign": "W\u00e4hrungssymbol",
-"euro-currency sign": "Eurozeichen",
-"colon sign": "Doppelpunkt",
-"cruzeiro sign": "Cruzeirozeichen",
-"french franc sign": "Franczeichen",
-"lira sign": "Lirezeichen",
-"mill sign": "Millzeichen",
-"naira sign": "Nairazeichen",
-"peseta sign": "Pesetazeichen",
-"rupee sign": "Rupiezeichen",
-"won sign": "Wonzeichen",
-"new sheqel sign": "Schekelzeichen",
-"dong sign": "Dongzeichen",
-"kip sign": "Kipzeichen",
-"tugrik sign": "Tugrikzeichen",
-"drachma sign": "Drachmezeichen",
-"german penny symbol": "Pfennigzeichen",
-"peso sign": "Pesozeichen",
-"guarani sign": "Guaranizeichen",
-"austral sign": "Australzeichen",
-"hryvnia sign": "Hrywnjazeichen",
-"cedi sign": "Cedizeichen",
-"livre tournois sign": "Livrezeichen",
-"spesmilo sign": "Spesmilozeichen",
-"tenge sign": "Tengezeichen",
-"indian rupee sign": "Indisches Rupiezeichen",
-"turkish lira sign": "T\u00fcrkisches Lirazeichen",
-"nordic mark sign": "Zeichen nordische Mark",
-"manat sign": "Manatzeichen",
-"ruble sign": "Rubelzeichen",
-"yen character": "Yenzeichen",
-"yuan character": "Yuanzeichen",
-"yuan character, in hong kong and taiwan": "Yuanzeichen in Hongkong und Taiwan",
-"yen\/yuan character variant one": "Yen-\/Yuanzeichen Variante 1",
-"Loading emoticons...": "Emoticons werden geladen...",
-"Could not load emoticons": "Emoticons konnten nicht geladen werden",
-"People": "Menschen",
-"Animals and Nature": "Tiere und Natur",
-"Food and Drink": "Essen und Trinken",
-"Activity": "Aktivit\u00e4t",
-"Travel and Places": "Reisen und Orte",
-"Objects": "Objekte",
-"Flags": "Flaggen",
-"Characters": "Zeichen",
-"Characters (no spaces)": "Zeichen (ohne Leerzeichen)",
-"Error: Form submit field collision.": "Fehler: Kollision der Formularbest\u00e4tigungsfelder.",
-"Error: No form element found.": "Fehler: Kein Formularelement gefunden.",
-"Update": "Aktualisieren",
-"Color swatch": "Farbpalette",
-"Turquoise": "T\u00fcrkis",
-"Green": "Gr\u00fcn",
-"Blue": "Blau",
-"Purple": "Violett",
-"Navy Blue": "Marineblau",
-"Dark Turquoise": "Dunkelt\u00fcrkis",
-"Dark Green": "Dunkelgr\u00fcn",
-"Medium Blue": "Mittleres Blau",
-"Medium Purple": "Mittelviolett",
-"Midnight Blue": "Mitternachtsblau",
-"Yellow": "Gelb",
-"Orange": "Orange",
-"Red": "Rot",
-"Light Gray": "Hellgrau",
-"Gray": "Grau",
-"Dark Yellow": "Dunkelgelb",
-"Dark Orange": "Dunkelorange",
-"Dark Red": "Dunkelrot",
-"Medium Gray": "Mittelgrau",
-"Dark Gray": "Dunkelgrau",
-"Black": "Schwarz",
-"White": "Wei\u00df",
-"Switch to or from fullscreen mode": "Vollbildmodus umschalten",
-"Open help dialog": "Hilfe-Dialog \u00f6ffnen",
-"history": "Historie",
-"styles": "Stile",
-"formatting": "Formatierung",
-"alignment": "Ausrichtung",
-"indentation": "Einr\u00fcckungen",
-"permanent pen": "Textmarker",
-"comments": "Anmerkungen",
-"Anchor": "Textmarke",
-"Special character": "Sonderzeichen",
-"Code sample": "Codebeispiel",
-"Color": "Farbe",
-"Emoticons": "Emoticons",
-"Document properties": "Dokumenteigenschaften",
-"Image": "Bild",
-"Insert link": "Link einf\u00fcgen",
-"Target": "Ziel",
-"Link": "Link",
-"Poster": "Poster",
-"Media": "Medium",
-"Print": "Drucken",
-"Prev": "Zur\u00fcck",
-"Find and replace": "Suchen und ersetzen",
-"Whole words": "Nur ganze W\u00f6rter",
-"Spellcheck": "Rechtschreibpr\u00fcfung",
-"Caption": "Beschriftung",
-"Insert template": "Vorlage einf\u00fcgen "
-});
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/langs/fr_FR.js b/app/static/vendors/tinymce/js/tinymce/langs/fr_FR.js
deleted file mode 100644 (file)
index 2d074f8..0000000
+++ /dev/null
@@ -1,389 +0,0 @@
-tinymce.addI18n('fr_FR',{
-"Redo": "R\u00e9tablir",
-"Undo": "Annuler",
-"Cut": "Couper",
-"Copy": "Copier",
-"Paste": "Coller",
-"Select all": "S\u00e9lectionner tout",
-"New document": "Nouveau document",
-"Ok": "OK",
-"Cancel": "Annuler",
-"Visual aids": "Aides visuelles",
-"Bold": "Gras",
-"Italic": "Italique",
-"Underline": "Soulign\u00e9",
-"Strikethrough": "Barr\u00e9",
-"Superscript": "Exposant",
-"Subscript": "Indice",
-"Clear formatting": "Effacer la mise en forme",
-"Align left": "Aligner \u00e0 gauche",
-"Align center": "Centrer",
-"Align right": "Aligner \u00e0 droite",
-"Justify": "Justifier",
-"Bullet list": "Liste \u00e0 puces",
-"Numbered list": "Liste num\u00e9rot\u00e9e",
-"Decrease indent": "R\u00e9duire le retrait",
-"Increase indent": "Augmenter le retrait",
-"Close": "Fermer",
-"Formats": "Formats",
-"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 l\u2019acc\u00e8s direct au presse-papiers. Merci d'utiliser les raccourcis clavier Ctrl+X\/C\/V.",
-"Headers": "En-t\u00eates",
-"Header 1": "En-t\u00eate 1",
-"Header 2": "En-t\u00eate 2",
-"Header 3": "En-t\u00eate 3",
-"Header 4": "En-t\u00eate 4",
-"Header 5": "En-t\u00eate 5",
-"Header 6": "En-t\u00eate 6",
-"Headings": "Titres",
-"Heading 1": "Titre\u00a01",
-"Heading 2": "Titre\u00a02",
-"Heading 3": "Titre\u00a03",
-"Heading 4": "Titre\u00a04",
-"Heading 5": "Titre\u00a05",
-"Heading 6": "Titre\u00a06",
-"Preformatted": "Pr\u00e9format\u00e9",
-"Div": "Div",
-"Pre": "Pre",
-"Code": "Code",
-"Paragraph": "Paragraphe",
-"Blockquote": "Blockquote",
-"Inline": "En ligne",
-"Blocks": "Blocs",
-"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.",
-"Fonts": "Polices",
-"Font Sizes": "Tailles de police",
-"Class": "Classe",
-"Browse for an image": "Rechercher une image",
-"OR": "OU",
-"Drop an image here": "D\u00e9poser une image ici",
-"Upload": "T\u00e9l\u00e9charger",
-"Block": "Bloc",
-"Align": "Aligner",
-"Default": "Par d\u00e9faut",
-"Circle": "Cercle",
-"Disc": "Disque",
-"Square": "Carr\u00e9",
-"Lower Alpha": "Alpha minuscule",
-"Lower Greek": "Grec minuscule",
-"Lower Roman": "Romain minuscule",
-"Upper Alpha": "Alpha majuscule",
-"Upper Roman": "Romain majuscule",
-"Anchor...": "Ancre...",
-"Name": "Nom",
-"Id": "Id",
-"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "L'Id doit commencer par une lettre suivi par des lettres, nombres, tirets, points, deux-points ou underscores",
-"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 characters...": "Caract\u00e8res sp\u00e9ciaux...",
-"Source code": "Code source",
-"Insert\/Edit code sample": "Ins\u00e9rer \/ modifier une exemple de code",
-"Language": "Langue",
-"Code sample...": "Exemple de code...",
-"Color Picker": "S\u00e9lecteur de couleurs",
-"R": "R",
-"G": "V",
-"B": "B",
-"Left to right": "Gauche \u00e0 droite",
-"Right to left": "Droite \u00e0 gauche",
-"Emoticons...": "\u00c9motic\u00f4nes...",
-"Metadata and Document Properties": "M\u00e9tadonn\u00e9es et propri\u00e9t\u00e9s du document",
-"Title": "Titre",
-"Keywords": "Mots-cl\u00e9s",
-"Description": "Description",
-"Robots": "Robots",
-"Author": "Auteur",
-"Encoding": "Encodage",
-"Fullscreen": "Plein \u00e9cran",
-"Action": "Action",
-"Shortcut": "Raccourci",
-"Help": "Aide",
-"Address": "Adresse",
-"Focus to menubar": "Cibler la barre de menu",
-"Focus to toolbar": "Cibler la barre d'outils",
-"Focus to element path": "Cibler le chemin vers l'\u00e9l\u00e9ment",
-"Focus to contextual toolbar": "Cibler la barre d'outils contextuelle",
-"Insert link (if link plugin activated)": "Ins\u00e9rer un lien (si le module link est activ\u00e9)",
-"Save (if save plugin activated)": "Enregistrer (si le module save est activ\u00e9)",
-"Find (if searchreplace plugin activated)": "Rechercher (si le module searchreplace est activ\u00e9)",
-"Plugins installed ({0}):": "Modules install\u00e9s ({0}) : ",
-"Premium plugins:": "Modules premium :",
-"Learn more...": "En savoir plus...",
-"You are using {0}": "Vous utilisez {0}",
-"Plugins": "Plugins",
-"Handy Shortcuts": "Raccourcis utiles",
-"Horizontal line": "Ligne horizontale",
-"Insert\/edit image": "Ins\u00e9rer\/modifier une image",
-"Image description": "Description de l'image",
-"Source": "Source",
-"Dimensions": "Dimensions",
-"Constrain proportions": "Conserver les proportions",
-"General": "G\u00e9n\u00e9ral",
-"Advanced": "Avanc\u00e9",
-"Style": "Style",
-"Vertical space": "Espacement vertical",
-"Horizontal space": "Espacement horizontal",
-"Border": "Bordure",
-"Insert image": "Ins\u00e9rer une image",
-"Image...": "Image...",
-"Image list": "Liste d'images",
-"Rotate counterclockwise": "Rotation anti-horaire",
-"Rotate clockwise": "Rotation horaire",
-"Flip vertically": "Retournement vertical",
-"Flip horizontally": "Retournement horizontal",
-"Edit image": "Modifier l'image",
-"Image options": "Options de l'image",
-"Zoom in": "Zoomer",
-"Zoom out": "D\u00e9zoomer",
-"Crop": "Rogner",
-"Resize": "Redimensionner",
-"Orientation": "Orientation",
-"Brightness": "Luminosit\u00e9",
-"Sharpen": "Affiner",
-"Contrast": "Contraste",
-"Color levels": "Niveaux de couleur",
-"Gamma": "Gamma",
-"Invert": "Inverser",
-"Apply": "Appliquer",
-"Back": "Retour",
-"Insert date\/time": "Ins\u00e9rer date\/heure",
-"Date\/time": "Date\/heure",
-"Insert\/Edit Link": "Ins\u00e9rer\/Modifier lien",
-"Insert\/edit link": "Ins\u00e9rer\/modifier un lien",
-"Text to display": "Texte \u00e0 afficher",
-"Url": "Url",
-"Open link in...": "Ouvrir le lien dans...",
-"Current window": "Fen\u00eatre active",
-"None": "n\/a",
-"New window": "Nouvelle fen\u00eatre",
-"Remove link": "Enlever le lien",
-"Anchors": "Ancres",
-"Link...": "Lien...",
-"Paste or type a link": "Coller ou taper un lien",
-"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?",
-"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?",
-"Link list": "Liste de liens",
-"Insert video": "Ins\u00e9rer une vid\u00e9o",
-"Insert\/edit video": "Ins\u00e9rer\/modifier une vid\u00e9o",
-"Insert\/edit media": "Ins\u00e9rer\/modifier un m\u00e9dia",
-"Alternative source": "Source alternative",
-"Alternative source URL": "URL de la source alternative",
-"Media poster (Image URL)": "Affiche de m\u00e9dia (URL de l'image)",
-"Paste your embed code below:": "Collez votre code d'int\u00e9gration ci-dessous :",
-"Embed": "Int\u00e9grer",
-"Media...": "M\u00e9dia...",
-"Nonbreaking space": "Espace ins\u00e9cable",
-"Page break": "Saut de page",
-"Paste as text": "Coller comme texte",
-"Preview": "Pr\u00e9visualiser",
-"Print...": "Imprimer...",
-"Save": "Enregistrer",
-"Find": "Chercher",
-"Replace with": "Remplacer par",
-"Replace": "Remplacer",
-"Replace all": "Tout remplacer",
-"Previous": "Pr\u00e9c\u00e9dente",
-"Next": "Suiv",
-"Find and replace...": "Trouver et remplacer...",
-"Could not find the specified string.": "Impossible de trouver la cha\u00eene sp\u00e9cifi\u00e9e.",
-"Match case": "Respecter la casse",
-"Find whole words only": "Mot entier",
-"Spell check": "V\u00e9rification de l'orthographe",
-"Ignore": "Ignorer",
-"Ignore all": "Tout ignorer",
-"Finish": "Finie",
-"Add to Dictionary": "Ajouter au dictionnaire",
-"Insert table": "Ins\u00e9rer un tableau",
-"Table properties": "Propri\u00e9t\u00e9s du tableau",
-"Delete table": "Supprimer le tableau",
-"Cell": "Cellule",
-"Row": "Ligne",
-"Column": "Colonne",
-"Cell properties": "Propri\u00e9t\u00e9s de la cellule",
-"Merge cells": "Fusionner les cellules",
-"Split cell": "Diviser la cellule",
-"Insert row before": "Ins\u00e9rer une ligne avant",
-"Insert row after": "Ins\u00e9rer une ligne apr\u00e8s",
-"Delete row": "Effacer la ligne",
-"Row properties": "Propri\u00e9t\u00e9s de la ligne",
-"Cut row": "Couper la ligne",
-"Copy row": "Copier la ligne",
-"Paste row before": "Coller la ligne avant",
-"Paste row after": "Coller la ligne apr\u00e8s",
-"Insert column before": "Ins\u00e9rer une colonne avant",
-"Insert column after": "Ins\u00e9rer une colonne apr\u00e8s",
-"Delete column": "Effacer la colonne",
-"Cols": "Colonnes",
-"Rows": "Lignes",
-"Width": "Largeur",
-"Height": "Hauteur",
-"Cell spacing": "Espacement inter-cellulles",
-"Cell padding": "Espacement interne cellule",
-"Show caption": "Afficher le sous-titrage",
-"Left": "Gauche",
-"Center": "Centr\u00e9",
-"Right": "Droite",
-"Cell type": "Type de cellule",
-"Scope": "Etendue",
-"Alignment": "Alignement",
-"H Align": "Alignement H",
-"V Align": "Alignement V",
-"Top": "Haut",
-"Middle": "Milieu",
-"Bottom": "Bas",
-"Header cell": "Cellule d'en-t\u00eate",
-"Row group": "Groupe de lignes",
-"Column group": "Groupe de colonnes",
-"Row type": "Type de ligne",
-"Header": "En-t\u00eate",
-"Body": "Corps",
-"Footer": "Pied",
-"Border color": "Couleur de la bordure",
-"Insert template...": "Ins\u00e9rer un mod\u00e8le...",
-"Templates": "Th\u00e8mes",
-"Template": "Mod\u00e8le",
-"Text color": "Couleur du texte",
-"Background color": "Couleur d'arri\u00e8re-plan",
-"Custom...": "Personnalis\u00e9...",
-"Custom color": "Couleur personnalis\u00e9e",
-"No color": "Aucune couleur",
-"Remove color": "Supprimer la couleur",
-"Table of Contents": "Table des mati\u00e8res",
-"Show blocks": "Afficher les blocs",
-"Show invisible characters": "Afficher les caract\u00e8res invisibles",
-"Word count": "Nombre de mots",
-"Words: {0}": "Mots : {0}",
-"{0} words": "{0} mots",
-"File": "Fichier",
-"Edit": "Editer",
-"Insert": "Ins\u00e9rer",
-"View": "Voir",
-"Format": "Format",
-"Table": "Tableau",
-"Tools": "Outils",
-"Powered by {0}": "Propuls\u00e9 par {0}",
-"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.",
-"Image title": "Titre d'image",
-"Border width": "\u00c9paisseur de la bordure",
-"Border style": "Style de la bordure",
-"Error": "Erreur",
-"Warn": "Avertir",
-"Valid": "Valide",
-"To open the popup, press Shift+Enter": "Pour ouvrir la popup, appuyez sur Maj+Entr\u00e9e",
-"Rich Text Area. Press ALT-0 for help.": "Zone de texte riche. Appuyez sur ALT-0 pour l'aide.",
-"System Font": "Police syst\u00e8me",
-"Failed to upload image: {0}": "\u00c9chec d'envoi de l'image\u00a0: {0}",
-"Failed to load plugin: {0} from url {1}": "\u00c9chec de chargement du plug-in\u00a0: {0} \u00e0 partir de l\u2019URL {1} ",
-"Failed to load plugin url: {0}": "\u00c9chec de chargement de l'URL du plug-in\u00a0: {0}",
-"Failed to initialize plugin: {0}": "\u00c9chec d'initialisation du plug-in\u00a0: {0}",
-"example": "exemple",
-"Search": "Rechercher",
-"All": "Tout",
-"Currency": "Devise",
-"Text": "Texte",
-"Quotations": "Citations",
-"Mathematical": "Op\u00e9rateurs math\u00e9matiques",
-"Extended Latin": "Latin \u00e9tendu",
-"Symbols": "Symboles",
-"Arrows": "Fl\u00e8ches",
-"User Defined": "D\u00e9fini par l'utilisateur",
-"dollar sign": "Symbole dollar",
-"currency sign": "Symbole devise",
-"euro-currency sign": "Symbole euro",
-"colon sign": "Symbole col\u00f3n",
-"cruzeiro sign": "Symbole cruzeiro",
-"french franc sign": "Symbole franc fran\u00e7ais",
-"lira sign": "Symbole lire",
-"mill sign": "Symbole milli\u00e8me",
-"naira sign": "Symbole naira",
-"peseta sign": "Symbole peseta",
-"rupee sign": "Symbole roupie",
-"won sign": "Symbole won",
-"new sheqel sign": "Symbole nouveau ch\u00e9kel",
-"dong sign": "Symbole dong",
-"kip sign": "Symbole kip",
-"tugrik sign": "Symbole tougrik",
-"drachma sign": "Symbole drachme",
-"german penny symbol": "Symbole pfennig",
-"peso sign": "Symbole peso",
-"guarani sign": "Symbole guarani",
-"austral sign": "Symbole austral",
-"hryvnia sign": "Symbole hryvnia",
-"cedi sign": "Symbole cedi",
-"livre tournois sign": "Symbole livre tournois",
-"spesmilo sign": "Symbole spesmilo",
-"tenge sign": "Symbole tenge",
-"indian rupee sign": "Symbole roupie indienne",
-"turkish lira sign": "Symbole lire turque",
-"nordic mark sign": "Symbole du mark nordique",
-"manat sign": "Symbole manat",
-"ruble sign": "Symbole rouble",
-"yen character": "Sinogramme Yen",
-"yuan character": "Sinogramme Yuan",
-"yuan character, in hong kong and taiwan": "Sinogramme Yuan, Hong Kong et Taiwan",
-"yen\/yuan character variant one": "Sinogramme Yen\/Yuan, premi\u00e8re variante",
-"Loading emoticons...": "Chargement des \u00e9motic\u00f4nes en cours...",
-"Could not load emoticons": "\u00c9chec de chargement des \u00e9motic\u00f4nes",
-"People": "Personnes",
-"Animals and Nature": "Animaux & nature",
-"Food and Drink": "Nourriture & boissons",
-"Activity": "Activit\u00e9",
-"Travel and Places": "Voyages & lieux",
-"Objects": "Objets",
-"Flags": "Drapeaux",
-"Characters": "Caract\u00e8res",
-"Characters (no spaces)": "Caract\u00e8res (espaces non compris)",
-"Error: Form submit field collision.": "Erreur : conflit de champs lors de la soumission du formulaire",
-"Error: No form element found.": "Erreur : aucun \u00e9l\u00e9ment de formulaire trouv\u00e9.",
-"Update": "Mettre \u00e0 jour",
-"Color swatch": "\u00c9chantillon de couleurs",
-"Turquoise": "Turquoise",
-"Green": "Vert",
-"Blue": "Bleu",
-"Purple": "Violet",
-"Navy Blue": "Bleu marine",
-"Dark Turquoise": "Turquoise fonc\u00e9",
-"Dark Green": "Vert fonc\u00e9",
-"Medium Blue": "Bleu moyen",
-"Medium Purple": "Violet moyen",
-"Midnight Blue": "Bleu de minuit",
-"Yellow": "Jaune",
-"Orange": "Orange",
-"Red": "Rouge",
-"Light Gray": "Gris clair",
-"Gray": "Gris",
-"Dark Yellow": "Jaune fonc\u00e9",
-"Dark Orange": "Orange fonc\u00e9",
-"Dark Red": "Rouge fonc\u00e9",
-"Medium Gray": "Gris moyen",
-"Dark Gray": "Gris fonc\u00e9",
-"Black": "Noir",
-"White": "Blanc",
-"Switch to or from fullscreen mode": "Passer en ou quitter le mode plein \u00e9cran",
-"Open help dialog": "Ouvrir la bo\u00eete de dialogue d'aide",
-"history": "historique",
-"styles": "styles",
-"formatting": "mise en forme",
-"alignment": "alignement",
-"indentation": "retrait",
-"permanent pen": "feutre ind\u00e9l\u00e9bile",
-"comments": "commentaires",
-"Anchor": "Ancre",
-"Special character": "Caract\u00e8res sp\u00e9ciaux",
-"Code sample": "Extrait de code",
-"Color": "Couleur",
-"Emoticons": "Emotic\u00f4nes",
-"Document properties": "Propri\u00e9t\u00e9 du document",
-"Image": "Image",
-"Insert link": "Ins\u00e9rer un lien",
-"Target": "Cible",
-"Link": "Lien",
-"Poster": "Publier",
-"Media": "M\u00e9dia",
-"Print": "Imprimer",
-"Prev": "Pr\u00e9c ",
-"Find and replace": "Trouver et remplacer",
-"Whole words": "Mots entiers",
-"Spellcheck": "V\u00e9rification orthographique",
-"Caption": "Titre",
-"Insert template": "Ajouter un th\u00e8me"
-});
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/langs/readme.md b/app/static/vendors/tinymce/js/tinymce/langs/readme.md
deleted file mode 100644 (file)
index a52bf03..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-This is where language files should be placed.
-
-Please DO NOT translate these directly use this service: https://www.transifex.com/projects/p/tinymce/
diff --git a/app/static/vendors/tinymce/js/tinymce/license.txt b/app/static/vendors/tinymce/js/tinymce/license.txt
deleted file mode 100644 (file)
index b17fc90..0000000
+++ /dev/null
@@ -1,504 +0,0 @@
-      GNU LESSER GENERAL PUBLIC LICENSE
-           Version 2.1, February 1999
-
- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the Lesser GPL.  It also counts
- as the successor of the GNU Library Public License, version 2, hence
- the version number 2.1.]
-
-          Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
-  This license, the Lesser General Public License, applies to some
-specially designated software packages--typically libraries--of the
-Free Software Foundation and other authors who decide to use it.  You
-can use it too, but we suggest you first think carefully about whether
-this license or the ordinary General Public License is the better
-strategy to use in any particular case, based on the explanations below.
-
-  When we speak of free software, we are referring to freedom of use,
-not price.  Our General Public Licenses are designed to make sure that
-you have the freedom to distribute copies of free software (and charge
-for this service if you wish); that you receive source code or can get
-it if you want it; that you can change the software and use pieces of
-it in new free programs; and that you are informed that you can do
-these things.
-
-  To protect your rights, we need to make restrictions that forbid
-distributors to deny you these rights or to ask you to surrender these
-rights.  These restrictions translate to certain responsibilities for
-you if you distribute copies of the library or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link other code with the library, you must provide
-complete object files to the recipients, so that they can relink them
-with the library after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  We protect your rights with a two-step method: (1) we copyright the
-library, and (2) we offer you this license, which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  To protect each distributor, we want to make it very clear that
-there is no warranty for the free library.  Also, if the library is
-modified by someone else and passed on, the recipients should know
-that what they have is not the original version, so that the original
-author's reputation will not be affected by problems that might be
-introduced by others.
-
-  Finally, software patents pose a constant threat to the existence of
-any free program.  We wish to make sure that a company cannot
-effectively restrict the users of a free program by obtaining a
-restrictive license from a patent holder.  Therefore, we insist that
-any patent license obtained for a version of the library must be
-consistent with the full freedom of use specified in this license.
-
-  Most GNU software, including some libraries, is covered by the
-ordinary GNU General Public License.  This license, the GNU Lesser
-General Public License, applies to certain designated libraries, and
-is quite different from the ordinary General Public License.  We use
-this license for certain libraries in order to permit linking those
-libraries into non-free programs.
-
-  When a program is linked with a library, whether statically or using
-a shared library, the combination of the two is legally speaking a
-combined work, a derivative of the original library.  The ordinary
-General Public License therefore permits such linking only if the
-entire combination fits its criteria of freedom.  The Lesser General
-Public License permits more lax criteria for linking other code with
-the library.
-
-  We call this license the "Lesser" General Public License because it
-does Less to protect the user's freedom than the ordinary General
-Public License.  It also provides other free software developers Less
-of an advantage over competing non-free programs.  These disadvantages
-are the reason we use the ordinary General Public License for many
-libraries.  However, the Lesser license provides advantages in certain
-special circumstances.
-
-  For example, on rare occasions, there may be a special need to
-encourage the widest possible use of a certain library, so that it becomes
-a de-facto standard.  To achieve this, non-free programs must be
-allowed to use the library.  A more frequent case is that a free
-library does the same job as widely used non-free libraries.  In this
-case, there is little to gain by limiting the free library to free
-software only, so we use the Lesser General Public License.
-
-  In other cases, permission to use a particular library in non-free
-programs enables a greater number of people to use a large body of
-free software.  For example, permission to use the GNU C Library in
-non-free programs enables many more people to use the whole GNU
-operating system, as well as its variant, the GNU/Linux operating
-system.
-
-  Although the Lesser General Public License is Less protective of the
-users' freedom, it does ensure that the user of a program that is
-linked with the Library has the freedom and the wherewithal to run
-that program using a modified version of the Library.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, whereas the latter must
-be combined with the library in order to run.
-
-      GNU LESSER GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library or other
-program which contains a notice placed by the copyright holder or
-other authorized party saying it may be distributed under the terms of
-this Lesser General Public License (also called "this License").
-Each licensee is addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-  
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
-  6. As an exception to the Sections above, you may also combine or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Use a suitable shared library mechanism for linking with the
-    Library.  A suitable mechanism is one that (1) uses at run time a
-    copy of the library already present on the user's computer system,
-    rather than copying library functions into the executable, and (2)
-    will operate properly with a modified version of the library, if
-    the user installs one, as long as the modified version is
-    interface-compatible with the version that the work was made with.
-
-    c) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-
-    d) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    e) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the materials to be distributed need not include anything that is
-normally distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties with
-this License.
-
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Lesser General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-          NO WARRANTY
-
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-         END OF TERMS AND CONDITIONS
-
-           How to Apply These Terms to Your New Libraries
-
-  If you develop a new library, and you want it to be of the greatest
-possible use to the public, we recommend making it free software that
-everyone can redistribute and change.  You can do so by permitting
-redistribution under these terms (or, alternatively, under the terms of the
-ordinary General Public License).
-
-  To apply these terms, attach the following notices to the library.  It is
-safest to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least the
-"copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the library's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This library is free software; you can redistribute it and/or
-    modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
-    version 2.1 of the License, or (at your option) any later version.
-
-    This library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-    Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public
-    License along with this library; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-
-Also add information on how to contact you by electronic and paper mail.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the library, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the
-  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
-
-  <signature of Ty Coon>, 1 April 1990
-  Ty Coon, President of Vice
-
-That's all there is to it!
-
-
diff --git a/app/static/vendors/tinymce/js/tinymce/plugins/advlist/plugin.min.js b/app/static/vendors/tinymce/js/tinymce/plugins/advlist/plugin.min.js
deleted file mode 100644 (file)
index 9880702..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.3 (2019-12-04)
- */
-!function(){"use strict";function n(){}function o(n){return function(){return n}}function t(){return d}var e,r=tinymce.util.Tools.resolve("tinymce.PluginManager"),u=tinymce.util.Tools.resolve("tinymce.util.Tools"),l=function(n,t,e){var r="UL"===t?"InsertUnorderedList":"InsertOrderedList";n.execCommand(r,!1,!1===e?null:{"list-style-type":e})},i=function(e){e.addCommand("ApplyUnorderedListStyle",function(n,t){l(e,"UL",t["list-style-type"])}),e.addCommand("ApplyOrderedListStyle",function(n,t){l(e,"OL",t["list-style-type"])})},c=function(n){var t=n.getParam("advlist_number_styles","default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman");return t?t.split(/[ ,]/):[]},s=function(n){var t=n.getParam("advlist_bullet_styles","default,circle,square");return t?t.split(/[ ,]/):[]},f=o(!1),a=o(!0),d=(e={fold:function(n,t){return n()},is:f,isSome:f,isNone:a,getOr:m,getOrThunk:p,getOrDie:function(n){throw new Error(n||"error: getOrDie called on none.")},getOrNull:o(null),getOrUndefined:o(undefined),or:m,orThunk:p,map:t,each:n,bind:t,exists:f,forall:a,filter:t,equals:g,equals_:g,toArray:function(){return[]},toString:o("none()")},Object.freeze&&Object.freeze(e),e);function g(n){return n.isNone()}function p(n){return n()}function m(n){return n}function y(n,t,e){var r=function(n,t){for(var e=0;e<n.length;e++){if(t(n[e]))return e}return-1}(t.parents,L),i=-1!==r?t.parents.slice(0,r):t.parents,o=u.grep(i,N(n));return 0<o.length&&o[0].nodeName===e}function O(n,t,e,r,i,o){0<o.length?function(e,n,t,r,i,o){e.ui.registry.addSplitButton(n,{tooltip:t,icon:"OL"===i?"ordered-list":"unordered-list",presets:"listpreview",columns:3,fetch:function(n){n(u.map(o,function(n){return{type:"choiceitem",value:"default"===n?"":n,icon:"list-"+("OL"===i?"num":"bull")+"-"+("disc"===n||"decimal"===n?"default":n),text:function(n){return n.replace(/\-/g," ").replace(/\b\w/g,function(n){return n.toUpperCase()})}(n)}}))},onAction:function(){return e.execCommand(r)},onItemAction:function(n,t){l(e,i,t)},select:function(t){return S(e).map(function(n){return t===n}).getOr(!1)},onSetup:function(t){function n(n){t.setActive(y(e,n,i))}return e.on("NodeChange",n),function(){return e.off("NodeChange",n)}}})}(n,t,e,r,i,o):function(e,n,t,r,i){e.ui.registry.addToggleButton(n,{active:!1,tooltip:t,icon:"OL"===i?"ordered-list":"unordered-list",onSetup:function(t){function n(n){t.setActive(y(e,n,i))}return e.on("NodeChange",n),function(){return e.off("NodeChange",n)}},onAction:function(){return e.execCommand(r)}})}(n,t,e,r,i)}var v=function(e){function n(){return i}function t(n){return n(e)}var r=o(e),i={fold:function(n,t){return t(e)},is:function(n){return e===n},isSome:a,isNone:f,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:n,orThunk:n,map:function(n){return v(n(e))},each:function(n){n(e)},bind:t,exists:t,forall:t,filter:function(n){return n(e)?i:d},toArray:function(){return[e]},toString:function(){return"some("+e+")"},equals:function(n){return n.is(e)},equals_:function(n,t){return n.fold(f,function(n){return t(e,n)})}};return i},h=function(n){return null===n||n===undefined?d:v(n)},L=function(n){return n&&/^(TH|TD)$/.test(n.nodeName)},N=function(t){return function(n){return n&&/^(OL|UL|DL)$/.test(n.nodeName)&&function(n,t){return n.$.contains(n.getBody(),t)}(t,n)}},S=function(n){var t=n.dom.getParent(n.selection.getNode(),"ol,ul"),e=n.dom.getStyle(t,"listStyleType");return h(e)},T=function(n){O(n,"numlist","Numbered list","InsertOrderedList","OL",c(n)),O(n,"bullist","Bullet list","InsertUnorderedList","UL",s(n))};!function b(){r.add("advlist",function(n){var t,e,r;e="lists",r=(t=n).settings.plugins?t.settings.plugins:"",-1!==u.inArray(r.split(/[ ,]/),e)&&(T(n),i(n))})}()}();
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/plugins/anchor/plugin.min.js b/app/static/vendors/tinymce/js/tinymce/plugins/anchor/plugin.min.js
deleted file mode 100644 (file)
index a020d5b..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.3 (2019-12-04)
- */
-!function(){"use strict";function e(o){return function(t){for(var e=0;e<t.length;e++)(n=t[e]).attr("href")||!n.attr("id")&&!n.attr("name")||n.firstChild||t[e].attr("contenteditable",o);var n}}var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),n=function(t){return/^[A-Za-z][A-Za-z0-9\-:._]*$/.test(t)},o=function(t){var e=t.selection.getNode();return"A"===e.tagName&&""===t.dom.getAttrib(e,"href")?e.getAttribute("id")||e.getAttribute("name"):""},r=function(t,e){var n=t.selection.getNode();"A"===n.tagName&&""===t.dom.getAttrib(n,"href")?(n.removeAttribute("name"),n.id=e,t.undoManager.add()):(t.focus(),t.selection.collapse(!0),t.execCommand("mceInsertContent",!1,t.dom.createHTML("a",{id:e})))},a=function(e){var t=o(e);e.windowManager.open({title:"Anchor",size:"normal",body:{type:"panel",items:[{name:"id",type:"input",label:"ID",placeholder:"example"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:{id:t},onSubmit:function(t){!function(t,e){return n(e)?(r(t,e),!1):(t.windowManager.alert("Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores."),!0)}(e,t.getData().id)&&t.close()}})},i=function(t){t.addCommand("mceAnchor",function(){a(t)})},c=function(t){t.on("PreInit",function(){t.parser.addNodeFilter("a",e("false")),t.serializer.addNodeFilter("a",e(null))})},d=function(e){e.ui.registry.addToggleButton("anchor",{icon:"bookmark",tooltip:"Anchor",onAction:function(){return e.execCommand("mceAnchor")},onSetup:function(t){return e.selection.selectorChangedWithUnbind("a:not([href])",t.setActive).unbind}}),e.ui.registry.addMenuItem("anchor",{icon:"bookmark",text:"Anchor...",onAction:function(){return e.execCommand("mceAnchor")}})};!function u(){t.add("anchor",function(t){c(t),i(t),d(t)})}()}();
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/plugins/autolink/plugin.min.js b/app/static/vendors/tinymce/js/tinymce/plugins/autolink/plugin.min.js
deleted file mode 100644 (file)
index 7148ffe..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.3 (2019-12-04)
- */
-!function(){"use strict";function i(t,e){if(e<0&&(e=0),3===t.nodeType){var n=t.data.length;n<e&&(e=n)}return e}function C(t,e,n){1!==e.nodeType||e.hasChildNodes()?t.setStart(e,i(e,n)):t.setStartBefore(e)}function m(t,e,n){1!==e.nodeType||e.hasChildNodes()?t.setEnd(e,i(e,n)):t.setEndAfter(e)}var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),o=tinymce.util.Tools.resolve("tinymce.Env"),y=function(t){return t.getParam("autolink_pattern",/^(https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.|(?:mailto:)?[A-Z0-9._%+\-]+@)(.+)$/i)},k=function(t){return t.getParam("default_link_target",!1)},r=function(t,e,n){var i,o,r,f,a,s,d,c,l,u,g=y(t),h=k(t);if("A"!==t.selection.getNode().tagName){if((i=t.selection.getRng(!0).cloneRange()).startOffset<5){if(!(c=i.endContainer.previousSibling)){if(!i.endContainer.firstChild||!i.endContainer.firstChild.nextSibling)return;c=i.endContainer.firstChild.nextSibling}if(l=c.length,C(i,c,l),m(i,c,l),i.endOffset<5)return;o=i.endOffset,f=c}else{if(3!==(f=i.endContainer).nodeType&&f.firstChild){for(;3!==f.nodeType&&f.firstChild;)f=f.firstChild;3===f.nodeType&&(C(i,f,0),m(i,f,f.nodeValue.length))}o=1===i.endOffset?2:i.endOffset-1-e}for(r=o;C(i,f,2<=o?o-2:0),m(i,f,1<=o?o-1:0),o-=1," "!==(u=i.toString())&&""!==u&&160!==u.charCodeAt(0)&&0<=o-2&&u!==n;);!function(t,e){return t===e||" "===t||160===t.charCodeAt(0)}(i.toString(),n)?(0===i.startOffset?C(i,f,0):C(i,f,o),m(i,f,r)):(C(i,f,o),m(i,f,r),o+=1),"."===(s=i.toString()).charAt(s.length-1)&&m(i,f,r-1),(d=(s=i.toString().trim()).match(g))&&("www."===d[1]?d[1]="http://www.":/@$/.test(d[1])&&!/^mailto:/.test(d[1])&&(d[1]="mailto:"+d[1]),a=t.selection.getBookmark(),t.selection.setRng(i),t.execCommand("createlink",!1,d[1]+d[2]),!1!==h&&t.dom.setAttrib(t.selection.getNode(),"target",h),t.selection.moveToBookmark(a),t.nodeChanged())}},e=function(e){var n;e.on("keydown",function(t){if(13===t.keyCode)return function(t){r(t,-1,"")}(e)}),o.browser.isIE()?e.on("focus",function(){if(!n){n=!0;try{e.execCommand("AutoUrlDetect",!1,!0)}catch(t){}}}):(e.on("keypress",function(t){if(41===t.keyCode)return function(t){r(t,-1,"(")}(e)}),e.on("keyup",function(t){if(32===t.keyCode)return function(t){r(t,0,"")}(e)}))};!function n(){t.add("autolink",function(t){e(t)})}()}();
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/plugins/autoresize/plugin.min.js b/app/static/vendors/tinymce/js/tinymce/plugins/autoresize/plugin.min.js
deleted file mode 100644 (file)
index f54fc79..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.3 (2019-12-04)
- */
-!function(){"use strict";function d(e,t){var n=e.getBody();n&&(n.style.overflowY=t?"":"hidden",t||(n.scrollTop=0))}function h(e,t,n,i){var o=parseInt(e.getStyle(t,n,i),10);return isNaN(o)?0:o}var i=function(e){function t(){return n}var n=e;return{get:t,set:function(e){n=e},clone:function(){return i(t())}}},e=tinymce.util.Tools.resolve("tinymce.PluginManager"),v=tinymce.util.Tools.resolve("tinymce.Env"),r=tinymce.util.Tools.resolve("tinymce.util.Delay"),p=function(e){return e.fire("ResizeEditor")},y=function(e){return e.getParam("min_height",e.getElement().offsetHeight,"number")},z=function(e){return e.getParam("max_height",0,"number")},n=function(e){return e.getParam("autoresize_overflow_padding",1,"number")},b=function(e){return e.getParam("autoresize_bottom_margin",50,"number")},o=function(e){return e.getParam("autoresize_on_init",!0,"boolean")},u=function(e,t,n,i,o){r.setEditorTimeout(e,function(){C(e,t),n--?u(e,t,n,i,o):o&&o()},i)},C=function(e,t){var n,i,o,r=e.dom,u=e.getDoc();if(u)if(function(e){return e.plugins.fullscreen&&e.plugins.fullscreen.isFullscreen()}(e))d(e,!0);else{var s=u.documentElement,a=b(e);i=y(e);var f=h(r,s,"margin-top",!0),c=h(r,s,"margin-bottom",!0);(o=s.offsetHeight+f+c+a)<0&&(o=0);var g=e.getContainer().offsetHeight-e.getContentAreaContainer().offsetHeight;o+g>y(e)&&(i=o+g);var l=z(e);if(l&&l<i?(i=l,d(e,!0)):d(e,!1),i!==t.get()){if(n=i-t.get(),r.setStyle(e.getContainer(),"height",i+"px"),t.set(i),p(e),v.browser.isSafari()&&v.mac){var m=e.getWin();m.scrollTo(m.pageXOffset,m.pageYOffset)}e.hasFocus()&&e.selection.scrollIntoView(e.selection.getNode()),v.webkit&&n<0&&C(e,t)}}},s={setup:function(t,e){t.on("init",function(){var e=n(t);t.dom.setStyles(t.getBody(),{paddingLeft:e,paddingRight:e,"min-height":0})}),t.on("NodeChange SetContent keyup FullscreenStateChanged ResizeContent",function(){C(t,e)}),o(t)&&t.on("init",function(){u(t,e,20,100,function(){u(t,e,5,1e3)})})},resize:C},a=function(e,t){e.addCommand("mceAutoResize",function(){s.resize(e,t)})};!function t(){e.add("autoresize",function(e){if(e.settings.hasOwnProperty("resize")||(e.settings.resize=!1),!e.inline){var t=i(0);a(e,t),s.setup(e,t)}})}()}();
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/plugins/autosave/plugin.min.js b/app/static/vendors/tinymce/js/tinymce/plugins/autosave/plugin.min.js
deleted file mode 100644 (file)
index 14a5ad5..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.3 (2019-12-04)
- */
-!function(n){"use strict";function r(t,e){var n=t||e,r=/^(\d+)([ms]?)$/.exec(""+n);return(r[2]?{s:1e3,m:6e4}[r[2]]:1)*parseInt(n,10)}function o(t){var e=t.getParam("autosave_prefix","tinymce-autosave-{path}{query}{hash}-{id}-");return e=(e=(e=(e=e.replace(/\{path\}/g,n.document.location.pathname)).replace(/\{query\}/g,n.document.location.search)).replace(/\{hash\}/g,n.document.location.hash)).replace(/\{id\}/g,t.id)}function a(t,e){var n=t.settings.forced_root_block;return""===(e=d.trim(void 0===e?t.getBody().innerHTML:e))||new RegExp("^<"+n+"[^>]*>((\xa0|&nbsp;|[ \t]|<br[^>]*>)+?|)</"+n+">|<br>$","i").test(e)}function i(t){var e=parseInt(v.getItem(o(t)+"time"),10)||0;return!((new Date).getTime()-e>function(t){return r(t.settings.autosave_retention,"20m")}(t))||(g(t,!1),!1)}function u(t){var e=o(t);!a(t)&&t.isDirty()&&(v.setItem(e+"draft",t.getContent({format:"raw",no_events:!0})),v.setItem(e+"time",(new Date).getTime().toString()),function(t){t.fire("StoreDraft")}(t))}function s(t){var e=o(t);i(t)&&(t.setContent(v.getItem(e+"draft"),{format:"raw"}),function(t){t.fire("RestoreDraft")}(t))}function c(t,e){var n=function(t){return r(t.settings.autosave_interval,"30s")}(t);e.get()||(m.setInterval(function(){t.removed||u(t)},n),e.set(!0))}function f(t){t.undoManager.transact(function(){s(t),g(t)}),t.focus()}var l=function(t){function e(){return n}var n=t;return{get:e,set:function(t){n=t},clone:function(){return l(e())}}},t=tinymce.util.Tools.resolve("tinymce.PluginManager"),m=tinymce.util.Tools.resolve("tinymce.util.Delay"),v=tinymce.util.Tools.resolve("tinymce.util.LocalStorage"),d=tinymce.util.Tools.resolve("tinymce.util.Tools"),g=function(t,e){var n=o(t);v.removeItem(n+"draft"),v.removeItem(n+"time"),!1!==e&&function(t){t.fire("RemoveDraft")}(t)};function y(r){for(var o=[],t=1;t<arguments.length;t++)o[t-1]=arguments[t];return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=o.concat(t);return r.apply(null,n)}}function p(n,t){return function(t){t.setDisabled(!i(n));function e(){return t.setDisabled(!i(n))}return n.on("StoreDraft RestoreDraft RemoveDraft",e),function(){return n.off("StoreDraft RestoreDraft RemoveDraft",e)}}}var D=tinymce.util.Tools.resolve("tinymce.EditorManager");!function e(){t.add("autosave",function(t){var e=l(!1);return function(t){t.editorManager.on("BeforeUnload",function(t){var e;d.each(D.get(),function(t){t.plugins.autosave&&t.plugins.autosave.storeDraft(),!e&&t.isDirty()&&function(t){return t.getParam("autosave_ask_before_unload",!0)}(t)&&(e=t.translate("You have unsaved changes are you sure you want to navigate away?"))}),e&&(t.preventDefault(),t.returnValue=e)})}(t),function(t,e){c(t,e),t.ui.registry.addButton("restoredraft",{tooltip:"Restore last draft",icon:"restore-draft",onAction:function(){f(t)},onSetup:p(t)}),t.ui.registry.addMenuItem("restoredraft",{text:"Restore last draft",icon:"restore-draft",onAction:function(){f(t)},onSetup:p(t)})}(t,e),t.on("init",function(){(function(t){return t.getParam("autosave_restore_when_empty",!1)})(t)&&t.dom.isEmpty(t.getBody())&&s(t)}),function(t){return{hasDraft:y(i,t),storeDraft:y(u,t),restoreDraft:y(s,t),removeDraft:y(g,t),isEmpty:y(a,t)}}(t)})}()}(window);
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/plugins/bbcode/plugin.min.js b/app/static/vendors/tinymce/js/tinymce/plugins/bbcode/plugin.min.js
deleted file mode 100644 (file)
index c900120..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.3 (2019-12-04)
- */
-!function(){"use strict";var o=tinymce.util.Tools.resolve("tinymce.PluginManager"),e=tinymce.util.Tools.resolve("tinymce.util.Tools"),t=function(t){t=e.trim(t);function o(o,e){t=t.replace(o,e)}return o(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi,"[url=$1]$2[/url]"),o(/<font.*?color=\"(.*?)\".*?class=\"codeStyle\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),o(/<font.*?color=\"(.*?)\".*?class=\"quoteStyle\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),o(/<font.*?class=\"codeStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),o(/<font.*?class=\"quoteStyle\".*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),o(/<span style=\"color: ?(.*?);\">(.*?)<\/span>/gi,"[color=$1]$2[/color]"),o(/<font.*?color=\"(.*?)\".*?>(.*?)<\/font>/gi,"[color=$1]$2[/color]"),o(/<span style=\"font-size:(.*?);\">(.*?)<\/span>/gi,"[size=$1]$2[/size]"),o(/<font>(.*?)<\/font>/gi,"$1"),o(/<img.*?src=\"(.*?)\".*?\/>/gi,"[img]$1[/img]"),o(/<span class=\"codeStyle\">(.*?)<\/span>/gi,"[code]$1[/code]"),o(/<span class=\"quoteStyle\">(.*?)<\/span>/gi,"[quote]$1[/quote]"),o(/<strong class=\"codeStyle\">(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]"),o(/<strong class=\"quoteStyle\">(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]"),o(/<em class=\"codeStyle\">(.*?)<\/em>/gi,"[code][i]$1[/i][/code]"),o(/<em class=\"quoteStyle\">(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]"),o(/<u class=\"codeStyle\">(.*?)<\/u>/gi,"[code][u]$1[/u][/code]"),o(/<u class=\"quoteStyle\">(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]"),o(/<\/(strong|b)>/gi,"[/b]"),o(/<(strong|b)>/gi,"[b]"),o(/<\/(em|i)>/gi,"[/i]"),o(/<(em|i)>/gi,"[i]"),o(/<\/u>/gi,"[/u]"),o(/<span style=\"text-decoration: ?underline;\">(.*?)<\/span>/gi,"[u]$1[/u]"),o(/<u>/gi,"[u]"),o(/<blockquote[^>]*>/gi,"[quote]"),o(/<\/blockquote>/gi,"[/quote]"),o(/<br \/>/gi,"\n"),o(/<br\/>/gi,"\n"),o(/<br>/gi,"\n"),o(/<p>/gi,""),o(/<\/p>/gi,"\n"),o(/&nbsp;|\u00a0/gi," "),o(/&quot;/gi,'"'),o(/&lt;/gi,"<"),o(/&gt;/gi,">"),o(/&amp;/gi,"&"),t},i=function(t){t=e.trim(t);function o(o,e){t=t.replace(o,e)}return o(/\n/gi,"<br />"),o(/\[b\]/gi,"<strong>"),o(/\[\/b\]/gi,"</strong>"),o(/\[i\]/gi,"<em>"),o(/\[\/i\]/gi,"</em>"),o(/\[u\]/gi,"<u>"),o(/\[\/u\]/gi,"</u>"),o(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,'<a href="$1">$2</a>'),o(/\[url\](.*?)\[\/url\]/gi,'<a href="$1">$1</a>'),o(/\[img\](.*?)\[\/img\]/gi,'<img src="$1" />'),o(/\[color=(.*?)\](.*?)\[\/color\]/gi,'<font color="$1">$2</font>'),o(/\[code\](.*?)\[\/code\]/gi,'<span class="codeStyle">$1</span>&nbsp;'),o(/\[quote.*?\](.*?)\[\/quote\]/gi,'<span class="quoteStyle">$1</span>&nbsp;'),t};!function n(){o.add("bbcode",function(o){o.on("BeforeSetContent",function(o){o.content=i(o.content)}),o.on("PostProcess",function(o){o.set&&(o.content=i(o.content)),o.get&&(o.content=t(o.content))})})}()}();
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/plugins/charmap/plugin.min.js b/app/static/vendors/tinymce/js/tinymce/plugins/charmap/plugin.min.js
deleted file mode 100644 (file)
index 9adbda5..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.3 (2019-12-04)
- */
-!function(c){"use strict";function n(){}function i(n){return function(){return n}}function e(){return m}var r,t=tinymce.util.Tools.resolve("tinymce.PluginManager"),a=function(n,e){return n.fire("insertCustomChar",{chr:e})},u=function(n,e){var r=a(n,e).chr;n.execCommand("mceInsertContent",!1,r)},o=tinymce.util.Tools.resolve("tinymce.util.Tools"),s=function(n){return n.settings.charmap},l=function(n){return n.settings.charmap_append},f=i(!1),g=i(!0),m=(r={fold:function(n,e){return n()},is:f,isSome:f,isNone:g,getOr:p,getOrThunk:d,getOrDie:function(n){throw new Error(n||"error: getOrDie called on none.")},getOrNull:i(null),getOrUndefined:i(undefined),or:p,orThunk:d,map:e,each:n,bind:e,exists:f,forall:g,filter:e,equals:h,equals_:h,toArray:function(){return[]},toString:i("none()")},Object.freeze&&Object.freeze(r),r);function h(n){return n.isNone()}function d(n){return n()}function p(n){return n}function y(e){return function(n){return function(n){if(null===n)return"null";var e=typeof n;return"object"==e&&(Array.prototype.isPrototypeOf(n)||n.constructor&&"Array"===n.constructor.name)?"array":"object"==e&&(String.prototype.isPrototypeOf(n)||n.constructor&&"String"===n.constructor.name)?"string":e}(n)===e}}function w(n,e){for(var r=n.length,t=new Array(r),a=0;a<r;a++){var i=n[a];t[a]=e(i,a)}return t}function b(n,e){return function(n){for(var e=[],r=0,t=n.length;r<t;++r){if(!O(n[r]))throw new Error("Arr.flatten item "+r+" was not an array, input: "+n);S.apply(e,n[r])}return e}(w(n,e))}function v(n){return T(n)?[].concat(function(n){return o.grep(n,function(n){return T(n)&&2===n.length})}(n)):"function"==typeof n?n():[]}function k(n,e){return-1!==n.indexOf(e)}var C=function(r){function n(){return a}function e(n){return n(r)}var t=i(r),a={fold:function(n,e){return e(r)},is:function(n){return r===n},isSome:g,isNone:f,getOr:t,getOrThunk:t,getOrDie:t,getOrNull:t,getOrUndefined:t,or:n,orThunk:n,map:function(n){return C(n(r))},each:function(n){n(r)},bind:e,exists:e,forall:e,filter:function(n){return n(r)?a:m},toArray:function(){return[r]},toString:function(){return"some("+r+")"},equals:function(n){return n.is(r)},equals_:function(n,e){return n.fold(f,function(n){return e(r,n)})}};return a},A={some:C,none:e,from:function(n){return null===n||n===undefined?m:C(n)}},O=y("array"),x=y("function"),q=Array.prototype.slice,S=Array.prototype.push,T=(x(Array.from)&&Array.from,o.isArray),E="User Defined",z=function(n){var e=function(n,e){var r=s(n);r&&(e=[{name:E,characters:v(r)}]);var t=l(n);if(t){var a=o.grep(e,function(n){return n.name===E});return a.length?(a[0].characters=[].concat(a[0].characters).concat(v(t)),e):[].concat(e).concat({name:E,characters:v(t)})}return e}(n,[{name:"Currency",characters:[[36,"dollar sign"],[162,"cent sign"],[8364,"euro sign"],[163,"pound sign"],[165,"yen sign"],[164,"currency sign"],[8352,"euro-currency sign"],[8353,"colon sign"],[8354,"cruzeiro sign"],[8355,"french franc sign"],[8356,"lira sign"],[8357,"mill sign"],[8358,"naira sign"],[8359,"peseta sign"],[8360,"rupee sign"],[8361,"won sign"],[8362,"new sheqel sign"],[8363,"dong sign"],[8365,"kip sign"],[8366,"tugrik sign"],[8367,"drachma sign"],[8368,"german penny symbol"],[8369,"peso sign"],[8370,"guarani sign"],[8371,"austral sign"],[8372,"hryvnia sign"],[8373,"cedi sign"],[8374,"livre tournois sign"],[8375,"spesmilo sign"],[8376,"tenge sign"],[8377,"indian rupee sign"],[8378,"turkish lira sign"],[8379,"nordic mark sign"],[8380,"manat sign"],[8381,"ruble sign"],[20870,"yen character"],[20803,"yuan character"],[22291,"yuan character, in hong kong and taiwan"],[22278,"yen/yuan character variant one"]]},{name:"Text",characters:[[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"]]},{name:"Quotations",characters:[[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"]]},{name:"Mathematical",characters:[[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"]]},{name:"Extended Latin",characters:[[192,"A - grave"],[193,"A - acute"],[194,"A - circumflex"],[195,"A - tilde"],[196,"A - diaeresis"],[197,"A - ring above"],[256,"A - macron"],[198,"ligature AE"],[199,"C - cedilla"],[200,"E - grave"],[201,"E - acute"],[202,"E - circumflex"],[203,"E - diaeresis"],[274,"E - macron"],[204,"I - grave"],[205,"I - acute"],[206,"I - circumflex"],[207,"I - diaeresis"],[298,"I - macron"],[208,"ETH"],[209,"N - tilde"],[210,"O - grave"],[211,"O - acute"],[212,"O - circumflex"],[213,"O - tilde"],[214,"O - diaeresis"],[216,"O - slash"],[332,"O - macron"],[338,"ligature OE"],[352,"S - caron"],[217,"U - grave"],[218,"U - acute"],[219,"U - circumflex"],[220,"U - diaeresis"],[362,"U - macron"],[221,"Y - acute"],[376,"Y - diaeresis"],[562,"Y - macron"],[222,"THORN"],[224,"a - grave"],[225,"a - acute"],[226,"a - circumflex"],[227,"a - tilde"],[228,"a - diaeresis"],[229,"a - ring above"],[257,"a - macron"],[230,"ligature ae"],[231,"c - cedilla"],[232,"e - grave"],[233,"e - acute"],[234,"e - circumflex"],[235,"e - diaeresis"],[275,"e - macron"],[236,"i - grave"],[237,"i - acute"],[238,"i - circumflex"],[239,"i - diaeresis"],[299,"i - macron"],[240,"eth"],[241,"n - tilde"],[242,"o - grave"],[243,"o - acute"],[244,"o - circumflex"],[245,"o - tilde"],[246,"o - diaeresis"],[248,"o slash"],[333,"o macron"],[339,"ligature oe"],[353,"s - caron"],[249,"u - grave"],[250,"u - acute"],[251,"u - circumflex"],[252,"u - diaeresis"],[363,"u - macron"],[253,"y - acute"],[254,"thorn"],[255,"y - diaeresis"],[563,"y - macron"],[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"]]},{name:"Symbols",characters:[[8501,"alef symbol"],[982,"pi symbol"],[8476,"real part symbol"],[978,"upsilon - hook symbol"],[8472,"Weierstrass p"],[8465,"imaginary part"]]},{name:"Arrows",characters:[[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"]]}]);return 1<e.length?[{name:"All",characters:b(e,function(n){return n.characters})}].concat(e):e},N=function(e){return{getCharMap:function(){return z(e)},insertChar:function(n){u(e,n)}}},U=function(n){function e(){return r}var r=n;return{get:e,set:function(n){r=n},clone:function(){return U(e())}}},D=function(n,e){var r=[],t=e.toLowerCase();return function(n,e){for(var r=0,t=n.length;r<t;r++){e(n[r],r)}}(n.characters,function(n){!function(n,e,r){return!!k(String.fromCharCode(n).toLowerCase(),r)||(k(e.toLowerCase(),r)||k(e.toLowerCase().replace(/\s+/g,""),r))}(n[0],n[1],t)||r.push(n)}),w(r,function(n){return{text:n[1],value:String.fromCharCode(n[0]),icon:String.fromCharCode(n[0])}})},I="pattern",P=function(r,n){function e(){return[{label:"Search",type:"input",name:I},{type:"collection",name:"results"}]}function t(r,t){(function(n,e){for(var r=0,t=n.length;r<t;r++){var a=n[r];if(e(a,r))return A.some(a)}return A.none()})(n,function(n){return n.name===a.get()}).each(function(n){var e=D(n,t);r.setData({results:e})})}var a=1===n.length?U(E):U("All"),i=function(r,t){var a=null;return{cancel:function(){null!==a&&(c.clearTimeout(a),a=null)},throttle:function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];null!==a&&c.clearTimeout(a),a=c.setTimeout(function(){r.apply(null,n),a=null},t)}}}(function(n){var e=n.getData().pattern;t(n,e)},40),o={title:"Special Character",size:"normal",body:1===n.length?{type:"panel",items:e()}:{type:"tabpanel",tabs:w(n,function(n){return{title:n.name,name:n.name,items:e()}})},buttons:[{type:"cancel",name:"close",text:"Close",primary:!0}],initialData:{pattern:"",results:D(n[0],"")},onAction:function(n,e){"results"===e.name&&(u(r,e.value),n.close())},onTabChange:function(n,e){a.set(e.newTabName),i.throttle(n)},onChange:function(n,e){e.name===I&&i.throttle(n)}};r.windowManager.open(o)},j=function(n,e){n.addCommand("mceShowCharmap",function(){P(n,e)})},L=tinymce.util.Tools.resolve("tinymce.util.Promise"),M=function(n){n.ui.registry.addButton("charmap",{icon:"insert-character",tooltip:"Special character",onAction:function(){return n.execCommand("mceShowCharmap")}}),n.ui.registry.addMenuItem("charmap",{icon:"insert-character",text:"Special character...",onAction:function(){return n.execCommand("mceShowCharmap")}})};!function R(){t.add("charmap",function(n){var e=z(n);return j(n,e),M(n),function(t,a){t.ui.registry.addAutocompleter("charmap",{ch:":",columns:"auto",minChars:2,fetch:function(r,n){return new L(function(n,e){n(D(a,r))})},onAction:function(n,e,r){t.selection.setRng(e),t.insertContent(r),n.hide()}})}(n,e[0]),N(n)})}()}(window);
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/plugins/code/plugin.min.js b/app/static/vendors/tinymce/js/tinymce/plugins/code/plugin.min.js
deleted file mode 100644 (file)
index f76edae..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.3 (2019-12-04)
- */
-!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=function(e,n){e.focus(),e.undoManager.transact(function(){e.setContent(n)}),e.selection.setCursorLocation(),e.nodeChanged()},o=function(e){return e.getContent({source_view:!0})},n=function(n){var e=o(n);n.windowManager.open({title:"Source Code",size:"large",body:{type:"panel",items:[{type:"textarea",name:"code"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:{code:e},onSubmit:function(e){t(n,e.getData().code),e.close()}})},c=function(e){e.addCommand("mceCodeEditor",function(){n(e)})},i=function(e){e.ui.registry.addButton("code",{icon:"sourcecode",tooltip:"Source code",onAction:function(){return n(e)}}),e.ui.registry.addMenuItem("code",{icon:"sourcecode",text:"Source code",onAction:function(){return n(e)}})};!function u(){e.add("code",function(e){return c(e),i(e),{}})}()}();
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/plugins/codesample/plugin.min.js b/app/static/vendors/tinymce/js/tinymce/plugins/codesample/plugin.min.js
deleted file mode 100644 (file)
index 64154be..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.3 (2019-12-04)
- */
-!function(c){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),r=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),t={},n=t,g=void 0!==t?t:"undefined"!=typeof WorkerGlobalScope&&c.self instanceof WorkerGlobalScope?c.self:{},i=function(){var u=/\blang(?:uage)?-(?!\*)(\w+)\b/i,S=g.Prism={util:{encode:function(e){return e instanceof s?new s(e.type,S.util.encode(e.content),e.alias):"Array"===S.util.type(e)?e.map(S.util.encode):e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).match(/\[object (\w+)\]/)[1]},clone:function(e){switch(S.util.type(e)){case"Object":var t={};for(var n in e)e.hasOwnProperty(n)&&(t[n]=S.util.clone(e[n]));return t;case"Array":return e.map&&e.map(function(e){return S.util.clone(e)})}return e}},languages:{extend:function(e,t){var n=S.util.clone(S.languages[e]);for(var a in t)n[a]=t[a];return n},insertBefore:function(n,e,t,a){var r=(a=a||S.languages)[n];if(2===arguments.length){for(var i in t=e)t.hasOwnProperty(i)&&(r[i]=t[i]);return r}var o={};for(var s in r)if(r.hasOwnProperty(s)){if(s===e)for(var i in t)t.hasOwnProperty(i)&&(o[i]=t[i]);o[s]=r[s]}return S.languages.DFS(S.languages,function(e,t){t===a[n]&&e!==n&&(this[e]=o)}),a[n]=o},DFS:function(e,t,n){for(var a in e)e.hasOwnProperty(a)&&(t.call(e,a,e[a],n||a),"Object"===S.util.type(e[a])?S.languages.DFS(e[a],t):"Array"===S.util.type(e[a])&&S.languages.DFS(e[a],t,a))}},plugins:{},highlightAll:function(e,t){for(var n=c.document.querySelectorAll('code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'),a=0,r=void 0;r=n[a++];)S.highlightElement(r,!0===e,t)},highlightElement:function(e,t,n){for(var a,r,i=e;i&&!u.test(i.className);)i=i.parentNode;i&&(a=(i.className.match(u)||[,""])[1],r=S.languages[a]),e.className=e.className.replace(u,"").replace(/\s+/g," ")+" language-"+a,i=e.parentNode,/pre/i.test(i.nodeName)&&(i.className=i.className.replace(u,"").replace(/\s+/g," ")+" language-"+a);var o=e.textContent,s={element:e,language:a,grammar:r,code:o};if(o&&r)if(S.hooks.run("before-highlight",s),t&&g.Worker){var l=new c.Worker(S.filename);l.onmessage=function(e){s.highlightedCode=e.data,S.hooks.run("before-insert",s),s.element.innerHTML=s.highlightedCode,n&&n.call(s.element),S.hooks.run("after-highlight",s),S.hooks.run("complete",s)},l.postMessage(JSON.stringify({language:s.language,code:s.code,immediateClose:!0}))}else s.highlightedCode=S.highlight(s.code,s.grammar,s.language),S.hooks.run("before-insert",s),s.element.innerHTML=s.highlightedCode,n&&n.call(e),S.hooks.run("after-highlight",s),S.hooks.run("complete",s);else S.hooks.run("complete",s)},highlight:function(e,t,n){var a=S.tokenize(e,t);return s.stringify(S.util.encode(a),n)},tokenize:function(e,t,n){var a=S.Token,r=[e],i=t.rest;if(i){for(var o in i)t[o]=i[o];delete t.rest}e:for(var o in t)if(t.hasOwnProperty(o)&&t[o]){var s=t[o];s="Array"===S.util.type(s)?s:[s];for(var l=0;l<s.length;++l){var u=s[l],c=u.inside,g=!!u.lookbehind,d=0,p=u.alias;u=u.pattern||u;for(var f=0;f<r.length;f++){var h=r[f];if(r.length>e.length)break e;if(!(h instanceof a)){u.lastIndex=0;var m=u.exec(h);if(m){g&&(d=m[1].length);var b=m.index-1+d,y=b+(m=m[0].slice(d)).length,v=h.slice(0,b+1),k=h.slice(y+1),w=[f,1];v&&w.push(v);var x=new a(o,c?S.tokenize(m,c):m,p);w.push(x),k&&w.push(k),Array.prototype.splice.apply(r,w)}}}}}return r},hooks:{all:{},add:function(e,t){var n=S.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=S.hooks.all[e];if(n&&n.length)for(var a=0,r=void 0;r=n[a++];)r(t)}}},s=S.Token=function(e,t,n){this.type=e,this.content=t,this.alias=n};if(s.stringify=function(t,n,e){if("string"==typeof t)return t;if("Array"===S.util.type(t))return t.map(function(e){return s.stringify(e,n,t)}).join("");var a={type:t.type,content:s.stringify(t.content,n,e),tag:"span",classes:["token",t.type],attributes:{},language:n,parent:e};if("comment"===a.type&&(a.attributes.spellcheck="true"),t.alias){var r="Array"===S.util.type(t.alias)?t.alias:[t.alias];Array.prototype.push.apply(a.classes,r)}S.hooks.run("wrap",a);var i="";for(var o in a.attributes)i+=(i?" ":"")+o+'="'+(a.attributes[o]||"")+'"';return"<"+a.tag+' class="'+a.classes.join(" ")+'" '+i+">"+a.content+"</"+a.tag+">"},!g.document)return g.addEventListener&&g.addEventListener("message",function(e){var t=JSON.parse(e.data),n=t.language,a=t.code,r=t.immediateClose;g.postMessage(S.highlight(a,S.languages[n],n)),r&&g.close()},!1),g.Prism}();void 0!==n&&(n.Prism=i),i.languages.markup={comment:/<!--[\w\W]*?-->/,prolog:/<\?[\w\W]+?\?>/,doctype:/<!DOCTYPE[\w\W]+?>/,cdata:/<!\[CDATA\[[\w\W]*?]]>/i,tag:{pattern:/<\/?[^\s>\/=.]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\\1|\\?(?!\1)[\w\W])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:('|")[\w\W]*?(\1)|[^\s>]+)/i,inside:{punctuation:/[=>"']/}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},i.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&amp;/,"&"))}),i.languages.xml=i.languages.markup,i.languages.html=i.languages.markup,i.languages.mathml=i.languages.markup,i.languages.svg=i.languages.markup,i.languages.css={comment:/\/\*[\w\W]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^\{\}\s][^\{\};]*?(?=\s*\{)/,string:/("|')(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1/,property:/(\b|\B)[\w-]+(?=\s*:)/i,important:/\B!important\b/i,"function":/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},i.languages.css.atrule.inside.rest=i.util.clone(i.languages.css),i.languages.markup&&(i.languages.insertBefore("markup","tag",{style:{pattern:/<style[\w\W]*?>[\w\W]*?<\/style>/i,inside:{tag:{pattern:/<style[\w\W]*?>|<\/style>/i,inside:i.languages.markup.tag.inside},rest:i.languages.css},alias:"language-css"}}),i.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|').*?\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:i.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:i.languages.css}},alias:"language-css"}},i.languages.markup.tag)),i.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\w\W]*?\*\//,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0}],string:/(["'])(\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,"class-name":{pattern:/((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/i,lookbehind:!0,inside:{punctuation:/(\.|\\)/}},keyword:/\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,"boolean":/\b(true|false)\b/,"function":/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},i.languages.javascript=i.languages.extend("clike",{keyword:/\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/,number:/\b-?(0x[\dA-Fa-f]+|0b[01]+|0o[0-7]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|Infinity)\b/,"function":/[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*(?=\()/i}),i.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\\\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0}}),i.languages.insertBefore("javascript","class-name",{"template-string":{pattern:/`(?:\\`|\\?[^`])*`/,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:i.languages.javascript}},string:/[\s\S]+/}}}),i.languages.markup&&i.languages.insertBefore("markup","tag",{script:{pattern:/<script[\w\W]*?>[\w\W]*?<\/script>/i,inside:{tag:{pattern:/<script[\w\W]*?>|<\/script>/i,inside:i.languages.markup.tag.inside},rest:i.languages.javascript},alias:"language-javascript"}}),i.languages.js=i.languages.javascript,i.languages.c=i.languages.extend("clike",{keyword:/\b(asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\b/,operator:/\-[>-]?|\+\+?|!=?|<<?=?|>>?=?|==?|&&?|\|?\||[~^%?*\/]/,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)[ful]*\b/i}),i.languages.insertBefore("c","string",{macro:{pattern:/(^\s*)#\s*[a-z]+([^\r\n\\]|\\.|\\(?:\r\n?|\n))*/im,lookbehind:!0,alias:"property",inside:{string:{pattern:/(#\s*include\s*)(<.+?>|("|')(\\?.)+?\3)/,lookbehind:!0}}}}),delete i.languages.c["class-name"],delete i.languages.c["boolean"],i.languages.csharp=i.languages.extend("clike",{keyword:/\b(abstract|as|async|await|base|bool|break|byte|case|catch|char|checked|class|const|continue|decimal|default|delegate|do|double|else|enum|event|explicit|extern|false|finally|fixed|float|for|foreach|goto|if|implicit|in|int|interface|internal|is|lock|long|namespace|new|null|object|operator|out|override|params|private|protected|public|readonly|ref|return|sbyte|sealed|short|sizeof|stackalloc|static|string|struct|switch|this|throw|true|try|typeof|uint|ulong|unchecked|unsafe|ushort|using|virtual|void|volatile|while|add|alias|ascending|async|await|descending|dynamic|from|get|global|group|into|join|let|orderby|partial|remove|select|set|value|var|where|yield)\b/,string:[/@("|')(\1\1|\\\1|\\?(?!\1)[\s\S])*\1/,/("|')(\\?.)*?\1/],number:/\b-?(0x[\da-f]+|\d*\.?\d+)\b/i}),i.languages.insertBefore("csharp","keyword",{preprocessor:{pattern:/(^\s*)#.*/m,lookbehind:!0}}),i.languages.cpp=i.languages.extend("c",{keyword:/\b(alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|class|compl|const|constexpr|const_cast|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|float|for|friend|goto|if|inline|int|long|mutable|namespace|new|noexcept|nullptr|operator|private|protected|public|register|reinterpret_cast|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,"boolean":/\b(true|false)\b/,operator:/[-+]{1,2}|!=?|<{1,2}=?|>{1,2}=?|\->|:{1,2}|={1,2}|\^|~|%|&{1,2}|\|?\||\?|\*|\/|\b(and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/}),i.languages.insertBefore("cpp","keyword",{"class-name":{pattern:/(class\s+)[a-z0-9_]+/i,lookbehind:!0}}),i.languages.java=i.languages.extend("clike",{keyword:/\b(abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while)\b/,number:/\b0b[01]+\b|\b0x[\da-f]*\.?[\da-fp\-]+\b|\b\d*\.?\d+(?:e[+-]?\d+)?[df]?\b/i,operator:{pattern:/(^|[^.])(?:\+[+=]?|-[-=]?|!=?|<<?=?|>>?>?=?|==?|&[&=]?|\|[|=]?|\*=?|\/=?|%=?|\^=?|[?:~])/m,lookbehind:!0}}),i.languages.php=i.languages.extend("clike",{keyword:/\b(and|or|xor|array|as|break|case|cfunction|class|const|continue|declare|default|die|do|else|elseif|enddeclare|endfor|endforeach|endif|endswitch|endwhile|extends|for|foreach|function|include|include_once|global|if|new|return|static|switch|use|require|require_once|var|while|abstract|interface|public|implements|private|protected|parent|throw|null|echo|print|trait|namespace|final|yield|goto|instanceof|finally|try|catch)\b/i,constant:/\b[A-Z0-9_]{2,}\b/,comment:{pattern:/(^|[^\\])(?:\/\*[\w\W]*?\*\/|\/\/.*)/,lookbehind:!0}}),i.languages.insertBefore("php","class-name",{"shell-comment":{pattern:/(^|[^\\])#.*/,lookbehind:!0,alias:"comment"}}),i.languages.insertBefore("php","keyword",{delimiter:/\?>|<\?(?:php)?/i,variable:/\$\w+\b/i,"package":{pattern:/(\\|namespace\s+|use\s+)[\w\\]+/,lookbehind:!0,inside:{punctuation:/\\/}}}),i.languages.insertBefore("php","operator",{property:{pattern:/(->)[\w]+/,lookbehind:!0}}),i.languages.markup&&(i.hooks.add("before-highlight",function(t){"php"===t.language&&(t.tokenStack=[],t.backupCode=t.code,t.code=t.code.replace(/(?:<\?php|<\?)[\w\W]*?(?:\?>)/gi,function(e){return t.tokenStack.push(e),"{{{PHP"+t.tokenStack.length+"}}}"}))}),i.hooks.add("before-insert",function(e){"php"===e.language&&(e.code=e.backupCode,delete e.backupCode)}),i.hooks.add("after-highlight",function(e){if("php"===e.language){for(var t=0,n=void 0;n=e.tokenStack[t];t++)e.highlightedCode=e.highlightedCode.replace("{{{PHP"+(t+1)+"}}}",i.highlight(n,e.grammar,"php").replace(/\$/g,"$$$$"));e.element.innerHTML=e.highlightedCode}}),i.hooks.add("wrap",function(e){"php"===e.language&&"markup"===e.type&&(e.content=e.content.replace(/(\{\{\{PHP[0-9]+\}\}\})/g,'<span class="token php">$1</span>'))}),i.languages.insertBefore("php","comment",{markup:{pattern:/<[^?]\/?(.*?)>/,inside:i.languages.markup},php:/\{\{\{PHP[0-9]+\}\}\}/})),i.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0},string:/"""[\s\S]+?"""|'''[\s\S]+?'''|("|')(?:\\?.)*?\1/,"function":{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_][a-zA-Z0-9_]*(?=\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)[a-z0-9_]+/i,lookbehind:!0},keyword:/\b(?:as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|pass|print|raise|return|try|while|with|yield)\b/,"boolean":/\b(?:True|False)\b/,number:/\b-?(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*\.?\d*|\.\d+)(?:e[+-]?\d+)?j?\b/i,operator:/[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]|\b(?:or|and|not)\b/,punctuation:/[{}[\];(),.:]/},function(e){e.languages.ruby=e.languages.extend("clike",{comment:/#(?!\{[^\r\n]*?\}).*/,keyword:/\b(alias|and|BEGIN|begin|break|case|class|def|define_method|defined|do|each|else|elsif|END|end|ensure|false|for|if|in|module|new|next|nil|not|or|raise|redo|require|rescue|retry|return|self|super|then|throw|true|undef|unless|until|when|while|yield)\b/});var t={pattern:/#\{[^}]+\}/,inside:{delimiter:{pattern:/^#\{|\}$/,alias:"tag"},rest:e.util.clone(e.languages.ruby)}};e.languages.insertBefore("ruby","keyword",{regex:[{pattern:/%r([^a-zA-Z0-9\s\{\(\[<])(?:[^\\]|\\[\s\S])*?\1[gim]{0,3}/,inside:{interpolation:t}},{pattern:/%r\((?:[^()\\]|\\[\s\S])*\)[gim]{0,3}/,inside:{interpolation:t}},{pattern:/%r\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}[gim]{0,3}/,inside:{interpolation:t}},{pattern:/%r\[(?:[^\[\]\\]|\\[\s\S])*\][gim]{0,3}/,inside:{interpolation:t}},{pattern:/%r<(?:[^<>\\]|\\[\s\S])*>[gim]{0,3}/,inside:{interpolation:t}},{pattern:/(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\r\n])+\/[gim]{0,3}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0}],variable:/[@$]+[a-zA-Z_][a-zA-Z_0-9]*(?:[?!]|\b)/,symbol:/:[a-zA-Z_][a-zA-Z_0-9]*(?:[?!]|\b)/}),e.languages.insertBefore("ruby","number",{builtin:/\b(Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Stat|File|Fixnum|Fload|Hash|Integer|IO|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|String|Struct|TMS|Symbol|ThreadGroup|Thread|Time|TrueClass)\b/,constant:/\b[A-Z][a-zA-Z_0-9]*(?:[?!]|\b)/}),e.languages.ruby.string=[{pattern:/%[qQiIwWxs]?([^a-zA-Z0-9\s\{\(\[<])(?:[^\\]|\\[\s\S])*?\1/,inside:{interpolation:t}},{pattern:/%[qQiIwWxs]?\((?:[^()\\]|\\[\s\S])*\)/,inside:{interpolation:t}},{pattern:/%[qQiIwWxs]?\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}/,inside:{interpolation:t}},{pattern:/%[qQiIwWxs]?\[(?:[^\[\]\\]|\\[\s\S])*\]/,inside:{interpolation:t}},{pattern:/%[qQiIwWxs]?<(?:[^<>\\]|\\[\s\S])*>/,inside:{interpolation:t}},{pattern:/("|')(#\{[^}]+\}|\\(?:\r?\n|\r)|\\?.)*?\1/,inside:{interpolation:t}}]}(i);function a(){}function o(e){return function(){return e}}function s(){return f}var l,u={isCodeSample:function B(e){return e&&"PRE"===e.nodeName&&-1!==e.className.indexOf("language-")},trimArg:function M(n){return function(e,t){return n(t)}}},d=o(!1),p=o(!0),f=(l={fold:function(e,t){return e()},is:d,isSome:d,isNone:p,getOr:b,getOrThunk:m,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:o(null),getOrUndefined:o(undefined),or:b,orThunk:m,map:s,each:a,bind:s,exists:d,forall:p,filter:s,equals:h,equals_:h,toArray:function(){return[]},toString:o("none()")},Object.freeze&&Object.freeze(l),l);function h(e){return e.isNone()}function m(e){return e()}function b(e){return e}function y(e){var t=e.selection?e.selection.getNode():null;return u.isCodeSample(t)?w.some(t):w.none()}var v,k=function(n){function e(){return r}function t(e){return e(n)}var a=o(n),r={fold:function(e,t){return t(n)},is:function(e){return n===e},isSome:p,isNone:d,getOr:a,getOrThunk:a,getOrDie:a,getOrNull:a,getOrUndefined:a,or:e,orThunk:e,map:function(e){return k(e(n))},each:function(e){e(n)},bind:t,exists:t,forall:t,filter:function(e){return e(n)?r:f},toArray:function(){return[n]},toString:function(){return"some("+n+")"},equals:function(e){return e.is(n)},equals_:function(e,t){return e.fold(d,function(e){return t(n,e)})}};return r},w={some:k,none:s,from:function(e){return null===e||e===undefined?f:k(e)}},x=y,S=function(t,n,a){t.undoManager.transact(function(){var e=y(t);return a=r.DOM.encode(a),e.fold(function(){t.insertContent('<pre id="__new" class="language-'+n+'">'+a+"</pre>"),t.selection.select(t.$("#__new").removeAttr("id")[0])},function(e){t.dom.setAttrib(e,"class","language-"+n),e.innerHTML=a,i.highlightElement(e),t.selection.select(e)})})},A=function(e){return y(e).fold(function(){return""},function(e){return e.textContent})},C=function(e){return e.settings.codesample_languages},_=function(e){var t=C(e);return t||[{text:"HTML/XML",value:"markup"},{text:"JavaScript",value:"javascript"},{text:"CSS",value:"css"},{text:"PHP",value:"php"},{text:"Ruby",value:"ruby"},{text:"Python",value:"python"},{text:"Java",value:"java"},{text:"C",value:"c"},{text:"C#",value:"csharp"},{text:"C++",value:"cpp"}]},N=function(e,n){return x(e).fold(function(){return n},function(e){var t=e.className.match(/language-(\w+)/);return t?t[1]:n})},O=(v="function",function(e){return function(e){if(null===e)return"null";var t=typeof e;return"object"==t&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"==t&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":t}(e)===v}),z=Array.prototype.slice,P=(O(Array.from)&&Array.from,function(n){var e=_(n),t=function(e){return 0===e.length?w.none():w.some(e[0])}(e).fold(function(){return""},function(e){return e.value}),a=N(n,t),r=A(n);n.windowManager.open({title:"Insert/Edit Code Sample",size:"large",body:{type:"panel",items:[{type:"selectbox",name:"language",label:"Language",items:e},{type:"textarea",name:"code",label:"Code view"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:{language:a,code:r},onSubmit:function(e){var t=e.getData();S(n,t.language,t.code),e.close()}})}),W=function(t){t.addCommand("codesample",function(){var e=t.selection.getNode();t.selection.isCollapsed()||u.isCodeSample(e)?P(t):t.formatter.toggle("code")})},j=function(n){var r=n.$;n.on("PreProcess",function(e){r("pre[contenteditable=false]",e.node).filter(u.trimArg(u.isCodeSample)).each(function(e,t){var n=r(t),a=t.textContent;n.attr("class",r.trim(n.attr("class"))),n.removeAttr("contentEditable"),n.empty().append(r("<code></code>").each(function(){this.textContent=a}))})}),n.on("SetContent",function(){var e=r("pre").filter(u.trimArg(u.isCodeSample)).filter(function(e,t){return"false"!==t.contentEditable});e.length&&n.undoManager.transact(function(){e.each(function(e,t){r(t).find("br").each(function(e,t){t.parentNode.replaceChild(n.getDoc().createTextNode("\n"),t)}),t.contentEditable="false",t.innerHTML=n.dom.encode(t.textContent),i.highlightElement(t),t.className=r.trim(t.className)})})})},T=function(n){n.ui.registry.addToggleButton("codesample",{icon:"code-sample",tooltip:"Insert/edit code sample",onAction:function(){return P(n)},onSetup:function(e){function t(){e.setActive(function(e){var t=e.selection.getStart();return e.dom.is(t,"pre.language-markup")}(n))}return n.on("NodeChange",t),function(){return n.off("NodeChange",t)}}}),n.ui.registry.addMenuItem("codesample",{text:"Code sample...",icon:"code-sample",onAction:function(){return P(n)}})};!function F(){e.add("codesample",function(t){j(t),T(t),W(t),t.on("dblclick",function(e){u.isCodeSample(e.target)&&P(t)})})}()}(window);
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/plugins/colorpicker/plugin.min.js b/app/static/vendors/tinymce/js/tinymce/plugins/colorpicker/plugin.min.js
deleted file mode 100644 (file)
index e11153c..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.3 (2019-12-04)
- */
-!function(o){"use strict";var i=tinymce.util.Tools.resolve("tinymce.PluginManager");!function n(){i.add("colorpicker",function(){o.console.warn("Color picker plugin is now built in to the core editor, please remove it from your editor configuration")})}()}(window);
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/plugins/contextmenu/plugin.min.js b/app/static/vendors/tinymce/js/tinymce/plugins/contextmenu/plugin.min.js
deleted file mode 100644 (file)
index 5443e5c..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.3 (2019-12-04)
- */
-!function(n){"use strict";var o=tinymce.util.Tools.resolve("tinymce.PluginManager");!function e(){o.add("contextmenu",function(){n.console.warn("Context menu plugin is now built in to the core editor, please remove it from your editor configuration")})}()}(window);
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/plugins/directionality/plugin.min.js b/app/static/vendors/tinymce/js/tinymce/plugins/directionality/plugin.min.js
deleted file mode 100644 (file)
index 513de87..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.3 (2019-12-04)
- */
-!function(i){"use strict";function n(){}function u(n){return function(){return n}}function t(){return a}var e,r=tinymce.util.Tools.resolve("tinymce.PluginManager"),c=tinymce.util.Tools.resolve("tinymce.util.Tools"),o=function(n,t){var e,r=n.dom,o=n.selection.getSelectedBlocks();o.length&&(e=r.getAttrib(o[0],"dir"),c.each(o,function(n){r.getParent(n.parentNode,'*[dir="'+t+'"]',r.getRoot())||r.setAttrib(n,"dir",e!==t?t:null)}),n.nodeChanged())},d=function(n){n.addCommand("mceDirectionLTR",function(){o(n,"ltr")}),n.addCommand("mceDirectionRTL",function(){o(n,"rtl")})},f=u(!1),l=u(!0),a=(e={fold:function(n,t){return n()},is:f,isSome:f,isNone:l,getOr:s,getOrThunk:N,getOrDie:function(n){throw new Error(n||"error: getOrDie called on none.")},getOrNull:u(null),getOrUndefined:u(undefined),or:s,orThunk:N,map:t,each:n,bind:t,exists:f,forall:l,filter:t,equals:m,equals_:m,toArray:function(){return[]},toString:u("none()")},Object.freeze&&Object.freeze(e),e);function m(n){return n.isNone()}function N(n){return n()}function s(n){return n}function g(n,t){var e=n.dom(),r=i.window.getComputedStyle(e).getPropertyValue(t),o=""!==r||function(n){var t=A(n)?n.dom().parentNode:n.dom();return t!==undefined&&null!==t&&t.ownerDocument.body.contains(t)}(n)?r:w(e,t);return null===o?undefined:o}function T(t,r){return function(e){function n(n){var t=p.fromDom(n.element);e.setActive(function(n){return"rtl"===g(n,"direction")?"rtl":"ltr"}(t)===r)}return t.on("NodeChange",n),function(){return t.off("NodeChange",n)}}}var E,O,y=function(e){function n(){return o}function t(n){return n(e)}var r=u(e),o={fold:function(n,t){return t(e)},is:function(n){return e===n},isSome:l,isNone:f,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:n,orThunk:n,map:function(n){return y(n(e))},each:function(n){n(e)},bind:t,exists:t,forall:t,filter:function(n){return n(e)?o:a},toArray:function(){return[e]},toString:function(){return"some("+e+")"},equals:function(n){return n.is(e)},equals_:function(n,t){return n.fold(f,function(n){return t(e,n)})}};return o},D=function(n){return null===n||n===undefined?a:y(n)},h=function(n){if(null===n||n===undefined)throw new Error("Node cannot be null or undefined");return{dom:u(n)}},p={fromHtml:function(n,t){var e=(t||i.document).createElement("div");if(e.innerHTML=n,!e.hasChildNodes()||1<e.childNodes.length)throw i.console.error("HTML does not have a single root node",n),new Error("HTML must have a single root node");return h(e.childNodes[0])},fromTag:function(n,t){var e=(t||i.document).createElement(n);return h(e)},fromText:function(n,t){var e=(t||i.document).createTextNode(n);return h(e)},fromDom:h,fromPoint:function(n,t,e){var r=n.dom();return D(r.elementFromPoint(t,e)).map(h)}},_=(E="function",function(n){return function(n){if(null===n)return"null";var t=typeof n;return"object"==t&&(Array.prototype.isPrototypeOf(n)||n.constructor&&"Array"===n.constructor.name)?"array":"object"==t&&(String.prototype.isPrototypeOf(n)||n.constructor&&"String"===n.constructor.name)?"string":t}(n)===E}),v=Array.prototype.slice,C=(_(Array.from)&&Array.from,i.Node.ATTRIBUTE_NODE,i.Node.CDATA_SECTION_NODE,i.Node.COMMENT_NODE,i.Node.DOCUMENT_NODE,i.Node.DOCUMENT_TYPE_NODE,i.Node.DOCUMENT_FRAGMENT_NODE,i.Node.ELEMENT_NODE,i.Node.TEXT_NODE),A=(i.Node.PROCESSING_INSTRUCTION_NODE,i.Node.ENTITY_REFERENCE_NODE,i.Node.ENTITY_NODE,i.Node.NOTATION_NODE,"undefined"!=typeof i.window?i.window:Function("return this;")(),O=C,function(n){return function(n){return n.dom().nodeType}(n)===O}),w=function(n,t){return function(n){return n.style!==undefined&&_(n.style.getPropertyValue)}(n)?n.style.getPropertyValue(t):""},S=function(n){n.ui.registry.addToggleButton("ltr",{tooltip:"Left to right",icon:"ltr",onAction:function(){return n.execCommand("mceDirectionLTR")},onSetup:T(n,"ltr")}),n.ui.registry.addToggleButton("rtl",{tooltip:"Right to left",icon:"rtl",onAction:function(){return n.execCommand("mceDirectionRTL")},onSetup:T(n,"rtl")})};!function R(){r.add("directionality",function(n){d(n),S(n)})}()}(window);
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/plugins/emoticons/js/emojis.js b/app/static/vendors/tinymce/js/tinymce/plugins/emoticons/js/emojis.js
deleted file mode 100644 (file)
index 5f8c249..0000000
+++ /dev/null
@@ -1,9015 +0,0 @@
-// NOTE: Source: npm package: emojilib, file:emojis.json
-window.tinymce.Resource.add("tinymce.plugins.emoticons", {
-  grinning: {
-    keywords: [ "face", "smile", "happy", "joy", ":D", "grin" ],
-    "char": "\ud83d\ude00",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  grimacing: {
-    keywords: [ "face", "grimace", "teeth" ],
-    "char": "\ud83d\ude2c",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  grin: {
-    keywords: [ "face", "happy", "smile", "joy", "kawaii" ],
-    "char": "\ud83d\ude01",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  joy: {
-    keywords: [ "face", "cry", "tears", "weep", "happy", "happytears", "haha" ],
-    "char": "\ud83d\ude02",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  rofl: {
-    keywords: [ "face", "rolling", "floor", "laughing", "lol", "haha" ],
-    "char": "\ud83e\udd23",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  smiley: {
-    keywords: [ "face", "happy", "joy", "haha", ":D", ":)", "smile", "funny" ],
-    "char": "\ud83d\ude03",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  smile: {
-    keywords: [ "face", "happy", "joy", "funny", "haha", "laugh", "like", ":D", ":)" ],
-    "char": "\ud83d\ude04",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  sweat_smile: {
-    keywords: [ "face", "hot", "happy", "laugh", "sweat", "smile", "relief" ],
-    "char": "\ud83d\ude05",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  laughing: {
-    keywords: [ "happy", "joy", "lol", "satisfied", "haha", "face", "glad", "XD", "laugh" ],
-    "char": "\ud83d\ude06",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  innocent: {
-    keywords: [ "face", "angel", "heaven", "halo" ],
-    "char": "\ud83d\ude07",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  wink: {
-    keywords: [ "face", "happy", "mischievous", "secret", ";)", "smile", "eye" ],
-    "char": "\ud83d\ude09",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  blush: {
-    keywords: [ "face", "smile", "happy", "flushed", "crush", "embarrassed", "shy", "joy" ],
-    "char": "\ud83d\ude0a",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  slightly_smiling_face: {
-    keywords: [ "face", "smile" ],
-    "char": "\ud83d\ude42",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  upside_down_face: {
-    keywords: [ "face", "flipped", "silly", "smile" ],
-    "char": "\ud83d\ude43",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  relaxed: {
-    keywords: [ "face", "blush", "massage", "happiness" ],
-    "char": "\u263a\ufe0f",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  yum: {
-    keywords: [ "happy", "joy", "tongue", "smile", "face", "silly", "yummy", "nom", "delicious", "savouring" ],
-    "char": "\ud83d\ude0b",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  relieved: {
-    keywords: [ "face", "relaxed", "phew", "massage", "happiness" ],
-    "char": "\ud83d\ude0c",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  heart_eyes: {
-    keywords: [ "face", "love", "like", "affection", "valentines", "infatuation", "crush", "heart" ],
-    "char": "\ud83d\ude0d",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  kissing_heart: {
-    keywords: [ "face", "love", "like", "affection", "valentines", "infatuation", "kiss" ],
-    "char": "\ud83d\ude18",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  kissing: {
-    keywords: [ "love", "like", "face", "3", "valentines", "infatuation", "kiss" ],
-    "char": "\ud83d\ude17",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  kissing_smiling_eyes: {
-    keywords: [ "face", "affection", "valentines", "infatuation", "kiss" ],
-    "char": "\ud83d\ude19",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  kissing_closed_eyes: {
-    keywords: [ "face", "love", "like", "affection", "valentines", "infatuation", "kiss" ],
-    "char": "\ud83d\ude1a",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  stuck_out_tongue_winking_eye: {
-    keywords: [ "face", "prank", "childish", "playful", "mischievous", "smile", "wink", "tongue" ],
-    "char": "\ud83d\ude1c",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  zany: {
-    keywords: [ "face", "goofy", "crazy" ],
-    "char": "\ud83e\udd2a",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  raised_eyebrow: {
-    keywords: [ "face", "distrust", "scepticism", "disapproval", "disbelief", "surprise" ],
-    "char": "\ud83e\udd28",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  monocle: {
-    keywords: [ "face", "stuffy", "wealthy" ],
-    "char": "\ud83e\uddd0",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  stuck_out_tongue_closed_eyes: {
-    keywords: [ "face", "prank", "playful", "mischievous", "smile", "tongue" ],
-    "char": "\ud83d\ude1d",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  stuck_out_tongue: {
-    keywords: [ "face", "prank", "childish", "playful", "mischievous", "smile", "tongue" ],
-    "char": "\ud83d\ude1b",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  money_mouth_face: {
-    keywords: [ "face", "rich", "dollar", "money" ],
-    "char": "\ud83e\udd11",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  nerd_face: {
-    keywords: [ "face", "nerdy", "geek", "dork" ],
-    "char": "\ud83e\udd13",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  sunglasses: {
-    keywords: [ "face", "cool", "smile", "summer", "beach", "sunglass" ],
-    "char": "\ud83d\ude0e",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  star_struck: {
-    keywords: [ "face", "smile", "starry", "eyes", "grinning" ],
-    "char": "\ud83e\udd29",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  clown_face: {
-    keywords: [ "face" ],
-    "char": "\ud83e\udd21",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  cowboy_hat_face: {
-    keywords: [ "face", "cowgirl", "hat" ],
-    "char": "\ud83e\udd20",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  hugs: {
-    keywords: [ "face", "smile", "hug" ],
-    "char": "\ud83e\udd17",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  smirk: {
-    keywords: [ "face", "smile", "mean", "prank", "smug", "sarcasm" ],
-    "char": "\ud83d\ude0f",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  no_mouth: {
-    keywords: [ "face", "hellokitty" ],
-    "char": "\ud83d\ude36",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  neutral_face: {
-    keywords: [ "indifference", "meh", ":|", "neutral" ],
-    "char": "\ud83d\ude10",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  expressionless: {
-    keywords: [ "face", "indifferent", "-_-", "meh", "deadpan" ],
-    "char": "\ud83d\ude11",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  unamused: {
-    keywords: [ "indifference", "bored", "straight face", "serious", "sarcasm", "unimpressed", "skeptical", "dubious", "side_eye" ],
-    "char": "\ud83d\ude12",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  roll_eyes: {
-    keywords: [ "face", "eyeroll", "frustrated" ],
-    "char": "\ud83d\ude44",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  thinking: {
-    keywords: [ "face", "hmmm", "think", "consider" ],
-    "char": "\ud83e\udd14",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  lying_face: {
-    keywords: [ "face", "lie", "pinocchio" ],
-    "char": "\ud83e\udd25",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  hand_over_mouth: {
-    keywords: [ "face", "whoops", "shock", "surprise" ],
-    "char": "\ud83e\udd2d",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  shushing: {
-    keywords: [ "face", "quiet", "shhh" ],
-    "char": "\ud83e\udd2b",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  symbols_over_mouth: {
-    keywords: [ "face", "swearing", "cursing", "cussing", "profanity", "expletive" ],
-    "char": "\ud83e\udd2c",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  exploding_head: {
-    keywords: [ "face", "shocked", "mind", "blown" ],
-    "char": "\ud83e\udd2f",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  flushed: {
-    keywords: [ "face", "blush", "shy", "flattered" ],
-    "char": "\ud83d\ude33",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  disappointed: {
-    keywords: [ "face", "sad", "upset", "depressed", ":(" ],
-    "char": "\ud83d\ude1e",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  worried: {
-    keywords: [ "face", "concern", "nervous", ":(" ],
-    "char": "\ud83d\ude1f",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  angry: {
-    keywords: [ "mad", "face", "annoyed", "frustrated" ],
-    "char": "\ud83d\ude20",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  rage: {
-    keywords: [ "angry", "mad", "hate", "despise" ],
-    "char": "\ud83d\ude21",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  pensive: {
-    keywords: [ "face", "sad", "depressed", "upset" ],
-    "char": "\ud83d\ude14",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  confused: {
-    keywords: [ "face", "indifference", "huh", "weird", "hmmm", ":/" ],
-    "char": "\ud83d\ude15",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  slightly_frowning_face: {
-    keywords: [ "face", "frowning", "disappointed", "sad", "upset" ],
-    "char": "\ud83d\ude41",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  frowning_face: {
-    keywords: [ "face", "sad", "upset", "frown" ],
-    "char": "\u2639",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  persevere: {
-    keywords: [ "face", "sick", "no", "upset", "oops" ],
-    "char": "\ud83d\ude23",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  confounded: {
-    keywords: [ "face", "confused", "sick", "unwell", "oops", ":S" ],
-    "char": "\ud83d\ude16",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  tired_face: {
-    keywords: [ "sick", "whine", "upset", "frustrated" ],
-    "char": "\ud83d\ude2b",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  weary: {
-    keywords: [ "face", "tired", "sleepy", "sad", "frustrated", "upset" ],
-    "char": "\ud83d\ude29",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  triumph: {
-    keywords: [ "face", "gas", "phew", "proud", "pride" ],
-    "char": "\ud83d\ude24",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  open_mouth: {
-    keywords: [ "face", "surprise", "impressed", "wow", "whoa", ":O" ],
-    "char": "\ud83d\ude2e",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  scream: {
-    keywords: [ "face", "munch", "scared", "omg" ],
-    "char": "\ud83d\ude31",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  fearful: {
-    keywords: [ "face", "scared", "terrified", "nervous", "oops", "huh" ],
-    "char": "\ud83d\ude28",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  cold_sweat: {
-    keywords: [ "face", "nervous", "sweat" ],
-    "char": "\ud83d\ude30",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  hushed: {
-    keywords: [ "face", "woo", "shh" ],
-    "char": "\ud83d\ude2f",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  frowning: {
-    keywords: [ "face", "aw", "what" ],
-    "char": "\ud83d\ude26",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  anguished: {
-    keywords: [ "face", "stunned", "nervous" ],
-    "char": "\ud83d\ude27",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  cry: {
-    keywords: [ "face", "tears", "sad", "depressed", "upset", ":'(" ],
-    "char": "\ud83d\ude22",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  disappointed_relieved: {
-    keywords: [ "face", "phew", "sweat", "nervous" ],
-    "char": "\ud83d\ude25",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  drooling_face: {
-    keywords: [ "face" ],
-    "char": "\ud83e\udd24",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  sleepy: {
-    keywords: [ "face", "tired", "rest", "nap" ],
-    "char": "\ud83d\ude2a",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  sweat: {
-    keywords: [ "face", "hot", "sad", "tired", "exercise" ],
-    "char": "\ud83d\ude13",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  sob: {
-    keywords: [ "face", "cry", "tears", "sad", "upset", "depressed" ],
-    "char": "\ud83d\ude2d",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  dizzy_face: {
-    keywords: [ "spent", "unconscious", "xox", "dizzy" ],
-    "char": "\ud83d\ude35",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  astonished: {
-    keywords: [ "face", "xox", "surprised", "poisoned" ],
-    "char": "\ud83d\ude32",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  zipper_mouth_face: {
-    keywords: [ "face", "sealed", "zipper", "secret" ],
-    "char": "\ud83e\udd10",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  nauseated_face: {
-    keywords: [ "face", "vomit", "gross", "green", "sick", "throw up", "ill" ],
-    "char": "\ud83e\udd22",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  sneezing_face: {
-    keywords: [ "face", "gesundheit", "sneeze", "sick", "allergy" ],
-    "char": "\ud83e\udd27",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  vomiting: {
-    keywords: [ "face", "sick" ],
-    "char": "\ud83e\udd2e",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  mask: {
-    keywords: [ "face", "sick", "ill", "disease" ],
-    "char": "\ud83d\ude37",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  face_with_thermometer: {
-    keywords: [ "sick", "temperature", "thermometer", "cold", "fever" ],
-    "char": "\ud83e\udd12",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  face_with_head_bandage: {
-    keywords: [ "injured", "clumsy", "bandage", "hurt" ],
-    "char": "\ud83e\udd15",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  sleeping: {
-    keywords: [ "face", "tired", "sleepy", "night", "zzz" ],
-    "char": "\ud83d\ude34",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  zzz: {
-    keywords: [ "sleepy", "tired", "dream" ],
-    "char": "\ud83d\udca4",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  poop: {
-    keywords: [ "hankey", "shitface", "fail", "turd", "shit" ],
-    "char": "\ud83d\udca9",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  smiling_imp: {
-    keywords: [ "devil", "horns" ],
-    "char": "\ud83d\ude08",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  imp: {
-    keywords: [ "devil", "angry", "horns" ],
-    "char": "\ud83d\udc7f",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  japanese_ogre: {
-    keywords: [ "monster", "red", "mask", "halloween", "scary", "creepy", "devil", "demon", "japanese", "ogre" ],
-    "char": "\ud83d\udc79",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  japanese_goblin: {
-    keywords: [ "red", "evil", "mask", "monster", "scary", "creepy", "japanese", "goblin" ],
-    "char": "\ud83d\udc7a",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  skull: {
-    keywords: [ "dead", "skeleton", "creepy", "death" ],
-    "char": "\ud83d\udc80",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  ghost: {
-    keywords: [ "halloween", "spooky", "scary" ],
-    "char": "\ud83d\udc7b",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  alien: {
-    keywords: [ "UFO", "paul", "weird", "outer_space" ],
-    "char": "\ud83d\udc7d",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  robot: {
-    keywords: [ "computer", "machine", "bot" ],
-    "char": "\ud83e\udd16",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  smiley_cat: {
-    keywords: [ "animal", "cats", "happy", "smile" ],
-    "char": "\ud83d\ude3a",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  smile_cat: {
-    keywords: [ "animal", "cats", "smile" ],
-    "char": "\ud83d\ude38",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  joy_cat: {
-    keywords: [ "animal", "cats", "haha", "happy", "tears" ],
-    "char": "\ud83d\ude39",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  heart_eyes_cat: {
-    keywords: [ "animal", "love", "like", "affection", "cats", "valentines", "heart" ],
-    "char": "\ud83d\ude3b",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  smirk_cat: {
-    keywords: [ "animal", "cats", "smirk" ],
-    "char": "\ud83d\ude3c",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  kissing_cat: {
-    keywords: [ "animal", "cats", "kiss" ],
-    "char": "\ud83d\ude3d",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  scream_cat: {
-    keywords: [ "animal", "cats", "munch", "scared", "scream" ],
-    "char": "\ud83d\ude40",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  crying_cat_face: {
-    keywords: [ "animal", "tears", "weep", "sad", "cats", "upset", "cry" ],
-    "char": "\ud83d\ude3f",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  pouting_cat: {
-    keywords: [ "animal", "cats" ],
-    "char": "\ud83d\ude3e",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  palms_up: {
-    keywords: [ "hands", "gesture", "cupped", "prayer" ],
-    "char": "\ud83e\udd32",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  raised_hands: {
-    keywords: [ "gesture", "hooray", "yea", "celebration", "hands" ],
-    "char": "\ud83d\ude4c",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  clap: {
-    keywords: [ "hands", "praise", "applause", "congrats", "yay" ],
-    "char": "\ud83d\udc4f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  wave: {
-    keywords: [ "hands", "gesture", "goodbye", "solong", "farewell", "hello", "hi", "palm" ],
-    "char": "\ud83d\udc4b",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  call_me_hand: {
-    keywords: [ "hands", "gesture" ],
-    "char": "\ud83e\udd19",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  "+1": {
-    keywords: [ "thumbsup", "yes", "awesome", "good", "agree", "accept", "cool", "hand", "like" ],
-    "char": "\ud83d\udc4d",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  "-1": {
-    keywords: [ "thumbsdown", "no", "dislike", "hand" ],
-    "char": "\ud83d\udc4e",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  facepunch: {
-    keywords: [ "angry", "violence", "fist", "hit", "attack", "hand" ],
-    "char": "\ud83d\udc4a",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  fist: {
-    keywords: [ "fingers", "hand", "grasp" ],
-    "char": "\u270a",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  fist_left: {
-    keywords: [ "hand", "fistbump" ],
-    "char": "\ud83e\udd1b",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  fist_right: {
-    keywords: [ "hand", "fistbump" ],
-    "char": "\ud83e\udd1c",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  v: {
-    keywords: [ "fingers", "ohyeah", "hand", "peace", "victory", "two" ],
-    "char": "\u270c",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  ok_hand: {
-    keywords: [ "fingers", "limbs", "perfect", "ok", "okay" ],
-    "char": "\ud83d\udc4c",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  raised_hand: {
-    keywords: [ "fingers", "stop", "highfive", "palm", "ban" ],
-    "char": "\u270b",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  raised_back_of_hand: {
-    keywords: [ "fingers", "raised", "backhand" ],
-    "char": "\ud83e\udd1a",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  open_hands: {
-    keywords: [ "fingers", "butterfly", "hands", "open" ],
-    "char": "\ud83d\udc50",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  muscle: {
-    keywords: [ "arm", "flex", "hand", "summer", "strong", "biceps" ],
-    "char": "\ud83d\udcaa",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  pray: {
-    keywords: [ "please", "hope", "wish", "namaste", "highfive" ],
-    "char": "\ud83d\ude4f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  handshake: {
-    keywords: [ "agreement", "shake" ],
-    "char": "\ud83e\udd1d",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  point_up: {
-    keywords: [ "hand", "fingers", "direction", "up" ],
-    "char": "\u261d",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  point_up_2: {
-    keywords: [ "fingers", "hand", "direction", "up" ],
-    "char": "\ud83d\udc46",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  point_down: {
-    keywords: [ "fingers", "hand", "direction", "down" ],
-    "char": "\ud83d\udc47",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  point_left: {
-    keywords: [ "direction", "fingers", "hand", "left" ],
-    "char": "\ud83d\udc48",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  point_right: {
-    keywords: [ "fingers", "hand", "direction", "right" ],
-    "char": "\ud83d\udc49",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  fu: {
-    keywords: [ "hand", "fingers", "rude", "middle", "flipping" ],
-    "char": "\ud83d\udd95",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  raised_hand_with_fingers_splayed: {
-    keywords: [ "hand", "fingers", "palm" ],
-    "char": "\ud83d\udd90",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  love_you: {
-    keywords: [ "hand", "fingers", "gesture" ],
-    "char": "\ud83e\udd1f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  metal: {
-    keywords: [ "hand", "fingers", "evil_eye", "sign_of_horns", "rock_on" ],
-    "char": "\ud83e\udd18",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  crossed_fingers: {
-    keywords: [ "good", "lucky" ],
-    "char": "\ud83e\udd1e",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  vulcan_salute: {
-    keywords: [ "hand", "fingers", "spock", "star trek" ],
-    "char": "\ud83d\udd96",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  writing_hand: {
-    keywords: [ "lower_left_ballpoint_pen", "stationery", "write", "compose" ],
-    "char": "\u270d",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  selfie: {
-    keywords: [ "camera", "phone" ],
-    "char": "\ud83e\udd33",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  nail_care: {
-    keywords: [ "beauty", "manicure", "finger", "fashion", "nail" ],
-    "char": "\ud83d\udc85",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  lips: {
-    keywords: [ "mouth", "kiss" ],
-    "char": "\ud83d\udc44",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  tongue: {
-    keywords: [ "mouth", "playful" ],
-    "char": "\ud83d\udc45",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  ear: {
-    keywords: [ "face", "hear", "sound", "listen" ],
-    "char": "\ud83d\udc42",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  nose: {
-    keywords: [ "smell", "sniff" ],
-    "char": "\ud83d\udc43",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  eye: {
-    keywords: [ "face", "look", "see", "watch", "stare" ],
-    "char": "\ud83d\udc41",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  eyes: {
-    keywords: [ "look", "watch", "stalk", "peek", "see" ],
-    "char": "\ud83d\udc40",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  brain: {
-    keywords: [ "smart", "intelligent" ],
-    "char": "\ud83e\udde0",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  bust_in_silhouette: {
-    keywords: [ "user", "person", "human" ],
-    "char": "\ud83d\udc64",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  busts_in_silhouette: {
-    keywords: [ "user", "person", "human", "group", "team" ],
-    "char": "\ud83d\udc65",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  speaking_head: {
-    keywords: [ "user", "person", "human", "sing", "say", "talk" ],
-    "char": "\ud83d\udde3",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  baby: {
-    keywords: [ "child", "boy", "girl", "toddler" ],
-    "char": "\ud83d\udc76",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  child: {
-    keywords: [ "gender-neutral", "young" ],
-    "char": "\ud83e\uddd2",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  boy: {
-    keywords: [ "man", "male", "guy", "teenager" ],
-    "char": "\ud83d\udc66",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  girl: {
-    keywords: [ "female", "woman", "teenager" ],
-    "char": "\ud83d\udc67",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  adult: {
-    keywords: [ "gender-neutral", "person" ],
-    "char": "\ud83e\uddd1",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man: {
-    keywords: [ "mustache", "father", "dad", "guy", "classy", "sir", "moustache" ],
-    "char": "\ud83d\udc68",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman: {
-    keywords: [ "female", "girls", "lady" ],
-    "char": "\ud83d\udc69",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  blonde_woman: {
-    keywords: [ "woman", "female", "girl", "blonde", "person" ],
-    "char": "\ud83d\udc71\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  blonde_man: {
-    keywords: [ "man", "male", "boy", "blonde", "guy", "person" ],
-    "char": "\ud83d\udc71",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  bearded_person: {
-    keywords: [ "person", "bewhiskered" ],
-    "char": "\ud83e\uddd4",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  older_adult: {
-    keywords: [ "human", "elder", "senior", "gender-neutral" ],
-    "char": "\ud83e\uddd3",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  older_man: {
-    keywords: [ "human", "male", "men", "old", "elder", "senior" ],
-    "char": "\ud83d\udc74",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  older_woman: {
-    keywords: [ "human", "female", "women", "lady", "old", "elder", "senior" ],
-    "char": "\ud83d\udc75",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_with_gua_pi_mao: {
-    keywords: [ "male", "boy", "chinese" ],
-    "char": "\ud83d\udc72",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_with_headscarf: {
-    keywords: [ "female", "hijab", "mantilla", "tichel" ],
-    "char": "\ud83e\uddd5",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_with_turban: {
-    keywords: [ "female", "indian", "hinduism", "arabs", "woman" ],
-    "char": "\ud83d\udc73\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_with_turban: {
-    keywords: [ "male", "indian", "hinduism", "arabs" ],
-    "char": "\ud83d\udc73",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  policewoman: {
-    keywords: [ "woman", "police", "law", "legal", "enforcement", "arrest", "911", "female" ],
-    "char": "\ud83d\udc6e\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  policeman: {
-    keywords: [ "man", "police", "law", "legal", "enforcement", "arrest", "911" ],
-    "char": "\ud83d\udc6e",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  construction_worker_woman: {
-    keywords: [ "female", "human", "wip", "build", "construction", "worker", "labor", "woman" ],
-    "char": "\ud83d\udc77\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  construction_worker_man: {
-    keywords: [ "male", "human", "wip", "guy", "build", "construction", "worker", "labor" ],
-    "char": "\ud83d\udc77",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  guardswoman: {
-    keywords: [ "uk", "gb", "british", "female", "royal", "woman" ],
-    "char": "\ud83d\udc82\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  guardsman: {
-    keywords: [ "uk", "gb", "british", "male", "guy", "royal" ],
-    "char": "\ud83d\udc82",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  female_detective: {
-    keywords: [ "human", "spy", "detective", "female", "woman" ],
-    "char": "\ud83d\udd75\ufe0f\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  male_detective: {
-    keywords: [ "human", "spy", "detective" ],
-    "char": "\ud83d\udd75",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_health_worker: {
-    keywords: [ "doctor", "nurse", "therapist", "healthcare", "woman", "human" ],
-    "char": "\ud83d\udc69\u200d\u2695\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_health_worker: {
-    keywords: [ "doctor", "nurse", "therapist", "healthcare", "man", "human" ],
-    "char": "\ud83d\udc68\u200d\u2695\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_farmer: {
-    keywords: [ "rancher", "gardener", "woman", "human" ],
-    "char": "\ud83d\udc69\u200d\ud83c\udf3e",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_farmer: {
-    keywords: [ "rancher", "gardener", "man", "human" ],
-    "char": "\ud83d\udc68\u200d\ud83c\udf3e",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_cook: {
-    keywords: [ "chef", "woman", "human" ],
-    "char": "\ud83d\udc69\u200d\ud83c\udf73",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_cook: {
-    keywords: [ "chef", "man", "human" ],
-    "char": "\ud83d\udc68\u200d\ud83c\udf73",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_student: {
-    keywords: [ "graduate", "woman", "human" ],
-    "char": "\ud83d\udc69\u200d\ud83c\udf93",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_student: {
-    keywords: [ "graduate", "man", "human" ],
-    "char": "\ud83d\udc68\u200d\ud83c\udf93",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_singer: {
-    keywords: [ "rockstar", "entertainer", "woman", "human" ],
-    "char": "\ud83d\udc69\u200d\ud83c\udfa4",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_singer: {
-    keywords: [ "rockstar", "entertainer", "man", "human" ],
-    "char": "\ud83d\udc68\u200d\ud83c\udfa4",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_teacher: {
-    keywords: [ "instructor", "professor", "woman", "human" ],
-    "char": "\ud83d\udc69\u200d\ud83c\udfeb",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_teacher: {
-    keywords: [ "instructor", "professor", "man", "human" ],
-    "char": "\ud83d\udc68\u200d\ud83c\udfeb",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_factory_worker: {
-    keywords: [ "assembly", "industrial", "woman", "human" ],
-    "char": "\ud83d\udc69\u200d\ud83c\udfed",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_factory_worker: {
-    keywords: [ "assembly", "industrial", "man", "human" ],
-    "char": "\ud83d\udc68\u200d\ud83c\udfed",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_technologist: {
-    keywords: [ "coder", "developer", "engineer", "programmer", "software", "woman", "human", "laptop", "computer" ],
-    "char": "\ud83d\udc69\u200d\ud83d\udcbb",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_technologist: {
-    keywords: [ "coder", "developer", "engineer", "programmer", "software", "man", "human", "laptop", "computer" ],
-    "char": "\ud83d\udc68\u200d\ud83d\udcbb",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_office_worker: {
-    keywords: [ "business", "manager", "woman", "human" ],
-    "char": "\ud83d\udc69\u200d\ud83d\udcbc",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_office_worker: {
-    keywords: [ "business", "manager", "man", "human" ],
-    "char": "\ud83d\udc68\u200d\ud83d\udcbc",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_mechanic: {
-    keywords: [ "plumber", "woman", "human", "wrench" ],
-    "char": "\ud83d\udc69\u200d\ud83d\udd27",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_mechanic: {
-    keywords: [ "plumber", "man", "human", "wrench" ],
-    "char": "\ud83d\udc68\u200d\ud83d\udd27",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_scientist: {
-    keywords: [ "biologist", "chemist", "engineer", "physicist", "woman", "human" ],
-    "char": "\ud83d\udc69\u200d\ud83d\udd2c",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_scientist: {
-    keywords: [ "biologist", "chemist", "engineer", "physicist", "man", "human" ],
-    "char": "\ud83d\udc68\u200d\ud83d\udd2c",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_artist: {
-    keywords: [ "painter", "woman", "human" ],
-    "char": "\ud83d\udc69\u200d\ud83c\udfa8",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_artist: {
-    keywords: [ "painter", "man", "human" ],
-    "char": "\ud83d\udc68\u200d\ud83c\udfa8",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_firefighter: {
-    keywords: [ "fireman", "woman", "human" ],
-    "char": "\ud83d\udc69\u200d\ud83d\ude92",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_firefighter: {
-    keywords: [ "fireman", "man", "human" ],
-    "char": "\ud83d\udc68\u200d\ud83d\ude92",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_pilot: {
-    keywords: [ "aviator", "plane", "woman", "human" ],
-    "char": "\ud83d\udc69\u200d\u2708\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_pilot: {
-    keywords: [ "aviator", "plane", "man", "human" ],
-    "char": "\ud83d\udc68\u200d\u2708\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_astronaut: {
-    keywords: [ "space", "rocket", "woman", "human" ],
-    "char": "\ud83d\udc69\u200d\ud83d\ude80",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_astronaut: {
-    keywords: [ "space", "rocket", "man", "human" ],
-    "char": "\ud83d\udc68\u200d\ud83d\ude80",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_judge: {
-    keywords: [ "justice", "court", "woman", "human" ],
-    "char": "\ud83d\udc69\u200d\u2696\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_judge: {
-    keywords: [ "justice", "court", "man", "human" ],
-    "char": "\ud83d\udc68\u200d\u2696\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  mrs_claus: {
-    keywords: [ "woman", "female", "xmas", "mother christmas" ],
-    "char": "\ud83e\udd36",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  santa: {
-    keywords: [ "festival", "man", "male", "xmas", "father christmas" ],
-    "char": "\ud83c\udf85",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  sorceress: {
-    keywords: [ "woman", "female", "mage", "witch" ],
-    "char": "\ud83e\uddd9\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  wizard: {
-    keywords: [ "man", "male", "mage", "sorcerer" ],
-    "char": "\ud83e\uddd9\u200d\u2642\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_elf: {
-    keywords: [ "woman", "female" ],
-    "char": "\ud83e\udddd\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_elf: {
-    keywords: [ "man", "male" ],
-    "char": "\ud83e\udddd\u200d\u2642\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_vampire: {
-    keywords: [ "woman", "female" ],
-    "char": "\ud83e\udddb\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_vampire: {
-    keywords: [ "man", "male", "dracula" ],
-    "char": "\ud83e\udddb\u200d\u2642\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_zombie: {
-    keywords: [ "woman", "female", "undead", "walking dead" ],
-    "char": "\ud83e\udddf\u200d\u2640\ufe0f",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  man_zombie: {
-    keywords: [ "man", "male", "dracula", "undead", "walking dead" ],
-    "char": "\ud83e\udddf\u200d\u2642\ufe0f",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  woman_genie: {
-    keywords: [ "woman", "female" ],
-    "char": "\ud83e\uddde\u200d\u2640\ufe0f",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  man_genie: {
-    keywords: [ "man", "male" ],
-    "char": "\ud83e\uddde\u200d\u2642\ufe0f",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  mermaid: {
-    keywords: [ "woman", "female", "merwoman", "ariel" ],
-    "char": "\ud83e\udddc\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  merman: {
-    keywords: [ "man", "male", "triton" ],
-    "char": "\ud83e\udddc\u200d\u2642\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_fairy: {
-    keywords: [ "woman", "female" ],
-    "char": "\ud83e\uddda\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_fairy: {
-    keywords: [ "man", "male" ],
-    "char": "\ud83e\uddda\u200d\u2642\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  angel: {
-    keywords: [ "heaven", "wings", "halo" ],
-    "char": "\ud83d\udc7c",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  pregnant_woman: {
-    keywords: [ "baby" ],
-    "char": "\ud83e\udd30",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  breastfeeding: {
-    keywords: [ "nursing", "baby" ],
-    "char": "\ud83e\udd31",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  princess: {
-    keywords: [ "girl", "woman", "female", "blond", "crown", "royal", "queen" ],
-    "char": "\ud83d\udc78",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  prince: {
-    keywords: [ "boy", "man", "male", "crown", "royal", "king" ],
-    "char": "\ud83e\udd34",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  bride_with_veil: {
-    keywords: [ "couple", "marriage", "wedding", "woman", "bride" ],
-    "char": "\ud83d\udc70",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_in_tuxedo: {
-    keywords: [ "couple", "marriage", "wedding", "groom" ],
-    "char": "\ud83e\udd35",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  running_woman: {
-    keywords: [ "woman", "walking", "exercise", "race", "running", "female" ],
-    "char": "\ud83c\udfc3\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  running_man: {
-    keywords: [ "man", "walking", "exercise", "race", "running" ],
-    "char": "\ud83c\udfc3",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  walking_woman: {
-    keywords: [ "human", "feet", "steps", "woman", "female" ],
-    "char": "\ud83d\udeb6\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  walking_man: {
-    keywords: [ "human", "feet", "steps" ],
-    "char": "\ud83d\udeb6",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  dancer: {
-    keywords: [ "female", "girl", "woman", "fun" ],
-    "char": "\ud83d\udc83",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_dancing: {
-    keywords: [ "male", "boy", "fun", "dancer" ],
-    "char": "\ud83d\udd7a",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  dancing_women: {
-    keywords: [ "female", "bunny", "women", "girls" ],
-    "char": "\ud83d\udc6f",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  dancing_men: {
-    keywords: [ "male", "bunny", "men", "boys" ],
-    "char": "\ud83d\udc6f\u200d\u2642\ufe0f",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  couple: {
-    keywords: [ "pair", "people", "human", "love", "date", "dating", "like", "affection", "valentines", "marriage" ],
-    "char": "\ud83d\udc6b",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  two_men_holding_hands: {
-    keywords: [ "pair", "couple", "love", "like", "bromance", "friendship", "people", "human" ],
-    "char": "\ud83d\udc6c",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  two_women_holding_hands: {
-    keywords: [ "pair", "friendship", "couple", "love", "like", "female", "people", "human" ],
-    "char": "\ud83d\udc6d",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  bowing_woman: {
-    keywords: [ "woman", "female", "girl" ],
-    "char": "\ud83d\ude47\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  bowing_man: {
-    keywords: [ "man", "male", "boy" ],
-    "char": "\ud83d\ude47",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_facepalming: {
-    keywords: [ "man", "male", "boy", "disbelief" ],
-    "char": "\ud83e\udd26",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_facepalming: {
-    keywords: [ "woman", "female", "girl", "disbelief" ],
-    "char": "\ud83e\udd26\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_shrugging: {
-    keywords: [ "woman", "female", "girl", "confused", "indifferent", "doubt" ],
-    "char": "\ud83e\udd37",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_shrugging: {
-    keywords: [ "man", "male", "boy", "confused", "indifferent", "doubt" ],
-    "char": "\ud83e\udd37\u200d\u2642\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  tipping_hand_woman: {
-    keywords: [ "female", "girl", "woman", "human", "information" ],
-    "char": "\ud83d\udc81",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  tipping_hand_man: {
-    keywords: [ "male", "boy", "man", "human", "information" ],
-    "char": "\ud83d\udc81\u200d\u2642\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  no_good_woman: {
-    keywords: [ "female", "girl", "woman", "nope" ],
-    "char": "\ud83d\ude45",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  no_good_man: {
-    keywords: [ "male", "boy", "man", "nope" ],
-    "char": "\ud83d\ude45\u200d\u2642\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  ok_woman: {
-    keywords: [ "women", "girl", "female", "pink", "human", "woman" ],
-    "char": "\ud83d\ude46",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  ok_man: {
-    keywords: [ "men", "boy", "male", "blue", "human", "man" ],
-    "char": "\ud83d\ude46\u200d\u2642\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  raising_hand_woman: {
-    keywords: [ "female", "girl", "woman" ],
-    "char": "\ud83d\ude4b",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  raising_hand_man: {
-    keywords: [ "male", "boy", "man" ],
-    "char": "\ud83d\ude4b\u200d\u2642\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  pouting_woman: {
-    keywords: [ "female", "girl", "woman" ],
-    "char": "\ud83d\ude4e",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  pouting_man: {
-    keywords: [ "male", "boy", "man" ],
-    "char": "\ud83d\ude4e\u200d\u2642\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  frowning_woman: {
-    keywords: [ "female", "girl", "woman", "sad", "depressed", "discouraged", "unhappy" ],
-    "char": "\ud83d\ude4d",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  frowning_man: {
-    keywords: [ "male", "boy", "man", "sad", "depressed", "discouraged", "unhappy" ],
-    "char": "\ud83d\ude4d\u200d\u2642\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  haircut_woman: {
-    keywords: [ "female", "girl", "woman" ],
-    "char": "\ud83d\udc87",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  haircut_man: {
-    keywords: [ "male", "boy", "man" ],
-    "char": "\ud83d\udc87\u200d\u2642\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  massage_woman: {
-    keywords: [ "female", "girl", "woman", "head" ],
-    "char": "\ud83d\udc86",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  massage_man: {
-    keywords: [ "male", "boy", "man", "head" ],
-    "char": "\ud83d\udc86\u200d\u2642\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  woman_in_steamy_room: {
-    keywords: [ "female", "woman", "spa", "steamroom", "sauna" ],
-    "char": "\ud83e\uddd6\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  man_in_steamy_room: {
-    keywords: [ "male", "man", "spa", "steamroom", "sauna" ],
-    "char": "\ud83e\uddd6\u200d\u2642\ufe0f",
-    fitzpatrick_scale: true,
-    category: "people"
-  },
-  couple_with_heart_woman_man: {
-    keywords: [ "pair", "love", "like", "affection", "human", "dating", "valentines", "marriage" ],
-    "char": "\ud83d\udc91",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  couple_with_heart_woman_woman: {
-    keywords: [ "pair", "love", "like", "affection", "human", "dating", "valentines", "marriage" ],
-    "char": "\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc69",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  couple_with_heart_man_man: {
-    keywords: [ "pair", "love", "like", "affection", "human", "dating", "valentines", "marriage" ],
-    "char": "\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  couplekiss_man_woman: {
-    keywords: [ "pair", "valentines", "love", "like", "dating", "marriage" ],
-    "char": "\ud83d\udc8f",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  couplekiss_woman_woman: {
-    keywords: [ "pair", "valentines", "love", "like", "dating", "marriage" ],
-    "char": "\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  couplekiss_man_man: {
-    keywords: [ "pair", "valentines", "love", "like", "dating", "marriage" ],
-    "char": "\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_man_woman_boy: {
-    keywords: [ "home", "parents", "child", "mom", "dad", "father", "mother", "people", "human" ],
-    "char": "\ud83d\udc6a",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_man_woman_girl: {
-    keywords: [ "home", "parents", "people", "human", "child" ],
-    "char": "\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_man_woman_girl_boy: {
-    keywords: [ "home", "parents", "people", "human", "children" ],
-    "char": "\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_man_woman_boy_boy: {
-    keywords: [ "home", "parents", "people", "human", "children" ],
-    "char": "\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_man_woman_girl_girl: {
-    keywords: [ "home", "parents", "people", "human", "children" ],
-    "char": "\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_woman_woman_boy: {
-    keywords: [ "home", "parents", "people", "human", "children" ],
-    "char": "\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_woman_woman_girl: {
-    keywords: [ "home", "parents", "people", "human", "children" ],
-    "char": "\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_woman_woman_girl_boy: {
-    keywords: [ "home", "parents", "people", "human", "children" ],
-    "char": "\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_woman_woman_boy_boy: {
-    keywords: [ "home", "parents", "people", "human", "children" ],
-    "char": "\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_woman_woman_girl_girl: {
-    keywords: [ "home", "parents", "people", "human", "children" ],
-    "char": "\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_man_man_boy: {
-    keywords: [ "home", "parents", "people", "human", "children" ],
-    "char": "\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_man_man_girl: {
-    keywords: [ "home", "parents", "people", "human", "children" ],
-    "char": "\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_man_man_girl_boy: {
-    keywords: [ "home", "parents", "people", "human", "children" ],
-    "char": "\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_man_man_boy_boy: {
-    keywords: [ "home", "parents", "people", "human", "children" ],
-    "char": "\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_man_man_girl_girl: {
-    keywords: [ "home", "parents", "people", "human", "children" ],
-    "char": "\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_woman_boy: {
-    keywords: [ "home", "parent", "people", "human", "child" ],
-    "char": "\ud83d\udc69\u200d\ud83d\udc66",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_woman_girl: {
-    keywords: [ "home", "parent", "people", "human", "child" ],
-    "char": "\ud83d\udc69\u200d\ud83d\udc67",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_woman_girl_boy: {
-    keywords: [ "home", "parent", "people", "human", "children" ],
-    "char": "\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_woman_boy_boy: {
-    keywords: [ "home", "parent", "people", "human", "children" ],
-    "char": "\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_woman_girl_girl: {
-    keywords: [ "home", "parent", "people", "human", "children" ],
-    "char": "\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_man_boy: {
-    keywords: [ "home", "parent", "people", "human", "child" ],
-    "char": "\ud83d\udc68\u200d\ud83d\udc66",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_man_girl: {
-    keywords: [ "home", "parent", "people", "human", "child" ],
-    "char": "\ud83d\udc68\u200d\ud83d\udc67",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_man_girl_boy: {
-    keywords: [ "home", "parent", "people", "human", "children" ],
-    "char": "\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_man_boy_boy: {
-    keywords: [ "home", "parent", "people", "human", "children" ],
-    "char": "\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  family_man_girl_girl: {
-    keywords: [ "home", "parent", "people", "human", "children" ],
-    "char": "\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  coat: {
-    keywords: [ "jacket" ],
-    "char": "\ud83e\udde5",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  womans_clothes: {
-    keywords: [ "fashion", "shopping_bags", "female" ],
-    "char": "\ud83d\udc5a",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  tshirt: {
-    keywords: [ "fashion", "cloth", "casual", "shirt", "tee" ],
-    "char": "\ud83d\udc55",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  jeans: {
-    keywords: [ "fashion", "shopping" ],
-    "char": "\ud83d\udc56",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  necktie: {
-    keywords: [ "shirt", "suitup", "formal", "fashion", "cloth", "business" ],
-    "char": "\ud83d\udc54",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  dress: {
-    keywords: [ "clothes", "fashion", "shopping" ],
-    "char": "\ud83d\udc57",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  bikini: {
-    keywords: [ "swimming", "female", "woman", "girl", "fashion", "beach", "summer" ],
-    "char": "\ud83d\udc59",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  kimono: {
-    keywords: [ "dress", "fashion", "women", "female", "japanese" ],
-    "char": "\ud83d\udc58",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  lipstick: {
-    keywords: [ "female", "girl", "fashion", "woman" ],
-    "char": "\ud83d\udc84",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  kiss: {
-    keywords: [ "face", "lips", "love", "like", "affection", "valentines" ],
-    "char": "\ud83d\udc8b",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  footprints: {
-    keywords: [ "feet", "tracking", "walking", "beach" ],
-    "char": "\ud83d\udc63",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  high_heel: {
-    keywords: [ "fashion", "shoes", "female", "pumps", "stiletto" ],
-    "char": "\ud83d\udc60",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  sandal: {
-    keywords: [ "shoes", "fashion", "flip flops" ],
-    "char": "\ud83d\udc61",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  boot: {
-    keywords: [ "shoes", "fashion" ],
-    "char": "\ud83d\udc62",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  mans_shoe: {
-    keywords: [ "fashion", "male" ],
-    "char": "\ud83d\udc5e",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  athletic_shoe: {
-    keywords: [ "shoes", "sports", "sneakers" ],
-    "char": "\ud83d\udc5f",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  socks: {
-    keywords: [ "stockings", "clothes" ],
-    "char": "\ud83e\udde6",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  gloves: {
-    keywords: [ "hands", "winter", "clothes" ],
-    "char": "\ud83e\udde4",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  scarf: {
-    keywords: [ "neck", "winter", "clothes" ],
-    "char": "\ud83e\udde3",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  womans_hat: {
-    keywords: [ "fashion", "accessories", "female", "lady", "spring" ],
-    "char": "\ud83d\udc52",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  tophat: {
-    keywords: [ "magic", "gentleman", "classy", "circus" ],
-    "char": "\ud83c\udfa9",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  billed_hat: {
-    keywords: [ "cap", "baseball" ],
-    "char": "\ud83e\udde2",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  rescue_worker_helmet: {
-    keywords: [ "construction", "build" ],
-    "char": "\u26d1",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  mortar_board: {
-    keywords: [ "school", "college", "degree", "university", "graduation", "cap", "hat", "legal", "learn", "education" ],
-    "char": "\ud83c\udf93",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  crown: {
-    keywords: [ "king", "kod", "leader", "royalty", "lord" ],
-    "char": "\ud83d\udc51",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  school_satchel: {
-    keywords: [ "student", "education", "bag", "backpack" ],
-    "char": "\ud83c\udf92",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  pouch: {
-    keywords: [ "bag", "accessories", "shopping" ],
-    "char": "\ud83d\udc5d",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  purse: {
-    keywords: [ "fashion", "accessories", "money", "sales", "shopping" ],
-    "char": "\ud83d\udc5b",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  handbag: {
-    keywords: [ "fashion", "accessory", "accessories", "shopping" ],
-    "char": "\ud83d\udc5c",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  briefcase: {
-    keywords: [ "business", "documents", "work", "law", "legal", "job", "career" ],
-    "char": "\ud83d\udcbc",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  eyeglasses: {
-    keywords: [ "fashion", "accessories", "eyesight", "nerdy", "dork", "geek" ],
-    "char": "\ud83d\udc53",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  dark_sunglasses: {
-    keywords: [ "face", "cool", "accessories" ],
-    "char": "\ud83d\udd76",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  ring: {
-    keywords: [ "wedding", "propose", "marriage", "valentines", "diamond", "fashion", "jewelry", "gem", "engagement" ],
-    "char": "\ud83d\udc8d",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  closed_umbrella: {
-    keywords: [ "weather", "rain", "drizzle" ],
-    "char": "\ud83c\udf02",
-    fitzpatrick_scale: false,
-    category: "people"
-  },
-  dog: {
-    keywords: [ "animal", "friend", "nature", "woof", "puppy", "pet", "faithful" ],
-    "char": "\ud83d\udc36",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  cat: {
-    keywords: [ "animal", "meow", "nature", "pet", "kitten" ],
-    "char": "\ud83d\udc31",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  mouse: {
-    keywords: [ "animal", "nature", "cheese_wedge", "rodent" ],
-    "char": "\ud83d\udc2d",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  hamster: {
-    keywords: [ "animal", "nature" ],
-    "char": "\ud83d\udc39",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  rabbit: {
-    keywords: [ "animal", "nature", "pet", "spring", "magic", "bunny" ],
-    "char": "\ud83d\udc30",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  fox_face: {
-    keywords: [ "animal", "nature", "face" ],
-    "char": "\ud83e\udd8a",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  bear: {
-    keywords: [ "animal", "nature", "wild" ],
-    "char": "\ud83d\udc3b",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  panda_face: {
-    keywords: [ "animal", "nature", "panda" ],
-    "char": "\ud83d\udc3c",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  koala: {
-    keywords: [ "animal", "nature" ],
-    "char": "\ud83d\udc28",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  tiger: {
-    keywords: [ "animal", "cat", "danger", "wild", "nature", "roar" ],
-    "char": "\ud83d\udc2f",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  lion: {
-    keywords: [ "animal", "nature" ],
-    "char": "\ud83e\udd81",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  cow: {
-    keywords: [ "beef", "ox", "animal", "nature", "moo", "milk" ],
-    "char": "\ud83d\udc2e",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  pig: {
-    keywords: [ "animal", "oink", "nature" ],
-    "char": "\ud83d\udc37",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  pig_nose: {
-    keywords: [ "animal", "oink" ],
-    "char": "\ud83d\udc3d",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  frog: {
-    keywords: [ "animal", "nature", "croak", "toad" ],
-    "char": "\ud83d\udc38",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  squid: {
-    keywords: [ "animal", "nature", "ocean", "sea" ],
-    "char": "\ud83e\udd91",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  octopus: {
-    keywords: [ "animal", "creature", "ocean", "sea", "nature", "beach" ],
-    "char": "\ud83d\udc19",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  shrimp: {
-    keywords: [ "animal", "ocean", "nature", "seafood" ],
-    "char": "\ud83e\udd90",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  monkey_face: {
-    keywords: [ "animal", "nature", "circus" ],
-    "char": "\ud83d\udc35",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  gorilla: {
-    keywords: [ "animal", "nature", "circus" ],
-    "char": "\ud83e\udd8d",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  see_no_evil: {
-    keywords: [ "monkey", "animal", "nature", "haha" ],
-    "char": "\ud83d\ude48",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  hear_no_evil: {
-    keywords: [ "animal", "monkey", "nature" ],
-    "char": "\ud83d\ude49",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  speak_no_evil: {
-    keywords: [ "monkey", "animal", "nature", "omg" ],
-    "char": "\ud83d\ude4a",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  monkey: {
-    keywords: [ "animal", "nature", "banana", "circus" ],
-    "char": "\ud83d\udc12",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  chicken: {
-    keywords: [ "animal", "cluck", "nature", "bird" ],
-    "char": "\ud83d\udc14",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  penguin: {
-    keywords: [ "animal", "nature" ],
-    "char": "\ud83d\udc27",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  bird: {
-    keywords: [ "animal", "nature", "fly", "tweet", "spring" ],
-    "char": "\ud83d\udc26",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  baby_chick: {
-    keywords: [ "animal", "chicken", "bird" ],
-    "char": "\ud83d\udc24",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  hatching_chick: {
-    keywords: [ "animal", "chicken", "egg", "born", "baby", "bird" ],
-    "char": "\ud83d\udc23",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  hatched_chick: {
-    keywords: [ "animal", "chicken", "baby", "bird" ],
-    "char": "\ud83d\udc25",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  duck: {
-    keywords: [ "animal", "nature", "bird", "mallard" ],
-    "char": "\ud83e\udd86",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  eagle: {
-    keywords: [ "animal", "nature", "bird" ],
-    "char": "\ud83e\udd85",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  owl: {
-    keywords: [ "animal", "nature", "bird", "hoot" ],
-    "char": "\ud83e\udd89",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  bat: {
-    keywords: [ "animal", "nature", "blind", "vampire" ],
-    "char": "\ud83e\udd87",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  wolf: {
-    keywords: [ "animal", "nature", "wild" ],
-    "char": "\ud83d\udc3a",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  boar: {
-    keywords: [ "animal", "nature" ],
-    "char": "\ud83d\udc17",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  horse: {
-    keywords: [ "animal", "brown", "nature" ],
-    "char": "\ud83d\udc34",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  unicorn: {
-    keywords: [ "animal", "nature", "mystical" ],
-    "char": "\ud83e\udd84",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  honeybee: {
-    keywords: [ "animal", "insect", "nature", "bug", "spring", "honey" ],
-    "char": "\ud83d\udc1d",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  bug: {
-    keywords: [ "animal", "insect", "nature", "worm" ],
-    "char": "\ud83d\udc1b",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  butterfly: {
-    keywords: [ "animal", "insect", "nature", "caterpillar" ],
-    "char": "\ud83e\udd8b",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  snail: {
-    keywords: [ "slow", "animal", "shell" ],
-    "char": "\ud83d\udc0c",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  beetle: {
-    keywords: [ "animal", "insect", "nature", "ladybug" ],
-    "char": "\ud83d\udc1e",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  ant: {
-    keywords: [ "animal", "insect", "nature", "bug" ],
-    "char": "\ud83d\udc1c",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  grasshopper: {
-    keywords: [ "animal", "cricket", "chirp" ],
-    "char": "\ud83e\udd97",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  spider: {
-    keywords: [ "animal", "arachnid" ],
-    "char": "\ud83d\udd77",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  scorpion: {
-    keywords: [ "animal", "arachnid" ],
-    "char": "\ud83e\udd82",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  crab: {
-    keywords: [ "animal", "crustacean" ],
-    "char": "\ud83e\udd80",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  snake: {
-    keywords: [ "animal", "evil", "nature", "hiss", "python" ],
-    "char": "\ud83d\udc0d",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  lizard: {
-    keywords: [ "animal", "nature", "reptile" ],
-    "char": "\ud83e\udd8e",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  "t-rex": {
-    keywords: [ "animal", "nature", "dinosaur", "tyrannosaurus", "extinct" ],
-    "char": "\ud83e\udd96",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  sauropod: {
-    keywords: [ "animal", "nature", "dinosaur", "brachiosaurus", "brontosaurus", "diplodocus", "extinct" ],
-    "char": "\ud83e\udd95",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  turtle: {
-    keywords: [ "animal", "slow", "nature", "tortoise" ],
-    "char": "\ud83d\udc22",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  tropical_fish: {
-    keywords: [ "animal", "swim", "ocean", "beach", "nemo" ],
-    "char": "\ud83d\udc20",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  fish: {
-    keywords: [ "animal", "food", "nature" ],
-    "char": "\ud83d\udc1f",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  blowfish: {
-    keywords: [ "animal", "nature", "food", "sea", "ocean" ],
-    "char": "\ud83d\udc21",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  dolphin: {
-    keywords: [ "animal", "nature", "fish", "sea", "ocean", "flipper", "fins", "beach" ],
-    "char": "\ud83d\udc2c",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  shark: {
-    keywords: [ "animal", "nature", "fish", "sea", "ocean", "jaws", "fins", "beach" ],
-    "char": "\ud83e\udd88",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  whale: {
-    keywords: [ "animal", "nature", "sea", "ocean" ],
-    "char": "\ud83d\udc33",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  whale2: {
-    keywords: [ "animal", "nature", "sea", "ocean" ],
-    "char": "\ud83d\udc0b",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  crocodile: {
-    keywords: [ "animal", "nature", "reptile", "lizard", "alligator" ],
-    "char": "\ud83d\udc0a",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  leopard: {
-    keywords: [ "animal", "nature" ],
-    "char": "\ud83d\udc06",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  zebra: {
-    keywords: [ "animal", "nature", "stripes", "safari" ],
-    "char": "\ud83e\udd93",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  tiger2: {
-    keywords: [ "animal", "nature", "roar" ],
-    "char": "\ud83d\udc05",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  water_buffalo: {
-    keywords: [ "animal", "nature", "ox", "cow" ],
-    "char": "\ud83d\udc03",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  ox: {
-    keywords: [ "animal", "cow", "beef" ],
-    "char": "\ud83d\udc02",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  cow2: {
-    keywords: [ "beef", "ox", "animal", "nature", "moo", "milk" ],
-    "char": "\ud83d\udc04",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  deer: {
-    keywords: [ "animal", "nature", "horns", "venison" ],
-    "char": "\ud83e\udd8c",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  dromedary_camel: {
-    keywords: [ "animal", "hot", "desert", "hump" ],
-    "char": "\ud83d\udc2a",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  camel: {
-    keywords: [ "animal", "nature", "hot", "desert", "hump" ],
-    "char": "\ud83d\udc2b",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  giraffe: {
-    keywords: [ "animal", "nature", "spots", "safari" ],
-    "char": "\ud83e\udd92",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  elephant: {
-    keywords: [ "animal", "nature", "nose", "th", "circus" ],
-    "char": "\ud83d\udc18",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  rhinoceros: {
-    keywords: [ "animal", "nature", "horn" ],
-    "char": "\ud83e\udd8f",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  goat: {
-    keywords: [ "animal", "nature" ],
-    "char": "\ud83d\udc10",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  ram: {
-    keywords: [ "animal", "sheep", "nature" ],
-    "char": "\ud83d\udc0f",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  sheep: {
-    keywords: [ "animal", "nature", "wool", "shipit" ],
-    "char": "\ud83d\udc11",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  racehorse: {
-    keywords: [ "animal", "gamble", "luck" ],
-    "char": "\ud83d\udc0e",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  pig2: {
-    keywords: [ "animal", "nature" ],
-    "char": "\ud83d\udc16",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  rat: {
-    keywords: [ "animal", "mouse", "rodent" ],
-    "char": "\ud83d\udc00",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  mouse2: {
-    keywords: [ "animal", "nature", "rodent" ],
-    "char": "\ud83d\udc01",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  rooster: {
-    keywords: [ "animal", "nature", "chicken" ],
-    "char": "\ud83d\udc13",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  turkey: {
-    keywords: [ "animal", "bird" ],
-    "char": "\ud83e\udd83",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  dove: {
-    keywords: [ "animal", "bird" ],
-    "char": "\ud83d\udd4a",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  dog2: {
-    keywords: [ "animal", "nature", "friend", "doge", "pet", "faithful" ],
-    "char": "\ud83d\udc15",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  poodle: {
-    keywords: [ "dog", "animal", "101", "nature", "pet" ],
-    "char": "\ud83d\udc29",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  cat2: {
-    keywords: [ "animal", "meow", "pet", "cats" ],
-    "char": "\ud83d\udc08",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  rabbit2: {
-    keywords: [ "animal", "nature", "pet", "magic", "spring" ],
-    "char": "\ud83d\udc07",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  chipmunk: {
-    keywords: [ "animal", "nature", "rodent", "squirrel" ],
-    "char": "\ud83d\udc3f",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  hedgehog: {
-    keywords: [ "animal", "nature", "spiny" ],
-    "char": "\ud83e\udd94",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  paw_prints: {
-    keywords: [ "animal", "tracking", "footprints", "dog", "cat", "pet", "feet" ],
-    "char": "\ud83d\udc3e",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  dragon: {
-    keywords: [ "animal", "myth", "nature", "chinese", "green" ],
-    "char": "\ud83d\udc09",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  dragon_face: {
-    keywords: [ "animal", "myth", "nature", "chinese", "green" ],
-    "char": "\ud83d\udc32",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  cactus: {
-    keywords: [ "vegetable", "plant", "nature" ],
-    "char": "\ud83c\udf35",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  christmas_tree: {
-    keywords: [ "festival", "vacation", "december", "xmas", "celebration" ],
-    "char": "\ud83c\udf84",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  evergreen_tree: {
-    keywords: [ "plant", "nature" ],
-    "char": "\ud83c\udf32",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  deciduous_tree: {
-    keywords: [ "plant", "nature" ],
-    "char": "\ud83c\udf33",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  palm_tree: {
-    keywords: [ "plant", "vegetable", "nature", "summer", "beach", "mojito", "tropical" ],
-    "char": "\ud83c\udf34",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  seedling: {
-    keywords: [ "plant", "nature", "grass", "lawn", "spring" ],
-    "char": "\ud83c\udf31",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  herb: {
-    keywords: [ "vegetable", "plant", "medicine", "weed", "grass", "lawn" ],
-    "char": "\ud83c\udf3f",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  shamrock: {
-    keywords: [ "vegetable", "plant", "nature", "irish", "clover" ],
-    "char": "\u2618",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  four_leaf_clover: {
-    keywords: [ "vegetable", "plant", "nature", "lucky", "irish" ],
-    "char": "\ud83c\udf40",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  bamboo: {
-    keywords: [ "plant", "nature", "vegetable", "panda", "pine_decoration" ],
-    "char": "\ud83c\udf8d",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  tanabata_tree: {
-    keywords: [ "plant", "nature", "branch", "summer" ],
-    "char": "\ud83c\udf8b",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  leaves: {
-    keywords: [ "nature", "plant", "tree", "vegetable", "grass", "lawn", "spring" ],
-    "char": "\ud83c\udf43",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  fallen_leaf: {
-    keywords: [ "nature", "plant", "vegetable", "leaves" ],
-    "char": "\ud83c\udf42",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  maple_leaf: {
-    keywords: [ "nature", "plant", "vegetable", "ca", "fall" ],
-    "char": "\ud83c\udf41",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  ear_of_rice: {
-    keywords: [ "nature", "plant" ],
-    "char": "\ud83c\udf3e",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  hibiscus: {
-    keywords: [ "plant", "vegetable", "flowers", "beach" ],
-    "char": "\ud83c\udf3a",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  sunflower: {
-    keywords: [ "nature", "plant", "fall" ],
-    "char": "\ud83c\udf3b",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  rose: {
-    keywords: [ "flowers", "valentines", "love", "spring" ],
-    "char": "\ud83c\udf39",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  wilted_flower: {
-    keywords: [ "plant", "nature", "flower" ],
-    "char": "\ud83e\udd40",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  tulip: {
-    keywords: [ "flowers", "plant", "nature", "summer", "spring" ],
-    "char": "\ud83c\udf37",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  blossom: {
-    keywords: [ "nature", "flowers", "yellow" ],
-    "char": "\ud83c\udf3c",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  cherry_blossom: {
-    keywords: [ "nature", "plant", "spring", "flower" ],
-    "char": "\ud83c\udf38",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  bouquet: {
-    keywords: [ "flowers", "nature", "spring" ],
-    "char": "\ud83d\udc90",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  mushroom: {
-    keywords: [ "plant", "vegetable" ],
-    "char": "\ud83c\udf44",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  chestnut: {
-    keywords: [ "food", "squirrel" ],
-    "char": "\ud83c\udf30",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  jack_o_lantern: {
-    keywords: [ "halloween", "light", "pumpkin", "creepy", "fall" ],
-    "char": "\ud83c\udf83",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  shell: {
-    keywords: [ "nature", "sea", "beach" ],
-    "char": "\ud83d\udc1a",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  spider_web: {
-    keywords: [ "animal", "insect", "arachnid", "silk" ],
-    "char": "\ud83d\udd78",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  earth_americas: {
-    keywords: [ "globe", "world", "USA", "international" ],
-    "char": "\ud83c\udf0e",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  earth_africa: {
-    keywords: [ "globe", "world", "international" ],
-    "char": "\ud83c\udf0d",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  earth_asia: {
-    keywords: [ "globe", "world", "east", "international" ],
-    "char": "\ud83c\udf0f",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  full_moon: {
-    keywords: [ "nature", "yellow", "twilight", "planet", "space", "night", "evening", "sleep" ],
-    "char": "\ud83c\udf15",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  waning_gibbous_moon: {
-    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep", "waxing_gibbous_moon" ],
-    "char": "\ud83c\udf16",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  last_quarter_moon: {
-    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
-    "char": "\ud83c\udf17",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  waning_crescent_moon: {
-    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
-    "char": "\ud83c\udf18",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  new_moon: {
-    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
-    "char": "\ud83c\udf11",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  waxing_crescent_moon: {
-    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
-    "char": "\ud83c\udf12",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  first_quarter_moon: {
-    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
-    "char": "\ud83c\udf13",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  waxing_gibbous_moon: {
-    keywords: [ "nature", "night", "sky", "gray", "twilight", "planet", "space", "evening", "sleep" ],
-    "char": "\ud83c\udf14",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  new_moon_with_face: {
-    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
-    "char": "\ud83c\udf1a",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  full_moon_with_face: {
-    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
-    "char": "\ud83c\udf1d",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  first_quarter_moon_with_face: {
-    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
-    "char": "\ud83c\udf1b",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  last_quarter_moon_with_face: {
-    keywords: [ "nature", "twilight", "planet", "space", "night", "evening", "sleep" ],
-    "char": "\ud83c\udf1c",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  sun_with_face: {
-    keywords: [ "nature", "morning", "sky" ],
-    "char": "\ud83c\udf1e",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  crescent_moon: {
-    keywords: [ "night", "sleep", "sky", "evening", "magic" ],
-    "char": "\ud83c\udf19",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  star: {
-    keywords: [ "night", "yellow" ],
-    "char": "\u2b50",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  star2: {
-    keywords: [ "night", "sparkle", "awesome", "good", "magic" ],
-    "char": "\ud83c\udf1f",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  dizzy: {
-    keywords: [ "star", "sparkle", "shoot", "magic" ],
-    "char": "\ud83d\udcab",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  sparkles: {
-    keywords: [ "stars", "shine", "shiny", "cool", "awesome", "good", "magic" ],
-    "char": "\u2728",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  comet: {
-    keywords: [ "space" ],
-    "char": "\u2604",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  sunny: {
-    keywords: [ "weather", "nature", "brightness", "summer", "beach", "spring" ],
-    "char": "\u2600\ufe0f",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  sun_behind_small_cloud: {
-    keywords: [ "weather" ],
-    "char": "\ud83c\udf24",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  partly_sunny: {
-    keywords: [ "weather", "nature", "cloudy", "morning", "fall", "spring" ],
-    "char": "\u26c5",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  sun_behind_large_cloud: {
-    keywords: [ "weather" ],
-    "char": "\ud83c\udf25",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  sun_behind_rain_cloud: {
-    keywords: [ "weather" ],
-    "char": "\ud83c\udf26",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  cloud: {
-    keywords: [ "weather", "sky" ],
-    "char": "\u2601\ufe0f",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  cloud_with_rain: {
-    keywords: [ "weather" ],
-    "char": "\ud83c\udf27",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  cloud_with_lightning_and_rain: {
-    keywords: [ "weather", "lightning" ],
-    "char": "\u26c8",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  cloud_with_lightning: {
-    keywords: [ "weather", "thunder" ],
-    "char": "\ud83c\udf29",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  zap: {
-    keywords: [ "thunder", "weather", "lightning bolt", "fast" ],
-    "char": "\u26a1",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  fire: {
-    keywords: [ "hot", "cook", "flame" ],
-    "char": "\ud83d\udd25",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  boom: {
-    keywords: [ "bomb", "explode", "explosion", "collision", "blown" ],
-    "char": "\ud83d\udca5",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  snowflake: {
-    keywords: [ "winter", "season", "cold", "weather", "christmas", "xmas" ],
-    "char": "\u2744\ufe0f",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  cloud_with_snow: {
-    keywords: [ "weather" ],
-    "char": "\ud83c\udf28",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  snowman: {
-    keywords: [ "winter", "season", "cold", "weather", "christmas", "xmas", "frozen", "without_snow" ],
-    "char": "\u26c4",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  snowman_with_snow: {
-    keywords: [ "winter", "season", "cold", "weather", "christmas", "xmas", "frozen" ],
-    "char": "\u2603",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  wind_face: {
-    keywords: [ "gust", "air" ],
-    "char": "\ud83c\udf2c",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  dash: {
-    keywords: [ "wind", "air", "fast", "shoo", "fart", "smoke", "puff" ],
-    "char": "\ud83d\udca8",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  tornado: {
-    keywords: [ "weather", "cyclone", "twister" ],
-    "char": "\ud83c\udf2a",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  fog: {
-    keywords: [ "weather" ],
-    "char": "\ud83c\udf2b",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  open_umbrella: {
-    keywords: [ "weather", "spring" ],
-    "char": "\u2602",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  umbrella: {
-    keywords: [ "rainy", "weather", "spring" ],
-    "char": "\u2614",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  droplet: {
-    keywords: [ "water", "drip", "faucet", "spring" ],
-    "char": "\ud83d\udca7",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  sweat_drops: {
-    keywords: [ "water", "drip", "oops" ],
-    "char": "\ud83d\udca6",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  ocean: {
-    keywords: [ "sea", "water", "wave", "nature", "tsunami", "disaster" ],
-    "char": "\ud83c\udf0a",
-    fitzpatrick_scale: false,
-    category: "animals_and_nature"
-  },
-  green_apple: {
-    keywords: [ "fruit", "nature" ],
-    "char": "\ud83c\udf4f",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  apple: {
-    keywords: [ "fruit", "mac", "school" ],
-    "char": "\ud83c\udf4e",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  pear: {
-    keywords: [ "fruit", "nature", "food" ],
-    "char": "\ud83c\udf50",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  tangerine: {
-    keywords: [ "food", "fruit", "nature", "orange" ],
-    "char": "\ud83c\udf4a",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  lemon: {
-    keywords: [ "fruit", "nature" ],
-    "char": "\ud83c\udf4b",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  banana: {
-    keywords: [ "fruit", "food", "monkey" ],
-    "char": "\ud83c\udf4c",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  watermelon: {
-    keywords: [ "fruit", "food", "picnic", "summer" ],
-    "char": "\ud83c\udf49",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  grapes: {
-    keywords: [ "fruit", "food", "wine" ],
-    "char": "\ud83c\udf47",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  strawberry: {
-    keywords: [ "fruit", "food", "nature" ],
-    "char": "\ud83c\udf53",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  melon: {
-    keywords: [ "fruit", "nature", "food" ],
-    "char": "\ud83c\udf48",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  cherries: {
-    keywords: [ "food", "fruit" ],
-    "char": "\ud83c\udf52",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  peach: {
-    keywords: [ "fruit", "nature", "food" ],
-    "char": "\ud83c\udf51",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  pineapple: {
-    keywords: [ "fruit", "nature", "food" ],
-    "char": "\ud83c\udf4d",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  coconut: {
-    keywords: [ "fruit", "nature", "food", "palm" ],
-    "char": "\ud83e\udd65",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  kiwi_fruit: {
-    keywords: [ "fruit", "food" ],
-    "char": "\ud83e\udd5d",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  avocado: {
-    keywords: [ "fruit", "food" ],
-    "char": "\ud83e\udd51",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  broccoli: {
-    keywords: [ "fruit", "food", "vegetable" ],
-    "char": "\ud83e\udd66",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  tomato: {
-    keywords: [ "fruit", "vegetable", "nature", "food" ],
-    "char": "\ud83c\udf45",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  eggplant: {
-    keywords: [ "vegetable", "nature", "food", "aubergine" ],
-    "char": "\ud83c\udf46",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  cucumber: {
-    keywords: [ "fruit", "food", "pickle" ],
-    "char": "\ud83e\udd52",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  carrot: {
-    keywords: [ "vegetable", "food", "orange" ],
-    "char": "\ud83e\udd55",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  hot_pepper: {
-    keywords: [ "food", "spicy", "chilli", "chili" ],
-    "char": "\ud83c\udf36",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  potato: {
-    keywords: [ "food", "tuber", "vegatable", "starch" ],
-    "char": "\ud83e\udd54",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  corn: {
-    keywords: [ "food", "vegetable", "plant" ],
-    "char": "\ud83c\udf3d",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  sweet_potato: {
-    keywords: [ "food", "nature" ],
-    "char": "\ud83c\udf60",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  peanuts: {
-    keywords: [ "food", "nut" ],
-    "char": "\ud83e\udd5c",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  honey_pot: {
-    keywords: [ "bees", "sweet", "kitchen" ],
-    "char": "\ud83c\udf6f",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  croissant: {
-    keywords: [ "food", "bread", "french" ],
-    "char": "\ud83e\udd50",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  bread: {
-    keywords: [ "food", "wheat", "breakfast", "toast" ],
-    "char": "\ud83c\udf5e",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  baguette_bread: {
-    keywords: [ "food", "bread", "french" ],
-    "char": "\ud83e\udd56",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  pretzel: {
-    keywords: [ "food", "bread", "twisted" ],
-    "char": "\ud83e\udd68",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  cheese: {
-    keywords: [ "food", "chadder" ],
-    "char": "\ud83e\uddc0",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  egg: {
-    keywords: [ "food", "chicken", "breakfast" ],
-    "char": "\ud83e\udd5a",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  bacon: {
-    keywords: [ "food", "breakfast", "pork", "pig", "meat" ],
-    "char": "\ud83e\udd53",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  steak: {
-    keywords: [ "food", "cow", "meat", "cut", "chop", "lambchop", "porkchop" ],
-    "char": "\ud83e\udd69",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  pancakes: {
-    keywords: [ "food", "breakfast", "flapjacks", "hotcakes" ],
-    "char": "\ud83e\udd5e",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  poultry_leg: {
-    keywords: [ "food", "meat", "drumstick", "bird", "chicken", "turkey" ],
-    "char": "\ud83c\udf57",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  meat_on_bone: {
-    keywords: [ "good", "food", "drumstick" ],
-    "char": "\ud83c\udf56",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  fried_shrimp: {
-    keywords: [ "food", "animal", "appetizer", "summer" ],
-    "char": "\ud83c\udf64",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  fried_egg: {
-    keywords: [ "food", "breakfast", "kitchen", "egg" ],
-    "char": "\ud83c\udf73",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  hamburger: {
-    keywords: [ "meat", "fast food", "beef", "cheeseburger", "mcdonalds", "burger king" ],
-    "char": "\ud83c\udf54",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  fries: {
-    keywords: [ "chips", "snack", "fast food" ],
-    "char": "\ud83c\udf5f",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  stuffed_flatbread: {
-    keywords: [ "food", "flatbread", "stuffed", "gyro" ],
-    "char": "\ud83e\udd59",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  hotdog: {
-    keywords: [ "food", "frankfurter" ],
-    "char": "\ud83c\udf2d",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  pizza: {
-    keywords: [ "food", "party" ],
-    "char": "\ud83c\udf55",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  sandwich: {
-    keywords: [ "food", "lunch", "bread" ],
-    "char": "\ud83e\udd6a",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  canned_food: {
-    keywords: [ "food", "soup" ],
-    "char": "\ud83e\udd6b",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  spaghetti: {
-    keywords: [ "food", "italian", "noodle" ],
-    "char": "\ud83c\udf5d",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  taco: {
-    keywords: [ "food", "mexican" ],
-    "char": "\ud83c\udf2e",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  burrito: {
-    keywords: [ "food", "mexican" ],
-    "char": "\ud83c\udf2f",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  green_salad: {
-    keywords: [ "food", "healthy", "lettuce" ],
-    "char": "\ud83e\udd57",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  shallow_pan_of_food: {
-    keywords: [ "food", "cooking", "casserole", "paella" ],
-    "char": "\ud83e\udd58",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  ramen: {
-    keywords: [ "food", "japanese", "noodle", "chopsticks" ],
-    "char": "\ud83c\udf5c",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  stew: {
-    keywords: [ "food", "meat", "soup" ],
-    "char": "\ud83c\udf72",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  fish_cake: {
-    keywords: [ "food", "japan", "sea", "beach", "narutomaki", "pink", "swirl", "kamaboko", "surimi", "ramen" ],
-    "char": "\ud83c\udf65",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  fortune_cookie: {
-    keywords: [ "food", "prophecy" ],
-    "char": "\ud83e\udd60",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  sushi: {
-    keywords: [ "food", "fish", "japanese", "rice" ],
-    "char": "\ud83c\udf63",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  bento: {
-    keywords: [ "food", "japanese", "box" ],
-    "char": "\ud83c\udf71",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  curry: {
-    keywords: [ "food", "spicy", "hot", "indian" ],
-    "char": "\ud83c\udf5b",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  rice_ball: {
-    keywords: [ "food", "japanese" ],
-    "char": "\ud83c\udf59",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  rice: {
-    keywords: [ "food", "china", "asian" ],
-    "char": "\ud83c\udf5a",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  rice_cracker: {
-    keywords: [ "food", "japanese" ],
-    "char": "\ud83c\udf58",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  oden: {
-    keywords: [ "food", "japanese" ],
-    "char": "\ud83c\udf62",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  dango: {
-    keywords: [ "food", "dessert", "sweet", "japanese", "barbecue", "meat" ],
-    "char": "\ud83c\udf61",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  shaved_ice: {
-    keywords: [ "hot", "dessert", "summer" ],
-    "char": "\ud83c\udf67",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  ice_cream: {
-    keywords: [ "food", "hot", "dessert" ],
-    "char": "\ud83c\udf68",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  icecream: {
-    keywords: [ "food", "hot", "dessert", "summer" ],
-    "char": "\ud83c\udf66",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  pie: {
-    keywords: [ "food", "dessert", "pastry" ],
-    "char": "\ud83e\udd67",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  cake: {
-    keywords: [ "food", "dessert" ],
-    "char": "\ud83c\udf70",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  birthday: {
-    keywords: [ "food", "dessert", "cake" ],
-    "char": "\ud83c\udf82",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  custard: {
-    keywords: [ "dessert", "food" ],
-    "char": "\ud83c\udf6e",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  candy: {
-    keywords: [ "snack", "dessert", "sweet", "lolly" ],
-    "char": "\ud83c\udf6c",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  lollipop: {
-    keywords: [ "food", "snack", "candy", "sweet" ],
-    "char": "\ud83c\udf6d",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  chocolate_bar: {
-    keywords: [ "food", "snack", "dessert", "sweet" ],
-    "char": "\ud83c\udf6b",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  popcorn: {
-    keywords: [ "food", "movie theater", "films", "snack" ],
-    "char": "\ud83c\udf7f",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  dumpling: {
-    keywords: [ "food", "empanada", "pierogi", "potsticker" ],
-    "char": "\ud83e\udd5f",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  doughnut: {
-    keywords: [ "food", "dessert", "snack", "sweet", "donut" ],
-    "char": "\ud83c\udf69",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  cookie: {
-    keywords: [ "food", "snack", "oreo", "chocolate", "sweet", "dessert" ],
-    "char": "\ud83c\udf6a",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  milk_glass: {
-    keywords: [ "beverage", "drink", "cow" ],
-    "char": "\ud83e\udd5b",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  beer: {
-    keywords: [ "relax", "beverage", "drink", "drunk", "party", "pub", "summer", "alcohol", "booze" ],
-    "char": "\ud83c\udf7a",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  beers: {
-    keywords: [ "relax", "beverage", "drink", "drunk", "party", "pub", "summer", "alcohol", "booze" ],
-    "char": "\ud83c\udf7b",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  clinking_glasses: {
-    keywords: [ "beverage", "drink", "party", "alcohol", "celebrate", "cheers", "wine", "champagne", "toast" ],
-    "char": "\ud83e\udd42",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  wine_glass: {
-    keywords: [ "drink", "beverage", "drunk", "alcohol", "booze" ],
-    "char": "\ud83c\udf77",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  tumbler_glass: {
-    keywords: [ "drink", "beverage", "drunk", "alcohol", "liquor", "booze", "bourbon", "scotch", "whisky", "glass", "shot" ],
-    "char": "\ud83e\udd43",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  cocktail: {
-    keywords: [ "drink", "drunk", "alcohol", "beverage", "booze", "mojito" ],
-    "char": "\ud83c\udf78",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  tropical_drink: {
-    keywords: [ "beverage", "cocktail", "summer", "beach", "alcohol", "booze", "mojito" ],
-    "char": "\ud83c\udf79",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  champagne: {
-    keywords: [ "drink", "wine", "bottle", "celebration" ],
-    "char": "\ud83c\udf7e",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  sake: {
-    keywords: [ "wine", "drink", "drunk", "beverage", "japanese", "alcohol", "booze" ],
-    "char": "\ud83c\udf76",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  tea: {
-    keywords: [ "drink", "bowl", "breakfast", "green", "british" ],
-    "char": "\ud83c\udf75",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  cup_with_straw: {
-    keywords: [ "drink", "soda" ],
-    "char": "\ud83e\udd64",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  coffee: {
-    keywords: [ "beverage", "caffeine", "latte", "espresso" ],
-    "char": "\u2615",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  baby_bottle: {
-    keywords: [ "food", "container", "milk" ],
-    "char": "\ud83c\udf7c",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  spoon: {
-    keywords: [ "cutlery", "kitchen", "tableware" ],
-    "char": "\ud83e\udd44",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  fork_and_knife: {
-    keywords: [ "cutlery", "kitchen" ],
-    "char": "\ud83c\udf74",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  plate_with_cutlery: {
-    keywords: [ "food", "eat", "meal", "lunch", "dinner", "restaurant" ],
-    "char": "\ud83c\udf7d",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  bowl_with_spoon: {
-    keywords: [ "food", "breakfast", "cereal", "oatmeal", "porridge" ],
-    "char": "\ud83e\udd63",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  takeout_box: {
-    keywords: [ "food", "leftovers" ],
-    "char": "\ud83e\udd61",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  chopsticks: {
-    keywords: [ "food" ],
-    "char": "\ud83e\udd62",
-    fitzpatrick_scale: false,
-    category: "food_and_drink"
-  },
-  soccer: {
-    keywords: [ "sports", "football" ],
-    "char": "\u26bd",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  basketball: {
-    keywords: [ "sports", "balls", "NBA" ],
-    "char": "\ud83c\udfc0",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  football: {
-    keywords: [ "sports", "balls", "NFL" ],
-    "char": "\ud83c\udfc8",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  baseball: {
-    keywords: [ "sports", "balls" ],
-    "char": "\u26be",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  tennis: {
-    keywords: [ "sports", "balls", "green" ],
-    "char": "\ud83c\udfbe",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  volleyball: {
-    keywords: [ "sports", "balls" ],
-    "char": "\ud83c\udfd0",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  rugby_football: {
-    keywords: [ "sports", "team" ],
-    "char": "\ud83c\udfc9",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  "8ball": {
-    keywords: [ "pool", "hobby", "game", "luck", "magic" ],
-    "char": "\ud83c\udfb1",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  golf: {
-    keywords: [ "sports", "business", "flag", "hole", "summer" ],
-    "char": "\u26f3",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  golfing_woman: {
-    keywords: [ "sports", "business", "woman", "female" ],
-    "char": "\ud83c\udfcc\ufe0f\u200d\u2640\ufe0f",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  golfing_man: {
-    keywords: [ "sports", "business" ],
-    "char": "\ud83c\udfcc",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  ping_pong: {
-    keywords: [ "sports", "pingpong" ],
-    "char": "\ud83c\udfd3",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  badminton: {
-    keywords: [ "sports" ],
-    "char": "\ud83c\udff8",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  goal_net: {
-    keywords: [ "sports" ],
-    "char": "\ud83e\udd45",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  ice_hockey: {
-    keywords: [ "sports" ],
-    "char": "\ud83c\udfd2",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  field_hockey: {
-    keywords: [ "sports" ],
-    "char": "\ud83c\udfd1",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  cricket: {
-    keywords: [ "sports" ],
-    "char": "\ud83c\udfcf",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  ski: {
-    keywords: [ "sports", "winter", "cold", "snow" ],
-    "char": "\ud83c\udfbf",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  skier: {
-    keywords: [ "sports", "winter", "snow" ],
-    "char": "\u26f7",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  snowboarder: {
-    keywords: [ "sports", "winter" ],
-    "char": "\ud83c\udfc2",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  person_fencing: {
-    keywords: [ "sports", "fencing", "sword" ],
-    "char": "\ud83e\udd3a",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  women_wrestling: {
-    keywords: [ "sports", "wrestlers" ],
-    "char": "\ud83e\udd3c\u200d\u2640\ufe0f",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  men_wrestling: {
-    keywords: [ "sports", "wrestlers" ],
-    "char": "\ud83e\udd3c\u200d\u2642\ufe0f",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  woman_cartwheeling: {
-    keywords: [ "gymnastics" ],
-    "char": "\ud83e\udd38\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  man_cartwheeling: {
-    keywords: [ "gymnastics" ],
-    "char": "\ud83e\udd38\u200d\u2642\ufe0f",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  woman_playing_handball: {
-    keywords: [ "sports" ],
-    "char": "\ud83e\udd3e\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  man_playing_handball: {
-    keywords: [ "sports" ],
-    "char": "\ud83e\udd3e\u200d\u2642\ufe0f",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  ice_skate: {
-    keywords: [ "sports" ],
-    "char": "\u26f8",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  curling_stone: {
-    keywords: [ "sports" ],
-    "char": "\ud83e\udd4c",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  sled: {
-    keywords: [ "sleigh", "luge", "toboggan" ],
-    "char": "\ud83d\udef7",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  bow_and_arrow: {
-    keywords: [ "sports" ],
-    "char": "\ud83c\udff9",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  fishing_pole_and_fish: {
-    keywords: [ "food", "hobby", "summer" ],
-    "char": "\ud83c\udfa3",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  boxing_glove: {
-    keywords: [ "sports", "fighting" ],
-    "char": "\ud83e\udd4a",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  martial_arts_uniform: {
-    keywords: [ "judo", "karate", "taekwondo" ],
-    "char": "\ud83e\udd4b",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  rowing_woman: {
-    keywords: [ "sports", "hobby", "water", "ship", "woman", "female" ],
-    "char": "\ud83d\udea3\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  rowing_man: {
-    keywords: [ "sports", "hobby", "water", "ship" ],
-    "char": "\ud83d\udea3",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  climbing_woman: {
-    keywords: [ "sports", "hobby", "woman", "female", "rock" ],
-    "char": "\ud83e\uddd7\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  climbing_man: {
-    keywords: [ "sports", "hobby", "man", "male", "rock" ],
-    "char": "\ud83e\uddd7\u200d\u2642\ufe0f",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  swimming_woman: {
-    keywords: [ "sports", "exercise", "human", "athlete", "water", "summer", "woman", "female" ],
-    "char": "\ud83c\udfca\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  swimming_man: {
-    keywords: [ "sports", "exercise", "human", "athlete", "water", "summer" ],
-    "char": "\ud83c\udfca",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  woman_playing_water_polo: {
-    keywords: [ "sports", "pool" ],
-    "char": "\ud83e\udd3d\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  man_playing_water_polo: {
-    keywords: [ "sports", "pool" ],
-    "char": "\ud83e\udd3d\u200d\u2642\ufe0f",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  woman_in_lotus_position: {
-    keywords: [ "woman", "female", "meditation", "yoga", "serenity", "zen", "mindfulness" ],
-    "char": "\ud83e\uddd8\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  man_in_lotus_position: {
-    keywords: [ "man", "male", "meditation", "yoga", "serenity", "zen", "mindfulness" ],
-    "char": "\ud83e\uddd8\u200d\u2642\ufe0f",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  surfing_woman: {
-    keywords: [ "sports", "ocean", "sea", "summer", "beach", "woman", "female" ],
-    "char": "\ud83c\udfc4\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  surfing_man: {
-    keywords: [ "sports", "ocean", "sea", "summer", "beach" ],
-    "char": "\ud83c\udfc4",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  bath: {
-    keywords: [ "clean", "shower", "bathroom" ],
-    "char": "\ud83d\udec0",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  basketball_woman: {
-    keywords: [ "sports", "human", "woman", "female" ],
-    "char": "\u26f9\ufe0f\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  basketball_man: {
-    keywords: [ "sports", "human" ],
-    "char": "\u26f9",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  weight_lifting_woman: {
-    keywords: [ "sports", "training", "exercise", "woman", "female" ],
-    "char": "\ud83c\udfcb\ufe0f\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  weight_lifting_man: {
-    keywords: [ "sports", "training", "exercise" ],
-    "char": "\ud83c\udfcb",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  biking_woman: {
-    keywords: [ "sports", "bike", "exercise", "hipster", "woman", "female" ],
-    "char": "\ud83d\udeb4\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  biking_man: {
-    keywords: [ "sports", "bike", "exercise", "hipster" ],
-    "char": "\ud83d\udeb4",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  mountain_biking_woman: {
-    keywords: [ "transportation", "sports", "human", "race", "bike", "woman", "female" ],
-    "char": "\ud83d\udeb5\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  mountain_biking_man: {
-    keywords: [ "transportation", "sports", "human", "race", "bike" ],
-    "char": "\ud83d\udeb5",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  horse_racing: {
-    keywords: [ "animal", "betting", "competition", "gambling", "luck" ],
-    "char": "\ud83c\udfc7",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  business_suit_levitating: {
-    keywords: [ "suit", "business", "levitate", "hover", "jump" ],
-    "char": "\ud83d\udd74",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  trophy: {
-    keywords: [ "win", "award", "contest", "place", "ftw", "ceremony" ],
-    "char": "\ud83c\udfc6",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  running_shirt_with_sash: {
-    keywords: [ "play", "pageant" ],
-    "char": "\ud83c\udfbd",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  medal_sports: {
-    keywords: [ "award", "winning" ],
-    "char": "\ud83c\udfc5",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  medal_military: {
-    keywords: [ "award", "winning", "army" ],
-    "char": "\ud83c\udf96",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  "1st_place_medal": {
-    keywords: [ "award", "winning", "first" ],
-    "char": "\ud83e\udd47",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  "2nd_place_medal": {
-    keywords: [ "award", "second" ],
-    "char": "\ud83e\udd48",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  "3rd_place_medal": {
-    keywords: [ "award", "third" ],
-    "char": "\ud83e\udd49",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  reminder_ribbon: {
-    keywords: [ "sports", "cause", "support", "awareness" ],
-    "char": "\ud83c\udf97",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  rosette: {
-    keywords: [ "flower", "decoration", "military" ],
-    "char": "\ud83c\udff5",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  ticket: {
-    keywords: [ "event", "concert", "pass" ],
-    "char": "\ud83c\udfab",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  tickets: {
-    keywords: [ "sports", "concert", "entrance" ],
-    "char": "\ud83c\udf9f",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  performing_arts: {
-    keywords: [ "acting", "theater", "drama" ],
-    "char": "\ud83c\udfad",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  art: {
-    keywords: [ "design", "paint", "draw", "colors" ],
-    "char": "\ud83c\udfa8",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  circus_tent: {
-    keywords: [ "festival", "carnival", "party" ],
-    "char": "\ud83c\udfaa",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  woman_juggling: {
-    keywords: [ "juggle", "balance", "skill", "multitask" ],
-    "char": "\ud83e\udd39\u200d\u2640\ufe0f",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  man_juggling: {
-    keywords: [ "juggle", "balance", "skill", "multitask" ],
-    "char": "\ud83e\udd39\u200d\u2642\ufe0f",
-    fitzpatrick_scale: true,
-    category: "activity"
-  },
-  microphone: {
-    keywords: [ "sound", "music", "PA", "sing", "talkshow" ],
-    "char": "\ud83c\udfa4",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  headphones: {
-    keywords: [ "music", "score", "gadgets" ],
-    "char": "\ud83c\udfa7",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  musical_score: {
-    keywords: [ "treble", "clef", "compose" ],
-    "char": "\ud83c\udfbc",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  musical_keyboard: {
-    keywords: [ "piano", "instrument", "compose" ],
-    "char": "\ud83c\udfb9",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  drum: {
-    keywords: [ "music", "instrument", "drumsticks", "snare" ],
-    "char": "\ud83e\udd41",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  saxophone: {
-    keywords: [ "music", "instrument", "jazz", "blues" ],
-    "char": "\ud83c\udfb7",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  trumpet: {
-    keywords: [ "music", "brass" ],
-    "char": "\ud83c\udfba",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  guitar: {
-    keywords: [ "music", "instrument" ],
-    "char": "\ud83c\udfb8",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  violin: {
-    keywords: [ "music", "instrument", "orchestra", "symphony" ],
-    "char": "\ud83c\udfbb",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  clapper: {
-    keywords: [ "movie", "film", "record" ],
-    "char": "\ud83c\udfac",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  video_game: {
-    keywords: [ "play", "console", "PS4", "controller" ],
-    "char": "\ud83c\udfae",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  space_invader: {
-    keywords: [ "game", "arcade", "play" ],
-    "char": "\ud83d\udc7e",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  dart: {
-    keywords: [ "game", "play", "bar", "target", "bullseye" ],
-    "char": "\ud83c\udfaf",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  game_die: {
-    keywords: [ "dice", "random", "tabletop", "play", "luck" ],
-    "char": "\ud83c\udfb2",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  slot_machine: {
-    keywords: [ "bet", "gamble", "vegas", "fruit machine", "luck", "casino" ],
-    "char": "\ud83c\udfb0",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  bowling: {
-    keywords: [ "sports", "fun", "play" ],
-    "char": "\ud83c\udfb3",
-    fitzpatrick_scale: false,
-    category: "activity"
-  },
-  red_car: {
-    keywords: [ "red", "transportation", "vehicle" ],
-    "char": "\ud83d\ude97",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  taxi: {
-    keywords: [ "uber", "vehicle", "cars", "transportation" ],
-    "char": "\ud83d\ude95",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  blue_car: {
-    keywords: [ "transportation", "vehicle" ],
-    "char": "\ud83d\ude99",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  bus: {
-    keywords: [ "car", "vehicle", "transportation" ],
-    "char": "\ud83d\ude8c",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  trolleybus: {
-    keywords: [ "bart", "transportation", "vehicle" ],
-    "char": "\ud83d\ude8e",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  racing_car: {
-    keywords: [ "sports", "race", "fast", "formula", "f1" ],
-    "char": "\ud83c\udfce",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  police_car: {
-    keywords: [ "vehicle", "cars", "transportation", "law", "legal", "enforcement" ],
-    "char": "\ud83d\ude93",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  ambulance: {
-    keywords: [ "health", "911", "hospital" ],
-    "char": "\ud83d\ude91",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  fire_engine: {
-    keywords: [ "transportation", "cars", "vehicle" ],
-    "char": "\ud83d\ude92",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  minibus: {
-    keywords: [ "vehicle", "car", "transportation" ],
-    "char": "\ud83d\ude90",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  truck: {
-    keywords: [ "cars", "transportation" ],
-    "char": "\ud83d\ude9a",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  articulated_lorry: {
-    keywords: [ "vehicle", "cars", "transportation", "express" ],
-    "char": "\ud83d\ude9b",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  tractor: {
-    keywords: [ "vehicle", "car", "farming", "agriculture" ],
-    "char": "\ud83d\ude9c",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  kick_scooter: {
-    keywords: [ "vehicle", "kick", "razor" ],
-    "char": "\ud83d\udef4",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  motorcycle: {
-    keywords: [ "race", "sports", "fast" ],
-    "char": "\ud83c\udfcd",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  bike: {
-    keywords: [ "sports", "bicycle", "exercise", "hipster" ],
-    "char": "\ud83d\udeb2",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  motor_scooter: {
-    keywords: [ "vehicle", "vespa", "sasha" ],
-    "char": "\ud83d\udef5",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  rotating_light: {
-    keywords: [ "police", "ambulance", "911", "emergency", "alert", "error", "pinged", "law", "legal" ],
-    "char": "\ud83d\udea8",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  oncoming_police_car: {
-    keywords: [ "vehicle", "law", "legal", "enforcement", "911" ],
-    "char": "\ud83d\ude94",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  oncoming_bus: {
-    keywords: [ "vehicle", "transportation" ],
-    "char": "\ud83d\ude8d",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  oncoming_automobile: {
-    keywords: [ "car", "vehicle", "transportation" ],
-    "char": "\ud83d\ude98",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  oncoming_taxi: {
-    keywords: [ "vehicle", "cars", "uber" ],
-    "char": "\ud83d\ude96",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  aerial_tramway: {
-    keywords: [ "transportation", "vehicle", "ski" ],
-    "char": "\ud83d\udea1",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  mountain_cableway: {
-    keywords: [ "transportation", "vehicle", "ski" ],
-    "char": "\ud83d\udea0",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  suspension_railway: {
-    keywords: [ "vehicle", "transportation" ],
-    "char": "\ud83d\ude9f",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  railway_car: {
-    keywords: [ "transportation", "vehicle" ],
-    "char": "\ud83d\ude83",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  train: {
-    keywords: [ "transportation", "vehicle", "carriage", "public", "travel" ],
-    "char": "\ud83d\ude8b",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  monorail: {
-    keywords: [ "transportation", "vehicle" ],
-    "char": "\ud83d\ude9d",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  bullettrain_side: {
-    keywords: [ "transportation", "vehicle" ],
-    "char": "\ud83d\ude84",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  bullettrain_front: {
-    keywords: [ "transportation", "vehicle", "speed", "fast", "public", "travel" ],
-    "char": "\ud83d\ude85",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  light_rail: {
-    keywords: [ "transportation", "vehicle" ],
-    "char": "\ud83d\ude88",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  mountain_railway: {
-    keywords: [ "transportation", "vehicle" ],
-    "char": "\ud83d\ude9e",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  steam_locomotive: {
-    keywords: [ "transportation", "vehicle", "train" ],
-    "char": "\ud83d\ude82",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  train2: {
-    keywords: [ "transportation", "vehicle" ],
-    "char": "\ud83d\ude86",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  metro: {
-    keywords: [ "transportation", "blue-square", "mrt", "underground", "tube" ],
-    "char": "\ud83d\ude87",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  tram: {
-    keywords: [ "transportation", "vehicle" ],
-    "char": "\ud83d\ude8a",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  station: {
-    keywords: [ "transportation", "vehicle", "public" ],
-    "char": "\ud83d\ude89",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  flying_saucer: {
-    keywords: [ "transportation", "vehicle", "ufo" ],
-    "char": "\ud83d\udef8",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  helicopter: {
-    keywords: [ "transportation", "vehicle", "fly" ],
-    "char": "\ud83d\ude81",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  small_airplane: {
-    keywords: [ "flight", "transportation", "fly", "vehicle" ],
-    "char": "\ud83d\udee9",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  airplane: {
-    keywords: [ "vehicle", "transportation", "flight", "fly" ],
-    "char": "\u2708\ufe0f",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  flight_departure: {
-    keywords: [ "airport", "flight", "landing" ],
-    "char": "\ud83d\udeeb",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  flight_arrival: {
-    keywords: [ "airport", "flight", "boarding" ],
-    "char": "\ud83d\udeec",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  sailboat: {
-    keywords: [ "ship", "summer", "transportation", "water", "sailing" ],
-    "char": "\u26f5",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  motor_boat: {
-    keywords: [ "ship" ],
-    "char": "\ud83d\udee5",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  speedboat: {
-    keywords: [ "ship", "transportation", "vehicle", "summer" ],
-    "char": "\ud83d\udea4",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  ferry: {
-    keywords: [ "boat", "ship", "yacht" ],
-    "char": "\u26f4",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  passenger_ship: {
-    keywords: [ "yacht", "cruise", "ferry" ],
-    "char": "\ud83d\udef3",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  rocket: {
-    keywords: [ "launch", "ship", "staffmode", "NASA", "outer space", "outer_space", "fly" ],
-    "char": "\ud83d\ude80",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  artificial_satellite: {
-    keywords: [ "communication", "gps", "orbit", "spaceflight", "NASA", "ISS" ],
-    "char": "\ud83d\udef0",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  seat: {
-    keywords: [ "sit", "airplane", "transport", "bus", "flight", "fly" ],
-    "char": "\ud83d\udcba",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  canoe: {
-    keywords: [ "boat", "paddle", "water", "ship" ],
-    "char": "\ud83d\udef6",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  anchor: {
-    keywords: [ "ship", "ferry", "sea", "boat" ],
-    "char": "\u2693",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  construction: {
-    keywords: [ "wip", "progress", "caution", "warning" ],
-    "char": "\ud83d\udea7",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  fuelpump: {
-    keywords: [ "gas station", "petroleum" ],
-    "char": "\u26fd",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  busstop: {
-    keywords: [ "transportation", "wait" ],
-    "char": "\ud83d\ude8f",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  vertical_traffic_light: {
-    keywords: [ "transportation", "driving" ],
-    "char": "\ud83d\udea6",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  traffic_light: {
-    keywords: [ "transportation", "signal" ],
-    "char": "\ud83d\udea5",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  checkered_flag: {
-    keywords: [ "contest", "finishline", "race", "gokart" ],
-    "char": "\ud83c\udfc1",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  ship: {
-    keywords: [ "transportation", "titanic", "deploy" ],
-    "char": "\ud83d\udea2",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  ferris_wheel: {
-    keywords: [ "photo", "carnival", "londoneye" ],
-    "char": "\ud83c\udfa1",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  roller_coaster: {
-    keywords: [ "carnival", "playground", "photo", "fun" ],
-    "char": "\ud83c\udfa2",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  carousel_horse: {
-    keywords: [ "photo", "carnival" ],
-    "char": "\ud83c\udfa0",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  building_construction: {
-    keywords: [ "wip", "working", "progress" ],
-    "char": "\ud83c\udfd7",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  foggy: {
-    keywords: [ "photo", "mountain" ],
-    "char": "\ud83c\udf01",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  tokyo_tower: {
-    keywords: [ "photo", "japanese" ],
-    "char": "\ud83d\uddfc",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  factory: {
-    keywords: [ "building", "industry", "pollution", "smoke" ],
-    "char": "\ud83c\udfed",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  fountain: {
-    keywords: [ "photo", "summer", "water", "fresh" ],
-    "char": "\u26f2",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  rice_scene: {
-    keywords: [ "photo", "japan", "asia", "tsukimi" ],
-    "char": "\ud83c\udf91",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  mountain: {
-    keywords: [ "photo", "nature", "environment" ],
-    "char": "\u26f0",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  mountain_snow: {
-    keywords: [ "photo", "nature", "environment", "winter", "cold" ],
-    "char": "\ud83c\udfd4",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  mount_fuji: {
-    keywords: [ "photo", "mountain", "nature", "japanese" ],
-    "char": "\ud83d\uddfb",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  volcano: {
-    keywords: [ "photo", "nature", "disaster" ],
-    "char": "\ud83c\udf0b",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  japan: {
-    keywords: [ "nation", "country", "japanese", "asia" ],
-    "char": "\ud83d\uddfe",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  camping: {
-    keywords: [ "photo", "outdoors", "tent" ],
-    "char": "\ud83c\udfd5",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  tent: {
-    keywords: [ "photo", "camping", "outdoors" ],
-    "char": "\u26fa",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  national_park: {
-    keywords: [ "photo", "environment", "nature" ],
-    "char": "\ud83c\udfde",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  motorway: {
-    keywords: [ "road", "cupertino", "interstate", "highway" ],
-    "char": "\ud83d\udee3",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  railway_track: {
-    keywords: [ "train", "transportation" ],
-    "char": "\ud83d\udee4",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  sunrise: {
-    keywords: [ "morning", "view", "vacation", "photo" ],
-    "char": "\ud83c\udf05",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  sunrise_over_mountains: {
-    keywords: [ "view", "vacation", "photo" ],
-    "char": "\ud83c\udf04",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  desert: {
-    keywords: [ "photo", "warm", "saharah" ],
-    "char": "\ud83c\udfdc",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  beach_umbrella: {
-    keywords: [ "weather", "summer", "sunny", "sand", "mojito" ],
-    "char": "\ud83c\udfd6",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  desert_island: {
-    keywords: [ "photo", "tropical", "mojito" ],
-    "char": "\ud83c\udfdd",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  city_sunrise: {
-    keywords: [ "photo", "good morning", "dawn" ],
-    "char": "\ud83c\udf07",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  city_sunset: {
-    keywords: [ "photo", "evening", "sky", "buildings" ],
-    "char": "\ud83c\udf06",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  cityscape: {
-    keywords: [ "photo", "night life", "urban" ],
-    "char": "\ud83c\udfd9",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  night_with_stars: {
-    keywords: [ "evening", "city", "downtown" ],
-    "char": "\ud83c\udf03",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  bridge_at_night: {
-    keywords: [ "photo", "sanfrancisco" ],
-    "char": "\ud83c\udf09",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  milky_way: {
-    keywords: [ "photo", "space", "stars" ],
-    "char": "\ud83c\udf0c",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  stars: {
-    keywords: [ "night", "photo" ],
-    "char": "\ud83c\udf20",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  sparkler: {
-    keywords: [ "stars", "night", "shine" ],
-    "char": "\ud83c\udf87",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  fireworks: {
-    keywords: [ "photo", "festival", "carnival", "congratulations" ],
-    "char": "\ud83c\udf86",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  rainbow: {
-    keywords: [ "nature", "happy", "unicorn_face", "photo", "sky", "spring" ],
-    "char": "\ud83c\udf08",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  houses: {
-    keywords: [ "buildings", "photo" ],
-    "char": "\ud83c\udfd8",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  european_castle: {
-    keywords: [ "building", "royalty", "history" ],
-    "char": "\ud83c\udff0",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  japanese_castle: {
-    keywords: [ "photo", "building" ],
-    "char": "\ud83c\udfef",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  stadium: {
-    keywords: [ "photo", "place", "sports", "concert", "venue" ],
-    "char": "\ud83c\udfdf",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  statue_of_liberty: {
-    keywords: [ "american", "newyork" ],
-    "char": "\ud83d\uddfd",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  house: {
-    keywords: [ "building", "home" ],
-    "char": "\ud83c\udfe0",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  house_with_garden: {
-    keywords: [ "home", "plant", "nature" ],
-    "char": "\ud83c\udfe1",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  derelict_house: {
-    keywords: [ "abandon", "evict", "broken", "building" ],
-    "char": "\ud83c\udfda",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  office: {
-    keywords: [ "building", "bureau", "work" ],
-    "char": "\ud83c\udfe2",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  department_store: {
-    keywords: [ "building", "shopping", "mall" ],
-    "char": "\ud83c\udfec",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  post_office: {
-    keywords: [ "building", "envelope", "communication" ],
-    "char": "\ud83c\udfe3",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  european_post_office: {
-    keywords: [ "building", "email" ],
-    "char": "\ud83c\udfe4",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  hospital: {
-    keywords: [ "building", "health", "surgery", "doctor" ],
-    "char": "\ud83c\udfe5",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  bank: {
-    keywords: [ "building", "money", "sales", "cash", "business", "enterprise" ],
-    "char": "\ud83c\udfe6",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  hotel: {
-    keywords: [ "building", "accomodation", "checkin" ],
-    "char": "\ud83c\udfe8",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  convenience_store: {
-    keywords: [ "building", "shopping", "groceries" ],
-    "char": "\ud83c\udfea",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  school: {
-    keywords: [ "building", "student", "education", "learn", "teach" ],
-    "char": "\ud83c\udfeb",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  love_hotel: {
-    keywords: [ "like", "affection", "dating" ],
-    "char": "\ud83c\udfe9",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  wedding: {
-    keywords: [ "love", "like", "affection", "couple", "marriage", "bride", "groom" ],
-    "char": "\ud83d\udc92",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  classical_building: {
-    keywords: [ "art", "culture", "history" ],
-    "char": "\ud83c\udfdb",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  church: {
-    keywords: [ "building", "religion", "christ" ],
-    "char": "\u26ea",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  mosque: {
-    keywords: [ "islam", "worship", "minaret" ],
-    "char": "\ud83d\udd4c",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  synagogue: {
-    keywords: [ "judaism", "worship", "temple", "jewish" ],
-    "char": "\ud83d\udd4d",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  kaaba: {
-    keywords: [ "mecca", "mosque", "islam" ],
-    "char": "\ud83d\udd4b",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  shinto_shrine: {
-    keywords: [ "temple", "japan", "kyoto" ],
-    "char": "\u26e9",
-    fitzpatrick_scale: false,
-    category: "travel_and_places"
-  },
-  watch: {
-    keywords: [ "time", "accessories" ],
-    "char": "\u231a",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  iphone: {
-    keywords: [ "technology", "apple", "gadgets", "dial" ],
-    "char": "\ud83d\udcf1",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  calling: {
-    keywords: [ "iphone", "incoming" ],
-    "char": "\ud83d\udcf2",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  computer: {
-    keywords: [ "technology", "laptop", "screen", "display", "monitor" ],
-    "char": "\ud83d\udcbb",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  keyboard: {
-    keywords: [ "technology", "computer", "type", "input", "text" ],
-    "char": "\u2328",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  desktop_computer: {
-    keywords: [ "technology", "computing", "screen" ],
-    "char": "\ud83d\udda5",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  printer: {
-    keywords: [ "paper", "ink" ],
-    "char": "\ud83d\udda8",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  computer_mouse: {
-    keywords: [ "click" ],
-    "char": "\ud83d\uddb1",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  trackball: {
-    keywords: [ "technology", "trackpad" ],
-    "char": "\ud83d\uddb2",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  joystick: {
-    keywords: [ "game", "play" ],
-    "char": "\ud83d\udd79",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  clamp: {
-    keywords: [ "tool" ],
-    "char": "\ud83d\udddc",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  minidisc: {
-    keywords: [ "technology", "record", "data", "disk", "90s" ],
-    "char": "\ud83d\udcbd",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  floppy_disk: {
-    keywords: [ "oldschool", "technology", "save", "90s", "80s" ],
-    "char": "\ud83d\udcbe",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  cd: {
-    keywords: [ "technology", "dvd", "disk", "disc", "90s" ],
-    "char": "\ud83d\udcbf",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  dvd: {
-    keywords: [ "cd", "disk", "disc" ],
-    "char": "\ud83d\udcc0",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  vhs: {
-    keywords: [ "record", "video", "oldschool", "90s", "80s" ],
-    "char": "\ud83d\udcfc",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  camera: {
-    keywords: [ "gadgets", "photography" ],
-    "char": "\ud83d\udcf7",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  camera_flash: {
-    keywords: [ "photography", "gadgets" ],
-    "char": "\ud83d\udcf8",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  video_camera: {
-    keywords: [ "film", "record" ],
-    "char": "\ud83d\udcf9",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  movie_camera: {
-    keywords: [ "film", "record" ],
-    "char": "\ud83c\udfa5",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  film_projector: {
-    keywords: [ "video", "tape", "record", "movie" ],
-    "char": "\ud83d\udcfd",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  film_strip: {
-    keywords: [ "movie" ],
-    "char": "\ud83c\udf9e",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  telephone_receiver: {
-    keywords: [ "technology", "communication", "dial" ],
-    "char": "\ud83d\udcde",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  phone: {
-    keywords: [ "technology", "communication", "dial", "telephone" ],
-    "char": "\u260e\ufe0f",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  pager: {
-    keywords: [ "bbcall", "oldschool", "90s" ],
-    "char": "\ud83d\udcdf",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  fax: {
-    keywords: [ "communication", "technology" ],
-    "char": "\ud83d\udce0",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  tv: {
-    keywords: [ "technology", "program", "oldschool", "show", "television" ],
-    "char": "\ud83d\udcfa",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  radio: {
-    keywords: [ "communication", "music", "podcast", "program" ],
-    "char": "\ud83d\udcfb",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  studio_microphone: {
-    keywords: [ "sing", "recording", "artist", "talkshow" ],
-    "char": "\ud83c\udf99",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  level_slider: {
-    keywords: [ "scale" ],
-    "char": "\ud83c\udf9a",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  control_knobs: {
-    keywords: [ "dial" ],
-    "char": "\ud83c\udf9b",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  stopwatch: {
-    keywords: [ "time", "deadline" ],
-    "char": "\u23f1",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  timer_clock: {
-    keywords: [ "alarm" ],
-    "char": "\u23f2",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  alarm_clock: {
-    keywords: [ "time", "wake" ],
-    "char": "\u23f0",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  mantelpiece_clock: {
-    keywords: [ "time" ],
-    "char": "\ud83d\udd70",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  hourglass_flowing_sand: {
-    keywords: [ "oldschool", "time", "countdown" ],
-    "char": "\u23f3",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  hourglass: {
-    keywords: [ "time", "clock", "oldschool", "limit", "exam", "quiz", "test" ],
-    "char": "\u231b",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  satellite: {
-    keywords: [ "communication", "future", "radio", "space" ],
-    "char": "\ud83d\udce1",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  battery: {
-    keywords: [ "power", "energy", "sustain" ],
-    "char": "\ud83d\udd0b",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  electric_plug: {
-    keywords: [ "charger", "power" ],
-    "char": "\ud83d\udd0c",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  bulb: {
-    keywords: [ "light", "electricity", "idea" ],
-    "char": "\ud83d\udca1",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  flashlight: {
-    keywords: [ "dark", "camping", "sight", "night" ],
-    "char": "\ud83d\udd26",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  candle: {
-    keywords: [ "fire", "wax" ],
-    "char": "\ud83d\udd6f",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  wastebasket: {
-    keywords: [ "bin", "trash", "rubbish", "garbage", "toss" ],
-    "char": "\ud83d\uddd1",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  oil_drum: {
-    keywords: [ "barrell" ],
-    "char": "\ud83d\udee2",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  money_with_wings: {
-    keywords: [ "dollar", "bills", "payment", "sale" ],
-    "char": "\ud83d\udcb8",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  dollar: {
-    keywords: [ "money", "sales", "bill", "currency" ],
-    "char": "\ud83d\udcb5",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  yen: {
-    keywords: [ "money", "sales", "japanese", "dollar", "currency" ],
-    "char": "\ud83d\udcb4",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  euro: {
-    keywords: [ "money", "sales", "dollar", "currency" ],
-    "char": "\ud83d\udcb6",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  pound: {
-    keywords: [ "british", "sterling", "money", "sales", "bills", "uk", "england", "currency" ],
-    "char": "\ud83d\udcb7",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  moneybag: {
-    keywords: [ "dollar", "payment", "coins", "sale" ],
-    "char": "\ud83d\udcb0",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  credit_card: {
-    keywords: [ "money", "sales", "dollar", "bill", "payment", "shopping" ],
-    "char": "\ud83d\udcb3",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  gem: {
-    keywords: [ "blue", "ruby", "diamond", "jewelry" ],
-    "char": "\ud83d\udc8e",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  balance_scale: {
-    keywords: [ "law", "fairness", "weight" ],
-    "char": "\u2696",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  wrench: {
-    keywords: [ "tools", "diy", "ikea", "fix", "maintainer" ],
-    "char": "\ud83d\udd27",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  hammer: {
-    keywords: [ "tools", "build", "create" ],
-    "char": "\ud83d\udd28",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  hammer_and_pick: {
-    keywords: [ "tools", "build", "create" ],
-    "char": "\u2692",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  hammer_and_wrench: {
-    keywords: [ "tools", "build", "create" ],
-    "char": "\ud83d\udee0",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  pick: {
-    keywords: [ "tools", "dig" ],
-    "char": "\u26cf",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  nut_and_bolt: {
-    keywords: [ "handy", "tools", "fix" ],
-    "char": "\ud83d\udd29",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  gear: {
-    keywords: [ "cog" ],
-    "char": "\u2699",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  chains: {
-    keywords: [ "lock", "arrest" ],
-    "char": "\u26d3",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  gun: {
-    keywords: [ "violence", "weapon", "pistol", "revolver" ],
-    "char": "\ud83d\udd2b",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  bomb: {
-    keywords: [ "boom", "explode", "explosion", "terrorism" ],
-    "char": "\ud83d\udca3",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  hocho: {
-    keywords: [ "knife", "blade", "cutlery", "kitchen", "weapon" ],
-    "char": "\ud83d\udd2a",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  dagger: {
-    keywords: [ "weapon" ],
-    "char": "\ud83d\udde1",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  crossed_swords: {
-    keywords: [ "weapon" ],
-    "char": "\u2694",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  shield: {
-    keywords: [ "protection", "security" ],
-    "char": "\ud83d\udee1",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  smoking: {
-    keywords: [ "kills", "tobacco", "cigarette", "joint", "smoke" ],
-    "char": "\ud83d\udeac",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  skull_and_crossbones: {
-    keywords: [ "poison", "danger", "deadly", "scary", "death", "pirate", "evil" ],
-    "char": "\u2620",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  coffin: {
-    keywords: [ "vampire", "dead", "die", "death", "rip", "graveyard", "cemetery", "casket", "funeral", "box" ],
-    "char": "\u26b0",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  funeral_urn: {
-    keywords: [ "dead", "die", "death", "rip", "ashes" ],
-    "char": "\u26b1",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  amphora: {
-    keywords: [ "vase", "jar" ],
-    "char": "\ud83c\udffa",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  crystal_ball: {
-    keywords: [ "disco", "party", "magic", "circus", "fortune_teller" ],
-    "char": "\ud83d\udd2e",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  prayer_beads: {
-    keywords: [ "dhikr", "religious" ],
-    "char": "\ud83d\udcff",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  barber: {
-    keywords: [ "hair", "salon", "style" ],
-    "char": "\ud83d\udc88",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  alembic: {
-    keywords: [ "distilling", "science", "experiment", "chemistry" ],
-    "char": "\u2697",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  telescope: {
-    keywords: [ "stars", "space", "zoom", "science", "astronomy" ],
-    "char": "\ud83d\udd2d",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  microscope: {
-    keywords: [ "laboratory", "experiment", "zoomin", "science", "study" ],
-    "char": "\ud83d\udd2c",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  hole: {
-    keywords: [ "embarrassing" ],
-    "char": "\ud83d\udd73",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  pill: {
-    keywords: [ "health", "medicine", "doctor", "pharmacy", "drug" ],
-    "char": "\ud83d\udc8a",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  syringe: {
-    keywords: [ "health", "hospital", "drugs", "blood", "medicine", "needle", "doctor", "nurse" ],
-    "char": "\ud83d\udc89",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  thermometer: {
-    keywords: [ "weather", "temperature", "hot", "cold" ],
-    "char": "\ud83c\udf21",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  label: {
-    keywords: [ "sale", "tag" ],
-    "char": "\ud83c\udff7",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  bookmark: {
-    keywords: [ "favorite", "label", "save" ],
-    "char": "\ud83d\udd16",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  toilet: {
-    keywords: [ "restroom", "wc", "washroom", "bathroom", "potty" ],
-    "char": "\ud83d\udebd",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  shower: {
-    keywords: [ "clean", "water", "bathroom" ],
-    "char": "\ud83d\udebf",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  bathtub: {
-    keywords: [ "clean", "shower", "bathroom" ],
-    "char": "\ud83d\udec1",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  key: {
-    keywords: [ "lock", "door", "password" ],
-    "char": "\ud83d\udd11",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  old_key: {
-    keywords: [ "lock", "door", "password" ],
-    "char": "\ud83d\udddd",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  couch_and_lamp: {
-    keywords: [ "read", "chill" ],
-    "char": "\ud83d\udecb",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  sleeping_bed: {
-    keywords: [ "bed", "rest" ],
-    "char": "\ud83d\udecc",
-    fitzpatrick_scale: true,
-    category: "objects"
-  },
-  bed: {
-    keywords: [ "sleep", "rest" ],
-    "char": "\ud83d\udecf",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  door: {
-    keywords: [ "house", "entry", "exit" ],
-    "char": "\ud83d\udeaa",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  bellhop_bell: {
-    keywords: [ "service" ],
-    "char": "\ud83d\udece",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  framed_picture: {
-    keywords: [ "photography" ],
-    "char": "\ud83d\uddbc",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  world_map: {
-    keywords: [ "location", "direction" ],
-    "char": "\ud83d\uddfa",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  parasol_on_ground: {
-    keywords: [ "weather", "summer" ],
-    "char": "\u26f1",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  moyai: {
-    keywords: [ "rock", "easter island", "moai" ],
-    "char": "\ud83d\uddff",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  shopping: {
-    keywords: [ "mall", "buy", "purchase" ],
-    "char": "\ud83d\udecd",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  shopping_cart: {
-    keywords: [ "trolley" ],
-    "char": "\ud83d\uded2",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  balloon: {
-    keywords: [ "party", "celebration", "birthday", "circus" ],
-    "char": "\ud83c\udf88",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  flags: {
-    keywords: [ "fish", "japanese", "koinobori", "carp", "banner" ],
-    "char": "\ud83c\udf8f",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  ribbon: {
-    keywords: [ "decoration", "pink", "girl", "bowtie" ],
-    "char": "\ud83c\udf80",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  gift: {
-    keywords: [ "present", "birthday", "christmas", "xmas" ],
-    "char": "\ud83c\udf81",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  confetti_ball: {
-    keywords: [ "festival", "party", "birthday", "circus" ],
-    "char": "\ud83c\udf8a",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  tada: {
-    keywords: [ "party", "congratulations", "birthday", "magic", "circus", "celebration" ],
-    "char": "\ud83c\udf89",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  dolls: {
-    keywords: [ "japanese", "toy", "kimono" ],
-    "char": "\ud83c\udf8e",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  wind_chime: {
-    keywords: [ "nature", "ding", "spring", "bell" ],
-    "char": "\ud83c\udf90",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  crossed_flags: {
-    keywords: [ "japanese", "nation", "country", "border" ],
-    "char": "\ud83c\udf8c",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  izakaya_lantern: {
-    keywords: [ "light", "paper", "halloween", "spooky" ],
-    "char": "\ud83c\udfee",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  email: {
-    keywords: [ "letter", "postal", "inbox", "communication" ],
-    "char": "\u2709\ufe0f",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  envelope_with_arrow: {
-    keywords: [ "email", "communication" ],
-    "char": "\ud83d\udce9",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  incoming_envelope: {
-    keywords: [ "email", "inbox" ],
-    "char": "\ud83d\udce8",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  "e-mail": {
-    keywords: [ "communication", "inbox" ],
-    "char": "\ud83d\udce7",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  love_letter: {
-    keywords: [ "email", "like", "affection", "envelope", "valentines" ],
-    "char": "\ud83d\udc8c",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  postbox: {
-    keywords: [ "email", "letter", "envelope" ],
-    "char": "\ud83d\udcee",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  mailbox_closed: {
-    keywords: [ "email", "communication", "inbox" ],
-    "char": "\ud83d\udcea",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  mailbox: {
-    keywords: [ "email", "inbox", "communication" ],
-    "char": "\ud83d\udceb",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  mailbox_with_mail: {
-    keywords: [ "email", "inbox", "communication" ],
-    "char": "\ud83d\udcec",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  mailbox_with_no_mail: {
-    keywords: [ "email", "inbox" ],
-    "char": "\ud83d\udced",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  "package": {
-    keywords: [ "mail", "gift", "cardboard", "box", "moving" ],
-    "char": "\ud83d\udce6",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  postal_horn: {
-    keywords: [ "instrument", "music" ],
-    "char": "\ud83d\udcef",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  inbox_tray: {
-    keywords: [ "email", "documents" ],
-    "char": "\ud83d\udce5",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  outbox_tray: {
-    keywords: [ "inbox", "email" ],
-    "char": "\ud83d\udce4",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  scroll: {
-    keywords: [ "documents", "ancient", "history", "paper" ],
-    "char": "\ud83d\udcdc",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  page_with_curl: {
-    keywords: [ "documents", "office", "paper" ],
-    "char": "\ud83d\udcc3",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  bookmark_tabs: {
-    keywords: [ "favorite", "save", "order", "tidy" ],
-    "char": "\ud83d\udcd1",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  bar_chart: {
-    keywords: [ "graph", "presentation", "stats" ],
-    "char": "\ud83d\udcca",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  chart_with_upwards_trend: {
-    keywords: [ "graph", "presentation", "stats", "recovery", "business", "economics", "money", "sales", "good", "success" ],
-    "char": "\ud83d\udcc8",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  chart_with_downwards_trend: {
-    keywords: [ "graph", "presentation", "stats", "recession", "business", "economics", "money", "sales", "bad", "failure" ],
-    "char": "\ud83d\udcc9",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  page_facing_up: {
-    keywords: [ "documents", "office", "paper", "information" ],
-    "char": "\ud83d\udcc4",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  date: {
-    keywords: [ "calendar", "schedule" ],
-    "char": "\ud83d\udcc5",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  calendar: {
-    keywords: [ "schedule", "date", "planning" ],
-    "char": "\ud83d\udcc6",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  spiral_calendar: {
-    keywords: [ "date", "schedule", "planning" ],
-    "char": "\ud83d\uddd3",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  card_index: {
-    keywords: [ "business", "stationery" ],
-    "char": "\ud83d\udcc7",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  card_file_box: {
-    keywords: [ "business", "stationery" ],
-    "char": "\ud83d\uddc3",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  ballot_box: {
-    keywords: [ "election", "vote" ],
-    "char": "\ud83d\uddf3",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  file_cabinet: {
-    keywords: [ "filing", "organizing" ],
-    "char": "\ud83d\uddc4",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  clipboard: {
-    keywords: [ "stationery", "documents" ],
-    "char": "\ud83d\udccb",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  spiral_notepad: {
-    keywords: [ "memo", "stationery" ],
-    "char": "\ud83d\uddd2",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  file_folder: {
-    keywords: [ "documents", "business", "office" ],
-    "char": "\ud83d\udcc1",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  open_file_folder: {
-    keywords: [ "documents", "load" ],
-    "char": "\ud83d\udcc2",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  card_index_dividers: {
-    keywords: [ "organizing", "business", "stationery" ],
-    "char": "\ud83d\uddc2",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  newspaper_roll: {
-    keywords: [ "press", "headline" ],
-    "char": "\ud83d\uddde",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  newspaper: {
-    keywords: [ "press", "headline" ],
-    "char": "\ud83d\udcf0",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  notebook: {
-    keywords: [ "stationery", "record", "notes", "paper", "study" ],
-    "char": "\ud83d\udcd3",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  closed_book: {
-    keywords: [ "read", "library", "knowledge", "textbook", "learn" ],
-    "char": "\ud83d\udcd5",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  green_book: {
-    keywords: [ "read", "library", "knowledge", "study" ],
-    "char": "\ud83d\udcd7",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  blue_book: {
-    keywords: [ "read", "library", "knowledge", "learn", "study" ],
-    "char": "\ud83d\udcd8",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  orange_book: {
-    keywords: [ "read", "library", "knowledge", "textbook", "study" ],
-    "char": "\ud83d\udcd9",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  notebook_with_decorative_cover: {
-    keywords: [ "classroom", "notes", "record", "paper", "study" ],
-    "char": "\ud83d\udcd4",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  ledger: {
-    keywords: [ "notes", "paper" ],
-    "char": "\ud83d\udcd2",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  books: {
-    keywords: [ "literature", "library", "study" ],
-    "char": "\ud83d\udcda",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  open_book: {
-    keywords: [ "book", "read", "library", "knowledge", "literature", "learn", "study" ],
-    "char": "\ud83d\udcd6",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  link: {
-    keywords: [ "rings", "url" ],
-    "char": "\ud83d\udd17",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  paperclip: {
-    keywords: [ "documents", "stationery" ],
-    "char": "\ud83d\udcce",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  paperclips: {
-    keywords: [ "documents", "stationery" ],
-    "char": "\ud83d\udd87",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  scissors: {
-    keywords: [ "stationery", "cut" ],
-    "char": "\u2702\ufe0f",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  triangular_ruler: {
-    keywords: [ "stationery", "math", "architect", "sketch" ],
-    "char": "\ud83d\udcd0",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  straight_ruler: {
-    keywords: [ "stationery", "calculate", "length", "math", "school", "drawing", "architect", "sketch" ],
-    "char": "\ud83d\udccf",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  pushpin: {
-    keywords: [ "stationery", "mark", "here" ],
-    "char": "\ud83d\udccc",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  round_pushpin: {
-    keywords: [ "stationery", "location", "map", "here" ],
-    "char": "\ud83d\udccd",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  triangular_flag_on_post: {
-    keywords: [ "mark", "milestone", "place" ],
-    "char": "\ud83d\udea9",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  white_flag: {
-    keywords: [ "losing", "loser", "lost", "surrender", "give up", "fail" ],
-    "char": "\ud83c\udff3",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  black_flag: {
-    keywords: [ "pirate" ],
-    "char": "\ud83c\udff4",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  rainbow_flag: {
-    keywords: [ "flag", "rainbow", "pride", "gay", "lgbt", "glbt", "queer", "homosexual", "lesbian", "bisexual", "transgender" ],
-    "char": "\ud83c\udff3\ufe0f\u200d\ud83c\udf08",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  closed_lock_with_key: {
-    keywords: [ "security", "privacy" ],
-    "char": "\ud83d\udd10",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  lock: {
-    keywords: [ "security", "password", "padlock" ],
-    "char": "\ud83d\udd12",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  unlock: {
-    keywords: [ "privacy", "security" ],
-    "char": "\ud83d\udd13",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  lock_with_ink_pen: {
-    keywords: [ "security", "secret" ],
-    "char": "\ud83d\udd0f",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  pen: {
-    keywords: [ "stationery", "writing", "write" ],
-    "char": "\ud83d\udd8a",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  fountain_pen: {
-    keywords: [ "stationery", "writing", "write" ],
-    "char": "\ud83d\udd8b",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  black_nib: {
-    keywords: [ "pen", "stationery", "writing", "write" ],
-    "char": "\u2712\ufe0f",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  memo: {
-    keywords: [ "write", "documents", "stationery", "pencil", "paper", "writing", "legal", "exam", "quiz", "test", "study", "compose" ],
-    "char": "\ud83d\udcdd",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  pencil2: {
-    keywords: [ "stationery", "write", "paper", "writing", "school", "study" ],
-    "char": "\u270f\ufe0f",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  crayon: {
-    keywords: [ "drawing", "creativity" ],
-    "char": "\ud83d\udd8d",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  paintbrush: {
-    keywords: [ "drawing", "creativity", "art" ],
-    "char": "\ud83d\udd8c",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  mag: {
-    keywords: [ "search", "zoom", "find", "detective" ],
-    "char": "\ud83d\udd0d",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  mag_right: {
-    keywords: [ "search", "zoom", "find", "detective" ],
-    "char": "\ud83d\udd0e",
-    fitzpatrick_scale: false,
-    category: "objects"
-  },
-  heart: {
-    keywords: [ "love", "like", "valentines" ],
-    "char": "\u2764\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  orange_heart: {
-    keywords: [ "love", "like", "affection", "valentines" ],
-    "char": "\ud83e\udde1",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  yellow_heart: {
-    keywords: [ "love", "like", "affection", "valentines" ],
-    "char": "\ud83d\udc9b",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  green_heart: {
-    keywords: [ "love", "like", "affection", "valentines" ],
-    "char": "\ud83d\udc9a",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  blue_heart: {
-    keywords: [ "love", "like", "affection", "valentines" ],
-    "char": "\ud83d\udc99",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  purple_heart: {
-    keywords: [ "love", "like", "affection", "valentines" ],
-    "char": "\ud83d\udc9c",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  black_heart: {
-    keywords: [ "evil" ],
-    "char": "\ud83d\udda4",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  broken_heart: {
-    keywords: [ "sad", "sorry", "break", "heart", "heartbreak" ],
-    "char": "\ud83d\udc94",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  heavy_heart_exclamation: {
-    keywords: [ "decoration", "love" ],
-    "char": "\u2763",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  two_hearts: {
-    keywords: [ "love", "like", "affection", "valentines", "heart" ],
-    "char": "\ud83d\udc95",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  revolving_hearts: {
-    keywords: [ "love", "like", "affection", "valentines" ],
-    "char": "\ud83d\udc9e",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  heartbeat: {
-    keywords: [ "love", "like", "affection", "valentines", "pink", "heart" ],
-    "char": "\ud83d\udc93",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  heartpulse: {
-    keywords: [ "like", "love", "affection", "valentines", "pink" ],
-    "char": "\ud83d\udc97",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  sparkling_heart: {
-    keywords: [ "love", "like", "affection", "valentines" ],
-    "char": "\ud83d\udc96",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  cupid: {
-    keywords: [ "love", "like", "heart", "affection", "valentines" ],
-    "char": "\ud83d\udc98",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  gift_heart: {
-    keywords: [ "love", "valentines" ],
-    "char": "\ud83d\udc9d",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  heart_decoration: {
-    keywords: [ "purple-square", "love", "like" ],
-    "char": "\ud83d\udc9f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  peace_symbol: {
-    keywords: [ "hippie" ],
-    "char": "\u262e",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  latin_cross: {
-    keywords: [ "christianity" ],
-    "char": "\u271d",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  star_and_crescent: {
-    keywords: [ "islam" ],
-    "char": "\u262a",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  om: {
-    keywords: [ "hinduism", "buddhism", "sikhism", "jainism" ],
-    "char": "\ud83d\udd49",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  wheel_of_dharma: {
-    keywords: [ "hinduism", "buddhism", "sikhism", "jainism" ],
-    "char": "\u2638",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  star_of_david: {
-    keywords: [ "judaism" ],
-    "char": "\u2721",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  six_pointed_star: {
-    keywords: [ "purple-square", "religion", "jewish", "hexagram" ],
-    "char": "\ud83d\udd2f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  menorah: {
-    keywords: [ "hanukkah", "candles", "jewish" ],
-    "char": "\ud83d\udd4e",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  yin_yang: {
-    keywords: [ "balance" ],
-    "char": "\u262f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  orthodox_cross: {
-    keywords: [ "suppedaneum", "religion" ],
-    "char": "\u2626",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  place_of_worship: {
-    keywords: [ "religion", "church", "temple", "prayer" ],
-    "char": "\ud83d\uded0",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  ophiuchus: {
-    keywords: [ "sign", "purple-square", "constellation", "astrology" ],
-    "char": "\u26ce",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  aries: {
-    keywords: [ "sign", "purple-square", "zodiac", "astrology" ],
-    "char": "\u2648",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  taurus: {
-    keywords: [ "purple-square", "sign", "zodiac", "astrology" ],
-    "char": "\u2649",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  gemini: {
-    keywords: [ "sign", "zodiac", "purple-square", "astrology" ],
-    "char": "\u264a",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  cancer: {
-    keywords: [ "sign", "zodiac", "purple-square", "astrology" ],
-    "char": "\u264b",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  leo: {
-    keywords: [ "sign", "purple-square", "zodiac", "astrology" ],
-    "char": "\u264c",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  virgo: {
-    keywords: [ "sign", "zodiac", "purple-square", "astrology" ],
-    "char": "\u264d",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  libra: {
-    keywords: [ "sign", "purple-square", "zodiac", "astrology" ],
-    "char": "\u264e",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  scorpius: {
-    keywords: [ "sign", "zodiac", "purple-square", "astrology", "scorpio" ],
-    "char": "\u264f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  sagittarius: {
-    keywords: [ "sign", "zodiac", "purple-square", "astrology" ],
-    "char": "\u2650",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  capricorn: {
-    keywords: [ "sign", "zodiac", "purple-square", "astrology" ],
-    "char": "\u2651",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  aquarius: {
-    keywords: [ "sign", "purple-square", "zodiac", "astrology" ],
-    "char": "\u2652",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  pisces: {
-    keywords: [ "purple-square", "sign", "zodiac", "astrology" ],
-    "char": "\u2653",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  id: {
-    keywords: [ "purple-square", "words" ],
-    "char": "\ud83c\udd94",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  atom_symbol: {
-    keywords: [ "science", "physics", "chemistry" ],
-    "char": "\u269b",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  u7a7a: {
-    keywords: [ "kanji", "japanese", "chinese", "empty", "sky", "blue-square" ],
-    "char": "\ud83c\ude33",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  u5272: {
-    keywords: [ "cut", "divide", "chinese", "kanji", "pink-square" ],
-    "char": "\ud83c\ude39",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  radioactive: {
-    keywords: [ "nuclear", "danger" ],
-    "char": "\u2622",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  biohazard: {
-    keywords: [ "danger" ],
-    "char": "\u2623",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  mobile_phone_off: {
-    keywords: [ "mute", "orange-square", "silence", "quiet" ],
-    "char": "\ud83d\udcf4",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  vibration_mode: {
-    keywords: [ "orange-square", "phone" ],
-    "char": "\ud83d\udcf3",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  u6709: {
-    keywords: [ "orange-square", "chinese", "have", "kanji" ],
-    "char": "\ud83c\ude36",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  u7121: {
-    keywords: [ "nothing", "chinese", "kanji", "japanese", "orange-square" ],
-    "char": "\ud83c\ude1a",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  u7533: {
-    keywords: [ "chinese", "japanese", "kanji", "orange-square" ],
-    "char": "\ud83c\ude38",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  u55b6: {
-    keywords: [ "japanese", "opening hours", "orange-square" ],
-    "char": "\ud83c\ude3a",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  u6708: {
-    keywords: [ "chinese", "month", "moon", "japanese", "orange-square", "kanji" ],
-    "char": "\ud83c\ude37\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  eight_pointed_black_star: {
-    keywords: [ "orange-square", "shape", "polygon" ],
-    "char": "\u2734\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  vs: {
-    keywords: [ "words", "orange-square" ],
-    "char": "\ud83c\udd9a",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  accept: {
-    keywords: [ "ok", "good", "chinese", "kanji", "agree", "yes", "orange-circle" ],
-    "char": "\ud83c\ude51",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  white_flower: {
-    keywords: [ "japanese", "spring" ],
-    "char": "\ud83d\udcae",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  ideograph_advantage: {
-    keywords: [ "chinese", "kanji", "obtain", "get", "circle" ],
-    "char": "\ud83c\ude50",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  secret: {
-    keywords: [ "privacy", "chinese", "sshh", "kanji", "red-circle" ],
-    "char": "\u3299\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  congratulations: {
-    keywords: [ "chinese", "kanji", "japanese", "red-circle" ],
-    "char": "\u3297\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  u5408: {
-    keywords: [ "japanese", "chinese", "join", "kanji", "red-square" ],
-    "char": "\ud83c\ude34",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  u6e80: {
-    keywords: [ "full", "chinese", "japanese", "red-square", "kanji" ],
-    "char": "\ud83c\ude35",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  u7981: {
-    keywords: [ "kanji", "japanese", "chinese", "forbidden", "limit", "restricted", "red-square" ],
-    "char": "\ud83c\ude32",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  a: {
-    keywords: [ "red-square", "alphabet", "letter" ],
-    "char": "\ud83c\udd70\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  b: {
-    keywords: [ "red-square", "alphabet", "letter" ],
-    "char": "\ud83c\udd71\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  ab: {
-    keywords: [ "red-square", "alphabet" ],
-    "char": "\ud83c\udd8e",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  cl: {
-    keywords: [ "alphabet", "words", "red-square" ],
-    "char": "\ud83c\udd91",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  o2: {
-    keywords: [ "alphabet", "red-square", "letter" ],
-    "char": "\ud83c\udd7e\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  sos: {
-    keywords: [ "help", "red-square", "words", "emergency", "911" ],
-    "char": "\ud83c\udd98",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  no_entry: {
-    keywords: [ "limit", "security", "privacy", "bad", "denied", "stop", "circle" ],
-    "char": "\u26d4",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  name_badge: {
-    keywords: [ "fire", "forbid" ],
-    "char": "\ud83d\udcdb",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  no_entry_sign: {
-    keywords: [ "forbid", "stop", "limit", "denied", "disallow", "circle" ],
-    "char": "\ud83d\udeab",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  x: {
-    keywords: [ "no", "delete", "remove", "cancel" ],
-    "char": "\u274c",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  o: {
-    keywords: [ "circle", "round" ],
-    "char": "\u2b55",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  stop_sign: {
-    keywords: [ "stop" ],
-    "char": "\ud83d\uded1",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  anger: {
-    keywords: [ "angry", "mad" ],
-    "char": "\ud83d\udca2",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  hotsprings: {
-    keywords: [ "bath", "warm", "relax" ],
-    "char": "\u2668\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  no_pedestrians: {
-    keywords: [ "rules", "crossing", "walking", "circle" ],
-    "char": "\ud83d\udeb7",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  do_not_litter: {
-    keywords: [ "trash", "bin", "garbage", "circle" ],
-    "char": "\ud83d\udeaf",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  no_bicycles: {
-    keywords: [ "cyclist", "prohibited", "circle" ],
-    "char": "\ud83d\udeb3",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  "non-potable_water": {
-    keywords: [ "drink", "faucet", "tap", "circle" ],
-    "char": "\ud83d\udeb1",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  underage: {
-    keywords: [ "18", "drink", "pub", "night", "minor", "circle" ],
-    "char": "\ud83d\udd1e",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  no_mobile_phones: {
-    keywords: [ "iphone", "mute", "circle" ],
-    "char": "\ud83d\udcf5",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  exclamation: {
-    keywords: [ "heavy_exclamation_mark", "danger", "surprise", "punctuation", "wow", "warning" ],
-    "char": "\u2757",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  grey_exclamation: {
-    keywords: [ "surprise", "punctuation", "gray", "wow", "warning" ],
-    "char": "\u2755",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  question: {
-    keywords: [ "doubt", "confused" ],
-    "char": "\u2753",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  grey_question: {
-    keywords: [ "doubts", "gray", "huh", "confused" ],
-    "char": "\u2754",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  bangbang: {
-    keywords: [ "exclamation", "surprise" ],
-    "char": "\u203c\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  interrobang: {
-    keywords: [ "wat", "punctuation", "surprise" ],
-    "char": "\u2049\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  100: {
-    keywords: [ "score", "perfect", "numbers", "century", "exam", "quiz", "test", "pass", "hundred" ],
-    "char": "\ud83d\udcaf",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  low_brightness: {
-    keywords: [ "sun", "afternoon", "warm", "summer" ],
-    "char": "\ud83d\udd05",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  high_brightness: {
-    keywords: [ "sun", "light" ],
-    "char": "\ud83d\udd06",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  trident: {
-    keywords: [ "weapon", "spear" ],
-    "char": "\ud83d\udd31",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  fleur_de_lis: {
-    keywords: [ "decorative", "scout" ],
-    "char": "\u269c",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  part_alternation_mark: {
-    keywords: [ "graph", "presentation", "stats", "business", "economics", "bad" ],
-    "char": "\u303d\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  warning: {
-    keywords: [ "exclamation", "wip", "alert", "error", "problem", "issue" ],
-    "char": "\u26a0\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  children_crossing: {
-    keywords: [ "school", "warning", "danger", "sign", "driving", "yellow-diamond" ],
-    "char": "\ud83d\udeb8",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  beginner: {
-    keywords: [ "badge", "shield" ],
-    "char": "\ud83d\udd30",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  recycle: {
-    keywords: [ "arrow", "environment", "garbage", "trash" ],
-    "char": "\u267b\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  u6307: {
-    keywords: [ "chinese", "point", "green-square", "kanji" ],
-    "char": "\ud83c\ude2f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  chart: {
-    keywords: [ "green-square", "graph", "presentation", "stats" ],
-    "char": "\ud83d\udcb9",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  sparkle: {
-    keywords: [ "stars", "green-square", "awesome", "good", "fireworks" ],
-    "char": "\u2747\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  eight_spoked_asterisk: {
-    keywords: [ "star", "sparkle", "green-square" ],
-    "char": "\u2733\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  negative_squared_cross_mark: {
-    keywords: [ "x", "green-square", "no", "deny" ],
-    "char": "\u274e",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  white_check_mark: {
-    keywords: [ "green-square", "ok", "agree", "vote", "election", "answer", "tick" ],
-    "char": "\u2705",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  diamond_shape_with_a_dot_inside: {
-    keywords: [ "jewel", "blue", "gem", "crystal", "fancy" ],
-    "char": "\ud83d\udca0",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  cyclone: {
-    keywords: [ "weather", "swirl", "blue", "cloud", "vortex", "spiral", "whirlpool", "spin", "tornado", "hurricane", "typhoon" ],
-    "char": "\ud83c\udf00",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  loop: {
-    keywords: [ "tape", "cassette" ],
-    "char": "\u27bf",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  globe_with_meridians: {
-    keywords: [ "earth", "international", "world", "internet", "interweb", "i18n" ],
-    "char": "\ud83c\udf10",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  m: {
-    keywords: [ "alphabet", "blue-circle", "letter" ],
-    "char": "\u24c2\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  atm: {
-    keywords: [ "money", "sales", "cash", "blue-square", "payment", "bank" ],
-    "char": "\ud83c\udfe7",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  sa: {
-    keywords: [ "japanese", "blue-square", "katakana" ],
-    "char": "\ud83c\ude02\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  passport_control: {
-    keywords: [ "custom", "blue-square" ],
-    "char": "\ud83d\udec2",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  customs: {
-    keywords: [ "passport", "border", "blue-square" ],
-    "char": "\ud83d\udec3",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  baggage_claim: {
-    keywords: [ "blue-square", "airport", "transport" ],
-    "char": "\ud83d\udec4",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  left_luggage: {
-    keywords: [ "blue-square", "travel" ],
-    "char": "\ud83d\udec5",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  wheelchair: {
-    keywords: [ "blue-square", "disabled", "a11y", "accessibility" ],
-    "char": "\u267f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  no_smoking: {
-    keywords: [ "cigarette", "blue-square", "smell", "smoke" ],
-    "char": "\ud83d\udead",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  wc: {
-    keywords: [ "toilet", "restroom", "blue-square" ],
-    "char": "\ud83d\udebe",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  parking: {
-    keywords: [ "cars", "blue-square", "alphabet", "letter" ],
-    "char": "\ud83c\udd7f\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  potable_water: {
-    keywords: [ "blue-square", "liquid", "restroom", "cleaning", "faucet" ],
-    "char": "\ud83d\udeb0",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  mens: {
-    keywords: [ "toilet", "restroom", "wc", "blue-square", "gender", "male" ],
-    "char": "\ud83d\udeb9",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  womens: {
-    keywords: [ "purple-square", "woman", "female", "toilet", "loo", "restroom", "gender" ],
-    "char": "\ud83d\udeba",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  baby_symbol: {
-    keywords: [ "orange-square", "child" ],
-    "char": "\ud83d\udebc",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  restroom: {
-    keywords: [ "blue-square", "toilet", "refresh", "wc", "gender" ],
-    "char": "\ud83d\udebb",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  put_litter_in_its_place: {
-    keywords: [ "blue-square", "sign", "human", "info" ],
-    "char": "\ud83d\udeae",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  cinema: {
-    keywords: [ "blue-square", "record", "film", "movie", "curtain", "stage", "theater" ],
-    "char": "\ud83c\udfa6",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  signal_strength: {
-    keywords: [ "blue-square", "reception", "phone", "internet", "connection", "wifi", "bluetooth", "bars" ],
-    "char": "\ud83d\udcf6",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  koko: {
-    keywords: [ "blue-square", "here", "katakana", "japanese", "destination" ],
-    "char": "\ud83c\ude01",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  ng: {
-    keywords: [ "blue-square", "words", "shape", "icon" ],
-    "char": "\ud83c\udd96",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  ok: {
-    keywords: [ "good", "agree", "yes", "blue-square" ],
-    "char": "\ud83c\udd97",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  up: {
-    keywords: [ "blue-square", "above", "high" ],
-    "char": "\ud83c\udd99",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  cool: {
-    keywords: [ "words", "blue-square" ],
-    "char": "\ud83c\udd92",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  "new": {
-    keywords: [ "blue-square", "words", "start" ],
-    "char": "\ud83c\udd95",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  free: {
-    keywords: [ "blue-square", "words" ],
-    "char": "\ud83c\udd93",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  zero: {
-    keywords: [ "0", "numbers", "blue-square", "null" ],
-    "char": "0\ufe0f\u20e3",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  one: {
-    keywords: [ "blue-square", "numbers", "1" ],
-    "char": "1\ufe0f\u20e3",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  two: {
-    keywords: [ "numbers", "2", "prime", "blue-square" ],
-    "char": "2\ufe0f\u20e3",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  three: {
-    keywords: [ "3", "numbers", "prime", "blue-square" ],
-    "char": "3\ufe0f\u20e3",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  four: {
-    keywords: [ "4", "numbers", "blue-square" ],
-    "char": "4\ufe0f\u20e3",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  five: {
-    keywords: [ "5", "numbers", "blue-square", "prime" ],
-    "char": "5\ufe0f\u20e3",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  six: {
-    keywords: [ "6", "numbers", "blue-square" ],
-    "char": "6\ufe0f\u20e3",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  seven: {
-    keywords: [ "7", "numbers", "blue-square", "prime" ],
-    "char": "7\ufe0f\u20e3",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  eight: {
-    keywords: [ "8", "blue-square", "numbers" ],
-    "char": "8\ufe0f\u20e3",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  nine: {
-    keywords: [ "blue-square", "numbers", "9" ],
-    "char": "9\ufe0f\u20e3",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  keycap_ten: {
-    keywords: [ "numbers", "10", "blue-square" ],
-    "char": "\ud83d\udd1f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  asterisk: {
-    keywords: [ "star", "keycap" ],
-    "char": "*\u20e3",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  1234: {
-    keywords: [ "numbers", "blue-square" ],
-    "char": "\ud83d\udd22",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  eject_button: {
-    keywords: [ "blue-square" ],
-    "char": "\u23cf\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  arrow_forward: {
-    keywords: [ "blue-square", "right", "direction", "play" ],
-    "char": "\u25b6\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  pause_button: {
-    keywords: [ "pause", "blue-square" ],
-    "char": "\u23f8",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  next_track_button: {
-    keywords: [ "forward", "next", "blue-square" ],
-    "char": "\u23ed",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  stop_button: {
-    keywords: [ "blue-square" ],
-    "char": "\u23f9",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  record_button: {
-    keywords: [ "blue-square" ],
-    "char": "\u23fa",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  play_or_pause_button: {
-    keywords: [ "blue-square", "play", "pause" ],
-    "char": "\u23ef",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  previous_track_button: {
-    keywords: [ "backward" ],
-    "char": "\u23ee",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  fast_forward: {
-    keywords: [ "blue-square", "play", "speed", "continue" ],
-    "char": "\u23e9",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  rewind: {
-    keywords: [ "play", "blue-square" ],
-    "char": "\u23ea",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  twisted_rightwards_arrows: {
-    keywords: [ "blue-square", "shuffle", "music", "random" ],
-    "char": "\ud83d\udd00",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  repeat: {
-    keywords: [ "loop", "record" ],
-    "char": "\ud83d\udd01",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  repeat_one: {
-    keywords: [ "blue-square", "loop" ],
-    "char": "\ud83d\udd02",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  arrow_backward: {
-    keywords: [ "blue-square", "left", "direction" ],
-    "char": "\u25c0\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  arrow_up_small: {
-    keywords: [ "blue-square", "triangle", "direction", "point", "forward", "top" ],
-    "char": "\ud83d\udd3c",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  arrow_down_small: {
-    keywords: [ "blue-square", "direction", "bottom" ],
-    "char": "\ud83d\udd3d",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  arrow_double_up: {
-    keywords: [ "blue-square", "direction", "top" ],
-    "char": "\u23eb",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  arrow_double_down: {
-    keywords: [ "blue-square", "direction", "bottom" ],
-    "char": "\u23ec",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  arrow_right: {
-    keywords: [ "blue-square", "next" ],
-    "char": "\u27a1\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  arrow_left: {
-    keywords: [ "blue-square", "previous", "back" ],
-    "char": "\u2b05\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  arrow_up: {
-    keywords: [ "blue-square", "continue", "top", "direction" ],
-    "char": "\u2b06\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  arrow_down: {
-    keywords: [ "blue-square", "direction", "bottom" ],
-    "char": "\u2b07\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  arrow_upper_right: {
-    keywords: [ "blue-square", "point", "direction", "diagonal", "northeast" ],
-    "char": "\u2197\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  arrow_lower_right: {
-    keywords: [ "blue-square", "direction", "diagonal", "southeast" ],
-    "char": "\u2198\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  arrow_lower_left: {
-    keywords: [ "blue-square", "direction", "diagonal", "southwest" ],
-    "char": "\u2199\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  arrow_upper_left: {
-    keywords: [ "blue-square", "point", "direction", "diagonal", "northwest" ],
-    "char": "\u2196\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  arrow_up_down: {
-    keywords: [ "blue-square", "direction", "way", "vertical" ],
-    "char": "\u2195\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  left_right_arrow: {
-    keywords: [ "shape", "direction", "horizontal", "sideways" ],
-    "char": "\u2194\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  arrows_counterclockwise: {
-    keywords: [ "blue-square", "sync", "cycle" ],
-    "char": "\ud83d\udd04",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  arrow_right_hook: {
-    keywords: [ "blue-square", "return", "rotate", "direction" ],
-    "char": "\u21aa\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  leftwards_arrow_with_hook: {
-    keywords: [ "back", "return", "blue-square", "undo", "enter" ],
-    "char": "\u21a9\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  arrow_heading_up: {
-    keywords: [ "blue-square", "direction", "top" ],
-    "char": "\u2934\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  arrow_heading_down: {
-    keywords: [ "blue-square", "direction", "bottom" ],
-    "char": "\u2935\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  hash: {
-    keywords: [ "symbol", "blue-square", "twitter" ],
-    "char": "#\ufe0f\u20e3",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  information_source: {
-    keywords: [ "blue-square", "alphabet", "letter" ],
-    "char": "\u2139\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  abc: {
-    keywords: [ "blue-square", "alphabet" ],
-    "char": "\ud83d\udd24",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  abcd: {
-    keywords: [ "blue-square", "alphabet" ],
-    "char": "\ud83d\udd21",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  capital_abcd: {
-    keywords: [ "alphabet", "words", "blue-square" ],
-    "char": "\ud83d\udd20",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  symbols: {
-    keywords: [ "blue-square", "music", "note", "ampersand", "percent", "glyphs", "characters" ],
-    "char": "\ud83d\udd23",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  musical_note: {
-    keywords: [ "score", "tone", "sound" ],
-    "char": "\ud83c\udfb5",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  notes: {
-    keywords: [ "music", "score" ],
-    "char": "\ud83c\udfb6",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  wavy_dash: {
-    keywords: [ "draw", "line", "moustache", "mustache", "squiggle", "scribble" ],
-    "char": "\u3030\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  curly_loop: {
-    keywords: [ "scribble", "draw", "shape", "squiggle" ],
-    "char": "\u27b0",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  heavy_check_mark: {
-    keywords: [ "ok", "nike", "answer", "yes", "tick" ],
-    "char": "\u2714\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  arrows_clockwise: {
-    keywords: [ "sync", "cycle", "round", "repeat" ],
-    "char": "\ud83d\udd03",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  heavy_plus_sign: {
-    keywords: [ "math", "calculation", "addition", "more", "increase" ],
-    "char": "\u2795",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  heavy_minus_sign: {
-    keywords: [ "math", "calculation", "subtract", "less" ],
-    "char": "\u2796",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  heavy_division_sign: {
-    keywords: [ "divide", "math", "calculation" ],
-    "char": "\u2797",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  heavy_multiplication_x: {
-    keywords: [ "math", "calculation" ],
-    "char": "\u2716\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  heavy_dollar_sign: {
-    keywords: [ "money", "sales", "payment", "currency", "buck" ],
-    "char": "\ud83d\udcb2",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  currency_exchange: {
-    keywords: [ "money", "sales", "dollar", "travel" ],
-    "char": "\ud83d\udcb1",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  copyright: {
-    keywords: [ "ip", "license", "circle", "law", "legal" ],
-    "char": "\xa9\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  registered: {
-    keywords: [ "alphabet", "circle" ],
-    "char": "\xae\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  tm: {
-    keywords: [ "trademark", "brand", "law", "legal" ],
-    "char": "\u2122\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  end: {
-    keywords: [ "words", "arrow" ],
-    "char": "\ud83d\udd1a",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  back: {
-    keywords: [ "arrow", "words", "return" ],
-    "char": "\ud83d\udd19",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  on: {
-    keywords: [ "arrow", "words" ],
-    "char": "\ud83d\udd1b",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  top: {
-    keywords: [ "words", "blue-square" ],
-    "char": "\ud83d\udd1d",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  soon: {
-    keywords: [ "arrow", "words" ],
-    "char": "\ud83d\udd1c",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  ballot_box_with_check: {
-    keywords: [ "ok", "agree", "confirm", "black-square", "vote", "election", "yes", "tick" ],
-    "char": "\u2611\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  radio_button: {
-    keywords: [ "input", "old", "music", "circle" ],
-    "char": "\ud83d\udd18",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  white_circle: {
-    keywords: [ "shape", "round" ],
-    "char": "\u26aa",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  black_circle: {
-    keywords: [ "shape", "button", "round" ],
-    "char": "\u26ab",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  red_circle: {
-    keywords: [ "shape", "error", "danger" ],
-    "char": "\ud83d\udd34",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  large_blue_circle: {
-    keywords: [ "shape", "icon", "button" ],
-    "char": "\ud83d\udd35",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  small_orange_diamond: {
-    keywords: [ "shape", "jewel", "gem" ],
-    "char": "\ud83d\udd38",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  small_blue_diamond: {
-    keywords: [ "shape", "jewel", "gem" ],
-    "char": "\ud83d\udd39",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  large_orange_diamond: {
-    keywords: [ "shape", "jewel", "gem" ],
-    "char": "\ud83d\udd36",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  large_blue_diamond: {
-    keywords: [ "shape", "jewel", "gem" ],
-    "char": "\ud83d\udd37",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  small_red_triangle: {
-    keywords: [ "shape", "direction", "up", "top" ],
-    "char": "\ud83d\udd3a",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  black_small_square: {
-    keywords: [ "shape", "icon" ],
-    "char": "\u25aa\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  white_small_square: {
-    keywords: [ "shape", "icon" ],
-    "char": "\u25ab\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  black_large_square: {
-    keywords: [ "shape", "icon", "button" ],
-    "char": "\u2b1b",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  white_large_square: {
-    keywords: [ "shape", "icon", "stone", "button" ],
-    "char": "\u2b1c",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  small_red_triangle_down: {
-    keywords: [ "shape", "direction", "bottom" ],
-    "char": "\ud83d\udd3b",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  black_medium_square: {
-    keywords: [ "shape", "button", "icon" ],
-    "char": "\u25fc\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  white_medium_square: {
-    keywords: [ "shape", "stone", "icon" ],
-    "char": "\u25fb\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  black_medium_small_square: {
-    keywords: [ "icon", "shape", "button" ],
-    "char": "\u25fe",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  white_medium_small_square: {
-    keywords: [ "shape", "stone", "icon", "button" ],
-    "char": "\u25fd",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  black_square_button: {
-    keywords: [ "shape", "input", "frame" ],
-    "char": "\ud83d\udd32",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  white_square_button: {
-    keywords: [ "shape", "input" ],
-    "char": "\ud83d\udd33",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  speaker: {
-    keywords: [ "sound", "volume", "silence", "broadcast" ],
-    "char": "\ud83d\udd08",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  sound: {
-    keywords: [ "volume", "speaker", "broadcast" ],
-    "char": "\ud83d\udd09",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  loud_sound: {
-    keywords: [ "volume", "noise", "noisy", "speaker", "broadcast" ],
-    "char": "\ud83d\udd0a",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  mute: {
-    keywords: [ "sound", "volume", "silence", "quiet" ],
-    "char": "\ud83d\udd07",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  mega: {
-    keywords: [ "sound", "speaker", "volume" ],
-    "char": "\ud83d\udce3",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  loudspeaker: {
-    keywords: [ "volume", "sound" ],
-    "char": "\ud83d\udce2",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  bell: {
-    keywords: [ "sound", "notification", "christmas", "xmas", "chime" ],
-    "char": "\ud83d\udd14",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  no_bell: {
-    keywords: [ "sound", "volume", "mute", "quiet", "silent" ],
-    "char": "\ud83d\udd15",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  black_joker: {
-    keywords: [ "poker", "cards", "game", "play", "magic" ],
-    "char": "\ud83c\udccf",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  mahjong: {
-    keywords: [ "game", "play", "chinese", "kanji" ],
-    "char": "\ud83c\udc04",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  spades: {
-    keywords: [ "poker", "cards", "suits", "magic" ],
-    "char": "\u2660\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clubs: {
-    keywords: [ "poker", "cards", "magic", "suits" ],
-    "char": "\u2663\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  hearts: {
-    keywords: [ "poker", "cards", "magic", "suits" ],
-    "char": "\u2665\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  diamonds: {
-    keywords: [ "poker", "cards", "magic", "suits" ],
-    "char": "\u2666\ufe0f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  flower_playing_cards: {
-    keywords: [ "game", "sunset", "red" ],
-    "char": "\ud83c\udfb4",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  thought_balloon: {
-    keywords: [ "bubble", "cloud", "speech", "thinking", "dream" ],
-    "char": "\ud83d\udcad",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  right_anger_bubble: {
-    keywords: [ "caption", "speech", "thinking", "mad" ],
-    "char": "\ud83d\uddef",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  speech_balloon: {
-    keywords: [ "bubble", "words", "message", "talk", "chatting" ],
-    "char": "\ud83d\udcac",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  left_speech_bubble: {
-    keywords: [ "words", "message", "talk", "chatting" ],
-    "char": "\ud83d\udde8",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clock1: {
-    keywords: [ "time", "late", "early", "schedule" ],
-    "char": "\ud83d\udd50",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clock2: {
-    keywords: [ "time", "late", "early", "schedule" ],
-    "char": "\ud83d\udd51",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clock3: {
-    keywords: [ "time", "late", "early", "schedule" ],
-    "char": "\ud83d\udd52",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clock4: {
-    keywords: [ "time", "late", "early", "schedule" ],
-    "char": "\ud83d\udd53",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clock5: {
-    keywords: [ "time", "late", "early", "schedule" ],
-    "char": "\ud83d\udd54",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clock6: {
-    keywords: [ "time", "late", "early", "schedule", "dawn", "dusk" ],
-    "char": "\ud83d\udd55",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clock7: {
-    keywords: [ "time", "late", "early", "schedule" ],
-    "char": "\ud83d\udd56",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clock8: {
-    keywords: [ "time", "late", "early", "schedule" ],
-    "char": "\ud83d\udd57",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clock9: {
-    keywords: [ "time", "late", "early", "schedule" ],
-    "char": "\ud83d\udd58",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clock10: {
-    keywords: [ "time", "late", "early", "schedule" ],
-    "char": "\ud83d\udd59",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clock11: {
-    keywords: [ "time", "late", "early", "schedule" ],
-    "char": "\ud83d\udd5a",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clock12: {
-    keywords: [ "time", "noon", "midnight", "midday", "late", "early", "schedule" ],
-    "char": "\ud83d\udd5b",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clock130: {
-    keywords: [ "time", "late", "early", "schedule" ],
-    "char": "\ud83d\udd5c",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clock230: {
-    keywords: [ "time", "late", "early", "schedule" ],
-    "char": "\ud83d\udd5d",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clock330: {
-    keywords: [ "time", "late", "early", "schedule" ],
-    "char": "\ud83d\udd5e",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clock430: {
-    keywords: [ "time", "late", "early", "schedule" ],
-    "char": "\ud83d\udd5f",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clock530: {
-    keywords: [ "time", "late", "early", "schedule" ],
-    "char": "\ud83d\udd60",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clock630: {
-    keywords: [ "time", "late", "early", "schedule" ],
-    "char": "\ud83d\udd61",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clock730: {
-    keywords: [ "time", "late", "early", "schedule" ],
-    "char": "\ud83d\udd62",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clock830: {
-    keywords: [ "time", "late", "early", "schedule" ],
-    "char": "\ud83d\udd63",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clock930: {
-    keywords: [ "time", "late", "early", "schedule" ],
-    "char": "\ud83d\udd64",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clock1030: {
-    keywords: [ "time", "late", "early", "schedule" ],
-    "char": "\ud83d\udd65",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clock1130: {
-    keywords: [ "time", "late", "early", "schedule" ],
-    "char": "\ud83d\udd66",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  clock1230: {
-    keywords: [ "time", "late", "early", "schedule" ],
-    "char": "\ud83d\udd67",
-    fitzpatrick_scale: false,
-    category: "symbols"
-  },
-  afghanistan: {
-    keywords: [ "af", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde6\ud83c\uddeb",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  aland_islands: {
-    keywords: [ "\xc5land", "islands", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde6\ud83c\uddfd",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  albania: {
-    keywords: [ "al", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde6\ud83c\uddf1",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  algeria: {
-    keywords: [ "dz", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde9\ud83c\uddff",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  american_samoa: {
-    keywords: [ "american", "ws", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde6\ud83c\uddf8",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  andorra: {
-    keywords: [ "ad", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde6\ud83c\udde9",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  angola: {
-    keywords: [ "ao", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde6\ud83c\uddf4",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  anguilla: {
-    keywords: [ "ai", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde6\ud83c\uddee",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  antarctica: {
-    keywords: [ "aq", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde6\ud83c\uddf6",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  antigua_barbuda: {
-    keywords: [ "antigua", "barbuda", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde6\ud83c\uddec",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  argentina: {
-    keywords: [ "ar", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde6\ud83c\uddf7",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  armenia: {
-    keywords: [ "am", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde6\ud83c\uddf2",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  aruba: {
-    keywords: [ "aw", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde6\ud83c\uddfc",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  australia: {
-    keywords: [ "au", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde6\ud83c\uddfa",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  austria: {
-    keywords: [ "at", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde6\ud83c\uddf9",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  azerbaijan: {
-    keywords: [ "az", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde6\ud83c\uddff",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  bahamas: {
-    keywords: [ "bs", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde7\ud83c\uddf8",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  bahrain: {
-    keywords: [ "bh", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde7\ud83c\udded",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  bangladesh: {
-    keywords: [ "bd", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde7\ud83c\udde9",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  barbados: {
-    keywords: [ "bb", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde7\ud83c\udde7",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  belarus: {
-    keywords: [ "by", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde7\ud83c\uddfe",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  belgium: {
-    keywords: [ "be", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde7\ud83c\uddea",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  belize: {
-    keywords: [ "bz", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde7\ud83c\uddff",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  benin: {
-    keywords: [ "bj", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde7\ud83c\uddef",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  bermuda: {
-    keywords: [ "bm", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde7\ud83c\uddf2",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  bhutan: {
-    keywords: [ "bt", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde7\ud83c\uddf9",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  bolivia: {
-    keywords: [ "bo", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde7\ud83c\uddf4",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  caribbean_netherlands: {
-    keywords: [ "bonaire", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde7\ud83c\uddf6",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  bosnia_herzegovina: {
-    keywords: [ "bosnia", "herzegovina", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde7\ud83c\udde6",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  botswana: {
-    keywords: [ "bw", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde7\ud83c\uddfc",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  brazil: {
-    keywords: [ "br", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde7\ud83c\uddf7",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  british_indian_ocean_territory: {
-    keywords: [ "british", "indian", "ocean", "territory", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddee\ud83c\uddf4",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  british_virgin_islands: {
-    keywords: [ "british", "virgin", "islands", "bvi", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddfb\ud83c\uddec",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  brunei: {
-    keywords: [ "bn", "darussalam", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde7\ud83c\uddf3",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  bulgaria: {
-    keywords: [ "bg", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde7\ud83c\uddec",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  burkina_faso: {
-    keywords: [ "burkina", "faso", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde7\ud83c\uddeb",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  burundi: {
-    keywords: [ "bi", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde7\ud83c\uddee",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  cape_verde: {
-    keywords: [ "cabo", "verde", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde8\ud83c\uddfb",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  cambodia: {
-    keywords: [ "kh", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf0\ud83c\udded",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  cameroon: {
-    keywords: [ "cm", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde8\ud83c\uddf2",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  canada: {
-    keywords: [ "ca", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde8\ud83c\udde6",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  canary_islands: {
-    keywords: [ "canary", "islands", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddee\ud83c\udde8",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  cayman_islands: {
-    keywords: [ "cayman", "islands", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf0\ud83c\uddfe",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  central_african_republic: {
-    keywords: [ "central", "african", "republic", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde8\ud83c\uddeb",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  chad: {
-    keywords: [ "td", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf9\ud83c\udde9",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  chile: {
-    keywords: [ "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde8\ud83c\uddf1",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  cn: {
-    keywords: [ "china", "chinese", "prc", "flag", "country", "nation", "banner" ],
-    "char": "\ud83c\udde8\ud83c\uddf3",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  christmas_island: {
-    keywords: [ "christmas", "island", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde8\ud83c\uddfd",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  cocos_islands: {
-    keywords: [ "cocos", "keeling", "islands", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde8\ud83c\udde8",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  colombia: {
-    keywords: [ "co", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde8\ud83c\uddf4",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  comoros: {
-    keywords: [ "km", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf0\ud83c\uddf2",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  congo_brazzaville: {
-    keywords: [ "congo", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde8\ud83c\uddec",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  congo_kinshasa: {
-    keywords: [ "congo", "democratic", "republic", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde8\ud83c\udde9",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  cook_islands: {
-    keywords: [ "cook", "islands", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde8\ud83c\uddf0",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  costa_rica: {
-    keywords: [ "costa", "rica", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde8\ud83c\uddf7",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  croatia: {
-    keywords: [ "hr", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udded\ud83c\uddf7",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  cuba: {
-    keywords: [ "cu", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde8\ud83c\uddfa",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  curacao: {
-    keywords: [ "cura\xe7ao", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde8\ud83c\uddfc",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  cyprus: {
-    keywords: [ "cy", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde8\ud83c\uddfe",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  czech_republic: {
-    keywords: [ "cz", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde8\ud83c\uddff",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  denmark: {
-    keywords: [ "dk", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde9\ud83c\uddf0",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  djibouti: {
-    keywords: [ "dj", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde9\ud83c\uddef",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  dominica: {
-    keywords: [ "dm", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde9\ud83c\uddf2",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  dominican_republic: {
-    keywords: [ "dominican", "republic", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde9\ud83c\uddf4",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  ecuador: {
-    keywords: [ "ec", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddea\ud83c\udde8",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  egypt: {
-    keywords: [ "eg", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddea\ud83c\uddec",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  el_salvador: {
-    keywords: [ "el", "salvador", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf8\ud83c\uddfb",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  equatorial_guinea: {
-    keywords: [ "equatorial", "gn", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddec\ud83c\uddf6",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  eritrea: {
-    keywords: [ "er", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddea\ud83c\uddf7",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  estonia: {
-    keywords: [ "ee", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddea\ud83c\uddea",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  ethiopia: {
-    keywords: [ "et", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddea\ud83c\uddf9",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  eu: {
-    keywords: [ "european", "union", "flag", "banner" ],
-    "char": "\ud83c\uddea\ud83c\uddfa",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  falkland_islands: {
-    keywords: [ "falkland", "islands", "malvinas", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddeb\ud83c\uddf0",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  faroe_islands: {
-    keywords: [ "faroe", "islands", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddeb\ud83c\uddf4",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  fiji: {
-    keywords: [ "fj", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddeb\ud83c\uddef",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  finland: {
-    keywords: [ "fi", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddeb\ud83c\uddee",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  fr: {
-    keywords: [ "banner", "flag", "nation", "france", "french", "country" ],
-    "char": "\ud83c\uddeb\ud83c\uddf7",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  french_guiana: {
-    keywords: [ "french", "guiana", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddec\ud83c\uddeb",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  french_polynesia: {
-    keywords: [ "french", "polynesia", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf5\ud83c\uddeb",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  french_southern_territories: {
-    keywords: [ "french", "southern", "territories", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf9\ud83c\uddeb",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  gabon: {
-    keywords: [ "ga", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddec\ud83c\udde6",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  gambia: {
-    keywords: [ "gm", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddec\ud83c\uddf2",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  georgia: {
-    keywords: [ "ge", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddec\ud83c\uddea",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  de: {
-    keywords: [ "german", "nation", "flag", "country", "banner" ],
-    "char": "\ud83c\udde9\ud83c\uddea",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  ghana: {
-    keywords: [ "gh", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddec\ud83c\udded",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  gibraltar: {
-    keywords: [ "gi", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddec\ud83c\uddee",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  greece: {
-    keywords: [ "gr", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddec\ud83c\uddf7",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  greenland: {
-    keywords: [ "gl", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddec\ud83c\uddf1",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  grenada: {
-    keywords: [ "gd", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddec\ud83c\udde9",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  guadeloupe: {
-    keywords: [ "gp", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddec\ud83c\uddf5",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  guam: {
-    keywords: [ "gu", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddec\ud83c\uddfa",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  guatemala: {
-    keywords: [ "gt", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddec\ud83c\uddf9",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  guernsey: {
-    keywords: [ "gg", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddec\ud83c\uddec",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  guinea: {
-    keywords: [ "gn", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddec\ud83c\uddf3",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  guinea_bissau: {
-    keywords: [ "gw", "bissau", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddec\ud83c\uddfc",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  guyana: {
-    keywords: [ "gy", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddec\ud83c\uddfe",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  haiti: {
-    keywords: [ "ht", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udded\ud83c\uddf9",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  honduras: {
-    keywords: [ "hn", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udded\ud83c\uddf3",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  hong_kong: {
-    keywords: [ "hong", "kong", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udded\ud83c\uddf0",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  hungary: {
-    keywords: [ "hu", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udded\ud83c\uddfa",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  iceland: {
-    keywords: [ "is", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddee\ud83c\uddf8",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  india: {
-    keywords: [ "in", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddee\ud83c\uddf3",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  indonesia: {
-    keywords: [ "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddee\ud83c\udde9",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  iran: {
-    keywords: [ "iran,", "islamic", "republic", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddee\ud83c\uddf7",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  iraq: {
-    keywords: [ "iq", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddee\ud83c\uddf6",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  ireland: {
-    keywords: [ "ie", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddee\ud83c\uddea",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  isle_of_man: {
-    keywords: [ "isle", "man", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddee\ud83c\uddf2",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  israel: {
-    keywords: [ "il", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddee\ud83c\uddf1",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  it: {
-    keywords: [ "italy", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddee\ud83c\uddf9",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  cote_divoire: {
-    keywords: [ "ivory", "coast", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde8\ud83c\uddee",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  jamaica: {
-    keywords: [ "jm", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddef\ud83c\uddf2",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  jp: {
-    keywords: [ "japanese", "nation", "flag", "country", "banner" ],
-    "char": "\ud83c\uddef\ud83c\uddf5",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  jersey: {
-    keywords: [ "je", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddef\ud83c\uddea",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  jordan: {
-    keywords: [ "jo", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddef\ud83c\uddf4",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  kazakhstan: {
-    keywords: [ "kz", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf0\ud83c\uddff",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  kenya: {
-    keywords: [ "ke", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf0\ud83c\uddea",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  kiribati: {
-    keywords: [ "ki", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf0\ud83c\uddee",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  kosovo: {
-    keywords: [ "xk", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddfd\ud83c\uddf0",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  kuwait: {
-    keywords: [ "kw", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf0\ud83c\uddfc",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  kyrgyzstan: {
-    keywords: [ "kg", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf0\ud83c\uddec",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  laos: {
-    keywords: [ "lao", "democratic", "republic", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf1\ud83c\udde6",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  latvia: {
-    keywords: [ "lv", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf1\ud83c\uddfb",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  lebanon: {
-    keywords: [ "lb", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf1\ud83c\udde7",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  lesotho: {
-    keywords: [ "ls", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf1\ud83c\uddf8",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  liberia: {
-    keywords: [ "lr", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf1\ud83c\uddf7",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  libya: {
-    keywords: [ "ly", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf1\ud83c\uddfe",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  liechtenstein: {
-    keywords: [ "li", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf1\ud83c\uddee",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  lithuania: {
-    keywords: [ "lt", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf1\ud83c\uddf9",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  luxembourg: {
-    keywords: [ "lu", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf1\ud83c\uddfa",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  macau: {
-    keywords: [ "macao", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf2\ud83c\uddf4",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  macedonia: {
-    keywords: [ "macedonia,", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf2\ud83c\uddf0",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  madagascar: {
-    keywords: [ "mg", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf2\ud83c\uddec",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  malawi: {
-    keywords: [ "mw", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf2\ud83c\uddfc",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  malaysia: {
-    keywords: [ "my", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf2\ud83c\uddfe",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  maldives: {
-    keywords: [ "mv", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf2\ud83c\uddfb",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  mali: {
-    keywords: [ "ml", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf2\ud83c\uddf1",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  malta: {
-    keywords: [ "mt", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf2\ud83c\uddf9",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  marshall_islands: {
-    keywords: [ "marshall", "islands", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf2\ud83c\udded",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  martinique: {
-    keywords: [ "mq", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf2\ud83c\uddf6",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  mauritania: {
-    keywords: [ "mr", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf2\ud83c\uddf7",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  mauritius: {
-    keywords: [ "mu", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf2\ud83c\uddfa",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  mayotte: {
-    keywords: [ "yt", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddfe\ud83c\uddf9",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  mexico: {
-    keywords: [ "mx", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf2\ud83c\uddfd",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  micronesia: {
-    keywords: [ "micronesia,", "federated", "states", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddeb\ud83c\uddf2",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  moldova: {
-    keywords: [ "moldova,", "republic", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf2\ud83c\udde9",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  monaco: {
-    keywords: [ "mc", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf2\ud83c\udde8",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  mongolia: {
-    keywords: [ "mn", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf2\ud83c\uddf3",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  montenegro: {
-    keywords: [ "me", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf2\ud83c\uddea",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  montserrat: {
-    keywords: [ "ms", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf2\ud83c\uddf8",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  morocco: {
-    keywords: [ "ma", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf2\ud83c\udde6",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  mozambique: {
-    keywords: [ "mz", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf2\ud83c\uddff",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  myanmar: {
-    keywords: [ "mm", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf2\ud83c\uddf2",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  namibia: {
-    keywords: [ "na", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf3\ud83c\udde6",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  nauru: {
-    keywords: [ "nr", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf3\ud83c\uddf7",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  nepal: {
-    keywords: [ "np", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf3\ud83c\uddf5",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  netherlands: {
-    keywords: [ "nl", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf3\ud83c\uddf1",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  new_caledonia: {
-    keywords: [ "new", "caledonia", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf3\ud83c\udde8",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  new_zealand: {
-    keywords: [ "new", "zealand", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf3\ud83c\uddff",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  nicaragua: {
-    keywords: [ "ni", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf3\ud83c\uddee",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  niger: {
-    keywords: [ "ne", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf3\ud83c\uddea",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  nigeria: {
-    keywords: [ "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf3\ud83c\uddec",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  niue: {
-    keywords: [ "nu", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf3\ud83c\uddfa",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  norfolk_island: {
-    keywords: [ "norfolk", "island", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf3\ud83c\uddeb",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  northern_mariana_islands: {
-    keywords: [ "northern", "mariana", "islands", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf2\ud83c\uddf5",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  north_korea: {
-    keywords: [ "north", "korea", "nation", "flag", "country", "banner" ],
-    "char": "\ud83c\uddf0\ud83c\uddf5",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  norway: {
-    keywords: [ "no", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf3\ud83c\uddf4",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  oman: {
-    keywords: [ "om_symbol", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf4\ud83c\uddf2",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  pakistan: {
-    keywords: [ "pk", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf5\ud83c\uddf0",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  palau: {
-    keywords: [ "pw", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf5\ud83c\uddfc",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  palestinian_territories: {
-    keywords: [ "palestine", "palestinian", "territories", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf5\ud83c\uddf8",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  panama: {
-    keywords: [ "pa", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf5\ud83c\udde6",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  papua_new_guinea: {
-    keywords: [ "papua", "new", "guinea", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf5\ud83c\uddec",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  paraguay: {
-    keywords: [ "py", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf5\ud83c\uddfe",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  peru: {
-    keywords: [ "pe", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf5\ud83c\uddea",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  philippines: {
-    keywords: [ "ph", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf5\ud83c\udded",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  pitcairn_islands: {
-    keywords: [ "pitcairn", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf5\ud83c\uddf3",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  poland: {
-    keywords: [ "pl", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf5\ud83c\uddf1",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  portugal: {
-    keywords: [ "pt", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf5\ud83c\uddf9",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  puerto_rico: {
-    keywords: [ "puerto", "rico", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf5\ud83c\uddf7",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  qatar: {
-    keywords: [ "qa", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf6\ud83c\udde6",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  reunion: {
-    keywords: [ "r\xe9union", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf7\ud83c\uddea",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  romania: {
-    keywords: [ "ro", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf7\ud83c\uddf4",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  ru: {
-    keywords: [ "russian", "federation", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf7\ud83c\uddfa",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  rwanda: {
-    keywords: [ "rw", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf7\ud83c\uddfc",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  st_barthelemy: {
-    keywords: [ "saint", "barth\xe9lemy", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde7\ud83c\uddf1",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  st_helena: {
-    keywords: [ "saint", "helena", "ascension", "tristan", "cunha", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf8\ud83c\udded",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  st_kitts_nevis: {
-    keywords: [ "saint", "kitts", "nevis", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf0\ud83c\uddf3",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  st_lucia: {
-    keywords: [ "saint", "lucia", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf1\ud83c\udde8",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  st_pierre_miquelon: {
-    keywords: [ "saint", "pierre", "miquelon", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf5\ud83c\uddf2",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  st_vincent_grenadines: {
-    keywords: [ "saint", "vincent", "grenadines", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddfb\ud83c\udde8",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  samoa: {
-    keywords: [ "ws", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddfc\ud83c\uddf8",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  san_marino: {
-    keywords: [ "san", "marino", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf8\ud83c\uddf2",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  sao_tome_principe: {
-    keywords: [ "sao", "tome", "principe", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf8\ud83c\uddf9",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  saudi_arabia: {
-    keywords: [ "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf8\ud83c\udde6",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  senegal: {
-    keywords: [ "sn", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf8\ud83c\uddf3",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  serbia: {
-    keywords: [ "rs", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf7\ud83c\uddf8",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  seychelles: {
-    keywords: [ "sc", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf8\ud83c\udde8",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  sierra_leone: {
-    keywords: [ "sierra", "leone", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf8\ud83c\uddf1",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  singapore: {
-    keywords: [ "sg", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf8\ud83c\uddec",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  sint_maarten: {
-    keywords: [ "sint", "maarten", "dutch", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf8\ud83c\uddfd",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  slovakia: {
-    keywords: [ "sk", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf8\ud83c\uddf0",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  slovenia: {
-    keywords: [ "si", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf8\ud83c\uddee",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  solomon_islands: {
-    keywords: [ "solomon", "islands", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf8\ud83c\udde7",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  somalia: {
-    keywords: [ "so", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf8\ud83c\uddf4",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  south_africa: {
-    keywords: [ "south", "africa", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddff\ud83c\udde6",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  south_georgia_south_sandwich_islands: {
-    keywords: [ "south", "georgia", "sandwich", "islands", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddec\ud83c\uddf8",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  kr: {
-    keywords: [ "south", "korea", "nation", "flag", "country", "banner" ],
-    "char": "\ud83c\uddf0\ud83c\uddf7",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  south_sudan: {
-    keywords: [ "south", "sd", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf8\ud83c\uddf8",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  es: {
-    keywords: [ "spain", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddea\ud83c\uddf8",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  sri_lanka: {
-    keywords: [ "sri", "lanka", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf1\ud83c\uddf0",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  sudan: {
-    keywords: [ "sd", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf8\ud83c\udde9",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  suriname: {
-    keywords: [ "sr", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf8\ud83c\uddf7",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  swaziland: {
-    keywords: [ "sz", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf8\ud83c\uddff",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  sweden: {
-    keywords: [ "se", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf8\ud83c\uddea",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  switzerland: {
-    keywords: [ "ch", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde8\ud83c\udded",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  syria: {
-    keywords: [ "syrian", "arab", "republic", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf8\ud83c\uddfe",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  taiwan: {
-    keywords: [ "tw", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf9\ud83c\uddfc",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  tajikistan: {
-    keywords: [ "tj", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf9\ud83c\uddef",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  tanzania: {
-    keywords: [ "tanzania,", "united", "republic", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf9\ud83c\uddff",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  thailand: {
-    keywords: [ "th", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf9\ud83c\udded",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  timor_leste: {
-    keywords: [ "timor", "leste", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf9\ud83c\uddf1",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  togo: {
-    keywords: [ "tg", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf9\ud83c\uddec",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  tokelau: {
-    keywords: [ "tk", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf9\ud83c\uddf0",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  tonga: {
-    keywords: [ "to", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf9\ud83c\uddf4",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  trinidad_tobago: {
-    keywords: [ "trinidad", "tobago", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf9\ud83c\uddf9",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  tunisia: {
-    keywords: [ "tn", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf9\ud83c\uddf3",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  tr: {
-    keywords: [ "turkey", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf9\ud83c\uddf7",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  turkmenistan: {
-    keywords: [ "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf9\ud83c\uddf2",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  turks_caicos_islands: {
-    keywords: [ "turks", "caicos", "islands", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf9\ud83c\udde8",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  tuvalu: {
-    keywords: [ "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddf9\ud83c\uddfb",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  uganda: {
-    keywords: [ "ug", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddfa\ud83c\uddec",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  ukraine: {
-    keywords: [ "ua", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddfa\ud83c\udde6",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  united_arab_emirates: {
-    keywords: [ "united", "arab", "emirates", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\udde6\ud83c\uddea",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  uk: {
-    keywords: [ "united", "kingdom", "great", "britain", "northern", "ireland", "flag", "nation", "country", "banner", "british", "UK", "english", "england", "union jack" ],
-    "char": "\ud83c\uddec\ud83c\udde7",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  england: {
-    keywords: [ "flag", "english" ],
-    "char": "\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  scotland: {
-    keywords: [ "flag", "scottish" ],
-    "char": "\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  wales: {
-    keywords: [ "flag", "welsh" ],
-    "char": "\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  us: {
-    keywords: [ "united", "states", "america", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddfa\ud83c\uddf8",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  us_virgin_islands: {
-    keywords: [ "virgin", "islands", "us", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddfb\ud83c\uddee",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  uruguay: {
-    keywords: [ "uy", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddfa\ud83c\uddfe",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  uzbekistan: {
-    keywords: [ "uz", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddfa\ud83c\uddff",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  vanuatu: {
-    keywords: [ "vu", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddfb\ud83c\uddfa",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  vatican_city: {
-    keywords: [ "vatican", "city", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddfb\ud83c\udde6",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  venezuela: {
-    keywords: [ "ve", "bolivarian", "republic", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddfb\ud83c\uddea",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  vietnam: {
-    keywords: [ "viet", "nam", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddfb\ud83c\uddf3",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  wallis_futuna: {
-    keywords: [ "wallis", "futuna", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddfc\ud83c\uddeb",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  western_sahara: {
-    keywords: [ "western", "sahara", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddea\ud83c\udded",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  yemen: {
-    keywords: [ "ye", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddfe\ud83c\uddea",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  zambia: {
-    keywords: [ "zm", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddff\ud83c\uddf2",
-    fitzpatrick_scale: false,
-    category: "flags"
-  },
-  zimbabwe: {
-    keywords: [ "zw", "flag", "nation", "country", "banner" ],
-    "char": "\ud83c\uddff\ud83c\uddfc",
-    fitzpatrick_scale: false,
-    category: "flags"
-  }
-});
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/plugins/emoticons/js/emojis.min.js b/app/static/vendors/tinymce/js/tinymce/plugins/emoticons/js/emojis.min.js
deleted file mode 100644 (file)
index 5e59213..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-// NOTE: Source: npm package: emojilib, file:emojis.json
-window.tinymce.Resource.add("tinymce.plugins.emoticons",{grinning:{keywords:["face","smile","happy","joy",":D","grin"],"char":"\ud83d\ude00",fitzpatrick_scale:!1,category:"people"},grimacing:{keywords:["face","grimace","teeth"],"char":"\ud83d\ude2c",fitzpatrick_scale:!1,category:"people"},grin:{keywords:["face","happy","smile","joy","kawaii"],"char":"\ud83d\ude01",fitzpatrick_scale:!1,category:"people"},joy:{keywords:["face","cry","tears","weep","happy","happytears","haha"],"char":"\ud83d\ude02",fitzpatrick_scale:!1,category:"people"},rofl:{keywords:["face","rolling","floor","laughing","lol","haha"],"char":"\ud83e\udd23",fitzpatrick_scale:!1,category:"people"},smiley:{keywords:["face","happy","joy","haha",":D",":)","smile","funny"],"char":"\ud83d\ude03",fitzpatrick_scale:!1,category:"people"},smile:{keywords:["face","happy","joy","funny","haha","laugh","like",":D",":)"],"char":"\ud83d\ude04",fitzpatrick_scale:!1,category:"people"},sweat_smile:{keywords:["face","hot","happy","laugh","sweat","smile","relief"],"char":"\ud83d\ude05",fitzpatrick_scale:!1,category:"people"},laughing:{keywords:["happy","joy","lol","satisfied","haha","face","glad","XD","laugh"],"char":"\ud83d\ude06",fitzpatrick_scale:!1,category:"people"},innocent:{keywords:["face","angel","heaven","halo"],"char":"\ud83d\ude07",fitzpatrick_scale:!1,category:"people"},wink:{keywords:["face","happy","mischievous","secret",";)","smile","eye"],"char":"\ud83d\ude09",fitzpatrick_scale:!1,category:"people"},blush:{keywords:["face","smile","happy","flushed","crush","embarrassed","shy","joy"],"char":"\ud83d\ude0a",fitzpatrick_scale:!1,category:"people"},slightly_smiling_face:{keywords:["face","smile"],"char":"\ud83d\ude42",fitzpatrick_scale:!1,category:"people"},upside_down_face:{keywords:["face","flipped","silly","smile"],"char":"\ud83d\ude43",fitzpatrick_scale:!1,category:"people"},relaxed:{keywords:["face","blush","massage","happiness"],"char":"\u263a\ufe0f",fitzpatrick_scale:!1,category:"people"},yum:{keywords:["happy","joy","tongue","smile","face","silly","yummy","nom","delicious","savouring"],"char":"\ud83d\ude0b",fitzpatrick_scale:!1,category:"people"},relieved:{keywords:["face","relaxed","phew","massage","happiness"],"char":"\ud83d\ude0c",fitzpatrick_scale:!1,category:"people"},heart_eyes:{keywords:["face","love","like","affection","valentines","infatuation","crush","heart"],"char":"\ud83d\ude0d",fitzpatrick_scale:!1,category:"people"},kissing_heart:{keywords:["face","love","like","affection","valentines","infatuation","kiss"],"char":"\ud83d\ude18",fitzpatrick_scale:!1,category:"people"},kissing:{keywords:["love","like","face","3","valentines","infatuation","kiss"],"char":"\ud83d\ude17",fitzpatrick_scale:!1,category:"people"},kissing_smiling_eyes:{keywords:["face","affection","valentines","infatuation","kiss"],"char":"\ud83d\ude19",fitzpatrick_scale:!1,category:"people"},kissing_closed_eyes:{keywords:["face","love","like","affection","valentines","infatuation","kiss"],"char":"\ud83d\ude1a",fitzpatrick_scale:!1,category:"people"},stuck_out_tongue_winking_eye:{keywords:["face","prank","childish","playful","mischievous","smile","wink","tongue"],"char":"\ud83d\ude1c",fitzpatrick_scale:!1,category:"people"},zany:{keywords:["face","goofy","crazy"],"char":"\ud83e\udd2a",fitzpatrick_scale:!1,category:"people"},raised_eyebrow:{keywords:["face","distrust","scepticism","disapproval","disbelief","surprise"],"char":"\ud83e\udd28",fitzpatrick_scale:!1,category:"people"},monocle:{keywords:["face","stuffy","wealthy"],"char":"\ud83e\uddd0",fitzpatrick_scale:!1,category:"people"},stuck_out_tongue_closed_eyes:{keywords:["face","prank","playful","mischievous","smile","tongue"],"char":"\ud83d\ude1d",fitzpatrick_scale:!1,category:"people"},stuck_out_tongue:{keywords:["face","prank","childish","playful","mischievous","smile","tongue"],"char":"\ud83d\ude1b",fitzpatrick_scale:!1,category:"people"},money_mouth_face:{keywords:["face","rich","dollar","money"],"char":"\ud83e\udd11",fitzpatrick_scale:!1,category:"people"},nerd_face:{keywords:["face","nerdy","geek","dork"],"char":"\ud83e\udd13",fitzpatrick_scale:!1,category:"people"},sunglasses:{keywords:["face","cool","smile","summer","beach","sunglass"],"char":"\ud83d\ude0e",fitzpatrick_scale:!1,category:"people"},star_struck:{keywords:["face","smile","starry","eyes","grinning"],"char":"\ud83e\udd29",fitzpatrick_scale:!1,category:"people"},clown_face:{keywords:["face"],"char":"\ud83e\udd21",fitzpatrick_scale:!1,category:"people"},cowboy_hat_face:{keywords:["face","cowgirl","hat"],"char":"\ud83e\udd20",fitzpatrick_scale:!1,category:"people"},hugs:{keywords:["face","smile","hug"],"char":"\ud83e\udd17",fitzpatrick_scale:!1,category:"people"},smirk:{keywords:["face","smile","mean","prank","smug","sarcasm"],"char":"\ud83d\ude0f",fitzpatrick_scale:!1,category:"people"},no_mouth:{keywords:["face","hellokitty"],"char":"\ud83d\ude36",fitzpatrick_scale:!1,category:"people"},neutral_face:{keywords:["indifference","meh",":|","neutral"],"char":"\ud83d\ude10",fitzpatrick_scale:!1,category:"people"},expressionless:{keywords:["face","indifferent","-_-","meh","deadpan"],"char":"\ud83d\ude11",fitzpatrick_scale:!1,category:"people"},unamused:{keywords:["indifference","bored","straight face","serious","sarcasm","unimpressed","skeptical","dubious","side_eye"],"char":"\ud83d\ude12",fitzpatrick_scale:!1,category:"people"},roll_eyes:{keywords:["face","eyeroll","frustrated"],"char":"\ud83d\ude44",fitzpatrick_scale:!1,category:"people"},thinking:{keywords:["face","hmmm","think","consider"],"char":"\ud83e\udd14",fitzpatrick_scale:!1,category:"people"},lying_face:{keywords:["face","lie","pinocchio"],"char":"\ud83e\udd25",fitzpatrick_scale:!1,category:"people"},hand_over_mouth:{keywords:["face","whoops","shock","surprise"],"char":"\ud83e\udd2d",fitzpatrick_scale:!1,category:"people"},shushing:{keywords:["face","quiet","shhh"],"char":"\ud83e\udd2b",fitzpatrick_scale:!1,category:"people"},symbols_over_mouth:{keywords:["face","swearing","cursing","cussing","profanity","expletive"],"char":"\ud83e\udd2c",fitzpatrick_scale:!1,category:"people"},exploding_head:{keywords:["face","shocked","mind","blown"],"char":"\ud83e\udd2f",fitzpatrick_scale:!1,category:"people"},flushed:{keywords:["face","blush","shy","flattered"],"char":"\ud83d\ude33",fitzpatrick_scale:!1,category:"people"},disappointed:{keywords:["face","sad","upset","depressed",":("],"char":"\ud83d\ude1e",fitzpatrick_scale:!1,category:"people"},worried:{keywords:["face","concern","nervous",":("],"char":"\ud83d\ude1f",fitzpatrick_scale:!1,category:"people"},angry:{keywords:["mad","face","annoyed","frustrated"],"char":"\ud83d\ude20",fitzpatrick_scale:!1,category:"people"},rage:{keywords:["angry","mad","hate","despise"],"char":"\ud83d\ude21",fitzpatrick_scale:!1,category:"people"},pensive:{keywords:["face","sad","depressed","upset"],"char":"\ud83d\ude14",fitzpatrick_scale:!1,category:"people"},confused:{keywords:["face","indifference","huh","weird","hmmm",":/"],"char":"\ud83d\ude15",fitzpatrick_scale:!1,category:"people"},slightly_frowning_face:{keywords:["face","frowning","disappointed","sad","upset"],"char":"\ud83d\ude41",fitzpatrick_scale:!1,category:"people"},frowning_face:{keywords:["face","sad","upset","frown"],"char":"\u2639",fitzpatrick_scale:!1,category:"people"},persevere:{keywords:["face","sick","no","upset","oops"],"char":"\ud83d\ude23",fitzpatrick_scale:!1,category:"people"},confounded:{keywords:["face","confused","sick","unwell","oops",":S"],"char":"\ud83d\ude16",fitzpatrick_scale:!1,category:"people"},tired_face:{keywords:["sick","whine","upset","frustrated"],"char":"\ud83d\ude2b",fitzpatrick_scale:!1,category:"people"},weary:{keywords:["face","tired","sleepy","sad","frustrated","upset"],"char":"\ud83d\ude29",fitzpatrick_scale:!1,category:"people"},triumph:{keywords:["face","gas","phew","proud","pride"],"char":"\ud83d\ude24",fitzpatrick_scale:!1,category:"people"},open_mouth:{keywords:["face","surprise","impressed","wow","whoa",":O"],"char":"\ud83d\ude2e",fitzpatrick_scale:!1,category:"people"},scream:{keywords:["face","munch","scared","omg"],"char":"\ud83d\ude31",fitzpatrick_scale:!1,category:"people"},fearful:{keywords:["face","scared","terrified","nervous","oops","huh"],"char":"\ud83d\ude28",fitzpatrick_scale:!1,category:"people"},cold_sweat:{keywords:["face","nervous","sweat"],"char":"\ud83d\ude30",fitzpatrick_scale:!1,category:"people"},hushed:{keywords:["face","woo","shh"],"char":"\ud83d\ude2f",fitzpatrick_scale:!1,category:"people"},frowning:{keywords:["face","aw","what"],"char":"\ud83d\ude26",fitzpatrick_scale:!1,category:"people"},anguished:{keywords:["face","stunned","nervous"],"char":"\ud83d\ude27",fitzpatrick_scale:!1,category:"people"},cry:{keywords:["face","tears","sad","depressed","upset",":'("],"char":"\ud83d\ude22",fitzpatrick_scale:!1,category:"people"},disappointed_relieved:{keywords:["face","phew","sweat","nervous"],"char":"\ud83d\ude25",fitzpatrick_scale:!1,category:"people"},drooling_face:{keywords:["face"],"char":"\ud83e\udd24",fitzpatrick_scale:!1,category:"people"},sleepy:{keywords:["face","tired","rest","nap"],"char":"\ud83d\ude2a",fitzpatrick_scale:!1,category:"people"},sweat:{keywords:["face","hot","sad","tired","exercise"],"char":"\ud83d\ude13",fitzpatrick_scale:!1,category:"people"},sob:{keywords:["face","cry","tears","sad","upset","depressed"],"char":"\ud83d\ude2d",fitzpatrick_scale:!1,category:"people"},dizzy_face:{keywords:["spent","unconscious","xox","dizzy"],"char":"\ud83d\ude35",fitzpatrick_scale:!1,category:"people"},astonished:{keywords:["face","xox","surprised","poisoned"],"char":"\ud83d\ude32",fitzpatrick_scale:!1,category:"people"},zipper_mouth_face:{keywords:["face","sealed","zipper","secret"],"char":"\ud83e\udd10",fitzpatrick_scale:!1,category:"people"},nauseated_face:{keywords:["face","vomit","gross","green","sick","throw up","ill"],"char":"\ud83e\udd22",fitzpatrick_scale:!1,category:"people"},sneezing_face:{keywords:["face","gesundheit","sneeze","sick","allergy"],"char":"\ud83e\udd27",fitzpatrick_scale:!1,category:"people"},vomiting:{keywords:["face","sick"],"char":"\ud83e\udd2e",fitzpatrick_scale:!1,category:"people"},mask:{keywords:["face","sick","ill","disease"],"char":"\ud83d\ude37",fitzpatrick_scale:!1,category:"people"},face_with_thermometer:{keywords:["sick","temperature","thermometer","cold","fever"],"char":"\ud83e\udd12",fitzpatrick_scale:!1,category:"people"},face_with_head_bandage:{keywords:["injured","clumsy","bandage","hurt"],"char":"\ud83e\udd15",fitzpatrick_scale:!1,category:"people"},sleeping:{keywords:["face","tired","sleepy","night","zzz"],"char":"\ud83d\ude34",fitzpatrick_scale:!1,category:"people"},zzz:{keywords:["sleepy","tired","dream"],"char":"\ud83d\udca4",fitzpatrick_scale:!1,category:"people"},poop:{keywords:["hankey","shitface","fail","turd","shit"],"char":"\ud83d\udca9",fitzpatrick_scale:!1,category:"people"},smiling_imp:{keywords:["devil","horns"],"char":"\ud83d\ude08",fitzpatrick_scale:!1,category:"people"},imp:{keywords:["devil","angry","horns"],"char":"\ud83d\udc7f",fitzpatrick_scale:!1,category:"people"},japanese_ogre:{keywords:["monster","red","mask","halloween","scary","creepy","devil","demon","japanese","ogre"],"char":"\ud83d\udc79",fitzpatrick_scale:!1,category:"people"},japanese_goblin:{keywords:["red","evil","mask","monster","scary","creepy","japanese","goblin"],"char":"\ud83d\udc7a",fitzpatrick_scale:!1,category:"people"},skull:{keywords:["dead","skeleton","creepy","death"],"char":"\ud83d\udc80",fitzpatrick_scale:!1,category:"people"},ghost:{keywords:["halloween","spooky","scary"],"char":"\ud83d\udc7b",fitzpatrick_scale:!1,category:"people"},alien:{keywords:["UFO","paul","weird","outer_space"],"char":"\ud83d\udc7d",fitzpatrick_scale:!1,category:"people"},robot:{keywords:["computer","machine","bot"],"char":"\ud83e\udd16",fitzpatrick_scale:!1,category:"people"},smiley_cat:{keywords:["animal","cats","happy","smile"],"char":"\ud83d\ude3a",fitzpatrick_scale:!1,category:"people"},smile_cat:{keywords:["animal","cats","smile"],"char":"\ud83d\ude38",fitzpatrick_scale:!1,category:"people"},joy_cat:{keywords:["animal","cats","haha","happy","tears"],"char":"\ud83d\ude39",fitzpatrick_scale:!1,category:"people"},heart_eyes_cat:{keywords:["animal","love","like","affection","cats","valentines","heart"],"char":"\ud83d\ude3b",fitzpatrick_scale:!1,category:"people"},smirk_cat:{keywords:["animal","cats","smirk"],"char":"\ud83d\ude3c",fitzpatrick_scale:!1,category:"people"},kissing_cat:{keywords:["animal","cats","kiss"],"char":"\ud83d\ude3d",fitzpatrick_scale:!1,category:"people"},scream_cat:{keywords:["animal","cats","munch","scared","scream"],"char":"\ud83d\ude40",fitzpatrick_scale:!1,category:"people"},crying_cat_face:{keywords:["animal","tears","weep","sad","cats","upset","cry"],"char":"\ud83d\ude3f",fitzpatrick_scale:!1,category:"people"},pouting_cat:{keywords:["animal","cats"],"char":"\ud83d\ude3e",fitzpatrick_scale:!1,category:"people"},palms_up:{keywords:["hands","gesture","cupped","prayer"],"char":"\ud83e\udd32",fitzpatrick_scale:!0,category:"people"},raised_hands:{keywords:["gesture","hooray","yea","celebration","hands"],"char":"\ud83d\ude4c",fitzpatrick_scale:!0,category:"people"},clap:{keywords:["hands","praise","applause","congrats","yay"],"char":"\ud83d\udc4f",fitzpatrick_scale:!0,category:"people"},wave:{keywords:["hands","gesture","goodbye","solong","farewell","hello","hi","palm"],"char":"\ud83d\udc4b",fitzpatrick_scale:!0,category:"people"},call_me_hand:{keywords:["hands","gesture"],"char":"\ud83e\udd19",fitzpatrick_scale:!0,category:"people"},"+1":{keywords:["thumbsup","yes","awesome","good","agree","accept","cool","hand","like"],"char":"\ud83d\udc4d",fitzpatrick_scale:!0,category:"people"},"-1":{keywords:["thumbsdown","no","dislike","hand"],"char":"\ud83d\udc4e",fitzpatrick_scale:!0,category:"people"},facepunch:{keywords:["angry","violence","fist","hit","attack","hand"],"char":"\ud83d\udc4a",fitzpatrick_scale:!0,category:"people"},fist:{keywords:["fingers","hand","grasp"],"char":"\u270a",fitzpatrick_scale:!0,category:"people"},fist_left:{keywords:["hand","fistbump"],"char":"\ud83e\udd1b",fitzpatrick_scale:!0,category:"people"},fist_right:{keywords:["hand","fistbump"],"char":"\ud83e\udd1c",fitzpatrick_scale:!0,category:"people"},v:{keywords:["fingers","ohyeah","hand","peace","victory","two"],"char":"\u270c",fitzpatrick_scale:!0,category:"people"},ok_hand:{keywords:["fingers","limbs","perfect","ok","okay"],"char":"\ud83d\udc4c",fitzpatrick_scale:!0,category:"people"},raised_hand:{keywords:["fingers","stop","highfive","palm","ban"],"char":"\u270b",fitzpatrick_scale:!0,category:"people"},raised_back_of_hand:{keywords:["fingers","raised","backhand"],"char":"\ud83e\udd1a",fitzpatrick_scale:!0,category:"people"},open_hands:{keywords:["fingers","butterfly","hands","open"],"char":"\ud83d\udc50",fitzpatrick_scale:!0,category:"people"},muscle:{keywords:["arm","flex","hand","summer","strong","biceps"],"char":"\ud83d\udcaa",fitzpatrick_scale:!0,category:"people"},pray:{keywords:["please","hope","wish","namaste","highfive"],"char":"\ud83d\ude4f",fitzpatrick_scale:!0,category:"people"},handshake:{keywords:["agreement","shake"],"char":"\ud83e\udd1d",fitzpatrick_scale:!1,category:"people"},point_up:{keywords:["hand","fingers","direction","up"],"char":"\u261d",fitzpatrick_scale:!0,category:"people"},point_up_2:{keywords:["fingers","hand","direction","up"],"char":"\ud83d\udc46",fitzpatrick_scale:!0,category:"people"},point_down:{keywords:["fingers","hand","direction","down"],"char":"\ud83d\udc47",fitzpatrick_scale:!0,category:"people"},point_left:{keywords:["direction","fingers","hand","left"],"char":"\ud83d\udc48",fitzpatrick_scale:!0,category:"people"},point_right:{keywords:["fingers","hand","direction","right"],"char":"\ud83d\udc49",fitzpatrick_scale:!0,category:"people"},fu:{keywords:["hand","fingers","rude","middle","flipping"],"char":"\ud83d\udd95",fitzpatrick_scale:!0,category:"people"},raised_hand_with_fingers_splayed:{keywords:["hand","fingers","palm"],"char":"\ud83d\udd90",fitzpatrick_scale:!0,category:"people"},love_you:{keywords:["hand","fingers","gesture"],"char":"\ud83e\udd1f",fitzpatrick_scale:!0,category:"people"},metal:{keywords:["hand","fingers","evil_eye","sign_of_horns","rock_on"],"char":"\ud83e\udd18",fitzpatrick_scale:!0,category:"people"},crossed_fingers:{keywords:["good","lucky"],"char":"\ud83e\udd1e",fitzpatrick_scale:!0,category:"people"},vulcan_salute:{keywords:["hand","fingers","spock","star trek"],"char":"\ud83d\udd96",fitzpatrick_scale:!0,category:"people"},writing_hand:{keywords:["lower_left_ballpoint_pen","stationery","write","compose"],"char":"\u270d",fitzpatrick_scale:!0,category:"people"},selfie:{keywords:["camera","phone"],"char":"\ud83e\udd33",fitzpatrick_scale:!0,category:"people"},nail_care:{keywords:["beauty","manicure","finger","fashion","nail"],"char":"\ud83d\udc85",fitzpatrick_scale:!0,category:"people"},lips:{keywords:["mouth","kiss"],"char":"\ud83d\udc44",fitzpatrick_scale:!1,category:"people"},tongue:{keywords:["mouth","playful"],"char":"\ud83d\udc45",fitzpatrick_scale:!1,category:"people"},ear:{keywords:["face","hear","sound","listen"],"char":"\ud83d\udc42",fitzpatrick_scale:!0,category:"people"},nose:{keywords:["smell","sniff"],"char":"\ud83d\udc43",fitzpatrick_scale:!0,category:"people"},eye:{keywords:["face","look","see","watch","stare"],"char":"\ud83d\udc41",fitzpatrick_scale:!1,category:"people"},eyes:{keywords:["look","watch","stalk","peek","see"],"char":"\ud83d\udc40",fitzpatrick_scale:!1,category:"people"},brain:{keywords:["smart","intelligent"],"char":"\ud83e\udde0",fitzpatrick_scale:!1,category:"people"},bust_in_silhouette:{keywords:["user","person","human"],"char":"\ud83d\udc64",fitzpatrick_scale:!1,category:"people"},busts_in_silhouette:{keywords:["user","person","human","group","team"],"char":"\ud83d\udc65",fitzpatrick_scale:!1,category:"people"},speaking_head:{keywords:["user","person","human","sing","say","talk"],"char":"\ud83d\udde3",fitzpatrick_scale:!1,category:"people"},baby:{keywords:["child","boy","girl","toddler"],"char":"\ud83d\udc76",fitzpatrick_scale:!0,category:"people"},child:{keywords:["gender-neutral","young"],"char":"\ud83e\uddd2",fitzpatrick_scale:!0,category:"people"},boy:{keywords:["man","male","guy","teenager"],"char":"\ud83d\udc66",fitzpatrick_scale:!0,category:"people"},girl:{keywords:["female","woman","teenager"],"char":"\ud83d\udc67",fitzpatrick_scale:!0,category:"people"},adult:{keywords:["gender-neutral","person"],"char":"\ud83e\uddd1",fitzpatrick_scale:!0,category:"people"},man:{keywords:["mustache","father","dad","guy","classy","sir","moustache"],"char":"\ud83d\udc68",fitzpatrick_scale:!0,category:"people"},woman:{keywords:["female","girls","lady"],"char":"\ud83d\udc69",fitzpatrick_scale:!0,category:"people"},blonde_woman:{keywords:["woman","female","girl","blonde","person"],"char":"\ud83d\udc71\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},blonde_man:{keywords:["man","male","boy","blonde","guy","person"],"char":"\ud83d\udc71",fitzpatrick_scale:!0,category:"people"},bearded_person:{keywords:["person","bewhiskered"],"char":"\ud83e\uddd4",fitzpatrick_scale:!0,category:"people"},older_adult:{keywords:["human","elder","senior","gender-neutral"],"char":"\ud83e\uddd3",fitzpatrick_scale:!0,category:"people"},older_man:{keywords:["human","male","men","old","elder","senior"],"char":"\ud83d\udc74",fitzpatrick_scale:!0,category:"people"},older_woman:{keywords:["human","female","women","lady","old","elder","senior"],"char":"\ud83d\udc75",fitzpatrick_scale:!0,category:"people"},man_with_gua_pi_mao:{keywords:["male","boy","chinese"],"char":"\ud83d\udc72",fitzpatrick_scale:!0,category:"people"},woman_with_headscarf:{keywords:["female","hijab","mantilla","tichel"],"char":"\ud83e\uddd5",fitzpatrick_scale:!0,category:"people"},woman_with_turban:{keywords:["female","indian","hinduism","arabs","woman"],"char":"\ud83d\udc73\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_with_turban:{keywords:["male","indian","hinduism","arabs"],"char":"\ud83d\udc73",fitzpatrick_scale:!0,category:"people"},policewoman:{keywords:["woman","police","law","legal","enforcement","arrest","911","female"],"char":"\ud83d\udc6e\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},policeman:{keywords:["man","police","law","legal","enforcement","arrest","911"],"char":"\ud83d\udc6e",fitzpatrick_scale:!0,category:"people"},construction_worker_woman:{keywords:["female","human","wip","build","construction","worker","labor","woman"],"char":"\ud83d\udc77\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},construction_worker_man:{keywords:["male","human","wip","guy","build","construction","worker","labor"],"char":"\ud83d\udc77",fitzpatrick_scale:!0,category:"people"},guardswoman:{keywords:["uk","gb","british","female","royal","woman"],"char":"\ud83d\udc82\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},guardsman:{keywords:["uk","gb","british","male","guy","royal"],"char":"\ud83d\udc82",fitzpatrick_scale:!0,category:"people"},female_detective:{keywords:["human","spy","detective","female","woman"],"char":"\ud83d\udd75\ufe0f\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},male_detective:{keywords:["human","spy","detective"],"char":"\ud83d\udd75",fitzpatrick_scale:!0,category:"people"},woman_health_worker:{keywords:["doctor","nurse","therapist","healthcare","woman","human"],"char":"\ud83d\udc69\u200d\u2695\ufe0f",fitzpatrick_scale:!0,category:"people"},man_health_worker:{keywords:["doctor","nurse","therapist","healthcare","man","human"],"char":"\ud83d\udc68\u200d\u2695\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_farmer:{keywords:["rancher","gardener","woman","human"],"char":"\ud83d\udc69\u200d\ud83c\udf3e",fitzpatrick_scale:!0,category:"people"},man_farmer:{keywords:["rancher","gardener","man","human"],"char":"\ud83d\udc68\u200d\ud83c\udf3e",fitzpatrick_scale:!0,category:"people"},woman_cook:{keywords:["chef","woman","human"],"char":"\ud83d\udc69\u200d\ud83c\udf73",fitzpatrick_scale:!0,category:"people"},man_cook:{keywords:["chef","man","human"],"char":"\ud83d\udc68\u200d\ud83c\udf73",fitzpatrick_scale:!0,category:"people"},woman_student:{keywords:["graduate","woman","human"],"char":"\ud83d\udc69\u200d\ud83c\udf93",fitzpatrick_scale:!0,category:"people"},man_student:{keywords:["graduate","man","human"],"char":"\ud83d\udc68\u200d\ud83c\udf93",fitzpatrick_scale:!0,category:"people"},woman_singer:{keywords:["rockstar","entertainer","woman","human"],"char":"\ud83d\udc69\u200d\ud83c\udfa4",fitzpatrick_scale:!0,category:"people"},man_singer:{keywords:["rockstar","entertainer","man","human"],"char":"\ud83d\udc68\u200d\ud83c\udfa4",fitzpatrick_scale:!0,category:"people"},woman_teacher:{keywords:["instructor","professor","woman","human"],"char":"\ud83d\udc69\u200d\ud83c\udfeb",fitzpatrick_scale:!0,category:"people"},man_teacher:{keywords:["instructor","professor","man","human"],"char":"\ud83d\udc68\u200d\ud83c\udfeb",fitzpatrick_scale:!0,category:"people"},woman_factory_worker:{keywords:["assembly","industrial","woman","human"],"char":"\ud83d\udc69\u200d\ud83c\udfed",fitzpatrick_scale:!0,category:"people"},man_factory_worker:{keywords:["assembly","industrial","man","human"],"char":"\ud83d\udc68\u200d\ud83c\udfed",fitzpatrick_scale:!0,category:"people"},woman_technologist:{keywords:["coder","developer","engineer","programmer","software","woman","human","laptop","computer"],"char":"\ud83d\udc69\u200d\ud83d\udcbb",fitzpatrick_scale:!0,category:"people"},man_technologist:{keywords:["coder","developer","engineer","programmer","software","man","human","laptop","computer"],"char":"\ud83d\udc68\u200d\ud83d\udcbb",fitzpatrick_scale:!0,category:"people"},woman_office_worker:{keywords:["business","manager","woman","human"],"char":"\ud83d\udc69\u200d\ud83d\udcbc",fitzpatrick_scale:!0,category:"people"},man_office_worker:{keywords:["business","manager","man","human"],"char":"\ud83d\udc68\u200d\ud83d\udcbc",fitzpatrick_scale:!0,category:"people"},woman_mechanic:{keywords:["plumber","woman","human","wrench"],"char":"\ud83d\udc69\u200d\ud83d\udd27",fitzpatrick_scale:!0,category:"people"},man_mechanic:{keywords:["plumber","man","human","wrench"],"char":"\ud83d\udc68\u200d\ud83d\udd27",fitzpatrick_scale:!0,category:"people"},woman_scientist:{keywords:["biologist","chemist","engineer","physicist","woman","human"],"char":"\ud83d\udc69\u200d\ud83d\udd2c",fitzpatrick_scale:!0,category:"people"},man_scientist:{keywords:["biologist","chemist","engineer","physicist","man","human"],"char":"\ud83d\udc68\u200d\ud83d\udd2c",fitzpatrick_scale:!0,category:"people"},woman_artist:{keywords:["painter","woman","human"],"char":"\ud83d\udc69\u200d\ud83c\udfa8",fitzpatrick_scale:!0,category:"people"},man_artist:{keywords:["painter","man","human"],"char":"\ud83d\udc68\u200d\ud83c\udfa8",fitzpatrick_scale:!0,category:"people"},woman_firefighter:{keywords:["fireman","woman","human"],"char":"\ud83d\udc69\u200d\ud83d\ude92",fitzpatrick_scale:!0,category:"people"},man_firefighter:{keywords:["fireman","man","human"],"char":"\ud83d\udc68\u200d\ud83d\ude92",fitzpatrick_scale:!0,category:"people"},woman_pilot:{keywords:["aviator","plane","woman","human"],"char":"\ud83d\udc69\u200d\u2708\ufe0f",fitzpatrick_scale:!0,category:"people"},man_pilot:{keywords:["aviator","plane","man","human"],"char":"\ud83d\udc68\u200d\u2708\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_astronaut:{keywords:["space","rocket","woman","human"],"char":"\ud83d\udc69\u200d\ud83d\ude80",fitzpatrick_scale:!0,category:"people"},man_astronaut:{keywords:["space","rocket","man","human"],"char":"\ud83d\udc68\u200d\ud83d\ude80",fitzpatrick_scale:!0,category:"people"},woman_judge:{keywords:["justice","court","woman","human"],"char":"\ud83d\udc69\u200d\u2696\ufe0f",fitzpatrick_scale:!0,category:"people"},man_judge:{keywords:["justice","court","man","human"],"char":"\ud83d\udc68\u200d\u2696\ufe0f",fitzpatrick_scale:!0,category:"people"},mrs_claus:{keywords:["woman","female","xmas","mother christmas"],"char":"\ud83e\udd36",fitzpatrick_scale:!0,category:"people"},santa:{keywords:["festival","man","male","xmas","father christmas"],"char":"\ud83c\udf85",fitzpatrick_scale:!0,category:"people"},sorceress:{keywords:["woman","female","mage","witch"],"char":"\ud83e\uddd9\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},wizard:{keywords:["man","male","mage","sorcerer"],"char":"\ud83e\uddd9\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_elf:{keywords:["woman","female"],"char":"\ud83e\udddd\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_elf:{keywords:["man","male"],"char":"\ud83e\udddd\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_vampire:{keywords:["woman","female"],"char":"\ud83e\udddb\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_vampire:{keywords:["man","male","dracula"],"char":"\ud83e\udddb\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_zombie:{keywords:["woman","female","undead","walking dead"],"char":"\ud83e\udddf\u200d\u2640\ufe0f",fitzpatrick_scale:!1,category:"people"},man_zombie:{keywords:["man","male","dracula","undead","walking dead"],"char":"\ud83e\udddf\u200d\u2642\ufe0f",fitzpatrick_scale:!1,category:"people"},woman_genie:{keywords:["woman","female"],"char":"\ud83e\uddde\u200d\u2640\ufe0f",fitzpatrick_scale:!1,category:"people"},man_genie:{keywords:["man","male"],"char":"\ud83e\uddde\u200d\u2642\ufe0f",fitzpatrick_scale:!1,category:"people"},mermaid:{keywords:["woman","female","merwoman","ariel"],"char":"\ud83e\udddc\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},merman:{keywords:["man","male","triton"],"char":"\ud83e\udddc\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_fairy:{keywords:["woman","female"],"char":"\ud83e\uddda\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_fairy:{keywords:["man","male"],"char":"\ud83e\uddda\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},angel:{keywords:["heaven","wings","halo"],"char":"\ud83d\udc7c",fitzpatrick_scale:!0,category:"people"},pregnant_woman:{keywords:["baby"],"char":"\ud83e\udd30",fitzpatrick_scale:!0,category:"people"},breastfeeding:{keywords:["nursing","baby"],"char":"\ud83e\udd31",fitzpatrick_scale:!0,category:"people"},princess:{keywords:["girl","woman","female","blond","crown","royal","queen"],"char":"\ud83d\udc78",fitzpatrick_scale:!0,category:"people"},prince:{keywords:["boy","man","male","crown","royal","king"],"char":"\ud83e\udd34",fitzpatrick_scale:!0,category:"people"},bride_with_veil:{keywords:["couple","marriage","wedding","woman","bride"],"char":"\ud83d\udc70",fitzpatrick_scale:!0,category:"people"},man_in_tuxedo:{keywords:["couple","marriage","wedding","groom"],"char":"\ud83e\udd35",fitzpatrick_scale:!0,category:"people"},running_woman:{keywords:["woman","walking","exercise","race","running","female"],"char":"\ud83c\udfc3\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},running_man:{keywords:["man","walking","exercise","race","running"],"char":"\ud83c\udfc3",fitzpatrick_scale:!0,category:"people"},walking_woman:{keywords:["human","feet","steps","woman","female"],"char":"\ud83d\udeb6\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},walking_man:{keywords:["human","feet","steps"],"char":"\ud83d\udeb6",fitzpatrick_scale:!0,category:"people"},dancer:{keywords:["female","girl","woman","fun"],"char":"\ud83d\udc83",fitzpatrick_scale:!0,category:"people"},man_dancing:{keywords:["male","boy","fun","dancer"],"char":"\ud83d\udd7a",fitzpatrick_scale:!0,category:"people"},dancing_women:{keywords:["female","bunny","women","girls"],"char":"\ud83d\udc6f",fitzpatrick_scale:!1,category:"people"},dancing_men:{keywords:["male","bunny","men","boys"],"char":"\ud83d\udc6f\u200d\u2642\ufe0f",fitzpatrick_scale:!1,category:"people"},couple:{keywords:["pair","people","human","love","date","dating","like","affection","valentines","marriage"],"char":"\ud83d\udc6b",fitzpatrick_scale:!1,category:"people"},two_men_holding_hands:{keywords:["pair","couple","love","like","bromance","friendship","people","human"],"char":"\ud83d\udc6c",fitzpatrick_scale:!1,category:"people"},two_women_holding_hands:{keywords:["pair","friendship","couple","love","like","female","people","human"],"char":"\ud83d\udc6d",fitzpatrick_scale:!1,category:"people"},bowing_woman:{keywords:["woman","female","girl"],"char":"\ud83d\ude47\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},bowing_man:{keywords:["man","male","boy"],"char":"\ud83d\ude47",fitzpatrick_scale:!0,category:"people"},man_facepalming:{keywords:["man","male","boy","disbelief"],"char":"\ud83e\udd26",fitzpatrick_scale:!0,category:"people"},woman_facepalming:{keywords:["woman","female","girl","disbelief"],"char":"\ud83e\udd26\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_shrugging:{keywords:["woman","female","girl","confused","indifferent","doubt"],"char":"\ud83e\udd37",fitzpatrick_scale:!0,category:"people"},man_shrugging:{keywords:["man","male","boy","confused","indifferent","doubt"],"char":"\ud83e\udd37\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},tipping_hand_woman:{keywords:["female","girl","woman","human","information"],"char":"\ud83d\udc81",fitzpatrick_scale:!0,category:"people"},tipping_hand_man:{keywords:["male","boy","man","human","information"],"char":"\ud83d\udc81\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},no_good_woman:{keywords:["female","girl","woman","nope"],"char":"\ud83d\ude45",fitzpatrick_scale:!0,category:"people"},no_good_man:{keywords:["male","boy","man","nope"],"char":"\ud83d\ude45\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},ok_woman:{keywords:["women","girl","female","pink","human","woman"],"char":"\ud83d\ude46",fitzpatrick_scale:!0,category:"people"},ok_man:{keywords:["men","boy","male","blue","human","man"],"char":"\ud83d\ude46\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},raising_hand_woman:{keywords:["female","girl","woman"],"char":"\ud83d\ude4b",fitzpatrick_scale:!0,category:"people"},raising_hand_man:{keywords:["male","boy","man"],"char":"\ud83d\ude4b\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},pouting_woman:{keywords:["female","girl","woman"],"char":"\ud83d\ude4e",fitzpatrick_scale:!0,category:"people"},pouting_man:{keywords:["male","boy","man"],"char":"\ud83d\ude4e\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},frowning_woman:{keywords:["female","girl","woman","sad","depressed","discouraged","unhappy"],"char":"\ud83d\ude4d",fitzpatrick_scale:!0,category:"people"},frowning_man:{keywords:["male","boy","man","sad","depressed","discouraged","unhappy"],"char":"\ud83d\ude4d\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},haircut_woman:{keywords:["female","girl","woman"],"char":"\ud83d\udc87",fitzpatrick_scale:!0,category:"people"},haircut_man:{keywords:["male","boy","man"],"char":"\ud83d\udc87\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},massage_woman:{keywords:["female","girl","woman","head"],"char":"\ud83d\udc86",fitzpatrick_scale:!0,category:"people"},massage_man:{keywords:["male","boy","man","head"],"char":"\ud83d\udc86\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_in_steamy_room:{keywords:["female","woman","spa","steamroom","sauna"],"char":"\ud83e\uddd6\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_in_steamy_room:{keywords:["male","man","spa","steamroom","sauna"],"char":"\ud83e\uddd6\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},couple_with_heart_woman_man:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],"char":"\ud83d\udc91",fitzpatrick_scale:!1,category:"people"},couple_with_heart_woman_woman:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],"char":"\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc69",fitzpatrick_scale:!1,category:"people"},couple_with_heart_man_man:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],"char":"\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68",fitzpatrick_scale:!1,category:"people"},couplekiss_man_woman:{keywords:["pair","valentines","love","like","dating","marriage"],"char":"\ud83d\udc8f",fitzpatrick_scale:!1,category:"people"},couplekiss_woman_woman:{keywords:["pair","valentines","love","like","dating","marriage"],"char":"\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69",fitzpatrick_scale:!1,category:"people"},couplekiss_man_man:{keywords:["pair","valentines","love","like","dating","marriage"],"char":"\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68",fitzpatrick_scale:!1,category:"people"},family_man_woman_boy:{keywords:["home","parents","child","mom","dad","father","mother","people","human"],"char":"\ud83d\udc6a",fitzpatrick_scale:!1,category:"people"},family_man_woman_girl:{keywords:["home","parents","people","human","child"],"char":"\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_man_woman_girl_boy:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_woman_boy_boy:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_woman_girl_girl:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_woman_woman_boy:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_woman_girl:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_woman_woman_girl_boy:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_woman_boy_boy:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_woman_girl_girl:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_man_man_boy:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_man_girl:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_man_man_girl_boy:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_man_boy_boy:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_man_girl_girl:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_woman_boy:{keywords:["home","parent","people","human","child"],"char":"\ud83d\udc69\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_girl:{keywords:["home","parent","people","human","child"],"char":"\ud83d\udc69\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_woman_girl_boy:{keywords:["home","parent","people","human","children"],"char":"\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_boy_boy:{keywords:["home","parent","people","human","children"],"char":"\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_girl_girl:{keywords:["home","parent","people","human","children"],"char":"\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_man_boy:{keywords:["home","parent","people","human","child"],"char":"\ud83d\udc68\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_girl:{keywords:["home","parent","people","human","child"],"char":"\ud83d\udc68\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_man_girl_boy:{keywords:["home","parent","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_boy_boy:{keywords:["home","parent","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_girl_girl:{keywords:["home","parent","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},coat:{keywords:["jacket"],"char":"\ud83e\udde5",fitzpatrick_scale:!1,category:"people"},womans_clothes:{keywords:["fashion","shopping_bags","female"],"char":"\ud83d\udc5a",fitzpatrick_scale:!1,category:"people"},tshirt:{keywords:["fashion","cloth","casual","shirt","tee"],"char":"\ud83d\udc55",fitzpatrick_scale:!1,category:"people"},jeans:{keywords:["fashion","shopping"],"char":"\ud83d\udc56",fitzpatrick_scale:!1,category:"people"},necktie:{keywords:["shirt","suitup","formal","fashion","cloth","business"],"char":"\ud83d\udc54",fitzpatrick_scale:!1,category:"people"},dress:{keywords:["clothes","fashion","shopping"],"char":"\ud83d\udc57",fitzpatrick_scale:!1,category:"people"},bikini:{keywords:["swimming","female","woman","girl","fashion","beach","summer"],"char":"\ud83d\udc59",fitzpatrick_scale:!1,category:"people"},kimono:{keywords:["dress","fashion","women","female","japanese"],"char":"\ud83d\udc58",fitzpatrick_scale:!1,category:"people"},lipstick:{keywords:["female","girl","fashion","woman"],"char":"\ud83d\udc84",fitzpatrick_scale:!1,category:"people"},kiss:{keywords:["face","lips","love","like","affection","valentines"],"char":"\ud83d\udc8b",fitzpatrick_scale:!1,category:"people"},footprints:{keywords:["feet","tracking","walking","beach"],"char":"\ud83d\udc63",fitzpatrick_scale:!1,category:"people"},high_heel:{keywords:["fashion","shoes","female","pumps","stiletto"],"char":"\ud83d\udc60",fitzpatrick_scale:!1,category:"people"},sandal:{keywords:["shoes","fashion","flip flops"],"char":"\ud83d\udc61",fitzpatrick_scale:!1,category:"people"},boot:{keywords:["shoes","fashion"],"char":"\ud83d\udc62",fitzpatrick_scale:!1,category:"people"},mans_shoe:{keywords:["fashion","male"],"char":"\ud83d\udc5e",fitzpatrick_scale:!1,category:"people"},athletic_shoe:{keywords:["shoes","sports","sneakers"],"char":"\ud83d\udc5f",fitzpatrick_scale:!1,category:"people"},socks:{keywords:["stockings","clothes"],"char":"\ud83e\udde6",fitzpatrick_scale:!1,category:"people"},gloves:{keywords:["hands","winter","clothes"],"char":"\ud83e\udde4",fitzpatrick_scale:!1,category:"people"},scarf:{keywords:["neck","winter","clothes"],"char":"\ud83e\udde3",fitzpatrick_scale:!1,category:"people"},womans_hat:{keywords:["fashion","accessories","female","lady","spring"],"char":"\ud83d\udc52",fitzpatrick_scale:!1,category:"people"},tophat:{keywords:["magic","gentleman","classy","circus"],"char":"\ud83c\udfa9",fitzpatrick_scale:!1,category:"people"},billed_hat:{keywords:["cap","baseball"],"char":"\ud83e\udde2",fitzpatrick_scale:!1,category:"people"},rescue_worker_helmet:{keywords:["construction","build"],"char":"\u26d1",fitzpatrick_scale:!1,category:"people"},mortar_board:{keywords:["school","college","degree","university","graduation","cap","hat","legal","learn","education"],"char":"\ud83c\udf93",fitzpatrick_scale:!1,category:"people"},crown:{keywords:["king","kod","leader","royalty","lord"],"char":"\ud83d\udc51",fitzpatrick_scale:!1,category:"people"},school_satchel:{keywords:["student","education","bag","backpack"],"char":"\ud83c\udf92",fitzpatrick_scale:!1,category:"people"},pouch:{keywords:["bag","accessories","shopping"],"char":"\ud83d\udc5d",fitzpatrick_scale:!1,category:"people"},purse:{keywords:["fashion","accessories","money","sales","shopping"],"char":"\ud83d\udc5b",fitzpatrick_scale:!1,category:"people"},handbag:{keywords:["fashion","accessory","accessories","shopping"],"char":"\ud83d\udc5c",fitzpatrick_scale:!1,category:"people"},briefcase:{keywords:["business","documents","work","law","legal","job","career"],"char":"\ud83d\udcbc",fitzpatrick_scale:!1,category:"people"},eyeglasses:{keywords:["fashion","accessories","eyesight","nerdy","dork","geek"],"char":"\ud83d\udc53",fitzpatrick_scale:!1,category:"people"},dark_sunglasses:{keywords:["face","cool","accessories"],"char":"\ud83d\udd76",fitzpatrick_scale:!1,category:"people"},ring:{keywords:["wedding","propose","marriage","valentines","diamond","fashion","jewelry","gem","engagement"],"char":"\ud83d\udc8d",fitzpatrick_scale:!1,category:"people"},closed_umbrella:{keywords:["weather","rain","drizzle"],"char":"\ud83c\udf02",fitzpatrick_scale:!1,category:"people"},dog:{keywords:["animal","friend","nature","woof","puppy","pet","faithful"],"char":"\ud83d\udc36",fitzpatrick_scale:!1,category:"animals_and_nature"},cat:{keywords:["animal","meow","nature","pet","kitten"],"char":"\ud83d\udc31",fitzpatrick_scale:!1,category:"animals_and_nature"},mouse:{keywords:["animal","nature","cheese_wedge","rodent"],"char":"\ud83d\udc2d",fitzpatrick_scale:!1,category:"animals_and_nature"},hamster:{keywords:["animal","nature"],"char":"\ud83d\udc39",fitzpatrick_scale:!1,category:"animals_and_nature"},rabbit:{keywords:["animal","nature","pet","spring","magic","bunny"],"char":"\ud83d\udc30",fitzpatrick_scale:!1,category:"animals_and_nature"},fox_face:{keywords:["animal","nature","face"],"char":"\ud83e\udd8a",fitzpatrick_scale:!1,category:"animals_and_nature"},bear:{keywords:["animal","nature","wild"],"char":"\ud83d\udc3b",fitzpatrick_scale:!1,category:"animals_and_nature"},panda_face:{keywords:["animal","nature","panda"],"char":"\ud83d\udc3c",fitzpatrick_scale:!1,category:"animals_and_nature"},koala:{keywords:["animal","nature"],"char":"\ud83d\udc28",fitzpatrick_scale:!1,category:"animals_and_nature"},tiger:{keywords:["animal","cat","danger","wild","nature","roar"],"char":"\ud83d\udc2f",fitzpatrick_scale:!1,category:"animals_and_nature"},lion:{keywords:["animal","nature"],"char":"\ud83e\udd81",fitzpatrick_scale:!1,category:"animals_and_nature"},cow:{keywords:["beef","ox","animal","nature","moo","milk"],"char":"\ud83d\udc2e",fitzpatrick_scale:!1,category:"animals_and_nature"},pig:{keywords:["animal","oink","nature"],"char":"\ud83d\udc37",fitzpatrick_scale:!1,category:"animals_and_nature"},pig_nose:{keywords:["animal","oink"],"char":"\ud83d\udc3d",fitzpatrick_scale:!1,category:"animals_and_nature"},frog:{keywords:["animal","nature","croak","toad"],"char":"\ud83d\udc38",fitzpatrick_scale:!1,category:"animals_and_nature"},squid:{keywords:["animal","nature","ocean","sea"],"char":"\ud83e\udd91",fitzpatrick_scale:!1,category:"animals_and_nature"},octopus:{keywords:["animal","creature","ocean","sea","nature","beach"],"char":"\ud83d\udc19",fitzpatrick_scale:!1,category:"animals_and_nature"},shrimp:{keywords:["animal","ocean","nature","seafood"],"char":"\ud83e\udd90",fitzpatrick_scale:!1,category:"animals_and_nature"},monkey_face:{keywords:["animal","nature","circus"],"char":"\ud83d\udc35",fitzpatrick_scale:!1,category:"animals_and_nature"},gorilla:{keywords:["animal","nature","circus"],"char":"\ud83e\udd8d",fitzpatrick_scale:!1,category:"animals_and_nature"},see_no_evil:{keywords:["monkey","animal","nature","haha"],"char":"\ud83d\ude48",fitzpatrick_scale:!1,category:"animals_and_nature"},hear_no_evil:{keywords:["animal","monkey","nature"],"char":"\ud83d\ude49",fitzpatrick_scale:!1,category:"animals_and_nature"},speak_no_evil:{keywords:["monkey","animal","nature","omg"],"char":"\ud83d\ude4a",fitzpatrick_scale:!1,category:"animals_and_nature"},monkey:{keywords:["animal","nature","banana","circus"],"char":"\ud83d\udc12",fitzpatrick_scale:!1,category:"animals_and_nature"},chicken:{keywords:["animal","cluck","nature","bird"],"char":"\ud83d\udc14",fitzpatrick_scale:!1,category:"animals_and_nature"},penguin:{keywords:["animal","nature"],"char":"\ud83d\udc27",fitzpatrick_scale:!1,category:"animals_and_nature"},bird:{keywords:["animal","nature","fly","tweet","spring"],"char":"\ud83d\udc26",fitzpatrick_scale:!1,category:"animals_and_nature"},baby_chick:{keywords:["animal","chicken","bird"],"char":"\ud83d\udc24",fitzpatrick_scale:!1,category:"animals_and_nature"},hatching_chick:{keywords:["animal","chicken","egg","born","baby","bird"],"char":"\ud83d\udc23",fitzpatrick_scale:!1,category:"animals_and_nature"},hatched_chick:{keywords:["animal","chicken","baby","bird"],"char":"\ud83d\udc25",fitzpatrick_scale:!1,category:"animals_and_nature"},duck:{keywords:["animal","nature","bird","mallard"],"char":"\ud83e\udd86",fitzpatrick_scale:!1,category:"animals_and_nature"},eagle:{keywords:["animal","nature","bird"],"char":"\ud83e\udd85",fitzpatrick_scale:!1,category:"animals_and_nature"},owl:{keywords:["animal","nature","bird","hoot"],"char":"\ud83e\udd89",fitzpatrick_scale:!1,category:"animals_and_nature"},bat:{keywords:["animal","nature","blind","vampire"],"char":"\ud83e\udd87",fitzpatrick_scale:!1,category:"animals_and_nature"},wolf:{keywords:["animal","nature","wild"],"char":"\ud83d\udc3a",fitzpatrick_scale:!1,category:"animals_and_nature"},boar:{keywords:["animal","nature"],"char":"\ud83d\udc17",fitzpatrick_scale:!1,category:"animals_and_nature"},horse:{keywords:["animal","brown","nature"],"char":"\ud83d\udc34",fitzpatrick_scale:!1,category:"animals_and_nature"},unicorn:{keywords:["animal","nature","mystical"],"char":"\ud83e\udd84",fitzpatrick_scale:!1,category:"animals_and_nature"},honeybee:{keywords:["animal","insect","nature","bug","spring","honey"],"char":"\ud83d\udc1d",fitzpatrick_scale:!1,category:"animals_and_nature"},bug:{keywords:["animal","insect","nature","worm"],"char":"\ud83d\udc1b",fitzpatrick_scale:!1,category:"animals_and_nature"},butterfly:{keywords:["animal","insect","nature","caterpillar"],"char":"\ud83e\udd8b",fitzpatrick_scale:!1,category:"animals_and_nature"},snail:{keywords:["slow","animal","shell"],"char":"\ud83d\udc0c",fitzpatrick_scale:!1,category:"animals_and_nature"},beetle:{keywords:["animal","insect","nature","ladybug"],"char":"\ud83d\udc1e",fitzpatrick_scale:!1,category:"animals_and_nature"},ant:{keywords:["animal","insect","nature","bug"],"char":"\ud83d\udc1c",fitzpatrick_scale:!1,category:"animals_and_nature"},grasshopper:{keywords:["animal","cricket","chirp"],"char":"\ud83e\udd97",fitzpatrick_scale:!1,category:"animals_and_nature"},spider:{keywords:["animal","arachnid"],"char":"\ud83d\udd77",fitzpatrick_scale:!1,category:"animals_and_nature"},scorpion:{keywords:["animal","arachnid"],"char":"\ud83e\udd82",fitzpatrick_scale:!1,category:"animals_and_nature"},crab:{keywords:["animal","crustacean"],"char":"\ud83e\udd80",fitzpatrick_scale:!1,category:"animals_and_nature"},snake:{keywords:["animal","evil","nature","hiss","python"],"char":"\ud83d\udc0d",fitzpatrick_scale:!1,category:"animals_and_nature"},lizard:{keywords:["animal","nature","reptile"],"char":"\ud83e\udd8e",fitzpatrick_scale:!1,category:"animals_and_nature"},"t-rex":{keywords:["animal","nature","dinosaur","tyrannosaurus","extinct"],"char":"\ud83e\udd96",fitzpatrick_scale:!1,category:"animals_and_nature"},sauropod:{keywords:["animal","nature","dinosaur","brachiosaurus","brontosaurus","diplodocus","extinct"],"char":"\ud83e\udd95",fitzpatrick_scale:!1,category:"animals_and_nature"},turtle:{keywords:["animal","slow","nature","tortoise"],"char":"\ud83d\udc22",fitzpatrick_scale:!1,category:"animals_and_nature"},tropical_fish:{keywords:["animal","swim","ocean","beach","nemo"],"char":"\ud83d\udc20",fitzpatrick_scale:!1,category:"animals_and_nature"},fish:{keywords:["animal","food","nature"],"char":"\ud83d\udc1f",fitzpatrick_scale:!1,category:"animals_and_nature"},blowfish:{keywords:["animal","nature","food","sea","ocean"],"char":"\ud83d\udc21",fitzpatrick_scale:!1,category:"animals_and_nature"},dolphin:{keywords:["animal","nature","fish","sea","ocean","flipper","fins","beach"],"char":"\ud83d\udc2c",fitzpatrick_scale:!1,category:"animals_and_nature"},shark:{keywords:["animal","nature","fish","sea","ocean","jaws","fins","beach"],"char":"\ud83e\udd88",fitzpatrick_scale:!1,category:"animals_and_nature"},whale:{keywords:["animal","nature","sea","ocean"],"char":"\ud83d\udc33",fitzpatrick_scale:!1,category:"animals_and_nature"},whale2:{keywords:["animal","nature","sea","ocean"],"char":"\ud83d\udc0b",fitzpatrick_scale:!1,category:"animals_and_nature"},crocodile:{keywords:["animal","nature","reptile","lizard","alligator"],"char":"\ud83d\udc0a",fitzpatrick_scale:!1,category:"animals_and_nature"},leopard:{keywords:["animal","nature"],"char":"\ud83d\udc06",fitzpatrick_scale:!1,category:"animals_and_nature"},zebra:{keywords:["animal","nature","stripes","safari"],"char":"\ud83e\udd93",fitzpatrick_scale:!1,category:"animals_and_nature"},tiger2:{keywords:["animal","nature","roar"],"char":"\ud83d\udc05",fitzpatrick_scale:!1,category:"animals_and_nature"},water_buffalo:{keywords:["animal","nature","ox","cow"],"char":"\ud83d\udc03",fitzpatrick_scale:!1,category:"animals_and_nature"},ox:{keywords:["animal","cow","beef"],"char":"\ud83d\udc02",fitzpatrick_scale:!1,category:"animals_and_nature"},cow2:{keywords:["beef","ox","animal","nature","moo","milk"],"char":"\ud83d\udc04",fitzpatrick_scale:!1,category:"animals_and_nature"},deer:{keywords:["animal","nature","horns","venison"],"char":"\ud83e\udd8c",fitzpatrick_scale:!1,category:"animals_and_nature"},dromedary_camel:{keywords:["animal","hot","desert","hump"],"char":"\ud83d\udc2a",fitzpatrick_scale:!1,category:"animals_and_nature"},camel:{keywords:["animal","nature","hot","desert","hump"],"char":"\ud83d\udc2b",fitzpatrick_scale:!1,category:"animals_and_nature"},giraffe:{keywords:["animal","nature","spots","safari"],"char":"\ud83e\udd92",fitzpatrick_scale:!1,category:"animals_and_nature"},elephant:{keywords:["animal","nature","nose","th","circus"],"char":"\ud83d\udc18",fitzpatrick_scale:!1,category:"animals_and_nature"},rhinoceros:{keywords:["animal","nature","horn"],"char":"\ud83e\udd8f",fitzpatrick_scale:!1,category:"animals_and_nature"},goat:{keywords:["animal","nature"],"char":"\ud83d\udc10",fitzpatrick_scale:!1,category:"animals_and_nature"},ram:{keywords:["animal","sheep","nature"],"char":"\ud83d\udc0f",fitzpatrick_scale:!1,category:"animals_and_nature"},sheep:{keywords:["animal","nature","wool","shipit"],"char":"\ud83d\udc11",fitzpatrick_scale:!1,category:"animals_and_nature"},racehorse:{keywords:["animal","gamble","luck"],"char":"\ud83d\udc0e",fitzpatrick_scale:!1,category:"animals_and_nature"},pig2:{keywords:["animal","nature"],"char":"\ud83d\udc16",fitzpatrick_scale:!1,category:"animals_and_nature"},rat:{keywords:["animal","mouse","rodent"],"char":"\ud83d\udc00",fitzpatrick_scale:!1,category:"animals_and_nature"},mouse2:{keywords:["animal","nature","rodent"],"char":"\ud83d\udc01",fitzpatrick_scale:!1,category:"animals_and_nature"},rooster:{keywords:["animal","nature","chicken"],"char":"\ud83d\udc13",fitzpatrick_scale:!1,category:"animals_and_nature"},turkey:{keywords:["animal","bird"],"char":"\ud83e\udd83",fitzpatrick_scale:!1,category:"animals_and_nature"},dove:{keywords:["animal","bird"],"char":"\ud83d\udd4a",fitzpatrick_scale:!1,category:"animals_and_nature"},dog2:{keywords:["animal","nature","friend","doge","pet","faithful"],"char":"\ud83d\udc15",fitzpatrick_scale:!1,category:"animals_and_nature"},poodle:{keywords:["dog","animal","101","nature","pet"],"char":"\ud83d\udc29",fitzpatrick_scale:!1,category:"animals_and_nature"},cat2:{keywords:["animal","meow","pet","cats"],"char":"\ud83d\udc08",fitzpatrick_scale:!1,category:"animals_and_nature"},rabbit2:{keywords:["animal","nature","pet","magic","spring"],"char":"\ud83d\udc07",fitzpatrick_scale:!1,category:"animals_and_nature"},chipmunk:{keywords:["animal","nature","rodent","squirrel"],"char":"\ud83d\udc3f",fitzpatrick_scale:!1,category:"animals_and_nature"},hedgehog:{keywords:["animal","nature","spiny"],"char":"\ud83e\udd94",fitzpatrick_scale:!1,category:"animals_and_nature"},paw_prints:{keywords:["animal","tracking","footprints","dog","cat","pet","feet"],"char":"\ud83d\udc3e",fitzpatrick_scale:!1,category:"animals_and_nature"},dragon:{keywords:["animal","myth","nature","chinese","green"],"char":"\ud83d\udc09",fitzpatrick_scale:!1,category:"animals_and_nature"},dragon_face:{keywords:["animal","myth","nature","chinese","green"],"char":"\ud83d\udc32",fitzpatrick_scale:!1,category:"animals_and_nature"},cactus:{keywords:["vegetable","plant","nature"],"char":"\ud83c\udf35",fitzpatrick_scale:!1,category:"animals_and_nature"},christmas_tree:{keywords:["festival","vacation","december","xmas","celebration"],"char":"\ud83c\udf84",fitzpatrick_scale:!1,category:"animals_and_nature"},evergreen_tree:{keywords:["plant","nature"],"char":"\ud83c\udf32",fitzpatrick_scale:!1,category:"animals_and_nature"},deciduous_tree:{keywords:["plant","nature"],"char":"\ud83c\udf33",fitzpatrick_scale:!1,category:"animals_and_nature"},palm_tree:{keywords:["plant","vegetable","nature","summer","beach","mojito","tropical"],"char":"\ud83c\udf34",fitzpatrick_scale:!1,category:"animals_and_nature"},seedling:{keywords:["plant","nature","grass","lawn","spring"],"char":"\ud83c\udf31",fitzpatrick_scale:!1,category:"animals_and_nature"},herb:{keywords:["vegetable","plant","medicine","weed","grass","lawn"],"char":"\ud83c\udf3f",fitzpatrick_scale:!1,category:"animals_and_nature"},shamrock:{keywords:["vegetable","plant","nature","irish","clover"],"char":"\u2618",fitzpatrick_scale:!1,category:"animals_and_nature"},four_leaf_clover:{keywords:["vegetable","plant","nature","lucky","irish"],"char":"\ud83c\udf40",fitzpatrick_scale:!1,category:"animals_and_nature"},bamboo:{keywords:["plant","nature","vegetable","panda","pine_decoration"],"char":"\ud83c\udf8d",fitzpatrick_scale:!1,category:"animals_and_nature"},tanabata_tree:{keywords:["plant","nature","branch","summer"],"char":"\ud83c\udf8b",fitzpatrick_scale:!1,category:"animals_and_nature"},leaves:{keywords:["nature","plant","tree","vegetable","grass","lawn","spring"],"char":"\ud83c\udf43",fitzpatrick_scale:!1,category:"animals_and_nature"},fallen_leaf:{keywords:["nature","plant","vegetable","leaves"],"char":"\ud83c\udf42",fitzpatrick_scale:!1,category:"animals_and_nature"},maple_leaf:{keywords:["nature","plant","vegetable","ca","fall"],"char":"\ud83c\udf41",fitzpatrick_scale:!1,category:"animals_and_nature"},ear_of_rice:{keywords:["nature","plant"],"char":"\ud83c\udf3e",fitzpatrick_scale:!1,category:"animals_and_nature"},hibiscus:{keywords:["plant","vegetable","flowers","beach"],"char":"\ud83c\udf3a",fitzpatrick_scale:!1,category:"animals_and_nature"},sunflower:{keywords:["nature","plant","fall"],"char":"\ud83c\udf3b",fitzpatrick_scale:!1,category:"animals_and_nature"},rose:{keywords:["flowers","valentines","love","spring"],"char":"\ud83c\udf39",fitzpatrick_scale:!1,category:"animals_and_nature"},wilted_flower:{keywords:["plant","nature","flower"],"char":"\ud83e\udd40",fitzpatrick_scale:!1,category:"animals_and_nature"},tulip:{keywords:["flowers","plant","nature","summer","spring"],"char":"\ud83c\udf37",fitzpatrick_scale:!1,category:"animals_and_nature"},blossom:{keywords:["nature","flowers","yellow"],"char":"\ud83c\udf3c",fitzpatrick_scale:!1,category:"animals_and_nature"},cherry_blossom:{keywords:["nature","plant","spring","flower"],"char":"\ud83c\udf38",fitzpatrick_scale:!1,category:"animals_and_nature"},bouquet:{keywords:["flowers","nature","spring"],"char":"\ud83d\udc90",fitzpatrick_scale:!1,category:"animals_and_nature"},mushroom:{keywords:["plant","vegetable"],"char":"\ud83c\udf44",fitzpatrick_scale:!1,category:"animals_and_nature"},chestnut:{keywords:["food","squirrel"],"char":"\ud83c\udf30",fitzpatrick_scale:!1,category:"animals_and_nature"},jack_o_lantern:{keywords:["halloween","light","pumpkin","creepy","fall"],"char":"\ud83c\udf83",fitzpatrick_scale:!1,category:"animals_and_nature"},shell:{keywords:["nature","sea","beach"],"char":"\ud83d\udc1a",fitzpatrick_scale:!1,category:"animals_and_nature"},spider_web:{keywords:["animal","insect","arachnid","silk"],"char":"\ud83d\udd78",fitzpatrick_scale:!1,category:"animals_and_nature"},earth_americas:{keywords:["globe","world","USA","international"],"char":"\ud83c\udf0e",fitzpatrick_scale:!1,category:"animals_and_nature"},earth_africa:{keywords:["globe","world","international"],"char":"\ud83c\udf0d",fitzpatrick_scale:!1,category:"animals_and_nature"},earth_asia:{keywords:["globe","world","east","international"],"char":"\ud83c\udf0f",fitzpatrick_scale:!1,category:"animals_and_nature"},full_moon:{keywords:["nature","yellow","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf15",fitzpatrick_scale:!1,category:"animals_and_nature"},waning_gibbous_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep","waxing_gibbous_moon"],"char":"\ud83c\udf16",fitzpatrick_scale:!1,category:"animals_and_nature"},last_quarter_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf17",fitzpatrick_scale:!1,category:"animals_and_nature"},waning_crescent_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf18",fitzpatrick_scale:!1,category:"animals_and_nature"},new_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf11",fitzpatrick_scale:!1,category:"animals_and_nature"},waxing_crescent_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf12",fitzpatrick_scale:!1,category:"animals_and_nature"},first_quarter_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf13",fitzpatrick_scale:!1,category:"animals_and_nature"},waxing_gibbous_moon:{keywords:["nature","night","sky","gray","twilight","planet","space","evening","sleep"],"char":"\ud83c\udf14",fitzpatrick_scale:!1,category:"animals_and_nature"},new_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf1a",fitzpatrick_scale:!1,category:"animals_and_nature"},full_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf1d",fitzpatrick_scale:!1,category:"animals_and_nature"},first_quarter_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf1b",fitzpatrick_scale:!1,category:"animals_and_nature"},last_quarter_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf1c",fitzpatrick_scale:!1,category:"animals_and_nature"},sun_with_face:{keywords:["nature","morning","sky"],"char":"\ud83c\udf1e",fitzpatrick_scale:!1,category:"animals_and_nature"},crescent_moon:{keywords:["night","sleep","sky","evening","magic"],"char":"\ud83c\udf19",fitzpatrick_scale:!1,category:"animals_and_nature"},star:{keywords:["night","yellow"],"char":"\u2b50",fitzpatrick_scale:!1,category:"animals_and_nature"},star2:{keywords:["night","sparkle","awesome","good","magic"],"char":"\ud83c\udf1f",fitzpatrick_scale:!1,category:"animals_and_nature"},dizzy:{keywords:["star","sparkle","shoot","magic"],"char":"\ud83d\udcab",fitzpatrick_scale:!1,category:"animals_and_nature"},sparkles:{keywords:["stars","shine","shiny","cool","awesome","good","magic"],"char":"\u2728",fitzpatrick_scale:!1,category:"animals_and_nature"},comet:{keywords:["space"],"char":"\u2604",fitzpatrick_scale:!1,category:"animals_and_nature"},sunny:{keywords:["weather","nature","brightness","summer","beach","spring"],"char":"\u2600\ufe0f",fitzpatrick_scale:!1,category:"animals_and_nature"},sun_behind_small_cloud:{keywords:["weather"],"char":"\ud83c\udf24",fitzpatrick_scale:!1,category:"animals_and_nature"},partly_sunny:{keywords:["weather","nature","cloudy","morning","fall","spring"],"char":"\u26c5",fitzpatrick_scale:!1,category:"animals_and_nature"},sun_behind_large_cloud:{keywords:["weather"],"char":"\ud83c\udf25",fitzpatrick_scale:!1,category:"animals_and_nature"},sun_behind_rain_cloud:{keywords:["weather"],"char":"\ud83c\udf26",fitzpatrick_scale:!1,category:"animals_and_nature"},cloud:{keywords:["weather","sky"],"char":"\u2601\ufe0f",fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_rain:{keywords:["weather"],"char":"\ud83c\udf27",fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_lightning_and_rain:{keywords:["weather","lightning"],"char":"\u26c8",fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_lightning:{keywords:["weather","thunder"],"char":"\ud83c\udf29",fitzpatrick_scale:!1,category:"animals_and_nature"},zap:{keywords:["thunder","weather","lightning bolt","fast"],"char":"\u26a1",fitzpatrick_scale:!1,category:"animals_and_nature"},fire:{keywords:["hot","cook","flame"],"char":"\ud83d\udd25",fitzpatrick_scale:!1,category:"animals_and_nature"},boom:{keywords:["bomb","explode","explosion","collision","blown"],"char":"\ud83d\udca5",fitzpatrick_scale:!1,category:"animals_and_nature"},snowflake:{keywords:["winter","season","cold","weather","christmas","xmas"],"char":"\u2744\ufe0f",fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_snow:{keywords:["weather"],"char":"\ud83c\udf28",fitzpatrick_scale:!1,category:"animals_and_nature"},snowman:{keywords:["winter","season","cold","weather","christmas","xmas","frozen","without_snow"],"char":"\u26c4",fitzpatrick_scale:!1,category:"animals_and_nature"},snowman_with_snow:{keywords:["winter","season","cold","weather","christmas","xmas","frozen"],"char":"\u2603",fitzpatrick_scale:!1,category:"animals_and_nature"},wind_face:{keywords:["gust","air"],"char":"\ud83c\udf2c",fitzpatrick_scale:!1,category:"animals_and_nature"},dash:{keywords:["wind","air","fast","shoo","fart","smoke","puff"],"char":"\ud83d\udca8",fitzpatrick_scale:!1,category:"animals_and_nature"},tornado:{keywords:["weather","cyclone","twister"],"char":"\ud83c\udf2a",fitzpatrick_scale:!1,category:"animals_and_nature"},fog:{keywords:["weather"],"char":"\ud83c\udf2b",fitzpatrick_scale:!1,category:"animals_and_nature"},open_umbrella:{keywords:["weather","spring"],"char":"\u2602",fitzpatrick_scale:!1,category:"animals_and_nature"},umbrella:{keywords:["rainy","weather","spring"],"char":"\u2614",fitzpatrick_scale:!1,category:"animals_and_nature"},droplet:{keywords:["water","drip","faucet","spring"],"char":"\ud83d\udca7",fitzpatrick_scale:!1,category:"animals_and_nature"},sweat_drops:{keywords:["water","drip","oops"],"char":"\ud83d\udca6",fitzpatrick_scale:!1,category:"animals_and_nature"},ocean:{keywords:["sea","water","wave","nature","tsunami","disaster"],"char":"\ud83c\udf0a",fitzpatrick_scale:!1,category:"animals_and_nature"},green_apple:{keywords:["fruit","nature"],"char":"\ud83c\udf4f",fitzpatrick_scale:!1,category:"food_and_drink"},apple:{keywords:["fruit","mac","school"],"char":"\ud83c\udf4e",fitzpatrick_scale:!1,category:"food_and_drink"},pear:{keywords:["fruit","nature","food"],"char":"\ud83c\udf50",fitzpatrick_scale:!1,category:"food_and_drink"},tangerine:{keywords:["food","fruit","nature","orange"],"char":"\ud83c\udf4a",fitzpatrick_scale:!1,category:"food_and_drink"},lemon:{keywords:["fruit","nature"],"char":"\ud83c\udf4b",fitzpatrick_scale:!1,category:"food_and_drink"},banana:{keywords:["fruit","food","monkey"],"char":"\ud83c\udf4c",fitzpatrick_scale:!1,category:"food_and_drink"},watermelon:{keywords:["fruit","food","picnic","summer"],"char":"\ud83c\udf49",fitzpatrick_scale:!1,category:"food_and_drink"},grapes:{keywords:["fruit","food","wine"],"char":"\ud83c\udf47",fitzpatrick_scale:!1,category:"food_and_drink"},strawberry:{keywords:["fruit","food","nature"],"char":"\ud83c\udf53",fitzpatrick_scale:!1,category:"food_and_drink"},melon:{keywords:["fruit","nature","food"],"char":"\ud83c\udf48",fitzpatrick_scale:!1,category:"food_and_drink"},cherries:{keywords:["food","fruit"],"char":"\ud83c\udf52",fitzpatrick_scale:!1,category:"food_and_drink"},peach:{keywords:["fruit","nature","food"],"char":"\ud83c\udf51",fitzpatrick_scale:!1,category:"food_and_drink"},pineapple:{keywords:["fruit","nature","food"],"char":"\ud83c\udf4d",fitzpatrick_scale:!1,category:"food_and_drink"},coconut:{keywords:["fruit","nature","food","palm"],"char":"\ud83e\udd65",fitzpatrick_scale:!1,category:"food_and_drink"},kiwi_fruit:{keywords:["fruit","food"],"char":"\ud83e\udd5d",fitzpatrick_scale:!1,category:"food_and_drink"},avocado:{keywords:["fruit","food"],"char":"\ud83e\udd51",fitzpatrick_scale:!1,category:"food_and_drink"},broccoli:{keywords:["fruit","food","vegetable"],"char":"\ud83e\udd66",fitzpatrick_scale:!1,category:"food_and_drink"},tomato:{keywords:["fruit","vegetable","nature","food"],"char":"\ud83c\udf45",fitzpatrick_scale:!1,category:"food_and_drink"},eggplant:{keywords:["vegetable","nature","food","aubergine"],"char":"\ud83c\udf46",fitzpatrick_scale:!1,category:"food_and_drink"},cucumber:{keywords:["fruit","food","pickle"],"char":"\ud83e\udd52",fitzpatrick_scale:!1,category:"food_and_drink"},carrot:{keywords:["vegetable","food","orange"],"char":"\ud83e\udd55",fitzpatrick_scale:!1,category:"food_and_drink"},hot_pepper:{keywords:["food","spicy","chilli","chili"],"char":"\ud83c\udf36",fitzpatrick_scale:!1,category:"food_and_drink"},potato:{keywords:["food","tuber","vegatable","starch"],"char":"\ud83e\udd54",fitzpatrick_scale:!1,category:"food_and_drink"},corn:{keywords:["food","vegetable","plant"],"char":"\ud83c\udf3d",fitzpatrick_scale:!1,category:"food_and_drink"},sweet_potato:{keywords:["food","nature"],"char":"\ud83c\udf60",fitzpatrick_scale:!1,category:"food_and_drink"},peanuts:{keywords:["food","nut"],"char":"\ud83e\udd5c",fitzpatrick_scale:!1,category:"food_and_drink"},honey_pot:{keywords:["bees","sweet","kitchen"],"char":"\ud83c\udf6f",fitzpatrick_scale:!1,category:"food_and_drink"},croissant:{keywords:["food","bread","french"],"char":"\ud83e\udd50",fitzpatrick_scale:!1,category:"food_and_drink"},bread:{keywords:["food","wheat","breakfast","toast"],"char":"\ud83c\udf5e",fitzpatrick_scale:!1,category:"food_and_drink"},baguette_bread:{keywords:["food","bread","french"],"char":"\ud83e\udd56",fitzpatrick_scale:!1,category:"food_and_drink"},pretzel:{keywords:["food","bread","twisted"],"char":"\ud83e\udd68",fitzpatrick_scale:!1,category:"food_and_drink"},cheese:{keywords:["food","chadder"],"char":"\ud83e\uddc0",fitzpatrick_scale:!1,category:"food_and_drink"},egg:{keywords:["food","chicken","breakfast"],"char":"\ud83e\udd5a",fitzpatrick_scale:!1,category:"food_and_drink"},bacon:{keywords:["food","breakfast","pork","pig","meat"],"char":"\ud83e\udd53",fitzpatrick_scale:!1,category:"food_and_drink"},steak:{keywords:["food","cow","meat","cut","chop","lambchop","porkchop"],"char":"\ud83e\udd69",fitzpatrick_scale:!1,category:"food_and_drink"},pancakes:{keywords:["food","breakfast","flapjacks","hotcakes"],"char":"\ud83e\udd5e",fitzpatrick_scale:!1,category:"food_and_drink"},poultry_leg:{keywords:["food","meat","drumstick","bird","chicken","turkey"],"char":"\ud83c\udf57",fitzpatrick_scale:!1,category:"food_and_drink"},meat_on_bone:{keywords:["good","food","drumstick"],"char":"\ud83c\udf56",fitzpatrick_scale:!1,category:"food_and_drink"},fried_shrimp:{keywords:["food","animal","appetizer","summer"],"char":"\ud83c\udf64",fitzpatrick_scale:!1,category:"food_and_drink"},fried_egg:{keywords:["food","breakfast","kitchen","egg"],"char":"\ud83c\udf73",fitzpatrick_scale:!1,category:"food_and_drink"},hamburger:{keywords:["meat","fast food","beef","cheeseburger","mcdonalds","burger king"],"char":"\ud83c\udf54",fitzpatrick_scale:!1,category:"food_and_drink"},fries:{keywords:["chips","snack","fast food"],"char":"\ud83c\udf5f",fitzpatrick_scale:!1,category:"food_and_drink"},stuffed_flatbread:{keywords:["food","flatbread","stuffed","gyro"],"char":"\ud83e\udd59",fitzpatrick_scale:!1,category:"food_and_drink"},hotdog:{keywords:["food","frankfurter"],"char":"\ud83c\udf2d",fitzpatrick_scale:!1,category:"food_and_drink"},pizza:{keywords:["food","party"],"char":"\ud83c\udf55",fitzpatrick_scale:!1,category:"food_and_drink"},sandwich:{keywords:["food","lunch","bread"],"char":"\ud83e\udd6a",fitzpatrick_scale:!1,category:"food_and_drink"},canned_food:{keywords:["food","soup"],"char":"\ud83e\udd6b",fitzpatrick_scale:!1,category:"food_and_drink"},spaghetti:{keywords:["food","italian","noodle"],"char":"\ud83c\udf5d",fitzpatrick_scale:!1,category:"food_and_drink"},taco:{keywords:["food","mexican"],"char":"\ud83c\udf2e",fitzpatrick_scale:!1,category:"food_and_drink"},burrito:{keywords:["food","mexican"],"char":"\ud83c\udf2f",fitzpatrick_scale:!1,category:"food_and_drink"},green_salad:{keywords:["food","healthy","lettuce"],"char":"\ud83e\udd57",fitzpatrick_scale:!1,category:"food_and_drink"},shallow_pan_of_food:{keywords:["food","cooking","casserole","paella"],"char":"\ud83e\udd58",fitzpatrick_scale:!1,category:"food_and_drink"},ramen:{keywords:["food","japanese","noodle","chopsticks"],"char":"\ud83c\udf5c",fitzpatrick_scale:!1,category:"food_and_drink"},stew:{keywords:["food","meat","soup"],"char":"\ud83c\udf72",fitzpatrick_scale:!1,category:"food_and_drink"},fish_cake:{keywords:["food","japan","sea","beach","narutomaki","pink","swirl","kamaboko","surimi","ramen"],"char":"\ud83c\udf65",fitzpatrick_scale:!1,category:"food_and_drink"},fortune_cookie:{keywords:["food","prophecy"],"char":"\ud83e\udd60",fitzpatrick_scale:!1,category:"food_and_drink"},sushi:{keywords:["food","fish","japanese","rice"],"char":"\ud83c\udf63",fitzpatrick_scale:!1,category:"food_and_drink"},bento:{keywords:["food","japanese","box"],"char":"\ud83c\udf71",fitzpatrick_scale:!1,category:"food_and_drink"},curry:{keywords:["food","spicy","hot","indian"],"char":"\ud83c\udf5b",fitzpatrick_scale:!1,category:"food_and_drink"},rice_ball:{keywords:["food","japanese"],"char":"\ud83c\udf59",fitzpatrick_scale:!1,category:"food_and_drink"},rice:{keywords:["food","china","asian"],"char":"\ud83c\udf5a",fitzpatrick_scale:!1,category:"food_and_drink"},rice_cracker:{keywords:["food","japanese"],"char":"\ud83c\udf58",fitzpatrick_scale:!1,category:"food_and_drink"},oden:{keywords:["food","japanese"],"char":"\ud83c\udf62",fitzpatrick_scale:!1,category:"food_and_drink"},dango:{keywords:["food","dessert","sweet","japanese","barbecue","meat"],"char":"\ud83c\udf61",fitzpatrick_scale:!1,category:"food_and_drink"},shaved_ice:{keywords:["hot","dessert","summer"],"char":"\ud83c\udf67",fitzpatrick_scale:!1,category:"food_and_drink"},ice_cream:{keywords:["food","hot","dessert"],"char":"\ud83c\udf68",fitzpatrick_scale:!1,category:"food_and_drink"},icecream:{keywords:["food","hot","dessert","summer"],"char":"\ud83c\udf66",fitzpatrick_scale:!1,category:"food_and_drink"},pie:{keywords:["food","dessert","pastry"],"char":"\ud83e\udd67",fitzpatrick_scale:!1,category:"food_and_drink"},cake:{keywords:["food","dessert"],"char":"\ud83c\udf70",fitzpatrick_scale:!1,category:"food_and_drink"},birthday:{keywords:["food","dessert","cake"],"char":"\ud83c\udf82",fitzpatrick_scale:!1,category:"food_and_drink"},custard:{keywords:["dessert","food"],"char":"\ud83c\udf6e",fitzpatrick_scale:!1,category:"food_and_drink"},candy:{keywords:["snack","dessert","sweet","lolly"],"char":"\ud83c\udf6c",fitzpatrick_scale:!1,category:"food_and_drink"},lollipop:{keywords:["food","snack","candy","sweet"],"char":"\ud83c\udf6d",fitzpatrick_scale:!1,category:"food_and_drink"},chocolate_bar:{keywords:["food","snack","dessert","sweet"],"char":"\ud83c\udf6b",fitzpatrick_scale:!1,category:"food_and_drink"},popcorn:{keywords:["food","movie theater","films","snack"],"char":"\ud83c\udf7f",fitzpatrick_scale:!1,category:"food_and_drink"},dumpling:{keywords:["food","empanada","pierogi","potsticker"],"char":"\ud83e\udd5f",fitzpatrick_scale:!1,category:"food_and_drink"},doughnut:{keywords:["food","dessert","snack","sweet","donut"],"char":"\ud83c\udf69",fitzpatrick_scale:!1,category:"food_and_drink"},cookie:{keywords:["food","snack","oreo","chocolate","sweet","dessert"],"char":"\ud83c\udf6a",fitzpatrick_scale:!1,category:"food_and_drink"},milk_glass:{keywords:["beverage","drink","cow"],"char":"\ud83e\udd5b",fitzpatrick_scale:!1,category:"food_and_drink"},beer:{keywords:["relax","beverage","drink","drunk","party","pub","summer","alcohol","booze"],"char":"\ud83c\udf7a",fitzpatrick_scale:!1,category:"food_and_drink"},beers:{keywords:["relax","beverage","drink","drunk","party","pub","summer","alcohol","booze"],"char":"\ud83c\udf7b",fitzpatrick_scale:!1,category:"food_and_drink"},clinking_glasses:{keywords:["beverage","drink","party","alcohol","celebrate","cheers","wine","champagne","toast"],"char":"\ud83e\udd42",fitzpatrick_scale:!1,category:"food_and_drink"},wine_glass:{keywords:["drink","beverage","drunk","alcohol","booze"],"char":"\ud83c\udf77",fitzpatrick_scale:!1,category:"food_and_drink"},tumbler_glass:{keywords:["drink","beverage","drunk","alcohol","liquor","booze","bourbon","scotch","whisky","glass","shot"],"char":"\ud83e\udd43",fitzpatrick_scale:!1,category:"food_and_drink"},cocktail:{keywords:["drink","drunk","alcohol","beverage","booze","mojito"],"char":"\ud83c\udf78",fitzpatrick_scale:!1,category:"food_and_drink"},tropical_drink:{keywords:["beverage","cocktail","summer","beach","alcohol","booze","mojito"],"char":"\ud83c\udf79",fitzpatrick_scale:!1,category:"food_and_drink"},champagne:{keywords:["drink","wine","bottle","celebration"],"char":"\ud83c\udf7e",fitzpatrick_scale:!1,category:"food_and_drink"},sake:{keywords:["wine","drink","drunk","beverage","japanese","alcohol","booze"],"char":"\ud83c\udf76",fitzpatrick_scale:!1,category:"food_and_drink"},tea:{keywords:["drink","bowl","breakfast","green","british"],"char":"\ud83c\udf75",fitzpatrick_scale:!1,category:"food_and_drink"},cup_with_straw:{keywords:["drink","soda"],"char":"\ud83e\udd64",fitzpatrick_scale:!1,category:"food_and_drink"},coffee:{keywords:["beverage","caffeine","latte","espresso"],"char":"\u2615",fitzpatrick_scale:!1,category:"food_and_drink"},baby_bottle:{keywords:["food","container","milk"],"char":"\ud83c\udf7c",fitzpatrick_scale:!1,category:"food_and_drink"},spoon:{keywords:["cutlery","kitchen","tableware"],"char":"\ud83e\udd44",fitzpatrick_scale:!1,category:"food_and_drink"},fork_and_knife:{keywords:["cutlery","kitchen"],"char":"\ud83c\udf74",fitzpatrick_scale:!1,category:"food_and_drink"},plate_with_cutlery:{keywords:["food","eat","meal","lunch","dinner","restaurant"],"char":"\ud83c\udf7d",fitzpatrick_scale:!1,category:"food_and_drink"},bowl_with_spoon:{keywords:["food","breakfast","cereal","oatmeal","porridge"],"char":"\ud83e\udd63",fitzpatrick_scale:!1,category:"food_and_drink"},takeout_box:{keywords:["food","leftovers"],"char":"\ud83e\udd61",fitzpatrick_scale:!1,category:"food_and_drink"},chopsticks:{keywords:["food"],"char":"\ud83e\udd62",fitzpatrick_scale:!1,category:"food_and_drink"},soccer:{keywords:["sports","football"],"char":"\u26bd",fitzpatrick_scale:!1,category:"activity"},basketball:{keywords:["sports","balls","NBA"],"char":"\ud83c\udfc0",fitzpatrick_scale:!1,category:"activity"},football:{keywords:["sports","balls","NFL"],"char":"\ud83c\udfc8",fitzpatrick_scale:!1,category:"activity"},baseball:{keywords:["sports","balls"],"char":"\u26be",fitzpatrick_scale:!1,category:"activity"},tennis:{keywords:["sports","balls","green"],"char":"\ud83c\udfbe",fitzpatrick_scale:!1,category:"activity"},volleyball:{keywords:["sports","balls"],"char":"\ud83c\udfd0",fitzpatrick_scale:!1,category:"activity"},rugby_football:{keywords:["sports","team"],"char":"\ud83c\udfc9",fitzpatrick_scale:!1,category:"activity"},"8ball":{keywords:["pool","hobby","game","luck","magic"],"char":"\ud83c\udfb1",fitzpatrick_scale:!1,category:"activity"},golf:{keywords:["sports","business","flag","hole","summer"],"char":"\u26f3",fitzpatrick_scale:!1,category:"activity"},golfing_woman:{keywords:["sports","business","woman","female"],"char":"\ud83c\udfcc\ufe0f\u200d\u2640\ufe0f",fitzpatrick_scale:!1,category:"activity"},golfing_man:{keywords:["sports","business"],"char":"\ud83c\udfcc",fitzpatrick_scale:!0,category:"activity"},ping_pong:{keywords:["sports","pingpong"],"char":"\ud83c\udfd3",fitzpatrick_scale:!1,category:"activity"},badminton:{keywords:["sports"],"char":"\ud83c\udff8",fitzpatrick_scale:!1,category:"activity"},goal_net:{keywords:["sports"],"char":"\ud83e\udd45",fitzpatrick_scale:!1,category:"activity"},ice_hockey:{keywords:["sports"],"char":"\ud83c\udfd2",fitzpatrick_scale:!1,category:"activity"},field_hockey:{keywords:["sports"],"char":"\ud83c\udfd1",fitzpatrick_scale:!1,category:"activity"},cricket:{keywords:["sports"],"char":"\ud83c\udfcf",fitzpatrick_scale:!1,category:"activity"},ski:{keywords:["sports","winter","cold","snow"],"char":"\ud83c\udfbf",fitzpatrick_scale:!1,category:"activity"},skier:{keywords:["sports","winter","snow"],"char":"\u26f7",fitzpatrick_scale:!1,category:"activity"},snowboarder:{keywords:["sports","winter"],"char":"\ud83c\udfc2",fitzpatrick_scale:!0,category:"activity"},person_fencing:{keywords:["sports","fencing","sword"],"char":"\ud83e\udd3a",fitzpatrick_scale:!1,category:"activity"},women_wrestling:{keywords:["sports","wrestlers"],"char":"\ud83e\udd3c\u200d\u2640\ufe0f",fitzpatrick_scale:!1,category:"activity"},men_wrestling:{keywords:["sports","wrestlers"],"char":"\ud83e\udd3c\u200d\u2642\ufe0f",fitzpatrick_scale:!1,category:"activity"},woman_cartwheeling:{keywords:["gymnastics"],"char":"\ud83e\udd38\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},man_cartwheeling:{keywords:["gymnastics"],"char":"\ud83e\udd38\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},woman_playing_handball:{keywords:["sports"],"char":"\ud83e\udd3e\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},man_playing_handball:{keywords:["sports"],"char":"\ud83e\udd3e\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},ice_skate:{keywords:["sports"],"char":"\u26f8",fitzpatrick_scale:!1,category:"activity"},curling_stone:{keywords:["sports"],"char":"\ud83e\udd4c",fitzpatrick_scale:!1,category:"activity"},sled:{keywords:["sleigh","luge","toboggan"],"char":"\ud83d\udef7",fitzpatrick_scale:!1,category:"activity"},bow_and_arrow:{keywords:["sports"],"char":"\ud83c\udff9",fitzpatrick_scale:!1,category:"activity"},fishing_pole_and_fish:{keywords:["food","hobby","summer"],"char":"\ud83c\udfa3",fitzpatrick_scale:!1,category:"activity"},boxing_glove:{keywords:["sports","fighting"],"char":"\ud83e\udd4a",fitzpatrick_scale:!1,category:"activity"},martial_arts_uniform:{keywords:["judo","karate","taekwondo"],"char":"\ud83e\udd4b",fitzpatrick_scale:!1,category:"activity"},rowing_woman:{keywords:["sports","hobby","water","ship","woman","female"],"char":"\ud83d\udea3\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},rowing_man:{keywords:["sports","hobby","water","ship"],"char":"\ud83d\udea3",fitzpatrick_scale:!0,category:"activity"},climbing_woman:{keywords:["sports","hobby","woman","female","rock"],"char":"\ud83e\uddd7\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},climbing_man:{keywords:["sports","hobby","man","male","rock"],"char":"\ud83e\uddd7\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},swimming_woman:{keywords:["sports","exercise","human","athlete","water","summer","woman","female"],"char":"\ud83c\udfca\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},swimming_man:{keywords:["sports","exercise","human","athlete","water","summer"],"char":"\ud83c\udfca",fitzpatrick_scale:!0,category:"activity"},woman_playing_water_polo:{keywords:["sports","pool"],"char":"\ud83e\udd3d\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},man_playing_water_polo:{keywords:["sports","pool"],"char":"\ud83e\udd3d\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},woman_in_lotus_position:{keywords:["woman","female","meditation","yoga","serenity","zen","mindfulness"],"char":"\ud83e\uddd8\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},man_in_lotus_position:{keywords:["man","male","meditation","yoga","serenity","zen","mindfulness"],"char":"\ud83e\uddd8\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},surfing_woman:{keywords:["sports","ocean","sea","summer","beach","woman","female"],"char":"\ud83c\udfc4\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},surfing_man:{keywords:["sports","ocean","sea","summer","beach"],"char":"\ud83c\udfc4",fitzpatrick_scale:!0,category:"activity"},bath:{keywords:["clean","shower","bathroom"],"char":"\ud83d\udec0",fitzpatrick_scale:!0,category:"activity"},basketball_woman:{keywords:["sports","human","woman","female"],"char":"\u26f9\ufe0f\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},basketball_man:{keywords:["sports","human"],"char":"\u26f9",fitzpatrick_scale:!0,category:"activity"},weight_lifting_woman:{keywords:["sports","training","exercise","woman","female"],"char":"\ud83c\udfcb\ufe0f\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},weight_lifting_man:{keywords:["sports","training","exercise"],"char":"\ud83c\udfcb",fitzpatrick_scale:!0,category:"activity"},biking_woman:{keywords:["sports","bike","exercise","hipster","woman","female"],"char":"\ud83d\udeb4\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},biking_man:{keywords:["sports","bike","exercise","hipster"],"char":"\ud83d\udeb4",fitzpatrick_scale:!0,category:"activity"},mountain_biking_woman:{keywords:["transportation","sports","human","race","bike","woman","female"],"char":"\ud83d\udeb5\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},mountain_biking_man:{keywords:["transportation","sports","human","race","bike"],"char":"\ud83d\udeb5",fitzpatrick_scale:!0,category:"activity"},horse_racing:{keywords:["animal","betting","competition","gambling","luck"],"char":"\ud83c\udfc7",fitzpatrick_scale:!0,category:"activity"},business_suit_levitating:{keywords:["suit","business","levitate","hover","jump"],"char":"\ud83d\udd74",fitzpatrick_scale:!0,category:"activity"},trophy:{keywords:["win","award","contest","place","ftw","ceremony"],"char":"\ud83c\udfc6",fitzpatrick_scale:!1,category:"activity"},running_shirt_with_sash:{keywords:["play","pageant"],"char":"\ud83c\udfbd",fitzpatrick_scale:!1,category:"activity"},medal_sports:{keywords:["award","winning"],"char":"\ud83c\udfc5",fitzpatrick_scale:!1,category:"activity"},medal_military:{keywords:["award","winning","army"],"char":"\ud83c\udf96",fitzpatrick_scale:!1,category:"activity"},"1st_place_medal":{keywords:["award","winning","first"],"char":"\ud83e\udd47",fitzpatrick_scale:!1,category:"activity"},"2nd_place_medal":{keywords:["award","second"],"char":"\ud83e\udd48",fitzpatrick_scale:!1,category:"activity"},"3rd_place_medal":{keywords:["award","third"],"char":"\ud83e\udd49",fitzpatrick_scale:!1,category:"activity"},reminder_ribbon:{keywords:["sports","cause","support","awareness"],"char":"\ud83c\udf97",fitzpatrick_scale:!1,category:"activity"},rosette:{keywords:["flower","decoration","military"],"char":"\ud83c\udff5",fitzpatrick_scale:!1,category:"activity"},ticket:{keywords:["event","concert","pass"],"char":"\ud83c\udfab",fitzpatrick_scale:!1,category:"activity"},tickets:{keywords:["sports","concert","entrance"],"char":"\ud83c\udf9f",fitzpatrick_scale:!1,category:"activity"},performing_arts:{keywords:["acting","theater","drama"],"char":"\ud83c\udfad",fitzpatrick_scale:!1,category:"activity"},art:{keywords:["design","paint","draw","colors"],"char":"\ud83c\udfa8",fitzpatrick_scale:!1,category:"activity"},circus_tent:{keywords:["festival","carnival","party"],"char":"\ud83c\udfaa",fitzpatrick_scale:!1,category:"activity"},woman_juggling:{keywords:["juggle","balance","skill","multitask"],"char":"\ud83e\udd39\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},man_juggling:{keywords:["juggle","balance","skill","multitask"],"char":"\ud83e\udd39\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},microphone:{keywords:["sound","music","PA","sing","talkshow"],"char":"\ud83c\udfa4",fitzpatrick_scale:!1,category:"activity"},headphones:{keywords:["music","score","gadgets"],"char":"\ud83c\udfa7",fitzpatrick_scale:!1,category:"activity"},musical_score:{keywords:["treble","clef","compose"],"char":"\ud83c\udfbc",fitzpatrick_scale:!1,category:"activity"},musical_keyboard:{keywords:["piano","instrument","compose"],"char":"\ud83c\udfb9",fitzpatrick_scale:!1,category:"activity"},drum:{keywords:["music","instrument","drumsticks","snare"],"char":"\ud83e\udd41",fitzpatrick_scale:!1,category:"activity"},saxophone:{keywords:["music","instrument","jazz","blues"],"char":"\ud83c\udfb7",fitzpatrick_scale:!1,category:"activity"},trumpet:{keywords:["music","brass"],"char":"\ud83c\udfba",fitzpatrick_scale:!1,category:"activity"},guitar:{keywords:["music","instrument"],"char":"\ud83c\udfb8",fitzpatrick_scale:!1,category:"activity"},violin:{keywords:["music","instrument","orchestra","symphony"],"char":"\ud83c\udfbb",fitzpatrick_scale:!1,category:"activity"},clapper:{keywords:["movie","film","record"],"char":"\ud83c\udfac",fitzpatrick_scale:!1,category:"activity"},video_game:{keywords:["play","console","PS4","controller"],"char":"\ud83c\udfae",fitzpatrick_scale:!1,category:"activity"},space_invader:{keywords:["game","arcade","play"],"char":"\ud83d\udc7e",fitzpatrick_scale:!1,category:"activity"},dart:{keywords:["game","play","bar","target","bullseye"],"char":"\ud83c\udfaf",fitzpatrick_scale:!1,category:"activity"},game_die:{keywords:["dice","random","tabletop","play","luck"],"char":"\ud83c\udfb2",fitzpatrick_scale:!1,category:"activity"},slot_machine:{keywords:["bet","gamble","vegas","fruit machine","luck","casino"],"char":"\ud83c\udfb0",fitzpatrick_scale:!1,category:"activity"},bowling:{keywords:["sports","fun","play"],"char":"\ud83c\udfb3",fitzpatrick_scale:!1,category:"activity"},red_car:{keywords:["red","transportation","vehicle"],"char":"\ud83d\ude97",fitzpatrick_scale:!1,category:"travel_and_places"},taxi:{keywords:["uber","vehicle","cars","transportation"],"char":"\ud83d\ude95",fitzpatrick_scale:!1,category:"travel_and_places"},blue_car:{keywords:["transportation","vehicle"],"char":"\ud83d\ude99",fitzpatrick_scale:!1,category:"travel_and_places"},bus:{keywords:["car","vehicle","transportation"],"char":"\ud83d\ude8c",fitzpatrick_scale:!1,category:"travel_and_places"},trolleybus:{keywords:["bart","transportation","vehicle"],"char":"\ud83d\ude8e",fitzpatrick_scale:!1,category:"travel_and_places"},racing_car:{keywords:["sports","race","fast","formula","f1"],"char":"\ud83c\udfce",fitzpatrick_scale:!1,category:"travel_and_places"},police_car:{keywords:["vehicle","cars","transportation","law","legal","enforcement"],"char":"\ud83d\ude93",fitzpatrick_scale:!1,category:"travel_and_places"},ambulance:{keywords:["health","911","hospital"],"char":"\ud83d\ude91",fitzpatrick_scale:!1,category:"travel_and_places"},fire_engine:{keywords:["transportation","cars","vehicle"],"char":"\ud83d\ude92",fitzpatrick_scale:!1,category:"travel_and_places"},minibus:{keywords:["vehicle","car","transportation"],"char":"\ud83d\ude90",fitzpatrick_scale:!1,category:"travel_and_places"},truck:{keywords:["cars","transportation"],"char":"\ud83d\ude9a",fitzpatrick_scale:!1,category:"travel_and_places"},articulated_lorry:{keywords:["vehicle","cars","transportation","express"],"char":"\ud83d\ude9b",fitzpatrick_scale:!1,category:"travel_and_places"},tractor:{keywords:["vehicle","car","farming","agriculture"],"char":"\ud83d\ude9c",fitzpatrick_scale:!1,category:"travel_and_places"},kick_scooter:{keywords:["vehicle","kick","razor"],"char":"\ud83d\udef4",fitzpatrick_scale:!1,category:"travel_and_places"},motorcycle:{keywords:["race","sports","fast"],"char":"\ud83c\udfcd",fitzpatrick_scale:!1,category:"travel_and_places"},bike:{keywords:["sports","bicycle","exercise","hipster"],"char":"\ud83d\udeb2",fitzpatrick_scale:!1,category:"travel_and_places"},motor_scooter:{keywords:["vehicle","vespa","sasha"],"char":"\ud83d\udef5",fitzpatrick_scale:!1,category:"travel_and_places"},rotating_light:{keywords:["police","ambulance","911","emergency","alert","error","pinged","law","legal"],"char":"\ud83d\udea8",fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_police_car:{keywords:["vehicle","law","legal","enforcement","911"],"char":"\ud83d\ude94",fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_bus:{keywords:["vehicle","transportation"],"char":"\ud83d\ude8d",fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_automobile:{keywords:["car","vehicle","transportation"],"char":"\ud83d\ude98",fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_taxi:{keywords:["vehicle","cars","uber"],"char":"\ud83d\ude96",fitzpatrick_scale:!1,category:"travel_and_places"},aerial_tramway:{keywords:["transportation","vehicle","ski"],"char":"\ud83d\udea1",fitzpatrick_scale:!1,category:"travel_and_places"},mountain_cableway:{keywords:["transportation","vehicle","ski"],"char":"\ud83d\udea0",fitzpatrick_scale:!1,category:"travel_and_places"},suspension_railway:{keywords:["vehicle","transportation"],"char":"\ud83d\ude9f",fitzpatrick_scale:!1,category:"travel_and_places"},railway_car:{keywords:["transportation","vehicle"],"char":"\ud83d\ude83",fitzpatrick_scale:!1,category:"travel_and_places"},train:{keywords:["transportation","vehicle","carriage","public","travel"],"char":"\ud83d\ude8b",fitzpatrick_scale:!1,category:"travel_and_places"},monorail:{keywords:["transportation","vehicle"],"char":"\ud83d\ude9d",fitzpatrick_scale:!1,category:"travel_and_places"},bullettrain_side:{keywords:["transportation","vehicle"],"char":"\ud83d\ude84",fitzpatrick_scale:!1,category:"travel_and_places"},bullettrain_front:{keywords:["transportation","vehicle","speed","fast","public","travel"],"char":"\ud83d\ude85",fitzpatrick_scale:!1,category:"travel_and_places"},light_rail:{keywords:["transportation","vehicle"],"char":"\ud83d\ude88",fitzpatrick_scale:!1,category:"travel_and_places"},mountain_railway:{keywords:["transportation","vehicle"],"char":"\ud83d\ude9e",fitzpatrick_scale:!1,category:"travel_and_places"},steam_locomotive:{keywords:["transportation","vehicle","train"],"char":"\ud83d\ude82",fitzpatrick_scale:!1,category:"travel_and_places"},train2:{keywords:["transportation","vehicle"],"char":"\ud83d\ude86",fitzpatrick_scale:!1,category:"travel_and_places"},metro:{keywords:["transportation","blue-square","mrt","underground","tube"],"char":"\ud83d\ude87",fitzpatrick_scale:!1,category:"travel_and_places"},tram:{keywords:["transportation","vehicle"],"char":"\ud83d\ude8a",fitzpatrick_scale:!1,category:"travel_and_places"},station:{keywords:["transportation","vehicle","public"],"char":"\ud83d\ude89",fitzpatrick_scale:!1,category:"travel_and_places"},flying_saucer:{keywords:["transportation","vehicle","ufo"],"char":"\ud83d\udef8",fitzpatrick_scale:!1,category:"travel_and_places"},helicopter:{keywords:["transportation","vehicle","fly"],"char":"\ud83d\ude81",fitzpatrick_scale:!1,category:"travel_and_places"},small_airplane:{keywords:["flight","transportation","fly","vehicle"],"char":"\ud83d\udee9",fitzpatrick_scale:!1,category:"travel_and_places"},airplane:{keywords:["vehicle","transportation","flight","fly"],"char":"\u2708\ufe0f",fitzpatrick_scale:!1,category:"travel_and_places"},flight_departure:{keywords:["airport","flight","landing"],"char":"\ud83d\udeeb",fitzpatrick_scale:!1,category:"travel_and_places"},flight_arrival:{keywords:["airport","flight","boarding"],"char":"\ud83d\udeec",fitzpatrick_scale:!1,category:"travel_and_places"},sailboat:{keywords:["ship","summer","transportation","water","sailing"],"char":"\u26f5",fitzpatrick_scale:!1,category:"travel_and_places"},motor_boat:{keywords:["ship"],"char":"\ud83d\udee5",fitzpatrick_scale:!1,category:"travel_and_places"},speedboat:{keywords:["ship","transportation","vehicle","summer"],"char":"\ud83d\udea4",fitzpatrick_scale:!1,category:"travel_and_places"},ferry:{keywords:["boat","ship","yacht"],"char":"\u26f4",fitzpatrick_scale:!1,category:"travel_and_places"},passenger_ship:{keywords:["yacht","cruise","ferry"],"char":"\ud83d\udef3",fitzpatrick_scale:!1,category:"travel_and_places"},rocket:{keywords:["launch","ship","staffmode","NASA","outer space","outer_space","fly"],"char":"\ud83d\ude80",fitzpatrick_scale:!1,category:"travel_and_places"},artificial_satellite:{keywords:["communication","gps","orbit","spaceflight","NASA","ISS"],"char":"\ud83d\udef0",fitzpatrick_scale:!1,category:"travel_and_places"},seat:{keywords:["sit","airplane","transport","bus","flight","fly"],"char":"\ud83d\udcba",fitzpatrick_scale:!1,category:"travel_and_places"},canoe:{keywords:["boat","paddle","water","ship"],"char":"\ud83d\udef6",fitzpatrick_scale:!1,category:"travel_and_places"},anchor:{keywords:["ship","ferry","sea","boat"],"char":"\u2693",fitzpatrick_scale:!1,category:"travel_and_places"},construction:{keywords:["wip","progress","caution","warning"],"char":"\ud83d\udea7",fitzpatrick_scale:!1,category:"travel_and_places"},fuelpump:{keywords:["gas station","petroleum"],"char":"\u26fd",fitzpatrick_scale:!1,category:"travel_and_places"},busstop:{keywords:["transportation","wait"],"char":"\ud83d\ude8f",fitzpatrick_scale:!1,category:"travel_and_places"},vertical_traffic_light:{keywords:["transportation","driving"],"char":"\ud83d\udea6",fitzpatrick_scale:!1,category:"travel_and_places"},traffic_light:{keywords:["transportation","signal"],"char":"\ud83d\udea5",fitzpatrick_scale:!1,category:"travel_and_places"},checkered_flag:{keywords:["contest","finishline","race","gokart"],"char":"\ud83c\udfc1",fitzpatrick_scale:!1,category:"travel_and_places"},ship:{keywords:["transportation","titanic","deploy"],"char":"\ud83d\udea2",fitzpatrick_scale:!1,category:"travel_and_places"},ferris_wheel:{keywords:["photo","carnival","londoneye"],"char":"\ud83c\udfa1",fitzpatrick_scale:!1,category:"travel_and_places"},roller_coaster:{keywords:["carnival","playground","photo","fun"],"char":"\ud83c\udfa2",fitzpatrick_scale:!1,category:"travel_and_places"},carousel_horse:{keywords:["photo","carnival"],"char":"\ud83c\udfa0",fitzpatrick_scale:!1,category:"travel_and_places"},building_construction:{keywords:["wip","working","progress"],"char":"\ud83c\udfd7",fitzpatrick_scale:!1,category:"travel_and_places"},foggy:{keywords:["photo","mountain"],"char":"\ud83c\udf01",fitzpatrick_scale:!1,category:"travel_and_places"},tokyo_tower:{keywords:["photo","japanese"],"char":"\ud83d\uddfc",fitzpatrick_scale:!1,category:"travel_and_places"},factory:{keywords:["building","industry","pollution","smoke"],"char":"\ud83c\udfed",fitzpatrick_scale:!1,category:"travel_and_places"},fountain:{keywords:["photo","summer","water","fresh"],"char":"\u26f2",fitzpatrick_scale:!1,category:"travel_and_places"},rice_scene:{keywords:["photo","japan","asia","tsukimi"],"char":"\ud83c\udf91",fitzpatrick_scale:!1,category:"travel_and_places"},mountain:{keywords:["photo","nature","environment"],"char":"\u26f0",fitzpatrick_scale:!1,category:"travel_and_places"},mountain_snow:{keywords:["photo","nature","environment","winter","cold"],"char":"\ud83c\udfd4",fitzpatrick_scale:!1,category:"travel_and_places"},mount_fuji:{keywords:["photo","mountain","nature","japanese"],"char":"\ud83d\uddfb",fitzpatrick_scale:!1,category:"travel_and_places"},volcano:{keywords:["photo","nature","disaster"],"char":"\ud83c\udf0b",fitzpatrick_scale:!1,category:"travel_and_places"},japan:{keywords:["nation","country","japanese","asia"],"char":"\ud83d\uddfe",fitzpatrick_scale:!1,category:"travel_and_places"},camping:{keywords:["photo","outdoors","tent"],"char":"\ud83c\udfd5",fitzpatrick_scale:!1,category:"travel_and_places"},tent:{keywords:["photo","camping","outdoors"],"char":"\u26fa",fitzpatrick_scale:!1,category:"travel_and_places"},national_park:{keywords:["photo","environment","nature"],"char":"\ud83c\udfde",fitzpatrick_scale:!1,category:"travel_and_places"},motorway:{keywords:["road","cupertino","interstate","highway"],"char":"\ud83d\udee3",fitzpatrick_scale:!1,category:"travel_and_places"},railway_track:{keywords:["train","transportation"],"char":"\ud83d\udee4",fitzpatrick_scale:!1,category:"travel_and_places"},sunrise:{keywords:["morning","view","vacation","photo"],"char":"\ud83c\udf05",fitzpatrick_scale:!1,category:"travel_and_places"},sunrise_over_mountains:{keywords:["view","vacation","photo"],"char":"\ud83c\udf04",fitzpatrick_scale:!1,category:"travel_and_places"},desert:{keywords:["photo","warm","saharah"],"char":"\ud83c\udfdc",fitzpatrick_scale:!1,category:"travel_and_places"},beach_umbrella:{keywords:["weather","summer","sunny","sand","mojito"],"char":"\ud83c\udfd6",fitzpatrick_scale:!1,category:"travel_and_places"},desert_island:{keywords:["photo","tropical","mojito"],"char":"\ud83c\udfdd",fitzpatrick_scale:!1,category:"travel_and_places"},city_sunrise:{keywords:["photo","good morning","dawn"],"char":"\ud83c\udf07",fitzpatrick_scale:!1,category:"travel_and_places"},city_sunset:{keywords:["photo","evening","sky","buildings"],"char":"\ud83c\udf06",fitzpatrick_scale:!1,category:"travel_and_places"},cityscape:{keywords:["photo","night life","urban"],"char":"\ud83c\udfd9",fitzpatrick_scale:!1,category:"travel_and_places"},night_with_stars:{keywords:["evening","city","downtown"],"char":"\ud83c\udf03",fitzpatrick_scale:!1,category:"travel_and_places"},bridge_at_night:{keywords:["photo","sanfrancisco"],"char":"\ud83c\udf09",fitzpatrick_scale:!1,category:"travel_and_places"},milky_way:{keywords:["photo","space","stars"],"char":"\ud83c\udf0c",fitzpatrick_scale:!1,category:"travel_and_places"},stars:{keywords:["night","photo"],"char":"\ud83c\udf20",fitzpatrick_scale:!1,category:"travel_and_places"},sparkler:{keywords:["stars","night","shine"],"char":"\ud83c\udf87",fitzpatrick_scale:!1,category:"travel_and_places"},fireworks:{keywords:["photo","festival","carnival","congratulations"],"char":"\ud83c\udf86",fitzpatrick_scale:!1,category:"travel_and_places"},rainbow:{keywords:["nature","happy","unicorn_face","photo","sky","spring"],"char":"\ud83c\udf08",fitzpatrick_scale:!1,category:"travel_and_places"},houses:{keywords:["buildings","photo"],"char":"\ud83c\udfd8",fitzpatrick_scale:!1,category:"travel_and_places"},european_castle:{keywords:["building","royalty","history"],"char":"\ud83c\udff0",fitzpatrick_scale:!1,category:"travel_and_places"},japanese_castle:{keywords:["photo","building"],"char":"\ud83c\udfef",fitzpatrick_scale:!1,category:"travel_and_places"},stadium:{keywords:["photo","place","sports","concert","venue"],"char":"\ud83c\udfdf",fitzpatrick_scale:!1,category:"travel_and_places"},statue_of_liberty:{keywords:["american","newyork"],"char":"\ud83d\uddfd",fitzpatrick_scale:!1,category:"travel_and_places"},house:{keywords:["building","home"],"char":"\ud83c\udfe0",fitzpatrick_scale:!1,category:"travel_and_places"},house_with_garden:{keywords:["home","plant","nature"],"char":"\ud83c\udfe1",fitzpatrick_scale:!1,category:"travel_and_places"},derelict_house:{keywords:["abandon","evict","broken","building"],"char":"\ud83c\udfda",fitzpatrick_scale:!1,category:"travel_and_places"},office:{keywords:["building","bureau","work"],"char":"\ud83c\udfe2",fitzpatrick_scale:!1,category:"travel_and_places"},department_store:{keywords:["building","shopping","mall"],"char":"\ud83c\udfec",fitzpatrick_scale:!1,category:"travel_and_places"},post_office:{keywords:["building","envelope","communication"],"char":"\ud83c\udfe3",fitzpatrick_scale:!1,category:"travel_and_places"},european_post_office:{keywords:["building","email"],"char":"\ud83c\udfe4",fitzpatrick_scale:!1,category:"travel_and_places"},hospital:{keywords:["building","health","surgery","doctor"],"char":"\ud83c\udfe5",fitzpatrick_scale:!1,category:"travel_and_places"},bank:{keywords:["building","money","sales","cash","business","enterprise"],"char":"\ud83c\udfe6",fitzpatrick_scale:!1,category:"travel_and_places"},hotel:{keywords:["building","accomodation","checkin"],"char":"\ud83c\udfe8",fitzpatrick_scale:!1,category:"travel_and_places"},convenience_store:{keywords:["building","shopping","groceries"],"char":"\ud83c\udfea",fitzpatrick_scale:!1,category:"travel_and_places"},school:{keywords:["building","student","education","learn","teach"],"char":"\ud83c\udfeb",fitzpatrick_scale:!1,category:"travel_and_places"},love_hotel:{keywords:["like","affection","dating"],"char":"\ud83c\udfe9",fitzpatrick_scale:!1,category:"travel_and_places"},wedding:{keywords:["love","like","affection","couple","marriage","bride","groom"],"char":"\ud83d\udc92",fitzpatrick_scale:!1,category:"travel_and_places"},classical_building:{keywords:["art","culture","history"],"char":"\ud83c\udfdb",fitzpatrick_scale:!1,category:"travel_and_places"},church:{keywords:["building","religion","christ"],"char":"\u26ea",fitzpatrick_scale:!1,category:"travel_and_places"},mosque:{keywords:["islam","worship","minaret"],"char":"\ud83d\udd4c",fitzpatrick_scale:!1,category:"travel_and_places"},synagogue:{keywords:["judaism","worship","temple","jewish"],"char":"\ud83d\udd4d",fitzpatrick_scale:!1,category:"travel_and_places"},kaaba:{keywords:["mecca","mosque","islam"],"char":"\ud83d\udd4b",fitzpatrick_scale:!1,category:"travel_and_places"},shinto_shrine:{keywords:["temple","japan","kyoto"],"char":"\u26e9",fitzpatrick_scale:!1,category:"travel_and_places"},watch:{keywords:["time","accessories"],"char":"\u231a",fitzpatrick_scale:!1,category:"objects"},iphone:{keywords:["technology","apple","gadgets","dial"],"char":"\ud83d\udcf1",fitzpatrick_scale:!1,category:"objects"},calling:{keywords:["iphone","incoming"],"char":"\ud83d\udcf2",fitzpatrick_scale:!1,category:"objects"},computer:{keywords:["technology","laptop","screen","display","monitor"],"char":"\ud83d\udcbb",fitzpatrick_scale:!1,category:"objects"},keyboard:{keywords:["technology","computer","type","input","text"],"char":"\u2328",fitzpatrick_scale:!1,category:"objects"},desktop_computer:{keywords:["technology","computing","screen"],"char":"\ud83d\udda5",fitzpatrick_scale:!1,category:"objects"},printer:{keywords:["paper","ink"],"char":"\ud83d\udda8",fitzpatrick_scale:!1,category:"objects"},computer_mouse:{keywords:["click"],"char":"\ud83d\uddb1",fitzpatrick_scale:!1,category:"objects"},trackball:{keywords:["technology","trackpad"],"char":"\ud83d\uddb2",fitzpatrick_scale:!1,category:"objects"},joystick:{keywords:["game","play"],"char":"\ud83d\udd79",fitzpatrick_scale:!1,category:"objects"},clamp:{keywords:["tool"],"char":"\ud83d\udddc",fitzpatrick_scale:!1,category:"objects"},minidisc:{keywords:["technology","record","data","disk","90s"],"char":"\ud83d\udcbd",fitzpatrick_scale:!1,category:"objects"},floppy_disk:{keywords:["oldschool","technology","save","90s","80s"],"char":"\ud83d\udcbe",fitzpatrick_scale:!1,category:"objects"},cd:{keywords:["technology","dvd","disk","disc","90s"],"char":"\ud83d\udcbf",fitzpatrick_scale:!1,category:"objects"},dvd:{keywords:["cd","disk","disc"],"char":"\ud83d\udcc0",fitzpatrick_scale:!1,category:"objects"},vhs:{keywords:["record","video","oldschool","90s","80s"],"char":"\ud83d\udcfc",fitzpatrick_scale:!1,category:"objects"},camera:{keywords:["gadgets","photography"],"char":"\ud83d\udcf7",fitzpatrick_scale:!1,category:"objects"},camera_flash:{keywords:["photography","gadgets"],"char":"\ud83d\udcf8",fitzpatrick_scale:!1,category:"objects"},video_camera:{keywords:["film","record"],"char":"\ud83d\udcf9",fitzpatrick_scale:!1,category:"objects"},movie_camera:{keywords:["film","record"],"char":"\ud83c\udfa5",fitzpatrick_scale:!1,category:"objects"},film_projector:{keywords:["video","tape","record","movie"],"char":"\ud83d\udcfd",fitzpatrick_scale:!1,category:"objects"},film_strip:{keywords:["movie"],"char":"\ud83c\udf9e",fitzpatrick_scale:!1,category:"objects"},telephone_receiver:{keywords:["technology","communication","dial"],"char":"\ud83d\udcde",fitzpatrick_scale:!1,category:"objects"},phone:{keywords:["technology","communication","dial","telephone"],"char":"\u260e\ufe0f",fitzpatrick_scale:!1,category:"objects"},pager:{keywords:["bbcall","oldschool","90s"],"char":"\ud83d\udcdf",fitzpatrick_scale:!1,category:"objects"},fax:{keywords:["communication","technology"],"char":"\ud83d\udce0",fitzpatrick_scale:!1,category:"objects"},tv:{keywords:["technology","program","oldschool","show","television"],"char":"\ud83d\udcfa",fitzpatrick_scale:!1,category:"objects"},radio:{keywords:["communication","music","podcast","program"],"char":"\ud83d\udcfb",fitzpatrick_scale:!1,category:"objects"},studio_microphone:{keywords:["sing","recording","artist","talkshow"],"char":"\ud83c\udf99",fitzpatrick_scale:!1,category:"objects"},level_slider:{keywords:["scale"],"char":"\ud83c\udf9a",fitzpatrick_scale:!1,category:"objects"},control_knobs:{keywords:["dial"],"char":"\ud83c\udf9b",fitzpatrick_scale:!1,category:"objects"},stopwatch:{keywords:["time","deadline"],"char":"\u23f1",fitzpatrick_scale:!1,category:"objects"},timer_clock:{keywords:["alarm"],"char":"\u23f2",fitzpatrick_scale:!1,category:"objects"},alarm_clock:{keywords:["time","wake"],"char":"\u23f0",fitzpatrick_scale:!1,category:"objects"},mantelpiece_clock:{keywords:["time"],"char":"\ud83d\udd70",fitzpatrick_scale:!1,category:"objects"},hourglass_flowing_sand:{keywords:["oldschool","time","countdown"],"char":"\u23f3",fitzpatrick_scale:!1,category:"objects"},hourglass:{keywords:["time","clock","oldschool","limit","exam","quiz","test"],"char":"\u231b",fitzpatrick_scale:!1,category:"objects"},satellite:{keywords:["communication","future","radio","space"],"char":"\ud83d\udce1",fitzpatrick_scale:!1,category:"objects"},battery:{keywords:["power","energy","sustain"],"char":"\ud83d\udd0b",fitzpatrick_scale:!1,category:"objects"},electric_plug:{keywords:["charger","power"],"char":"\ud83d\udd0c",fitzpatrick_scale:!1,category:"objects"},bulb:{keywords:["light","electricity","idea"],"char":"\ud83d\udca1",fitzpatrick_scale:!1,category:"objects"},flashlight:{keywords:["dark","camping","sight","night"],"char":"\ud83d\udd26",fitzpatrick_scale:!1,category:"objects"},candle:{keywords:["fire","wax"],"char":"\ud83d\udd6f",fitzpatrick_scale:!1,category:"objects"},wastebasket:{keywords:["bin","trash","rubbish","garbage","toss"],"char":"\ud83d\uddd1",fitzpatrick_scale:!1,category:"objects"},oil_drum:{keywords:["barrell"],"char":"\ud83d\udee2",fitzpatrick_scale:!1,category:"objects"},money_with_wings:{keywords:["dollar","bills","payment","sale"],"char":"\ud83d\udcb8",fitzpatrick_scale:!1,category:"objects"},dollar:{keywords:["money","sales","bill","currency"],"char":"\ud83d\udcb5",fitzpatrick_scale:!1,category:"objects"},yen:{keywords:["money","sales","japanese","dollar","currency"],"char":"\ud83d\udcb4",fitzpatrick_scale:!1,category:"objects"},euro:{keywords:["money","sales","dollar","currency"],"char":"\ud83d\udcb6",fitzpatrick_scale:!1,category:"objects"},pound:{keywords:["british","sterling","money","sales","bills","uk","england","currency"],"char":"\ud83d\udcb7",fitzpatrick_scale:!1,category:"objects"},moneybag:{keywords:["dollar","payment","coins","sale"],"char":"\ud83d\udcb0",fitzpatrick_scale:!1,category:"objects"},credit_card:{keywords:["money","sales","dollar","bill","payment","shopping"],"char":"\ud83d\udcb3",fitzpatrick_scale:!1,category:"objects"},gem:{keywords:["blue","ruby","diamond","jewelry"],"char":"\ud83d\udc8e",fitzpatrick_scale:!1,category:"objects"},balance_scale:{keywords:["law","fairness","weight"],"char":"\u2696",fitzpatrick_scale:!1,category:"objects"},wrench:{keywords:["tools","diy","ikea","fix","maintainer"],"char":"\ud83d\udd27",fitzpatrick_scale:!1,category:"objects"},hammer:{keywords:["tools","build","create"],"char":"\ud83d\udd28",fitzpatrick_scale:!1,category:"objects"},hammer_and_pick:{keywords:["tools","build","create"],"char":"\u2692",fitzpatrick_scale:!1,category:"objects"},hammer_and_wrench:{keywords:["tools","build","create"],"char":"\ud83d\udee0",fitzpatrick_scale:!1,category:"objects"},pick:{keywords:["tools","dig"],"char":"\u26cf",fitzpatrick_scale:!1,category:"objects"},nut_and_bolt:{keywords:["handy","tools","fix"],"char":"\ud83d\udd29",fitzpatrick_scale:!1,category:"objects"},gear:{keywords:["cog"],"char":"\u2699",fitzpatrick_scale:!1,category:"objects"},chains:{keywords:["lock","arrest"],"char":"\u26d3",fitzpatrick_scale:!1,category:"objects"},gun:{keywords:["violence","weapon","pistol","revolver"],"char":"\ud83d\udd2b",fitzpatrick_scale:!1,category:"objects"},bomb:{keywords:["boom","explode","explosion","terrorism"],"char":"\ud83d\udca3",fitzpatrick_scale:!1,category:"objects"},hocho:{keywords:["knife","blade","cutlery","kitchen","weapon"],"char":"\ud83d\udd2a",fitzpatrick_scale:!1,category:"objects"},dagger:{keywords:["weapon"],"char":"\ud83d\udde1",fitzpatrick_scale:!1,category:"objects"},crossed_swords:{keywords:["weapon"],"char":"\u2694",fitzpatrick_scale:!1,category:"objects"},shield:{keywords:["protection","security"],"char":"\ud83d\udee1",fitzpatrick_scale:!1,category:"objects"},smoking:{keywords:["kills","tobacco","cigarette","joint","smoke"],"char":"\ud83d\udeac",fitzpatrick_scale:!1,category:"objects"},skull_and_crossbones:{keywords:["poison","danger","deadly","scary","death","pirate","evil"],"char":"\u2620",fitzpatrick_scale:!1,category:"objects"},coffin:{keywords:["vampire","dead","die","death","rip","graveyard","cemetery","casket","funeral","box"],"char":"\u26b0",fitzpatrick_scale:!1,category:"objects"},funeral_urn:{keywords:["dead","die","death","rip","ashes"],"char":"\u26b1",fitzpatrick_scale:!1,category:"objects"},amphora:{keywords:["vase","jar"],"char":"\ud83c\udffa",fitzpatrick_scale:!1,category:"objects"},crystal_ball:{keywords:["disco","party","magic","circus","fortune_teller"],"char":"\ud83d\udd2e",fitzpatrick_scale:!1,category:"objects"},prayer_beads:{keywords:["dhikr","religious"],"char":"\ud83d\udcff",fitzpatrick_scale:!1,category:"objects"},barber:{keywords:["hair","salon","style"],"char":"\ud83d\udc88",fitzpatrick_scale:!1,category:"objects"},alembic:{keywords:["distilling","science","experiment","chemistry"],"char":"\u2697",fitzpatrick_scale:!1,category:"objects"},telescope:{keywords:["stars","space","zoom","science","astronomy"],"char":"\ud83d\udd2d",fitzpatrick_scale:!1,category:"objects"},microscope:{keywords:["laboratory","experiment","zoomin","science","study"],"char":"\ud83d\udd2c",fitzpatrick_scale:!1,category:"objects"},hole:{keywords:["embarrassing"],"char":"\ud83d\udd73",fitzpatrick_scale:!1,category:"objects"},pill:{keywords:["health","medicine","doctor","pharmacy","drug"],"char":"\ud83d\udc8a",fitzpatrick_scale:!1,category:"objects"},syringe:{keywords:["health","hospital","drugs","blood","medicine","needle","doctor","nurse"],"char":"\ud83d\udc89",fitzpatrick_scale:!1,category:"objects"},thermometer:{keywords:["weather","temperature","hot","cold"],"char":"\ud83c\udf21",fitzpatrick_scale:!1,category:"objects"},label:{keywords:["sale","tag"],"char":"\ud83c\udff7",fitzpatrick_scale:!1,category:"objects"},bookmark:{keywords:["favorite","label","save"],"char":"\ud83d\udd16",fitzpatrick_scale:!1,category:"objects"},toilet:{keywords:["restroom","wc","washroom","bathroom","potty"],"char":"\ud83d\udebd",fitzpatrick_scale:!1,category:"objects"},shower:{keywords:["clean","water","bathroom"],"char":"\ud83d\udebf",fitzpatrick_scale:!1,category:"objects"},bathtub:{keywords:["clean","shower","bathroom"],"char":"\ud83d\udec1",fitzpatrick_scale:!1,category:"objects"},key:{keywords:["lock","door","password"],"char":"\ud83d\udd11",fitzpatrick_scale:!1,category:"objects"},old_key:{keywords:["lock","door","password"],"char":"\ud83d\udddd",fitzpatrick_scale:!1,category:"objects"},couch_and_lamp:{keywords:["read","chill"],"char":"\ud83d\udecb",fitzpatrick_scale:!1,category:"objects"},sleeping_bed:{keywords:["bed","rest"],"char":"\ud83d\udecc",fitzpatrick_scale:!0,category:"objects"},bed:{keywords:["sleep","rest"],"char":"\ud83d\udecf",fitzpatrick_scale:!1,category:"objects"},door:{keywords:["house","entry","exit"],"char":"\ud83d\udeaa",fitzpatrick_scale:!1,category:"objects"},bellhop_bell:{keywords:["service"],"char":"\ud83d\udece",fitzpatrick_scale:!1,category:"objects"},framed_picture:{keywords:["photography"],"char":"\ud83d\uddbc",fitzpatrick_scale:!1,category:"objects"},world_map:{keywords:["location","direction"],"char":"\ud83d\uddfa",fitzpatrick_scale:!1,category:"objects"},parasol_on_ground:{keywords:["weather","summer"],"char":"\u26f1",fitzpatrick_scale:!1,category:"objects"},moyai:{keywords:["rock","easter island","moai"],"char":"\ud83d\uddff",fitzpatrick_scale:!1,category:"objects"},shopping:{keywords:["mall","buy","purchase"],"char":"\ud83d\udecd",fitzpatrick_scale:!1,category:"objects"},shopping_cart:{keywords:["trolley"],"char":"\ud83d\uded2",fitzpatrick_scale:!1,category:"objects"},balloon:{keywords:["party","celebration","birthday","circus"],"char":"\ud83c\udf88",fitzpatrick_scale:!1,category:"objects"},flags:{keywords:["fish","japanese","koinobori","carp","banner"],"char":"\ud83c\udf8f",fitzpatrick_scale:!1,category:"objects"},ribbon:{keywords:["decoration","pink","girl","bowtie"],"char":"\ud83c\udf80",fitzpatrick_scale:!1,category:"objects"},gift:{keywords:["present","birthday","christmas","xmas"],"char":"\ud83c\udf81",fitzpatrick_scale:!1,category:"objects"},confetti_ball:{keywords:["festival","party","birthday","circus"],"char":"\ud83c\udf8a",fitzpatrick_scale:!1,category:"objects"},tada:{keywords:["party","congratulations","birthday","magic","circus","celebration"],"char":"\ud83c\udf89",fitzpatrick_scale:!1,category:"objects"},dolls:{keywords:["japanese","toy","kimono"],"char":"\ud83c\udf8e",fitzpatrick_scale:!1,category:"objects"},wind_chime:{keywords:["nature","ding","spring","bell"],"char":"\ud83c\udf90",fitzpatrick_scale:!1,category:"objects"},crossed_flags:{keywords:["japanese","nation","country","border"],"char":"\ud83c\udf8c",fitzpatrick_scale:!1,category:"objects"},izakaya_lantern:{keywords:["light","paper","halloween","spooky"],"char":"\ud83c\udfee",fitzpatrick_scale:!1,category:"objects"},email:{keywords:["letter","postal","inbox","communication"],"char":"\u2709\ufe0f",fitzpatrick_scale:!1,category:"objects"},envelope_with_arrow:{keywords:["email","communication"],"char":"\ud83d\udce9",fitzpatrick_scale:!1,category:"objects"},incoming_envelope:{keywords:["email","inbox"],"char":"\ud83d\udce8",fitzpatrick_scale:!1,category:"objects"},"e-mail":{keywords:["communication","inbox"],"char":"\ud83d\udce7",fitzpatrick_scale:!1,category:"objects"},love_letter:{keywords:["email","like","affection","envelope","valentines"],"char":"\ud83d\udc8c",fitzpatrick_scale:!1,category:"objects"},postbox:{keywords:["email","letter","envelope"],"char":"\ud83d\udcee",fitzpatrick_scale:!1,category:"objects"},mailbox_closed:{keywords:["email","communication","inbox"],"char":"\ud83d\udcea",fitzpatrick_scale:!1,category:"objects"},mailbox:{keywords:["email","inbox","communication"],"char":"\ud83d\udceb",fitzpatrick_scale:!1,category:"objects"},mailbox_with_mail:{keywords:["email","inbox","communication"],"char":"\ud83d\udcec",fitzpatrick_scale:!1,category:"objects"},mailbox_with_no_mail:{keywords:["email","inbox"],"char":"\ud83d\udced",fitzpatrick_scale:!1,category:"objects"},"package":{keywords:["mail","gift","cardboard","box","moving"],"char":"\ud83d\udce6",fitzpatrick_scale:!1,category:"objects"},postal_horn:{keywords:["instrument","music"],"char":"\ud83d\udcef",fitzpatrick_scale:!1,category:"objects"},inbox_tray:{keywords:["email","documents"],"char":"\ud83d\udce5",fitzpatrick_scale:!1,category:"objects"},outbox_tray:{keywords:["inbox","email"],"char":"\ud83d\udce4",fitzpatrick_scale:!1,category:"objects"},scroll:{keywords:["documents","ancient","history","paper"],"char":"\ud83d\udcdc",fitzpatrick_scale:!1,category:"objects"},page_with_curl:{keywords:["documents","office","paper"],"char":"\ud83d\udcc3",fitzpatrick_scale:!1,category:"objects"},bookmark_tabs:{keywords:["favorite","save","order","tidy"],"char":"\ud83d\udcd1",fitzpatrick_scale:!1,category:"objects"},bar_chart:{keywords:["graph","presentation","stats"],"char":"\ud83d\udcca",fitzpatrick_scale:!1,category:"objects"},chart_with_upwards_trend:{keywords:["graph","presentation","stats","recovery","business","economics","money","sales","good","success"],"char":"\ud83d\udcc8",fitzpatrick_scale:!1,category:"objects"},chart_with_downwards_trend:{keywords:["graph","presentation","stats","recession","business","economics","money","sales","bad","failure"],"char":"\ud83d\udcc9",fitzpatrick_scale:!1,category:"objects"},page_facing_up:{keywords:["documents","office","paper","information"],"char":"\ud83d\udcc4",fitzpatrick_scale:!1,category:"objects"},date:{keywords:["calendar","schedule"],"char":"\ud83d\udcc5",fitzpatrick_scale:!1,category:"objects"},calendar:{keywords:["schedule","date","planning"],"char":"\ud83d\udcc6",fitzpatrick_scale:!1,category:"objects"},spiral_calendar:{keywords:["date","schedule","planning"],"char":"\ud83d\uddd3",fitzpatrick_scale:!1,category:"objects"},card_index:{keywords:["business","stationery"],"char":"\ud83d\udcc7",fitzpatrick_scale:!1,category:"objects"},card_file_box:{keywords:["business","stationery"],"char":"\ud83d\uddc3",fitzpatrick_scale:!1,category:"objects"},ballot_box:{keywords:["election","vote"],"char":"\ud83d\uddf3",fitzpatrick_scale:!1,category:"objects"},file_cabinet:{keywords:["filing","organizing"],"char":"\ud83d\uddc4",fitzpatrick_scale:!1,category:"objects"},clipboard:{keywords:["stationery","documents"],"char":"\ud83d\udccb",fitzpatrick_scale:!1,category:"objects"},spiral_notepad:{keywords:["memo","stationery"],"char":"\ud83d\uddd2",fitzpatrick_scale:!1,category:"objects"},file_folder:{keywords:["documents","business","office"],"char":"\ud83d\udcc1",fitzpatrick_scale:!1,category:"objects"},open_file_folder:{keywords:["documents","load"],"char":"\ud83d\udcc2",fitzpatrick_scale:!1,category:"objects"},card_index_dividers:{keywords:["organizing","business","stationery"],"char":"\ud83d\uddc2",fitzpatrick_scale:!1,category:"objects"},newspaper_roll:{keywords:["press","headline"],"char":"\ud83d\uddde",fitzpatrick_scale:!1,category:"objects"},newspaper:{keywords:["press","headline"],"char":"\ud83d\udcf0",fitzpatrick_scale:!1,category:"objects"},notebook:{keywords:["stationery","record","notes","paper","study"],"char":"\ud83d\udcd3",fitzpatrick_scale:!1,category:"objects"},closed_book:{keywords:["read","library","knowledge","textbook","learn"],"char":"\ud83d\udcd5",fitzpatrick_scale:!1,category:"objects"},green_book:{keywords:["read","library","knowledge","study"],"char":"\ud83d\udcd7",fitzpatrick_scale:!1,category:"objects"},blue_book:{keywords:["read","library","knowledge","learn","study"],"char":"\ud83d\udcd8",fitzpatrick_scale:!1,category:"objects"},orange_book:{keywords:["read","library","knowledge","textbook","study"],"char":"\ud83d\udcd9",fitzpatrick_scale:!1,category:"objects"},notebook_with_decorative_cover:{keywords:["classroom","notes","record","paper","study"],"char":"\ud83d\udcd4",fitzpatrick_scale:!1,category:"objects"},ledger:{keywords:["notes","paper"],"char":"\ud83d\udcd2",fitzpatrick_scale:!1,category:"objects"},books:{keywords:["literature","library","study"],"char":"\ud83d\udcda",fitzpatrick_scale:!1,category:"objects"},open_book:{keywords:["book","read","library","knowledge","literature","learn","study"],"char":"\ud83d\udcd6",fitzpatrick_scale:!1,category:"objects"},link:{keywords:["rings","url"],"char":"\ud83d\udd17",fitzpatrick_scale:!1,category:"objects"},paperclip:{keywords:["documents","stationery"],"char":"\ud83d\udcce",fitzpatrick_scale:!1,category:"objects"},paperclips:{keywords:["documents","stationery"],"char":"\ud83d\udd87",fitzpatrick_scale:!1,category:"objects"},scissors:{keywords:["stationery","cut"],"char":"\u2702\ufe0f",fitzpatrick_scale:!1,category:"objects"},triangular_ruler:{keywords:["stationery","math","architect","sketch"],"char":"\ud83d\udcd0",fitzpatrick_scale:!1,category:"objects"},straight_ruler:{keywords:["stationery","calculate","length","math","school","drawing","architect","sketch"],"char":"\ud83d\udccf",fitzpatrick_scale:!1,category:"objects"},pushpin:{keywords:["stationery","mark","here"],"char":"\ud83d\udccc",fitzpatrick_scale:!1,category:"objects"},round_pushpin:{keywords:["stationery","location","map","here"],"char":"\ud83d\udccd",fitzpatrick_scale:!1,category:"objects"},triangular_flag_on_post:{keywords:["mark","milestone","place"],"char":"\ud83d\udea9",fitzpatrick_scale:!1,category:"objects"},white_flag:{keywords:["losing","loser","lost","surrender","give up","fail"],"char":"\ud83c\udff3",fitzpatrick_scale:!1,category:"objects"},black_flag:{keywords:["pirate"],"char":"\ud83c\udff4",fitzpatrick_scale:!1,category:"objects"},rainbow_flag:{keywords:["flag","rainbow","pride","gay","lgbt","glbt","queer","homosexual","lesbian","bisexual","transgender"],"char":"\ud83c\udff3\ufe0f\u200d\ud83c\udf08",fitzpatrick_scale:!1,category:"objects"},closed_lock_with_key:{keywords:["security","privacy"],"char":"\ud83d\udd10",fitzpatrick_scale:!1,category:"objects"},lock:{keywords:["security","password","padlock"],"char":"\ud83d\udd12",fitzpatrick_scale:!1,category:"objects"},unlock:{keywords:["privacy","security"],"char":"\ud83d\udd13",fitzpatrick_scale:!1,category:"objects"},lock_with_ink_pen:{keywords:["security","secret"],"char":"\ud83d\udd0f",fitzpatrick_scale:!1,category:"objects"},pen:{keywords:["stationery","writing","write"],"char":"\ud83d\udd8a",fitzpatrick_scale:!1,category:"objects"},fountain_pen:{keywords:["stationery","writing","write"],"char":"\ud83d\udd8b",fitzpatrick_scale:!1,category:"objects"},black_nib:{keywords:["pen","stationery","writing","write"],"char":"\u2712\ufe0f",fitzpatrick_scale:!1,category:"objects"},memo:{keywords:["write","documents","stationery","pencil","paper","writing","legal","exam","quiz","test","study","compose"],"char":"\ud83d\udcdd",fitzpatrick_scale:!1,category:"objects"},pencil2:{keywords:["stationery","write","paper","writing","school","study"],"char":"\u270f\ufe0f",fitzpatrick_scale:!1,category:"objects"},crayon:{keywords:["drawing","creativity"],"char":"\ud83d\udd8d",fitzpatrick_scale:!1,category:"objects"},paintbrush:{keywords:["drawing","creativity","art"],"char":"\ud83d\udd8c",fitzpatrick_scale:!1,category:"objects"},mag:{keywords:["search","zoom","find","detective"],"char":"\ud83d\udd0d",fitzpatrick_scale:!1,category:"objects"},mag_right:{keywords:["search","zoom","find","detective"],"char":"\ud83d\udd0e",fitzpatrick_scale:!1,category:"objects"},heart:{keywords:["love","like","valentines"],"char":"\u2764\ufe0f",fitzpatrick_scale:!1,category:"symbols"},orange_heart:{keywords:["love","like","affection","valentines"],"char":"\ud83e\udde1",fitzpatrick_scale:!1,category:"symbols"},yellow_heart:{keywords:["love","like","affection","valentines"],"char":"\ud83d\udc9b",fitzpatrick_scale:!1,category:"symbols"},green_heart:{keywords:["love","like","affection","valentines"],"char":"\ud83d\udc9a",fitzpatrick_scale:!1,category:"symbols"},blue_heart:{keywords:["love","like","affection","valentines"],"char":"\ud83d\udc99",fitzpatrick_scale:!1,category:"symbols"},purple_heart:{keywords:["love","like","affection","valentines"],"char":"\ud83d\udc9c",fitzpatrick_scale:!1,category:"symbols"},black_heart:{keywords:["evil"],"char":"\ud83d\udda4",fitzpatrick_scale:!1,category:"symbols"},broken_heart:{keywords:["sad","sorry","break","heart","heartbreak"],"char":"\ud83d\udc94",fitzpatrick_scale:!1,category:"symbols"},heavy_heart_exclamation:{keywords:["decoration","love"],"char":"\u2763",fitzpatrick_scale:!1,category:"symbols"},two_hearts:{keywords:["love","like","affection","valentines","heart"],"char":"\ud83d\udc95",fitzpatrick_scale:!1,category:"symbols"},revolving_hearts:{keywords:["love","like","affection","valentines"],"char":"\ud83d\udc9e",fitzpatrick_scale:!1,category:"symbols"},heartbeat:{keywords:["love","like","affection","valentines","pink","heart"],"char":"\ud83d\udc93",fitzpatrick_scale:!1,category:"symbols"},heartpulse:{keywords:["like","love","affection","valentines","pink"],"char":"\ud83d\udc97",fitzpatrick_scale:!1,category:"symbols"},sparkling_heart:{keywords:["love","like","affection","valentines"],"char":"\ud83d\udc96",fitzpatrick_scale:!1,category:"symbols"},cupid:{keywords:["love","like","heart","affection","valentines"],"char":"\ud83d\udc98",fitzpatrick_scale:!1,category:"symbols"},gift_heart:{keywords:["love","valentines"],"char":"\ud83d\udc9d",fitzpatrick_scale:!1,category:"symbols"},heart_decoration:{keywords:["purple-square","love","like"],"char":"\ud83d\udc9f",fitzpatrick_scale:!1,category:"symbols"},peace_symbol:{keywords:["hippie"],"char":"\u262e",fitzpatrick_scale:!1,category:"symbols"},latin_cross:{keywords:["christianity"],"char":"\u271d",fitzpatrick_scale:!1,category:"symbols"},star_and_crescent:{keywords:["islam"],"char":"\u262a",fitzpatrick_scale:!1,category:"symbols"},om:{keywords:["hinduism","buddhism","sikhism","jainism"],"char":"\ud83d\udd49",fitzpatrick_scale:!1,category:"symbols"},wheel_of_dharma:{keywords:["hinduism","buddhism","sikhism","jainism"],"char":"\u2638",fitzpatrick_scale:!1,category:"symbols"},star_of_david:{keywords:["judaism"],"char":"\u2721",fitzpatrick_scale:!1,category:"symbols"},six_pointed_star:{keywords:["purple-square","religion","jewish","hexagram"],"char":"\ud83d\udd2f",fitzpatrick_scale:!1,category:"symbols"},menorah:{keywords:["hanukkah","candles","jewish"],"char":"\ud83d\udd4e",fitzpatrick_scale:!1,category:"symbols"},yin_yang:{keywords:["balance"],"char":"\u262f",fitzpatrick_scale:!1,category:"symbols"},orthodox_cross:{keywords:["suppedaneum","religion"],"char":"\u2626",fitzpatrick_scale:!1,category:"symbols"},place_of_worship:{keywords:["religion","church","temple","prayer"],"char":"\ud83d\uded0",fitzpatrick_scale:!1,category:"symbols"},ophiuchus:{keywords:["sign","purple-square","constellation","astrology"],"char":"\u26ce",fitzpatrick_scale:!1,category:"symbols"},aries:{keywords:["sign","purple-square","zodiac","astrology"],"char":"\u2648",fitzpatrick_scale:!1,category:"symbols"},taurus:{keywords:["purple-square","sign","zodiac","astrology"],"char":"\u2649",fitzpatrick_scale:!1,category:"symbols"},gemini:{keywords:["sign","zodiac","purple-square","astrology"],"char":"\u264a",fitzpatrick_scale:!1,category:"symbols"},cancer:{keywords:["sign","zodiac","purple-square","astrology"],"char":"\u264b",fitzpatrick_scale:!1,category:"symbols"},leo:{keywords:["sign","purple-square","zodiac","astrology"],"char":"\u264c",fitzpatrick_scale:!1,category:"symbols"},virgo:{keywords:["sign","zodiac","purple-square","astrology"],"char":"\u264d",fitzpatrick_scale:!1,category:"symbols"},libra:{keywords:["sign","purple-square","zodiac","astrology"],"char":"\u264e",fitzpatrick_scale:!1,category:"symbols"},scorpius:{keywords:["sign","zodiac","purple-square","astrology","scorpio"],"char":"\u264f",fitzpatrick_scale:!1,category:"symbols"},sagittarius:{keywords:["sign","zodiac","purple-square","astrology"],"char":"\u2650",fitzpatrick_scale:!1,category:"symbols"},capricorn:{keywords:["sign","zodiac","purple-square","astrology"],"char":"\u2651",fitzpatrick_scale:!1,category:"symbols"},aquarius:{keywords:["sign","purple-square","zodiac","astrology"],"char":"\u2652",fitzpatrick_scale:!1,category:"symbols"},pisces:{keywords:["purple-square","sign","zodiac","astrology"],"char":"\u2653",fitzpatrick_scale:!1,category:"symbols"},id:{keywords:["purple-square","words"],"char":"\ud83c\udd94",fitzpatrick_scale:!1,category:"symbols"},atom_symbol:{keywords:["science","physics","chemistry"],"char":"\u269b",fitzpatrick_scale:!1,category:"symbols"},u7a7a:{keywords:["kanji","japanese","chinese","empty","sky","blue-square"],"char":"\ud83c\ude33",fitzpatrick_scale:!1,category:"symbols"},u5272:{keywords:["cut","divide","chinese","kanji","pink-square"],"char":"\ud83c\ude39",fitzpatrick_scale:!1,category:"symbols"},radioactive:{keywords:["nuclear","danger"],"char":"\u2622",fitzpatrick_scale:!1,category:"symbols"},biohazard:{keywords:["danger"],"char":"\u2623",fitzpatrick_scale:!1,category:"symbols"},mobile_phone_off:{keywords:["mute","orange-square","silence","quiet"],"char":"\ud83d\udcf4",fitzpatrick_scale:!1,category:"symbols"},vibration_mode:{keywords:["orange-square","phone"],"char":"\ud83d\udcf3",fitzpatrick_scale:!1,category:"symbols"},u6709:{keywords:["orange-square","chinese","have","kanji"],"char":"\ud83c\ude36",fitzpatrick_scale:!1,category:"symbols"},u7121:{keywords:["nothing","chinese","kanji","japanese","orange-square"],"char":"\ud83c\ude1a",fitzpatrick_scale:!1,category:"symbols"},u7533:{keywords:["chinese","japanese","kanji","orange-square"],"char":"\ud83c\ude38",fitzpatrick_scale:!1,category:"symbols"},u55b6:{keywords:["japanese","opening hours","orange-square"],"char":"\ud83c\ude3a",fitzpatrick_scale:!1,category:"symbols"},u6708:{keywords:["chinese","month","moon","japanese","orange-square","kanji"],"char":"\ud83c\ude37\ufe0f",fitzpatrick_scale:!1,category:"symbols"},eight_pointed_black_star:{keywords:["orange-square","shape","polygon"],"char":"\u2734\ufe0f",fitzpatrick_scale:!1,category:"symbols"},vs:{keywords:["words","orange-square"],"char":"\ud83c\udd9a",fitzpatrick_scale:!1,category:"symbols"},accept:{keywords:["ok","good","chinese","kanji","agree","yes","orange-circle"],"char":"\ud83c\ude51",fitzpatrick_scale:!1,category:"symbols"},white_flower:{keywords:["japanese","spring"],"char":"\ud83d\udcae",fitzpatrick_scale:!1,category:"symbols"},ideograph_advantage:{keywords:["chinese","kanji","obtain","get","circle"],"char":"\ud83c\ude50",fitzpatrick_scale:!1,category:"symbols"},secret:{keywords:["privacy","chinese","sshh","kanji","red-circle"],"char":"\u3299\ufe0f",fitzpatrick_scale:!1,category:"symbols"},congratulations:{keywords:["chinese","kanji","japanese","red-circle"],"char":"\u3297\ufe0f",fitzpatrick_scale:!1,category:"symbols"},u5408:{keywords:["japanese","chinese","join","kanji","red-square"],"char":"\ud83c\ude34",fitzpatrick_scale:!1,category:"symbols"},u6e80:{keywords:["full","chinese","japanese","red-square","kanji"],"char":"\ud83c\ude35",fitzpatrick_scale:!1,category:"symbols"},u7981:{keywords:["kanji","japanese","chinese","forbidden","limit","restricted","red-square"],"char":"\ud83c\ude32",fitzpatrick_scale:!1,category:"symbols"},a:{keywords:["red-square","alphabet","letter"],"char":"\ud83c\udd70\ufe0f",fitzpatrick_scale:!1,category:"symbols"},b:{keywords:["red-square","alphabet","letter"],"char":"\ud83c\udd71\ufe0f",fitzpatrick_scale:!1,category:"symbols"},ab:{keywords:["red-square","alphabet"],"char":"\ud83c\udd8e",fitzpatrick_scale:!1,category:"symbols"},cl:{keywords:["alphabet","words","red-square"],"char":"\ud83c\udd91",fitzpatrick_scale:!1,category:"symbols"},o2:{keywords:["alphabet","red-square","letter"],"char":"\ud83c\udd7e\ufe0f",fitzpatrick_scale:!1,category:"symbols"},sos:{keywords:["help","red-square","words","emergency","911"],"char":"\ud83c\udd98",fitzpatrick_scale:!1,category:"symbols"},no_entry:{keywords:["limit","security","privacy","bad","denied","stop","circle"],"char":"\u26d4",fitzpatrick_scale:!1,category:"symbols"},name_badge:{keywords:["fire","forbid"],"char":"\ud83d\udcdb",fitzpatrick_scale:!1,category:"symbols"},no_entry_sign:{keywords:["forbid","stop","limit","denied","disallow","circle"],"char":"\ud83d\udeab",fitzpatrick_scale:!1,category:"symbols"},x:{keywords:["no","delete","remove","cancel"],"char":"\u274c",fitzpatrick_scale:!1,category:"symbols"},o:{keywords:["circle","round"],"char":"\u2b55",fitzpatrick_scale:!1,category:"symbols"},stop_sign:{keywords:["stop"],"char":"\ud83d\uded1",fitzpatrick_scale:!1,category:"symbols"},anger:{keywords:["angry","mad"],"char":"\ud83d\udca2",fitzpatrick_scale:!1,category:"symbols"},hotsprings:{keywords:["bath","warm","relax"],"char":"\u2668\ufe0f",fitzpatrick_scale:!1,category:"symbols"},no_pedestrians:{keywords:["rules","crossing","walking","circle"],"char":"\ud83d\udeb7",fitzpatrick_scale:!1,category:"symbols"},do_not_litter:{keywords:["trash","bin","garbage","circle"],"char":"\ud83d\udeaf",fitzpatrick_scale:!1,category:"symbols"},no_bicycles:{keywords:["cyclist","prohibited","circle"],"char":"\ud83d\udeb3",fitzpatrick_scale:!1,category:"symbols"},"non-potable_water":{keywords:["drink","faucet","tap","circle"],"char":"\ud83d\udeb1",fitzpatrick_scale:!1,category:"symbols"},underage:{keywords:["18","drink","pub","night","minor","circle"],"char":"\ud83d\udd1e",fitzpatrick_scale:!1,category:"symbols"},no_mobile_phones:{keywords:["iphone","mute","circle"],"char":"\ud83d\udcf5",fitzpatrick_scale:!1,category:"symbols"},exclamation:{keywords:["heavy_exclamation_mark","danger","surprise","punctuation","wow","warning"],"char":"\u2757",fitzpatrick_scale:!1,category:"symbols"},grey_exclamation:{keywords:["surprise","punctuation","gray","wow","warning"],"char":"\u2755",fitzpatrick_scale:!1,category:"symbols"},question:{keywords:["doubt","confused"],"char":"\u2753",fitzpatrick_scale:!1,category:"symbols"},grey_question:{keywords:["doubts","gray","huh","confused"],"char":"\u2754",fitzpatrick_scale:!1,category:"symbols"},bangbang:{keywords:["exclamation","surprise"],"char":"\u203c\ufe0f",fitzpatrick_scale:!1,category:"symbols"},interrobang:{keywords:["wat","punctuation","surprise"],"char":"\u2049\ufe0f",fitzpatrick_scale:!1,category:"symbols"},100:{keywords:["score","perfect","numbers","century","exam","quiz","test","pass","hundred"],"char":"\ud83d\udcaf",fitzpatrick_scale:!1,category:"symbols"},low_brightness:{keywords:["sun","afternoon","warm","summer"],"char":"\ud83d\udd05",fitzpatrick_scale:!1,category:"symbols"},high_brightness:{keywords:["sun","light"],"char":"\ud83d\udd06",fitzpatrick_scale:!1,category:"symbols"},trident:{keywords:["weapon","spear"],"char":"\ud83d\udd31",fitzpatrick_scale:!1,category:"symbols"},fleur_de_lis:{keywords:["decorative","scout"],"char":"\u269c",fitzpatrick_scale:!1,category:"symbols"},part_alternation_mark:{keywords:["graph","presentation","stats","business","economics","bad"],"char":"\u303d\ufe0f",fitzpatrick_scale:!1,category:"symbols"},warning:{keywords:["exclamation","wip","alert","error","problem","issue"],"char":"\u26a0\ufe0f",fitzpatrick_scale:!1,category:"symbols"},children_crossing:{keywords:["school","warning","danger","sign","driving","yellow-diamond"],"char":"\ud83d\udeb8",fitzpatrick_scale:!1,category:"symbols"},beginner:{keywords:["badge","shield"],"char":"\ud83d\udd30",fitzpatrick_scale:!1,category:"symbols"},recycle:{keywords:["arrow","environment","garbage","trash"],"char":"\u267b\ufe0f",fitzpatrick_scale:!1,category:"symbols"},u6307:{keywords:["chinese","point","green-square","kanji"],"char":"\ud83c\ude2f",fitzpatrick_scale:!1,category:"symbols"},chart:{keywords:["green-square","graph","presentation","stats"],"char":"\ud83d\udcb9",fitzpatrick_scale:!1,category:"symbols"},sparkle:{keywords:["stars","green-square","awesome","good","fireworks"],"char":"\u2747\ufe0f",fitzpatrick_scale:!1,category:"symbols"},eight_spoked_asterisk:{keywords:["star","sparkle","green-square"],"char":"\u2733\ufe0f",fitzpatrick_scale:!1,category:"symbols"},negative_squared_cross_mark:{keywords:["x","green-square","no","deny"],"char":"\u274e",fitzpatrick_scale:!1,category:"symbols"},white_check_mark:{keywords:["green-square","ok","agree","vote","election","answer","tick"],"char":"\u2705",fitzpatrick_scale:!1,category:"symbols"},diamond_shape_with_a_dot_inside:{keywords:["jewel","blue","gem","crystal","fancy"],"char":"\ud83d\udca0",fitzpatrick_scale:!1,category:"symbols"},cyclone:{keywords:["weather","swirl","blue","cloud","vortex","spiral","whirlpool","spin","tornado","hurricane","typhoon"],"char":"\ud83c\udf00",fitzpatrick_scale:!1,category:"symbols"},loop:{keywords:["tape","cassette"],"char":"\u27bf",fitzpatrick_scale:!1,category:"symbols"},globe_with_meridians:{keywords:["earth","international","world","internet","interweb","i18n"],"char":"\ud83c\udf10",fitzpatrick_scale:!1,category:"symbols"},m:{keywords:["alphabet","blue-circle","letter"],"char":"\u24c2\ufe0f",fitzpatrick_scale:!1,category:"symbols"},atm:{keywords:["money","sales","cash","blue-square","payment","bank"],"char":"\ud83c\udfe7",fitzpatrick_scale:!1,category:"symbols"},sa:{keywords:["japanese","blue-square","katakana"],"char":"\ud83c\ude02\ufe0f",fitzpatrick_scale:!1,category:"symbols"},passport_control:{keywords:["custom","blue-square"],"char":"\ud83d\udec2",fitzpatrick_scale:!1,category:"symbols"},customs:{keywords:["passport","border","blue-square"],"char":"\ud83d\udec3",fitzpatrick_scale:!1,category:"symbols"},baggage_claim:{keywords:["blue-square","airport","transport"],"char":"\ud83d\udec4",fitzpatrick_scale:!1,category:"symbols"},left_luggage:{keywords:["blue-square","travel"],"char":"\ud83d\udec5",fitzpatrick_scale:!1,category:"symbols"},wheelchair:{keywords:["blue-square","disabled","a11y","accessibility"],"char":"\u267f",fitzpatrick_scale:!1,category:"symbols"},no_smoking:{keywords:["cigarette","blue-square","smell","smoke"],"char":"\ud83d\udead",fitzpatrick_scale:!1,category:"symbols"},wc:{keywords:["toilet","restroom","blue-square"],"char":"\ud83d\udebe",fitzpatrick_scale:!1,category:"symbols"},parking:{keywords:["cars","blue-square","alphabet","letter"],"char":"\ud83c\udd7f\ufe0f",fitzpatrick_scale:!1,category:"symbols"},potable_water:{keywords:["blue-square","liquid","restroom","cleaning","faucet"],"char":"\ud83d\udeb0",fitzpatrick_scale:!1,category:"symbols"},mens:{keywords:["toilet","restroom","wc","blue-square","gender","male"],"char":"\ud83d\udeb9",fitzpatrick_scale:!1,category:"symbols"},womens:{keywords:["purple-square","woman","female","toilet","loo","restroom","gender"],"char":"\ud83d\udeba",fitzpatrick_scale:!1,category:"symbols"},baby_symbol:{keywords:["orange-square","child"],"char":"\ud83d\udebc",fitzpatrick_scale:!1,category:"symbols"},restroom:{keywords:["blue-square","toilet","refresh","wc","gender"],"char":"\ud83d\udebb",fitzpatrick_scale:!1,category:"symbols"},put_litter_in_its_place:{keywords:["blue-square","sign","human","info"],"char":"\ud83d\udeae",fitzpatrick_scale:!1,category:"symbols"},cinema:{keywords:["blue-square","record","film","movie","curtain","stage","theater"],"char":"\ud83c\udfa6",fitzpatrick_scale:!1,category:"symbols"},signal_strength:{keywords:["blue-square","reception","phone","internet","connection","wifi","bluetooth","bars"],"char":"\ud83d\udcf6",fitzpatrick_scale:!1,category:"symbols"},koko:{keywords:["blue-square","here","katakana","japanese","destination"],"char":"\ud83c\ude01",fitzpatrick_scale:!1,category:"symbols"},ng:{keywords:["blue-square","words","shape","icon"],"char":"\ud83c\udd96",fitzpatrick_scale:!1,category:"symbols"},ok:{keywords:["good","agree","yes","blue-square"],"char":"\ud83c\udd97",fitzpatrick_scale:!1,category:"symbols"},up:{keywords:["blue-square","above","high"],"char":"\ud83c\udd99",fitzpatrick_scale:!1,category:"symbols"},cool:{keywords:["words","blue-square"],"char":"\ud83c\udd92",fitzpatrick_scale:!1,category:"symbols"},"new":{keywords:["blue-square","words","start"],"char":"\ud83c\udd95",fitzpatrick_scale:!1,category:"symbols"},free:{keywords:["blue-square","words"],"char":"\ud83c\udd93",fitzpatrick_scale:!1,category:"symbols"},zero:{keywords:["0","numbers","blue-square","null"],"char":"0\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},one:{keywords:["blue-square","numbers","1"],"char":"1\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},two:{keywords:["numbers","2","prime","blue-square"],"char":"2\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},three:{keywords:["3","numbers","prime","blue-square"],"char":"3\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},four:{keywords:["4","numbers","blue-square"],"char":"4\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},five:{keywords:["5","numbers","blue-square","prime"],"char":"5\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},six:{keywords:["6","numbers","blue-square"],"char":"6\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},seven:{keywords:["7","numbers","blue-square","prime"],"char":"7\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},eight:{keywords:["8","blue-square","numbers"],"char":"8\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},nine:{keywords:["blue-square","numbers","9"],"char":"9\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},keycap_ten:{keywords:["numbers","10","blue-square"],"char":"\ud83d\udd1f",fitzpatrick_scale:!1,category:"symbols"},asterisk:{keywords:["star","keycap"],"char":"*\u20e3",fitzpatrick_scale:!1,category:"symbols"},1234:{keywords:["numbers","blue-square"],"char":"\ud83d\udd22",fitzpatrick_scale:!1,category:"symbols"},eject_button:{keywords:["blue-square"],"char":"\u23cf\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_forward:{keywords:["blue-square","right","direction","play"],"char":"\u25b6\ufe0f",fitzpatrick_scale:!1,category:"symbols"},pause_button:{keywords:["pause","blue-square"],"char":"\u23f8",fitzpatrick_scale:!1,category:"symbols"},next_track_button:{keywords:["forward","next","blue-square"],"char":"\u23ed",fitzpatrick_scale:!1,category:"symbols"},stop_button:{keywords:["blue-square"],"char":"\u23f9",fitzpatrick_scale:!1,category:"symbols"},record_button:{keywords:["blue-square"],"char":"\u23fa",fitzpatrick_scale:!1,category:"symbols"},play_or_pause_button:{keywords:["blue-square","play","pause"],"char":"\u23ef",fitzpatrick_scale:!1,category:"symbols"},previous_track_button:{keywords:["backward"],"char":"\u23ee",fitzpatrick_scale:!1,category:"symbols"},fast_forward:{keywords:["blue-square","play","speed","continue"],"char":"\u23e9",fitzpatrick_scale:!1,category:"symbols"},rewind:{keywords:["play","blue-square"],"char":"\u23ea",fitzpatrick_scale:!1,category:"symbols"},twisted_rightwards_arrows:{keywords:["blue-square","shuffle","music","random"],"char":"\ud83d\udd00",fitzpatrick_scale:!1,category:"symbols"},repeat:{keywords:["loop","record"],"char":"\ud83d\udd01",fitzpatrick_scale:!1,category:"symbols"},repeat_one:{keywords:["blue-square","loop"],"char":"\ud83d\udd02",fitzpatrick_scale:!1,category:"symbols"},arrow_backward:{keywords:["blue-square","left","direction"],"char":"\u25c0\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_up_small:{keywords:["blue-square","triangle","direction","point","forward","top"],"char":"\ud83d\udd3c",fitzpatrick_scale:!1,category:"symbols"},arrow_down_small:{keywords:["blue-square","direction","bottom"],"char":"\ud83d\udd3d",fitzpatrick_scale:!1,category:"symbols"},arrow_double_up:{keywords:["blue-square","direction","top"],"char":"\u23eb",fitzpatrick_scale:!1,category:"symbols"},arrow_double_down:{keywords:["blue-square","direction","bottom"],"char":"\u23ec",fitzpatrick_scale:!1,category:"symbols"},arrow_right:{keywords:["blue-square","next"],"char":"\u27a1\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_left:{keywords:["blue-square","previous","back"],"char":"\u2b05\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_up:{keywords:["blue-square","continue","top","direction"],"char":"\u2b06\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_down:{keywords:["blue-square","direction","bottom"],"char":"\u2b07\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_upper_right:{keywords:["blue-square","point","direction","diagonal","northeast"],"char":"\u2197\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_lower_right:{keywords:["blue-square","direction","diagonal","southeast"],"char":"\u2198\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_lower_left:{keywords:["blue-square","direction","diagonal","southwest"],"char":"\u2199\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_upper_left:{keywords:["blue-square","point","direction","diagonal","northwest"],"char":"\u2196\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_up_down:{keywords:["blue-square","direction","way","vertical"],"char":"\u2195\ufe0f",fitzpatrick_scale:!1,category:"symbols"},left_right_arrow:{keywords:["shape","direction","horizontal","sideways"],"char":"\u2194\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrows_counterclockwise:{keywords:["blue-square","sync","cycle"],"char":"\ud83d\udd04",fitzpatrick_scale:!1,category:"symbols"},arrow_right_hook:{keywords:["blue-square","return","rotate","direction"],"char":"\u21aa\ufe0f",fitzpatrick_scale:!1,category:"symbols"},leftwards_arrow_with_hook:{keywords:["back","return","blue-square","undo","enter"],"char":"\u21a9\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_heading_up:{keywords:["blue-square","direction","top"],"char":"\u2934\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_heading_down:{keywords:["blue-square","direction","bottom"],"char":"\u2935\ufe0f",fitzpatrick_scale:!1,category:"symbols"},hash:{keywords:["symbol","blue-square","twitter"],"char":"#\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},information_source:{keywords:["blue-square","alphabet","letter"],"char":"\u2139\ufe0f",fitzpatrick_scale:!1,category:"symbols"},abc:{keywords:["blue-square","alphabet"],"char":"\ud83d\udd24",fitzpatrick_scale:!1,category:"symbols"},abcd:{keywords:["blue-square","alphabet"],"char":"\ud83d\udd21",fitzpatrick_scale:!1,category:"symbols"},capital_abcd:{keywords:["alphabet","words","blue-square"],"char":"\ud83d\udd20",fitzpatrick_scale:!1,category:"symbols"},symbols:{keywords:["blue-square","music","note","ampersand","percent","glyphs","characters"],"char":"\ud83d\udd23",fitzpatrick_scale:!1,category:"symbols"},musical_note:{keywords:["score","tone","sound"],"char":"\ud83c\udfb5",fitzpatrick_scale:!1,category:"symbols"},notes:{keywords:["music","score"],"char":"\ud83c\udfb6",fitzpatrick_scale:!1,category:"symbols"},wavy_dash:{keywords:["draw","line","moustache","mustache","squiggle","scribble"],"char":"\u3030\ufe0f",fitzpatrick_scale:!1,category:"symbols"},curly_loop:{keywords:["scribble","draw","shape","squiggle"],"char":"\u27b0",fitzpatrick_scale:!1,category:"symbols"},heavy_check_mark:{keywords:["ok","nike","answer","yes","tick"],"char":"\u2714\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrows_clockwise:{keywords:["sync","cycle","round","repeat"],"char":"\ud83d\udd03",fitzpatrick_scale:!1,category:"symbols"},heavy_plus_sign:{keywords:["math","calculation","addition","more","increase"],"char":"\u2795",fitzpatrick_scale:!1,category:"symbols"},heavy_minus_sign:{keywords:["math","calculation","subtract","less"],"char":"\u2796",fitzpatrick_scale:!1,category:"symbols"},heavy_division_sign:{keywords:["divide","math","calculation"],"char":"\u2797",fitzpatrick_scale:!1,category:"symbols"},heavy_multiplication_x:{keywords:["math","calculation"],"char":"\u2716\ufe0f",fitzpatrick_scale:!1,category:"symbols"},heavy_dollar_sign:{keywords:["money","sales","payment","currency","buck"],"char":"\ud83d\udcb2",fitzpatrick_scale:!1,category:"symbols"},currency_exchange:{keywords:["money","sales","dollar","travel"],"char":"\ud83d\udcb1",fitzpatrick_scale:!1,category:"symbols"},copyright:{keywords:["ip","license","circle","law","legal"],"char":"\xa9\ufe0f",fitzpatrick_scale:!1,category:"symbols"},registered:{keywords:["alphabet","circle"],"char":"\xae\ufe0f",fitzpatrick_scale:!1,category:"symbols"},tm:{keywords:["trademark","brand","law","legal"],"char":"\u2122\ufe0f",fitzpatrick_scale:!1,category:"symbols"},end:{keywords:["words","arrow"],"char":"\ud83d\udd1a",fitzpatrick_scale:!1,category:"symbols"},back:{keywords:["arrow","words","return"],"char":"\ud83d\udd19",fitzpatrick_scale:!1,category:"symbols"},on:{keywords:["arrow","words"],"char":"\ud83d\udd1b",fitzpatrick_scale:!1,category:"symbols"},top:{keywords:["words","blue-square"],"char":"\ud83d\udd1d",fitzpatrick_scale:!1,category:"symbols"},soon:{keywords:["arrow","words"],"char":"\ud83d\udd1c",fitzpatrick_scale:!1,category:"symbols"},ballot_box_with_check:{keywords:["ok","agree","confirm","black-square","vote","election","yes","tick"],"char":"\u2611\ufe0f",fitzpatrick_scale:!1,category:"symbols"},radio_button:{keywords:["input","old","music","circle"],"char":"\ud83d\udd18",fitzpatrick_scale:!1,category:"symbols"},white_circle:{keywords:["shape","round"],"char":"\u26aa",fitzpatrick_scale:!1,category:"symbols"},black_circle:{keywords:["shape","button","round"],"char":"\u26ab",fitzpatrick_scale:!1,category:"symbols"},red_circle:{keywords:["shape","error","danger"],"char":"\ud83d\udd34",fitzpatrick_scale:!1,category:"symbols"},large_blue_circle:{keywords:["shape","icon","button"],"char":"\ud83d\udd35",fitzpatrick_scale:!1,category:"symbols"},small_orange_diamond:{keywords:["shape","jewel","gem"],"char":"\ud83d\udd38",fitzpatrick_scale:!1,category:"symbols"},small_blue_diamond:{keywords:["shape","jewel","gem"],"char":"\ud83d\udd39",fitzpatrick_scale:!1,category:"symbols"},large_orange_diamond:{keywords:["shape","jewel","gem"],"char":"\ud83d\udd36",fitzpatrick_scale:!1,category:"symbols"},large_blue_diamond:{keywords:["shape","jewel","gem"],"char":"\ud83d\udd37",fitzpatrick_scale:!1,category:"symbols"},small_red_triangle:{keywords:["shape","direction","up","top"],"char":"\ud83d\udd3a",fitzpatrick_scale:!1,category:"symbols"},black_small_square:{keywords:["shape","icon"],"char":"\u25aa\ufe0f",fitzpatrick_scale:!1,category:"symbols"},white_small_square:{keywords:["shape","icon"],"char":"\u25ab\ufe0f",fitzpatrick_scale:!1,category:"symbols"},black_large_square:{keywords:["shape","icon","button"],"char":"\u2b1b",fitzpatrick_scale:!1,category:"symbols"},white_large_square:{keywords:["shape","icon","stone","button"],"char":"\u2b1c",fitzpatrick_scale:!1,category:"symbols"},small_red_triangle_down:{keywords:["shape","direction","bottom"],"char":"\ud83d\udd3b",fitzpatrick_scale:!1,category:"symbols"},black_medium_square:{keywords:["shape","button","icon"],"char":"\u25fc\ufe0f",fitzpatrick_scale:!1,category:"symbols"},white_medium_square:{keywords:["shape","stone","icon"],"char":"\u25fb\ufe0f",fitzpatrick_scale:!1,category:"symbols"},black_medium_small_square:{keywords:["icon","shape","button"],"char":"\u25fe",fitzpatrick_scale:!1,category:"symbols"},white_medium_small_square:{keywords:["shape","stone","icon","button"],"char":"\u25fd",fitzpatrick_scale:!1,category:"symbols"},black_square_button:{keywords:["shape","input","frame"],"char":"\ud83d\udd32",fitzpatrick_scale:!1,category:"symbols"},white_square_button:{keywords:["shape","input"],"char":"\ud83d\udd33",fitzpatrick_scale:!1,category:"symbols"},speaker:{keywords:["sound","volume","silence","broadcast"],"char":"\ud83d\udd08",fitzpatrick_scale:!1,category:"symbols"},sound:{keywords:["volume","speaker","broadcast"],"char":"\ud83d\udd09",fitzpatrick_scale:!1,category:"symbols"},loud_sound:{keywords:["volume","noise","noisy","speaker","broadcast"],"char":"\ud83d\udd0a",fitzpatrick_scale:!1,category:"symbols"},mute:{keywords:["sound","volume","silence","quiet"],"char":"\ud83d\udd07",fitzpatrick_scale:!1,category:"symbols"},mega:{keywords:["sound","speaker","volume"],"char":"\ud83d\udce3",fitzpatrick_scale:!1,category:"symbols"},loudspeaker:{keywords:["volume","sound"],"char":"\ud83d\udce2",fitzpatrick_scale:!1,category:"symbols"},bell:{keywords:["sound","notification","christmas","xmas","chime"],"char":"\ud83d\udd14",fitzpatrick_scale:!1,category:"symbols"},no_bell:{keywords:["sound","volume","mute","quiet","silent"],"char":"\ud83d\udd15",fitzpatrick_scale:!1,category:"symbols"},black_joker:{keywords:["poker","cards","game","play","magic"],"char":"\ud83c\udccf",fitzpatrick_scale:!1,category:"symbols"},mahjong:{keywords:["game","play","chinese","kanji"],"char":"\ud83c\udc04",fitzpatrick_scale:!1,category:"symbols"},spades:{keywords:["poker","cards","suits","magic"],"char":"\u2660\ufe0f",fitzpatrick_scale:!1,category:"symbols"},clubs:{keywords:["poker","cards","magic","suits"],"char":"\u2663\ufe0f",fitzpatrick_scale:!1,category:"symbols"},hearts:{keywords:["poker","cards","magic","suits"],"char":"\u2665\ufe0f",fitzpatrick_scale:!1,category:"symbols"},diamonds:{keywords:["poker","cards","magic","suits"],"char":"\u2666\ufe0f",fitzpatrick_scale:!1,category:"symbols"},flower_playing_cards:{keywords:["game","sunset","red"],"char":"\ud83c\udfb4",fitzpatrick_scale:!1,category:"symbols"},thought_balloon:{keywords:["bubble","cloud","speech","thinking","dream"],"char":"\ud83d\udcad",fitzpatrick_scale:!1,category:"symbols"},right_anger_bubble:{keywords:["caption","speech","thinking","mad"],"char":"\ud83d\uddef",fitzpatrick_scale:!1,category:"symbols"},speech_balloon:{keywords:["bubble","words","message","talk","chatting"],"char":"\ud83d\udcac",fitzpatrick_scale:!1,category:"symbols"},left_speech_bubble:{keywords:["words","message","talk","chatting"],"char":"\ud83d\udde8",fitzpatrick_scale:!1,category:"symbols"},clock1:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd50",fitzpatrick_scale:!1,category:"symbols"},clock2:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd51",fitzpatrick_scale:!1,category:"symbols"},clock3:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd52",fitzpatrick_scale:!1,category:"symbols"},clock4:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd53",fitzpatrick_scale:!1,category:"symbols"},clock5:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd54",fitzpatrick_scale:!1,category:"symbols"},clock6:{keywords:["time","late","early","schedule","dawn","dusk"],"char":"\ud83d\udd55",fitzpatrick_scale:!1,category:"symbols"},clock7:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd56",fitzpatrick_scale:!1,category:"symbols"},clock8:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd57",fitzpatrick_scale:!1,category:"symbols"},clock9:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd58",fitzpatrick_scale:!1,category:"symbols"},clock10:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd59",fitzpatrick_scale:!1,category:"symbols"},clock11:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd5a",fitzpatrick_scale:!1,category:"symbols"},clock12:{keywords:["time","noon","midnight","midday","late","early","schedule"],"char":"\ud83d\udd5b",fitzpatrick_scale:!1,category:"symbols"},clock130:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd5c",fitzpatrick_scale:!1,category:"symbols"},clock230:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd5d",fitzpatrick_scale:!1,category:"symbols"},clock330:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd5e",fitzpatrick_scale:!1,category:"symbols"},clock430:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd5f",fitzpatrick_scale:!1,category:"symbols"},clock530:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd60",fitzpatrick_scale:!1,category:"symbols"},clock630:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd61",fitzpatrick_scale:!1,category:"symbols"},clock730:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd62",fitzpatrick_scale:!1,category:"symbols"},clock830:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd63",fitzpatrick_scale:!1,category:"symbols"},clock930:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd64",fitzpatrick_scale:!1,category:"symbols"},clock1030:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd65",fitzpatrick_scale:!1,category:"symbols"},clock1130:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd66",fitzpatrick_scale:!1,category:"symbols"},clock1230:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd67",fitzpatrick_scale:!1,category:"symbols"},afghanistan:{keywords:["af","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},aland_islands:{keywords:["\xc5land","islands","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddfd",fitzpatrick_scale:!1,category:"flags"},albania:{keywords:["al","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},algeria:{keywords:["dz","flag","nation","country","banner"],"char":"\ud83c\udde9\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},american_samoa:{keywords:["american","ws","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},andorra:{keywords:["ad","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},angola:{keywords:["ao","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},anguilla:{keywords:["ai","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},antarctica:{keywords:["aq","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddf6",fitzpatrick_scale:!1,category:"flags"},antigua_barbuda:{keywords:["antigua","barbuda","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},argentina:{keywords:["ar","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},armenia:{keywords:["am","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},aruba:{keywords:["aw","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},australia:{keywords:["au","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},austria:{keywords:["at","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},azerbaijan:{keywords:["az","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},bahamas:{keywords:["bs","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},bahrain:{keywords:["bh","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},bangladesh:{keywords:["bd","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},barbados:{keywords:["bb","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\udde7",fitzpatrick_scale:!1,category:"flags"},belarus:{keywords:["by","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},belgium:{keywords:["be","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},belize:{keywords:["bz","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},benin:{keywords:["bj","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddef",fitzpatrick_scale:!1,category:"flags"},bermuda:{keywords:["bm","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},bhutan:{keywords:["bt","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},bolivia:{keywords:["bo","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},caribbean_netherlands:{keywords:["bonaire","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddf6",fitzpatrick_scale:!1,category:"flags"},bosnia_herzegovina:{keywords:["bosnia","herzegovina","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},botswana:{keywords:["bw","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},brazil:{keywords:["br","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},british_indian_ocean_territory:{keywords:["british","indian","ocean","territory","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},british_virgin_islands:{keywords:["british","virgin","islands","bvi","flag","nation","country","banner"],"char":"\ud83c\uddfb\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},brunei:{keywords:["bn","darussalam","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},bulgaria:{keywords:["bg","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},burkina_faso:{keywords:["burkina","faso","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},burundi:{keywords:["bi","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},cape_verde:{keywords:["cabo","verde","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddfb",fitzpatrick_scale:!1,category:"flags"},cambodia:{keywords:["kh","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},cameroon:{keywords:["cm","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},canada:{keywords:["ca","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},canary_islands:{keywords:["canary","islands","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},cayman_islands:{keywords:["cayman","islands","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},central_african_republic:{keywords:["central","african","republic","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},chad:{keywords:["td","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},chile:{keywords:["flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},cn:{keywords:["china","chinese","prc","flag","country","nation","banner"],"char":"\ud83c\udde8\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},christmas_island:{keywords:["christmas","island","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddfd",fitzpatrick_scale:!1,category:"flags"},cocos_islands:{keywords:["cocos","keeling","islands","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},colombia:{keywords:["co","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},comoros:{keywords:["km","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},congo_brazzaville:{keywords:["congo","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},congo_kinshasa:{keywords:["congo","democratic","republic","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},cook_islands:{keywords:["cook","islands","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},costa_rica:{keywords:["costa","rica","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},croatia:{keywords:["hr","flag","nation","country","banner"],"char":"\ud83c\udded\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},cuba:{keywords:["cu","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},curacao:{keywords:["cura\xe7ao","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},cyprus:{keywords:["cy","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},czech_republic:{keywords:["cz","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},denmark:{keywords:["dk","flag","nation","country","banner"],"char":"\ud83c\udde9\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},djibouti:{keywords:["dj","flag","nation","country","banner"],"char":"\ud83c\udde9\ud83c\uddef",fitzpatrick_scale:!1,category:"flags"},dominica:{keywords:["dm","flag","nation","country","banner"],"char":"\ud83c\udde9\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},dominican_republic:{keywords:["dominican","republic","flag","nation","country","banner"],"char":"\ud83c\udde9\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},ecuador:{keywords:["ec","flag","nation","country","banner"],"char":"\ud83c\uddea\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},egypt:{keywords:["eg","flag","nation","country","banner"],"char":"\ud83c\uddea\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},el_salvador:{keywords:["el","salvador","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddfb",fitzpatrick_scale:!1,category:"flags"},equatorial_guinea:{keywords:["equatorial","gn","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddf6",fitzpatrick_scale:!1,category:"flags"},eritrea:{keywords:["er","flag","nation","country","banner"],"char":"\ud83c\uddea\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},estonia:{keywords:["ee","flag","nation","country","banner"],"char":"\ud83c\uddea\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},ethiopia:{keywords:["et","flag","nation","country","banner"],"char":"\ud83c\uddea\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},eu:{keywords:["european","union","flag","banner"],"char":"\ud83c\uddea\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},falkland_islands:{keywords:["falkland","islands","malvinas","flag","nation","country","banner"],"char":"\ud83c\uddeb\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},faroe_islands:{keywords:["faroe","islands","flag","nation","country","banner"],"char":"\ud83c\uddeb\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},fiji:{keywords:["fj","flag","nation","country","banner"],"char":"\ud83c\uddeb\ud83c\uddef",fitzpatrick_scale:!1,category:"flags"},finland:{keywords:["fi","flag","nation","country","banner"],"char":"\ud83c\uddeb\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},fr:{keywords:["banner","flag","nation","france","french","country"],"char":"\ud83c\uddeb\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},french_guiana:{keywords:["french","guiana","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},french_polynesia:{keywords:["french","polynesia","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},french_southern_territories:{keywords:["french","southern","territories","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},gabon:{keywords:["ga","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},gambia:{keywords:["gm","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},georgia:{keywords:["ge","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},de:{keywords:["german","nation","flag","country","banner"],"char":"\ud83c\udde9\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},ghana:{keywords:["gh","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},gibraltar:{keywords:["gi","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},greece:{keywords:["gr","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},greenland:{keywords:["gl","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},grenada:{keywords:["gd","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},guadeloupe:{keywords:["gp","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddf5",fitzpatrick_scale:!1,category:"flags"},guam:{keywords:["gu","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},guatemala:{keywords:["gt","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},guernsey:{keywords:["gg","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},guinea:{keywords:["gn","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},guinea_bissau:{keywords:["gw","bissau","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},guyana:{keywords:["gy","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},haiti:{keywords:["ht","flag","nation","country","banner"],"char":"\ud83c\udded\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},honduras:{keywords:["hn","flag","nation","country","banner"],"char":"\ud83c\udded\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},hong_kong:{keywords:["hong","kong","flag","nation","country","banner"],"char":"\ud83c\udded\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},hungary:{keywords:["hu","flag","nation","country","banner"],"char":"\ud83c\udded\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},iceland:{keywords:["is","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},india:{keywords:["in","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},indonesia:{keywords:["flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},iran:{keywords:["iran,","islamic","republic","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},iraq:{keywords:["iq","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddf6",fitzpatrick_scale:!1,category:"flags"},ireland:{keywords:["ie","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},isle_of_man:{keywords:["isle","man","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},israel:{keywords:["il","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},it:{keywords:["italy","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},cote_divoire:{keywords:["ivory","coast","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},jamaica:{keywords:["jm","flag","nation","country","banner"],"char":"\ud83c\uddef\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},jp:{keywords:["japanese","nation","flag","country","banner"],"char":"\ud83c\uddef\ud83c\uddf5",fitzpatrick_scale:!1,category:"flags"},jersey:{keywords:["je","flag","nation","country","banner"],"char":"\ud83c\uddef\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},jordan:{keywords:["jo","flag","nation","country","banner"],"char":"\ud83c\uddef\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},kazakhstan:{keywords:["kz","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},kenya:{keywords:["ke","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},kiribati:{keywords:["ki","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},kosovo:{keywords:["xk","flag","nation","country","banner"],"char":"\ud83c\uddfd\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},kuwait:{keywords:["kw","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},kyrgyzstan:{keywords:["kg","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},laos:{keywords:["lao","democratic","republic","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},latvia:{keywords:["lv","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\uddfb",fitzpatrick_scale:!1,category:"flags"},lebanon:{keywords:["lb","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\udde7",fitzpatrick_scale:!1,category:"flags"},lesotho:{keywords:["ls","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},liberia:{keywords:["lr","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},libya:{keywords:["ly","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},liechtenstein:{keywords:["li","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},lithuania:{keywords:["lt","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},luxembourg:{keywords:["lu","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},macau:{keywords:["macao","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},macedonia:{keywords:["macedonia,","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},madagascar:{keywords:["mg","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},malawi:{keywords:["mw","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},malaysia:{keywords:["my","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},maldives:{keywords:["mv","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddfb",fitzpatrick_scale:!1,category:"flags"},mali:{keywords:["ml","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},malta:{keywords:["mt","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},marshall_islands:{keywords:["marshall","islands","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},martinique:{keywords:["mq","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf6",fitzpatrick_scale:!1,category:"flags"},mauritania:{keywords:["mr","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},mauritius:{keywords:["mu","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},mayotte:{keywords:["yt","flag","nation","country","banner"],"char":"\ud83c\uddfe\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},mexico:{keywords:["mx","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddfd",fitzpatrick_scale:!1,category:"flags"},micronesia:{keywords:["micronesia,","federated","states","flag","nation","country","banner"],"char":"\ud83c\uddeb\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},moldova:{keywords:["moldova,","republic","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},monaco:{keywords:["mc","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},mongolia:{keywords:["mn","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},montenegro:{keywords:["me","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},montserrat:{keywords:["ms","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},morocco:{keywords:["ma","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},mozambique:{keywords:["mz","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},myanmar:{keywords:["mm","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},namibia:{keywords:["na","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},nauru:{keywords:["nr","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},nepal:{keywords:["np","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddf5",fitzpatrick_scale:!1,category:"flags"},netherlands:{keywords:["nl","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},new_caledonia:{keywords:["new","caledonia","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},new_zealand:{keywords:["new","zealand","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},nicaragua:{keywords:["ni","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},niger:{keywords:["ne","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},nigeria:{keywords:["flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},niue:{keywords:["nu","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},norfolk_island:{keywords:["norfolk","island","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},northern_mariana_islands:{keywords:["northern","mariana","islands","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf5",fitzpatrick_scale:!1,category:"flags"},north_korea:{keywords:["north","korea","nation","flag","country","banner"],"char":"\ud83c\uddf0\ud83c\uddf5",fitzpatrick_scale:!1,category:"flags"},norway:{keywords:["no","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},oman:{keywords:["om_symbol","flag","nation","country","banner"],"char":"\ud83c\uddf4\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},pakistan:{keywords:["pk","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},palau:{keywords:["pw","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},palestinian_territories:{keywords:["palestine","palestinian","territories","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},panama:{keywords:["pa","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},papua_new_guinea:{keywords:["papua","new","guinea","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},paraguay:{keywords:["py","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},peru:{keywords:["pe","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},philippines:{keywords:["ph","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},pitcairn_islands:{keywords:["pitcairn","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},poland:{keywords:["pl","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},portugal:{keywords:["pt","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},puerto_rico:{keywords:["puerto","rico","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},qatar:{keywords:["qa","flag","nation","country","banner"],"char":"\ud83c\uddf6\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},reunion:{keywords:["r\xe9union","flag","nation","country","banner"],"char":"\ud83c\uddf7\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},romania:{keywords:["ro","flag","nation","country","banner"],"char":"\ud83c\uddf7\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},ru:{keywords:["russian","federation","flag","nation","country","banner"],"char":"\ud83c\uddf7\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},rwanda:{keywords:["rw","flag","nation","country","banner"],"char":"\ud83c\uddf7\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},st_barthelemy:{keywords:["saint","barth\xe9lemy","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},st_helena:{keywords:["saint","helena","ascension","tristan","cunha","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},st_kitts_nevis:{keywords:["saint","kitts","nevis","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},st_lucia:{keywords:["saint","lucia","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},st_pierre_miquelon:{keywords:["saint","pierre","miquelon","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},st_vincent_grenadines:{keywords:["saint","vincent","grenadines","flag","nation","country","banner"],"char":"\ud83c\uddfb\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},samoa:{keywords:["ws","flag","nation","country","banner"],"char":"\ud83c\uddfc\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},san_marino:{keywords:["san","marino","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},sao_tome_principe:{keywords:["sao","tome","principe","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},saudi_arabia:{keywords:["flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},senegal:{keywords:["sn","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},serbia:{keywords:["rs","flag","nation","country","banner"],"char":"\ud83c\uddf7\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},seychelles:{keywords:["sc","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},sierra_leone:{keywords:["sierra","leone","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},singapore:{keywords:["sg","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},sint_maarten:{keywords:["sint","maarten","dutch","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddfd",fitzpatrick_scale:!1,category:"flags"},slovakia:{keywords:["sk","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},slovenia:{keywords:["si","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},solomon_islands:{keywords:["solomon","islands","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\udde7",fitzpatrick_scale:!1,category:"flags"},somalia:{keywords:["so","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},south_africa:{keywords:["south","africa","flag","nation","country","banner"],"char":"\ud83c\uddff\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},south_georgia_south_sandwich_islands:{keywords:["south","georgia","sandwich","islands","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},kr:{keywords:["south","korea","nation","flag","country","banner"],"char":"\ud83c\uddf0\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},south_sudan:{keywords:["south","sd","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},es:{keywords:["spain","flag","nation","country","banner"],"char":"\ud83c\uddea\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},sri_lanka:{keywords:["sri","lanka","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},sudan:{keywords:["sd","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},suriname:{keywords:["sr","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},swaziland:{keywords:["sz","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},sweden:{keywords:["se","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},switzerland:{keywords:["ch","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},syria:{keywords:["syrian","arab","republic","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},taiwan:{keywords:["tw","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},tajikistan:{keywords:["tj","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddef",fitzpatrick_scale:!1,category:"flags"},tanzania:{keywords:["tanzania,","united","republic","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},thailand:{keywords:["th","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},timor_leste:{keywords:["timor","leste","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},togo:{keywords:["tg","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},tokelau:{keywords:["tk","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},tonga:{keywords:["to","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},trinidad_tobago:{keywords:["trinidad","tobago","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},tunisia:{keywords:["tn","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},tr:{keywords:["turkey","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},turkmenistan:{keywords:["flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},turks_caicos_islands:{keywords:["turks","caicos","islands","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},tuvalu:{keywords:["flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddfb",fitzpatrick_scale:!1,category:"flags"},uganda:{keywords:["ug","flag","nation","country","banner"],"char":"\ud83c\uddfa\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},ukraine:{keywords:["ua","flag","nation","country","banner"],"char":"\ud83c\uddfa\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},united_arab_emirates:{keywords:["united","arab","emirates","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},uk:{keywords:["united","kingdom","great","britain","northern","ireland","flag","nation","country","banner","british","UK","english","england","union jack"],"char":"\ud83c\uddec\ud83c\udde7",fitzpatrick_scale:!1,category:"flags"},england:{keywords:["flag","english"],"char":"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f",fitzpatrick_scale:!1,category:"flags"},scotland:{keywords:["flag","scottish"],"char":"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f",fitzpatrick_scale:!1,category:"flags"},wales:{keywords:["flag","welsh"],"char":"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f",fitzpatrick_scale:!1,category:"flags"},us:{keywords:["united","states","america","flag","nation","country","banner"],"char":"\ud83c\uddfa\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},us_virgin_islands:{keywords:["virgin","islands","us","flag","nation","country","banner"],"char":"\ud83c\uddfb\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},uruguay:{keywords:["uy","flag","nation","country","banner"],"char":"\ud83c\uddfa\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},uzbekistan:{keywords:["uz","flag","nation","country","banner"],"char":"\ud83c\uddfa\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},vanuatu:{keywords:["vu","flag","nation","country","banner"],"char":"\ud83c\uddfb\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},vatican_city:{keywords:["vatican","city","flag","nation","country","banner"],"char":"\ud83c\uddfb\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},venezuela:{keywords:["ve","bolivarian","republic","flag","nation","country","banner"],"char":"\ud83c\uddfb\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},vietnam:{keywords:["viet","nam","flag","nation","country","banner"],"char":"\ud83c\uddfb\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},wallis_futuna:{keywords:["wallis","futuna","flag","nation","country","banner"],"char":"\ud83c\uddfc\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},western_sahara:{keywords:["western","sahara","flag","nation","country","banner"],"char":"\ud83c\uddea\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},yemen:{keywords:["ye","flag","nation","country","banner"],"char":"\ud83c\uddfe\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},zambia:{keywords:["zm","flag","nation","country","banner"],"char":"\ud83c\uddff\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},zimbabwe:{keywords:["zw","flag","nation","country","banner"],"char":"\ud83c\uddff\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"}});
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/plugins/emoticons/plugin.min.js b/app/static/vendors/tinymce/js/tinymce/plugins/emoticons/plugin.min.js
deleted file mode 100644 (file)
index 016a50a..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.3 (2019-12-04)
- */
-!function(l){"use strict";function n(){}function i(n){return function(){return n}}function t(){return a}var e,r=tinymce.util.Tools.resolve("tinymce.PluginManager"),c=i(!1),u=i(!0),a=(e={fold:function(n,t){return n()},is:c,isSome:c,isNone:u,getOr:f,getOrThunk:s,getOrDie:function(n){throw new Error(n||"error: getOrDie called on none.")},getOrNull:i(null),getOrUndefined:i(undefined),or:f,orThunk:s,map:t,each:n,bind:t,exists:c,forall:u,filter:t,equals:o,equals_:o,toArray:function(){return[]},toString:i("none()")},Object.freeze&&Object.freeze(e),e);function o(n){return n.isNone()}function s(n){return n()}function f(n){return n}function m(n,t){return-1!==n.indexOf(t)}function g(n,t){return m(n.title.toLowerCase(),t)||function(n,t){for(var e=0,r=n.length;e<r;e++){if(t(n[e],e))return!0}return!1}(n.keywords,function(n){return m(n.toLowerCase(),t)})}function d(n,t,e){for(var r=[],o=t.toLowerCase(),i=e.fold(function(){return c},function(t){return function(n){return t<=n}}),u=0;u<n.length&&(0!==t.length&&!g(n[u],o)||(r.push({value:n[u]["char"],text:n[u].title,icon:n[u]["char"]}),!i(r.length)));u++);return r}function y(n,t){for(var e=P(n),r=0,o=e.length;r<o;r++){var i=e[r];t(n[i],i)}}function p(n,t){return function(n,t){return D.call(n,t)}(n,t)?n[t]:t}function v(n){return function(n,e){return S(n,function(n,t){return{k:t,v:e(n,t)}})}(q(n),function(n){return _({keywords:[],category:"user"},n)})}function h(e,o,n){var r=k(A.none()),u=k(A.none());e.on("init",function(){x.load(n,o).then(function(n){var t=v(e);!function(n){var o={},i=[];y(n,function(n,t){var e={title:t,keywords:n.keywords,"char":n["char"],category:p(I,n.category)},r=o[e.category]!==undefined?o[e.category]:[];o[e.category]=r.concat([e]),i.push(e)}),r.set(A.some(o)),u.set(A.some(i))}(_(n,t))},function(n){l.console.log("Failed to load emoticons: "+n),r.set(A.some({})),u.set(A.some([]))})});var i=function(){return u.get().getOr([])},c=function(){return r.get().isSome()&&u.get().isSome()};return{listCategories:function(){return[z].concat(P(r.get().getOr({})))},hasLoaded:c,waitForLoad:function(){return c()?N.resolve(!0):new N(function(n,t){var e=15,r=L.setInterval(function(){c()?(L.clearInterval(r),n(!0)):--e<0&&(l.console.log("Could not load emojis from url: "+o),L.clearInterval(r),t(!1))},100)})},listAll:i,listCategory:function(t){return t===z?i():r.get().bind(function(n){return A.from(n[t])}).getOr([])}}}var b,w,O=function(e){function n(){return o}function t(n){return n(e)}var r=i(e),o={fold:function(n,t){return t(e)},is:function(n){return e===n},isSome:u,isNone:c,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:n,orThunk:n,map:function(n){return O(n(e))},each:function(n){n(e)},bind:t,exists:t,forall:t,filter:function(n){return n(e)?o:a},toArray:function(){return[e]},toString:function(){return"some("+e+")"},equals:function(n){return n.is(e)},equals_:function(n,t){return n.fold(c,function(n){return t(e,n)})}};return o},A={some:O,none:t,from:function(n){return null===n||n===undefined?a:O(n)}},j=(b="function",function(n){return function(n){if(null===n)return"null";var t=typeof n;return"object"==t&&(Array.prototype.isPrototypeOf(n)||n.constructor&&"Array"===n.constructor.name)?"array":"object"==t&&(String.prototype.isPrototypeOf(n)||n.constructor&&"String"===n.constructor.name)?"string":t}(n)===b}),C=Array.prototype.slice,k=(j(Array.from)&&Array.from,function(n){function t(){return e}var e=n;return{get:t,set:function(n){e=n},clone:function(){return k(t())}}}),T=Object.prototype.hasOwnProperty,_=(w=function(n,t){return t},function(){for(var n=new Array(arguments.length),t=0;t<n.length;t++)n[t]=arguments[t];if(0===n.length)throw new Error("Can't merge zero objects");for(var e={},r=0;r<n.length;r++){var o=n[r];for(var i in o)T.call(o,i)&&(e[i]=w(e[i],o[i]))}return e}),P=Object.keys,D=Object.hasOwnProperty,S=function(n,r){var o={};return y(n,function(n,t){var e=r(n,t);o[e.k]=e.v}),o},x=tinymce.util.Tools.resolve("tinymce.Resource"),L=tinymce.util.Tools.resolve("tinymce.util.Delay"),N=tinymce.util.Tools.resolve("tinymce.util.Promise"),E=function(n,t){return n.getParam("emoticons_database_url",t+"/js/emojis"+n.suffix+".js")},F=function(n){return n.getParam("emoticons_database_id","tinymce.plugins.emoticons","string")},q=function(n){return n.getParam("emoticons_append",{},"object")},z="All",I={symbols:"Symbols",people:"People",animals_and_nature:"Animals and Nature",food_and_drink:"Food and Drink",activity:"Activity",travel_and_places:"Travel and Places",objects:"Objects",flags:"Flags",user:"User Defined"},M="pattern",U=function(e,i){function n(){return{title:"Emoticons",size:"normal",body:{type:"tabpanel",tabs:function(n,t){for(var e=n.length,r=new Array(e),o=0;o<e;o++){var i=n[o];r[o]=t(i,o)}return r}(i.listCategories(),function(n){return{title:n,name:n,items:[o,c]}})},initialData:t,onTabChange:function(n,t){u.set(t.newTabName),r.throttle(n)},onChange:r.throttle,onAction:function(n,t){"results"===t.name&&(function(n,t){n.insertContent(t)}(e,t.value),n.close())},buttons:[{type:"cancel",text:"Close",primary:!0}]}}var t={pattern:"",results:d(i.listAll(),"",A.some(300))},u=k(z),r=function(e,r){var o=null;return{cancel:function(){null!==o&&(l.clearTimeout(o),o=null)},throttle:function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];null!==o&&l.clearTimeout(o),o=l.setTimeout(function(){e.apply(null,n),o=null},r)}}}(function(n){!function(n){var t=n.getData(),e=u.get(),r=i.listCategory(e),o=d(r,t[M],e===z?A.some(300):A.none());n.setData({results:o})}(n)},200),o={label:"Search",type:"input",name:M},c={type:"collection",name:"results"},a=e.windowManager.open(n());a.focus(M),i.hasLoaded()||(a.block("Loading emoticons..."),i.waitForLoad().then(function(){a.redial(n()),r.throttle(a),a.focus(M),a.unblock()})["catch"](function(n){a.redial({title:"Emoticons",body:{type:"panel",items:[{type:"alertbanner",level:"error",icon:"warning",text:"<p>Could not load emoticons</p>"}]},buttons:[{type:"cancel",text:"Close",primary:!0}],initialData:{pattern:"",results:[]}}),a.focus(M),a.unblock()}))},R=function(n,t){function e(){return U(n,t)}n.ui.registry.addButton("emoticons",{tooltip:"Emoticons",icon:"emoji",onAction:e}),n.ui.registry.addMenuItem("emoticons",{text:"Emoticons...",icon:"emoji",onAction:e})};!function B(){r.add("emoticons",function(n,t){var e=E(n,t),r=F(n),o=h(n,e,r);R(n,o),function(r,o){r.ui.registry.addAutocompleter("emoticons",{ch:":",columns:"auto",minChars:2,fetch:function(t,e){return o.waitForLoad().then(function(){var n=o.listAll();return d(n,t,A.some(e))})},onAction:function(n,t,e){r.selection.setRng(t),r.insertContent(e),n.hide()}})}(n,o)})}()}(window);
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/plugins/fullpage/plugin.min.js b/app/static/vendors/tinymce/js/tinymce/plugins/fullpage/plugin.min.js
deleted file mode 100644 (file)
index 8e1f79f..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.3 (2019-12-04)
- */
-!function(m){"use strict";function f(t){return e({validate:!1,root_name:"#document"}).parse(t)}function g(t){return t.replace(/<\/?[A-Z]+/g,function(t){return t.toLowerCase()})}var o,i=function(t){function e(){return n}var n=t;return{get:e,set:function(t){n=t},clone:function(){return i(e())}}},t=tinymce.util.Tools.resolve("tinymce.PluginManager"),p=tinymce.util.Tools.resolve("tinymce.util.Tools"),e=tinymce.util.Tools.resolve("tinymce.html.DomParser"),h=tinymce.util.Tools.resolve("tinymce.html.Node"),y=tinymce.util.Tools.resolve("tinymce.html.Serializer"),v=function(t){return t.getParam("fullpage_hide_in_source_view")},r=function(t){return t.getParam("fullpage_default_xml_pi")},a=function(t){return t.getParam("fullpage_default_encoding")},c=function(t){return t.getParam("fullpage_default_font_family")},u=function(t){return t.getParam("fullpage_default_font_size")},s=function(t){return t.getParam("fullpage_default_text_color")},d=function(t){return t.getParam("fullpage_default_title")},_=function(t){return t.getParam("fullpage_default_doctype","<!DOCTYPE html>")},b=f,n=function(t,e){var n,i,l=f(e),r={};function o(t,e){return t.attr(e)||""}return r.fontface=c(t),r.fontsize=u(t),7===(n=l.firstChild).type&&(r.xml_pi=!0,(i=/encoding="([^"]+)"/.exec(n.value))&&(r.docencoding=i[1])),(n=l.getAll("#doctype")[0])&&(r.doctype="<!DOCTYPE"+n.value+">"),(n=l.getAll("title")[0])&&n.firstChild&&(r.title=n.firstChild.value),p.each(l.getAll("meta"),function(t){var e,n=t.attr("name"),i=t.attr("http-equiv");n?r[n.toLowerCase()]=t.attr("content"):"Content-Type"===i&&(e=/charset\s*=\s*(.*)\s*/gi.exec(t.attr("content")))&&(r.docencoding=e[1])}),(n=l.getAll("html")[0])&&(r.langcode=o(n,"lang")||o(n,"xml:lang")),r.stylesheets=[],p.each(l.getAll("link"),function(t){"stylesheet"===t.attr("rel")&&r.stylesheets.push(t.attr("href"))}),(n=l.getAll("body")[0])&&(r.langdir=o(n,"dir"),r.style=o(n,"style"),r.visited_color=o(n,"vlink"),r.link_color=o(n,"link"),r.active_color=o(n,"alink")),r},x=function(t,r,e){var o,n,i,a,l,c=t.dom;function u(t,e,n){t.attr(e,n||undefined)}function s(t){n.firstChild?n.insert(t,n.firstChild):n.append(t)}o=f(e),(n=o.getAll("head")[0])||(a=o.getAll("html")[0],n=new h("head",1),a.firstChild?a.insert(n,a.firstChild,!0):a.append(n)),a=o.firstChild,r.xml_pi?(l='version="1.0"',r.docencoding&&(l+=' encoding="'+r.docencoding+'"'),7!==a.type&&(a=new h("xml",7),o.insert(a,o.firstChild,!0)),a.value=l):a&&7===a.type&&a.remove(),a=o.getAll("#doctype")[0],r.doctype?(a||(a=new h("#doctype",10),r.xml_pi?o.insert(a,o.firstChild):s(a)),a.value=r.doctype.substring(9,r.doctype.length-1)):a&&a.remove(),a=null,p.each(o.getAll("meta"),function(t){"Content-Type"===t.attr("http-equiv")&&(a=t)}),r.docencoding?(a||((a=new h("meta",1)).attr("http-equiv","Content-Type"),a.shortEnded=!0,s(a)),a.attr("content","text/html; charset="+r.docencoding)):a&&a.remove(),a=o.getAll("title")[0],r.title?(a?a.empty():s(a=new h("title",1)),a.append(new h("#text",3)).value=r.title):a&&a.remove(),p.each("keywords,description,author,copyright,robots".split(","),function(t){var e,n,i=o.getAll("meta"),l=r[t];for(e=0;e<i.length;e++)if((n=i[e]).attr("name")===t)return void(l?n.attr("content",l):n.remove());l&&((a=new h("meta",1)).attr("name",t),a.attr("content",l),a.shortEnded=!0,s(a))});var d={};return p.each(o.getAll("link"),function(t){"stylesheet"===t.attr("rel")&&(d[t.attr("href")]=t)}),p.each(r.stylesheets,function(t){d[t]||((a=new h("link",1)).attr({rel:"stylesheet",text:"text/css",href:t}),a.shortEnded=!0,s(a)),delete d[t]}),p.each(d,function(t){t.remove()}),(a=o.getAll("body")[0])&&(u(a,"dir",r.langdir),u(a,"style",r.style),u(a,"vlink",r.visited_color),u(a,"link",r.link_color),u(a,"alink",r.active_color),c.setAttribs(t.getBody(),{style:r.style,dir:r.dir,vLink:r.visited_color,link:r.link_color,aLink:r.active_color})),(a=o.getAll("html")[0])&&(u(a,"lang",r.langcode),u(a,"xml:lang",r.langcode)),n.firstChild||n.remove(),(i=y({validate:!1,indent:!0,indent_before:"head,html,body,meta,title,script,link,style",indent_after:"head,html,body,meta,title,script,link,style"}).serialize(o)).substring(0,i.indexOf("</body>"))},C=Object.prototype.hasOwnProperty,k=(o=function(t,e){return e},function(){for(var t=new Array(arguments.length),e=0;e<t.length;e++)t[e]=arguments[e];if(0===t.length)throw new Error("Can't merge zero objects");for(var n={},i=0;i<t.length;i++){var l=t[i];for(var r in l)C.call(l,r)&&(n[r]=o(n[r],l[r]))}return n}),l=function(i,l){var r=n(i,l.get()),t=k({title:"",keywords:"",description:"",robots:"",author:"",docencoding:""},r);i.windowManager.open({title:"Metadata and Document Properties",size:"normal",body:{type:"panel",items:[{name:"title",type:"input",label:"Title"},{name:"keywords",type:"input",label:"Keywords"},{name:"description",type:"input",label:"Description"},{name:"robots",type:"input",label:"Robots"},{name:"author",type:"input",label:"Author"},{name:"docencoding",type:"input",label:"Encoding"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:t,onSubmit:function(t){var e=t.getData(),n=x(i,p.extend(r,e),l.get());l.set(n),t.close()}})},w=function(t,e){t.addCommand("mceFullPageProperties",function(){l(t,e)})},A=function(t,e){return p.each(t,function(t){e=e.replace(t,function(t){return"\x3c!--mce:protected "+escape(t)+"--\x3e"})}),e},P=function(t){return t.replace(/<!--mce:protected ([\s\S]*?)-->/g,function(t,e){return unescape(e)})},T=p.each,O=function(t){var e,n="",i="";if(r(t)){var l=a(t);n+='<?xml version="1.0" encoding="'+(l||"ISO-8859-1")+'" ?>\n'}return n+=_(t),n+="\n<html>\n<head>\n",(e=d(t))&&(n+="<title>"+e+"</title>\n"),(e=a(t))&&(n+='<meta http-equiv="Content-Type" content="text/html; charset='+e+'" />\n'),(e=c(t))&&(i+="font-family: "+e+";"),(e=u(t))&&(i+="font-size: "+e+";"),(e=s(t))&&(i+="color: "+e+";"),n+="</head>\n<body"+(i?' style="'+i+'"':"")+">\n"},D=function(e,n,i){e.on("BeforeSetContent",function(t){!function(t,e,n,i){var l,r,o,a,c="",u=t.dom;if(!(i.selection||(o=A(t.settings.protect,i.content),"raw"===i.format&&e.get()||i.source_view&&v(t)))){0!==o.length||i.source_view||(o=p.trim(e.get())+"\n"+p.trim(o)+"\n"+p.trim(n.get())),-1!==(l=(o=o.replace(/<(\/?)BODY/gi,"<$1body")).indexOf("<body"))?(l=o.indexOf(">",l),e.set(g(o.substring(0,l+1))),-1===(r=o.indexOf("</body",l))&&(r=o.length),i.content=p.trim(o.substring(l+1,r)),n.set(g(o.substring(r)))):(e.set(O(t)),n.set("\n</body>\n</html>")),a=b(e.get()),T(a.getAll("style"),function(t){t.firstChild&&(c+=t.firstChild.value)});var s=a.getAll("body")[0];s&&u.setAttribs(t.getBody(),{style:s.attr("style")||"",dir:s.attr("dir")||"",vLink:s.attr("vlink")||"",link:s.attr("link")||"",aLink:s.attr("alink")||""}),u.remove("fullpage_styles");var d=t.getDoc().getElementsByTagName("head")[0];if(c)u.add(d,"style",{id:"fullpage_styles"}).appendChild(m.document.createTextNode(c));var f={};p.each(d.getElementsByTagName("link"),function(t){"stylesheet"===t.rel&&t.getAttribute("data-mce-fullpage")&&(f[t.href]=t)}),p.each(a.getAll("link"),function(t){var e=t.attr("href");if(!e)return!0;f[e]||"stylesheet"!==t.attr("rel")||u.add(d,"link",{rel:"stylesheet",text:"text/css",href:e,"data-mce-fullpage":"1"}),delete f[e]}),p.each(f,function(t){t.parentNode.removeChild(t)})}}(e,n,i,t)}),e.on("GetContent",function(t){!function(t,e,n,i){i.selection||i.source_view&&v(t)||(i.content=P(p.trim(e)+"\n"+p.trim(i.content)+"\n"+p.trim(n)))}(e,n.get(),i.get(),t)})},E=function(t){t.ui.registry.addButton("fullpage",{tooltip:"Metadata and document properties",icon:"document-properties",onAction:function(){t.execCommand("mceFullPageProperties")}}),t.ui.registry.addMenuItem("fullpage",{text:"Metadata and document properties",icon:"document-properties",onAction:function(){t.execCommand("mceFullPageProperties")}})};!function z(){t.add("fullpage",function(t){var e=i(""),n=i("");w(t,e),E(t),D(t,e,n)})}()}(window);
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/plugins/fullscreen/plugin.min.js b/app/static/vendors/tinymce/js/tinymce/plugins/fullscreen/plugin.min.js
deleted file mode 100644 (file)
index 5189d40..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.3 (2019-12-04)
- */
-!function(l){"use strict";function e(){}function m(e){return function(){return e}}function n(){return s}var r,t=function(e){function n(){return r}var r=e;return{get:n,set:function(e){r=e},clone:function(){return t(n())}}},o=tinymce.util.Tools.resolve("tinymce.PluginManager"),i=function(e){return{isFullscreen:function(){return null!==e.get()}}},c=m(!1),u=m(!0),s=(r={fold:function(e,n){return e()},is:c,isSome:c,isNone:u,getOr:d,getOrThunk:a,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:m(null),getOrUndefined:m(undefined),or:d,orThunk:a,map:n,each:e,bind:n,exists:c,forall:u,filter:n,equals:f,equals_:f,toArray:function(){return[]},toString:m("none()")},Object.freeze&&Object.freeze(r),r);function f(e){return e.isNone()}function a(e){return e()}function d(e){return e}function h(n){return function(e){return function(e){if(null===e)return"null";var n=typeof e;return"object"==n&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"==n&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":n}(e)===n}}function v(e,n){for(var r=e.length,t=new Array(r),o=0;o<r;o++){var i=e[o];t[o]=n(i,o)}return t}function g(e,n){for(var r=0,t=e.length;r<t;r++){n(e[r],r)}}function p(e,n){for(var r=[],t=0,o=e.length;t<o;t++){var i=e[t];n(i,t)&&r.push(i)}return r}function w(e,n){return function(e){for(var n=[],r=0,t=e.length;r<t;++r){if(!Y(e[r]))throw new Error("Arr.flatten item "+r+" was not an array, input: "+e);Q.apply(n,e[r])}return n}(v(e,n))}function y(e,n){return-1!==e.indexOf(n)}function S(e){return e.style!==undefined&&$(e.style.getPropertyValue)}function E(e,n,r){!function(e,n,r){if(!(X(r)||G(r)||K(r)))throw l.console.error("Invalid call to Attr.set. Key ",n,":: Value ",r,":: Element ",e),new Error("Attribute value was not simple");e.setAttribute(n,r+"")}(e.dom(),n,r)}function O(e,n){var r=e.dom().getAttribute(n);return null===r?undefined:r}function N(e,n){e.dom().removeAttribute(n)}function T(e,n){var r=e.dom();!function(e,n){for(var r=Z(e),t=0,o=r.length;t<o;t++){var i=r[t];n(e[i],i)}}(n,function(e,n){!function(e,n,r){if(!X(r))throw l.console.error("Invalid call to CSS.set. Property ",n,":: Value ",r,":: Element ",e),new Error("CSS value must be a string: "+r);S(e)&&e.style.setProperty(n,r)}(r,n,e)})}function x(e,n){var r=e.dom(),t=l.window.getComputedStyle(r).getPropertyValue(n),o=""!==t||function(e){var n=ie(e)?e.dom().parentNode:e.dom();return n!==undefined&&null!==n&&n.ownerDocument.body.contains(n)}(e)?t:ue(r,n);return null===o?undefined:o}function b(e,n){var r=function(e,n){for(var r=0;r<e.length;r++){var t=e[r];if(t.test(n))return t}return undefined}(e,n);if(!r)return{major:0,minor:0};function t(e){return Number(n.replace(r,"$"+e))}return se(t(1),t(2))}function C(e,n){return function(){return n===e}}function D(e,n){return function(){return n===e}}function A(e,n){var r=String(n).toLowerCase();return function(e,n){for(var r=0,t=e.length;r<t;r++){var o=e[r];if(n(o,r))return z.some(o)}return z.none()}(e,function(e){return e.search(r)})}function M(n){return function(e){return y(e,n)}}function _(){return xe.get()}function k(e,n,r){return 0!=(e.compareDocumentPosition(n)&r)}function F(e,n){var r=e.dom();if(r.nodeType!==Ce)return!1;var t=r;if(t.matches!==undefined)return t.matches(n);if(t.msMatchesSelector!==undefined)return t.msMatchesSelector(n);if(t.webkitMatchesSelector!==undefined)return t.webkitMatchesSelector(n);if(t.mozMatchesSelector!==undefined)return t.mozMatchesSelector(n);throw new Error("Browser lacks native selectors")}function R(e,n){var r=n===undefined?l.document:n.dom();return function(e){return e.nodeType!==Ce&&e.nodeType!==De||0===e.childElementCount}(r)?[]:v(r.querySelectorAll(e),ne.fromDom)}function L(n){return function(e){return z.from(e.dom().parentNode).map(ne.fromDom)}(n).map(Ae).map(function(e){return p(e,function(e){return!function(e,n){return e.dom()===n.dom()}(n,e)})}).getOr([])}function I(e,n,r,t){return{x:m(e),y:m(n),width:m(r),height:m(t),right:m(e+r),bottom:m(n+t)}}function P(e){var n=e===undefined?l.window:e,r=n.document,t=function(e){var n=e!==undefined?e.dom():l.document,r=n.body.scrollLeft||n.documentElement.scrollLeft,t=n.body.scrollTop||n.documentElement.scrollTop;return _e(r,t)}(ne.fromDom(r)),o=n.visualViewport;if(o!==undefined)return I(Math.max(o.pageLeft,t.left()),Math.max(o.pageTop,t.top()),o.width,o.height);var i=r.documentElement,u=i.clientWidth,c=i.clientHeight;return I(t.left(),t.top(),u,c)}function H(e,n,r){return p(function(e,n){for(var r=$(n)?n:c,t=e.dom(),o=[];null!==t.parentNode&&t.parentNode!==undefined;){var i=t.parentNode,u=ne.fromDom(i);if(o.push(u),!0===r(u))break;t=i}return o}(e,r),n)}function U(e,n){return function(e,n){return p(L(e),n)}(e,function(e){return F(e,n)})}function W(r,t){return function(n){n.setActive(null!==t.get());function e(e){return n.setActive(e.state)}return r.on("FullscreenStateChanged",e),function(){return r.off("FullscreenStateChanged",e)}}}var B,V,j,q=function(r){function e(){return o}function n(e){return e(r)}var t=m(r),o={fold:function(e,n){return n(r)},is:function(e){return r===e},isSome:u,isNone:c,getOr:t,getOrThunk:t,getOrDie:t,getOrNull:t,getOrUndefined:t,or:e,orThunk:e,map:function(e){return q(e(r))},each:function(e){e(r)},bind:n,exists:n,forall:n,filter:function(e){return e(r)?o:s},toArray:function(){return[r]},toString:function(){return"some("+r+")"},equals:function(e){return e.is(r)},equals_:function(e,n){return e.fold(c,function(e){return n(r,e)})}};return o},z={some:q,none:n,from:function(e){return null===e||e===undefined?s:q(e)}},X=h("string"),Y=h("array"),G=h("boolean"),$=h("function"),K=h("number"),J=Array.prototype.slice,Q=Array.prototype.push,Z=($(Array.from)&&Array.from,Object.keys),ee=function(e){if(null===e||e===undefined)throw new Error("Node cannot be null or undefined");return{dom:m(e)}},ne={fromHtml:function(e,n){var r=(n||l.document).createElement("div");if(r.innerHTML=e,!r.hasChildNodes()||1<r.childNodes.length)throw l.console.error("HTML does not have a single root node",e),new Error("HTML must have a single root node");return ee(r.childNodes[0])},fromTag:function(e,n){var r=(n||l.document).createElement(e);return ee(r)},fromText:function(e,n){var r=(n||l.document).createTextNode(e);return ee(r)},fromDom:ee,fromPoint:function(e,n,r){var t=e.dom();return z.from(t.elementFromPoint(n,r)).map(ee)}},re=(l.Node.ATTRIBUTE_NODE,l.Node.CDATA_SECTION_NODE,l.Node.COMMENT_NODE,l.Node.DOCUMENT_NODE),te=(l.Node.DOCUMENT_TYPE_NODE,l.Node.DOCUMENT_FRAGMENT_NODE,l.Node.ELEMENT_NODE),oe=l.Node.TEXT_NODE,ie=(l.Node.PROCESSING_INSTRUCTION_NODE,l.Node.ENTITY_REFERENCE_NODE,l.Node.ENTITY_NODE,l.Node.NOTATION_NODE,"undefined"!=typeof l.window?l.window:Function("return this;")(),B=oe,function(e){return function(e){return e.dom().nodeType}(e)===B}),ue=function(e,n){return S(e)?e.style.getPropertyValue(n):""},ce=function(){return se(0,0)},se=function(e,n){return{major:e,minor:n}},fe={nu:se,detect:function(e,n){var r=String(n).toLowerCase();return 0===e.length?ce():b(e,r)},unknown:ce},ae="Firefox",de=function(e){var n=e.current;return{current:n,version:e.version,isEdge:C("Edge",n),isChrome:C("Chrome",n),isIE:C("IE",n),isOpera:C("Opera",n),isFirefox:C(ae,n),isSafari:C("Safari",n)}},le={unknown:function(){return de({current:undefined,version:fe.unknown()})},nu:de,edge:m("Edge"),chrome:m("Chrome"),ie:m("IE"),opera:m("Opera"),firefox:m(ae),safari:m("Safari")},me="Windows",he="Android",ve="Solaris",ge="FreeBSD",pe=function(e){var n=e.current;return{current:n,version:e.version,isWindows:D(me,n),isiOS:D("iOS",n),isAndroid:D(he,n),isOSX:D("OSX",n),isLinux:D("Linux",n),isSolaris:D(ve,n),isFreeBSD:D(ge,n)}},we={unknown:function(){return pe({current:undefined,version:fe.unknown()})},nu:pe,windows:m(me),ios:m("iOS"),android:m(he),linux:m("Linux"),osx:m("OSX"),solaris:m(ve),freebsd:m(ge)},ye=function(e,r){return A(e,r).map(function(e){var n=fe.detect(e.versionRegexes,r);return{current:e.name,version:n}})},Se=function(e,r){return A(e,r).map(function(e){var n=fe.detect(e.versionRegexes,r);return{current:e.name,version:n}})},Ee=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,Oe=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(e){return y(e,"edge/")&&y(e,"chrome")&&y(e,"safari")&&y(e,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,Ee],search:function(e){return y(e,"chrome")&&!y(e,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(e){return y(e,"msie")||y(e,"trident")}},{name:"Opera",versionRegexes:[Ee,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:M("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:M("firefox")},{name:"Safari",versionRegexes:[Ee,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(e){return(y(e,"safari")||y(e,"mobile/"))&&y(e,"applewebkit")}}],Ne=[{name:"Windows",search:M("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(e){return y(e,"iphone")||y(e,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:M("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:M("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:M("linux"),versionRegexes:[]},{name:"Solaris",search:M("sunos"),versionRegexes:[]},{name:"FreeBSD",search:M("freebsd"),versionRegexes:[]}],Te={browsers:m(Oe),oses:m(Ne)},xe=t(function(e,n){var r=Te.browsers(),t=Te.oses(),o=ye(r,e).fold(le.unknown,le.nu),i=Se(t,e).fold(we.unknown,we.nu);return{browser:o,os:i,deviceType:function(e,n,r,t){var o=e.isiOS()&&!0===/ipad/i.test(r),i=e.isiOS()&&!o,u=e.isiOS()||e.isAndroid(),c=u||t("(pointer:coarse)"),s=o||!i&&u&&t("(min-device-width:768px)"),f=i||u&&!s,a=n.isSafari()&&e.isiOS()&&!1===/safari/i.test(r),d=!f&&!s&&!a;return{isiPad:m(o),isiPhone:m(i),isTablet:m(s),isPhone:m(f),isTouch:m(c),isAndroid:e.isAndroid,isiOS:e.isiOS,isWebView:m(a),isDesktop:m(d)}}(i,o,e,n)}}(l.navigator.userAgent,function(e){return l.window.matchMedia(e).matches})),be=function(e,n){return k(e,n,l.Node.DOCUMENT_POSITION_CONTAINED_BY)},Ce=te,De=re,Ae=(_().browser.isIE(),function(e){return v(e.dom().childNodes,ne.fromDom)}),Me=(function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n]}("element","offset"),function(r,t){return{left:m(r),top:m(t),translate:function(e,n){return Me(r+e,t+n)}}}),_e=Me,ke=(_().browser.isSafari(),function(e,n){e.fire("FullscreenStateChanged",{state:n})}),Fe=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),Re=tinymce.util.Tools.resolve("tinymce.Env"),Le=tinymce.util.Tools.resolve("tinymce.util.Delay"),Ie="data-ephox-mobile-fullscreen-style",Pe="position:absolute!important;",He="top:0!important;left:0!important;margin:0!important;padding:0!important;width:100%!important;height:100%!important;overflow:visible!important;",Ue=Re.os.isAndroid(),We=function(e,n){function r(t){return function(e){var n=O(e,"style"),r=n===undefined?"no-styles":n.trim();r!==t&&(E(e,Ie,r),E(e,"style",t))}}var t=function(e,n,r){return H(e,function(e){return F(e,n)},r)}(e,"*"),o=w(t,function(e){return U(e,"*:not(.tox-silver-sink)")}),i=function(e){var n=x(e,"background-color");return n!==undefined&&""!==n?"background-color:"+n+"!important":"background-color:rgb(255,255,255)!important;"}(n);g(o,r("display:none!important;")),g(t,r(Pe+He+i)),r((!0===Ue?"":Pe)+He+i)(e)},Be=function(){var e=function(e){return R(e)}("["+Ie+"]");g(e,function(e){var n=O(e,Ie);"no-styles"!==n?E(e,"style",n):N(e,"style"),N(e,Ie)})},Ve=Fe.DOM,je=l.window.visualViewport,qe=je===undefined?{bind:e,unbind:e}:(V=function(){var n=t(z.none());return{clear:function(){n.set(z.none())},set:function(e){n.set(z.some(e))},isSet:function(){return n.get().isSome()},on:function(e){n.get().each(e)}}}(),j=Le.throttle(function(){l.document.body.scrollTop=0,l.document.documentElement.scrollTop=0,l.window.requestAnimationFrame(function(){V.on(function(e){return T(e,{top:je.offsetTop+"px",left:je.offsetLeft+"px",height:je.height+"px",width:je.width+"px"})})})},50),{bind:function(e){V.set(e),j(),je.addEventListener("resize",j),je.addEventListener("scroll",j)},unbind:function(){V.on(function(){je.removeEventListener("scroll",j),je.removeEventListener("resize",j)}),V.clear()}}),ze=function(e,n){var r,t,o,i=l.document.body,u=l.document.documentElement;t=e.getContainer();var c=ne.fromDom(t),s=n.get(),f=ne.fromDom(e.getBody()),a=Re.deviceType.isTouch();if(r=t.style,o=e.getContentAreaContainer().firstChild.style,s)o.width=s.iframeWidth,o.height=s.iframeHeight,r.width=s.containerWidth,r.height=s.containerHeight,r.top=s.containerTop,r.left=s.containerLeft,a&&Be(),Ve.removeClass(i,"tox-fullscreen"),Ve.removeClass(u,"tox-fullscreen"),Ve.removeClass(t,"tox-fullscreen"),function(e){l.window.scrollTo(e.x,e.y)}(s.scrollPos),n.set(null),ke(e,!1),qe.unbind(),e.off("remove",qe.unbind);else{var d={scrollPos:function(){var e=P(l.window);return{x:e.x(),y:e.y()}}(),containerWidth:r.width,containerHeight:r.height,containerTop:r.top,containerLeft:r.left,iframeWidth:o.width,iframeHeight:o.height};a&&We(c,f),o.width=o.height="100%",r.width=r.height="",Ve.addClass(i,"tox-fullscreen"),Ve.addClass(u,"tox-fullscreen"),Ve.addClass(t,"tox-fullscreen"),qe.bind(c),e.on("remove",qe.unbind),n.set(d),ke(e,!0)}},Xe=function(e,n){e.addCommand("mceFullScreen",function(){ze(e,n)})},Ye=function(e,n){e.ui.registry.addToggleMenuItem("fullscreen",{text:"Fullscreen",shortcut:"Meta+Shift+F",onAction:function(){return e.execCommand("mceFullScreen")},onSetup:W(e,n)}),e.ui.registry.addToggleButton("fullscreen",{tooltip:"Fullscreen",icon:"fullscreen",onAction:function(){return e.execCommand("mceFullScreen")},onSetup:W(e,n)})};!function Ge(){o.add("fullscreen",function(e){var n=t(null);return e.settings.inline||(Xe(e,n),Ye(e,n),e.addShortcut("Meta+Shift+F","","mceFullScreen")),i(n)})}()}(window);
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/plugins/help/plugin.min.js b/app/static/vendors/tinymce/js/tinymce/plugins/help/plugin.min.js
deleted file mode 100644 (file)
index 2cb9821..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.3 (2019-12-04)
- */
-!function(){"use strict";function e(){}function r(e){return function(){return e}}var a=function(e){function t(){return n}var n=e;return{get:t,set:function(e){n=e},clone:function(){return a(t())}}},t=tinymce.util.Tools.resolve("tinymce.PluginManager"),i=function(e,t){e.addCommand("mceHelp",t)},s=function(e,t){e.ui.registry.addButton("help",{icon:"help",tooltip:"Help",onAction:t}),e.ui.registry.addMenuItem("help",{text:"Help",icon:"help",shortcut:"Alt+0",onAction:t})},c=function(){return(c=Object.assign||function(e){for(var t,n=1,o=arguments.length;n<o;n++)for(var a in t=arguments[n])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e}).apply(this,arguments)};function l(o){for(var a=[],e=1;e<arguments.length;e++)a[e-1]=arguments[e];return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=a.concat(e);return o.apply(null,n)}}function n(){return m}var o,u=r(!1),h=r(!0),m=(o={fold:function(e,t){return e()},is:u,isSome:u,isNone:h,getOr:f,getOrThunk:d,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:r(null),getOrUndefined:r(undefined),or:f,orThunk:d,map:n,each:e,bind:n,exists:u,forall:h,filter:n,equals:p,equals_:p,toArray:function(){return[]},toString:r("none()")},Object.freeze&&Object.freeze(o),o);function p(e){return e.isNone()}function d(e){return e()}function f(e){return e}function g(e,t){return O.call(e,t)}function b(e,t){return-1<g(e,t)}function y(e,t){for(var n=e.length,o=new Array(n),a=0;a<n;a++){var r=e[a];o[a]=t(r,a)}return o}function k(e,o){return e.replace(/\$\{([^{}]*)\}/g,function(e,t){var n=o[t];return function(e){var t=typeof e;return"string"==t||"number"==t}(n)?n.toString():e})}function v(e){var t=F(e);return function(e,t){var n=g(e,t);return-1===n?x.none():x.some(n)}(t,"versions").each(function(e){t.splice(e,1),t.push("versions")}),{tabs:e,names:t}}function w(e,t){var n,o=H(),a=B(),r=D(e),i=L(),s=c(((n={})[o.name]=o,n[a.name]=a,n[r.name]=r,n[i.name]=i,n),t.get());return function(e){return x.from(e.getParam("help_tabs"))}(e).fold(function(){return v(s)},function(e){return function(e,t){var n={},o=y(e,function(e){return"string"==typeof e?(E(t,e)&&(n[e]=t[e]),e):(n[e.name]=e).name});return{tabs:n,names:o}}(e,s)})}function A(a,r){return function(){var e=w(a,r),t=e.tabs,n=e.names,o={type:"tabpanel",tabs:function(e){for(var t=[],n=function(e){t.push(e)},o=0;o<e.length;o++)e[o].each(n);return t}(y(n,function(e){return function(e,t){return E(e,t)?x.from(e[t]):x.none()}(t,e)}))};a.windowManager.open({title:"Help",size:"medium",body:o,buttons:[{type:"cancel",name:"close",text:"Close",primary:!0}],initialData:{}})}}var C,T=function(n){function e(){return a}function t(e){return e(n)}var o=r(n),a={fold:function(e,t){return t(n)},is:function(e){return n===e},isSome:h,isNone:u,getOr:o,getOrThunk:o,getOrDie:o,getOrNull:o,getOrUndefined:o,or:e,orThunk:e,map:function(e){return T(e(n))},each:function(e){e(n)},bind:t,exists:t,forall:t,filter:function(e){return e(n)?a:m},toArray:function(){return[n]},toString:function(){return"some("+n+")"},equals:function(e){return e.is(n)},equals_:function(e,t){return e.fold(u,function(e){return t(n,e)})}};return a},x={some:T,none:n,from:function(e){return null===e||e===undefined?m:T(e)}},P=(C="function",function(e){return function(e){if(null===e)return"null";var t=typeof e;return"object"==t&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"==t&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":t}(e)===C}),M=Array.prototype.slice,O=Array.prototype.indexOf,F=(P(Array.from)&&Array.from,Object.keys),S=Object.hasOwnProperty,E=function(e,t){return S.call(e,t)},I=[{shortcuts:["Meta + B"],action:"Bold"},{shortcuts:["Meta + I"],action:"Italic"},{shortcuts:["Meta + U"],action:"Underline"},{shortcuts:["Meta + A"],action:"Select all"},{shortcuts:["Meta + Y","Meta + Shift + Z"],action:"Redo"},{shortcuts:["Meta + Z"],action:"Undo"},{shortcuts:["Access + 1"],action:"Header 1"},{shortcuts:["Access + 2"],action:"Header 2"},{shortcuts:["Access + 3"],action:"Header 3"},{shortcuts:["Access + 4"],action:"Header 4"},{shortcuts:["Access + 5"],action:"Header 5"},{shortcuts:["Access + 6"],action:"Header 6"},{shortcuts:["Access + 7"],action:"Paragraph"},{shortcuts:["Access + 8"],action:"Div"},{shortcuts:["Access + 9"],action:"Address"},{shortcuts:["Alt + 0"],action:"Open help dialog"},{shortcuts:["Alt + F9"],action:"Focus to menubar"},{shortcuts:["Alt + F10"],action:"Focus to toolbar"},{shortcuts:["Alt + F11"],action:"Focus to element path"},{shortcuts:["Ctrl + F9"],action:"Focus to contextual toolbar"},{shortcuts:["Shift + Enter"],action:"Open popup menu for split buttons"},{shortcuts:["Meta + K"],action:"Insert link (if link plugin activated)"},{shortcuts:["Meta + S"],action:"Save (if save plugin activated)"},{shortcuts:["Meta + F"],action:"Find (if searchreplace plugin activated)"},{shortcuts:["Meta + Shift + F"],action:"Switch to or from fullscreen mode"}],_=tinymce.util.Tools.resolve("tinymce.Env"),j=function(e){var n=_.mac?{alt:"&#x2325;",ctrl:"&#x2303;",shift:"&#x21E7;",meta:"&#x2318;",access:"&#x2303;&#x2325;"}:{meta:"Ctrl ",access:"Shift + Alt "},t=e.split("+"),o=y(t,function(e){var t=e.toLowerCase().trim();return E(n,t)?n[t]:e});return _.mac?o.join("").replace(/\s/,""):o.join("+")},H=function(){return{name:"shortcuts",title:"Handy Shortcuts",items:[{type:"table",header:["Action","Shortcut"],cells:y(I,function(e){var t=y(e.shortcuts,j).join(" or ");return[e.action,t]})}]}},U=tinymce.util.Tools.resolve("tinymce.util.I18n"),W=[{key:"advlist",name:"Advanced List"},{key:"anchor",name:"Anchor"},{key:"autolink",name:"Autolink"},{key:"autoresize",name:"Autoresize"},{key:"autosave",name:"Autosave"},{key:"bbcode",name:"BBCode"},{key:"charmap",name:"Character Map"},{key:"code",name:"Code"},{key:"codesample",name:"Code Sample"},{key:"colorpicker",name:"Color Picker"},{key:"directionality",name:"Directionality"},{key:"emoticons",name:"Emoticons"},{key:"fullpage",name:"Full Page"},{key:"fullscreen",name:"Full Screen"},{key:"help",name:"Help"},{key:"hr",name:"Horizontal Rule"},{key:"image",name:"Image"},{key:"imagetools",name:"Image Tools"},{key:"importcss",name:"Import CSS"},{key:"insertdatetime",name:"Insert Date/Time"},{key:"legacyoutput",name:"Legacy Output"},{key:"link",name:"Link"},{key:"lists",name:"Lists"},{key:"media",name:"Media"},{key:"nonbreaking",name:"Nonbreaking"},{key:"noneditable",name:"Noneditable"},{key:"pagebreak",name:"Page Break"},{key:"paste",name:"Paste"},{key:"preview",name:"Preview"},{key:"print",name:"Print"},{key:"save",name:"Save"},{key:"searchreplace",name:"Search and Replace"},{key:"spellchecker",name:"Spell Checker"},{key:"tabfocus",name:"Tab Focus"},{key:"table",name:"Table"},{key:"template",name:"Template"},{key:"textcolor",name:"Text Color"},{key:"textpattern",name:"Text Pattern"},{key:"toc",name:"Table of Contents"},{key:"visualblocks",name:"Visual Blocks"},{key:"visualchars",name:"Visual Characters"},{key:"wordcount",name:"Word Count"},{key:"advcode",name:"Advanced Code Editor*"},{key:"formatpainter",name:"Format Painter*"},{key:"powerpaste",name:"PowerPaste*"},{key:"tinydrive",name:"Tiny Drive*"},{key:"tinymcespellchecker",name:"Spell Checker Pro*"},{key:"a11ychecker",name:"Accessibility Checker*"},{key:"linkchecker",name:"Link Checker*"},{key:"mentions",name:"Mentions*"},{key:"mediaembed",name:"Enhanced Media Embed*"},{key:"checklist",name:"Checklist*"},{key:"casechange",name:"Case Change*"},{key:"permanentpen",name:"Permanent Pen*"},{key:"pageembed",name:"Page Embed*"},{key:"tinycomments",name:"Tiny Comments*"},{key:"advtable",name:"Advanced Tables*"},{key:"autocorrect",name:"Autocorrect*"}],D=function(e){function r(t,n){return function(e,t){for(var n=0,o=e.length;n<o;n++){var a=e[n];if(t(a,n))return x.some(a)}return x.none()}(W,function(e){return e.key===n}).fold(function(){var e=t.plugins[n].getMetadata;return"function"==typeof e?o(e()):n},function(e){return o({name:e.name,url:"https://www.tiny.cloud/docs/plugins/"+e.key})})}var t,n,o=l(k,'<a href="${url}" target="_blank" rel="noopener">${name}</a>');return{name:"plugins",title:"Plugins",items:[{type:"htmlpanel",presets:"document",html:[(n=e,null==n?"":'<div data-mce-tabstop="1" tabindex="-1">'+function(t){var e=function(e){var t=F(e.plugins);return e.settings.forced_plugins===undefined?t:function(e,t){for(var n=[],o=0,a=e.length;o<a;o++){var r=e[o];t(r,o)&&n.push(r)}return n}(t,function(n){return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return!n.apply(null,e)}}(l(b,e.settings.forced_plugins)))}(t),n=y(e,function(e){return"<li>"+r(t,e)+"</li>"}),o=n.length,a=n.join("");return"<p><b>"+U.translate(["Plugins installed ({0}):",o])+"</b></p><ul>"+a+"</ul>"}(n)+"</div>"),(t=y(["Accessibility Checker","Advanced Code Editor","Advanced Tables","Case Change","Checklist","Tiny Comments","Tiny Drive","Enhanced Media Embed","Format Painter","Link Checker","Mentions","MoxieManager","Page Embed","Permanent Pen","PowerPaste","Spell Checker Pro"],function(e){return"<li>"+U.translate(e)+"</li>"}).join(""),'<div data-mce-tabstop="1" tabindex="-1"><p><b>'+U.translate("Premium plugins:")+"</b></p><ul>"+t+'<li style="list-style: none; margin-top: 1em;"><a href="https://www.tiny.cloud/pricing/?utm_campaign=editor_referral&utm_medium=help_dialog&utm_source=tinymce" target="_blank">'+U.translate("Learn more...")+"</a></li></ul></div>")].join("")}]}},N=tinymce.util.Tools.resolve("tinymce.EditorManager"),L=function(){var e,t,n='<a href="https://www.tinymce.com/docs/changelog/?utm_campaign=editor_referral&utm_medium=help_dialog&utm_source=tinymce" target="_blank">TinyMCE '+(e=N.majorVersion,t=N.minorVersion,0===e.indexOf("@")?"X.X.X":e+"."+t)+"</a>";return{name:"versions",title:"Version",items:[{type:"htmlpanel",html:"<p>"+U.translate(["You are using {0}",n])+"</p>",presets:"document"}]}},B=function(){return{name:"keyboardnav",title:"Keyboard Navigation",items:[{type:"htmlpanel",presets:"document",html:"<h1>Editor UI keyboard navigation</h1>\n\n<h2>Activating keyboard navigation</h2>\n\n<p>The sections of the outer UI of the editor - the menubar, toolbar, sidebar and footer - are all keyboard navigable. As such, there are multiple ways to activate keyboard navigation:</p>\n<ul>\n  <li>Focus the menubar: Alt + F9 (Windows) or &#x2325;F9 (MacOS)</li>\n  <li>Focus the toolbar: Alt + F10 (Windows) or &#x2325;F10 (MacOS)</li>\n  <li>Focus the footer: Alt + F11 (Windows) or &#x2325;F11 (MacOS)</li>\n</ul>\n\n<p>Focusing the menubar or toolbar will start keyboard navigation at the first item in the menubar or toolbar, which will be highlighted with a gray background. Focusing the footer will start keyboard navigation at the first item in the element path, which will be highlighted with an underline. </p>\n\n<h2>Moving between UI sections</h2>\n\n<p>When keyboard navigation is active, pressing tab will move the focus to the next major section of the UI, where applicable. These sections are:</p>\n<ul>\n  <li>the menubar</li>\n  <li>each group of the toolbar </li>\n  <li>the sidebar</li>\n  <li>the element path in the footer </li>\n  <li>the wordcount toggle button in the footer </li>\n  <li>the branding link in the footer </li>\n</ul>\n\n<p>Pressing shift + tab will move backwards through the same sections, except when moving from the footer to the toolbar. Focusing the element path then pressing shift + tab will move focus to the first toolbar group, not the last.</p>\n\n<h2>Moving within UI sections</h2>\n\n<p>Keyboard navigation within UI sections can usually be achieved using the left and right arrow keys. This includes:</p>\n<ul>\n  <li>moving between menus in the menubar</li>\n  <li>moving between buttons in a toolbar group</li>\n  <li>moving between items in the element path</li>\n</ul>\n\n<p>In all these UI sections, keyboard navigation will cycle within the section. For example, focusing the last button in a toolbar group then pressing right arrow will move focus to the first item in the same toolbar group. </p>\n\n<h1>Executing buttons</h1>\n\n<p>To execute a button, navigate the selection to the desired button and hit space or enter.</p>\n\n<h1>Opening, navigating and closing menus</h1>\n\n<p>When focusing a menubar button or a toolbar button with a menu, pressing space, enter or down arrow will open the menu. When the menu opens the first item will be selected. To move up or down the menu, press the up or down arrow key respectively. This is the same for submenus, which can also be opened and closed using the left and right arrow keys.</p>\n\n<p>To close any active menu, hit the escape key. When a menu is closed the selection will be restored to its previous selection. This also works for closing submenus.</p>\n\n<h1>Context toolbars and menus</h1>\n\n<p>To focus an open context toolbar such as the table context toolbar, press Ctrl + F9 (Windows) or &#x2303;F9 (MacOS).</p>\n\n<p>Context toolbar navigation is the same as toolbar navigation, and context menu navigation is the same as standard menu navigation.</p>\n\n<h1>Dialog navigation</h1>\n\n<p>There are two types of dialog UIs in TinyMCE: tabbed dialogs and non-tabbed dialogs.</p>\n\n<p>When a non-tabbed dialog is opened, the first interactive component in the dialog will be focused. Users can navigate between interactive components by pressing tab. This includes any footer buttons. Navigation will cycle back to the first dialog component if tab is pressed while focusing the last component in the dialog. Pressing shift + tab will navigate backwards.</p>\n\n<p>When a tabbed dialog is opened, the first button in the tab menu is focused. Pressing tab will navigate to the first interactive component in that tab, and will cycle through the tab\u2019s components, the footer buttons, then back to the tab button. To switch to another tab, focus the tab button for the current tab, then use the arrow keys to cycle through the tab buttons.</p>"}]}};!function z(){t.add("help",function(e){var t=a({}),n=function(n){return{addTab:function(e){var t=n.get();t[e.name]=e,n.set(t)}}}(t),o=A(e,t);return s(e,o),i(e,o),e.shortcuts.add("Alt+0","Open help dialog","mceHelp"),n})}()}();
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/plugins/hr/plugin.min.js b/app/static/vendors/tinymce/js/tinymce/plugins/hr/plugin.min.js
deleted file mode 100644 (file)
index ff41b30..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.3 (2019-12-04)
- */
-!function(){"use strict";var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),o=function(n){n.addCommand("InsertHorizontalRule",function(){n.execCommand("mceInsertContent",!1,"<hr />")})},t=function(n){n.ui.registry.addButton("hr",{icon:"horizontal-rule",tooltip:"Horizontal line",onAction:function(){return n.execCommand("InsertHorizontalRule")}}),n.ui.registry.addMenuItem("hr",{icon:"horizontal-rule",text:"Horizontal line",onAction:function(){return n.execCommand("InsertHorizontalRule")}})};!function e(){n.add("hr",function(n){o(n),t(n)})}()}();
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/plugins/image/plugin.min.js b/app/static/vendors/tinymce/js/tinymce/plugins/image/plugin.min.js
deleted file mode 100644 (file)
index 66c9274..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.3 (2019-12-04)
- */
-!function(s){"use strict";function o(){}function a(t){return function(){return t}}function t(t){return t}function e(){return l}var n,r=tinymce.util.Tools.resolve("tinymce.PluginManager"),u=a(!1),c=a(!0),l=(n={fold:function(t,e){return t()},is:u,isSome:u,isNone:c,getOr:d,getOrThunk:f,getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:a(null),getOrUndefined:a(undefined),or:d,orThunk:f,map:e,each:o,bind:e,exists:u,forall:c,filter:e,equals:i,equals_:i,toArray:function(){return[]},toString:a("none()")},Object.freeze&&Object.freeze(n),n);function i(t){return t.isNone()}function f(t){return t()}function d(t){return t}function m(e){return function(t){return function(t){if(null===t)return"null";var e=typeof t;return"object"==e&&(Array.prototype.isPrototypeOf(t)||t.constructor&&"Array"===t.constructor.name)?"array":"object"==e&&(String.prototype.isPrototypeOf(t)||t.constructor&&"String"===t.constructor.name)?"string":e}(t)===e}}function v(t){for(var e=[],n=0,r=t.length;n<r;++n){if(!U(t[n]))throw new Error("Arr.flatten item "+n+" was not an array, input: "+t);S.apply(e,t[n])}return e}var p,g,h,y,b=function(n){function t(){return i}function e(t){return t(n)}var r=a(n),i={fold:function(t,e){return e(n)},is:function(t){return n===t},isSome:c,isNone:u,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:t,orThunk:t,map:function(t){return b(t(n))},each:function(t){t(n)},bind:e,exists:e,forall:e,filter:function(t){return t(n)?i:l},toArray:function(){return[n]},toString:function(){return"some("+n+")"},equals:function(t){return t.is(n)},equals_:function(t,e){return t.fold(u,function(t){return e(n,t)})}};return i},w={some:b,none:e,from:function(t){return null===t||t===undefined?l:b(t)}},T=m("string"),_=m("object"),U=m("array"),x=m("boolean"),A=m("function"),I=Array.prototype.slice,S=Array.prototype.push,D=(A(Array.from)&&Array.from,function(){return(D=Object.assign||function(t){for(var e,n=1,r=arguments.length;n<r;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t}).apply(this,arguments)}),O={},C={exports:O};p=undefined,g=O,h=C,y=undefined,function(t){"object"==typeof g&&void 0!==h?h.exports=t():"function"==typeof p&&p.amd?p([],t):("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).EphoxContactWrapper=t()}(function(){return function s(o,a,u){function c(e,t){if(!a[e]){if(!o[e]){var n="function"==typeof y&&y;if(!t&&n)return n(e,!0);if(l)return l(e,!0);var r=new Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r}var i=a[e]={exports:{}};o[e][0].call(i.exports,function(t){return c(o[e][1][t]||t)},i,i.exports,s,o,a,u)}return a[e].exports}for(var l="function"==typeof y&&y,t=0;t<u.length;t++)c(u[t]);return c}({1:[function(t,e,n){var r,i,o=e.exports={};function a(){throw new Error("setTimeout has not been defined")}function u(){throw new Error("clearTimeout has not been defined")}function c(t){if(r===setTimeout)return setTimeout(t,0);if((r===a||!r)&&setTimeout)return r=setTimeout,setTimeout(t,0);try{return r(t,0)}catch(e){try{return r.call(null,t,0)}catch(e){return r.call(this,t,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:a}catch(t){r=a}try{i="function"==typeof clearTimeout?clearTimeout:u}catch(t){i=u}}();var l,s=[],f=!1,d=-1;function m(){f&&l&&(f=!1,l.length?s=l.concat(s):d=-1,s.length&&p())}function p(){if(!f){var t=c(m);f=!0;for(var e=s.length;e;){for(l=s,s=[];++d<e;)l&&l[d].run();d=-1,e=s.length}l=null,f=!1,function n(t){if(i===clearTimeout)return clearTimeout(t);if((i===u||!i)&&clearTimeout)return i=clearTimeout,clearTimeout(t);try{return i(t)}catch(e){try{return i.call(null,t)}catch(e){return i.call(this,t)}}}(t)}}function g(t,e){this.fun=t,this.array=e}function h(){}o.nextTick=function(t){var e=new Array(arguments.length-1);if(1<arguments.length)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];s.push(new g(t,e)),1!==s.length||f||c(p)},g.prototype.run=function(){this.fun.apply(null,this.array)},o.title="browser",o.browser=!0,o.env={},o.argv=[],o.version="",o.versions={},o.on=h,o.addListener=h,o.once=h,o.off=h,o.removeListener=h,o.removeAllListeners=h,o.emit=h,o.prependListener=h,o.prependOnceListener=h,o.listeners=function(t){return[]},o.binding=function(t){throw new Error("process.binding is not supported")},o.cwd=function(){return"/"},o.chdir=function(t){throw new Error("process.chdir is not supported")},o.umask=function(){return 0}},{}],2:[function(t,f,e){(function(e){function r(){}function o(t){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof t)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=undefined,this._deferreds=[],s(t,this)}function i(r,i){for(;3===r._state;)r=r._value;0!==r._state?(r._handled=!0,o._immediateFn(function(){var t=1===r._state?i.onFulfilled:i.onRejected;if(null!==t){var e;try{e=t(r._value)}catch(n){return void u(i.promise,n)}a(i.promise,e)}else(1===r._state?a:u)(i.promise,r._value)})):r._deferreds.push(i)}function a(t,e){try{if(e===t)throw new TypeError("A promise cannot be resolved with itself.");if(e&&("object"==typeof e||"function"==typeof e)){var n=e.then;if(e instanceof o)return t._state=3,t._value=e,void c(t);if("function"==typeof n)return void s(function r(t,e){return function(){t.apply(e,arguments)}}(n,e),t)}t._state=1,t._value=e,c(t)}catch(i){u(t,i)}}function u(t,e){t._state=2,t._value=e,c(t)}function c(t){2===t._state&&0===t._deferreds.length&&o._immediateFn(function(){t._handled||o._unhandledRejectionFn(t._value)});for(var e=0,n=t._deferreds.length;e<n;e++)i(t,t._deferreds[e]);t._deferreds=null}function l(t,e,n){this.onFulfilled="function"==typeof t?t:null,this.onRejected="function"==typeof e?e:null,this.promise=n}function s(t,e){var n=!1;try{t(function(t){n||(n=!0,a(e,t))},function(t){n||(n=!0,u(e,t))})}catch(r){if(n)return;n=!0,u(e,r)}}var t,n;t=this,n=setTimeout,o.prototype["catch"]=function(t){return this.then(null,t)},o.prototype.then=function(t,e){var n=new this.constructor(r);return i(this,new l(t,e,n)),n},o.all=function(t){var c=Array.prototype.slice.call(t);return new o(function(i,o){if(0===c.length)return i([]);var a=c.length;function u(e,t){try{if(t&&("object"==typeof t||"function"==typeof t)){var n=t.then;if("function"==typeof n)return void n.call(t,function(t){u(e,t)},o)}c[e]=t,0==--a&&i(c)}catch(r){o(r)}}for(var t=0;t<c.length;t++)u(t,c[t])})},o.resolve=function(e){return e&&"object"==typeof e&&e.constructor===o?e:new o(function(t){t(e)})},o.reject=function(n){return new o(function(t,e){e(n)})},o.race=function(i){return new o(function(t,e){for(var n=0,r=i.length;n<r;n++)i[n].then(t,e)})},o._immediateFn="function"==typeof e?function(t){e(t)}:function(t){n(t,0)},o._unhandledRejectionFn=function(t){"undefined"!=typeof console&&console&&console.warn("Possible Unhandled Promise Rejection:",t)},o._setImmediateFn=function(t){o._immediateFn=t},o._setUnhandledRejectionFn=function(t){o._unhandledRejectionFn=t},void 0!==f&&f.exports?f.exports=o:t.Promise||(t.Promise=o)}).call(this,t("timers").setImmediate)},{timers:3}],3:[function(c,t,l){(function(t,e){var r=c("process/browser.js").nextTick,n=Function.prototype.apply,i=Array.prototype.slice,o={},a=0;function u(t,e){this._id=t,this._clearFn=e}l.setTimeout=function(){return new u(n.call(setTimeout,window,arguments),clearTimeout)},l.setInterval=function(){return new u(n.call(setInterval,window,arguments),clearInterval)},l.clearTimeout=l.clearInterval=function(t){t.close()},u.prototype.unref=u.prototype.ref=function(){},u.prototype.close=function(){this._clearFn.call(window,this._id)},l.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},l.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},l._unrefActive=l.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;0<=e&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},l.setImmediate="function"==typeof t?t:function(t){var e=a++,n=!(arguments.length<2)&&i.call(arguments,1);return o[e]=!0,r(function(){o[e]&&(n?t.apply(null,n):t.call(null),l.clearImmediate(e))}),e},l.clearImmediate="function"==typeof e?e:function(t){delete o[t]}}).call(this,c("timers").setImmediate,c("timers").clearImmediate)},{"process/browser.js":1,timers:3}],4:[function(t,e,n){var r=t("promise-polyfill"),i="undefined"!=typeof window?window:Function("return this;")();e.exports={boltExport:i.Promise||r}},{"promise-polyfill":2}]},{},[4])(4)});function P(t){s.setTimeout(function(){throw t},0)}function E(t){return vt(mt(t))}function L(a){return function(){for(var t=new Array(arguments.length),e=0;e<t.length;e++)t[e]=arguments[e];if(0===t.length)throw new Error("Can't merge zero objects");for(var n={},r=0;r<t.length;r++){var i=t[r];for(var o in i)wt.call(i,o)&&(n[o]=a(n[o],i[o]))}return n}}function N(t){var e=t.imageList.map(function(t){return{name:"images",type:"selectbox",label:"Image list",items:t}}),n=t.classList.map(function(t){return{name:"classes",type:"selectbox",label:"Class",items:t}});return v([[{name:"src",type:"urlinput",filetype:"image",label:"Source"}],e.toArray(),t.hasDescription?[{name:"alt",type:"input",label:"Image description"}]:[],t.hasImageTitle?[{name:"title",type:"input",label:"Image title"}]:[],t.hasDimensions?[{name:"dimensions",type:"sizeinput"}]:[],[{type:"grid",columns:2,items:v([n.toArray(),t.hasImageCaption?[{type:"label",label:"Caption",items:[{type:"checkbox",name:"caption",label:"Show caption"}]}]:[]])}]])}function j(t,e){return Math.max(parseInt(t,10),parseInt(e,10))}function R(t){return t.style.marginLeft&&t.style.marginRight&&t.style.marginLeft===t.style.marginRight?Et(t.style.marginLeft):""}function F(t){return t.style.marginTop&&t.style.marginBottom&&t.style.marginTop===t.style.marginBottom?Et(t.style.marginTop):""}function k(t){return t.style.borderWidth?Et(t.style.borderWidth):""}function z(t,e){return t.hasAttribute(e)?t.getAttribute(e):""}function M(t,e){return t.style[e]?t.style[e]:""}function H(t){return null!==t.parentNode&&"FIGURE"===t.parentNode.nodeName}function B(t,e,n){t.setAttribute(e,n)}function G(t){H(t)?function(t){var e=t.parentNode;zt.insertAfter(t,e),zt.remove(e)}(t):function(t){var e=zt.create("figure",{"class":"image"});zt.insertAfter(e,t),e.appendChild(t),e.appendChild(zt.create("figcaption",{contentEditable:"true"},"Caption")),e.contentEditable="false"}(t)}function W(t,e){var n=t.getAttribute("style"),r=e(null!==n?n:"");0<r.length?(t.setAttribute("style",r),t.setAttribute("data-mce-style",r)):t.removeAttribute("style")}function q(t,r){return function(t,e,n){t.style[e]?(t.style[e]=Lt(n),W(t,r)):B(t,e,n)}}function $(t,e){return t.style[e]?Et(t.style[e]):z(t,e)}function J(t,e){var n=Lt(e);t.style.marginLeft=n,t.style.marginRight=n}function V(t,e){var n=Lt(e);t.style.marginTop=n,t.style.marginBottom=n}function X(t,e){var n=Lt(e);t.style.borderWidth=n}function Z(t,e){t.style.borderStyle=e}function K(t){return"FIGURE"===t.nodeName}function Q(t,e){var n=s.document.createElement("img");return B(n,"style",e.style),!R(n)&&""===e.hspace||J(n,e.hspace),!F(n)&&""===e.vspace||V(n,e.vspace),!k(n)&&""===e.border||X(n,e.border),!function(t){return M(t,"borderStyle")}(n)&&""===e.borderStyle||Z(n,e.borderStyle),t(n.getAttribute("style"))}function Y(t,e){return{src:z(e,"src"),alt:z(e,"alt"),title:z(e,"title"),width:$(e,"width"),height:$(e,"height"),"class":z(e,"class"),style:t(z(e,"style")),caption:H(e),hspace:R(e),vspace:F(e),border:k(e),borderStyle:M(e,"borderStyle")}}function tt(t,e,n,r,i){n[r]!==e[r]&&i(t,r,n[r])}function et(r,i){return function(t,e,n){r(t,n),W(t,i)}}function nt(t,e){var n=t.dom.styles.parse(e),r=Nt(n),i=t.dom.styles.parse(t.dom.styles.serialize(r));return t.dom.styles.serialize(i)}function rt(t){var e=t.selection.getNode(),n=t.dom.getParent(e,"figure.image");return n?t.dom.select("img",n)[0]:e&&("IMG"!==e.nodeName||kt(e))?null:e}function it(e,t){var n=e.dom,r=n.getParent(t.parentNode,function(t){return e.schema.getTextBlockElements()[t.nodeName]},e.getBody());return r?n.split(r,t):t}function ot(e,t){var n=function(t,e){var n=s.document.createElement("img");if(Mt(t,_t(e,{caption:!1}),n),B(n,"alt",e.alt),e.caption){var r=zt.create("figure",{"class":"image"});return r.appendChild(n),r.appendChild(zt.create("figcaption",{contentEditable:"true"},"Caption")),r.contentEditable="false",r}return n}(function(t){return nt(e,t)},t);e.dom.setAttrib(n,"data-mce-id","__mcenew"),e.focus(),e.selection.setContent(n.outerHTML);var r=e.dom.select('*[data-mce-id="__mcenew"]')[0];if(e.dom.setAttrib(r,"data-mce-id",null),K(r)){var i=it(e,r);e.selection.select(i)}else e.selection.select(r)}function at(t,e){var n=rt(t);n?e.src?function(e,t){var n=rt(e);if(Mt(function(t){return nt(e,t)},t,n),function(t,e){t.dom.setAttrib(e,"src",e.getAttribute("src"))}(e,n),K(n.parentNode)){var r=n.parentNode;it(e,r),e.selection.select(n.parentNode)}else e.selection.select(n),Rt(e,t,n)}(t,e):function(t,e){if(e){var n=t.dom.is(e.parentNode,"figure.image")?e.parentNode:e;t.dom.remove(n),t.focus(),t.nodeChanged(),t.dom.isEmpty(t.getBody())&&(t.setContent(""),t.selection.setCursorLocation())}}(t,n):e.src&&ot(t,e)}function ut(t){return T(t.value)?t.value:""}function ct(e){return void 0===e&&(e=ut),function(t){return t?w.from(t).map(function(t){return Bt(t,e)}):w.none()}}var lt=C.exports.boltExport,st=function(t){var n=w.none(),e=[],r=function(t){i()?a(t):e.push(t)},i=function(){return n.isSome()},o=function(t){!function(t,e){for(var n=0,r=t.length;n<r;n++){e(t[n],n)}}(t,a)},a=function(e){n.each(function(t){s.setTimeout(function(){e(t)},0)})};return t(function(t){n=w.some(t),o(e),e=[]}),{get:r,map:function(n){return st(function(e){r(function(t){e(n(t))})})},isReady:i}},ft={nu:st,pure:function(e){return st(function(t){t(e)})}},dt=function(n){function t(t){n().then(t,P)}return{map:function(t){return dt(function(){return n().then(t)})},bind:function(e){return dt(function(){return n().then(function(t){return e(t).toPromise()})})},anonBind:function(t){return dt(function(){return n().then(function(){return t.toPromise()})})},toLazy:function(){return ft.nu(t)},toCached:function(){var t=null;return dt(function(){return null===t&&(t=n()),t})},toPromise:n,get:t}},mt=function(t){return dt(function(){return new lt(t)})},pt=function(t){return dt(function(){return lt.resolve(t)})},gt=function(n){return{is:function(t){return n===t},isValue:c,isError:u,getOr:a(n),getOrThunk:a(n),getOrDie:a(n),or:function(t){return gt(n)},orThunk:function(t){return gt(n)},fold:function(t,e){return e(n)},map:function(t){return gt(t(n))},mapError:function(t){return gt(n)},each:function(t){t(n)},bind:function(t){return t(n)},exists:function(t){return t(n)},forall:function(t){return t(n)},toOption:function(){return w.some(n)}}},ht=function(n){return{is:u,isValue:u,isError:c,getOr:t,getOrThunk:function(t){return t()},getOrDie:function(){return function(t){return function(){throw new Error(t)}}(String(n))()},or:function(t){return t},orThunk:function(t){return t()},fold:function(t,e){return t(n)},map:function(t){return ht(n)},mapError:function(t){return ht(t(n))},each:o,bind:function(t){return ht(n)},exists:u,forall:c,toOption:w.none}},yt={value:gt,error:ht,fromOption:function(t,e){return t.fold(function(){return ht(e)},gt)}},vt=function(o){return D(D({},o),{toCached:function(){return vt(o.toCached())},bindFuture:function(e){return vt(o.bind(function(t){return t.fold(function(t){return pt(yt.error(t))},function(t){return e(t)})}))},bindResult:function(e){return vt(o.map(function(t){return t.bind(e)}))},mapResult:function(e){return vt(o.map(function(t){return t.map(e)}))},mapError:function(e){return vt(o.map(function(t){return t.mapError(e)}))},foldResult:function(e,n){return o.map(function(t){return t.fold(e,n)})},withTimeout:function(t,i){return vt(mt(function(e){var n=!1,r=s.setTimeout(function(){n=!0,e(yt.error(i()))},t);o.get(function(t){n||(s.clearTimeout(r),e(t))})}))}})},bt=E,wt=Object.prototype.hasOwnProperty,Tt=L(function(t,e){return _(t)&&_(e)?Tt(t,e):e}),_t=L(function(t,e){return e}),Ut=function(t){return{title:"General",name:"general",items:N(t)}},xt=N,At=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),It=tinymce.util.Tools.resolve("tinymce.util.Promise"),St=tinymce.util.Tools.resolve("tinymce.util.XHR"),Dt=function(t){return t.getParam("images_upload_url","","string")},Ot=function(t){return t.getParam("images_upload_handler",undefined,"function")},Ct={hasDimensions:function(t){return t.getParam("image_dimensions",!0,"boolean")},hasUploadTab:function(t){return t.getParam("image_uploadtab",!0,"boolean")},hasAdvTab:function(t){return t.getParam("image_advtab",!1,"boolean")},getPrependUrl:function(t){return t.getParam("image_prepend_url","","string")},getClassList:function(t){return t.getParam("image_class_list")},hasDescription:function(t){return t.getParam("image_description",!0,"boolean")},hasImageTitle:function(t){return t.getParam("image_title",!1,"boolean")},hasImageCaption:function(t){return t.getParam("image_caption",!1,"boolean")},getImageList:function(t){return t.getParam("image_list",!1)},hasUploadUrl:function(t){return!!Dt(t)},hasUploadHandler:function(t){return!!Ot(t)},getUploadUrl:Dt,getUploadHandler:Ot,getUploadBasePath:function(t){return t.getParam("images_upload_base_path",undefined,"string")},getUploadCredentials:function(t){return t.getParam("images_upload_credentials",!1,"boolean")}},Pt=function(t,e){function n(t){r.parentNode&&r.parentNode.removeChild(r),e(t)}var r=s.document.createElement("img");r.onload=function(){var t={width:j(r.width,r.clientWidth),height:j(r.height,r.clientHeight)};n(yt.value(t))},r.onerror=function(){n(yt.error("Failed to get image dimensions for: "+t))};var i=r.style;i.visibility="hidden",i.position="fixed",i.bottom=i.left="0px",i.width=i.height="auto",s.document.body.appendChild(r),r.src=t},Et=function(t){return t=t&&t.replace(/px$/,"")},Lt=function(t){return 0<t.length&&/^[0-9]+$/.test(t)&&(t+="px"),t},Nt=function(t){if(t.margin){var e=String(t.margin).split(" ");switch(e.length){case 1:t["margin-top"]=t["margin-top"]||e[0],t["margin-right"]=t["margin-right"]||e[0],t["margin-bottom"]=t["margin-bottom"]||e[0],t["margin-left"]=t["margin-left"]||e[0];break;case 2:t["margin-top"]=t["margin-top"]||e[0],t["margin-right"]=t["margin-right"]||e[1],t["margin-bottom"]=t["margin-bottom"]||e[0],t["margin-left"]=t["margin-left"]||e[1];break;case 3:t["margin-top"]=t["margin-top"]||e[0],t["margin-right"]=t["margin-right"]||e[1],t["margin-bottom"]=t["margin-bottom"]||e[2],t["margin-left"]=t["margin-left"]||e[1];break;case 4:t["margin-top"]=t["margin-top"]||e[0],t["margin-right"]=t["margin-right"]||e[1],t["margin-bottom"]=t["margin-bottom"]||e[2],t["margin-left"]=t["margin-left"]||e[3]}delete t.margin}return t},jt=function(t,e){var n=Ct.getImageList(t);"string"==typeof n?St.send({url:n,success:function(t){e(JSON.parse(t))}}):"function"==typeof n?n(e):e(n)},Rt=function(t,e,n){function r(){n.onload=n.onerror=null,t.selection&&(t.selection.select(n),t.nodeChanged())}n.onload=function(){e.width||e.height||!Ct.hasDimensions(t)||t.dom.setAttribs(n,{width:String(n.clientWidth),height:String(n.clientHeight)}),r()},n.onerror=r},Ft=function(r){return new It(function(t,e){var n=new s.FileReader;n.onload=function(){t(n.result)},n.onerror=function(){e(n.error.message)},n.readAsDataURL(r)})},kt=function(t){return"IMG"===t.nodeName&&(t.hasAttribute("data-mce-object")||t.hasAttribute("data-mce-placeholder"))},zt=At.DOM,Mt=function(t,e,n){var r=Y(t,n);tt(n,r,e,"caption",function(t,e,n){return G(t)}),tt(n,r,e,"src",B),tt(n,r,e,"alt",B),tt(n,r,e,"title",B),tt(n,r,e,"width",q(0,t)),tt(n,r,e,"height",q(0,t)),tt(n,r,e,"class",B),tt(n,r,e,"style",et(function(t,e){return B(t,"style",e)},t)),tt(n,r,e,"hspace",et(J,t)),tt(n,r,e,"vspace",et(V,t)),tt(n,r,e,"border",et(X,t)),tt(n,r,e,"borderStyle",et(Z,t))},Ht=tinymce.util.Tools.resolve("tinymce.util.Tools"),Bt=function(t,i){var o=[];return Ht.each(t,function(t){var e=T(t.text)?t.text:T(t.title)?t.title:"";if(t.menu!==undefined){var n=Bt(t.menu,i);o.push({text:e,items:n})}else{var r=i(t);o.push({text:e,value:r})}}),o},Gt=function(t,e){return function(t,e){for(var n=0;n<t.length;n++){var r=e(t[n],n);if(r.isSome())return r}return w.none()}(t,function(t){return function(t){return Object.prototype.hasOwnProperty.call(t,"items")}(t)?Gt(t.items,e):t.value===e?w.some(t):w.none()})},Wt=ct,qt=function(t){return ct(ut)(t)},$t=function(t,e){return t.bind(function(t){return Gt(t,e)})};function Jt(a){function e(t,e,n,r){var i,o;(i=new s.XMLHttpRequest).open("POST",a.url),i.withCredentials=a.credentials,i.upload.onprogress=function(t){r(t.loaded/t.total*100)},i.onerror=function(){n("Image upload failed due to a XHR Transport error. Code: "+i.status)},i.onload=function(){var t;i.status<200||300<=i.status?n("HTTP Error: "+i.status):(t=JSON.parse(i.responseText))&&"string"==typeof t.location?e(function(t,e){return t?t.replace(/\/$/,"")+"/"+e.replace(/^\//,""):e}(a.basePath,t.location)):n("Invalid JSON: "+i.responseText)},(o=new s.FormData).append("file",t.blob(),t.filename()),i.send(o)}return a=Ht.extend({credentials:!1,handler:e},a),{upload:function(t){return!a.url&&function(t){return t===e}(a.handler)?It.reject("Upload url missing from the settings."):function(r,i){return new It(function(t,e){try{i(r,t,e,o)}catch(n){e(n.message)}})}(t,a.handler)}}}function Vt(n){var r=Wt(function(t){return n.convertURL(t.value||t.url,"src")}),t=mt(function(e){jt(n,function(t){e(r(t).map(function(t){return v([[{text:"None",value:""}],t])}))})}),e=qt(Ct.getClassList(n)),i=Ct.hasAdvTab(n),o=Ct.hasUploadTab(n),a=Ct.hasUploadUrl(n),u=Ct.hasUploadHandler(n),c=function(e){var t=rt(e);return t?Y(function(t){return nt(e,t)},t):{src:"",alt:"",title:"",width:"",height:"","class":"",style:"",caption:!1,hspace:"",vspace:"",border:"",borderStyle:""}}(n),l=Ct.hasDescription(n),s=Ct.hasImageTitle(n),f=Ct.hasDimensions(n),d=Ct.hasImageCaption(n),m=Ct.getUploadUrl(n),p=Ct.getUploadBasePath(n),g=Ct.getUploadCredentials(n),h=Ct.getUploadHandler(n),y=w.some(Ct.getPrependUrl(n)).filter(function(t){return T(t)&&0<t.length});return t.map(function(t){return{image:c,imageList:t,classList:e,hasAdvTab:i,hasUploadTab:o,hasUploadUrl:a,hasUploadHandler:u,hasDescription:l,hasImageTitle:s,hasDimensions:f,hasImageCaption:d,url:m,basePath:p,credentials:g,handler:h,prependURL:y}})}function Xt(t){return{src:{value:t.src,meta:{}},images:t.src,alt:t.alt,title:t.title,dimensions:{width:t.width,height:t.height},classes:t["class"],caption:t.caption,style:t.style,vspace:t.vspace,border:t.border,hspace:t.hspace,borderstyle:t.borderStyle,fileinput:[]}}function Zt(t){return{src:t.src.value,alt:t.alt,title:t.title,width:t.dimensions.width,height:t.dimensions.height,"class":t.classes,style:t.style,caption:t.caption,hspace:t.hspace,vspace:t.vspace,border:t.border,borderStyle:t.borderstyle}}function Kt(t,e){var n=e.getData();(function(t,e){return/^(?:[a-zA-Z]+:)?\/\//.test(e)?w.none():t.prependURL.bind(function(t){return e.substring(0,t.length)!==t?w.some(t+e):w.none()})})(t,n.src.value).each(function(t){e.setData({src:{value:t,meta:n.src.meta}})})}function Qt(t,e){var n=e.getData(),r=n.src.meta;if(r!==undefined){var i=Tt({},n);!function(t,e,n){t.hasDescription&&T(n.alt)&&(e.alt=n.alt),t.hasImageTitle&&T(n.title)&&(e.title=n.title),t.hasDimensions&&(T(n.width)&&(e.dimensions.width=n.width),T(n.height)&&(e.dimensions.height=n.height)),T(n["class"])&&$t(t.classList,n["class"]).each(function(t){e.classes=t.value}),t.hasImageCaption&&x(n.caption)&&(e.caption=n.caption),t.hasAdvTab&&(T(n.vspace)&&(e.vspace=n.vspace),T(n.border)&&(e.border=n.border),T(n.hspace)&&(e.hspace=n.hspace),T(n.borderstyle)&&(e.borderstyle=n.borderstyle))}(t,i,r),e.setData(i)}}function Yt(t,e,n,r){Kt(e,r),Qt(e,r),function(t,e,n,r){var i=r.getData(),o=i.src.value,a=i.src.meta||{};a.width||a.height||!e.hasDimensions||t.imageSize(o).get(function(t){t.each(function(t){n.open&&r.setData({dimensions:t})})})}(t,e,n,r),function(t,e,n){var r=n.getData(),i=$t(t.imageList,r.src.value);e.prevImage=i,n.setData({images:i.map(function(t){return t.value}).getOr("")})}(e,n,r)}function te(t,e,n){var r=Nt(t(n.style)),i=Tt({},n);return i.vspace=function(t){return t["margin-top"]&&t["margin-bottom"]&&t["margin-top"]===t["margin-bottom"]?Et(String(t["margin-top"])):""}(r),i.hspace=function(t){return t["margin-right"]&&t["margin-left"]&&t["margin-right"]===t["margin-left"]?Et(String(t["margin-right"])):""}(r),i.border=function(t){return t["border-width"]?Et(String(t["border-width"])):""}(r),i.borderstyle=function(t){return t["border-style"]?String(t["border-style"]):""}(r),i.style=function(t,e,n){return e(t(e(n)))}(t,e,r),i}function ee(a,u,c,l){var t=l.getData();l.block("Uploading image"),function(t){return 0===t.length?w.none():w.some(t[0])}(t.fileinput).fold(function(){l.unblock()},function(n){function r(){l.unblock(),s.URL.revokeObjectURL(i)}var i=s.URL.createObjectURL(n),o=Jt({url:u.url,basePath:u.basePath,credentials:u.credentials,handler:u.handler});Ft(n).then(function(t){var e=a.createBlobCache(n,i,t);o.upload(e).then(function(t){l.setData({src:{value:t,meta:{}}}),l.showTab("general"),Yt(a,u,c,l),r()})["catch"](function(t){r(),a.alertErr(l,t)})})})}function ne(n,r,i){return function(t,e){"src"===e.name?Yt(n,r,i,t):"images"===e.name?function(t,e,n,r){var i=r.getData(),o=$t(e.imageList,i.images);o.each(function(t){""===i.alt||n.prevImage.map(function(t){return t.text===i.alt}).getOr(!1)?""===t.value?r.setData({src:t,alt:n.prevAlt}):r.setData({src:t,alt:t.text}):r.setData({src:t})}),n.prevImage=o,Yt(t,e,n,r)}(n,r,i,t):"alt"===e.name?i.prevAlt=t.getData().alt:"style"===e.name?function(t,e){var n=e.getData(),r=te(t.parseStyle,t.serializeStyle,n);e.setData(r)}(n,t):"vspace"===e.name||"hspace"===e.name||"border"===e.name||"borderstyle"===e.name?function(t,e,n){var r=Tt(Xt(e.image),n.getData()),i=Q(t.normalizeCss,Zt(r));n.setData({style:i})}(n,r,t):"fileinput"===e.name&&ee(n,r,i,t)}}function re(n){return function(t){var e=function(t){return{prevImage:$t(t.imageList,t.image.src),prevAlt:t.image.alt,open:!0}}(t);return{title:"Insert/Edit Image",size:"normal",body:function(t){return t.hasAdvTab||t.hasUploadUrl||t.hasUploadHandler?{type:"tabpanel",tabs:v([[Ut(t)],t.hasAdvTab?[ae(t)]:[],t.hasUploadTab&&(t.hasUploadUrl||t.hasUploadHandler)?[ue(t)]:[]])}:{type:"panel",items:xt(t)}}(t),buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:Xt(t.image),onSubmit:n.onSubmit(t),onChange:ne(n,t,e),onClose:function(t){return function(){t.open=!1}}(e)}}}function ie(e){var t={onSubmit:function(r){return function(n){return function(t){var e=Tt(Xt(n.image),t.getData());r.undoManager.transact(function(){at(r,Zt(e))}),r.editorUpload.uploadImagesAuto(),t.close()}}}(e),imageSize:function(e){return function(t){return bt(function(n){Pt(e.documentBaseURI.toAbsolute(t),function(t){var e=t.map(function(t){return{width:String(t.width),height:String(t.height)}});n(e)})})}}(e),createBlobCache:function(r){return function(t,e,n){return r.editorUpload.blobCache.create({blob:t,blobUri:e,name:t.name?t.name.replace(/\.[^\.]+$/,""):null,base64:n.split(",")[1]})}}(e),alertErr:function(n){return function(t,e){n.windowManager.alert(e,t.close)}}(e),normalizeCss:function(e){return function(t){return nt(e,t)}}(e),parseStyle:function(e){return function(t){return e.dom.parseStyle(t)}}(e),serializeStyle:function(n){return function(t,e){return n.dom.serializeStyle(t,e)}}(e)};return{open:function(){return Vt(e).map(re(t)).get(function(t){e.windowManager.open(t)})}}}function oe(o){return function(t){for(var e,n=t.length,r=function(t){t.attr("contenteditable",o?"true":null)};n--;){var i=t[n];void 0,(e=i.attr("class"))&&/\bimage\b/.test(e)&&(i.attr("contenteditable",o?"false":null),Ht.each(i.getAll("figcaption"),r))}}}var ae=function(t){return{title:"Advanced",name:"advanced",items:[{type:"input",label:"Style",name:"style"},{type:"grid",columns:2,items:[{type:"input",label:"Vertical space",name:"vspace",inputMode:"numeric"},{type:"input",label:"Horizontal space",name:"hspace",inputMode:"numeric"},{type:"input",label:"Border width",name:"border",inputMode:"numeric"},{type:"selectbox",name:"borderstyle",label:"Border style",items:[{text:"Select...",value:""},{text:"Solid",value:"solid"},{text:"Dotted",value:"dotted"},{text:"Dashed",value:"dashed"},{text:"Double",value:"double"},{text:"Groove",value:"groove"},{text:"Ridge",value:"ridge"},{text:"Inset",value:"inset"},{text:"Outset",value:"outset"},{text:"None",value:"none"},{text:"Hidden",value:"hidden"}]}]}]}},ue=function(t){return{title:"Upload",name:"upload",items:[{type:"dropzone",name:"fileinput"}]}},ce=function(t){t.addCommand("mceImage",ie(t).open)},le=function(t){t.on("PreInit",function(){t.parser.addNodeFilter("figure",oe(!0)),t.serializer.addNodeFilter("figure",oe(!1))})},se=function(e){e.ui.registry.addToggleButton("image",{icon:"image",tooltip:"Insert/edit image",onAction:ie(e).open,onSetup:function(t){return e.selection.selectorChangedWithUnbind("img:not([data-mce-object],[data-mce-placeholder]),figure.image",t.setActive).unbind}}),e.ui.registry.addMenuItem("image",{icon:"image",text:"Image...",onAction:ie(e).open}),e.ui.registry.addContextMenu("image",{update:function(t){return K(t)||function(t){return"IMG"===t.nodeName}(t)&&!kt(t)?["image"]:[]}})};!function fe(){r.add("image",function(t){le(t),se(t),ce(t)})}()}(window);
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/plugins/imagetools/plugin.min.js b/app/static/vendors/tinymce/js/tinymce/plugins/imagetools/plugin.min.js
deleted file mode 100644 (file)
index 839d61f..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.3 (2019-12-04)
- */
-!function(v){"use strict";function e(){}function n(){return c}var t,r=function(e){function n(){return t}var t=e;return{get:n,set:function(e){t=e},clone:function(){return r(n())}}},o=tinymce.util.Tools.resolve("tinymce.PluginManager"),i=tinymce.util.Tools.resolve("tinymce.util.Tools"),d=function(e){return function(){return e}},u=d(!1),a=d(!0),c=(t={fold:function(e,n){return e()},is:u,isSome:u,isNone:a,getOr:l,getOrThunk:f,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:d(null),getOrUndefined:d(undefined),or:l,orThunk:f,map:n,each:e,bind:n,exists:u,forall:a,filter:n,equals:s,equals_:s,toArray:function(){return[]},toString:d("none()")},Object.freeze&&Object.freeze(t),t);function s(e){return e.isNone()}function f(e){return e()}function l(e){return e}var m=function(t){function e(){return o}function n(e){return e(t)}var r=d(t),o={fold:function(e,n){return n(t)},is:function(e){return t===e},isSome:a,isNone:u,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:e,orThunk:e,map:function(e){return m(e(t))},each:function(e){e(t)},bind:n,exists:n,forall:n,filter:function(e){return e(t)?o:c},toArray:function(){return[t]},toString:function(){return"some("+t+")"},equals:function(e){return e.is(t)},equals_:function(e,n){return e.fold(u,function(e){return n(t,e)})}};return o},p={some:m,none:n,from:function(e){return null===e||e===undefined?c:m(e)}};function h(e,n){return y(v.document.createElement("canvas"),e,n)}function g(e){var n=h(e.width,e.height);return w(n).drawImage(e,0,0),n}function w(e){return e.getContext("2d")}function y(e,n,t){return e.width=n,e.height=t,e}var b,E,O=window.Promise?window.Promise:(b=T.immediateFn||"function"==typeof window.setImmediate&&window.setImmediate||function(e){v.setTimeout(e,1)},E=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},T.prototype["catch"]=function(e){return this.then(null,e)},T.prototype.then=function(t,r){var o=this;return new T(function(e,n){N.call(o,new R(t,r,e,n))})},T.all=function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];var c=Array.prototype.slice.call(1===e.length&&E(e[0])?e[0]:e);return new T(function(o,i){if(0===c.length)return o([]);var u=c.length;function a(n,e){try{if(e&&("object"==typeof e||"function"==typeof e)){var t=e.then;if("function"==typeof t)return void t.call(e,function(e){a(n,e)},i)}c[n]=e,0==--u&&o(c)}catch(r){i(r)}}for(var e=0;e<c.length;e++)a(e,c[e])})},T.resolve=function(n){return n&&"object"==typeof n&&n.constructor===T?n:new T(function(e){e(n)})},T.reject=function(t){return new T(function(e,n){n(t)})},T.race=function(o){return new T(function(e,n){for(var t=0,r=o;t<r.length;t++)r[t].then(e,n)})},T);function T(e){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof e)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],A(e,I(S,this),I(_,this))}function I(e,n){return function(){return e.apply(n,arguments)}}function N(r){var o=this;null!==this._state?b(function(){var e=o._state?r.onFulfilled:r.onRejected;if(null!==e){var n;try{n=e(o._value)}catch(t){return void r.reject(t)}r.resolve(n)}else(o._state?r.resolve:r.reject)(o._value)}):this._deferreds.push(r)}function S(e){try{if(e===this)throw new TypeError("A promise cannot be resolved with itself.");if(e&&("object"==typeof e||"function"==typeof e)){var n=e.then;if("function"==typeof n)return void A(I(n,e),I(S,this),I(_,this))}this._state=!0,this._value=e,x.call(this)}catch(t){_.call(this,t)}}function _(e){this._state=!1,this._value=e,x.call(this)}function x(){for(var e=0,n=this._deferreds;e<n.length;e++){var t=n[e];N.call(this,t)}this._deferreds=[]}function R(e,n,t,r){this.onFulfilled="function"==typeof e?e:null,this.onRejected="function"==typeof n?n:null,this.resolve=t,this.reject=r}function A(e,n,t){var r=!1;try{e(function(e){r||(r=!0,n(e))},function(e){r||(r=!0,t(e))})}catch(o){if(r)return;r=!0,t(o)}}function C(e){var n=e.src;return 0===n.indexOf("data:")?U(n):function t(r){return new O(function(e,t){var n=new v.XMLHttpRequest;n.open("GET",r,!0),n.responseType="blob",n.onload=function(){200===this.status&&e(this.response)},n.onerror=function(){var e,n=this;t(0===this.status?((e=new Error("No access to download image")).code=18,e.name="SecurityError",e):new Error("Error "+n.status+" downloading image"))},n.send()})}(n)}function D(a){return new O(function(e,n){var t=v.URL.createObjectURL(a),r=new v.Image,o=function(){r.removeEventListener("load",i),r.removeEventListener("error",u)};function i(){o(),e(r)}function u(){o(),n("Unable to load data of type "+a.type+": "+t)}r.addEventListener("load",i),r.addEventListener("error",u),r.src=t,r.complete&&i()})}function U(t){return new O(function(e,n){(function g(e){var n=e.split(","),t=/data:([^;]+)/.exec(n[0]);if(!t)return p.none();for(var r=t[1],o=n[1],i=v.atob(o),u=i.length,a=Math.ceil(u/1024),c=new Array(a),s=0;s<a;++s){for(var f=1024*s,l=Math.min(1024+f,u),d=new Array(l-f),m=f,h=0;m<l;++h,++m)d[h]=i[m].charCodeAt(0);c[s]=new Uint8Array(d)}return p.some(new v.Blob(c,{type:r}))})(t).fold(function(){n("uri is not base64: "+t)},e)})}function L(e,r,o){return r=r||"image/png",v.HTMLCanvasElement.prototype.toBlob?new O(function(n,t){e.toBlob(function(e){e?n(e):t()},r,o)}):U(e.toDataURL(r,o))}function k(e){return D(e).then(function(e){!function t(e){v.URL.revokeObjectURL(e.src)}(e);var n=h(function r(e){return e.naturalWidth||e.width}(e),function o(e){return e.naturalHeight||e.height}(e));return w(n).drawImage(e,0,0),n})}function j(e,n,t){var r=n.type;function o(n,t){return e.then(function(e){return function r(e,n,t){return n=n||"image/png",e.toDataURL(n,t)}(e,n,t)})}return{getType:d(r),toBlob:function i(){return O.resolve(n)},toDataURL:function u(){return t},toBase64:function a(){return t.split(",")[1]},toAdjustedBlob:function c(n,t){return e.then(function(e){return L(e,n,t)})},toAdjustedDataURL:o,toAdjustedBase64:function s(e,n){return o(e,n).then(function(e){return e.split(",")[1]})},toCanvas:function f(){return e.then(g)}}}function P(n){return function e(t){return new O(function(e){var n=new v.FileReader;n.onloadend=function(){e(n.result)},n.readAsDataURL(t)})}(n).then(function(e){return j(k(n),n,e)})}function M(n,e){return L(n,e).then(function(e){return j(O.resolve(n),e,n.toDataURL())})}function B(n,t){return n.toCanvas().then(function(e){return function a(e,n,t){var r=h(e.width,e.height),o=w(r),i=0,u=0;90!==(t=t<0?360+t:t)&&270!==t||y(r,r.height,r.width);90!==t&&180!==t||(i=r.width);270!==t&&180!==t||(u=r.height);return o.translate(i,u),o.rotate(t*Math.PI/180),o.drawImage(e,0,0),M(r,n)}(e,n.getType(),t)})}function F(n,t){return n.toCanvas().then(function(e){return function i(e,n,t){var r=h(e.width,e.height),o=w(r);"v"===t?(o.scale(1,-1),o.drawImage(e,0,-r.height)):(o.scale(-1,1),o.drawImage(e,-r.width,0));return M(r,n)}(e,n.getType(),t)})}function z(e){return P(e)}var H=tinymce.util.Tools.resolve("tinymce.util.Delay"),q=tinymce.util.Tools.resolve("tinymce.util.Promise"),$=tinymce.util.Tools.resolve("tinymce.util.URI");function X(e,n){for(var t=0,r=e.length;t<r;t++){var o=e[t];if(n(o,t))return p.some(o)}return p.none()}function W(e){return null!==e&&e!==undefined}function G(n){return"ImageProxy HTTP error: "+X(ue,function(e){return n===e.code}).fold(d("Unknown ImageProxy error"),function(e){return e.message})}function Y(e){var n=G(e);return q.reject(n)}function V(n){return X(ae,function(e){return e.type===n}).fold(d("Unknown service error"),function(e){return e.message})}function J(e,n){return re(n).then(function(e){var n=function(e){var n=ie(e),t=te(n,["error","type"]);return"ImageProxy Service error: "+(t?V(t):"Invalid JSON in service error message")}(e);return q.reject(n)})}function K(e,n){var t={"Content-Type":"application/json;charset=UTF-8","tiny-api-key":n};return oe(function(e,n){var t=-1===e.indexOf("?")?"?":"&";return/[?&]apiKey=/.test(e)||!n?e:e+t+"apiKey="+encodeURIComponent(n)}(e,n),t,!1).then(function(e){return e.status<200||300<=e.status?ce(e.status,e.blob):q.resolve(e.blob)})}var Q,Z={getImageSize:function wn(e){var n,t;function r(e){return/^[0-9\.]+px$/.test(e)}return n=e.style.width,t=e.style.height,n||t?r(n)&&r(t)?{w:parseInt(n,10),h:parseInt(t,10)}:null:(n=e.width,t=e.height,n&&t?{w:parseInt(n,10),h:parseInt(t,10)}:null)},setImageSize:function yn(e,n){var t,r;n&&(t=e.style.width,r=e.style.height,(t||r)&&(e.style.width=n.w+"px",e.style.height=n.h+"px",e.removeAttribute("data-mce-style")),t=e.width,r=e.height,(t||r)&&(e.setAttribute("width",n.w),e.setAttribute("height",n.h)))},getNaturalImageSize:function bn(e){return{w:e.naturalWidth,h:e.naturalHeight}}},ee=(Q="function",function(e){return function(e){if(null===e)return"null";var n=typeof e;return"object"==n&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"==n&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":n}(e)===Q}),ne=Array.prototype.slice,te=(ee(Array.from)&&Array.from,function(e,n){var t;return t=n.reduce(function(e,n){return W(e)?e[n]:undefined},e),W(t)?t:null}),re=function(n){return new q(function(t){var e=new v.FileReader;e.onload=function(e){var n=e.target;t(n.result)},e.readAsText(n)})},oe=function(n,r,o){return new q(function(e){var t;(t=new v.XMLHttpRequest).onreadystatechange=function(){4===t.readyState&&e({status:t.status,blob:this.response})},t.open("GET",n,!0),t.withCredentials=o,i.each(r,function(e,n){t.setRequestHeader(n,e)}),t.responseType="blob",t.send()})},ie=function(e){var n;try{n=JSON.parse(e)}catch(t){}return n},ue=[{code:404,message:"Could not find Image Proxy"},{code:403,message:"Rejected request"},{code:0,message:"Incorrect Image Proxy URL"}],ae=[{type:"key_missing",message:"The request did not include an api key."},{type:"key_not_found",message:"The provided api key could not be found."},{type:"domain_not_trusted",message:"The api key is not valid for the request origins."}],ce=function(e,n){return function(e){return 400===e||403===e||500===e}(e)?J(0,n):Y(e)},se=Y;function fe(e,n,t){return n?K(e,n):function r(e,n){return oe(e,{},n).then(function(e){return e.status<200||300<=e.status?se(e.status):q.resolve(e.blob)})}(e,t)}function le(e,n,t){return 0!=(e.compareDocumentPosition(n)&t)}function de(e,n){var t=function(e,n){for(var t=0;t<e.length;t++){var r=e[t];if(r.test(n))return r}return undefined}(e,n);if(!t)return{major:0,minor:0};function r(e){return Number(n.replace(t,"$"+e))}return Ce(r(1),r(2))}function me(e,n){return function(){return n===e}}function he(e,n){return function(){return n===e}}function ge(e,n){var t=String(n).toLowerCase();return X(e,function(e){return e.search(t)})}function ve(e,n){return-1!==e.indexOf(n)}function pe(n){return function(e){return ve(e,n)}}function we(e,n){return function(e,n){return X(e.dom().childNodes,function(e){return n(Je.fromDom(e))}).map(Je.fromDom)}(e,function(e){return function(e,n){var t=e.dom();if(t.nodeType!==Qe)return!1;var r=t;if(r.matches!==undefined)return r.matches(n);if(r.msMatchesSelector!==undefined)return r.msMatchesSelector(n);if(r.webkitMatchesSelector!==undefined)return r.webkitMatchesSelector(n);if(r.mozMatchesSelector!==undefined)return r.mozMatchesSelector(n);throw new Error("Browser lacks native selectors")}(e,n)})}function ye(e){return we(Je.fromDom(e),"img")}function be(e,n){return e.dom.is(n,"figure")}function Ee(e,n){e.notificationManager.open({text:n,type:"error"})}function Oe(e){var n=e.selection.getNode();return be(e,n)?ye(n):p.some(Je.fromDom(n))}function Te(e,n){var t,r=n.src;return nn(e,n)?fe(n.src,null,function(e,n){return-1!==i.inArray(function(e){return e.getParam("imagetools_credentials_hosts",[],"string[]")}(e),new $(n.src).host)}(e,n)):en(e,n)?function(e){return C(e)}(n):(r=function(e){return e.getParam("imagetools_proxy")}(e),r+=(-1===r.indexOf("?")?"?":"&")+"url="+encodeURIComponent(n.src),t=function(e){return e.getParam("api_key",e.getParam("imagetools_api_key","","string"),"string")}(e),fe(r,t,!1))}function Ie(e,n){return function(e){return p.from(e.getParam("imagetools_fetch_image",null,"function"))}(e).fold(function(){return Te(e,n)},function(e){return e(n)})}function Ne(e,n){var t;return(t=e.editorUpload.blobCache.getByUri(n.src))?q.resolve(t.blob()):Ie(e,n)}function Se(e){H.clearTimeout(e.get())}function _e(i,u,a,c,s,f){return u.toBlob().then(function(e){var n,t,r,o;return r=i.editorUpload.blobCache,n=s.src,function(e){return e.getParam("images_reuse_filename",!1,"boolean")}(i)&&(t=(o=r.getByUri(n))?(n=o.uri(),o.name()):function(e,n){var t=n.match(/\/([^\/\?]+)?\.(?:jpeg|jpg|png|gif)(?:\?|$)/i);return t?e.dom.encode(t[1]):null}(i,n)),o=r.create({id:"imagetools"+Ze++,blob:e,base64:u.toBase64(),uri:n,name:t}),r.add(o),i.undoManager.transact(function(){i.$(s).on("load",function e(){i.$(s).off("load",e),i.nodeChanged(),a?i.editorUpload.uploadImagesAuto():(Se(c),function(e,n){var t=H.setEditorTimeout(e,function(){e.editorUpload.uploadImagesAuto()},function(e){return e.getParam("images_upload_timeout",3e4,"number")}(e));n.set(t)}(i,c))}),f&&i.$(s).attr({width:f.w,height:f.h}),i.$(s).attr({src:o.blobUri()}).removeAttr("data-mce-src")}),o})}function xe(t,r,e,o){return function(){return Oe(t).fold(function(){Ee(t,"Could not find selected image")},function(n){return t._scanForImages().then(function(){return Ne(t,n.dom())}).then(z).then(e).then(function(e){return _e(t,e,!1,r,n.dom(),o)},function(e){Ee(t,e)})})}}var Re=function(e,n){return le(e,n,v.Node.DOCUMENT_POSITION_CONTAINED_BY)},Ae=function(){return Ce(0,0)},Ce=function(e,n){return{major:e,minor:n}},De={nu:Ce,detect:function(e,n){var t=String(n).toLowerCase();return 0===e.length?Ae():de(e,t)},unknown:Ae},Ue="Firefox",Le=function(e){var n=e.current;return{current:n,version:e.version,isEdge:me("Edge",n),isChrome:me("Chrome",n),isIE:me("IE",n),isOpera:me("Opera",n),isFirefox:me(Ue,n),isSafari:me("Safari",n)}},ke={unknown:function(){return Le({current:undefined,version:De.unknown()})},nu:Le,edge:d("Edge"),chrome:d("Chrome"),ie:d("IE"),opera:d("Opera"),firefox:d(Ue),safari:d("Safari")},je="Windows",Pe="Android",Me="Solaris",Be="FreeBSD",Fe=function(e){var n=e.current;return{current:n,version:e.version,isWindows:he(je,n),isiOS:he("iOS",n),isAndroid:he(Pe,n),isOSX:he("OSX",n),isLinux:he("Linux",n),isSolaris:he(Me,n),isFreeBSD:he(Be,n)}},ze={unknown:function(){return Fe({current:undefined,version:De.unknown()})},nu:Fe,windows:d(je),ios:d("iOS"),android:d(Pe),linux:d("Linux"),osx:d("OSX"),solaris:d(Me),freebsd:d(Be)},He=function(e,t){return ge(e,t).map(function(e){var n=De.detect(e.versionRegexes,t);return{current:e.name,version:n}})},qe=function(e,t){return ge(e,t).map(function(e){var n=De.detect(e.versionRegexes,t);return{current:e.name,version:n}})},$e=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,Xe=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(e){return ve(e,"edge/")&&ve(e,"chrome")&&ve(e,"safari")&&ve(e,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,$e],search:function(e){return ve(e,"chrome")&&!ve(e,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(e){return ve(e,"msie")||ve(e,"trident")}},{name:"Opera",versionRegexes:[$e,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:pe("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:pe("firefox")},{name:"Safari",versionRegexes:[$e,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(e){return(ve(e,"safari")||ve(e,"mobile/"))&&ve(e,"applewebkit")}}],We=[{name:"Windows",search:pe("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(e){return ve(e,"iphone")||ve(e,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:pe("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:pe("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:pe("linux"),versionRegexes:[]},{name:"Solaris",search:pe("sunos"),versionRegexes:[]},{name:"FreeBSD",search:pe("freebsd"),versionRegexes:[]}],Ge={browsers:d(Xe),oses:d(We)},Ye=r(function(e,n){var t=Ge.browsers(),r=Ge.oses(),o=He(t,e).fold(ke.unknown,ke.nu),i=qe(r,e).fold(ze.unknown,ze.nu);return{browser:o,os:i,deviceType:function(e,n,t,r){var o=e.isiOS()&&!0===/ipad/i.test(t),i=e.isiOS()&&!o,u=e.isiOS()||e.isAndroid(),a=u||r("(pointer:coarse)"),c=o||!i&&u&&r("(min-device-width:768px)"),s=i||u&&!c,f=n.isSafari()&&e.isiOS()&&!1===/safari/i.test(t),l=!s&&!c&&!f;return{isiPad:d(o),isiPhone:d(i),isTablet:d(c),isPhone:d(s),isTouch:d(a),isAndroid:e.isAndroid,isiOS:e.isiOS,isWebView:d(f),isDesktop:d(l)}}(i,o,e,n)}}(v.navigator.userAgent,function(e){return v.window.matchMedia(e).matches})),Ve=function(e){if(null===e||e===undefined)throw new Error("Node cannot be null or undefined");return{dom:d(e)}},Je={fromHtml:function(e,n){var t=(n||v.document).createElement("div");if(t.innerHTML=e,!t.hasChildNodes()||1<t.childNodes.length)throw v.console.error("HTML does not have a single root node",e),new Error("HTML must have a single root node");return Ve(t.childNodes[0])},fromTag:function(e,n){var t=(n||v.document).createElement(e);return Ve(t)},fromText:function(e,n){var t=(n||v.document).createTextNode(e);return Ve(t)},fromDom:Ve,fromPoint:function(e,n,t){var r=e.dom();return p.from(r.elementFromPoint(n,t)).map(Ve)}},Ke=(v.Node.ATTRIBUTE_NODE,v.Node.CDATA_SECTION_NODE,v.Node.COMMENT_NODE,v.Node.DOCUMENT_NODE,v.Node.DOCUMENT_TYPE_NODE,v.Node.DOCUMENT_FRAGMENT_NODE,v.Node.ELEMENT_NODE),Qe=(v.Node.TEXT_NODE,v.Node.PROCESSING_INSTRUCTION_NODE,v.Node.ENTITY_REFERENCE_NODE,v.Node.ENTITY_NODE,v.Node.NOTATION_NODE,Ke),Ze=(Ye.get().browser.isIE(),"undefined"!=typeof v.window?v.window:Function("return this;")(),0),en=function(e,n){var t=n.src;return 0===t.indexOf("data:")||0===t.indexOf("blob:")||new $(t).host===e.documentBaseURI.host},nn=function(e,n){return-1!==i.inArray(function(e){return e.getParam("imagetools_cors_hosts",[],"string[]")}(e),new $(n.src).host)},tn=function(n,t,r){return function(){var e=Oe(n).fold(function(){return null},function(e){var n=Z.getImageSize(e.dom());return n?{w:n.h,h:n.w}:null});return xe(n,t,function(e){return function(e,n){return B(e,n)}(e,r)},e)()}},rn=function(e,n,t){return function(){return xe(e,n,function(e){return function(e,n){return F(e,n)}(e,t)})()}},on=function(n,e){function t(e){return function(e){return n.dom.is(e,"img:not([data-mce-object],[data-mce-placeholder])")}(e)&&(en(n,e)||nn(n,e)||n.settings.imagetools_proxy)}return be(n,e)?ye(e).map(function(e){return t(e.dom())?p.some(e.dom()):p.none()}):t(e)?p.some(e):p.none()},un=Se,an=Ne,cn=Oe,sn=function(n,t,r,o,i){return new q(function(e){(function(e){return D(e)})(i).then(function(e){var n=Z.getNaturalImageSize(e);return o.w===n.w&&o.h===n.h||Z.getImageSize(r)&&Z.setImageSize(r,n),v.URL.revokeObjectURL(e.src),i}).then(z).then(function(e){return _e(n,e,!0,t,r)},function(){})})},fn=d("save-state"),ln=d("disable"),dn=d("enable"),mn=function(i,u){return function(){var r=cn(i),o=r.map(function(e){return Z.getNaturalImageSize(e.dom())});cn(i).each(function(n){on(i,n.dom()).each(function(e){an(i,n.dom()).then(function(e){var n=function(e){return{blob:e,url:v.URL.createObjectURL(e)}}(e);i.windowManager.open(function(e){return{title:"Edit Image",size:"large",body:{type:"panel",items:[{type:"imagetools",name:"imagetools",label:"Edit Image",currentState:e}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0,disabled:!0}],onSubmit:function(e){var t=e.getData().imagetools.blob;r.each(function(n){o.each(function(e){sn(i,u,n.dom(),e,t)})}),e.close()},onCancel:function(){},onAction:function(e,n){switch(n.name){case fn():n.value?e.enable("save"):e.disable("save");break;case ln():e.disable("save"),e.disable("cancel");break;case dn():e.enable("cancel")}}}}(n))})})})}},hn=function(t,e){i.each({mceImageRotateLeft:tn(t,e,-90),mceImageRotateRight:tn(t,e,90),mceImageFlipVertical:rn(t,e,"v"),mceImageFlipHorizontal:rn(t,e,"h"),mceEditImage:mn(t,e)},function(e,n){t.addCommand(n,e)})},gn=function(t,r,o){t.on("NodeChange",function(e){var n=o.get();n&&n.src!==e.element.src&&(un(r),t.editorUpload.uploadImagesAuto(),o.set(null)),on(t,e.element).each(o.set)})},vn=function(r){function n(e){return function(){return r.execCommand(e)}}r.ui.registry.addButton("rotateleft",{tooltip:"Rotate counterclockwise",icon:"rotate-left",onAction:n("mceImageRotateLeft")}),r.ui.registry.addButton("rotateright",{tooltip:"Rotate clockwise",icon:"rotate-right",onAction:n("mceImageRotateRight")}),r.ui.registry.addButton("flipv",{tooltip:"Flip vertically",icon:"flip-vertically",onAction:n("mceImageFlipVertical")}),r.ui.registry.addButton("fliph",{tooltip:"Flip horizontally",icon:"flip-horizontally",onAction:n("mceImageFlipHorizontal")}),r.ui.registry.addButton("editimage",{tooltip:"Edit image",icon:"edit-image",onAction:n("mceEditImage"),onSetup:function(t){function e(){cn(r).each(function(e){var n=on(r,e.dom()).isNone();t.setDisabled(n)})}return r.on("NodeChange",e),function(){r.off("NodeChange",e)}}}),r.ui.registry.addButton("imageoptions",{tooltip:"Image options",icon:"image-options",onAction:n("mceImage")}),r.ui.registry.addContextMenu("imagetools",{update:function(e){return on(r,e).fold(function(){return[]},function(e){return[{text:"Edit image",icon:"edit-image",onAction:n("mceEditImage")}]})}})},pn=function(n){n.ui.registry.addContextToolbar("imagetools",{items:function(e){return e.getParam("imagetools_toolbar","rotateleft rotateright flipv fliph editimage imageoptions")}(n),predicate:function(e){return on(n,e).isSome()},position:"node",scope:"node"})};!function En(){o.add("imagetools",function(e){var n=r(0),t=r(null);hn(e,n),vn(e),pn(e),gn(e,n,t)})}()}(window);
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/plugins/importcss/plugin.min.js b/app/static/vendors/tinymce/js/tinymce/plugins/importcss/plugin.min.js
deleted file mode 100644 (file)
index 96d17f7..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.3 (2019-12-04)
- */
-!function(){"use strict";function t(){}function n(t){return function(){return t}}function e(){return h}var r,o=tinymce.util.Tools.resolve("tinymce.PluginManager"),a=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),f=tinymce.util.Tools.resolve("tinymce.EditorManager"),l=tinymce.util.Tools.resolve("tinymce.Env"),m=tinymce.util.Tools.resolve("tinymce.util.Tools"),c=function(t){return t.getParam("importcss_merge_classes")},i=function(t){return t.getParam("importcss_exclusive")},p=function(t){return t.getParam("importcss_selector_converter")},g=function(t){return t.getParam("importcss_selector_filter")},y=function(t){return t.getParam("importcss_groups")},v=function(t){return t.getParam("importcss_append")},d=function(t){return t.getParam("importcss_file_filter")},u=n(!1),s=n(!0),h=(r={fold:function(t,n){return t()},is:u,isSome:u,isNone:s,getOr:O,getOrThunk:x,getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:n(null),getOrUndefined:n(undefined),or:O,orThunk:x,map:e,each:t,bind:e,exists:u,forall:s,filter:e,equals:_,equals_:_,toArray:function(){return[]},toString:n("none()")},Object.freeze&&Object.freeze(r),r);function _(t){return t.isNone()}function x(t){return t()}function O(t){return t}function T(n){return function(t){return function(t){if(null===t)return"null";var n=typeof t;return"object"==n&&(Array.prototype.isPrototypeOf(t)||t.constructor&&"Array"===t.constructor.name)?"array":"object"==n&&(String.prototype.isPrototypeOf(t)||t.constructor&&"String"===t.constructor.name)?"string":n}(t)===n}}function b(t,n){return function(t){for(var n=[],e=0,r=t.length;e<r;++e){if(!w(t[e]))throw new Error("Arr.flatten item "+e+" was not an array, input: "+t);M.apply(n,t[e])}return n}(function(t,n){for(var e=t.length,r=new Array(e),o=0;o<e;o++){var i=t[o];r[o]=n(i,o)}return r}(t,n))}function k(n){return"string"==typeof n?function(t){return-1!==t.indexOf(n)}:n instanceof RegExp?function(t){return n.test(t)}:n}function S(i,t,u){var c=[],e={};function s(t,n){var e,r=t.href;if((r=function(t){var n=l.cacheSuffix;return"string"==typeof t&&(t=t.replace("?"+n,"").replace("&"+n,"")),t}(r))&&u(r,n)&&!function(t,n){var e=t.settings,r=!1!==e.skin&&(e.skin||"oxide");if(r){var o=e.skin_url?t.documentBaseURI.toAbsolute(e.skin_url):f.baseURL+"/skins/ui/"+r,i=f.baseURL+"/skins/content/";return n===o+"/content"+(t.inline?".inline":"")+".min.css"||-1!==n.indexOf(i)}return!1}(i,r)){m.each(t.imports,function(t){s(t,!0)});try{e=t.cssRules||t.rules}catch(o){}m.each(e,function(t){t.styleSheet?s(t.styleSheet,!0):t.selectorText&&m.each(t.selectorText.split(","),function(t){c.push(m.trim(t))})})}}m.each(i.contentCSS,function(t){e[t]=!0}),u=u||function(t,n){return n||e[t]};try{m.each(t.styleSheets,function(t){s(t)})}catch(n){}return c}function A(t,n){var e,r=/^(?:([a-z0-9\-_]+))?(\.[a-z0-9_\-\.]+)$/i.exec(n);if(r){var o=r[1],i=r[2].substr(1).split(".").join(" "),u=m.makeMap("a,img");return r[1]?(e={title:n},t.schema.getTextBlockElements()[o]?e.block=o:t.schema.getBlockElements()[o]||u[o.toLowerCase()]?e.selector=o:e.inline=o):r[2]&&(e={inline:"span",title:n.substr(1),classes:i}),!1!==c(t)?e.classes=i:e.attributes={"class":i},e}}function P(t,n){return null===n||!1!==i(t)}var w=T("array"),E=T("function"),I=Array.prototype.slice,M=Array.prototype.push,j=(E(Array.from)&&Array.from,A),D=function(s){s.on("init",function(t){function r(t,n){if(function(t,n,e,r){return!(P(t,e)?n in r:n in e.selectors)}(s,t,n,i)){!function(t,n,e,r){P(t,e)?r[n]=!0:e.selectors[n]=!0}(s,t,n,i);var e=function(t,n,e,r){return(r&&r.selector_converter?r.selector_converter:p(t)?p(t):function(){return A(t,e)}).call(n,e,r)}(s,s.plugins.importcss,t,n);if(e){var r=e.name||a.DOM.uniqueId();return s.formatter.register(r,e),m.extend({},{title:e.title,format:r})}}return null}var o=function(){var n=[],e=[],r={};return{addItemToGroup:function(t,n){r[t]?r[t].push(n):(e.push(t),r[t]=[n])},addItem:function(t){n.push(t)},toFormats:function(){return b(e,function(t){var n=r[t];return 0===n.length?[]:[{title:t,items:n}]}).concat(n)}}}(),i={},u=k(g(s)),c=function(t){return m.map(t,function(t){return m.extend({},t,{original:t,selectors:{},filter:k(t.filter),item:{text:t.title,menu:[]}})})}(y(s));m.each(S(s,s.getDoc(),k(d(s))),function(e){if(-1===e.indexOf(".mce-")&&(!u||u(e))){var t=function(t,n){return m.grep(t,function(t){return!t.filter||t.filter(n)})}(c,e);if(0<t.length)m.each(t,function(t){var n=r(e,t);n&&o.addItemToGroup(t.title,n)});else{var n=r(e,null);n&&o.addItem(n)}}});var n=o.toFormats();s.fire("addStyleModifications",{items:n,replace:!v(s)})})},R=function(n){return{convertSelectorToFormat:function(t){return j(n,t)}}};!function U(){o.add("importcss",function(t){return D(t),R(t)})}()}();
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/plugins/insertdatetime/plugin.min.js b/app/static/vendors/tinymce/js/tinymce/plugins/insertdatetime/plugin.min.js
deleted file mode 100644 (file)
index 6012883..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.3 (2019-12-04)
- */
-!function(){"use strict";function n(e){return e.getParam("insertdatetime_timeformat",e.translate("%H:%M:%S"))}function r(e){return e.getParam("insertdatetime_formats",["%H:%M:%S","%Y-%m-%d","%I:%M:%S %p","%D"])}function a(e,t){if((e=""+e).length<t)for(var n=0;n<t-e.length;n++)e="0"+e;return e}function i(e,t,n){return n=n||new Date,t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=t.replace("%D","%m/%d/%Y")).replace("%r","%I:%M:%S %p")).replace("%Y",""+n.getFullYear())).replace("%y",""+n.getYear())).replace("%m",a(n.getMonth()+1,2))).replace("%d",a(n.getDate(),2))).replace("%H",""+a(n.getHours(),2))).replace("%M",""+a(n.getMinutes(),2))).replace("%S",""+a(n.getSeconds(),2))).replace("%I",""+((n.getHours()+11)%12+1))).replace("%p",n.getHours()<12?"AM":"PM")).replace("%B",""+e.translate(f[n.getMonth()]))).replace("%b",""+e.translate(d[n.getMonth()]))).replace("%A",""+e.translate(s[n.getDay()]))).replace("%a",""+e.translate(l[n.getDay()]))).replace("%%","%")}var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=function(e){return e.getParam("insertdatetime_dateformat",e.translate("%Y-%m-%d"))},o=n,u=r,c=function(e){var t=r(e);return 0<t.length?t[0]:n(e)},m=function(e){return e.getParam("insertdatetime_element",!1)},l="Sun Mon Tue Wed Thu Fri Sat Sun".split(" "),s="Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday".split(" "),d="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),f="January February March April May June July August September October November December".split(" "),p=function(e,t){if(m(e)){var n=i(e,t),r=void 0;r=/%[HMSIp]/.test(t)?i(e,"%Y-%m-%dT%H:%M"):i(e,"%Y-%m-%d");var a=e.dom.getParent(e.selection.getStart(),"time");a?function(e,t,n,r){var a=e.dom.create("time",{datetime:n},r);t.parentNode.insertBefore(a,t),e.dom.remove(t),e.selection.select(a,!0),e.selection.collapse(!1)}(e,a,r,n):e.insertContent('<time datetime="'+r+'">'+n+"</time>")}else e.insertContent(i(e,t))},g=i,y=function(e){e.addCommand("mceInsertDate",function(){p(e,t(e))}),e.addCommand("mceInsertTime",function(){p(e,o(e))})},M=tinymce.util.Tools.resolve("tinymce.util.Tools"),S=function(e){function t(){return n}var n=e;return{get:t,set:function(e){n=e},clone:function(){return S(t())}}},v=function(n){var t=u(n),r=S(c(n));n.ui.registry.addSplitButton("insertdatetime",{icon:"insert-time",tooltip:"Insert date/time",select:function(e){return e===r.get()},fetch:function(e){e(M.map(t,function(e){return{type:"choiceitem",text:g(n,e),value:e}}))},onAction:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];p(n,r.get())},onItemAction:function(e,t){r.set(t),p(n,t)}});n.ui.registry.addNestedMenuItem("insertdatetime",{icon:"insert-time",text:"Date/time",getSubmenuItems:function(){return M.map(t,function(e){return{type:"menuitem",text:g(n,e),onAction:function(e){return function(){r.set(e),p(n,e)}}(e)}})}})};!function h(){e.add("insertdatetime",function(e){y(e),v(e)})}()}();
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/plugins/legacyoutput/plugin.min.js b/app/static/vendors/tinymce/js/tinymce/plugins/legacyoutput/plugin.min.js
deleted file mode 100644 (file)
index 3fb21b6..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.3 (2019-12-04)
- */
-!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),a=tinymce.util.Tools.resolve("tinymce.util.Tools"),t=function(e){return e.getParam("font_formats")},i=function(e){return e.getParam("fontsize_formats")},n=function(e,t){e.settings.fontsize_formats=t},l=function(e,t){e.settings.font_formats=t},s=function(e){return e.getParam("font_size_style_values","xx-small,x-small,small,medium,large,x-large,xx-large")},o=function(e,t){e.settings.inline_styles=t},r=function(e){!function(e){o(e,!1),i(e)||n(e,"8pt=1 10pt=2 12pt=3 14pt=4 18pt=5 24pt=6 36pt=7"),t(e)||l(e,"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),e.on("init",function(){return function(e){var t="p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table",i=a.explode(s(e)),n=e.schema;e.formatter.register({alignleft:{selector:t,attributes:{align:"left"}},aligncenter:{selector:t,attributes:{align:"center"}},alignright:{selector:t,attributes:{align:"right"}},alignjustify:{selector:t,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",toggle:!1,attributes:{face:"%value"}},fontsize:{inline:"font",toggle:!1,attributes:{size:function(e){return a.inArray(i,e.value)+1}}},forecolor:{inline:"font",attributes:{color:"%value"},links:!0,remove_similar:!0,clear_child_styles:!0},hilitecolor:{inline:"font",styles:{backgroundColor:"%value"},links:!0,remove_similar:!0,clear_child_styles:!0}}),a.each("b,i,u,strike".split(","),function(e){n.addValidElements(e+"[*]")}),n.getElementRule("font")||n.addValidElements("font[face|size|color|style]"),a.each(t.split(","),function(e){var t=n.getElementRule(e);t&&(t.attributes.align||(t.attributes.align={},t.attributesOrder.push("align")))})}(e)})};!function c(){e.add("legacyoutput",function(e){r(e)})}()}();
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/plugins/link/plugin.min.js b/app/static/vendors/tinymce/js/tinymce/plugins/link/plugin.min.js
deleted file mode 100644 (file)
index ce9b761..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.3 (2019-12-04)
- */
-!function(c){"use strict";function n(t){return function(n){return function(n){if(null===n)return"null";var t=typeof n;return"object"==t&&(Array.prototype.isPrototypeOf(n)||n.constructor&&"Array"===n.constructor.name)?"array":"object"==t&&(String.prototype.isPrototypeOf(n)||n.constructor&&"String"===n.constructor.name)?"string":t}(n)===t}}function u(){}function i(n){return function(){return n}}function t(){return A}var e,r=tinymce.util.Tools.resolve("tinymce.PluginManager"),o=tinymce.util.Tools.resolve("tinymce.util.VK"),a=n("string"),f=n("array"),l=n("boolean"),s=n("function"),d=function(n){var t=n.getParam("link_assume_external_targets",!1);return l(t)&&t?1:!a(t)||"http"!==t&&"https"!==t?0:t},m=function(n){return n.getParam("link_context_toolbar",!1,"boolean")},h=function(n){return n.getParam("link_list")},p=function(n){return n.getParam("default_link_target")},g=function(n){return n.getParam("target_list",!0)},v=function(n){return n.getParam("rel_list",[],"array")},y=function(n){return n.getParam("link_class_list",[],"array")},w=function(n){return n.getParam("link_title",!0,"boolean")},x=function(n){return n.getParam("allow_unsafe_link_target",!1,"boolean")},k=function(n){return n.getParam("link_quicklink",!1,"boolean")},b=function(n){var t=c.document.createElement("a");t.target="_blank",t.href=n,t.rel="noreferrer noopener";var e=c.document.createEvent("MouseEvents");e.initMouseEvent("click",!0,!0,c.window,0,0,0,0,0,!1,!1,!1,!1,0,null),function(n,t){c.document.body.appendChild(n),n.dispatchEvent(t),c.document.body.removeChild(n)}(t,e)},_=function(){return(_=Object.assign||function(n){for(var t,e=1,r=arguments.length;e<r;e++)for(var o in t=arguments[e])Object.prototype.hasOwnProperty.call(t,o)&&(n[o]=t[o]);return n}).apply(this,arguments)},T=i(!1),O=i(!0),A=(e={fold:function(n,t){return n()},is:T,isSome:T,isNone:O,getOr:N,getOrThunk:P,getOrDie:function(n){throw new Error(n||"error: getOrDie called on none.")},getOrNull:i(null),getOrUndefined:i(undefined),or:N,orThunk:P,map:t,each:u,bind:t,exists:T,forall:O,filter:t,equals:C,equals_:C,toArray:function(){return[]},toString:i("none()")},Object.freeze&&Object.freeze(e),e);function C(n){return n.isNone()}function P(n){return n()}function N(n){return n}function E(n,t){return-1<function(n,t){return Q.call(n,t)}(n,t)}function I(n,t){for(var e=0,r=n.length;e<r;e++){t(n[e],e)}}function S(n){for(var t=[],e=0,r=n.length;e<r;++e){if(!f(n[e]))throw new Error("Arr.flatten item "+e+" was not an array, input: "+n);Y.apply(t,n[e])}return t}function j(n,t){var e=function(n,t){for(var e=n.length,r=new Array(e),o=0;o<e;o++){var i=n[o];r[o]=t(i,o)}return r}(n,t);return S(e)}function F(n){return/^\w+:/i.test(n)}function L(n,t){var e,r,o=["noopener"],i=n?n.split(/\s+/):[],u=function(n){return n.filter(function(n){return-1===Z.inArray(o,n)})},c=t?0<(e=u(e=i)).length?e.concat(o):o:u(i);return 0<c.length?(r=c,Z.trim(r.sort().join(" "))):""}function R(n,t){return t=t||n.selection.getNode(),nn(t)?n.dom.select("a[href]",t)[0]:n.dom.getParent(t,"a[href]")}function D(n){return n&&"A"===n.nodeName&&!!n.href}function U(n){return function(n,t,e){return I(n,function(n){e=t(e,n)}),e}(["title","rel","class","target"],function(t,e){return n[e].each(function(n){t[e]=0<n.length?n:null}),t},{href:n.href})}function M(n,t){var e=_({},t);if(!(0<v(n).length)&&!1===x(n)){var r=L(e.rel,"_blank"===e.target);e.rel=r||null}return J.from(e.target).isNone()&&!1===g(n)&&(e.target=p(n)),e.href=function(n,t){return"http"!==t&&"https"!==t||F(n)?n:t+"://"+n}(e.href,d(n)),e}function z(n,t){for(var e=0;e<n.length;e++){var r=t(n[e],e);if(r.isSome())return r}return J.none()}function q(n){return a(n.value)?n.value:""}function K(t){return void 0===t&&(t=q),function(n){return J.from(n).map(function(n){return function(n,r){var o=[];return Z.each(n,function(n){var t=a(n.text)?n.text:a(n.title)?n.title:"";if(n.menu!==undefined);else{var e=r(n);o.push({text:t,value:e})}}),o}(n,t)})}}function B(t,n,e,r){var o=r[n],i=0<t.length;return o!==undefined?function(t,n){return z(n,function(n){return J.some(n).filter(function(n){return n.value===t})})}(o,e).map(function(n){return{url:{value:n.value,meta:{text:i?t:n.text,attach:u}},text:i?t:n.text}}):J.none()}var V,W,H,$,G=function(e){function n(){return o}function t(n){return n(e)}var r=i(e),o={fold:function(n,t){return t(e)},is:function(n){return e===n},isSome:O,isNone:T,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:n,orThunk:n,map:function(n){return G(n(e))},each:function(n){n(e)},bind:t,exists:t,forall:t,filter:function(n){return n(e)?o:A},toArray:function(){return[e]},toString:function(){return"some("+e+")"},equals:function(n){return n.is(e)},equals_:function(n,t){return n.fold(T,function(n){return t(e,n)})}};return o},J={some:G,none:t,from:function(n){return null===n||n===undefined?A:G(n)}},X=Array.prototype.slice,Q=Array.prototype.indexOf,Y=Array.prototype.push,Z=(s(Array.from)&&Array.from,tinymce.util.Tools.resolve("tinymce.util.Tools")),nn=function(n){return n&&"FIGURE"===n.nodeName&&/\bimage\b/i.test(n.className)},tn=function(n,t){var e=n.dom.select("img",t)[0];if(e){var r=n.dom.getParents(e,"a[href]",t)[0];r&&(r.parentNode.insertBefore(e,r),n.dom.remove(r))}},en=function(n,t,e){var r=n.dom.select("img",t)[0];if(r){var o=n.dom.create("a",e);r.parentNode.insertBefore(o,r),o.appendChild(r)}},rn=function(n,t,e){var r=n.selection.getNode(),o=R(n,r),i=M(n,U(e));n.undoManager.transact(function(){e.href===t.href&&t.attach(),o?(n.focus(),function(n,t,e,r){e.each(function(n){t.hasOwnProperty("innerText")?t.innerText=n:t.textContent=n}),n.dom.setAttribs(t,r),n.selection.select(t)}(n,o,e.text,i)):function(t,n,e,r){nn(n)?en(t,n,r):e.fold(function(){t.execCommand("mceInsertLink",!1,r)},function(n){t.insertContent(t.dom.createHTML("a",r,t.dom.encode(n)))})}(n,r,e.text,i)})},on=function(e){e.undoManager.transact(function(){var n=e.selection.getNode();if(nn(n))tn(e,n);else{var t=e.dom.getParent(n,"a[href]",e.getBody());t&&e.dom.remove(t,!0)}e.focus()})},un=function(n){return 0<Z.grep(n,D).length},cn=function(n){var t=n.getAttribute("data-mce-href");return t||n.getAttribute("href")},an=function(n){return!(/</.test(n)&&(!/^<a [^>]+>[^<]+<\/a>$/.test(n)||-1===n.indexOf("href=")))},fn=R,ln=function(n,t){return function(n){return n.replace(/\uFEFF/g,"")}(t?t.innerText||t.textContent:n.getContent({format:"text"}))},sn=L,dn=F,mn={sanitize:function(n){return K(q)(n)},sanitizeWith:K,createUi:function(t,e){return function(n){return{name:t,type:"selectbox",label:e,items:n}}},getValue:q},hn=function(n){function t(){return e}var e=n;return{get:t,set:function(n){e=n},clone:function(){return hn(t())}}},pn=function(n,r){function e(n,t){var e=function(n,t){return"link"===t?n.catalogs.link:"anchor"===t?n.catalogs.anchor:J.none()}(r,t.name).getOr([]);return B(o.get(),t.name,e,n)}var o=hn(n.text);return{onChange:function(n,t){return"url"===t.name?function(n){if(o.get().length<=0){var t=n.url.meta.text!==undefined?n.url.meta.text:n.url.value;return J.some({text:t})}return J.none()}(n()):E(["anchor","link"],t.name)?e(n(),t):("text"===t.name&&o.set(n().text),J.none())}}},gn={},vn={exports:gn};V=undefined,W=gn,H=vn,$=undefined,function(n){"object"==typeof W&&void 0!==H?H.exports=n():"function"==typeof V&&V.amd?V([],n):("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).EphoxContactWrapper=n()}(function(){return function l(i,u,c){function a(t,n){if(!u[t]){if(!i[t]){var e="function"==typeof $&&$;if(!n&&e)return e(t,!0);if(f)return f(t,!0);var r=new Error("Cannot find module '"+t+"'");throw r.code="MODULE_NOT_FOUND",r}var o=u[t]={exports:{}};i[t][0].call(o.exports,function(n){return a(i[t][1][n]||n)},o,o.exports,l,i,u,c)}return u[t].exports}for(var f="function"==typeof $&&$,n=0;n<c.length;n++)a(c[n]);return a}({1:[function(n,t,e){var r,o,i=t.exports={};function u(){throw new Error("setTimeout has not been defined")}function c(){throw new Error("clearTimeout has not been defined")}function a(n){if(r===setTimeout)return setTimeout(n,0);if((r===u||!r)&&setTimeout)return r=setTimeout,setTimeout(n,0);try{return r(n,0)}catch(t){try{return r.call(null,n,0)}catch(t){return r.call(this,n,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:u}catch(n){r=u}try{o="function"==typeof clearTimeout?clearTimeout:c}catch(n){o=c}}();var f,l=[],s=!1,d=-1;function m(){s&&f&&(s=!1,f.length?l=f.concat(l):d=-1,l.length&&h())}function h(){if(!s){var n=a(m);s=!0;for(var t=l.length;t;){for(f=l,l=[];++d<t;)f&&f[d].run();d=-1,t=l.length}f=null,s=!1,function e(n){if(o===clearTimeout)return clearTimeout(n);if((o===c||!o)&&clearTimeout)return o=clearTimeout,clearTimeout(n);try{return o(n)}catch(t){try{return o.call(null,n)}catch(t){return o.call(this,n)}}}(n)}}function p(n,t){this.fun=n,this.array=t}function g(){}i.nextTick=function(n){var t=new Array(arguments.length-1);if(1<arguments.length)for(var e=1;e<arguments.length;e++)t[e-1]=arguments[e];l.push(new p(n,t)),1!==l.length||s||a(h)},p.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=g,i.addListener=g,i.once=g,i.off=g,i.removeListener=g,i.removeAllListeners=g,i.emit=g,i.prependListener=g,i.prependOnceListener=g,i.listeners=function(n){return[]},i.binding=function(n){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(n){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},{}],2:[function(n,s,t){(function(t){function r(){}function i(n){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof n)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=undefined,this._deferreds=[],l(n,this)}function o(r,o){for(;3===r._state;)r=r._value;0!==r._state?(r._handled=!0,i._immediateFn(function(){var n=1===r._state?o.onFulfilled:o.onRejected;if(null!==n){var t;try{t=n(r._value)}catch(e){return void c(o.promise,e)}u(o.promise,t)}else(1===r._state?u:c)(o.promise,r._value)})):r._deferreds.push(o)}function u(n,t){try{if(t===n)throw new TypeError("A promise cannot be resolved with itself.");if(t&&("object"==typeof t||"function"==typeof t)){var e=t.then;if(t instanceof i)return n._state=3,n._value=t,void a(n);if("function"==typeof e)return void l(function r(n,t){return function(){n.apply(t,arguments)}}(e,t),n)}n._state=1,n._value=t,a(n)}catch(o){c(n,o)}}function c(n,t){n._state=2,n._value=t,a(n)}function a(n){2===n._state&&0===n._deferreds.length&&i._immediateFn(function(){n._handled||i._unhandledRejectionFn(n._value)});for(var t=0,e=n._deferreds.length;t<e;t++)o(n,n._deferreds[t]);n._deferreds=null}function f(n,t,e){this.onFulfilled="function"==typeof n?n:null,this.onRejected="function"==typeof t?t:null,this.promise=e}function l(n,t){var e=!1;try{n(function(n){e||(e=!0,u(t,n))},function(n){e||(e=!0,c(t,n))})}catch(r){if(e)return;e=!0,c(t,r)}}var n,e;n=this,e=setTimeout,i.prototype["catch"]=function(n){return this.then(null,n)},i.prototype.then=function(n,t){var e=new this.constructor(r);return o(this,new f(n,t,e)),e},i.all=function(n){var a=Array.prototype.slice.call(n);return new i(function(o,i){if(0===a.length)return o([]);var u=a.length;function c(t,n){try{if(n&&("object"==typeof n||"function"==typeof n)){var e=n.then;if("function"==typeof e)return void e.call(n,function(n){c(t,n)},i)}a[t]=n,0==--u&&o(a)}catch(r){i(r)}}for(var n=0;n<a.length;n++)c(n,a[n])})},i.resolve=function(t){return t&&"object"==typeof t&&t.constructor===i?t:new i(function(n){n(t)})},i.reject=function(e){return new i(function(n,t){t(e)})},i.race=function(o){return new i(function(n,t){for(var e=0,r=o.length;e<r;e++)o[e].then(n,t)})},i._immediateFn="function"==typeof t?function(n){t(n)}:function(n){e(n,0)},i._unhandledRejectionFn=function(n){"undefined"!=typeof console&&console&&console.warn("Possible Unhandled Promise Rejection:",n)},i._setImmediateFn=function(n){i._immediateFn=n},i._setUnhandledRejectionFn=function(n){i._unhandledRejectionFn=n},void 0!==s&&s.exports?s.exports=i:n.Promise||(n.Promise=i)}).call(this,n("timers").setImmediate)},{timers:3}],3:[function(a,n,f){(function(n,t){var r=a("process/browser.js").nextTick,e=Function.prototype.apply,o=Array.prototype.slice,i={},u=0;function c(n,t){this._id=n,this._clearFn=t}f.setTimeout=function(){return new c(e.call(setTimeout,window,arguments),clearTimeout)},f.setInterval=function(){return new c(e.call(setInterval,window,arguments),clearInterval)},f.clearTimeout=f.clearInterval=function(n){n.close()},c.prototype.unref=c.prototype.ref=function(){},c.prototype.close=function(){this._clearFn.call(window,this._id)},f.enroll=function(n,t){clearTimeout(n._idleTimeoutId),n._idleTimeout=t},f.unenroll=function(n){clearTimeout(n._idleTimeoutId),n._idleTimeout=-1},f._unrefActive=f.active=function(n){clearTimeout(n._idleTimeoutId);var t=n._idleTimeout;0<=t&&(n._idleTimeoutId=setTimeout(function(){n._onTimeout&&n._onTimeout()},t))},f.setImmediate="function"==typeof n?n:function(n){var t=u++,e=!(arguments.length<2)&&o.call(arguments,1);return i[t]=!0,r(function(){i[t]&&(e?n.apply(null,e):n.call(null),f.clearImmediate(t))}),t},f.clearImmediate="function"==typeof t?t:function(n){delete i[n]}}).call(this,a("timers").setImmediate,a("timers").clearImmediate)},{"process/browser.js":1,timers:3}],4:[function(n,t,e){var r=n("promise-polyfill"),o="undefined"!=typeof window?window:Function("return this;")();t.exports={boltExport:o.Promise||r}},{"promise-polyfill":2}]},{},[4])(4)});function yn(n){c.setTimeout(function(){throw n},0)}function wn(n){var t=n.href;return 0<t.indexOf("@")&&-1===t.indexOf("//")&&-1===t.indexOf("mailto:")?J.some({message:"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",preprocess:function(n){return _(_({},n),{href:"mailto:"+t})}}):J.none()}function xn(n,t,e){var r=n.getAttrib(t,e);return null!==r&&0<r.length?J.some(r):J.none()}function kn(n,t){return n.dom.getParent(t,"a[href]")}function bn(n){return kn(n,n.selection.getStart())}function _n(n,t){if(t){var e=cn(t);if(/^#/.test(e)){var r=n.$(e);r.length&&n.selection.scrollIntoView(r[0],!0)}else b(t.href)}}var Tn=vn.exports.boltExport,On=function(n){var e=J.none(),t=[],r=function(n){o()?u(n):t.push(n)},o=function(){return e.isSome()},i=function(n){I(n,u)},u=function(t){e.each(function(n){c.setTimeout(function(){t(n)},0)})};return n(function(n){e=J.some(n),i(t),t=[]}),{get:r,map:function(e){return On(function(t){r(function(n){t(e(n))})})},isReady:o}},An={nu:On,pure:function(t){return On(function(n){n(t)})}},Cn=function(e){function n(n){e().then(n,yn)}return{map:function(n){return Cn(function(){return e().then(n)})},bind:function(t){return Cn(function(){return e().then(function(n){return t(n).toPromise()})})},anonBind:function(n){return Cn(function(){return e().then(function(){return n.toPromise()})})},toLazy:function(){return An.nu(n)},toCached:function(){var n=null;return Cn(function(){return null===n&&(n=e()),n})},toPromise:e,get:n}},Pn=function(n){return Cn(function(){return new Tn(n)})},Nn=function(n){return Cn(function(){return Tn.resolve(n)})},En=tinymce.util.Tools.resolve("tinymce.util.Delay"),In=function(n,t,r){return z([wn,function(e){return function(n){var t=n.href;return 1===e&&!dn(t)||0===e&&/^\s*www[\.|\d\.]/i.test(t)?J.some({message:"The URL you entered seems to be an external link. Do you want to add the required http:// prefix?",preprocess:function(n){return _(_({},n),{href:"http://"+t})}}):J.none()}}(t)],function(n){return n(r)}).fold(function(){return Nn(r)},function(e){return Pn(function(t){!function(t,n,e){var r=t.selection.getRng();En.setEditorTimeout(t,function(){t.windowManager.confirm(n,function(n){t.selection.setRng(r),e(n)})})}(n,e.message,function(n){t(n?e.preprocess(r):r)})})})},Sn=function(n){var t=n.dom.select("a:not([href])"),e=j(t,function(n){var t=n.name||n.id;return t?[{text:t,value:"#"+t}]:[]});return 0<e.length?J.some([{text:"None",value:""}].concat(e)):J.none()},jn=function(n){var t=y(n);return 0<t.length?mn.sanitize(t):J.none()},Fn=tinymce.util.Tools.resolve("tinymce.util.XHR"),Ln=function(t){function e(n){return t.convertURL(n.value||n.url,"href")}var n=h(t);return Pn(function(t){a(n)?Fn.send({url:n,success:function(n){return t(function(n){try{return J.some(JSON.parse(n))}catch(t){return J.none()}}(n))},error:function(n){return t(J.none())}}):s(n)?n(function(n){return t(J.some(n))}):t(J.from(n))}).map(function(n){return n.bind(mn.sanitizeWith(e)).map(function(n){return 0<n.length?[{text:"None",value:""}].concat(n):n})})},Rn=function(n,t){var e=v(n);if(0<e.length){var r=t.is("_blank");return(!1===x(n)?mn.sanitizeWith(function(n){return sn(mn.getValue(n),r)}):mn.sanitize)(e)}return J.none()},Dn=[{text:"Current window",value:""},{text:"New window",value:"_blank"}],Un=function(n){var t=g(n);return f(t)?mn.sanitize(t).orThunk(function(){return J.some(Dn)}):!1===t?J.none():J.some(Dn)},Mn=function(e,r){return Ln(e).map(function(n){var t=function(n,t){var e=n.dom,r=an(n.selection.getContent())?J.some(ln(n.selection,t)):J.none(),o=t?J.some(e.getAttrib(t,"href")):J.none(),i=t?J.from(e.getAttrib(t,"target")):J.none(),u=xn(e,t,"rel"),c=xn(e,t,"class");return{url:o,text:r,title:xn(e,t,"title"),target:i,rel:u,linkClass:c}}(e,r);return{anchor:t,catalogs:{targets:Un(e),rels:Rn(e,t.target),classes:jn(e),anchor:Sn(e),link:n},optNode:J.from(r),flags:{titleEnabled:w(e)}}})},zn=function(t){(function(n){var t=fn(n);return Mn(n,t)})(t).map(function(n){return function(n,t,e){var r=n.anchor.text.map(function(){return{name:"text",type:"input",label:"Text to display"}}).toArray(),o=n.flags.titleEnabled?[{name:"title",type:"input",label:"Title"}]:[],i=function(n,t){return{url:{value:n.anchor.url.getOr(""),meta:{attach:function(){},text:n.anchor.url.fold(function(){return""},function(){return n.anchor.text.getOr("")}),original:{value:n.anchor.url.getOr("")}}},text:n.anchor.text.getOr(""),title:n.anchor.title.getOr(""),anchor:n.anchor.url.getOr(""),link:n.anchor.url.getOr(""),rel:n.anchor.rel.getOr(""),target:n.anchor.target.or(t).getOr(""),linkClass:n.anchor.linkClass.getOr("")}}(n,J.from(p(e))),u=pn(i,n),c=n.catalogs;return{title:"Insert/Edit Link",size:"normal",body:{type:"panel",items:S([[{name:"url",type:"urlinput",filetype:"file",label:"URL"}],r,o,function(n){for(var t=[],e=function(n){t.push(n)},r=0;r<n.length;r++)n[r].each(e);return t}([c.anchor.map(mn.createUi("anchor","Anchors")),c.rels.map(mn.createUi("rel","Rel")),c.targets.map(mn.createUi("target","Open link in...")),c.link.map(mn.createUi("link","Link list")),c.classes.map(mn.createUi("linkClass","Class"))])])},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:i,onChange:function(t,n){var e=n.name;u.onChange(t.getData,{name:e}).each(function(n){t.setData(n)})},onSubmit:t}}(n,function(i,u,c){return function(n){var e=n.getData();if(!e.url.value)return on(i),void n.close();function t(t){return J.from(e[t]).filter(function(n){return!u.anchor[t].is(n)})}var r={href:e.url.value,text:t("text"),target:t("target"),rel:t("rel"),"class":t("linkClass"),title:t("title")},o={href:e.url.value,attach:e.url.meta!==undefined&&e.url.meta.attach?e.url.meta.attach:function(){}};In(i,c,r).get(function(n){rn(i,o,n)}),n.close()}}(t,n,d(t)),t)}).get(function(n){t.windowManager.open(n)})},qn=function(n){return function(){zn(n)}},Kn=function(n){return function(){_n(n,bn(n))}},Bn=function(e){e.on("click",function(n){var t=kn(e,n.target);t&&o.metaKeyPressed(n)&&(n.preventDefault(),_n(e,t))}),e.on("keydown",function(n){var t=bn(e);t&&13===n.keyCode&&function(n){return!0===n.altKey&&!1===n.shiftKey&&!1===n.ctrlKey&&!1===n.metaKey}(n)&&(n.preventDefault(),_n(e,t))})},Vn=function(e){return function(t){function n(n){return t.setActive(!e.readonly&&!!fn(e,n.element))}return e.on("NodeChange",n),function(){return e.off("NodeChange",n)}}},Wn=function(e){return function(t){t.setDisabled(!un(e.dom.getParents(e.selection.getStart())));function n(n){return t.setDisabled(!un(n.parents))}return e.on("NodeChange",n),function(){return e.off("NodeChange",n)}}},Hn=function(n){n.addCommand("mceLink",function(){k(n)?n.fire("contexttoolbar-show",{toolbarKey:"quicklink"}):qn(n)()})},$n=function(n){n.addShortcut("Meta+K","",function(){n.execCommand("mceLink")})},Gn=function(n){n.ui.registry.addToggleButton("link",{icon:"link",tooltip:"Insert/edit link",onAction:qn(n),onSetup:Vn(n)}),n.ui.registry.addButton("openlink",{icon:"new-tab",tooltip:"Open link",onAction:Kn(n),onSetup:Wn(n)}),n.ui.registry.addButton("unlink",{icon:"unlink",tooltip:"Remove link",onAction:function(){return on(n)},onSetup:Wn(n)})},Jn=function(n){n.ui.registry.addMenuItem("openlink",{text:"Open link",icon:"new-tab",onAction:Kn(n),onSetup:Wn(n)}),n.ui.registry.addMenuItem("link",{icon:"link",text:"Link...",shortcut:"Meta+K",onAction:qn(n)}),n.ui.registry.addMenuItem("unlink",{icon:"unlink",text:"Remove link",onAction:function(){return on(n)},onSetup:Wn(n)})},Xn=function(t){t.ui.registry.addContextMenu("link",{update:function(n){return un(t.dom.getParents(n,"a"))?"link unlink openlink":"link"}})},Qn=function(i){function n(n){var t=i.selection.getNode();return n.setDisabled(!fn(i,t)),function(){}}i.ui.registry.addContextForm("quicklink",{launch:{type:"contextformtogglebutton",icon:"link",tooltip:"Link",onSetup:Vn(i)},label:"Link",predicate:function(n){return!!fn(i,n)&&m(i)},initValue:function(){var n=fn(i);return n?cn(n):""},commands:[{type:"contextformtogglebutton",icon:"link",tooltip:"Link",primary:!0,onSetup:function(n){var t=i.selection.getNode();return n.setActive(!!fn(i,t)),Vn(i)(n)},onAction:function(n){var t=fn(i),e=n.getValue();if(t)i.dom.setAttrib(t,"href",e),function(n){n.selection.collapse(!1)}(i),n.hide();else{var r={href:e,attach:function(){}},o=an(i.selection.getContent())?J.some(ln(i.selection,t)).filter(function(n){return 0<n.length}).or(J.from(e)):J.none();rn(i,r,{href:e,text:o,title:J.none(),rel:J.none(),target:J.none(),"class":J.none()}),n.hide()}}},{type:"contextformbutton",icon:"unlink",tooltip:"Remove link",onSetup:n,onAction:function(n){on(i),n.hide()}},{type:"contextformbutton",icon:"new-tab",tooltip:"Open link",onSetup:n,onAction:function(n){Kn(i)(),n.hide()}}]})};!function Yn(){r.add("link",function(n){Gn(n),Jn(n),Xn(n),Qn(n),Bn(n),Hn(n),$n(n)})}()}(window);
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/plugins/lists/plugin.min.js b/app/static/vendors/tinymce/js/tinymce/plugins/lists/plugin.min.js
deleted file mode 100644 (file)
index 6007a45..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.3 (2019-12-04)
- */
-!function(r){"use strict";function e(){}function l(e){return function(){return e}}function t(t){return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return!t.apply(null,e)}}function n(){return a}var o,i=tinymce.util.Tools.resolve("tinymce.PluginManager"),u=l(!1),s=l(!0),a=(o={fold:function(e,n){return e()},is:u,isSome:u,isNone:s,getOr:d,getOrThunk:f,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:l(null),getOrUndefined:l(undefined),or:d,orThunk:f,map:n,each:e,bind:n,exists:u,forall:s,filter:n,equals:c,equals_:c,toArray:function(){return[]},toString:l("none()")},Object.freeze&&Object.freeze(o),o);function c(e){return e.isNone()}function f(e){return e()}function d(e){return e}function m(n){return function(e){return function(e){if(null===e)return"null";var n=typeof e;return"object"==n&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"==n&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":n}(e)===n}}function g(e,n){for(var t=e.length,r=new Array(t),o=0;o<t;o++){var i=e[o];r[o]=n(i,o)}return r}function p(e,n){for(var t=0,r=e.length;t<r;t++){n(e[t],t)}}function v(e,n){for(var t=[],r=0,o=e.length;r<o;r++){var i=e[r];n(i,r)&&t.push(i)}return t}function h(e,n,t){return p(e,function(e){t=n(t,e)}),t}function N(e,n){for(var t=0,r=e.length;t<r;t++){var o=e[t];if(n(o,t))return $e.some(o)}return $e.none()}function y(e,n){return function(e){for(var n=[],t=0,r=e.length;t<r;++t){if(!We(e[t]))throw new Error("Arr.flatten item "+t+" was not an array, input: "+e);Qe.apply(n,e[t])}return n}(g(e,n))}function S(e){return 0===e.length?$e.none():$e.some(e[0])}function O(e){return 0===e.length?$e.none():$e.some(e[e.length-1])}function C(e,n,t){return 0!=(e.compareDocumentPosition(n)&t)}function b(e,n){var t=function(e,n){for(var t=0;t<e.length;t++){var r=e[t];if(r.test(n))return r}return undefined}(e,n);if(!t)return{major:0,minor:0};function r(e){return Number(n.replace(t,"$"+e))}return Ze(r(1),r(2))}function L(e,n){return function(){return n===e}}function T(e,n){return function(){return n===e}}function D(e,n){var t=String(n).toLowerCase();return N(e,function(e){return e.search(t)})}function E(e,n){return-1!==e.indexOf(n)}function w(n){return function(e){return E(e,n)}}function k(e,n){return e.dom()===n.dom()}function A(e,n,t){return e.isSome()&&n.isSome()?$e.some(t(e.getOrDie(),n.getOrDie())):$e.none()}function x(e){return $e.from(e.dom().parentNode).map(bn.fromDom)}function R(e){return g(e.dom().childNodes,bn.fromDom)}function I(e,n){var t=e.dom().childNodes;return $e.from(t[n]).map(bn.fromDom)}function _(e){return I(e,0)}function B(e){return I(e,e.dom().childNodes.length-1)}function P(n,t){x(n).each(function(e){e.dom().insertBefore(t.dom(),n.dom())})}function M(e,n){e.dom().appendChild(n.dom())}function U(n,e){p(e,function(e){M(n,e)})}function F(e){var n=e.dom();null!==n.parentNode&&n.parentNode.removeChild(n)}function j(e,n,t){return e.fire("ListMutation",{action:n,element:t})}function H(e,n){return function(e,n){for(var t=n!==undefined&&null!==n?n:Rn,r=0;r<e.length&&t!==undefined&&null!==t;++r)t=t[e[r]];return t}(e.split("."),n)}function $(e){return e&&"BR"===e.nodeName}function q(e){var n=e.selection.getStart(!0);return e.dom.getParent(n,"OL,UL,DL",Yn(e,n))}function W(e){var n=e.selection.getSelectedBlocks();return Pn.grep(function(t,e){var n=Pn.map(e,function(e){var n=t.dom.getParent(e,"li,dd,dt",Yn(t,e));return n||e});return Bn.unique(n)}(e,n),function(e){return Hn(e)})}function V(e,n){var t=e.dom.getParents(n,"ol,ul",Yn(e,n));return O(t)}function z(e,n){var t,r,o,i,u=e.dom,s=e.schema.getBlockElements(),a=u.createFragment();if(e.settings.forced_root_block&&(o=e.settings.forced_root_block),o&&((r=u.create(o)).tagName===e.settings.forced_root_block&&u.setAttribs(r,e.settings.forced_root_block_attrs),zn(n.firstChild,s)||a.appendChild(r)),n)for(;t=n.firstChild;){var c=t.nodeName;i||"SPAN"===c&&"bookmark"===t.getAttribute("data-mce-type")||(i=!0),zn(t,s)?(a.appendChild(t),r=null):o?(r||(r=u.create(o),a.appendChild(r)),r.appendChild(t)):a.appendChild(t)}return e.settings.forced_root_block?i||r.appendChild(u.create("br",{"data-mce-bogus":"1"})):a.appendChild(u.create("br")),a}function K(e){return e.dom().nodeName.toLowerCase()}function X(e,n){var t=e.dom();!function(e,n){for(var t=xn(e),r=0,o=t.length;r<o;r++){var i=t[r];n(e[i],i)}}(n,function(e,n){!function(e,n,t){if(!(qe(t)||Ve(t)||Ke(t)))throw r.console.error("Invalid call to Attr.set. Key ",n,":: Value ",t,":: Element ",e),new Error("Attribute value was not simple");e.setAttribute(n,t+"")}(t,n,e)})}function Q(e){return h(e.dom().attributes,function(e,n){return e[n.name]=n.value,e},{})}function Y(e,n,t){if(!qe(t))throw r.console.error("Invalid call to CSS.set. Property ",n,":: Value ",t,":: Element ",e),new Error("CSS value must be a string: "+t);!function(e){return e.style!==undefined&&ze(e.style.getPropertyValue)}(e)||e.style.setProperty(n,t)}function G(e){return function(e,n){return bn.fromDom(e.dom().cloneNode(n))}(e,!0)}function J(e,n){var t=function(e,n){var t=bn.fromTag(n),r=Q(e);return X(t,r),t}(e,n);P(e,t);var r=R(e);return U(t,r),F(e),t}function Z(e,n){M(e.item,n.list)}function ee(n,e,t){var r=e.slice(0,t.depth);return O(r).each(function(e){!function(e,n){M(e.list,n),e.item=n}(e,function(e,n,t){var r=bn.fromTag("li",e);return X(r,n),U(r,t),r}(n,t.itemAttributes,t.content)),function(e,n){K(e.list)!==n.listType&&(e.list=J(e.list,n.listType)),X(e.list,n.listAttributes)}(e,t)}),r}function ne(e,n,t){var r=function(e,n,t){for(var r,o,i,u=[],s=0;s<t;s++)u.push((r=e,o=n.listType,void 0,i={list:bn.fromTag(o,r),item:bn.fromTag("li",r)},M(i.list,i.item),i));return u}(e,t,t.depth-n.length);return function(e){for(var n=1;n<e.length;n++)Z(e[n-1],e[n])}(r),function(e,n){for(var t=0;t<e.length-1;t++)r=e[t].item,o="list-style-type",i="none",void 0,u=r.dom(),Y(u,o,i);var r,o,i,u;O(e).each(function(e){X(e.list,n.listAttributes),X(e.item,n.itemAttributes),U(e.item,n.content)})}(r,t),function(e,n){A(O(e),S(n),Z)}(n,r),n.concat(r)}function te(e){return En(e,"OL,UL")}function re(e){return _(e).map(te).getOr(!1)}function oe(e){return 0<e.depth}function ie(e){return e.isSelected}function ue(e){var n=R(e),t=function(e){return B(e).map(te).getOr(!1)}(e)?n.slice(0,-1):n;return g(t,G)}function se(t){p(t,function(n,e){(function(e,n){for(var t=e[n].depth,r=n-1;0<=r;r--){if(e[r].depth===t)return $e.some(e[r]);if(e[r].depth<t)break}return $e.none()})(t,e).each(function(e){!function(e,n){e.listType=n.listType,e.listAttributes=nt({},n.listAttributes)}(n,e)})})}function ae(t,r,o,i){return _(i).filter(te).fold(function(){r.each(function(e){k(e.start,i)&&o.set(!0)});var e=function(n,t,r){return x(n).filter(Zn).map(function(e){return{depth:t,isSelected:r,content:ue(n),itemAttributes:Q(n),listAttributes:Q(e),listType:K(e)}})}(i,t,o.get());r.each(function(e){k(e.end,i)&&o.set(!1)});var n=B(i).filter(te).map(function(e){return tt(t,r,o,e)}).getOr([]);return e.toArray().concat(n)},function(e){return tt(t,r,o,e)})}function ce(t,e){return g(e,function(e){var n=function(e,n){var t=(n||r.document).createDocumentFragment();return p(e,function(e){t.appendChild(e.dom())}),bn.fromDom(t)}(e.content);return bn.fromDom(z(t,n.dom()))})}function fe(e,n){return se(n),function(t,e){var n=h(e,function(e,n){return n.depth>e.length?ne(t,e,n):ee(t,e,n)},[]);return S(n).map(function(e){return e.list})}(e.contentDocument,n).toArray()}function de(e){var n=g(Jn.getSelectedListItems(e),bn.fromDom);return A(N(n,t(re)),N(function(e){var n=Xe.call(e,0);return n.reverse(),n}(n),t(re)),function(e,n){return{start:e,end:n}})}function le(t,e,r){var n=function(e,n){var t=Ge(!1);return g(e,function(e){return{sourceList:e,entries:tt(0,n,t,e)}})}(e,de(t));p(n,function(e){!function(e,n){p(v(e,ie),function(e){return function(e,n){switch(e){case"Indent":n.depth++;break;case"Outdent":n.depth--;break;case"Flatten":n.depth=0}}(n,e)})}(e.entries,r);var n=function(n,e){return y(function(e,n){if(0===e.length)return[];for(var t=n(e[0]),r=[],o=[],i=0,u=e.length;i<u;i++){var s=e[i],a=n(s);a!==t&&(r.push(o),o=[]),t=a,o.push(s)}return 0!==o.length&&r.push(o),r}(e,oe),function(e){return S(e).map(oe).getOr(!1)?fe(n,e):ce(n,e)})}(t,e.entries);p(n,function(e){j(t,"Indent"===r?"IndentList":"OutdentList",e.dom())}),function(n,e){p(e,function(e){P(n,e)})}(e.sourceList,n),F(e.sourceList)})}function me(e){En(e,"dt")&&J(e,"dd")}function ge(n,e,t){p(t,"Indent"===e?me:function(e){return function(n,t){En(t,"dd")?J(t,"dt"):En(t,"dt")&&x(t).each(function(e){return it(n,e.dom(),t.dom())})}(n,e)})}function pe(e,n){if(Mn(e))return{container:e,offset:n};var t=wn.getNode(e,n);return Mn(t)?{container:t,offset:n>=e.childNodes.length?t.data.length:0}:t.previousSibling&&Mn(t.previousSibling)?{container:t.previousSibling,offset:t.previousSibling.data.length}:t.nextSibling&&Mn(t.nextSibling)?{container:t.nextSibling,offset:0}:{container:e,offset:n}}function ve(e,n){var t=g(Jn.getSelectedListRoots(e),bn.fromDom),r=g(Jn.getSelectedDlItems(e),bn.fromDom),o=!1;if(t.length||r.length){var i=e.selection.getBookmark();le(e,t,n),ge(e,n,r),e.selection.moveToBookmark(i),e.selection.setRng(ut(e.selection.getRng())),e.nodeChanged(),o=!0}return o}function he(e){return ve(e,"Indent")}function Ne(e){return ve(e,"Outdent")}function ye(e){return ve(e,"Flatten")}function Se(e){return/\btox\-/.test(e.className)}function Oe(e){switch(e){case"UL":return"ToggleUlList";case"OL":return"ToggleOlList";case"DL":return"ToggleDLList"}}function Ce(t,e){Pn.each(e,function(e,n){t.setAttribute(n,e)})}function be(e,n,t){!function(e,n,t){var r=t["list-style-type"]?t["list-style-type"]:null;e.setStyle(n,"list-style-type",r)}(e,n,t),function(e,n,t){Ce(n,t["list-attributes"]),Pn.each(e.select("li",n),function(e){Ce(e,t["list-item-attributes"])})}(e,n,t)}function Le(e,n,t,r){var o,i;for(o=n[t?"startContainer":"endContainer"],i=n[t?"startOffset":"endOffset"],1===o.nodeType&&(o=o.childNodes[Math.min(i,o.childNodes.length-1)]||o),!t&&qn(o.nextSibling)&&(o=o.nextSibling);o.parentNode!==r;){if(Vn(e,o))return o;if(/^(TD|TH)$/.test(o.parentNode.nodeName))return o;o=o.parentNode}return o}function Te(r,o,i){void 0===i&&(i={});var e,n=r.selection.getRng(!0),u="LI",t=Jn.getClosestListRootElm(r,r.selection.getStart(!0)),s=r.dom;"false"!==s.getContentEditable(r.selection.getNode())&&("DL"===(o=o.toUpperCase())&&(u="DT"),e=ct(n),Pn.each(function(t,e,r){for(var o,i=[],u=t.dom,n=Le(t,e,!0,r),s=Le(t,e,!1,r),a=[],c=n;c&&(a.push(c),c!==s);c=c.nextSibling);return Pn.each(a,function(e){if(Vn(t,e))return i.push(e),void(o=null);if(u.isBlock(e)||qn(e))return qn(e)&&u.remove(e),void(o=null);var n=e.nextSibling;st.isBookmarkNode(e)&&(Vn(t,n)||!n&&e.parentNode===r)?o=null:(o||(o=u.create("p"),e.parentNode.insertBefore(o,e),i.push(o)),o.appendChild(e))}),i}(r,n,t),function(e){var n,t;(t=e.previousSibling)&&Un(t)&&t.nodeName===o&&function(e,n,t){var r=e.getStyle(n,"list-style-type"),o=t?t["list-style-type"]:"";return r===(o=null===o?"":o)}(s,t,i)?(n=t,e=s.rename(e,u),t.appendChild(e)):(n=s.create(o),e.parentNode.insertBefore(n,e),n.appendChild(e),e=s.rename(e,u)),function(t,r,e){Pn.each(e,function(e){var n;return t.setStyle(r,((n={})[e]="",n))})}(s,e,["margin","margin-right","margin-bottom","margin-left","margin-top","padding","padding-right","padding-bottom","padding-left","padding-top"]),be(s,n,i),dt(r.dom,n)}),r.selection.setRng(ft(e)))}function De(e,n,t){return function(e,n){return e&&n&&Un(e)&&e.nodeName===n.nodeName}(n,t)&&function(e,n,t){return e.getStyle(n,"list-style-type",!0)===e.getStyle(t,"list-style-type",!0)}(e,n,t)&&function(e,n){return e.className===n.className}(n,t)}function Ee(n,e,t,r,o){if(e.nodeName!==r||lt(o)){var i=ct(n.selection.getRng(!0));Pn.each([e].concat(t),function(e){!function(e,n,t,r){if(n.nodeName!==t){var o=e.dom.rename(n,t);be(e.dom,o,r),j(e,Oe(t),o)}else be(e.dom,n,r),j(e,Oe(t),n)}(n,e,r,o)}),n.selection.setRng(ft(i))}else ye(n)}function we(e,n){var t,r=n.parentNode;"LI"===r.nodeName&&r.firstChild===n&&((t=r.previousSibling)&&"LI"===t.nodeName?(t.appendChild(n),Xn(e,r)&&gt.remove(r)):gt.setStyle(r,"listStyleType","none")),Un(r)&&(t=r.previousSibling)&&"LI"===t.nodeName&&t.appendChild(n)}function ke(e,n,t,r){var o=n.startContainer,i=n.startOffset;if(Mn(o)&&(t?i<o.data.length:0<i))return o;var u=e.schema.getNonEmptyElements();1===o.nodeType&&(o=wn.getNode(o,i));var s=new kn(o,r);for(t&&Kn(e.dom,o)&&s.next();o=s[t?"next":"prev2"]();){if("LI"===o.nodeName&&!o.hasChildNodes())return o;if(u[o.nodeName])return o;if(Mn(o)&&0<o.data.length)return o}}function Ae(e,n){var t=n.childNodes;return 1===t.length&&!Un(t[0])&&e.isBlock(t[0])}function xe(e,n,t){var r,o;if(o=Ae(e,t)?t.firstChild:t,function(e,n){Ae(e,n)&&e.remove(n.firstChild,!0)}(e,n),!Xn(e,n,!0))for(;r=n.firstChild;)o.appendChild(r)}function Re(n,e,t){var r,o,i=e.parentNode;if(Qn(n,e)&&Qn(n,t)){Un(t.lastChild)&&(o=t.lastChild),i===t.lastChild&&qn(i.previousSibling)&&n.remove(i.previousSibling),(r=t.lastChild)&&qn(r)&&e.hasChildNodes()&&n.remove(r),Xn(n,t,!0)&&n.$(t).empty(),xe(n,e,t),o&&t.appendChild(o);var u=Dn(bn.fromDom(t),bn.fromDom(e))?n.getParents(e,Un,t):[];n.remove(e),p(u,function(e){Xn(n,e)&&e!==n.getRoot()&&n.remove(e)})}}function Ie(e,n,t,r){var o=e.dom;if(o.isEmpty(r))!function(e,n,t){e.dom.$(t).empty(),Re(e.dom,n,t),e.selection.setCursorLocation(t)}(e,t,r);else{var i=ct(n);Re(o,t,r),e.selection.setRng(ft(i))}}function _e(e,n){var t=e.dom,r=e.selection,o=r.getStart(),i=Jn.getClosestListRootElm(e,o),u=t.getParent(r.getStart(),"LI",i);if(u){var s=u.parentNode;if(s===e.getBody()&&Xn(t,s))return!0;var a=ut(r.getRng()),c=t.getParent(ke(e,a,n,i),"LI",i);if(c&&c!==u)return e.undoManager.transact(function(){n?Ie(e,a,c,u):Wn(u)?Ne(e):function(e,n,t,r){var o=ct(n);Re(e.dom,t,r);var i=ft(o);e.selection.setRng(i)}(e,a,u,c)}),!0;if(!c&&!n&&0===a.startOffset&&0===a.endOffset)return e.undoManager.transact(function(){ye(e)}),!0}return!1}function Be(e,n){return _e(e,n)||function(e,n){var t=e.dom,r=e.selection.getStart(),o=Jn.getClosestListRootElm(e,r),i=t.getParent(r,t.isBlock,o);if(i&&t.isEmpty(i)){var u=ut(e.selection.getRng()),s=t.getParent(ke(e,u,n,o),"LI",o);if(s)return e.undoManager.transact(function(){!function(e,n,t){var r=e.getParent(n.parentNode,e.isBlock,t);e.remove(n),r&&e.isEmpty(r)&&e.remove(r)}(t,i,o),mt.mergeWithAdjacentLists(t,s.parentNode),e.selection.select(s,!0),e.selection.collapse(n)}),!0}return!1}(e,n)}function Pe(e,n){return e.selection.isCollapsed()?Be(e,n):function(e){var n=e.selection.getStart(),t=Jn.getClosestListRootElm(e,n);return!!(e.dom.getParent(n,"LI,DT,DD",t)||0<Jn.getSelectedListItems(e).length)&&(e.undoManager.transact(function(){e.execCommand("Delete"),pt(e.dom,e.getBody())}),!0)}(e)}function Me(n,t){return function(){var e=n.dom.getParent(n.selection.getStart(),"UL,OL,DL");return e&&e.nodeName===t}}function Ue(n,i){return function(o){function e(e){var n=function(e,n){for(var t=0;t<e.length;t++){if(n(e[t]))return t}return-1}(e.parents,$n),t=-1!==n?e.parents.slice(0,n):e.parents,r=Pn.grep(t,Un);o.setActive(0<r.length&&r[0].nodeName===i&&!Se(r[0]))}return n.on("NodeChange",e),function(){return n.off("NodeChange",e)}}}var Fe,je,He=function(t){function e(){return o}function n(e){return e(t)}var r=l(t),o={fold:function(e,n){return n(t)},is:function(e){return t===e},isSome:s,isNone:u,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:e,orThunk:e,map:function(e){return He(e(t))},each:function(e){e(t)},bind:n,exists:n,forall:n,filter:function(e){return e(t)?o:a},toArray:function(){return[t]},toString:function(){return"some("+t+")"},equals:function(e){return e.is(t)},equals_:function(e,n){return e.fold(u,function(e){return n(t,e)})}};return o},$e={some:He,none:n,from:function(e){return null===e||e===undefined?a:He(e)}},qe=m("string"),We=m("array"),Ve=m("boolean"),ze=m("function"),Ke=m("number"),Xe=Array.prototype.slice,Qe=Array.prototype.push,Ye=(ze(Array.from)&&Array.from,function(e,n){return C(e,n,r.Node.DOCUMENT_POSITION_CONTAINED_BY)}),Ge=function(e){function n(){return t}var t=e;return{get:n,set:function(e){t=e},clone:function(){return Ge(n())}}},Je=function(){return Ze(0,0)},Ze=function(e,n){return{major:e,minor:n}},en={nu:Ze,detect:function(e,n){var t=String(n).toLowerCase();return 0===e.length?Je():b(e,t)},unknown:Je},nn="Edge",tn="Chrome",rn="Opera",on="Firefox",un="Safari",sn=function(e){var n=e.current;return{current:n,version:e.version,isEdge:L(nn,n),isChrome:L(tn,n),isIE:L("IE",n),isOpera:L(rn,n),isFirefox:L(on,n),isSafari:L(un,n)}},an={unknown:function(){return sn({current:undefined,version:en.unknown()})},nu:sn,edge:l(nn),chrome:l(tn),ie:l("IE"),opera:l(rn),firefox:l(on),safari:l(un)},cn="Windows",fn="Android",dn="Solaris",ln="FreeBSD",mn=function(e){var n=e.current;return{current:n,version:e.version,isWindows:T(cn,n),isiOS:T("iOS",n),isAndroid:T(fn,n),isOSX:T("OSX",n),isLinux:T("Linux",n),isSolaris:T(dn,n),isFreeBSD:T(ln,n)}},gn={unknown:function(){return mn({current:undefined,version:en.unknown()})},nu:mn,windows:l(cn),ios:l("iOS"),android:l(fn),linux:l("Linux"),osx:l("OSX"),solaris:l(dn),freebsd:l(ln)},pn=function(e,t){return D(e,t).map(function(e){var n=en.detect(e.versionRegexes,t);return{current:e.name,version:n}})},vn=function(e,t){return D(e,t).map(function(e){var n=en.detect(e.versionRegexes,t);return{current:e.name,version:n}})},hn=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,Nn=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(e){return E(e,"edge/")&&E(e,"chrome")&&E(e,"safari")&&E(e,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,hn],search:function(e){return E(e,"chrome")&&!E(e,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(e){return E(e,"msie")||E(e,"trident")}},{name:"Opera",versionRegexes:[hn,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:w("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:w("firefox")},{name:"Safari",versionRegexes:[hn,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(e){return(E(e,"safari")||E(e,"mobile/"))&&E(e,"applewebkit")}}],yn=[{name:"Windows",search:w("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(e){return E(e,"iphone")||E(e,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:w("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:w("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:w("linux"),versionRegexes:[]},{name:"Solaris",search:w("sunos"),versionRegexes:[]},{name:"FreeBSD",search:w("freebsd"),versionRegexes:[]}],Sn={browsers:l(Nn),oses:l(yn)},On=Ge(function(e,n){var t=Sn.browsers(),r=Sn.oses(),o=pn(t,e).fold(an.unknown,an.nu),i=vn(r,e).fold(gn.unknown,gn.nu);return{browser:o,os:i,deviceType:function(e,n,t,r){var o=e.isiOS()&&!0===/ipad/i.test(t),i=e.isiOS()&&!o,u=e.isiOS()||e.isAndroid(),s=u||r("(pointer:coarse)"),a=o||!i&&u&&r("(min-device-width:768px)"),c=i||u&&!a,f=n.isSafari()&&e.isiOS()&&!1===/safari/i.test(t),d=!c&&!a&&!f;return{isiPad:l(o),isiPhone:l(i),isTablet:l(a),isPhone:l(c),isTouch:l(s),isAndroid:e.isAndroid,isiOS:e.isiOS,isWebView:l(f),isDesktop:l(d)}}(i,o,e,n)}}(r.navigator.userAgent,function(e){return r.window.matchMedia(e).matches})),Cn=function(e){if(null===e||e===undefined)throw new Error("Node cannot be null or undefined");return{dom:l(e)}},bn={fromHtml:function(e,n){var t=(n||r.document).createElement("div");if(t.innerHTML=e,!t.hasChildNodes()||1<t.childNodes.length)throw r.console.error("HTML does not have a single root node",e),new Error("HTML must have a single root node");return Cn(t.childNodes[0])},fromTag:function(e,n){var t=(n||r.document).createElement(e);return Cn(t)},fromText:function(e,n){var t=(n||r.document).createTextNode(e);return Cn(t)},fromDom:Cn,fromPoint:function(e,n,t){var r=e.dom();return $e.from(r.elementFromPoint(n,t)).map(Cn)}},Ln=(r.Node.ATTRIBUTE_NODE,r.Node.CDATA_SECTION_NODE,r.Node.COMMENT_NODE,r.Node.DOCUMENT_NODE,r.Node.DOCUMENT_TYPE_NODE,r.Node.DOCUMENT_FRAGMENT_NODE,r.Node.ELEMENT_NODE),Tn=(r.Node.TEXT_NODE,r.Node.PROCESSING_INSTRUCTION_NODE,r.Node.ENTITY_REFERENCE_NODE,r.Node.ENTITY_NODE,r.Node.NOTATION_NODE,Ln),Dn=On.get().browser.isIE()?function(e,n){return Ye(e.dom(),n.dom())}:function(e,n){var t=e.dom(),r=n.dom();return t!==r&&t.contains(r)},En=function(e,n){var t=e.dom();if(t.nodeType!==Tn)return!1;var r=t;if(r.matches!==undefined)return r.matches(n);if(r.msMatchesSelector!==undefined)return r.msMatchesSelector(n);if(r.webkitMatchesSelector!==undefined)return r.webkitMatchesSelector(n);if(r.mozMatchesSelector!==undefined)return r.mozMatchesSelector(n);throw new Error("Browser lacks native selectors")},wn=tinymce.util.Tools.resolve("tinymce.dom.RangeUtils"),kn=tinymce.util.Tools.resolve("tinymce.dom.TreeWalker"),An=tinymce.util.Tools.resolve("tinymce.util.VK"),xn=Object.keys,Rn=(function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n]}("element","offset"),"undefined"!=typeof r.window?r.window:Function("return this;")()),In=function(e,n){var t=function(e,n){return H(e,n)}(e,n);if(t===undefined||null===t)throw new Error(e+" not available on this browser");return t},_n=function(e){return function(e){return In("HTMLElement",e)}(H("ownerDocument.defaultView",e)).prototype.isPrototypeOf(e)},Bn=tinymce.util.Tools.resolve("tinymce.dom.DomQuery"),Pn=tinymce.util.Tools.resolve("tinymce.util.Tools"),Mn=function(e){return e&&3===e.nodeType},Un=function(e){return e&&/^(OL|UL|DL)$/.test(e.nodeName)},Fn=function(e){return e&&/^(OL|UL)$/.test(e.nodeName)},jn=function(e){return e&&/^(DT|DD)$/.test(e.nodeName)},Hn=function(e){return e&&/^(LI|DT|DD)$/.test(e.nodeName)},$n=function(e){return e&&/^(TH|TD)$/.test(e.nodeName)},qn=$,Wn=function(e){return e.parentNode.firstChild===e},Vn=function(e,n){return n&&!!e.schema.getTextBlockElements()[n.nodeName]},zn=function(e,n){return e&&e.nodeName in n},Kn=function(e,n){return!!$(n)&&!(!e.isBlock(n.nextSibling)||$(n.previousSibling))},Xn=function(e,n,t){var r=e.isEmpty(n);return!(t&&0<e.select("span[data-mce-type=bookmark]",n).length)&&r},Qn=function(e,n){return e.isChildOf(n,e.getRoot())},Yn=function(e,n){var t=e.dom.getParents(n,"TD,TH");return 0<t.length?t[0]:e.getBody()},Gn=function(n,e){var t=g(e,function(e){return V(n,e).getOr(e)});return Bn.unique(t)},Jn={isList:function(e){var n=q(e);return _n(n)},getParentList:q,getSelectedSubLists:function(e){var n=q(e),t=e.selection.getSelectedBlocks();return function(e,n){return e&&1===n.length&&n[0]===e}(n,t)?function(e){return Pn.grep(e.querySelectorAll("ol,ul,dl"),function(e){return Un(e)})}(n):Pn.grep(t,function(e){return Un(e)&&n!==e})},getSelectedListItems:W,getClosestListRootElm:Yn,getSelectedDlItems:function(e){return v(W(e),jn)},getSelectedListRoots:function(e){var n=function(e){var n=V(e,e.selection.getStart()),t=v(e.selection.getSelectedBlocks(),Fn);return n.toArray().concat(t)}(e);return Gn(e,n)}},Zn=(Fe=Ln,function(e){return function(e){return e.dom().nodeType}(e)===Fe}),et=Object.prototype.hasOwnProperty,nt=(je=function(e,n){return n},function(){for(var e=new Array(arguments.length),n=0;n<e.length;n++)e[n]=arguments[n];if(0===e.length)throw new Error("Can't merge zero objects");for(var t={},r=0;r<e.length;r++){var o=e[r];for(var i in o)et.call(o,i)&&(t[i]=je(t[i],o[i]))}return t}),tt=function(n,t,r,e){return y(R(e),function(e){return(te(e)?tt:ae)(n+1,t,r,e)})},rt=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),ot=rt.DOM,it=function(e,n,t){var r,o,i,u,s,a;for(i=ot.select('span[data-mce-type="bookmark"]',n),s=z(e,t),(r=ot.createRng()).setStartAfter(t),r.setEndAfter(n),u=(o=r.extractContents()).firstChild;u;u=u.firstChild)if("LI"===u.nodeName&&e.dom.isEmpty(u)){ot.remove(u);break}e.dom.isEmpty(o)||ot.insertAfter(o,n),ot.insertAfter(s,n),Xn(e.dom,t.parentNode)&&(a=t.parentNode,Pn.each(i,function(e){a.parentNode.insertBefore(e,t.parentNode)}),ot.remove(a)),ot.remove(t),Xn(e.dom,n)&&ot.remove(n)},ut=function(e){var n=e.cloneRange(),t=pe(e.startContainer,e.startOffset);n.setStart(t.container,t.offset);var r=pe(e.endContainer,e.endOffset);return n.setEnd(r.container,r.offset),n},st=tinymce.util.Tools.resolve("tinymce.dom.BookmarkManager"),at=rt.DOM,ct=function(o){function e(e){var n,t,r;t=o[e?"startContainer":"endContainer"],r=o[e?"startOffset":"endOffset"],1===t.nodeType&&(n=at.create("span",{"data-mce-type":"bookmark"}),t.hasChildNodes()?(r=Math.min(r,t.childNodes.length-1),e?t.insertBefore(n,t.childNodes[r]):at.insertAfter(n,t.childNodes[r])):t.appendChild(n),t=n,r=0),i[e?"startContainer":"endContainer"]=t,i[e?"startOffset":"endOffset"]=r}var i={};return e(!0),o.collapsed||e(),i},ft=function(o){function e(e){var n,t,r;n=r=o[e?"startContainer":"endContainer"],t=o[e?"startOffset":"endOffset"],n&&(1===n.nodeType&&(t=function(e){for(var n=e.parentNode.firstChild,t=0;n;){if(n===e)return t;1===n.nodeType&&"bookmark"===n.getAttribute("data-mce-type")||t++,n=n.nextSibling}return-1}(n),n=n.parentNode,at.remove(r),!n.hasChildNodes()&&at.isBlock(n)&&n.appendChild(at.create("br"))),o[e?"startContainer":"endContainer"]=n,o[e?"startOffset":"endOffset"]=t)}e(!0),e();var n=at.createRng();return n.setStart(o.startContainer,o.startOffset),o.endContainer&&n.setEnd(o.endContainer,o.endOffset),ut(n)},dt=function(e,n){var t,r;if(t=n.nextSibling,De(e,n,t)){for(;r=t.firstChild;)n.appendChild(r);e.remove(t)}if(t=n.previousSibling,De(e,n,t)){for(;r=t.lastChild;)n.insertBefore(r,n.firstChild);e.remove(t)}},lt=function(e){return"list-style-type"in e},mt={toggleList:function(e,n,t){var r=Jn.getParentList(e),o=Jn.getSelectedSubLists(e);t=t||{},r&&0<o.length?Ee(e,r,o,n,t):function(e,n,t,r){if(n!==e.getBody())if(n)if(n.nodeName!==t||lt(r)||Se(n)){var o=ct(e.selection.getRng(!0));be(e.dom,n,r);var i=e.dom.rename(n,t);dt(e.dom,i),e.selection.setRng(ft(o)),j(e,Oe(t),i)}else ye(e);else Te(e,t,r),j(e,Oe(t),n)}(e,r,n,t)},mergeWithAdjacentLists:dt},gt=rt.DOM,pt=function(n,e){Pn.each(Pn.grep(n.select("ol,ul",e)),function(e){we(n,e)})},vt=function(n){n.on("keydown",function(e){e.keyCode===An.BACKSPACE?Pe(n,!1)&&e.preventDefault():e.keyCode===An.DELETE&&Pe(n,!0)&&e.preventDefault()})},ht=Pe,Nt=function(n){return{backspaceDelete:function(e){ht(n,e)}}},yt=function(t){t.on("BeforeExecCommand",function(e){var n=e.command.toLowerCase();"indent"===n?he(t):"outdent"===n&&Ne(t)}),t.addCommand("InsertUnorderedList",function(e,n){mt.toggleList(t,"UL",n)}),t.addCommand("InsertOrderedList",function(e,n){mt.toggleList(t,"OL",n)}),t.addCommand("InsertDefinitionList",function(e,n){mt.toggleList(t,"DL",n)}),t.addCommand("RemoveList",function(){ye(t)}),t.addQueryStateHandler("InsertUnorderedList",Me(t,"UL")),t.addQueryStateHandler("InsertOrderedList",Me(t,"OL")),t.addQueryStateHandler("InsertDefinitionList",Me(t,"DL"))},St=function(e){return e.getParam("lists_indent_on_tab",!0)},Ot=function(e){St(e)&&function(n){n.on("keydown",function(e){e.keyCode!==An.TAB||An.metaKeyPressed(e)||n.undoManager.transact(function(){(e.shiftKey?Ne(n):he(n))&&e.preventDefault()})})}(e),vt(e)},Ct=function(n){function e(e){return function(){return n.execCommand(e)}}var t,r,o;r="advlist",o=(t=n).settings.plugins?t.settings.plugins:"",-1===Pn.inArray(o.split(/[ ,]/),r)&&(n.ui.registry.addToggleButton("numlist",{icon:"ordered-list",active:!1,tooltip:"Numbered list",onAction:e("InsertOrderedList"),onSetup:Ue(n,"OL")}),n.ui.registry.addToggleButton("bullist",{icon:"unordered-list",active:!1,tooltip:"Bullet list",onAction:e("InsertUnorderedList"),onSetup:Ue(n,"UL")}))};!function bt(){i.add("lists",function(e){return Ot(e),Ct(e),yt(e),Nt(e)})}()}(window);
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/plugins/media/plugin.min.js b/app/static/vendors/tinymce/js/tinymce/plugins/media/plugin.min.js
deleted file mode 100644 (file)
index abc9ee3..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.3 (2019-12-04)
- */
-!function(){"use strict";function e(){}function o(e){return function(){return e}}function t(){return u}var r,n=tinymce.util.Tools.resolve("tinymce.PluginManager"),d=function(){return(d=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var i in t=arguments[r])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)},a=o(!1),c=o(!0),u=(r={fold:function(e,t){return e()},is:a,isSome:a,isNone:c,getOr:l,getOrThunk:s,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:o(null),getOrUndefined:o(undefined),or:l,orThunk:s,map:t,each:e,bind:t,exists:a,forall:c,filter:t,equals:i,equals_:i,toArray:function(){return[]},toString:o("none()")},Object.freeze&&Object.freeze(r),r);function i(e){return e.isNone()}function s(e){return e()}function l(e){return e}function m(t){return function(e){return function(e){if(null===e)return"null";var t=typeof e;return"object"==t&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"==t&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":t}(e)===t}}function f(e,t){for(var r=0,n=e.length;r<n;r++){t(e[r],r)}}function h(e,t){return G(e,t)?E(e[t]):D()}function p(t){return function(e){return e?function(e){return e.replace(/px$/,"")}(e.style[t]):""}}function g(r){return function(e,t){e&&(e.style[r]=function(e){return/^[0-9.]+$/.test(e)?e+"px":e}(t))}}function v(e,t){if(e)for(var r=0;r<e.length;r++)if(-1!==t.indexOf(e[r].filter))return e[r]}function b(e){return ae.getAttrib(e,"data-ephox-embed-iri")}function w(e,t){return function(e){var t=ae.createFragment(e);return""!==b(t.firstChild)}(t)?function(e){var t=ae.createFragment(e).firstChild;return{type:"ephox-embed-iri",source1:b(t),source2:"",poster:"",width:oe.getMaxWidth(t),height:oe.getMaxHeight(t)}}(t):function(n,e){var i={};return ne({validate:!1,allow_conditional_comments:!0,start:function(e,t){if(i.source1||"param"!==e||(i.source1=t.map.movie),"iframe"!==e&&"object"!==e&&"embed"!==e&&"video"!==e&&"audio"!==e||(i.type||(i.type=e),i=re.extend(t.map,i)),"script"===e){var r=v(n,t.map.src);if(!r)return;i={type:"script",source1:t.map.src,width:String(r.width),height:String(r.height)}}"source"===e&&(i.source1?i.source2||(i.source2=t.map.src):i.source1=t.map.src),"img"!==e||i.poster||(i.poster=t.map.src)}}).parse(e),i.source1=i.source1||i.src||i.data,i.source2=i.source2||"",i.poster=i.poster||"",i}(e,t)}function y(e,t){var r,n,i,o;for(r in t)if(i=""+t[r],e.map[r])for(n=e.length;n--;)(o=e[n]).name===r&&(i?(e.map[r]=i,o.value=i):(delete e.map[r],e.splice(n,1)));else i&&(e.push({name:r,value:i}),e.map[r]=i)}function x(e,t){var r=me.createFragment(e).firstChild;return oe.setMaxWidth(r,t.width),oe.setMaxHeight(r,t.height),function(e){var t=se();return ne(t).parse(e),t.getContent()}(r.outerHTML)}function j(r,e){var n=re.extend({},e);if(!n.source1&&(re.extend(n,w(J(r),n.embed)),!n.source1))return"";n.source2||(n.source2=""),n.poster||(n.poster=""),n.source1=r.convertURL(n.source1,"source"),n.source2=r.convertURL(n.source2,"source"),n.source1mime=ue(n.source1),n.source2mime=ue(n.source2),n.poster=r.convertURL(n.poster,"poster");var t=function(t){var e=fe.filter(function(e){return e.regex.test(t)});return 0<e.length?re.extend({},e[0],{url:function(e,t){for(var r=e.regex.exec(t),n=e.url,i=function(e){n=n.replace("$"+e,function(){return r[e]?r[e]:""})},o=0;o<r.length;o++)i(o);return n.replace(/\?$/,"")}(e[0],t)}):null}(n.source1);if(t&&(n.source1=t.url,n.type=t.type,n.allowFullscreen=t.allowFullscreen,n.width=n.width||String(t.w),n.height=n.height||String(t.h)),n.embed)return de(n.embed,n,!0);var i=v(J(r),n.source1);i&&(n.type="script",n.width=String(i.width),n.height=String(i.height));var o=K(r),a=Q(r);return n.width=n.width||"300",n.height=n.height||"150",re.each(n,function(e,t){n[t]=r.dom.encode(""+e)}),"iframe"===n.type?function(e){var t=e.allowFullscreen?' allowFullscreen="1"':"";return'<iframe src="'+e.source1+'" width="'+e.width+'" height="'+e.height+'"'+t+"></iframe>"}(n):"application/x-shockwave-flash"===n.source1mime?function(e){var t='<object data="'+e.source1+'" width="'+e.width+'" height="'+e.height+'" type="application/x-shockwave-flash">';return e.poster&&(t+='<img src="'+e.poster+'" width="'+e.width+'" height="'+e.height+'" />'),t+="</object>"}(n):-1!==n.source1mime.indexOf("audio")?function(e,t){return t?t(e):'<audio controls="controls" src="'+e.source1+'">'+(e.source2?'\n<source src="'+e.source2+'"'+(e.source2mime?' type="'+e.source2mime+'"':"")+" />\n":"")+"</audio>"}(n,o):"script"===n.type?function(e){return'<script src="'+e.source1+'"><\/script>'}(n):function(e,t){return t?t(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>"}(n,a)}function O(t){return function(e){return j(t,e)}}function A(e){var r=q(e,{source1:e.source1.value,source2:h(e,"source2").bind(function(e){return h(e,"value")}).getOr(""),poster:h(e,"poster").bind(function(e){return h(e,"value")}).getOr("")});return h(e,"dimensions").each(function(e){f(["width","height"],function(t){h(e,t).each(function(e){return r[t]=e})})}),r}function S(e){var n=q(e,{source1:{value:h(e,"source1").getOr("")},source2:{value:h(e,"source2").getOr("")},poster:{value:h(e,"poster").getOr("")}});return f(["width","height"],function(r){h(e,r).each(function(e){var t=n.dimensions||{};t[r]=e,n.dimensions=t})}),n}function _(r){return function(e){var t=e&&e.msg?"Media embed handler error: "+e.msg:"Media embed handler threw unknown error.";r.notificationManager.open({type:"error",text:t})}}function C(e,t){return w(J(e),t)}function M(i,o){return function(e){if(N(e.url)&&0<e.url.trim().length){var t=e.html,r=C(o,t),n=d(d({},r),{source1:e.url,embed:t});i.setData(S(n))}}}function F(e,t){var r=e.dom.select("img[data-mce-object]");e.insertContent(t),function(e,t){for(var r=e.dom.select("img[data-mce-object]"),n=0;n<t.length;n++)for(var i=r.length-1;0<=i;i--)t[n]===r[i]&&r.splice(i,1);e.selection.select(r[0])}(e,r),e.nodeChanged()}function P(e,t){var r,n=t.name;return(r=new ye("img",1)).shortEnded=!0,Oe(e,t,r),r.attr({width:t.attr("width")||"300",height:t.attr("height")||("audio"===n?"30":"150"),style:t.attr("style"),src:xe.transparentSrc,"data-mce-object":n,"class":"mce-object mce-object-"+n}),r}function k(e,t){var r,n,i,o=t.name;return(r=new ye("span",1)).attr({contentEditable:"false",style:t.attr("style"),"data-mce-object":o,"class":"mce-preview-object mce-object-"+o}),Oe(e,t,r),(n=new ye(o,1)).attr({src:t.attr("src"),allowfullscreen:t.attr("allowfullscreen"),style:t.attr("style"),"class":t.attr("class"),width:t.attr("width"),height:t.attr("height"),frameborder:"0"}),(i=new ye("span",1)).attr("class","mce-shim"),r.append(n),r.append(i),r}function T(e){for(;e=e.parent;)if(e.attr("data-ephox-embed-iri")||(void 0,(t=e.attr("class"))&&/\btiny-pageembed\b/.test(t)))return!0;var t;return!1}var $,z=function(r){function e(){return i}function t(e){return e(r)}var n=o(r),i={fold:function(e,t){return t(r)},is:function(e){return r===e},isSome:c,isNone:a,getOr:n,getOrThunk:n,getOrDie:n,getOrNull:n,getOrUndefined:n,or:e,orThunk:e,map:function(e){return z(e(r))},each:function(e){e(r)},bind:t,exists:t,forall:t,filter:function(e){return e(r)?i:u},toArray:function(){return[r]},toString:function(){return"some("+r+")"},equals:function(e){return e.is(r)},equals_:function(e,t){return e.fold(a,function(e){return t(r,e)})}};return i},D=t,E=function(e){return null===e||e===undefined?u:z(e)},N=m("string"),U=m("array"),R=m("function"),L=Array.prototype.slice,W=Array.prototype.push,H=(R(Array.from)&&Array.from,function(e){function t(){return r}var r=e;return{get:t,set:function(e){r=e},clone:function(){return H(t())}}}),I=Object.prototype.hasOwnProperty,q=($=function(e,t){return t},function(){for(var e=new Array(arguments.length),t=0;t<e.length;t++)e[t]=arguments[t];if(0===e.length)throw new Error("Can't merge zero objects");for(var r={},n=0;n<e.length;n++){var i=e[n];for(var o in i)I.call(i,o)&&(r[o]=$(r[o],i[o]))}return r}),B=Object.hasOwnProperty,G=function(e,t){return B.call(e,t)},J=function(e){return e.getParam("media_scripts")},K=function(e){return e.getParam("audio_template_callback")},Q=function(e){return e.getParam("video_template_callback")},V=function(e){return e.getParam("media_live_embeds",!0)},X=function(e){return e.getParam("media_filter_html",!0)},Y=function(e){return e.getParam("media_url_resolver")},Z=function(e){return e.getParam("media_alt_source",!0)},ee=function(e){return e.getParam("media_poster",!0)},te=function(e){return e.getParam("media_dimensions",!0)},re=tinymce.util.Tools.resolve("tinymce.util.Tools"),ne=tinymce.util.Tools.resolve("tinymce.html.SaxParser"),ie=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),oe={getMaxWidth:p("maxWidth"),getMaxHeight:p("maxHeight"),setMaxWidth:g("maxWidth"),setMaxHeight:g("maxHeight")},ae=ie.DOM,ce=tinymce.util.Tools.resolve("tinymce.util.Promise"),ue=function(e){var t={mp3:"audio/mpeg",m4a:"audio/x-m4a",wav:"audio/wav",mp4:"video/mp4",webm:"video/webm",ogg:"video/ogg",swf:"application/x-shockwave-flash"}[e.toLowerCase().split(".").pop()];return t||""},se=tinymce.util.Tools.resolve("tinymce.html.Writer"),le=tinymce.util.Tools.resolve("tinymce.html.Schema"),me=ie.DOM,de=function(e,t,r){return function(e){var t=me.createFragment(e);return""!==me.getAttrib(t.firstChild,"data-ephox-embed-iri")}(e)?x(e,t):function(e,i,o){var a,c=se(),u=0;return ne({validate:!1,allow_conditional_comments:!0,comment:function(e){c.comment(e)},cdata:function(e){c.cdata(e)},text:function(e,t){c.text(e,t)},start:function(e,t,r){switch(e){case"video":case"object":case"embed":case"img":case"iframe":i.height!==undefined&&i.width!==undefined&&y(t,{width:i.width,height:i.height})}if(o)switch(e){case"video":y(t,{poster:i.poster,src:""}),i.source2&&y(t,{src:""});break;case"iframe":y(t,{src:i.source1});break;case"source":if(++u<=2&&(y(t,{src:i["source"+u],type:i["source"+u+"mime"]}),!i["source"+u]))return;break;case"img":if(!i.poster)return;a=!0}c.start(e,t,r)},end:function(e){if("video"===e&&o)for(var t=1;t<=2;t++)if(i["source"+t]){var r=[];r.map={},u<t&&(y(r,{src:i["source"+t],type:i["source"+t+"mime"]}),c.start("source",r,!0))}if(i.poster&&"object"===e&&o&&!a){var n=[];n.map={},y(n,{src:i.poster,width:i.width,height:i.height}),c.start("img",n,!0)}c.end(e)}},le({})).parse(e),c.getContent()}(e,t,r)},fe=[{regex:/youtu\.be\/([\w\-_\?&=.]+)/i,type:"iframe",w:560,h:314,url:"//www.youtube.com/embed/$1",allowFullscreen:!0},{regex:/youtube\.com(.+)v=([^&]+)(&([a-z0-9&=\-_]+))?/i,type:"iframe",w:560,h:314,url:"//www.youtube.com/embed/$2?$4",allowFullscreen:!0},{regex:/youtube.com\/embed\/([a-z0-9\?&=\-_]+)/i,type:"iframe",w:560,h:314,url:"//www.youtube.com/embed/$1",allowFullscreen:!0},{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",allowFullscreen:!0},{regex:/vimeo\.com\/(.*)\/([0-9]+)/,type:"iframe",w:425,h:350,url:"//player.vimeo.com/video/$2?title=0&amp;byline=0",allowFullscreen:!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"',allowFullscreen:!1},{regex:/dailymotion\.com\/video\/([^_]+)/,type:"iframe",w:480,h:270,url:"//www.dailymotion.com/embed/video/$1",allowFullscreen:!0},{regex:/dai\.ly\/([^_]+)/,type:"iframe",w:480,h:270,url:"//www.dailymotion.com/embed/video/$1",allowFullscreen:!0}],he={},pe=function(e,t){var r=Y(e);return r?function(n,i,o){return new ce(function(t,e){function r(e){return e.html&&(he[n.source1]=e),t({url:n.source1,html:e.html?e.html:i(n)})}he[n.source1]?r(he[n.source1]):o({url:n.source1},r,e)})}(t,O(e),r):function(t,r){return new ce(function(e){e({html:r(t),url:t.source1})})}(t,O(e))},ge=function(e){return he.hasOwnProperty(e)},ve=function(n){function i(e){return A(e.getData())}var e=function(e){var t=e.selection.getNode(),r=function(e){return e.getAttribute("data-mce-object")||e.getAttribute("data-ephox-embed-iri")}(t)?e.serializer.serialize(t,{selection:!0}):"";return q({embed:r},w(J(e),r))}(n),r=H(e),t=S(e),o={title:"General",name:"general",items:function(e){for(var t=[],r=0,n=e.length;r<n;++r){if(!U(e[r]))throw new Error("Arr.flatten item "+r+" was not an array, input: "+e);W.apply(t,e[r])}return t}([[{name:"source1",type:"urlinput",filetype:"media",label:"Source"}],te(n)?[{type:"sizeinput",name:"dimensions",label:"Constrain proportions",constrain:!0}]:[]])},a={title:"Embed",items:[{type:"textarea",name:"embed",label:"Paste your embed code below:"}]},c=[];Z(n)&&c.push({name:"source2",type:"urlinput",filetype:"media",label:"Alternative source URL"}),ee(n)&&c.push({name:"poster",type:"urlinput",filetype:"image",label:"Media poster (Image URL)"});var u={title:"Advanced",name:"advanced",items:c},s=[o,a];0<c.length&&s.push(u);var l={type:"tabpanel",tabs:s},m=n.windowManager.open({title:"Insert/Edit Media",size:"normal",body:l,buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],onSubmit:function(e){var t=i(e);!function(e,t,r){t.embed=de(t.embed,t),t.embed&&(e.source1===t.source1||ge(t.source1))?F(r,t.embed):pe(r,t).then(function(e){F(r,e.html)})["catch"](_(r))}(r.get(),t,n),e.close()},onChange:function(e,t){switch(t.name){case"source1":!function(e,t){var r=i(t);e.source1!==r.source1&&(M(m,n)({url:r.source1,html:""}),pe(n,r).then(M(m,n))["catch"](_(n)))}(r.get(),e);break;case"embed":!function(e){var t=A(e.getData()),r=C(n,t.embed);e.setData(S(r))}(e);break;case"dimensions":case"poster":!function(e){var t=i(e),r=j(n,t);e.setData(S(d(d({},t),{embed:r})))}(e)}r.set(i(e))},initialData:t})},be=function(e){return{showDialog:function(){ve(e)}}},we=function(e){e.addCommand("mceMedia",function(){ve(e)})},ye=tinymce.util.Tools.resolve("tinymce.html.Node"),xe=tinymce.util.Tools.resolve("tinymce.Env"),je=function(i,e){if(!1===X(i))return e;var o,a=se();return ne({validate:!1,allow_conditional_comments:!1,comment:function(e){a.comment(e)},cdata:function(e){a.cdata(e)},text:function(e,t){a.text(e,t)},start:function(e,t,r){if(o=!0,"script"!==e&&"noscript"!==e){for(var n=0;n<t.length;n++){if(0===t[n].name.indexOf("on"))return;"style"===t[n].name&&(t[n].value=i.dom.serializeStyle(i.dom.parseStyle(t[n].value),e))}a.start(e,t,r),o=!1}},end:function(e){o||a.end(e)}},le({})).parse(e),a.getContent()},Oe=function(e,t,r){var n,i,o,a,c;for(a=(o=t.attributes).length;a--;)n=o[a].name,i=o[a].value,"width"!==n&&"height"!==n&&"style"!==n&&("data"!==n&&"src"!==n||(i=e.convertURL(i,n)),r.attr("data-mce-p-"+n,i));(c=t.firstChild&&t.firstChild.value)&&(r.attr("data-mce-html",escape(je(e,c))),r.firstChild=null)},Ae=function(i){return function(e){for(var t,r,n=e.length;n--;)(t=e[n]).parent&&(t.parent.attr("data-mce-object")||"script"===t.name&&!(r=v(J(i),t.attr("src")))||(r&&(r.width&&t.attr("width",r.width.toString()),r.height&&t.attr("height",r.height.toString())),"iframe"===t.name&&V(i)&&xe.ceFalse?T(t)||t.replace(k(i,t)):T(t)||t.replace(P(i,t))))}},Se=function(d){d.on("preInit",function(){var t=d.schema.getSpecialElements();re.each("video audio iframe object".split(" "),function(e){t[e]=new RegExp("</"+e+"[^>]*>","gi")});var r=d.schema.getBoolAttrs();re.each("webkitallowfullscreen mozallowfullscreen allowfullscreen".split(" "),function(e){r[e]={}}),d.parser.addNodeFilter("iframe,video,audio,object,embed,script",Ae(d)),d.serializer.addAttributeFilter("data-mce-object",function(e,t){for(var r,n,i,o,a,c,u,s,l=e.length;l--;)if((r=e[l]).parent){for(u=r.attr(t),n=new ye(u,1),"audio"!==u&&"script"!==u&&((s=r.attr("class"))&&-1!==s.indexOf("mce-preview-object")?n.attr({width:r.firstChild.attr("width"),height:r.firstChild.attr("height")}):n.attr({width:r.attr("width"),height:r.attr("height")})),n.attr({style:r.attr("style")}),i=(o=r.attributes).length;i--;){var m=o[i].name;0===m.indexOf("data-mce-p-")&&n.attr(m.substr(11),o[i].value)}"script"===u&&n.attr("type","text/javascript"),(a=r.attr("data-mce-html"))&&((c=new ye("#text",3)).raw=!0,c.value=je(d,unescape(a)),n.append(c)),r.replace(n)}})}),d.on("SetContent",function(){d.$("span.mce-preview-object").each(function(e,t){var r=d.$(t);0===r.find("span.mce-shim").length&&r.append('<span class="mce-shim"></span>')})})},_e=function(e){e.on("ResolveName",function(e){var t;1===e.target.nodeType&&(t=e.target.getAttribute("data-mce-object"))&&(e.name=t)})},Ce=function(t){t.on("click keyup touchend",function(){var e=t.selection.getNode();e&&t.dom.hasClass(e,"mce-preview-object")&&t.dom.getAttrib(e,"data-mce-selected")&&e.setAttribute("data-mce-selected","2")}),t.on("ObjectSelected",function(e){var t=e.target.getAttribute("data-mce-object");"audio"!==t&&"script"!==t||e.preventDefault()}),t.on("ObjectResized",function(e){var t,r=e.target;r.getAttribute("data-mce-object")&&(t=r.getAttribute("data-mce-html"))&&(t=unescape(t),r.setAttribute("data-mce-html",escape(de(t,{width:String(e.width),height:String(e.height)}))))})},Me=function(e){e.ui.registry.addToggleButton("media",{tooltip:"Insert/edit media",icon:"embed",onAction:function(){e.execCommand("mceMedia")},onSetup:function(t,r){return function(e){return t.selection.selectorChangedWithUnbind(r.join(","),e.setActive).unbind}}(e,["img[data-mce-object]","span[data-mce-object]","div[data-ephox-embed-iri]"])}),e.ui.registry.addMenuItem("media",{icon:"embed",text:"Media...",onAction:function(){e.execCommand("mceMedia")}})};!function Fe(){n.add("media",function(e){return we(e),Me(e),_e(e),Se(e),Ce(e),be(e)})}()}();
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/plugins/nonbreaking/plugin.min.js b/app/static/vendors/tinymce/js/tinymce/plugins/nonbreaking/plugin.min.js
deleted file mode 100644 (file)
index 8df725b..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.3 (2019-12-04)
- */
-!function(){"use strict";function o(n,e){for(var t="",o=0;o<e;o++)t+=n;return t}var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),i=function(n){var e=n.getParam("nonbreaking_force_tab",0);return"boolean"==typeof e?!0===e?3:0:e},a=function(n){return n.getParam("nonbreaking_wrap",!0,"boolean")},r=function(n,e){var t=a(n)||n.plugins.visualchars?'<span class="'+(function(n){return!!n.plugins.visualchars&&n.plugins.visualchars.isEnabled()}(n)?"mce-nbsp-wrap mce-nbsp":"mce-nbsp-wrap")+'" contenteditable="false">'+o("&nbsp;",e)+"</span>":o("&nbsp;",e);n.undoManager.transact(function(){return n.insertContent(t)})},e=function(n){n.addCommand("mceNonBreaking",function(){r(n,1)})},c=tinymce.util.Tools.resolve("tinymce.util.VK"),t=function(e){var t=i(e);0<t&&e.on("keydown",function(n){if(n.keyCode===c.TAB&&!n.isDefaultPrevented()){if(n.shiftKey)return;n.preventDefault(),n.stopImmediatePropagation(),r(e,t)}})},u=function(n){n.ui.registry.addButton("nonbreaking",{icon:"non-breaking",tooltip:"Nonbreaking space",onAction:function(){return n.execCommand("mceNonBreaking")}}),n.ui.registry.addMenuItem("nonbreaking",{icon:"non-breaking",text:"Nonbreaking space",onAction:function(){return n.execCommand("mceNonBreaking")}})};!function s(){n.add("nonbreaking",function(n){e(n),u(n),t(n)})}()}();
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/plugins/noneditable/plugin.min.js b/app/static/vendors/tinymce/js/tinymce/plugins/noneditable/plugin.min.js
deleted file mode 100644 (file)
index 09d7b6d..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.3 (2019-12-04)
- */
-!function(){"use strict";function c(n){return function(t){return-1!==(" "+t.attr("class")+" ").indexOf(n)}}function l(i,o,c){return function(t){var n=arguments,e=n[n.length-2],r=0<e?o.charAt(e-1):"";if('"'===r)return t;if(">"===r){var a=o.lastIndexOf("<",e);if(-1!==a)if(-1!==o.substring(a,e).indexOf('contenteditable="false"'))return t}return'<span class="'+c+'" data-mce-content="'+i.dom.encode(n[0])+'">'+i.dom.encode("string"==typeof n[1]?n[1]:n[0])+"</span>"}}var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),u=tinymce.util.Tools.resolve("tinymce.util.Tools"),f=function(t){return t.getParam("noneditable_noneditable_class","mceNonEditable")},s=function(t){return t.getParam("noneditable_editable_class","mceEditable")},d=function(t){var n=t.getParam("noneditable_regexp",[]);return n&&n.constructor===RegExp?[n]:n},n=function(n){var t,e,r="contenteditable";t=" "+u.trim(s(n))+" ",e=" "+u.trim(f(n))+" ";var a=c(t),i=c(e),o=d(n);n.on("PreInit",function(){0<o.length&&n.on("BeforeSetContent",function(t){!function(t,n,e){var r=n.length,a=e.content;if("raw"!==e.format){for(;r--;)a=a.replace(n[r],l(t,a,f(t)));e.content=a}}(n,o,t)}),n.parser.addAttributeFilter("class",function(t){for(var n,e=t.length;e--;)n=t[e],a(n)?n.attr(r,"true"):i(n)&&n.attr(r,"false")}),n.serializer.addAttributeFilter(r,function(t){for(var n,e=t.length;e--;)n=t[e],(a(n)||i(n))&&(0<o.length&&n.attr("data-mce-content")?(n.name="#text",n.type=3,n.raw=!0,n.value=n.attr("data-mce-content")):n.attr(r,null))})})};!function e(){t.add("noneditable",function(t){n(t)})}()}();
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/plugins/pagebreak/plugin.min.js b/app/static/vendors/tinymce/js/tinymce/plugins/pagebreak/plugin.min.js
deleted file mode 100644 (file)
index 0978a29..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.3 (2019-12-04)
- */
-!function(){"use strict";function e(){return"mce-pagebreak"}function a(){return'<img src="'+t.transparentSrc+'" class="mce-pagebreak" data-mce-resize="false" data-mce-placeholder />'}var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=tinymce.util.Tools.resolve("tinymce.Env"),r=function(e){return e.getParam("pagebreak_separator","\x3c!-- pagebreak --\x3e")},i=function(e){return e.getParam("pagebreak_split_block",!1)},o=function(o){var c=r(o),n=new RegExp(c.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g,function(e){return"\\"+e}),"gi");o.on("BeforeSetContent",function(e){e.content=e.content.replace(n,a())}),o.on("PreInit",function(){o.serializer.addNodeFilter("img",function(e){for(var n,a,t=e.length;t--;)if((a=(n=e[t]).attr("class"))&&-1!==a.indexOf("mce-pagebreak")){var r=n.parent;if(o.schema.getBlockElements()[r.name]&&i(o)){r.type=3,r.value=c,r.raw=!0,n.remove();continue}n.type=3,n.value=c,n.raw=!0}})})},c=a,u=e,g=function(e){e.addCommand("mcePageBreak",function(){e.settings.pagebreak_split_block?e.insertContent("<p>"+c()+"</p>"):e.insertContent(c())})},m=function(n){n.on("ResolveName",function(e){"IMG"===e.target.nodeName&&n.dom.hasClass(e.target,u())&&(e.name="pagebreak")})},s=function(e){e.ui.registry.addButton("pagebreak",{icon:"page-break",tooltip:"Page break",onAction:function(){return e.execCommand("mcePageBreak")}}),e.ui.registry.addMenuItem("pagebreak",{text:"Page break",icon:"page-break",onAction:function(){return e.execCommand("mcePageBreak")}})};!function l(){n.add("pagebreak",function(e){g(e),s(e),o(e),m(e)})}()}();
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/plugins/paste/plugin.min.js b/app/static/vendors/tinymce/js/tinymce/plugins/paste/plugin.min.js
deleted file mode 100644 (file)
index 145567d..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.3 (2019-12-04)
- */
-!function(f){"use strict";function t(){}function i(t){return function(){return t}}function e(){return v}var n,d=function(t){function e(){return n}var n=t;return{get:e,set:function(t){n=t},clone:function(){return d(e())}}},r=tinymce.util.Tools.resolve("tinymce.PluginManager"),u=function(t){return!(!/(^|[ ,])powerpaste([, ]|$)/.test(t.settings.plugins)||!r.get("powerpaste"))&&("undefined"!=typeof f.window.console&&f.window.console.log&&f.window.console.log("PowerPaste is incompatible with Paste plugin! Remove 'paste' from the 'plugins' option."),!0)},a=function(t,e){return{clipboard:t,quirks:e}},s=function(t,e,n,r){return t.fire("PastePreProcess",{content:e,internal:n,wordContent:r})},c=function(t,e,n,r){return t.fire("PastePostProcess",{node:e,internal:n,wordContent:r})},o=function(t,e){return t.fire("PastePlainTextToggle",{state:e})},m=function(t,e){return t.fire("paste",{ieFake:e})},l=function(t,e){"text"===e.pasteFormat.get()?(e.pasteFormat.set("html"),o(t,!1)):(e.pasteFormat.set("text"),o(t,!0)),t.focus()},p=function(t,n){t.addCommand("mceTogglePlainTextPaste",function(){l(t,n)}),t.addCommand("mceInsertClipboardContent",function(t,e){e.content&&n.pasteHtml(e.content,e.internal),e.text&&n.pasteText(e.text)})},g=i(!1),h=i(!0),v=(n={fold:function(t,e){return t()},is:g,isSome:g,isNone:h,getOr:w,getOrThunk:b,getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:i(null),getOrUndefined:i(undefined),or:w,orThunk:b,map:e,each:t,bind:e,exists:g,forall:h,filter:e,equals:y,equals_:y,toArray:function(){return[]},toString:i("none()")},Object.freeze&&Object.freeze(n),n);function y(t){return t.isNone()}function b(t){return t()}function w(t){return t}function x(t,e){for(var n=t.length,r=new Array(n),o=0;o<n;o++){var i=t[o];r[o]=e(i,o)}return r}function _(t,e){for(var n=0,r=t.length;n<r;n++){e(t[n],n)}}var P,T,D,C,k,S=function(n){function t(){return o}function e(t){return t(n)}var r=i(n),o={fold:function(t,e){return e(n)},is:function(t){return n===t},isSome:h,isNone:g,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:t,orThunk:t,map:function(t){return S(t(n))},each:function(t){t(n)},bind:e,exists:e,forall:e,filter:function(t){return t(n)?o:v},toArray:function(){return[n]},toString:function(){return"some("+n+")"},equals:function(t){return t.is(n)},equals_:function(t,e){return t.fold(g,function(t){return e(n,t)})}};return o},F={some:S,none:e,from:function(t){return null===t||t===undefined?v:S(t)}},E=(P="function",function(t){return function(t){if(null===t)return"null";var e=typeof t;return"object"==e&&(Array.prototype.isPrototypeOf(t)||t.constructor&&"Array"===t.constructor.name)?"array":"object"==e&&(String.prototype.isPrototypeOf(t)||t.constructor&&"String"===t.constructor.name)?"string":e}(t)===P}),I=Array.prototype.slice,O=E(Array.from)?Array.from:function(t){return I.call(t)},R={},A={exports:R};T=undefined,D=R,C=A,k=undefined,function(t){"object"==typeof D&&void 0!==C?C.exports=t():"function"==typeof T&&T.amd?T([],t):("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).EphoxContactWrapper=t()}(function(){return function l(i,u,a){function s(e,t){if(!u[e]){if(!i[e]){var n="function"==typeof k&&k;if(!t&&n)return n(e,!0);if(c)return c(e,!0);var r=new Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r}var o=u[e]={exports:{}};i[e][0].call(o.exports,function(t){return s(i[e][1][t]||t)},o,o.exports,l,i,u,a)}return u[e].exports}for(var c="function"==typeof k&&k,t=0;t<a.length;t++)s(a[t]);return s}({1:[function(t,e,n){var r,o,i=e.exports={};function u(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function s(t){if(r===setTimeout)return setTimeout(t,0);if((r===u||!r)&&setTimeout)return r=setTimeout,setTimeout(t,0);try{return r(t,0)}catch(e){try{return r.call(null,t,0)}catch(e){return r.call(this,t,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:u}catch(t){r=u}try{o="function"==typeof clearTimeout?clearTimeout:a}catch(t){o=a}}();var c,l=[],f=!1,d=-1;function m(){f&&c&&(f=!1,c.length?l=c.concat(l):d=-1,l.length&&p())}function p(){if(!f){var t=s(m);f=!0;for(var e=l.length;e;){for(c=l,l=[];++d<e;)c&&c[d].run();d=-1,e=l.length}c=null,f=!1,function n(t){if(o===clearTimeout)return clearTimeout(t);if((o===a||!o)&&clearTimeout)return o=clearTimeout,clearTimeout(t);try{return o(t)}catch(e){try{return o.call(null,t)}catch(e){return o.call(this,t)}}}(t)}}function g(t,e){this.fun=t,this.array=e}function h(){}i.nextTick=function(t){var e=new Array(arguments.length-1);if(1<arguments.length)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];l.push(new g(t,e)),1!==l.length||f||s(p)},g.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=h,i.addListener=h,i.once=h,i.off=h,i.removeListener=h,i.removeAllListeners=h,i.emit=h,i.prependListener=h,i.prependOnceListener=h,i.listeners=function(t){return[]},i.binding=function(t){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(t){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},{}],2:[function(t,f,e){(function(e){function r(){}function i(t){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof t)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=undefined,this._deferreds=[],l(t,this)}function o(r,o){for(;3===r._state;)r=r._value;0!==r._state?(r._handled=!0,i._immediateFn(function(){var t=1===r._state?o.onFulfilled:o.onRejected;if(null!==t){var e;try{e=t(r._value)}catch(n){return void a(o.promise,n)}u(o.promise,e)}else(1===r._state?u:a)(o.promise,r._value)})):r._deferreds.push(o)}function u(t,e){try{if(e===t)throw new TypeError("A promise cannot be resolved with itself.");if(e&&("object"==typeof e||"function"==typeof e)){var n=e.then;if(e instanceof i)return t._state=3,t._value=e,void s(t);if("function"==typeof n)return void l(function r(t,e){return function(){t.apply(e,arguments)}}(n,e),t)}t._state=1,t._value=e,s(t)}catch(o){a(t,o)}}function a(t,e){t._state=2,t._value=e,s(t)}function s(t){2===t._state&&0===t._deferreds.length&&i._immediateFn(function(){t._handled||i._unhandledRejectionFn(t._value)});for(var e=0,n=t._deferreds.length;e<n;e++)o(t,t._deferreds[e]);t._deferreds=null}function c(t,e,n){this.onFulfilled="function"==typeof t?t:null,this.onRejected="function"==typeof e?e:null,this.promise=n}function l(t,e){var n=!1;try{t(function(t){n||(n=!0,u(e,t))},function(t){n||(n=!0,a(e,t))})}catch(r){if(n)return;n=!0,a(e,r)}}var t,n;t=this,n=setTimeout,i.prototype["catch"]=function(t){return this.then(null,t)},i.prototype.then=function(t,e){var n=new this.constructor(r);return o(this,new c(t,e,n)),n},i.all=function(t){var s=Array.prototype.slice.call(t);return new i(function(o,i){if(0===s.length)return o([]);var u=s.length;function a(e,t){try{if(t&&("object"==typeof t||"function"==typeof t)){var n=t.then;if("function"==typeof n)return void n.call(t,function(t){a(e,t)},i)}s[e]=t,0==--u&&o(s)}catch(r){i(r)}}for(var t=0;t<s.length;t++)a(t,s[t])})},i.resolve=function(e){return e&&"object"==typeof e&&e.constructor===i?e:new i(function(t){t(e)})},i.reject=function(n){return new i(function(t,e){e(n)})},i.race=function(o){return new i(function(t,e){for(var n=0,r=o.length;n<r;n++)o[n].then(t,e)})},i._immediateFn="function"==typeof e?function(t){e(t)}:function(t){n(t,0)},i._unhandledRejectionFn=function(t){"undefined"!=typeof console&&console&&console.warn("Possible Unhandled Promise Rejection:",t)},i._setImmediateFn=function(t){i._immediateFn=t},i._setUnhandledRejectionFn=function(t){i._unhandledRejectionFn=t},void 0!==f&&f.exports?f.exports=i:t.Promise||(t.Promise=i)}).call(this,t("timers").setImmediate)},{timers:3}],3:[function(s,t,c){(function(t,e){var r=s("process/browser.js").nextTick,n=Function.prototype.apply,o=Array.prototype.slice,i={},u=0;function a(t,e){this._id=t,this._clearFn=e}c.setTimeout=function(){return new a(n.call(setTimeout,window,arguments),clearTimeout)},c.setInterval=function(){return new a(n.call(setInterval,window,arguments),clearInterval)},c.clearTimeout=c.clearInterval=function(t){t.close()},a.prototype.unref=a.prototype.ref=function(){},a.prototype.close=function(){this._clearFn.call(window,this._id)},c.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},c.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},c._unrefActive=c.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;0<=e&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},c.setImmediate="function"==typeof t?t:function(t){var e=u++,n=!(arguments.length<2)&&o.call(arguments,1);return i[e]=!0,r(function(){i[e]&&(n?t.apply(null,n):t.call(null),c.clearImmediate(e))}),e},c.clearImmediate="function"==typeof e?e:function(t){delete i[t]}}).call(this,s("timers").setImmediate,s("timers").clearImmediate)},{"process/browser.js":1,timers:3}],4:[function(t,e,n){var r=t("promise-polyfill"),o="undefined"!=typeof window?window:Function("return this;")();e.exports={boltExport:o.Promise||r}},{"promise-polyfill":2}]},{},[4])(4)});function j(t){f.setTimeout(function(){throw t},0)}function M(i,t){return t(function(n){var r=[],o=0;0===i.length?n([]):_(i,function(t,e){t.get(function(e){return function(t){r[e]=t,++o>=i.length&&n(r)}}(e))})})}function L(t,e){return function(t){return M(t,z)}(x(t,e))}function N(t){return t.replace(/\r?\n/g,"<br>")}function B(t,e,n){var r=t.split(/\n\n/),o=function(t,e){var n,r=[],o="<"+t;if("object"==typeof e){for(n in e)e.hasOwnProperty(n)&&r.push(n+'="'+et.encodeAllRaw(e[n])+'"');r.length&&(o+=" "+r.join(" "))}return o+">"}(e,n),i="</"+e+">",u=K.map(r,function(t){return t.split(/\n/).join("<br />")});return 1===u.length?u[0]:K.map(u,function(t){return o+t+i}).join("")}var H=A.exports.boltExport,$=function(t){var n=F.none(),e=[],r=function(t){o()?u(t):e.push(t)},o=function(){return n.isSome()},i=function(t){_(t,u)},u=function(e){n.each(function(t){f.setTimeout(function(){e(t)},0)})};return t(function(t){n=F.some(t),i(e),e=[]}),{get:r,map:function(n){return $(function(e){r(function(t){e(n(t))})})},isReady:o}},W={nu:$,pure:function(e){return $(function(t){t(e)})}},U=function(n){function t(t){n().then(t,j)}return{map:function(t){return U(function(){return n().then(t)})},bind:function(e){return U(function(){return n().then(function(t){return e(t).toPromise()})})},anonBind:function(t){return U(function(){return n().then(function(){return t.toPromise()})})},toLazy:function(){return W.nu(t)},toCached:function(){var t=null;return U(function(){return null===t&&(t=n()),t})},toPromise:n,get:t}},z=function(t){return U(function(){return new H(t)})},V=tinymce.util.Tools.resolve("tinymce.Env"),q=tinymce.util.Tools.resolve("tinymce.util.Delay"),K=tinymce.util.Tools.resolve("tinymce.util.Tools"),G=tinymce.util.Tools.resolve("tinymce.util.VK"),X="x-tinymce/html",Y="\x3c!-- "+X+" --\x3e",Z=function(t){return Y+t},J=function(t){return t.replace(Y,"")},Q=function(t){return-1!==t.indexOf(Y)},tt=function(){return X},et=tinymce.util.Tools.resolve("tinymce.html.Entities"),nt=function(t){return!/<(?:\/?(?!(?:div|p|br|span)>)\w+|(?:(?!(?:span style="white-space:\s?pre;?">)|br\s?\/>))\w+\s[^>]+)>/i.test(t)},rt=function(t,e,n){return e?B(t,!0===e?"p":e,n):N(t)},ot=tinymce.util.Tools.resolve("tinymce.html.DomParser"),it=tinymce.util.Tools.resolve("tinymce.html.Node"),ut=tinymce.util.Tools.resolve("tinymce.html.Schema"),at=tinymce.util.Tools.resolve("tinymce.html.Serializer"),st={shouldBlockDrop:function(t){return t.getParam("paste_block_drop",!1)},shouldPasteDataImages:function(t){return t.getParam("paste_data_images",!1)},shouldFilterDrop:function(t){return t.getParam("paste_filter_drop",!0)},getPreProcess:function(t){return t.getParam("paste_preprocess")},getPostProcess:function(t){return t.getParam("paste_postprocess")},getWebkitStyles:function(t){return t.getParam("paste_webkit_styles")},shouldRemoveWebKitStyles:function(t){return t.getParam("paste_remove_styles_if_webkit",!0)},shouldMergeFormats:function(t){return t.getParam("paste_merge_formats",!0)},isSmartPasteEnabled:function(t){return t.getParam("smart_paste",!0)},isPasteAsTextEnabled:function(t){return t.getParam("paste_as_text",!1)},getRetainStyleProps:function(t){return t.getParam("paste_retain_style_properties")},getWordValidElements:function(t){return t.getParam("paste_word_valid_elements","-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")},shouldConvertWordFakeLists:function(t){return t.getParam("paste_convert_word_fake_lists",!0)},shouldUseDefaultFilters:function(t){return t.getParam("paste_enable_default_filters",!0)}};function ct(e,t){return K.each(t,function(t){e=t.constructor===RegExp?e.replace(t,""):e.replace(t[0],t[1])}),e}var lt={filter:ct,innerText:function ae(t){var e=ut(),n=ot({},e),r="",o=e.getShortEndedElements(),i=K.makeMap("script noscript style textarea video audio iframe object"," "),u=e.getBlockElements();return t=ct(t,[/<!\[[^\]]+\]>/g]),function a(t){var e=t.name,n=t;if("br"!==e){if("wbr"!==e)if(o[e]&&(r+=" "),i[e])r+=" ";else{if(3===t.type&&(r+=t.value),!t.shortEnded&&(t=t.firstChild))for(;a(t),t=t.next;);u[e]&&n.next&&(r+="\n","p"===e&&(r+="\n"))}}else r+="\n"}(n.parse(t)),r},trimHtml:function se(t){return t=ct(t,[/^[\s\S]*<body[^>]*>\s*|\s*<\/body[^>]*>[\s\S]*$/gi,/<!--StartFragment-->|<!--EndFragment-->/g,[/( ?)<span class="Apple-converted-space">\u00a0<\/span>( ?)/g,function r(t,e,n){return e||n?"\xa0":" "}],/<br class="Apple-interchange-newline">/g,/<br>$/i])},createIdGenerator:function ce(t){var e=0;return function(){return t+e++}},isMsEdge:function(){return-1!==f.navigator.userAgent.indexOf(" Edge/")}};function ft(e){var n,t;return t=[/^[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]/],e=e.replace(/^[\u00a0 ]+/,""),K.each(t,function(t){if(t.test(e))return!(n=!0)}),n}function dt(t){var i,u,a=1;function n(t){var e="";if(3===t.type)return t.value;if(t=t.firstChild)for(;e+=n(t),t=t.next;);return e}function s(t,e){if(3===t.type&&e.test(t.value))return t.value=t.value.replace(e,""),!1;if(t=t.firstChild)do{if(!s(t,e))return!1}while(t=t.next);return!0}function e(t,e,n){var r=t._listLevel||a;r!==a&&(i=r<a?i&&i.parent.parent:(u=i,null)),i&&i.name===e?i.append(t):(u=u||i,i=new it(e,1),1<n&&i.attr("start",""+n),t.wrap(i)),t.name="li",a<r&&u&&u.lastChild.append(i),a=r,function o(t){if(t._listIgnore)t.remove();else if(t=t.firstChild)for(;o(t),t=t.next;);}(t),s(t,/^\u00a0+/),s(t,/^\s*([\u2022\u00b7\u00a7\u25CF]|\w+\.)/),s(t,/^\u00a0+/)}for(var r=[],o=t.firstChild;null!=o;)if(r.push(o),null!==(o=o.walk()))for(;void 0!==o&&o.parent!==t;)o=o.walk();for(var c=0;c<r.length;c++)if("p"===(t=r[c]).name&&t.firstChild){var l=n(t);if(/^[\s\u00a0]*[\u2022\u00b7\u00a7\u25CF]\s*/.test(l)){e(t,"ul");continue}if(ft(l)){var f=/([0-9]+)\./.exec(l),d=1;f&&(d=parseInt(f[1],10)),e(t,"ol",d);continue}if(t._listLevel){e(t,"ul",1);continue}i=null}else u=i,i=null}function mt(n,r,o,i){var u,a={},t=n.dom.parseStyle(i);return K.each(t,function(t,e){switch(e){case"mso-list":(u=/\w+ \w+([0-9]+)/i.exec(i))&&(o._listLevel=parseInt(u[1],10)),/Ignore/i.test(t)&&o.firstChild&&(o._listIgnore=!0,o.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"!==t&&(a[e]=t));case"mso-element":if(/^(comment|comment-list)$/i.test(t))return void o.remove()}0!==e.indexOf("mso-comment")?0!==e.indexOf("mso-")&&("all"===st.getRetainStyleProps(n)||r&&r[e])&&(a[e]=t):o.remove()}),/(bold)/i.test(a["font-weight"])&&(delete a["font-weight"],o.wrap(new it("b",1))),/(italic)/i.test(a["font-style"])&&(delete a["font-style"],o.wrap(new it("i",1))),(a=n.dom.serializeStyle(a,o.name))||null}function pt(t,e){return{content:t,cancelled:e}}function gt(t,e,n,r){var o=s(t,e,n,r);return t.hasEventListeners("PastePostProcess")&&!o.isDefaultPrevented()?function(t,e,n,r){var o=t.dom.create("div",{style:"display:none"},e),i=c(t,o,n,r);return pt(i.node.innerHTML,i.isDefaultPrevented())}(t,o.content,n,r):pt(o.content,o.isDefaultPrevented())}function ht(t,e){return t.insertContent(function(t,e){var n=t.dom.create("body",{},e);return K.each(n.querySelectorAll("meta"),function(t){return t.parentNode.removeChild(t)}),n.innerHTML}(t,e),{merge:st.shouldMergeFormats(t),paste:!0}),!0}function vt(t){return/^https?:\/\/[\w\?\-\/+=.&%@~#]+$/i.test(t)}function yt(t){return vt(t)&&/.(gif|jpe?g|png)$/.test(t)}function bt(t,e,n){return!(!1!==t.selection.isCollapsed()||!vt(e))&&function(t,e,n){return t.undoManager.extra(function(){n(t,e)},function(){t.execCommand("mceInsertLink",!1,e)}),!0}(t,e,n)}function wt(t,e,n){return!!yt(e)&&function(t,e,n){return t.undoManager.extra(function(){n(t,e)},function(){t.insertContent('<img src="'+e+'">')}),!0}(t,e,n)}function xt(t){return"\n"===t||"\r"===t}function _t(n){return function(t,e,n){return _(t,function(t){n=e(n,t)}),n}(n,function(t,e){return function(t){return-1!==" \f\t\x0B".indexOf(t)}(e)||"\xa0"===e?t.pcIsSpace||""===t.str||t.str.length===n.length-1||function(t,e){return e<t.length&&0<=e&&xt(t[e])}(n,t.str.length+1)?{pcIsSpace:!1,str:t.str+"\xa0"}:{pcIsSpace:!0,str:t.str+" "}:{pcIsSpace:xt(e),str:t.str+e}},{pcIsSpace:!1,str:""}).str}function Pt(t,e,n){var r=n||Q(e),o=Vt(t,J(e),r);!1===o.cancelled&&qt(t,o.content)}function Tt(t,e){var n=t.dom.encode(e).replace(/\r\n/g,"\n"),r=_t(n),o=rt(r,t.settings.forced_root_block,t.settings.forced_root_block_attrs);Pt(t,o,!1)}function Dt(t){var e={};if(t){if(t.getData){var n=t.getData("Text");n&&0<n.length&&-1===n.indexOf("data:text/mce-internal,")&&(e["text/plain"]=n)}if(t.types)for(var r=0;r<t.types.length;r++){var o=t.types[r];try{e[o]=t.getData(o)}catch(i){e[o]=""}}}return e}function Ct(t,e){return e in t&&0<t[e].length}function kt(t){return Ct(t,"text/html")||Ct(t,"text/plain")}function St(e,t,n){var r=function(t){return"paste"===t.type}(t)?t.clipboardData:t.dataTransfer;if(e.settings.paste_data_images&&r){var o=function(t){var e=t.items?x(O(t.items),function(t){return t.getAsFile()}):[],n=t.files?O(t.files):[];return function(t,e){for(var n=[],r=0,o=t.length;r<o;r++){var i=t[r];e(i,r)&&n.push(i)}return n}(0<e.length?e:n,function(t){return/^image\/(jpeg|png|gif|bmp)$/.test(t.type)})}(r);if(0<o.length)return t.preventDefault(),function(t){return L(t,function(r){return z(function(t){var e=r.getAsFile?r.getAsFile():r,n=new window.FileReader;n.onload=function(){t({blob:e,uri:n.result})},n.readAsDataURL(e)})})}(o).get(function(t){n&&e.selection.setRng(n),_(t,function(t){!function(t,e){var n=function(t){var e;return-1!==(e=t.indexOf(","))?t.substr(e+1):null}(e.uri),r=Kt(),o=t.settings.images_reuse_filename&&e.blob.name?function(t,e){var n=e.match(/([\s\S]+?)\.(?:jpeg|jpg|png|gif)$/i);return n?t.dom.encode(n[1]):null}(t,e.blob.name):r,i=new f.Image;if(i.src=e.uri,function(t,e){return!t.images_dataimg_filter||t.images_dataimg_filter(e)}(t.settings,i)){var u,a=t.editorUpload.blobCache,s=void 0;(u=a.findFirst(function(t){return t.base64()===n}))?s=u:(s=a.create(r,e.blob,n,o),a.add(s)),Pt(t,'<img src="'+s.blobUri()+'">',!1)}else Pt(t,'<img src="'+e.uri+'">',!1)}(e,t)})}),!0}return!1}function Ft(t){return G.metaKeyPressed(t)&&86===t.keyCode||t.shiftKey&&45===t.keyCode}function Et(u,a,i){var s,c=function(){var e=d(F.none());return{clear:function(){e.set(F.none())},set:function(t){e.set(F.some(t))},isSet:function(){return e.get().isSome()},on:function(t){e.get().each(t)}}}();function l(t,e,n,r){var o,i;Ct(t,"text/html")?o=t["text/html"]:(o=a.getHtml(),r=r||Q(o),a.isDefaultContent(o)&&(n=!0)),o=lt.trimHtml(o),a.remove(),i=!1===r&&nt(o),o.length&&!i||(n=!0),n&&(o=Ct(t,"text/plain")&&i?t["text/plain"]:lt.innerText(o)),a.isDefaultContent(o)?e||u.windowManager.alert("Please use Ctrl+V/Cmd+V keyboard shortcuts to paste contents."):n?Tt(u,o):Pt(u,o,r)}u.on("keydown",function(t){function e(t){Ft(t)&&!t.isDefaultPrevented()&&a.remove()}if(Ft(t)&&!t.isDefaultPrevented()){if((s=t.shiftKey&&86===t.keyCode)&&V.webkit&&-1!==f.navigator.userAgent.indexOf("Version/"))return;if(t.stopImmediatePropagation(),c.set(t),window.setTimeout(function(){c.clear()},100),V.ie&&s)return t.preventDefault(),void m(u,!0);a.remove(),a.create(),u.once("keyup",e),u.once("paste",function(){u.off("keyup",e)})}}),u.on("paste",function(t){var e=c.isSet(),n=function(t,e){var n=Dt(e.clipboardData||t.getDoc().dataTransfer);return lt.isMsEdge()?K.extend(n,{"text/html":""}):n}(u,t),r="text"===i.get()||s,o=Ct(n,tt());s=!1,t.isDefaultPrevented()||function(t){var e=t.clipboardData;return-1!==f.navigator.userAgent.indexOf("Android")&&e&&e.items&&0===e.items.length}(t)?a.remove():kt(n)||!St(u,t,a.getLastRng()||u.selection.getRng())?(e||t.preventDefault(),!V.ie||e&&!t.ieFake||Ct(n,"text/html")||(a.create(),u.dom.bind(a.getEl(),"paste",function(t){t.stopPropagation()}),u.getDoc().execCommand("Paste",!1,null),n["text/html"]=a.getHtml()),Ct(n,"text/html")?(t.preventDefault(),o=o||Q(n["text/html"]),l(n,e,r,o)):q.setEditorTimeout(u,function(){l(n,e,r,o)},0)):a.remove()})}function It(t){return V.ie&&t.inline?f.document.body:t.getBody()}function Ot(e,t,n){!function(t){return It(t)!==t.getBody()}(e)||e.dom.bind(t,"paste keyup",function(t){Xt(e,n)||e.fire("paste")})}function Rt(t,e){return e===t}function At(t){var e=d(null),n="%MCEPASTEBIN%";return{create:function(){return function(t,e,n){var r,o=t.dom,i=t.getBody();e.set(t.selection.getRng()),r=t.dom.add(It(t),"div",{id:"mcepastebin","class":"mce-pastebin",contentEditable:!0,"data-mce-bogus":"all",style:"position: fixed; top: 50%; width: 10px; height: 10px; overflow: hidden; opacity: 0"},n),(V.ie||V.gecko)&&o.setStyle(r,"left","rtl"===o.getStyle(i,"direction",!0)?65535:-65535),o.bind(r,"beforedeactivate focusin focusout",function(t){t.stopPropagation()}),Ot(t,r,n),r.focus(),t.selection.select(r,!0)}(t,e,n)},remove:function(){return function(t,e){if(Gt(t)){for(var n=void 0,r=e.get();n=t.dom.get("mcepastebin");)t.dom.remove(n),t.dom.unbind(n);r&&t.selection.setRng(r)}e.set(null)}(t,e)},getEl:function(){return Gt(t)},getHtml:function(){return function(n){function e(t,e){t.appendChild(e),n.dom.remove(e,!0)}var r,t,o,i,u;for(t=K.grep(It(n).childNodes,function(t){return"mcepastebin"===t.id}),r=t.shift(),K.each(t,function(t){e(r,t)}),o=(i=n.dom.select("div[id=mcepastebin]",r)).length-1;0<=o;o--)u=n.dom.create("div"),r.insertBefore(u,i[o]),e(u,i[o]);return r?r.innerHTML:""}(t)},getLastRng:function(){return function(t){return t.get()}(e)},isDefault:function(){return Xt(t,n)},isDefaultContent:function(t){return Rt(n,t)}}}function jt(n,t){var e=At(n);return n.on("PreInit",function(){return function(u,t,e){var a;Et(u,t,e),u.parser.addNodeFilter("img",function(t,e,n){function r(t){t.attr("data-mce-object")||a===V.transparentSrc||t.remove()}var o;if(!u.settings.paste_data_images&&((o=n).data&&!0===o.data.paste))for(var i=t.length;i--;)(a=t[i].attr("src"))&&(0===a.indexOf("webkit-fake-url")?r(t[i]):u.settings.allow_html_data_urls||0!==a.indexOf("data:")||r(t[i]))})}(n,e,t)}),{pasteFormat:t,pasteHtml:function(t,e){return Pt(n,t,e)},pasteText:function(t){return Tt(n,t)},pasteImageData:function(t,e){return St(n,t,e)},getDataTransferItems:Dt,hasHtmlOrText:kt,hasContentType:Ct}}function Mt(){}function Lt(t,e,n){if(!function(t){return!1===V.iOS&&t!==undefined&&"function"==typeof t.setData&&!0!==lt.isMsEdge()}(t))return!1;try{return t.clearData(),t.setData("text/html",e),t.setData("text/plain",n),t.setData(tt(),e),!0}catch(r){return!1}}function Nt(t,e,n,r){Lt(t.clipboardData,e.html,e.text)?(t.preventDefault(),r()):n(e.html,r)}function Bt(a){return function(t,e){var n=Z(t),r=a.dom.create("div",{contenteditable:"false","data-mce-bogus":"all"}),o=a.dom.create("div",{contenteditable:"true"},n);a.dom.setStyles(r,{position:"fixed",top:"0",left:"-3000px",width:"1000px",overflow:"hidden"}),r.appendChild(o),a.dom.add(a.getBody(),r);var i=a.selection.getRng();o.focus();var u=a.dom.createRng();u.selectNodeContents(o),a.selection.setRng(u),q.setTimeout(function(){a.selection.setRng(i),r.parentNode.removeChild(r),e()},0)}}function Ht(t){return{html:t.selection.getContent({contextual:!0}),text:t.selection.getContent({format:"text"})}}function $t(t){return!t.selection.isCollapsed()||function(t){return!!t.dom.getParent(t.selection.getStart(),"td[data-mce-selected],th[data-mce-selected]",t.getBody())}(t)}function Wt(t,e){return Zt.getCaretRangeFromPoint(e.clientX,e.clientY,t.getDoc())}function Ut(t,e){t.focus(),t.selection.setRng(e)}var zt={preProcess:function(t,e){return st.shouldUseDefaultFilters(t)?function(r,t){var e,o;(e=st.getRetainStyleProps(r))&&(o=K.makeMap(e.split(/[, ]/))),t=lt.filter(t,[/<br class="?Apple-interchange-newline"?>/gi,/<b[^>]+id="?docs-internal-[^>]*>/gi,/<!--[\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(t,e){return 0<e.length?e.replace(/./," ").slice(Math.floor(e.length/2)).split("").join("\xa0"):""}]]);var n=st.getWordValidElements(r),i=ut({valid_elements:n,valid_children:"-li[p]"});K.each(i.elements,function(t){t.attributes["class"]||(t.attributes["class"]={},t.attributesOrder.push("class")),t.attributes.style||(t.attributes.style={},t.attributesOrder.push("style"))});var u=ot({},i);u.addAttributeFilter("style",function(t){for(var e,n=t.length;n--;)(e=t[n]).attr("style",mt(r,o,e,e.attr("style"))),"span"===e.name&&e.parent&&!e.attributes.length&&e.unwrap()}),u.addAttributeFilter("class",function(t){for(var e,n,r=t.length;r--;)n=(e=t[r]).attr("class"),/^(MsoCommentReference|MsoCommentText|msoDel)$/i.test(n)&&e.remove(),e.attr("class",null)}),u.addNodeFilter("del",function(t){for(var e=t.length;e--;)t[e].remove()}),u.addNodeFilter("a",function(t){for(var e,n,r,o=t.length;o--;)if(n=(e=t[o]).attr("href"),r=e.attr("name"),n&&-1!==n.indexOf("#_msocom_"))e.remove();else if(n&&0===n.indexOf("file://")&&(n=(n=n.split("#")[1])&&"#"+n),n||r){if(r&&!/^_?(?:toc|edn|ftn)/i.test(r)){e.unwrap();continue}e.attr({href:n,name:r})}else e.unwrap()});var a=u.parse(t);return st.shouldConvertWordFakeLists(r)&&dt(a),t=at({validate:r.settings.validate},i).serialize(a)}(t,e):e},isWordContent:function le(t){return/<font face="Times New Roman"|class="?Mso|style="[^"]*\bmso-|style='[^'']*\bmso-|w:WordDocument/i.test(t)||/class="OutlineElement/.test(t)||/id="?docs\-internal\-guid\-/.test(t)}},Vt=function(t,e,n){var r=zt.isWordContent(e),o=r?zt.preProcess(t,e):e;return gt(t,o,n,r)},qt=function(t,e){!1===st.isSmartPasteEnabled(t)?ht(t,e):function(e,n){K.each([bt,wt,ht],function(t){return!0!==t(e,n,ht)})}(t,e)},Kt=lt.createIdGenerator("mceclip"),Gt=function(t){return t.dom.get("mcepastebin")},Xt=function(t,e){var n=Gt(t);return function(t){return t&&"mcepastebin"===t.id}(n)&&Rt(e,n.innerHTML)},Yt=function(t){t.on("cut",function(e){return function(t){$t(e)&&Nt(t,Ht(e),Bt(e),function(){if(V.browser.isChrome()){var t=e.selection.getRng();q.setEditorTimeout(e,function(){e.selection.setRng(t),e.execCommand("Delete")},0)}else e.execCommand("Delete")})}}(t)),t.on("copy",function(e){return function(t){$t(e)&&Nt(t,Ht(e),Bt(e),Mt)}}(t))},Zt=tinymce.util.Tools.resolve("tinymce.dom.RangeUtils"),Jt=function(i,u,a){st.shouldBlockDrop(i)&&i.on("dragend dragover draggesture dragdrop drop drag",function(t){t.preventDefault(),t.stopPropagation()}),st.shouldPasteDataImages(i)||i.on("drop",function(t){var e=t.dataTransfer;e&&e.files&&0<e.files.length&&t.preventDefault()}),i.on("drop",function(t){var e,n;if(n=Wt(i,t),!t.isDefaultPrevented()&&!a.get()){e=u.getDataTransferItems(t.dataTransfer);var r=u.hasContentType(e,tt());if((u.hasHtmlOrText(e)&&!function(t){var e=t["text/plain"];return!!e&&0===e.indexOf("file://")}(e)||!u.pasteImageData(t,n))&&n&&st.shouldFilterDrop(i)){var o=e["mce-internal"]||e["text/html"]||e["text/plain"];o&&(t.preventDefault(),q.setEditorTimeout(i,function(){i.undoManager.transact(function(){e["mce-internal"]&&i.execCommand("Delete"),Ut(i,n),o=lt.trimHtml(o),e["text/html"]?u.pasteHtml(o,r):u.pasteText(o)})}))}}}),i.on("dragstart",function(t){a.set(!0)}),i.on("dragover dragend",function(t){st.shouldPasteDataImages(i)&&!1===a.get()&&(t.preventDefault(),Ut(i,Wt(i,t))),"dragend"===t.type&&a.set(!1)})},Qt=function(t){var e=t.plugins.paste,n=st.getPreProcess(t);n&&t.on("PastePreProcess",function(t){n.call(e,e,t)});var r=st.getPostProcess(t);r&&t.on("PastePostProcess",function(t){r.call(e,e,t)})};function te(e,n){e.on("PastePreProcess",function(t){t.content=n(e,t.content,t.internal,t.wordContent)})}function ee(t,e){if(!zt.isWordContent(e))return e;var n=[];K.each(t.schema.getBlockElements(),function(t,e){n.push(e)});var r=new RegExp("(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*(<\\/?("+n.join("|")+")[^>]*>)(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*","g");return e=lt.filter(e,[[r,"$1"]]),e=lt.filter(e,[[/<br><br>/g,"<BR><BR>"],[/<br>/g," "],[/<BR><BR>/g,"<br>"]])}function ne(t,e,n,r){if(r||n)return e;var c,o=st.getWebkitStyles(t);if(!1===st.shouldRemoveWebKitStyles(t)||"all"===o)return e;if(o&&(c=o.split(/[, ]/)),c){var l=t.dom,f=t.selection.getNode();e=e.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi,function(t,e,n,r){var o=l.parseStyle(l.decode(n)),i={};if("none"===c)return e+r;for(var u=0;u<c.length;u++){var a=o[c[u]],s=l.getStyle(f,c[u],!0);/color/.test(c[u])&&(a=l.toHex(a),s=l.toHex(s)),s!==a&&(i[c[u]]=a)}return(i=l.serializeStyle(i,"span"))?e+' style="'+i+'"'+r:e+r})}else e=e.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi,"$1$3");return e=e.replace(/(<[^>]+) data-mce-style="([^"]+)"([^>]*>)/gi,function(t,e,n,r){return e+' style="'+n+'"'+r})}function re(n,t){n.$("a",t).find("font,u").each(function(t,e){n.dom.remove(e,!0)})}function oe(n,r){return function(e){e.setActive("text"===r.pasteFormat.get());function t(t){return e.setActive(t.state)}return n.on("PastePlainTextToggle",t),function(){return n.off("PastePlainTextToggle",t)}}}var ie=function(t){V.webkit&&te(t,ne),V.ie&&(te(t,ee),function r(e,n){e.on("PastePostProcess",function(t){n(e,t.node)})}(t,re))},ue=function(t,e){t.ui.registry.addToggleButton("pastetext",{active:!1,icon:"paste-text",tooltip:"Paste as text",onAction:function(){return t.execCommand("mceTogglePlainTextPaste")},onSetup:oe(t,e)}),t.ui.registry.addToggleMenuItem("pastetext",{text:"Paste as text",onAction:function(){return t.execCommand("mceTogglePlainTextPaste")},onSetup:oe(t,e)})};!function fe(){r.add("paste",function(t){if(!1===u(t)){var e=d(!1),n=d(st.isPasteAsTextEnabled(t)?"text":"html"),r=jt(t,n),o=ie(t);return ue(t,r),p(t,r),Qt(t),Yt(t),Jt(t,r,e),a(r,o)}})}()}(window);
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/plugins/preview/plugin.min.js b/app/static/vendors/tinymce/js/tinymce/plugins/preview/plugin.min.js
deleted file mode 100644 (file)
index 5ccd877..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.3 (2019-12-04)
- */
-!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),l=tinymce.util.Tools.resolve("tinymce.util.Tools"),m=function(e){return e.getParam("content_style","")},u=function(e){return e.getParam("content_css_cors",!1,"boolean")},y=tinymce.util.Tools.resolve("tinymce.Env"),n=function(t){var n="",i=t.dom.encode,e=m(t);n+='<base href="'+i(t.documentBaseURI.getURI())+'">',e&&(n+='<style type="text/css">'+e+"</style>");var o=u(t)?' crossorigin="anonymous"':"";l.each(t.contentCSS,function(e){n+='<link type="text/css" rel="stylesheet" href="'+i(t.documentBaseURI.toAbsolute(e))+'"'+o+">"});var r=t.settings.body_id||"tinymce";-1!==r.indexOf("=")&&(r=(r=t.getParam("body_id","","hash"))[t.id]||r);var a=t.settings.body_class||"";-1!==a.indexOf("=")&&(a=(a=t.getParam("body_class","","hash"))[t.id]||"");var c='<script>document.addEventListener && document.addEventListener("click", function(e) {for (var elm = e.target; elm; elm = elm.parentNode) {if (elm.nodeName === "A" && !('+(y.mac?"e.metaKey":"e.ctrlKey && !e.altKey")+")) {e.preventDefault();}}}, false);<\/script> ",s=t.getBody().dir,d=s?' dir="'+i(s)+'"':"";return"<!DOCTYPE html><html><head>"+n+'</head><body id="'+i(r)+'" class="mce-content-body '+i(a)+'"'+d+">"+t.getContent()+c+"</body></html>"},t=function(e){e.addCommand("mcePreview",function(){!function(e){var t=n(e);e.windowManager.open({title:"Preview",size:"large",body:{type:"panel",items:[{name:"preview",type:"iframe",sandboxed:!0}]},buttons:[{type:"cancel",name:"close",text:"Close",primary:!0}],initialData:{preview:t}}).focus("close")}(e)})},i=function(e){e.ui.registry.addButton("preview",{icon:"preview",tooltip:"Preview",onAction:function(){return e.execCommand("mcePreview")}}),e.ui.registry.addMenuItem("preview",{icon:"preview",text:"Preview",onAction:function(){return e.execCommand("mcePreview")}})};!function o(){e.add("preview",function(e){t(e),i(e)})}()}();
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/plugins/print/plugin.min.js b/app/static/vendors/tinymce/js/tinymce/plugins/print/plugin.min.js
deleted file mode 100644 (file)
index ff60b21..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.3 (2019-12-04)
- */
-!function(){"use strict";var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=tinymce.util.Tools.resolve("tinymce.Env"),i=function(n){n.addCommand("mcePrint",function(){t.browser.isIE()?n.getDoc().execCommand("print",!1,null):n.getWin().print()})},e=function(n){n.ui.registry.addButton("print",{icon:"print",tooltip:"Print",onAction:function(){return n.execCommand("mcePrint")}}),n.ui.registry.addMenuItem("print",{text:"Print...",icon:"print",onAction:function(){return n.execCommand("mcePrint")}})};!function o(){n.add("print",function(n){i(n),e(n),n.addShortcut("Meta+P","","mcePrint")})}()}();
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/plugins/quickbars/plugin.min.js b/app/static/vendors/tinymce/js/tinymce/plugins/quickbars/plugin.min.js
deleted file mode 100644 (file)
index 0010b18..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.3 (2019-12-04)
- */
-!function(u){"use strict";function e(){}function l(e){return function(){return e}}function n(){return p}var r,t=tinymce.util.Tools.resolve("tinymce.PluginManager"),i=0,o=function(e,n,r){e.plugins.table?e.plugins.table.insertTable(n,r):function(r,t,o){r.undoManager.transact(function(){var e,n;r.insertContent(function(e,n){var r,t,o;for(o='<table data-mce-id="mce" style="width: 100%">',o+="<tbody>",t=0;t<n;t++){for(o+="<tr>",r=0;r<e;r++)o+="<td><br></td>";o+="</tr>"}return o+="</tbody>",o+="</table>"}(t,o)),(e=function(e){return e.dom.select("*[data-mce-id]")[0]}(r)).removeAttribute("data-mce-id"),n=r.dom.select("td,th",e),r.selection.setCursorLocation(n[0],0)})}(e,n,r)},c=function(e,n,r){var t,o;o=(t=e.editorUpload.blobCache).create(function(e){var n=(new Date).getTime();return e+"_"+Math.floor(1e9*Math.random())+ ++i+String(n)}("mceu"),r,n),t.add(o),e.insertContent(e.dom.createHTML("img",{src:o.blobUri()}))},s=tinymce.util.Tools.resolve("tinymce.util.Promise"),a=function(r){return new s(function(e){var n=new u.FileReader;n.onloadend=function(){e(n.result.split(",")[1])},n.readAsDataURL(r)})},f=tinymce.util.Tools.resolve("tinymce.Env"),d=tinymce.util.Tools.resolve("tinymce.util.Delay"),m=function(i){return new s(function(r){var t=u.document.createElement("input");t.type="file",t.style.position="fixed",t.style.left="0",t.style.top="0",t.style.opacity="0.001",u.document.body.appendChild(t);t.addEventListener("change",function(e){r(Array.prototype.slice.call(e.target.files))});var o=function(e){function n(){r([]),t.parentNode.removeChild(t)}f.os.isAndroid()&&"remove"!==e.type?d.setEditorTimeout(i,n,0):n(),i.off("focusin remove",o)};i.on("focusin remove",o),t.click()})},g=function(r){r.ui.registry.addButton("quickimage",{icon:"image",tooltip:"Insert image",onAction:function(){m(r).then(function(e){if(0<e.length){var n=e[0];a(n).then(function(e){c(r,e,n)})}})}}),r.ui.registry.addButton("quicktable",{icon:"table",tooltip:"Insert table",onAction:function(){o(r,2,2)}})},v=l(!1),h=l(!0),p=(r={fold:function(e,n){return e()},is:v,isSome:v,isNone:h,getOr:b,getOrThunk:O,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:l(null),getOrUndefined:l(undefined),or:b,orThunk:O,map:n,each:e,bind:n,exists:v,forall:h,filter:n,equals:N,equals_:N,toArray:function(){return[]},toString:l("none()")},Object.freeze&&Object.freeze(r),r);function N(e){return e.isNone()}function O(e){return e()}function b(e){return e}function E(n){return function(e){return function(e){if(null===e)return"null";var n=typeof e;return"object"==n&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"==n&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":n}(e)===n}}var w=function(r){function e(){return o}function n(e){return e(r)}var t=l(r),o={fold:function(e,n){return n(r)},is:function(e){return r===e},isSome:h,isNone:v,getOr:t,getOrThunk:t,getOrDie:t,getOrNull:t,getOrUndefined:t,or:e,orThunk:e,map:function(e){return w(e(r))},each:function(e){e(r)},bind:n,exists:n,forall:n,filter:function(e){return e(r)?o:p},toArray:function(){return[r]},toString:function(){return"some("+r+")"},equals:function(e){return e.is(r)},equals_:function(e,n){return e.fold(v,function(e){return n(r,e)})}};return o},T={some:w,none:n,from:function(e){return null===e||e===undefined?p:w(e)}},y=function(e){if(null===e||e===undefined)throw new Error("Node cannot be null or undefined");return{dom:l(e)}},S={fromHtml:function(e,n){var r=(n||u.document).createElement("div");if(r.innerHTML=e,!r.hasChildNodes()||1<r.childNodes.length)throw u.console.error("HTML does not have a single root node",e),new Error("HTML must have a single root node");return y(r.childNodes[0])},fromTag:function(e,n){var r=(n||u.document).createElement(e);return y(r)},fromText:function(e,n){var r=(n||u.document).createTextNode(e);return y(r)},fromDom:y,fromPoint:function(e,n,r){var t=e.dom();return T.from(t.elementFromPoint(n,r)).map(y)}},x=(u.Node.ATTRIBUTE_NODE,u.Node.CDATA_SECTION_NODE,u.Node.COMMENT_NODE,u.Node.DOCUMENT_NODE,u.Node.DOCUMENT_TYPE_NODE,u.Node.DOCUMENT_FRAGMENT_NODE,u.Node.ELEMENT_NODE),D=(u.Node.TEXT_NODE,u.Node.PROCESSING_INSTRUCTION_NODE,u.Node.ENTITY_REFERENCE_NODE,u.Node.ENTITY_NODE,u.Node.NOTATION_NODE,"undefined"!=typeof u.window?u.window:Function("return this;")(),E("string")),k=E("object"),_=E("array"),C=E("boolean"),A=E("undefined"),M=E("function"),R=Array.prototype.slice;M(Array.from)&&Array.from;function I(e,n,r,t,o){return e(r,t)?T.some(r):M(o)&&o(r)?T.none():n(r,t,o)}function q(e,n,r){return 0!=(e.compareDocumentPosition(n)&r)}function L(e,n){var r=function(e,n){for(var r=0;r<e.length;r++){var t=e[r];if(t.test(n))return t}return undefined}(e,n);if(!r)return{major:0,minor:0};function t(e){return Number(n.replace(r,"$"+e))}return V(t(1),t(2))}function P(e,n){return function(){return n===e}}function F(e,n){return function(){return n===e}}function U(e,n){var r=String(n).toLowerCase();return function(e,n){for(var r=0,t=e.length;r<t;r++){var o=e[r];if(n(o,r))return T.some(o)}return T.none()}(e,function(e){return e.search(r)})}function B(e,n){return-1!==e.indexOf(n)}function j(n){return function(e){return B(e,n)}}function H(e,n){var r=e.dom();if(r.nodeType!==me)return!1;var t=r;if(t.matches!==undefined)return t.matches(n);if(t.msMatchesSelector!==undefined)return t.msMatchesSelector(n);if(t.webkitMatchesSelector!==undefined)return t.webkitMatchesSelector(n);if(t.mozMatchesSelector!==undefined)return t.mozMatchesSelector(n);throw new Error("Browser lacks native selectors")}function X(e,n,r){for(var t=e.dom(),o=M(r)?r:l(!1);t.parentNode;){t=t.parentNode;var i=S.fromDom(t);if(n(i))return T.some(i);if(o(i))break}return T.none()}function z(e,n,r){return X(e,function(e){return H(e,n)},r)}var G,W=function(e,n){return q(e,n,u.Node.DOCUMENT_POSITION_CONTAINED_BY)},Y=function(e){function n(){return r}var r=e;return{get:n,set:function(e){r=e},clone:function(){return Y(n())}}},$=function(){return V(0,0)},V=function(e,n){return{major:e,minor:n}},J={nu:V,detect:function(e,n){var r=String(n).toLowerCase();return 0===e.length?$():L(e,r)},unknown:$},K="Firefox",Q=function(e){var n=e.current;return{current:n,version:e.version,isEdge:P("Edge",n),isChrome:P("Chrome",n),isIE:P("IE",n),isOpera:P("Opera",n),isFirefox:P(K,n),isSafari:P("Safari",n)}},Z={unknown:function(){return Q({current:undefined,version:J.unknown()})},nu:Q,edge:l("Edge"),chrome:l("Chrome"),ie:l("IE"),opera:l("Opera"),firefox:l(K),safari:l("Safari")},ee="Windows",ne="Android",re="Solaris",te="FreeBSD",oe=function(e){var n=e.current;return{current:n,version:e.version,isWindows:F(ee,n),isiOS:F("iOS",n),isAndroid:F(ne,n),isOSX:F("OSX",n),isLinux:F("Linux",n),isSolaris:F(re,n),isFreeBSD:F(te,n)}},ie={unknown:function(){return oe({current:undefined,version:J.unknown()})},nu:oe,windows:l(ee),ios:l("iOS"),android:l(ne),linux:l("Linux"),osx:l("OSX"),solaris:l(re),freebsd:l(te)},ue=function(e,r){return U(e,r).map(function(e){var n=J.detect(e.versionRegexes,r);return{current:e.name,version:n}})},ce=function(e,r){return U(e,r).map(function(e){var n=J.detect(e.versionRegexes,r);return{current:e.name,version:n}})},se=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,ae=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(e){return B(e,"edge/")&&B(e,"chrome")&&B(e,"safari")&&B(e,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,se],search:function(e){return B(e,"chrome")&&!B(e,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(e){return B(e,"msie")||B(e,"trident")}},{name:"Opera",versionRegexes:[se,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:j("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:j("firefox")},{name:"Safari",versionRegexes:[se,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(e){return(B(e,"safari")||B(e,"mobile/"))&&B(e,"applewebkit")}}],fe=[{name:"Windows",search:j("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(e){return B(e,"iphone")||B(e,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:j("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:j("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:j("linux"),versionRegexes:[]},{name:"Solaris",search:j("sunos"),versionRegexes:[]},{name:"FreeBSD",search:j("freebsd"),versionRegexes:[]}],de={browsers:l(ae),oses:l(fe)},le=Y(function(e,n){var r=de.browsers(),t=de.oses(),o=ue(r,e).fold(Z.unknown,Z.nu),i=ce(t,e).fold(ie.unknown,ie.nu);return{browser:o,os:i,deviceType:function(e,n,r,t){var o=e.isiOS()&&!0===/ipad/i.test(r),i=e.isiOS()&&!o,u=e.isiOS()||e.isAndroid(),c=u||t("(pointer:coarse)"),s=o||!i&&u&&t("(min-device-width:768px)"),a=i||u&&!s,f=n.isSafari()&&e.isiOS()&&!1===/safari/i.test(r),d=!a&&!s&&!f;return{isiPad:l(o),isiPhone:l(i),isTablet:l(s),isPhone:l(a),isTouch:l(c),isAndroid:e.isAndroid,isiOS:e.isiOS,isWebView:l(f),isDesktop:l(d)}}(i,o,e,n)}}(u.navigator.userAgent,function(e){return u.window.matchMedia(e).matches})),me=x,ge=(le.get().browser.isIE(),{getToolbarItemsOr:(G=D,function(e,n,r){return function(e,n){if(!n(e))throw new Error("Default value doesn't match requested type.")}(r,G),function(e,n){if(_(e)||k(e))throw new Error("expected a string but found: "+e);return A(e)?n:C(e)?!1===e?"":n:e}(e.getParam(n,r),r)})}),ve=function(e){return ge.getToolbarItemsOr(e,"quickbars_selection_toolbar","bold italic | quicklink h2 h3 blockquote")},he=function(e){return ge.getToolbarItemsOr(e,"quickbars_insert_toolbar","quickimage quicktable")},pe=function(o){var e=he(o);0<e.trim().length&&o.ui.registry.addContextToolbar("quickblock",{predicate:function(e){function n(e){return e.dom()===o.getBody()}var r=S.fromDom(e),t=o.schema.getTextBlockElements();return function(e,n,r){return I(H,z,e,n,r)}(r,"table",n).fold(function(){return function(e,n,r){return I(function(e,n){return n(e)},X,e,n,r)}(r,function(e){return function(e){return e.dom().nodeName.toLowerCase()}(e)in t&&o.dom.isEmpty(e.dom())},n).isSome()},function(){return!1})},items:e,position:"line",scope:"editor"})},Ne=function(n){n.ui.registry.addContextToolbar("imageselection",{predicate:function(e){return"IMG"===e.nodeName||"FIGURE"===e.nodeName&&/image/i.test(e.className)},items:"alignleft aligncenter alignright",position:"node"});var e=ve(n);0<e.trim().length&&n.ui.registry.addContextToolbar("textselection",{predicate:function(e){return!n.selection.isCollapsed()},items:e,position:"selection"})};!function Oe(){t.add("quickbars",function(e){g(e),pe(e),Ne(e)})}()}(window);
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/plugins/save/plugin.min.js b/app/static/vendors/tinymce/js/tinymce/plugins/save/plugin.min.js
deleted file mode 100644 (file)
index 7fbd4f0..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.3 (2019-12-04)
- */
-!function(){"use strict";function t(n,e){n.notificationManager.open({text:e,type:"error"})}function e(t){return function(n){function e(){n.setDisabled(a(t)&&!t.isDirty())}return t.on("NodeChange dirty",e),function(){return t.off("NodeChange dirty",e)}}}var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),o=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),i=tinymce.util.Tools.resolve("tinymce.util.Tools"),a=function(n){return n.getParam("save_enablewhendirty",!0)},c=function(n){return!!n.getParam("save_onsavecallback")},r=function(n){return!!n.getParam("save_oncancelcallback")},u=function(n){var e;if(e=o.DOM.getParent(n.id,"form"),!a(n)||n.isDirty()){if(n.save(),c(n))return n.execCallback("save_onsavecallback",n),void n.nodeChanged();e?(n.setDirty(!1),e.onsubmit&&!e.onsubmit()||("function"==typeof e.submit?e.submit():t(n,"Error: Form submit field collision.")),n.nodeChanged()):t(n,"Error: No form element found.")}},l=function(n){var e=i.trim(n.startContent);r(n)?n.execCallback("save_oncancelcallback",n):n.resetContent(e)},s=function(n){n.addCommand("mceSave",function(){u(n)}),n.addCommand("mceCancel",function(){l(n)})},d=function(n){n.ui.registry.addButton("save",{icon:"save",tooltip:"Save",disabled:!0,onAction:function(){return n.execCommand("mceSave")},onSetup:e(n)}),n.ui.registry.addButton("cancel",{icon:"cancel",tooltip:"Cancel",disabled:!0,onAction:function(){return n.execCommand("mceCancel")},onSetup:e(n)}),n.addShortcut("Meta+S","","mceSave")};!function m(){n.add("save",function(n){d(n),s(n)})}()}();
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/plugins/searchreplace/plugin.min.js b/app/static/vendors/tinymce/js/tinymce/plugins/searchreplace/plugin.min.js
deleted file mode 100644 (file)
index c2a5749..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.3 (2019-12-04)
- */
-!function(){"use strict";var s=function(e){function n(){return t}var t=e;return{get:n,set:function(e){t=e},clone:function(){return s(n())}}},e=tinymce.util.Tools.resolve("tinymce.PluginManager"),p=function(){return(p=Object.assign||function(e){for(var n,t=1,r=arguments.length;t<r;t++)for(var o in n=arguments[t])Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o]);return e}).apply(this,arguments)},g=tinymce.util.Tools.resolve("tinymce.util.Tools");function x(e){return e&&1===e.nodeType&&"false"===e.contentEditable}function h(e){var n=e.getAttribute("data-mce-index");return"number"==typeof n?""+n:n}function v(e){var n=e.parentNode;e.firstChild&&n.insertBefore(e.firstChild,e),e.parentNode.removeChild(e)}function c(e,n){var t,r=[];if((t=g.toArray(e.getBody().getElementsByTagName("span"))).length)for(var o=0;o<t.length;o++){var i=h(t[o]);null!==i&&i.length&&i===n.toString()&&r.push(t[o])}return r}function u(e,n,t){var r=n.get(),o=r.index,i=e.dom;(t=!1!==t)?o+1===r.count?o=0:o++:o-1==-1?o=r.count-1:o--,i.removeClass(c(e,r.index),"mce-match-marker-selected");var a=c(e,o);return a.length?(i.addClass(c(e,o),"mce-match-marker-selected"),e.selection.scrollIntoView(a[0]),o):-1}function y(e,n){var t=n.parentNode;e.remove(n),e.isEmpty(t)&&e.remove(t)}function f(e,n,t,r,o){t=(t=t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")).replace(/\s/g,"[^\\S\\r\\n]"),t=o?"\\b"+t+"\\b":t;var i=function(e,n,t){var r,o;return(o=e.dom.create("span",{"data-mce-bogus":1})).className="mce-match-marker",r=e.getBody(),C(e,n,!1),d.findAndReplaceDOMText(t,r,o,!1,e.schema)}(e,n,new RegExp(t,r?"g":"gi"));if(i){var a=u(e,n,!0);n.set({index:a,count:i,text:t,matchCase:r,wholeWord:o})}return i}function b(e,n){var t=u(e,n,!0);n.set(p(p({},n.get()),{index:t}))}function N(e,n){var t=u(e,n,!1);n.set(p(p({},n.get()),{index:t}))}function w(e){var n=h(e);return null!==n&&0<n.length}function m(e,n,t,r,o){var i,a,c,u,d,l=n.get(),s=l.index,f=s;for(r=!1!==r,c=e.getBody(),a=g.grep(g.toArray(c.getElementsByTagName("span")),w),i=0;i<a.length;i++){var m=h(a[i]);if(u=d=parseInt(m,10),o||u===l.index){for(t.length?(a[i].firstChild.nodeValue=t,v(a[i])):y(e.dom,a[i]);a[++i];){if((u=parseInt(h(a[i]),10))!==d){i--;break}y(e.dom,a[i])}r&&f--}else s<d&&a[i].setAttribute("data-mce-index",String(d-1))}return n.set(p(p({},l),{count:o?0:l.count-1,index:f})),r?b(e,n):N(e,n),!o&&0<n.get().count}function n(){}function i(e){return function(){return e}}function t(){return T}var r,d={findAndReplaceDOMText:function z(e,n,t,r,o){var i,a,h,f,m,p,c=[],u=0;function d(e,n){if(n=n||0,!e[0])throw new Error("findAndReplaceDOMText cannot handle zero-length matches");var t=e.index;if(0<n){var r=e[n];if(!r)throw new Error("Invalid capture group");t+=e[0].indexOf(r),e[0]=r}return[t,t+e[0].length,[e[0]]]}if(h=n.ownerDocument,f=o.getBlockElements(),m=o.getWhiteSpaceElements(),p=o.getShortEndedElements(),a=function l(e){var n;if(3===e.nodeType)return e.data;if(m[e.nodeName]&&!f[e.nodeName])return"";if(n="",x(e))return"\n";if((f[e.nodeName]||p[e.nodeName])&&(n+="\n"),e=e.firstChild)for(;n+=l(e),e=e.nextSibling;);return n}(n)){if(e.global)for(;i=e.exec(a);)c.push(d(i,r));else i=a.match(e),c.push(d(i,r));return c.length&&(u=c.length,function g(e,n,t){var r,o,i,a,c=[],u=0,d=e,l=n.shift(),s=0;e:for(;;){if((f[d.nodeName]||p[d.nodeName]||x(d))&&u++,3===d.nodeType&&(!o&&d.length+u>=l[1]?(o=d,a=l[1]-u):r&&c.push(d),!r&&d.length+u>l[0]&&(r=d,i=l[0]-u),u+=d.length),r&&o){if(d=t({startNode:r,startNodeIndex:i,endNode:o,endNodeIndex:a,innerNodes:c,match:l[2],matchIndex:s}),u-=o.length-a,o=r=null,c=[],s++,!(l=n.shift()))break}else if(m[d.nodeName]&&!f[d.nodeName]||!d.firstChild){if(d.nextSibling){d=d.nextSibling;continue}}else if(!x(d)){d=d.firstChild;continue}for(;;){if(d.nextSibling){d=d.nextSibling;break}if(d.parentNode===e)break e;d=d.parentNode}}}(n,c,function s(e){var g;if("function"!=typeof e){var r=e.nodeType?e:h.createElement(e);g=function(e,n){var t=r.cloneNode(!1);return t.setAttribute("data-mce-index",n),e&&t.appendChild(h.createTextNode(e)),t}}else g=e;return function(e){var n,t,r,o=e.startNode,i=e.endNode,a=e.matchIndex;if(o===i){var c=o;r=c.parentNode,0<e.startNodeIndex&&(n=h.createTextNode(c.data.substring(0,e.startNodeIndex)),r.insertBefore(n,c));var u=g(e.match[0],a);return r.insertBefore(u,c),e.endNodeIndex<c.length&&(t=h.createTextNode(c.data.substring(e.endNodeIndex)),r.insertBefore(t,c)),c.parentNode.removeChild(c),u}n=h.createTextNode(o.data.substring(0,e.startNodeIndex)),t=h.createTextNode(i.data.substring(e.endNodeIndex));for(var d=g(o.data.substring(e.startNodeIndex),a),l=0,s=e.innerNodes.length;l<s;++l){var f=e.innerNodes[l],m=g(f.data,a);f.parentNode.replaceChild(m,f)}var p=g(i.data.substring(0,e.endNodeIndex),a);return(r=o.parentNode).insertBefore(n,o),r.insertBefore(d,o),r.removeChild(o),(r=i.parentNode).insertBefore(p,i),r.insertBefore(t,i),r.removeChild(i),p}}(t))),u}}},C=function(e,n,t){var r,o,i,a,c=n.get();for(o=g.toArray(e.getBody().getElementsByTagName("span")),r=0;r<o.length;r++){var u=h(o[r]);null!==u&&u.length&&(u===c.index.toString()&&(i=i||o[r].firstChild,a=o[r].firstChild),v(o[r]))}if(n.set(p(p({},c),{index:-1,count:0,text:""})),i&&a){var d=e.dom.createRng();return d.setStart(i,0),d.setEnd(a,a.data.length),!1!==t&&e.selection.setRng(d),d}},o=function(r,o){return{done:function(e){return C(r,o,e)},find:function(e,n,t){return f(r,o,e,n,t)},next:function(){return b(r,o)},prev:function(){return N(r,o)},replace:function(e,n,t){return m(r,o,e,n,t)}}},a=i(!1),l=i(!0),T=(r={fold:function(e,n){return e()},is:a,isSome:a,isNone:l,getOr:A,getOrThunk:O,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:i(null),getOrUndefined:i(undefined),or:A,orThunk:O,map:t,each:n,bind:t,exists:a,forall:l,filter:t,equals:S,equals_:S,toArray:function(){return[]},toString:i("none()")},Object.freeze&&Object.freeze(r),r);function S(e){return e.isNone()}function O(e){return e()}function A(e){return e}function B(e,n){return function(){F(e,n)}}var I,k=function(t){function e(){return o}function n(e){return e(t)}var r=i(t),o={fold:function(e,n){return n(t)},is:function(e){return t===e},isSome:l,isNone:a,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:e,orThunk:e,map:function(e){return k(e(t))},each:function(e){e(t)},bind:n,exists:n,forall:n,filter:function(e){return e(t)?o:T},toArray:function(){return[t]},toString:function(){return"some("+t+")"},equals:function(e){return e.is(t)},equals_:function(e,n){return e.fold(a,function(e){return n(t,e)})}};return o},E={some:k,none:t,from:function(e){return null===e||e===undefined?T:k(e)}},M=(I="function",function(e){return function(e){if(null===e)return"null";var n=typeof e;return"object"==n&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"==n&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":n}(e)===I}),R=Array.prototype.slice,D=(M(Array.from)&&Array.from,tinymce.util.Tools.resolve("tinymce.Env")),F=function(i,a){var e=function(){var n=s(E.none());return{clear:function(){n.set(E.none())},set:function(e){n.set(E.some(e))},isSet:function(){return n.get().isSome()},on:function(e){n.get().each(e)}}}();i.undoManager.add();var n=g.trim(i.selection.getContent({format:"text"}));function c(e){(function(e,n){return 1<n.get().count}(0,a)?e.enable:e.disable)("next"),(function(e,n){return 1<n.get().count}(0,a)?e.enable:e.disable)("prev")}function u(e,n){!function(e,n){for(var t=0,r=e.length;t<r;t++){n(e[t],t)}}(["replace","replaceall","prev","next"],n?e.disable:e.enable)}function r(e,n){D.browser.isSafari()&&D.deviceType.isTouch()&&("find"===n||"replace"===n||"replaceall"===n)&&e.focus(n)}function d(e){C(i,a,!1),u(e,!0),c(e)}function o(e){var n=e.getData(),t=a.get();if(n.findtext.length){if(t.text===n.findtext&&t.matchCase===n.matchcase&&t.wholeWord===n.wholewords)b(i,a);else{var r=f(i,a,n.findtext,n.matchcase,n.wholewords);r<=0&&!function o(e){i.windowManager.alert("Could not find the specified string.",function(){e.focus("findtext")})}(e),u(e,0===r)}c(e)}else d(e)}var t=a.get(),l={title:"Find and Replace",size:"normal",body:{type:"panel",items:[{type:"bar",items:[{type:"input",name:"findtext",placeholder:"Find",maximized:!0,inputMode:"search"},{type:"button",name:"prev",text:"Previous",icon:"action-prev",disabled:!0,borderless:!0},{type:"button",name:"next",text:"Next",icon:"action-next",disabled:!0,borderless:!0}]},{type:"input",name:"replacetext",placeholder:"Replace with",inputMode:"search"}]},buttons:[{type:"menu",name:"options",icon:"preferences",tooltip:"Preferences",align:"start",items:[{type:"togglemenuitem",name:"matchcase",text:"Match case"},{type:"togglemenuitem",name:"wholewords",text:"Find whole words only"}]},{type:"custom",name:"find",text:"Find",primary:!0},{type:"custom",name:"replace",text:"Replace",disabled:!0},{type:"custom",name:"replaceall",text:"Replace All",disabled:!0}],initialData:{findtext:n,replacetext:"",wholewords:t.wholeWord,matchcase:t.matchCase},onChange:function(e,n){"findtext"===n.name&&0<a.get().count&&d(e)},onAction:function(e,n){var t=e.getData();switch(n.name){case"find":o(e);break;case"replace":m(i,a,t.replacetext)?c(e):d(e);break;case"replaceall":m(i,a,t.replacetext,!0,!0),d(e);break;case"prev":N(i,a),c(e);break;case"next":b(i,a),c(e)}r(e,n.name)},onSubmit:function(e){o(e),r(e,"find")},onClose:function(){i.focus(),C(i,a),i.undoManager.add()}};e.set(i.windowManager.open(l,{inline:"toolbar"}))},j=function(e,n){e.addCommand("SearchReplace",function(){F(e,n)})},P=function(e,n){e.ui.registry.addMenuItem("searchreplace",{text:"Find and replace...",shortcut:"Meta+F",onAction:B(e,n),icon:"search"}),e.ui.registry.addButton("searchreplace",{tooltip:"Find and replace",onAction:B(e,n),icon:"search"}),e.shortcuts.add("Meta+F","",B(e,n))};!function W(){e.add("searchreplace",function(e){var n=s({index:-1,count:0,text:"",matchCase:!1,wholeWord:!1});return j(e,n),P(e,n),o(e,n)})}()}();
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/plugins/spellchecker/plugin.min.js b/app/static/vendors/tinymce/js/tinymce/plugins/spellchecker/plugin.min.js
deleted file mode 100644 (file)
index 6dd6742..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.3 (2019-12-04)
- */
-!function(t){"use strict";var a=function(e){function t(){return n}var n=e;return{get:t,set:function(e){n=e},clone:function(){return a(t())}}},n=tinymce.util.Tools.resolve("tinymce.PluginManager"),c=function(e){return!(!/(^|[ ,])tinymcespellchecker([, ]|$)/.test(e.settings.plugins)||!n.get("tinymcespellchecker"))&&("undefined"!=typeof t.window.console&&t.window.console.log&&t.window.console.log("Spell Checker Pro is incompatible with Spell Checker plugin! Remove 'spellchecker' from the 'plugins' option."),!0)},l=tinymce.util.Tools.resolve("tinymce.util.Tools"),u=tinymce.util.Tools.resolve("tinymce.util.URI"),d=tinymce.util.Tools.resolve("tinymce.util.XHR"),f=function(e){return e.fire("SpellcheckStart")},o=function(e){return e.fire("SpellcheckEnd")},g=function(e){return e.getParam("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")},s=function(e){var t=e.getParam("language","en");return e.getParam("spellchecker_language",t)},h=function(e){return e.getParam("spellchecker_rpc_url")},p=function(e){return e.getParam("spellchecker_callback")},m=function(e){var t=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");return e.getParam("spellchecker_wordchar_pattern",t)};function b(e){return e&&1===e.nodeType&&"false"===e.contentEditable}function r(a,r){var n,o,g,h,p,i=[],v=r.dom;function c(e,t){if(!e[0])throw new Error("findAndReplaceDOMText cannot handle zero-length matches");return{start:e.index,end:e.index+e[0].length,text:e[0],data:t}}function s(e){var t=a.getElementsByTagName("*"),n=[];e="number"==typeof e?""+e:null;for(var r=0;r<t.length;r++){var o=t[r],i=o.getAttribute("data-mce-index");null!==i&&i.length&&-1!==o.className.indexOf("mce-spellchecker-word")&&(i!==e&&null!==e||n.push(o))}return n}function u(e){for(var t=i.length;t--;)if(i[t]===e)return t;return-1}function e(e){for(var t=0,n=i.length;t<n&&!1!==e(i[t],t);t++);return this}function t(e){var t,n,r=s(e?u(e):null);for(t=r.length;t--;)(n=r[t]).parentNode.insertBefore(n.firstChild,n),n.parentNode.removeChild(n);return this}function l(e){var t=s(u(e)),n=r.dom.createRng();return n.setStartBefore(t[0]),n.setEndAfter(t[t.length-1]),n}return g=r.schema.getBlockElements(),h=r.schema.getWhiteSpaceElements(),p=r.schema.getShortEndedElements(),{text:o=function d(e){var t;if(3===e.nodeType)return e.data;if(h[e.nodeName]&&!g[e.nodeName])return"";if(b(e))return"\n";if(t="",(g[e.nodeName]||p[e.nodeName])&&(t+="\n"),e=e.firstChild)for(;t+=d(e),e=e.nextSibling;);return t}(a),matches:i,each:e,filter:function f(n){var r=[];return e(function(e,t){n(e,t)&&r.push(e)}),i=r,this},reset:function m(){return i.splice(0,i.length),t(),this},matchFromElement:function x(e){return i[e.getAttribute("data-mce-index")]},elementFromMatch:function k(e){return s(u(e))[0]},find:function N(e,t){if(o&&e.global)for(;n=e.exec(o);)i.push(c(n,t));return this},add:function y(e,t,n){return i.push({start:e,end:e+t,text:o.substr(e,t),data:n}),this},wrap:function S(e){return i.length&&function f(e,t,n){var r,o,i,a,c,s=[],u=0,l=e,d=0;(t=t.slice(0)).sort(function(e,t){return e.start-t.start}),c=t.shift();e:for(;;){if((g[l.nodeName]||p[l.nodeName]||b(l))&&u++,3===l.nodeType&&(!o&&l.length+u>=c.end?(o=l,a=c.end-u):r&&s.push(l),!r&&l.length+u>c.start&&(r=l,i=c.start-u),u+=l.length),r&&o){if(l=n({startNode:r,startNodeIndex:i,endNode:o,endNodeIndex:a,innerNodes:s,match:c.text,matchIndex:d}),u-=o.length-a,o=r=null,s=[],d++,!(c=t.shift()))break}else if(h[l.nodeName]&&!g[l.nodeName]||!l.firstChild){if(l.nextSibling){l=l.nextSibling;continue}}else if(!b(l)){l=l.firstChild;continue}for(;;){if(l.nextSibling){l=l.nextSibling;break}if(l.parentNode===e)break e;l=l.parentNode}}}(a,i,function t(o){function m(e,t){var n=i[t];n.stencil||(n.stencil=o(n));var r=n.stencil.cloneNode(!1);return r.setAttribute("data-mce-index",t),e&&r.appendChild(v.doc.createTextNode(e)),r}return function(e){var t,n,r,o=e.startNode,i=e.endNode,a=e.matchIndex,c=v.doc;if(o===i){var s=o;r=s.parentNode,0<e.startNodeIndex&&(t=c.createTextNode(s.data.substring(0,e.startNodeIndex)),r.insertBefore(t,s));var u=m(e.match,a);return r.insertBefore(u,s),e.endNodeIndex<s.length&&(n=c.createTextNode(s.data.substring(e.endNodeIndex)),r.insertBefore(n,s)),s.parentNode.removeChild(s),u}t=c.createTextNode(o.data.substring(0,e.startNodeIndex)),n=c.createTextNode(i.data.substring(e.endNodeIndex));for(var l=m(o.data.substring(e.startNodeIndex),a),d=0,f=e.innerNodes.length;d<f;++d){var g=e.innerNodes[d],h=m(g.data,a);g.parentNode.replaceChild(h,g)}var p=m(i.data.substring(0,e.endNodeIndex),a);return(r=o.parentNode).insertBefore(t,o),r.insertBefore(l,o),r.removeChild(o),(r=i.parentNode).insertBefore(p,i),r.insertBefore(n,i),r.removeChild(i),p}}(e)),this},unwrap:t,replace:function w(e,t){var n=l(e);return n.deleteContents(),0<t.length&&n.insertNode(r.dom.doc.createTextNode(t)),n},rangeFromMatch:l,indexOf:u}}function v(e,t){if(!t.get()){var n=r(e.getBody(),e);t.set(n)}return t.get()}function x(e,t,n,r,o,i,a){var c=p(e);(c||function(a,c,s){return function(e,t,r,o){var n={method:e,lang:s.get()},i="";n["addToDictionary"===e?"word":"text"]=t,l.each(n,function(e,t){i&&(i+="&"),i+=t+"="+encodeURIComponent(e)}),d.send({url:new u(c).toAbsolute(h(a)),type:"post",content_type:"application/x-www-form-urlencoded",data:i,success:function(e){var t=JSON.parse(e);if(t)t.error?o(t.error):r(t);else{var n=a.translate("Server response wasn't proper JSON.");o(n)}},error:function(){var e=a.translate("The spelling service was not found: (")+h(a)+a.translate(")");o(e)}})}}(e,t,n)).call(e.plugins.spellchecker,r,o,i,a)}function k(e,t,n){e.dom.select("span.mce-spellchecker-word").length||y(e,t,n)}function N(e){var t=e.getAttribute("data-mce-index");return"number"==typeof t?""+t:t}var y=function(e,t,n){var r=e.selection.getBookmark();if(v(e,n).reset(),e.selection.moveToBookmark(r),n.set(null),t.get())return t.set(!1),o(e),!0},S=function(t,e,n,r,o){var i=!!o.dictionary,a=o.words;if(t.setProgressState(!1),function(e){for(var t in e)return!1;return!0}(a)){var c=t.translate("No misspellings found.");return t.notificationManager.open({text:c,type:"info"}),void e.set(!1)}r.set({suggestions:a,hasDictionarySupport:i});var s=t.selection.getBookmark();v(t,n).find(m(t)).filter(function(e){return!!a[e.text]}).wrap(function(e){return t.dom.create("span",{"class":"mce-spellchecker-word","aria-invalid":"spelling","data-mce-bogus":1,"data-mce-word":e.text})}),t.selection.moveToBookmark(s),e.set(!0),f(t)},w={spellcheck:function(t,e,n,r,o,i){if(!y(t,n,r)){t.setProgressState(!0),x(t,e,i,"spellcheck",v(t,r).text,function(e){S(t,n,r,o,e)},function(e){t.notificationManager.open({text:e,type:"error"}),t.setProgressState(!1),y(t,n,r)}),t.focus()}},checkIfFinished:k,addToDictionary:function(t,e,n,r,o,i,a){t.setProgressState(!0),x(t,e,o,"addToDictionary",i,function(){t.setProgressState(!1),t.dom.remove(a,!0),k(t,n,r)},function(e){t.notificationManager.open({text:e,type:"error"}),t.setProgressState(!1)})},ignoreWord:function(t,e,n,r,o,i){t.selection.collapse(),i?l.each(t.dom.select("span.mce-spellchecker-word"),function(e){e.getAttribute("data-mce-word")===r&&t.dom.remove(e,!0)}):t.dom.remove(o,!0),k(t,e,n)},findSpansByIndex:function(e,t){var n,r=[];if((n=l.toArray(e.getBody().getElementsByTagName("span"))).length)for(var o=0;o<n.length;o++){var i=N(n[o]);null!==i&&i.length&&i===t.toString()&&r.push(n[o])}return r},getElmIndex:N,markErrors:S},T=function(t,n,r,o,e,i){return{getTextMatcher:function(){return o.get()},getWordCharPattern:function(){return m(t)},markErrors:function(e){w.markErrors(t,n,o,r,e)},getLanguage:function(){return e.get()}}},I=function(e,t,n,r,o,i){e.addCommand("mceSpellCheck",function(){w.spellcheck(e,t,n,r,o,i)})},B=function(){return(B=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)},A="SpellcheckStart SpellcheckEnd",E=function(n,e,r,t,o,i){function a(){w.spellcheck(n,e,r,t,i,o)}var c=function(e,t){var n=[];return l.each(t,function(e){n.push({selectable:!0,text:e.name,data:e.value})}),n}(0,function(e){return l.map(g(e).split(","),function(e){return{name:(e=e.split("="))[0],value:e[1]}})}(n)),s={tooltip:"Spellcheck",onAction:a,icon:"spell-check",onSetup:function(e){function t(){e.setActive(r.get())}return n.on(A,t),function(){n.off(A,t)}}},u=B(B({},s),{type:"splitbutton",select:function(e){return e===o.get()},fetch:function(e){e(l.map(c,function(e){return{type:"choiceitem",value:e.data,text:e.text}}))},onItemAction:function(e,t){o.set(t)}});1<c.length?n.ui.registry.addSplitButton("spellchecker",u):n.ui.registry.addToggleButton("spellchecker",s),n.ui.registry.addToggleMenuItem("spellchecker",{text:"Spellcheck",onSetup:function(e){e.setActive(r.get());function t(){e.setActive(r.get())}return n.on(A,t),function(){n.off(A,t)}},onAction:a})},C=function(o,i,a,c,s,u){o.ui.registry.addContextMenu("spellchecker",{update:function(e){var t=e;if("mce-spellchecker-word"!==t.className)return[];var n=w.findSpansByIndex(o,w.getElmIndex(t));if(0<n.length){var r=o.dom.createRng();return r.setStartBefore(n[0]),r.setEndAfter(n[n.length-1]),o.selection.setRng(r),function(t,e,n,r,o,i,a,c){var s=[],u=n.get().suggestions[a];return l.each(u,function(e){s.push({text:e,onAction:function(){t.insertContent(t.dom.encode(e)),t.dom.remove(c),w.checkIfFinished(t,r,o)}})}),n.get().hasDictionarySupport&&(s.push({type:"separator"}),s.push({text:"Add to dictionary",onAction:function(){w.addToDictionary(t,e,r,o,i,a,c)}})),s.push.apply(s,[{type:"separator"},{text:"Ignore",onAction:function(){w.ignoreWord(t,r,o,a,c)}},{text:"Ignore all",onAction:function(){w.ignoreWord(t,r,o,a,c,!0)}}]),s}(o,i,a,c,s,u,t.getAttribute("data-mce-word"),n)}}})};!function e(){n.add("spellchecker",function(e,t){if(!1===c(e)){var n=a(!1),r=a(s(e)),o=a(null),i=a(null);return E(e,t,n,o,r,i),C(e,t,i,n,o,r),I(e,t,n,o,i,r),T(e,n,i,o,r,t)}})}()}(window);
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/plugins/tabfocus/plugin.min.js b/app/static/vendors/tinymce/js/tinymce/plugins/tabfocus/plugin.min.js
deleted file mode 100644 (file)
index 24e63d1..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.3 (2019-12-04)
- */
-!function(c){"use strict";function t(e){e.keyCode!==d.TAB||e.ctrlKey||e.altKey||e.metaKey||e.preventDefault()}var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),n=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),s=tinymce.util.Tools.resolve("tinymce.EditorManager"),a=tinymce.util.Tools.resolve("tinymce.Env"),y=tinymce.util.Tools.resolve("tinymce.util.Delay"),f=tinymce.util.Tools.resolve("tinymce.util.Tools"),d=tinymce.util.Tools.resolve("tinymce.util.VK"),m=function(e){return e.getParam("tab_focus",function(e){return e.getParam("tabfocus_elements",":prev,:next")}(e))},v=n.DOM,i=function(r){function e(n){var i,o,e,l;if(!(n.keyCode!==d.TAB||n.ctrlKey||n.altKey||n.metaKey||n.isDefaultPrevented())&&(1===(e=f.explode(m(r))).length&&(e[1]=e[0],e[0]=":prev"),o=n.shiftKey?":prev"===e[0]?u(-1):v.get(e[0]):":next"===e[1]?u(1):v.get(e[1]))){var t=s.get(o.id||o.name);o.id&&t?t.focus():y.setTimeout(function(){a.webkit||c.window.focus(),o.focus()},10),n.preventDefault()}function u(e){function t(e){return/INPUT|TEXTAREA|BUTTON/.test(e.tagName)&&s.get(n.id)&&-1!==e.tabIndex&&function t(e){return"BODY"===e.nodeName||"hidden"!==e.type&&"none"!==e.style.display&&"hidden"!==e.style.visibility&&t(e.parentNode)}(e)}if(o=v.select(":input:enabled,*[tabindex]:not(iframe)"),f.each(o,function(e,t){if(e.id===r.id)return i=t,!1}),0<e){for(l=i+1;l<o.length;l++)if(t(o[l]))return o[l]}else for(l=i-1;0<=l;l--)if(t(o[l]))return o[l];return null}}r.on("init",function(){r.inline&&v.setAttrib(r.getBody(),"tabIndex",null),r.on("keyup",t),a.gecko?r.on("keypress keydown",e):r.on("keydown",e)})};!function o(){e.add("tabfocus",function(e){i(e)})}()}(window);
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/plugins/table/plugin.min.js b/app/static/vendors/tinymce/js/tinymce/plugins/table/plugin.min.js
deleted file mode 100644 (file)
index f5e823a..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.3 (2019-12-04)
- */
-!function(f){"use strict";function o(e){return e}var R=function(e){function n(){return t}var t=e;return{get:n,set:function(e){t=e},clone:function(){return R(n())}}},T=function(){},O=function(t,r){return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return t(r.apply(null,e))}},D=function(e){return function(){return e}};function b(r){for(var o=[],e=1;e<arguments.length;e++)o[e-1]=arguments[e];return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];var t=o.concat(e);return r.apply(null,t)}}function d(t){return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return!t.apply(null,e)}}function e(){return u}var n,s=D(!1),i=D(!0),u=(n={fold:function(e,n){return e()},is:s,isSome:s,isNone:i,getOr:c,getOrThunk:r,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:D(null),getOrUndefined:D(undefined),or:c,orThunk:r,map:e,each:T,bind:e,exists:s,forall:i,filter:e,equals:t,equals_:t,toArray:function(){return[]},toString:D("none()")},Object.freeze&&Object.freeze(n),n);function t(e){return e.isNone()}function r(e){return e()}function c(e){return e}function a(n){return function(e){return function(e){if(null===e)return"null";var n=typeof e;return"object"==n&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"==n&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":n}(e)===n}}function l(e,n){return-1<function(e,n){return Ue.call(e,n)}(e,n)}function m(e,n){for(var t=0,r=e.length;t<r;t++){if(n(e[t],t))return!0}return!1}function g(e,n){for(var t=e.length,r=new Array(t),o=0;o<t;o++){var i=e[o];r[o]=n(i,o)}return r}function p(e,n){for(var t=0,r=e.length;t<r;t++){n(e[t],t)}}function h(e,n){for(var t=[],r=0,o=e.length;r<o;r++){var i=e[r];n(i,r)&&t.push(i)}return t}function v(e,n,t){return function(e,n){for(var t=e.length-1;0<=t;t--){n(e[t],t)}}(e,function(e){t=n(t,e)}),t}function w(e,n,t){return p(e,function(e){t=n(t,e)}),t}function y(e,n){for(var t=0,r=e.length;t<r;t++){var o=e[t];if(n(o,t))return Me.some(o)}return Me.none()}function C(e,n){for(var t=0,r=e.length;t<r;t++){if(n(e[t],t))return Me.some(t)}return Me.none()}function S(e){for(var n=[],t=0,r=e.length;t<r;++t){if(!Le(e[t]))throw new Error("Arr.flatten item "+t+" was not an array, input: "+e);qe.apply(n,e[t])}return n}function x(e,n){var t=g(e,n);return S(t)}function A(e,n){for(var t=0,r=e.length;t<r;++t){if(!0!==n(e[t],t))return!1}return!0}function E(e){var n=Fe.call(e,0);return n.reverse(),n}function N(e,n){for(var t=Ve(e),r=0,o=t.length;r<o;r++){var i=t[r];n(e[i],i)}}function k(e,t){return Ye(e,function(e,n){return{k:n,v:t(e,n)}})}function I(e,n){return Ke(e,n)?Me.from(e[n]):Me.none()}function B(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];if(n.length!==t.length)throw new Error('Wrong number of arguments to struct. Expected "['+n.length+']", got '+t.length+" arguments");var r={};return p(n,function(e,n){r[e]=D(t[n])}),r}}function P(e){return e.slice(0).sort()}function M(e,n){throw new Error("All required keys ("+P(e).join(", ")+") were not specified. Specified keys were: "+P(n).join(", ")+".")}function W(e){throw new Error("Unsupported keys for object: "+P(e).join(", "))}function _(n,e){if(!Le(e))throw new Error("The "+n+" fields must be an array. Was: "+e+".");p(e,function(e){if(!_e(e))throw new Error("The value "+e+" in the "+n+" fields was not a string.")})}function L(e){var t=P(e);y(t,function(e,n){return n<t.length-1&&e===t[n+1]}).each(function(e){throw new Error("The field: "+e+" occurs more than once in the combined fields: ["+t.join(", ")+"].")})}function j(e){return e.dom().nodeType}function z(n){return function(e){return j(e)===n}}function H(e){return j(e)===$e||"#comment"===en(e)}function F(e,n,t){if(!(_e(t)||je(t)||He(t)))throw f.console.error("Invalid call to Attr.set. Key ",n,":: Value ",t,":: Element ",e),new Error("Attribute value was not simple");e.setAttribute(n,t+"")}function U(e,n,t){F(e.dom(),n,t)}function q(e,n){var t=e.dom();N(n,function(e,n){F(t,n,e)})}function V(e,n){var t=e.dom().getAttribute(n);return null===t?undefined:t}function G(e,n){var t=e.dom();return!(!t||!t.hasAttribute)&&t.hasAttribute(n)}function Y(e,n){e.dom().removeAttribute(n)}function K(e){return w(e.dom().attributes,function(e,n){return e[n.name]=n.value,e},{})}function X(e,n,t){return""===n||!(e.length<n.length)&&e.substr(t,t+n.length)===n}function $(e,n){return-1!==e.indexOf(n)}function J(e,n){return X(e,n,0)}function Q(e){return e.style!==undefined&&ze(e.style.getPropertyValue)}function Z(t){var r,o=!1;return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return o||(o=!0,r=t.apply(null,e)),r}}function ee(e){var n=tn(e)?e.dom().parentNode:e.dom();return n!==undefined&&null!==n&&n.ownerDocument.body.contains(n)}function ne(e,n,t){if(!_e(t))throw f.console.error("Invalid call to CSS.set. Property ",n,":: Value ",t,":: Element ",e),new Error("CSS value must be a string: "+t);Q(e)&&e.style.setProperty(n,t)}function te(e,n,t){var r=e.dom();ne(r,n,t)}function re(e,n){var t=e.dom();N(n,function(e,n){ne(t,n,e)})}function oe(e,n){var t=e.dom(),r=f.window.getComputedStyle(t).getPropertyValue(n),o=""!==r||ee(e)?r:an(t,n);return null===o?undefined:o}function ie(e,n){var t=e.dom(),r=an(t,n);return Me.from(r).filter(function(e){return 0<e.length})}function ue(e,n){!function(e,n){Q(e)&&e.style.removeProperty(n)}(e.dom(),n),G(e,"style")&&""===function(e){return e.replace(/^\s+|\s+$/g,"")}(V(e,"style"))&&Y(e,"style")}function ce(e,n,t){return 0!=(e.compareDocumentPosition(n)&t)}function ae(e,n){var t=function(e,n){for(var t=0;t<e.length;t++){var r=e[t];if(r.test(n))return r}return undefined}(e,n);if(!t)return{major:0,minor:0};function r(e){return Number(n.replace(t,"$"+e))}return dn(r(1),r(2))}function le(e,n){return function(){return n===e}}function fe(e,n){return function(){return n===e}}function se(e,n){var t=String(n).toLowerCase();return y(e,function(e){return e.search(t)})}function de(n){return function(e){return $(e,n)}}function me(){return En.get()}function ge(e,n){var t=e.dom();if(t.nodeType!==Nn)return!1;var r=t;if(r.matches!==undefined)return r.matches(n);if(r.msMatchesSelector!==undefined)return r.msMatchesSelector(n);if(r.webkitMatchesSelector!==undefined)return r.webkitMatchesSelector(n);if(r.mozMatchesSelector!==undefined)return r.mozMatchesSelector(n);throw new Error("Browser lacks native selectors")}function pe(e){return e.nodeType!==Nn&&e.nodeType!==kn||0===e.childElementCount}function he(e){return on.fromDom(e.dom().ownerDocument)}function ve(e){return Me.from(e.dom().parentNode).map(on.fromDom)}function be(e,n){for(var t=ze(n)?n:s,r=e.dom(),o=[];null!==r.parentNode&&r.parentNode!==undefined;){var i=r.parentNode,u=on.fromDom(i);if(o.push(u),!0===t(u))break;r=i}return o}function we(e){return Me.from(e.dom().previousSibling).map(on.fromDom)}function ye(e){return Me.from(e.dom().nextSibling).map(on.fromDom)}function Ce(e){return g(e.dom().childNodes,on.fromDom)}function Se(e,n){var t=e.dom().childNodes;return Me.from(t[n]).map(on.fromDom)}function xe(n,t){ve(n).each(function(e){e.dom().insertBefore(t.dom(),n.dom())})}function Re(e,n){ye(e).fold(function(){ve(e).each(function(e){Mn(e,n)})},function(e){xe(e,n)})}function Te(n,t){(function(e){return Se(e,0)})(n).fold(function(){Mn(n,t)},function(e){n.dom().insertBefore(t.dom(),e.dom())})}function Oe(e,n){xe(e,n),Mn(n,e)}function De(r,o){p(o,function(e,n){var t=0===n?r:o[n-1];Re(t,e)})}function Ae(n,e){p(e,function(e){Mn(n,e)})}function Ee(e){e.dom().textContent="",p(Ce(e),function(e){Wn(e)})}function Ne(e){var n=Ce(e);0<n.length&&function(n,e){p(e,function(e){xe(n,e)})}(e,n),Wn(e)}function ke(e,n,t){return function(e,n,t){return h(be(e,t),n)}(e,function(e){return ge(e,n)},t)}function Ie(e,n){return function(e,n){return h(Ce(e),n)}(e,function(e){return ge(e,n)})}function Be(e,n){return function(e,n){var t=n===undefined?f.document:n.dom();return pe(t)?[]:g(t.querySelectorAll(e),on.fromDom)}(n,e)}var Pe=function(t){function e(){return o}function n(e){return e(t)}var r=D(t),o={fold:function(e,n){return n(t)},is:function(e){return t===e},isSome:i,isNone:s,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:e,orThunk:e,map:function(e){return Pe(e(t))},each:function(e){e(t)},bind:n,exists:n,forall:n,filter:function(e){return e(t)?o:u},toArray:function(){return[t]},toString:function(){return"some("+t+")"},equals:function(e){return e.is(t)},equals_:function(e,n){return e.fold(s,function(e){return n(t,e)})}};return o},Me={some:Pe,none:e,from:function(e){return null===e||e===undefined?u:Pe(e)}},We=tinymce.util.Tools.resolve("tinymce.PluginManager"),_e=a("string"),Le=a("array"),je=a("boolean"),ze=a("function"),He=a("number"),Fe=Array.prototype.slice,Ue=Array.prototype.indexOf,qe=Array.prototype.push,Ve=(ze(Array.from)&&Array.from,Object.keys),Ge=Object.hasOwnProperty,Ye=function(e,r){var o={};return N(e,function(e,n){var t=r(e,n);o[t.k]=t.v}),o},Ke=function(e,n){return Ge.call(e,n)},Xe=function(o,i){var u=o.concat(i);if(0===u.length)throw new Error("You must specify at least one required or optional field.");return _("required",o),_("optional",i),L(u),function(n){var t=Ve(n);A(o,function(e){return l(t,e)})||M(o,t);var e=h(t,function(e){return!l(u,e)});0<e.length&&W(e);var r={};return p(o,function(e){r[e]=D(n[e])}),p(i,function(e){r[e]=D(Object.prototype.hasOwnProperty.call(n,e)?Me.some(n[e]):Me.none())}),r}},$e=(f.Node.ATTRIBUTE_NODE,f.Node.CDATA_SECTION_NODE,f.Node.COMMENT_NODE),Je=f.Node.DOCUMENT_NODE,Qe=(f.Node.DOCUMENT_TYPE_NODE,f.Node.DOCUMENT_FRAGMENT_NODE,f.Node.ELEMENT_NODE),Ze=f.Node.TEXT_NODE,en=(f.Node.PROCESSING_INSTRUCTION_NODE,f.Node.ENTITY_REFERENCE_NODE,f.Node.ENTITY_NODE,f.Node.NOTATION_NODE,"undefined"!=typeof f.window?f.window:Function("return this;")(),function(e){return e.dom().nodeName.toLowerCase()}),nn=z(Qe),tn=z(Ze),rn=function(e){if(null===e||e===undefined)throw new Error("Node cannot be null or undefined");return{dom:D(e)}},on={fromHtml:function(e,n){var t=(n||f.document).createElement("div");if(t.innerHTML=e,!t.hasChildNodes()||1<t.childNodes.length)throw f.console.error("HTML does not have a single root node",e),new Error("HTML must have a single root node");return rn(t.childNodes[0])},fromTag:function(e,n){var t=(n||f.document).createElement(e);return rn(t)},fromText:function(e,n){var t=(n||f.document).createTextNode(e);return rn(t)},fromDom:rn,fromPoint:function(e,n,t){var r=e.dom();return Me.from(r.elementFromPoint(n,t)).map(rn)}},un=Z(function(){return cn(on.fromDom(f.document))}),cn=function(e){var n=e.dom().body;if(null===n||n===undefined)throw new Error("Body is not available yet");return on.fromDom(n)},an=function(e,n){return Q(e)?e.style.getPropertyValue(n):""},ln=function(e,n){return ce(e,n,f.Node.DOCUMENT_POSITION_CONTAINED_BY)},fn=function(){return(fn=Object.assign||function(e){for(var n,t=1,r=arguments.length;t<r;t++)for(var o in n=arguments[t])Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o]);return e}).apply(this,arguments)},sn=function(){return dn(0,0)},dn=function(e,n){return{major:e,minor:n}},mn={nu:dn,detect:function(e,n){var t=String(n).toLowerCase();return 0===e.length?sn():ae(e,t)},unknown:sn},gn="Firefox",pn=function(e){var n=e.current;return{current:n,version:e.version,isEdge:le("Edge",n),isChrome:le("Chrome",n),isIE:le("IE",n),isOpera:le("Opera",n),isFirefox:le(gn,n),isSafari:le("Safari",n)}},hn={unknown:function(){return pn({current:undefined,version:mn.unknown()})},nu:pn,edge:D("Edge"),chrome:D("Chrome"),ie:D("IE"),opera:D("Opera"),firefox:D(gn),safari:D("Safari")},vn="Windows",bn="Android",wn="Solaris",yn="FreeBSD",Cn=function(e){var n=e.current;return{current:n,version:e.version,isWindows:fe(vn,n),isiOS:fe("iOS",n),isAndroid:fe(bn,n),isOSX:fe("OSX",n),isLinux:fe("Linux",n),isSolaris:fe(wn,n),isFreeBSD:fe(yn,n)}},Sn={unknown:function(){return Cn({current:undefined,version:mn.unknown()})},nu:Cn,windows:D(vn),ios:D("iOS"),android:D(bn),linux:D("Linux"),osx:D("OSX"),solaris:D(wn),freebsd:D(yn)},xn=function(e,t){return se(e,t).map(function(e){var n=mn.detect(e.versionRegexes,t);return{current:e.name,version:n}})},Rn=function(e,t){return se(e,t).map(function(e){var n=mn.detect(e.versionRegexes,t);return{current:e.name,version:n}})},Tn=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,On=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(e){return $(e,"edge/")&&$(e,"chrome")&&$(e,"safari")&&$(e,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,Tn],search:function(e){return $(e,"chrome")&&!$(e,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(e){return $(e,"msie")||$(e,"trident")}},{name:"Opera",versionRegexes:[Tn,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:de("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:de("firefox")},{name:"Safari",versionRegexes:[Tn,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(e){return($(e,"safari")||$(e,"mobile/"))&&$(e,"applewebkit")}}],Dn=[{name:"Windows",search:de("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(e){return $(e,"iphone")||$(e,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:de("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:de("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:de("linux"),versionRegexes:[]},{name:"Solaris",search:de("sunos"),versionRegexes:[]},{name:"FreeBSD",search:de("freebsd"),versionRegexes:[]}],An={browsers:D(On),oses:D(Dn)},En=R(function(e,n){var t=An.browsers(),r=An.oses(),o=xn(t,e).fold(hn.unknown,hn.nu),i=Rn(r,e).fold(Sn.unknown,Sn.nu);return{browser:o,os:i,deviceType:function(e,n,t,r){var o=e.isiOS()&&!0===/ipad/i.test(t),i=e.isiOS()&&!o,u=e.isiOS()||e.isAndroid(),c=u||r("(pointer:coarse)"),a=o||!i&&u&&r("(min-device-width:768px)"),l=i||u&&!a,f=n.isSafari()&&e.isiOS()&&!1===/safari/i.test(t),s=!l&&!a&&!f;return{isiPad:D(o),isiPhone:D(i),isTablet:D(a),isPhone:D(l),isTouch:D(c),isAndroid:e.isAndroid,isiOS:e.isiOS,isWebView:D(f),isDesktop:D(s)}}(i,o,e,n)}}(f.navigator.userAgent,function(e){return f.window.matchMedia(e).matches})),Nn=Qe,kn=Je,In=function(e,n){return e.dom()===n.dom()},Bn=me().browser.isIE()?function(e,n){return ln(e.dom(),n.dom())}:function(e,n){var t=e.dom(),r=n.dom();return t!==r&&t.contains(r)},Pn=ge,Mn=(B("element","offset"),function(e,n){e.dom().appendChild(n.dom())}),Wn=function(e){var n=e.dom();null!==n.parentNode&&n.parentNode.removeChild(n)},_n=(B("width","height"),B("width","height"),B("rows","columns")),Ln=B("row","column"),jn=(B("x","y"),B("element","rowspan","colspan")),zn=B("element","rowspan","colspan","isNew"),Hn=B("element","rowspan","colspan","row","column"),Fn=B("element","cells","section"),Un=B("element","isNew"),qn=B("element","cells","section","isNew"),Vn=B("cells","section"),Gn=B("details","section"),Yn=B("startRow","startCol","finishRow","finishCol"),Kn=function(e,n){var t=[];return p(Ce(e),function(e){n(e)&&(t=t.concat([e])),t=t.concat(Kn(e,n))}),t};function Xn(e,n,t,r,o){return e(t,r)?Me.some(t):ze(o)&&o(t)?Me.none():n(t,r,o)}function $n(e,n,t){for(var r=e.dom(),o=ze(t)?t:D(!1);r.parentNode;){r=r.parentNode;var i=on.fromDom(r);if(n(i))return Me.some(i);if(o(i))break}return Me.none()}function Jn(e,n,t){return $n(e,function(e){return ge(e,n)},t)}function Qn(e,n){return function(e,n){return y(e.dom().childNodes,function(e){return n(on.fromDom(e))}).map(on.fromDom)}(e,function(e){return ge(e,n)})}function Zn(e,n){return function(e,n){var t=n===undefined?f.document:n.dom();return pe(t)?Me.none():Me.from(t.querySelector(e)).map(on.fromDom)}(n,e)}function et(e,n,t){return Xn(ge,Jn,e,n,t)}function nt(e,n,t){return void 0===t&&(t=s),t(n)?Me.none():l(e,en(n))?Me.some(n):Jn(n,e.join(","),function(e){return ge(e,"table")||t(e)})}function tt(n,e){return ve(e).map(function(e){return Ie(e,n)})}function rt(e,n){return parseInt(V(e,n),10)}function ot(e,n){return e+","+n}var it=function(e,n,t){return x(Ce(e),function(e){return ge(e,n)?t(e)?[e]:[]:it(e,n,t)})},ut={firstLayer:function(e,n){return it(e,n,D(!0))},filterFirstLayer:it},ct=b(tt,"th,td"),at=b(tt,"tr"),lt={cell:function(e,n){return nt(["td","th"],e,n)},firstCell:function(e){return Zn(e,"th,td")},cells:function(e){return ut.firstLayer(e,"th,td")},neighbourCells:ct,table:function(e,n){return et(e,"table",n)},row:function(e,n){return nt(["tr"],e,n)},rows:function(e){return ut.firstLayer(e,"tr")},notCell:function(e,n){return nt(["caption","tr","tbody","tfoot","thead"],e,n)},neighbourRows:at,attr:rt,grid:function(e,n,t){var r=rt(e,n),o=rt(e,t);return _n(r,o)}},ft=function(e){var n=lt.rows(e);return g(n,function(e){var n=e,t=ve(n).map(function(e){var n=en(e);return"tfoot"===n||"thead"===n||"tbody"===n?n:"tbody"}).getOr("tbody"),r=g(lt.cells(e),function(e){var n=G(e,"rowspan")?parseInt(V(e,"rowspan"),10):1,t=G(e,"colspan")?parseInt(V(e,"colspan"),10):1;return jn(e,n,t)});return Fn(n,r,t)})},st=function(e,t){return g(e,function(e){var n=g(lt.cells(e),function(e){var n=G(e,"rowspan")?parseInt(V(e,"rowspan"),10):1,t=G(e,"colspan")?parseInt(V(e,"colspan"),10):1;return jn(e,n,t)});return Fn(e,n,t.section())})},dt=function(e,n){var t=x(e.all(),function(e){return e.cells()});return h(t,n)},mt={generate:function(e){var l={},n=[],t=e.length,f=0;p(e,function(e,c){var a=[];p(e.cells(),function(e){for(var n=0;l[ot(c,n)]!==undefined;)n++;for(var t=Hn(e.element(),e.rowspan(),e.colspan(),c,n),r=0;r<e.colspan();r++)for(var o=0;o<e.rowspan();o++){var i=n+r,u=ot(c+o,i);l[u]=t,f=Math.max(f,i+1)}a.push(t)}),n.push(Fn(e.element(),a,e.section()))});var r=_n(t,f);return{grid:D(r),access:D(l),all:D(n)}},getAt:function(e,n,t){var r=e.access()[ot(n,t)];return r!==undefined?Me.some(r):Me.none()},findItem:function(e,n,t){var r=dt(e,function(e){return t(n,e.element())});return 0<r.length?Me.some(r[0]):Me.none()},filterItems:dt,justCells:function(e){var n=g(e.all(),function(e){return e.cells()});return S(n)}},gt=B("minRow","minCol","maxRow","maxCol"),pt=function(e,n){function t(e){return ge(e.element(),n)}var r=ft(e),o=mt.generate(r),i=function(e,i){var n=e.grid().columns(),u=e.grid().rows(),c=n,a=0,l=0;return N(e.access(),function(e){if(i(e)){var n=e.row(),t=n+e.rowspan()-1,r=e.column(),o=r+e.colspan()-1;n<u?u=n:a<t&&(a=t),r<c?c=r:l<o&&(l=o)}}),gt(u,c,a,l)}(o,t),u="th:not("+n+"),td:not("+n+")",c=ut.filterFirstLayer(e,"th,td",function(e){return ge(e,u)});return p(c,Wn),function(e,n,t,r){for(var o,i,u,c=n.grid().columns(),a=n.grid().rows(),l=0;l<a;l++)for(var f=!1,s=0;s<c;s++){if(!(l<t.minRow()||l>t.maxRow()||s<t.minCol()||s>t.maxCol()))mt.getAt(n,l,s).filter(r).isNone()?(o=f,void 0,i=e[l].element(),u=on.fromTag("td"),Mn(u,on.fromTag("br")),(o?Mn:Te)(i,u)):f=!0}}(r,o,i,t),function(e,n){var t=h(ut.firstLayer(e,"tr"),function(e){return 0===e.dom().childElementCount});p(t,Wn),n.minCol()!==n.maxCol()&&n.minRow()!==n.maxRow()||p(ut.firstLayer(e,"th,td"),function(e){Y(e,"rowspan"),Y(e,"colspan")}),Y(e,"width"),Y(e,"height"),ue(e,"width"),ue(e,"height")}(e,i),e};function ht(e){return Bt.get(e)}function vt(e){return Bt.getOption(e)}function bt(e,n){Bt.set(e,n)}function wt(e){return"img"===en(e)?1:vt(e).fold(function(){return Ce(e).length},function(e){return e.length})}function yt(e){return function(e){return vt(e).filter(function(e){return 0!==e.trim().length||-1<e.indexOf("\xa0")}).isSome()}(e)||l(Pt,en(e))}function Ct(e){return function(e,o){var i=function(e){for(var n=0;n<e.childNodes.length;n++){var t=on.fromDom(e.childNodes[n]);if(o(t))return Me.some(t);var r=i(e.childNodes[n]);if(r.isSome())return r}return Me.none()};return i(e.dom())}(e,yt)}function St(e){return Mt(e,yt)}function xt(e,n){return on.fromDom(e.dom().cloneNode(n))}function Rt(e){return xt(e,!1)}function Tt(e){return xt(e,!0)}function Ot(e,n){var t=function(e,n){var t=on.fromTag(n),r=K(e);return q(t,r),t}(e,n),r=Ce(Tt(e));return Ae(t,r),t}function Dt(){var e=on.fromTag("td");return Mn(e,on.fromTag("br")),e}function At(e,n,t){var r=Ot(e,n);return N(t,function(e,n){null===e?Y(r,n):U(r,n,e)}),r}function Et(e){return e}function Nt(e){return function(){return on.fromTag("tr",e.dom())}}function kt(e,n){return n.column()>=e.startCol()&&n.column()+n.colspan()-1<=e.finishCol()&&n.row()>=e.startRow()&&n.row()+n.rowspan()-1<=e.finishRow()}function It(e,n,t){var r=mt.findItem(e,n,In),o=mt.findItem(e,t,In);return r.bind(function(n){return o.map(function(e){return function(e,n){return Yn(Math.min(e.row(),n.row()),Math.min(e.column(),n.column()),Math.max(e.row()+e.rowspan()-1,n.row()+n.rowspan()-1),Math.max(e.column()+e.colspan()-1,n.column()+n.colspan()-1))}(n,e)})})}var Bt=function Qf(t,r){var n=function(e){return t(e)?Me.from(e.dom().nodeValue):Me.none()};return{get:function(e){if(!t(e))throw new Error("Can only get "+r+" value of a "+r+" node");return n(e).getOr("")},getOption:n,set:function(e,n){if(!t(e))throw new Error("Can only set raw "+r+" value of a "+r+" node");e.dom().nodeValue=n}}}(tn,"text"),Pt=["img","br"],Mt=function(e,i){var u=function(e){for(var n=Ce(e),t=n.length-1;0<=t;t--){var r=n[t];if(i(r))return Me.some(r);var o=u(r);if(o.isSome())return o}return Me.none()};return u(e)},Wt={cellOperations:function(i,e,u){return{row:Nt(e),cell:function(e){var n=he(e.element()),t=on.fromTag(en(e.element()),n.dom()),r=u.getOr(["strong","em","b","i","span","font","h1","h2","h3","h4","h5","h6","p","div"]),o=0<r.length?function(r,o,i){return Ct(r).map(function(e){var n=i.join(","),t=ke(e,n,function(e){return In(e,r)});return v(t,function(e,n){var t=Rt(n);return Y(t,"contenteditable"),Mn(e,t),t},o)}).getOr(o)}(e.element(),t,r):t;return Mn(o,on.fromTag("br")),function(e,n){var t=e.dom(),r=n.dom();Q(t)&&Q(r)&&(r.style.cssText=t.style.cssText)}(e.element(),t),ue(t,"height"),1!==e.colspan()&&ue(e.element(),"width"),i(e.element(),t),t},replace:At,gap:Dt}},paste:function(e){return{row:Nt(e),cell:Dt,replace:Et,gap:Dt}}},_t=function(e,n){var t=n.column(),r=n.column()+n.colspan()-1,o=n.row(),i=n.row()+n.rowspan()-1;return t<=e.finishCol()&&r>=e.startCol()&&o<=e.finishRow()&&i>=e.startRow()},Lt=function(e,n){for(var t=!0,r=b(kt,n),o=n.startRow();o<=n.finishRow();o++)for(var i=n.startCol();i<=n.finishCol();i++)t=t&&mt.getAt(e,o,i).exists(r);return t?Me.some(n):Me.none()},jt=It,zt=function(n,e,t){return It(n,e,t).bind(function(e){return Lt(n,e)})},Ht=function(r,e,o,i){return mt.findItem(r,e,In).bind(function(e){var n=0<o?e.row()+e.rowspan()-1:e.row(),t=0<i?e.column()+e.colspan()-1:e.column();return mt.getAt(r,n+o,t+i).map(function(e){return e.element()})})},Ft=function(t,e,n){return jt(t,e,n).map(function(e){var n=mt.filterItems(t,b(_t,e));return g(n,function(e){return e.element()})})},Ut=function(e,n){return mt.findItem(e,n,function(e,n){return Bn(n,e)}).map(function(e){return e.element()})},qt=function(e){var n=ft(e);return mt.generate(n)},Vt=function(t,r,o){return lt.table(t).bind(function(e){var n=qt(e);return Ht(n,t,r,o)})},Gt=function(e,n,t){var r=qt(e);return Ft(r,n,t)},Yt=function(e,n,t,r,o){var i=qt(e),u=In(e,t)?Me.some(n):Ut(i,n),c=In(e,o)?Me.some(r):Ut(i,r);return u.bind(function(n){return c.bind(function(e){return Ft(i,n,e)})})},Kt=function(e,n,t){var r=qt(e);return zt(r,n,t)},Xt=["body","p","div","article","aside","figcaption","figure","footer","header","nav","section","ol","ul","li","table","thead","tbody","tfoot","caption","tr","td","th","h1","h2","h3","h4","h5","h6","blockquote","pre","address"];function $t(){return{up:D({selector:Jn,closest:et,predicate:$n,all:be}),down:D({selector:Be,predicate:Kn}),styles:D({get:oe,getRaw:ie,set:te,remove:ue}),attrs:D({get:V,set:U,remove:Y,copyTo:function(e,n){var t=K(e);q(n,t)}}),insert:D({before:xe,after:Re,afterAll:De,append:Mn,appendAll:Ae,prepend:Te,wrap:Oe}),remove:D({unwrap:Ne,remove:Wn}),create:D({nu:on.fromTag,clone:function(e){return on.fromDom(e.dom().cloneNode(!1))},text:on.fromText}),query:D({comparePosition:function(e,n){return e.dom().compareDocumentPosition(n.dom())},prevSibling:we,nextSibling:ye}),property:D({children:Ce,name:en,parent:ve,document:function(e){return e.dom().ownerDocument},isText:tn,isComment:H,isElement:nn,getText:ht,setText:bt,isBoundary:function(e){return!!nn(e)&&("body"===en(e)||l(Xt,en(e)))},isEmptyTag:function(e){return!!nn(e)&&l(["br","img","hr","input"],en(e))}}),eq:In,is:Pn}}function Jt(e,n,t){var r=e.property().children(n);return C(r,b(e.eq,t)).map(function(e){return{before:D(r.slice(0,e)),after:D(r.slice(e+1))}})}function Qt(e,n){return b(e.eq,n)}function Zt(n,e,t,r){function o(n){return C(n,r).fold(function(){return n},function(e){return n.slice(0,e+1)})}void 0===r&&(r=s);var i=[e].concat(n.up().all(e)),u=[t].concat(n.up().all(t)),c=o(i),a=o(u),l=y(c,function(e){return m(a,Qt(n,e))});return{firstpath:D(c),secondpath:D(a),shared:D(l)}}function er(e){return Jn(e,"table")}function nr(c,a,r){function l(n){return function(e){return r!==undefined&&r(e)||In(e,n)}}return In(c,a)?Me.some(sr.create({boxes:Me.some([c]),start:c,finish:a})):er(c).bind(function(u){return er(a).bind(function(i){if(In(u,i))return Me.some(sr.create({boxes:Gt(u,c,a),start:c,finish:a}));if(Bn(u,i)){var e=0<(n=ke(a,"td,th",l(u))).length?n[n.length-1]:a;return Me.some(sr.create({boxes:Yt(u,c,u,a,i),start:c,finish:e}))}if(Bn(i,u)){var n,t=0<(n=ke(c,"td,th",l(i))).length?n[n.length-1]:c;return Me.some(sr.create({boxes:Yt(i,c,u,a,i),start:c,finish:t}))}return fr.ancestors(c,a).shared().bind(function(e){return et(e,"table",r).bind(function(e){var n=ke(a,"td,th",l(e)),t=0<n.length?n[n.length-1]:a,r=ke(c,"td,th",l(e)),o=0<r.length?r[r.length-1]:c;return Me.some(sr.create({boxes:Yt(e,c,u,a,i),start:o,finish:t}))})})})})}function tr(e,n){return Rr.cata(n.get(),D([]),o,D([e]))}function rr(e){return{element:D(e),mergable:Me.none,unmergable:Me.none,selection:D([e])}}var or=B("left","right"),ir=B("first","second","splits"),ur=function(r,o,e,n){var t=o(r,e);return v(n,function(e,n){var t=o(r,n);return cr(r,e,t)},t)},cr=function(n,e,t){return e.bind(function(e){return t.filter(b(n.eq,e))})},ar={sharedOne:function(e,n,t){return 0<t.length?function(e,n,t,r){return r(e,n,t[0],t.slice(1))}(e,n,t,ur):Me.none()},subset:function(n,e,t){var r=Zt(n,e,t);return r.shared().bind(function(e){return function(o,i,e,n){var u=o.property().children(i);if(o.eq(i,e[0]))return Me.some([e[0]]);if(o.eq(i,n[0]))return Me.some([n[0]]);function t(e){var n=E(e),t=C(n,Qt(o,i)).getOr(-1),r=t<n.length-1?n[t+1]:n[t];return C(u,Qt(o,r))}var r=t(e),c=t(n);return r.bind(function(r){return c.map(function(e){var n=Math.min(r,e),t=Math.max(r,e);return u.slice(n,t+1)})})}(n,e,r.firstpath(),r.secondpath())})},ancestors:Zt,breakToLeft:function(t,r,o){return Jt(t,r,o).map(function(e){var n=t.create().clone(r);return t.insert().appendAll(n,e.before().concat([o])),t.insert().appendAll(r,e.after()),t.insert().before(r,n),or(n,r)})},breakToRight:function(t,r,e){return Jt(t,r,e).map(function(e){var n=t.create().clone(r);return t.insert().appendAll(n,e.after()),t.insert().after(r,n),or(r,n)})},breakPath:function(i,e,u,c){var a=function(e,n,o){var t=ir(e,Me.none(),o);return u(e)?ir(e,n,o):i.property().parent(e).bind(function(r){return c(i,r,e).map(function(e){var n=[{first:e.left,second:e.right}],t=u(r)?r:e.left();return a(t,Me.some(e.right()),o.concat(n))})}).getOr(t)};return a(e,Me.none(),[])}},lr=$t(),fr={sharedOne:function(t,e){return ar.sharedOne(lr,function(e,n){return t(n)},e)},subset:function(e,n){return ar.subset(lr,e,n)},ancestors:function(e,n,t){return ar.ancestors(lr,e,n,t)},breakToLeft:function(e,n){return ar.breakToLeft(lr,e,n)},breakToRight:function(e,n){return ar.breakToRight(lr,e,n)},breakPath:function(e,n,r){return ar.breakPath(lr,e,n,function(e,n,t){return r(n,t)})}},sr={create:Xe(["boxes","start","finish"],[])},dr=nr,mr=function(e,n){var t=Be(e,n);return 0<t.length?Me.some(t):Me.none()},gr=function(e,n,t,r,o){return function(e,n){return y(e,function(e){return ge(e,n)})}(e,o).bind(function(e){return Vt(e,n,t).bind(function(e){return function(n,t){return Jn(n,"table").bind(function(e){return Zn(e,t).bind(function(e){return nr(e,n).bind(function(n){return n.boxes().map(function(e){return{boxes:D(e),start:D(n.start()),finish:D(n.finish())}})})})})}(e,r)})})},pr=function(e,n,r){return Zn(e,n).bind(function(t){return Zn(e,r).bind(function(n){return fr.sharedOne(er,[t,n]).map(function(e){return{first:D(t),last:D(n),table:D(e)}})})})},hr=function(e,n){return mr(e,n)},vr=function(o,e,n){return pr(o,e,n).bind(function(t){function e(e){return In(o,e)}var n=Jn(t.first(),"thead,tfoot,tbody,table",e),r=Jn(t.last(),"thead,tfoot,tbody,table",e);return n.bind(function(n){return r.bind(function(e){return In(n,e)?Kt(t.table(),t.first(),t.last()):Me.none()})})})},br="data-mce-selected",wr="data-mce-first-selected",yr="data-mce-last-selected",Cr={selected:D(br),selectedSelector:D("td[data-mce-selected],th[data-mce-selected]"),attributeSelector:D("[data-mce-selected]"),firstSelected:D(wr),firstSelectedSelector:D("td[data-mce-first-selected],th[data-mce-first-selected]"),lastSelected:D(yr),lastSelectedSelector:D("td[data-mce-last-selected],th[data-mce-last-selected]")},Sr=function(u){if(!Le(u))throw new Error("cases must be an array");if(0===u.length)throw new Error("there must be at least one case");var c=[],t={};return p(u,function(e,r){var n=Ve(e);if(1!==n.length)throw new Error("one and only one name per case");var o=n[0],i=e[o];if(t[o]!==undefined)throw new Error("duplicate key detected:"+o);if("cata"===o)throw new Error("cannot have a case named cata (sorry)");if(!Le(i))throw new Error("case arguments must be an array");c.push(o),t[o]=function(){var e=arguments.length;if(e!==i.length)throw new Error("Wrong number of arguments to case "+o+". Expected "+i.length+" ("+i+"), got "+e);for(var t=new Array(e),n=0;n<t.length;n++)t[n]=arguments[n];return{fold:function(){if(arguments.length!==u.length)throw new Error("Wrong number of arguments to fold. Expected "+u.length+", got "+arguments.length);return arguments[r].apply(null,t)},match:function(e){var n=Ve(e);if(c.length!==n.length)throw new Error("Wrong number of arguments to match. Expected: "+c.join(",")+"\nActual: "+n.join(","));if(!A(c,function(e){return l(n,e)}))throw new Error("Not all branches were specified when using match. Specified: "+n.join(", ")+"\nRequired: "+c.join(", "));return e[o].apply(null,t)},log:function(e){f.console.log(e,{constructors:c,constructor:o,params:t})}}}}),t},xr=Sr([{none:[]},{multiple:["elements"]},{single:["selection"]}]),Rr={cata:function(e,n,t,r){return e.fold(n,t,r)},none:xr.none,multiple:xr.multiple,single:xr.single},Tr=function(t,e){return Rr.cata(e.get(),Me.none,function(n,e){return 0===n.length?Me.none():vr(t,Cr.firstSelectedSelector(),Cr.lastSelectedSelector()).bind(function(e){return 1<n.length?Me.some({bounds:D(e),cells:D(n)}):Me.none()})},Me.none)},Or=function(e,n){var t=tr(e,n);return 0<t.length&&A(t,function(e){return G(e,"rowspan")&&1<parseInt(V(e,"rowspan"),10)||G(e,"colspan")&&1<parseInt(V(e,"colspan"),10)})?Me.some(t):Me.none()},Dr=tr,Ar=B("element","clipboard","generators"),Er={noMenu:rr,forMenu:function(e,n,t){return{element:D(t),mergable:D(Tr(n,e)),unmergable:D(Or(t,e)),selection:D(Dr(t,e))}},notCell:function(e){return rr(e)},paste:Ar,pasteRows:function(e,n,t,r,o){return{element:D(t),mergable:Me.none,unmergable:Me.none,selection:D(Dr(t,e)),clipboard:D(r),generators:D(o)}}},Nr={registerEvents:function(c,e,a,l){c.on("BeforeGetContent",function(n){!0===n.selection&&Rr.cata(e.get(),T,function(e){n.preventDefault(),function(e){return lt.table(e[0]).map(Tt).map(function(e){return[pt(e,Cr.attributeSelector())]})}(e).each(function(e){n.content="text"===n.format?function(e){return g(e,function(e){return e.dom().innerText}).join("")}(e):function(n,e){return g(e,function(e){return n.selection.serializer.serialize(e.dom(),{})}).join("")}(c,e)})},T)}),c.on("BeforeSetContent",function(u){!0===u.selection&&!0===u.paste&&Me.from(c.dom.getParent(c.selection.getStart(),"th,td")).each(function(e){var i=on.fromDom(e);lt.table(i).each(function(n){var e=h(function(e,n){var t=(n||f.document).createElement("div");return t.innerHTML=e,Ce(on.fromDom(t))}(u.content),function(e){return"meta"!==en(e)});if(1===e.length&&"table"===en(e[0])){u.preventDefault();var t=on.fromDom(c.getDoc()),r=Wt.paste(t),o=Er.paste(i,e[0],r);a.pasteCells(n,o).each(function(e){c.selection.setRng(e),c.focus(),l.clear(n)})}})})})}};function kr(r,o){function e(e){var n=o(e);if(n<=0||null===n){var t=oe(e,r);return parseFloat(t)||0}return n}function i(o,e){return w(e,function(e,n){var t=oe(o,n),r=t===undefined?0:parseInt(t,10);return isNaN(r)?e:e+r},0)}return{set:function(e,n){if(!He(n)&&!n.match(/^[0-9]+$/))throw new Error(r+".set accepts only positive integer values. Value was "+n);var t=e.dom();Q(t)&&(t.style[r]=n+"px")},get:e,getOuter:e,aggregate:i,max:function(e,n,t){var r=i(e,t);return r<n?n-r:0}}}function Ir(e){return Qr.get(e)}function Br(e){return Qr.getOuter(e)}function Pr(e){return Zr.get(e)}function Mr(e){return Zr.getOuter(e)}function Wr(e,n,t){return function(e,n){var t=parseFloat(e);return isNaN(t)?n:t}(oe(e,n),t)}function _r(e,n){te(e,"height",n+"px")}function Lr(e,n,t,r){var o=parseInt(e,10);return function(e,n){return X(e,n,e.length-n.length)}(e,"%")&&"table"!==en(n)?function(e,t,r,n){var o=lt.table(e).map(function(e){var n=r(e);return Math.floor(t/100*n)}).getOr(t);return n(e,o),o}(n,o,t,r):o}function jr(e){var n=function(e){return ie(e,"height").getOrThunk(function(){return no(e)+"px"})}(e);return n?Lr(n,e,Ir,_r):Ir(e)}function zr(e){return ie(e,"width").fold(function(){return Me.from(V(e,"width"))},function(e){return Me.some(e)})}function Hr(e,n){return e/n.pixelWidth()*100}function Fr(e,n){return e!==undefined?e:n!==undefined?n:0}function Ur(e){var n=e.dom().ownerDocument,t=n.body,r=n.defaultView,o=n.documentElement;if(t===e.dom())return lo(t.offsetLeft,t.offsetTop);var i=Fr(r.pageYOffset,o.scrollTop),u=Fr(r.pageXOffset,o.scrollLeft),c=Fr(o.clientTop,t.clientTop),a=Fr(o.clientLeft,t.clientLeft);return fo(e).translate(u-a,i-c)}function qr(e){return Ur(e).left()+Mr(e)}function Vr(e){return Ur(e).left()}function Gr(e,n){return mo(e,Vr(n))}function Yr(e,n){return mo(e,qr(n))}function Kr(e){return Ur(e).top()}function Xr(e,n){return so(e,Kr(n))}function $r(e,n){return so(e,Kr(n)+Br(n))}function Jr(t,n,r){if(0===r.length)return[];var e=g(r.slice(1),function(e,n){return e.map(function(e){return t(n,e)})}),o=r[r.length-1].map(function(e){return n(r.length-1,e)});return e.concat([o])}var Qr=kr("height",function(e){var n=e.dom();return ee(e)?n.getBoundingClientRect().height:n.offsetHeight}),Zr=kr("width",function(e){return e.dom().offsetWidth}),eo=me(),no=function(e){return eo.browser.isIE()||eo.browser.isEdge()?function(e){var n=Wr(e,"padding-top",0),t=Wr(e,"padding-bottom",0),r=Wr(e,"border-top-width",0),o=Wr(e,"border-bottom-width",0),i=e.dom().getBoundingClientRect().height;return"border-box"===oe(e,"box-sizing")?i:i-n-t-(r+o)}(e):Wr(e,"height",Ir(e))},to=/(\d+(\.\d+)?)(\w|%)*/,ro=/(\d+(\.\d+)?)%/,oo=/(\d+(\.\d+)?)px|em/,io=function(e,n){return G(e,n)?parseInt(V(e,n),10):1},uo={percentageBasedSizeRegex:D(ro),pixelBasedSizeRegex:D(oo),setPixelWidth:function(e,n){te(e,"width",n+"px")},setPercentageWidth:function(e,n){te(e,"width",n+"%")},setHeight:_r,getPixelWidth:function(n,t){return zr(n).fold(function(){return Pr(n)},function(e){return function(e,n,t){var r=oo.exec(n);if(null!==r)return parseInt(r[1],10);var o=ro.exec(n);return null===o?Pr(e):function(e,n){return e/100*n.pixelWidth()}(parseFloat(o[1]),t)}(n,e,t)})},getPercentageWidth:function(n,t){return zr(n).fold(function(){var e=Pr(n);return Hr(e,t)},function(e){return function(e,n,t){var r=ro.exec(n);if(null!==r)return parseFloat(r[1]);var o=Pr(e);return Hr(o,t)}(n,e,t)})},getGenericWidth:function(e){return zr(e).bind(function(e){var n=to.exec(e);return null!==n?Me.some({width:D(parseFloat(n[1])),unit:D(n[3])}):Me.none()})},setGenericWidth:function(e,n,t){te(e,"width",n+t)},getHeight:function(e){return function(e,n,t){return t(e)/io(e,n)}(e,"rowspan",jr)},getRawWidth:zr},co=function(t,r){uo.getGenericWidth(t).each(function(e){var n=e.width()/2;uo.setGenericWidth(t,n,e.unit()),uo.setGenericWidth(r,n,e.unit())})},ao=function(t,r){return{left:D(t),top:D(r),translate:function(e,n){return ao(t+e,r+n)}}},lo=ao,fo=function(e){var n=e.dom(),t=n.ownerDocument.body;return t===n?lo(t.offsetLeft,t.offsetTop):ee(e)?function(e){var n=e.getBoundingClientRect();return lo(n.left,n.top)}(n):lo(0,0)},so=B("row","y"),mo=B("col","x"),go={height:{delta:o,positions:function(e){return Jr(Xr,$r,e)},edge:Kr},rtl:{delta:function(e){return-e},edge:qr,positions:function(e){return Jr(Yr,Gr,e)}},ltr:{delta:o,edge:Vr,positions:function(e){return Jr(Gr,Yr,e)}}},po={ltr:go.ltr,rtl:go.rtl};function ho(n){function t(e){return n(e).isRtl()?po.rtl:po.ltr}return{delta:function(e,n){return t(n).delta(e,n)},edge:function(e){return t(e).edge(e)},positions:function(e,n){return t(n).positions(e,n)}}}function vo(e){for(var n=[],t=function(e){n.push(e)},r=0;r<e.length;r++)e[r].each(t);return n}function bo(e,n){for(var t=0;t<e.length;t++){var r=n(e[t],t);if(r.isSome())return r}return Me.none()}function wo(e,n,t,r){t===r?Y(e,n):U(e,n,t)}function yo(e,n){var t=V(e,n);return t===undefined||""===t?[]:t.split(" ")}function Co(e){return e.dom().classList!==undefined}function So(e,n){return function(e,n,t){var r=yo(e,n).concat([t]);return U(e,n,r.join(" ")),!0}(e,"class",n)}function xo(e,n){return function(e,n,t){var r=h(yo(e,n),function(e){return e!==t});return 0<r.length?U(e,n,r.join(" ")):Y(e,n),!1}(e,"class",n)}function Ro(e,n){Co(e)?e.dom().classList.add(n):So(e,n)}function To(e){0===(Co(e)?e.dom().classList:function(e){return yo(e,"class")}(e)).length&&Y(e,"class")}function Oo(e,n){return Co(e)&&e.dom().classList.contains(n)}function Do(e,n){for(var t=[],r=e;r<n;r++)t.push(r);return t}function Ao(n,t){if(t<0||t>=n.length-1)return Me.none();var e=n[t].fold(function(){var e=E(n.slice(0,t));return bo(e,function(e,n){return e.map(function(e){return{value:e,delta:n+1}})})},function(e){return Me.some({value:e,delta:0})}),r=n[t+1].fold(function(){var e=n.slice(t+1);return bo(e,function(e,n){return e.map(function(e){return{value:e,delta:n+1}})})},function(e){return Me.some({value:e,delta:1})});return e.bind(function(t){return r.map(function(e){var n=e.delta+t.delta;return Math.abs(e.value-t.value)/n})})}function Eo(e){var n=e.replace(/\./g,"-");return{resolve:function(e){return n+"-"+e}}}function No(e){var n=Be(e.parent(),"."+iu);p(n,Wn)}function ko(t,e,r){var o=t.origin();p(e,function(e,n){e.each(function(e){var n=r(o,e);Ro(n,iu),Mn(t.parent(),n)})})}function Io(e,n,t,r,o,i){var u=Ur(n);!function(e,n,r,o){ko(e,n,function(e,n){var t=ou(n.row(),r.left()-e.left(),n.y()-e.top(),o,7);return Ro(t,uu),t})}(e,0<t.length?o.positions(t,n):[],u,Mr(n)),function(e,n,r,o){ko(e,n,function(e,n){var t=ru(n.col(),n.x()-e.left(),r.top()-e.top(),7,o);return Ro(t,cu),t})}(e,0<r.length?i.positions(r,n):[],u,Br(n))}function Bo(e,n){var t=Be(e.parent(),"."+iu);p(t,n)}function Po(e,n){return e.cells()[n]}function Mo(e,n){if(0===e.length)return 0;var t=e[0];return C(e,function(e){return!n(t.element(),e.element())}).fold(function(){return e.length},function(e){return e})}function Wo(e,t){return g(e,function(e){var n=function(e){return bo(e,function(e){return ve(e.element()).map(function(e){var n=ve(e).isNone();return Un(e,n)})}).getOrThunk(function(){return Un(t.row(),!0)})}(e.details());return qn(n.element(),e.details(),e.section(),n.isNew())})}function _o(e,n){var t=vu(e,In);return Wo(t,n)}function Lo(e,n){var t=S(g(e.all(),function(e){return e.cells()}));return y(t,function(e){return In(n,e.element())})}function jo(c,a,l,f,s){return function(t,r,e,o,i){var n=ft(r),u=mt.generate(n);return a(u,e).map(function(e){var n=function(e,n){return bu(e,n,!1)}(u,o),t=c(n,e,In,s(o)),r=_o(t.grid(),o);return{grid:D(r),cursor:t.cursor}}).fold(function(){return Me.none()},function(e){var n=Ji(r,e.grid());return l(r,e.grid(),i),f(r),au(t,r,go.height,i),Me.some({cursor:e.cursor,newRows:n.newRows,newCells:n.newCells})})}}function zo(n,e){return lt.cell(e.element()).bind(function(e){return Lo(n,e)})}function Ho(n,e){var t=g(e.selection(),function(e){return lt.cell(e).bind(function(e){return Lo(n,e)})}),r=vo(t);return 0<r.length?Me.some({cells:r,generators:e.generators,clipboard:e.clipboard}):Me.none()}function Fo(n,e){var t=g(e.selection(),function(e){return lt.cell(e).bind(function(e){return Lo(n,e)})}),r=vo(t);return 0<r.length?Me.some(r):Me.none()}function Uo(e,n){return g(e,function(){return Un(n.cell(),!0)})}function qo(n,e,t){return n.concat(function(e,n){for(var t=[],r=0;r<e;r++)t.push(n(r));return t}(e,function(e){return pu.setCells(n[n.length-1],Uo(n[n.length-1].cells(),t))}))}function Vo(e,n,t){return g(e,function(e){return pu.setCells(e,e.cells().concat(Uo(Do(0,n),t)))})}function Go(e,t,r,n){return g(e,function(e){return pu.mapCells(e,function(e){return function(n){return m(t,function(e){return r(n.element(),e.element())})}(e)?Un(n(e.element(),r),!0):e})})}function Yo(e,n,t,r){return pu.getCellElement(e[n],t)!==undefined&&0<n&&r(pu.getCellElement(e[n-1],t),pu.getCellElement(e[n],t))}function Ko(e,n,t){return 0<n&&t(pu.getCellElement(e,n-1),pu.getCellElement(e,n))}function Xo(e,n){return G(e,n)&&1<parseInt(V(e,n),10)}function $o(e,n,t){return ie(e,n).fold(function(){return t(e)+"px"},function(e){return e})}function Jo(e,n){return $o(e,"width",function(e){return uo.getPixelWidth(e,n)})}function Qo(e){return $o(e,"height",uo.getHeight)}function Zo(e,n,t,r,o){var i=eu(e),u=g(i,function(e){return e.map(n.edge)});return g(i,function(e,n){return e.filter(d(Hu.hasColspan)).fold(function(){var e=Ao(u,n);return r(e)},function(e){return t(e,o)})})}function ei(e){return e.map(function(e){return e+"px"}).getOr("")}function ni(e,n,t,r){var o=nu(e),i=g(o,function(e){return e.map(n.edge)});return g(o,function(e,n){return e.filter(d(Hu.hasRowspan)).fold(function(){var e=Ao(i,n);return r(e)},function(e){return t(e)})})}function ti(e,n,t){for(var r=0,o=e;o<n;o++)r+=t[o]!==undefined?t[o]:0;return r}function ri(e){var n=o;return{width:D(e),pixelWidth:D(e),getWidths:Fu.getPixelWidths,getCellDelta:n,singleColumnWidth:function(e,n){return[Math.max(Hu.minWidth(),e+n)-e]},minCellWidth:Hu.minWidth,setElementWidth:uo.setPixelWidth,setTableWidth:function(e,n,t){var r=v(n,function(e,n){return e+n},0);uo.setPixelWidth(e,r)}}}function oi(e,n){var t=uo.percentageBasedSizeRegex().exec(n);if(null!==t)return function(e,n){var o=parseFloat(e),t=Pr(n);return{width:D(o),pixelWidth:D(t),getWidths:Fu.getPercentageWidths,getCellDelta:function(e){return e/t*100},singleColumnWidth:function(e,n){return[100-e]},minCellWidth:function(){return Hu.minWidth()/t*100},setElementWidth:uo.setPercentageWidth,setTableWidth:function(e,n,t){var r=t/100*o;uo.setPercentageWidth(e,o+r)}}}(t[1],e);var r=uo.pixelBasedSizeRegex().exec(n);if(null!==r){var o=parseInt(r[1],10);return ri(o)}var i=Pr(e);return ri(i)}function ii(e){return mt.generate(e)}function ui(e){var n=ft(e);return ii(n)}function ci(n,e){var t=h(e,function(e){return!l(n,e)});0<t.length&&W(t)}function ai(e){return function(e,n){return $u(e,n,{validate:ze,label:"function"})}(ci,e)}function li(e){var n=G(e,"colspan")?parseInt(V(e,"colspan"),10):1,t=G(e,"rowspan")?parseInt(V(e,"rowspan"),10):1;return{element:D(e),colspan:D(n),rowspan:D(t)}}function fi(e,n){var t=e.property().name(n);return l(nc,t)}function si(e,n){return l(["br","img","hr","input"],e.property().name(n))}function di(e){0===lt.cells(e).length&&Wn(e)}function mi(e,n,t){return sc(e,n,t).orThunk(function(){return sc(e,0,0)})}function gi(e,n,t){return fc(e,sc(e,n,t))}function pi(e){return w(e,function(e,n){return m(e,function(e){return e.row()===n.row()})?e:e.concat([n])},[]).sort(function(e,n){return e.row()-n.row()})}function hi(e){return w(e,function(e,n){return m(e,function(e){return e.column()===n.column()})?e:e.concat([n])},[]).sort(function(e,n){return e.column()-n.column()})}function vi(e,n,t){var r=st(e,t),o=mt.generate(r);return bu(o,n,!0)}function bi(e){return e.getBoundingClientRect().width}function wi(e){return e.getBoundingClientRect().height}function yi(e){return/^[0-9]+$/.test(e)&&(e+="px"),e}function Ci(e){var n=Be(e,"td[data-mce-style],th[data-mce-style]");Y(e,"data-mce-style"),p(n,function(e){Y(e,"data-mce-style")})}function Si(e){return e.getParam("table_default_attributes",yc,"object")}function xi(e){return e.getParam("table_default_styles",wc,"object")}function Ri(e){return e.getParam("table_cell_advtab",!0,"boolean")}function Ti(e){return e.getParam("table_row_advtab",!0,"boolean")}function Oi(e){return e.getParam("table_advtab",!0,"boolean")}function Di(e){return e.getParam("table_style_by_css",!1,"boolean")}function Ai(e){return e.getParam("table_class_list",[],"array")}function Ei(e){return!1===e.getParam("table_responsive_width")}function Ni(e,n){return e.fire("newrow",{node:n})}function ki(e,n){return e.fire("newcell",{node:n})}function Ii(e,n,t,r){e.fire("ObjectResizeStart",{target:n,width:t,height:r})}function Bi(e,n,t,r){e.fire("ObjectResized",{target:n,width:t,height:r})}function Pi(n,e){function t(e){return J(e,"rgb")?n.toHex(e):e}return{borderwidth:ie(on.fromDom(e),"border-width").getOr(""),borderstyle:ie(on.fromDom(e),"border-style").getOr(""),bordercolor:ie(on.fromDom(e),"border-color").map(t).getOr(""),backgroundcolor:ie(on.fromDom(e),"background-color").map(t).getOr("")}}function Mi(e,n,t,r,o){var i={};return Dc.each(e.split(" "),function(e){r.formatter.matchNode(o,n+e)&&(i[t]=e)}),i[t]||(i[t]=""),i}function Wi(e,n){e.setAttrib("scope",n.scope),e.setAttrib("class",n["class"]),e.setStyle("width",yi(n.width)),e.setStyle("height",yi(n.height))}function _i(e,n){e.setStyle("background-color",n.backgroundcolor),e.setStyle("border-color",n.bordercolor),e.setStyle("border-style",n.borderstyle),e.setStyle("border-width",yi(n.borderwidth))}function Li(e,n,t){var r=e.dom,o=t.celltype&&n[0].nodeName.toLowerCase()!==t.celltype?r.rename(n[0],t.celltype):n[0],i=qc.normal(r,o);Wi(i,t),Ri(e)&&_i(i,t),Nc(e,o),kc(e,o),t.halign&&Ac(e,o,t.halign),t.valign&&Ec(e,o,t.valign)}function ji(t,e,r){var o=t.dom;Dc.each(e,function(e){r.celltype&&e.nodeName.toLowerCase()!==r.celltype&&(e=o.rename(e,r.celltype));var n=qc.ifTruthy(o,e);Wi(n,r),Ri(t)&&_i(n,r),r.halign&&Ac(t,e,r.halign),r.valign&&Ec(t,e,r.valign)})}function zi(e,n,t){var r=t.getData();t.close(),e.undoManager.transact(function(){(1===n.length?Li:ji)(e,n,r),e.focus()})}function Hi(t,e,r,n){var o=t.dom,i=n.getData();n.close();var u=1===e.length?qc.normal:qc.ifTruthy;t.undoManager.transact(function(){Dc.each(e,function(e){i.type!==e.parentNode.nodeName.toLowerCase()&&function(e,n,t){var r=e.getParent(n,"table"),o=n.parentNode,i=e.select(t,r)[0];i||(i=e.create(t),r.firstChild?"CAPTION"===r.firstChild.nodeName?e.insertAfter(i,r.firstChild):r.insertBefore(i,r.firstChild):r.appendChild(i)),i.appendChild(n),o.hasChildNodes()||e.remove(o)}(t.dom,e,i.type);var n=u(o,e);n.setAttrib("scope",i.scope),n.setAttrib("class",i["class"]),n.setStyle("height",yi(i.height)),Ti(t)&&function(e,n){e.setStyle("background-color",n.backgroundcolor),e.setStyle("border-color",n.bordercolor),e.setStyle("border-style",n.borderstyle)}(n,i),i.align!==r.align&&(Nc(t,e),Ac(t,e,i.align))}),t.focus()})}function Fi(e,n,t,r,o){void 0===o&&(o=Qc);var i=on.fromTag("table");re(i,o.styles),q(i,o.attributes);var u=on.fromTag("tbody");Mn(i,u);for(var c=[],a=0;a<e;a++){for(var l=on.fromTag("tr"),f=0;f<n;f++){var s=a<t||f<r?on.fromTag("th"):on.fromTag("td");f<r&&U(s,"scope","row"),a<t&&U(s,"scope","col"),Mn(s,on.fromTag("br")),o.percentages&&te(s,"width",100/n+"%"),Mn(l,s)}c.push(l)}return Ae(u,c),i}function Ui(e,n){e.selection.select(n.dom(),!0),e.selection.collapse(!0)}function qi(t,r,e){var o,i=t.dom,u=e.getData();e.close(),""===u["class"]&&delete u["class"],t.undoManager.transact(function(){if(!r){var e=parseInt(u.cols,10)||1,n=parseInt(u.rows,10)||1;r=Zc(t,e,n)}!function(e,n,t){var r=e.dom,o={},i={};if(o["class"]=t["class"],i.height=yi(t.height),r.getAttrib(n,"width")&&!Di(e)?o.width=function(e){return e?e.replace(/px$/,""):""}(t.width):i.width=yi(t.width),Di(e)?(i["border-width"]=yi(t.border),i["border-spacing"]=yi(t.cellspacing)):(o.border=t.border,o.cellpadding=t.cellpadding,o.cellspacing=t.cellspacing),Di(e)&&n.children)for(var u=0;u<n.children.length;u++)na(r,n.children[u],{"border-width":yi(t.border),padding:yi(t.cellpadding)}),Oi(e)&&na(r,n.children[u],{"border-color":t.bordercolor});Oi(e)&&(i["background-color"]=t.backgroundcolor,i["border-color"]=t.bordercolor,i["border-style"]=t.borderstyle),o.style=r.serializeStyle($c(xi(e),i)),r.setAttribs(n,$c(Si(e),o))}(t,r,u),(o=i.select("caption",r)[0])&&!u.caption&&i.remove(o),!o&&u.caption&&((o=i.create("caption")).innerHTML=Jc.ie?"\xa0":'<br data-mce-bogus="1"/>',r.insertBefore(o,r.firstChild)),""===u.align?Nc(t,r):Ac(t,r,u.align),t.focus(),t.addVisual()})}function Vi(n){return function(e){return Me.from(e.dom.getParent(e.selection.getStart(),n)).map(on.fromDom)}}function Gi(e){function n(){e.stopPropagation()}function t(){e.preventDefault()}var r=on.fromDom(e.target),o=O(t,n);return function(e,n,t,r,o,i,u){return{target:D(e),x:D(n),y:D(t),stop:r,prevent:o,kill:i,raw:D(u)}}(r,e.clientX,e.clientY,n,t,o,e)}function Yi(e,n,t,r,o){var i=function(n,t){return function(e){n(e)&&t(Gi(e))}}(t,r);return e.dom().addEventListener(n,i,o),{unbind:b(sa,e,n,i,o)}}function Ki(e,n,t){return function(e,n,t,r){return Yi(e,n,t,r,!1)}(e,n,da,t)}var Xi,$i=function(e){var n=ft(e);return mt.generate(n).grid()},Ji=function(o,e){function n(e,n){0<e.length?function(e,n){var t=Qn(o,n).getOrThunk(function(){var e=on.fromTag(n,he(o).dom());return Mn(o,e),e});Ee(t);var r=g(e,function(e){e.isNew()&&i.push(e.element());var n=e.element();return Ee(n),p(e.cells(),function(e){e.isNew()&&u.push(e.element()),wo(e.element(),"colspan",e.colspan(),1),wo(e.element(),"rowspan",e.rowspan(),1),Mn(n,e.element())}),n});Ae(t,r)}(e,n):function(e){Qn(o,e).each(Wn)}(n)}var i=[],u=[],t=[],r=[],c=[];return p(e,function(e){switch(e.section()){case"thead":t.push(e);break;case"tbody":r.push(e);break;case"tfoot":c.push(e)}}),n(t,"thead"),n(r,"tbody"),n(c,"tfoot"),{newRows:D(i),newCells:D(u)}},Qi=function(e){return g(e,function(e){var t=Rt(e.element());return p(e.cells(),function(e){var n=Tt(e.element());wo(n,"colspan",e.colspan(),1),wo(n,"rowspan",e.rowspan(),1),Mn(t,n)}),t})},Zi=function(e,n,t){var r=e();return y(r,n).orThunk(function(){return Me.from(r[0]).orThunk(t)}).map(function(e){return e.element()})},eu=function(t){var e=t.grid(),n=Do(0,e.columns()),r=Do(0,e.rows());return g(n,function(n){return Zi(function(){return x(r,function(e){return mt.getAt(t,e,n).filter(function(e){return e.column()===n}).fold(D([]),function(e){return[e]})})},function(e){return 1===e.colspan()},function(){return mt.getAt(t,0,n)})})},nu=function(t){var e=t.grid(),n=Do(0,e.rows()),r=Do(0,e.columns());return g(n,function(n){return Zi(function(){return x(r,function(e){return mt.getAt(t,n,e).filter(function(e){return e.row()===n}).fold(D([]),function(e){return[e]})})},function(e){return 1===e.rowspan()},function(){return mt.getAt(t,n,0)})})},tu={resolve:Eo("ephox-snooker").resolve},ru=function(e,n,t,r,o){var i=on.fromTag("div");return re(i,{position:"absolute",left:n-r/2+"px",top:t+"px",height:o+"px",width:r+"px"}),q(i,{"data-column":e,role:"presentation"}),i},ou=function(e,n,t,r,o){var i=on.fromTag("div");return re(i,{position:"absolute",left:n+"px",top:t-o/2+"px",height:o+"px",width:r+"px"}),q(i,{"data-row":e,role:"presentation"}),i},iu=tu.resolve("resizer-bar"),uu=tu.resolve("resizer-rows"),cu=tu.resolve("resizer-cols"),au=function(e,n,t,r){No(e);var o=ft(n),i=mt.generate(o),u=nu(i),c=eu(i);Io(e,n,u,c,t,r)},lu=function(e){Bo(e,function(e){te(e,"display","none")})},fu=function(e){Bo(e,function(e){te(e,"display","block")})},su=No,du=function(e){return Oo(e,uu)},mu=function(e){return Oo(e,cu)},gu=function(e,n){return Vn(n,e.section())},pu={addCell:function(e,n,t){var r=e.cells(),o=r.slice(0,n),i=r.slice(n),u=o.concat([t]).concat(i);return gu(e,u)},setCells:gu,mutateCell:function(e,n,t){e.cells()[n]=t},getCell:Po,getCellElement:function(e,n){return Po(e,n).element()},mapCells:function(e,n){var t=e.cells(),r=g(t,n);return Vn(r,e.section())},cellLength:function(e){return e.cells().length}},hu=function(e,n,t,r){var o=function(e,n){return e[n]}(e,n).cells().slice(t),i=Mo(o,r),u=function(e,n){return g(e,function(e){return pu.getCell(e,n)})}(e,t).slice(n),c=Mo(u,r);return{colspan:D(i),rowspan:D(c)}},vu=function(o,i){var u=g(o,function(e,n){return g(e.cells(),function(e,n){return!1})});return g(o,function(e,r){var n=x(e.cells(),function(e,n){if(!1!==u[r][n])return[];var t=hu(o,r,n,i);return function(e,n,t,r){for(var o=e;o<e+t;o++)for(var i=n;i<n+r;i++)u[o][i]=!0}(r,n,t.rowspan(),t.colspan()),[zn(e.element(),t.rowspan(),t.colspan(),e.isNew())]});return Gn(n,e.section())})},bu=function(e,n,t){for(var r=[],o=0;o<e.grid().rows();o++){for(var i=[],u=0;u<e.grid().columns();u++){var c=mt.getAt(e,o,u).map(function(e){return Un(e.element(),t)}).getOrThunk(function(){return Un(n.gap(),!0)});i.push(c)}var a=Vn(i,e.all()[o].section());r.push(a)}return r},wu=function(t){return{is:function(e){return t===e},isValue:i,isError:s,getOr:D(t),getOrThunk:D(t),getOrDie:D(t),or:function(e){return wu(t)},orThunk:function(e){return wu(t)},fold:function(e,n){return n(t)},map:function(e){return wu(e(t))},mapError:function(e){return wu(t)},each:function(e){e(t)},bind:function(e){return e(t)},exists:function(e){return e(t)},forall:function(e){return e(t)},toOption:function(){return Me.some(t)}}},yu=function(t){return{is:s,isValue:s,isError:i,getOr:o,getOrThunk:function(e){return e()},getOrDie:function(){return function(e){return function(){throw new Error(e)}}(String(t))()},or:function(e){return e},orThunk:function(e){return e()},fold:function(e,n){return e(t)},map:function(e){return yu(t)},mapError:function(e){return yu(e(t))},each:T,bind:function(e){return yu(t)},exists:s,forall:i,toOption:Me.none}},Cu={value:wu,error:yu,fromOption:function(e,n){return e.fold(function(){return yu(n)},wu)}},Su=function(e,n,t){if(e.row()>=n.length||e.column()>pu.cellLength(n[0]))return Cu.error("invalid start address out of table bounds, row: "+e.row()+", column: "+e.column());var r=n.slice(e.row()),o=r[0].cells().slice(e.column()),i=pu.cellLength(t[0]),u=t.length;return Cu.value({rowDelta:D(r.length-u),colDelta:D(o.length-i)})},xu=function(e,n){var t=pu.cellLength(e[0]),r=pu.cellLength(n[0]);return{rowDelta:D(0),colDelta:D(t-r)}},Ru=function(e,n,t){var r=n.colDelta()<0?Vo:o;return(n.rowDelta()<0?qo:o)(r(e,Math.abs(n.colDelta()),t),Math.abs(n.rowDelta()),t)},Tu=function(e,n,t,r){if(0===e.length)return e;for(var o=n.startRow();o<=n.finishRow();o++)for(var i=n.startCol();i<=n.finishCol();i++)pu.mutateCell(e[o],i,Un(r(),!1));return e},Ou=function(e,n,t,r){for(var o=!0,i=0;i<e.length;i++)for(var u=0;u<pu.cellLength(e[0]);u++){var c=t(pu.getCellElement(e[i],u),n);!0===c&&!1===o?pu.mutateCell(e[i],u,Un(r(),!0)):!0===c&&(o=!1)}return e},Du=function(i,t,u,c){if(0<t&&t<i.length){var e=function(e,t){return w(e,function(e,n){return m(e,function(e){return t(e.element(),n.element())})?e:e.concat([n])},[])}(i[t-1].cells(),u);p(e,function(r){for(var o=Me.none(),e=function(t){for(var e=function(n){var e=i[t].cells()[n];u(e.element(),r.element())&&(o.isNone()&&(o=Me.some(c())),o.each(function(e){pu.mutateCell(i[t],n,Un(e,!0))}))},n=0;n<pu.cellLength(i[0]);n++)e(n)},n=t;n<i.length;n++)e(n)})}return i},Au=function(t,r,o,i,u){return Su(t,r,o).map(function(e){var n=Ru(r,e,i);return function(e,n,t,r,o){for(var i,u,c,a,l,f=e.row(),s=e.column(),d=f+t.length,m=s+pu.cellLength(t[0]),g=f;g<d;g++)for(var p=s;p<m;p++){i=n,u=g,c=p,l=a=void 0,a=b(o,pu.getCell(i[u],c).element()),l=i[u],1<i.length&&1<pu.cellLength(l)&&(0<c&&a(pu.getCellElement(l,c-1))||c<l.cells().length-1&&a(pu.getCellElement(l,c+1))||0<u&&a(pu.getCellElement(i[u-1],c))||u<i.length-1&&a(pu.getCellElement(i[u+1],c)))&&Ou(n,pu.getCellElement(n[g],p),o,r.cell);var h=pu.getCellElement(t[g-f],p-s),v=r.replace(h);pu.mutateCell(n[g],p,Un(v,!0))}return n}(t,n,o,i,u)})},Eu=function(e,n,t,r,o){Du(n,e,o,r.cell);var i=xu(t,n),u=Ru(t,i,r),c=xu(n,u),a=Ru(n,c,r);return a.slice(0,e).concat(u).concat(a.slice(e,a.length))},Nu=function(t,r,e,o,i){var n=t.slice(0,r),u=t.slice(r),c=pu.mapCells(t[e],function(e,n){return 0<r&&r<t.length&&o(pu.getCellElement(t[r-1],n),pu.getCellElement(t[r],n))?pu.getCell(t[r],n):Un(i(e.element(),o),!0)});return n.concat([c]).concat(u)},ku=function(e,t,r,o,i){return g(e,function(e){var n=0<t&&t<pu.cellLength(e)&&o(pu.getCellElement(e,t-1),pu.getCellElement(e,t))?pu.getCell(e,t):Un(i(pu.getCellElement(e,r),o),!0);return pu.addCell(e,t,n)})},Iu=function(e,r,o,i,u){var c=o+1;return g(e,function(e,n){var t=n===r?Un(u(pu.getCellElement(e,o),i),!0):pu.getCell(e,o);return pu.addCell(e,c,t)})},Bu=function(e,n,t,r,o){var i=n+1,u=e.slice(0,i),c=e.slice(i),a=pu.mapCells(e[n],function(e,n){return n===t?Un(o(e.element(),r),!0):e});return u.concat([a]).concat(c)},Pu=function(e,n,t){return e.slice(0,n).concat(e.slice(t+1))},Mu=function(e,t,r){var n=g(e,function(e){var n=e.cells().slice(0,t).concat(e.cells().slice(r+1));return Vn(n,e.section())});return h(n,function(e){return 0<e.cells().length})},Wu=function(t,r,o,e){var n=x(t,function(e,n){return Yo(t,n,r,o)||Ko(e,r,o)?[]:[pu.getCell(e,r)]});return Go(t,n,o,e)},_u=function(t,r,o,e){var i=t[r],n=x(i.cells(),function(e,n){return Yo(t,r,n,o)||Ko(i,n,o)?[]:[e]});return Go(t,n,o,e)},Lu=Sr([{none:[]},{only:["index"]},{left:["index","next"]},{middle:["prev","index","next"]},{right:["prev","index"]}]),ju=fn({},Lu),zu=function(e,n,i,u){function c(e){return g(e,D(0))}function r(e,n){if(0<=i){var t=Math.max(u.minCellWidth(),a[n]-i);return c(a.slice(0,e)).concat([i,t-a[n]]).concat(c(a.slice(n+1)))}var r=Math.max(u.minCellWidth(),a[e]+i),o=a[e]-r;return c(a.slice(0,e)).concat([r-a[e],o]).concat(c(a.slice(n+1)))}var a=e.slice(0),t=function(e,n){return 0===e.length?ju.none():1===e.length?ju.only(0):0===n?ju.left(0,1):n===e.length-1?ju.right(n-1,n):0<n&&n<e.length-1?ju.middle(n-1,n,n+1):ju.none()}(e,n),o=D(c(a)),l=r;return t.fold(o,function(e){return u.singleColumnWidth(a[e],i)},l,function(e,n,t){return r(n,t)},function(e,n){if(0<=i)return c(a.slice(0,n)).concat([i]);var t=Math.max(u.minCellWidth(),a[n]+i);return c(a.slice(0,n)).concat([t-a[n]])})},Hu={hasColspan:function(e){return Xo(e,"colspan")},hasRowspan:function(e){return Xo(e,"rowspan")},minWidth:D(10),minHeight:D(10),getInt:function(e,n){return parseInt(oe(e,n),10)}},Fu={getRawWidths:function(e,n,t){return Zo(e,n,Jo,ei,t)},getPixelWidths:function(e,n,t){return Zo(e,n,uo.getPixelWidth,function(e){return e.getOrThunk(t.minCellWidth)},t)},getPercentageWidths:function(e,n,t){return Zo(e,n,uo.getPercentageWidth,function(e){return e.fold(function(){return t.minCellWidth()},function(e){return e/t.pixelWidth()*100})},t)},getPixelHeights:function(e,n){return ni(e,n,uo.getHeight,function(e){return e.getOrThunk(Hu.minHeight)})},getRawHeights:function(e,n){return ni(e,n,Qo,ei)}},Uu=function(e,t){var n=mt.justCells(e);return g(n,function(e){var n=ti(e.column(),e.column()+e.colspan(),t);return{element:e.element,width:D(n),colspan:e.colspan}})},qu=function(e,t){var n=mt.justCells(e);return g(n,function(e){var n=ti(e.row(),e.row()+e.rowspan(),t);return{element:e.element,height:D(n),rowspan:e.rowspan}})},Vu=function(e,t){return g(e.all(),function(e,n){return{element:e.element,height:D(t[n])}})},Gu=function(n){return uo.getRawWidth(n).fold(function(){var e=Pr(n);return ri(e)},function(e){return oi(n,e)})},Yu=function(e,n,t,r){var o=Gu(e),i=o.getCellDelta(n),u=ui(e),c=o.getWidths(u,r,o),a=zu(c,t,i,o),l=g(a,function(e,n){return e+c[n]}),f=Uu(u,l);p(f,function(e){o.setElementWidth(e.element(),e.width())}),t===u.grid().columns()-1&&o.setTableWidth(e,l,i)},Ku=function(e,t,r,n){var o=ui(e),i=Fu.getPixelHeights(o,n),u=g(i,function(e,n){return r===n?Math.max(t+e,Hu.minHeight()):e}),c=qu(o,u),a=Vu(o,u);p(a,function(e){uo.setHeight(e.element(),e.height())}),p(c,function(e){uo.setHeight(e.element(),e.height())});var l=function(e){return v(e,function(e,n){return e+n},0)}(u);uo.setHeight(e,l)},Xu=function(e,n,t){var r=Gu(e),o=ii(n),i=r.getWidths(o,t,r),u=Uu(o,i);p(u,function(e){r.setElementWidth(e.element(),e.width())}),0<u.length&&r.setTableWidth(e,i,r.getCellDelta(0))},$u=function(r,o,i){if(0===o.length)throw new Error("You must specify at least one required field.");return _("required",o),L(o),function(n){var t=Ve(n);A(o,function(e){return l(t,e)})||M(o,t),r(o,t);var e=h(o,function(e){return!i.validate(n[e],e)});return 0<e.length&&function(e,n){throw new Error("All values need to be of type: "+n+". Keys ("+P(e).join(", ")+") were not.")}(e,i.label),n}},Ju=ai(["cell","row","replace","gap"]),Qu=function(n,t){void 0===t&&(t=li),Ju(n);function r(e){return function(e){return n.cell(e)}(t(e))}function o(e){var n=r(e);return i.get().isNone()&&i.set(Me.some(n)),u=Me.some({item:e,replacement:n}),n}var i=R(Me.none()),u=Me.none();return{getOrInit:function(n,t){return u.fold(function(){return o(n)},function(e){return t(n,e.item)?e.replacement:o(n)})},cursor:i.get}},Zu=function(c,a){return function(r){var o=R(Me.none());Ju(r);function i(e){var n={scope:c},t=r.replace(e,a,n);return u.push({item:e,sub:t}),o.get().isNone()&&o.set(Me.some(t)),t}var u=[];return{replaceOrInit:function(n,t){return function(n,t){return y(u,function(e){return t(e.item,n)})}(n,t).fold(function(){return i(n)},function(e){return t(n,e.item)?e.sub:i(n)})},cursor:o.get}}},ec=function(t){Ju(t);var e=R(Me.none());return{combine:function(n){return e.get().isNone()&&e.set(Me.some(n)),function(){var e=t.cell({element:D(n),colspan:D(1),rowspan:D(1)});return ue(e,"width"),ue(n,"width"),e}},cursor:e.get}},nc=["body","p","div","article","aside","figcaption","figure","footer","header","nav","section","ol","ul","table","thead","tfoot","tbody","caption","tr","td","th","h1","h2","h3","h4","h5","h6","blockquote","pre","address"],tc=fi,rc=function(e,n){var t=e.property().name(n);return l(["ol","ul"],t)},oc=si,ic=$t(),uc=function(e){return tc(ic,e)},cc=function(e){return rc(ic,e)},ac=function(e){return oc(ic,e)},lc=function(e){function o(e){return"br"===en(e)}function t(r){return St(r).bind(function(n){var t=function(e){return ye(e).map(function(e){return!!uc(e)||!!ac(e)&&"img"!==en(e)}).getOr(!1)}(n);return ve(n).map(function(e){return!0===t||function(e){return"li"===en(e)||$n(e,cc).isSome()}(e)||o(n)||uc(e)&&!In(r,e)?[]:[on.fromTag("br")]})}).getOr([])}var n,r=0===(n=x(e,function(e){var n=Ce(e);return function(e){return A(e,function(e){return o(e)||tn(e)&&0===ht(e).trim().length})}(n)?[]:n.concat(t(e))})).length?[on.fromTag("br")]:n;Ee(e[0]),Ae(e[0],r)},fc=B("grid","cursor"),sc=function(e,n,t){return Me.from(e[n]).bind(function(e){return Me.from(e.cells()[t]).bind(function(e){return Me.from(e.element())})})},dc=Xu,mc={insertRowBefore:jo(function(e,n,t,r){var o=n.row(),i=n.row(),u=Nu(e,i,o,t,r.getOrInit);return gi(u,i,n.column())},zo,T,T,Qu),insertRowsBefore:jo(function(e,n,t,r){var o=n[0].row(),i=n[0].row(),u=pi(n),c=w(u,function(e,n){return Nu(e,i,o,t,r.getOrInit)},e);return gi(c,i,n[0].column())},Fo,T,T,Qu),insertRowAfter:jo(function(e,n,t,r){var o=n.row(),i=n.row()+n.rowspan(),u=Nu(e,i,o,t,r.getOrInit);return gi(u,i,n.column())},zo,T,T,Qu),insertRowsAfter:jo(function(e,n,t,r){var o=pi(n),i=o[o.length-1].row(),u=o[o.length-1].row()+o[o.length-1].rowspan(),c=w(o,function(e,n){return Nu(e,u,i,t,r.getOrInit)},e);return gi(c,u,n[0].column())},Fo,T,T,Qu),insertColumnBefore:jo(function(e,n,t,r){var o=n.column(),i=n.column(),u=ku(e,i,o,t,r.getOrInit);return gi(u,n.row(),i)},zo,dc,T,Qu),insertColumnsBefore:jo(function(e,n,t,r){var o=hi(n),i=o[0].column(),u=o[0].column(),c=w(o,function(e,n){return ku(e,u,i,t,r.getOrInit)},e);return gi(c,n[0].row(),u)},Fo,dc,T,Qu),insertColumnAfter:jo(function(e,n,t,r){var o=n.column(),i=n.column()+n.colspan(),u=ku(e,i,o,t,r.getOrInit);return gi(u,n.row(),i)},zo,dc,T,Qu),insertColumnsAfter:jo(function(e,n,t,r){var o=n[n.length-1].column(),i=n[n.length-1].column()+n[n.length-1].colspan(),u=hi(n),c=w(u,function(e,n){return ku(e,i,o,t,r.getOrInit)},e);return gi(c,n[0].row(),i)},Fo,dc,T,Qu),splitCellIntoColumns:jo(function(e,n,t,r){var o=Iu(e,n.row(),n.column(),t,r.getOrInit);return gi(o,n.row(),n.column())},zo,dc,T,Qu),splitCellIntoRows:jo(function(e,n,t,r){var o=Bu(e,n.row(),n.column(),t,r.getOrInit);return gi(o,n.row(),n.column())},zo,T,T,Qu),eraseColumns:jo(function(e,n,t,r){var o=hi(n),i=Mu(e,o[0].column(),o[o.length-1].column()),u=mi(i,n[0].row(),n[0].column());return fc(i,u)},Fo,dc,di,Qu),eraseRows:jo(function(e,n,t,r){var o=pi(n),i=Pu(e,o[0].row(),o[o.length-1].row()),u=mi(i,n[0].row(),n[0].column());return fc(i,u)},Fo,T,di,Qu),makeColumnHeader:jo(function(e,n,t,r){var o=Wu(e,n.column(),t,r.replaceOrInit);return gi(o,n.row(),n.column())},zo,T,T,Zu("row","th")),unmakeColumnHeader:jo(function(e,n,t,r){var o=Wu(e,n.column(),t,r.replaceOrInit);return gi(o,n.row(),n.column())},zo,T,T,Zu(null,"td")),makeRowHeader:jo(function(e,n,t,r){var o=_u(e,n.row(),t,r.replaceOrInit);return gi(o,n.row(),n.column())},zo,T,T,Zu("col","th")),unmakeRowHeader:jo(function(e,n,t,r){var o=_u(e,n.row(),t,r.replaceOrInit);return gi(o,n.row(),n.column())},zo,T,T,Zu(null,"td")),mergeCells:jo(function(e,n,t,r){var o=n.cells();lc(o);var i=Tu(e,n.bounds(),t,D(o[0]));return fc(i,Me.from(o[0]))},function(e,n){return n.mergable()},T,T,ec),unmergeCells:jo(function(e,n,t,r){var o=v(n,function(e,n){return Ou(e,n,t,r.combine(n))},e);return fc(o,Me.from(n[0]))},function(e,n){return n.unmergable()},dc,T,ec),pasteCells:jo(function(e,t,n,r){var o,i,u,c,a=(o=t.clipboard(),i=t.generators(),u=ft(o),c=mt.generate(u),bu(c,i,!0)),l=Ln(t.row(),t.column());return Au(l,e,a,t.generators(),n).fold(function(){return fc(e,Me.some(t.element()))},function(e){var n=mi(e,t.row(),t.column());return fc(e,n)})},function(n,t){return lt.cell(t.element()).bind(function(e){return Lo(n,e).map(function(e){return fn(fn({},e),{generators:t.generators,clipboard:t.clipboard})})})},dc,T,Qu),pasteRowsBefore:jo(function(e,n,t,r){var o=e[n.cells[0].row()],i=n.cells[0].row(),u=vi(n.clipboard(),n.generators(),o),c=Eu(i,e,u,n.generators(),t),a=mi(c,n.cells[0].row(),n.cells[0].column());return fc(c,a)},Ho,T,T,Qu),pasteRowsAfter:jo(function(e,n,t,r){var o=e[n.cells[0].row()],i=n.cells[n.cells.length-1].row()+n.cells[n.cells.length-1].rowspan(),u=vi(n.clipboard(),n.generators(),o),c=Eu(i,e,u,n.generators(),t),a=mi(c,n.cells[0].row(),n.cells[0].column());return fc(c,a)},Ho,T,T,Qu)},gc=function(e){return on.fromDom(e.getBody())},pc=function(n){return function(e){return In(e,gc(n))}},hc={isRtl:D(!1)},vc={isRtl:D(!0)},bc={directionAt:function(e){return"rtl"===function(e){return"rtl"===oe(e,"direction")?"rtl":"ltr"}(e)?vc:hc}},wc={"border-collapse":"collapse",width:"100%"},yc={border:"1"},Cc=function(e){return e.getParam("table_tab_navigation",!0,"boolean")},Sc=function(e){var n=e.getParam("table_clone_elements");return _e(n)?Me.some(n.split(/[ ,]/)):Array.isArray(n)?Me.some(n):Me.none()},xc=function(e,n,t,r,o){e.fire("TableSelectionChange",{cells:n,start:t,finish:r,otherCells:o})},Rc=function(e){e.fire("TableSelectionClear")},Tc=function(f,e){function t(e){return"table"===en(gc(e))}function n(u,c,a,l){return function(e,n){Ci(e);var t=l(),r=on.fromDom(f.getDoc()),o=ho(bc.directionAt),i=Wt.cellOperations(a,r,s);return c(e)?u(t,e,n,i,o).bind(function(e){return p(e.newRows(),function(e){Ni(f,e.dom())}),p(e.newCells(),function(e){ki(f,e.dom())}),e.cursor().map(function(e){var n=f.dom.createRng();return n.setStart(e.dom(),0),n.setEnd(e.dom(),0),n})}):Me.none()}}var s=Sc(f);return{deleteRow:n(mc.eraseRows,function(e){var n=$i(e);return!1===t(f)||1<n.rows()},T,e),deleteColumn:n(mc.eraseColumns,function(e){var n=$i(e);return!1===t(f)||1<n.columns()},T,e),insertRowsBefore:n(mc.insertRowsBefore,i,T,e),insertRowsAfter:n(mc.insertRowsAfter,i,T,e),insertColumnsBefore:n(mc.insertColumnsBefore,i,co,e),insertColumnsAfter:n(mc.insertColumnsAfter,i,co,e),mergeCells:n(mc.mergeCells,i,T,e),unmergeCells:n(mc.unmergeCells,i,T,e),pasteRowsBefore:n(mc.pasteRowsBefore,i,T,e),pasteRowsAfter:n(mc.pasteRowsAfter,i,T,e),pasteCells:n(mc.pasteCells,i,T,e)}},Oc=function(e,n,r){var t=ft(e),o=mt.generate(t);return Fo(o,n).map(function(e){var n=bu(o,r,!1).slice(e[0].row(),e[e.length-1].row()+e[e.length-1].rowspan()),t=_o(n,r);return Qi(t)})},Dc=tinymce.util.Tools.resolve("tinymce.util.Tools"),Ac=function(e,n,t){t&&e.formatter.apply("align"+t,{},n)},Ec=function(e,n,t){t&&e.formatter.apply("valign"+t,{},n)},Nc=function(n,t){Dc.each("left center right".split(" "),function(e){n.formatter.remove("align"+e,{},t)})},kc=function(n,t){Dc.each("top middle bottom".split(" "),function(e){n.formatter.remove("valign"+e,{},t)})},Ic=function(o,e,i){var n;return n=function(e,n){for(var t=0;t<n.length;t++){var r=o.getStyle(n[t],i);if(void 0===e&&(e=r),e!==r)return""}return e}(n,o.select("td,th",e))},Bc=b(Mi,"left center right"),Pc=b(Mi,"top middle bottom"),Mc=function(e,r,n){var o=function(e,t){return t=t||[],Dc.each(e,function(e){var n={text:e.text||e.title};e.menu?n.menu=o(e.menu):(n.value=e.value,r&&r(n)),t.push(n)}),t};return o(e,n||[])},Wc=function(e){var o=e[0],n=e.slice(1),t=Ve(o);return p(n,function(e){p(t,function(r){N(e,function(e,n){var t=o[r];""!==t&&r===n&&t!==e&&(o[r]="")})})}),o},_c=function(e){var n=[{name:"borderstyle",type:"selectbox",label:"Border style",items:[{text:"Select...",value:""},{text:"Solid",value:"solid"},{text:"Dotted",value:"dotted"},{text:"Dashed",value:"dashed"},{text:"Double",value:"double"},{text:"Groove",value:"groove"},{text:"Ridge",value:"ridge"},{text:"Inset",value:"inset"},{text:"Outset",value:"outset"},{text:"None",value:"none"},{text:"Hidden",value:"hidden"}]},{name:"bordercolor",type:"colorinput",label:"Border color"},{name:"backgroundcolor",type:"colorinput",label:"Background color"}];return{title:"Advanced",name:"advanced",items:"cell"===e?[{name:"borderwidth",type:"input",label:"Border width"}].concat(n):n}},Lc=function(e,n,t){var r,o,i,u=e.dom;return fn(fn({width:u.getStyle(n,"width")||u.getAttrib(n,"width"),height:u.getStyle(n,"height")||u.getAttrib(n,"height"),cellspacing:u.getStyle(n,"border-spacing")||u.getAttrib(n,"cellspacing"),cellpadding:u.getAttrib(n,"cellpadding")||Ic(e.dom,n,"padding"),border:(r=u,o=n,i=ie(on.fromDom(o),"border-width"),Di(e)&&i.isSome()?i.getOr(""):r.getAttrib(o,"border")||Ic(e.dom,o,"border-width")||Ic(e.dom,o,"border")),caption:!!u.select("caption",n)[0],"class":u.getAttrib(n,"class","")},Bc("align","align",e,n)),t?Pi(u,n):{})},jc=function(e,n,t){var r=e.dom;return fn(fn({height:r.getStyle(n,"height")||r.getAttrib(n,"height"),scope:r.getAttrib(n,"scope"),"class":r.getAttrib(n,"class",""),align:"",type:n.parentNode.nodeName.toLowerCase()},Bc("align","align",e,n)),t?Pi(r,n):{})},zc=function(e,n,t){var r=e.dom;return fn(fn(fn({width:r.getStyle(n,"width")||r.getAttrib(n,"width"),height:r.getStyle(n,"height")||r.getAttrib(n,"height"),scope:r.getAttrib(n,"scope"),celltype:n.nodeName.toLowerCase(),"class":r.getAttrib(n,"class","")},Bc("align","halign",e,n)),Pc("valign","valign",e,n)),t?Pi(r,n):{})},Hc=function(e,n){var t,r,o,i,u=xi(e),c=Si(e),a=e.dom,l=n?(t=a,r=I(u,"border-style").getOr(""),o=I(u,"border-color").getOr(""),i=I(u,"background-color").getOr(""),{borderstyle:r,bordercolor:f(o),backgroundcolor:f(i)}):{};function f(e){return J(e,"rgb")?t.toHex(e):e}var s,d,m;return fn(fn(fn(fn(fn(fn({},{height:"",width:"100%",cellspacing:"",cellpadding:"",caption:!1,"class":"",align:"",border:""}),u),c),l),(m=u["border-width"],Di(e)&&m?{border:m}:I(c,"border").fold(function(){return{}},function(e){return{border:e}}))),(s=I(u,"border-spacing").or(I(c,"cellspacing")).fold(function(){return{}},function(e){return{cellspacing:e}}),d=I(u,"border-padding").or(I(c,"cellpadding")).fold(function(){return{}},function(e){return{cellpadding:e}}),fn(fn({},s),d)))},Fc=[{name:"width",type:"input",label:"Width"},{name:"height",type:"input",label:"Height"},{name:"celltype",type:"selectbox",label:"Cell type",items:[{text:"Cell",value:"td"},{text:"Header cell",value:"th"}]},{name:"scope",type:"selectbox",label:"Scope",items:[{text:"None",value:""},{text:"Row",value:"row"},{text:"Column",value:"col"},{text:"Row group",value:"rowgroup"},{text:"Column group",value:"colgroup"}]},{name:"halign",type:"selectbox",label:"H Align",items:[{text:"None",value:""},{text:"Left",value:"left"},{text:"Center",value:"center"},{text:"Right",value:"right"}]},{name:"valign",type:"selectbox",label:"V Align",items:[{text:"None",value:""},{text:"Top",value:"top"},{text:"Middle",value:"middle"},{text:"Bottom",value:"bottom"}]}],Uc=function(e){return function(n){var e=function(e){return e.getParam("table_cell_class_list",[],"array")}(n),t=Mc(e,function(e){e.value&&(e.textStyle=function(){return n.formatter.getCssText({block:"tr",classes:[e.value]})})});return 0<e.length?Me.some({name:"class",type:"selectbox",label:"Class",items:t}):Me.none()}(e).fold(function(){return Fc},function(e){return Fc.concat(e)})},qc={normal:function(t,r){return{setAttrib:function(e,n){t.setAttrib(r,e,n)},setStyle:function(e,n){t.setStyle(r,e,n)}}},ifTruthy:function(t,r){return{setAttrib:function(e,n){n&&t.setAttrib(r,e,n)},setStyle:function(e,n){n&&t.setStyle(r,e,n)}}}},Vc=function(n){var e,t=[];if(t=n.dom.select("td[data-mce-selected],th[data-mce-selected]"),e=n.dom.getParent(n.selection.getStart(),"td,th"),!t.length&&e&&t.push(e),e=e||t[0]){var r=Dc.map(t,function(e){return zc(n,e,Ri(n))}),o=Wc(r),i={type:"tabpanel",tabs:[{title:"General",name:"general",items:Uc(n)},_c("cell")]},u={type:"panel",items:[{type:"grid",columns:2,items:Uc(n)}]};n.windowManager.open({title:"Cell Properties",size:"normal",body:Ri(n)?i:u,buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:o,onSubmit:b(zi,n,t)})}},Gc=[{type:"selectbox",name:"type",label:"Row type",items:[{text:"Header",value:"thead"},{text:"Body",value:"tbody"},{text:"Footer",value:"tfoot"}]},{type:"selectbox",name:"align",label:"Alignment",items:[{text:"None",value:""},{text:"Left",value:"left"},{text:"Center",value:"center"},{text:"Right",value:"right"}]},{label:"Height",name:"height",type:"input"}],Yc=function(e){return function(n){var e=function(e){return e.getParam("table_row_class_list",[],"array")}(n),t=Mc(e,function(e){e.value&&(e.textStyle=function(){return n.formatter.getCssText({block:"tr",classes:[e.value]})})});return 0<e.length?Me.some({name:"class",type:"selectbox",label:"Class",items:t}):Me.none()}(e).fold(function(){return Gc},function(e){return Gc.concat(e)})},Kc=function(n){var e,t,r=n.dom,o=[];if((e=r.getParent(n.selection.getStart(),"table"))&&(t=r.getParent(n.selection.getStart(),"td,th"),Dc.each(e.rows,function(n){Dc.each(n.cells,function(e){if((r.getAttrib(e,"data-mce-selected")||e===t)&&o.indexOf(n)<0)return o.push(n),!1})}),o[0])){var i=Dc.map(o,function(e){return jc(n,e,Ti(n))}),u=Wc(i),c={type:"tabpanel",tabs:[{title:"General",name:"general",items:Yc(n)},_c("row")]},a={type:"panel",items:[{type:"grid",columns:2,items:Yc(n)}]};n.windowManager.open({title:"Row Properties",size:"normal",body:Ti(n)?c:a,buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:u,onSubmit:b(Hi,n,o,u)})}},Xc=Object.prototype.hasOwnProperty,$c=(Xi=function(e,n){return n},function(){for(var e=new Array(arguments.length),n=0;n<e.length;n++)e[n]=arguments[n];if(0===e.length)throw new Error("Can't merge zero objects");for(var t={},r=0;r<e.length;r++){var o=e[r];for(var i in o)Xc.call(o,i)&&(t[i]=Xi(t[i],o[i]))}return t}),Jc=tinymce.util.Tools.resolve("tinymce.Env"),Qc={styles:{"border-collapse":"collapse",width:"100%"},attributes:{border:"1"},percentages:!0},Zc=function(n,e,t){var r=xi(n),o={styles:r,attributes:Si(n),percentages:function(e){return _e(e)&&-1!==e.indexOf("%")}(r.width)&&!Ei(n)},i=Fi(t,e,0,0,o);U(i,"data-mce-id","__mce");var u=function(e){var n=on.fromTag("div"),t=on.fromDom(e.dom().cloneNode(!0));return Mn(n,t),function(e){return e.dom().innerHTML}(n)}(i);return n.insertContent(u),Zn(gc(n),'table[data-mce-id="__mce"]').map(function(e){return Ei(n)&&te(e,"width",oe(e,"width")),Y(e,"data-mce-id"),function(n,e){p(Be(e,"tr"),function(e){Ni(n,e.dom()),p(Be(e,"th,td"),function(e){ki(n,e.dom())})})}(n,e),function(e,n){Zn(n,"td,th").each(b(Ui,e))}(n,e),e.dom()}).getOr(null)},ea=function(n,e,t){var r=t?[{type:"input",name:"cols",label:"Cols",inputMode:"numeric"},{type:"input",name:"rows",label:"Rows",inputMode:"numeric"}]:[],o=function(e){return e.getParam("table_appearance_options",!0,"boolean")}(n)?[{type:"input",name:"cellspacing",label:"Cell spacing",inputMode:"numeric"},{type:"input",name:"cellpadding",label:"Cell padding",inputMode:"numeric"},{type:"input",name:"border",label:"Border width"},{type:"label",label:"Caption",items:[{type:"checkbox",name:"caption",label:"Show caption"}]}]:[],i=e?[{type:"selectbox",name:"class",label:"Class",items:Mc(Ai(n),function(e){e.value&&(e.textStyle=function(){return n.formatter.getCssText({block:"table",classes:[e.value]})})})}]:[];return r.concat([{type:"input",name:"width",label:"Width"},{type:"input",name:"height",label:"Height"}]).concat(o).concat([{type:"selectbox",name:"align",label:"Alignment",items:[{text:"None",value:""},{text:"Left",value:"left"},{text:"Center",value:"center"},{text:"Right",value:"right"}]}]).concat(i)},na=function(e,n,t,r){if("TD"===n.tagName||"TH"===n.tagName)_e(t)?e.setStyle(n,t,r):e.setStyle(n,t);else if(n.children)for(var o=0;o<n.children.length;o++)na(e,n.children[o],t,r)},ta=function(e,n){var t,r=e.dom,o=Hc(e,Oi(e));!1===n?(t=r.getParent(e.selection.getStart(),"table"))?o=Lc(e,t,Oi(e)):Oi(e)&&(o.borderstyle="",o.bordercolor="",o.backgroundcolor=""):(o.cols="1",o.rows="1",Oi(e)&&(o.borderstyle="",o.bordercolor="",o.backgroundcolor=""));var i=0<Ai(e).length;i&&o["class"]&&(o["class"]=o["class"].replace(/\s*mce\-item\-table\s*/g,""));var u={type:"grid",columns:2,items:ea(e,i,n)},c=Oi(e)?{type:"tabpanel",tabs:[{title:"General",name:"general",items:[u]},_c("table")]}:{type:"panel",items:[u]};e.windowManager.open({title:"Table Properties",size:"normal",body:c,onSubmit:b(qi,e,t),buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:o})},ra=Vi("th,td"),oa=Vi("th,td,caption"),ia=Dc.each,ua={registerCommands:function(c,n,a,l,t){function f(e){return lt.table(e,s)}function i(e){return{width:bi(e.dom()),height:bi(e.dom())}}function r(o){ra(c).each(function(r){f(r).each(function(n){var e=Er.forMenu(l,n,r),t=i(n);o(n,e).each(function(e){!function(e,n,t){var r=i(t);n.width===r.width&&n.height===r.height||(Ii(e,t.dom(),n.width,n.height),Bi(e,t.dom(),r.width,r.height))}(c,t,n),c.selection.setRng(e),c.focus(),a.clear(n),Ci(n)})})})}function o(e){return ra(c).map(function(o){return f(o).bind(function(e){var n=on.fromDom(c.getDoc()),t=Er.forMenu(l,e,o),r=Wt.cellOperations(T,n,Me.none());return Oc(e,t,r)})})}function u(u){t.get().each(function(e){var i=g(e,function(e){return Tt(e)});ra(c).each(function(o){f(o).each(function(n){var e=on.fromDom(c.getDoc()),t=Wt.paste(e),r=Er.pasteRows(l,n,o,i,t);u(n,r).each(function(e){c.selection.setRng(e),c.focus(),a.clear(n)})})})})}var s=pc(c);ia({mceTableSplitCells:function(){r(n.unmergeCells)},mceTableMergeCells:function(){r(n.mergeCells)},mceTableInsertRowBefore:function(){r(n.insertRowsBefore)},mceTableInsertRowAfter:function(){r(n.insertRowsAfter)},mceTableInsertColBefore:function(){r(n.insertColumnsBefore)},mceTableInsertColAfter:function(){r(n.insertColumnsAfter)},mceTableDeleteCol:function(){r(n.deleteColumn)},mceTableDeleteRow:function(){r(n.deleteRow)},mceTableCutRow:function(e){o().each(function(e){t.set(e),r(n.deleteRow)})},mceTableCopyRow:function(e){o().each(function(e){t.set(e)})},mceTablePasteRowBefore:function(e){u(n.pasteRowsBefore)},mceTablePasteRowAfter:function(e){u(n.pasteRowsAfter)},mceTableDelete:function(){oa(c).each(function(e){lt.table(e,s).filter(d(s)).each(function(e){var n=on.fromText("");if(Re(e,n),Wn(e),c.dom.isEmpty(c.getBody()))c.setContent(""),c.selection.setCursorLocation();else{var t=c.dom.createRng();t.setStart(n.dom(),0),t.setEnd(n.dom(),0),c.selection.setRng(t),c.nodeChanged()}})})}},function(e,n){c.addCommand(n,e)}),ia({mceInsertTable:b(ta,c,!0),mceTableProps:b(ta,c,!1),mceTableRowProps:b(Kc,c),mceTableCellProps:b(Vc,c)},function(e,n){c.addCommand(n,function(){e()})})}},ca=function(e){var n=Me.from(e.dom().documentElement).map(on.fromDom).getOr(e);return{parent:D(n),view:D(e),origin:D(lo(0,0))}},aa=function(e,n){return{parent:D(n),view:D(e),origin:D(lo(0,0))}},la=function(e){var r=B.apply(null,e),o=[];return{bind:function(e){if(e===undefined)throw new Error("Event bind error: undefined handler");o.push(e)},unbind:function(n){o=h(o,function(e){return e!==n})},trigger:function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];var t=r.apply(null,e);p(o,function(e){e(t)})}}},fa={create:function(e){return{registry:k(e,function(e){return{bind:e.bind,unbind:e.unbind}}),trigger:k(e,function(e){return e.trigger})}}},sa=function(e,n,t,r){e.dom().removeEventListener(n,t,r)},da=D(!0),ma={resolve:Eo("ephox-dragster").resolve},ga=ai(["compare","extract","mutate","sink"]),pa=ai(["element","start","stop","destroy"]),ha=ai(["forceDrop","drop","move","delayDrop"]),va=ga({compare:function(e,n){return lo(n.left()-e.left(),n.top()-e.top())},extract:function(e){return Me.some(lo(e.x(),e.y()))},sink:function(e,n){var t=function(e){var n=$c({layerClass:ma.resolve("blocker")},e),t=on.fromTag("div");U(t,"role","presentation"),re(t,{position:"fixed",left:"0px",top:"0px",width:"100%",height:"100%"}),Ro(t,ma.resolve("blocker")),Ro(t,n.layerClass);return{element:function(){return t},destroy:function(){Wn(t)}}}(n),r=Ki(t.element(),"mousedown",e.forceDrop),o=Ki(t.element(),"mouseup",e.drop),i=Ki(t.element(),"mousemove",e.move),u=Ki(t.element(),"mouseout",e.delayDrop);return pa({element:t.element,start:function(e){Mn(e,t.element())},stop:function(){Wn(t.element())},destroy:function(){t.destroy(),o.unbind(),i.unbind(),u.unbind(),r.unbind()}})},mutate:function(e,n){e.mutate(n.left(),n.top())}});function ba(){var r=Me.none(),t=fa.create({move:la(["info"])});return{onEvent:function(e,n){n.extract(e).each(function(e){(function(n,t){var e=r.map(function(e){return n.compare(e,t)});return r=Me.some(t),e})(n,e).each(function(e){t.trigger.move(e)})})},reset:function(){r=Me.none()},events:t.registry}}function wa(){var e=function r(){return{onEvent:T,reset:T}}(),n=ba(),t=e;return{on:function(){t.reset(),t=n},off:function(){t.reset(),t=e},isOn:function(){return t===n},onEvent:function(e,n){t.onEvent(e,n)},events:n.events}}function ya(){var t=fa.create({drag:la(["xDelta","yDelta","target"])}),r=Me.none(),e=function(){var t=fa.create({drag:la(["xDelta","yDelta"])});return{mutate:function(e,n){t.trigger.drag(e,n)},events:t.registry}}();return e.events.drag.bind(function(n){r.each(function(e){t.trigger.drag(n.xDelta(),n.yDelta(),e)})}),{assign:function(e){r=Me.some(e)},get:function(){return r},mutate:e.mutate,events:t.registry}}function Ca(e){return"true"===V(e,"contenteditable")}function Sa(o,n,i){function e(e,n){return Me.from(V(e,n))}var t=ya(),r=vl(t,{}),u=Me.none();function c(e,n){return Hu.getInt(e,n)-parseInt(V(e,"data-initial-"+n),10)}function a(e,n){m.trigger.startAdjust(),t.assign(e),U(e,"data-initial-"+n,parseInt(oe(e,n),10)),Ro(e,bl),te(e,"opacity","0.2"),r.go(o.parent())}function l(e){return In(e,o.view())}function f(e){return et(e,"table",l).filter(function(e){return function(e,n){return et(e,"[contenteditable]",n)}(e,l).exists(Ca)})}t.events.drag.bind(function(t){e(t.target(),"data-row").each(function(e){var n=Hu.getInt(t.target(),"top");te(t.target(),"top",n+t.yDelta()+"px")}),e(t.target(),"data-column").each(function(e){var n=Hu.getInt(t.target(),"left");te(t.target(),"left",n+t.xDelta()+"px")})}),r.events.stop.bind(function(){t.get().each(function(r){u.each(function(t){e(r,"data-row").each(function(e){var n=c(r,"top");Y(r,"data-initial-top"),m.trigger.adjustHeight(t,n,parseInt(e,10))}),e(r,"data-column").each(function(e){var n=c(r,"left");Y(r,"data-initial-left"),m.trigger.adjustWidth(t,n,parseInt(e,10))}),au(o,t,i,n)})})});var s=Ki(o.parent(),"mousedown",function(e){du(e.target())&&a(e.target(),"top"),mu(e.target())&&a(e.target(),"left")}),d=Ki(o.view(),"mouseover",function(e){f(e.target()).fold(function(){ee(e.target())&&su(o)},function(e){u=Me.some(e),au(o,e,i,n)})}),m=fa.create({adjustHeight:la(["table","delta","row"]),adjustWidth:la(["table","delta","column"]),startAdjust:la([])});return{destroy:function(){s.unbind(),d.unbind(),r.destroy(),su(o)},refresh:function(e){au(o,e,i,n)},on:r.on,off:r.off,hideBars:b(lu,o),showBars:b(fu,o),events:m.registry}}function xa(e,n){return bi(e.dom())/bi(n.dom())*100+"%"}function Ra(t,e){return lt.table(t,e).bind(function(e){var n=lt.cells(e);return C(n,function(e){return In(t,e)}).map(function(e){return{index:D(e),all:D(n)}})})}function Ta(e,n,t){var r=e.document.createRange();return function(t,e){e.fold(function(e){t.setStartBefore(e.dom())},function(e,n){t.setStart(e.dom(),n)},function(e){t.setStartAfter(e.dom())})}(r,n),function(t,e){e.fold(function(e){t.setEndBefore(e.dom())},function(e,n){t.setEnd(e.dom(),n)},function(e){t.setEndAfter(e.dom())})}(r,t),r}function Oa(e,n,t,r,o){var i=e.document.createRange();return i.setStart(n.dom(),t),i.setEnd(r.dom(),o),i}function Da(e){return{left:D(e.left),top:D(e.top),right:D(e.right),bottom:D(e.bottom),width:D(e.width),height:D(e.height)}}function Aa(e,n,t){return n(on.fromDom(t.startContainer),t.startOffset,on.fromDom(t.endContainer),t.endOffset)}function Ea(e,n){return function(e,n){var t=n.ltr();return t.collapsed?n.rtl().filter(function(e){return!1===e.collapsed}).map(function(e){return Bl.rtl(on.fromDom(e.endContainer),e.endOffset,on.fromDom(e.startContainer),e.startOffset)}).getOrThunk(function(){return Aa(0,Bl.ltr,t)}):Aa(0,Bl.ltr,t)}(0,function(o,e){return e.match({domRange:function(e){return{ltr:D(e),rtl:Me.none}},relative:function(e,n){return{ltr:Z(function(){return Ta(o,e,n)}),rtl:Z(function(){return Me.some(Ta(o,n,e))})}},exact:function(e,n,t,r){return{ltr:Z(function(){return Oa(o,e,n,t,r)}),rtl:Z(function(){return Me.some(Oa(o,t,r,e,n))})}}})}(e,n))}function Na(e,n,t){return n>=e.left&&n<=e.right&&t>=e.top&&t<=e.bottom}function ka(t,r,e,n,o){function i(e){var n=t.dom().createRange();return n.setStart(r.dom(),e),n.collapse(!0),n}var u=ht(r).length,c=function(e,n,t,r,o){if(0===o)return 0;if(n===r)return o-1;for(var i=r,u=1;u<o;u++){var c=e(u),a=Math.abs(n-c.left);if(t<=c.bottom){if(t<c.top||i<a)return u-1;i=a}}return 0}(function(e){return i(e).getBoundingClientRect()},e,n,o.right,u);return i(c)}function Ia(e,n){return n-e.left<e.right-n}function Ba(e,n,t){var r=e.dom().createRange();return r.selectNode(n.dom()),r.collapse(t),r}function Pa(n,e,t){var r=n.dom().createRange();r.selectNode(e.dom());var o=r.getBoundingClientRect(),i=Ia(o,t);return(!0===i?Ct:St)(e).map(function(e){return Ba(n,e,i)})}function Ma(e,n,t){var r=n.dom().getBoundingClientRect(),o=Ia(r,t);return Me.some(Ba(e,n,o))}function Wa(e,n,t,r){var o=e.dom().createRange();o.selectNode(n.dom());var i=o.getBoundingClientRect();return function(e,n,t,r){var o=e.dom().createRange();o.selectNode(n.dom());var i=o.getBoundingClientRect(),u=Math.max(i.left,Math.min(i.right,t)),c=Math.max(i.top,Math.min(i.bottom,r));return Ml(e,n,u,c)}(e,n,Math.max(i.left,Math.min(i.right,t)),Math.max(i.top,Math.min(i.bottom,r)))}function _a(e,n){var t=en(e);return"input"===t?El.after(e):l(["br","img"],t)?0===n?El.before(e):El.after(e):El.on(e,n)}function La(e,n){var t=e.fold(El.before,_a,El.after),r=n.fold(El.before,_a,El.after);return kl.relative(t,r)}function ja(e,n,t,r){var o=_a(e,n),i=_a(t,r);return kl.relative(o,i)}function za(e,n,t,r){var o=function(e,n,t,r){var o=he(e).dom().createRange();return o.setStart(e.dom(),n),o.setEnd(t.dom(),r),o}(e,n,t,r),i=In(e,t)&&n===r;return o.collapsed&&!i}function Ha(e,n){Me.from(e.getSelection()).each(function(e){e.removeAllRanges(),e.addRange(n)})}function Fa(e,n,t,r,o){var i=Oa(e,n,t,r,o);Ha(e,i)}function Ua(u,e){return Ea(u,e).match({ltr:function(e,n,t,r){Fa(u,e,n,t,r)},rtl:function(e,n,t,r){var o=u.getSelection();if(o.setBaseAndExtent)o.setBaseAndExtent(e.dom(),n,t.dom(),r);else if(o.extend)try{!function(e,n,t,r,o,i){n.collapse(t.dom(),r),n.extend(o.dom(),i)}(0,o,e,n,t,r)}catch(i){Fa(u,t,r,e,n)}else Fa(u,t,r,e,n)}})}function qa(e,n,t,r,o){var i=ja(n,t,r,o);Ua(e,i)}function Va(e,n,t){var r=La(n,t);Ua(e,r)}function Ga(e){function n(e,n,t,r){return Oa(o,e,n,t,r)}var o=kl.getWin(e).dom(),t=function(e){return e.match({domRange:function(e){var n=on.fromDom(e.startContainer),t=on.fromDom(e.endContainer);return ja(n,e.startOffset,t,e.endOffset)},relative:La,exact:ja})}(e);return Ea(o,t).match({ltr:n,rtl:n})}function Ya(e){var n=on.fromDom(e.anchorNode),t=on.fromDom(e.focusNode);return za(n,e.anchorOffset,t,e.focusOffset)?Me.some(Dl.create(n,e.anchorOffset,t,e.focusOffset)):function(e){if(0<e.rangeCount){var n=e.getRangeAt(0),t=e.getRangeAt(e.rangeCount-1);return Me.some(Dl.create(on.fromDom(n.startContainer),n.startOffset,on.fromDom(t.endContainer),t.endOffset))}return Me.none()}(e)}function Ka(e,n){var t=function(e,n){var t=e.document.createRange();return Il(t,n),t}(e,n);Ha(e,t)}function Xa(e){return function(e){return Me.from(e.getSelection()).filter(function(e){return 0<e.rangeCount}).bind(Ya)}(e).map(function(e){return kl.exact(e.start(),e.soffset(),e.finish(),e.foffset())})}function $a(e,n){return function(e){var n=e.getClientRects(),t=0<n.length?n[0]:e.getBoundingClientRect();return 0<t.width||0<t.height?Me.some(t).map(Da):Me.none()}(Pl(e,n))}function Ja(e,n,t){return function(e,n,t){var r=on.fromDom(e.document);return Wl(r,n,t).map(function(e){return Dl.create(on.fromDom(e.startContainer),e.startOffset,on.fromDom(e.endContainer),e.endOffset)})}(e,n,t)}function Qa(e,n,t,r){return Ll(e,n,Tl(t),r)}function Za(e,n,t,r){return Ll(e,n,Ol(t),r)}function el(e,n){var t=kl.exact(n,0,n,0);return Ga(t)}function nl(e,n){return function(e){return 0===e.length?Me.none():Me.some(e[e.length-1])}(Be(n,"tr")).bind(function(e){return Zn(e,"td,th").map(function(e){return el(0,e)})})}function tl(e,n,t,r){return void 0===r&&(r=Yl),e.property().parent(n).map(function(e){return Gl(e,r)})}function rl(n){return function(e){return 0===n.property().children(e).length}}function ol(e,n){return function(e,n,t){return ef(e,n,rl(e),t)}(tf,e,n)}function il(e,n){return function(e,n,t){return nf(e,n,rl(e),t)}(tf,e,n)}function ul(e){return et(e,"tr")}function cl(e){return"br"===en(e)}function al(n,e,t,r){return function(e,n){return Se(e,n).filter(cl).orThunk(function(){return Se(e,n-1).filter(cl)})}(e,t).bind(function(e){return r.traverse(e).fold(function(){return lf(e,r.gather,n).map(r.relative)},function(e){return function(r){return ve(r).bind(function(n){var t=Ce(n);return af(t,r).map(function(e){return cf(n,t,r,e)})})}(e).map(function(e){return El.on(e.parent(),e.index())})})})}function ll(e){return mf.nu({left:e.left,top:e.top,right:e.right,bottom:e.bottom})}function fl(e,n){return Me.some(e.getRect(n))}function sl(n,e,t){return function(e,n,t){return Xn(function(e,n){return n(e)},$n,e,n,t)}(e,uc).fold(D(!1),function(e){return pf(n,e).exists(function(e){return function(e,n){return e.left()<n.left()||Math.abs(n.right()-e.left())<1||e.left()>n.right()}(t,e)})})}function dl(n,t,e){var r=n.move(e,5),o=wf(t,n,e,r,100).getOr(r);return function(e,n,t){return e.point(n)>t.getInnerHeight()?Me.some(e.point(n)-t.getInnerHeight()):e.point(n)<0?Me.some(-e.point(n)):Me.none()}(n,o,t).fold(function(){return t.situsFromPoint(o.left(),n.point(o))},function(e){return t.scrollBy(0,e),t.situsFromPoint(o.left(),n.point(o)-e)})}function ml(e,n){return function(e,n,t){return $n(e,n,t).isSome()}(e,function(e){return ve(e).exists(function(e){return In(e,n)})})}function gl(n,r,o,e,i){return et(e,"td,th",r).bind(function(t){return et(t,"table",r).bind(function(e){return ml(i,e)?Of(n,r,o).bind(function(n){return et(n.finish(),"td,th",r).map(function(e){return{start:D(t),finish:D(e),range:D(n)}})}):Me.none()})})}function pl(e,n){return et(e,"td,th",n)}var hl=function(n,t,e){function r(){l.stop(),u.isOn()&&(u.off(),i.trigger.stop())}var o=!1,i=fa.create({start:la([]),stop:la([])}),u=wa(),c=function(t,r){var o=null;return{cancel:function(){null!==o&&(f.clearTimeout(o),o=null)},throttle:function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];null!==o&&f.clearTimeout(o),o=f.setTimeout(function(){t.apply(null,e),o=null},r)}}}(r,200);u.events.move.bind(function(e){t.mutate(n,e.info())});function a(t){return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];o&&t.apply(null,e)}}var l=t.sink(ha({forceDrop:r,drop:a(r),move:a(function(e){c.cancel(),u.onEvent(e,t)}),delayDrop:a(c.throttle)}),e);return{element:l.element,go:function(e){l.start(e),u.on(),i.trigger.start()},on:function(){o=!0},off:function(){o=!1},destroy:function(){l.destroy()},events:i.registry}},vl=function(e,n){void 0===n&&(n={});var t=n.mode!==undefined?n.mode:va;return hl(e,t,n)},bl=tu.resolve("resizer-bar-dragging"),wl=function(e,t){var r=go.height,n=Sa(e,t,r),o=fa.create({beforeResize:la(["table"]),afterResize:la(["table"]),startDrag:la([])});return n.events.adjustHeight.bind(function(e){o.trigger.beforeResize(e.table());var n=r.delta(e.delta(),e.table());Ku(e.table(),n,e.row(),r),o.trigger.afterResize(e.table())}),n.events.startAdjust.bind(function(e){o.trigger.startDrag()}),n.events.adjustWidth.bind(function(e){o.trigger.beforeResize(e.table());var n=t.delta(e.delta(),e.table());Yu(e.table(),n,e.column(),t),o.trigger.afterResize(e.table())}),{on:n.on,off:n.off,hideBars:n.hideBars,showBars:n.showBars,destroy:n.destroy,events:o.registry}},yl=function(e,n){return e.inline?aa(gc(e),function(){var e=on.fromTag("div");return re(e,{position:"static",height:"0",width:"0",padding:"0",margin:"0",border:"0"}),Mn(un(),e),e}()):ca(on.fromDom(e.getDoc()))},Cl=function(e,n){e.inline&&Wn(n.parent())},Sl=function(u){function c(e){return"TABLE"===e.nodeName}function r(e){var n=u.dom.getStyle(e,"width")||u.dom.getAttrib(e,"width");return Me.from(n).filter(function(e){return 0<e.length})}function e(){return i}var a,l,o=Me.none(),i=Me.none(),f=Me.none(),s=/(\d+(\.\d+)?)%/;return u.on("init",function(){var e=ho(bc.directionAt),n=yl(u);if(f=Me.some(n),function(e){var n=e.getParam("object_resizing",!0);return _e(n)?"table"===n:n}(u)&&function(e){return e.getParam("table_resize_bars",!0,"boolean")}(u)){var t=wl(n,e);t.on(),t.events.startDrag.bind(function(e){o=Me.some(u.selection.getRng())}),t.events.beforeResize.bind(function(e){var n=e.table().dom();Ii(u,n,bi(n),wi(n))}),t.events.afterResize.bind(function(e){var n=e.table(),t=n.dom();Ci(n),o.each(function(e){u.selection.setRng(e),u.focus()}),Bi(u,t,bi(t),wi(t)),u.undoManager.add()}),i=Me.some(t)}}),u.on("ObjectResizeStart",function(e){var n=e.target;if(c(n)){var t=r(n).map(function(e){return s.test(e)}).getOr(!1);t&&Ei(u)?function(e){te(on.fromDom(e),"width",bi(e).toString()+"px")}(n):!t&&function(e){return!0===e.getParam("table_responsive_width")}(u)&&function(e){var n=on.fromDom(e);ve(n).map(function(e){return xa(n,e)}).each(function(e){te(n,"width",e),p(Be(n,"tr"),function(n){p(Ce(n),function(e){te(e,"width",xa(e,n))})})})}(n),a=e.width,l=r(n).getOr("")}}),u.on("ObjectResized",function(e){var n=e.target;if(c(n)){var t=n;if(s.test(l)){var r=parseFloat(s.exec(l)[1]),o=e.width*r/a;u.dom.setStyle(t,"width",o+"%")}else{var i=[];Dc.each(t.rows,function(e){Dc.each(e.cells,function(e){var n=u.dom.getStyle(e,"width",!0);i.push({cell:e,width:n})})}),Dc.each(i,function(e){u.dom.setStyle(e.cell,"width",e.width),u.dom.setAttrib(e.cell,"width",null)})}}}),u.on("SwitchMode",function(){e().each(function(e){u.readonly?e.hideBars():e.showBars()})}),{lazyResize:e,lazyWire:function(){return f.getOr(ca(on.fromDom(u.getBody())))},destroy:function(){i.each(function(e){e.destroy()}),f.each(function(e){Cl(u,e)})}}},xl=Sr([{none:["current"]},{first:["current"]},{middle:["current","target"]},{last:["current"]}]),Rl=fn(fn({},xl),{none:function(e){return void 0===e&&(e=undefined),xl.none(e)}}),Tl=function(n,e){return Ra(n,e).fold(function(){return Rl.none(n)},function(e){return e.index()+1<e.all().length?Rl.middle(n,e.all()[e.index()+1]):Rl.last(n)})},Ol=function(n,e){return Ra(n,e).fold(function(){return Rl.none()},function(e){return 0<=e.index()-1?Rl.middle(n,e.all()[e.index()-1]):Rl.first(n)})},Dl={create:B("start","soffset","finish","foffset")},Al=Sr([{before:["element"]},{on:["element","offset"]},{after:["element"]}]),El={before:Al.before,on:Al.on,after:Al.after,cata:function(e,n,t,r){return e.fold(n,t,r)},getStart:function(e){return e.fold(o,o,o)}},Nl=Sr([{domRange:["rng"]},{relative:["startSitu","finishSitu"]},{exact:["start","soffset","finish","foffset"]}]),kl={domRange:Nl.domRange,relative:Nl.relative,exact:Nl.exact,exactFromRange:function(e){return Nl.exact(e.start(),e.soffset(),e.finish(),e.foffset())},getWin:function(e){return function(e){return on.fromDom(e.dom().ownerDocument.defaultView)}(function(e){return e.match({domRange:function(e){return on.fromDom(e.startContainer)},relative:function(e,n){return El.getStart(e)},exact:function(e,n,t,r){return e}})}(e))},range:Dl.create},Il=function(e,n){e.selectNodeContents(n.dom())},Bl=Sr([{ltr:["start","soffset","finish","foffset"]},{rtl:["start","soffset","finish","foffset"]}]),Pl=function(i,e){return Ea(i,e).match({ltr:function(e,n,t,r){var o=i.document.createRange();return o.setStart(e.dom(),n),o.setEnd(t.dom(),r),o},rtl:function(e,n,t,r){var o=i.document.createRange();return o.setStart(t.dom(),r),o.setEnd(e.dom(),n),o}})},Ml=function(e,n,t,r){return tn(n)?function(n,t,r,o){var e=n.dom().createRange();e.selectNode(t.dom());var i=e.getClientRects();return bo(i,function(e){return Na(e,r,o)?Me.some(e):Me.none()}).map(function(e){return ka(n,t,r,o,e)})}(e,n,t,r):function(n,e,t,r){var o=n.dom().createRange(),i=Ce(e);return bo(i,function(e){return o.selectNode(e.dom()),Na(o.getBoundingClientRect(),t,r)?Ml(n,e,t,r):Me.none()})}(e,n,t,r)},Wl=document.caretPositionFromPoint?function(t,e,n){return Me.from(t.dom().caretPositionFromPoint(e,n)).bind(function(e){if(null===e.offsetNode)return Me.none();var n=t.dom().createRange();return n.setStart(e.offsetNode,e.offset),n.collapse(),Me.some(n)})}:document.caretRangeFromPoint?function(e,n,t){return Me.from(e.dom().caretRangeFromPoint(n,t))}:function(t,r,o){return on.fromPoint(t,r,o).bind(function(e){function n(){return function(e,n,t){return(0===Ce(n).length?Ma:Pa)(e,n,t)}(t,e,r)}return 0===Ce(e).length?n():Wa(t,e,r,o).orThunk(n)})},_l=tinymce.util.Tools.resolve("tinymce.util.VK"),Ll=function(r,e,n,o,t){return n.fold(Me.none,Me.none,function(e,n){return Ct(n).map(function(e){return el(0,e)})},function(t){return lt.table(t,e).bind(function(e){var n=Er.noMenu(t);return r.undoManager.transact(function(){o.insertRowsAfter(e,n)}),nl(0,e)})})},jl=["table","li","dl"],zl={handle:function(n,t,r,o){if(n.keyCode===_l.TAB){var i=gc(t),u=function(e){var n=en(e);return In(e,i)||l(jl,n)},e=t.selection.getRng();if(e.collapsed){var c=on.fromDom(e.startContainer);lt.cell(c,u).each(function(e){n.preventDefault(),(n.shiftKey?Za:Qa)(t,u,e,r,o).each(function(e){t.selection.setRng(e)})})}}}},Hl={create:B("selection","kill")},Fl=function(e,n,t,r){return{start:D(El.on(e,n)),finish:D(El.on(t,r))}},Ul={convertToRange:function(e,n){var t=Pl(e,n);return Dl.create(on.fromDom(t.startContainer),t.startOffset,on.fromDom(t.endContainer),t.endOffset)},makeSitus:Fl},ql=function(t,e,r,n,o){return In(r,n)?Me.none():dr(r,n,e).bind(function(e){var n=e.boxes().getOr([]);return 0<n.length?(o(t,n,e.start(),e.finish()),Me.some(Hl.create(Me.some(Ul.makeSitus(r,0,r,wt(r))),!0))):Me.none()})},Vl={sync:function(t,r,e,n,o,i,u){return In(e,o)&&n===i?Me.none():et(e,"td,th",r).bind(function(n){return et(o,"td,th",r).bind(function(e){return ql(t,r,n,e,u)})})},detect:ql,update:function(e,n,t,r,o){return gr(r,e,n,o.firstSelectedSelector(),o.lastSelectedSelector()).map(function(e){return o.clearBeforeUpdate(t),o.selectRange(t,e.boxes(),e.start(),e.finish()),e.boxes()})}},Gl=B("item","mode"),Yl=function(e,n,t,r){return void 0===r&&(r=Kl),t.sibling(e,n).map(function(e){return Gl(e,r)})},Kl=function(e,n,t,r){void 0===r&&(r=Kl);var o=e.property().children(n);return t.first(o).map(function(e){return Gl(e,r)})},Xl=[{current:tl,next:Yl,fallback:Me.none()},{current:Yl,next:Kl,fallback:Me.some(tl)},{current:Kl,next:Kl,fallback:Me.some(Yl)}],$l=function(n,t,r,o,e){return void 0===e&&(e=Xl),y(e,function(e){return e.current===r}).bind(function(e){return e.current(n,t,o,e.next).orThunk(function(){return e.fallback.bind(function(e){return $l(n,t,e,o)})})})},Jl=function(){return{sibling:function(e,n){return e.query().prevSibling(n)},first:function(e){return 0<e.length?Me.some(e[e.length-1]):Me.none()}}},Ql=function(){return{sibling:function(e,n){return e.query().nextSibling(n)},first:function(e){return 0<e.length?Me.some(e[0]):Me.none()}}},Zl=function(n,e,t,r,o,i){return $l(n,e,r,o).bind(function(e){return i(e.item())?Me.none():t(e.item())?Me.some(e.item()):Zl(n,e.item(),t,e.mode(),o,i)})},ef=function(e,n,t,r){return Zl(e,n,t,Yl,Jl(),r)},nf=function(e,n,t,r){return Zl(e,n,t,Yl,Ql(),r)},tf=$t(),rf=B("element","offset"),of=(B("element","deltaOffset"),B("element","start","finish"),B("begin","end"),B("element","text"),Sr([{none:["message"]},{success:[]},{failedUp:["cell"]},{failedDown:["cell"]}])),uf=fn(fn({},of),{verify:function(t,n,e,r,o,i,u){return et(r,"td,th",u).bind(function(e){return et(n,"td,th",u).map(function(n){return In(e,n)?In(r,e)&&wt(e)===o?i(n):of.none("in same cell"):fr.sharedOne(ul,[e,n]).fold(function(){return function(e,n,t){var r=e.getRect(n),o=e.getRect(t);return o.right>r.left&&o.left<r.right}(t,n,e)?of.success():i(n)},function(e){return i(n)})})}).getOr(of.none("default"))},cata:function(e,n,t,r,o){return e.fold(n,t,r,o)}}),cf=(B("ancestor","descendants","element","index"),B("parent","children","element","index")),af=function(e,n){return C(e,b(In,n))},lf=function(e,n,t){return n(e,t).bind(function(e){return tn(e)&&0===ht(e).trim().length?lf(e,n,t):Me.some(e)})},ff=function(e,n,t,r){return(cl(n)?function(e,n,t){return t.traverse(n).orThunk(function(){return lf(n,t.gather,e)}).map(t.relative)}(e,n,r):al(e,n,t,r)).map(function(e){return{start:D(e),finish:D(e)}})},sf=function(e){return uf.cata(e,function(e){return Me.none()},function(){return Me.none()},function(e){return Me.some(rf(e,0))},function(e){return Me.some(rf(e,wt(e)))})},df=Xe(["left","top","right","bottom"],[]),mf={nu:df,moveUp:function(e,n){return df({left:e.left(),top:e.top()-n,right:e.right(),bottom:e.bottom()-n})},moveDown:function(e,n){return df({left:e.left(),top:e.top()+n,right:e.right(),bottom:e.bottom()+n})},moveBottomTo:function(e,n){var t=e.bottom()-e.top();return df({left:e.left(),top:n-t,right:e.right(),bottom:n})},moveTopTo:function(e,n){var t=e.bottom()-e.top();return df({left:e.left(),top:n,right:e.right(),bottom:n+t})},getTop:function(e){return e.top()},getBottom:function(e){return e.bottom()},translate:function(e,n,t){return df({left:e.left()+n,top:e.top()+t,right:e.right()+n,bottom:e.bottom()+t})},toString:function(e){return"("+e.left()+", "+e.top()+") -> ("+e.right()+", "+e.bottom()+")"}},gf=function(e,n,t){return nn(n)?fl(e,n).map(ll):tn(n)?function(e,n,t){return 0<=t&&t<wt(n)?e.getRangedRect(n,t,n,t+1):0<t?e.getRangedRect(n,t-1,n,t):Me.none()}(e,n,t).map(ll):Me.none()},pf=function(e,n){return nn(n)?fl(e,n).map(ll):tn(n)?e.getRangedRect(n,0,n,wt(n)).map(ll):Me.none()},hf=Sr([{none:[]},{retry:["caret"]}]),vf={point:mf.getTop,adjuster:function(e,n,t,r,o){var i=mf.moveUp(o,5);return Math.abs(t.top()-r.top())<1?hf.retry(i):t.bottom()<o.top()?hf.retry(i):t.bottom()===o.top()?hf.retry(mf.moveUp(o,1)):sl(e,n,o)?hf.retry(mf.translate(i,5,0)):hf.none()},move:mf.moveUp,gather:ol},bf={point:mf.getBottom,adjuster:function(e,n,t,r,o){var i=mf.moveDown(o,5);return Math.abs(t.bottom()-r.bottom())<1?hf.retry(i):t.top()>o.bottom()?hf.retry(i):t.top()===o.bottom()?hf.retry(mf.moveDown(o,1)):sl(e,n,o)?hf.retry(mf.translate(i,5,0)):hf.none()},move:mf.moveDown,gather:il},wf=function(t,r,o,i,u){return 0===u?Me.some(i):function(e,n,t){return e.elementFromPoint(n,t).filter(function(e){return"table"===en(e)}).isSome()}(t,i.left(),r.point(i))?function(e,n,t,r,o){return wf(e,n,t,n.move(r,5),o)}(t,r,o,i,u-1):t.situsFromPoint(i.left(),r.point(i)).bind(function(e){return e.start().fold(Me.none,function(n){return pf(t,n).bind(function(e){return r.adjuster(t,n,e,o,i).fold(Me.none,function(e){return wf(t,r,o,e,u-1)})}).orThunk(function(){return Me.some(i)})},Me.none)})},yf={tryUp:b(dl,vf),tryDown:b(dl,bf),ieTryUp:function(e,n){return e.situsFromPoint(n.left(),n.top()-5)},ieTryDown:function(e,n){return e.situsFromPoint(n.left(),n.bottom()+5)},getJumpSize:D(5)},Cf=me(),Sf=function(r,o,i,u,c,a){return 0===a?Me.none():Tf(r,o,i,u,c).bind(function(e){var n=r.fromSitus(e),t=uf.verify(r,i,u,n.finish(),n.foffset(),c.failure,o);return uf.cata(t,function(){return Me.none()},function(){return Me.some(e)},function(e){return In(i,e)&&0===u?xf(r,i,u,mf.moveUp,c):Sf(r,o,e,0,c,a-1)},function(e){return In(i,e)&&u===wt(e)?xf(r,i,u,mf.moveDown,c):Sf(r,o,e,wt(e),c,a-1)})})},xf=function(n,e,t,r,o){return gf(n,e,t).bind(function(e){return Rf(n,o,r(e,yf.getJumpSize()))})},Rf=function(e,n,t){return Cf.browser.isChrome()||Cf.browser.isSafari()||Cf.browser.isFirefox()||Cf.browser.isEdge()?n.otherRetry(e,t):Cf.browser.isIE()?n.ieRetry(e,t):Me.none()},Tf=function(n,e,t,r,o){return gf(n,t,r).bind(function(e){return Rf(n,o,e)})},Of=function(n,t,r){return function(o,i,u){return o.getSelection().bind(function(r){return ff(i,r.finish(),r.foffset(),u).fold(function(){return Me.some(rf(r.finish(),r.foffset()))},function(e){var n=o.fromSitus(e),t=uf.verify(o,r.finish(),r.foffset(),n.finish(),n.foffset(),u.failure,i);return sf(t)})})}(n,t,r).bind(function(e){return Sf(n,t,e.element(),e.offset(),r,20).map(n.fromSitus)})},Df=me(),Af=function(e,n,t,r,o,i){return Df.browser.isIE()?Me.none():i(r,n).orThunk(function(){return gl(e,n,t,r,o).map(function(e){var n=e.range();return Hl.create(Me.some(Ul.makeSitus(n.start(),n.soffset(),n.finish(),n.foffset())),!0)})})},Ef=function(e,n,t,r,o,i,u){return gl(e,t,r,o,i).bind(function(e){return Vl.detect(n,t,e.start(),e.finish(),u)})},Nf=function(e,r){return et(e,"tr",r).bind(function(t){return et(t,"table",r).bind(function(e){var n=Be(e,"tr");return In(t,n[0])?function(e,n,t){return ef(tf,e,n,t)}(e,function(e){return St(e).isSome()},r).map(function(e){var n=wt(e);return Hl.create(Me.some(Ul.makeSitus(e,n,e,n)),!0)}):Me.none()})})},kf=function(e,r){return et(e,"tr",r).bind(function(t){return et(t,"table",r).bind(function(e){var n=Be(e,"tr");return In(t,n[n.length-1])?function(e,n,t){return nf(tf,e,n,t)}(e,function(e){return Ct(e).isSome()},r).map(function(e){return Hl.create(Me.some(Ul.makeSitus(e,0,e,0)),!0)}):Me.none()})})};function If(n){return function(e){return e===n}}function Bf(c){return{elementFromPoint:function(e,n){return on.fromPoint(on.fromDom(c.document),e,n)},getRect:function(e){return e.dom().getBoundingClientRect()},getRangedRect:function(e,n,t,r){var o=kl.exact(e,n,t,r);return $a(c,o).map(jf)},getSelection:function(){return Xa(c).map(function(e){return Ul.convertToRange(c,e)})},fromSitus:function(e){var n=kl.relative(e.start(),e.finish());return Ul.convertToRange(c,n)},situsFromPoint:function(e,n){return Ja(c,e,n).map(function(e){return Fl(e.start(),e.soffset(),e.finish(),e.foffset())})},clearSelection:function(){!function(e){e.getSelection().removeAllRanges()}(c)},collapseSelection:function(u){void 0===u&&(u=!1),Xa(c).each(function(e){return e.fold(function(e){return e.collapse(u)},function(e,n){var t=u?e:n;Va(c,t,t)},function(e,n,t,r){var o=u?e:t,i=u?n:r;qa(c,o,i,o,i)})})},setSelection:function(e){qa(c,e.start(),e.soffset(),e.finish(),e.foffset())},setRelativeSelection:function(e,n){Va(c,e,n)},selectContents:function(e){Ka(c,e)},getInnerHeight:function(){return c.innerHeight},getScrollY:function(){return function(e){var n=e!==undefined?e.dom():f.document,t=n.body.scrollLeft||n.documentElement.scrollLeft,r=n.body.scrollTop||n.documentElement.scrollTop;return lo(t,r)}(on.fromDom(c.document)).top()},scrollBy:function(e,n){!function(e,n,t){(t!==undefined?t.dom():f.document).defaultView.scrollBy(e,n)}(e,n,on.fromDom(c.document))}}}function Pf(n,e){p(e,function(e){!function(e,n){Co(e)?e.dom().classList.remove(n):xo(e,n);To(e)}(n,e)})}var Mf={down:{traverse:ye,gather:il,relative:El.before,otherRetry:yf.tryDown,ieRetry:yf.ieTryDown,failure:uf.failedDown},up:{traverse:we,gather:ol,relative:El.before,otherRetry:yf.tryUp,ieRetry:yf.ieTryUp,failure:uf.failedUp}},Wf=If(38),_f=If(40),Lf={ltr:{isBackward:If(37),isForward:If(39)},rtl:{isBackward:If(39),isForward:If(37)},isUp:Wf,isDown:_f,isNavigation:function(e){return 37<=e&&e<=40}},jf=function(e){return{left:e.left(),top:e.top(),right:e.right(),bottom:e.bottom(),width:e.width(),height:e.height()}},zf=(me().browser.isSafari(),B("rows","cols")),Hf={mouse:function(e,n,t,r){var o=function c(o,i,n,u){function t(){r=Me.none()}var r=Me.none();return{mousedown:function(e){u.clear(i),r=pl(e.target(),n)},mouseover:function(e){r.each(function(r){u.clearBeforeUpdate(i),pl(e.target(),n).each(function(t){dr(r,t,n).each(function(e){var n=e.boxes().getOr([]);(1<n.length||1===n.length&&!In(r,t))&&(u.selectRange(i,n,e.start(),e.finish()),o.selectContents(t))})})})},mouseup:function(e){r.each(t)}}}(Bf(e),n,t,r);return{mousedown:o.mousedown,mouseover:o.mouseover,mouseup:o.mouseup}},keyboard:function(e,l,f,s){function d(){return s.clear(l),Me.none()}var m=Bf(e);return{keydown:function(e,n,t,r,o,i){var u=e.raw(),c=u.which,a=!0===u.shiftKey;return mr(l,s.selectedSelector()).fold(function(){return Lf.isDown(c)&&a?b(Ef,m,l,f,Mf.down,r,n,s.selectRange):Lf.isUp(c)&&a?b(Ef,m,l,f,Mf.up,r,n,s.selectRange):Lf.isDown(c)?b(Af,m,f,Mf.down,r,n,kf):Lf.isUp(c)?b(Af,m,f,Mf.up,r,n,Nf):Me.none},function(n){function e(e){return function(){return bo(e,function(e){return Vl.update(e.rows(),e.cols(),l,n,s)}).fold(function(){return pr(l,s.firstSelectedSelector(),s.lastSelectedSelector()).map(function(e){var n=Lf.isDown(c)||i.isForward(c)?El.after:El.before;return m.setRelativeSelection(El.on(e.first(),0),n(e.table())),s.clear(l),Hl.create(Me.none(),!0)})},function(e){return Me.some(Hl.create(Me.none(),!0))})}}return Lf.isDown(c)&&a?e([zf(1,0)]):Lf.isUp(c)&&a?e([zf(-1,0)]):i.isBackward(c)&&a?e([zf(0,-1),zf(-1,0)]):i.isForward(c)&&a?e([zf(0,1),zf(1,0)]):Lf.isNavigation(c)&&!1==a?d:Me.none})()},keyup:function(t,r,o,i,u){return mr(l,s.selectedSelector()).fold(function(){var e=t.raw(),n=e.which;return!1==(!0===e.shiftKey)?Me.none():Lf.isNavigation(n)?Vl.sync(l,f,r,o,i,u,s.selectRange):Me.none()},Me.none)}}},external:function(e,r,n,o){var i=Bf(e);return function(e,t){o.clearBeforeUpdate(r),dr(e,t,n).each(function(e){var n=e.boxes().getOr([]);o.selectRange(r,n,e.start(),e.finish()),i.selectContents(t),i.collapseSelection()})}}},Ff={byClass:function(o){function i(e){var n=Be(e,o.selectedSelector());p(n,t)}var u=function(n){return function(e){Ro(e,n)}}(o.selected()),t=function(n){return function(e){Pf(e,n)}}([o.selected(),o.lastSelected(),o.firstSelected()]);return{clearBeforeUpdate:i,clear:i,selectRange:function(e,n,t,r){i(e),p(n,u),Ro(t,o.firstSelected()),Ro(r,o.lastSelected())},selectedSelector:o.selectedSelector,firstSelectedSelector:o.firstSelectedSelector,lastSelectedSelector:o.lastSelectedSelector}},byAttr:function(o,i,n){function t(e){Y(e,o.selected()),Y(e,o.firstSelected()),Y(e,o.lastSelected())}function u(e){U(e,o.selected(),"1")}function c(e){r(e),n()}var r=function(e){var n=Be(e,o.selectedSelector());p(n,t)};return{clearBeforeUpdate:r,clear:c,selectRange:function(e,n,t,r){c(e),p(n,u),U(t,o.firstSelected(),"1"),U(r,o.lastSelected(),"1"),i(n,t,r)},selectedSelector:o.selectedSelector,firstSelectedSelector:o.firstSelectedSelector,lastSelectedSelector:o.lastSelectedSelector}}},Uf={getOtherCells:function(e,n,t){var r=ft(e),o=mt.generate(r);return Fo(o,n).map(function(e){var n=bu(o,t,!1);return{upOrLeftCells:function(e,t,n){var r=e.slice(0,t[t.length-1].row()+1),o=_o(r,n);return x(o,function(e){var n=e.cells().slice(0,t[t.length-1].column()+1);return g(n,function(e){return e.element()})})}(n,e,t),downOrRightCells:function(e,t,n){var r=e.slice(t[0].row()+t[0].rowspan()-1,e.length),o=_o(r,n);return x(o,function(e){var n=e.cells().slice(t[0].column()+t[0].colspan()-1,+e.cells().length);return g(n,function(e){return e.element()})})}(n,e,t)}})}},qf=function(e){return!1===Oo(on.fromDom(e.target),"ephox-snooker-resizer-bar")};function Vf(w,y,e){var C=Xe(["mousedown","mouseover","mouseup","keyup","keydown"],[]),S=Me.none(),a=Sc(w),x=Ff.byAttr(Cr,function(i,u,c){e.targets().each(function(o){lt.table(u).each(function(e){var n=on.fromDom(w.getDoc()),t=Wt.cellOperations(T,n,a),r=Uf.getOtherCells(e,o,t);xc(w,i,u,c,r)})})},function(){Rc(w)});w.on("init",function(e){var r=w.getWin(),o=gc(w),n=pc(w),t=Hf.mouse(r,o,n,x),c=Hf.keyboard(r,o,n,x),i=Hf.external(r,o,n,x);w.on("TableSelectorChange",function(e){i(e.start,e.finish)});function a(e,n){!function(e){return!0===e.raw().shiftKey}(e)||(n.kill()&&e.kill(),n.selection().each(function(e){var n=kl.relative(e.start(),e.finish()),t=Pl(r,n);w.selection.setRng(t)}))}function u(e){var n=v(e);if(n.raw().shiftKey&&Lf.isNavigation(n.raw().which)){var t=w.selection.getRng(),r=on.fromDom(t.startContainer),o=on.fromDom(t.endContainer);c.keyup(n,r,t.startOffset,o,t.endOffset).each(function(e){a(n,e)})}}function l(e){var n=v(e);y().each(function(e){e.hideBars()});var t=w.selection.getRng(),r=on.fromDom(w.selection.getStart()),o=on.fromDom(t.startContainer),i=on.fromDom(t.endContainer),u=bc.directionAt(r).isRtl()?Lf.rtl:Lf.ltr;c.keydown(n,o,t.startOffset,i,t.endOffset,u).each(function(e){a(n,e)}),y().each(function(e){e.showBars()})}function f(e){return e.hasOwnProperty("x")&&e.hasOwnProperty("y")}function s(e){return 0===e.button}function d(e){s(e)&&qf(e)&&t.mousedown(v(e))}function m(e){(function(e){return e.buttons===undefined||0!=(1&e.buttons)})(e)&&qf(e)&&t.mouseover(v(e))}function g(e){s(e)&&qf(e)&&t.mouseup(v(e))}var p,h,v=function(e){function n(){e.stopPropagation()}function t(){e.preventDefault()}var r=on.fromDom(e.target),o=O(t,n);return{target:D(r),x:D(f(e)?e.x:null),y:D(f(e)?e.y:null),stop:n,prevent:t,kill:o,raw:D(e)}},b=(p=R(on.fromDom(o)),h=R(0),{touchEnd:function(e){var n=on.fromDom(e.target);if("td"===en(n)||"th"===en(n)){var t=p.get(),r=h.get();In(t,n)&&e.timeStamp-r<300&&(e.preventDefault(),i(n,n))}p.set(n),h.set(e.timeStamp)}});w.on("mousedown",d),w.on("mouseover",m),w.on("mouseup",g),w.on("touchend",b.touchEnd),w.on("keyup",u),w.on("keydown",l),w.on("NodeChange",function(){var e=w.selection,n=on.fromDom(e.getStart()),t=on.fromDom(e.getEnd());fr.sharedOne(lt.table,[n,t]).fold(function(){x.clear(o)},T)}),S=Me.some(C({mousedown:d,mouseover:m,mouseup:g,keyup:u,keydown:l}))});return{clear:x.clear,destroy:function(){S.each(function(e){})}}}var Gf=function(n){return{get:function(){var e=gc(n);return hr(e,Cr.selectedSelector()).fold(function(){return n.selection.getStart()===undefined?Rr.none():Rr.single(n.selection)},function(e){return Rr.multiple(e)})}}},Yf=function(e,t){function n(){return oa(e).bind(function(n){return lt.table(n).map(function(e){return"caption"===en(n)?Er.notCell(n):Er.forMenu(t,e,n)})})}function r(){i.set(Z(n)()),p(u.get(),function(e){return e()})}function o(n,t){function r(){return i.get().fold(function(){n.setDisabled(!0)},function(e){n.setDisabled(t(e))})}return r(),u.set(u.get().concat([r])),function(){u.set(h(u.get(),function(e){return e!==r}))}}var i=R(Me.none()),u=R([]);return e.on("NodeChange TableSelectorChange",r),{onSetupTable:function(e){return o(e,function(e){return!1})},onSetupCellOrRow:function(e){return o(e,function(e){return"caption"===en(e.element())})},onSetupMergeable:function(e){return o(e,function(e){return e.mergable().isNone()})},onSetupUnmergeable:function(e){return o(e,function(e){return e.unmergable().isNone()})},resetTargets:r,targets:function(){return i.get()}}},Kf={addButtons:function(n,e){n.ui.registry.addMenuButton("table",{tooltip:"Table",icon:"table",fetch:function(e){return e("inserttable | cell row column | advtablesort | tableprops deletetable")}});function t(e){return function(){return n.execCommand(e)}}n.ui.registry.addButton("tableprops",{tooltip:"Table properties",onAction:t("mceTableProps"),icon:"table",onSetup:e.onSetupTable}),n.ui.registry.addButton("tabledelete",{tooltip:"Delete table",onAction:t("mceTableDelete"),icon:"table-delete-table",onSetup:e.onSetupTable}),n.ui.registry.addButton("tablecellprops",{tooltip:"Cell properties",onAction:t("mceTableCellProps"),icon:"table-cell-properties",onSetup:e.onSetupCellOrRow}),n.ui.registry.addButton("tablemergecells",{tooltip:"Merge cells",onAction:t("mceTableMergeCells"),icon:"table-merge-cells",onSetup:e.onSetupMergeable}),n.ui.registry.addButton("tablesplitcells",{tooltip:"Split cell",onAction:t("mceTableSplitCells"),icon:"table-split-cells",onSetup:e.onSetupUnmergeable}),n.ui.registry.addButton("tableinsertrowbefore",{tooltip:"Insert row before",onAction:t("mceTableInsertRowBefore"),icon:"table-insert-row-above",onSetup:e.onSetupCellOrRow}),n.ui.registry.addButton("tableinsertrowafter",{tooltip:"Insert row after",onAction:t("mceTableInsertRowAfter"),icon:"table-insert-row-after",onSetup:e.onSetupCellOrRow}),n.ui.registry.addButton("tabledeleterow",{tooltip:"Delete row",onAction:t("mceTableDeleteRow"),icon:"table-delete-row",onSetup:e.onSetupCellOrRow}),n.ui.registry.addButton("tablerowprops",{tooltip:"Row properties",onAction:t("mceTableRowProps"),icon:"table-row-properties",onSetup:e.onSetupCellOrRow}),n.ui.registry.addButton("tableinsertcolbefore",{tooltip:"Insert column before",onAction:t("mceTableInsertColBefore"),icon:"table-insert-column-before",onSetup:e.onSetupCellOrRow}),n.ui.registry.addButton("tableinsertcolafter",{tooltip:"Insert column after",onAction:t("mceTableInsertColAfter"),icon:"table-insert-column-after",onSetup:e.onSetupCellOrRow}),n.ui.registry.addButton("tabledeletecol",{tooltip:"Delete column",onAction:t("mceTableDeleteCol"),icon:"table-delete-column",onSetup:e.onSetupCellOrRow}),n.ui.registry.addButton("tablecutrow",{tooltip:"Cut row",onAction:t("mceTableCutRow"),icon:"temporary-placeholder",onSetup:e.onSetupCellOrRow}),n.ui.registry.addButton("tablecopyrow",{tooltip:"Copy row",onAction:t("mceTableCopyRow"),icon:"temporary-placeholder",onSetup:e.onSetupCellOrRow}),n.ui.registry.addButton("tablepasterowbefore",{tooltip:"Paste row before",onAction:t("mceTablePasteRowBefore"),icon:"temporary-placeholder",onSetup:e.onSetupCellOrRow}),n.ui.registry.addButton("tablepasterowafter",{tooltip:"Paste row after",onAction:t("mceTablePasteRowAfter"),icon:"temporary-placeholder",onSetup:e.onSetupCellOrRow}),n.ui.registry.addButton("tableinsertdialog",{tooltip:"Insert table",onAction:t("mceInsertTable"),icon:"table"})},addToolbars:function(n){var e=function(e){return e.getParam("table_toolbar","tableprops tabledelete | tableinsertrowbefore tableinsertrowafter tabledeleterow | tableinsertcolbefore tableinsertcolafter tabledeletecol")}(n);0<e.length&&n.ui.registry.addContextToolbar("table",{predicate:function(e){return n.dom.is(e,"table")&&n.getBody().contains(e)},items:e,scope:"node",position:"node"})}},Xf={addMenuItems:function(r,e){function n(e){return function(){return r.execCommand(e)}}function t(e){var n=e.numRows,t=e.numColumns;r.undoManager.transact(function(){Zc(r,t,n)}),r.addVisual()}var o={text:"Table properties",onSetup:e.onSetupTable,onAction:n("mceTableProps")},i={text:"Delete table",icon:"table-delete-table",onSetup:e.onSetupTable,onAction:n("mceTableDelete")},u=[{type:"menuitem",text:"Insert row before",icon:"table-insert-row-above",onAction:n("mceTableInsertRowBefore"),onSetup:e.onSetupCellOrRow},{type:"menuitem",text:"Insert row after",icon:"table-insert-row-after",onAction:n("mceTableInsertRowAfter"),onSetup:e.onSetupCellOrRow},{type:"menuitem",text:"Delete row",icon:"table-delete-row",onAction:n("mceTableDeleteRow"),onSetup:e.onSetupCellOrRow},{type:"menuitem",text:"Row properties",icon:"table-row-properties",onAction:n("mceTableRowProps"),onSetup:e.onSetupCellOrRow},{type:"separator"},{type:"menuitem",text:"Cut row",onAction:n("mceTableCutRow"),onSetup:e.onSetupCellOrRow},{type:"menuitem",text:"Copy row",onAction:n("mceTableCopyRow"),onSetup:e.onSetupCellOrRow},{type:"menuitem",text:"Paste row before",onAction:n("mceTablePasteRowBefore"),onSetup:e.onSetupCellOrRow},{type:"menuitem",text:"Paste row after",onAction:n("mceTablePasteRowAfter"),onSetup:e.onSetupCellOrRow}],c={type:"nestedmenuitem",text:"Row",getSubmenuItems:function(){return u}},a=[{type:"menuitem",text:"Insert column before",icon:"table-insert-column-before",onAction:n("mceTableInsertColBefore"),onSetup:e.onSetupCellOrRow},{type:"menuitem",text:"Insert column after",icon:"table-insert-column-after",onAction:n("mceTableInsertColAfter"),onSetup:e.onSetupCellOrRow},{type:"menuitem",text:"Delete column",icon:"table-delete-column",onAction:n("mceTableDeleteCol"),onSetup:e.onSetupCellOrRow}],l={type:"nestedmenuitem",text:"Column",getSubmenuItems:function(){return a}},f=[{type:"menuitem",text:"Cell properties",icon:"table-cell-properties",onAction:n("mceTableCellProps"),onSetup:e.onSetupCellOrRow},{type:"menuitem",text:"Merge cells",icon:"table-merge-cells",onAction:n("mceTableMergeCells"),onSetup:e.onSetupMergeable},{type:"menuitem",text:"Split cell",icon:"table-split-cells",onAction:n("mceTableSplitCells"),onSetup:e.onSetupUnmergeable}],s={type:"nestedmenuitem",text:"Cell",getSubmenuItems:function(){return f}};!1===function(e){return e.getParam("table_grid",!0,"boolean")}(r)?r.ui.registry.addMenuItem("inserttable",{text:"Table",icon:"table",onAction:n("mceInsertTable")}):r.ui.registry.addNestedMenuItem("inserttable",{text:"Table",icon:"table",getSubmenuItems:function(){return[{type:"fancymenuitem",fancytype:"inserttable",onAction:t}]}}),r.ui.registry.addMenuItem("inserttabledialog",{text:"Insert table",icon:"table",onAction:n("mceInsertTable")}),r.ui.registry.addMenuItem("tableprops",o),r.ui.registry.addMenuItem("deletetable",i),r.ui.registry.addNestedMenuItem("row",c),r.ui.registry.addNestedMenuItem("column",l),r.ui.registry.addNestedMenuItem("cell",s),r.ui.registry.addContextMenu("table",{update:function(){return e.resetTargets(),e.targets().fold(function(){return""},function(e){return"caption"===en(e.element())?"tableprops deletetable":"cell row column | advtablesort | tableprops deletetable"})}})}},$f=function(t,n,e,r){return{insertTable:function(e,n){return Zc(t,e,n)},setClipboardRows:function(e){return function(e,n){var t=g(e,on.fromDom);n.set(Me.from(t))}(e,n)},getClipboardRows:function(){return function(e){return e.get().fold(function(){},function(e){return g(e,function(e){return e.dom()})})}(n)},resizeHandler:e,selectionTargets:r}};function Jf(n){var e=Gf(n),t=Yf(n,e),r=Sl(n),o=Vf(n,r.lazyResize,t),i=Tc(n,r.lazyWire),u=R(Me.none());return ua.registerCommands(n,i,o,e,u),Nr.registerEvents(n,e,i,o),Xf.addMenuItems(n,t),Kf.addButtons(n,t),Kf.addToolbars(n),n.on("PreInit",function(){n.serializer.addTempAttr(Cr.firstSelected()),n.serializer.addTempAttr(Cr.lastSelected())}),Cc(n)&&n.on("keydown",function(e){zl.handle(e,n,i,r.lazyWire)}),n.on("remove",function(){r.destroy(),o.destroy()}),$f(n,u,r,t)}!function Zf(){We.add("table",Jf)}()}(window);
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/plugins/template/plugin.min.js b/app/static/vendors/tinymce/js/tinymce/plugins/template/plugin.min.js
deleted file mode 100644 (file)
index 35fb5e3..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.3 (2019-12-04)
- */
-!function(){"use strict";function e(){}function a(e){return function(){return e}}var t=tinymce.util.Tools.resolve("tinymce.PluginManager");function c(e,t){if((e=""+e).length<t)for(var n=0;n<t-e.length;n++)e="0"+e;return e}function i(n,e){return p.each(e,function(e,t){"function"==typeof e&&(e=e(t)),n=n.replace(new RegExp("\\{\\$"+t+"\\}","g"),e)}),n}function l(e,t){var r=e.dom,o=h(e);p.each(r.select("*",t),function(n){p.each(o,function(e,t){r.hasClass(n,t)&&"function"==typeof o[t]&&o[t](n)})})}function s(e,t){return new RegExp("\\b"+t+"\\b","g").test(e.className)}function n(){return w}var r,u=a(!1),f=a(!0),p=tinymce.util.Tools.resolve("tinymce.util.Tools"),o=tinymce.util.Tools.resolve("tinymce.util.XHR"),m=function(e){return e.getParam("template_cdate_classes","cdate")},d=function(e){return e.getParam("template_mdate_classes","mdate")},g=function(e){return e.getParam("template_selected_content_classes","selcontent")},y=function(e){return e.getParam("template_preview_replace_values")},h=function(e){return e.getParam("template_replace_values")},v=function(e){return e.templates},b=function(e){return e.getParam("template_cdate_format",e.translate("%Y-%m-%d"))},O=function(e){return e.getParam("template_mdate_format",e.translate("%Y-%m-%d"))},T=function(e,t,n){var r="Sun Mon Tue Wed Thu Fri Sat Sun".split(" "),o="Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday".split(" "),a="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),u="January February March April May June July August September October November December".split(" ");return n=n||new Date,t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=t.replace("%D","%m/%d/%Y")).replace("%r","%I:%M:%S %p")).replace("%Y",""+n.getFullYear())).replace("%y",""+n.getYear())).replace("%m",c(n.getMonth()+1,2))).replace("%d",c(n.getDate(),2))).replace("%H",""+c(n.getHours(),2))).replace("%M",""+c(n.getMinutes(),2))).replace("%S",""+c(n.getSeconds(),2))).replace("%I",""+((n.getHours()+11)%12+1))).replace("%p",n.getHours()<12?"AM":"PM")).replace("%B",""+e.translate(u[n.getMonth()]))).replace("%b",""+e.translate(a[n.getMonth()]))).replace("%A",""+e.translate(o[n.getDay()]))).replace("%a",""+e.translate(r[n.getDay()]))).replace("%%","%")},M=function(t,n){return function(){var e=v(t);"function"!=typeof e?"string"==typeof e?o.send({url:e,success:function(e){n(JSON.parse(e))}}):n(e):e(n)}},S=i,_=l,x=function(t,e,n){var r,o,a=t.dom,u=t.selection.getContent();n=i(n,h(t)),r=a.create("div",null,n),(o=a.select(".mceTmpl",r))&&0<o.length&&(r=a.create("div",null)).appendChild(o[0].cloneNode(!0)),p.each(a.select("*",r),function(e){s(e,m(t).replace(/\s+/g,"|"))&&(e.innerHTML=T(t,b(t))),s(e,d(t).replace(/\s+/g,"|"))&&(e.innerHTML=T(t,O(t))),s(e,g(t).replace(/\s+/g,"|"))&&(e.innerHTML=u)}),l(t,r),t.execCommand("mceInsertContent",!1,r.innerHTML),t.addVisual()},P=function(e){e.addCommand("mceInsertTemplate",function t(r){for(var o=[],e=1;e<arguments.length;e++)o[e-1]=arguments[e];return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=o.concat(e);return r.apply(null,n)}}(x,e))},A=function(r){r.on("PreProcess",function(e){var t=r.dom,n=O(r);p.each(t.select("div",e.node),function(e){t.hasClass(e,"mceTmpl")&&(p.each(t.select("*",e),function(e){t.hasClass(e,r.getParam("template_mdate_classes","mdate").replace(/\s+/g,"|"))&&(e.innerHTML=T(r,n))}),_(r,e))})})},w=(r={fold:function(e,t){return e()},is:u,isSome:u,isNone:f,getOr:N,getOrThunk:C,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:a(null),getOrUndefined:a(undefined),or:N,orThunk:C,map:n,each:e,bind:n,exists:u,forall:f,filter:n,equals:D,equals_:D,toArray:function(){return[]},toString:a("none()")},Object.freeze&&Object.freeze(r),r);function D(e){return e.isNone()}function C(e){return e()}function N(e){return e}function H(e){return e.replace(/["'<>&]/g,function(e){return function(e,t){return B(e,t)?L.from(e[t]):L.none()}(E,e).getOr(e)})}function k(t){return function(e){R(t,e)}}var I,J=function(n){function e(){return o}function t(e){return e(n)}var r=a(n),o={fold:function(e,t){return t(n)},is:function(e){return n===e},isSome:f,isNone:u,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:e,orThunk:e,map:function(e){return J(e(n))},each:function(e){e(n)},bind:t,exists:t,forall:t,filter:function(e){return e(n)?o:w},toArray:function(){return[n]},toString:function(){return"some("+n+")"},equals:function(e){return e.is(n)},equals_:function(e,t){return e.fold(u,function(e){return t(n,e)})}};return o},L={some:J,none:n,from:function(e){return null===e||e===undefined?w:J(e)}},Y=(I="function",function(e){return function(e){if(null===e)return"null";var t=typeof e;return"object"==t&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"==t&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":t}(e)===I}),j=Array.prototype.slice,q=(Y(Array.from)&&Array.from,tinymce.util.Tools.resolve("tinymce.util.Promise")),F=Object.hasOwnProperty,B=function(e,t){return F.call(e,t)},E={'"':"&quot;","<":"&lt;",">":"&gt;","&":"&amp;","'":"&#039;"},R=function(i,t){function e(e){return function(e,t){for(var n=e.length,r=new Array(n),o=0;o<n;o++){var a=e[o];r[o]=t(a,o)}return r}(e,function(e){return{text:e.text,value:e.text}})}function a(e,t){return function(e,t){for(var n=0,r=e.length;n<r;n++){var o=e[n];if(t(o,n))return L.some(o)}return L.none()}(e,function(e){return e.text===t})}function l(e){return new q(function(t,n){e.value.url.fold(function(){return t(e.value.content.getOr(""))},function(e){return o.send({url:e,success:function(e){t(e)},error:function(e){n(e)}})})})}(function(){if(t&&0!==t.length)return L.from(p.map(t,function(e,t){function n(e){return e.url!==undefined}return{selected:0===t,text:e.title,value:{url:n(e)?L.from(e.url):L.none(),content:n(e)?L.none():L.from(e.content),description:e.description}}}));var e=i.translate("No templates defined.");return i.notificationManager.open({text:e,type:"info"}),L.none()})().each(function(n){function u(e,t){return{title:"Insert Template",size:"large",body:{type:"panel",items:e},initialData:t,buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],onSubmit:function(n){return function(t){var e=t.getData();a(n,e.template).each(function(e){l(e).then(function(e){x(i,!1,e),t.close()})})}}(n),onChange:function(r,o){return function(n,e){if("template"===e.name){var t=n.getData().template;a(r,t).each(function(t){n.block("Loading..."),l(t).then(function(e){o(n,t,e),n.unblock()})})}}}(n,r)}}var c=e(n),r=function(e,t,n){var r=function(t,e){if(-1===e.indexOf("<html>")){var n="";p.each(t.contentCSS,function(e){n+='<link type="text/css" rel="stylesheet" href="'+t.documentBaseURI.toAbsolute(e)+'">'});var r=t.settings.body_class||"";-1!==r.indexOf("=")&&(r=(r=t.getParam("body_class","","hash"))[t.id]||"");var o=t.dom.encode,a=t.getBody().dir,u=a?' dir="'+o(a)+'"':"";e="<!DOCTYPE html><html><head>"+n+'</head><body class="'+o(r)+'"'+u+">"+e+"</body></html>"}return S(e,y(t))}(i,n),o=[{type:"selectbox",name:"template",label:"Templates",items:c},{type:"htmlpanel",html:'<p aria-live="polite">'+H(t.value.description)+"</p>"},{label:"Preview",type:"iframe",name:"preview",sandboxed:!1}],a={template:t.text,preview:r};e.unblock(),e.redial(u(o,a)),e.focus("template")},t=i.windowManager.open(u([],{template:"",preview:""}));t.block("Loading..."),l(n[0]).then(function(e){r(t,n[0],e)})})},z=function(e){e.ui.registry.addButton("template",{icon:"template",tooltip:"Insert template",onAction:M(e.settings,k(e))}),e.ui.registry.addMenuItem("template",{icon:"template",text:"Insert template...",onAction:M(e.settings,k(e))})};!function U(){t.add("template",function(e){z(e),P(e),A(e)})}()}();
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/plugins/textcolor/plugin.min.js b/app/static/vendors/tinymce/js/tinymce/plugins/textcolor/plugin.min.js
deleted file mode 100644 (file)
index e910583..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.3 (2019-12-04)
- */
-!function(o){"use strict";var i=tinymce.util.Tools.resolve("tinymce.PluginManager");!function n(){i.add("textcolor",function(){o.console.warn("Text color plugin is now built in to the core editor, please remove it from your editor configuration")})}()}(window);
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/plugins/textpattern/plugin.min.js b/app/static/vendors/tinymce/js/tinymce/plugins/textpattern/plugin.min.js
deleted file mode 100644 (file)
index 5c016de..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.3 (2019-12-04)
- */
-!function(f){"use strict";var r=function(t){function n(){return e}var e=t;return{get:n,set:function(t){e=t},clone:function(){return r(n())}}},t=tinymce.util.Tools.resolve("tinymce.PluginManager"),u=function(){return(u=Object.assign||function(t){for(var n,e=1,r=arguments.length;e<r;e++)for(var o in n=arguments[e])Object.prototype.hasOwnProperty.call(n,o)&&(t[o]=n[o]);return t}).apply(this,arguments)};function n(){}function a(t){return function(){return t}}function o(t){return t}function e(){return l}var i,c=a(!1),s=a(!0),l=(i={fold:function(t,n){return t()},is:c,isSome:c,isNone:s,getOr:g,getOrThunk:m,getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:a(null),getOrUndefined:a(undefined),or:g,orThunk:m,map:e,each:n,bind:e,exists:c,forall:s,filter:e,equals:d,equals_:d,toArray:function(){return[]},toString:a("none()")},Object.freeze&&Object.freeze(i),i);function d(t){return t.isNone()}function m(t){return t()}function g(t){return t}function p(n){return function(t){return function(t){if(null===t)return"null";var n=typeof t;return"object"==n&&(Array.prototype.isPrototypeOf(t)||t.constructor&&"Array"===t.constructor.name)?"array":"object"==n&&(String.prototype.isPrototypeOf(t)||t.constructor&&"String"===t.constructor.name)?"string":n}(t)===n}}function h(t,n){return-1<function(t,n){return lt.call(t,n)}(t,n)}function v(t,n){for(var e=t.length,r=new Array(e),o=0;o<e;o++){var a=t[o];r[o]=n(a,o)}return r}function y(t,n){for(var e=0,r=t.length;e<r;e++){n(t[e],e)}}function b(t,n){for(var e=[],r=0,o=t.length;r<o;r++){var a=t[r];n(a,r)&&e.push(a)}return e}function k(t,n,e){return function(t,n){for(var e=t.length-1;0<=e;e--){n(t[e],e)}}(t,function(t){e=n(e,t)}),e}function O(t,n){for(var e=0,r=t.length;e<r;++e){if(!0!==n(t[e],e))return!1}return!0}function w(t){var n=[],e=[];return y(t,function(t){t.fold(function(t){n.push(t)},function(t){e.push(t)})}),{errors:n,values:e}}function x(t){return"inline-command"===t.type||"inline-format"===t.type}function C(t){return"block-command"===t.type||"block-format"===t.type}function E(t){return function(t,n){var e=st.call(t,0);return e.sort(n),e}(t,function(t,n){return t.start.length===n.start.length?0:t.start.length>n.start.length?-1:1})}function T(o){function a(t){return yt.error({message:t,pattern:o})}function t(t,n,e){if(o.format===undefined)return o.cmd!==undefined?it(o.cmd)?yt.value(e(o.cmd,o.value)):a(t+" pattern has non-string `cmd` parameter"):a(t+" pattern is missing both `format` and `cmd` parameters");var r=void 0;if(ft(o.format)){if(!O(o.format,it))return a(t+" pattern has non-string items in the `format` array");r=o.format}else{if(!it(o.format))return a(t+" pattern has non-string `format` parameter");r=[o.format]}return yt.value(n(r))}if(!ut(o))return a("Raw pattern is not an object");if(!it(o.start))return a("Raw pattern is missing `start` parameter");if(o.end===undefined)return o.replacement!==undefined?it(o.replacement)?0===o.start.length?a("Replacement pattern has empty `start` parameter"):yt.value({type:"inline-command",start:"",end:o.start,cmd:"mceInsertContent",value:o.replacement}):a("Replacement pattern has non-string `replacement` parameter"):0===o.start.length?a("Block pattern has empty `start` parameter"):t("Block",function(t){return{type:"block-format",start:o.start,format:t[0]}},function(t,n){return{type:"block-command",start:o.start,cmd:t,value:n}});if(!it(o.end))return a("Inline pattern has non-string `end` parameter");if(0===o.start.length&&0===o.end.length)return a("Inline pattern has empty `start` and `end` parameters");var e=o.start,r=o.end;return 0===r.length&&(r=e,e=""),t("Inline",function(t){return{type:"inline-format",start:e,end:r,format:t}},function(t,n){return{type:"inline-command",start:e,end:r,cmd:t,value:n}})}function R(t){return"block-command"===t.type?{start:t.start,cmd:t.cmd,value:t.value}:"block-format"===t.type?{start:t.start,format:t.format}:"inline-command"===t.type?"mceInsertContent"===t.cmd&&""===t.start?{start:t.end,replacement:t.value}:{start:t.start,end:t.end,cmd:t.cmd,value:t.value}:"inline-format"===t.type?{start:t.start,end:t.end,format:1===t.format.length?t.format[0]:t.format}:void 0}function N(t){return{inlinePatterns:b(t,x),blockPatterns:E(b(t,C))}}function P(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];var e=kt.console;e&&(e.error?e.error.apply(e,t):e.log.apply(e,t))}function S(t){var n=function(t,n){return gt(t,n)?at.from(t[n]):at.none()}(t,"textpattern_patterns").getOr(Ot);if(!ft(n))return P("The setting textpattern_patterns should be an array"),{inlinePatterns:[],blockPatterns:[]};var e=w(v(n,T));return y(e.errors,function(t){return P(t.message,t.pattern)}),N(e.values)}function M(t){var n=t.getParam("forced_root_block","p");return!1===n?"":!0===n?"p":n}function A(t){return t.nodeType===f.Node.TEXT_NODE}function j(t,n,e,r){void 0===r&&(r=!0);var o=n.startContainer.parentNode,a=n.endContainer.parentNode;n.deleteContents(),r&&!e(n.startContainer)&&(A(n.startContainer)&&0===n.startContainer.data.length&&t.remove(n.startContainer),A(n.endContainer)&&0===n.endContainer.data.length&&t.remove(n.endContainer),Tt(t,o,e),o!==a&&Tt(t,a,e))}function B(t,n){var e=n.get(t);return ft(e)&&function(t){return 0===t.length?at.none():at.some(t[0])}(e).exists(function(t){return gt(t,"block")})}function D(t){return 0===t.start.length}function I(t,n){var e=at.from(t.dom.getParent(n.startContainer,t.dom.isBlock));return""===M(t)?e.orThunk(function(){return at.some(t.getBody())}):e}function _(t,n){return{element:t,offset:n}}function U(t,n){function e(t){for(var n=r[t]();n&&n.nodeType!==f.Node.TEXT_NODE;)n=r[t]();return n&&n.nodeType===f.Node.TEXT_NODE?at.some(n):at.none()}var r=new Et(t,n);return{next:function(){return e("next")},prev:function(){return e("prev")},prev2:function(){return e("prev2")}}}function q(t,n,e){return A(t)&&0<=n?at.some(_(t,n)):U(t,e).prev().map(function(t){return _(t,t.data.length)})}function L(t,n,e){if(A(n)&&(e<0||e>n.data.length))return[];for(var r=[e],o=n;o!==t&&o.parentNode;){for(var a=o.parentNode,i=0;i<a.childNodes.length;i++)if(a.childNodes[i]===o){r.push(i);break}o=a}return o===t?r.reverse():[]}function V(t,n,e,r,o){return{start:L(t,n,e),end:L(t,r,o)}}function W(t,n){var e=n.slice(),r=e.pop();return function(t,n,e){return y(t,function(t){e=n(e,t)}),e}(e,function(t,n){return t.bind(function(t){return at.from(t.childNodes[n])})},at.some(t)).bind(function(t){return A(t)&&0<=r&&t.data.length,at.some({node:t,offset:r})})}function X(n,e){return W(n,e.start).bind(function(t){var o=t.node,a=t.offset;return W(n,e.end).map(function(t){var n=t.node,e=t.offset,r=f.document.createRange();return r.setStart(o,a),r.setEnd(n,e),r})})}function z(r,o,t){U(o,o).next().each(function(e){Nt(e,t.start.length,o).each(function(t){var n=r.createRng();n.setStart(e,0),n.setEnd(t.element,t.offset),j(r,n,function(t){return t===o})})})}function F(t,n){var e=n.replace("\xa0"," ");return function(t,n){for(var e=0,r=t.length;e<r;e++){var o=t[e];if(n(o,e))return at.some(o)}return at.none()}(t,function(t){return 0===n.indexOf(t.start)||0===e.indexOf(t.start)})}function G(n,t){if(0!==t.length){var e=n.selection.getBookmark();y(t,function(t){return function(n,t){var e=n.dom,r=t.pattern,o=X(e.getRoot(),t.range).getOrDie("Unable to resolve path range");return I(n,o).each(function(t){"block-format"===r.type?B(r.format,n.formatter)&&n.undoManager.transact(function(){z(n.dom,t,r),n.formatter.apply(r.format)}):"block-command"===r.type&&n.undoManager.transact(function(){z(n.dom,t,r),n.execCommand(r.cmd,!1,r.value)})}),!0}(n,t)}),n.selection.moveToBookmark(e)}}function H(t,n){return t.create("span",{"data-mce-type":"bookmark",id:n})}function J(t,n){var e=t.createRng();return e.setStartAfter(n.start),e.setEndBefore(n.end),e}function K(t,n,e){var r=X(t.getRoot(),e).getOrDie("Unable to resolve path range"),o=r.startContainer,a=r.endContainer,i=0===r.endOffset?a:a.splitText(r.endOffset),u=0===r.startOffset?o:o.splitText(r.startOffset);return{prefix:n,end:i.parentNode.insertBefore(H(t,n+"-end"),i),start:u.parentNode.insertBefore(H(t,n+"-start"),u)}}function Q(t,n,e){Tt(t,t.get(n.prefix+"-end"),e),Tt(t,t.get(n.prefix+"-start"),e)}function Y(t,e,n,r,o,a){if(void 0===a&&(a=!1),0!==e.start.length||a)return q(n,r,o).bind(function(n){return function(t,n,e,r,o){var a=new Et(n,o);return Mt(t,n,at.some(e),r,a.prev,at.none())}(t,n.element,n.offset,function(f,c,s){return function(e,r,t,n){if(r===c)return e.abort();var o=t.substring(0,n.getOr(t.length)),a=o.lastIndexOf(s.charAt(s.length-1)),i=o.lastIndexOf(s);if(-1===i)return-1!==a?Rt(r,a+1-s.length,c).fold(function(){return e.kontinue()},function(t){var n=f.createRng();return n.setStart(t.element,t.offset),n.setEnd(r,a+1),n.toString()===s?e.finish(n):e.kontinue()}):e.kontinue();var u=f.createRng();return u.setStart(r,i),u.setEnd(r,i+s.length),e.finish(u)}}(t,o,e.start),o).fold(at.none,at.none,at.some).bind(function(t){if(a){if(t.endContainer===n.element&&t.endOffset===n.offset)return at.none();if(0===n.offset&&t.endContainer.textContent.length===t.endOffset)return at.none()}return at.some(t)})});var i=t.createRng();return i.setStart(n,r),i.setEnd(n,r),at.some(i)}function Z(a,i,u){var f=a.dom,c=f.getRoot(),s=u.pattern,l=u.position.element,d=u.position.offset;return Rt(l,d-u.pattern.end.length,i).bind(function(t){var e=V(c,t.element,t.offset,l,d);if(D(s))return at.some({matches:[{pattern:s,startRng:e,endRng:e}],position:t});var n=jt(a,u.remainingPatterns,t.element,t.offset,i),r=n.getOr({matches:[],position:t}),o=r.position;return Y(f,s,o.element,o.offset,i,n.isNone()).map(function(t){var n=function(t,n){return V(t,n.startContainer,n.startOffset,n.endContainer,n.endOffset)}(c,t);return{matches:r.matches.concat([{pattern:s,startRng:n,endRng:e}]),position:_(t.startContainer,t.startOffset)}})})}function $(n,t,e){n.selection.setRng(e),"inline-format"===t.type?y(t.format,function(t){n.formatter.apply(t)}):n.execCommand(t.cmd,!1,t.value)}function tt(o,t){var a=function(t){var n=(new Date).getTime();return t+"_"+Math.floor(1e9*Math.random())+ ++At+String(n)}("mce_textpattern"),i=k(t,function(t,n){var e=K(o,a+"_end"+t.length,n.endRng);return t.concat([u(u({},n),{endMarker:e})])},[]);return k(i,function(t,n){var e=i.length-t.length-1,r=D(n.pattern)?n.endMarker:K(o,a+"_start"+e,n.startRng);return t.concat([u(u({},n),{startMarker:r})])},[])}function nt(e,r,o){var a=e.selection.getRng();return!1===a.collapsed?[]:I(e,a).bind(function(t){var n=a.startOffset-(o?1:0);return jt(e,r,a.startContainer,n,t)}).fold(function(){return[]},function(t){return t.matches})}function et(r,t){if(0!==t.length){var o=r.dom,n=r.selection.getBookmark(),e=tt(o,t);y(e,function(t){function n(t){return t===e}var e=o.getParent(t.startMarker.start,o.isBlock);D(t.pattern)?function(t,n,e,r){var o=J(t.dom,e);j(t.dom,o,r),$(t,n,o)}(r,t.pattern,t.endMarker,n):function(t,n,e,r,o){var a=t.dom,i=J(a,r),u=J(a,e);j(a,u,o),j(a,i,o);var f={prefix:e.prefix,start:e.end,end:r.start},c=J(a,f);$(t,n,c)}(r,t.pattern,t.startMarker,t.endMarker,n),Q(o,t.endMarker,n),Q(o,t.startMarker,n)}),r.selection.moveToBookmark(n)}}function rt(t,n,e){for(var r=0;r<t.length;r++)if(e(t[r],n))return!0}var ot=function(e){function t(){return o}function n(t){return t(e)}var r=a(e),o={fold:function(t,n){return n(e)},is:function(t){return e===t},isSome:s,isNone:c,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:t,orThunk:t,map:function(t){return ot(t(e))},each:function(t){t(e)},bind:n,exists:n,forall:n,filter:function(t){return t(e)?o:l},toArray:function(){return[e]},toString:function(){return"some("+e+")"},equals:function(t){return t.is(e)},equals_:function(t,n){return t.fold(c,function(t){return n(e,t)})}};return o},at={some:ot,none:e,from:function(t){return null===t||t===undefined?l:ot(t)}},it=p("string"),ut=p("object"),ft=p("array"),ct=p("function"),st=Array.prototype.slice,lt=Array.prototype.indexOf,dt=(ct(Array.from)&&Array.from,Object.keys),mt=Object.hasOwnProperty,gt=function(t,n){return mt.call(t,n)},pt=function(i){if(!ft(i))throw new Error("cases must be an array");if(0===i.length)throw new Error("there must be at least one case");var u=[],e={};return y(i,function(t,r){var n=dt(t);if(1!==n.length)throw new Error("one and only one name per case");var o=n[0],a=t[o];if(e[o]!==undefined)throw new Error("duplicate key detected:"+o);if("cata"===o)throw new Error("cannot have a case named cata (sorry)");if(!ft(a))throw new Error("case arguments must be an array");u.push(o),e[o]=function(){var t=arguments.length;if(t!==a.length)throw new Error("Wrong number of arguments to case "+o+". Expected "+a.length+" ("+a+"), got "+t);for(var e=new Array(t),n=0;n<e.length;n++)e[n]=arguments[n];return{fold:function(){if(arguments.length!==i.length)throw new Error("Wrong number of arguments to fold. Expected "+i.length+", got "+arguments.length);return arguments[r].apply(null,e)},match:function(t){var n=dt(t);if(u.length!==n.length)throw new Error("Wrong number of arguments to match. Expected: "+u.join(",")+"\nActual: "+n.join(","));if(!O(u,function(t){return h(n,t)}))throw new Error("Not all branches were specified when using match. Specified: "+n.join(", ")+"\nRequired: "+u.join(", "));return t[o].apply(null,e)},log:function(t){f.console.log(t,{constructors:u,constructor:o,params:e})}}}}),e},ht=(pt([{bothErrors:["error1","error2"]},{firstError:["error1","value2"]},{secondError:["value1","error2"]},{bothValues:["value1","value2"]}]),function(e){return{is:function(t){return e===t},isValue:s,isError:c,getOr:a(e),getOrThunk:a(e),getOrDie:a(e),or:function(t){return ht(e)},orThunk:function(t){return ht(e)},fold:function(t,n){return n(e)},map:function(t){return ht(t(e))},mapError:function(t){return ht(e)},each:function(t){t(e)},bind:function(t){return t(e)},exists:function(t){return t(e)},forall:function(t){return t(e)},toOption:function(){return at.some(e)}}}),vt=function(e){return{is:c,isValue:c,isError:s,getOr:o,getOrThunk:function(t){return t()},getOrDie:function(){return function(t){return function(){throw new Error(t)}}(String(e))()},or:function(t){return t},orThunk:function(t){return t()},fold:function(t,n){return t(e)},map:function(t){return vt(e)},mapError:function(t){return vt(t(e))},each:n,bind:function(t){return vt(e)},exists:c,forall:s,toOption:at.none}},yt={value:ht,error:vt,fromOption:function(t,n){return t.fold(function(){return vt(n)},ht)}},bt=function(r){return{setPatterns:function(t){var n=w(v(t,T));if(0<n.errors.length){var e=n.errors[0];throw new Error(e.message+":\n"+JSON.stringify(e.pattern,null,2))}r.set(N(n.values))},getPatterns:function(){return function f(){for(var t=0,n=0,e=arguments.length;n<e;n++)t+=arguments[n].length;var r=Array(t),o=0;for(n=0;n<e;n++)for(var a=arguments[n],i=0,u=a.length;i<u;i++,o++)r[o]=a[i];return r}(v(r.get().inlinePatterns,R),v(r.get().blockPatterns,R))}}},kt="undefined"!=typeof f.window?f.window:Function("return this;")(),Ot=[{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"}],wt=tinymce.util.Tools.resolve("tinymce.util.Delay"),xt=tinymce.util.Tools.resolve("tinymce.util.VK"),Ct=tinymce.util.Tools.resolve("tinymce.util.Tools"),Et=tinymce.util.Tools.resolve("tinymce.dom.TreeWalker"),Tt=function(t,n,e){if(n&&t.isEmpty(n)&&!e(n)){var r=n.parentNode;t.remove(n),Tt(t,r,e)}},Rt=function(t,e,r){if(!A(t))return at.none();var n=t.textContent;return 0<=e&&e<=n.length?at.some(_(t,e)):U(t,r).prev().bind(function(t){var n=t.textContent;return Rt(t,e+n.length,r)})},Nt=function(t,n,e){if(!A(t))return at.none();var r=t.textContent;return n<=r.length?at.some(_(t,n)):U(t,e).next().bind(function(t){return Nt(t,n-r.length,e)})},Pt=pt([{aborted:[]},{edge:["element"]},{success:["info"]}]),St=pt([{abort:[]},{kontinue:[]},{finish:["info"]}]),Mt=function(n,e,t,r,o,a){function i(){return a.fold(Pt.aborted,Pt.edge)}function u(){var t=o();return t?Mt(n,t,at.none(),r,o,at.some(e)):i()}if(function(t,n){return t.isBlock(n)||h(["BR","IMG","HR","INPUT"],n.nodeName)||"false"===t.getContentEditable(n)}(n,e))return i();if(A(e)){var f=e.textContent;return r(St,e,f,t).fold(Pt.aborted,function(){return u()},Pt.success)}return u()},At=0,jt=function(c,s,l,d,m){var g=c.dom;return q(l,d,g.getRoot()).bind(function(t){var n=g.createRng();n.setStart(m,0),n.setEnd(l,d);for(var e,r,o=n.toString(),a=0;a<s.length;a++){var i=s[a];if(e=o,r=i.end,function(t,n,e){return""===n||!(t.length<n.length)&&t.substr(e,e+n.length)===n}(e,r,e.length-r.length)){var u=s.slice();u.splice(a,1);var f=Z(c,m,{pattern:i,remainingPatterns:u,position:t});if(f.isSome())return f}}return at.none()})},Bt=function(e,t){if(!e.selection.isCollapsed())return!1;var r=nt(e,t.inlinePatterns,!1),o=function(r,t){var o=r.dom,n=r.selection.getRng();return I(r,n).filter(function(t){var n=M(r),e=""===n&&o.is(t,"body")||o.is(t,n);return null!==t&&e}).bind(function(n){var e=n.textContent;return F(t,e).map(function(t){return Ct.trim(e).length===t.start.length?[]:[{pattern:t,range:V(o.getRoot(),n,0,n,0)}]})}).getOr([])}(e,t.blockPatterns);return(0<o.length||0<r.length)&&(e.undoManager.add(),e.undoManager.extra(function(){e.execCommand("mceInsertNewLine")},function(){e.insertContent("\ufeff"),et(e,r),G(e,o);var t=e.selection.getRng(),n=q(t.startContainer,t.startOffset,e.dom.getRoot());e.execCommand("mceInsertNewLine"),n.each(function(t){"\ufeff"===t.element.data.charAt(t.offset-1)&&(t.element.deleteData(t.offset-1,1),Tt(e.dom,t.element.parentNode,function(t){return t===e.dom.getRoot()}))})}),!0)},Dt=function(t,n){var e=nt(t,n.inlinePatterns,!0);0<e.length&&t.undoManager.transact(function(){et(t,e)})},It=function(t,n){return rt(t,n,function(t,n){return t.charCodeAt(0)===n.charCode})},_t=function(t,n){return rt(t,n,function(t,n){return t===n.keyCode&&!1===xt.modifierPressed(n)})},Ut=function(n,e){var r=[",",".",";",":","!","?"],o=[32];n.on("keydown",function(t){13!==t.keyCode||xt.modifierPressed(t)||Bt(n,e.get())&&t.preventDefault()},!0),n.on("keyup",function(t){_t(o,t)&&Dt(n,e.get())}),n.on("keypress",function(t){It(r,t)&&wt.setEditorTimeout(n,function(){Dt(n,e.get())})})};!function qt(){t.add("textpattern",function(t){var n=r(S(t.settings));return Ut(t,n),bt(n)})}()}(window);
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/plugins/toc/plugin.min.js b/app/static/vendors/tinymce/js/tinymce/plugins/toc/plugin.min.js
deleted file mode 100644 (file)
index 1c47225..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.3 (2019-12-04)
- */
-!function(){"use strict";function e(n){return function(t){function e(){return t.setDisabled(n.readonly||!v.hasHeaders(n))}return e(),n.on("LoadContent SetContent change",e),function(){return n.on("LoadContent SetContent change",e)}}}var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),u=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),l=tinymce.util.Tools.resolve("tinymce.util.I18n"),i=tinymce.util.Tools.resolve("tinymce.util.Tools"),c=function(t){return t.getParam("toc_class","mce-toc")},d=function(t){var e=t.getParam("toc_header","h2");return/^h[1-6]$/.test(e)?e:"h2"},a=function(t){var e=parseInt(t.getParam("toc_depth","3"),10);return 1<=e&&e<=9?e:3},s=function(e){var n=0;return function(){var t=(new Date).getTime().toString(32);return e+t+(n++).toString(32)}}("mcetoc_"),f=function f(t){var e,n=[];for(e=1;e<=t;e++)n.push("h"+e);return n.join(",")},m=function(n){var o=c(n),t=d(n),e=f(a(n)),r=n.$(e);return r.length&&/^h[1-9]$/i.test(t)&&(r=r.filter(function(t,e){return!n.dom.hasClass(e.parentNode,o)})),i.map(r,function(t){return{id:t.id?t.id:s(),level:parseInt(t.nodeName.replace(/^H/i,""),10),title:n.$.text(t),element:t}})},o=function(t){var e,n,o,r,i="",c=m(t),a=function(t){var e,n=9;for(e=0;e<t.length;e++)if(t[e].level<n&&(n=t[e].level),1===n)return n;return n}(c)-1;if(!c.length)return"";for(i+=function(t,e){var n="</"+t+">";return"<"+t+' contenteditable="true">'+u.DOM.encode(e)+n}(d(t),l.translate("Table of Contents")),e=0;e<c.length;e++){if((o=c[e]).element.id=o.id,r=c[e+1]&&c[e+1].level,a===o.level)i+="<li>";else for(n=a;n<o.level;n++)i+="<ul><li>";if(i+='<a href="#'+o.id+'">'+o.title+"</a>",r!==o.level&&r)for(n=o.level;r<n;n--)i+="</li></ul><li>";else i+="</li>",r||(i+="</ul>");a=o.level}return i},r=function(t){var e=c(t),n=t.$("."+e);n.length&&t.undoManager.transact(function(){n.html(o(t))})},v={hasHeaders:function(t){return 0<m(t).length},insertToc:function(t){var e=c(t),n=t.$("."+e);!function(t,e){return!e.length||0<t.dom.getParents(e[0],".mce-offscreen-selection").length}(t,n)?r(t):t.insertContent(function(t){var e=o(t);return'<div class="'+t.dom.encode(c(t))+'" contenteditable="false">'+e+"</div>"}(t))},updateToc:r},n=function(t){t.addCommand("mceInsertToc",function(){v.insertToc(t)}),t.addCommand("mceUpdateToc",function(){v.updateToc(t)})},g=function(t){var n=t.$,o=c(t);t.on("PreProcess",function(t){var e=n("."+o,t.node);e.length&&(e.removeAttr("contentEditable"),e.find("[contenteditable]").removeAttr("contentEditable"))}),t.on("SetContent",function(){var t=n("."+o);t.length&&(t.attr("contentEditable",!1),t.children(":first-child").attr("contentEditable",!0))})},h=function(t){t.ui.registry.addButton("toc",{icon:"toc",tooltip:"Table of contents",onAction:function(){return t.execCommand("mceInsertToc")},onSetup:e(t)}),t.ui.registry.addButton("tocupdate",{icon:"reload",tooltip:"Update",onAction:function(){return t.execCommand("mceUpdateToc")}}),t.ui.registry.addMenuItem("toc",{icon:"toc",text:"Table of contents",onAction:function(){return t.execCommand("mceInsertToc")},onSetup:e(t)}),t.ui.registry.addContextToolbar("toc",{items:"tocupdate",predicate:function(e){return function(t){return t&&e.dom.is(t,"."+c(e))&&e.getBody().contains(t)}}(t),scope:"node",position:"node"})};!function p(){t.add("toc",function(t){n(t),h(t),g(t)})}()}();
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/plugins/visualblocks/plugin.min.js b/app/static/vendors/tinymce/js/tinymce/plugins/visualblocks/plugin.min.js
deleted file mode 100644 (file)
index 3f8310a..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.3 (2019-12-04)
- */
-!function(){"use strict";function n(n,e){return function(o){o.setActive(e.get());function t(t){return o.setActive(t.state)}return n.on("VisualBlocks",t),function(){return n.off("VisualBlocks",t)}}}var e=function(t){function o(){return n}var n=t;return{get:o,set:function(t){n=t},clone:function(){return e(o())}}},t=tinymce.util.Tools.resolve("tinymce.PluginManager"),i=function(t,o){t.fire("VisualBlocks",{state:o})},u=function(t,o,n){t.dom.toggleClass(t.getBody(),"mce-visualblocks"),n.set(!n.get()),i(t,n.get())},c=function(t,o,n){t.addCommand("mceVisualBlocks",function(){u(t,o,n)})},s=function(t){return t.getParam("visualblocks_default_state",!1,"boolean")},l=function(o,t,n){o.on("PreviewFormats AfterPreviewFormats",function(t){n.get()&&o.dom.toggleClass(o.getBody(),"mce-visualblocks","afterpreviewformats"===t.type)}),o.on("init",function(){s(o)&&u(o,t,n)}),o.on("remove",function(){o.dom.removeClass(o.getBody(),"mce-visualblocks")})},r=function(t,o){t.ui.registry.addToggleButton("visualblocks",{icon:"visualblocks",tooltip:"Show blocks",onAction:function(){return t.execCommand("mceVisualBlocks")},onSetup:n(t,o)}),t.ui.registry.addToggleMenuItem("visualblocks",{text:"Show blocks",onAction:function(){return t.execCommand("mceVisualBlocks")},onSetup:n(t,o)})};!function o(){t.add("visualblocks",function(t,o){var n=e(!1);c(t,o,n),r(t,n),l(t,o,n)})}()}();
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/plugins/visualchars/plugin.min.js b/app/static/vendors/tinymce/js/tinymce/plugins/visualchars/plugin.min.js
deleted file mode 100644 (file)
index d10fbc5..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.3 (2019-12-04)
- */
-!function(r){"use strict";function n(){}function u(n){return function(){return n}}function e(){return l}var t,o=function(n){function e(){return t}var t=n;return{get:e,set:function(n){t=n},clone:function(){return o(e())}}},i=tinymce.util.Tools.resolve("tinymce.PluginManager"),c=function(n){return{isEnabled:function(){return n.get()}}},a=function(n,e){return n.fire("VisualChars",{state:e})},f=u(!1),s=u(!0),l=(t={fold:function(n,e){return n()},is:f,isSome:f,isNone:s,getOr:g,getOrThunk:m,getOrDie:function(n){throw new Error(n||"error: getOrDie called on none.")},getOrNull:u(null),getOrUndefined:u(undefined),or:g,orThunk:m,map:e,each:n,bind:e,exists:f,forall:s,filter:e,equals:d,equals_:d,toArray:function(){return[]},toString:u("none()")},Object.freeze&&Object.freeze(t),t);function d(n){return n.isNone()}function m(n){return n()}function g(n){return n}function N(e){return function(n){return function(n){if(null===n)return"null";var e=typeof n;return"object"==e&&(Array.prototype.isPrototypeOf(n)||n.constructor&&"Array"===n.constructor.name)?"array":"object"==e&&(String.prototype.isPrototypeOf(n)||n.constructor&&"String"===n.constructor.name)?"string":e}(n)===e}}function v(n,e){for(var t=0,r=n.length;t<r;t++){e(n[t],t)}}function h(n){return n.dom().nodeValue}function p(n,e,t){!function(n,e,t){if(!(L(t)||P(t)||R(t)))throw r.console.error("Invalid call to Attr.set. Key ",e,":: Value ",t,":: Element ",n),new Error("Attribute value was not simple");n.setAttribute(e,t+"")}(n.dom(),e,t)}function E(n,e){n.dom().removeAttribute(e)}function T(n,e){var t=function(n,e){var t=n.dom().getAttribute(e);return null===t?undefined:t}(n,e);return t===undefined||""===t?[]:t.split(" ")}function O(n){return n.dom().classList!==undefined}function y(n,e){return function(n,e,t){var r=T(n,e).concat([t]);return p(n,e,r.join(" ")),!0}(n,"class",e)}function b(n,e){return function(n,e,t){var r=function(n,e){for(var t=[],r=0,o=n.length;r<o;r++){var u=n[r];e(u,r)&&t.push(u)}return t}(T(n,e),function(n){return n!==t});return 0<r.length?p(n,e,r.join(" ")):E(n,e),!1}(n,"class",e)}function D(n){0===(O(n)?n.dom().classList:function(n){return T(n,"class")}(n)).length&&E(n,"class")}function C(n,e){var t,r="";for(t in n)r+=t;return new RegExp("["+r+"]",e?"g":"")}function A(n){var e,t="";for(e in n)t&&(t+=","),t+="span.mce-"+n[e];return t}function _(n){return"span"===n.nodeName.toLowerCase()&&n.classList.contains("mce-nbsp-wrap")}function w(u,n){var e=W.filterDescendants(F.fromDom(n),W.isMatch);v(e,function(n){var e=n.dom().parentNode;if(_(e))!function(n,e){O(n)?n.dom().classList.add(e):y(n,e)}(F.fromDom(e),H.nbspClass);else{for(var t=W.replaceWithSpans(h(n)),r=u.dom.create("div",null,t),o=void 0;o=r.lastChild;)u.dom.insertAfter(o,n.dom());u.dom.remove(n.dom())}})}function M(e,n){var t=e.dom.select(H.selector,n);v(t,function(n){_(n)?function(n,e){O(n)?n.dom().classList.remove(e):b(n,e);D(n)}(F.fromDom(n),H.nbspClass):e.dom.remove(n,!0)})}function S(t,r){return function(e){e.setActive(r.get());function n(n){return e.setActive(n.state)}return t.on("VisualChars",n),function(){return t.off("VisualChars",n)}}}var k,x=function(t){function n(){return o}function e(n){return n(t)}var r=u(t),o={fold:function(n,e){return e(t)},is:function(n){return t===n},isSome:s,isNone:f,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:n,orThunk:n,map:function(n){return x(n(t))},each:function(n){n(t)},bind:e,exists:e,forall:e,filter:function(n){return n(t)?o:l},toArray:function(){return[t]},toString:function(){return"some("+t+")"},equals:function(n){return n.is(t)},equals_:function(n,e){return n.fold(f,function(n){return e(t,n)})}};return o},I=function(n){return null===n||n===undefined?l:x(n)},L=N("string"),P=N("boolean"),B=N("function"),R=N("number"),V=Array.prototype.slice,U=(B(Array.from)&&Array.from,r.Node.ATTRIBUTE_NODE,r.Node.CDATA_SECTION_NODE,r.Node.COMMENT_NODE,r.Node.DOCUMENT_NODE,r.Node.DOCUMENT_TYPE_NODE,r.Node.DOCUMENT_FRAGMENT_NODE,r.Node.ELEMENT_NODE,r.Node.TEXT_NODE),j=(r.Node.PROCESSING_INSTRUCTION_NODE,r.Node.ENTITY_REFERENCE_NODE,r.Node.ENTITY_NODE,r.Node.NOTATION_NODE,"undefined"!=typeof r.window?r.window:Function("return this;")(),k=U,function(n){return function(n){return n.dom().nodeType}(n)===k}),q=function(n){if(null===n||n===undefined)throw new Error("Node cannot be null or undefined");return{dom:u(n)}},F={fromHtml:function(n,e){var t=(e||r.document).createElement("div");if(t.innerHTML=n,!t.hasChildNodes()||1<t.childNodes.length)throw r.console.error("HTML does not have a single root node",n),new Error("HTML must have a single root node");return q(t.childNodes[0])},fromTag:function(n,e){var t=(e||r.document).createElement(n);return q(t)},fromText:function(n,e){var t=(e||r.document).createTextNode(n);return q(t)},fromDom:q,fromPoint:function(n,e,t){var r=n.dom();return I(r.elementFromPoint(e,t)).map(q)}},G={"\xa0":"nbsp","\xad":"shy"},H={charMap:G,regExp:C(G),regExpGlobal:C(G,!0),selector:A(G),nbspClass:"mce-nbsp",charMapToRegExp:C,charMapToSelector:A},Y=function(n){return'<span data-mce-bogus="1" class="mce-'+H.charMap[n]+'">'+n+"</span>"},z=function(n,e){var t=[],r=function(n,e){for(var t=n.length,r=new Array(t),o=0;o<t;o++){var u=n[o];r[o]=e(u,o)}return r}(n.dom().childNodes,F.fromDom);return v(r,function(n){e(n)&&(t=t.concat([n])),t=t.concat(z(n,e))}),t},W={isMatch:function(n){return j(n)&&h(n)!==undefined&&H.regExp.test(h(n))},filterDescendants:z,findParentElm:function(n,e){for(;n.parentNode;){if(n.parentNode===e)return n;n=n.parentNode}},replaceWithSpans:function(n){return n.replace(H.regExpGlobal,Y)}},K=w,X=M,J=function(n){var e=n.getBody(),t=n.selection.getBookmark(),r=W.findParentElm(n.selection.getNode(),e);r=r!==undefined?r:e,M(n,r),w(n,r),n.selection.moveToBookmark(t)},Q=function(n,e){var t,r=n.getBody(),o=n.selection;e.set(!e.get()),a(n,e.get()),t=o.getBookmark(),!0===e.get()?K(n,r):X(n,r),o.moveToBookmark(t)},Z=function(n,e){n.addCommand("mceVisualChars",function(){Q(n,e)})},$=tinymce.util.Tools.resolve("tinymce.util.Delay"),nn=function(e,t){var r=$.debounce(function(){J(e)},300);!1!==e.settings.forced_root_block&&e.on("keydown",function(n){!0===t.get()&&(13===n.keyCode?J(e):r())})},en=function(n){return n.getParam("visualchars_default_state",!1)},tn=function(e,t){e.on("init",function(){var n=!en(e);t.set(n),Q(e,t)})};!function rn(){i.add("visualchars",function(n){var e=o(!1);return Z(n,e),function(n,e){n.ui.registry.addToggleButton("visualchars",{tooltip:"Show invisible characters",icon:"visualchars",onAction:function(){return n.execCommand("mceVisualChars")},onSetup:S(n,e)}),n.ui.registry.addToggleMenuItem("visualchars",{text:"Show invisible characters",onAction:function(){return n.execCommand("mceVisualChars")},onSetup:S(n,e)})}(n,e),nn(n,e),tn(n,e),c(e)})}()}(window);
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/plugins/wordcount/plugin.min.js b/app/static/vendors/tinymce/js/tinymce/plugins/wordcount/plugin.min.js
deleted file mode 100644 (file)
index 1698cd0..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.3 (2019-12-04)
- */
-!function(){"use strict";function t(){}function n(t){return function(){return t}}function r(t){return t}function e(){return U}var o,u=tinymce.util.Tools.resolve("tinymce.PluginManager"),i=n(!1),c=n(!0),a=function(){return(a=Object.assign||function(t){for(var n,e=1,r=arguments.length;e<r;e++)for(var o in n=arguments[e])Object.prototype.hasOwnProperty.call(n,o)&&(t[o]=n[o]);return t}).apply(this,arguments)},f="[-'\\.\u2018\u2019\u2024\ufe52\uff07\uff0e]",s="[:\xb7\xb7\u05f4\u2027\ufe13\ufe55\uff1a]",l="[\xb1+*/,;;\u0589\u060c\u060d\u066c\u07f8\u2044\ufe10\ufe14\ufe50\ufe54\uff0c\uff1b]",g="[0-9\u0660-\u0669\u066b\u06f0-\u06f9\u07c0-\u07c9\u0966-\u096f\u09e6-\u09ef\u0a66-\u0a6f\u0ae6-\u0aef\u0b66-\u0b6f\u0be6-\u0bef\u0c66-\u0c6f\u0ce6-\u0cef\u0d66-\u0d6f\u0e50-\u0e59\u0ed0-\u0ed9\u0f20-\u0f29\u1040-\u1049\u1090-\u1099\u17e0-\u17e9\u1810-\u1819\u1946-\u194f\u19d0-\u19d9\u1a80-\u1a89\u1a90-\u1a99\u1b50-\u1b59\u1bb0-\u1bb9\u1c40-\u1c49\u1c50-\u1c59\ua620-\ua629\ua8d0-\ua8d9\ua900-\ua909\ua9d0-\ua9d9\uaa50-\uaa59\uabf0-\uabf9]",p="\\r",d="\\n",h="[\x0B\f\x85\u2028\u2029]",y="[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065f\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0900-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0c01-\u0c03\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c82\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d02\u0d03\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d82\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f\u109a-\u109d\u135d-\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b6-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u192b\u1930-\u193b\u19b0-\u19c0\u19c8\u19c9\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f\u1b00-\u1b04\u1b34-\u1b44\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1baa\u1be6-\u1bf3\u1c24-\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf2\u1dc0-\u1de6\u1dfc-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua880\ua881\ua8b4-\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa7b\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe3-\uabea\uabec\uabed\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]",C="[\xad\u0600-\u0603\u06dd\u070f\u17b4\u17b5\u200e\u200f\u202a-\u202e\u2060-\u2064\u206a-\u206f\ufeff\ufff9-\ufffb]",v="[\u3031-\u3035\u309b\u309c\u30a0-\u30fa\u30fc-\u30ff\u31f0-\u31ff\u32d0-\u32fe\u3300-\u3357\uff66-\uff9d]",w="[=_\u203f\u2040\u2054\ufe33\ufe34\ufe4d-\ufe4f\uff3f\u2200-\u22ff<>]",m="[!-#%-*,-\\/:;?@\\[-\\]_{}\xa1\xab\xb7\xbb\xbf;\xb7\u055a-\u055f\u0589\u058a\u05be\u05c0\u05c3\u05c6\u05f3\u05f4\u0609\u060a\u060c\u060d\u061b\u061e\u061f\u066a-\u066d\u06d4\u0700-\u070d\u07f7-\u07f9\u0830-\u083e\u085e\u0964\u0965\u0970\u0df4\u0e4f\u0e5a\u0e5b\u0f04-\u0f12\u0f3a-\u0f3d\u0f85\u0fd0-\u0fd4\u0fd9\u0fda\u104a-\u104f\u10fb\u1361-\u1368\u1400\u166d\u166e\u169b\u169c\u16eb-\u16ed\u1735\u1736\u17d4-\u17d6\u17d8-\u17da\u1800-\u180a\u1944\u1945\u1a1e\u1a1f\u1aa0-\u1aa6\u1aa8-\u1aad\u1b5a-\u1b60\u1bfc-\u1bff\u1c3b-\u1c3f\u1c7e\u1c7f\u1cd3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205e\u207d\u207e\u208d\u208e\u3008\u3009\u2768-\u2775\u27c5\u27c6\u27e6-\u27ef\u2983-\u2998\u29d8-\u29db\u29fc\u29fd\u2cf9-\u2cfc\u2cfe\u2cff\u2d70\u2e00-\u2e2e\u2e30\u2e31\u3001-\u3003\u3008-\u3011\u3014-\u301f\u3030\u303d\u30a0\u30fb\ua4fe\ua4ff\ua60d-\ua60f\ua673\ua67e\ua6f2-\ua6f7\ua874-\ua877\ua8ce\ua8cf\ua8f8-\ua8fa\ua92e\ua92f\ua95f\ua9c1-\ua9cd\ua9de\ua9df\uaa5c-\uaa5f\uaade\uaadf\uabeb\ufd3e\ufd3f\ufe10-\ufe19\ufe30-\ufe52\ufe54-\ufe61\ufe63\ufe68\ufe6a\ufe6b\uff01-\uff03\uff05-\uff0a\uff0c-\uff0f\uff1a\uff1b\uff1f\uff20\uff3b-\uff3d\uff3f\uff5b\uff5d\uff5f-\uff65]",b=0,E=1,S=2,x=3,W=4,R=5,O=6,A=7,j=8,D=9,T=10,k=11,P=12,B=13,F=[new RegExp("[A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f3\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097f\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d\u0c58\u0c59\u0c60\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d60\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u10a0-\u10c5\u10d0-\u10fa\u10fc\u1100-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191c\u1a00-\u1a16\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bc0-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1ce9-\u1cec\u1cee-\u1cf1\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u24b6-\u24e9\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2d00-\u2d25\u2d30-\u2d65\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2e2f\u3005\u303b\u303c\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua697\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790\ua791\ua7a0-\ua7a9\ua7fa-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uffa0-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]"),new RegExp(f),new RegExp(s),new RegExp(l),new RegExp(g),new RegExp(p),new RegExp(d),new RegExp(h),new RegExp(y),new RegExp(C),new RegExp(v),new RegExp(w),new RegExp("@")],N=new RegExp("^"+m+"$"),U=(o={fold:function(t,n){return t()},is:i,isSome:i,isNone:c,getOr:M,getOrThunk:z,getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},getOrNull:n(null),getOrUndefined:n(undefined),or:M,orThunk:z,map:e,each:t,bind:e,exists:i,forall:c,filter:e,equals:_,equals_:_,toArray:function(){return[]},toString:n("none()")},Object.freeze&&Object.freeze(o),o);function _(t){return t.isNone()}function z(t){return t()}function M(t){return t}function q(t){for(var n=ot,e=rt.length,r=0;r<e;++r){var o=rt[r];if(o&&o.test(t)){n=r;break}}return n}function $(t){return function(t,n){for(var e=t.length,r=new Array(e),o=0;o<e;o++){var u=t[o];r[o]=n(u,o)}return r}(t,function(e){var r={};return function(t){if(r[t])return r[t];var n=e(t);return r[t]=n}}(q))}function I(t,n){var e=function(t,n){var e;for(e=n;e<t.length&&!ut.test(t[e]);e++);return e}(t,n+1);return"://"===t.slice(n+1,e).join("").substr(0,3)?e:n}function Z(t,n){for(var e,r=n.getBlockElements(),o=n.getShortEndedElements(),u=[],i="",c=new at(t,t);t=c.next();)3===t.nodeType?i+=t.data:(r[(e=t).nodeName]||o[e.nodeName])&&i.length&&(u.push(i),i="");return i.length&&u.push(i),u}function G(t){return t.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"_").length}function H(t,n){var e=Z(t,n).join("\n");return ct(e.split(""),r).length}function J(t,n){var e=Z(t,n).join("");return G(e)}function K(t,n){var e=Z(t,n).join("").replace(/\s/g,"");return G(e)}function L(t,n){return function(){return n(t.getBody(),t.schema)}}function Q(t,n){return function(){return n(t.selection.getRng().cloneContents(),t.schema)}}function V(t){return L(t,H)}function X(t,n){!function(t,n){t.fire("wordCountUpdate",{wordCount:{words:n.body.getWordCount(),characters:n.body.getCharacterCount(),charactersWithoutSpaces:n.body.getCharacterCountWithoutSpaces()}})}(t,n)}function Y(t,n){t.windowManager.open({title:"Word Count",body:{type:"panel",items:[{type:"table",header:["Count","Document","Selection"],cells:[["Words",String(n.body.getWordCount()),String(n.selection.getWordCount())],["Characters (no spaces)",String(n.body.getCharacterCountWithoutSpaces()),String(n.selection.getCharacterCountWithoutSpaces())],["Characters",String(n.body.getCharacterCount()),String(n.selection.getCharacterCount())]]}]},buttons:[{type:"cancel",name:"close",text:"Close",primary:!0}]})}var tt,nt=(tt="function",function(t){return function(t){if(null===t)return"null";var n=typeof t;return"object"==n&&(Array.prototype.isPrototypeOf(t)||t.constructor&&"Array"===t.constructor.name)?"array":"object"==n&&(String.prototype.isPrototypeOf(t)||t.constructor&&"String"===t.constructor.name)?"string":n}(t)===tt}),et=Array.prototype.slice,rt=(nt(Array.from)&&Array.from,F),ot=B,ut=/^\s+$/,it=N,ct=function(t,n,e){e=a(a({},{includeWhitespace:!1,includePunctuation:!1}),e);for(var r=[],o=[],u=0;u<t.length;u++){var i=n(t[u]);"\ufeff"!==i&&(r.push(t[u]),o.push(i))}return function(t,n,e,r){for(var o,u,i,c,a,f,s,l=[],g=[],p=0;p<e.length;++p)if(g.push(t[p]),a=c=void 0,f=(u=e)[i=p],s=u[i+1],!(i<0||i>u.length-1&&0!==i||f===b&&s===b||(a=u[i+2],f===b&&(s===S||s===E||s===P)&&a===b||(c=u[i-1],(f===S||f===E||s===P)&&s===b&&c===b||!(f!==W&&f!==b||s!==W&&s!==b)||(f===x||f===E)&&s===W&&c===W||f===W&&(s===x||s===E)&&a===W||f===j||f===D||c===j||c===D||s===j||s===D||f===R&&s===O||f!==A&&f!==R&&f!==O&&s!==A&&s!==R&&s!==O&&(f===T&&s===T||s===k&&(f===b||f===W||f===T||f===k)||f===k&&(s===b||s===W||s===T)||f===P))))){var d=n[p];if((r.includeWhitespace||!ut.test(d))&&(r.includePunctuation||!it.test(d))){var h=p-g.length+1,y=p+1,C=n.slice(h,y).join("");if("http"===(o=C)||"https"===o){var v=I(n,p),w=t.slice(y,v);Array.prototype.push.apply(g,w),p=v}l.push(g)}g=[]}return l}(r,o,$(o),e)},at=tinymce.util.Tools.resolve("tinymce.dom.TreeWalker"),ft=tinymce.util.Tools.resolve("tinymce.util.Delay");!function st(e){void 0===e&&(e=300),u.add("wordcount",function(t){var n=function(t){return{body:{getWordCount:V(t),getCharacterCount:L(t,J),getCharacterCountWithoutSpaces:L(t,K)},selection:{getWordCount:Q(t,H),getCharacterCount:Q(t,J),getCharacterCountWithoutSpaces:Q(t,K)},getCount:V(t)}}(t);return function(t,n){t.ui.registry.addButton("wordcount",{tooltip:"Word count",icon:"character-count",onAction:function(){return Y(t,n)}}),t.ui.registry.addMenuItem("wordcount",{text:"Word count",icon:"character-count",onAction:function(){return Y(t,n)}})}(t,n),function(t,n,e){var r=ft.debounce(function(){return X(t,n)},e);t.on("init",function(){X(t,n),ft.setEditorTimeout(t,function(){t.on("SetContent BeforeAddUndo Undo Redo keyup",r)},0)})}(t,n,e),n})}()}();
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/skins/content/dark/content.min.css b/app/static/vendors/tinymce/js/tinymce/skins/content/dark/content.min.css
deleted file mode 100644 (file)
index 764ae9a..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-body{background-color:#2f3742;color:#dfe0e4;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem}a{color:#4099ff}table{border-collapse:collapse}table td,table th{border:1px solid #6d737b;padding:.4rem}figure{display:table;margin:1rem auto}figure figcaption{color:#8a8f97;display:block;margin-top:.25rem;text-align:center}hr{border-color:#6d737b;border-style:solid;border-width:1px 0 0 0}code{background-color:#6d737b;border-radius:3px;padding:.1rem .2rem}td[data-mce-selected],th[data-mce-selected]{color:#333}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #6d737b;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #6d737b;margin-right:1.5rem;padding-right:1rem}
diff --git a/app/static/vendors/tinymce/js/tinymce/skins/content/default/content.min.css b/app/static/vendors/tinymce/js/tinymce/skins/content/default/content.min.css
deleted file mode 100644 (file)
index 81811bc..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem}table{border-collapse:collapse}table td,table th{border:1px solid #ccc;padding:.4rem}figure{display:table;margin:1rem auto}figure figcaption{color:#999;display:block;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}code{background-color:#e8e8e8;border-radius:3px;padding:.1rem .2rem}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem}
diff --git a/app/static/vendors/tinymce/js/tinymce/skins/content/document/content.min.css b/app/static/vendors/tinymce/js/tinymce/skins/content/document/content.min.css
deleted file mode 100644 (file)
index 8346c96..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-@media screen{html{background:#f4f4f4}}body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif}@media screen{body{background-color:#fff;box-shadow:0 0 4px rgba(0,0,0,.15);box-sizing:border-box;margin:1rem auto 0;max-width:820px;min-height:calc(100vh - 1rem);padding:4rem 6rem 6rem 6rem}}table{border-collapse:collapse}table td,table th{border:1px solid #ccc;padding:.4rem}figure figcaption{color:#999;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem}
diff --git a/app/static/vendors/tinymce/js/tinymce/skins/content/writer/content.min.css b/app/static/vendors/tinymce/js/tinymce/skins/content/writer/content.min.css
deleted file mode 100644 (file)
index 2983791..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem auto;max-width:900px}table{border-collapse:collapse}table td,table th{border:1px solid #ccc;padding:.4rem}figure{display:table;margin:1rem auto}figure figcaption{color:#999;display:block;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}code{background-color:#e8e8e8;border-radius:3px;padding:.1rem .2rem}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem}
diff --git a/app/static/vendors/tinymce/js/tinymce/skins/ui/oxide-dark/content.inline.min.css b/app/static/vendors/tinymce/js/tinymce/skins/ui/oxide-dark/content.inline.min.css
deleted file mode 100644 (file)
index 961196d..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-.mce-content-body .mce-item-anchor{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;cursor:default;display:inline-block;height:12px!important;padding:0 2px;-webkit-user-modify:read-only;-moz-user-modify:read-only;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all;width:8px!important}.mce-content-body .mce-item-anchor[data-mce-selected]{outline-offset:1px}.tox-comments-visible .tox-comment{background-color:#fff0b7}.tox-comments-visible .tox-comment--active{background-color:#ffe168}.tox-checklist>li:not(.tox-checklist--hidden){list-style:none;margin:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");background-size:100%;content:'';cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A")}[dir=rtl] .tox-checklist>li:not(.tox-checklist--hidden)::before{margin-left:0;margin-right:-1.5em}code[class*=language-],pre[class*=language-]{color:#000;background:0 0;text-shadow:0 1px #fff;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;background-color:currentcolor;position:absolute}.mce-content-body .mce-visual-caret-hidden{display:none}.mce-content-body [data-mce-caret]{left:-1000px;margin:0;padding:0;position:absolute;right:auto;top:0}.mce-content-body .mce-offscreen-selection{left:-9999999999px;max-width:1000000px;position:absolute}.mce-content-body [contentEditable=false]{cursor:default}.mce-content-body [contentEditable=true]{cursor:text}.tox-cursor-format-painter{cursor:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"),default}.mce-content-body figure.align-left{float:left}.mce-content-body figure.align-right{float:right}.mce-content-body figure.image.align-center{display:table;margin-left:auto;margin-right:auto}.mce-preview-object{border:1px solid gray;display:inline-block;line-height:0;margin:0 2px 0 2px;position:relative}.mce-preview-object .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-object{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;border:1px dashed #aaa}.mce-pagebreak{border:1px dashed #aaa;cursor:default;display:block;height:5px;margin-top:15px;page-break-before:always;width:100%}@media print{.mce-pagebreak{border:0}}.tiny-pageembed .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.tiny-pageembed[data-mce-selected="2"] .mce-shim{display:none}.tiny-pageembed{display:inline-block;position:relative}.tiny-pageembed--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{display:block;overflow:hidden;padding:0;position:relative;width:100%}.tiny-pageembed--16by9::before,.tiny-pageembed--1by1::before,.tiny-pageembed--21by9::before,.tiny-pageembed--4by3::before{content:"";display:block}.tiny-pageembed--21by9::before{padding-top:42.857143%}.tiny-pageembed--16by9::before{padding-top:56.25%}.tiny-pageembed--4by3::before{padding-top:75%}.tiny-pageembed--1by1::before{padding-top:100%}.tiny-pageembed--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 iframe{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.mce-content-body div.mce-resizehandle{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;height:10px;position:absolute;width:10px;z-index:10000}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-clonedresizable{opacity:.5;outline:1px dashed #000;position:absolute;z-index:10000}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10001}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-content-body img[data-mce-selected],.mce-content-body table[data-mce-selected]{outline:3px solid #b4d7ff}.mce-content-body hr[data-mce-selected]{outline:3px solid #b4d7ff;outline-offset:1px}.mce-content-body [contentEditable=false] [contentEditable=true]:focus{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false] [contentEditable=true]:hover{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false][data-mce-selected]{cursor:not-allowed;outline:3px solid #b4d7ff}.mce-content-body.mce-content-readonly [contentEditable=true]:focus,.mce-content-body.mce-content-readonly [contentEditable=true]:hover{outline:0}.mce-content-body [data-mce-selected=inline-boundary]{background-color:#b4d7ff}.mce-content-body .mce-edit-focus{outline:3px solid #b4d7ff}.mce-content-body td[data-mce-selected],.mce-content-body th[data-mce-selected]{background-color:#b4d7ff!important}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mce-content-body img::-moz-selection{background:0 0}.mce-content-body img::selection{background:0 0}.ephox-snooker-resizer-bar{background-color:#b4d7ff;opacity:0}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:1}.mce-spellchecker-word{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default;height:2rem}.mce-spellchecker-grammar{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-item-table,.mce-item-table caption,.mce-item-table td,.mce-item-table th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{background-repeat:no-repeat;border:1px dashed #bbb;margin-left:3px;padding-top:10px}.mce-visualblocks p{background-image:url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}.mce-visualblocks h1{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}.mce-visualblocks h2{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}.mce-visualblocks h3{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}.mce-visualblocks h4{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}.mce-visualblocks h5{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}.mce-visualblocks h6{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}.mce-visualblocks div:not([data-mce-bogus]){background-image:url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}.mce-visualblocks section{background-image:url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}.mce-visualblocks article{background-image:url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}.mce-visualblocks blockquote{background-image:url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}.mce-visualblocks address{background-image:url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}.mce-visualblocks pre{background-image:url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}.mce-visualblocks figure{background-image:url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}.mce-visualblocks figcaption{border:1px dashed #bbb}.mce-visualblocks hgroup{background-image:url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}.mce-visualblocks aside{background-image:url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}.mce-visualblocks ul{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)}.mce-visualblocks ol{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==)}.mce-visualblocks dl{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==)}.mce-visualblocks:not([dir=rtl]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.mce-visualblocks:not([dir=rtl]) h1,.mce-visualblocks:not([dir=rtl]) h2,.mce-visualblocks:not([dir=rtl]) h3,.mce-visualblocks:not([dir=rtl]) h4,.mce-visualblocks:not([dir=rtl]) h5,.mce-visualblocks:not([dir=rtl]) h6,.mce-visualblocks:not([dir=rtl]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.mce-visualblocks[dir=rtl] h1,.mce-visualblocks[dir=rtl] h2,.mce-visualblocks[dir=rtl] h3,.mce-visualblocks[dir=rtl] h4,.mce-visualblocks[dir=rtl] h5,.mce-visualblocks[dir=rtl] h6,.mce-visualblocks[dir=rtl] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{background-position-x:right;margin-right:3px}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'}
diff --git a/app/static/vendors/tinymce/js/tinymce/skins/ui/oxide-dark/content.min.css b/app/static/vendors/tinymce/js/tinymce/skins/ui/oxide-dark/content.min.css
deleted file mode 100644 (file)
index 019c112..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-.mce-content-body .mce-item-anchor{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%20fill%3D%22%23cccccc%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;cursor:default;display:inline-block;height:12px!important;padding:0 2px;-webkit-user-modify:read-only;-moz-user-modify:read-only;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all;width:8px!important}.mce-content-body .mce-item-anchor[data-mce-selected]{outline-offset:1px}.tox-comments-visible .tox-comment{background-color:#fff0b7}.tox-comments-visible .tox-comment--active{background-color:#ffe168}.tox-checklist>li:not(.tox-checklist--hidden){list-style:none;margin:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%236d737b%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");background-size:100%;content:'';cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A")}[dir=rtl] .tox-checklist>li:not(.tox-checklist--hidden)::before{margin-left:0;margin-right:-1.5em}code[class*=language-],pre[class*=language-]{color:#f8f8f2;background:0 0;text-shadow:0 1px rgba(0,0,0,.3);font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;border-radius:.3em}:not(pre)>code[class*=language-],pre[class*=language-]{background:#282a36}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#6272a4}.token.punctuation{color:#f8f8f2}.namespace{opacity:.7}.token.constant,.token.deleted,.token.property,.token.symbol,.token.tag{color:#ff79c6}.token.boolean,.token.number{color:#bd93f9}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#50fa7b}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url,.token.variable{color:#f8f8f2}.token.atrule,.token.attr-value,.token.class-name,.token.function{color:#f1fa8c}.token.keyword{color:#8be9fd}.token.important,.token.regex{color:#ffb86c}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;background-color:currentcolor;position:absolute}.mce-content-body .mce-visual-caret-hidden{display:none}.mce-content-body [data-mce-caret]{left:-1000px;margin:0;padding:0;position:absolute;right:auto;top:0}.mce-content-body .mce-offscreen-selection{left:-9999999999px;max-width:1000000px;position:absolute}.mce-content-body [contentEditable=false]{cursor:default}.mce-content-body [contentEditable=true]{cursor:text}.tox-cursor-format-painter{cursor:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"),default}.mce-content-body figure.align-left{float:left}.mce-content-body figure.align-right{float:right}.mce-content-body figure.image.align-center{display:table;margin-left:auto;margin-right:auto}.mce-preview-object{border:1px solid gray;display:inline-block;line-height:0;margin:0 2px 0 2px;position:relative}.mce-preview-object .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-object{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%20fill%3D%22%23cccccc%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;border:1px dashed #aaa}.mce-pagebreak{border:1px dashed #aaa;cursor:default;display:block;height:5px;margin-top:15px;page-break-before:always;width:100%}@media print{.mce-pagebreak{border:0}}.tiny-pageembed .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.tiny-pageembed[data-mce-selected="2"] .mce-shim{display:none}.tiny-pageembed{display:inline-block;position:relative}.tiny-pageembed--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{display:block;overflow:hidden;padding:0;position:relative;width:100%}.tiny-pageembed--16by9::before,.tiny-pageembed--1by1::before,.tiny-pageembed--21by9::before,.tiny-pageembed--4by3::before{content:"";display:block}.tiny-pageembed--21by9::before{padding-top:42.857143%}.tiny-pageembed--16by9::before{padding-top:56.25%}.tiny-pageembed--4by3::before{padding-top:75%}.tiny-pageembed--1by1::before{padding-top:100%}.tiny-pageembed--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 iframe{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.mce-content-body div.mce-resizehandle{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;height:10px;position:absolute;width:10px;z-index:10000}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-clonedresizable{opacity:.5;outline:1px dashed #000;position:absolute;z-index:10000}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10001}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-content-body img[data-mce-selected],.mce-content-body table[data-mce-selected]{outline:3px solid #4099ff}.mce-content-body hr[data-mce-selected]{outline:3px solid #4099ff;outline-offset:1px}.mce-content-body [contentEditable=false] [contentEditable=true]:focus{outline:3px solid #4099ff}.mce-content-body [contentEditable=false] [contentEditable=true]:hover{outline:3px solid #4099ff}.mce-content-body [contentEditable=false][data-mce-selected]{cursor:not-allowed;outline:3px solid #4099ff}.mce-content-body.mce-content-readonly [contentEditable=true]:focus,.mce-content-body.mce-content-readonly [contentEditable=true]:hover{outline:0}.mce-content-body [data-mce-selected=inline-boundary]{background-color:#4099ff}.mce-content-body .mce-edit-focus{outline:3px solid #4099ff}.mce-content-body td[data-mce-selected],.mce-content-body th[data-mce-selected]{background-color:#b4d7ff!important}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mce-content-body img::-moz-selection{background:0 0}.mce-content-body img::selection{background:0 0}.ephox-snooker-resizer-bar{background-color:#4099ff;opacity:0}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:1}.mce-spellchecker-word{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default;height:2rem}.mce-spellchecker-grammar{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-item-table,.mce-item-table caption,.mce-item-table td,.mce-item-table th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{background-repeat:no-repeat;border:1px dashed #bbb;margin-left:3px;padding-top:10px}.mce-visualblocks p{background-image:url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}.mce-visualblocks h1{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}.mce-visualblocks h2{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}.mce-visualblocks h3{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}.mce-visualblocks h4{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}.mce-visualblocks h5{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}.mce-visualblocks h6{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}.mce-visualblocks div:not([data-mce-bogus]){background-image:url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}.mce-visualblocks section{background-image:url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}.mce-visualblocks article{background-image:url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}.mce-visualblocks blockquote{background-image:url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}.mce-visualblocks address{background-image:url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}.mce-visualblocks pre{background-image:url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}.mce-visualblocks figure{background-image:url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}.mce-visualblocks figcaption{border:1px dashed #bbb}.mce-visualblocks hgroup{background-image:url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}.mce-visualblocks aside{background-image:url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}.mce-visualblocks ul{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)}.mce-visualblocks ol{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==)}.mce-visualblocks dl{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==)}.mce-visualblocks:not([dir=rtl]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.mce-visualblocks:not([dir=rtl]) h1,.mce-visualblocks:not([dir=rtl]) h2,.mce-visualblocks:not([dir=rtl]) h3,.mce-visualblocks:not([dir=rtl]) h4,.mce-visualblocks:not([dir=rtl]) h5,.mce-visualblocks:not([dir=rtl]) h6,.mce-visualblocks:not([dir=rtl]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.mce-visualblocks[dir=rtl] h1,.mce-visualblocks[dir=rtl] h2,.mce-visualblocks[dir=rtl] h3,.mce-visualblocks[dir=rtl] h4,.mce-visualblocks[dir=rtl] h5,.mce-visualblocks[dir=rtl] h6,.mce-visualblocks[dir=rtl] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{background-position-x:right;margin-right:3px}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'}body{font-family:sans-serif}table{border-collapse:collapse}
diff --git a/app/static/vendors/tinymce/js/tinymce/skins/ui/oxide-dark/content.mobile.min.css b/app/static/vendors/tinymce/js/tinymce/skins/ui/oxide-dark/content.mobile.min.css
deleted file mode 100644 (file)
index 35f7dc0..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection{background-color:green;display:inline-block;opacity:.5;position:absolute}body{-webkit-text-size-adjust:none}body img{max-width:96vw}body table img{max-width:95%}body{font-family:sans-serif}table{border-collapse:collapse}
diff --git a/app/static/vendors/tinymce/js/tinymce/skins/ui/oxide-dark/fonts/tinymce-mobile.woff b/app/static/vendors/tinymce/js/tinymce/skins/ui/oxide-dark/fonts/tinymce-mobile.woff
deleted file mode 100644 (file)
index 1e3be03..0000000
Binary files a/app/static/vendors/tinymce/js/tinymce/skins/ui/oxide-dark/fonts/tinymce-mobile.woff and /dev/null differ
diff --git a/app/static/vendors/tinymce/js/tinymce/skins/ui/oxide-dark/skin.min.css b/app/static/vendors/tinymce/js/tinymce/skins/ui/oxide-dark/skin.min.css
deleted file mode 100644 (file)
index bcd9b65..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-.tox{box-sizing:content-box;color:#2a3746;cursor:auto;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-style:normal;font-weight:400;line-height:normal;-webkit-tap-highlight-color:transparent;text-decoration:none;text-shadow:none;text-transform:none;vertical-align:initial;white-space:normal}.tox :not(svg){box-sizing:inherit;color:inherit;cursor:inherit;direction:inherit;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;line-height:inherit;-webkit-tap-highlight-color:inherit;text-align:inherit;text-decoration:inherit;text-shadow:inherit;text-transform:inherit;vertical-align:inherit;white-space:inherit}.tox :not(svg){background:0 0;border:0;float:none;height:auto;margin:0;max-width:none;outline:0;padding:0;position:static;width:auto}.tox:not([dir=rtl]){direction:ltr;text-align:left}.tox[dir=rtl]{direction:rtl;text-align:right}.tox-tinymce{border:1px solid #000;border-radius:0;box-shadow:none;box-sizing:border-box;display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;overflow:hidden;position:relative;visibility:inherit!important}.tox-tinymce-inline{border:none;box-shadow:none}.tox-tinymce-inline .tox-editor-header{border:1px solid #000;border-bottom:0;border-radius:0;box-shadow:none}.tox-tinymce-aux{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;z-index:1300}.tox-tinymce :focus,.tox-tinymce-aux :focus{outline:0}button::-moz-focus-inner{border:0}.tox .accessibility-issue__header{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description{align-items:stretch;border:1px solid #000;border-radius:3px;display:flex;justify-content:space-between}.tox .accessibility-issue__description>div{padding-bottom:4px}.tox .accessibility-issue__description>div>div{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description>:last-child:not(:only-child){border-color:#000;border-style:solid}.tox .accessibility-issue__repair{margin-top:16px}.tox .accessibility-issue--info .accessibility-issue__description{background-color:rgba(32,122,183,.5);border-color:#207ab7;color:#fff}.tox .accessibility-issue--info .accessibility-issue__description>:last-child{border-color:#207ab7}.tox .accessibility-issue--info h2{color:#fff}.tox .accessibility-issue--info .tox-icon svg{fill:#fff}.tox .accessibility-issue--info a .tox-icon{color:#fff}.tox .accessibility-issue--warn .accessibility-issue__description{background-color:rgba(255,165,0,.5);border-color:rgba(255,165,0,.8);color:#fff}.tox .accessibility-issue--warn .accessibility-issue__description>:last-child{border-color:rgba(255,165,0,.8)}.tox .accessibility-issue--warn h2{color:#fff}.tox .accessibility-issue--warn .tox-icon svg{fill:#fff}.tox .accessibility-issue--warn a .tox-icon{color:#fff}.tox .accessibility-issue--error .accessibility-issue__description{background-color:rgba(204,0,0,.5);border-color:rgba(204,0,0,.8);color:#fff}.tox .accessibility-issue--error .accessibility-issue__description>:last-child{border-color:rgba(204,0,0,.8)}.tox .accessibility-issue--error h2{color:#fff}.tox .accessibility-issue--error .tox-icon svg{fill:#fff}.tox .accessibility-issue--error a .tox-icon{color:#fff}.tox .accessibility-issue--success .accessibility-issue__description{background-color:rgba(120,171,70,.5);border-color:rgba(120,171,70,.8);color:#fff}.tox .accessibility-issue--success .accessibility-issue__description>:last-child{border-color:rgba(120,171,70,.8)}.tox .accessibility-issue--success h2{color:#fff}.tox .accessibility-issue--success .tox-icon svg{fill:#fff}.tox .accessibility-issue--success a .tox-icon{color:#fff}.tox .tox-dialog__body-content .accessibility-issue__header h1,.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2{margin-top:0}.tox:not([dir=rtl]) .accessibility-issue__header .tox-button{margin-left:4px}.tox:not([dir=rtl]) .accessibility-issue__header>:nth-last-child(2){margin-left:auto}.tox:not([dir=rtl]) .accessibility-issue__description{padding:4px 4px 4px 8px}.tox:not([dir=rtl]) .accessibility-issue__description>:last-child{border-left-width:1px;padding-left:4px}.tox[dir=rtl] .accessibility-issue__header .tox-button{margin-right:4px}.tox[dir=rtl] .accessibility-issue__header>:nth-last-child(2){margin-right:auto}.tox[dir=rtl] .accessibility-issue__description{padding:4px 8px 4px 4px}.tox[dir=rtl] .accessibility-issue__description>:last-child{border-right-width:1px;padding-right:4px}.tox .tox-anchorbar{display:flex;flex:0 0 auto}.tox .tox-bar{display:flex;flex:0 0 auto}.tox .tox-button{background-color:#207ab7;background-image:none;background-position:none;background-repeat:none;border-color:#207ab7;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:14px;font-weight:700;letter-spacing:1;line-height:24px;margin:0;outline:0;padding:4px 16px;text-align:center;text-decoration:none;text-transform:capitalize;white-space:nowrap}.tox .tox-button[disabled]{background-color:#207ab7;background-image:none;border-color:#207ab7;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-button:focus:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:hover:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:active:not(:disabled){background-color:#185d8c;background-image:none;border-color:#185d8c;box-shadow:none;color:#fff}.tox .tox-button--secondary{background-color:#3d546f;background-image:none;background-position:none;background-repeat:none;border-color:#3d546f;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;color:#fff;outline:0;padding:4px 16px;text-decoration:none;text-transform:capitalize}.tox .tox-button--secondary[disabled]{background-color:#3d546f;background-image:none;border-color:#3d546f;box-shadow:none;color:rgba(255,255,255,.5)}.tox .tox-button--secondary:focus:not(:disabled){background-color:#34485f;background-image:none;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--secondary:hover:not(:disabled){background-color:#34485f;background-image:none;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--secondary:active:not(:disabled){background-color:#2b3b4e;background-image:none;border-color:#2b3b4e;box-shadow:none;color:#fff}.tox .tox-button--icon,.tox .tox-button.tox-button--icon,.tox .tox-button.tox-button--secondary.tox-button--icon{padding:4px}.tox .tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg{display:block;fill:currentColor}.tox .tox-button-link{background:0;border:none;box-sizing:border-box;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;white-space:nowrap}.tox .tox-button-link--sm{font-size:14px}.tox .tox-button--naked{background-color:transparent;border-color:transparent;box-shadow:unset;color:#fff}.tox .tox-button--naked[disabled]{background-color:#3d546f;border-color:#3d546f;box-shadow:none;color:rgba(255,255,255,.5)}.tox .tox-button--naked:hover:not(:disabled){background-color:#34485f;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--naked:focus:not(:disabled){background-color:#34485f;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--naked:active:not(:disabled){background-color:#2b3b4e;border-color:#2b3b4e;box-shadow:none;color:#fff}.tox .tox-button--naked .tox-icon svg{fill:currentColor}.tox .tox-button--naked.tox-button--icon:hover:not(:disabled){color:#fff}.tox .tox-checkbox{align-items:center;border-radius:3px;cursor:pointer;display:flex;height:36px;min-width:36px}.tox .tox-checkbox__input{height:1px;left:-10000px;overflow:hidden;position:absolute;top:auto;width:1px}.tox .tox-checkbox__icons{align-items:center;border-radius:3px;box-shadow:0 0 0 2px transparent;box-sizing:content-box;display:flex;height:24px;justify-content:center;padding:calc(4px - 1px);width:24px}.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:block;fill:rgba(255,255,255,.2)}.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:none;fill:#207ab7}.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg{display:none;fill:#207ab7}.tox .tox-checkbox--disabled{color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg{fill:rgba(255,255,255,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{fill:rgba(255,255,255,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{fill:rgba(255,255,255,.5)}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__checked svg{display:block}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:block}.tox input.tox-checkbox__input:focus+.tox-checkbox__icons{border-radius:3px;box-shadow:inset 0 0 0 1px #207ab7;padding:calc(4px - 1px)}.tox:not([dir=rtl]) .tox-checkbox__label{margin-left:4px}.tox:not([dir=rtl]) .tox-bar .tox-checkbox{margin-left:4px}.tox[dir=rtl] .tox-checkbox__label{margin-right:4px}.tox[dir=rtl] .tox-bar .tox-checkbox{margin-right:4px}.tox .tox-collection--toolbar .tox-collection__group{display:flex;padding:0}.tox .tox-collection--grid .tox-collection__group{display:flex;flex-wrap:wrap;max-height:208px;overflow-x:hidden;overflow-y:auto;padding:0}.tox .tox-collection--list .tox-collection__group{border-bottom-width:0;border-color:#1a1a1a;border-left-width:0;border-right-width:0;border-style:solid;border-top-width:1px;padding:4px 0}.tox .tox-collection--list .tox-collection__group:first-child{border-top-width:0}.tox .tox-collection__group-heading{background-color:#333;color:#fff;cursor:default;font-size:12px;font-style:normal;font-weight:400;margin-bottom:4px;margin-top:-4px;padding:4px 8px;text-transform:none;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection__item{align-items:center;color:#fff;cursor:pointer;display:flex;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection--list .tox-collection__item{padding:4px 8px}.tox .tox-collection--toolbar .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--grid .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--list .tox-collection__item--enabled{background-color:inherit;color:contrast(inherit,#2a3746,#fff)}.tox .tox-collection--list .tox-collection__item--active{background-color:#4a5562}.tox .tox-collection--toolbar .tox-collection__item--enabled{background-color:#757d87;color:#fff}.tox .tox-collection--toolbar .tox-collection__item--active{background-color:#4a5562}.tox .tox-collection--grid .tox-collection__item--enabled{background-color:#757d87;color:#fff}.tox .tox-collection--grid .tox-collection__item--active{background-color:#4a5562}.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#fff}.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#fff}.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#fff}.tox .tox-collection__item--state-disabled{background-color:transparent;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-collection__item-icon{align-items:center;display:flex;height:24px;justify-content:center;width:24px}.tox .tox-collection__item-icon svg{fill:currentColor}.tox .tox-collection--toolbar-lg .tox-collection__item-icon{height:48px;width:48px}.tox .tox-collection__item-label{color:currentColor;display:inline-block;flex:1;-ms-flex-preferred-size:auto;font-size:14px;font-style:normal;font-weight:400;line-height:24px;text-transform:none;word-break:break-all}.tox .tox-collection__item-accessory{color:rgba(255,255,255,.5);display:inline-block;font-size:14px;height:24px;line-height:24px;text-transform:normal}.tox .tox-collection__item-caret{align-items:center;display:flex;min-height:24px}.tox .tox-collection__item-caret::after{content:'';font-size:0;min-height:inherit}.tox .tox-collection__item-caret svg{fill:#fff}.tox .tox-collection__item[role=menuitemcheckbox]:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg{display:none}.tox .tox-collection--horizontal{background-color:#2b3b4e;border:1px solid #1a1a1a;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:nowrap;margin-bottom:0;overflow-x:auto;padding:0}.tox .tox-collection--horizontal .tox-collection__group{align-items:center;display:flex;flex-wrap:nowrap;margin:0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item{height:34px;margin:2px 0 3px 0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item-label{white-space:nowrap}.tox .tox-collection--horizontal .tox-collection__item-caret{margin-left:4px}.tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-right:1px solid #000}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>:not(:first-child){margin-left:8px}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item-label:first-child{margin-left:4px}.tox:not([dir=rtl]) .tox-collection__item-accessory{margin-left:16px;text-align:right}.tox:not([dir=rtl]) .tox-collection .tox-collection__item-caret{margin-left:16px}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-left:1px solid #000}.tox[dir=rtl] .tox-collection--list .tox-collection__item>:not(:first-child){margin-right:8px}.tox[dir=rtl] .tox-collection--list .tox-collection__item-label:first-child{margin-right:4px}.tox[dir=rtl] .tox-collection__item-icon-rtl .tox-collection__item-icon svg{transform:rotateY(180deg)}.tox[dir=rtl] .tox-collection__item-accessory{margin-right:16px;text-align:left}.tox[dir=rtl] .tox-collection .tox-collection__item-caret{margin-right:16px;transform:rotateY(180deg)}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__item-caret{margin-right:4px}.tox .tox-color-picker-container{display:flex;flex-direction:row;height:225px;margin:0}.tox .tox-sv-palette{box-sizing:border-box;display:flex;height:100%}.tox .tox-sv-palette-spectrum{height:100%}.tox .tox-sv-palette,.tox .tox-sv-palette-spectrum{width:225px}.tox .tox-sv-palette-thumb{background:0 0;border:1px solid #000;border-radius:50%;box-sizing:content-box;height:12px;position:absolute;width:12px}.tox .tox-sv-palette-inner-thumb{border:1px solid #fff;border-radius:50%;height:10px;position:absolute;width:10px}.tox .tox-hue-slider{box-sizing:border-box;height:100%;width:25px}.tox .tox-hue-slider-spectrum{background:linear-gradient(to bottom,red,#ff0080,#f0f,#8000ff,#00f,#0080ff,#0ff,#00ff80,#0f0,#80ff00,#ff0,#ff8000,red);height:100%;width:100%}.tox .tox-hue-slider,.tox .tox-hue-slider-spectrum{width:20px}.tox .tox-hue-slider-thumb{background:#fff;border:1px solid #000;box-sizing:content-box;height:4px;width:100%}.tox .tox-rgb-form{display:flex;flex-direction:column;justify-content:space-between}.tox .tox-rgb-form div{align-items:center;display:flex;justify-content:space-between;margin-bottom:5px;width:inherit}.tox .tox-rgb-form input{width:6em}.tox .tox-rgb-form input.tox-invalid{border:1px solid red!important}.tox .tox-rgb-form .tox-rgba-preview{border:1px solid #000;flex-grow:2;margin-bottom:0}.tox:not([dir=rtl]) .tox-sv-palette{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider-thumb{margin-left:-1px}.tox:not([dir=rtl]) .tox-rgb-form label{margin-right:.5em}.tox[dir=rtl] .tox-sv-palette{margin-left:15px}.tox[dir=rtl] .tox-hue-slider{margin-left:15px}.tox[dir=rtl] .tox-hue-slider-thumb{margin-right:-1px}.tox[dir=rtl] .tox-rgb-form label{margin-left:.5em}.tox .tox-toolbar .tox-swatches,.tox .tox-toolbar__overflow .tox-swatches,.tox .tox-toolbar__primary .tox-swatches{margin:2px 0 3px 4px}.tox .tox-collection--list .tox-collection__group .tox-swatches-menu{border:0;margin:-4px 0}.tox .tox-swatches__row{display:flex}.tox .tox-swatch{height:30px;transition:transform .15s,box-shadow .15s;width:30px}.tox .tox-swatch:focus,.tox .tox-swatch:hover{box-shadow:0 0 0 1px rgba(127,127,127,.3) inset;transform:scale(.8)}.tox .tox-swatch--remove{align-items:center;display:flex;justify-content:center}.tox .tox-swatch--remove svg path{stroke:#e74c3c}.tox .tox-swatches__picker-btn{align-items:center;background-color:transparent;border:0;cursor:pointer;display:flex;height:30px;justify-content:center;outline:0;padding:0;width:30px}.tox .tox-swatches__picker-btn svg{height:24px;width:24px}.tox .tox-swatches__picker-btn:hover{background:#4a5562}.tox:not([dir=rtl]) .tox-swatches__picker-btn{margin-left:auto}.tox[dir=rtl] .tox-swatches__picker-btn{margin-right:auto}.tox .tox-comment-thread{background:#2b3b4e;position:relative}.tox .tox-comment-thread>:not(:first-child){margin-top:8px}.tox .tox-comment{background:#2b3b4e;border:1px solid #000;border-radius:3px;box-shadow:0 4px 8px 0 rgba(42,55,70,.1);padding:8px 8px 16px 8px;position:relative}.tox .tox-comment__header{align-items:center;color:#fff;display:flex;justify-content:space-between}.tox .tox-comment__date{color:rgba(255,255,255,.5);font-size:12px}.tox .tox-comment__body{color:#fff;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;margin-top:8px;position:relative;text-transform:initial}.tox .tox-comment__body textarea{resize:none;white-space:normal;width:100%}.tox .tox-comment__expander{padding-top:8px}.tox .tox-comment__expander p{color:rgba(255,255,255,.5);font-size:14px;font-style:normal}.tox .tox-comment__body p{margin:0}.tox .tox-comment__buttonspacing{padding-top:16px;text-align:center}.tox .tox-comment-thread__overlay::after{background:#2b3b4e;bottom:0;content:"";display:flex;left:0;opacity:.9;position:absolute;right:0;top:0;z-index:5}.tox .tox-comment__reply{display:flex;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end;margin-top:8px}.tox .tox-comment__reply>:first-child{margin-bottom:8px;width:100%}.tox .tox-comment__edit{display:flex;flex-wrap:wrap;justify-content:flex-end;margin-top:16px}.tox .tox-comment__gradient::after{background:linear-gradient(rgba(43,59,78,0),#2b3b4e);bottom:0;content:"";display:block;height:5em;margin-top:-40px;position:absolute;width:100%}.tox .tox-comment__overlay{background:#2b3b4e;bottom:0;display:flex;flex-direction:column;flex-grow:1;left:0;opacity:.9;position:absolute;right:0;text-align:center;top:0;z-index:5}.tox .tox-comment__loading-text{align-items:center;color:#fff;display:flex;flex-direction:column;position:relative}.tox .tox-comment__loading-text>div{padding-bottom:16px}.tox .tox-comment__overlaytext{bottom:0;flex-direction:column;font-size:14px;left:0;padding:1em;position:absolute;right:0;top:0;z-index:10}.tox .tox-comment__overlaytext p{background-color:#2b3b4e;box-shadow:0 0 8px 8px #2b3b4e;color:#fff;text-align:center}.tox .tox-comment__overlaytext div:nth-of-type(2){font-size:.8em}.tox .tox-comment__busy-spinner{align-items:center;background-color:#2b3b4e;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:20}.tox .tox-comment__scroll{display:flex;flex-direction:column;flex-shrink:1;overflow:auto}.tox .tox-conversations{margin:8px}.tox:not([dir=rtl]) .tox-comment__edit{margin-left:8px}.tox:not([dir=rtl]) .tox-comment__buttonspacing>:last-child,.tox:not([dir=rtl]) .tox-comment__edit>:last-child,.tox:not([dir=rtl]) .tox-comment__reply>:last-child{margin-left:8px}.tox[dir=rtl] .tox-comment__edit{margin-right:8px}.tox[dir=rtl] .tox-comment__buttonspacing>:last-child,.tox[dir=rtl] .tox-comment__edit>:last-child,.tox[dir=rtl] .tox-comment__reply>:last-child{margin-right:8px}.tox .tox-user{align-items:center;display:flex}.tox .tox-user__avatar svg{fill:rgba(255,255,255,.5)}.tox .tox-user__name{color:rgba(255,255,255,.5);font-size:12px;font-style:normal;font-weight:700;text-transform:uppercase}.tox:not([dir=rtl]) .tox-user__avatar svg{margin-right:8px}.tox:not([dir=rtl]) .tox-user__avatar+.tox-user__name{margin-left:8px}.tox[dir=rtl] .tox-user__avatar svg{margin-left:8px}.tox[dir=rtl] .tox-user__avatar+.tox-user__name{margin-right:8px}.tox .tox-dialog-wrap{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1100}.tox .tox-dialog-wrap__backdrop{background-color:rgba(34,47,62,.75);bottom:0;left:0;position:absolute;right:0;top:0;z-index:1}.tox .tox-dialog-wrap__backdrop--opaque{background-color:#222f3e}.tox .tox-dialog{background-color:#2b3b4e;border-color:#000;border-radius:3px;border-style:solid;border-width:1px;box-shadow:0 16px 16px -10px rgba(42,55,70,.15),0 0 40px 1px rgba(42,55,70,.15);display:flex;flex-direction:column;max-height:100%;max-width:480px;overflow:hidden;position:relative;width:95vw;z-index:2}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog{align-self:flex-start;margin:8px auto;width:calc(100vw - 16px)}}.tox .tox-dialog-inline{z-index:1100}.tox .tox-dialog__header{align-items:center;background-color:#2b3b4e;border-bottom:none;color:#fff;display:flex;font-size:16px;justify-content:space-between;padding:8px 16px 0 16px;position:relative}.tox .tox-dialog__header .tox-button{z-index:1}.tox .tox-dialog__draghandle{cursor:grab;height:100%;left:0;position:absolute;top:0;width:100%}.tox .tox-dialog__draghandle:active{cursor:grabbing}.tox .tox-dialog__dismiss{margin-left:auto}.tox .tox-dialog__title{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:20px;font-style:normal;font-weight:400;line-height:1.3;margin:0;text-transform:normal}.tox .tox-dialog__body{color:#fff;display:flex;flex:1;-ms-flex-preferred-size:auto;font-size:16px;font-style:normal;font-weight:400;line-height:1.3;min-width:0;text-align:left;text-transform:normal}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body{flex-direction:column}}.tox .tox-dialog__body-nav{align-items:flex-start;display:flex;flex-direction:column;padding:16px 16px}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body-nav{flex-direction:row;-webkit-overflow-scrolling:touch;overflow-x:auto;padding-bottom:0}}.tox .tox-dialog__body-nav-item{border-bottom:2px solid transparent;color:rgba(255,255,255,.5);display:inline-block;font-size:14px;line-height:1.3;margin-bottom:8px;text-decoration:none;white-space:nowrap}.tox .tox-dialog__body-nav-item:focus{background-color:rgba(32,122,183,.1)}.tox .tox-dialog__body-nav-item--active{border-bottom:2px solid #207ab7;color:#207ab7}.tox .tox-dialog__body-content{box-sizing:border-box;display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto;max-height:650px;overflow:auto;-webkit-overflow-scrolling:touch;padding:16px 16px}.tox .tox-dialog__body-content>*{margin-bottom:0;margin-top:16px}.tox .tox-dialog__body-content>:first-child{margin-top:0}.tox .tox-dialog__body-content>:last-child{margin-bottom:0}.tox .tox-dialog__body-content>:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog__body-content a{color:#207ab7;cursor:pointer;text-decoration:none}.tox .tox-dialog__body-content a:focus,.tox .tox-dialog__body-content a:hover{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content a:active{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content ul{display:block;list-style-type:disc;margin-bottom:16px;-webkit-margin-end:0;margin-inline-end:0;-webkit-margin-start:0;margin-inline-start:0;-webkit-padding-start:2.5rem;padding-inline-start:2.5rem}.tox .tox-dialog__body-content .tox-form__group h1{font-size:20px;font-weight:700;margin-bottom:16px;margin-top:2rem}.tox .tox-dialog__body-content .tox-form__group h2{font-size:16px;font-weight:700;margin-bottom:16px;margin-top:2rem}.tox .tox-dialog__body-content .tox-form__group p{margin-bottom:16px}.tox .tox-dialog__body-content .tox-form__group h1:first-child,.tox .tox-dialog__body-content .tox-form__group h2:first-child,.tox .tox-dialog__body-content .tox-form__group p:first-child{margin-top:0}.tox .tox-dialog__body-content .tox-form__group h1:last-child,.tox .tox-dialog__body-content .tox-form__group h2:last-child,.tox .tox-dialog__body-content .tox-form__group p:last-child{margin-bottom:0}.tox .tox-dialog__body-content .tox-form__group h1:only-child,.tox .tox-dialog__body-content .tox-form__group h2:only-child,.tox .tox-dialog__body-content .tox-form__group p:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog--width-lg{height:650px;max-width:1200px}.tox .tox-dialog--width-md{max-width:800px}.tox .tox-dialog--width-md .tox-dialog__body-content{overflow:auto}.tox .tox-dialog__body-content--centered{text-align:center}.tox .tox-dialog__footer{align-items:center;background-color:#2b3b4e;border-top:1px solid #000;display:flex;justify-content:space-between;padding:8px 16px}.tox .tox-dialog__footer-end,.tox .tox-dialog__footer-start{display:flex}.tox .tox-dialog__busy-spinner{align-items:center;background-color:rgba(34,47,62,.75);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:3}.tox .tox-dialog__table{border-collapse:collapse;width:100%}.tox .tox-dialog__table thead th{font-weight:700;padding-bottom:8px}.tox .tox-dialog__table tbody tr{border-bottom:1px solid #000}.tox .tox-dialog__table tbody tr:last-child{border-bottom:none}.tox .tox-dialog__table td{padding-bottom:8px;padding-top:8px}.tox .tox-dialog__popups{position:absolute;width:100%;z-index:1100}.tox .tox-dialog__body-iframe{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox .tox-dialog-dock-fadeout{opacity:0;visibility:hidden}.tox .tox-dialog-dock-fadein{opacity:1;visibility:visible}.tox .tox-dialog-dock-transition{transition:visibility 0s linear .3s,opacity .3s ease}.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein{transition-delay:0s}body.tox-dialog__disable-scroll{overflow:hidden}.tox.tox-platform-ie .tox-dialog-wrap{position:-ms-device-fixed}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav{margin-right:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child){margin-left:8px}}.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-end>*,.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-start>*{margin-left:8px}.tox[dir=rtl] .tox-dialog__body{text-align:right}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav{margin-left:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child){margin-right:8px}}.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-end>*,.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-start>*{margin-right:8px}.tox .tox-dropzone-container{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dropzone{align-items:center;background:#fff;border:2px dashed #000;box-sizing:border-box;display:flex;flex-direction:column;flex-grow:1;justify-content:center;min-height:100px;padding:10px}.tox .tox-dropzone p{color:rgba(255,255,255,.5);margin:0 0 16px 0}.tox .tox-edit-area{display:flex;flex:1;-ms-flex-preferred-size:auto;overflow:hidden;position:relative}.tox .tox-edit-area__iframe{background-color:#fff;border:0;box-sizing:border-box;flex:1;-ms-flex-preferred-size:auto;height:100%;position:absolute;width:100%}.tox.tox-inline-edit-area{border:1px dotted #000}.tox .tox-editor-container{display:flex;flex:1 1 auto;flex-direction:column;overflow:hidden}.tox .tox-editor-header{z-index:1}.tox-editor-dock-fadeout{opacity:0;visibility:hidden}.tox-editor-dock-fadein{opacity:1;visibility:visible}.tox-editor-dock-transition{transition:visibility 0s linear .25s,opacity .25s ease}.tox-editor-dock-transition.tox-editor-dock-fadein{transition-delay:0s}.tox .tox-control-wrap{flex:1;position:relative}.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid,.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown,.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid{display:none}.tox .tox-control-wrap svg{display:block}.tox .tox-control-wrap__status-icon-wrap{position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-control-wrap__status-icon-invalid svg{fill:#c00}.tox .tox-control-wrap__status-icon-unknown svg{fill:orange}.tox .tox-control-wrap__status-icon-valid svg{fill:green}.tox:not([dir=rtl]) .tox-control-wrap--status-invalid .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-unknown .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-valid .tox-textfield{padding-right:32px}.tox:not([dir=rtl]) .tox-control-wrap__status-icon-wrap{right:4px}.tox[dir=rtl] .tox-control-wrap--status-invalid .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-unknown .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-valid .tox-textfield{padding-left:32px}.tox[dir=rtl] .tox-control-wrap__status-icon-wrap{left:4px}.tox .tox-autocompleter{max-width:25em}.tox .tox-autocompleter .tox-menu{max-width:25em}.tox .tox-autocompleter .tox-autocompleter-highlight{font-weight:700}.tox .tox-color-input{display:flex}.tox .tox-color-input .tox-textfield{border-radius:3px 0 0 3px;display:flex}.tox .tox-color-input span{border-color:rgba(42,55,70,.2);border-radius:0 3px 3px 0;border-style:solid;border-width:1px 1px 1px 0;box-shadow:none;box-sizing:border-box;cursor:pointer;display:flex;width:35px}.tox .tox-color-input span:focus{border-color:#207ab7}.tox[dir=rtl] .tox-color-input .tox-textfield{border-radius:0 3px 3px 0}.tox[dir=rtl] .tox-color-input span{border-radius:3px 0 0 3px;border-width:1px 0 1px 1px}.tox .tox-label,.tox .tox-toolbar-label{color:rgba(255,255,255,.5);display:block;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;padding:0 8px 0 0;text-transform:normal;white-space:nowrap}.tox .tox-toolbar-label{padding:0 8px}.tox[dir=rtl] .tox-label{padding:0 0 0 8px}.tox .tox-form{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group{box-sizing:border-box;margin-bottom:4px}.tox .tox-form-group--maximize{flex:1}.tox .tox-form__group--error{color:#c00}.tox .tox-form__group--collection{display:flex}.tox .tox-form__grid{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between}.tox .tox-form__grid--2col>.tox-form__group{width:calc(50% - (8px / 2))}.tox .tox-form__grid--3col>.tox-form__group{width:calc(100% / 3 - (8px / 2))}.tox .tox-form__grid--4col>.tox-form__group{width:calc(25% - (8px / 2))}.tox .tox-form__controls-h-stack{align-items:center;display:flex}.tox .tox-form__group--inline{align-items:center;display:flex}.tox .tox-form__group--stretched{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-textarea{flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox:not([dir=rtl]) .tox-form__controls-h-stack>:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-form__controls-h-stack>:not(:first-child){margin-right:4px}.tox .tox-lock.tox-locked .tox-lock-icon__unlock,.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock{display:none}.tox .tox-selectfield select,.tox .tox-textarea,.tox .tox-textfield,.tox .tox-toolbar-textfield{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#2b3b4e;border-color:#000;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;outline:0;padding:5px 4.75px;resize:none;width:100%}.tox .tox-textarea[disabled],.tox .tox-textfield[disabled]{background-color:#222f3e;color:rgba(255,255,255,.85);cursor:not-allowed}.tox .tox-selectfield select:focus,.tox .tox-textarea:focus,.tox .tox-textfield:focus{border-color:#207ab7;box-shadow:none;outline:0}.tox .tox-toolbar-textfield{border-width:0;margin-bottom:3px;margin-top:2px;max-width:250px}.tox .tox-naked-btn{background-color:transparent;border:0;border-color:transparent;box-shadow:unset;color:#207ab7;cursor:pointer;display:block;margin:0;padding:0}.tox .tox-naked-btn svg{display:block;fill:#fff}.tox:not([dir=rtl]) .tox-toolbar-textfield+*{margin-left:4px}.tox[dir=rtl] .tox-toolbar-textfield+*{margin-right:4px}.tox .tox-selectfield{cursor:pointer;position:relative}.tox .tox-selectfield select[disabled]{background-color:#19232e;color:rgba(255,255,255,.85);cursor:not-allowed}.tox .tox-selectfield select::-ms-expand{display:none}.tox .tox-selectfield svg{pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.tox:not([dir=rtl]) .tox-selectfield select[size="0"],.tox:not([dir=rtl]) .tox-selectfield select[size="1"]{padding-right:24px}.tox:not([dir=rtl]) .tox-selectfield svg{right:8px}.tox[dir=rtl] .tox-selectfield select[size="0"],.tox[dir=rtl] .tox-selectfield select[size="1"]{padding-left:24px}.tox[dir=rtl] .tox-selectfield svg{left:8px}.tox .tox-textarea{-webkit-appearance:textarea;-moz-appearance:textarea;appearance:textarea;white-space:pre-wrap}.tox-fullscreen{border:0;height:100%;left:0;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;position:fixed;top:0;touch-action:pinch-zoom;width:100%}.tox-fullscreen .tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox-fullscreen .tox.tox-tinymce.tox-fullscreen{z-index:1200}.tox-fullscreen .tox.tox-tinymce-aux{z-index:1201}.tox .tox-image-tools{width:100%}.tox .tox-image-tools__toolbar{align-items:center;display:flex;justify-content:center}.tox .tox-image-tools__image{background-color:#666;height:380px;overflow:auto;position:relative;width:100%}.tox .tox-image-tools__image,.tox .tox-image-tools__image+.tox-image-tools__toolbar{margin-top:8px}.tox .tox-image-tools__image-bg{background:url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==)}.tox .tox-image-tools__toolbar>.tox-spacer{flex:1;-ms-flex-preferred-size:auto}.tox .tox-croprect-block{background:#000;opacity:.5;position:absolute;zoom:1}.tox .tox-croprect-handle{border:2px solid #fff;height:20px;left:0;position:absolute;top:0;width:20px}.tox .tox-croprect-handle-move{border:0;cursor:move;position:absolute}.tox .tox-croprect-handle-nw{border-width:2px 0 0 2px;cursor:nw-resize;left:100px;margin:-2px 0 0 -2px;top:100px}.tox .tox-croprect-handle-ne{border-width:2px 2px 0 0;cursor:ne-resize;left:200px;margin:-2px 0 0 -20px;top:100px}.tox .tox-croprect-handle-sw{border-width:0 0 2px 2px;cursor:sw-resize;left:100px;margin:-20px 2px 0 -2px;top:200px}.tox .tox-croprect-handle-se{border-width:0 2px 2px 0;cursor:se-resize;left:200px;margin:-20px 0 0 -20px;top:200px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-left:8px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-left:32px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-left:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-right:8px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-right:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-right:32px}.tox .tox-insert-table-picker{display:flex;flex-wrap:wrap;width:169px}.tox .tox-insert-table-picker>div{border-color:#000;border-style:solid;border-width:0 1px 1px 0;box-sizing:content-box;height:16px;width:16px}.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker{margin:-4px 0}.tox .tox-insert-table-picker .tox-insert-table-picker__selected{background-color:rgba(32,122,183,.5);border-color:rgba(32,122,183,.5)}.tox .tox-insert-table-picker__label{color:#fff;display:block;font-size:14px;padding:4px;text-align:center;width:100%}.tox:not([dir=rtl]) .tox-insert-table-picker>div:nth-child(10n){border-right:0}.tox[dir=rtl] .tox-insert-table-picker>div:nth-child(10n+1){border-right:0}.tox .tox-menu{background-color:#2b3b4e;border:1px solid #000;border-radius:3px;box-shadow:0 4px 8px 0 rgba(42,55,70,.1);display:inline-block;overflow:hidden;vertical-align:top;z-index:1150}.tox .tox-menu.tox-collection.tox-collection--list{padding:0}.tox .tox-menu.tox-collection.tox-collection--toolbar{padding:4px}.tox .tox-menu.tox-collection.tox-collection--grid{padding:4px}.tox .tox-menu__label blockquote,.tox .tox-menu__label code,.tox .tox-menu__label h1,.tox .tox-menu__label h2,.tox .tox-menu__label h3,.tox .tox-menu__label h4,.tox .tox-menu__label h5,.tox .tox-menu__label h6,.tox .tox-menu__label p{margin:0}.tox .tox-menubar{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23000000'/%3E%3C/svg%3E") left 0 top 0 #222f3e;background-color:#222f3e;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 4px 0 4px}.tox .tox-mbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#fff;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0 4px;text-transform:normal;width:auto}.tox .tox-mbtn[disabled]{background-color:none;border:0;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-mbtn:focus:not(:disabled){background:#4a5562;border:0;box-shadow:none;color:#fff}.tox .tox-mbtn--active{background:#757d87;border:0;box-shadow:none;color:#fff}.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active){background:#4a5562;border:0;box-shadow:none;color:#fff}.tox .tox-mbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-mbtn[disabled] .tox-mbtn__select-label{cursor:not-allowed}.tox .tox-mbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px;display:none}.tox .tox-notification{border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;display:-ms-grid;display:grid;font-size:14px;font-weight:400;-ms-grid-columns:minmax(40px,1fr) auto minmax(40px,1fr);grid-template-columns:minmax(40px,1fr) auto minmax(40px,1fr);margin-top:4px;opacity:0;padding:4px;transition:transform .1s ease-in,opacity 150ms ease-in}.tox .tox-notification p{font-size:14px;font-weight:400}.tox .tox-notification a{text-decoration:underline}.tox .tox-notification--in{opacity:1}.tox .tox-notification--success{background-color:#e4eeda;border-color:#d7e6c8;color:#fff}.tox .tox-notification--success p{color:#fff}.tox .tox-notification--success a{color:#547831}.tox .tox-notification--success svg{fill:#fff}.tox .tox-notification--error{background-color:#f8dede;border-color:#f2bfbf;color:#fff}.tox .tox-notification--error p{color:#fff}.tox .tox-notification--error a{color:#c00}.tox .tox-notification--error svg{fill:#fff}.tox .tox-notification--warn,.tox .tox-notification--warning{background-color:#fffaea;border-color:#ffe89d;color:#fff}.tox .tox-notification--warn p,.tox .tox-notification--warning p{color:#fff}.tox .tox-notification--warn a,.tox .tox-notification--warning a{color:#fff}.tox .tox-notification--warn svg,.tox .tox-notification--warning svg{fill:#fff}.tox .tox-notification--info{background-color:#d9edf7;border-color:#779ecb;color:#fff}.tox .tox-notification--info p{color:#fff}.tox .tox-notification--info a{color:#fff}.tox .tox-notification--info svg{fill:#fff}.tox .tox-notification__body{-ms-grid-row-align:center;align-self:center;color:#fff;font-size:14px;-ms-grid-column-span:1;grid-column-end:3;-ms-grid-column:2;grid-column-start:2;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;text-align:center;white-space:normal;word-break:break-all;word-break:break-word}.tox .tox-notification__body>*{margin:0}.tox .tox-notification__body>*+*{margin-top:1rem}.tox .tox-notification__icon{-ms-grid-row-align:center;align-self:center;-ms-grid-column-span:1;grid-column-end:2;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification__icon svg{display:block}.tox .tox-notification__dismiss{-ms-grid-row-align:start;align-self:start;-ms-grid-column-span:1;grid-column-end:4;-ms-grid-column:3;grid-column-start:3;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification .tox-progress-bar{-ms-grid-column-span:3;grid-column-end:4;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:3;-ms-grid-row:2;grid-row-start:2;-ms-grid-column-align:center;justify-self:center}.tox .tox-pop{display:inline-block;position:relative}.tox .tox-pop--resizing{transition:width .1s ease}.tox .tox-pop--resizing .tox-toolbar{flex-wrap:nowrap}.tox .tox-pop__dialog{background-color:#222f3e;border:1px solid #000;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);min-width:0;overflow:hidden}.tox .tox-pop__dialog>:not(.tox-toolbar){margin:4px 4px 4px 8px}.tox .tox-pop__dialog .tox-toolbar{background-color:transparent;margin-bottom:-1px}.tox .tox-pop::after,.tox .tox-pop::before{border-style:solid;content:'';display:block;height:0;position:absolute;width:0}.tox .tox-pop.tox-pop--bottom::after,.tox .tox-pop.tox-pop--bottom::before{left:50%;top:100%}.tox .tox-pop.tox-pop--bottom::after{border-color:#222f3e transparent transparent transparent;border-width:8px;margin-left:-8px;margin-top:-1px}.tox .tox-pop.tox-pop--bottom::before{border-color:#000 transparent transparent transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--top::after,.tox .tox-pop.tox-pop--top::before{left:50%;top:0;transform:translateY(-100%)}.tox .tox-pop.tox-pop--top::after{border-color:transparent transparent #222f3e transparent;border-width:8px;margin-left:-8px;margin-top:1px}.tox .tox-pop.tox-pop--top::before{border-color:transparent transparent #000 transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--left::after,.tox .tox-pop.tox-pop--left::before{left:0;top:calc(50% - 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--left::after{border-color:transparent #222f3e transparent transparent;border-width:8px;margin-left:-15px}.tox .tox-pop.tox-pop--left::before{border-color:transparent #000 transparent transparent;border-width:10px;margin-left:-19px}.tox .tox-pop.tox-pop--right::after,.tox .tox-pop.tox-pop--right::before{left:100%;top:calc(50% + 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--right::after{border-color:transparent transparent transparent #222f3e;border-width:8px;margin-left:-1px}.tox .tox-pop.tox-pop--right::before{border-color:transparent transparent transparent #000;border-width:10px;margin-left:-1px}.tox .tox-pop.tox-pop--align-left::after,.tox .tox-pop.tox-pop--align-left::before{left:20px}.tox .tox-pop.tox-pop--align-right::after,.tox .tox-pop.tox-pop--align-right::before{left:calc(100% - 20px)}.tox .tox-sidebar-wrap{display:flex;flex-direction:row;flex-grow:1;-ms-flex-preferred-size:0;min-height:0}.tox .tox-sidebar{background-color:#222f3e;display:flex;flex-direction:row;justify-content:flex-end}.tox .tox-sidebar__slider{display:flex;overflow:hidden}.tox .tox-sidebar__pane-container{display:flex}.tox .tox-sidebar__pane{display:flex}.tox .tox-sidebar--sliding-closed{opacity:0}.tox .tox-sidebar--sliding-open{opacity:1}.tox .tox-sidebar--sliding-growing,.tox .tox-sidebar--sliding-shrinking{transition:width .5s ease,opacity .5s ease}.tox .tox-selector{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;display:inline-block;height:10px;position:absolute;width:10px}.tox.tox-platform-touch .tox-selector{height:12px;width:12px}.tox .tox-slider{align-items:center;display:flex;flex:1;-ms-flex-preferred-size:auto;height:24px;justify-content:center;position:relative}.tox .tox-slider__rail{background-color:transparent;border:1px solid #000;border-radius:3px;height:10px;min-width:120px;width:100%}.tox .tox-slider__handle{background-color:#207ab7;border:2px solid #185d8c;border-radius:3px;box-shadow:none;height:24px;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);width:14px}.tox .tox-source-code{overflow:auto}.tox .tox-spinner{display:flex}.tox .tox-spinner>div{animation:tam-bouncing-dots 1.5s ease-in-out 0s infinite both;background-color:rgba(255,255,255,.5);border-radius:100%;height:8px;width:8px}.tox .tox-spinner>div:nth-child(1){animation-delay:-.32s}.tox .tox-spinner>div:nth-child(2){animation-delay:-.16s}@keyframes tam-bouncing-dots{0%,100%,80%{transform:scale(0)}40%{transform:scale(1)}}.tox:not([dir=rtl]) .tox-spinner>div:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-spinner>div:not(:first-child){margin-right:4px}.tox .tox-statusbar{align-items:center;background-color:#222f3e;border-top:1px solid #000;color:#fff;display:flex;flex:0 0 auto;font-size:12px;font-weight:400;height:18px;overflow:hidden;padding:0 8px;position:relative;text-transform:uppercase}.tox .tox-statusbar__text-container{display:flex;flex:1 1 auto;justify-content:flex-end;overflow:hidden}.tox .tox-statusbar__path{display:flex;flex:1 1 auto;margin-right:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tox .tox-statusbar__path>*{display:inline;white-space:nowrap}.tox .tox-statusbar__wordcount{flex:0 0 auto;margin-left:1ch}.tox .tox-statusbar a,.tox .tox-statusbar__path-item,.tox .tox-statusbar__wordcount{color:#fff;text-decoration:none}.tox .tox-statusbar a:focus,.tox .tox-statusbar a:hover,.tox .tox-statusbar__path-item:focus,.tox .tox-statusbar__path-item:hover,.tox .tox-statusbar__wordcount:focus,.tox .tox-statusbar__wordcount:hover{cursor:pointer;text-decoration:underline}.tox .tox-statusbar__resize-handle{align-items:flex-end;align-self:stretch;cursor:nwse-resize;display:flex;flex:0 0 auto;justify-content:flex-end;margin-left:auto;margin-right:-8px;padding-left:1ch}.tox .tox-statusbar__resize-handle svg{display:block;fill:#fff}.tox:not([dir=rtl]) .tox-statusbar__path>*{margin-right:4px}.tox:not([dir=rtl]) .tox-statusbar__branding{margin-left:1ch}.tox[dir=rtl] .tox-statusbar{flex-direction:row-reverse}.tox[dir=rtl] .tox-statusbar__path>*{margin-left:4px}.tox .tox-throbber{z-index:1400}.tox .tox-throbber__busy-spinner{align-items:center;background-color:rgba(34,47,62,.6);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0}.tox .tox-tbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#fff;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0;text-transform:normal;width:34px}.tox .tox-tbtn svg{display:block;fill:#fff}.tox .tox-tbtn.tox-tbtn-more{padding-left:5px;padding-right:5px;width:inherit}.tox .tox-tbtn:focus{background:#4a5562;border:0;box-shadow:none}.tox .tox-tbtn:hover{background:#4a5562;border:0;box-shadow:none;color:#fff}.tox .tox-tbtn:hover svg{fill:#fff}.tox .tox-tbtn:active{background:#757d87;border:0;box-shadow:none;color:#fff}.tox .tox-tbtn:active svg{fill:#fff}.tox .tox-tbtn--disabled,.tox .tox-tbtn--disabled:hover,.tox .tox-tbtn:disabled,.tox .tox-tbtn:disabled:hover{background:0 0;border:0;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-tbtn--disabled svg,.tox .tox-tbtn--disabled:hover svg,.tox .tox-tbtn:disabled svg,.tox .tox-tbtn:disabled:hover svg{fill:rgba(255,255,255,.5)}.tox .tox-tbtn--enabled,.tox .tox-tbtn--enabled:hover{background:#757d87;border:0;box-shadow:none;color:#fff}.tox .tox-tbtn--enabled:hover>*,.tox .tox-tbtn--enabled>*{transform:none}.tox .tox-tbtn--enabled svg,.tox .tox-tbtn--enabled:hover svg{fill:#fff}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled){color:#fff}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg{fill:#fff}.tox .tox-tbtn:active>*{transform:none}.tox .tox-tbtn--md{height:51px;width:51px}.tox .tox-tbtn--lg{flex-direction:column;height:68px;width:68px}.tox .tox-tbtn--return{-ms-grid-row-align:stretch;align-self:stretch;height:unset;width:16px}.tox .tox-tbtn--labeled{padding:0 4px;width:unset}.tox .tox-tbtn__vlabel{display:block;font-size:10px;font-weight:400;letter-spacing:-.025em;margin-bottom:4px;white-space:nowrap}.tox .tox-tbtn--select{margin:2px 0 3px 0;padding:0 4px;width:auto}.tox .tox-tbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-tbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-tbtn__select-chevron svg{fill:rgba(255,255,255,.5)}.tox .tox-tbtn--bespoke .tox-tbtn__select-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:7em}.tox .tox-split-button{border:0;border-radius:3px;box-sizing:border-box;display:flex;margin:2px 0 3px 0;overflow:hidden}.tox .tox-split-button:hover{box-shadow:0 0 0 1px #4a5562 inset}.tox .tox-split-button:focus{background:#4a5562;box-shadow:none;color:#fff}.tox .tox-split-button>*{border-radius:0}.tox .tox-split-button__chevron{width:16px}.tox .tox-split-button__chevron svg{fill:rgba(255,255,255,.5)}.tox .tox-split-button .tox-tbtn{margin:0}.tox.tox-platform-touch .tox-split-button .tox-tbtn:first-child{width:30px}.tox.tox-platform-touch .tox-split-button__chevron{width:20px}.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus,.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover,.tox .tox-split-button.tox-tbtn--disabled:focus,.tox .tox-split-button.tox-tbtn--disabled:hover{background:0 0;box-shadow:none;color:rgba(255,255,255,.5)}.tox .tox-toolbar-overlord{background-color:#222f3e}.tox .tox-toolbar,.tox .tox-toolbar__overflow,.tox .tox-toolbar__primary{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23000000'/%3E%3C/svg%3E") left 0 top 0 #222f3e;background-color:#222f3e;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 0}.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed{height:0;opacity:0;padding-bottom:0;padding-top:0;visibility:hidden}.tox .tox-toolbar__overflow--growing{transition:height .3s ease,opacity .2s linear .1s}.tox .tox-toolbar__overflow--shrinking{transition:opacity .3s ease,height .2s linear .1s,visibility 0s linear .3s}.tox .tox-toolbar--scrolling{flex-wrap:nowrap;overflow-x:auto}.tox .tox-pop .tox-toolbar{border-width:0}.tox .tox-toolbar--no-divider{background-image:none}.tox.tox-tinymce-aux .tox-toolbar__overflow{background-color:#222f3e;border:1px solid #000;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15)}.tox[dir=rtl] .tox-tbtn__icon-rtl svg{transform:rotateY(180deg)}.tox .tox-toolbar__group{align-items:center;display:flex;flex-wrap:wrap;margin:0 0;padding:0 4px 0 4px}.tox .tox-toolbar__group--pull-right{margin-left:auto}.tox .tox-toolbar--scrolling .tox-toolbar__group{flex-shrink:0;flex-wrap:nowrap}.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type){border-right:1px solid #000}.tox[dir=rtl] .tox-toolbar__group:not(:last-of-type){border-left:1px solid #000}.tox .tox-tooltip{display:inline-block;padding:8px;position:relative}.tox .tox-tooltip__body{background-color:#3d546f;border-radius:3px;box-shadow:0 2px 4px rgba(42,55,70,.3);color:rgba(255,255,255,.75);font-size:14px;font-style:normal;font-weight:400;padding:4px 8px;text-transform:normal}.tox .tox-tooltip__arrow{position:absolute}.tox .tox-tooltip--down .tox-tooltip__arrow{border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #3d546f;bottom:0;left:50%;position:absolute;transform:translateX(-50%)}.tox .tox-tooltip--up .tox-tooltip__arrow{border-bottom:8px solid #3d546f;border-left:8px solid transparent;border-right:8px solid transparent;left:50%;position:absolute;top:0;transform:translateX(-50%)}.tox .tox-tooltip--right .tox-tooltip__arrow{border-bottom:8px solid transparent;border-left:8px solid #3d546f;border-top:8px solid transparent;position:absolute;right:0;top:50%;transform:translateY(-50%)}.tox .tox-tooltip--left .tox-tooltip__arrow{border-bottom:8px solid transparent;border-right:8px solid #3d546f;border-top:8px solid transparent;left:0;position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-well{border:1px solid #000;border-radius:3px;padding:8px;width:100%}.tox .tox-well>:first-child{margin-top:0}.tox .tox-well>:last-child{margin-bottom:0}.tox .tox-well>:only-child{margin:0}.tox .tox-custom-editor{border:1px solid #000;border-radius:3px;display:flex;height:525px}.tox .tox-dialog-loading::before{background-color:rgba(0,0,0,.5);content:"";height:100%;position:absolute;width:100%;z-index:1000}.tox .tox-tab{cursor:pointer}.tox .tox-dialog__content-js{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-content .tox-collection{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-image-tools-edit-panel{height:60px}.tox .tox-image-tools__sidebar{height:60px}
diff --git a/app/static/vendors/tinymce/js/tinymce/skins/ui/oxide-dark/skin.mobile.min.css b/app/static/vendors/tinymce/js/tinymce/skins/ui/oxide-dark/skin.mobile.min.css
deleted file mode 100644 (file)
index 3a45cac..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-.tinymce-mobile-outer-container{all:initial;display:block}.tinymce-mobile-outer-container *{border:0;box-sizing:initial;cursor:inherit;float:none;line-height:1;margin:0;outline:0;padding:0;-webkit-tap-highlight-color:transparent;text-shadow:none;white-space:nowrap}.tinymce-mobile-icon-arrow-back::before{content:"\e5cd"}.tinymce-mobile-icon-image::before{content:"\e412"}.tinymce-mobile-icon-cancel-circle::before{content:"\e5c9"}.tinymce-mobile-icon-full-dot::before{content:"\e061"}.tinymce-mobile-icon-align-center::before{content:"\e234"}.tinymce-mobile-icon-align-left::before{content:"\e236"}.tinymce-mobile-icon-align-right::before{content:"\e237"}.tinymce-mobile-icon-bold::before{content:"\e238"}.tinymce-mobile-icon-italic::before{content:"\e23f"}.tinymce-mobile-icon-unordered-list::before{content:"\e241"}.tinymce-mobile-icon-ordered-list::before{content:"\e242"}.tinymce-mobile-icon-font-size::before{content:"\e245"}.tinymce-mobile-icon-underline::before{content:"\e249"}.tinymce-mobile-icon-link::before{content:"\e157"}.tinymce-mobile-icon-unlink::before{content:"\eca2"}.tinymce-mobile-icon-color::before{content:"\e891"}.tinymce-mobile-icon-previous::before{content:"\e314"}.tinymce-mobile-icon-next::before{content:"\e315"}.tinymce-mobile-icon-large-font::before,.tinymce-mobile-icon-style-formats::before{content:"\e264"}.tinymce-mobile-icon-undo::before{content:"\e166"}.tinymce-mobile-icon-redo::before{content:"\e15a"}.tinymce-mobile-icon-removeformat::before{content:"\e239"}.tinymce-mobile-icon-small-font::before{content:"\e906"}.tinymce-mobile-format-matches::after,.tinymce-mobile-icon-readonly-back::before{content:"\e5ca"}.tinymce-mobile-icon-small-heading::before{content:"small"}.tinymce-mobile-icon-large-heading::before{content:"large"}.tinymce-mobile-icon-large-heading::before,.tinymce-mobile-icon-small-heading::before{font-family:sans-serif;font-size:80%}.tinymce-mobile-mask-edit-icon::before{content:"\e254"}.tinymce-mobile-icon-back::before{content:"\e5c4"}.tinymce-mobile-icon-heading::before{content:"Headings";font-family:sans-serif;font-size:80%;font-weight:700}.tinymce-mobile-icon-h1::before{content:"H1";font-weight:700}.tinymce-mobile-icon-h2::before{content:"H2";font-weight:700}.tinymce-mobile-icon-h3::before{content:"H3";font-weight:700}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask{align-items:center;display:flex;justify-content:center;background:rgba(51,51,51,.5);height:100%;position:absolute;top:0;width:100%}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container{align-items:center;border-radius:50%;display:flex;flex-direction:column;font-family:sans-serif;font-size:1em;justify-content:space-between}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .mixin-menu-item{align-items:center;display:flex;justify-content:center;border-radius:50%;height:2.1em;width:2.1em}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section{align-items:center;display:flex;justify-content:center;flex-direction:column;font-size:1em}@media only screen and (min-device-width:700px){.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section{font-size:1.2em}}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon{align-items:center;display:flex;justify-content:center;border-radius:50%;height:2.1em;width:2.1em;background-color:#fff;color:#207ab7}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon::before{content:"\e900";font-family:tinymce-mobile,sans-serif}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section:not(.tinymce-mobile-mask-tap-icon-selected) .tinymce-mobile-mask-tap-icon{z-index:2}.tinymce-mobile-android-container.tinymce-mobile-android-maximized{background:#fff;border:none;bottom:0;display:flex;flex-direction:column;left:0;position:fixed;right:0;top:0}.tinymce-mobile-android-container:not(.tinymce-mobile-android-maximized){position:relative}.tinymce-mobile-android-container .tinymce-mobile-editor-socket{display:flex;flex-grow:1}.tinymce-mobile-android-container .tinymce-mobile-editor-socket iframe{display:flex!important;flex-grow:1;height:auto!important}.tinymce-mobile-android-scroll-reload{overflow:hidden}:not(.tinymce-mobile-readonly-mode)>.tinymce-mobile-android-selection-context-toolbar{margin-top:23px}.tinymce-mobile-toolstrip{background:#fff;display:flex;flex:0 0 auto;z-index:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar{align-items:center;background-color:#fff;border-bottom:1px solid #ccc;display:flex;flex:1;height:2.5em;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group{align-items:center;display:flex;height:100%;flex-shrink:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group>div{align-items:center;display:flex;height:100%;flex:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-exit-container{background:#f44336}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-toolbar-scrollable-group{flex-grow:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item{padding-left:.5em;padding-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button{align-items:center;display:flex;height:80%;margin-left:2px;margin-right:2px}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button.tinymce-mobile-toolbar-button-selected{background:#c8cbcf;color:#ccc}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:first-of-type,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:last-of-type{background:#207ab7;color:#eceff1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group{align-items:center;display:flex;height:100%;flex:1;padding-bottom:.4em;padding-top:.4em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog{display:flex;min-height:1.5em;overflow:hidden;padding-left:0;padding-right:0;position:relative;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain{display:flex;height:100%;transition:left cubic-bezier(.4,0,1,1) .15s;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen{display:flex;flex:0 0 auto;justify-content:space-between;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen input{font-family:Sans-serif}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container{display:flex;flex-grow:1;position:relative}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container .tinymce-mobile-input-container-x{-ms-grid-row-align:center;align-self:center;background:inherit;border:none;border-radius:50%;color:#888;font-size:.6em;font-weight:700;height:100%;padding-right:2px;position:absolute;right:0}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container.tinymce-mobile-input-container-empty .tinymce-mobile-input-container-x{display:none}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous{align-items:center;display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous::before{align-items:center;display:flex;font-weight:700;height:100%;padding-left:.5em;padding-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next.tinymce-mobile-toolbar-navigation-disabled::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous.tinymce-mobile-toolbar-navigation-disabled::before{visibility:hidden}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item{color:#ccc;font-size:10px;line-height:10px;margin:0 2px;padding-top:3px}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item.tinymce-mobile-dot-active{color:#c8cbcf}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-font::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-heading::before{margin-left:.5em;margin-right:.9em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-font::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-heading::before{margin-left:.9em;margin-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider{display:flex;flex:1;margin-left:0;margin-right:0;padding:.28em 0;position:relative}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container{align-items:center;display:flex;flex-grow:1;height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container .tinymce-mobile-slider-size-line{background:#ccc;display:flex;flex:1;height:.2em;margin-bottom:.3em;margin-top:.3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container{padding-left:2em;padding-right:2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container{align-items:center;display:flex;flex-grow:1;height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container .tinymce-mobile-slider-gradient{background:linear-gradient(to right,red 0,#feff00 17%,#0f0 33%,#00feff 50%,#00f 67%,#ff00fe 83%,red 100%);display:flex;flex:1;height:.2em;margin-bottom:.3em;margin-top:.3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-black{background:#000;height:.2em;margin-bottom:.3em;margin-top:.3em;width:1.2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-white{background:#fff;height:.2em;margin-bottom:.3em;margin-top:.3em;width:1.2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb{align-items:center;background-clip:padding-box;background-color:#455a64;border:.5em solid rgba(136,136,136,0);border-radius:3em;bottom:0;color:#fff;display:flex;height:.5em;justify-content:center;left:-10px;margin:auto;position:absolute;top:0;transition:border 120ms cubic-bezier(.39,.58,.57,1);width:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb.tinymce-mobile-thumb-active{border:.5em solid rgba(136,136,136,.39)}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group>div{align-items:center;display:flex;height:100%;flex:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper{flex-direction:column;justify-content:center}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item{align-items:center;display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item:not(.tinymce-mobile-serialised-dialog){height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-container{display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input{background:#fff;border:none;border-radius:0;color:#455a64;flex-grow:1;font-size:.85em;padding-bottom:.1em;padding-left:5px;padding-top:.1em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::-webkit-input-placeholder{color:#888}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::placeholder{color:#888}.tinymce-mobile-dropup{background:#fff;display:flex;overflow:hidden;width:100%}.tinymce-mobile-dropup.tinymce-mobile-dropup-shrinking{transition:height .3s ease-out}.tinymce-mobile-dropup.tinymce-mobile-dropup-growing{transition:height .3s ease-in}.tinymce-mobile-dropup.tinymce-mobile-dropup-closed{flex-grow:0}.tinymce-mobile-dropup.tinymce-mobile-dropup-open:not(.tinymce-mobile-dropup-growing){flex-grow:1}.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:200px}@media only screen and (orientation:landscape){.tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:200px}}@media only screen and (min-device-width :320px) and (max-device-width :568px) and (orientation :landscape){.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:150px}}.tinymce-mobile-styles-menu{font-family:sans-serif;outline:4px solid #000;overflow:hidden;position:relative;width:100%}.tinymce-mobile-styles-menu [role=menu]{display:flex;flex-direction:column;height:100%;position:absolute;width:100%}.tinymce-mobile-styles-menu [role=menu].transitioning{transition:transform .5s ease-in-out}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item{border-bottom:1px solid #ddd;color:#455a64;cursor:pointer;display:flex;padding:1em 1em;position:relative}.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser .tinymce-mobile-styles-collapse-icon::before{color:#455a64;content:"\e314";font-family:tinymce-mobile,sans-serif}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-styles-item-is-menu::after{color:#455a64;content:"\e315";font-family:tinymce-mobile,sans-serif;padding-left:1em;padding-right:1em;position:absolute;right:0}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-format-matches::after{font-family:tinymce-mobile,sans-serif;padding-left:1em;padding-right:1em;position:absolute;right:0}.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser,.tinymce-mobile-styles-menu .tinymce-mobile-styles-separator{align-items:center;background:#fff;border-top:#455a64;color:#455a64;display:flex;min-height:2.5em;padding-left:1em;padding-right:1em}.tinymce-mobile-styles-menu [data-transitioning-destination=before][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=before]{transform:translate(-100%)}.tinymce-mobile-styles-menu [data-transitioning-destination=current][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=current]{transform:translate(0)}.tinymce-mobile-styles-menu [data-transitioning-destination=after][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=after]{transform:translate(100%)}@font-face{font-family:tinymce-mobile;font-style:normal;font-weight:400;src:url(fonts/tinymce-mobile.woff?8x92w3) format('woff')}@media (min-device-width:700px){.tinymce-mobile-outer-container,.tinymce-mobile-outer-container input{font-size:25px}}@media (max-device-width:700px){.tinymce-mobile-outer-container,.tinymce-mobile-outer-container input{font-size:18px}}.tinymce-mobile-icon{font-family:tinymce-mobile,sans-serif}.mixin-flex-and-centre{align-items:center;display:flex;justify-content:center}.mixin-flex-bar{align-items:center;display:flex;height:100%}.tinymce-mobile-outer-container .tinymce-mobile-editor-socket iframe{background-color:#fff;width:100%}.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{background-color:#207ab7;border-radius:50%;bottom:1em;color:#fff;font-size:1em;height:2.1em;position:fixed;right:2em;width:2.1em;align-items:center;display:flex;justify-content:center}@media only screen and (min-device-width:700px){.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{font-size:1.2em}}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket{height:300px;overflow:hidden}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket iframe{height:100%}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-toolstrip{display:none}input[type=file]::-webkit-file-upload-button{display:none}@media only screen and (min-device-width :320px) and (max-device-width :568px) and (orientation :landscape){.tinymce-mobile-ios-container .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{bottom:50%}}
diff --git a/app/static/vendors/tinymce/js/tinymce/skins/ui/oxide/content.inline.min.css b/app/static/vendors/tinymce/js/tinymce/skins/ui/oxide/content.inline.min.css
deleted file mode 100644 (file)
index 961196d..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-.mce-content-body .mce-item-anchor{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;cursor:default;display:inline-block;height:12px!important;padding:0 2px;-webkit-user-modify:read-only;-moz-user-modify:read-only;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all;width:8px!important}.mce-content-body .mce-item-anchor[data-mce-selected]{outline-offset:1px}.tox-comments-visible .tox-comment{background-color:#fff0b7}.tox-comments-visible .tox-comment--active{background-color:#ffe168}.tox-checklist>li:not(.tox-checklist--hidden){list-style:none;margin:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");background-size:100%;content:'';cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A")}[dir=rtl] .tox-checklist>li:not(.tox-checklist--hidden)::before{margin-left:0;margin-right:-1.5em}code[class*=language-],pre[class*=language-]{color:#000;background:0 0;text-shadow:0 1px #fff;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;background-color:currentcolor;position:absolute}.mce-content-body .mce-visual-caret-hidden{display:none}.mce-content-body [data-mce-caret]{left:-1000px;margin:0;padding:0;position:absolute;right:auto;top:0}.mce-content-body .mce-offscreen-selection{left:-9999999999px;max-width:1000000px;position:absolute}.mce-content-body [contentEditable=false]{cursor:default}.mce-content-body [contentEditable=true]{cursor:text}.tox-cursor-format-painter{cursor:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"),default}.mce-content-body figure.align-left{float:left}.mce-content-body figure.align-right{float:right}.mce-content-body figure.image.align-center{display:table;margin-left:auto;margin-right:auto}.mce-preview-object{border:1px solid gray;display:inline-block;line-height:0;margin:0 2px 0 2px;position:relative}.mce-preview-object .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-object{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;border:1px dashed #aaa}.mce-pagebreak{border:1px dashed #aaa;cursor:default;display:block;height:5px;margin-top:15px;page-break-before:always;width:100%}@media print{.mce-pagebreak{border:0}}.tiny-pageembed .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.tiny-pageembed[data-mce-selected="2"] .mce-shim{display:none}.tiny-pageembed{display:inline-block;position:relative}.tiny-pageembed--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{display:block;overflow:hidden;padding:0;position:relative;width:100%}.tiny-pageembed--16by9::before,.tiny-pageembed--1by1::before,.tiny-pageembed--21by9::before,.tiny-pageembed--4by3::before{content:"";display:block}.tiny-pageembed--21by9::before{padding-top:42.857143%}.tiny-pageembed--16by9::before{padding-top:56.25%}.tiny-pageembed--4by3::before{padding-top:75%}.tiny-pageembed--1by1::before{padding-top:100%}.tiny-pageembed--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 iframe{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.mce-content-body div.mce-resizehandle{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;height:10px;position:absolute;width:10px;z-index:10000}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-clonedresizable{opacity:.5;outline:1px dashed #000;position:absolute;z-index:10000}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10001}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-content-body img[data-mce-selected],.mce-content-body table[data-mce-selected]{outline:3px solid #b4d7ff}.mce-content-body hr[data-mce-selected]{outline:3px solid #b4d7ff;outline-offset:1px}.mce-content-body [contentEditable=false] [contentEditable=true]:focus{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false] [contentEditable=true]:hover{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false][data-mce-selected]{cursor:not-allowed;outline:3px solid #b4d7ff}.mce-content-body.mce-content-readonly [contentEditable=true]:focus,.mce-content-body.mce-content-readonly [contentEditable=true]:hover{outline:0}.mce-content-body [data-mce-selected=inline-boundary]{background-color:#b4d7ff}.mce-content-body .mce-edit-focus{outline:3px solid #b4d7ff}.mce-content-body td[data-mce-selected],.mce-content-body th[data-mce-selected]{background-color:#b4d7ff!important}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mce-content-body img::-moz-selection{background:0 0}.mce-content-body img::selection{background:0 0}.ephox-snooker-resizer-bar{background-color:#b4d7ff;opacity:0}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:1}.mce-spellchecker-word{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default;height:2rem}.mce-spellchecker-grammar{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-item-table,.mce-item-table caption,.mce-item-table td,.mce-item-table th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{background-repeat:no-repeat;border:1px dashed #bbb;margin-left:3px;padding-top:10px}.mce-visualblocks p{background-image:url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}.mce-visualblocks h1{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}.mce-visualblocks h2{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}.mce-visualblocks h3{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}.mce-visualblocks h4{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}.mce-visualblocks h5{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}.mce-visualblocks h6{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}.mce-visualblocks div:not([data-mce-bogus]){background-image:url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}.mce-visualblocks section{background-image:url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}.mce-visualblocks article{background-image:url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}.mce-visualblocks blockquote{background-image:url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}.mce-visualblocks address{background-image:url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}.mce-visualblocks pre{background-image:url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}.mce-visualblocks figure{background-image:url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}.mce-visualblocks figcaption{border:1px dashed #bbb}.mce-visualblocks hgroup{background-image:url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}.mce-visualblocks aside{background-image:url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}.mce-visualblocks ul{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)}.mce-visualblocks ol{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==)}.mce-visualblocks dl{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==)}.mce-visualblocks:not([dir=rtl]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.mce-visualblocks:not([dir=rtl]) h1,.mce-visualblocks:not([dir=rtl]) h2,.mce-visualblocks:not([dir=rtl]) h3,.mce-visualblocks:not([dir=rtl]) h4,.mce-visualblocks:not([dir=rtl]) h5,.mce-visualblocks:not([dir=rtl]) h6,.mce-visualblocks:not([dir=rtl]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.mce-visualblocks[dir=rtl] h1,.mce-visualblocks[dir=rtl] h2,.mce-visualblocks[dir=rtl] h3,.mce-visualblocks[dir=rtl] h4,.mce-visualblocks[dir=rtl] h5,.mce-visualblocks[dir=rtl] h6,.mce-visualblocks[dir=rtl] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{background-position-x:right;margin-right:3px}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'}
diff --git a/app/static/vendors/tinymce/js/tinymce/skins/ui/oxide/content.min.css b/app/static/vendors/tinymce/js/tinymce/skins/ui/oxide/content.min.css
deleted file mode 100644 (file)
index 2a32f2f..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-.mce-content-body .mce-item-anchor{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;cursor:default;display:inline-block;height:12px!important;padding:0 2px;-webkit-user-modify:read-only;-moz-user-modify:read-only;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all;width:8px!important}.mce-content-body .mce-item-anchor[data-mce-selected]{outline-offset:1px}.tox-comments-visible .tox-comment{background-color:#fff0b7}.tox-comments-visible .tox-comment--active{background-color:#ffe168}.tox-checklist>li:not(.tox-checklist--hidden){list-style:none;margin:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");background-size:100%;content:'';cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A")}[dir=rtl] .tox-checklist>li:not(.tox-checklist--hidden)::before{margin-left:0;margin-right:-1.5em}code[class*=language-],pre[class*=language-]{color:#000;background:0 0;text-shadow:0 1px #fff;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;background-color:currentcolor;position:absolute}.mce-content-body .mce-visual-caret-hidden{display:none}.mce-content-body [data-mce-caret]{left:-1000px;margin:0;padding:0;position:absolute;right:auto;top:0}.mce-content-body .mce-offscreen-selection{left:-9999999999px;max-width:1000000px;position:absolute}.mce-content-body [contentEditable=false]{cursor:default}.mce-content-body [contentEditable=true]{cursor:text}.tox-cursor-format-painter{cursor:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"),default}.mce-content-body figure.align-left{float:left}.mce-content-body figure.align-right{float:right}.mce-content-body figure.image.align-center{display:table;margin-left:auto;margin-right:auto}.mce-preview-object{border:1px solid gray;display:inline-block;line-height:0;margin:0 2px 0 2px;position:relative}.mce-preview-object .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-object{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;border:1px dashed #aaa}.mce-pagebreak{border:1px dashed #aaa;cursor:default;display:block;height:5px;margin-top:15px;page-break-before:always;width:100%}@media print{.mce-pagebreak{border:0}}.tiny-pageembed .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.tiny-pageembed[data-mce-selected="2"] .mce-shim{display:none}.tiny-pageembed{display:inline-block;position:relative}.tiny-pageembed--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{display:block;overflow:hidden;padding:0;position:relative;width:100%}.tiny-pageembed--16by9::before,.tiny-pageembed--1by1::before,.tiny-pageembed--21by9::before,.tiny-pageembed--4by3::before{content:"";display:block}.tiny-pageembed--21by9::before{padding-top:42.857143%}.tiny-pageembed--16by9::before{padding-top:56.25%}.tiny-pageembed--4by3::before{padding-top:75%}.tiny-pageembed--1by1::before{padding-top:100%}.tiny-pageembed--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 iframe{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.mce-content-body div.mce-resizehandle{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;height:10px;position:absolute;width:10px;z-index:10000}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-clonedresizable{opacity:.5;outline:1px dashed #000;position:absolute;z-index:10000}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10001}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-content-body img[data-mce-selected],.mce-content-body table[data-mce-selected]{outline:3px solid #b4d7ff}.mce-content-body hr[data-mce-selected]{outline:3px solid #b4d7ff;outline-offset:1px}.mce-content-body [contentEditable=false] [contentEditable=true]:focus{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false] [contentEditable=true]:hover{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false][data-mce-selected]{cursor:not-allowed;outline:3px solid #b4d7ff}.mce-content-body.mce-content-readonly [contentEditable=true]:focus,.mce-content-body.mce-content-readonly [contentEditable=true]:hover{outline:0}.mce-content-body [data-mce-selected=inline-boundary]{background-color:#b4d7ff}.mce-content-body .mce-edit-focus{outline:3px solid #b4d7ff}.mce-content-body td[data-mce-selected],.mce-content-body th[data-mce-selected]{background-color:#b4d7ff!important}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mce-content-body img::-moz-selection{background:0 0}.mce-content-body img::selection{background:0 0}.ephox-snooker-resizer-bar{background-color:#b4d7ff;opacity:0}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:1}.mce-spellchecker-word{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default;height:2rem}.mce-spellchecker-grammar{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-item-table,.mce-item-table caption,.mce-item-table td,.mce-item-table th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{background-repeat:no-repeat;border:1px dashed #bbb;margin-left:3px;padding-top:10px}.mce-visualblocks p{background-image:url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}.mce-visualblocks h1{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}.mce-visualblocks h2{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}.mce-visualblocks h3{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}.mce-visualblocks h4{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}.mce-visualblocks h5{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}.mce-visualblocks h6{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}.mce-visualblocks div:not([data-mce-bogus]){background-image:url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}.mce-visualblocks section{background-image:url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}.mce-visualblocks article{background-image:url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}.mce-visualblocks blockquote{background-image:url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}.mce-visualblocks address{background-image:url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}.mce-visualblocks pre{background-image:url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}.mce-visualblocks figure{background-image:url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}.mce-visualblocks figcaption{border:1px dashed #bbb}.mce-visualblocks hgroup{background-image:url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}.mce-visualblocks aside{background-image:url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}.mce-visualblocks ul{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)}.mce-visualblocks ol{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==)}.mce-visualblocks dl{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==)}.mce-visualblocks:not([dir=rtl]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.mce-visualblocks:not([dir=rtl]) h1,.mce-visualblocks:not([dir=rtl]) h2,.mce-visualblocks:not([dir=rtl]) h3,.mce-visualblocks:not([dir=rtl]) h4,.mce-visualblocks:not([dir=rtl]) h5,.mce-visualblocks:not([dir=rtl]) h6,.mce-visualblocks:not([dir=rtl]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.mce-visualblocks[dir=rtl] h1,.mce-visualblocks[dir=rtl] h2,.mce-visualblocks[dir=rtl] h3,.mce-visualblocks[dir=rtl] h4,.mce-visualblocks[dir=rtl] h5,.mce-visualblocks[dir=rtl] h6,.mce-visualblocks[dir=rtl] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{background-position-x:right;margin-right:3px}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'}body{font-family:sans-serif}table{border-collapse:collapse}
diff --git a/app/static/vendors/tinymce/js/tinymce/skins/ui/oxide/content.mobile.min.css b/app/static/vendors/tinymce/js/tinymce/skins/ui/oxide/content.mobile.min.css
deleted file mode 100644 (file)
index 35f7dc0..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection{background-color:green;display:inline-block;opacity:.5;position:absolute}body{-webkit-text-size-adjust:none}body img{max-width:96vw}body table img{max-width:95%}body{font-family:sans-serif}table{border-collapse:collapse}
diff --git a/app/static/vendors/tinymce/js/tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff b/app/static/vendors/tinymce/js/tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff
deleted file mode 100644 (file)
index 1e3be03..0000000
Binary files a/app/static/vendors/tinymce/js/tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff and /dev/null differ
diff --git a/app/static/vendors/tinymce/js/tinymce/skins/ui/oxide/skin.min.css b/app/static/vendors/tinymce/js/tinymce/skins/ui/oxide/skin.min.css
deleted file mode 100644 (file)
index 2829017..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-.tox{box-sizing:content-box;color:#222f3e;cursor:auto;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-style:normal;font-weight:400;line-height:normal;-webkit-tap-highlight-color:transparent;text-decoration:none;text-shadow:none;text-transform:none;vertical-align:initial;white-space:normal}.tox :not(svg){box-sizing:inherit;color:inherit;cursor:inherit;direction:inherit;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;line-height:inherit;-webkit-tap-highlight-color:inherit;text-align:inherit;text-decoration:inherit;text-shadow:inherit;text-transform:inherit;vertical-align:inherit;white-space:inherit}.tox :not(svg){background:0 0;border:0;float:none;height:auto;margin:0;max-width:none;outline:0;padding:0;position:static;width:auto}.tox:not([dir=rtl]){direction:ltr;text-align:left}.tox[dir=rtl]{direction:rtl;text-align:right}.tox-tinymce{border:1px solid #ccc;border-radius:0;box-shadow:none;box-sizing:border-box;display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;overflow:hidden;position:relative;visibility:inherit!important}.tox-tinymce-inline{border:none;box-shadow:none}.tox-tinymce-inline .tox-editor-header{border:1px solid #ccc;border-bottom:0;border-radius:0;box-shadow:none}.tox-tinymce-aux{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;z-index:1300}.tox-tinymce :focus,.tox-tinymce-aux :focus{outline:0}button::-moz-focus-inner{border:0}.tox .accessibility-issue__header{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description{align-items:stretch;border:1px solid #ccc;border-radius:3px;display:flex;justify-content:space-between}.tox .accessibility-issue__description>div{padding-bottom:4px}.tox .accessibility-issue__description>div>div{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description>:last-child:not(:only-child){border-color:#ccc;border-style:solid}.tox .accessibility-issue__repair{margin-top:16px}.tox .accessibility-issue--info .accessibility-issue__description{background-color:rgba(32,122,183,.1);border-color:rgba(32,122,183,.4);color:#222f3e}.tox .accessibility-issue--info .accessibility-issue__description>:last-child{border-color:rgba(32,122,183,.4)}.tox .accessibility-issue--info h2{color:#207ab7}.tox .accessibility-issue--info .tox-icon svg{fill:#207ab7}.tox .accessibility-issue--info a .tox-icon{color:#207ab7}.tox .accessibility-issue--warn .accessibility-issue__description{background-color:rgba(255,165,0,.1);border-color:rgba(255,165,0,.5);color:#222f3e}.tox .accessibility-issue--warn .accessibility-issue__description>:last-child{border-color:rgba(255,165,0,.5)}.tox .accessibility-issue--warn h2{color:#cc8500}.tox .accessibility-issue--warn .tox-icon svg{fill:#cc8500}.tox .accessibility-issue--warn a .tox-icon{color:#cc8500}.tox .accessibility-issue--error .accessibility-issue__description{background-color:rgba(204,0,0,.1);border-color:rgba(204,0,0,.4);color:#222f3e}.tox .accessibility-issue--error .accessibility-issue__description>:last-child{border-color:rgba(204,0,0,.4)}.tox .accessibility-issue--error h2{color:#c00}.tox .accessibility-issue--error .tox-icon svg{fill:#c00}.tox .accessibility-issue--error a .tox-icon{color:#c00}.tox .accessibility-issue--success .accessibility-issue__description{background-color:rgba(120,171,70,.1);border-color:rgba(120,171,70,.4);color:#222f3e}.tox .accessibility-issue--success .accessibility-issue__description>:last-child{border-color:rgba(120,171,70,.4)}.tox .accessibility-issue--success h2{color:#78ab46}.tox .accessibility-issue--success .tox-icon svg{fill:#78ab46}.tox .accessibility-issue--success a .tox-icon{color:#78ab46}.tox .tox-dialog__body-content .accessibility-issue__header h1,.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2{margin-top:0}.tox:not([dir=rtl]) .accessibility-issue__header .tox-button{margin-left:4px}.tox:not([dir=rtl]) .accessibility-issue__header>:nth-last-child(2){margin-left:auto}.tox:not([dir=rtl]) .accessibility-issue__description{padding:4px 4px 4px 8px}.tox:not([dir=rtl]) .accessibility-issue__description>:last-child{border-left-width:1px;padding-left:4px}.tox[dir=rtl] .accessibility-issue__header .tox-button{margin-right:4px}.tox[dir=rtl] .accessibility-issue__header>:nth-last-child(2){margin-right:auto}.tox[dir=rtl] .accessibility-issue__description{padding:4px 8px 4px 4px}.tox[dir=rtl] .accessibility-issue__description>:last-child{border-right-width:1px;padding-right:4px}.tox .tox-anchorbar{display:flex;flex:0 0 auto}.tox .tox-bar{display:flex;flex:0 0 auto}.tox .tox-button{background-color:#207ab7;background-image:none;background-position:none;background-repeat:none;border-color:#207ab7;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:14px;font-weight:700;letter-spacing:1;line-height:24px;margin:0;outline:0;padding:4px 16px;text-align:center;text-decoration:none;text-transform:capitalize;white-space:nowrap}.tox .tox-button[disabled]{background-color:#207ab7;background-image:none;border-color:#207ab7;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-button:focus:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:hover:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:active:not(:disabled){background-color:#185d8c;background-image:none;border-color:#185d8c;box-shadow:none;color:#fff}.tox .tox-button--secondary{background-color:#f0f0f0;background-image:none;background-position:none;background-repeat:none;border-color:#f0f0f0;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;color:#222f3e;outline:0;padding:4px 16px;text-decoration:none;text-transform:capitalize}.tox .tox-button--secondary[disabled]{background-color:#f0f0f0;background-image:none;border-color:#f0f0f0;box-shadow:none;color:rgba(34,47,62,.5)}.tox .tox-button--secondary:focus:not(:disabled){background-color:#e3e3e3;background-image:none;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--secondary:hover:not(:disabled){background-color:#e3e3e3;background-image:none;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--secondary:active:not(:disabled){background-color:#d6d6d6;background-image:none;border-color:#d6d6d6;box-shadow:none;color:#222f3e}.tox .tox-button--icon,.tox .tox-button.tox-button--icon,.tox .tox-button.tox-button--secondary.tox-button--icon{padding:4px}.tox .tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg{display:block;fill:currentColor}.tox .tox-button-link{background:0;border:none;box-sizing:border-box;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;white-space:nowrap}.tox .tox-button-link--sm{font-size:14px}.tox .tox-button--naked{background-color:transparent;border-color:transparent;box-shadow:unset;color:#222f3e}.tox .tox-button--naked[disabled]{background-color:#f0f0f0;border-color:#f0f0f0;box-shadow:none;color:rgba(34,47,62,.5)}.tox .tox-button--naked:hover:not(:disabled){background-color:#e3e3e3;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--naked:focus:not(:disabled){background-color:#e3e3e3;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--naked:active:not(:disabled){background-color:#d6d6d6;border-color:#d6d6d6;box-shadow:none;color:#222f3e}.tox .tox-button--naked .tox-icon svg{fill:currentColor}.tox .tox-button--naked.tox-button--icon:hover:not(:disabled){color:#222f3e}.tox .tox-checkbox{align-items:center;border-radius:3px;cursor:pointer;display:flex;height:36px;min-width:36px}.tox .tox-checkbox__input{height:1px;left:-10000px;overflow:hidden;position:absolute;top:auto;width:1px}.tox .tox-checkbox__icons{align-items:center;border-radius:3px;box-shadow:0 0 0 2px transparent;box-sizing:content-box;display:flex;height:24px;justify-content:center;padding:calc(4px - 1px);width:24px}.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:block;fill:rgba(34,47,62,.3)}.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:none;fill:#207ab7}.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg{display:none;fill:#207ab7}.tox .tox-checkbox--disabled{color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg{fill:rgba(34,47,62,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{fill:rgba(34,47,62,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{fill:rgba(34,47,62,.5)}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__checked svg{display:block}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:block}.tox input.tox-checkbox__input:focus+.tox-checkbox__icons{border-radius:3px;box-shadow:inset 0 0 0 1px #207ab7;padding:calc(4px - 1px)}.tox:not([dir=rtl]) .tox-checkbox__label{margin-left:4px}.tox:not([dir=rtl]) .tox-bar .tox-checkbox{margin-left:4px}.tox[dir=rtl] .tox-checkbox__label{margin-right:4px}.tox[dir=rtl] .tox-bar .tox-checkbox{margin-right:4px}.tox .tox-collection--toolbar .tox-collection__group{display:flex;padding:0}.tox .tox-collection--grid .tox-collection__group{display:flex;flex-wrap:wrap;max-height:208px;overflow-x:hidden;overflow-y:auto;padding:0}.tox .tox-collection--list .tox-collection__group{border-bottom-width:0;border-color:#ccc;border-left-width:0;border-right-width:0;border-style:solid;border-top-width:1px;padding:4px 0}.tox .tox-collection--list .tox-collection__group:first-child{border-top-width:0}.tox .tox-collection__group-heading{background-color:#e6e6e6;color:rgba(34,47,62,.7);cursor:default;font-size:12px;font-style:normal;font-weight:400;margin-bottom:4px;margin-top:-4px;padding:4px 8px;text-transform:none;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection__item{align-items:center;color:#222f3e;cursor:pointer;display:flex;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection--list .tox-collection__item{padding:4px 8px}.tox .tox-collection--toolbar .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--grid .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--list .tox-collection__item--enabled{background-color:inherit;color:contrast(inherit,#222f3e,#fff)}.tox .tox-collection--list .tox-collection__item--active{background-color:#dee0e2}.tox .tox-collection--toolbar .tox-collection__item--enabled{background-color:#c8cbcf;color:#222f3e}.tox .tox-collection--toolbar .tox-collection__item--active{background-color:#dee0e2}.tox .tox-collection--grid .tox-collection__item--enabled{background-color:#c8cbcf;color:#222f3e}.tox .tox-collection--grid .tox-collection__item--active{background-color:#dee0e2}.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#222f3e}.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#222f3e}.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#222f3e}.tox .tox-collection__item--state-disabled{background-color:transparent;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-collection__item-icon{align-items:center;display:flex;height:24px;justify-content:center;width:24px}.tox .tox-collection__item-icon svg{fill:currentColor}.tox .tox-collection--toolbar-lg .tox-collection__item-icon{height:48px;width:48px}.tox .tox-collection__item-label{color:currentColor;display:inline-block;flex:1;-ms-flex-preferred-size:auto;font-size:14px;font-style:normal;font-weight:400;line-height:24px;text-transform:none;word-break:break-all}.tox .tox-collection__item-accessory{color:rgba(34,47,62,.7);display:inline-block;font-size:14px;height:24px;line-height:24px;text-transform:normal}.tox .tox-collection__item-caret{align-items:center;display:flex;min-height:24px}.tox .tox-collection__item-caret::after{content:'';font-size:0;min-height:inherit}.tox .tox-collection__item-caret svg{fill:#222f3e}.tox .tox-collection__item[role=menuitemcheckbox]:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg{display:none}.tox .tox-collection--horizontal{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:nowrap;margin-bottom:0;overflow-x:auto;padding:0}.tox .tox-collection--horizontal .tox-collection__group{align-items:center;display:flex;flex-wrap:nowrap;margin:0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item{height:34px;margin:2px 0 3px 0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item-label{white-space:nowrap}.tox .tox-collection--horizontal .tox-collection__item-caret{margin-left:4px}.tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-right:1px solid #ccc}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>:not(:first-child){margin-left:8px}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item-label:first-child{margin-left:4px}.tox:not([dir=rtl]) .tox-collection__item-accessory{margin-left:16px;text-align:right}.tox:not([dir=rtl]) .tox-collection .tox-collection__item-caret{margin-left:16px}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-left:1px solid #ccc}.tox[dir=rtl] .tox-collection--list .tox-collection__item>:not(:first-child){margin-right:8px}.tox[dir=rtl] .tox-collection--list .tox-collection__item-label:first-child{margin-right:4px}.tox[dir=rtl] .tox-collection__item-icon-rtl .tox-collection__item-icon svg{transform:rotateY(180deg)}.tox[dir=rtl] .tox-collection__item-accessory{margin-right:16px;text-align:left}.tox[dir=rtl] .tox-collection .tox-collection__item-caret{margin-right:16px;transform:rotateY(180deg)}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__item-caret{margin-right:4px}.tox .tox-color-picker-container{display:flex;flex-direction:row;height:225px;margin:0}.tox .tox-sv-palette{box-sizing:border-box;display:flex;height:100%}.tox .tox-sv-palette-spectrum{height:100%}.tox .tox-sv-palette,.tox .tox-sv-palette-spectrum{width:225px}.tox .tox-sv-palette-thumb{background:0 0;border:1px solid #000;border-radius:50%;box-sizing:content-box;height:12px;position:absolute;width:12px}.tox .tox-sv-palette-inner-thumb{border:1px solid #fff;border-radius:50%;height:10px;position:absolute;width:10px}.tox .tox-hue-slider{box-sizing:border-box;height:100%;width:25px}.tox .tox-hue-slider-spectrum{background:linear-gradient(to bottom,red,#ff0080,#f0f,#8000ff,#00f,#0080ff,#0ff,#00ff80,#0f0,#80ff00,#ff0,#ff8000,red);height:100%;width:100%}.tox .tox-hue-slider,.tox .tox-hue-slider-spectrum{width:20px}.tox .tox-hue-slider-thumb{background:#fff;border:1px solid #000;box-sizing:content-box;height:4px;width:100%}.tox .tox-rgb-form{display:flex;flex-direction:column;justify-content:space-between}.tox .tox-rgb-form div{align-items:center;display:flex;justify-content:space-between;margin-bottom:5px;width:inherit}.tox .tox-rgb-form input{width:6em}.tox .tox-rgb-form input.tox-invalid{border:1px solid red!important}.tox .tox-rgb-form .tox-rgba-preview{border:1px solid #000;flex-grow:2;margin-bottom:0}.tox:not([dir=rtl]) .tox-sv-palette{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider-thumb{margin-left:-1px}.tox:not([dir=rtl]) .tox-rgb-form label{margin-right:.5em}.tox[dir=rtl] .tox-sv-palette{margin-left:15px}.tox[dir=rtl] .tox-hue-slider{margin-left:15px}.tox[dir=rtl] .tox-hue-slider-thumb{margin-right:-1px}.tox[dir=rtl] .tox-rgb-form label{margin-left:.5em}.tox .tox-toolbar .tox-swatches,.tox .tox-toolbar__overflow .tox-swatches,.tox .tox-toolbar__primary .tox-swatches{margin:2px 0 3px 4px}.tox .tox-collection--list .tox-collection__group .tox-swatches-menu{border:0;margin:-4px 0}.tox .tox-swatches__row{display:flex}.tox .tox-swatch{height:30px;transition:transform .15s,box-shadow .15s;width:30px}.tox .tox-swatch:focus,.tox .tox-swatch:hover{box-shadow:0 0 0 1px rgba(127,127,127,.3) inset;transform:scale(.8)}.tox .tox-swatch--remove{align-items:center;display:flex;justify-content:center}.tox .tox-swatch--remove svg path{stroke:#e74c3c}.tox .tox-swatches__picker-btn{align-items:center;background-color:transparent;border:0;cursor:pointer;display:flex;height:30px;justify-content:center;outline:0;padding:0;width:30px}.tox .tox-swatches__picker-btn svg{height:24px;width:24px}.tox .tox-swatches__picker-btn:hover{background:#dee0e2}.tox:not([dir=rtl]) .tox-swatches__picker-btn{margin-left:auto}.tox[dir=rtl] .tox-swatches__picker-btn{margin-right:auto}.tox .tox-comment-thread{background:#fff;position:relative}.tox .tox-comment-thread>:not(:first-child){margin-top:8px}.tox .tox-comment{background:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 4px 8px 0 rgba(34,47,62,.1);padding:8px 8px 16px 8px;position:relative}.tox .tox-comment__header{align-items:center;color:#222f3e;display:flex;justify-content:space-between}.tox .tox-comment__date{color:rgba(34,47,62,.7);font-size:12px}.tox .tox-comment__body{color:#222f3e;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;margin-top:8px;position:relative;text-transform:initial}.tox .tox-comment__body textarea{resize:none;white-space:normal;width:100%}.tox .tox-comment__expander{padding-top:8px}.tox .tox-comment__expander p{color:rgba(34,47,62,.7);font-size:14px;font-style:normal}.tox .tox-comment__body p{margin:0}.tox .tox-comment__buttonspacing{padding-top:16px;text-align:center}.tox .tox-comment-thread__overlay::after{background:#fff;bottom:0;content:"";display:flex;left:0;opacity:.9;position:absolute;right:0;top:0;z-index:5}.tox .tox-comment__reply{display:flex;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end;margin-top:8px}.tox .tox-comment__reply>:first-child{margin-bottom:8px;width:100%}.tox .tox-comment__edit{display:flex;flex-wrap:wrap;justify-content:flex-end;margin-top:16px}.tox .tox-comment__gradient::after{background:linear-gradient(rgba(255,255,255,0),#fff);bottom:0;content:"";display:block;height:5em;margin-top:-40px;position:absolute;width:100%}.tox .tox-comment__overlay{background:#fff;bottom:0;display:flex;flex-direction:column;flex-grow:1;left:0;opacity:.9;position:absolute;right:0;text-align:center;top:0;z-index:5}.tox .tox-comment__loading-text{align-items:center;color:#222f3e;display:flex;flex-direction:column;position:relative}.tox .tox-comment__loading-text>div{padding-bottom:16px}.tox .tox-comment__overlaytext{bottom:0;flex-direction:column;font-size:14px;left:0;padding:1em;position:absolute;right:0;top:0;z-index:10}.tox .tox-comment__overlaytext p{background-color:#fff;box-shadow:0 0 8px 8px #fff;color:#222f3e;text-align:center}.tox .tox-comment__overlaytext div:nth-of-type(2){font-size:.8em}.tox .tox-comment__busy-spinner{align-items:center;background-color:#fff;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:20}.tox .tox-comment__scroll{display:flex;flex-direction:column;flex-shrink:1;overflow:auto}.tox .tox-conversations{margin:8px}.tox:not([dir=rtl]) .tox-comment__edit{margin-left:8px}.tox:not([dir=rtl]) .tox-comment__buttonspacing>:last-child,.tox:not([dir=rtl]) .tox-comment__edit>:last-child,.tox:not([dir=rtl]) .tox-comment__reply>:last-child{margin-left:8px}.tox[dir=rtl] .tox-comment__edit{margin-right:8px}.tox[dir=rtl] .tox-comment__buttonspacing>:last-child,.tox[dir=rtl] .tox-comment__edit>:last-child,.tox[dir=rtl] .tox-comment__reply>:last-child{margin-right:8px}.tox .tox-user{align-items:center;display:flex}.tox .tox-user__avatar svg{fill:rgba(34,47,62,.7)}.tox .tox-user__name{color:rgba(34,47,62,.7);font-size:12px;font-style:normal;font-weight:700;text-transform:uppercase}.tox:not([dir=rtl]) .tox-user__avatar svg{margin-right:8px}.tox:not([dir=rtl]) .tox-user__avatar+.tox-user__name{margin-left:8px}.tox[dir=rtl] .tox-user__avatar svg{margin-left:8px}.tox[dir=rtl] .tox-user__avatar+.tox-user__name{margin-right:8px}.tox .tox-dialog-wrap{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1100}.tox .tox-dialog-wrap__backdrop{background-color:rgba(255,255,255,.75);bottom:0;left:0;position:absolute;right:0;top:0;z-index:1}.tox .tox-dialog-wrap__backdrop--opaque{background-color:#fff}.tox .tox-dialog{background-color:#fff;border-color:#ccc;border-radius:3px;border-style:solid;border-width:1px;box-shadow:0 16px 16px -10px rgba(34,47,62,.15),0 0 40px 1px rgba(34,47,62,.15);display:flex;flex-direction:column;max-height:100%;max-width:480px;overflow:hidden;position:relative;width:95vw;z-index:2}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog{align-self:flex-start;margin:8px auto;width:calc(100vw - 16px)}}.tox .tox-dialog-inline{z-index:1100}.tox .tox-dialog__header{align-items:center;background-color:#fff;border-bottom:none;color:#222f3e;display:flex;font-size:16px;justify-content:space-between;padding:8px 16px 0 16px;position:relative}.tox .tox-dialog__header .tox-button{z-index:1}.tox .tox-dialog__draghandle{cursor:grab;height:100%;left:0;position:absolute;top:0;width:100%}.tox .tox-dialog__draghandle:active{cursor:grabbing}.tox .tox-dialog__dismiss{margin-left:auto}.tox .tox-dialog__title{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:20px;font-style:normal;font-weight:400;line-height:1.3;margin:0;text-transform:normal}.tox .tox-dialog__body{color:#222f3e;display:flex;flex:1;-ms-flex-preferred-size:auto;font-size:16px;font-style:normal;font-weight:400;line-height:1.3;min-width:0;text-align:left;text-transform:normal}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body{flex-direction:column}}.tox .tox-dialog__body-nav{align-items:flex-start;display:flex;flex-direction:column;padding:16px 16px}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body-nav{flex-direction:row;-webkit-overflow-scrolling:touch;overflow-x:auto;padding-bottom:0}}.tox .tox-dialog__body-nav-item{border-bottom:2px solid transparent;color:rgba(34,47,62,.7);display:inline-block;font-size:14px;line-height:1.3;margin-bottom:8px;text-decoration:none;white-space:nowrap}.tox .tox-dialog__body-nav-item:focus{background-color:rgba(32,122,183,.1)}.tox .tox-dialog__body-nav-item--active{border-bottom:2px solid #207ab7;color:#207ab7}.tox .tox-dialog__body-content{box-sizing:border-box;display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto;max-height:650px;overflow:auto;-webkit-overflow-scrolling:touch;padding:16px 16px}.tox .tox-dialog__body-content>*{margin-bottom:0;margin-top:16px}.tox .tox-dialog__body-content>:first-child{margin-top:0}.tox .tox-dialog__body-content>:last-child{margin-bottom:0}.tox .tox-dialog__body-content>:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog__body-content a{color:#207ab7;cursor:pointer;text-decoration:none}.tox .tox-dialog__body-content a:focus,.tox .tox-dialog__body-content a:hover{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content a:active{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content ul{display:block;list-style-type:disc;margin-bottom:16px;-webkit-margin-end:0;margin-inline-end:0;-webkit-margin-start:0;margin-inline-start:0;-webkit-padding-start:2.5rem;padding-inline-start:2.5rem}.tox .tox-dialog__body-content .tox-form__group h1{font-size:20px;font-weight:700;margin-bottom:16px;margin-top:2rem}.tox .tox-dialog__body-content .tox-form__group h2{font-size:16px;font-weight:700;margin-bottom:16px;margin-top:2rem}.tox .tox-dialog__body-content .tox-form__group p{margin-bottom:16px}.tox .tox-dialog__body-content .tox-form__group h1:first-child,.tox .tox-dialog__body-content .tox-form__group h2:first-child,.tox .tox-dialog__body-content .tox-form__group p:first-child{margin-top:0}.tox .tox-dialog__body-content .tox-form__group h1:last-child,.tox .tox-dialog__body-content .tox-form__group h2:last-child,.tox .tox-dialog__body-content .tox-form__group p:last-child{margin-bottom:0}.tox .tox-dialog__body-content .tox-form__group h1:only-child,.tox .tox-dialog__body-content .tox-form__group h2:only-child,.tox .tox-dialog__body-content .tox-form__group p:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog--width-lg{height:650px;max-width:1200px}.tox .tox-dialog--width-md{max-width:800px}.tox .tox-dialog--width-md .tox-dialog__body-content{overflow:auto}.tox .tox-dialog__body-content--centered{text-align:center}.tox .tox-dialog__footer{align-items:center;background-color:#fff;border-top:1px solid #ccc;display:flex;justify-content:space-between;padding:8px 16px}.tox .tox-dialog__footer-end,.tox .tox-dialog__footer-start{display:flex}.tox .tox-dialog__busy-spinner{align-items:center;background-color:rgba(255,255,255,.75);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:3}.tox .tox-dialog__table{border-collapse:collapse;width:100%}.tox .tox-dialog__table thead th{font-weight:700;padding-bottom:8px}.tox .tox-dialog__table tbody tr{border-bottom:1px solid #ccc}.tox .tox-dialog__table tbody tr:last-child{border-bottom:none}.tox .tox-dialog__table td{padding-bottom:8px;padding-top:8px}.tox .tox-dialog__popups{position:absolute;width:100%;z-index:1100}.tox .tox-dialog__body-iframe{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox .tox-dialog-dock-fadeout{opacity:0;visibility:hidden}.tox .tox-dialog-dock-fadein{opacity:1;visibility:visible}.tox .tox-dialog-dock-transition{transition:visibility 0s linear .3s,opacity .3s ease}.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein{transition-delay:0s}body.tox-dialog__disable-scroll{overflow:hidden}.tox.tox-platform-ie .tox-dialog-wrap{position:-ms-device-fixed}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav{margin-right:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child){margin-left:8px}}.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-end>*,.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-start>*{margin-left:8px}.tox[dir=rtl] .tox-dialog__body{text-align:right}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav{margin-left:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child){margin-right:8px}}.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-end>*,.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-start>*{margin-right:8px}.tox .tox-dropzone-container{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dropzone{align-items:center;background:#fff;border:2px dashed #ccc;box-sizing:border-box;display:flex;flex-direction:column;flex-grow:1;justify-content:center;min-height:100px;padding:10px}.tox .tox-dropzone p{color:rgba(34,47,62,.7);margin:0 0 16px 0}.tox .tox-edit-area{display:flex;flex:1;-ms-flex-preferred-size:auto;overflow:hidden;position:relative}.tox .tox-edit-area__iframe{background-color:#fff;border:0;box-sizing:border-box;flex:1;-ms-flex-preferred-size:auto;height:100%;position:absolute;width:100%}.tox.tox-inline-edit-area{border:1px dotted #ccc}.tox .tox-editor-container{display:flex;flex:1 1 auto;flex-direction:column;overflow:hidden}.tox .tox-editor-header{z-index:1}.tox-editor-dock-fadeout{opacity:0;visibility:hidden}.tox-editor-dock-fadein{opacity:1;visibility:visible}.tox-editor-dock-transition{transition:visibility 0s linear .25s,opacity .25s ease}.tox-editor-dock-transition.tox-editor-dock-fadein{transition-delay:0s}.tox .tox-control-wrap{flex:1;position:relative}.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid,.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown,.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid{display:none}.tox .tox-control-wrap svg{display:block}.tox .tox-control-wrap__status-icon-wrap{position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-control-wrap__status-icon-invalid svg{fill:#c00}.tox .tox-control-wrap__status-icon-unknown svg{fill:orange}.tox .tox-control-wrap__status-icon-valid svg{fill:green}.tox:not([dir=rtl]) .tox-control-wrap--status-invalid .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-unknown .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-valid .tox-textfield{padding-right:32px}.tox:not([dir=rtl]) .tox-control-wrap__status-icon-wrap{right:4px}.tox[dir=rtl] .tox-control-wrap--status-invalid .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-unknown .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-valid .tox-textfield{padding-left:32px}.tox[dir=rtl] .tox-control-wrap__status-icon-wrap{left:4px}.tox .tox-autocompleter{max-width:25em}.tox .tox-autocompleter .tox-menu{max-width:25em}.tox .tox-autocompleter .tox-autocompleter-highlight{font-weight:700}.tox .tox-color-input{display:flex}.tox .tox-color-input .tox-textfield{border-radius:3px 0 0 3px;display:flex}.tox .tox-color-input span{border-color:rgba(34,47,62,.2);border-radius:0 3px 3px 0;border-style:solid;border-width:1px 1px 1px 0;box-shadow:none;box-sizing:border-box;cursor:pointer;display:flex;width:35px}.tox .tox-color-input span:focus{border-color:#207ab7}.tox[dir=rtl] .tox-color-input .tox-textfield{border-radius:0 3px 3px 0}.tox[dir=rtl] .tox-color-input span{border-radius:3px 0 0 3px;border-width:1px 0 1px 1px}.tox .tox-label,.tox .tox-toolbar-label{color:rgba(34,47,62,.7);display:block;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;padding:0 8px 0 0;text-transform:normal;white-space:nowrap}.tox .tox-toolbar-label{padding:0 8px}.tox[dir=rtl] .tox-label{padding:0 0 0 8px}.tox .tox-form{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group{box-sizing:border-box;margin-bottom:4px}.tox .tox-form-group--maximize{flex:1}.tox .tox-form__group--error{color:#c00}.tox .tox-form__group--collection{display:flex}.tox .tox-form__grid{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between}.tox .tox-form__grid--2col>.tox-form__group{width:calc(50% - (8px / 2))}.tox .tox-form__grid--3col>.tox-form__group{width:calc(100% / 3 - (8px / 2))}.tox .tox-form__grid--4col>.tox-form__group{width:calc(25% - (8px / 2))}.tox .tox-form__controls-h-stack{align-items:center;display:flex}.tox .tox-form__group--inline{align-items:center;display:flex}.tox .tox-form__group--stretched{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-textarea{flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox:not([dir=rtl]) .tox-form__controls-h-stack>:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-form__controls-h-stack>:not(:first-child){margin-right:4px}.tox .tox-lock.tox-locked .tox-lock-icon__unlock,.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock{display:none}.tox .tox-selectfield select,.tox .tox-textarea,.tox .tox-textfield,.tox .tox-toolbar-textfield{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#ccc;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#222f3e;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;outline:0;padding:5px 4.75px;resize:none;width:100%}.tox .tox-textarea[disabled],.tox .tox-textfield[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-selectfield select:focus,.tox .tox-textarea:focus,.tox .tox-textfield:focus{border-color:#207ab7;box-shadow:none;outline:0}.tox .tox-toolbar-textfield{border-width:0;margin-bottom:3px;margin-top:2px;max-width:250px}.tox .tox-naked-btn{background-color:transparent;border:0;border-color:transparent;box-shadow:unset;color:#207ab7;cursor:pointer;display:block;margin:0;padding:0}.tox .tox-naked-btn svg{display:block;fill:#222f3e}.tox:not([dir=rtl]) .tox-toolbar-textfield+*{margin-left:4px}.tox[dir=rtl] .tox-toolbar-textfield+*{margin-right:4px}.tox .tox-selectfield{cursor:pointer;position:relative}.tox .tox-selectfield select[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-selectfield select::-ms-expand{display:none}.tox .tox-selectfield svg{pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.tox:not([dir=rtl]) .tox-selectfield select[size="0"],.tox:not([dir=rtl]) .tox-selectfield select[size="1"]{padding-right:24px}.tox:not([dir=rtl]) .tox-selectfield svg{right:8px}.tox[dir=rtl] .tox-selectfield select[size="0"],.tox[dir=rtl] .tox-selectfield select[size="1"]{padding-left:24px}.tox[dir=rtl] .tox-selectfield svg{left:8px}.tox .tox-textarea{-webkit-appearance:textarea;-moz-appearance:textarea;appearance:textarea;white-space:pre-wrap}.tox-fullscreen{border:0;height:100%;left:0;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;position:fixed;top:0;touch-action:pinch-zoom;width:100%}.tox-fullscreen .tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox-fullscreen .tox.tox-tinymce.tox-fullscreen{z-index:1200}.tox-fullscreen .tox.tox-tinymce-aux{z-index:1201}.tox .tox-image-tools{width:100%}.tox .tox-image-tools__toolbar{align-items:center;display:flex;justify-content:center}.tox .tox-image-tools__image{background-color:#666;height:380px;overflow:auto;position:relative;width:100%}.tox .tox-image-tools__image,.tox .tox-image-tools__image+.tox-image-tools__toolbar{margin-top:8px}.tox .tox-image-tools__image-bg{background:url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==)}.tox .tox-image-tools__toolbar>.tox-spacer{flex:1;-ms-flex-preferred-size:auto}.tox .tox-croprect-block{background:#000;opacity:.5;position:absolute;zoom:1}.tox .tox-croprect-handle{border:2px solid #fff;height:20px;left:0;position:absolute;top:0;width:20px}.tox .tox-croprect-handle-move{border:0;cursor:move;position:absolute}.tox .tox-croprect-handle-nw{border-width:2px 0 0 2px;cursor:nw-resize;left:100px;margin:-2px 0 0 -2px;top:100px}.tox .tox-croprect-handle-ne{border-width:2px 2px 0 0;cursor:ne-resize;left:200px;margin:-2px 0 0 -20px;top:100px}.tox .tox-croprect-handle-sw{border-width:0 0 2px 2px;cursor:sw-resize;left:100px;margin:-20px 2px 0 -2px;top:200px}.tox .tox-croprect-handle-se{border-width:0 2px 2px 0;cursor:se-resize;left:200px;margin:-20px 0 0 -20px;top:200px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-left:8px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-left:32px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-left:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-right:8px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-right:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-right:32px}.tox .tox-insert-table-picker{display:flex;flex-wrap:wrap;width:169px}.tox .tox-insert-table-picker>div{border-color:#ccc;border-style:solid;border-width:0 1px 1px 0;box-sizing:content-box;height:16px;width:16px}.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker{margin:-4px 0}.tox .tox-insert-table-picker .tox-insert-table-picker__selected{background-color:rgba(32,122,183,.5);border-color:rgba(32,122,183,.5)}.tox .tox-insert-table-picker__label{color:rgba(34,47,62,.7);display:block;font-size:14px;padding:4px;text-align:center;width:100%}.tox:not([dir=rtl]) .tox-insert-table-picker>div:nth-child(10n){border-right:0}.tox[dir=rtl] .tox-insert-table-picker>div:nth-child(10n+1){border-right:0}.tox .tox-menu{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 4px 8px 0 rgba(34,47,62,.1);display:inline-block;overflow:hidden;vertical-align:top;z-index:1150}.tox .tox-menu.tox-collection.tox-collection--list{padding:0}.tox .tox-menu.tox-collection.tox-collection--toolbar{padding:4px}.tox .tox-menu.tox-collection.tox-collection--grid{padding:4px}.tox .tox-menu__label blockquote,.tox .tox-menu__label code,.tox .tox-menu__label h1,.tox .tox-menu__label h2,.tox .tox-menu__label h3,.tox .tox-menu__label h4,.tox .tox-menu__label h5,.tox .tox-menu__label h6,.tox .tox-menu__label p{margin:0}.tox .tox-menubar{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E") left 0 top 0 #fff;background-color:#fff;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 4px 0 4px}.tox .tox-mbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#222f3e;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0 4px;text-transform:normal;width:auto}.tox .tox-mbtn[disabled]{background-color:none;border:0;box-shadow:none;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-mbtn:focus:not(:disabled){background:#dee0e2;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn--active{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active){background:#dee0e2;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-mbtn[disabled] .tox-mbtn__select-label{cursor:not-allowed}.tox .tox-mbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px;display:none}.tox .tox-notification{border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;display:-ms-grid;display:grid;font-size:14px;font-weight:400;-ms-grid-columns:minmax(40px,1fr) auto minmax(40px,1fr);grid-template-columns:minmax(40px,1fr) auto minmax(40px,1fr);margin-top:4px;opacity:0;padding:4px;transition:transform .1s ease-in,opacity 150ms ease-in}.tox .tox-notification p{font-size:14px;font-weight:400}.tox .tox-notification a{text-decoration:underline}.tox .tox-notification--in{opacity:1}.tox .tox-notification--success{background-color:#e4eeda;border-color:#d7e6c8;color:#222f3e}.tox .tox-notification--success p{color:#222f3e}.tox .tox-notification--success a{color:#547831}.tox .tox-notification--success svg{fill:#222f3e}.tox .tox-notification--error{background-color:#f8dede;border-color:#f2bfbf;color:#222f3e}.tox .tox-notification--error p{color:#222f3e}.tox .tox-notification--error a{color:#c00}.tox .tox-notification--error svg{fill:#222f3e}.tox .tox-notification--warn,.tox .tox-notification--warning{background-color:#fffaea;border-color:#ffe89d;color:#222f3e}.tox .tox-notification--warn p,.tox .tox-notification--warning p{color:#222f3e}.tox .tox-notification--warn a,.tox .tox-notification--warning a{color:#222f3e}.tox .tox-notification--warn svg,.tox .tox-notification--warning svg{fill:#222f3e}.tox .tox-notification--info{background-color:#d9edf7;border-color:#779ecb;color:#222f3e}.tox .tox-notification--info p{color:#222f3e}.tox .tox-notification--info a{color:#222f3e}.tox .tox-notification--info svg{fill:#222f3e}.tox .tox-notification__body{-ms-grid-row-align:center;align-self:center;color:#222f3e;font-size:14px;-ms-grid-column-span:1;grid-column-end:3;-ms-grid-column:2;grid-column-start:2;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;text-align:center;white-space:normal;word-break:break-all;word-break:break-word}.tox .tox-notification__body>*{margin:0}.tox .tox-notification__body>*+*{margin-top:1rem}.tox .tox-notification__icon{-ms-grid-row-align:center;align-self:center;-ms-grid-column-span:1;grid-column-end:2;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification__icon svg{display:block}.tox .tox-notification__dismiss{-ms-grid-row-align:start;align-self:start;-ms-grid-column-span:1;grid-column-end:4;-ms-grid-column:3;grid-column-start:3;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification .tox-progress-bar{-ms-grid-column-span:3;grid-column-end:4;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:3;-ms-grid-row:2;grid-row-start:2;-ms-grid-column-align:center;justify-self:center}.tox .tox-pop{display:inline-block;position:relative}.tox .tox-pop--resizing{transition:width .1s ease}.tox .tox-pop--resizing .tox-toolbar{flex-wrap:nowrap}.tox .tox-pop__dialog{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);min-width:0;overflow:hidden}.tox .tox-pop__dialog>:not(.tox-toolbar){margin:4px 4px 4px 8px}.tox .tox-pop__dialog .tox-toolbar{background-color:transparent;margin-bottom:-1px}.tox .tox-pop::after,.tox .tox-pop::before{border-style:solid;content:'';display:block;height:0;position:absolute;width:0}.tox .tox-pop.tox-pop--bottom::after,.tox .tox-pop.tox-pop--bottom::before{left:50%;top:100%}.tox .tox-pop.tox-pop--bottom::after{border-color:#fff transparent transparent transparent;border-width:8px;margin-left:-8px;margin-top:-1px}.tox .tox-pop.tox-pop--bottom::before{border-color:#ccc transparent transparent transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--top::after,.tox .tox-pop.tox-pop--top::before{left:50%;top:0;transform:translateY(-100%)}.tox .tox-pop.tox-pop--top::after{border-color:transparent transparent #fff transparent;border-width:8px;margin-left:-8px;margin-top:1px}.tox .tox-pop.tox-pop--top::before{border-color:transparent transparent #ccc transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--left::after,.tox .tox-pop.tox-pop--left::before{left:0;top:calc(50% - 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--left::after{border-color:transparent #fff transparent transparent;border-width:8px;margin-left:-15px}.tox .tox-pop.tox-pop--left::before{border-color:transparent #ccc transparent transparent;border-width:10px;margin-left:-19px}.tox .tox-pop.tox-pop--right::after,.tox .tox-pop.tox-pop--right::before{left:100%;top:calc(50% + 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--right::after{border-color:transparent transparent transparent #fff;border-width:8px;margin-left:-1px}.tox .tox-pop.tox-pop--right::before{border-color:transparent transparent transparent #ccc;border-width:10px;margin-left:-1px}.tox .tox-pop.tox-pop--align-left::after,.tox .tox-pop.tox-pop--align-left::before{left:20px}.tox .tox-pop.tox-pop--align-right::after,.tox .tox-pop.tox-pop--align-right::before{left:calc(100% - 20px)}.tox .tox-sidebar-wrap{display:flex;flex-direction:row;flex-grow:1;-ms-flex-preferred-size:0;min-height:0}.tox .tox-sidebar{background-color:#fff;display:flex;flex-direction:row;justify-content:flex-end}.tox .tox-sidebar__slider{display:flex;overflow:hidden}.tox .tox-sidebar__pane-container{display:flex}.tox .tox-sidebar__pane{display:flex}.tox .tox-sidebar--sliding-closed{opacity:0}.tox .tox-sidebar--sliding-open{opacity:1}.tox .tox-sidebar--sliding-growing,.tox .tox-sidebar--sliding-shrinking{transition:width .5s ease,opacity .5s ease}.tox .tox-selector{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;display:inline-block;height:10px;position:absolute;width:10px}.tox.tox-platform-touch .tox-selector{height:12px;width:12px}.tox .tox-slider{align-items:center;display:flex;flex:1;-ms-flex-preferred-size:auto;height:24px;justify-content:center;position:relative}.tox .tox-slider__rail{background-color:transparent;border:1px solid #ccc;border-radius:3px;height:10px;min-width:120px;width:100%}.tox .tox-slider__handle{background-color:#207ab7;border:2px solid #185d8c;border-radius:3px;box-shadow:none;height:24px;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);width:14px}.tox .tox-source-code{overflow:auto}.tox .tox-spinner{display:flex}.tox .tox-spinner>div{animation:tam-bouncing-dots 1.5s ease-in-out 0s infinite both;background-color:rgba(34,47,62,.7);border-radius:100%;height:8px;width:8px}.tox .tox-spinner>div:nth-child(1){animation-delay:-.32s}.tox .tox-spinner>div:nth-child(2){animation-delay:-.16s}@keyframes tam-bouncing-dots{0%,100%,80%{transform:scale(0)}40%{transform:scale(1)}}.tox:not([dir=rtl]) .tox-spinner>div:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-spinner>div:not(:first-child){margin-right:4px}.tox .tox-statusbar{align-items:center;background-color:#fff;border-top:1px solid #ccc;color:rgba(34,47,62,.7);display:flex;flex:0 0 auto;font-size:12px;font-weight:400;height:18px;overflow:hidden;padding:0 8px;position:relative;text-transform:uppercase}.tox .tox-statusbar__text-container{display:flex;flex:1 1 auto;justify-content:flex-end;overflow:hidden}.tox .tox-statusbar__path{display:flex;flex:1 1 auto;margin-right:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tox .tox-statusbar__path>*{display:inline;white-space:nowrap}.tox .tox-statusbar__wordcount{flex:0 0 auto;margin-left:1ch}.tox .tox-statusbar a,.tox .tox-statusbar__path-item,.tox .tox-statusbar__wordcount{color:rgba(34,47,62,.7);text-decoration:none}.tox .tox-statusbar a:focus,.tox .tox-statusbar a:hover,.tox .tox-statusbar__path-item:focus,.tox .tox-statusbar__path-item:hover,.tox .tox-statusbar__wordcount:focus,.tox .tox-statusbar__wordcount:hover{cursor:pointer;text-decoration:underline}.tox .tox-statusbar__resize-handle{align-items:flex-end;align-self:stretch;cursor:nwse-resize;display:flex;flex:0 0 auto;justify-content:flex-end;margin-left:auto;margin-right:-8px;padding-left:1ch}.tox .tox-statusbar__resize-handle svg{display:block;fill:rgba(34,47,62,.7)}.tox:not([dir=rtl]) .tox-statusbar__path>*{margin-right:4px}.tox:not([dir=rtl]) .tox-statusbar__branding{margin-left:1ch}.tox[dir=rtl] .tox-statusbar{flex-direction:row-reverse}.tox[dir=rtl] .tox-statusbar__path>*{margin-left:4px}.tox .tox-throbber{z-index:1400}.tox .tox-throbber__busy-spinner{align-items:center;background-color:rgba(255,255,255,.6);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0}.tox .tox-tbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#222f3e;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0;text-transform:normal;width:34px}.tox .tox-tbtn svg{display:block;fill:#222f3e}.tox .tox-tbtn.tox-tbtn-more{padding-left:5px;padding-right:5px;width:inherit}.tox .tox-tbtn:focus{background:#dee0e2;border:0;box-shadow:none}.tox .tox-tbtn:hover{background:#dee0e2;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn:hover svg{fill:#222f3e}.tox .tox-tbtn:active{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn:active svg{fill:#222f3e}.tox .tox-tbtn--disabled,.tox .tox-tbtn--disabled:hover,.tox .tox-tbtn:disabled,.tox .tox-tbtn:disabled:hover{background:0 0;border:0;box-shadow:none;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-tbtn--disabled svg,.tox .tox-tbtn--disabled:hover svg,.tox .tox-tbtn:disabled svg,.tox .tox-tbtn:disabled:hover svg{fill:rgba(34,47,62,.5)}.tox .tox-tbtn--enabled,.tox .tox-tbtn--enabled:hover{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn--enabled:hover>*,.tox .tox-tbtn--enabled>*{transform:none}.tox .tox-tbtn--enabled svg,.tox .tox-tbtn--enabled:hover svg{fill:#222f3e}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled){color:#222f3e}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg{fill:#222f3e}.tox .tox-tbtn:active>*{transform:none}.tox .tox-tbtn--md{height:51px;width:51px}.tox .tox-tbtn--lg{flex-direction:column;height:68px;width:68px}.tox .tox-tbtn--return{-ms-grid-row-align:stretch;align-self:stretch;height:unset;width:16px}.tox .tox-tbtn--labeled{padding:0 4px;width:unset}.tox .tox-tbtn__vlabel{display:block;font-size:10px;font-weight:400;letter-spacing:-.025em;margin-bottom:4px;white-space:nowrap}.tox .tox-tbtn--select{margin:2px 0 3px 0;padding:0 4px;width:auto}.tox .tox-tbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-tbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-tbtn__select-chevron svg{fill:rgba(34,47,62,.5)}.tox .tox-tbtn--bespoke .tox-tbtn__select-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:7em}.tox .tox-split-button{border:0;border-radius:3px;box-sizing:border-box;display:flex;margin:2px 0 3px 0;overflow:hidden}.tox .tox-split-button:hover{box-shadow:0 0 0 1px #dee0e2 inset}.tox .tox-split-button:focus{background:#dee0e2;box-shadow:none;color:#222f3e}.tox .tox-split-button>*{border-radius:0}.tox .tox-split-button__chevron{width:16px}.tox .tox-split-button__chevron svg{fill:rgba(34,47,62,.5)}.tox .tox-split-button .tox-tbtn{margin:0}.tox.tox-platform-touch .tox-split-button .tox-tbtn:first-child{width:30px}.tox.tox-platform-touch .tox-split-button__chevron{width:20px}.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus,.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover,.tox .tox-split-button.tox-tbtn--disabled:focus,.tox .tox-split-button.tox-tbtn--disabled:hover{background:0 0;box-shadow:none;color:rgba(34,47,62,.5)}.tox .tox-toolbar-overlord{background-color:#fff}.tox .tox-toolbar,.tox .tox-toolbar__overflow,.tox .tox-toolbar__primary{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E") left 0 top 0 #fff;background-color:#fff;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 0}.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed{height:0;opacity:0;padding-bottom:0;padding-top:0;visibility:hidden}.tox .tox-toolbar__overflow--growing{transition:height .3s ease,opacity .2s linear .1s}.tox .tox-toolbar__overflow--shrinking{transition:opacity .3s ease,height .2s linear .1s,visibility 0s linear .3s}.tox .tox-toolbar--scrolling{flex-wrap:nowrap;overflow-x:auto}.tox .tox-pop .tox-toolbar{border-width:0}.tox .tox-toolbar--no-divider{background-image:none}.tox.tox-tinymce-aux .tox-toolbar__overflow{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15)}.tox[dir=rtl] .tox-tbtn__icon-rtl svg{transform:rotateY(180deg)}.tox .tox-toolbar__group{align-items:center;display:flex;flex-wrap:wrap;margin:0 0;padding:0 4px 0 4px}.tox .tox-toolbar__group--pull-right{margin-left:auto}.tox .tox-toolbar--scrolling .tox-toolbar__group{flex-shrink:0;flex-wrap:nowrap}.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type){border-right:1px solid #ccc}.tox[dir=rtl] .tox-toolbar__group:not(:last-of-type){border-left:1px solid #ccc}.tox .tox-tooltip{display:inline-block;padding:8px;position:relative}.tox .tox-tooltip__body{background-color:#222f3e;border-radius:3px;box-shadow:0 2px 4px rgba(34,47,62,.3);color:rgba(255,255,255,.75);font-size:14px;font-style:normal;font-weight:400;padding:4px 8px;text-transform:normal}.tox .tox-tooltip__arrow{position:absolute}.tox .tox-tooltip--down .tox-tooltip__arrow{border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #222f3e;bottom:0;left:50%;position:absolute;transform:translateX(-50%)}.tox .tox-tooltip--up .tox-tooltip__arrow{border-bottom:8px solid #222f3e;border-left:8px solid transparent;border-right:8px solid transparent;left:50%;position:absolute;top:0;transform:translateX(-50%)}.tox .tox-tooltip--right .tox-tooltip__arrow{border-bottom:8px solid transparent;border-left:8px solid #222f3e;border-top:8px solid transparent;position:absolute;right:0;top:50%;transform:translateY(-50%)}.tox .tox-tooltip--left .tox-tooltip__arrow{border-bottom:8px solid transparent;border-right:8px solid #222f3e;border-top:8px solid transparent;left:0;position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-well{border:1px solid #ccc;border-radius:3px;padding:8px;width:100%}.tox .tox-well>:first-child{margin-top:0}.tox .tox-well>:last-child{margin-bottom:0}.tox .tox-well>:only-child{margin:0}.tox .tox-custom-editor{border:1px solid #ccc;border-radius:3px;display:flex;height:525px}.tox .tox-dialog-loading::before{background-color:rgba(0,0,0,.5);content:"";height:100%;position:absolute;width:100%;z-index:1000}.tox .tox-tab{cursor:pointer}.tox .tox-dialog__content-js{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-content .tox-collection{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-image-tools-edit-panel{height:60px}.tox .tox-image-tools__sidebar{height:60px}
diff --git a/app/static/vendors/tinymce/js/tinymce/skins/ui/oxide/skin.mobile.min.css b/app/static/vendors/tinymce/js/tinymce/skins/ui/oxide/skin.mobile.min.css
deleted file mode 100644 (file)
index 3a45cac..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- */
-.tinymce-mobile-outer-container{all:initial;display:block}.tinymce-mobile-outer-container *{border:0;box-sizing:initial;cursor:inherit;float:none;line-height:1;margin:0;outline:0;padding:0;-webkit-tap-highlight-color:transparent;text-shadow:none;white-space:nowrap}.tinymce-mobile-icon-arrow-back::before{content:"\e5cd"}.tinymce-mobile-icon-image::before{content:"\e412"}.tinymce-mobile-icon-cancel-circle::before{content:"\e5c9"}.tinymce-mobile-icon-full-dot::before{content:"\e061"}.tinymce-mobile-icon-align-center::before{content:"\e234"}.tinymce-mobile-icon-align-left::before{content:"\e236"}.tinymce-mobile-icon-align-right::before{content:"\e237"}.tinymce-mobile-icon-bold::before{content:"\e238"}.tinymce-mobile-icon-italic::before{content:"\e23f"}.tinymce-mobile-icon-unordered-list::before{content:"\e241"}.tinymce-mobile-icon-ordered-list::before{content:"\e242"}.tinymce-mobile-icon-font-size::before{content:"\e245"}.tinymce-mobile-icon-underline::before{content:"\e249"}.tinymce-mobile-icon-link::before{content:"\e157"}.tinymce-mobile-icon-unlink::before{content:"\eca2"}.tinymce-mobile-icon-color::before{content:"\e891"}.tinymce-mobile-icon-previous::before{content:"\e314"}.tinymce-mobile-icon-next::before{content:"\e315"}.tinymce-mobile-icon-large-font::before,.tinymce-mobile-icon-style-formats::before{content:"\e264"}.tinymce-mobile-icon-undo::before{content:"\e166"}.tinymce-mobile-icon-redo::before{content:"\e15a"}.tinymce-mobile-icon-removeformat::before{content:"\e239"}.tinymce-mobile-icon-small-font::before{content:"\e906"}.tinymce-mobile-format-matches::after,.tinymce-mobile-icon-readonly-back::before{content:"\e5ca"}.tinymce-mobile-icon-small-heading::before{content:"small"}.tinymce-mobile-icon-large-heading::before{content:"large"}.tinymce-mobile-icon-large-heading::before,.tinymce-mobile-icon-small-heading::before{font-family:sans-serif;font-size:80%}.tinymce-mobile-mask-edit-icon::before{content:"\e254"}.tinymce-mobile-icon-back::before{content:"\e5c4"}.tinymce-mobile-icon-heading::before{content:"Headings";font-family:sans-serif;font-size:80%;font-weight:700}.tinymce-mobile-icon-h1::before{content:"H1";font-weight:700}.tinymce-mobile-icon-h2::before{content:"H2";font-weight:700}.tinymce-mobile-icon-h3::before{content:"H3";font-weight:700}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask{align-items:center;display:flex;justify-content:center;background:rgba(51,51,51,.5);height:100%;position:absolute;top:0;width:100%}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container{align-items:center;border-radius:50%;display:flex;flex-direction:column;font-family:sans-serif;font-size:1em;justify-content:space-between}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .mixin-menu-item{align-items:center;display:flex;justify-content:center;border-radius:50%;height:2.1em;width:2.1em}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section{align-items:center;display:flex;justify-content:center;flex-direction:column;font-size:1em}@media only screen and (min-device-width:700px){.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section{font-size:1.2em}}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon{align-items:center;display:flex;justify-content:center;border-radius:50%;height:2.1em;width:2.1em;background-color:#fff;color:#207ab7}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon::before{content:"\e900";font-family:tinymce-mobile,sans-serif}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section:not(.tinymce-mobile-mask-tap-icon-selected) .tinymce-mobile-mask-tap-icon{z-index:2}.tinymce-mobile-android-container.tinymce-mobile-android-maximized{background:#fff;border:none;bottom:0;display:flex;flex-direction:column;left:0;position:fixed;right:0;top:0}.tinymce-mobile-android-container:not(.tinymce-mobile-android-maximized){position:relative}.tinymce-mobile-android-container .tinymce-mobile-editor-socket{display:flex;flex-grow:1}.tinymce-mobile-android-container .tinymce-mobile-editor-socket iframe{display:flex!important;flex-grow:1;height:auto!important}.tinymce-mobile-android-scroll-reload{overflow:hidden}:not(.tinymce-mobile-readonly-mode)>.tinymce-mobile-android-selection-context-toolbar{margin-top:23px}.tinymce-mobile-toolstrip{background:#fff;display:flex;flex:0 0 auto;z-index:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar{align-items:center;background-color:#fff;border-bottom:1px solid #ccc;display:flex;flex:1;height:2.5em;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group{align-items:center;display:flex;height:100%;flex-shrink:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group>div{align-items:center;display:flex;height:100%;flex:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-exit-container{background:#f44336}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-toolbar-scrollable-group{flex-grow:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item{padding-left:.5em;padding-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button{align-items:center;display:flex;height:80%;margin-left:2px;margin-right:2px}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button.tinymce-mobile-toolbar-button-selected{background:#c8cbcf;color:#ccc}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:first-of-type,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:last-of-type{background:#207ab7;color:#eceff1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group{align-items:center;display:flex;height:100%;flex:1;padding-bottom:.4em;padding-top:.4em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog{display:flex;min-height:1.5em;overflow:hidden;padding-left:0;padding-right:0;position:relative;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain{display:flex;height:100%;transition:left cubic-bezier(.4,0,1,1) .15s;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen{display:flex;flex:0 0 auto;justify-content:space-between;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen input{font-family:Sans-serif}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container{display:flex;flex-grow:1;position:relative}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container .tinymce-mobile-input-container-x{-ms-grid-row-align:center;align-self:center;background:inherit;border:none;border-radius:50%;color:#888;font-size:.6em;font-weight:700;height:100%;padding-right:2px;position:absolute;right:0}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container.tinymce-mobile-input-container-empty .tinymce-mobile-input-container-x{display:none}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous{align-items:center;display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous::before{align-items:center;display:flex;font-weight:700;height:100%;padding-left:.5em;padding-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next.tinymce-mobile-toolbar-navigation-disabled::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous.tinymce-mobile-toolbar-navigation-disabled::before{visibility:hidden}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item{color:#ccc;font-size:10px;line-height:10px;margin:0 2px;padding-top:3px}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item.tinymce-mobile-dot-active{color:#c8cbcf}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-font::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-heading::before{margin-left:.5em;margin-right:.9em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-font::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-heading::before{margin-left:.9em;margin-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider{display:flex;flex:1;margin-left:0;margin-right:0;padding:.28em 0;position:relative}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container{align-items:center;display:flex;flex-grow:1;height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container .tinymce-mobile-slider-size-line{background:#ccc;display:flex;flex:1;height:.2em;margin-bottom:.3em;margin-top:.3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container{padding-left:2em;padding-right:2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container{align-items:center;display:flex;flex-grow:1;height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container .tinymce-mobile-slider-gradient{background:linear-gradient(to right,red 0,#feff00 17%,#0f0 33%,#00feff 50%,#00f 67%,#ff00fe 83%,red 100%);display:flex;flex:1;height:.2em;margin-bottom:.3em;margin-top:.3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-black{background:#000;height:.2em;margin-bottom:.3em;margin-top:.3em;width:1.2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-white{background:#fff;height:.2em;margin-bottom:.3em;margin-top:.3em;width:1.2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb{align-items:center;background-clip:padding-box;background-color:#455a64;border:.5em solid rgba(136,136,136,0);border-radius:3em;bottom:0;color:#fff;display:flex;height:.5em;justify-content:center;left:-10px;margin:auto;position:absolute;top:0;transition:border 120ms cubic-bezier(.39,.58,.57,1);width:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb.tinymce-mobile-thumb-active{border:.5em solid rgba(136,136,136,.39)}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group>div{align-items:center;display:flex;height:100%;flex:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper{flex-direction:column;justify-content:center}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item{align-items:center;display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item:not(.tinymce-mobile-serialised-dialog){height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-container{display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input{background:#fff;border:none;border-radius:0;color:#455a64;flex-grow:1;font-size:.85em;padding-bottom:.1em;padding-left:5px;padding-top:.1em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::-webkit-input-placeholder{color:#888}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::placeholder{color:#888}.tinymce-mobile-dropup{background:#fff;display:flex;overflow:hidden;width:100%}.tinymce-mobile-dropup.tinymce-mobile-dropup-shrinking{transition:height .3s ease-out}.tinymce-mobile-dropup.tinymce-mobile-dropup-growing{transition:height .3s ease-in}.tinymce-mobile-dropup.tinymce-mobile-dropup-closed{flex-grow:0}.tinymce-mobile-dropup.tinymce-mobile-dropup-open:not(.tinymce-mobile-dropup-growing){flex-grow:1}.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:200px}@media only screen and (orientation:landscape){.tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:200px}}@media only screen and (min-device-width :320px) and (max-device-width :568px) and (orientation :landscape){.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:150px}}.tinymce-mobile-styles-menu{font-family:sans-serif;outline:4px solid #000;overflow:hidden;position:relative;width:100%}.tinymce-mobile-styles-menu [role=menu]{display:flex;flex-direction:column;height:100%;position:absolute;width:100%}.tinymce-mobile-styles-menu [role=menu].transitioning{transition:transform .5s ease-in-out}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item{border-bottom:1px solid #ddd;color:#455a64;cursor:pointer;display:flex;padding:1em 1em;position:relative}.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser .tinymce-mobile-styles-collapse-icon::before{color:#455a64;content:"\e314";font-family:tinymce-mobile,sans-serif}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-styles-item-is-menu::after{color:#455a64;content:"\e315";font-family:tinymce-mobile,sans-serif;padding-left:1em;padding-right:1em;position:absolute;right:0}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-format-matches::after{font-family:tinymce-mobile,sans-serif;padding-left:1em;padding-right:1em;position:absolute;right:0}.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser,.tinymce-mobile-styles-menu .tinymce-mobile-styles-separator{align-items:center;background:#fff;border-top:#455a64;color:#455a64;display:flex;min-height:2.5em;padding-left:1em;padding-right:1em}.tinymce-mobile-styles-menu [data-transitioning-destination=before][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=before]{transform:translate(-100%)}.tinymce-mobile-styles-menu [data-transitioning-destination=current][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=current]{transform:translate(0)}.tinymce-mobile-styles-menu [data-transitioning-destination=after][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=after]{transform:translate(100%)}@font-face{font-family:tinymce-mobile;font-style:normal;font-weight:400;src:url(fonts/tinymce-mobile.woff?8x92w3) format('woff')}@media (min-device-width:700px){.tinymce-mobile-outer-container,.tinymce-mobile-outer-container input{font-size:25px}}@media (max-device-width:700px){.tinymce-mobile-outer-container,.tinymce-mobile-outer-container input{font-size:18px}}.tinymce-mobile-icon{font-family:tinymce-mobile,sans-serif}.mixin-flex-and-centre{align-items:center;display:flex;justify-content:center}.mixin-flex-bar{align-items:center;display:flex;height:100%}.tinymce-mobile-outer-container .tinymce-mobile-editor-socket iframe{background-color:#fff;width:100%}.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{background-color:#207ab7;border-radius:50%;bottom:1em;color:#fff;font-size:1em;height:2.1em;position:fixed;right:2em;width:2.1em;align-items:center;display:flex;justify-content:center}@media only screen and (min-device-width:700px){.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{font-size:1.2em}}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket{height:300px;overflow:hidden}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket iframe{height:100%}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-toolstrip{display:none}input[type=file]::-webkit-file-upload-button{display:none}@media only screen and (min-device-width :320px) and (max-device-width :568px) and (orientation :landscape){.tinymce-mobile-ios-container .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{bottom:50%}}
diff --git a/app/static/vendors/tinymce/js/tinymce/themes/mobile/theme.min.js b/app/static/vendors/tinymce/js/tinymce/themes/mobile/theme.min.js
deleted file mode 100644 (file)
index 482b3b2..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.3 (2019-12-04)
- */
-!function(d){"use strict";var x=function(){return(x=Object.assign||function(n){for(var e,t=1,r=arguments.length;t<r;t++)for(var o in e=arguments[t])Object.prototype.hasOwnProperty.call(e,o)&&(n[o]=e[o]);return n}).apply(this,arguments)};function u(n,e){var t={};for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&e.indexOf(r)<0&&(t[r]=n[r]);if(null!=n&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(n);o<r.length;o++)e.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(n,r[o])&&(t[r[o]]=n[r[o]])}return t}function w(){}function y(n){return n}var i=function(t,r){return function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];return t(r.apply(null,n))}},v=function(n){return function(){return n}};function l(r){for(var o=[],n=1;n<arguments.length;n++)o[n-1]=arguments[n];return function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];var t=o.concat(n);return r.apply(null,t)}}function m(t){return function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];return!t.apply(null,n)}}function o(n){return function(){throw new Error(n)}}function t(n){return n()}function n(){return f}var e,c=v(!1),a=v(!0),f=(e={fold:function(n,e){return n()},is:c,isSome:c,isNone:a,getOr:g,getOrThunk:s,getOrDie:function(n){throw new Error(n||"error: getOrDie called on none.")},getOrNull:v(null),getOrUndefined:v(undefined),or:g,orThunk:s,map:n,each:w,bind:n,exists:c,forall:a,filter:n,equals:r,equals_:r,toArray:function(){return[]},toString:v("none()")},Object.freeze&&Object.freeze(e),e);function r(n){return n.isNone()}function s(n){return n()}function g(n){return n}function S(n,t){return jn(n,function(n,e){return{k:e,v:t(n,e)}})}function p(n,e){return Vn.call(n,e)}function h(n,e){var t=function(n,e){for(var t=0;t<n.length;t++){var r=n[t];if(r.test(e))return r}return undefined}(n,e);if(!t)return{major:0,minor:0};function r(n){return Number(e.replace(t,"$"+n))}return zn(r(1),r(2))}function b(n,e){return function(){return e===n}}function T(n,e){return function(){return e===n}}function O(e){return function(n){return function(n){if(null===n)return"null";var e=typeof n;return"object"==e&&(Array.prototype.isPrototypeOf(n)||n.constructor&&"Array"===n.constructor.name)?"array":"object"==e&&(String.prototype.isPrototypeOf(n)||n.constructor&&"String"===n.constructor.name)?"string":e}(n)===e}}function k(n,e){return-1<function(n,e){return se.call(n,e)}(n,e)}function E(n,e){for(var t=0,r=n.length;t<r;t++){if(e(n[t],t))return!0}return!1}function C(n,e){for(var t=0,r=n.length;t<r;t++){e(n[t],t)}}function D(n,e){for(var t=[],r=0,o=n.length;r<o;r++){var i=n[r];e(i,r)&&t.push(i)}return t}function M(n,e,t){return function(n,e){for(var t=n.length-1;0<=t;t--){e(n[t],t)}}(n,function(n){t=e(t,n)}),t}function I(n,e,t){return C(n,function(n){t=e(t,n)}),t}function R(n,e){for(var t=0,r=n.length;t<r;t++){var o=n[t];if(e(o,t))return Fn.some(o)}return Fn.none()}function A(n,e){for(var t=0,r=n.length;t<r;t++){if(e(n[t],t))return Fn.some(t)}return Fn.none()}function F(n){for(var e=[],t=0,r=n.length;t<r;++t){if(!ie(n[t]))throw new Error("Arr.flatten item "+t+" was not an array, input: "+n);le.apply(e,n[t])}return e}function B(n,e){var t=de(n,e);return F(t)}function V(n,e){for(var t=0,r=n.length;t<r;++t){if(!0!==e(n[t],t))return!1}return!0}function N(n){var e=fe.call(n,0);return e.reverse(),e}function j(n,e){return D(n,function(n){return!k(e,n)})}function _(n){return[n]}function P(n,e){var t=String(e).toLowerCase();return R(n,function(n){return n.search(t)})}function H(n,e){return-1!==n.indexOf(e)}function z(e){return function(n){return H(n,e)}}function L(){return be.get()}function G(n,e){Ye(n,n.element(),e,{})}function U(n,e,t){Ye(n,n.element(),e,t)}function $(n){G(n,Pe())}function W(n,e,t){Ye(n,e,t,{})}function X(t){var r,o=!1;return function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];return o||(o=!0,r=t.apply(null,n)),r}}function q(n){return n.dom().nodeName.toLowerCase()}function Y(e){return function(n){return function(n){return n.dom().nodeType}(n)===e}}function K(n){var e=tt(n)?n.dom().parentNode:n.dom();return e!==undefined&&null!==e&&e.ownerDocument.body.contains(e)}function J(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];if(e.length!==t.length)throw new Error('Wrong number of arguments to struct. Expected "['+e.length+']", got '+t.length+" arguments");var r={};return C(e,function(n,e){r[n]=v(t[e])}),r}}function Q(n){return n.slice(0).sort()}function Z(e,n){if(!ie(n))throw new Error("The "+e+" fields must be an array. Was: "+n+".");C(n,function(n){if(!re(n))throw new Error("The value "+n+" in the "+e+" fields was not a string.")})}function nn(o,i){var u=o.concat(i);if(0===u.length)throw new Error("You must specify at least one required or optional field.");return Z("required",o),Z("optional",i),function(n){var t=Q(n);R(t,function(n,e){return e<t.length-1&&n===t[e+1]}).each(function(n){throw new Error("The field: "+n+" occurs more than once in the combined fields: ["+t.join(", ")+"].")})}(u),function(e){var t=Bn(e);V(o,function(n){return k(t,n)})||function(n,e){throw new Error("All required keys ("+Q(n).join(", ")+") were not specified. Specified keys were: "+Q(e).join(", ")+".")}(o,t);var n=D(t,function(n){return!k(u,n)});0<n.length&&function(n){throw new Error("Unsupported keys for object: "+Q(n).join(", "))}(n);var r={};return C(o,function(n){r[n]=v(e[n])}),C(i,function(n){r[n]=v(Object.prototype.hasOwnProperty.call(e,n)?Fn.some(e[n]):Fn.none())}),r}}function en(n,e,t){return 0!=(n.compareDocumentPosition(e)&t)}function tn(n,e){var t=n.dom();if(t.nodeType!==ut)return!1;var r=t;if(r.matches!==undefined)return r.matches(e);if(r.msMatchesSelector!==undefined)return r.msMatchesSelector(e);if(r.webkitMatchesSelector!==undefined)return r.webkitMatchesSelector(e);if(r.mozMatchesSelector!==undefined)return r.mozMatchesSelector(e);throw new Error("Browser lacks native selectors")}function rn(n){return n.nodeType!==ut&&n.nodeType!==ct||0===n.childElementCount}function on(n,e){var t=e===undefined?d.document:e.dom();return rn(t)?[]:de(t.querySelectorAll(n),Je.fromDom)}function un(n,e){var t=e===undefined?d.document:e.dom();return rn(t)?Fn.none():Fn.from(t.querySelector(n)).map(Je.fromDom)}function cn(n,e){return n.dom()===e.dom()}function an(n){return Je.fromDom(n.dom().ownerDocument)}function fn(n){return Fn.from(n.dom().parentNode).map(Je.fromDom)}function sn(n,e){var t=n.dom().childNodes;return Fn.from(t[e]).map(Je.fromDom)}function ln(e,t){fn(e).each(function(n){n.dom().insertBefore(t.dom(),e.dom())})}function dn(n,e){(function(n){return Fn.from(n.dom().nextSibling).map(Je.fromDom)})(n).fold(function(){fn(n).each(function(n){ft(n,e)})},function(n){ln(n,e)})}function mn(e,t){(function(n){return sn(n,0)})(e).fold(function(){ft(e,t)},function(n){e.dom().insertBefore(t.dom(),n.dom())})}function gn(e,n){C(n,function(n){ft(e,n)})}function pn(n){n.dom().textContent="",C(at(n),function(n){st(n)})}function hn(n,e){ft(n.element(),e.element())}function vn(e,n){var t=e.components();!function(n){C(n.components(),function(n){return st(n.element())}),pn(n.element()),n.syncComponents()}(e);var r=j(t,n);C(r,function(n){lt(n),e.getSystem().removeFromWorld(n)}),C(n,function(n){n.getSystem().isConnected()?hn(e,n):(e.getSystem().addToWorld(n),hn(e,n),K(e.element())&&dt(n)),e.syncComponents()})}function yn(e){var n=fn(e.element()).bind(function(n){return e.getSystem().getByDom(n).toOption()});!function(n){lt(n),st(n.element()),n.getSystem().removeFromWorld(n)}(e),n.each(function(n){n.syncComponents()})}function bn(u){return function(){for(var n=new Array(arguments.length),e=0;e<n.length;e++)n[e]=arguments[e];if(0===n.length)throw new Error("Can't merge zero objects");for(var t={},r=0;r<n.length;r++){var o=n[r];for(var i in o)bt.call(o,i)&&(t[i]=u(t[i],o[i]))}return t}}function xn(n){return St.defaultedThunk(v(n))}function wn(e){return function(n){return p(n,e)?Fn.from(n[e]):Fn.none()}}function Sn(n,e){return wn(e)(n)}function Tn(n,e){var t={};return t[n]=e,t}function On(n,e){return function(n,t){var r={};return Nn(n,function(n,e){k(t,e)||(r[e]=n)}),r}(n,e)}function kn(n,e){return function(e,t){return function(n){return p(n,e)?n[e]:t}}(n,e)}function En(n,e){return Tn(n,e)}function Cn(n){return function(n){var e={};return C(n,function(n){e[n.key]=n.value}),e}(n)}function Dn(n,e){var t=function(n){var e=[],t=[];return C(n,function(n){n.fold(function(n){e.push(n)},function(n){t.push(n)})}),{errors:e,values:t}}(n);return 0<t.errors.length?function(n){return vt.error(F(n))}(t.errors):function(n,e){return 0===n.length?vt.value(e):vt.value(xt(e,wt.apply(undefined,n)))}(t.values,e)}function Mn(n,e){return function(n,e){return p(n,e)&&n[e]!==undefined&&null!==n[e]}(n,e)}var In,Rn,An=function(t){function n(){return o}function e(n){return n(t)}var r=v(t),o={fold:function(n,e){return e(t)},is:function(n){return t===n},isSome:a,isNone:c,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:n,orThunk:n,map:function(n){return An(n(t))},each:function(n){n(t)},bind:e,exists:e,forall:e,filter:function(n){return n(t)?o:f},toArray:function(){return[t]},toString:function(){return"some("+t+")"},equals:function(n){return n.is(t)},equals_:function(n,e){return n.fold(c,function(n){return e(t,n)})}};return o},Fn={some:An,none:n,from:function(n){return null===n||n===undefined?f:An(n)}},Bn=Object.keys,Vn=Object.hasOwnProperty,Nn=function(n,e){for(var t=Bn(n),r=0,o=t.length;r<o;r++){var i=t[r];e(n[i],i)}},jn=function(n,r){var o={};return Nn(n,function(n,e){var t=r(n,e);o[t.k]=t.v}),o},_n=function(n,t){var r=[];return Nn(n,function(n,e){r.push(t(n,e))}),r},Pn=function(n){function e(){return t}var t=n;return{get:e,set:function(n){t=n},clone:function(){return Pn(e())}}},Hn=function(){return zn(0,0)},zn=function(n,e){return{major:n,minor:e}},Ln={nu:zn,detect:function(n,e){var t=String(e).toLowerCase();return 0===n.length?Hn():h(n,t)},unknown:Hn},Gn="Edge",Un="Chrome",$n="Opera",Wn="Firefox",Xn="Safari",qn=function(n){var e=n.current;return{current:e,version:n.version,isEdge:b(Gn,e),isChrome:b(Un,e),isIE:b("IE",e),isOpera:b($n,e),isFirefox:b(Wn,e),isSafari:b(Xn,e)}},Yn={unknown:function(){return qn({current:undefined,version:Ln.unknown()})},nu:qn,edge:v(Gn),chrome:v(Un),ie:v("IE"),opera:v($n),firefox:v(Wn),safari:v(Xn)},Kn="Windows",Jn="Android",Qn="Linux",Zn="Solaris",ne="FreeBSD",ee=function(n){var e=n.current;return{current:e,version:n.version,isWindows:T(Kn,e),isiOS:T("iOS",e),isAndroid:T(Jn,e),isOSX:T("OSX",e),isLinux:T(Qn,e),isSolaris:T(Zn,e),isFreeBSD:T(ne,e)}},te={unknown:function(){return ee({current:undefined,version:Ln.unknown()})},nu:ee,windows:v(Kn),ios:v("iOS"),android:v(Jn),linux:v(Qn),osx:v("OSX"),solaris:v(Zn),freebsd:v(ne)},re=O("string"),oe=O("object"),ie=O("array"),ue=O("boolean"),ce=O("function"),ae=O("number"),fe=Array.prototype.slice,se=Array.prototype.indexOf,le=Array.prototype.push,de=function(n,e){for(var t=n.length,r=new Array(t),o=0;o<t;o++){var i=n[o];r[o]=e(i,o)}return r},me=(ce(Array.from)&&Array.from,function(n,t){return P(n,t).map(function(n){var e=Ln.detect(n.versionRegexes,t);return{current:n.name,version:e}})}),ge=function(n,t){return P(n,t).map(function(n){var e=Ln.detect(n.versionRegexes,t);return{current:n.name,version:e}})},pe=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,he=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(n){return H(n,"edge/")&&H(n,"chrome")&&H(n,"safari")&&H(n,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,pe],search:function(n){return H(n,"chrome")&&!H(n,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(n){return H(n,"msie")||H(n,"trident")}},{name:"Opera",versionRegexes:[pe,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:z("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:z("firefox")},{name:"Safari",versionRegexes:[pe,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(n){return(H(n,"safari")||H(n,"mobile/"))&&H(n,"applewebkit")}}],ve=[{name:"Windows",search:z("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(n){return H(n,"iphone")||H(n,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:z("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:z("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:z("linux"),versionRegexes:[]},{name:"Solaris",search:z("sunos"),versionRegexes:[]},{name:"FreeBSD",search:z("freebsd"),versionRegexes:[]}],ye={browsers:v(he),oses:v(ve)},be=Pn(function(n,e){var t=ye.browsers(),r=ye.oses(),o=me(t,n).fold(Yn.unknown,Yn.nu),i=ge(r,n).fold(te.unknown,te.nu);return{browser:o,os:i,deviceType:function(n,e,t,r){var o=n.isiOS()&&!0===/ipad/i.test(t),i=n.isiOS()&&!o,u=n.isiOS()||n.isAndroid(),c=u||r("(pointer:coarse)"),a=o||!i&&u&&r("(min-device-width:768px)"),f=i||u&&!a,s=e.isSafari()&&n.isiOS()&&!1===/safari/i.test(t),l=!f&&!a&&!s;return{isiPad:v(o),isiPhone:v(i),isTablet:v(a),isPhone:v(f),isTouch:v(c),isAndroid:n.isAndroid,isiOS:n.isiOS,isWebView:v(s),isDesktop:v(l)}}(i,o,n,e)}}(d.navigator.userAgent,function(n){return d.window.matchMedia(n).matches})),xe=v("touchstart"),we=v("touchmove"),Se=v("touchend"),Te=v("mousedown"),Oe=v("mousemove"),ke=v("mouseup"),Ee=v("mouseover"),Ce=v("keydown"),De=v("keyup"),Me=v("input"),Ie=v("change"),Re=v("click"),Ae=v("transitionend"),Fe=v("selectstart"),Be={tap:v("alloy.tap")},Ve=v("alloy.focus"),Ne=v("alloy.blur.post"),je=v("alloy.paste.post"),_e=v("alloy.receive"),Pe=v("alloy.execute"),He=v("alloy.focus.item"),ze=Be.tap,Le=v("alloy.longpress"),Ge=v("alloy.system.init"),Ue=v("alloy.system.attached"),$e=v("alloy.system.detached"),We=v("alloy.focusmanager.shifted"),Xe=v("alloy.highlight"),qe=v("alloy.dehighlight"),Ye=function(n,e,t,r){var o=x({target:e},r);n.getSystem().triggerEvent(t,e,S(o,v))},Ke=function(n){if(null===n||n===undefined)throw new Error("Node cannot be null or undefined");return{dom:v(n)}},Je={fromHtml:function(n,e){var t=(e||d.document).createElement("div");if(t.innerHTML=n,!t.hasChildNodes()||1<t.childNodes.length)throw d.console.error("HTML does not have a single root node",n),new Error("HTML must have a single root node");return Ke(t.childNodes[0])},fromTag:function(n,e){var t=(e||d.document).createElement(n);return Ke(t)},fromText:function(n,e){var t=(e||d.document).createTextNode(n);return Ke(t)},fromDom:Ke,fromPoint:function(n,e,t){var r=n.dom();return Fn.from(r.elementFromPoint(e,t)).map(Ke)}},Qe=(d.Node.ATTRIBUTE_NODE,d.Node.CDATA_SECTION_NODE,d.Node.COMMENT_NODE,d.Node.DOCUMENT_NODE),Ze=(d.Node.DOCUMENT_TYPE_NODE,d.Node.DOCUMENT_FRAGMENT_NODE,d.Node.ELEMENT_NODE),nt=d.Node.TEXT_NODE,et=(d.Node.PROCESSING_INSTRUCTION_NODE,d.Node.ENTITY_REFERENCE_NODE,d.Node.ENTITY_NODE,d.Node.NOTATION_NODE,"undefined"!=typeof d.window?d.window:Function("return this;")(),Y(Ze)),tt=Y(nt),rt=X(function(){return ot(Je.fromDom(d.document))}),ot=function(n){var e=n.dom().body;if(null===e||e===undefined)throw new Error("Body is not available yet");return Je.fromDom(e)},it=function(n,e){return en(n,e,d.Node.DOCUMENT_POSITION_CONTAINED_BY)},ut=Ze,ct=Qe,at=(L().browser.isIE(),function(n){return de(n.dom().childNodes,Je.fromDom)}),ft=(J("element","offset"),function(n,e){n.dom().appendChild(e.dom())}),st=function(n){var e=n.dom();null!==e.parentNode&&e.parentNode.removeChild(e)},lt=function(n){G(n,$e());var e=n.components();C(e,lt)},dt=function(n){var e=n.components();C(e,dt),G(n,Ue())},mt=function(n,e,t){n.getSystem().addToWorld(e),t(n.element(),e.element()),K(n.element())&&dt(e),n.syncComponents()},gt=function(n,e,t){t(n,e.element());var r=at(e.element());C(r,function(n){e.getByDom(n).each(dt)})},pt=function(t){return{is:function(n){return t===n},isValue:a,isError:c,getOr:v(t),getOrThunk:v(t),getOrDie:v(t),or:function(n){return pt(t)},orThunk:function(n){return pt(t)},fold:function(n,e){return e(t)},map:function(n){return pt(n(t))},mapError:function(n){return pt(t)},each:function(n){n(t)},bind:function(n){return n(t)},exists:function(n){return n(t)},forall:function(n){return n(t)},toOption:function(){return Fn.some(t)}}},ht=function(t){return{is:c,isValue:c,isError:a,getOr:y,getOrThunk:function(n){return n()},getOrDie:function(){return o(String(t))()},or:function(n){return n},orThunk:function(n){return n()},fold:function(n,e){return n(t)},map:function(n){return ht(t)},mapError:function(n){return ht(n(t))},each:w,bind:function(n){return ht(t)},exists:c,forall:a,toOption:Fn.none}},vt={value:pt,error:ht,fromOption:function(n,e){return n.fold(function(){return ht(e)},pt)}},yt=function(u){if(!ie(u))throw new Error("cases must be an array");if(0===u.length)throw new Error("there must be at least one case");var c=[],t={};return C(u,function(n,r){var e=Bn(n);if(1!==e.length)throw new Error("one and only one name per case");var o=e[0],i=n[o];if(t[o]!==undefined)throw new Error("duplicate key detected:"+o);if("cata"===o)throw new Error("cannot have a case named cata (sorry)");if(!ie(i))throw new Error("case arguments must be an array");c.push(o),t[o]=function(){var n=arguments.length;if(n!==i.length)throw new Error("Wrong number of arguments to case "+o+". Expected "+i.length+" ("+i+"), got "+n);for(var t=new Array(n),e=0;e<t.length;e++)t[e]=arguments[e];return{fold:function(){if(arguments.length!==u.length)throw new Error("Wrong number of arguments to fold. Expected "+u.length+", got "+arguments.length);return arguments[r].apply(null,t)},match:function(n){var e=Bn(n);if(c.length!==e.length)throw new Error("Wrong number of arguments to match. Expected: "+c.join(",")+"\nActual: "+e.join(","));if(!V(c,function(n){return k(e,n)}))throw new Error("Not all branches were specified when using match. Specified: "+e.join(", ")+"\nRequired: "+c.join(", "));return n[o].apply(null,t)},log:function(n){d.console.log(n,{constructors:c,constructor:o,params:t})}}}}),t},bt=Object.prototype.hasOwnProperty,xt=bn(function(n,e){return oe(n)&&oe(e)?xt(n,e):e}),wt=bn(function(n,e){return e}),St=yt([{strict:[]},{defaultedThunk:["fallbackThunk"]},{asOption:[]},{asDefaultedOptionThunk:["fallbackThunk"]},{mergeWithThunk:["baseThunk"]}]),Tt=St.strict,Ot=St.asOption,kt=St.defaultedThunk,Et=St.mergeWithThunk,Ct=(yt([{bothErrors:["error1","error2"]},{firstError:["error1","value2"]},{secondError:["value1","error2"]},{bothValues:["value1","value2"]}]),function(n){return wn(n)}),Dt=function(n,e){return Sn(n,e)};(Rn=In=In||{})[Rn.Error=0]="Error",Rn[Rn.Value=1]="Value";function Mt(n,e,t){return n.stype===In.Error?e(n.serror):t(n.svalue)}function It(n){return{stype:In.Value,svalue:n}}function Rt(n){return{stype:In.Error,serror:n}}function At(n){return i(gr,F)(n)}function Ft(n){return oe(n)&&100<Bn(n).length?" removed due to size":JSON.stringify(n,null,2)}function Bt(n,e){return gr([{path:n,getErrorInfo:e}])}function Vt(n,e,t){return Sn(e,t).fold(function(){return function(n,e,t){return Bt(n,function(){return'Could not find valid *strict* value for "'+e+'" in '+Ft(t)})}(n,t,e)},dr)}function Nt(n,e,t){var r=Sn(n,e).fold(function(){return t(n)},y);return dr(r)}function jt(u,c,n,a){return n.fold(function(r,t,n,o){function i(n){var e=o.extract(u.concat([r]),a,n);return vr(e,function(n){return Tn(t,a(n))})}function e(n){return n.fold(function(){var n=Tn(t,a(Fn.none()));return dr(n)},function(n){var e=o.extract(u.concat([r]),a,n);return vr(e,function(n){return Tn(t,a(Fn.some(n)))})})}return n.fold(function(){return pr(Vt(u,c,r),i)},function(n){return pr(Nt(c,r,n),i)},function(){return pr(function(n,e){return dr(Sn(n,e))}(c,r),e)},function(n){return pr(function(e,n,t){var r=Sn(e,n).map(function(n){return!0===n?t(e):n});return dr(r)}(c,r,n),e)},function(n){var e=n(c),t=vr(Nt(c,r,v({})),function(n){return xt(e,n)});return pr(t,i)})},function(n,e){var t=e(c);return dr(Tn(n,a(t)))})}function _t(r){return{extract:function(e,n,t){return hr(r(t,n),function(n){return function(n,e){return Bt(n,function(){return e})}(e,n)})},toString:function(){return"val"},toDsl:function(){return wr.itemOf(r)}}}function Pt(n){var i=Or(n),u=M(n,function(e,n){return n.fold(function(n){return xt(e,En(n,!0))},v(e))},{});return{extract:function(n,e,t){var r=ue(t)?[]:function(e){var n=Bn(e);return D(n,function(n){return Mn(e,n)})}(t),o=D(r,function(n){return!Mn(u,n)});return 0===o.length?i.extract(n,e,t):function(n,e){return Bt(n,function(){return"There are unsupported fields: ["+e.join(", ")+"] specified"})}(n,o)},toString:i.toString,toDsl:i.toDsl}}function Ht(t,i){function u(n,e){return function(o){return{extract:function(t,r,n){var e=de(n,function(n,e){return o.extract(t.concat(["["+e+"]"]),r,n)});return xr(e)},toString:function(){return"array("+o.toString()+")"},toDsl:function(){return wr.arrOf(o)}}}(_t(t)).extract(n,y,e)}return{extract:function(t,r,o){var n=Bn(o),e=u(t,n);return pr(e,function(n){var e=de(n,function(n){return Tr.field(n,n,Tt(),i)});return Or(e).extract(t,r,o)})},toString:function(){return"setOf("+i.toString()+")"},toDsl:function(){return wr.setOf(t,i)}}}function zt(e,t,r,n,o){return Dt(n,o).fold(function(){return function(n,e,t){return Bt(n,function(){return'The chosen schema: "'+t+'" did not exist in branches: '+Ft(e)})}(e,n,o)},function(n){return n.extract(e.concat(["branch: "+o]),t,r)})}function Lt(n,o){return{extract:function(e,t,r){return Dt(r,n).fold(function(){return function(n,e){return Bt(n,function(){return'Choice schema did not contain choice key: "'+e+'"'})}(e,n)},function(n){return zt(e,t,r,o,n)})},toString:function(){return"chooseOn("+n+"). Possible values: "+Bn(o)},toDsl:function(){return wr.choiceOf(n,o)}}}function Gt(e){return _t(function(n){return e(n).fold(gr,dr)})}function Ut(e,n){return Ht(function(n){return sr(e(n))},n)}function $t(n,e,t){return lr(function(n,e,t,r){var o=e.extract([n],t,r);return yr(o,function(n){return{input:r,errors:n}})}(n,e,y,t))}function Wt(n){return n.fold(function(n){throw new Error(Mr(n))},y)}function Xt(n,e,t){return Wt($t(n,e,t))}function qt(n,e){return Lt(n,S(e,Or))}function Yt(n){return Cr(n,n,Tt(),kr())}function Kt(n,e){return Cr(n,n,Tt(),e)}function Jt(n,e){return Cr(n,n,Tt(),Or(e))}function Qt(n){return Cr(n,n,Ot(),kr())}function Zt(n,e){return Cr(n,n,Ot(),e)}function nr(n,e){return Zt(n,Or(e))}function er(n,e){return Zt(n,Pt(e))}function tr(n,e){return Cr(n,n,xn(e),kr())}function rr(n,e,t){return Cr(n,n,xn(e),t)}function or(n,e){return Er(n,e)}function ir(n,e){return cn(n.element(),e.event().target())}function ur(n){if(!Mn(n,"can")&&!Mn(n,"abort")&&!Mn(n,"run"))throw new Error("EventHandler defined by: "+JSON.stringify(n,null,2)+" does not have can, abort, or run!");return Xt("Extracting event.handler",Pt([tr("can",v(!0)),tr("abort",v(!1)),tr("run",w)]),n)}function cr(t){var n=function(e,r){return function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return I(e,function(n,e){return n&&r(e).apply(undefined,t)},!0)}}(t,function(n){return n.can}),e=function(e,r){return function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return I(e,function(n,e){return n||r(e).apply(undefined,t)},!1)}}(t,function(n){return n.abort});return ur({can:n,abort:e,run:function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];C(t,function(n){n.run.apply(undefined,e)})}})}var ar,fr,sr=function(n){return n.fold(Rt,It)},lr=function(n){return Mt(n,vt.error,vt.value)},dr=It,mr=function(n){var e=[],t=[];return C(n,function(n){Mt(n,function(n){return t.push(n)},function(n){return e.push(n)})}),{values:e,errors:t}},gr=Rt,pr=function(n,e){return n.stype===In.Value?e(n.svalue):n},hr=function(n,e){return n.stype===In.Error?e(n.serror):n},vr=function(n,e){return n.stype===In.Value?{stype:In.Value,svalue:e(n.svalue)}:n},yr=function(n,e){return n.stype===In.Error?{stype:In.Error,serror:e(n.serror)}:n},br=function(n,e){var t=mr(n);return 0<t.errors.length?At(t.errors):function(n,e){return 0<n.length?dr(xt(e,wt.apply(undefined,n))):dr(e)}(t.values,e)},xr=function(n){var e=mr(n);return 0<e.errors.length?At(e.errors):dr(e.values)},wr=yt([{setOf:["validator","valueType"]},{arrOf:["valueType"]},{objOf:["fields"]},{itemOf:["validator"]},{choiceOf:["key","branches"]},{thunk:["description"]},{func:["args","outputSchema"]}]),Sr=yt([{field:["name","presence","type"]},{state:["name"]}]),Tr=yt([{field:["key","okey","presence","prop"]},{state:["okey","instantiator"]}]),Or=function(r){return{extract:function(n,e,t){return function(e,t,n,r){var o=de(n,function(n){return jt(e,t,n,r)});return br(o,{})}(n,t,r,e)},toString:function(){return"obj{\n"+de(r,function(n){return n.fold(function(n,e,t,r){return n+" -> "+r.toString()},function(n,e){return"state("+n+")"})}).join("\n")+"}"},toDsl:function(){return wr.objOf(de(r,function(n){return n.fold(function(n,e,t,r){return Sr.field(n,t,r)},function(n,e){return Sr.state(n)})}))}}},kr=v(_t(dr)),Er=Tr.state,Cr=Tr.field,Dr=_t(dr),Mr=function(n){return"Errors: \n"+function(n){var e=10<n.length?n.slice(0,10).concat([{path:[],getErrorInfo:function(){return"... (only showing first ten failures)"}}]):n;return de(e,function(n){return"Failed path: ("+n.path.join(" > ")+")\n"+n.getErrorInfo()})}(n.errors)+"\n\nInput object: "+Ft(n.input)},Ir=v(Dr),Rr=(ar=ce,fr="function",_t(function(n){var e=typeof n;return ar(n)?dr(n):gr("Expected type: "+fr+" but got: "+e)}));function Ar(n,e,t,r,o){return n(t,r)?Fn.some(t):ce(o)&&o(t)?Fn.none():e(t,r,o)}function Fr(n,e,t){for(var r=n.dom(),o=ce(t)?t:v(!1);r.parentNode;){r=r.parentNode;var i=Je.fromDom(r);if(e(i))return Fn.some(i);if(o(i))break}return Fn.none()}function Br(n,e,t){return Ar(function(n,e){return e(n)},Fr,n,e,t)}function Vr(n,o){var i=function(n){for(var e=0;e<n.childNodes.length;e++){var t=Je.fromDom(n.childNodes[e]);if(o(t))return Fn.some(t);var r=i(n.childNodes[e]);if(r.isSome())return r}return Fn.none()};return i(n.dom())}function Nr(n){return Cn(n)}function jr(n,e){return{key:n,value:ur({abort:e})}}function _r(n,e){return{key:n,value:ur({run:e})}}function Pr(n,e,t){return{key:n,value:ur({run:function(n){e.apply(undefined,[n].concat(t))}})}}function Hr(n){return function(t){return{key:n,value:ur({run:function(n,e){ir(n,e)&&t(n,e)}})}}}function zr(n,e,t){return function(t,r){return _r(t,function(n,e){n.getSystem().getByUid(r).each(function(n){!function(n,e,t,r){n.getSystem().triggerEvent(t,e,r.event())}(n,n.element(),t,e)})})}(n,e.partUids[t])}function Lr(n){return _r(n,function(n,e){e.cut()})}function Gr(n,e){var t=n.toString(),r=t.indexOf(")")+1,o=t.indexOf("("),i=t.substring(o+1,r-1).split(/,\s*/);return n.toFunctionAnnotation=function(){return{name:e,parameters:Io(i)}},n}function Ur(n){return{classes:n.classes!==undefined?n.classes:[],attributes:n.attributes!==undefined?n.attributes:{},styles:n.styles!==undefined?n.styles:{}}}function $r(t,r,o){return Do(function(n,e){o(n,t,r)})}function Wr(o,i,u){return function(n,e,t){var r=t.toString(),o=r.indexOf(")")+1,i=r.indexOf("("),u=r.substring(i+1,o-1).split(/,\s*/);return n.toFunctionAnnotation=function(){return{name:e,parameters:Io(u.slice(0,1).concat(u.slice(3)))}},n}(function(t){for(var n=[],e=1;e<arguments.length;e++)n[e-1]=arguments[e];var r=[t].concat(n);return t.config({name:v(o)}).fold(function(){throw new Error("We could not find any behaviour configuration for: "+o+". Using API: "+u)},function(n){var e=Array.prototype.slice.call(r,1);return i.apply(undefined,[t,n.config,n.state].concat(e))})},u,i)}function Xr(n){return{key:n,value:undefined}}function qr(n){var e=Xt("Creating behaviour: "+n.name,Vo,n);return function(n,e,t,r,o,i){var u=Pt(n),c=nr(e,[er("config",n)]);return Ro(u,c,e,t,r,o,i)}(e.fields,e.name,e.active,e.apis,e.extra,e.state)}function Yr(n,e,t){if(!(re(t)||ue(t)||ae(t)))throw d.console.error("Invalid call to Attr.set. Key ",e,":: Value ",t,":: Element ",n),new Error("Attribute value was not simple");n.setAttribute(e,t+"")}function Kr(n,e,t){Yr(n.dom(),e,t)}function Jr(n,e){var t=n.dom();Nn(e,function(n,e){Yr(t,e,n)})}function Qr(n,e){var t=n.dom().getAttribute(e);return null===t?undefined:t}function Zr(n,e){var t=n.dom();return!(!t||!t.hasAttribute)&&t.hasAttribute(e)}function no(n,e){n.dom().removeAttribute(e)}function eo(n,e){var t=Qr(n,e);return t===undefined||""===t?[]:t.split(" ")}function to(n){return n.dom().classList!==undefined}function ro(n,e){return function(n,e,t){var r=eo(n,e).concat([t]);return Kr(n,e,r.join(" ")),!0}(n,"class",e)}function oo(n,e){return function(n,e,t){var r=D(eo(n,e),function(n){return n!==t});return 0<r.length?Kr(n,e,r.join(" ")):no(n,e),!1}(n,"class",e)}function io(n,e){to(n)?n.dom().classList.add(e):ro(n,e)}function uo(n){0===(to(n)?n.dom().classList:function(n){return eo(n,"class")}(n)).length&&no(n,"class")}function co(n,e){to(n)?n.dom().classList.remove(e):oo(n,e),uo(n)}function ao(n,e){return to(n)&&n.dom().classList.contains(e)}function fo(n,e,t){co(n,t),io(n,e)}function so(n){n.dom().focus()}function lo(n){n.dom().blur()}function mo(n){var e=n!==undefined?n.dom():d.document;return Fn.from(e.activeElement).map(Je.fromDom)}function go(e){return mo(an(e)).filter(function(n){return e.dom().contains(n.dom())})}function po(n){return n.dom().innerHTML}function ho(n,e){var t=an(n).dom(),r=Je.fromDom(t.createDocumentFragment()),o=function(n,e){var t=(e||d.document).createElement("div");return t.innerHTML=n,at(Je.fromDom(t))}(e,t);gn(r,o),pn(n),ft(n,r)}function vo(n){return function(n,e){return Je.fromDom(n.dom().cloneNode(e))}(n,!1)}function yo(n){return function(n){var e=Je.fromTag("div"),t=Je.fromDom(n.dom().cloneNode(!0));return ft(e,t),po(e)}(vo(n))}function bo(n){return yo(n)}function xo(n){for(var e=[],t=function(n){e.push(n)},r=0;r<n.length;r++)n[r].each(t);return e}function wo(n,e){for(var t=0;t<n.length;t++){var r=e(n[t],t);if(r.isSome())return r}return Fn.none()}var So,To,Oo,ko=function(n,e,t){return Br(n,function(n){return e(n).isSome()},t).bind(e)},Eo=Hr(Ue()),Co=Hr($e()),Do=Hr(Ge()),Mo=(So=Pe(),function(n){return _r(So,n)}),Io=function(n){return de(n,function(n){return function(n,e){return function(n,e,t){return""===e||!(n.length<e.length)&&n.substr(t,t+e.length)===e}(n,e,n.length-e.length)}(n,"/*")?n.substring(0,n.length-"/*".length):n})},Ro=function(t,n,r,o,e,i,u){function c(n){return Mn(n,r)?n[r]():Fn.none()}var a=S(e,function(n,e){return Wr(r,n,e)}),f=S(i,function(n,e){return Gr(n,e)}),s=x(x(x({},f),a),{revoke:l(Xr,r),config:function(n){var e=Xt(r+"-config",t,n);return{key:r,value:{config:e,me:s,configAsRaw:X(function(){return Xt(r+"-config",t,n)}),initialConfig:n,state:u}}},schema:function(){return n},exhibit:function(n,t){return c(n).bind(function(e){return Dt(o,"exhibit").map(function(n){return n(t,e.config,e.state)})}).getOr(Ur({}))},name:function(){return r},handlers:function(n){return c(n).map(function(n){return kn("events",function(n,e){return{}})(o)(n.config,n.state)}).getOr({})}});return s},Ao={init:function(){return Fo({readState:function(){return"No State required"}})}},Fo=function(n){return n},Bo=function(n){return Cn(n)},Vo=Pt([Yt("fields"),Yt("name"),tr("active",{}),tr("apis",{}),tr("state",Ao),tr("extra",{})]),No=Pt([Yt("branchKey"),Yt("branches"),Yt("name"),tr("active",{}),tr("apis",{}),tr("state",Ao),tr("extra",{})]),jo=v(undefined),_o=/* */Object.freeze({toAlpha:function(n,e,t){fo(n.element(),e.alpha,e.omega)},toOmega:function(n,e,t){fo(n.element(),e.omega,e.alpha)},isAlpha:function(n,e,t){return ao(n.element(),e.alpha)},isOmega:function(n,e,t){return ao(n.element(),e.omega)},clear:function(n,e,t){co(n.element(),e.alpha),co(n.element(),e.omega)}}),Po=[Yt("alpha"),Yt("omega")],Ho=qr({fields:Po,name:"swapping",apis:_o}),zo=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),Lo=tinymce.util.Tools.resolve("tinymce.ThemeManager"),Go=function(n){var e=d.document.createElement("a");e.target="_blank",e.href=n.href,e.rel="noreferrer noopener";var t=d.document.createEvent("MouseEvents");t.initMouseEvent("click",!0,!0,d.window,0,0,0,0,0,!1,!1,!1,!1,0,null),d.document.body.appendChild(e),e.dispatchEvent(t),d.document.body.removeChild(e)},Uo={formatChanged:v("formatChanged"),orientationChanged:v("orientationChanged"),dropupDismissed:v("dropupDismissed")},$o=/* */Object.freeze({events:function(e){return Nr([_r(_e(),function(o,i){var u=e.channels,n=function(n,e){return e.universal()?n:D(n,function(n){return k(e.channels(),n)})}(Bn(u),i);C(n,function(n){var e=u[n],t=e.schema,r=Xt("channel["+n+"] data\nReceiver: "+bo(o.element()),t,i.data());e.onReceive(o,r)})})])}}),Wo="unknown";(Oo=To=To||{})[Oo.STOP=0]="STOP",Oo[Oo.NORMAL=1]="NORMAL",Oo[Oo.LOGGING=2]="LOGGING";function Xo(e,n,t){switch(Dt(yi.get(),e).orThunk(function(){var n=Bn(yi.get());return wo(n,function(n){return-1<e.indexOf(n)?Fn.some(yi.get()[n]):Fn.none()})}).getOr(To.NORMAL)){case To.NORMAL:return t(xi());case To.LOGGING:var r=function(e,t){var r=[],o=(new Date).getTime();return{logEventCut:function(n,e,t){r.push({outcome:"cut",target:e,purpose:t})},logEventStopped:function(n,e,t){r.push({outcome:"stopped",target:e,purpose:t})},logNoParent:function(n,e,t){r.push({outcome:"no-parent",target:e,purpose:t})},logEventNoHandlers:function(n,e){r.push({outcome:"no-handlers-left",target:e})},logEventResponse:function(n,e,t){r.push({outcome:"response",purpose:t,target:e})},write:function(){var n=(new Date).getTime();k(["mousemove","mouseover","mouseout",Ge()],e)||d.console.log(e,{event:e,time:n-o,target:t.dom(),sequence:de(r,function(n){return k(["cut","stopped","response"],n.outcome)?"{"+n.purpose+"} "+n.outcome+" at ("+bo(n.target)+")":n.outcome})})}}}(e,n),o=t(r);return r.write(),o;case To.STOP:return!0}}function qo(n,e,t){return Xo(n,e,t)}function Yo(n,e,t){return function(){var n=new Error;if(n.stack===undefined)return;var e=n.stack.split("\n");R(e,function(e){return 0<e.indexOf("alloy")&&!E(bi,function(n){return-1<e.indexOf(n)})}).getOr(Wo)}(),Cr(e,e,t,Gt(function(t){return vt.value(function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];return t.apply(undefined,n)})}))}function Ko(n){return Yo(0,n,xn(w))}function Jo(n){return Yo(0,n,xn(Fn.none))}function Qo(n){return Yo(0,n,Tt())}function Zo(n){return Yo(0,n,Tt())}function ni(n,e){return or(n,v(e))}function ei(n){return or(n,y)}function ti(n,e,t){var r=e.aria;r.update(n,r,t.get())}function ri(e,n,t){n.toggleClass.each(function(n){t.get()?io(e.element(),n):co(e.element(),n)})}function oi(n,e,t){Di(n,e,t,!t.get())}function ii(n,e,t){t.set(!0),ri(n,e,t),ti(n,e,t)}function ui(n,e,t){t.set(!1),ri(n,e,t),ti(n,e,t)}function ci(n,e,t){Di(n,e,t,e.selected)}function ai(){return[_r(L().deviceType.isTouch()?Be.tap():Re(),function(n,e){e.stop(),$(n)}),Lr(L().deviceType.isTouch()?xe():Te())]}function fi(n,e){e.ignore||(so(n.element()),e.onFocus(n))}function si(n){return n.style!==undefined&&ce(n.style.getPropertyValue)}function li(n,e,t){if(!re(t))throw d.console.error("Invalid call to CSS.set. Property ",e,":: Value ",t,":: Element ",n),new Error("CSS value must be a string: "+t);si(n)&&n.style.setProperty(e,t)}function di(n,e){var t=n.dom();Nn(e,function(n,e){li(t,e,n)})}function mi(n,e){var t=n.dom(),r=d.window.getComputedStyle(t).getPropertyValue(e),o=""!==r||K(n)?r:Ui(t,e);return null===o?undefined:o}function gi(n,e){var t=n.dom(),r=Ui(t,e);return Fn.from(r).filter(function(n){return 0<n.length})}function pi(n,e){!function(n,e){si(n)&&n.style.removeProperty(e)}(n.dom(),e),Zr(n,"style")&&""===function(n){return n.replace(/^\s+|\s+$/g,"")}(Qr(n,"style"))&&no(n,"style")}function hi(n){return n.dom().offsetWidth}var vi,yi=Pn({}),bi=["alloy/data/Fields","alloy/debugging/Debugging"],xi=v({logEventCut:w,logEventStopped:w,logNoParent:w,logEventNoHandlers:w,logEventResponse:w,write:w}),wi=v([Yt("menu"),Yt("selectedMenu")]),Si=v([Yt("item"),Yt("selectedItem")]),Ti=(v(Or(Si().concat(wi()))),v(Or(Si()))),Oi=Jt("initSize",[Yt("numColumns"),Yt("numRows")]),ki=v(Oi),Ei=[Kt("channels",Ut(vt.value,Pt([Qo("onReceive"),tr("schema",Ir())])))],Ci=qr({fields:Ei,name:"receiving",active:$o}),Di=function(n,e,t,r){(r?ii:ui)(n,e,t)},Mi=/* */Object.freeze({onLoad:ci,toggle:oi,isOn:function(n,e,t){return t.get()},on:ii,off:ui,set:Di}),Ii=/* */Object.freeze({exhibit:function(n,e,t){return Ur({})},events:function(n,e){var t=function(e,t,r){return Mo(function(n){r(n,e,t)})}(n,e,oi),r=$r(n,e,ci);return Nr(F([n.toggleOnExecute?[t]:[],[r]]))}}),Ri=function(n,e,t){Kr(n.element(),"aria-expanded",t)},Ai=[tr("selected",!1),Qt("toggleClass"),tr("toggleOnExecute",!0),rr("aria",{mode:"none"},qt("mode",{pressed:[tr("syncWithExpanded",!1),ni("update",function(n,e,t){Kr(n.element(),"aria-pressed",t),e.syncWithExpanded&&Ri(n,e,t)})],checked:[ni("update",function(n,e,t){Kr(n.element(),"aria-checked",t)})],expanded:[ni("update",Ri)],selected:[ni("update",function(n,e,t){Kr(n.element(),"aria-selected",t)})],none:[ni("update",w)]}))],Fi=qr({fields:Ai,name:"toggling",active:Ii,apis:Mi,state:(vi=!1,{init:function(){var e=Pn(vi);return{get:function(){return e.get()},set:function(n){return e.set(n)},clear:function(){return e.set(vi)},readState:function(){return e.get()}}}})}),Bi=function(t,r){return Ci.config({channels:En(Uo.formatChanged(),{onReceive:function(n,e){e.command===t&&r(n,e.state)}})})},Vi=function(n){return Ci.config({channels:En(Uo.orientationChanged(),{onReceive:n})})},Ni=function(n,e){return{key:n,value:{onReceive:e}}},ji="tinymce-mobile",_i={resolve:function(n){return ji+"-"+n},prefix:v(ji)},Pi=/* */Object.freeze({focus:fi,blur:function(n,e){e.ignore||lo(n.element())},isFocused:function(n){return function(n){var e=an(n).dom();return n.dom()===e.activeElement}(n.element())}}),Hi=/* */Object.freeze({exhibit:function(n,e){var t=e.ignore?{}:{attributes:{tabindex:"-1"}};return Ur(t)},events:function(t){return Nr([_r(Ve(),function(n,e){fi(n,t),e.stop()})].concat(t.stopMousedown?[_r(Te(),function(n,e){e.event().prevent()})]:[]))}}),zi=[Ko("onFocus"),tr("stopMousedown",!1),tr("ignore",!1)],Li=qr({fields:zi,name:"focusing",active:Hi,apis:Pi}),Gi=function(n,e,t){var r=n.dom();li(r,e,t)},Ui=function(n,e){return si(n)?n.style.getPropertyValue(e):""};function $i(r,o){function n(n){var e=o(n);if(e<=0||null===e){var t=mi(n,r);return parseFloat(t)||0}return e}function i(o,n){return I(n,function(n,e){var t=mi(o,e),r=t===undefined?0:parseInt(t,10);return isNaN(r)?n:n+r},0)}return{set:function(n,e){if(!ae(e)&&!e.match(/^[0-9]+$/))throw new Error(r+".set accepts only positive integer values. Value was "+e);var t=n.dom();si(t)&&(t.style[r]=e+"px")},get:n,getOuter:n,aggregate:i,max:function(n,e,t){var r=i(n,t);return r<e?e-r:0}}}function Wi(n){return yu.get(n)}function Xi(n,e,t){return D(function(n,e){for(var t=ce(e)?e:c,r=n.dom(),o=[];null!==r.parentNode&&r.parentNode!==undefined;){var i=r.parentNode,u=Je.fromDom(i);if(o.push(u),!0===t(u))break;r=i}return o}(n,t),e)}function qi(n,e){return D(function(e){return fn(e).map(at).map(function(n){return D(n,function(n){return!cn(e,n)})}).getOr([])}(n),e)}function Yi(n,e){return on(e,n)}function Ki(n){return un(n)}function Ji(n,e,t){return Fr(n,function(n){return tn(n,e)},t)}function Qi(n,e){return un(e,n)}function Zi(n,e,t){return Ar(tn,Ji,n,e,t)}function nu(n,e,t){var r=N(n.slice(0,e)),o=N(n.slice(e+1));return R(r.concat(o),t)}function eu(n,e,t){var r=N(n.slice(0,e));return R(r,t)}function tu(n,e,t){var r=n.slice(0,e),o=n.slice(e+1);return R(o.concat(r),t)}function ru(n,e,t){var r=n.slice(e+1);return R(r,t)}function ou(t){return function(n){var e=n.raw();return k(t,e.which)}}function iu(n){return function(e){return V(n,function(n){return n(e)})}}function uu(n){return!0===n.raw().shiftKey}function cu(n){return!0===n.raw().ctrlKey}function au(n,e){return{matches:n,classification:e}}function fu(n,e,t,r){var o=n+e;return r<o?t:o<t?r:o}function su(n,e,t){return n<=e?e:t<=n?t:n}function lu(t,r,n,o){var e=Yi(t.element(),"."+r.highlightClass);C(e,function(e){E(o,function(n){return n.element()===e})||(co(e,r.highlightClass),t.getSystem().getByDom(e).each(function(n){r.onDehighlight(t,n),G(n,qe())}))})}function du(n,e,t,r){lu(n,e,0,[r]),xu(n,e,t,r)||(io(r.element(),e.highlightClass),e.onHighlight(n,r),G(r,Xe()))}function mu(t,e,n,r){var o=Yi(t.element(),"."+e.itemClass);return A(o,function(n){return ao(n,e.highlightClass)}).bind(function(n){var e=fu(n,r,0,o.length-1);return t.getSystem().getByDom(o[e]).toOption()})}function gu(n,e,t){e.exists(function(e){return t.exists(function(n){return cn(n,e)})})||U(n,We(),{prevFocus:e,newFocus:t})}function pu(){function o(n){return go(n.element())}return{get:o,set:function(n,e){var t=o(n);n.getSystem().triggerFocus(e,n.element());var r=o(n);gu(n,t,r)}}}var hu,vu,yu=$i("height",function(n){var e=n.dom();return K(n)?e.getBoundingClientRect().height:e.offsetHeight}),bu=m(uu),xu=function(n,e,t,r){return ao(r.element(),e.highlightClass)},wu=function(n,e,t,r){var o=Yi(n.element(),"."+e.itemClass);return Fn.from(o[r]).fold(function(){return vt.error("No element found with index "+r)},n.getSystem().getByDom)},Su=function(e,n,t){return Qi(e.element(),"."+n.itemClass).bind(function(n){return e.getSystem().getByDom(n).toOption()})},Tu=function(e,n,t){var r=Yi(e.element(),"."+n.itemClass);return(0<r.length?Fn.some(r[r.length-1]):Fn.none()).bind(function(n){return e.getSystem().getByDom(n).toOption()})},Ou=function(e,n,t){var r=Yi(e.element(),"."+n.itemClass);return xo(de(r,function(n){return e.getSystem().getByDom(n).toOption()}))},ku=/* */Object.freeze({dehighlightAll:function(n,e,t){return lu(n,e,0,[])},dehighlight:function(n,e,t,r){xu(n,e,t,r)&&(co(r.element(),e.highlightClass),e.onDehighlight(n,r),G(r,qe()))},highlight:du,highlightFirst:function(e,t,r){Su(e,t).each(function(n){du(e,t,r,n)})},highlightLast:function(e,t,r){Tu(e,t).each(function(n){du(e,t,r,n)})},highlightAt:function(e,t,r,n){wu(e,t,r,n).fold(function(n){throw new Error(n)},function(n){du(e,t,r,n)})},highlightBy:function(e,t,r,n){var o=Ou(e,t);R(o,n).each(function(n){du(e,t,r,n)})},isHighlighted:xu,getHighlighted:function(e,n,t){return Qi(e.element(),"."+n.highlightClass).bind(function(n){return e.getSystem().getByDom(n).toOption()})},getFirst:Su,getLast:Tu,getPrevious:function(n,e,t){return mu(n,e,0,-1)},getNext:function(n,e,t){return mu(n,e,0,1)},getCandidates:Ou}),Eu=[Yt("highlightClass"),Yt("itemClass"),Ko("onHighlight"),Ko("onDehighlight")],Cu=qr({fields:Eu,name:"highlighting",apis:ku});(vu=hu=hu||{}).OnFocusMode="onFocus",vu.OnEnterOrSpaceMode="onEnterOrSpace",vu.OnApiMode="onApi";function Du(n,e,t,i,u){function c(e,t,n,r,o){return function(n,e){return R(n,function(n){return n.matches(e)}).map(function(n){return n.classification})}(n(e,t,r,o),t.event()).bind(function(n){return n(e,t,r,o)})}var r={schema:function(){return n.concat([tr("focusManager",pu()),rr("focusInside","onFocus",Gt(function(n){return k(["onFocus","onEnterOrSpace","onApi"],n)?vt.value(n):vt.error("Invalid value for focusInside")})),ni("handler",r),ni("state",e),ni("sendFocusIn",u)])},processKey:c,toEvents:function(r,o){var n=r.focusInside!==hu.OnFocusMode?Fn.none():u(r).map(function(t){return _r(Ve(),function(n,e){t(n,r,o),e.stop()})});return Nr(n.toArray().concat([_r(Ce(),function(n,e){c(n,e,t,r,o).fold(function(){!function(e,t){var n=ou([32].concat([13]))(t.event());r.focusInside===hu.OnEnterOrSpaceMode&&n&&ir(e,t)&&u(r).each(function(n){n(e,r,o),t.stop()})}(n,e)},function(n){e.stop()})}),_r(De(),function(n,e){c(n,e,i,r,o).each(function(n){e.stop()})})]))}};return r}function Mu(n){function i(n,e){var t=n.visibilitySelector.bind(function(n){return Zi(e,n)}).getOr(e);return 0<Wi(t)}function e(e,t){(function(n,e){var t=Yi(n.element(),e.selector),r=D(t,function(n){return i(e,n)});return Fn.from(r[e.firstTabstop])})(e,t).each(function(n){t.focusManager.set(e,n)})}function u(e,n,t,r,o){return o(n,t,function(n){return function(n,e){return i(n,e)&&n.useTabstopAt(e)}(r,n)}).fold(function(){return r.cyclic?Fn.some(!0):Fn.none()},function(n){return r.focusManager.set(e,n),Fn.some(!0)})}function c(e,n,t,r){var o=Yi(e.element(),t.selector);return function(n,e){return e.focusManager.get(n).bind(function(n){return Zi(n,e.selector)})}(e,t).bind(function(n){return A(o,l(cn,n)).bind(function(n){return u(e,o,n,t,r)})})}var t=[Qt("onEscape"),Qt("onEnter"),tr("selector",'[data-alloy-tabstop="true"]:not(:disabled)'),tr("firstTabstop",0),tr("useTabstopAt",v(!0)),Qt("visibilitySelector")].concat([n]),r=v([au(iu([uu,ou([9])]),function(n,e,t,r){var o=t.cyclic?nu:eu;return c(n,0,t,o)}),au(ou([9]),function(n,e,t,r){var o=t.cyclic?tu:ru;return c(n,0,t,o)}),au(ou([27]),function(e,t,n,r){return n.onEscape.bind(function(n){return n(e,t)})}),au(iu([bu,ou([13])]),function(e,t,n,r){return n.onEnter.bind(function(n){return n(e,t)})})]),o=v([]);return Du(t,Ao.init,r,o,function(){return Fn.some(e)})}function Iu(n){return"input"===q(n)&&"radio"!==Qr(n,"type")||"textarea"===q(n)}function Ru(n,e,t){return Iu(t)&&ou([32])(e.event())?Fn.none():function(n,e,t){return W(n,t,Pe()),Fn.some(!0)}(n,0,t)}function Au(n,e){return Fn.some(!0)}function Fu(n,e,t){return t.execute(n,e,n.element())}function Bu(n){var t=Pn(Fn.none());return Fo({readState:function(){return t.get().map(function(n){return{numRows:n.numRows(),numColumns:n.numColumns()}}).getOr({numRows:"?",numColumns:"?"})},setGridSize:function(n,e){t.set(Fn.some({numRows:v(n),numColumns:v(e)}))},getNumRows:function(){return t.get().map(function(n){return n.numRows()})},getNumColumns:function(){return t.get().map(function(n){return n.numColumns()})}})}function Vu(e,t){return function(n){return"rtl"===Yc(n)?t:e}}function Nu(i){return function(n,e,t,r){var o=i(n.element());return Kc(o,n,e,t,r)}}function ju(n,e){var t=Vu(n,e);return Nu(t)}function _u(n,e){var t=Vu(e,n);return Nu(t)}function Pu(o){return function(n,e,t,r){return Kc(o,n,e,t,r)}}function Hu(n){return!function(n){return n.offsetWidth<=0&&n.offsetHeight<=0}(n.dom())}function zu(n,e,t){var r=l(cn,e),o=Yi(n,t);return function(e,n){return A(e,n).map(function(n){return na({index:n,candidates:e})})}(D(o,Hu),r)}function Lu(n,e){return A(n,function(n){return cn(e,n)})}function Gu(t,n,r,e){return e(Math.floor(n/r),n%r).bind(function(n){var e=n.row()*r+n.column();return 0<=e&&e<t.length?Fn.some(t[e]):Fn.none()})}function Uu(o,n,i,u,c){return Gu(o,n,u,function(n,e){var t=n===i-1?o.length-n*u:u,r=fu(e,c,0,t-1);return Fn.some({row:v(n),column:v(r)})})}function $u(i,n,u,c,a){return Gu(i,n,c,function(n,e){var t=fu(n,a,0,u-1),r=t===u-1?i.length-t*c:c,o=su(e,0,r-1);return Fn.some({row:v(t),column:v(o)})})}function Wu(e,t,n){Qi(e.element(),t.selector).each(function(n){t.focusManager.set(e,n)})}function Xu(o){return function(n,e,t,r){return zu(n,e,t.selector).bind(function(n){return o(n.candidates(),n.index(),r.getNumRows().getOr(t.initSize.numRows),r.getNumColumns().getOr(t.initSize.numColumns))})}}function qu(n,e,t,r){return t.captureTab?Fn.some(!0):Fn.none()}function Yu(n,e,t,o){var i=function(n,e,t){var r=fu(e,o,0,t.length-1);return r===n?Fn.none():function(n){return"button"===q(n)&&"disabled"===Qr(n,"disabled")}(t[r])?i(n,r,t):Fn.from(t[r])};return zu(n,t,e).bind(function(n){var e=n.index(),t=n.candidates();return i(e,e,t)})}function Ku(e,t,r){return function(n,e){return e.focusManager.get(n).bind(function(n){return Zi(n,e.selector)})}(e,r).bind(function(n){return r.execute(e,t,n)})}function Ju(e,t){t.getInitial(e).orThunk(function(){return Qi(e.element(),t.selector)}).each(function(n){t.focusManager.set(e,n)})}function Qu(n,e,t){return Yu(n,t.selector,e,-1)}function Zu(n,e,t){return Yu(n,t.selector,e,1)}function nc(r){return function(n,e,t){return r(n,e,t).bind(function(){return t.executeOnMove?Ku(n,e,t):Fn.some(!0)})}}function ec(n,e,t,r){return t.onEscape(n,e)}function tc(n,e,t){return Fn.from(n[e]).bind(function(n){return Fn.from(n[t]).map(function(n){return da({rowIndex:e,columnIndex:t,cell:n})})})}function rc(n,e,t,r){var o=n[e].length,i=fu(t,r,0,o-1);return tc(n,e,i)}function oc(n,e,t,r){var o=fu(t,r,0,n.length-1),i=n[o].length,u=su(e,0,i-1);return tc(n,o,u)}function ic(n,e,t,r){var o=n[e].length,i=su(t+r,0,o-1);return tc(n,e,i)}function uc(n,e,t,r){var o=su(t+r,0,n.length-1),i=n[o].length,u=su(e,0,i-1);return tc(n,o,u)}function cc(e,t){t.previousSelector(e).orThunk(function(){var n=t.selectors;return Qi(e.element(),n.cell)}).each(function(n){t.focusManager.set(e,n)})}function ac(n,e){return function(o,t,i){var u=i.cycles?n:e;return Zi(t,i.selectors.row).bind(function(n){var e=Yi(n,i.selectors.cell);return Lu(e,t).bind(function(t){var r=Yi(o,i.selectors.row);return Lu(r,n).bind(function(n){var e=function(n,e){return de(n,function(n){return Yi(n,e.selectors.cell)})}(r,i);return u(e,n,t).map(function(n){return n.cell()})})})})}}function fc(e,t,r){return r.focusManager.get(e).bind(function(n){return r.execute(e,t,n)})}function sc(e,t){Qi(e.element(),t.selector).each(function(n){t.focusManager.set(e,n)})}function lc(n,e,t){return Yu(n,t.selector,e,-1)}function dc(n,e,t){return Yu(n,t.selector,e,1)}function mc(e,n){return function(n,e,t){return rr(n,e,Or(t))}(e,{},de(n,function(n){return function(e,t){return Cr(e,e,Ot(),_t(function(n){return gr("The field: "+e+" is forbidden. "+t)}))}(n.name(),"Cannot configure "+n.name()+" for "+e)}).concat([or("dump",y)]))}function gc(n){return n.dump}function pc(n,e){return x(x({},n.dump),Bo(e))}function hc(n,e,t,r){return t.uiType===_a?function(n,e,t,r){return n.exists(function(n){return n!==t.owner})?Pa.single(!0,v(t)):Dt(r,t.name).fold(function(){throw new Error("Unknown placeholder component: "+t.name+"\nKnown: ["+Bn(r)+"]\nNamespace: "+n.getOr("none")+"\nSpec: "+JSON.stringify(t,null,2))},function(n){return n.replace()})}(n,0,t,r):Pa.single(!1,v(t))}function vc(e,t,n,r){var o=S(r,function(n,e){return function(n,e){var t=!1;return{name:v(n),required:function(){return e.fold(function(n,e){return n},function(n,e){return n})},used:function(){return t},replace:function(){if(!0===t)throw new Error("Trying to use the same placeholder more than once: "+n);return t=!0,e}}}(e,n)}),i=function(e,t,n,r){return B(n,function(n){return Ha(e,t,n,r)})}(e,t,n,o);return Nn(o,function(n){if(!1===n.used()&&n.required())throw new Error("Placeholder: "+n.name()+" was not found in components list\nNamespace: "+e.getOr("none")+"\nComponents: "+JSON.stringify(t.components,null,2))}),i}function yc(n){var e=(new Date).getTime();return n+"_"+Math.floor(1e9*Math.random())+ ++Ua+String(e)}function bc(n){function e(n){return n.name}return n.fold(e,e,e,e)}function xc(t,r){return function(n){var e=Xt("Converting part type",r,n);return t(e)}}function wc(n,e,t,r){return xt(e.defaults(n,t,r),t,{uid:n.partUids[e.name]},e.overrides(n,t,r))}function Sc(o,n){var e={};return C(n,function(n){(function(n){return n.fold(Fn.some,Fn.none,Fn.some,Fn.some)})(n).each(function(t){var r=cf(o,t.pname);e[t.name]=function(n){var e=Xt("Part: "+t.name+" in "+o,Or(t.schema),n);return x(x({},r),{config:n,validated:e})}})}),e}function Tc(n,e,t){return function(n,t,e){var i={},r={};return C(e,function(n){n.fold(function(r){i[r.pname]=za(!0,function(n,e,t){return r.factory.sketch(wc(n,r,e,t))})},function(n){var e=t.parts[n.name];r[n.name]=v(n.factory.sketch(wc(t,n,e[uf()]),e))},function(r){i[r.pname]=za(!1,function(n,e,t){return r.factory.sketch(wc(n,r,e,t))})},function(o){i[o.pname]=La(!0,function(e,n,t){var r=e[o.name];return de(r,function(n){return o.factory.sketch(xt(o.defaults(e,n,t),n,o.overrides(e,n)))})})})}),{internals:v(i),externals:v(r)}}(0,e,t)}function Oc(n,e,t){return vc(Fn.some(n),e,e.components,t)}function kc(n,e,t){var r=e.partUids[t];return n.getSystem().getByUid(r).toOption()}function Ec(n,e,t){return kc(n,e,t).getOrDie("Could not find part: "+t)}function Cc(e,n){var t=function(n){return de(n,bc)}(n);return Cn(de(t,function(n){return{key:n,value:e+"-"+n}}))}function Dc(e){return Cr("partUids","partUids",Et(function(n){return Cc(n.uid,e)}),Ir())}function Mc(n){return En(af,n)}function Ic(r){return function(n,e){var t=e.toString(),r=t.indexOf(")")+1,o=t.indexOf("("),i=t.substring(o+1,r-1).split(/,\s*/);return n.toFunctionAnnotation=function(){return{name:"OVERRIDE",parameters:Io(i.slice(1))}},n}(function(n){for(var e=[],t=1;t<arguments.length;t++)e[t-1]=arguments[t];return r.apply(undefined,[n.getApis()].concat([n].concat(e)))},r)}function Rc(n){return yc(n)}function Ac(n,e,t,r,o){var i=function(n,e){return(0<n.length?[Jt("parts",n)]:[]).concat([Yt("uid"),tr("dom",{}),tr("components",[]),ei("originalSpec"),tr("debug.sketcher",{})]).concat(e)}(r,o);return Xt(n+" [SpecSchema]",Pt(i.concat(e)),t)}function Fc(n,e,t,r,o){var i=pf(o),u=function(n){return B(n,function(n){return n.fold(Fn.none,Fn.some,Fn.none,Fn.none).map(function(n){return Jt(n.name,n.schema.concat([ei(uf())]))}).toArray()})}(t),c=Dc(t),a=Ac(n,e,i,u,[c]),f=Tc(0,a,t);return r(a,Oc(n,a,f.internals()),i,f.externals())}var Bc,Vc,Nc,jc,_c,Pc,Hc,zc,Lc,Gc,Uc=Mu(or("cyclic",v(!1))),$c=Mu(or("cyclic",v(!0))),Wc=[tr("execute",Ru),tr("useSpace",!1),tr("useEnter",!0),tr("useControlEnter",!1),tr("useDown",!1)],Xc=Du(Wc,Ao.init,function(n,e,t,r){var o=t.useSpace&&!Iu(n.element())?[32]:[],i=t.useEnter?[13]:[],u=t.useDown?[40]:[],c=o.concat(i).concat(u);return[au(ou(c),Fu)].concat(t.useControlEnter?[au(iu([cu,ou([13])]),Fu)]:[])},function(n,e,t,r){return t.useSpace&&!Iu(n.element())?[au(ou([32]),Au)]:[]},function(){return Fn.none()}),qc=/* */Object.freeze({flatgrid:Bu,init:function(n){return n.state(n)}}),Yc=function(n){return"rtl"===mi(n,"direction")?"rtl":"ltr"},Kc=function(e,t,n,r,o){return r.focusManager.get(t).bind(function(n){return e(t.element(),n,r,o)}).map(function(n){return r.focusManager.set(t,n),!0})},Jc=Pu,Qc=Pu,Zc=Pu,na=nn(["index","candidates"],[]),ea=[Yt("selector"),tr("execute",Ru),Jo("onEscape"),tr("captureTab",!1),ki()],ta=Xu(function(n,e,t,r){return Uu(n,e,t,r,-1)}),ra=Xu(function(n,e,t,r){return Uu(n,e,t,r,1)}),oa=Xu(function(n,e,t,r){return $u(n,e,t,r,-1)}),ia=Xu(function(n,e,t,r){return $u(n,e,t,r,1)}),ua=v([au(ou([37]),ju(ta,ra)),au(ou([39]),_u(ta,ra)),au(ou([38]),Jc(oa)),au(ou([40]),Qc(ia)),au(iu([uu,ou([9])]),qu),au(iu([bu,ou([9])]),qu),au(ou([27]),function(n,e,t,r){return t.onEscape(n,e)}),au(ou([32].concat([13])),function(e,t,r,n){return function(n,e){return e.focusManager.get(n).bind(function(n){return Zi(n,e.selector)})}(e,r).bind(function(n){return r.execute(e,t,n)})})]),ca=v([au(ou([32]),Au)]),aa=Du(ea,Bu,ua,ca,function(){return Fn.some(Wu)}),fa=[Yt("selector"),tr("getInitial",Fn.none),tr("execute",Ru),Jo("onEscape"),tr("executeOnMove",!1),tr("allowVertical",!0)],sa=v([au(ou([32]),Au)]),la=Du(fa,Ao.init,function(n,e,t,r){var o=[37].concat(t.allowVertical?[38]:[]),i=[39].concat(t.allowVertical?[40]:[]);return[au(ou(o),nc(ju(Qu,Zu))),au(ou(i),nc(_u(Qu,Zu))),au(ou([13]),Ku),au(ou([32]),Ku),au(ou([27]),ec)]},sa,function(){return Fn.some(Ju)}),da=nn(["rowIndex","columnIndex","cell"],[]),ma=[Jt("selectors",[Yt("row"),Yt("cell")]),tr("cycles",!0),tr("previousSelector",Fn.none),tr("execute",Ru)],ga=ac(function(n,e,t){return rc(n,e,t,-1)},function(n,e,t){return ic(n,e,t,-1)}),pa=ac(function(n,e,t){return rc(n,e,t,1)},function(n,e,t){return ic(n,e,t,1)}),ha=ac(function(n,e,t){return oc(n,t,e,-1)},function(n,e,t){return uc(n,t,e,-1)}),va=ac(function(n,e,t){return oc(n,t,e,1)},function(n,e,t){return uc(n,t,e,1)}),ya=v([au(ou([37]),ju(ga,pa)),au(ou([39]),_u(ga,pa)),au(ou([38]),Jc(ha)),au(ou([40]),Qc(va)),au(ou([32].concat([13])),function(e,t,r){return go(e.element()).bind(function(n){return r.execute(e,t,n)})})]),ba=v([au(ou([32]),Au)]),xa=Du(ma,Ao.init,ya,ba,function(){return Fn.some(cc)}),wa=[Yt("selector"),tr("execute",Ru),tr("moveOnTab",!1)],Sa=v([au(ou([38]),Zc(lc)),au(ou([40]),Zc(dc)),au(iu([uu,ou([9])]),function(n,e,t){return t.moveOnTab?Zc(lc)(n,e,t):Fn.none()}),au(iu([bu,ou([9])]),function(n,e,t){return t.moveOnTab?Zc(dc)(n,e,t):Fn.none()}),au(ou([13]),fc),au(ou([32]),fc)]),Ta=v([au(ou([32]),Au)]),Oa=Du(wa,Ao.init,Sa,Ta,function(){return Fn.some(sc)}),ka=[Jo("onSpace"),Jo("onEnter"),Jo("onShiftEnter"),Jo("onLeft"),Jo("onRight"),Jo("onTab"),Jo("onShiftTab"),Jo("onUp"),Jo("onDown"),Jo("onEscape"),tr("stopSpaceKeyup",!1),Qt("focusIn")],Ea=Du(ka,Ao.init,function(n,e,t){return[au(ou([32]),t.onSpace),au(iu([bu,ou([13])]),t.onEnter),au(iu([uu,ou([13])]),t.onShiftEnter),au(iu([uu,ou([9])]),t.onShiftTab),au(iu([bu,ou([9])]),t.onTab),au(ou([38]),t.onUp),au(ou([40]),t.onDown),au(ou([37]),t.onLeft),au(ou([39]),t.onRight),au(ou([32]),t.onSpace),au(ou([27]),t.onEscape)]},function(n,e,t){return t.stopSpaceKeyup?[au(ou([32]),Au)]:[]},function(n){return n.focusIn}),Ca=Uc.schema(),Da=$c.schema(),Ma=la.schema(),Ia=aa.schema(),Ra=xa.schema(),Aa=Xc.schema(),Fa=Oa.schema(),Ba=Ea.schema(),Va=(Gc=Xt("Creating behaviour: "+(Lc={branchKey:"mode",branches:/* */Object.freeze({acyclic:Ca,cyclic:Da,flow:Ma,flatgrid:Ia,matrix:Ra,execution:Aa,menu:Fa,special:Ba}),name:"keying",active:{events:function(n,e){return n.handler.toEvents(n,e)}},apis:{focusIn:function(e,t,r){t.sendFocusIn(t).fold(function(){e.getSystem().triggerFocus(e.element(),e.element())},function(n){n(e,t,r)})},setGridSize:function(n,e,t,r,o){Mn(t,"setGridSize")?t.setGridSize(r,o):d.console.error("Layout does not support setGridSize")}},state:qc}).name,No,Lc),Bc=qt(Gc.branchKey,Gc.branches),Vc=Gc.name,Nc=Gc.active,jc=Gc.apis,_c=Gc.extra,Pc=Gc.state,zc=nr(Vc,[Zt("config",Hc=Bc)]),Ro(Hc,zc,Vc,Nc,jc,_c,Pc)),Na=mc,ja=pc,_a="placeholder",Pa=yt([{single:["required","valueThunk"]},{multiple:["required","valueThunks"]}]),Ha=function(i,u,c,a){return hc(i,0,c,a).fold(function(n,e){var t=e(u,c.config,c.validated),r=Dt(t,"components").getOr([]),o=B(r,function(n){return Ha(i,u,n,a)});return[x(x({},t),{components:o})]},function(n,e){var t=e(u,c.config,c.validated);return c.validated.preprocess.getOr(y)(t)})},za=Pa.single,La=Pa.multiple,Ga=v(_a),Ua=0,$a=yt([{required:["data"]},{external:["data"]},{optional:["data"]},{group:["data"]}]),Wa=tr("factory",{sketch:y}),Xa=tr("schema",[]),qa=Yt("name"),Ya=Cr("pname","pname",kt(function(n){return"<alloy."+yc(n.name)+">"}),Ir()),Ka=or("schema",function(){return[Qt("preprocess")]}),Ja=tr("defaults",v({})),Qa=tr("overrides",v({})),Za=Or([Wa,Xa,qa,Ya,Ja,Qa]),nf=Or([Wa,Xa,qa,Ya,Ja,Qa]),ef=Or([Wa,Ka,qa,Yt("unit"),Ya,Ja,Qa]),tf=xc($a.required,Za),rf=xc($a.optional,nf),of=xc($a.group,ef),uf=v("entirety"),cf=function(n,e){return{uiType:Ga(),owner:n,name:e}},af=yc("alloy-premade"),ff=v("alloy-id-"),sf=v("data-alloy-id"),lf=ff(),df=sf(),mf=function(n,e){Object.defineProperty(n.dom(),df,{value:e,writable:!0})},gf=function(n){var e=et(n)?n.dom()[df]:null;return Fn.from(e)},pf=function(n){return n.hasOwnProperty("uid")?n:x(x({},n),{uid:Rc("uid")})};function hf(n){var e=Xt("Sketcher for "+n.name,Hs,n),t=S(e.apis,Ic),r=S(e.extraApis,function(n,e){return Gr(n,e)});return x(x({name:v(e.name),partFields:v([]),configFields:v(e.configFields),sketch:function(n){return function(n,e,t,r){var o=pf(r);return t(Ac(n,e,o,[],[]),o)}(e.name,e.configFields,e.factory,n)}},t),r)}function vf(n){var e=Xt("Sketcher for "+n.name,zs,n),t=Sc(e.name,e.partFields),r=S(e.apis,Ic),o=S(e.extraApis,function(n,e){return Gr(n,e)});return x(x({name:v(e.name),partFields:v(e.partFields),configFields:v(e.configFields),sketch:function(n){return Fc(e.name,e.configFields,e.partFields,e.factory,n)},parts:v(t)},r),o)}function yf(n){var e=Je.fromHtml(n),t=at(e),r=function(n){var e=n.dom().attributes!==undefined?n.dom().attributes:[];return I(e,function(n,e){var t;return"class"===e.name?n:x(x({},n),((t={})[e.name]=e.value,t))},{})}(e),o=function(n){return Array.prototype.slice.call(n.dom().classList,0)}(e),i=0===t.length?{}:{innerHtml:po(e)};return x({tag:q(e),classes:o,attributes:r},i)}function bf(n){return{dom:Us(n)}}function xf(n){return Bo([Fi.config({toggleClass:_i.resolve("toolbar-button-selected"),toggleOnExecute:!1,aria:{mode:"pressed"}}),Bi(n,function(n,e){(e?Fi.on:Fi.off)(n)})])}function wf(n,e){var t=e.ui.registry.getAll().icons;return Fn.from(t[n]).fold(function(){return Us('<span class="${prefix}-toolbar-button ${prefix}-toolbar-group-item ${prefix}-icon-'+n+' ${prefix}-icon"></span>')},function(n){return Us('<span class="${prefix}-toolbar-button ${prefix}-toolbar-group-item">'+n+"</span>")})}function Sf(n){return rf({name:n+"-edge",overrides:function(r){return r.model.manager.edgeActions[n].fold(function(){return{}},function(t){var n=Nr([Pr(xe(),t,[r])]),e=Nr([Pr(Te(),t,[r]),Pr(Oe(),function(n,e){e.mouseIsDown.get()&&t(n,e)},[r])]);return{events:Xs?n:e}})}})}function Tf(n,e,t){e.store.manager.onLoad(n,e,t)}function Of(n,e,t){e.store.manager.onUnload(n,e,t)}function kf(){var n=Pn(null);return Fo({set:n.set,get:n.get,isNotSet:function(){return null===n.get()},clear:function(){n.set(null)},readState:function(){return{mode:"memory",value:n.get()}}})}function Ef(){var i=Pn({}),u=Pn({});return Fo({readState:function(){return{mode:"dataset",dataByValue:i.get(),dataByText:u.get()}},lookup:function(n){return Dt(i.get(),n).orThunk(function(){return Dt(u.get(),n)})},update:function(n){var e=i.get(),t=u.get(),r={},o={};C(n,function(e){r[e.value]=e,Dt(e,"meta").each(function(n){Dt(n,"text").each(function(n){o[n]=e})})}),i.set(x(x({},e),r)),u.set(x(x({},t),o))},clear:function(){i.set({}),u.set({})}})}function Cf(n,e,t,r){var o=e.store;t.update([r]),o.setValue(n,r),e.onSetValue(n,r)}function Df(n,e){ll.set(n,e)}function Mf(n){return ll.get(n)}function If(n){var e=n.event().raw();if(gl){var t=e;return t.touches!==undefined&&1===t.touches.length?Fn.some(t.touches[0]).map(function(n){return ml(n.clientX,n.clientY)}):Fn.none()}var r=e;return r.clientX!==undefined?Fn.some(r).map(function(n){return ml(n.clientX,n.clientY)}):Fn.none()}function Rf(n){return n.model.minX}function Af(n){return n.model.minY}function Ff(n){return n.model.minX-1}function Bf(n){return n.model.minY-1}function Vf(n){return n.model.maxX}function Nf(n){return n.model.maxY}function jf(n){return n.model.maxX+1}function _f(n){return n.model.maxY+1}function Pf(n,e,t){return e(n)-t(n)}function Hf(n){return Pf(n,Vf,Rf)}function zf(n){return Pf(n,Nf,Af)}function Lf(n){return Hf(n)/2}function Gf(n){return zf(n)/2}function Uf(n){return n.stepSize}function $f(n){return n.snapToGrid}function Wf(n){return n.snapStart}function Xf(n){return n.rounded}function qf(n,e){return n[e+"-edge"]!==undefined}function Yf(n){return qf(n,"left")}function Kf(n){return qf(n,"right")}function Jf(n){return qf(n,"top")}function Qf(n){return qf(n,"bottom")}function Zf(n){return n.model.value.get()}function ns(n){return{x:v(n)}}function es(n){return{y:v(n)}}function ts(n,e){return{x:v(n),y:v(e)}}function rs(n,e){U(n,pl(),{value:e})}function os(n,e,t,r){return n<e?n:t<n?t:n===e?e-1:Math.max(e,n-r)}function is(n,e,t,r){return t<n?n:n<e?e:n===t?t+1:Math.min(t,n+r)}function us(n,e,t){return Math.max(e,Math.min(t,n))}function cs(n){var e=n.min,t=n.max,r=n.range,o=n.value,i=n.step,u=n.snap,c=n.snapStart,a=n.rounded,f=n.hasMinEdge,s=n.hasMaxEdge,l=n.minBound,d=n.maxBound,m=n.screenRange,g=f?e-1:e,p=s?t+1:t;if(o<l)return g;if(d<o)return p;var h=function(n,e,t){return Math.min(t,Math.max(n,e))-e}(o,l,d),v=us(h/m*r+e,g,p);return u&&e<=v&&v<=t?function(u,t,c,a,n){return n.fold(function(){var n=u-t,e=Math.round(n/a)*a;return us(t+e,t-1,c+1)},function(n){var e=(u-n)%a,t=Math.round(e/a),r=Math.floor((u-n)/a),o=Math.floor((c-n)/a),i=n+Math.min(o,r+t)*a;return Math.max(n,i)})}(v,e,t,i,c):a?Math.round(v):v}function as(n){var e=n.min,t=n.max,r=n.range,o=n.value,i=n.hasMinEdge,u=n.hasMaxEdge,c=n.maxBound,a=n.maxOffset,f=n.centerMinEdge,s=n.centerMaxEdge;return o<e?i?0:f:t<o?u?c:s:(o-e)/r*a}function fs(n){return n.element().dom().getBoundingClientRect()}function ss(n,e){return n[e]}function ls(n){var e=fs(n);return ss(e,hl)}function ds(n){var e=fs(n);return ss(e,"right")}function ms(n){var e=fs(n);return ss(e,"top")}function gs(n){var e=fs(n);return ss(e,"bottom")}function ps(n){var e=fs(n);return ss(e,"width")}function hs(n){var e=fs(n);return ss(e,"height")}function vs(n,e,t){return(n+e)/2-t}function ys(n,e){var t=fs(n),r=fs(e),o=ss(t,hl),i=ss(t,"right"),u=ss(r,hl);return vs(o,i,u)}function bs(n,e){var t=fs(n),r=fs(e),o=ss(t,"top"),i=ss(t,"bottom"),u=ss(r,"top");return vs(o,i,u)}function xs(n,e){U(n,pl(),{value:e})}function ws(n){return{x:v(n)}}function Ss(n,e,t){var r={min:Rf(e),max:Vf(e),range:Hf(e),value:t,step:Uf(e),snap:$f(e),snapStart:Wf(e),rounded:Xf(e),hasMinEdge:Yf(e),hasMaxEdge:Kf(e),minBound:ls(n),maxBound:ds(n),screenRange:ps(n)};return cs(r)}function Ts(t){return function(n,e){return function(n,e,t){var r=(0<n?is:os)(Zf(t).x(),Rf(t),Vf(t),Uf(t));return xs(e,ws(r)),Fn.some(r)}(t,n,e).map(function(){return!0})}}function Os(n,e,t,r,o,i){var u=function(e,n,t,r,o){var i=ps(e),u=r.bind(function(n){return Fn.some(ys(n,e))}).getOr(0),c=o.bind(function(n){return Fn.some(ys(n,e))}).getOr(i),a={min:Rf(n),max:Vf(n),range:Hf(n),value:t,hasMinEdge:Yf(n),hasMaxEdge:Kf(n),minBound:ls(e),minOffset:0,maxBound:ds(e),maxOffset:i,centerMinEdge:u,centerMaxEdge:c};return as(a)}(e,i,t,r,o);return ls(e)-ls(n)+u}function ks(n,e){U(n,pl(),{value:e})}function Es(n){return{y:v(n)}}function Cs(n,e,t){var r={min:Af(e),max:Nf(e),range:zf(e),value:t,step:Uf(e),snap:$f(e),snapStart:Wf(e),rounded:Xf(e),hasMinEdge:Jf(e),hasMaxEdge:Qf(e),minBound:ms(n),maxBound:gs(n),screenRange:hs(n)};return cs(r)}function Ds(t){return function(n,e){return function(n,e,t){var r=(0<n?is:os)(Zf(t).y(),Af(t),Nf(t),Uf(t));return ks(e,Es(r)),Fn.some(r)}(t,n,e).map(function(){return!0})}}function Ms(n,e,t,r,o,i){var u=function(e,n,t,r,o){var i=hs(e),u=r.bind(function(n){return Fn.some(bs(n,e))}).getOr(0),c=o.bind(function(n){return Fn.some(bs(n,e))}).getOr(i),a={min:Af(n),max:Nf(n),range:zf(n),value:t,hasMinEdge:Jf(n),hasMaxEdge:Qf(n),minBound:ms(e),minOffset:0,maxBound:gs(e),maxOffset:i,centerMinEdge:u,centerMaxEdge:c};return as(a)}(e,i,t,r,o);return ms(e)-ms(n)+u}function Is(n,e){U(n,pl(),{value:e})}function Rs(n,e){return{x:v(n),y:v(e)}}function As(t,r){return function(n,e){return function(n,e,t,r){var o=0<n?is:os,i=e?Zf(r).x():o(Zf(r).x(),Rf(r),Vf(r),Uf(r)),u=e?o(Zf(r).y(),Af(r),Nf(r),Uf(r)):Zf(r).y();return Is(t,Rs(i,u)),Fn.some(i)}(t,r,n,e).map(function(){return!0})}}function Fs(e,t,r,n){return Ws.forToolbar(t,function(){var n=r();e.setContextToolbar([{label:t+" group",items:n}])},{},n)}function Bs(n){return[function(o){function i(n){return n<0?"black":360<n?"white":"hsl("+n+", 100%, 50%)"}return _l.sketch({dom:Us('<div class="${prefix}-slider ${prefix}-hue-slider-container"></div>'),components:[_l.parts()["left-edge"](bf('<div class="${prefix}-hue-slider-black"></div>')),_l.parts().spectrum({dom:Us('<div class="${prefix}-slider-gradient-container"></div>'),components:[bf('<div class="${prefix}-slider-gradient"></div>')],behaviours:Bo([Fi.config({toggleClass:_i.resolve("thumb-active")})])}),_l.parts()["right-edge"](bf('<div class="${prefix}-hue-slider-white"></div>')),_l.parts().thumb({dom:Us('<div class="${prefix}-slider-thumb"></div>'),behaviours:Bo([Fi.config({toggleClass:_i.resolve("thumb-active")})])})],onChange:function(n,e,t){var r=i(t.x());Gi(e.element(),"background-color",r),o.onChange(n,e,r)},onDragStart:function(n,e){Fi.on(e)},onDragEnd:function(n,e){Fi.off(e)},onInit:function(n,e,t,r){var o=i(r.x());Gi(e.element(),"background-color",o)},stepSize:10,model:{mode:"x",minX:0,maxX:360,getInitialValue:function(){return{x:function(){return o.getInitialValue()}}}},sliderBehaviours:Bo([Vi(_l.refresh)])})}(n)]}function Vs(n){var e=n.selection.getStart(),t=Je.fromDom(e),r=Je.fromDom(n.getBody()),o=function(e,n){return(et(n)?Fn.some(n):fn(n).filter(et)).map(function(n){return Br(n,function(n){return gi(n,"font-size").isSome()},e).bind(function(n){return gi(n,"font-size")}).getOrThunk(function(){return mi(n,"font-size")})}).getOr("")}(function(n){return cn(r,n)},t);return R(Ll,function(n){return o===n}).getOr("medium")}function Ns(n){return[bf('<span class="${prefix}-toolbar-button ${prefix}-icon-small-font ${prefix}-icon"></span>'),function(n){return zl({onChange:n.onChange,sizes:Ul,category:"font",getInitialValue:n.getInitialValue})}(n),bf('<span class="${prefix}-toolbar-button ${prefix}-icon-large-font ${prefix}-icon"></span>')]}function js(n){var e=function t(n){return n.uid!==undefined}(n)&&Mn(n,"uid")?n.uid:Rc("memento");return{get:function(n){return n.getSystem().getByUid(e).getOrDie()},getOpt:function(n){return n.getSystem().getByUid(e).toOption()},asSpec:function(){return x(x({},n),{uid:e})}}}var _s,Ps,Hs=Pt([Yt("name"),Yt("factory"),Yt("configFields"),tr("apis",{}),tr("extraApis",{})]),zs=Pt([Yt("name"),Yt("factory"),Yt("configFields"),Yt("partFields"),tr("apis",{}),tr("extraApis",{})]),Ls=hf({name:"Button",factory:function(n){function t(e){return Dt(n.dom,"attributes").bind(function(n){return Dt(n,e)})}var e=function(n){return Nr(F([n.map(function(t){return Mo(function(n,e){t(n),e.stop()})}).toArray(),ai()]))}(n.action),r=n.dom.tag;return{uid:n.uid,dom:n.dom,components:n.components,events:e,behaviours:ja(n.buttonBehaviours,[Li.config({}),Va.config({mode:"execution",useSpace:!0,useEnter:!0})]),domModification:{attributes:function(){if("button"!==r)return{role:t("role").getOr("button")};var n=t("type").getOr("button"),e=t("role").map(function(n){return{role:n}}).getOr({});return x({type:n},e)}()},eventOrder:n.eventOrder}},configFields:[tr("uid",undefined),Yt("dom"),tr("components",[]),Na("buttonBehaviours",[Li,Va]),Qt("action"),Qt("role"),tr("eventOrder",{})]}),Gs=qr({fields:[],name:"unselecting",active:/* */Object.freeze({events:function(n){return Nr([jr(Fe(),v(!0))])},exhibit:function(n,e){return Ur({styles:{"-webkit-user-select":"none","user-select":"none","-ms-user-select":"none","-moz-user-select":"-moz-none"},attributes:{unselectable:"on"}})}})}),Us=function(n){var e=function(n,r){return n.replace(/\$\{([^{}]*)\}/g,function(n,e){var t=r[e];return function(n){var e=typeof n;return"string"==e||"number"==e}(t)?t.toString():n})}(n,{prefix:_i.prefix()});return yf(e)},$s=function(n,e,t,r){return Ls.sketch({dom:wf(n,r),action:e,buttonBehaviours:xt(Bo([Gs.config({})]),t)})},Ws={forToolbar:$s,forToolbarCommand:function(n,e){return $s(e,function(){n.execCommand(e)},{},n)},forToolbarStateAction:function(n,e,t,r){var o=xf(t);return $s(e,r,o,n)},forToolbarStateCommand:function(n,e){var t=xf(e);return $s(e,function(){n.execCommand(e)},t,n)},getToolbarIconButton:wf},Xs=L().deviceType.isTouch(),qs=rf({schema:[Yt("dom")],name:"label"}),Ys=Sf("top-left"),Ks=Sf("top"),Js=Sf("top-right"),Qs=Sf("right"),Zs=Sf("bottom-right"),nl=Sf("bottom"),el=Sf("bottom-left"),tl=[qs,Sf("left"),Qs,Ks,nl,Ys,Js,el,Zs,tf({name:"thumb",defaults:v({dom:{styles:{position:"absolute"}}}),overrides:function(n){return{events:Nr([zr(xe(),n,"spectrum"),zr(we(),n,"spectrum"),zr(Se(),n,"spectrum"),zr(Te(),n,"spectrum"),zr(Oe(),n,"spectrum"),zr(ke(),n,"spectrum")])}}}),tf({schema:[or("mouseIsDown",function(){return Pn(!1)})],name:"spectrum",overrides:function(t){function r(e,n){return o.getValueFromEvent(n).map(function(n){return o.setValueFrom(e,t,n)})}var o=t.model.manager,n=Nr([_r(xe(),r),_r(we(),r)]),e=Nr([_r(Te(),r),_r(Oe(),function(n,e){t.mouseIsDown.get()&&r(n,e)})]);return{behaviours:Bo(Xs?[]:[Va.config({mode:"special",onLeft:function(n){return o.onLeft(n,t)},onRight:function(n){return o.onRight(n,t)},onUp:function(n){return o.onUp(n,t)},onDown:function(n){return o.onDown(n,t)}}),Li.config({})]),events:Xs?n:e}}})],rl=/* */Object.freeze({onLoad:Tf,onUnload:Of,setValue:function(n,e,t,r){e.store.manager.setValue(n,e,t,r)},getValue:function(n,e,t){return e.store.manager.getValue(n,e,t)},getState:function(n,e,t){return t}}),ol=/* */Object.freeze({events:function(t,r){var n=t.resetOnDom?[Eo(function(n,e){Tf(n,t,r)}),Co(function(n,e){Of(n,t,r)})]:[$r(t,r,Tf)];return Nr(n)}}),il=/* */Object.freeze({memory:kf,dataset:Ef,manual:function(){return Fo({readState:function(){}})},init:function(n){return n.store.manager.state(n)}}),ul=[Qt("initialValue"),Yt("getFallbackEntry"),Yt("getDataKey"),Yt("setValue"),ni("manager",{setValue:Cf,getValue:function(n,e,t){var r=e.store,o=r.getDataKey(n);return t.lookup(o).fold(function(){return r.getFallbackEntry(o)},function(n){return n})},onLoad:function(e,t,r){t.store.initialValue.each(function(n){Cf(e,t,r,n)})},onUnload:function(n,e,t){t.clear()},state:Ef})],cl=[Yt("getValue"),tr("setValue",w),Qt("initialValue"),ni("manager",{setValue:function(n,e,t,r){e.store.setValue(n,r),e.onSetValue(n,r)},getValue:function(n,e,t){return e.store.getValue(n)},onLoad:function(e,t,n){t.store.initialValue.each(function(n){t.store.setValue(e,n)})},onUnload:w,state:Ao.init})],al=[Qt("initialValue"),ni("manager",{setValue:function(n,e,t,r){t.set(r),e.onSetValue(n,r)},getValue:function(n,e,t){return t.get()},onLoad:function(n,e,t){e.store.initialValue.each(function(n){t.isNotSet()&&t.set(n)})},onUnload:function(n,e,t){t.clear()},state:kf})],fl=[rr("store",{mode:"memory"},qt("mode",{memory:al,manual:cl,dataset:ul})),Ko("onSetValue"),tr("resetOnDom",!1)],sl=qr({fields:fl,name:"representing",active:ol,apis:rl,extra:{setValueFrom:function(n,e){var t=sl.getValue(e);sl.setValue(n,t)}},state:il}),ll=$i("width",function(n){return n.dom().offsetWidth}),dl=function(t,r){return{left:v(t),top:v(r),translate:function(n,e){return dl(t+n,r+e)}}},ml=dl,gl=L().deviceType.isTouch(),pl=v("slider.change.value"),hl="left",vl=Ts(-1),yl=Ts(1),bl=Fn.none,xl=Fn.none,wl={"top-left":Fn.none(),top:Fn.none(),"top-right":Fn.none(),right:Fn.some(function(n,e){rs(n,ns(jf(e)))}),"bottom-right":Fn.none(),bottom:Fn.none(),"bottom-left":Fn.none(),left:Fn.some(function(n,e){rs(n,ns(Ff(e)))})},Sl=/* */Object.freeze({setValueFrom:function(n,e,t){var r=Ss(n,e,t),o=ws(r);return xs(n,o),r},setToMin:function(n,e){var t=Rf(e);xs(n,ws(t))},setToMax:function(n,e){var t=Vf(e);xs(n,ws(t))},findValueOfOffset:Ss,getValueFromEvent:function(n){return If(n).map(function(n){return n.left()})},findPositionOfValue:Os,setPositionFromValue:function(n,e,t,r){var o=Zf(t),i=Os(n,r.getSpectrum(n),o.x(),r.getLeftEdge(n),r.getRightEdge(n),t),u=Mf(e.element())/2;Gi(e.element(),"left",i-u+"px")},onLeft:vl,onRight:yl,onUp:bl,onDown:xl,edgeActions:wl}),Tl=Fn.none,Ol=Fn.none,kl=Ds(-1),El=Ds(1),Cl={"top-left":Fn.none(),top:Fn.some(function(n,e){rs(n,es(Bf(e)))}),"top-right":Fn.none(),right:Fn.none(),"bottom-right":Fn.none(),bottom:Fn.some(function(n,e){rs(n,es(_f(e)))}),"bottom-left":Fn.none(),left:Fn.none()},Dl=/* */Object.freeze({setValueFrom:function(n,e,t){var r=Cs(n,e,t),o=Es(r);return ks(n,o),r},setToMin:function(n,e){var t=Af(e);ks(n,Es(t))},setToMax:function(n,e){var t=Nf(e);ks(n,Es(t))},findValueOfOffset:Cs,getValueFromEvent:function(n){return If(n).map(function(n){return n.top()})},findPositionOfValue:Ms,setPositionFromValue:function(n,e,t,r){var o=Zf(t),i=Ms(n,r.getSpectrum(n),o.y(),r.getTopEdge(n),r.getBottomEdge(n),t),u=Wi(e.element())/2;Gi(e.element(),"top",i-u+"px")},onLeft:Tl,onRight:Ol,onUp:kl,onDown:El,edgeActions:Cl}),Ml=As(-1,!1),Il=As(1,!1),Rl=As(-1,!0),Al=As(1,!0),Fl={"top-left":Fn.some(function(n,e){rs(n,ts(Ff(e),Bf(e)))}),top:Fn.some(function(n,e){rs(n,ts(Lf(e),Bf(e)))}),"top-right":Fn.some(function(n,e){rs(n,ts(jf(e),Bf(e)))}),right:Fn.some(function(n,e){rs(n,ts(jf(e),Gf(e)))}),"bottom-right":Fn.some(function(n,e){rs(n,ts(jf(e),_f(e)))}),bottom:Fn.some(function(n,e){rs(n,ts(Lf(e),_f(e)))}),"bottom-left":Fn.some(function(n,e){rs(n,ts(Ff(e),_f(e)))}),left:Fn.some(function(n,e){rs(n,ts(Ff(e),Gf(e)))})},Bl=/* */Object.freeze({setValueFrom:function(n,e,t){var r=Ss(n,e,t.left()),o=Cs(n,e,t.top()),i=Rs(r,o);return Is(n,i),i},setToMin:function(n,e){var t=Rf(e),r=Af(e);Is(n,Rs(t,r))},setToMax:function(n,e){var t=Vf(e),r=Nf(e);Is(n,Rs(t,r))},getValueFromEvent:function(n){return If(n)},setPositionFromValue:function(n,e,t,r){var o=Zf(t),i=Os(n,r.getSpectrum(n),o.x(),r.getLeftEdge(n),r.getRightEdge(n),t),u=Ms(n,r.getSpectrum(n),o.y(),r.getTopEdge(n),r.getBottomEdge(n),t),c=Mf(e.element())/2,a=Wi(e.element())/2;Gi(e.element(),"left",i-c+"px"),Gi(e.element(),"top",u-a+"px")},onLeft:Ml,onRight:Il,onUp:Rl,onDown:Al,edgeActions:Fl}),Vl=L().deviceType.isTouch(),Nl=[tr("stepSize",1),tr("onChange",w),tr("onChoose",w),tr("onInit",w),tr("onDragStart",w),tr("onDragEnd",w),tr("snapToGrid",!1),tr("rounded",!0),Qt("snapStart"),Kt("model",qt("mode",{x:[tr("minX",0),tr("maxX",100),or("value",function(n){return Pn(n.mode.minX)}),Yt("getInitialValue"),ni("manager",Sl)],y:[tr("minY",0),tr("maxY",100),or("value",function(n){return Pn(n.mode.minY)}),Yt("getInitialValue"),ni("manager",Dl)],xy:[tr("minX",0),tr("maxX",100),tr("minY",0),tr("maxY",100),or("value",function(n){return Pn({x:v(n.mode.minX),y:v(n.mode.minY)})}),Yt("getInitialValue"),ni("manager",Bl)]})),mc("sliderBehaviours",[Va,sl])].concat(Vl?[]:[or("mouseIsDown",function(){return Pn(!1)})]),jl=L().deviceType.isTouch(),_l=vf({name:"Slider",configFields:Nl,partFields:tl,factory:function(i,n,e,t){function u(n){return Ec(n,i,"thumb")}function c(n){return Ec(n,i,"spectrum")}function r(n){return kc(n,i,"left-edge")}function o(n){return kc(n,i,"right-edge")}function a(n){return kc(n,i,"top-edge")}function f(n){return kc(n,i,"bottom-edge")}function s(n,e){m.setPositionFromValue(n,e,i,{getLeftEdge:r,getRightEdge:o,getTopEdge:a,getBottomEdge:f,getSpectrum:c})}function l(n,e){d.value.set(e);var t=u(n);return s(n,t),i.onChange(n,t,e),Fn.some(!0)}var d=i.model,m=d.manager,g=[_r(xe(),function(n,e){i.onDragStart(n,u(n))}),_r(Se(),function(n,e){i.onDragEnd(n,u(n))})],p=[_r(Te(),function(n,e){e.stop(),i.onDragStart(n,u(n)),i.mouseIsDown.set(!0)}),_r(ke(),function(n,e){i.onDragEnd(n,u(n))})],h=jl?g:p;return{uid:i.uid,dom:i.dom,components:n,behaviours:pc(i.sliderBehaviours,F([jl?[]:[Va.config({mode:"special",focusIn:function(n){return kc(n,i,"spectrum").map(Va.focusIn).map(v(!0))}})],[sl.config({store:{mode:"manual",getValue:function(n){return d.value.get()}}}),Ci.config({channels:{"mouse.released":{onReceive:function(t,n){function e(){kc(t,i,"thumb").each(function(n){var e=d.value.get();i.onChoose(t,n,e)})}if(jl)e();else{var r=i.mouseIsDown.get();i.mouseIsDown.set(!1),r&&e()}}}}})]])),events:Nr([_r(pl(),function(n,e){l(n,e.event().value())}),Eo(function(n,e){var t=d.getInitialValue();d.value.set(t);var r=u(n);s(n,r);var o=c(n);i.onInit(n,r,o,d.value.get())})].concat(h)),apis:{resetToMin:function(n){m.setToMin(n,i)},resetToMax:function(n){m.setToMax(n,i)},changeValue:l,refresh:s},domModification:{styles:{position:"relative"}}}},apis:{resetToMin:function(n,e){n.resetToMin(e)},resetToMax:function(n,e){n.resetToMax(e)},refresh:function(n,e){n.refresh(e)}}}),Pl=function(n,r){var e={onChange:function(n,e,t){r.undoManager.transact(function(){r.formatter.apply("forecolor",{value:t}),r.nodeChanged()})},getInitialValue:function(){return-1}};return Fs(n,"color-levels",function(){return Bs(e)},r)},Hl=Pt([Yt("getInitialValue"),Yt("onChange"),Yt("category"),Yt("sizes")]),zl=function(n){var o=Xt("SizeSlider",Hl,n);return _l.sketch({dom:{tag:"div",classes:[_i.resolve("slider-"+o.category+"-size-container"),_i.resolve("slider"),_i.resolve("slider-size-container")]},onChange:function(n,e,t){var r=t.x();!function(n){return 0<=n&&n<o.sizes.length}(r)||o.onChange(r)},onDragStart:function(n,e){Fi.on(e)},onDragEnd:function(n,e){Fi.off(e)},model:{mode:"x",minX:0,maxX:o.sizes.length-1,getInitialValue:function(){return{x:function(){return o.getInitialValue()}}}},stepSize:1,snapToGrid:!0,sliderBehaviours:Bo([Vi(_l.refresh)]),components:[_l.parts().spectrum({dom:Us('<div class="${prefix}-slider-size-container"></div>'),components:[bf('<div class="${prefix}-slider-size-line"></div>')]}),_l.parts().thumb({dom:Us('<div class="${prefix}-slider-thumb"></div>'),behaviours:Bo([Fi.config({toggleClass:_i.resolve("thumb-active")})])})]})},Ll=["9px","10px","11px","12px","14px","16px","18px","20px","24px","32px","36px"],Gl={candidates:v(Ll),get:function(n){return function(e){return A(Ll,function(n){return n===e})}(Vs(n)).getOr(2)},apply:function(e,n){(function(n){return Fn.from(Ll[n])})(n).each(function(n){!function(n,e){Vs(n)!==e&&n.execCommand("fontSize",!1,e)}(e,n)})}},Ul=Gl.candidates(),$l=window.Promise?window.Promise:(_s=Wl.immediateFn||"function"==typeof window.setImmediate&&window.setImmediate||function(n){d.setTimeout(n,1)},Ps=Array.isArray||function(n){return"[object Array]"===Object.prototype.toString.call(n)},Wl.prototype["catch"]=function(n){return this.then(null,n)},Wl.prototype.then=function(t,r){var o=this;return new Wl(function(n,e){ql.call(o,new Ql(t,r,n,e))})},Wl.all=function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];var a=Array.prototype.slice.call(1===n.length&&Ps(n[0])?n[0]:n);return new Wl(function(o,i){if(0===a.length)return o([]);var u=a.length;function c(e,n){try{if(n&&("object"==typeof n||"function"==typeof n)){var t=n.then;if("function"==typeof t)return void t.call(n,function(n){c(e,n)},i)}a[e]=n,0==--u&&o(a)}catch(r){i(r)}}for(var n=0;n<a.length;n++)c(n,a[n])})},Wl.resolve=function(e){return e&&"object"==typeof e&&e.constructor===Wl?e:new Wl(function(n){n(e)})},Wl.reject=function(t){return new Wl(function(n,e){e(t)})},Wl.race=function(o){return new Wl(function(n,e){for(var t=0,r=o;t<r.length;t++)r[t].then(n,e)})},Wl);function Wl(n){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof n)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],Zl(n,Xl(Yl,this),Xl(Kl,this))}function Xl(n,e){return function(){return n.apply(e,arguments)}}function ql(r){var o=this;null!==this._state?_s(function(){var n=o._state?r.onFulfilled:r.onRejected;if(null!==n){var e;try{e=n(o._value)}catch(t){return void r.reject(t)}r.resolve(e)}else(o._state?r.resolve:r.reject)(o._value)}):this._deferreds.push(r)}function Yl(n){try{if(n===this)throw new TypeError("A promise cannot be resolved with itself.");if(n&&("object"==typeof n||"function"==typeof n)){var e=n.then;if("function"==typeof e)return void Zl(Xl(e,n),Xl(Yl,this),Xl(Kl,this))}this._state=!0,this._value=n,Jl.call(this)}catch(t){Kl.call(this,t)}}function Kl(n){this._state=!1,this._value=n,Jl.call(this)}function Jl(){for(var n=0,e=this._deferreds;n<e.length;n++){var t=e[n];ql.call(this,t)}this._deferreds=[]}function Ql(n,e,t,r){this.onFulfilled="function"==typeof n?n:null,this.onRejected="function"==typeof e?e:null,this.resolve=t,this.reject=r}function Zl(n,e,t){var r=!1;try{n(function(n){r||(r=!0,e(n))},function(n){r||(r=!0,t(n))})}catch(o){if(r)return;r=!0,t(o)}}function nd(n){return function e(t){return new $l(function(n){var e=new d.FileReader;e.onloadend=function(){n(e.result)},e.readAsDataURL(t)})}(n).then(function(n){return n.split(",")[1]})}function ed(o,i){(function(n){return nd(n)})(i).then(function(r){o.undoManager.transact(function(){var n=o.editorUpload.blobCache,e=n.create(yc("mceu"),i,r);n.add(e);var t=o.dom.createHTML("img",{src:e.blobUri()});o.insertContent(t)})})}function td(t){var e=js({dom:{tag:"input",attributes:{accept:"image/*",type:"file",title:""},styles:{visibility:"hidden",position:"absolute"}},events:Nr([Lr(Re()),_r(Ie(),function(n,e){(function(n){var e=n.event(),t=e.raw().target.files||e.raw().dataTransfer.files;return Fn.from(t[0])})(e).each(function(n){ed(t,n)})})])});return Ls.sketch({dom:Ws.getToolbarIconButton("image",t),components:[e.asSpec()],action:function(n){e.get(n).element().dom().click()}})}function rd(n){return n.dom().textContent}function od(n){return 0<n.length}function id(n){return n===undefined||null===n?"":n}function ud(n,e,t){return t.text.toOption().filter(od).fold(function(){return function(n){return Qr(n,"href")===rd(n)}(n)?Fn.some(e):Fn.none()},Fn.some)}function cd(n,e){var t=e.selection.getRng();n(),e.selection.setRng(t)}function ad(n){return n.dom().value}function fd(n,e){if(e===undefined)throw new Error("Value.set was undefined");n.dom().value=e}function sd(n){return x(x({},function(n){return Bo([Li.config({onFocus:!1===n.selectOnFocus?w:function(n){var e=n.element(),t=ad(e);e.dom().setSelectionRange(0,t.length)}})])}(n)),pc(n.inputBehaviours,[sl.config({store:{mode:"manual",initialValue:n.data.getOr(undefined),getValue:function(n){return ad(n.element())},setValue:function(n,e){ad(n.element())!==e&&fd(n.element(),e)}},onSetValue:n.onSetValue})]))}function ld(n,e){var t=js(ym.sketch({inputAttributes:{placeholder:Sm.translate(e)},onSetValue:function(n,e){G(n,Me())},inputBehaviours:Bo([gm.config({find:Fn.some}),wm.config({}),Va.config({mode:"execution"})]),selectOnFocus:!1})),r=js(Ls.sketch({dom:Us('<button class="${prefix}-input-container-x ${prefix}-icon-cancel-circle ${prefix}-icon"></button>'),action:function(n){var e=t.get(n);sl.setValue(e,"")}}));return{name:n,spec:pm.sketch({dom:Us('<div class="${prefix}-input-container"></div>'),components:[t.asSpec(),r.asSpec()],containerBehaviours:Bo([Fi.config({toggleClass:_i.resolve("input-container-empty")}),gm.config({find:function(n){return Fn.some(t.get(n))}}),lm("input-clearing",[_r(Me(),function(n){var e=t.get(n);(0<sl.getValue(e).length?Fi.off:Fi.on)(n)})])])})}}function dd(n,e,t){e.disabled&&Om(n,e)}function md(n,e){return!0===e.useNative&&k(Tm,q(n.element()))}function gd(n){Kr(n.element(),"disabled","disabled")}function pd(n){no(n.element(),"disabled")}function hd(n){Kr(n.element(),"aria-disabled","true")}function vd(n){Kr(n.element(),"aria-disabled","false")}function yd(e,n,t){n.disableClass.each(function(n){co(e.element(),n)}),(md(e,n)?pd:vd)(e),n.onEnabled(e)}function bd(n,e){return md(n,e)?function(n){return Zr(n.element(),"disabled")}(n):function(n){return"true"===Qr(n.element(),"aria-disabled")}(n)}function xd(n){return"<alloy.field."+n+">"}function wd(){function e(){t.get().each(function(n){n.destroy()})}var t=Pn(Fn.none());return{clear:function(){e(),t.set(Fn.none())},isSet:function(){return t.get().isSome()},set:function(n){e(),t.set(Fn.some(n))},run:function(n){t.get().each(n)}}}function Sd(){var e=Pn(Fn.none());return{clear:function(){e.set(Fn.none())},set:function(n){e.set(Fn.some(n))},isSet:function(){return e.get().isSome()},on:function(n){e.get().each(n)}}}function Td(n){function r(e,n,t){return Ls.sketch({dom:Us('<span class="${prefix}-icon-'+n+' ${prefix}-icon"></span>'),action:function(n){U(n,u,{direction:e})},buttonBehaviours:Bo([Dm.config({disableClass:_i.resolve("toolbar-navigation-disabled"),disabled:!t})])})}function o(n,o){var i=Yi(n.element(),"."+_i.resolve("serialised-dialog-screen"));Qi(n.element(),"."+_i.resolve("serialised-dialog-chain")).each(function(r){0<=c.state.currentScreen.get()+o&&c.state.currentScreen.get()+o<i.length&&(gi(r,"left").each(function(n){var e=parseInt(n,10),t=Mf(i[0]);Gi(r,"left",e-o*t+"px")}),c.state.currentScreen.set(c.state.currentScreen.get()+o))})}function i(e){var n=Yi(e.element(),"input");Fn.from(n[c.state.currentScreen.get()]).each(function(n){e.getSystem().getByDom(n).each(function(n){!function(n,e){n.getSystem().triggerFocus(e,n.element())}(e,n.element())})});var t=f.get(e);Cu.highlightAt(t,c.state.currentScreen.get())}var u="navigateEvent",e=Or([Yt("fields"),tr("maxFieldIndex",n.fields.length-1),Yt("onExecute"),Yt("getInitialValue"),or("state",function(){return{dialogSwipeState:Sd(),currentScreen:Pn(0)}})]),c=Xt("SerialisedDialog",e,n),a=js(Rm(function(t){return{dom:Us('<div class="${prefix}-serialised-dialog"></div>'),components:[pm.sketch({dom:Us('<div class="${prefix}-serialised-dialog-chain" style="left: 0px; position: absolute;"></div>'),components:de(c.fields,function(n,e){return e<=c.maxFieldIndex?pm.sketch({dom:Us('<div class="${prefix}-serialised-dialog-screen"></div>'),components:[r(-1,"previous",0<e),t.field(n.name,n.spec),r(1,"next",e<c.maxFieldIndex)]}):t.field(n.name,n.spec)})})],formBehaviours:Bo([Vi(function(n,e){!function(n,e){Qi(n.element(),"."+_i.resolve("serialised-dialog-chain")).each(function(n){Gi(n,"left",-c.state.currentScreen.get()*e.width+"px")})}(n,e)}),Va.config({mode:"special",focusIn:function(n){i(n)},onTab:function(n){return o(n,1),Fn.some(!0)},onShiftTab:function(n){return o(n,-1),Fn.some(!0)}}),lm("form-events",[Eo(function(e,n){c.state.currentScreen.set(0),c.state.dialogSwipeState.clear();var t=f.get(e);Cu.highlightFirst(t),c.getInitialValue(e).each(function(n){sl.setValue(e,n)})}),Mo(c.onExecute),_r(Ae(),function(n,e){"left"===e.event().raw().propertyName&&i(n)}),_r(u,function(n,e){var t=e.event().direction();o(n,t)})])])}})),f=js({dom:Us('<div class="${prefix}-dot-container"></div>'),behaviours:Bo([Cu.config({highlightClass:_i.resolve("dot-active"),itemClass:_i.resolve("dot-item")})]),components:B(c.fields,function(n,e){return e<=c.maxFieldIndex?[bf('<div class="${prefix}-dot-item ${prefix}-icon-full-dot ${prefix}-icon"></div>')]:[]})});return{dom:Us('<div class="${prefix}-serializer-wrapper"></div>'),components:[a.asSpec(),f.asSpec()],behaviours:Bo([Va.config({mode:"special",focusIn:function(n){var e=a.get(n);Va.focusIn(e)}}),lm("serializer-wrapper-events",[_r(xe(),function(n,e){var t=e.event();c.state.dialogSwipeState.set(Am(t.raw().touches[0].clientX))}),_r(we(),function(n,e){var t=e.event();c.state.dialogSwipeState.on(function(n){e.event().prevent(),c.state.dialogSwipeState.set(Fm(n,t.raw().touches[0].clientX))})}),_r(Se(),function(r){c.state.dialogSwipeState.on(function(n){var e=a.get(r),t=-1*Bm(n);o(e,t)})})])])}}function Od(e){function n(n){return function(){throw new Error("The component must be in a context to send: "+n+"\n"+bo(e().element())+" is not in context.")}}return{debugInfo:v("fake"),triggerEvent:n("triggerEvent"),triggerFocus:n("triggerFocus"),triggerEscape:n("triggerEscape"),build:n("build"),addToWorld:n("addToWorld"),removeFromWorld:n("removeFromWorld"),addToGui:n("addToGui"),removeFromGui:n("removeFromGui"),getByUid:n("getByUid"),getByDom:n("getByDom"),broadcast:n("broadcast"),broadcastOn:n("broadcastOn"),broadcastEvent:n("broadcastEvent"),isConnected:v(!1)}}function kd(n,o){var i={};return Nn(n,function(n,r){Nn(n,function(n,e){var t=kn(e,[])(i);i[e]=t.concat([o(r,n)])})}),i}function Ed(n){return n.cHandler}function Cd(n,e){return{name:v(n),handler:v(e)}}function Dd(n,e,t){var r=x(x({},t),function(n,e){var t={};return C(n,function(n){t[n.name()]=n.handlers(e)}),t}(e,n));return kd(r,Cd)}function Md(n){var i=function(n){return ce(n)?{can:v(!0),abort:v(!1),run:n}:n}(n);return function(n,e){for(var t=[],r=2;r<arguments.length;r++)t[r-2]=arguments[r];var o=[n,e].concat(t);i.abort.apply(undefined,o)?e.stop():i.can.apply(undefined,o)&&i.run.apply(undefined,o)}}function Id(n,e,t){var r=e[t];return r?function(u,c,n,a){var e=n.slice(0);try{var t=e.sort(function(n,e){var t=n[c](),r=e[c](),o=a.indexOf(t),i=a.indexOf(r);if(-1===o)throw new Error("The ordering for "+u+" does not have an entry for "+t+".\nOrder specified: "+JSON.stringify(a,null,2));if(-1===i)throw new Error("The ordering for "+u+" does not have an entry for "+r+".\nOrder specified: "+JSON.stringify(a,null,2));return o<i?-1:i<o?1:0});return vt.value(t)}catch(r){return vt.error([r])}}("Event: "+t,"name",n,r).map(function(n){var e=de(n,function(n){return n.handler()});return cr(e)}):function(n,e){return vt.error(["The event ("+n+') has more than one behaviour that listens to it.\nWhen this occurs, you must specify an event ordering for the behaviours in your spec (e.g. [ "listing", "toggling" ]).\nThe behaviours that can trigger it are: '+JSON.stringify(de(e,function(n){return n.name()}),null,2)])}(t,n)}function Rd(n){return $t("custom.definition",Or([Cr("dom","dom",Tt(),Or([Yt("tag"),tr("styles",{}),tr("classes",[]),tr("attributes",{}),Qt("value"),Qt("innerHtml")])),Yt("components"),Yt("uid"),tr("events",{}),tr("apis",{}),Cr("eventOrder","eventOrder",function(n){return St.mergeWithThunk(v(n))}({"alloy.execute":["disabling","alloy.base.behaviour","toggling","typeaheadevents"],"alloy.focus":["alloy.base.behaviour","focusing","keying"],"alloy.system.init":["alloy.base.behaviour","disabling","toggling","representing"],input:["alloy.base.behaviour","representing","streaming","invalidating"],"alloy.system.detached":["alloy.base.behaviour","representing","item-events","tooltipping"],mousedown:["focusing","alloy.base.behaviour","item-type-events"],touchstart:["focusing","alloy.base.behaviour","item-type-events"],mouseover:["item-type-events","tooltipping"]}),Ir()),Qt("domModification")]),n)}function Ad(e,n){C(n,function(n){io(e,n)})}function Fd(e,n){C(n,function(n){co(e,n)})}function Bd(n,e){return function(e,n){var t=de(n,function(n){return nr(n.name(),[Yt("config"),tr("state",Ao)])}),r=$t("component.behaviours",Or(t),e.behaviours).fold(function(n){throw new Error(Mr(n)+"\nComplete spec:\n"+JSON.stringify(e,null,2))},function(n){return n});return{list:n,data:S(r,function(n){var e=n.map(function(n){return{config:n.config,state:n.state.init(n.config)}});return function(){return e}})}}(n,e)}function Vd(n){var e=function(n){var e=kn("behaviours",{})(n),t=D(Bn(e),function(n){return e[n]!==undefined});return de(t,function(n){return e[n].me})}(n);return Bd(n,e)}function Nd(n,e,t){var r=function(n){return x(x({},n.dom),{uid:n.uid,domChildren:de(n.components,function(n){return n.element()})})}(n),o=function(n){return n.domModification.fold(function(){return Ur({})},Ur)}(n),i={"alloy.base.modification":o};return function(n,e){return x(x({},n),{attributes:x(x({},n.attributes),e.attributes),styles:x(x({},n.styles),e.styles),classes:n.classes.concat(e.classes)})}(r,0<e.length?function(e,n,t,r){var o=x({},n);C(t,function(n){o[n.name()]=n.exhibit(e,r)});function i(n){return M(n,function(n,e){return x(x({},e.modification),n)},{})}var u=kd(o,function(n,e){return{name:n,modification:e}}),c=M(u.classes,function(n,e){return e.modification.concat(n)},[]),a=i(u.attributes),f=i(u.styles);return Ur({classes:c,attributes:a,styles:f})}(t,i,e,r):o)}function jd(n,e,t){var r={"alloy.base.behaviour":function(n){return n.events}(n)};return function(n,e,t,r){var o=Dd(n,t,r);return Lm(o,e)}(t,n.eventOrder,e,r).getOrDie()}function _d(t){function n(){return s}var r=Pn(Hm),e=Wt(Rd(t)),o=Vd(t),i=function(n){return n.list}(o),u=function(n){return n.data}(o),c=function(n){var e=Je.fromTag(n.tag);Jr(e,n.attributes),Ad(e,n.classes),di(e,n.styles),n.innerHtml.each(function(n){return ho(e,n)});var t=n.domChildren;return gn(e,t),n.value.each(function(n){fd(e,n)}),n.uid,mf(e,n.uid),e}(Nd(e,i,u)),a=jd(e,i,u),f=Pn(e.components),s={getSystem:r.get,config:function(n){var e=u;return(ce(e[n.name()])?e[n.name()]:function(){throw new Error("Could not find "+n.name()+" in "+JSON.stringify(t,null,2))})()},hasConfigured:function(n){return ce(u[n.name()])},spec:v(t),readState:function(n){return u[n]().map(function(n){return n.state.readState()}).getOr("not enabled")},getApis:function(){return e.apis},connect:function(n){r.set(n)},disconnect:function(){r.set(Od(n))},element:v(c),syncComponents:function(){var n=at(c),e=B(n,function(n){return r.get().getByDom(n).fold(function(){return[]},function(n){return[n]})});f.set(e)},components:f.get,events:v(a)};return s}function Pd(n){var e=Pm(n),t=e.events,r=u(e,["events"]),o=function(n){var e=kn("components",[])(n);return de(e,$m)}(r),i=x(x({},r),{events:x(x({},_m),t),components:o});return vt.value(_d(i))}function Hd(n){var e=Je.fromText(n);return Gm({element:e})}function zd(n){(go(n.element()).isNone()||Li.isFocused(n))&&(Li.isFocused(n)||Li.focus(n),U(n,Xm,{item:n}))}function Ld(n){U(n,qm,{item:n})}function Gd(n,e,t,r){var o=n.getSystem().build(r);mt(n,o,t)}function Ud(n,e,t,r){var o=ug(n);R(o,function(n){return cn(r.element(),n.element())}).each(yn)}function $d(e,n,t,r,o){var i=ug(e);return Fn.from(i[r]).map(function(n){return Ud(e,0,0,n),o.each(function(n){Gd(e,0,function(n,e){!function(n,e,t){sn(n,t).fold(function(){ft(n,e)},function(n){ln(n,e)})}(n,e,r)},n)}),n})}function Wd(n,e){var t={};Nn(n,function(n,e){C(n,function(n){t[n]=e})});var r=e,o=function(n){return jn(n,function(n,e){return{k:n,v:e}})}(e),i=S(o,function(n,e){return[e].concat(ag(t,r,o,e))});return S(t,function(n){return Dt(i,n).getOr([n])})}function Xd(n,e,t,r){return Dt(e.routes,r.start).bind(function(n){return Dt(n,r.destination)})}function qd(t,r,n){(function(e,t,r){return gg(e,t).bind(function(n){return mg(e,t,r,n)})})(t,r,n).each(function(n){var e=n.transition;co(t.element(),e.transitionClass),no(t.element(),r.destinationAttr)})}function Yd(n,e,t,r){qd(n,e,t),Zr(n.element(),e.stateAttr)&&Qr(n.element(),e.stateAttr)!==r&&e.onFinish(n,r),Kr(n.element(),e.stateAttr,r)}function Kd(n){return Dt(n,"format").getOr(n.title)}function Jd(n){return Mn(n,"items")?function(n){var e=xt(On(n,["items"]),{menu:!0}),t=Og(n.items);return{item:e,menus:xt(t.menus,En(n.title,t.items)),expansions:xt(t.expansions,En(n.title,n.title))}}(n):{item:n,menus:{},expansions:{}}}function Qd(n){var e=n.replace(/\|/g," ").trim();return 0<e.length?e.split(/\s+/):[]}function Zd(n){var e=n.toolbar!==undefined?n.toolbar:Dg;return ie(e)?Mg(e):Qd(e)}function nm(n){function e(){n.stopPropagation()}function t(){n.preventDefault()}var r=Je.fromDom(n.target),o=i(t,e);return function(n,e,t,r,o,i,u){return{target:v(n),x:v(e),y:v(t),stop:r,prevent:o,kill:i,raw:v(u)}}(r,n.clientX,n.clientY,e,t,o,n)}function em(n,e,t,r,o){var i=function(e,t){return function(n){e(n)&&t(nm(n))}}(t,r);return n.dom().addEventListener(e,i,o),{unbind:l(Ag,n,e,i,o)}}function tm(n,e,t){return function(n,e,t,r){return em(n,e,t,r,!1)}(n,e,Fg,t)}function rm(n,e,t){return function(n,e,t,r){return em(n,e,t,r,!0)}(n,e,Fg,t)}function om(n){var e=n.matchMedia("(orientation: portrait)").matches;return{isPortrait:v(e)}}var im,um,cm=function(n){var e=Je.fromDom(n.selection.getStart());return Zi(e,"a")},am={getInfo:function(n){return cm(n).fold(function(){return function(n){return{url:"",text:n.selection.getContent({format:"text"}),title:"",target:"",link:Fn.none()}}(n)},function(n){return function(n){var e=rd(n),t=Qr(n,"href"),r=Qr(n,"title"),o=Qr(n,"target");return{url:id(t),text:e!==t?id(e):"",title:id(r),target:id(o),link:Fn.some(n)}}(n)})},applyInfo:function(e,o){o.url.toOption().filter(od).fold(function(){!function(e,n){n.link.bind(y).each(function(n){e.execCommand("unlink")})}(e,o)},function(t){var r=function(n,e){var t={};return t.href=n,e.title.toOption().filter(od).each(function(n){t.title=n}),e.target.toOption().filter(od).each(function(n){t.target=n}),t}(t,o);o.link.bind(y).fold(function(){var n=o.text.toOption().filter(od).getOr(t);e.insertContent(e.dom.createHTML("a",r,e.dom.encode(n)))},function(e){var n=ud(e,t,o);Jr(e,r),n.each(function(n){!function(n,e){n.dom().textContent=e}(e,n)})})})},query:cm},fm=L(),sm=function(n,e){(fm.os.isAndroid()?cd:t)(e,n)},lm=function(n,e){return{key:n,value:{config:{},me:function(n,e){var t=Nr(e);return qr({fields:[Yt("enabled")],name:n,active:{events:v(t)}})}(n,e),configAsRaw:v({}),initialConfig:{},state:Ao}}},dm=/* */Object.freeze({getCurrent:function(n,e,t){return e.find(n)}}),mm=[Yt("find")],gm=qr({fields:mm,name:"composing",apis:dm}),pm=hf({name:"Container",factory:function(n){var e=n.dom,t=e.attributes,r=u(e,["attributes"]);return{uid:n.uid,dom:x({tag:"div",attributes:x({role:"presentation"},t)},r),components:n.components,behaviours:gc(n.containerBehaviours),events:n.events,domModification:n.domModification,eventOrder:n.eventOrder}},configFields:[tr("components",[]),mc("containerBehaviours",[]),tr("events",{}),tr("domModification",{}),tr("eventOrder",{})]}),hm=hf({name:"DataField",factory:function(t){return{uid:t.uid,dom:t.dom,behaviours:ja(t.dataBehaviours,[sl.config({store:{mode:"memory",initialValue:t.getInitialValue()}}),gm.config({find:Fn.some})]),events:Nr([Eo(function(n,e){sl.setValue(n,t.getInitialValue())})])}},configFields:[Yt("uid"),Yt("dom"),Yt("getInitialValue"),Na("dataBehaviours",[sl,gm])]}),vm=v([Qt("data"),tr("inputAttributes",{}),tr("inputStyles",{}),tr("tag","input"),tr("inputClasses",[]),Ko("onSetValue"),tr("styles",{}),tr("eventOrder",{}),mc("inputBehaviours",[sl,Li]),tr("selectOnFocus",!0)]),ym=hf({name:"Input",configFields:vm(),factory:function(n,e){return{uid:n.uid,dom:function(n){return{tag:n.tag,attributes:x({type:"text"},n.inputAttributes),styles:n.inputStyles,classes:n.inputClasses}}(n),components:[],behaviours:sd(n),eventOrder:n.eventOrder}}}),bm=/* */Object.freeze({exhibit:function(n,e){return Ur({attributes:Cn([{key:e.tabAttr,value:"true"}])})}}),xm=[tr("tabAttr","data-alloy-tabstop")],wm=qr({fields:xm,name:"tabstopping",active:bm}),Sm=tinymce.util.Tools.resolve("tinymce.util.I18n"),Tm=["input","button","textarea","select"],Om=function(e,n,t){n.disableClass.each(function(n){io(e.element(),n)}),(md(e,n)?gd:hd)(e),n.onDisabled(e)},km=/* */Object.freeze({enable:yd,disable:Om,isDisabled:bd,onLoad:dd,set:function(n,e,t,r){(r?Om:yd)(n,e,t)}}),Em=/* */Object.freeze({exhibit:function(n,e,t){return Ur({classes:e.disabled?e.disableClass.map(_).getOr([]):[]})},events:function(t,n){return Nr([jr(Pe(),function(n,e){return bd(n,t)}),$r(t,n,dd)])}}),Cm=[tr("disabled",!1),tr("useNative",!0),Qt("disableClass"),Ko("onDisabled"),Ko("onEnabled")],Dm=qr({fields:Cm,name:"disabling",active:Em,apis:km}),Mm=[mc("formBehaviours",[sl])],Im=function(r,n,e){return{uid:r.uid,dom:r.dom,components:n,behaviours:pc(r.formBehaviours,[sl.config({store:{mode:"manual",getValue:function(n){var e=function(n,e){var t=n.getSystem();return S(e.partUids,function(n,e){return v(t.getByUid(n))})}(n,r);return S(e,function(n,e){return n().bind(function(n){return function(n,e){return n.fold(function(){return vt.error(e)},vt.value)}(gm.getCurrent(n),"missing current")}).map(sl.getValue)})},setValue:function(t,n){Nn(n,function(e,n){kc(t,r,n).each(function(n){gm.getCurrent(n).each(function(n){sl.setValue(n,e)})})})}}})]),apis:{getField:function(n,e){return kc(n,r,e).bind(gm.getCurrent)}}}},Rm=(Ic(function(n,e,t){return n.getField(e,t)}),function(n){var t,e=(t=[],{field:function(n,e){return t.push(n),function(n,e,t){return{uiType:Ga(),owner:n,name:e,config:t,validated:{}}}("form",xd(n),e)},record:function(){return t}}),r=n(e),o=e.record(),i=de(o,function(n){return tf({name:n,pname:xd(n)})});return Fc("form",Mm,i,Im,r)}),Am=function(n){return{xValue:n,points:[]}},Fm=function(n,e){if(e===n.xValue)return n;var t=0<e-n.xValue?1:-1,r={direction:t,xValue:e};return{xValue:e,points:(0===n.points.length?[]:n.points[n.points.length-1].direction===t?n.points.slice(0,n.points.length-1):n.points).concat([r])}},Bm=function(n){if(0===n.points.length)return 0;var e=n.points[0].direction,t=n.points[n.points.length-1].direction;return-1===e&&-1===t?-1:1===e&&1===t?1:0},Vm=X(function(t,r){return[{label:"the link group",items:[Td({fields:[ld("url","Type or paste URL"),ld("text","Link text"),ld("title","Link title"),ld("target","Link target"),function(n){return{name:n,spec:hm.sketch({dom:{tag:"span",styles:{display:"none"}},getInitialValue:function(){return Fn.none()}})}}("link")],maxFieldIndex:["url","text","title","target"].length-1,getInitialValue:function(){return Fn.some(am.getInfo(r))},onExecute:function(n){var e=sl.getValue(n);am.applyInfo(r,e),t.restoreToolbar(),r.focus()}})]}]}),Nm=[{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"}]}],jm=Nr([(im=Ve(),um=function(n,e){var t=e.event().originator(),r=e.event().target();return!function(n,e,t){return cn(e,n.element())&&!cn(e,t)}(n,t,r)||(d.console.warn(Ve()+" did not get interpreted by the desired target. \nOriginator: "+bo(t)+"\nTarget: "+bo(r)+"\nCheck the "+Ve()+" event handlers"),!1)},{key:im,value:ur({can:um})})]),_m=/* */Object.freeze({events:jm}),Pm=y,Hm=Od(),zm=function(n,e){return function(n,e){return{cHandler:n,purpose:v(e)}}(l.apply(undefined,[n.handler].concat(e)),n.purpose())},Lm=function(n,i){var e=_n(n,function(r,o){return(1===r.length?vt.value(r[0].handler()):Id(r,i,o)).map(function(n){var e=Md(n),t=1<r.length?D(i[o],function(e){return E(r,function(n){return n.name()===e})}).join(" > "):r[0].name();return En(o,function(n,e){return{handler:n,purpose:v(e)}}(e,t))})});return Dn(e,{})},Gm=function(n){var e=Xt("external.component",Pt([Yt("element"),Qt("uid")]),n),t=Pn(Od());e.uid.each(function(n){mf(e.element,n)});var r={getSystem:t.get,config:Fn.none,hasConfigured:v(!1),connect:function(n){t.set(n)},disconnect:function(){t.set(Od(function(){return r}))},getApis:function(){return{}},element:v(e.element),spec:v(n),readState:v("No state"),syncComponents:w,components:v([]),events:v({})};return Mc(r)},Um=Rc,$m=function(e){return function(n){return Dt(n,af)}(e).fold(function(){var n=e.hasOwnProperty("uid")?e:x({uid:Um("")},e);return Pd(n).getOrDie()},function(n){return n})},Wm=Mc,Xm="alloy.item-hover",qm="alloy.item-focus",Ym=v(Xm),Km=v(qm),Jm=[Yt("data"),Yt("components"),Yt("dom"),tr("hasSubmenu",!1),Qt("toggling"),Na("itemBehaviours",[Fi,Li,Va,sl]),tr("ignoreFocus",!1),tr("domModification",{}),ni("builder",function(n){return{dom:n.dom,domModification:x(x({},n.domModification),{attributes:x(x(x({role:n.toggling.isSome()?"menuitemcheckbox":"menuitem"},n.domModification.attributes),{"aria-haspopup":n.hasSubmenu}),n.hasSubmenu?{"aria-expanded":!1}:{})}),behaviours:ja(n.itemBehaviours,[n.toggling.fold(Fi.revoke,function(n){return Fi.config(x({aria:{mode:"checked"}},n))}),Li.config({ignore:n.ignoreFocus,stopMousedown:n.ignoreFocus,onFocus:function(n){Ld(n)}}),Va.config({mode:"execution"}),sl.config({store:{mode:"memory",initialValue:n.data}}),lm("item-type-events",function a(){for(var n=0,e=0,t=arguments.length;e<t;e++)n+=arguments[e].length;var r=Array(n),o=0;for(e=0;e<t;e++)for(var i=arguments[e],u=0,c=i.length;u<c;u++,o++)r[o]=i[u];return r}(ai(),[_r(Ee(),zd),_r(He(),Li.focus)]))]),components:n.components,eventOrder:n.eventOrder}}),tr("eventOrder",{})],Qm=[Yt("dom"),Yt("components"),ni("builder",function(n){return{dom:n.dom,components:n.components,events:Nr([function(n){return _r(n,function(n,e){e.stop()})}(He())])}})],Zm=v([tf({name:"widget",overrides:function(e){return{behaviours:Bo([sl.config({store:{mode:"manual",getValue:function(n){return e.data},setValue:function(){}}})])}}})]),ng=[Yt("uid"),Yt("data"),Yt("components"),Yt("dom"),tr("autofocus",!1),tr("ignoreFocus",!1),Na("widgetBehaviours",[sl,Li,Va]),tr("domModification",{}),Dc(Zm()),ni("builder",function(t){function r(n){return kc(n,t,"widget").map(function(n){return Va.focusIn(n),n})}function n(n,e){return Iu(e.event().target())||t.autofocus&&e.setSource(n.element()),Fn.none()}var e=Tc(0,t,Zm()),o=Oc("item-widget",t,e.internals());return{dom:t.dom,components:o,domModification:t.domModification,events:Nr([Mo(function(n,e){r(n).each(function(n){e.stop()})}),_r(Ee(),zd),_r(He(),function(n,e){t.autofocus?r(n):Li.focus(n)})]),behaviours:ja(t.widgetBehaviours,[sl.config({store:{mode:"memory",initialValue:t.data}}),Li.config({ignore:t.ignoreFocus,onFocus:function(n){Ld(n)}}),Va.config({mode:"special",focusIn:t.autofocus?function(n){r(n)}:jo(),onLeft:n,onRight:n,onEscape:function(n,e){return Li.isFocused(n)||t.autofocus?(t.autofocus&&e.setSource(n.element()),Fn.none()):(Li.focus(n),Fn.some(!0))}})])}})],eg=qt("type",{widget:ng,item:Jm,separator:Qm}),tg=v([of({factory:{sketch:function(n){var e=Xt("menu.spec item",eg,n);return e.builder(e)}},name:"items",unit:"item",defaults:function(n,e){return e.hasOwnProperty("uid")?e:x(x({},e),{uid:Rc("item")})},overrides:function(n,e){return{type:e.type,ignoreFocus:n.fakeFocus,domModification:{classes:[n.markers.item]}}}})]),rg=v([Yt("value"),Yt("items"),Yt("dom"),Yt("components"),tr("eventOrder",{}),mc("menuBehaviours",[Cu,sl,gm,Va]),rr("movement",{mode:"menu",moveOnTab:!0},qt("mode",{grid:[ki(),ni("config",function(n,e){return{mode:"flatgrid",selector:"."+n.markers.item,initSize:{numColumns:e.initSize.numColumns,numRows:e.initSize.numRows},focusManager:n.focusManager}})],matrix:[ni("config",function(n,e){return{mode:"matrix",selectors:{row:e.rowSelector,cell:"."+n.markers.item},focusManager:n.focusManager}}),Yt("rowSelector")],menu:[tr("moveOnTab",!0),ni("config",function(n,e){return{mode:"menu",selector:"."+n.markers.item,moveOnTab:e.moveOnTab,focusManager:n.focusManager}})]})),Kt("markers",Ti()),tr("fakeFocus",!1),tr("focusManager",pu()),Ko("onHighlight")]),og=v("alloy.menu-focus"),ig=vf({name:"Menu",configFields:rg(),partFields:tg(),factory:function(n,e,t,r){return{uid:n.uid,dom:n.dom,markers:n.markers,behaviours:pc(n.menuBehaviours,[Cu.config({highlightClass:n.markers.selectedItem,itemClass:n.markers.item,onHighlight:n.onHighlight}),sl.config({store:{mode:"memory",initialValue:n.value}}),gm.config({find:Fn.some}),Va.config(n.movement.config(n,n.movement))]),events:Nr([_r(Km(),function(e,t){var n=t.event();e.getSystem().getByDom(n.target()).each(function(n){Cu.highlight(e,n),t.stop(),U(e,og(),{menu:e,item:n})})}),_r(Ym(),function(n,e){var t=e.event().item();Cu.highlight(n,t)})]),components:e,eventOrder:n.eventOrder,domModification:{attributes:{role:"menu"}}}}}),ug=function(n,e){return n.components()},cg=qr({fields:[],name:"replacing",apis:/* */Object.freeze({append:function(n,e,t,r){Gd(n,0,ft,r)},prepend:function(n,e,t,r){Gd(n,0,mn,r)},remove:Ud,replaceAt:$d,replaceBy:function(e,n,t,r,o){var i=ug(e);return A(i,r).bind(function(n){return $d(e,0,0,n,o)})},set:function(e,n,t,r){!function(n,t){var r=an(t),e=mo(r).bind(function(e){function n(n){return cn(e,n)}return n(t)?Fn.some(t):Vr(t,n)}),o=n(t);e.each(function(e){mo(r).filter(function(n){return cn(n,e)}).fold(function(){so(e)},w)})}(function(){var n=de(r,e.getSystem().build);vn(e,n)},e.element())},contents:ug})}),ag=function(t,r,o,n){return Dt(o,n).bind(function(n){return Dt(t,n).bind(function(n){var e=ag(t,r,o,n);return Fn.some([n].concat(e))})}).getOr([])},fg=function(n){return"prepared"===n.type?Fn.some(n.menu):Fn.none()},sg={init:function(){function o(t){return function(n,e){for(var t=Bn(n),r=0,o=t.length;r<o;r++){var i=t[r],u=n[i];if(e(u,i,n))return Fn.some(u)}return Fn.none()}(i.get(),function(n,e){return n===t})}var i=Pn({}),u=Pn({}),c=Pn({}),a=Pn(Fn.none()),f=Pn({}),s=function(n){return e(n).bind(fg)},e=function(n){return Dt(u.get(),n)},t=function(n){return Dt(i.get(),n)};return{setMenuBuilt:function(n,e){var t;u.set(x(x({},u.get()),((t={})[n]={type:"prepared",menu:e},t)))},setContents:function(n,e,t,r){a.set(Fn.some(n)),i.set(t),u.set(e),f.set(r);var o=Wd(r,t);c.set(o)},expand:function(t){return Dt(i.get(),t).map(function(n){var e=Dt(c.get(),t).getOr([]);return[n].concat(e)})},refresh:function(n){return Dt(c.get(),n)},collapse:function(n){return Dt(c.get(),n).bind(function(n){return 1<n.length?Fn.some(n.slice(1)):Fn.none()})},lookupMenu:e,lookupItem:t,otherMenus:function(n){var e=f.get();return j(Bn(e),n)},getPrimary:function(){return a.get().bind(s)},getMenus:function(){return u.get()},clear:function(){i.set({}),u.set({}),c.set({}),a.set(Fn.none())},isClear:function(){return a.get().isNone()},getTriggeringPath:function(n,r){var e=D(t(n).toArray(),function(n){return s(n).isSome()});return Dt(c.get(),n).bind(function(n){var t=N(e.concat(n));return function(n){for(var e=[],t=0;t<n.length;t++){var r=n[t];if(!r.isSome())return Fn.none();e.push(r.getOrDie())}return Fn.some(e)}(B(t,function(n,e){return function(n,t,r){return s(n).bind(function(e){return o(n).bind(function(n){return t(n).map(function(n){return{triggeredMenu:e,triggeringItem:n,triggeringPath:r}})})})}(n,r,t.slice(0,e+1)).fold(function(){return a.get().is(n)?[]:[Fn.none()]},function(n){return[Fn.some(n)]})}))})}}},extractPreparedMenu:fg},lg=v("collapse-item"),dg=hf({name:"TieredMenu",configFields:[Zo("onExecute"),Zo("onEscape"),Qo("onOpenMenu"),Qo("onOpenSubmenu"),Qo("onRepositionMenu"),Ko("onCollapseMenu"),tr("highlightImmediately",!0),Jt("data",[Yt("primary"),Yt("menus"),Yt("expansions")]),tr("fakeFocus",!1),Ko("onHighlight"),Ko("onHover"),Jt("markers",[Yt("backgroundMenu")].concat(wi()).concat(Si())),Yt("dom"),tr("navigateOnHover",!0),tr("stayInDom",!1),mc("tmenuBehaviours",[Va,Cu,gm,cg]),tr("eventOrder",{})],apis:{collapseMenu:function(n,e){n.collapseMenu(e)},highlightPrimary:function(n,e){n.highlightPrimary(e)},repositionMenus:function(n,e){n.repositionMenus(e)}},factory:function(c,n){function r(r,o,n){return S(n,function(n,e){function t(){return ig.sketch(x(x({dom:n.dom},n),{value:e,items:n.items,markers:c.markers,fakeFocus:c.fakeFocus,onHighlight:c.onHighlight,focusManager:c.fakeFocus?function(){function o(n){return Cu.getHighlighted(n).map(function(n){return n.element()})}return{get:o,set:function(e,n){var t=o(e);e.getSystem().getByDom(n).fold(w,function(n){Cu.highlight(e,n)});var r=o(e);gu(e,t,r)}}}():pu()}))}return e===o?{type:"prepared",menu:r.getSystem().build(t())}:{type:"notbuilt",nbMenu:t}})}function a(n){return sl.getValue(n).value}function u(e,n){Cu.highlight(e,n),Cu.getHighlighted(n).orThunk(function(){return Cu.getFirst(n)}).each(function(n){W(e,n.element(),He())})}function f(e,n){return xo(de(n,function(n){return e.lookupMenu(n).bind(function(n){return"prepared"===n.type?Fn.some(n.menu):Fn.none()})}))}function s(e,n,t){var r=f(n,n.otherMenus(t));C(r,function(n){Fd(n.element(),[c.markers.backgroundMenu]),c.stayInDom||cg.remove(e,n)})}function l(n,r){var e=function(r){return o.get().getOrThunk(function(){var t={},n=Yi(r.element(),"."+c.markers.item),e=D(n,function(n){return"true"===Qr(n,"aria-haspopup")});return C(e,function(n){r.getSystem().getByDom(n).each(function(n){var e=a(n);t[e]=n})}),o.set(Fn.some(t)),t})}(n);Nn(e,function(n,e){var t=k(r,e);Kr(n.element(),"aria-expanded",t)})}function d(r,o,i){return Fn.from(i[0]).bind(function(n){return o.lookupMenu(n).bind(function(n){if("notbuilt"===n.type)return Fn.none();var e=n.menu,t=f(o,i.slice(1));return C(t,function(n){io(n.element(),c.markers.backgroundMenu)}),K(e.element())||cg.append(r,Wm(e)),Fd(e.element(),[c.markers.backgroundMenu]),u(r,e),s(r,o,i),Fn.some(e)})})}var m,e,o=Pn(Fn.none()),g=sg.init(),i=function(n){return S(c.data.menus,function(n,e){return B(n.items,function(n){return"separator"===n.type?[]:[n.data.value]})})};(e=m=m||{})[e.HighlightSubmenu=0]="HighlightSubmenu",e[e.HighlightParent=1]="HighlightParent";function p(o,i,u){void 0===u&&(u=m.HighlightSubmenu);var n=a(i);return g.expand(n).bind(function(r){return l(o,r),Fn.from(r[0]).bind(function(t){return g.lookupMenu(t).bind(function(n){var e=function(n,e,t){if("notbuilt"!==t.type)return t.menu;var r=n.getSystem().build(t.nbMenu());return g.setMenuBuilt(e,r),r}(o,t,n);return K(e.element())||cg.append(o,Wm(e)),c.onOpenSubmenu(o,i,e,N(r)),u===m.HighlightSubmenu?(Cu.highlightFirst(e),d(o,g,r)):(Cu.dehighlightAll(e),Fn.some(i))})})})}function h(e,t){var n=a(t);return g.collapse(n).bind(function(n){return l(e,n),d(e,g,n).map(function(n){return c.onCollapseMenu(e,t,n),n})})}function t(t){return function(e,n){return Zi(n.getSource(),"."+c.markers.item).bind(function(n){return e.getSystem().getByDom(n).toOption().bind(function(n){return t(e,n).map(function(){return!0})})})}}function v(n){return Cu.getHighlighted(n).bind(Cu.getHighlighted)}var y=Nr([_r(og(),function(t,r){var n=r.event().item();g.lookupItem(a(n)).each(function(){var n=r.event().menu();Cu.highlight(t,n);var e=a(r.event().item());g.refresh(e).each(function(n){return s(t,g,n)})})}),Mo(function(e,n){var t=n.event().target();e.getSystem().getByDom(t).each(function(n){0===a(n).indexOf("collapse-item")&&h(e,n),p(e,n,m.HighlightSubmenu).fold(function(){c.onExecute(e,n)},function(){})})}),Eo(function(e,n){(function(n){var e=r(n,c.data.primary,c.data.menus),t=i();return g.setContents(c.data.primary,e,c.data.expansions,t),g.getPrimary()})(e).each(function(n){cg.append(e,Wm(n)),c.onOpenMenu(e,n),c.highlightImmediately&&u(e,n)})})].concat(c.navigateOnHover?[_r(Ym(),function(n,e){var t=e.event().item();!function(e,n){var t=a(n);g.refresh(t).bind(function(n){return l(e,n),d(e,g,n)})}(n,t),p(n,t,m.HighlightParent),c.onHover(n,t)})]:[])),b={collapseMenu:function(e){v(e).each(function(n){h(e,n)})},highlightPrimary:function(e){g.getPrimary().each(function(n){u(e,n)})},repositionMenus:function(r){g.getPrimary().bind(function(e){return v(r).bind(function(n){var e=a(n),t=function(n){return _n(n,function(n){return n})}(g.getMenus()),r=xo(de(t,sg.extractPreparedMenu));return g.getTriggeringPath(e,function(n){return function(n,e,t){return wo(e,function(n){if(!n.getSystem().isConnected())return Fn.none();var e=Cu.getCandidates(n);return R(e,function(n){return a(n)===t})})}(0,r,n)})}).map(function(n){return{primary:e,triggeringPath:n}})}).fold(function(){(function(n){return Fn.from(n.components()[0]).filter(function(n){return"menu"===Qr(n.element(),"role")})})(r).each(function(n){c.onRepositionMenu(r,n,[])})},function(n){var e=n.primary,t=n.triggeringPath;c.onRepositionMenu(r,e,t)})}};return{uid:c.uid,dom:c.dom,markers:c.markers,behaviours:pc(c.tmenuBehaviours,[Va.config({mode:"special",onRight:t(function(n,e){return Iu(e.element())?Fn.none():p(n,e,m.HighlightSubmenu)}),onLeft:t(function(n,e){return Iu(e.element())?Fn.none():h(n,e)}),onEscape:t(function(n,e){return h(n,e).orThunk(function(){return c.onEscape(n,e).map(function(){return n})})}),focusIn:function(e,n){g.getPrimary().each(function(n){W(e,n.element(),He())})}}),Cu.config({highlightClass:c.markers.selectedMenu,itemClass:c.markers.menu}),gm.config({find:function(n){return Cu.getHighlighted(n)}}),cg.config({})]),eventOrder:c.eventOrder,apis:b,events:y}},extraApis:{tieredData:function(n,e,t){return{primary:n,menus:e,expansions:t}},singleData:function(n,e){return{primary:n,menus:En(n,e),expansions:{}}},collapseItem:function(n){return{value:yc(lg()),meta:{text:n}}}}}),mg=function(n,e,t,r){return Xd(0,e,0,r).bind(function(e){return e.transition.map(function(n){return{transition:n,route:e}})})},gg=function(n,e,t){var r=n.element();return Zr(r,e.destinationAttr)?Fn.some({start:Qr(n.element(),e.stateAttr),destination:Qr(n.element(),e.destinationAttr)}):Fn.none()},pg=/* */Object.freeze({findRoute:Xd,disableTransition:qd,getCurrentRoute:gg,jumpTo:Yd,progressTo:function(t,r,o,i){!function(n,e){Zr(n.element(),e.destinationAttr)&&(Kr(n.element(),e.stateAttr,Qr(n.element(),e.destinationAttr)),no(n.element(),e.destinationAttr))}(t,r);var n=function(n,e,t,r){return{start:Qr(n.element(),e.stateAttr),destination:r}}(t,r,0,i);mg(t,r,o,n).fold(function(){Yd(t,r,o,i)},function(n){qd(t,r,o);var e=n.transition;io(t.element(),e.transitionClass),Kr(t.element(),r.destinationAttr,i)})},getState:function(n,e,t){var r=n.element();return Zr(r,e.stateAttr)?Fn.some(Qr(r,e.stateAttr)):Fn.none()}}),hg=/* */Object.freeze({events:function(o,i){return Nr([_r(Ae(),function(t,n){var r=n.event().raw();gg(t,o).each(function(e){Xd(0,o,0,e).each(function(n){n.transition.each(function(n){r.propertyName===n.property&&(Yd(t,o,i,e.destination),o.onTransition(t,e))})})})}),Eo(function(n,e){Yd(n,o,i,o.initialState)})])}}),vg=[tr("destinationAttr","data-transitioning-destination"),tr("stateAttr","data-transitioning-state"),Yt("initialState"),Ko("onTransition"),Ko("onFinish"),Kt("routes",Ut(vt.value,Ut(vt.value,Pt([er("transition",[Yt("property"),Yt("transitionClass")])]))))],yg=qr({fields:vg,name:"transitioning",active:hg,apis:pg,extra:{createRoutes:function(n){var r={};return Nn(n,function(n,e){var t=e.split("<->");r[t[0]]=En(t[1],n),r[t[1]]=En(t[0],n)}),r},createBistate:function(n,e,t){return Cn([{key:n,value:En(e,t)},{key:e,value:En(n,t)}])},createTristate:function(n,e,t,r){return Cn([{key:n,value:Cn([{key:e,value:r},{key:t,value:r}])},{key:e,value:Cn([{key:n,value:r},{key:t,value:r}])},{key:t,value:Cn([{key:n,value:r},{key:e,value:r}])}])}}}),bg=_i.resolve("scrollable"),xg={register:function(n){io(n,bg)},deregister:function(n){co(n,bg)},scrollable:v(bg)},wg=function(n,e,t,r,o){return{data:{value:n,text:e},type:"item",dom:{tag:"div",classes:o?[_i.resolve("styles-item-is-menu")]:[]},toggling:{toggleOnExecute:!1,toggleClass:_i.resolve("format-matches"),selected:t},itemBehaviours:Bo(o?[]:[Bi(n,function(n,e){(e?Fi.on:Fi.off)(n)})]),components:[{dom:{tag:"div",attributes:{style:r},innerHtml:e}}]}},Sg=function(n,e,t,r){return{value:n,dom:{tag:"div"},components:[Ls.sketch({dom:{tag:"div",classes:[_i.resolve("styles-collapser")]},components:r?[{dom:{tag:"span",classes:[_i.resolve("styles-collapse-icon")]}},Hd(n)]:[Hd(n)],action:function(n){if(r){var e=t().get(n);dg.collapseMenu(e)}}}),{dom:{tag:"div",classes:[_i.resolve("styles-menu-items-container")]},components:[ig.parts().items({})],behaviours:Bo([lm("adhoc-scrollable-menu",[Eo(function(n,e){Gi(n.element(),"overflow-y","auto"),Gi(n.element(),"-webkit-overflow-scrolling","touch"),xg.register(n.element())}),Co(function(n){pi(n.element(),"overflow-y"),pi(n.element(),"-webkit-overflow-scrolling"),xg.deregister(n.element())})])])}],items:e,menuBehaviours:Bo([yg.config({initialState:"after",routes:yg.createTristate("before","current","after",{transition:{property:"transform",transitionClass:"transitioning"}})})])}},Tg=function(r){var n=function(r,o){var n=Sg("Styles",[].concat(de(r.items,function(n){return wg(Kd(n),n.title,n.isSelected(),n.getPreview(),Mn(r.expansions,Kd(n)))})),o,!1),e=S(r.menus,function(n,e){var t=de(n,function(n){return wg(Kd(n),n.title,n.isSelected!==undefined&&n.isSelected(),n.getPreview!==undefined?n.getPreview():"",Mn(r.expansions,Kd(n)))});return Sg(e,t,o,!0)}),t=xt(e,En("styles",n));return{tmenu:dg.tieredData("styles",t,r.expansions)}}(r.formats,function(){return e}),e=js(dg.sketch({dom:{tag:"div",classes:[_i.resolve("styles-menu")]},components:[],fakeFocus:!0,stayInDom:!0,onExecute:function(n,e){var t=sl.getValue(e);return r.handle(e,t.value),Fn.none()},onEscape:function(){return Fn.none()},onOpenMenu:function(n,e){var t=Mf(n.element());Df(e.element(),t),yg.jumpTo(e,"current")},onOpenSubmenu:function(n,e,t){var r=Mf(n.element()),o=Ji(e.element(),'[role="menu"]').getOrDie("hacky"),i=n.getSystem().getByDom(o).getOrDie();Df(t.element(),r),yg.progressTo(i,"before"),yg.jumpTo(t,"after"),yg.progressTo(t,"current")},onCollapseMenu:function(n,e,t){var r=Ji(e.element(),'[role="menu"]').getOrDie("hacky"),o=n.getSystem().getByDom(r).getOrDie();yg.progressTo(o,"after"),yg.progressTo(t,"current")},navigateOnHover:!1,highlightImmediately:!0,data:n.tmenu,markers:{backgroundMenu:_i.resolve("styles-background-menu"),menu:_i.resolve("styles-menu"),selectedMenu:_i.resolve("styles-selected-menu"),item:_i.resolve("styles-item"),selectedItem:_i.resolve("styles-selected-item")}}));return e.asSpec()},Og=function(n){return M(n,function(n,e){var t=Jd(e);return{menus:xt(n.menus,t.menus),items:[t.item].concat(n.items),expansions:xt(n.expansions,t.expansions)}},{menus:{},expansions:{},items:[]})},kg={expand:Og},Eg=function(r,n){function o(n){return function(){return r.formatter.match(n)}}function i(n){return function(){return r.formatter.getCssText(n)}}var e=Dt(n,"style_formats").getOr(Nm),t=function(n){return de(n,function(n){if(Mn(n,"items")){var e=t(n.items);return xt(function(n){return xt(n,{isSelected:v(!1),getPreview:v("")})}(n),{items:e})}return Mn(n,"format")?function(n){return xt(n,{isSelected:o(n.format),getPreview:i(n.format)})}(n):function(n){var e=yc(n.title),t=xt(n,{format:e,isSelected:o(e),getPreview:i(e)});return r.formatter.register(e,t),t}(n)})};return t(e)},Cg=function(t,n,r){var e=function(e,n){var t=function(n){return B(n,function(n){return n.items===undefined?!Mn(n,"format")||e.formatter.canApply(n.format)?[n]:[]:0<t(n.items).length?[n]:[]})},r=t(n);return kg.expand(r)}(t,n);return Tg({formats:e,handle:function(n,e){t.undoManager.transact(function(){Fi.isOn(n)?t.formatter.remove(e):t.formatter.apply(e)}),r()}})},Dg=["undo","bold","italic","link","image","bullist","styleselect"],Mg=function(n){return B(n,function(n){return ie(n)?Mg(n):Qd(n)})},Ig=function(e,r){function n(n){return function(){return Ws.forToolbarCommand(r,n)}}function t(n){return function(){return Ws.forToolbarStateCommand(r,n)}}function o(n,e,t){return function(){return Ws.forToolbarStateAction(r,n,e,t)}}function i(){return Cg(r,h,function(){r.fire("scrollIntoView")})}function u(n,e){return{isSupported:function(){var e=r.ui.registry.getAll().buttons;return n.forall(function(n){return Mn(e,n)})},sketch:e}}var c=n("undo"),a=n("redo"),f=t("bold"),s=t("italic"),l=t("underline"),d=n("removeformat"),m=o("unlink","link",function(){r.execCommand("unlink",null,!1)}),g=o("unordered-list","ul",function(){r.execCommand("InsertUnorderedList",null,!1)}),p=o("ordered-list","ol",function(){r.execCommand("InsertOrderedList",null,!1)}),h=Eg(r,r.settings);return{undo:u(Fn.none(),c),redo:u(Fn.none(),a),bold:u(Fn.none(),f),italic:u(Fn.none(),s),underline:u(Fn.none(),l),removeformat:u(Fn.none(),d),link:u(Fn.none(),function(){return function(e,t){return Ws.forToolbarStateAction(t,"link","link",function(){var n=Vm(e,t);e.setContextToolbar(n),sm(t,function(){e.focusToolbar()}),am.query(t).each(function(n){t.selection.select(n.dom())})})}(e,r)}),unlink:u(Fn.none(),m),image:u(Fn.none(),function(){return td(r)}),bullist:u(Fn.some("bullist"),g),numlist:u(Fn.some("numlist"),p),fontsizeselect:u(Fn.none(),function(){return function(n,e){var t={onChange:function(n){Gl.apply(e,n)},getInitialValue:function(){return Gl.get(e)}};return Fs(n,"font-size",function(){return Ns(t)},e)}(e,r)}),forecolor:u(Fn.none(),function(){return Pl(e,r)}),styleselect:u(Fn.none(),function(){return Ws.forToolbar("style-formats",function(n){r.fire("toReading"),e.dropup().appear(i,Fi.on,n)},Bo([Fi.config({toggleClass:_i.resolve("toolbar-button-selected"),toggleOnExecute:!1,aria:{mode:"pressed"}}),Ci.config({channels:Cn([Ni(Uo.orientationChanged(),Fi.off),Ni(Uo.dropupDismissed(),Fi.off)])})]),r)})}},Rg=function(n,t){var e=Zd(n),r={};return B(e,function(n){var e=!Mn(r,n)&&Mn(t,n)&&t[n].isSupported()?[t[n].sketch()]:[];return r[n]=!0,e})},Ag=function(n,e,t,r){n.dom().removeEventListener(e,t,r)},Fg=v(!0),Bg=tinymce.util.Tools.resolve("tinymce.util.Delay"),Vg=om,Ng=function(r,e){var n=Je.fromDom(r),o=null,t=tm(n,"orientationchange",function(){Bg.clearInterval(o);var n=om(r);e.onChange(n),i(function(){e.onReady(n)})}),i=function(n){Bg.clearInterval(o);var e=r.innerHeight,t=0;o=Bg.setInterval(function(){e!==r.innerHeight?(Bg.clearInterval(o),n(Fn.some(r.innerHeight))):20<t&&(Bg.clearInterval(o),n(Fn.none())),t++},50)};return{onAdjustment:i,destroy:function(){t.unbind()}}},jg=function(n){var e=L().os.isiOS(),t=om(n).isPortrait();return e&&!t?n.screen.height:n.screen.width};function _g(n){var e=n.raw();return e.touches===undefined||1!==e.touches.length?Fn.none():Fn.some(e.touches[0])}function Pg(t){var r=Pn(Fn.none()),o=Pn(!1),i=function n(t,r){var o=null;return{cancel:function(){null!==o&&(d.clearTimeout(o),o=null)},schedule:function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];o=d.setTimeout(function(){t.apply(null,n),o=null},r)}}}(function(n){t.triggerEvent(Le(),n),o.set(!0)},400),u=Cn([{key:xe(),value:function(t){return _g(t).each(function(n){i.cancel();var e={x:v(n.clientX),y:v(n.clientY),target:t.target};i.schedule(t),o.set(!1),r.set(Fn.some(e))}),Fn.none()}},{key:we(),value:function(n){return i.cancel(),_g(n).each(function(e){r.get().each(function(n){!function(n,e){var t=Math.abs(n.clientX-e.x()),r=Math.abs(n.clientY-e.y());return 5<t||5<r}(e,n)||r.set(Fn.none())})}),Fn.none()}},{key:Se(),value:function(e){i.cancel();return r.get().filter(function(n){return cn(n.target(),e.target())}).map(function(n){return o.get()?(e.prevent(),!1):t.triggerEvent(ze(),e)})}}]);return{fireIfReady:function(e,n){return Dt(u,n).bind(function(n){return n(e)})}}}var Hg=function(t){var e=Pg({triggerEvent:function(n,e){t.onTapContent(e)}});return{fireTouchstart:function(n){e.fireIfReady(n,"touchstart")},onTouchend:function(){return tm(t.body(),"touchend",function(n){e.fireIfReady(n,"touchend")})},onTouchmove:function(){return tm(t.body(),"touchmove",function(n){e.fireIfReady(n,"touchmove")})}}},zg=6<=L().os.version.major,Lg=function(r,e,t){function o(n){return!cn(n.start(),n.finish())||n.soffset()!==n.foffset()}function n(){var n=r.doc().dom().hasFocus()&&r.getSelection().exists(o);t.getByDom(e).each(!0===(n||mo(u).filter(function(n){return"input"===q(n)}).exists(function(n){return n.dom().selectionStart!==n.dom().selectionEnd}))?Fi.on:Fi.off)}var i=Hg(r),u=an(e),c=[tm(r.body(),"touchstart",function(n){r.onTouchContent(),i.fireTouchstart(n)}),i.onTouchmove(),i.onTouchend(),tm(e,"touchstart",function(n){r.onTouchToolstrip()}),r.onToReading(function(){lo(r.body())}),r.onToEditing(w),r.onScrollToCursor(function(n){n.preventDefault(),r.getCursorBox().each(function(n){var e=r.win(),t=n.top()>e.innerHeight||n.bottom()>e.innerHeight?n.bottom()-e.innerHeight+50:0;0!=t&&e.scrollTo(e.pageXOffset,e.pageYOffset+t)})})].concat(!0==zg?[]:[tm(Je.fromDom(r.win()),"blur",function(){t.getByDom(e).each(Fi.off)}),tm(u,"select",n),tm(r.doc(),"selectionchange",n)]);return{destroy:function(){C(c,function(n){n.unbind()})}}},Gg=function(n,e){var t=parseInt(Qr(n,e),10);return isNaN(t)?0:t};function Ug(n){return Ip.getOption(n)}function $g(n){return function(n){return Ug(n).filter(function(n){return 0!==n.trim().length||-1<n.indexOf("\xa0")}).isSome()}(n)||k(Rp,q(n))}function Wg(n,e,t){var r=n.document.createRange();return function(t,n){n.fold(function(n){t.setStartBefore(n.dom())},function(n,e){t.setStart(n.dom(),e)},function(n){t.setStartAfter(n.dom())})}(r,e),function(t,n){n.fold(function(n){t.setEndBefore(n.dom())},function(n,e){t.setEnd(n.dom(),e)},function(n){t.setEndAfter(n.dom())})}(r,t),r}function Xg(n,e,t,r,o){var i=n.document.createRange();return i.setStart(e.dom(),t),i.setEnd(r.dom(),o),i}function qg(n){return{left:v(n.left),top:v(n.top),right:v(n.right),bottom:v(n.bottom),width:v(n.width),height:v(n.height)}}function Yg(n,e,t){return e(Je.fromDom(t.startContainer),t.startOffset,Je.fromDom(t.endContainer),t.endOffset)}function Kg(n,e){return function(n,e){var t=e.ltr();return t.collapsed?e.rtl().filter(function(n){return!1===n.collapsed}).map(function(n){return jp.rtl(Je.fromDom(n.endContainer),n.endOffset,Je.fromDom(n.startContainer),n.startOffset)}).getOrThunk(function(){return Yg(0,jp.ltr,t)}):Yg(0,jp.ltr,t)}(0,function(o,n){return n.match({domRange:function(n){return{ltr:v(n),rtl:Fn.none}},relative:function(n,e){return{ltr:X(function(){return Wg(o,n,e)}),rtl:X(function(){return Fn.some(Wg(o,e,n))})}},exact:function(n,e,t,r){return{ltr:X(function(){return Xg(o,n,e,t,r)}),rtl:X(function(){return Fn.some(Xg(o,t,r,n,e))})}}})}(n,e))}function Jg(n,e,t){return e>=n.left&&e<=n.right&&t>=n.top&&t<=n.bottom}function Qg(t,r,n,e,o){function i(n){var e=t.dom().createRange();return e.setStart(r.dom(),n),e.collapse(!0),e}var u=function(n){return Ip.get(n)}(r).length,c=function(n,e,t,r,o){if(0===o)return 0;if(e===r)return o-1;for(var i=r,u=1;u<o;u++){var c=n(u),a=Math.abs(e-c.left);if(t<=c.bottom){if(t<c.top||i<a)return u-1;i=a}}return 0}(function(n){return i(n).getBoundingClientRect()},n,e,o.right,u);return i(c)}function Zg(n){return Vr(n,$g)}function np(n){return Pp(n,$g)}function ep(n,e){return e-n.left<n.right-e}function tp(n,e,t){var r=n.dom().createRange();return r.selectNode(e.dom()),r.collapse(t),r}function rp(e,n,t){var r=e.dom().createRange();r.selectNode(n.dom());var o=r.getBoundingClientRect(),i=ep(o,t);return(!0===i?Zg:np)(n).map(function(n){return tp(e,n,i)})}function op(n,e,t){var r=e.dom().getBoundingClientRect(),o=ep(r,t);return Fn.some(tp(n,e,o))}function ip(n,e,t,r){var o=n.dom().createRange();o.selectNode(e.dom());var i=o.getBoundingClientRect();return function(n,e,t,r){var o=n.dom().createRange();o.selectNode(e.dom());var i=o.getBoundingClientRect(),u=Math.max(i.left,Math.min(i.right,t)),c=Math.max(i.top,Math.min(i.bottom,r));return _p(n,e,u,c)}(n,e,Math.max(i.left,Math.min(i.right,t)),Math.max(i.top,Math.min(i.bottom,r)))}function up(n,e){var t=q(n);return"input"===t?Bp.after(n):k(["br","img"],t)?0===e?Bp.before(n):Bp.after(n):Bp.on(n,e)}function cp(n,e,t,r){var o=function(n,e,t,r){var o=an(n).dom().createRange();return o.setStart(n.dom(),e),o.setEnd(t.dom(),r),o}(n,e,t,r),i=cn(n,t)&&e===r;return o.collapsed&&!i}function ap(n,e,t,r,o){!function(n,e){Fn.from(n.getSelection()).each(function(n){n.removeAllRanges(),n.addRange(e)})}(n,Xg(n,e,t,r,o))}function fp(n,e,t,r,o){!function(u,n){Kg(u,n).match({ltr:function(n,e,t,r){ap(u,n,e,t,r)},rtl:function(n,e,t,r){var o=u.getSelection();if(o.setBaseAndExtent)o.setBaseAndExtent(n.dom(),e,t.dom(),r);else if(o.extend)try{!function(n,e,t,r,o,i){e.collapse(t.dom(),r),e.extend(o.dom(),i)}(0,o,n,e,t,r)}catch(i){ap(u,t,r,n,e)}else ap(u,t,r,n,e)}})}(n,function(n,e,t,r){var o=up(n,e),i=up(t,r);return Np.relative(o,i)}(e,t,r,o))}function sp(n){var e=Je.fromDom(n.anchorNode),t=Je.fromDom(n.focusNode);return cp(e,n.anchorOffset,t,n.focusOffset)?Fn.some(Ap.create(e,n.anchorOffset,t,n.focusOffset)):function(n){if(0<n.rangeCount){var e=n.getRangeAt(0),t=n.getRangeAt(n.rangeCount-1);return Fn.some(Ap.create(Je.fromDom(e.startContainer),e.startOffset,Je.fromDom(t.endContainer),t.endOffset))}return Fn.none()}(n)}function lp(n){return Fn.from(n.getSelection()).filter(function(n){return 0<n.rangeCount}).bind(sp)}function dp(n,e){return function(n){var e=n.getClientRects(),t=0<e.length?e[0]:n.getBoundingClientRect();return 0<t.width||0<t.height?Fn.some(t).map(qg):Fn.none()}(function(i,n){return Kg(i,n).match({ltr:function(n,e,t,r){var o=i.document.createRange();return o.setStart(n.dom(),e),o.setEnd(t.dom(),r),o},rtl:function(n,e,t,r){var o=i.document.createRange();return o.setStart(t.dom(),r),o.setEnd(n.dom(),e),o}})}(n,e))}function mp(n){return{left:n.left,top:n.top,right:n.right,bottom:n.bottom,width:v(2),height:n.height}}function gp(n){return{left:v(n.left),top:v(n.top),right:v(n.right),bottom:v(n.bottom),width:v(n.width),height:v(n.height)}}function pp(t){if(t.collapsed){var r=Je.fromDom(t.startContainer);return fn(r).bind(function(n){var e=Np.exact(r,t.startOffset,n,function(n){return"img"===q(n)?1:Ug(n).fold(function(){return at(n).length},function(n){return n.length})}(n));return dp(t.startContainer.ownerDocument.defaultView,e).map(mp).map(_)}).getOr([])}return de(t.getClientRects(),gp)}function hp(n,e){Kr(n,Lp,e)}function vp(n){return{top:v(n.top()),bottom:v(n.top()+n.height())}}function yp(n,e){var t=function(n){return Gg(n,Lp)}(e),r=n.innerHeight;return r<t?Fn.some(t-r):Fn.none()}function bp(n){return Fn.some(Je.fromDom(n.dom().contentWindow.document.body))}function xp(n){return Fn.some(Je.fromDom(n.dom().contentWindow.document))}function wp(n){return Fn.from(n.dom().contentWindow)}function Sp(n){return wp(n).bind(lp)}function Tp(n){return n.getFrame()}function Op(n,t){return function(e){return e[n].getOrThunk(function(){var n=Tp(e);return function(){return t(n)}})()}}function kp(n,e,t,r){return n[t].getOrThunk(function(){return function(n){return tm(e,r,n)}})}function Ep(n){return{left:v(n.left),top:v(n.top),right:v(n.right),bottom:v(n.bottom),width:v(n.width),height:v(n.height)}}function Cp(t,r){var o=null;return{cancel:function(){null!==o&&(d.clearTimeout(o),o=null)},throttle:function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];null!==o&&d.clearTimeout(o),o=d.setTimeout(function(){t.apply(null,n),o=null},r)}}}function Dp(n){return"true"===Qr(n,ah)?function(n){return 0<n.dom().scrollLeft||function(n){n.dom().scrollLeft=1;var e=0!==n.dom().scrollLeft;return n.dom().scrollLeft=0,e}(n)}(n):function(n){return 0<n.dom().scrollTop||function(n){n.dom().scrollTop=1;var e=0!==n.dom().scrollTop;return n.dom().scrollTop=0,e}(n)}(n)}var Mp,Ip=function cy(t,r){var e=function(n){return t(n)?Fn.from(n.dom().nodeValue):Fn.none()};return{get:function(n){if(!t(n))throw new Error("Can only get "+r+" value of a "+r+" node");return e(n).getOr("")},getOption:e,set:function(n,e){if(!t(n))throw new Error("Can only set raw "+r+" value of a "+r+" node");n.dom().nodeValue=e}}}(tt,"text"),Rp=["img","br"],Ap={create:J("start","soffset","finish","foffset")},Fp=yt([{before:["element"]},{on:["element","offset"]},{after:["element"]}]),Bp={before:Fp.before,on:Fp.on,after:Fp.after,cata:function(n,e,t,r){return n.fold(e,t,r)},getStart:function(n){return n.fold(y,y,y)}},Vp=yt([{domRange:["rng"]},{relative:["startSitu","finishSitu"]},{exact:["start","soffset","finish","foffset"]}]),Np={domRange:Vp.domRange,relative:Vp.relative,exact:Vp.exact,exactFromRange:function(n){return Vp.exact(n.start(),n.soffset(),n.finish(),n.foffset())},getWin:function(n){return function(n){return Je.fromDom(n.dom().ownerDocument.defaultView)}(function(n){return n.match({domRange:function(n){return Je.fromDom(n.startContainer)},relative:function(n,e){return Bp.getStart(n)},exact:function(n,e,t,r){return n}})}(n))},range:Ap.create},jp=yt([{ltr:["start","soffset","finish","foffset"]},{rtl:["start","soffset","finish","foffset"]}]),_p=function(n,e,t,r){return tt(e)?function(e,t,r,o){var n=e.dom().createRange();n.selectNode(t.dom());var i=n.getClientRects();return wo(i,function(n){return Jg(n,r,o)?Fn.some(n):Fn.none()}).map(function(n){return Qg(e,t,r,o,n)})}(n,e,t,r):function(e,n,t,r){var o=e.dom().createRange(),i=at(n);return wo(i,function(n){return o.selectNode(n.dom()),Jg(o.getBoundingClientRect(),t,r)?_p(e,n,t,r):Fn.none()})}(n,e,t,r)},Pp=function(n,i){var u=function(n){for(var e=at(n),t=e.length-1;0<=t;t--){var r=e[t];if(i(r))return Fn.some(r);var o=u(r);if(o.isSome())return o}return Fn.none()};return u(n)},Hp=(document.caretPositionFromPoint||document.caretRangeFromPoint,function(n){var e=n.getSelection();return e!==undefined&&0<e.rangeCount?pp(e.getRangeAt(0)):[]}),zp=function(n){n.focus();var e=Je.fromDom(n.document.body);(mo().exists(function(n){return k(["input","textarea"],q(n))})?function(n){Bg.setTimeout(function(){n()},0)}:t)(function(){mo().each(lo),so(e)})},Lp="data-"+_i.resolve("last-outer-height"),Gp=function(n,r){var e=Je.fromDom(r.document.body),t=tm(Je.fromDom(n),"resize",function(){yp(n,e).each(function(t){(function(n){var e=Hp(n);return 0<e.length?Fn.some(e[0]).map(vp):Fn.none()})(r).each(function(n){var e=function(n,e,t){return e.top()>n.innerHeight||e.bottom()>n.innerHeight?Math.min(t,e.bottom()-n.innerHeight+50):0}(r,n,t);0!==e&&r.scrollTo(r.pageXOffset,r.pageYOffset+e)})}),hp(e,n.innerHeight)});hp(e,n.innerHeight);return{toEditing:function(){zp(r)},destroy:function(){t.unbind()}}},Up={getBody:Op("getBody",bp),getDoc:Op("getDoc",xp),getWin:Op("getWin",wp),getSelection:Op("getSelection",Sp),getFrame:Tp,getActiveApi:function(c){var a=Tp(c);return bp(a).bind(function(u){return xp(a).bind(function(i){return wp(a).map(function(o){var n=Je.fromDom(i.dom().documentElement),e=c.getCursorBox.getOrThunk(function(){return function(){return function(n){return lp(n).map(function(n){return Np.exact(n.start(),n.soffset(),n.finish(),n.foffset())})}(o).bind(function(n){return dp(o,n).orThunk(function(){return function(n){return lp(n).filter(function(n){return cn(n.start(),n.finish())&&n.soffset()===n.foffset()}).bind(function(n){var e=n.start().dom().getBoundingClientRect();return 0<e.width||0<e.height?Fn.some(e).map(Ep):Fn.none()})}(o)})})}}),t=c.setSelection.getOrThunk(function(){return function(n,e,t,r){fp(o,n,e,t,r)}}),r=c.clearSelection.getOrThunk(function(){return function(){!function(n){n.getSelection().removeAllRanges()}(o)}});return{body:v(u),doc:v(i),win:v(o),html:v(n),getSelection:l(Sp,a),setSelection:t,clearSelection:r,frame:v(a),onKeyup:kp(c,i,"onKeyup","keyup"),onNodeChanged:kp(c,i,"onNodeChanged","SelectionChange"),onDomChanged:c.onDomChanged,onScrollToCursor:c.onScrollToCursor,onScrollToElement:c.onScrollToElement,onToReading:c.onToReading,onToEditing:c.onToEditing,onToolbarScrollStart:c.onToolbarScrollStart,onTouchContent:c.onTouchContent,onTapContent:c.onTapContent,onTouchToolstrip:c.onTouchToolstrip,getCursorBox:e}})})})}},$p="data-ephox-mobile-fullscreen-style",Wp="position:absolute!important;",Xp="top:0!important;left:0!important;margin:0!important;padding:0!important;width:100%!important;height:100%!important;overflow:visible!important;",qp=L().os.isAndroid(),Yp=function(n,e){function t(r){return function(n){var e=Qr(n,"style"),t=e===undefined?"no-styles":e.trim();t!==r&&(Kr(n,$p,t),Kr(n,"style",r))}}var r=function(n,e,t){return Xi(n,function(n){return tn(n,e)},t)}(n,"*"),o=B(r,function(n){return function(n,e){return qi(n,function(n){return tn(n,e)})}(n,"*")}),i=function(n){var e=mi(n,"background-color");return e!==undefined&&""!==e?"background-color:"+e+"!important":"background-color:rgb(255,255,255)!important;"}(e);C(o,t("display:none!important;")),C(r,t(Wp+Xp+i)),t((!0===qp?"":Wp)+Xp+i)(n)},Kp=function(){var n=function(n){return on(n)}("["+$p+"]");C(n,function(n){var e=Qr(n,$p);"no-styles"!==e?Kr(n,"style",e):no(n,"style"),no(n,$p)})},Jp=function(){var e=Ki("head").getOrDie(),n=Ki('meta[name="viewport"]').getOrThunk(function(){var n=Je.fromTag("meta");return Kr(n,"name","viewport"),ft(e,n),n}),t=Qr(n,"content");return{maximize:function(){Kr(n,"content","width=device-width, initial-scale=1.0, user-scalable=no, maximum-scale=1.0")},restore:function(){t!==undefined&&null!==t&&0<t.length?Kr(n,"content",t):Kr(n,"content","user-scalable=yes")}}},Qp=function(e,n){var t=Jp(),r=wd(),o=wd();return{enter:function(){n.hide(),io(e.container,_i.resolve("fullscreen-maximized")),io(e.container,_i.resolve("android-maximized")),t.maximize(),io(e.body,_i.resolve("android-scroll-reload")),r.set(Gp(e.win,Up.getWin(e.editor).getOrDie("no"))),Up.getActiveApi(e.editor).each(function(n){Yp(e.container,n.body()),o.set(Lg(n,e.toolstrip,e.alloy))})},exit:function(){t.restore(),n.show(),co(e.container,_i.resolve("fullscreen-maximized")),co(e.container,_i.resolve("android-maximized")),Kp(),co(e.body,_i.resolve("android-scroll-reload")),o.clear(),r.clear()}}},Zp=function(n,e){var t=js(pm.sketch({dom:Us('<div aria-hidden="true" class="${prefix}-mask-tap-icon"></div>'),containerBehaviours:Bo([Fi.config({toggleClass:_i.resolve("mask-tap-icon-selected"),toggleOnExecute:!1})])})),r=function(t,r){var o=null;return{cancel:function(){null!==o&&(d.clearTimeout(o),o=null)},throttle:function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];null===o&&(o=d.setTimeout(function(){t.apply(null,n),o=null},r))}}}(n,200);return pm.sketch({dom:Us('<div class="${prefix}-disabled-mask"></div>'),components:[pm.sketch({dom:Us('<div class="${prefix}-content-container"></div>'),components:[Ls.sketch({dom:Us('<div class="${prefix}-content-tap-section"></div>'),components:[t.asSpec()],action:function(n){r.throttle()},buttonBehaviours:Bo([Fi.config({toggleClass:_i.resolve("mask-tap-icon-selected")})])})]})]})},nh=Or([Jt("editor",[Yt("getFrame"),Qt("getBody"),Qt("getDoc"),Qt("getWin"),Qt("getSelection"),Qt("setSelection"),Qt("clearSelection"),Qt("cursorSaver"),Qt("onKeyup"),Qt("onNodeChanged"),Qt("getCursorBox"),Yt("onDomChanged"),tr("onTouchContent",w),tr("onTapContent",w),tr("onTouchToolstrip",w),tr("onScrollToCursor",v({unbind:w})),tr("onScrollToElement",v({unbind:w})),tr("onToEditing",v({unbind:w})),tr("onToReading",v({unbind:w})),tr("onToolbarScrollStart",y)]),Yt("socket"),Yt("toolstrip"),Yt("dropup"),Yt("toolbar"),Yt("container"),Yt("alloy"),or("win",function(n){return an(n.socket).dom().defaultView}),or("body",function(n){return Je.fromDom(n.socket.dom().ownerDocument.body)}),tr("translate",y),tr("setReadOnly",w),tr("readOnlyOnInit",v(!0))]),eh=function(n){var e=Xt("Getting AndroidWebapp schema",nh,n);Gi(e.toolstrip,"width","100%");var t=$m(Zp(function(){e.setReadOnly(e.readOnlyOnInit()),o.enter()},e.translate));e.alloy.add(t);var r={show:function(){e.alloy.add(t)},hide:function(){e.alloy.remove(t)}};ft(e.container,t.element());var o=Qp(e,r);return{setReadOnly:e.setReadOnly,refreshStructure:w,enter:o.enter,exit:o.exit,destroy:w}},th=v([Yt("dom"),tr("shell",!0),mc("toolbarBehaviours",[cg])]),rh=v([rf({name:"groups",overrides:function(n){return{behaviours:Bo([cg.config({})])}}})]),oh=vf({name:"Toolbar",configFields:th(),partFields:rh(),factory:function(e,n,t,r){var o=function(n){return e.shell?Fn.some(n):kc(n,e,"groups")},i=e.shell?{behaviours:[cg.config({})],components:[]}:{behaviours:[],components:n};return{uid:e.uid,dom:e.dom,components:i.components,behaviours:pc(e.toolbarBehaviours,i.behaviours),apis:{setGroups:function(n,e){o(n).fold(function(){throw d.console.error("Toolbar was defined to not be a shell, but no groups container was specified in components"),new Error("Toolbar was defined to not be a shell, but no groups container was specified in components")},function(n){cg.set(n,e)})}},domModification:{attributes:{role:"group"}}}},apis:{setGroups:function(n,e,t){n.setGroups(e,t)}}}),ih=v([Yt("items"),(Mp=["itemSelector"],Jt("markers",de(Mp,Yt))),mc("tgroupBehaviours",[Va])]),uh=v([of({name:"items",unit:"item"})]),ch=vf({name:"ToolbarGroup",configFields:ih(),partFields:uh(),factory:function(n,e,t,r){return{uid:n.uid,dom:n.dom,components:e,behaviours:pc(n.tgroupBehaviours,[Va.config({mode:"flow",selector:n.markers.itemSelector})]),domModification:{attributes:{role:"toolbar"}}}}}),ah="data-"+_i.resolve("horizontal-scroll"),fh={exclusive:function(n,e){return tm(n,"touchmove",function(n){Zi(n.target(),e).filter(Dp).fold(function(){n.raw().preventDefault()},w)})},markAsHorizontal:function(n){Kr(n,ah,"true")}};function sh(){function e(n){var e=!0===n.scrollable?"${prefix}-toolbar-scrollable-group":"";return{dom:Us('<div aria-label="'+n.label+'" class="${prefix}-toolbar-group '+e+'"></div>'),tgroupBehaviours:Bo([lm("adhoc-scrollable-toolbar",!0===n.scrollable?[Do(function(n,e){Gi(n.element(),"overflow-x","auto"),fh.markAsHorizontal(n.element()),xg.register(n.element())})]:[])]),components:[pm.sketch({components:[ch.parts().items({})]})],markers:{itemSelector:"."+_i.resolve("toolbar-group-item")},items:n.items}}function t(){oh.setGroups(r,o.get()),Fi.off(r)}var r=$m(oh.sketch({dom:Us('<div class="${prefix}-toolbar"></div>'),components:[oh.parts().groups({})],toolbarBehaviours:Bo([Fi.config({toggleClass:_i.resolve("context-toolbar"),toggleOnExecute:!1,aria:{mode:"none"}}),Va.config({mode:"cyclic"})]),shell:!0})),n=$m(pm.sketch({dom:{classes:[_i.resolve("toolstrip")]},components:[Wm(r)],containerBehaviours:Bo([Fi.config({toggleClass:_i.resolve("android-selection-context-toolbar"),toggleOnExecute:!1})])})),o=Pn([]);return{wrapper:v(n),toolbar:v(r),createGroups:function(n){return de(n,i(ch.sketch,e))},setGroups:function(n){o.set(n),t()},setContextToolbar:function(n){Fi.on(r),oh.setGroups(r,n)},restoreToolbar:function(){Fi.isOn(r)&&t()},refresh:function(){},focus:function(){Va.focusIn(r)}}}function lh(n,e){cg.append(n,Wm(e))}function dh(n,e){cg.remove(n,e)}function mh(e,n){return n.getAnimationRoot.fold(function(){return e.element()},function(n){return n(e)})}function gh(n){return n.dimension.property}function ph(n,e){return n.dimension.getDimension(e)}function hh(n,e){var t=mh(n,e);Fd(t,[e.shrinkingClass,e.growingClass])}function vh(n,e){co(n.element(),e.openClass),io(n.element(),e.closedClass),Gi(n.element(),gh(e),"0px"),hi(n.element())}function yh(n,e){co(n.element(),e.closedClass),io(n.element(),e.openClass),pi(n.element(),gh(e))}function bh(n,e,t,r){t.setCollapsed(),Gi(n.element(),gh(e),ph(e,n.element())),hi(n.element()),hh(n,e),vh(n,e),e.onStartShrink(n),e.onShrunk(n)}function xh(n,e,t,r){var o=r.getOrThunk(function(){return ph(e,n.element())});t.setCollapsed(),Gi(n.element(),gh(e),o),hi(n.element());var i=mh(n,e);co(i,e.growingClass),io(i,e.shrinkingClass),vh(n,e),e.onStartShrink(n)}function wh(n,e,t){var r=ph(e,n.element());("0px"===r?bh:xh)(n,e,t,Fn.some(r))}function Sh(n,e,t){var r=mh(n,e),o=ao(r,e.shrinkingClass),i=ph(e,n.element());yh(n,e);var u=ph(e,n.element());(o?function(){Gi(n.element(),gh(e),i),hi(n.element())}:function(){vh(n,e)})(),co(r,e.shrinkingClass),io(r,e.growingClass),yh(n,e),Gi(n.element(),gh(e),u),t.setExpanded(),e.onStartGrow(n)}function Th(n,e,t){var r=mh(n,e);return!0===ao(r,e.growingClass)}function Oh(n,e,t){var r=mh(n,e);return!0===ao(r,e.shrinkingClass)}function kh(e,t){var r=$m(pm.sketch({dom:{tag:"div",classes:[_i.resolve("dropup")]},components:[],containerBehaviours:Bo([cg.config({}),_h.config({closedClass:_i.resolve("dropup-closed"),openClass:_i.resolve("dropup-open"),shrinkingClass:_i.resolve("dropup-shrinking"),growingClass:_i.resolve("dropup-growing"),dimension:{property:"height"},onShrunk:function(n){e(),t(),cg.set(n,[])},onGrown:function(n){e(),t()}}),Vi(function(n,e){o(w)})])})),o=function(n){d.window.requestAnimationFrame(function(){n(),_h.shrink(r)})};return{appear:function(n,e,t){!0===_h.hasShrunk(r)&&!1===_h.isTransitioning(r)&&d.window.requestAnimationFrame(function(){e(t),cg.set(r,[n()]),_h.grow(r)})},disappear:o,component:v(r),element:r.element}}function Eh(n){return 8===n.raw().which&&!k(["input","textarea"],q(n.target()))&&!function(n,e,t){return Zi(n,e,t).isSome()}(n.target(),'[contenteditable="true"]')}function Ch(e,n){var t=Xt("Getting GUI events settings",Hh,n),r=L().deviceType.isTouch()?["touchstart","touchmove","touchend","touchcancel","gesturestart"]:["mousedown","mouseup","mouseover","mousemove","mouseout","click"],o=Pg(t),i=de(r.concat(["selectstart","input","contextmenu","change","transitionend","drag","dragstart","dragend","dragenter","dragleave","dragover","drop","keyup"]),function(n){return tm(e,n,function(e){o.fireIfReady(e,n).each(function(n){n&&e.kill()}),t.triggerEvent(n,e)&&e.kill()})}),u=Pn(Fn.none()),c=tm(e,"paste",function(e){o.fireIfReady(e,"paste").each(function(n){n&&e.kill()}),t.triggerEvent("paste",e)&&e.kill(),u.set(Fn.some(d.setTimeout(function(){t.triggerEvent(je(),e)},0)))}),a=tm(e,"keydown",function(n){t.triggerEvent("keydown",n)?n.kill():!0===t.stopBackspace&&Eh(n)&&n.prevent()}),f=function(n,e){return Ph?rm(n,"focus",e):tm(n,"focusin",e)}(e,function(n){t.triggerEvent("focusin",n)&&n.kill()}),s=Pn(Fn.none()),l=function(n,e){return Ph?rm(n,"blur",e):tm(n,"focusout",e)}(e,function(n){t.triggerEvent("focusout",n)&&n.kill(),s.set(Fn.some(d.setTimeout(function(){t.triggerEvent(Ne(),n)},0)))});return{unbind:function(){C(i,function(n){n.unbind()}),a.unbind(),f.unbind(),l.unbind(),c.unbind(),u.get().each(d.clearTimeout),s.get().each(d.clearTimeout)}}}function Dh(n,e){var t=Dt(n,"target").map(function(n){return n()}).getOr(e);return Pn(t)}function Mh(n,r,e,t,o,i){var u=n(r,t),c=function(n,e){var t=Pn(!1),r=Pn(!1);return{stop:function(){t.set(!0)},cut:function(){r.set(!0)},isStopped:t.get,isCut:r.get,event:v(n),setSource:e.set,getSource:e.get}}(e,o);return u.fold(function(){return i.logEventNoHandlers(r,t),zh.complete()},function(e){var t=e.descHandler();return Ed(t)(c),c.isStopped()?(i.logEventStopped(r,e.element(),t.purpose()),zh.stopped()):c.isCut()?(i.logEventCut(r,e.element(),t.purpose()),zh.complete()):fn(e.element()).fold(function(){return i.logNoParent(r,e.element(),t.purpose()),zh.complete()},function(n){return i.logEventResponse(r,e.element(),t.purpose()),zh.resume(n)})})}function Ih(n,e,t){var r=function(n){var e=Pn(!1);return{stop:function(){e.set(!0)},cut:w,isStopped:e.get,isCut:v(!1),event:v(n),setSource:o("Cannot set source of a broadcasted event"),getSource:o("Cannot get source of a broadcasted event")}}(e);return C(n,function(n){var e=n.descHandler();Ed(e)(r)}),r.isStopped()}var Rh,Ah=function(n){return $m(Ls.sketch({dom:Us('<div class="${prefix}-mask-edit-icon ${prefix}-icon"></div>'),action:function(){n.run(function(n){n.setReadOnly(!1)})}}))},Fh=function(){return $m(pm.sketch({dom:Us('<div class="${prefix}-editor-socket"></div>'),components:[],containerBehaviours:Bo([cg.config({})])}))},Bh=function(n,e,t,r){(!0===t?Ho.toAlpha:Ho.toOmega)(r),(t?lh:dh)(n,e)},Vh=/* */Object.freeze({refresh:function(n,e,t){if(t.isExpanded()){pi(n.element(),gh(e));var r=ph(e,n.element());Gi(n.element(),gh(e),r)}},grow:function(n,e,t){t.isExpanded()||Sh(n,e,t)},shrink:function(n,e,t){t.isExpanded()&&wh(n,e,t)},immediateShrink:function(n,e,t){t.isExpanded()&&bh(n,e,t)},hasGrown:function(n,e,t){return t.isExpanded()},hasShrunk:function(n,e,t){return t.isCollapsed()},isGrowing:Th,isShrinking:Oh,isTransitioning:function(n,e,t){return!0===Th(n,e)||!0===Oh(n,e)},toggleGrow:function(n,e,t){(t.isExpanded()?wh:Sh)(n,e,t)},disableTransitions:hh}),Nh=/* */Object.freeze({exhibit:function(n,e){var t=e.expanded;return Ur(t?{classes:[e.openClass],styles:{}}:{classes:[e.closedClass],styles:En(e.dimension.property,"0px")})},events:function(t,r){return Nr([function(n,e){return Hr(n)(e)}(Ae(),function(n,e){e.event().raw().propertyName===t.dimension.property&&(hh(n,t),r.isExpanded()&&pi(n.element(),t.dimension.property),(r.isExpanded()?t.onGrown:t.onShrunk)(n))})])}}),jh=[Yt("closedClass"),Yt("openClass"),Yt("shrinkingClass"),Yt("growingClass"),Qt("getAnimationRoot"),Ko("onShrunk"),Ko("onStartShrink"),Ko("onGrown"),Ko("onStartGrow"),tr("expanded",!1),Kt("dimension",qt("property",{width:[ni("property","width"),ni("getDimension",function(n){return Mf(n)+"px"})],height:[ni("property","height"),ni("getDimension",function(n){return Wi(n)+"px"})]}))],_h=qr({fields:jh,name:"sliding",active:Nh,apis:Vh,state:/* */Object.freeze({init:function(n){var e=Pn(n.expanded);return Fo({isExpanded:function(){return!0===e.get()},isCollapsed:function(){return!1===e.get()},setCollapsed:l(e.set,!1),setExpanded:l(e.set,!0),readState:function(){return"expanded: "+e.get()}})}})}),Ph=L().browser.isFirefox(),Hh=Pt([(Rh="triggerEvent",Kt(Rh,Rr)),tr("stopBackspace",!0)]),zh=yt([{stopped:[]},{resume:["element"]},{complete:[]}]),Lh=function(e,t,r,n,o,i){return Mh(e,t,r,n,o,i).fold(function(){return!0},function(n){return Lh(e,t,r,n,o,i)},function(){return!1})},Gh=function(n,e,t,r,o){var i=Dh(t,r);return Lh(n,e,t,r,i,o)},Uh=J("element","descHandler"),$h=function(n,e){return{id:v(n),descHandler:v(e)}};function Wh(){var i={};return{registerId:function(r,o,n){Nn(n,function(n,e){var t=i[e]!==undefined?i[e]:{};t[o]=zm(n,r),i[e]=t})},unregisterId:function(t){Nn(i,function(n,e){n.hasOwnProperty(t)&&delete n[t]})},filterByType:function(n){return Dt(i,n).map(function(n){return _n(n,function(n,e){return $h(e,n)})}).getOr([])},find:function(n,e,t){var r=Ct(e)(i);return ko(t,function(n){return function(t,r){return gf(r).fold(function(){return Fn.none()},function(n){var e=Ct(n);return t.bind(e).map(function(n){return Uh(r,n)})})}(r,n)},n)}}}function Xh(){function r(n){var e=n.element();return gf(e).fold(function(){return function(n,e){var t=yc(lf+n);return mf(e,t),t}("uid-",n.element())},function(n){return n})}var o=Wh(),i={},u=function(n){gf(n.element()).each(function(n){delete i[n],o.unregisterId(n)})};return{find:function(n,e,t){return o.find(n,e,t)},filter:function(n){return o.filterByType(n)},register:function(n){var e=r(n);Mn(i,e)&&function(n,e){var t=i[e];if(t!==n)throw new Error('The tagId "'+e+'" is already used by: '+bo(t.element())+"\nCannot use it for: "+bo(n.element())+"\nThe conflicting element is"+(K(t.element())?" ":" not ")+"already in the DOM");u(n)}(n,e);var t=[n];o.registerId(t,e,n.events()),i[e]=n},unregister:u,getById:function(n){return Ct(n)(i)}}}var qh=function(t){function r(e){return fn(t.element()).fold(function(){return!0},function(n){return cn(e,n)})}function o(n,e){return u.find(r,n,e)}function i(t){var n=u.filter(_e());C(n,function(n){var e=n.descHandler();Ed(e)(t)})}var u=Xh(),n=Ch(t.element(),{triggerEvent:function(e,t){return qo(e,t.target(),function(n){return function(n,e,t,r){var o=t.target();return Gh(n,e,t,o,r)}(o,e,t,n)})}}),c={debugInfo:v("real"),triggerEvent:function(e,t,r){qo(e,t,function(n){Gh(o,e,r,t,n)})},triggerFocus:function(e,t){gf(e).fold(function(){so(e)},function(n){qo(Ve(),e,function(n){!function(n,e,t,r,o){var i=Dh(t,r);Mh(n,e,t,r,i,o)}(o,Ve(),{originator:v(t),kill:w,prevent:w,target:v(e)},e,n)})})},triggerEscape:function(n,e){c.triggerEvent("keydown",n.element(),e.event())},getByUid:function(n){return g(n)},getByDom:function(n){return p(n)},build:$m,addToGui:function(n){f(n)},removeFromGui:function(n){s(n)},addToWorld:function(n){e(n)},removeFromWorld:function(n){a(n)},broadcast:function(n){l(n)},broadcastOn:function(n,e){d(n,e)},broadcastEvent:function(n,e){m(n,e)},isConnected:v(!0)},e=function(n){n.connect(c),tt(n.element())||(u.register(n),C(n.components(),e),c.triggerEvent(Ge(),n.element(),{target:v(n.element())}))},a=function(n){tt(n.element())||(C(n.components(),a),u.unregister(n)),n.disconnect()},f=function(n){!function(n,e){mt(n,e,ft)}(t,n)},s=function(n){yn(n)},l=function(n){i({universal:v(!0),data:v(n)})},d=function(n,e){i({universal:v(!1),channels:v(n),data:v(e)})},m=function(n,e){var t=u.filter(n);return Ih(t,e)},g=function(n){return u.getById(n).fold(function(){return vt.error(new Error('Could not find component with uid: "'+n+'" in system.'))},vt.value)},p=function(n){var e=gf(n).getOr("not found");return g(e)};return e(t),{root:v(t),element:t.element,destroy:function(){n.unbind(),st(t.element())},add:f,remove:s,getByUid:g,getByDom:p,addToWorld:e,removeFromWorld:a,broadcast:l,broadcastOn:d,broadcastEvent:m}},Yh=v(_i.resolve("readonly-mode")),Kh=v(_i.resolve("edit-mode"));function Jh(n){var e=$m(pm.sketch({dom:{classes:[_i.resolve("outer-container")].concat(n.classes)},containerBehaviours:Bo([Ho.config({alpha:Yh(),omega:Kh()})])}));return qh(e)}var Qh=function(n,e){var t=Je.fromTag("input");di(t,{opacity:"0",position:"absolute",top:"-1000px",left:"-1000px"}),ft(n,t),so(t),e(t),st(t)},Zh=function(n){var e=n.getSelection();if(0<e.rangeCount){var t=e.getRangeAt(0),r=n.document.createRange();r.setStart(t.startContainer,t.startOffset),r.setEnd(t.endContainer,t.endOffset),e.removeAllRanges(),e.addRange(r)}},nv=function(n,e){mo().each(function(n){cn(n,e)||lo(n)}),n.focus(),so(Je.fromDom(n.document.body)),Zh(n)},ev={stubborn:function(n,e,t,r){function o(){nv(e,r)}var i=tm(t,"keydown",function(n){k(["input","textarea"],q(n.target()))||o()});return{toReading:function(){Qh(n,lo)},toEditing:o,onToolbarTouch:function(){},destroy:function(){i.unbind()}}},timid:function(n,e,t,r){function o(){lo(r)}return{toReading:function(){o()},toEditing:function(){nv(e,r)},onToolbarTouch:function(){o()},destroy:w}}},tv=function(e,r,t,o,n){function i(){r.run(function(n){n.refreshSelection()})}function u(n,e){var t=n-o.dom().scrollTop;r.run(function(n){n.scrollIntoView(t,t+e)})}function c(){r.run(function(n){n.clearSelection()})}function a(){e.getCursorBox().each(function(n){u(n.top(),n.height())}),r.run(function(n){n.syncHeight()})}var f=Hg(e),s=Cp(a,300),l=[e.onKeyup(function(){c(),s.throttle()}),e.onNodeChanged(i),e.onDomChanged(s.throttle),e.onDomChanged(i),e.onScrollToCursor(function(n){n.preventDefault(),s.throttle()}),e.onScrollToElement(function(n){n.element(),u(r,o)}),e.onToEditing(function(){r.run(function(n){n.toEditing()})}),e.onToReading(function(){r.run(function(n){n.toReading()})}),tm(e.doc(),"touchend",function(n){cn(e.html(),n.target())||cn(e.body(),n.target())}),tm(t,"transitionend",function(n){"height"===n.raw().propertyName&&function(){var e=Wi(t);r.run(function(n){n.setViewportOffset(e)}),i(),a()}()}),rm(t,"touchstart",function(n){r.run(function(n){n.highlightSelection()}),function(e){r.run(function(n){n.onToolbarTouch(e)})}(n),e.onTouchToolstrip()}),tm(e.body(),"touchstart",function(n){c(),e.onTouchContent(),f.fireTouchstart(n)}),f.onTouchmove(),f.onTouchend(),tm(e.body(),"click",function(n){n.kill()}),tm(t,"touchmove",function(){e.onToolbarScrollStart()})];return{destroy:function(){C(l,function(n){n.unbind()})}}};var rv,ov,iv,uv,cv={},av={exports:cv};rv=undefined,ov=cv,iv=av,uv=undefined,function(n){"object"==typeof ov&&void 0!==iv?iv.exports=n():"function"==typeof rv&&rv.amd?rv([],n):("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).EphoxContactWrapper=n()}(function(){return function s(i,u,c){function a(e,n){if(!u[e]){if(!i[e]){var t="function"==typeof uv&&uv;if(!n&&t)return t(e,!0);if(f)return f(e,!0);var r=new Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r}var o=u[e]={exports:{}};i[e][0].call(o.exports,function(n){return a(i[e][1][n]||n)},o,o.exports,s,i,u,c)}return u[e].exports}for(var f="function"==typeof uv&&uv,n=0;n<c.length;n++)a(c[n]);return a}({1:[function(n,e,t){var r,o,i=e.exports={};function u(){throw new Error("setTimeout has not been defined")}function c(){throw new Error("clearTimeout has not been defined")}function a(n){if(r===setTimeout)return setTimeout(n,0);if((r===u||!r)&&setTimeout)return r=setTimeout,setTimeout(n,0);try{return r(n,0)}catch(e){try{return r.call(null,n,0)}catch(e){return r.call(this,n,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:u}catch(n){r=u}try{o="function"==typeof clearTimeout?clearTimeout:c}catch(n){o=c}}();var f,s=[],l=!1,d=-1;function m(){l&&f&&(l=!1,f.length?s=f.concat(s):d=-1,s.length&&g())}function g(){if(!l){var n=a(m);l=!0;for(var e=s.length;e;){for(f=s,s=[];++d<e;)f&&f[d].run();d=-1,e=s.length}f=null,l=!1,function t(n){if(o===clearTimeout)return clearTimeout(n);if((o===c||!o)&&clearTimeout)return o=clearTimeout,clearTimeout(n);try{return o(n)}catch(e){try{return o.call(null,n)}catch(e){return o.call(this,n)}}}(n)}}function p(n,e){this.fun=n,this.array=e}function h(){}i.nextTick=function(n){var e=new Array(arguments.length-1);if(1<arguments.length)for(var t=1;t<arguments.length;t++)e[t-1]=arguments[t];s.push(new p(n,e)),1!==s.length||l||a(g)},p.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=h,i.addListener=h,i.once=h,i.off=h,i.removeListener=h,i.removeAllListeners=h,i.emit=h,i.prependListener=h,i.prependOnceListener=h,i.listeners=function(n){return[]},i.binding=function(n){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(n){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},{}],2:[function(n,l,e){(function(e){function r(){}function i(n){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof n)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=undefined,this._deferreds=[],s(n,this)}function o(r,o){for(;3===r._state;)r=r._value;0!==r._state?(r._handled=!0,i._immediateFn(function(){var n=1===r._state?o.onFulfilled:o.onRejected;if(null!==n){var e;try{e=n(r._value)}catch(t){return void c(o.promise,t)}u(o.promise,e)}else(1===r._state?u:c)(o.promise,r._value)})):r._deferreds.push(o)}function u(n,e){try{if(e===n)throw new TypeError("A promise cannot be resolved with itself.");if(e&&("object"==typeof e||"function"==typeof e)){var t=e.then;if(e instanceof i)return n._state=3,n._value=e,void a(n);if("function"==typeof t)return void s(function r(n,e){return function(){n.apply(e,arguments)}}(t,e),n)}n._state=1,n._value=e,a(n)}catch(o){c(n,o)}}function c(n,e){n._state=2,n._value=e,a(n)}function a(n){2===n._state&&0===n._deferreds.length&&i._immediateFn(function(){n._handled||i._unhandledRejectionFn(n._value)});for(var e=0,t=n._deferreds.length;e<t;e++)o(n,n._deferreds[e]);n._deferreds=null}function f(n,e,t){this.onFulfilled="function"==typeof n?n:null,this.onRejected="function"==typeof e?e:null,this.promise=t}function s(n,e){var t=!1;try{n(function(n){t||(t=!0,u(e,n))},function(n){t||(t=!0,c(e,n))})}catch(r){if(t)return;t=!0,c(e,r)}}var n,t;n=this,t=setTimeout,i.prototype["catch"]=function(n){return this.then(null,n)},i.prototype.then=function(n,e){var t=new this.constructor(r);return o(this,new f(n,e,t)),t},i.all=function(n){var a=Array.prototype.slice.call(n);return new i(function(o,i){if(0===a.length)return o([]);var u=a.length;function c(e,n){try{if(n&&("object"==typeof n||"function"==typeof n)){var t=n.then;if("function"==typeof t)return void t.call(n,function(n){c(e,n)},i)}a[e]=n,0==--u&&o(a)}catch(r){i(r)}}for(var n=0;n<a.length;n++)c(n,a[n])})},i.resolve=function(e){return e&&"object"==typeof e&&e.constructor===i?e:new i(function(n){n(e)})},i.reject=function(t){return new i(function(n,e){e(t)})},i.race=function(o){return new i(function(n,e){for(var t=0,r=o.length;t<r;t++)o[t].then(n,e)})},i._immediateFn="function"==typeof e?function(n){e(n)}:function(n){t(n,0)},i._unhandledRejectionFn=function(n){"undefined"!=typeof console&&console&&console.warn("Possible Unhandled Promise Rejection:",n)},i._setImmediateFn=function(n){i._immediateFn=n},i._setUnhandledRejectionFn=function(n){i._unhandledRejectionFn=n},void 0!==l&&l.exports?l.exports=i:n.Promise||(n.Promise=i)}).call(this,n("timers").setImmediate)},{timers:3}],3:[function(a,n,f){(function(n,e){var r=a("process/browser.js").nextTick,t=Function.prototype.apply,o=Array.prototype.slice,i={},u=0;function c(n,e){this._id=n,this._clearFn=e}f.setTimeout=function(){return new c(t.call(setTimeout,window,arguments),clearTimeout)},f.setInterval=function(){return new c(t.call(setInterval,window,arguments),clearInterval)},f.clearTimeout=f.clearInterval=function(n){n.close()},c.prototype.unref=c.prototype.ref=function(){},c.prototype.close=function(){this._clearFn.call(window,this._id)},f.enroll=function(n,e){clearTimeout(n._idleTimeoutId),n._idleTimeout=e},f.unenroll=function(n){clearTimeout(n._idleTimeoutId),n._idleTimeout=-1},f._unrefActive=f.active=function(n){clearTimeout(n._idleTimeoutId);var e=n._idleTimeout;0<=e&&(n._idleTimeoutId=setTimeout(function(){n._onTimeout&&n._onTimeout()},e))},f.setImmediate="function"==typeof n?n:function(n){var e=u++,t=!(arguments.length<2)&&o.call(arguments,1);return i[e]=!0,r(function(){i[e]&&(t?n.apply(null,t):n.call(null),f.clearImmediate(e))}),e},f.clearImmediate="function"==typeof e?e:function(n){delete i[n]}}).call(this,a("timers").setImmediate,a("timers").clearImmediate)},{"process/browser.js":1,timers:3}],4:[function(n,e,t){var r=n("promise-polyfill"),o="undefined"!=typeof window?window:Function("return this;")();e.exports={boltExport:o.Promise||r}},{"promise-polyfill":2}]},{},[4])(4)});function fv(n){d.setTimeout(function(){throw n},0)}function sv(n,e,t){return Math.abs(n-e)<=t?Fn.none():n<e?Fn.some(n+t):Fn.some(n-t)}function lv(e,t){return wo([{width:320,height:480,keyboard:{portrait:300,landscape:240}},{width:320,height:568,keyboard:{portrait:300,landscape:240}},{width:375,height:667,keyboard:{portrait:305,landscape:240}},{width:414,height:736,keyboard:{portrait:320,landscape:240}},{width:768,height:1024,keyboard:{portrait:320,landscape:400}},{width:1024,height:1366,keyboard:{portrait:380,landscape:460}}],function(n){return function(n,e){return n?Fn.some(e):Fn.none()}(e<=n.width&&t<=n.height,n.keyboard)}).getOr({portrait:t/5,landscape:e/4})}function dv(n){var e=Vg(n).isPortrait(),t=function(n){return lv(n.screen.width,n.screen.height)}(n),r=e?t.portrait:t.landscape;return(e?n.screen.height:n.screen.width)-n.innerHeight>r?0:r}function mv(n,e){var t=an(n).dom().defaultView;return Wi(n)+Wi(e)-dv(t)}function gv(n){return Gg(n,Av)}function pv(n,e){var t=function(n){return Qr(n,Fv)}(n);return Rv.fixed(n,t,e)}function hv(n,e){return Rv.scroller(n,e)}function vv(n){var e=gv(n);return("true"===Qr(n,Bv)?hv:pv)(n,e)}function yv(n,e,t){var r=an(n).dom().defaultView.innerHeight;return Kr(n,Vv,r+"px"),r-e-t}function bv(n){var e=gi(n,"top").getOr("0");return parseInt(e,10)}function xv(n){return parseInt(n.dom().scrollTop,10)}function wv(n,e){var t=e+_v(n)+"px";Gi(n,"top",t)}var Sv=av.exports.boltExport,Tv=function(n){var t=Fn.none(),e=[],r=function(n){o()?u(n):e.push(n)},o=function(){return t.isSome()},i=function(n){C(n,u)},u=function(e){t.each(function(n){d.setTimeout(function(){e(n)},0)})};return n(function(n){t=Fn.some(n),i(e),e=[]}),{get:r,map:function(t){return Tv(function(e){r(function(n){e(t(n))})})},isReady:o}},Ov={nu:Tv,pure:function(e){return Tv(function(n){n(e)})}},kv=function(t){function n(n){t().then(n,fv)}return{map:function(n){return kv(function(){return t().then(n)})},bind:function(e){return kv(function(){return t().then(function(n){return e(n).toPromise()})})},anonBind:function(n){return kv(function(){return t().then(function(){return n.toPromise()})})},toLazy:function(){return Ov.nu(n)},toCached:function(){var n=null;return kv(function(){return null===n&&(n=t()),n})},toPromise:t,get:n}},Ev=function(n){return kv(function(){return new Sv(n)})},Cv=function(n){return kv(function(){return Sv.resolve(n)})},Dv=function(){var f=null;return{animate:function(r,o,n,i,e,t){function u(n){c=!0,e(n)}var c=!1;Bg.clearInterval(f);function a(n){Bg.clearInterval(f),u(n)}f=Bg.setInterval(function(){var t=r();sv(t,o,n).fold(function(){Bg.clearInterval(f),u(o)},function(n){if(i(n,a),!c){var e=r();(e!==n||Math.abs(e-o)>Math.abs(t-o))&&(Bg.clearInterval(f),u(o))}})},t)}}},Mv=mv,Iv=function(n,e,t){var r=mv(e,t),o=Wi(e)+Wi(t)-r;Gi(n,"padding-bottom",o+"px")},Rv=yt([{fixed:["element","property","offsetY"]},{scroller:["element","offsetY"]}]),Av="data-"+_i.resolve("position-y-fixed"),Fv="data-"+_i.resolve("y-property"),Bv="data-"+_i.resolve("scrolling"),Vv="data-"+_i.resolve("last-window-height"),Nv=function(n){var e=Yi(n,"["+Av+"]");return de(e,vv)},jv=function(r,o,i,u){function n(){var n=t.innerHeight;return function(n){return Gg(n,Vv)}(r)<n}function e(){if(d){var n=Wi(i),e=Wi(u),t=yv(r,n,e);Kr(r,Av,n+"px"),Gi(r,"height",t+"px"),Iv(o,r,u)}}var t=an(r).dom().defaultView,c=function(n){var e=Qr(n,"style");di(n,{position:"absolute",top:"0px"}),Kr(n,Av,"0px"),Kr(n,Fv,"top");return{restore:function(){Kr(n,"style",e||""),no(n,Av),no(n,Fv)}}}(i),a=Wi(i),f=Wi(u),s=function(n,e,t){var r=Qr(t,"style");xg.register(t),di(t,{position:"absolute",height:e+"px",width:"100%",top:n+"px"}),Kr(t,Av,n+"px"),Kr(t,Bv,"true"),Kr(t,Fv,"top");return{restore:function(){xg.deregister(t),Kr(t,"style",r||""),no(t,Av),no(t,Bv),no(t,Fv)}}}(a,yv(r,a,f),r),l=function(n){var e=Qr(n,"style");di(n,{position:"absolute",bottom:"0px"}),Kr(n,Av,"0px"),Kr(n,Fv,"bottom");return{restore:function(){Kr(n,"style",e||""),no(n,Av),no(n,Fv)}}}(u),d=!0;return Iv(o,r,u),{setViewportOffset:function(n){Kr(r,Av,n+"px"),e()},isExpanding:n,isShrinking:m(n),refresh:e,restore:function(){d=!1,c.restore(),s.restore(),l.restore()}}},_v=gv,Pv=Dv(),Hv="data-"+_i.resolve("last-scroll-top"),zv=function(t,r,o){return Ev(function(n){var e=l(xv,t);Pv.animate(e,r,15,function(n){t.dom().scrollTop=n,Gi(t,"top",bv(t)+15+"px")},function(){t.dom().scrollTop=r,Gi(t,"top",o+"px"),n(r)},10)})},Lv=function(o,i){return Ev(function(n){var e=l(xv,o);Kr(o,Hv,e());var t=Math.abs(i-e()),r=Math.ceil(t/10);Pv.animate(e,i,r,function(n,e){Gg(o,Hv)!==o.dom().scrollTop?e(o.dom().scrollTop):(o.dom().scrollTop=n,Kr(o,Hv,n))},function(){o.dom().scrollTop=i,Kr(o,Hv,i),n(i)},10)})},Gv=function(i,u){return Ev(function(n){function e(n){Gi(i,"top",n+"px")}var t=l(bv,i),r=Math.abs(u-t()),o=Math.ceil(r/10);Pv.animate(t,u,o,e,function(){e(u),n(u)},10)})},Uv=function(e,t,r){var o=an(e).dom().defaultView;return Ev(function(n){wv(e,r),wv(t,r),o.scrollTo(0,r),n(r)})};function $v(i,n){return n(function(t){var r=[],o=0;0===i.length?t([]):C(i,function(n,e){n.get(function(e){return function(n){r[e]=n,++o>=i.length&&t(r)}}(e))})})}function Wv(n,r){return n.fold(function(n,e,t){return function(n,e,t,r){return Gi(n,e,t+r+"px"),Cv(r)}(n,e,r,t)},function(n,e){return function(n,e,t){var r=e+t,o=gi(n,"top").getOr(t),i=r-parseInt(o,10),u=n.dom().scrollTop+i;return zv(n,u,r)}(n,r,e)})}function Xv(e,t,n,r,o,i){var u=function f(t){var r=Pn(Ov.pure({}));return{start:function(e){var n=Ov.nu(function(n){return t(e).get(n)});r.set(n)},idle:function(n){r.get().get(function(){n()})}}}(function(n){return Uv(e,t,n)}),c=Cp(function(){u.idle(function(){Yv(n,r.pageYOffset).get(function(){(function(){var n=Hp(i);return Fn.from(n[0]).bind(function(n){var e=n.top()-t.dom().scrollTop;return e>r.innerHeight+5||e<-5?Fn.some({top:v(e),bottom:v(e+n.height())}):Fn.none()})})().each(function(n){t.dom().scrollTop=t.dom().scrollTop+n.top()}),u.start(0),o.refresh()})})},1e3),a=tm(Je.fromDom(r),"scroll",function(){r.pageYOffset<0||c.throttle()});return Yv(n,r.pageYOffset).get(y),{unbind:a.unbind}}var qv=function(n,e,t,r,o){var i=Mv(e,t),u=l(Zh,n);i<r||i<o?Lv(e,e.dom().scrollTop-i+o).get(u):r<0&&Lv(e,e.dom().scrollTop+r).get(u)},Yv=function(n,e){var t=Nv(n);return function(n){return $v(n,Ev)}(de(t,function(n){return Wv(n,e)}))},Kv=function(n){var t=n.cWin(),e=n.ceBody(),r=n.socket(),o=n.toolstrip(),i=n.toolbar(),u=n.contentElement(),c=n.keyboardType(),a=n.outerWindow(),f=n.dropup(),s=jv(r,e,o,f),l=c(n.outerBody(),t,rt(),u,o,i),d=Ng(a,{onChange:w,onReady:s.refresh});d.onAdjustment(function(){s.refresh()});var m=tm(Je.fromDom(a),"resize",function(){s.isExpanding()&&s.refresh()}),g=Xv(o,r,n.outerBody(),a,s,t),p=function v(t,e){var n=t.document,r=Je.fromTag("div");function o(n){var e=Je.fromTag("span");return Ad(e,[_i.resolve("layer-editor"),_i.resolve("unfocused-selection")]),di(e,{left:n.left()+"px",top:n.top()+"px",width:n.width()+"px",height:n.height()+"px"}),e}io(r,_i.resolve("unfocused-selections")),ft(Je.fromDom(n.documentElement),r);var i=tm(r,"touchstart",function(n){n.prevent(),nv(t,e),u()}),u=function(){pn(r)};return{update:function(){u();var n=Hp(t),e=de(n,o);gn(r,e)},isActive:function(){return 0<at(r).length},destroy:function(){i.unbind(),st(r)},clear:u}}(t,u),h=function(){p.clear()};return{toEditing:function(){l.toEditing(),h()},toReading:function(){l.toReading()},onToolbarTouch:function(n){l.onToolbarTouch(n)},refreshSelection:function(){p.isActive()&&p.update()},clearSelection:h,highlightSelection:function(){p.update()},scrollIntoView:function(n,e){qv(t,r,f,n,e)},updateToolbarPadding:w,setViewportOffset:function(n){s.setViewportOffset(n),Gv(r,n).get(y)},syncHeight:function(){Gi(u,"height",u.dom().contentWindow.document.body.scrollHeight+"px")},refreshStructure:s.refresh,destroy:function(){s.restore(),d.destroy(),g.unbind(),m.unbind(),l.destroy(),p.destroy(),Qh(rt(),lo)}}},Jv=function(r,n){var o=Jp(),i=Sd(),u=Sd(),c=wd(),a=wd();return{enter:function(){n.hide();var t=Je.fromDom(d.document);Up.getActiveApi(r.editor).each(function(n){i.set({socketHeight:gi(r.socket,"height"),iframeHeight:gi(n.frame(),"height"),outerScroll:d.document.body.scrollTop}),u.set({exclusives:fh.exclusive(t,"."+xg.scrollable())}),io(r.container,_i.resolve("fullscreen-maximized")),Yp(r.container,n.body()),o.maximize(),Gi(r.socket,"overflow","scroll"),Gi(r.socket,"-webkit-overflow-scrolling","touch"),so(n.body());var e=nn(["cWin","ceBody","socket","toolstrip","toolbar","dropup","contentElement","cursor","keyboardType","isScrolling","outerWindow","outerBody"],[]);c.set(Kv(e({cWin:n.win(),ceBody:n.body(),socket:r.socket,toolstrip:r.toolstrip,toolbar:r.toolbar,dropup:r.dropup.element(),contentElement:n.frame(),cursor:w,outerBody:r.body,outerWindow:r.win,keyboardType:ev.stubborn,isScrolling:function(){return u.get().exists(function(n){return n.socket.isScrolling()})}}))),c.run(function(n){n.syncHeight()}),a.set(tv(n,c,r.toolstrip,r.socket,r.dropup))})},refreshStructure:function(){c.run(function(n){n.refreshStructure()})},exit:function(){o.restore(),a.clear(),c.clear(),n.show(),i.on(function(n){n.socketHeight.each(function(n){Gi(r.socket,"height",n)}),n.iframeHeight.each(function(n){Gi(r.editor.getFrame(),"height",n)}),d.document.body.scrollTop=n.scrollTop}),i.clear(),u.on(function(n){n.exclusives.unbind()}),u.clear(),co(r.container,_i.resolve("fullscreen-maximized")),Kp(),xg.deregister(r.toolbar),pi(r.socket,"overflow"),pi(r.socket,"-webkit-overflow-scrolling"),lo(r.editor.getFrame()),Up.getActiveApi(r.editor).each(function(n){n.clearSelection()})}}},Qv=function(n){var e=Xt("Getting IosWebapp schema",nh,n);Gi(e.toolstrip,"width","100%"),Gi(e.container,"position","relative");var t=$m(Zp(function(){e.setReadOnly(e.readOnlyOnInit()),o.enter()},e.translate));e.alloy.add(t);var r={show:function(){e.alloy.add(t)},hide:function(){e.alloy.remove(t)}},o=Jv(e,r);return{setReadOnly:e.setReadOnly,refreshStructure:o.refreshStructure,enter:o.enter,exit:o.exit,destroy:w}};function Zv(n,e,t){n.system().broadcastOn([Uo.formatChanged()],{command:e,state:t})}function ny(m){return{getNotificationManagerImpl:function(){return{open:v({progressBar:{value:w},close:w,text:w,getEl:v(null),moveTo:w,moveRel:w,settings:{}}),close:w,reposition:w,getArgs:v({})}},renderUI:function(){var n=m.getElement(),e=ty(m);!1===function(n){return!1===n.settings.skin}(m)?(m.contentCSS.push(e.content),zo.DOM.styleSheetLoader.load(e.ui,oy(m))):oy(m)();function t(){m.fire("ScrollIntoView")}var f=L().os.isAndroid()?function c(n){var e=Jh({classes:[_i.resolve("android-container")]}),t=sh(),r=wd(),o=Ah(r),i=Fh(),u=kh(w,n);return e.add(t.wrapper()),e.add(i),e.add(u.component()),{system:v(e),element:e.element,init:function(n){r.set(eh(n))},exit:function(){r.run(function(n){n.exit(),cg.remove(i,o)})},setToolbarGroups:function(n){var e=t.createGroups(n);t.setGroups(e)},setContextToolbar:function(n){var e=t.createGroups(n);t.setContextToolbar(e)},focusToolbar:function(){t.focus()},restoreToolbar:function(){t.restoreToolbar()},updateMode:function(n){Bh(i,o,n,e.root())},socket:v(i),dropup:v(u)}}(t):function a(n){var e=Jh({classes:[_i.resolve("ios-container")]}),t=sh(),r=wd(),o=Ah(r),i=Fh(),u=kh(function(){r.run(function(n){n.refreshStructure()})},n);return e.add(t.wrapper()),e.add(i),e.add(u.component()),{system:v(e),element:e.element,init:function(n){r.set(Qv(n))},exit:function(){r.run(function(n){cg.remove(i,o),n.exit()})},setToolbarGroups:function(n){var e=t.createGroups(n);t.setGroups(e)},setContextToolbar:function(n){var e=t.createGroups(n);t.setContextToolbar(e)},focusToolbar:function(){t.focus()},restoreToolbar:function(){t.restoreToolbar()},updateMode:function(n){Bh(i,o,n,e.root())},socket:v(i),dropup:v(u)}}(t);!function(n,e){gt(n,e,dn)}(Je.fromDom(n),f.system());function s(n,e,t,r){!1===r&&m.selection.collapse();var o=i(n,e,t);f.setToolbarGroups(!0===r?o.readOnly:o.main),m.setMode(!0===r?"readonly":"design"),m.fire(!0===r?iy():uy()),f.updateMode(r)}function l(n,e){return m.on(n,e),{unbind:function(){m.off(n)}}}var r=n.ownerDocument.defaultView,d=Ng(r,{onChange:function(){f.system().broadcastOn([Uo.orientationChanged()],{width:jg(r)})},onReady:w}),i=function(n,e,t){var r=n.get();return{readOnly:r.backToMask.concat(e.get()),main:r.backToMask.concat(t.get())}};return m.on("init",function(){f.init({editor:{getFrame:function(){return Je.fromDom(m.contentAreaContainer.querySelector("iframe"))},onDomChanged:function(){return{unbind:w}},onToReading:function(n){return l(iy(),n)},onToEditing:function(n){return l(uy(),n)},onScrollToCursor:function(e){m.on("ScrollIntoView",function(n){e(n)});return{unbind:function(){m.off("ScrollIntoView"),d.destroy()}}},onTouchToolstrip:function(){n()},onTouchContent:function(){(function(n){return go(n).bind(function(n){return f.system().getByDom(n).toOption()})})(Je.fromDom(m.editorContainer.querySelector("."+_i.resolve("toolbar")))).each($),f.restoreToolbar(),n()},onTapContent:function(n){var e=n.target();if("img"===q(e))m.selection.select(e.dom()),n.kill();else if("a"===q(e)){f.system().getByDom(Je.fromDom(m.editorContainer)).each(function(n){Ho.isAlpha(n)&&Go(e.dom())})}}},container:Je.fromDom(m.editorContainer),socket:Je.fromDom(m.contentAreaContainer),toolstrip:Je.fromDom(m.editorContainer.querySelector("."+_i.resolve("toolstrip"))),toolbar:Je.fromDom(m.editorContainer.querySelector("."+_i.resolve("toolbar"))),dropup:f.dropup(),alloy:f.system(),translate:w,setReadOnly:function(n){s(a,c,u,n)},readOnlyOnInit:function(){return!1}});var n=function(){f.dropup().disappear(function(){f.system().broadcastOn([Uo.dropupDismissed()],{})})},e={label:"The first group",scrollable:!1,items:[Ws.forToolbar("back",function(){m.selection.collapse(),f.exit()},{},m)]},t={label:"Back to read only",scrollable:!1,items:[Ws.forToolbar("readonly-back",function(){s(a,c,u,!0)},{},m)]},r=Ig(f,m),o=Rg(m.settings,r),i={label:"The extra group",scrollable:!1,items:[]},u=Pn([{label:"the action group",scrollable:!0,items:o},i]),c=Pn([{label:"The read only mode group",scrollable:!0,items:[]},i]),a=Pn({backToMask:[e],backToReadOnly:[t]});ry(f,m)}),m.on("remove",function(){f.exit()}),m.on("detach",function(){!function(e){var n=at(e.element());C(n,function(n){e.getByDom(n).each(lt)}),st(e.element())}(f.system()),f.system().destroy()}),{iframeContainer:f.socket().element().dom(),editorContainer:f.element().dom()}}}}var ey=tinymce.util.Tools.resolve("tinymce.EditorManager"),ty=function(n){var e=Dt(n.settings,"skin_url").fold(function(){return ey.baseURL+"/skins/ui/oxide"},function(n){return n});return{content:e+"/content.mobile.min.css",ui:e+"/skin.mobile.min.css"}},ry=function(r,n){var e=Bn(n.formatter.get());C(e,function(e){n.formatter.formatChanged(e,function(n){Zv(r,e,n)})}),C(["ul","ol"],function(t){n.selection.selectorChanged(t,function(n,e){Zv(r,t,n)})})},oy=(v(["x-small","small","medium","large","x-large"]),function(n){function e(){n._skinLoaded=!0,n.fire("SkinLoaded")}return function(){n.initialized?e():n.on("init",e)}}),iy=v("toReading"),uy=v("toEditing");!function ay(){Lo.add("mobile",ny)}()}(window);
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/themes/silver/theme.min.js b/app/static/vendors/tinymce/js/tinymce/themes/silver/theme.min.js
deleted file mode 100644 (file)
index 1c4a174..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.3 (2019-12-04)
- */
-!function(v){"use strict";function Z(){}function i(e,o){return function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];return e(o.apply(null,n))}}function l(n){return n}var nn=function(n){return function(){return n}};function d(o){for(var r=[],n=1;n<arguments.length;n++)r[n-1]=arguments[n];return function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var e=r.concat(n);return o.apply(null,e)}}function b(e){return function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];return!e.apply(null,n)}}function r(n){return function(){throw new Error(n)}}var u=nn(!1),a=nn(!0),n=tinymce.util.Tools.resolve("tinymce.ThemeManager"),N=function(){return(N=Object.assign||function(n){for(var t,e=1,o=arguments.length;e<o;e++)for(var r in t=arguments[e])Object.prototype.hasOwnProperty.call(t,r)&&(n[r]=t[r]);return n}).apply(this,arguments)};function c(n,t){var e={};for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&t.indexOf(o)<0&&(e[o]=n[o]);if(null!=n&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(o=Object.getOwnPropertySymbols(n);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(n,o[r])&&(e[o[r]]=n[o[r]])}return e}function g(){for(var n=0,t=0,e=arguments.length;t<e;t++)n+=arguments[t].length;var o=Array(n),r=0;for(t=0;t<e;t++)for(var i=arguments[t],u=0,a=i.length;u<a;u++,r++)o[r]=i[u];return o}function t(){return s}var e,s=(e={fold:function(n,t){return n()},is:u,isSome:u,isNone:a,getOr:m,getOrThunk:f,getOrDie:function(n){throw new Error(n||"error: getOrDie called on none.")},getOrNull:nn(null),getOrUndefined:nn(undefined),or:m,orThunk:f,map:t,each:Z,bind:t,exists:u,forall:a,filter:t,equals:o,equals_:o,toArray:function(){return[]},toString:nn("none()")},Object.freeze&&Object.freeze(e),e);function o(n){return n.isNone()}function f(n){return n()}function m(n){return n}function p(t){return function(n){return function(n){if(null===n)return"null";var t=typeof n;return"object"==t&&(Array.prototype.isPrototypeOf(n)||n.constructor&&"Array"===n.constructor.name)?"array":"object"==t&&(String.prototype.isPrototypeOf(n)||n.constructor&&"String"===n.constructor.name)?"string":t}(n)===t}}function h(n,t){if(fn(n)){for(var e=0,o=n.length;e<o;++e)if(!0!==t(n[e]))return!1;return!0}return!1}function y(n,t){return pn.call(n,t)}function x(n,t){for(var e=0,o=n.length;e<o;e++){if(t(n[e],e))return!0}return!1}function w(n,t){for(var e=[],o=0;o<n.length;o+=t){var r=gn.call(n,o,o+t);e.push(r)}return e}function S(n,t){for(var e=n.length,o=new Array(e),r=0;r<e;r++){var i=n[r];o[r]=t(i,r)}return o}function C(n,t){for(var e=[],o=0,r=n.length;o<r;o++){var i=n[o];t(i,o)&&e.push(i)}return e}function k(n,t,e){return function(n,t){for(var e=n.length-1;0<=e;e--){t(n[e],e)}}(n,function(n){e=t(e,n)}),e}function O(n,t,e){return bn(n,function(n){e=t(e,n)}),e}function T(n,t){for(var e=0,o=n.length;e<o;e++){var r=n[e];if(t(r,e))return on.some(r)}return on.none()}function E(n,t){for(var e=0,o=n.length;e<o;e++){if(t(n[e],e))return on.some(e)}return on.none()}function H(n){for(var t=[],e=0,o=n.length;e<o;++e){if(!fn(n[e]))throw new Error("Arr.flatten item "+e+" was not an array, input: "+n);hn.apply(t,n[e])}return t}function D(n,t){var e=S(n,t);return H(e)}function B(n,t){for(var e=0,o=n.length;e<o;++e){if(!0!==t(n[e],e))return!1}return!0}function A(n){var t=gn.call(n,0);return t.reverse(),t}function _(n,t){return C(n,function(n){return!vn(t,n)})}function M(n){return[n]}function F(n){return 0===n.length?on.none():on.some(n[n.length-1])}function P(n,e){return kn(n,function(n,t){return{k:t,v:e(n,t)}})}function I(n,t){for(var e=wn(n),o=0,r=e.length;o<r;o++){var i=e[o],u=n[i];if(t(u,i,n))return on.some(u)}return on.none()}function R(n){return On(n,function(n){return n})}function V(n,t){return Tn(n,t)?on.from(n[t]):on.none()}function z(u){return function(){for(var n=new Array(arguments.length),t=0;t<n.length;t++)n[t]=arguments[t];if(0===n.length)throw new Error("Can't merge zero objects");for(var e={},o=0;o<n.length;o++){var r=n[o];for(var i in r)Dn.call(r,i)&&(e[i]=u(e[i],r[i]))}return e}}function L(e){var o,r=!1;return function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];return r||(r=!0,o=e.apply(null,n)),o}}function j(n){return _n.defaultedThunk(nn(n))}function U(t){return function(n){return Tn(n,t)?on.from(n[t]):on.none()}}function W(n,t){return U(t)(n)}function G(n,t){var e={};return e[n]=t,e}function X(n,t){return function(n,e){var o={};return Cn(n,function(n,t){vn(e,t)||(o[t]=n)}),o}(n,t)}function Y(n,t){return function(t,e){return function(n){return Tn(n,t)?n[t]:e}}(n,t)}function q(n,t){return G(n,t)}function K(n){return function(n){var t={};return bn(n,function(n){t[n.key]=n.value}),t}(n)}function J(n,t){var e=function(n){var t=[],e=[];return bn(n,function(n){n.fold(function(n){t.push(n)},function(n){e.push(n)})}),{errors:t,values:e}}(n);return 0<e.errors.length?function(n){return an.error(H(n))}(e.errors):function(n,t){return 0===n.length?an.value(t):an.value(Bn(t,An.apply(undefined,n)))}(e.values,t)}function $(n,t){return function(n,t){return Tn(n,t)&&n[t]!==undefined&&null!==n[t]}(n,t)}var Q,tn,en=function(e){function n(){return r}function t(n){return n(e)}var o=nn(e),r={fold:function(n,t){return t(e)},is:function(n){return e===n},isSome:a,isNone:u,getOr:o,getOrThunk:o,getOrDie:o,getOrNull:o,getOrUndefined:o,or:n,orThunk:n,map:function(n){return en(n(e))},each:function(n){n(e)},bind:t,exists:t,forall:t,filter:function(n){return n(e)?r:s},toArray:function(){return[e]},toString:function(){return"some("+e+")"},equals:function(n){return n.is(e)},equals_:function(n,t){return n.fold(u,function(n){return t(e,n)})}};return r},on={some:en,none:t,from:function(n){return null===n||n===undefined?s:en(n)}},rn=function(e){return{is:function(n){return e===n},isValue:a,isError:u,getOr:nn(e),getOrThunk:nn(e),getOrDie:nn(e),or:function(n){return rn(e)},orThunk:function(n){return rn(e)},fold:function(n,t){return t(e)},map:function(n){return rn(n(e))},mapError:function(n){return rn(e)},each:function(n){n(e)},bind:function(n){return n(e)},exists:function(n){return n(e)},forall:function(n){return n(e)},toOption:function(){return on.some(e)}}},un=function(e){return{is:u,isValue:u,isError:a,getOr:l,getOrThunk:function(n){return n()},getOrDie:function(){return r(String(e))()},or:function(n){return n},orThunk:function(n){return n()},fold:function(n,t){return n(e)},map:function(n){return un(e)},mapError:function(n){return un(n(e))},each:Z,bind:function(n){return un(e)},exists:u,forall:a,toOption:on.none}},an={value:rn,error:un,fromOption:function(n,t){return n.fold(function(){return un(t)},rn)}},cn=p("string"),sn=p("object"),fn=p("array"),ln=p("boolean"),dn=p("function"),mn=p("number"),gn=Array.prototype.slice,pn=Array.prototype.indexOf,hn=Array.prototype.push,vn=function(n,t){return-1<y(n,t)},bn=function(n,t){for(var e=0,o=n.length;e<o;e++){t(n[e],e)}},yn=function(n){return 0===n.length?on.none():on.some(n[0])},xn=dn(Array.from)?Array.from:function(n){return gn.call(n)},wn=Object.keys,Sn=Object.hasOwnProperty,Cn=function(n,t){for(var e=wn(n),o=0,r=e.length;o<r;o++){var i=e[o];t(n[i],i)}},kn=function(n,o){var r={};return Cn(n,function(n,t){var e=o(n,t);r[e.k]=e.v}),r},On=function(n,e){var o=[];return Cn(n,function(n,t){o.push(e(n,t))}),o},Tn=function(n,t){return Sn.call(n,t)},En=function(u){if(!fn(u))throw new Error("cases must be an array");if(0===u.length)throw new Error("there must be at least one case");var a=[],e={};return bn(u,function(n,o){var t=wn(n);if(1!==t.length)throw new Error("one and only one name per case");var r=t[0],i=n[r];if(e[r]!==undefined)throw new Error("duplicate key detected:"+r);if("cata"===r)throw new Error("cannot have a case named cata (sorry)");if(!fn(i))throw new Error("case arguments must be an array");a.push(r),e[r]=function(){var n=arguments.length;if(n!==i.length)throw new Error("Wrong number of arguments to case "+r+". Expected "+i.length+" ("+i+"), got "+n);for(var e=new Array(n),t=0;t<e.length;t++)e[t]=arguments[t];return{fold:function(){if(arguments.length!==u.length)throw new Error("Wrong number of arguments to fold. Expected "+u.length+", got "+arguments.length);return arguments[o].apply(null,e)},match:function(n){var t=wn(n);if(a.length!==t.length)throw new Error("Wrong number of arguments to match. Expected: "+a.join(",")+"\nActual: "+t.join(","));if(!B(a,function(n){return vn(t,n)}))throw new Error("Not all branches were specified when using match. Specified: "+t.join(", ")+"\nRequired: "+a.join(", "));return n[r].apply(null,e)},log:function(n){v.console.log(n,{constructors:a,constructor:r,params:e})}}}}),e},Dn=Object.prototype.hasOwnProperty,Bn=z(function(n,t){return sn(n)&&sn(t)?Bn(n,t):t}),An=z(function(n,t){return t}),_n=En([{strict:[]},{defaultedThunk:["fallbackThunk"]},{asOption:[]},{asDefaultedOptionThunk:["fallbackThunk"]},{mergeWithThunk:["baseThunk"]}]),Mn=_n.strict,Fn=_n.asOption,In=_n.defaultedThunk,Rn=_n.mergeWithThunk,Vn=(En([{bothErrors:["error1","error2"]},{firstError:["error1","value2"]},{secondError:["value1","error2"]},{bothValues:["value1","value2"]}]),function(n){return U(n)}),Nn=function(n,t){return W(n,t)};(tn=Q=Q||{})[tn.Error=0]="Error",tn[tn.Value=1]="Value";function Hn(n,t,e){return n.stype===Q.Error?t(n.serror):e(n.svalue)}function Pn(n){return{stype:Q.Value,svalue:n}}function zn(n){return{stype:Q.Error,serror:n}}function Ln(n){return i(ee,H)(n)}function jn(n){return sn(n)&&100<wn(n).length?" removed due to size":JSON.stringify(n,null,2)}function Un(n,t){return ee([{path:n,getErrorInfo:t}])}function Wn(n,t,e){return W(t,e).fold(function(){return function(n,t,e){return Un(n,function(){return'Could not find valid *strict* value for "'+t+'" in '+jn(e)})}(n,e,t)},ne)}function Gn(n,t,e){var o=W(n,t).fold(function(){return e(n)},l);return ne(o)}function Xn(u,a,n,c){return n.fold(function(o,e,n,r){function i(n){var t=r.extract(u.concat([o]),c,n);return ie(t,function(n){return G(e,c(n))})}function t(n){return n.fold(function(){var n=G(e,c(on.none()));return ne(n)},function(n){var t=r.extract(u.concat([o]),c,n);return ie(t,function(n){return G(e,c(on.some(n)))})})}return n.fold(function(){return oe(Wn(u,a,o),i)},function(n){return oe(Gn(a,o,n),i)},function(){return oe(function(n,t){return ne(W(n,t))}(a,o),t)},function(n){return oe(function(t,n,e){var o=W(t,n).map(function(n){return!0===n?e(t):n});return ne(o)}(a,o,n),t)},function(n){var t=n(a),e=ie(Gn(a,o,nn({})),function(n){return Bn(t,n)});return oe(e,i)})},function(n,t){var e=t(a);return ne(G(n,c(e)))})}function Yn(o){return{extract:function(t,n,e){return re(o(e,n),function(n){return function(n,t){return Un(n,function(){return t})}(t,n)})},toString:function(){return"val"},toDsl:function(){return se.itemOf(o)}}}function qn(n){var i=de(n),u=k(n,function(t,n){return n.fold(function(n){return Bn(t,q(n,!0))},nn(t))},{});return{extract:function(n,t,e){var o=ln(e)?[]:function(t){var n=wn(t);return C(n,function(n){return $(t,n)})}(e),r=C(o,function(n){return!$(u,n)});return 0===r.length?i.extract(n,t,e):function(n,t){return Un(n,function(){return"There are unsupported fields: ["+t.join(", ")+"] specified"})}(n,r)},toString:i.toString,toDsl:i.toDsl}}function Kn(r){return{extract:function(e,o,n){var t=S(n,function(n,t){return r.extract(e.concat(["["+t+"]"]),o,n)});return ce(t)},toString:function(){return"array("+r.toString()+")"},toDsl:function(){return se.arrOf(r)}}}function Jn(i,u){return{extract:function(e,o,r){var n=wn(r),t=function(n,t){return Kn(Yn(i)).extract(n,l,t)}(e,n);return oe(t,function(n){var t=S(n,function(n){return le.field(n,n,Mn(),u)});return de(t).extract(e,o,r)})},toString:function(){return"setOf("+u.toString()+")"},toDsl:function(){return se.setOf(i,u)}}}function $n(t,e,o,n,r){return Nn(n,r).fold(function(){return function(n,t,e){return Un(n,function(){return'The chosen schema: "'+e+'" did not exist in branches: '+jn(t)})}(t,n,r)},function(n){return n.extract(t.concat(["branch: "+r]),e,o)})}function Qn(n,r){return{extract:function(t,e,o){return Nn(o,n).fold(function(){return function(n,t){return Un(n,function(){return'Choice schema did not contain choice key: "'+t+'"'})}(t,n)},function(n){return $n(t,e,o,r,n)})},toString:function(){return"chooseOn("+n+"). Possible values: "+wn(r)},toDsl:function(){return se.choiceOf(n,r)}}}function Zn(t){return Yn(function(n){return t(n).fold(ee,ne)})}function nt(t,n){return Jn(function(n){return Qt(t(n))},n)}function tt(n,t,e){return Zt(function(n,t,e,o){var r=t.extract([n],e,o);return ue(r,function(n){return{input:o,errors:n}})}(n,t,l,e))}function et(n){return n.fold(function(n){throw new Error(ye(n))},l)}function ot(n,t,e){return et(tt(n,t,e))}function rt(n,t){return Qn(n,t)}function it(n,t){return Qn(n,P(t,de))}function ut(e,o){return Yn(function(n){var t=typeof n;return e(n)?ne(n):ee("Expected type: "+o+" but got: "+t)})}function at(t){return Zn(function(n){return vn(t,n)?an.value(n):an.error('Unsupported value: "'+n+'", choose one of "'+t.join(", ")+'".')})}function ct(n){return he(n,n,Mn(),me())}function st(n,t){return he(n,n,Mn(),t)}function ft(n){return st(n,Se)}function lt(n,t){return he(n,n,Mn(),at(t))}function dt(n){return st(n,ke)}function mt(n,t){return he(n,n,Mn(),de(t))}function gt(n,t){return he(n,n,Mn(),ge(t))}function pt(n,t){return he(n,n,Mn(),Kn(t))}function ht(n){return he(n,n,Fn(),me())}function vt(n,t){return he(n,n,Fn(),t)}function bt(n){return vt(n,we)}function yt(n){return vt(n,Se)}function xt(n){return vt(n,ke)}function wt(n,t){return vt(n,de(t))}function St(n,t){return he(n,n,j(t),me())}function Ct(n,t,e){return he(n,n,j(t),e)}function kt(n,t){return Ct(n,t,we)}function Ot(n,t){return Ct(n,t,Se)}function Tt(n,t,e){return Ct(n,t,at(e))}function Et(n,t){return Ct(n,t,Ce)}function Dt(n,t){return Ct(n,t,ke)}function Bt(n,t,e){return Ct(n,t,de(e))}function At(n,t){return pe(n,t)}function _t(n,t,e){return 0!=(n.compareDocumentPosition(t)&e)}function Mt(n,t){var e=function(n,t){for(var e=0;e<n.length;e++){var o=n[e];if(o.test(t))return o}return undefined}(n,t);if(!e)return{major:0,minor:0};function o(n){return Number(t.replace(e,"$"+n))}return Me(o(1),o(2))}function Ft(n,t){return function(){return t===n}}function It(n,t){return function(){return t===n}}function Rt(n,t){var e=String(t).toLowerCase();return T(n,function(n){return n.search(e)})}function Vt(n,t){return-1!==n.indexOf(t)}function Nt(t){return function(n){return Vt(n,t)}}function Ht(){return Ke.get()}function Pt(n,t){var e=n.dom();if(e.nodeType!==Ze)return!1;var o=e;if(o.matches!==undefined)return o.matches(t);if(o.msMatchesSelector!==undefined)return o.msMatchesSelector(t);if(o.webkitMatchesSelector!==undefined)return o.webkitMatchesSelector(t);if(o.mozMatchesSelector!==undefined)return o.mozMatchesSelector(t);throw new Error("Browser lacks native selectors")}function zt(n){return n.nodeType!==Ze&&n.nodeType!==no||0===n.childElementCount}function Lt(n,t){var e=t===undefined?v.document:t.dom();return zt(e)?[]:S(e.querySelectorAll(n),Be.fromDom)}function jt(n,t){return n.dom()===t.dom()}function Ut(n,t){return jt(n.element(),t.event().target())}function Wt(n){if(!$(n,"can")&&!$(n,"abort")&&!$(n,"run"))throw new Error("EventHandler defined by: "+JSON.stringify(n,null,2)+" does not have can, abort, or run!");return ot("Extracting event.handler",qn([St("can",nn(!0)),St("abort",nn(!1)),St("run",Z)]),n)}function Gt(e){var n=function(t,o){return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return O(t,function(n,t){return n&&o(t).apply(undefined,e)},!0)}}(e,function(n){return n.can}),t=function(t,o){return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return O(t,function(n,t){return n||o(t).apply(undefined,e)},!1)}}(e,function(n){return n.abort});return Wt({can:n,abort:t,run:function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];bn(e,function(n){n.run.apply(undefined,t)})}})}function Xt(){return Ht().deviceType.isTouch()?wo.tap():bo()}function Yt(n,t){Yo(n,n.element(),t,{})}function qt(n,t,e){Yo(n,n.element(),t,e)}function Kt(n){Yt(n,To())}function Jt(n,t,e){Yo(n,t,e,{})}function $t(n,t,e,o){n.getSystem().triggerEvent(e,t,o.event())}var Qt=function(n){return n.fold(zn,Pn)},Zt=function(n){return Hn(n,an.error,an.value)},ne=Pn,te=function(n){var t=[],e=[];return bn(n,function(n){Hn(n,function(n){return e.push(n)},function(n){return t.push(n)})}),{values:t,errors:e}},ee=zn,oe=function(n,t){return n.stype===Q.Value?t(n.svalue):n},re=function(n,t){return n.stype===Q.Error?t(n.serror):n},ie=function(n,t){return n.stype===Q.Value?{stype:Q.Value,svalue:t(n.svalue)}:n},ue=function(n,t){return n.stype===Q.Error?{stype:Q.Error,serror:t(n.serror)}:n},ae=function(n,t){var e=te(n);return 0<e.errors.length?Ln(e.errors):function(n,t){return 0<n.length?ne(Bn(t,An.apply(undefined,n))):ne(t)}(e.values,t)},ce=function(n){var t=te(n);return 0<t.errors.length?Ln(t.errors):ne(t.values)},se=En([{setOf:["validator","valueType"]},{arrOf:["valueType"]},{objOf:["fields"]},{itemOf:["validator"]},{choiceOf:["key","branches"]},{thunk:["description"]},{func:["args","outputSchema"]}]),fe=En([{field:["name","presence","type"]},{state:["name"]}]),le=En([{field:["key","okey","presence","prop"]},{state:["okey","instantiator"]}]),de=function(o){return{extract:function(n,t,e){return function(t,e,n,o){var r=S(n,function(n){return Xn(t,e,n,o)});return ae(r,{})}(n,e,o,t)},toString:function(){return"obj{\n"+S(o,function(n){return n.fold(function(n,t,e,o){return n+" -> "+o.toString()},function(n,t){return"state("+n+")"})}).join("\n")+"}"},toDsl:function(){return se.objOf(S(o,function(n){return n.fold(function(n,t,e,o){return fe.field(n,e,o)},function(n,t){return fe.state(n)})}))}}},me=nn(Yn(ne)),ge=i(Kn,de),pe=le.state,he=le.field,ve=Yn(ne),be=function(o){return{extract:function(n,t,e){return o().extract(n,t,e)},toString:function(){return o().toString()},toDsl:function(){return o().toDsl()}}},ye=function(n){return"Errors: \n"+function(n){var t=10<n.length?n.slice(0,10).concat([{path:[],getErrorInfo:function(){return"... (only showing first ten failures)"}}]):n;return S(t,function(n){return"Failed path: ("+n.path.join(" > ")+")\n"+n.getErrorInfo()})}(n.errors)+"\n\nInput object: "+jn(n.input)},xe=nn(ve),we=ut(mn,"number"),Se=ut(cn,"string"),Ce=ut(ln,"boolean"),ke=ut(dn,"function"),Oe=function(t){function n(n,t){for(var e=n.next();!e.done;){if(!t(e.value))return!1;e=n.next()}return!0}if(Object(t)!==t)return!0;switch({}.toString.call(t).slice(8,-1)){case"Boolean":case"Number":case"String":case"Date":case"RegExp":case"Blob":case"FileList":case"ImageData":case"ImageBitmap":case"ArrayBuffer":return!0;case"Array":case"Object":return Object.keys(t).every(function(n){return Oe(t[n])});case"Map":return n(t.keys(),Oe)&&n(t.values(),Oe);case"Set":return n(t.keys(),Oe);default:return!1}},Te=Yn(function(n){return Oe(n)?ne(n):ee("Expected value to be acceptable for sending via postMessage")}),Ee=function(n){function t(){return e}var e=n;return{get:t,set:function(n){e=n},clone:function(){return Ee(t())}}},De=function(n){if(null===n||n===undefined)throw new Error("Node cannot be null or undefined");return{dom:nn(n)}},Be={fromHtml:function(n,t){var e=(t||v.document).createElement("div");if(e.innerHTML=n,!e.hasChildNodes()||1<e.childNodes.length)throw v.console.error("HTML does not have a single root node",n),new Error("HTML must have a single root node");return De(e.childNodes[0])},fromTag:function(n,t){var e=(t||v.document).createElement(n);return De(e)},fromText:function(n,t){var e=(t||v.document).createTextNode(n);return De(e)},fromDom:De,fromPoint:function(n,t,e){var o=n.dom();return on.from(o.elementFromPoint(t,e)).map(De)}},Ae=function(n,t){return _t(n,t,v.Node.DOCUMENT_POSITION_CONTAINED_BY)},_e=function(){return Me(0,0)},Me=function(n,t){return{major:n,minor:t}},Fe={nu:Me,detect:function(n,t){var e=String(t).toLowerCase();return 0===n.length?_e():Mt(n,e)},unknown:_e},Ie="Firefox",Re=function(n){var t=n.current;return{current:t,version:n.version,isEdge:Ft("Edge",t),isChrome:Ft("Chrome",t),isIE:Ft("IE",t),isOpera:Ft("Opera",t),isFirefox:Ft(Ie,t),isSafari:Ft("Safari",t)}},Ve={unknown:function(){return Re({current:undefined,version:Fe.unknown()})},nu:Re,edge:nn("Edge"),chrome:nn("Chrome"),ie:nn("IE"),opera:nn("Opera"),firefox:nn(Ie),safari:nn("Safari")},Ne="Windows",He="Android",Pe="Solaris",ze="FreeBSD",Le=function(n){var t=n.current;return{current:t,version:n.version,isWindows:It(Ne,t),isiOS:It("iOS",t),isAndroid:It(He,t),isOSX:It("OSX",t),isLinux:It("Linux",t),isSolaris:It(Pe,t),isFreeBSD:It(ze,t)}},je={unknown:function(){return Le({current:undefined,version:Fe.unknown()})},nu:Le,windows:nn(Ne),ios:nn("iOS"),android:nn(He),linux:nn("Linux"),osx:nn("OSX"),solaris:nn(Pe),freebsd:nn(ze)},Ue=function(n,e){return Rt(n,e).map(function(n){var t=Fe.detect(n.versionRegexes,e);return{current:n.name,version:t}})},We=function(n,e){return Rt(n,e).map(function(n){var t=Fe.detect(n.versionRegexes,e);return{current:n.name,version:t}})},Ge=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,Xe=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(n){return Vt(n,"edge/")&&Vt(n,"chrome")&&Vt(n,"safari")&&Vt(n,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,Ge],search:function(n){return Vt(n,"chrome")&&!Vt(n,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(n){return Vt(n,"msie")||Vt(n,"trident")}},{name:"Opera",versionRegexes:[Ge,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:Nt("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:Nt("firefox")},{name:"Safari",versionRegexes:[Ge,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(n){return(Vt(n,"safari")||Vt(n,"mobile/"))&&Vt(n,"applewebkit")}}],Ye=[{name:"Windows",search:Nt("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(n){return Vt(n,"iphone")||Vt(n,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:Nt("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:Nt("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:Nt("linux"),versionRegexes:[]},{name:"Solaris",search:Nt("sunos"),versionRegexes:[]},{name:"FreeBSD",search:Nt("freebsd"),versionRegexes:[]}],qe={browsers:nn(Xe),oses:nn(Ye)},Ke=Ee(function(n,t){var e=qe.browsers(),o=qe.oses(),r=Ue(e,n).fold(Ve.unknown,Ve.nu),i=We(o,n).fold(je.unknown,je.nu);return{browser:r,os:i,deviceType:function(n,t,e,o){var r=n.isiOS()&&!0===/ipad/i.test(e),i=n.isiOS()&&!r,u=n.isiOS()||n.isAndroid(),a=u||o("(pointer:coarse)"),c=r||!i&&u&&o("(min-device-width:768px)"),s=i||u&&!c,f=t.isSafari()&&n.isiOS()&&!1===/safari/i.test(e),l=!s&&!c&&!f;return{isiPad:nn(r),isiPhone:nn(i),isTablet:nn(c),isPhone:nn(s),isTouch:nn(a),isAndroid:n.isAndroid,isiOS:n.isiOS,isWebView:nn(f),isDesktop:nn(l)}}(i,r,n,t)}}(v.navigator.userAgent,function(n){return v.window.matchMedia(n).matches})),Je=(v.Node.ATTRIBUTE_NODE,v.Node.CDATA_SECTION_NODE,v.Node.COMMENT_NODE,v.Node.DOCUMENT_NODE),$e=(v.Node.DOCUMENT_TYPE_NODE,v.Node.DOCUMENT_FRAGMENT_NODE,v.Node.ELEMENT_NODE),Qe=v.Node.TEXT_NODE,Ze=(v.Node.PROCESSING_INSTRUCTION_NODE,v.Node.ENTITY_REFERENCE_NODE,v.Node.ENTITY_NODE,v.Node.NOTATION_NODE,$e),no=Je,to=Ht().browser.isIE()?function(n,t){return Ae(n.dom(),t.dom())}:function(n,t){var e=n.dom(),o=t.dom();return e!==o&&e.contains(o)},eo=nn("touchstart"),oo=nn("touchmove"),ro=nn("touchend"),io=nn("touchcancel"),uo=nn("mousedown"),ao=nn("mousemove"),co=nn("mouseout"),so=nn("mouseup"),fo=nn("mouseover"),lo=nn("focusin"),mo=nn("focusout"),go=nn("keydown"),po=nn("keyup"),ho=nn("input"),vo=nn("change"),bo=nn("click"),yo=nn("transitionend"),xo=nn("selectstart"),wo={tap:nn("alloy.tap")},So=nn("alloy.focus"),Co=nn("alloy.blur.post"),ko=nn("alloy.paste.post"),Oo=nn("alloy.receive"),To=nn("alloy.execute"),Eo=nn("alloy.focus.item"),Do=wo.tap,Bo=nn("alloy.longpress"),Ao=nn("alloy.sandbox.close"),_o=nn("alloy.typeahead.cancel"),Mo=nn("alloy.system.init"),Fo=nn("alloy.system.touchmove"),Io=nn("alloy.system.touchend"),Ro=nn("alloy.system.scroll"),Vo=nn("alloy.system.resize"),No=nn("alloy.system.attached"),Ho=nn("alloy.system.detached"),Po=nn("alloy.system.dismissRequested"),zo=nn("alloy.system.repositionRequested"),Lo=nn("alloy.focusmanager.shifted"),jo=nn("alloy.slotcontainer.visibility"),Uo=nn("alloy.change.tab"),Wo=nn("alloy.dismiss.tab"),Go=nn("alloy.highlight"),Xo=nn("alloy.dehighlight"),Yo=function(n,t,e,o){var r=N({target:t},o);n.getSystem().triggerEvent(e,t,P(r,nn))};function qo(n,t,e,o,r){return n(e,o)?on.some(e):dn(r)&&r(e)?on.none():t(e,o,r)}function Ko(n){return n.dom().nodeName.toLowerCase()}function Jo(t){return function(n){return function(n){return n.dom().nodeType}(n)===t}}"undefined"!=typeof v.window?v.window:Function("return this;")();function $o(n){var t=_i(n)?n.dom().parentNode:n.dom();return t!==undefined&&null!==t&&t.ownerDocument.body.contains(t)}function Qo(n,t,e){for(var o=n.dom(),r=dn(e)?e:nn(!1);o.parentNode;){o=o.parentNode;var i=Be.fromDom(o);if(t(i))return on.some(i);if(r(i))break}return on.none()}function Zo(n,t,e){return qo(function(n,t){return t(n)},Qo,n,t,e)}function nr(n,r){var i=function(n){for(var t=0;t<n.childNodes.length;t++){var e=Be.fromDom(n.childNodes[t]);if(r(e))return on.some(e);var o=i(n.childNodes[t]);if(o.isSome())return o}return on.none()};return i(n.dom())}function tr(n){return K(n)}function er(n,t){return{key:n,value:Wt({abort:t})}}function or(n){return{key:n,value:Wt({run:function(n,t){t.event().prevent()}})}}function rr(n,t){return{key:n,value:Wt({run:t})}}function ir(n,t,e){return{key:n,value:Wt({run:function(n){t.apply(undefined,[n].concat(e))}})}}function ur(n){return function(e){return{key:n,value:Wt({run:function(n,t){Ut(n,t)&&e(n,t)}})}}}function ar(n,t,e){return function(e,o){return rr(e,function(n,t){n.getSystem().getByUid(o).each(function(n){$t(n,n.element(),e,t)})})}(n,t.partUids[e])}function cr(n,r){return rr(n,function(t,n){var e=n.event(),o=t.getSystem().getByDom(e.target()).fold(function(){return Ii(e.target(),function(n){return t.getSystem().getByDom(n).toOption()},nn(!1)).getOr(t)},function(n){return n});r(t,o,n)})}function sr(n){return rr(n,function(n,t){t.cut()})}function fr(n,t){return ur(n)(t)}function lr(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];if(t.length!==e.length)throw new Error('Wrong number of arguments to struct. Expected "['+t.length+']", got '+e.length+" arguments");var o={};return bn(t,function(n,t){o[n]=nn(e[t])}),o}}function dr(n){return n.slice(0).sort()}function mr(t,n){if(!fn(n))throw new Error("The "+t+" fields must be an array. Was: "+n+".");bn(n,function(n){if(!cn(n))throw new Error("The value "+n+" in the "+t+" fields was not a string.")})}function gr(r,i){var u=r.concat(i);if(0===u.length)throw new Error("You must specify at least one required or optional field.");return mr("required",r),mr("optional",i),function(n){var e=dr(n);T(e,function(n,t){return t<e.length-1&&n===e[t+1]}).each(function(n){throw new Error("The field: "+n+" occurs more than once in the combined fields: ["+e.join(", ")+"].")})}(u),function(t){var e=wn(t);B(r,function(n){return vn(e,n)})||function(n,t){throw new Error("All required keys ("+dr(n).join(", ")+") were not specified. Specified keys were: "+dr(t).join(", ")+".")}(r,e);var n=C(e,function(n){return!vn(u,n)});0<n.length&&function(n){throw new Error("Unsupported keys for object: "+dr(n).join(", "))}(n);var o={};return bn(r,function(n){o[n]=nn(t[n])}),bn(i,function(n){o[n]=nn(Object.prototype.hasOwnProperty.call(t,n)?on.some(t[n]):on.none())}),o}}function pr(n){return Be.fromDom(n.dom().ownerDocument)}function hr(n){return Be.fromDom(n.dom().ownerDocument.documentElement)}function vr(n){return Be.fromDom(n.dom().ownerDocument.defaultView)}function br(n){return on.from(n.dom().parentNode).map(Be.fromDom)}function yr(n){return on.from(n.dom().offsetParent).map(Be.fromDom)}function xr(n){return S(n.dom().childNodes,Be.fromDom)}function wr(n,t){var e=n.dom().childNodes;return on.from(e[t]).map(Be.fromDom)}function Sr(t,e){br(t).each(function(n){n.dom().insertBefore(e.dom(),t.dom())})}function Cr(n,t){(function(n){return on.from(n.dom().nextSibling).map(Be.fromDom)})(n).fold(function(){br(n).each(function(n){Pi(n,t)})},function(n){Sr(n,t)})}function kr(t,e){(function(n){return wr(n,0)})(t).fold(function(){Pi(t,e)},function(n){t.dom().insertBefore(e.dom(),n.dom())})}function Or(t,n){bn(n,function(n){Pi(t,n)})}function Tr(n){n.dom().textContent="",bn(xr(n),function(n){zi(n)})}function Er(n){var t=xr(n);0<t.length&&function(t,n){bn(n,function(n){Sr(t,n)})}(n,t),zi(n)}function Dr(n){return n.dom().innerHTML}function Br(n,t){var e=pr(n).dom(),o=Be.fromDom(e.createDocumentFragment()),r=function(n,t){var e=(t||v.document).createElement("div");return e.innerHTML=n,xr(Be.fromDom(e))}(t,e);Or(o,r),Tr(n),Pi(n,o)}function Ar(n,t,e){if(!(cn(e)||ln(e)||mn(e)))throw v.console.error("Invalid call to Attr.set. Key ",t,":: Value ",e,":: Element ",n),new Error("Attribute value was not simple");n.setAttribute(t,e+"")}function _r(n,t,e){Ar(n.dom(),t,e)}function Mr(n,t){var e=n.dom().getAttribute(t);return null===e?undefined:e}function Fr(n,t){var e=n.dom();return!(!e||!e.hasAttribute)&&e.hasAttribute(t)}function Ir(n,t){n.dom().removeAttribute(t)}function Rr(n){return function(n,t){return Be.fromDom(n.dom().cloneNode(t))}(n,!1)}function Vr(n){return function(n){var t=Be.fromTag("div"),e=Be.fromDom(n.dom().cloneNode(!0));return Pi(t,e),Dr(t)}(Rr(n))}function Nr(n){return Vr(n)}function Hr(n){var t=(new Date).getTime();return n+"_"+Math.floor(1e9*Math.random())+ ++Ui+String(t)}function Pr(n){return Hr(n)}function zr(t){function n(n){return function(){throw new Error("The component must be in a context to send: "+n+"\n"+Nr(t().element())+" is not in context.")}}return{debugInfo:nn("fake"),triggerEvent:n("triggerEvent"),triggerFocus:n("triggerFocus"),triggerEscape:n("triggerEscape"),build:n("build"),addToWorld:n("addToWorld"),removeFromWorld:n("removeFromWorld"),addToGui:n("addToGui"),removeFromGui:n("removeFromGui"),getByUid:n("getByUid"),getByDom:n("getByDom"),broadcast:n("broadcast"),broadcastOn:n("broadcastOn"),broadcastEvent:n("broadcastEvent"),isConnected:nn(!1)}}function Lr(n,t){var e=n.toString(),o=e.indexOf(")")+1,r=e.indexOf("("),i=e.substring(r+1,o-1).split(/,\s*/);return n.toFunctionAnnotation=function(){return{name:t,parameters:Qi(i)}},n}function jr(n){return q(Zi,n)}function Ur(o){return function(n,t){var e=t.toString(),o=e.indexOf(")")+1,r=e.indexOf("("),i=e.substring(r+1,o-1).split(/,\s*/);return n.toFunctionAnnotation=function(){return{name:"OVERRIDE",parameters:Qi(i.slice(1))}},n}(function(n){for(var t=[],e=1;e<arguments.length;e++)t[e-1]=arguments[e];return o.apply(undefined,[n.getApis()].concat([n].concat(t)))},o)}function Wr(n,r){var i={};return Cn(n,function(n,o){Cn(n,function(n,t){var e=Y(t,[])(i);i[t]=e.concat([r(o,n)])})}),i}function Gr(n){return{classes:n.classes!==undefined?n.classes:[],attributes:n.attributes!==undefined?n.attributes:{},styles:n.styles!==undefined?n.styles:{}}}function Xr(n){return n.cHandler}function Yr(n,t){return{name:nn(n),handler:nn(t)}}function qr(n,t,e){var o=N(N({},e),function(n,t){var e={};return bn(n,function(n){e[n.name()]=n.handlers(t)}),e}(t,n));return Wr(o,Yr)}function Kr(n){var i=function(n){return dn(n)?{can:nn(!0),abort:nn(!1),run:n}:n}(n);return function(n,t){for(var e=[],o=2;o<arguments.length;o++)e[o-2]=arguments[o];var r=[n,t].concat(e);i.abort.apply(undefined,r)?t.stop():i.can.apply(undefined,r)&&i.run.apply(undefined,r)}}function Jr(n,t,e){var o=t[e];return o?function(u,a,n,c){var t=n.slice(0);try{var e=t.sort(function(n,t){var e=n[a](),o=t[a](),r=c.indexOf(e),i=c.indexOf(o);if(-1===r)throw new Error("The ordering for "+u+" does not have an entry for "+e+".\nOrder specified: "+JSON.stringify(c,null,2));if(-1===i)throw new Error("The ordering for "+u+" does not have an entry for "+o+".\nOrder specified: "+JSON.stringify(c,null,2));return r<i?-1:i<r?1:0});return an.value(e)}catch(o){return an.error([o])}}("Event: "+e,"name",n,o).map(function(n){var t=S(n,function(n){return n.handler()});return Gt(t)}):function(n,t){return an.error(["The event ("+n+') has more than one behaviour that listens to it.\nWhen this occurs, you must specify an event ordering for the behaviours in your spec (e.g. [ "listing", "toggling" ]).\nThe behaviours that can trigger it are: '+JSON.stringify(S(t,function(n){return n.name()}),null,2)])}(e,n)}function $r(n){return tt("custom.definition",de([he("dom","dom",Mn(),de([ct("tag"),St("styles",{}),St("classes",[]),St("attributes",{}),ht("value"),ht("innerHtml")])),ct("components"),ct("uid"),St("events",{}),St("apis",{}),he("eventOrder","eventOrder",function(n){return _n.mergeWithThunk(nn(n))}({"alloy.execute":["disabling","alloy.base.behaviour","toggling","typeaheadevents"],"alloy.focus":["alloy.base.behaviour","focusing","keying"],"alloy.system.init":["alloy.base.behaviour","disabling","toggling","representing"],input:["alloy.base.behaviour","representing","streaming","invalidating"],"alloy.system.detached":["alloy.base.behaviour","representing","item-events","tooltipping"],mousedown:["focusing","alloy.base.behaviour","item-type-events"],touchstart:["focusing","alloy.base.behaviour","item-type-events"],mouseover:["item-type-events","tooltipping"]}),xe()),ht("domModification")]),n)}function Qr(n,t){var e=Mr(n,t);return e===undefined||""===e?[]:e.split(" ")}function Zr(n){return n.dom().classList!==undefined}function ni(n,t){return function(n,t,e){var o=Qr(n,t).concat([e]);return _r(n,t,o.join(" ")),!0}(n,"class",t)}function ti(n,t){return function(n,t,e){var o=C(Qr(n,t),function(n){return n!==e});return 0<o.length?_r(n,t,o.join(" ")):Ir(n,t),!1}(n,"class",t)}function ei(n,t){Zr(n)?n.dom().classList.add(t):ni(n,t)}function oi(n){0===(Zr(n)?n.dom().classList:function(n){return Qr(n,"class")}(n)).length&&Ir(n,"class")}function ri(n,t){Zr(n)?n.dom().classList.remove(t):ti(n,t),oi(n)}function ii(n,t){return Zr(n)&&n.dom().classList.contains(t)}function ui(t,n){bn(n,function(n){ei(t,n)})}function ai(t,n){bn(n,function(n){ri(t,n)})}function ci(n){return n.style!==undefined&&dn(n.style.getPropertyValue)}function si(n,t,e){if(!cn(e))throw v.console.error("Invalid call to CSS.set. Property ",t,":: Value ",e,":: Element ",n),new Error("CSS value must be a string: "+e);ci(n)&&n.style.setProperty(t,e)}function fi(n,t){ci(n)&&n.style.removeProperty(t)}function li(n,t,e){var o=n.dom();si(o,t,e)}function di(n,t){var e=n.dom();Cn(t,function(n,t){si(e,t,n)})}function mi(n,t){var e=n.dom(),o=v.window.getComputedStyle(e).getPropertyValue(t),r=""!==o||$o(n)?o:ru(e,t);return null===r?undefined:r}function gi(n,t){var e=n.dom(),o=ru(e,t);return on.from(o).filter(function(n){return 0<n.length})}function pi(n,t,e){var o=Be.fromTag(n);return li(o,t,e),gi(o,t).isSome()}function hi(n,t){var e=n.dom();fi(e,t),Fr(n,"style")&&""===function(n){return n.replace(/^\s+|\s+$/g,"")}(Mr(n,"style"))&&Ir(n,"style")}function vi(n){return n.dom().offsetWidth}function bi(n){return n.dom().value}function yi(n,t){if(t===undefined)throw new Error("Value.set was undefined");n.dom().value=t}function xi(n){var t=Be.fromTag(n.tag);!function(n,t){var e=n.dom();Cn(t,function(n,t){Ar(e,t,n)})}(t,n.attributes),ui(t,n.classes),di(t,n.styles),n.innerHtml.each(function(n){return Br(t,n)});var e=n.domChildren;return Or(t,e),n.value.each(function(n){yi(t,n)}),n.uid,qi(t,n.uid),t}function wi(n,t){return function(t,n){var e=S(n,function(n){return wt(n.name(),[ct("config"),St("state",nu)])}),o=tt("component.behaviours",de(e),t.behaviours).fold(function(n){throw new Error(ye(n)+"\nComplete spec:\n"+JSON.stringify(t,null,2))},function(n){return n});return{list:n,data:P(o,function(n){var t=n.map(function(n){return{config:n.config,state:n.state.init(n.config)}});return function(){return t}})}}(n,t)}function Si(n){var t=function(n){var t=Y("behaviours",{})(n),e=C(wn(t),function(n){return t[n]!==undefined});return S(e,function(n){return t[n].me})}(n);return wi(n,t)}function Ci(n,t,e){var o=function(n){return N(N({},n.dom),{uid:n.uid,domChildren:S(n.components,function(n){return n.element()})})}(n),r=function(n){return n.domModification.fold(function(){return Gr({})},Gr)}(n),i={"alloy.base.modification":r};return function(n,t){return N(N({},n),{attributes:N(N({},n.attributes),t.attributes),styles:N(N({},n.styles),t.styles),classes:n.classes.concat(t.classes)})}(o,0<t.length?function(t,n,e,o){var r=N({},n);bn(e,function(n){r[n.name()]=n.exhibit(t,o)});function i(n){return k(n,function(n,t){return N(N({},t.modification),n)},{})}var u=Wr(r,function(n,t){return{name:n,modification:t}}),a=k(u.classes,function(n,t){return t.modification.concat(n)},[]),c=i(u.attributes),s=i(u.styles);return Gr({classes:a,attributes:c,styles:s})}(e,i,t,o):r)}function ki(n,t,e){var o={"alloy.base.behaviour":function(n){return n.events}(n)};return function(n,t,e,o){var r=qr(n,e,o);return ou(r,t)}(e,n.eventOrder,t,o).getOrDie()}function Oi(n){var t=Ji(n),e=t.events,o=c(t,["events"]),r=function(n){var t=Y("components",[])(n);return S(t,au)}(o),i=N(N({},o),{events:N(N({},ji),e),components:r});return an.value(function(e){function n(){return l}var o=Ee($i),t=et($r(e)),r=Si(e),i=function(n){return n.list}(r),u=function(n){return n.data}(r),a=Ci(t,i,u),c=xi(a),s=ki(t,i,u),f=Ee(t.components),l={getSystem:o.get,config:function(n){var t=u;return(dn(t[n.name()])?t[n.name()]:function(){throw new Error("Could not find "+n.name()+" in "+JSON.stringify(e,null,2))})()},hasConfigured:function(n){return dn(u[n.name()])},spec:nn(e),readState:function(n){return u[n]().map(function(n){return n.state.readState()}).getOr("not enabled")},getApis:function(){return t.apis},connect:function(n){o.set(n)},disconnect:function(){o.set(zr(n))},element:nn(c),syncComponents:function(){var n=xr(c),t=D(n,function(n){return o.get().getByDom(n).fold(function(){return[]},function(n){return[n]})});f.set(t)},components:f.get,events:nn(s)};return l}(i))}function Ti(n){var t=Be.fromText(n);return iu({element:t})}var Ei,Di,Bi,Ai=Jo($e),_i=Jo(Qe),Mi=L(function(){return Fi(Be.fromDom(v.document))}),Fi=function(n){var t=n.dom().body;if(null===t||t===undefined)throw new Error("Body is not available yet");return Be.fromDom(t)},Ii=function(n,t,e){return Zo(n,function(n){return t(n).isSome()},e).bind(t)},Ri=ur(No()),Vi=ur(Ho()),Ni=ur(Mo()),Hi=(Ei=To(),function(n){return rr(Ei,n)}),Pi=(lr("element","offset"),function(n,t){n.dom().appendChild(t.dom())}),zi=function(n){var t=n.dom();null!==t.parentNode&&t.parentNode.removeChild(t)},Li=tr([(Di=So(),Bi=function(n,t){var e=t.event().originator(),o=t.event().target();return!function(n,t,e){return jt(t,n.element())&&!jt(t,e)}(n,e,o)||(v.console.warn(So()+" did not get interpreted by the desired target. \nOriginator: "+Nr(e)+"\nTarget: "+Nr(o)+"\nCheck the "+So()+" event handlers"),!1)},{key:Di,value:Wt({can:Bi})})]),ji=/* */Object.freeze({events:Li}),Ui=0,Wi=nn("alloy-id-"),Gi=nn("data-alloy-id"),Xi=Wi(),Yi=Gi(),qi=function(n,t){Object.defineProperty(n.dom(),Yi,{value:t,writable:!0})},Ki=function(n){var t=Ai(n)?n.dom()[Yi]:null;return on.from(t)},Ji=l,$i=zr(),Qi=function(n){return S(n,function(n){return function(n,t){return function(n,t,e){return""===t||!(n.length<t.length)&&n.substr(e,e+t.length)===t}(n,t,n.length-t.length)}(n,"/*")?n.substring(0,n.length-"/*".length):n})},Zi=Hr("alloy-premade"),nu={init:function(){return tu({readState:function(){return"No State required"}})}},tu=function(n){return n},eu=function(n,t){return function(n,t){return{cHandler:n,purpose:nn(t)}}(d.apply(undefined,[n.handler].concat(t)),n.purpose())},ou=function(n,i){var t=On(n,function(o,r){return(1===o.length?an.value(o[0].handler()):Jr(o,i,r)).map(function(n){var t=Kr(n),e=1<o.length?C(i[r],function(t){return x(o,function(n){return n.name()===t})}).join(" > "):o[0].name();return q(r,function(n,t){return{handler:n,purpose:nn(t)}}(t,e))})});return J(t,{})},ru=function(n,t){return ci(n)?n.style.getPropertyValue(t):""},iu=function(n){var t=ot("external.component",qn([ct("element"),ht("uid")]),n),e=Ee(zr());t.uid.each(function(n){qi(t.element,n)});var o={getSystem:e.get,config:on.none,hasConfigured:nn(!1),connect:function(n){e.set(n)},disconnect:function(){e.set(zr(function(){return o}))},getApis:function(){return{}},element:nn(t.element),spec:nn(n),readState:nn("No state"),syncComponents:Z,components:nn([]),events:nn({})};return jr(o)},uu=Pr,au=function(t){return function(n){return Nn(n,Zi)}(t).fold(function(){var n=t.hasOwnProperty("uid")?t:N({uid:uu("")},t);return Oi(n).getOrDie()},function(n){return n})},cu=jr;function su(o,r){function n(n){var t=r(n);if(t<=0||null===t){var e=mi(n,o);return parseFloat(e)||0}return t}function i(r,n){return O(n,function(n,t){var e=mi(r,t),o=e===undefined?0:parseInt(e,10);return isNaN(o)?n:n+o},0)}return{set:function(n,t){if(!mn(t)&&!t.match(/^[0-9]+$/))throw new Error(o+".set accepts only positive integer values. Value was "+t);var e=n.dom();ci(e)&&(e.style[o]=t+"px")},get:n,getOuter:n,aggregate:i,max:function(n,t,e){var o=i(n,e);return o<t?t-o:0}}}function fu(n){return Fu.get(n)}function lu(n){return Fu.getOuter(n)}function du(n,t){return n!==undefined?n:t!==undefined?t:0}function mu(n){var t=n.dom().ownerDocument,e=t.body,o=t.defaultView,r=t.documentElement;if(e===n.dom())return Ru(e.offsetLeft,e.offsetTop);var i=du(o.pageYOffset,r.scrollTop),u=du(o.pageXOffset,r.scrollLeft),a=du(r.clientTop,e.clientTop),c=du(r.clientLeft,e.clientLeft);return Vu(n).translate(u-c,i-a)}function gu(n){return Nu.get(n)}function pu(n){return Nu.getOuter(n)}function hu(n){var t=n!==undefined?n.dom():v.document,e=t.body.scrollLeft||t.documentElement.scrollLeft,o=t.body.scrollTop||t.documentElement.scrollTop;return Ru(e,o)}function vu(n,t,e,o){return{x:nn(n),y:nn(t),width:nn(e),height:nn(o),right:nn(n+e),bottom:nn(t+o)}}function bu(n){var t=n===undefined?v.window:n,e=t.document,o=hu(Be.fromDom(e)),r=t.visualViewport;if(r!==undefined)return vu(Math.max(r.pageLeft,o.left()),Math.max(r.pageTop,o.top()),r.width,r.height);var i=e.documentElement,u=i.clientWidth,a=i.clientHeight;return vu(o.left(),o.top(),u,a)}function yu(o){var n=Be.fromDom(v.document),r=hu(n);return function(n,t){var e=t.owner(n),o=Hu(t,e);return on.some(o)}(o,Pu).fold(d(mu,o),function(n){var t=Vu(o),e=k(n,function(n,t){var e=Vu(t);return{left:n.left+e.left(),top:n.top+e.top()}},{left:0,top:0});return Ru(e.left+t.left()+r.left(),e.top+t.top()+r.top())})}function xu(n,t,e,o){return{x:nn(n),y:nn(t),width:nn(e),height:nn(o),right:nn(n+e),bottom:nn(t+o)}}function wu(n){var t=mu(n),e=pu(n),o=lu(n);return xu(t.left(),t.top(),e,o)}function Su(n){var t=yu(n),e=pu(n),o=lu(n);return xu(t.left(),t.top(),e,o)}function Cu(){return bu(v.window)}function ku(n,t,e){return Qo(n,function(n){return Pt(n,t)},e)}function Ou(n,t){return function(n,t){var e=t===undefined?v.document:t.dom();return zt(e)?on.none():on.from(e.querySelector(n)).map(Be.fromDom)}(t,n)}function Tu(n,t,e){return qo(Pt,ku,n,t,e)}function Eu(){var t=Hr("aria-owns");return{id:nn(t),link:function(n){_r(n,"aria-owns",t)},unlink:function(n){Ir(n,"aria-owns")}}}function Du(t,n){return function(n){return Zo(n,function(n){if(!Ai(n))return!1;var t=Mr(n,"id");return t!==undefined&&-1<t.indexOf("aria-owns")}).bind(function(n){var t=Mr(n,"id"),e=pr(n);return Ou(e,'[aria-owns="'+t+'"]')})}(n).exists(function(n){return ju(t,n)})}function Bu(n){for(var t=[],e=function(n){t.push(n)},o=0;o<n.length;o++)n[o].each(e);return t}function Au(n,t){for(var e=0;e<n.length;e++){var o=t(n[e],e);if(o.isSome())return o}return on.none()}var _u,Mu,Fu=su("height",function(n){var t=n.dom();return $o(n)?t.getBoundingClientRect().height:t.offsetHeight}),Iu=function(e,o){return{left:nn(e),top:nn(o),translate:function(n,t){return Iu(e+n,o+t)}}},Ru=Iu,Vu=function(n){var t=n.dom(),e=t.ownerDocument.body;return e===t?Ru(e.offsetLeft,e.offsetTop):$o(n)?function(n){var t=n.getBoundingClientRect();return Ru(t.left,t.top)}(t):Ru(0,0)},Nu=su("width",function(n){return n.dom().offsetWidth}),Hu=(Ht().browser.isSafari(),function(o,n){return o.view(n).fold(nn([]),function(n){var t=o.owner(n),e=Hu(o,t);return[n].concat(e)})}),Pu=/* */Object.freeze({view:function(n){return(n.dom()===v.document?on.none():on.from(n.dom().defaultView.frameElement)).map(Be.fromDom)},owner:function(n){return pr(n)}}),zu=lr("point","width","height"),Lu=lr("x","y","width","height"),ju=function(t,n){return function(n,t,e){return Zo(n,t,e).isSome()}(n,function(n){return jt(n,t.element())},nn(!1))||Du(t,n)},Uu="unknown";(Mu=_u=_u||{})[Mu.STOP=0]="STOP",Mu[Mu.NORMAL=1]="NORMAL",Mu[Mu.LOGGING=2]="LOGGING";function Wu(t,n,e){switch(Nn(za.get(),t).orThunk(function(){var n=wn(za.get());return Au(n,function(n){return-1<t.indexOf(n)?on.some(za.get()[n]):on.none()})}).getOr(_u.NORMAL)){case _u.NORMAL:return e(ja());case _u.LOGGING:var o=function(t,e){var o=[],r=(new Date).getTime();return{logEventCut:function(n,t,e){o.push({outcome:"cut",target:t,purpose:e})},logEventStopped:function(n,t,e){o.push({outcome:"stopped",target:t,purpose:e})},logNoParent:function(n,t,e){o.push({outcome:"no-parent",target:t,purpose:e})},logEventNoHandlers:function(n,t){o.push({outcome:"no-handlers-left",target:t})},logEventResponse:function(n,t,e){o.push({outcome:"response",purpose:e,target:t})},write:function(){var n=(new Date).getTime();vn(["mousemove","mouseover","mouseout",Mo()],t)||v.console.log(t,{event:t,time:n-r,target:e.dom(),sequence:S(o,function(n){return vn(["cut","stopped","response"],n.outcome)?"{"+n.purpose+"} "+n.outcome+" at ("+Nr(n.target)+")":n.outcome})})}}}(t,n),r=e(o);return o.write(),r;case _u.STOP:return!0}}function Gu(n,t,e){return Wu(n,t,e)}function Xu(){return mt("markers",[ct("backgroundMenu")].concat(Ua()).concat(Wa()))}function Yu(n){return mt("markers",S(n,ct))}function qu(n,t,e){return function(){var n=new Error;if(n.stack===undefined)return;var t=n.stack.split("\n");T(t,function(t){return 0<t.indexOf("alloy")&&!x(La,function(n){return-1<t.indexOf(n)})}).getOr(Uu)}(),he(t,t,e,Zn(function(e){return an.value(function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];return e.apply(undefined,n)})}))}function Ku(n){return qu(0,n,j(Z))}function Ju(n){return qu(0,n,j(on.none))}function $u(n){return qu(0,n,Mn())}function Qu(n){return qu(0,n,Mn())}function Zu(n,t){return At(n,nn(t))}function na(n){return At(n,l)}function ta(n){return n.x()}function ea(n,t){return n.x()+n.width()/2-t.width()/2}function oa(n,t){return n.x()+n.width()-t.width()}function ra(n,t){return n.y()-t.height()}function ia(n){return n.y()+n.height()}function ua(n,t){return n.y()+n.height()/2-t.height()/2}function aa(n,t,e){return qa(ta(n),ia(n),e.southeast(),Ja(),"layout-se")}function ca(n,t,e){return qa(oa(n,t),ia(n),e.southwest(),$a(),"layout-sw")}function sa(n,t,e){return qa(ta(n),ra(n,t),e.northeast(),Qa(),"layout-ne")}function fa(n,t,e){return qa(oa(n,t),ra(n,t),e.northwest(),Za(),"layout-nw")}function la(n,t,e){return qa(function(n){return n.x()+n.width()}(n),ua(n,t),e.east(),ec(),"layout-e")}function da(n,t,e){return qa(function(n,t){return n.x()-t.width()}(n,t),ua(n,t),e.west(),oc(),"layout-w")}function ma(){return[aa,ca,sa,fa,ic,rc]}function ga(){return[ca,aa,fa,sa,ic,rc]}function pa(e,o,r){return Ni(function(n,t){r(n,e,o)})}function ha(n,t,e,o,r,i){var u=qn(n),a=wt(t,[function(n,t){return vt(n,qn(t))}("config",n)]);return uc(u,a,t,e,o,r,i)}function va(r,i,u){return function(n,t,e){var o=e.toString(),r=o.indexOf(")")+1,i=o.indexOf("("),u=o.substring(i+1,r-1).split(/,\s*/);return n.toFunctionAnnotation=function(){return{name:t,parameters:Qi(u.slice(0,1).concat(u.slice(3)))}},n}(function(e){for(var n=[],t=1;t<arguments.length;t++)n[t-1]=arguments[t];var o=[e].concat(n);return e.config({name:nn(r)}).fold(function(){throw new Error("We could not find any behaviour configuration for: "+r+". Using API: "+u)},function(n){var t=Array.prototype.slice.call(o,1);return i.apply(undefined,[e,n.config,n.state].concat(t))})},u,i)}function ba(n){return{key:n,value:undefined}}function ya(n){return K(n)}function xa(n){var t=ot("Creating behaviour: "+n.name,ac,n);return ha(t.fields,t.name,t.active,t.apis,t.extra,t.state)}function wa(n){var t=ot("Creating behaviour: "+n.name,cc,n);return function(n,t,e,o,r,i){var u=n,a=wt(t,[vt("config",n)]);return uc(u,a,t,e,o,r,i)}(it(t.branchKey,t.branches),t.name,t.active,t.apis,t.extra,t.state)}function Sa(n){n.dom().focus()}function Ca(n){var t=n!==undefined?n.dom():v.document;return on.from(t.activeElement).map(Be.fromDom)}function ka(t){return Ca(pr(t)).filter(function(n){return t.dom().contains(n.dom())})}function Oa(n,e){var o=pr(e),t=Ca(o).bind(function(t){function n(n){return jt(t,n)}return n(e)?on.some(e):nr(e,n)}),r=n(e);return t.each(function(t){Ca(o).filter(function(n){return jt(n,t)}).fold(function(){Sa(t)},Z)}),r}function Ta(n,t,e){function r(n){return Nn(e,n).getOr([])}function o(n,t,e){var o=_(gc,e);return{offset:function(){return Ru(n,t)},classesOn:function(){return D(e,r)},classesOff:function(){return D(o,r)}}}return{southeast:function(){return o(-n,t,["top","alignLeft"])},southwest:function(){return o(n,t,["top","alignRight"])},south:function(){return o(-n/2,t,["top","alignCentre"])},northeast:function(){return o(-n,-t,["bottom","alignLeft"])},northwest:function(){return o(n,-t,["bottom","alignRight"])},north:function(){return o(-n/2,-t,["bottom","alignCentre"])},east:function(){return o(n,-t/2,["valignCentre","left"])},west:function(){return o(-n,-t/2,["valignCentre","right"])},innerNorthwest:function(){return o(-n,t,["top","alignRight"])},innerNortheast:function(){return o(n,t,["top","alignLeft"])},innerNorth:function(){return o(-n/2,t,["top","alignCentre"])},innerSouthwest:function(){return o(-n,-t,["bottom","alignRight"])},innerSoutheast:function(){return o(n,-t,["bottom","alignLeft"])},innerSouth:function(){return o(-n/2,-t,["bottom","alignCentre"])},innerWest:function(){return o(n,-t/2,["valignCentre","right"])},innerEast:function(){return o(-n,-t/2,["valignCentre","left"])}}}function Ea(){return Ta(0,0,{})}function Da(n,t,e,o,r,i){var u=t.x()-e,a=t.y()-o,c=r-(u+t.width()),s=i-(a+t.height()),f=on.some(u),l=on.some(a),d=on.some(c),m=on.some(s),g=on.none();return function(n,t,e,o,r,i,u,a,c){return n.fold(t,e,o,r,i,u,a,c)}(t.direction(),function(){return hc(n,f,l,g,g)},function(){return hc(n,g,l,d,g)},function(){return hc(n,f,g,g,m)},function(){return hc(n,g,g,d,m)},function(){return hc(n,f,l,g,g)},function(){return hc(n,f,g,g,m)},function(){return hc(n,f,l,g,g)},function(){return hc(n,g,l,d,g)})}function Ba(n,t){var e=d(yu,t),o=n.fold(e,e,function(){var n=hu();return yu(t).translate(-n.left(),-n.top())}),r=pu(t),i=lu(t);return xu(o.left(),o.top(),r,i)}function Aa(n){return n}function _a(t,e){return function(n){return"rtl"===wc(n)?e:t}}function Ma(){return wt("layouts",[ct("onLtr"),ct("onRtl")])}function Fa(t,n,e,o){var r=n.layouts.map(function(n){return n.onLtr(t)}).getOr(e),i=n.layouts.map(function(n){return n.onRtl(t)}).getOr(o);return _a(r,i)(t)}function Ia(n,t,e){var o=n.document.createRange();return function(e,n){n.fold(function(n){e.setStartBefore(n.dom())},function(n,t){e.setStart(n.dom(),t)},function(n){e.setStartAfter(n.dom())})}(o,t),function(e,n){n.fold(function(n){e.setEndBefore(n.dom())},function(n,t){e.setEnd(n.dom(),t)},function(n){e.setEndAfter(n.dom())})}(o,e),o}function Ra(n,t,e,o,r){var i=n.document.createRange();return i.setStart(t.dom(),e),i.setEnd(o.dom(),r),i}function Va(n){return{left:nn(n.left),top:nn(n.top),right:nn(n.right),bottom:nn(n.bottom),width:nn(n.width),height:nn(n.height)}}function Na(n,t,e){return t(Be.fromDom(e.startContainer),e.startOffset,Be.fromDom(e.endContainer),e.endOffset)}function Ha(n,t){return function(n,t){var e=t.ltr();return e.collapsed?t.rtl().filter(function(n){return!1===n.collapsed}).map(function(n){return Bc.rtl(Be.fromDom(n.endContainer),n.endOffset,Be.fromDom(n.startContainer),n.startOffset)}).getOrThunk(function(){return Na(0,Bc.ltr,e)}):Na(0,Bc.ltr,e)}(0,function(r,n){return n.match({domRange:function(n){return{ltr:nn(n),rtl:on.none}},relative:function(n,t){return{ltr:L(function(){return Ia(r,n,t)}),rtl:L(function(){return on.some(Ia(r,t,n))})}},exact:function(n,t,e,o){return{ltr:L(function(){return Ra(r,n,t,e,o)}),rtl:L(function(){return on.some(Ra(r,e,o,n,t))})}}})}(n,t))}function Pa(n,t,e){return t>=n.left&&t<=n.right&&e>=n.top&&e<=n.bottom}var za=Ee({}),La=["alloy/data/Fields","alloy/debugging/Debugging"],ja=nn({logEventCut:Z,logEventStopped:Z,logNoParent:Z,logEventNoHandlers:Z,logEventResponse:Z,write:Z}),Ua=nn([ct("menu"),ct("selectedMenu")]),Wa=nn([ct("item"),ct("selectedItem")]),Ga=(nn(de(Wa().concat(Ua()))),nn(de(Wa()))),Xa=mt("initSize",[ct("numColumns"),ct("numRows")]),Ya=nn(Xa),qa=lr("x","y","bubble","direction","label"),Ka=En([{southeast:[]},{southwest:[]},{northeast:[]},{northwest:[]},{south:[]},{north:[]},{east:[]},{west:[]}]),Ja=Ka.southeast,$a=Ka.southwest,Qa=Ka.northeast,Za=Ka.northwest,nc=Ka.south,tc=Ka.north,ec=Ka.east,oc=Ka.west,rc=function(n,t,e){return qa(ea(n,t),ra(n,t),e.north(),tc(),"layout-n")},ic=function(n,t,e){return qa(ea(n,t),ia(n),e.south(),nc(),"layout-s")},uc=function(e,n,o,r,t,i,u){function a(n){return $(n,o)?n[o]():on.none()}var c=P(t,function(n,t){return va(o,n,t)}),s=P(i,function(n,t){return Lr(n,t)}),f=N(N(N({},s),c),{revoke:d(ba,o),config:function(n){var t=ot(o+"-config",e,n);return{key:o,value:{config:t,me:f,configAsRaw:L(function(){return ot(o+"-config",e,n)}),initialConfig:n,state:u}}},schema:function(){return n},exhibit:function(n,e){return a(n).bind(function(t){return Nn(r,"exhibit").map(function(n){return n(e,t.config,t.state)})}).getOr(Gr({}))},name:function(){return o},handlers:function(n){return a(n).map(function(n){return Y("events",function(n,t){return{}})(r)(n.config,n.state)}).getOr({})}});return f},ac=qn([ct("fields"),ct("name"),St("active",{}),St("apis",{}),St("state",nu),St("extra",{})]),cc=qn([ct("branchKey"),ct("branches"),ct("name"),St("active",{}),St("apis",{}),St("state",nu),St("extra",{})]),sc=nn(undefined),fc=/* */Object.freeze({events:function(t){return tr([rr(Oo(),function(r,i){var u=t.channels,n=function(n,t){return t.universal()?n:C(n,function(n){return vn(t.channels(),n)})}(wn(u),i);bn(n,function(n){var t=u[n],e=t.schema,o=ot("channel["+n+"] data\nReceiver: "+Nr(r.element()),e,i.data());t.onReceive(r,o)})})])}}),lc=[st("channels",nt(an.value,qn([$u("onReceive"),St("schema",xe())])))],dc=xa({fields:lc,name:"receiving",active:fc}),mc=/* */Object.freeze({exhibit:function(n,t){return Gr({classes:[],styles:t.useFixed()?{}:{position:"relative"}})}}),gc=["valignCentre","alignLeft","alignRight","alignCentre","top","bottom","left","right"],pc=gr(["x","y","width","height","maxHeight","maxWidth","direction","classes","label","candidateYforTest"],[]),hc=lr("position","left","top","right","bottom"),vc=En([{none:[]},{relative:["x","y","width","height"]},{fixed:["x","y","width","height"]}]),bc=function(n,t,e){var o=Ru(t,e);return n.fold(nn(o),nn(o),function(){var n=hu();return o.translate(-n.left(),-n.top())})},yc=vc.relative,xc=vc.fixed,wc=function(n){return"rtl"===mi(n,"direction")?"rtl":"ltr"},Sc=[ct("hotspot"),ht("bubble"),St("overrides",{}),Ma(),Zu("placement",function(n,t,e){var o=t.hotspot,r=Ba(e,o.element()),i=Fa(n.element(),t,ma(),ga());return on.some(Aa({anchorBox:r,bubble:t.bubble.getOr(Ea()),overrides:t.overrides,layouts:i,placer:on.none()}))})],Cc=[ct("x"),ct("y"),St("height",0),St("width",0),St("bubble",Ea()),St("overrides",{}),Ma(),Zu("placement",function(n,t,e){var o=bc(e,t.x,t.y),r=xu(o.left(),o.top(),t.width,t.height),i=Fa(n.element(),t,[aa,ca,sa,fa,ic,rc,la,da],[ca,aa,fa,sa,ic,rc,la,da]);return on.some(Aa({anchorBox:r,bubble:t.bubble,overrides:t.overrides,layouts:i,placer:on.none()}))})],kc={create:lr("start","soffset","finish","foffset")},Oc=En([{before:["element"]},{on:["element","offset"]},{after:["element"]}]),Tc=(Oc.before,Oc.on,Oc.after,function(n){return n.fold(l,l,l)}),Ec=En([{domRange:["rng"]},{relative:["startSitu","finishSitu"]},{exact:["start","soffset","finish","foffset"]}]),Dc={domRange:Ec.domRange,relative:Ec.relative,exact:Ec.exact,exactFromRange:function(n){return Ec.exact(n.start(),n.soffset(),n.finish(),n.foffset())},getWin:function(n){var t=function(n){return n.match({domRange:function(n){return Be.fromDom(n.startContainer)},relative:function(n,t){return Tc(n)},exact:function(n,t,e,o){return n}})}(n);return vr(t)},range:kc.create},Bc=En([{ltr:["start","soffset","finish","foffset"]},{rtl:["start","soffset","finish","foffset"]}]);function Ac(n){return uf.get(n)}function _c(n){return uf.getOption(n)}function Mc(e,o,n,t,r){function i(n){var t=e.dom().createRange();return t.setStart(o.dom(),n),t.collapse(!0),t}var u=Ac(o).length,a=function(n,t,e,o,r){if(0===r)return 0;if(t===o)return r-1;for(var i=o,u=1;u<r;u++){var a=n(u),c=Math.abs(t-a.left);if(e<=a.bottom){if(e<a.top||i<c)return u-1;i=c}}return 0}(function(n){return i(n).getBoundingClientRect()},n,t,r.right,u);return i(a)}function Fc(n){return function(n){return _c(n).filter(function(n){return 0!==n.trim().length||-1<n.indexOf("\xa0")}).isSome()}(n)||vn(cf,Ko(n))}function Ic(n){return nr(n,Fc)}function Rc(n){return sf(n,Fc)}function Vc(n,t){return t-n.left<n.right-t}function Nc(n,t,e){var o=n.dom().createRange();return o.selectNode(t.dom()),o.collapse(e),o}function Hc(t,n,e){var o=t.dom().createRange();o.selectNode(n.dom());var r=o.getBoundingClientRect(),i=Vc(r,e);return(!0===i?Ic:Rc)(n).map(function(n){return Nc(t,n,i)})}function Pc(n,t,e){var o=t.dom().getBoundingClientRect(),r=Vc(o,e);return on.some(Nc(n,t,r))}function zc(n,t,e,o){var r=n.dom().createRange();r.selectNode(t.dom());var i=r.getBoundingClientRect();return function(n,t,e,o){var r=n.dom().createRange();r.selectNode(t.dom());var i=r.getBoundingClientRect(),u=Math.max(i.left,Math.min(i.right,e)),a=Math.max(i.top,Math.min(i.bottom,o));return af(n,t,u,a)}(n,t,Math.max(i.left,Math.min(i.right,e)),Math.max(i.top,Math.min(i.bottom,o)))}function Lc(n,t){return Lt(t,n)}function jc(n,t,e,o){var r=function(n,t,e,o){var r=pr(n).dom().createRange();return r.setStart(n.dom(),t),r.setEnd(e.dom(),o),r}(n,t,e,o),i=jt(n,e)&&t===o;return r.collapsed&&!i}function Uc(n){var t=Be.fromDom(n.anchorNode),e=Be.fromDom(n.focusNode);return jc(t,n.anchorOffset,e,n.focusOffset)?on.some(kc.create(t,n.anchorOffset,e,n.focusOffset)):function(n){if(0<n.rangeCount){var t=n.getRangeAt(0),e=n.getRangeAt(n.rangeCount-1);return on.some(kc.create(Be.fromDom(t.startContainer),t.startOffset,Be.fromDom(e.endContainer),e.endOffset))}return on.none()}(n)}function Wc(n,t){return function(n){var t=n.getClientRects(),e=0<t.length?t[0]:n.getBoundingClientRect();return 0<e.width||0<e.height?on.some(e).map(Va):on.none()}(function(i,n){return Ha(i,n).match({ltr:function(n,t,e,o){var r=i.document.createRange();return r.setStart(n.dom(),t),r.setEnd(e.dom(),o),r},rtl:function(n,t,e,o){var r=i.document.createRange();return r.setStart(e.dom(),o),r.setEnd(n.dom(),t),r}})}(n,t))}function Gc(n){return n.fold(function(n){return n},function(n,t,e){return n.translate(-t,-e)})}function Xc(n){return n.fold(function(n){return n},function(n,t,e){return n})}function Yc(n){return O(n,function(n,t){return n.translate(t.left(),t.top())},Ru(0,0))}function qc(n){var t=S(n,Xc);return Yc(t)}function Kc(n,t,e){var o=pr(n.element()),r=hu(o),i=function(o,n,t){var e=vr(t.root).dom();return on.from(e.frameElement).map(Be.fromDom).filter(function(n){var t=pr(n),e=pr(o.element());return jt(t,e)}).map(mu)}(n,0,e).getOr(r);return mf(i,r.left(),r.top())}function Jc(n,t){return _i(n)?hf(n,t):function(n,t){var e=xr(n);if(0===e.length)return ff(n,t);if(t<e.length)return ff(e[t],0);var o=e[e.length-1],r=_i(o)?Ac(o).length:xr(o).length;return ff(o,r)}(n,t)}function $c(n,t){return t.getSelection.getOrThunk(function(){return function(){return function(n){return on.from(n.getSelection()).filter(function(n){return 0<n.rangeCount}).bind(Uc)}(n)}})().map(function(n){var t=Jc(n.start(),n.soffset()),e=Jc(n.finish(),n.foffset());return Dc.range(t.element(),t.offset(),e.element(),e.offset())})}function Qc(n){return n.x()+n.width()}function Zc(n,t){return n.x()-t.width()}function ns(n,t){return n.y()-t.height()+n.height()}function ts(n){return n.y()}function es(n,t,e){return qa(Qc(n),ts(n),e.southeast(),Ja(),"link-layout-se")}function os(n,t,e){return qa(Zc(n,t),ts(n),e.southwest(),$a(),"link-layout-sw")}function rs(n,t,e){return qa(Qc(n),ns(n,t),e.northeast(),Qa(),"link-layout-ne")}function is(n,t,e){return qa(Zc(n,t),ns(n,t),e.northwest(),Za(),"link-layout-nw")}function us(n,t,e,o){var r=n+t;return o<r?e:r<e?o:r}function as(n,t,e){return n<=t?t:e<=n?e:n}function cs(n,t,e,o){var r=n.x(),i=n.y(),u=n.bubble().offset().left(),a=n.bubble().offset().top(),c=o.y(),s=o.bottom(),f=o.x(),l=o.right(),d=i+a,m=function(n,t,e,o,r){var i=r.x(),u=r.y(),a=r.width(),c=r.height(),s=i<=n,f=u<=t,l=s&&f,d=n+e<=i+a&&t+o<=u+c,m=Math.abs(Math.min(e,s?i+a-n:i-(n+e))),g=Math.abs(Math.min(o,f?u+c-t:u-(t+o)));return{originInBounds:l,sizeInBounds:d,limitX:as(n,r.x(),r.right()),limitY:as(t,r.y(),r.bottom()),deltaW:m,deltaH:g}}(r+u,d,t,e,o),g=m.originInBounds,p=m.sizeInBounds,h=m.limitX,v=m.limitY,b=m.deltaW,y=m.deltaH,x=nn(v+y-c),w=nn(s-v),S=function(n,t,e,o){return n.fold(t,t,o,o,t,o,e,e)}(n.direction(),w,w,x),C=nn(h+b-f),k=nn(l-h),O=function(n,t,e,o){return n.fold(t,o,t,o,e,e,t,o)}(n.direction(),k,k,C),T=pc({x:h,y:v,width:b,height:y,maxHeight:S,maxWidth:O,direction:n.direction(),classes:{on:n.bubble().classesOn(),off:n.bubble().classesOff()},label:n.label(),candidateYforTest:d});return g&&p?Sf.fit(T):Sf.nofit(T,b,y)}function ss(n,t,e,o){hi(t,"max-height"),hi(t,"max-width");var r=function(n){return{width:nn(pu(n)),height:nn(lu(n))}}(t);return function(n,e,u,a,c){function o(n,o,r,i){var t=n(e,u,a);return cs(t,s,f,c).fold(Sf.fit,function(n,t,e){return i<e||r<t?Sf.nofit(n,t,e):Sf.nofit(o,r,i)})}var s=u.width(),f=u.height();return O(n,function(n,t){var e=d(o,t);return n.fold(Sf.fit,e)},Sf.nofit(pc({x:e.x(),y:e.y(),width:u.width(),height:u.height(),maxHeight:u.height(),maxWidth:u.width(),direction:Ja(),classes:{on:[],off:[]},label:"none",candidateYforTest:e.y()}),-1,-1)).fold(l,l)}(o.preference(),n,r,e,o.bounds())}function fs(n,t,e){function o(n){return n+"px"}var r=function(n,r){return n.fold(function(){return hc("absolute",on.some(r.x()),on.some(r.y()),on.none(),on.none())},function(n,t,e,o){return Da("absolute",r,n,t,e,o)},function(n,t,e,o){return Da("fixed",r,n,t,e,o)})}(e.origin(),t);!function(n,t){var e=n.dom();Cn(t,function(n,t){n.fold(function(){fi(e,t)},function(n){si(e,t,n)})})}(n,{position:on.some(r.position()),left:r.left().map(o),top:r.top().map(o),right:r.right().map(o),bottom:r.bottom().map(o)})}function ls(n,t){!function(n,t){var e=Fu.max(n,t,["margin-top","border-top-width","padding-top","padding-bottom","border-bottom-width","margin-bottom"]);li(n,"max-height",e+"px")}(n,Math.floor(t))}function ds(n,t,e){return n[t]===undefined?e:n[t]}function ms(n,t,e,o,r,i){var u=ds(i,"maxHeightFunction",Cf()),a=ds(i,"maxWidthFunction",Z),c=n.anchorBox(),s=n.origin(),f=Of({bounds:function(o,n){return n.fold(function(){return o.fold(Cu,Cu,xu)},function(e){return o.fold(e,e,function(){var n=e(),t=bc(o,n.x(),n.y());return xu(t.left(),t.top(),n.width(),n.height())})})}(s,r),origin:s,preference:o,maxHeightFunction:u,maxWidthFunction:a});Tf(c,t,e,f)}function gs(n,t,e,o,r){var i=function(n,t){return wf(n,t)}(e.anchorBox,t);ms(i,r.element(),e.bubble,e.layouts,o,e.overrides)}function ps(n,t){Pi(n.element(),t.element())}function hs(t,n){var e=t.components();!function(n){bn(n.components(),function(n){return zi(n.element())}),Tr(n.element()),n.syncComponents()}(t);var o=_(e,n);bn(o,function(n){Mf(n),t.getSystem().removeFromWorld(n)}),bn(n,function(n){n.getSystem().isConnected()?ps(t,n):(t.getSystem().addToWorld(n),ps(t,n),$o(t.element())&&Ff(n)),t.syncComponents()})}function vs(n,t){If(n,t,Pi)}function bs(n){Mf(n),zi(n.element()),n.getSystem().removeFromWorld(n)}function ys(t){var n=br(t.element()).bind(function(n){return t.getSystem().getByDom(n).toOption()});bs(t),n.each(function(n){n.syncComponents()})}function xs(n){var t=n.components();bn(t,bs),Tr(n.element()),n.syncComponents()}function ws(n,t){Rf(n,t,Pi)}function Ss(t){var n=xr(t.element());bn(n,function(n){t.getByDom(n).each(Mf)}),zi(t.element())}function Cs(t,n,e,o){e.get().each(function(n){xs(t)});var r=n.getAttachPoint(t);vs(r,t);var i=t.getSystem().build(o);return vs(t,i),e.set(i),i}function ks(n,t,e,o){var r=Cs(n,t,e,o);return t.onOpen(n,r),r}function Os(t,e,o){o.get().each(function(n){xs(t),ys(t),e.onClose(t,n),o.clear()})}function Ts(n,t,e){return e.isOpen()}function Es(n){var t,e=ot("Dismissal",Gf,n);return(t={})[jf()]={schema:qn([ct("target")]),onReceive:function(t,n){Lf.isOpen(t)&&(Lf.isPartOf(t,n.target)||e.isExtraPart(t,n.target)||e.fireEventInstead.fold(function(){return Lf.close(t)},function(n){return Yt(t,n.event)}))}},t}function Ds(n){var t,e=ot("Reposition",Xf,n);return(t={})[Uf()]={onReceive:function(t){Lf.isOpen(t)&&e.fireEventInstead.fold(function(){return e.doReposition(t)},function(n){return Yt(t,n.event)})}},t}function Bs(n,t,e){t.store.manager.onLoad(n,t,e)}function As(n,t,e){t.store.manager.onUnload(n,t,e)}function _s(){var n=Ee(null);return tu({set:n.set,get:n.get,isNotSet:function(){return null===n.get()},clear:function(){n.set(null)},readState:function(){return{mode:"memory",value:n.get()}}})}function Ms(){var i=Ee({}),u=Ee({});return tu({readState:function(){return{mode:"dataset",dataByValue:i.get(),dataByText:u.get()}},lookup:function(n){return Nn(i.get(),n).orThunk(function(){return Nn(u.get(),n)})},update:function(n){var t=i.get(),e=u.get(),o={},r={};bn(n,function(t){o[t.value]=t,Nn(t,"meta").each(function(n){Nn(n,"text").each(function(n){r[n]=t})})}),i.set(N(N({},t),o)),u.set(N(N({},e),r))},clear:function(){i.set({}),u.set({})}})}function Fs(n,t,e,o){var r=t.store;e.update([o]),r.setValue(n,o),t.onSetValue(n,o)}function Is(t,n){return Bt(t,{},S(n,function(n){return function(t,e){return he(t,t,Fn(),Yn(function(n){return ee("The field: "+t+" is forbidden. "+e)}))}(n.name(),"Cannot configure "+n.name()+" for "+t)}).concat([At("dump",l)]))}function Rs(n){return n.dump}function Vs(n,t){return N(N({},n.dump),ya(t))}function Ns(n,t,e,o){return e.uiType===ol?function(n,t,e,o){return n.exists(function(n){return n!==e.owner})?rl.single(!0,nn(e)):Nn(o,e.name).fold(function(){throw new Error("Unknown placeholder component: "+e.name+"\nKnown: ["+wn(o)+"]\nNamespace: "+n.getOr("none")+"\nSpec: "+JSON.stringify(e,null,2))},function(n){return n.replace()})}(n,0,e,o):rl.single(!1,nn(e))}function Hs(t,e,n,o){var r=P(o,function(n,t){return function(n,t){var e=!1;return{name:nn(n),required:function(){return t.fold(function(n,t){return n},function(n,t){return n})},used:function(){return e},replace:function(){if(!0===e)throw new Error("Trying to use the same placeholder more than once: "+n);return e=!0,t}}}(t,n)}),i=function(t,e,n,o){return D(n,function(n){return il(t,e,n,o)})}(t,e,n,r);return Cn(r,function(n){if(!1===n.used()&&n.required())throw new Error("Placeholder: "+n.name()+" was not found in components list\nNamespace: "+t.getOr("none")+"\nComponents: "+JSON.stringify(e.components,null,2))}),i}function Ps(n){return n.fold(on.some,on.none,on.some,on.some)}function zs(n){function t(n){return n.name}return n.fold(t,t,t,t)}function Ls(e,o){return function(n){var t=ot("Converting part type",o,n);return e(t)}}function js(n,t,e,o){return Bn(t.defaults(n,e,o),e,{uid:n.partUids[t.name]},t.overrides(n,e,o))}function Us(r,n){var t={};return bn(n,function(n){Ps(n).each(function(e){var o=El(r,e.pname);t[e.name]=function(n){var t=ot("Part: "+e.name+" in "+r,de(e.schema),n);return N(N({},o),{config:n,validated:t})}})}),t}function Ws(n,t,e){return{uiType:cl(),owner:n,name:t,config:e,validated:{}}}function Gs(n){return D(n,function(n){return n.fold(on.none,on.some,on.none,on.none).map(function(n){return mt(n.name,n.schema.concat([na(Ol())]))}).toArray()})}function Xs(n){return S(n,zs)}function Ys(n,t,e){return function(n,e,t){var i={},o={};return bn(t,function(n){n.fold(function(o){i[o.pname]=ul(!0,function(n,t,e){return o.factory.sketch(js(n,o,t,e))})},function(n){var t=e.parts[n.name];o[n.name]=nn(n.factory.sketch(js(e,n,t[Ol()]),t))},function(o){i[o.pname]=ul(!1,function(n,t,e){return o.factory.sketch(js(n,o,t,e))})},function(r){i[r.pname]=al(!0,function(t,n,e){var o=t[r.name];return S(o,function(n){return r.factory.sketch(Bn(r.defaults(t,n,e),n,r.overrides(t,n)))})})})}),{internals:nn(i),externals:nn(o)}}(0,t,e)}function qs(n,t,e){return Hs(on.some(n),t,t.components,e)}function Ks(n,t,e){var o=t.partUids[e];return n.getSystem().getByUid(o).toOption()}function Js(n,t,e){return Ks(n,t,e).getOrDie("Could not find part: "+e)}function $s(n,t,e){var o={},r=t.partUids,i=n.getSystem();return bn(e,function(n){o[n]=nn(i.getByUid(r[n]))}),o}function Qs(n,t){var e=n.getSystem();return P(t.partUids,function(n,t){return nn(e.getByUid(n))})}function Zs(n){return wn(n.partUids)}function nf(n,t,e){var o={},r=t.partUids,i=n.getSystem();return bn(e,function(n){o[n]=nn(i.getByUid(r[n]).getOrDie())}),o}function tf(t,n){var e=Xs(n);return K(S(e,function(n){return{key:n,value:t+"-"+n}}))}function ef(t){return he("partUids","partUids",Rn(function(n){return tf(n.uid,t)}),xe())}function of(n,t,e,o,r){var i=function(n,t){return(0<n.length?[mt("parts",n)]:[]).concat([ct("uid"),St("dom",{}),St("components",[]),na("originalSpec"),St("debug.sketcher",{})]).concat(t)}(o,r);return ot(n+" [SpecSchema]",qn(i.concat(t)),e)}function rf(n,t,e,o,r){var i=Bl(r),u=Gs(e),a=ef(e),c=of(n,t,i,u,[a]),s=Ys(0,c,e);return o(c,qs(n,c,s.internals()),i,s.externals())}var uf=function iI(e,o){var t=function(n){return e(n)?on.from(n.dom().nodeValue):on.none()};return{get:function(n){if(!e(n))throw new Error("Can only get "+o+" value of a "+o+" node");return t(n).getOr("")},getOption:t,set:function(n,t){if(!e(n))throw new Error("Can only set raw "+o+" value of a "+o+" node");n.dom().nodeValue=t}}}(_i,"text"),af=function(n,t,e,o){return _i(t)?function(t,e,o,r){var n=t.dom().createRange();n.selectNode(e.dom());var i=n.getClientRects();return Au(i,function(n){return Pa(n,o,r)?on.some(n):on.none()}).map(function(n){return Mc(t,e,o,r,n)})}(n,t,e,o):function(t,n,e,o){var r=t.dom().createRange(),i=xr(n);return Au(i,function(n){return r.selectNode(n.dom()),Pa(r.getBoundingClientRect(),e,o)?af(t,n,e,o):on.none()})}(n,t,e,o)},cf=["img","br"],sf=function(n,i){var u=function(n){for(var t=xr(n),e=t.length-1;0<=e;e--){var o=t[e];if(i(o))return on.some(o);var r=u(o);if(r.isSome())return r}return on.none()};return u(n)},ff=(document.caretPositionFromPoint||document.caretRangeFromPoint,lr("element","offset")),lf=En([{screen:["point"]},{absolute:["point","scrollLeft","scrollTop"]}]),df=lf.screen,mf=lf.absolute,gf=function(n,t,e,o){var r=n,i=t,u=e,a=o;n<0&&(r=0,u=e+n),t<0&&(i=0,a=o+t);var c=df(Ru(r,i));return on.some(zu(c,u,a))},pf=function(n,i,u,a,c){return n.map(function(n){var t=[i,n.point()],e=function(n,t,e,o){return n.fold(t,e,o)}(a,function(){return qc(t)},function(){return qc(t)},function(){return function(n){var t=S(n,Gc);return Yc(t)}(t)}),o=Lu(e.left(),e.top(),n.width(),n.height()),r=Fa(c,u,u.showAbove?[sa,fa,aa,ca,rc,ic]:[aa,ca,sa,fa,ic,ic],u.showAbove?[fa,sa,ca,aa,rc,ic]:[ca,aa,fa,sa,ic,rc]);return Aa({anchorBox:o,bubble:u.bubble.getOr(Ea()),overrides:u.overrides,layouts:r,placer:on.none()})})},hf=lr("element","offset"),vf=[ht("getSelection"),ct("root"),ht("bubble"),Ma(),St("overrides",{}),St("showAbove",!1),Zu("placement",function(n,t,e){var o=vr(t.root).dom(),r=Kc(n,0,t),i=$c(o,t).bind(function(n){return Wc(o,Dc.exactFromRange(n)).orThunk(function(){var t=Be.fromText("\ufeff");return Sr(n.start(),t),Wc(o,Dc.exact(t,0,t,1)).map(function(n){return zi(t),n})}).bind(function(n){return gf(n.left(),n.top(),n.width(),n.height())})}),u=$c(o,t).bind(function(n){return Ai(n.start())?on.some(n.start()):br(n.start())}).getOr(n.element());return pf(i,r,t,e,u)})],bf=[ct("node"),ct("root"),ht("bubble"),Ma(),St("overrides",{}),St("showAbove",!1),Zu("placement",function(r,i,u){var a=Kc(r,0,i);return i.node.bind(function(n){var t=n.dom().getBoundingClientRect(),e=gf(t.left,t.top,t.width,t.height),o=i.node.getOr(r.element());return pf(e,a,i,u,o)})})],yf=[ct("item"),Ma(),St("overrides",{}),Zu("placement",function(n,t,e){var o=Ba(e,t.item.element()),r=Fa(n.element(),t,[es,os,rs,is],[os,es,is,rs]);return on.some(Aa({anchorBox:o,bubble:Ea(),overrides:t.overrides,layouts:r,placer:on.none()}))})],xf=it("anchor",{selection:vf,node:bf,hotspot:Sc,submenu:yf,makeshift:Cc}),wf=lr("anchorBox","origin"),Sf=En([{fit:["reposition"]},{nofit:["reposition","deltaW","deltaH"]}]),Cf=nn(function(n,t){ls(n,t),di(n,{"overflow-x":"hidden","overflow-y":"auto"})}),kf=nn(function(n,t){ls(n,t)}),Of=gr(["bounds","origin","preference","maxHeightFunction","maxWidthFunction"],[]),Tf=function(n,t,e,o){var r=ss(n,t,e,o);fs(t,r,o),function(n,t){var e=t.classes();ai(n,e.off),ui(n,e.on)}(t,r),function(n,t,e){e.maxHeightFunction()(n,t.maxHeight())}(t,r,o),function(n,t,e){e.maxWidthFunction()(n,t.maxWidth())}(t,r,o)},Ef=function(n,t,e,o,r,i){var u=i.map(wu);return Df(n,t,e,o,r,u)},Df=function(r,i,n,t,u,a){var c=ot("positioning anchor.info",xf,t);Oa(function(){li(u.element(),"position","fixed");var n=gi(u.element(),"visibility");li(u.element(),"visibility","hidden");var t=i.useFixed()?function(){var n=v.document.documentElement;return xc(0,0,n.clientWidth,n.clientHeight)}():function(n){var t=mu(n.element()),e=n.element().dom().getBoundingClientRect();return yc(t.left(),t.top(),e.width,e.height)}(r),e=c.placement,o=a.map(nn).or(i.getBounds);e(r,c,t).each(function(n){n.placer.getOr(gs)(r,t,n,o,u)}),n.fold(function(){hi(u.element(),"visibility")},function(n){li(u.element(),"visibility",n)}),gi(u.element(),"left").isNone()&&gi(u.element(),"top").isNone()&&gi(u.element(),"right").isNone()&&gi(u.element(),"bottom").isNone()&&gi(u.element(),"position").is("fixed")&&hi(u.element(),"position")},u.element())},Bf=/* */Object.freeze({position:function(n,t,e,o,r){Ef(n,t,e,o,r,on.none())},positionWithin:Ef,positionWithinBounds:Df,getMode:function(n,t,e){return t.useFixed()?"fixed":"absolute"}}),Af=[St("useFixed",u),ht("getBounds")],_f=xa({fields:Af,name:"positioning",active:mc,apis:Bf}),Mf=function(n){Yt(n,Ho());var t=n.components();bn(t,Mf)},Ff=function(n){var t=n.components();bn(t,Ff),Yt(n,No())},If=function(n,t,e){n.getSystem().addToWorld(t),e(n.element(),t.element()),$o(n.element())&&Ff(t),n.syncComponents()},Rf=function(n,t,e){e(n,t.element());var o=xr(t.element());bn(o,function(n){t.getByDom(n).each(Ff)})},Vf=function(n,t,e){var o=t.getAttachPoint(n);li(n.element(),"position",_f.getMode(o)),function(t,n,e,o){gi(t.element(),n).fold(function(){Ir(t.element(),e)},function(n){_r(t.element(),e,n)}),li(t.element(),n,o)}(n,"visibility",t.cloakVisibilityAttr,"hidden")},Nf=function(n,t,e){!function(t){return x(["top","left","right","bottom"],function(n){return gi(t,n).isSome()})}(n.element())&&hi(n.element(),"position"),function(n,t,e){if(Fr(n.element(),e)){var o=Mr(n.element(),e);li(n.element(),t,o)}else hi(n.element(),t)}(n,"visibility",t.cloakVisibilityAttr)},Hf=/* */Object.freeze({cloak:Vf,decloak:Nf,open:ks,openWhileCloaked:function(n,t,e,o,r){Vf(n,t),ks(n,t,e,o),r(),Nf(n,t)},close:Os,isOpen:Ts,isPartOf:function(t,e,n,o){return Ts(0,0,n)&&n.get().exists(function(n){return e.isPartOf(t,n,o)})},getState:function(n,t,e){return e.get()},setContent:function(n,t,e,o){return e.get().map(function(){return Cs(n,t,e,o)})}}),Pf=/* */Object.freeze({events:function(e,o){return tr([rr(Ao(),function(n,t){Os(n,e,o)})])}}),zf=[Ku("onOpen"),Ku("onClose"),ct("isPartOf"),ct("getAttachPoint"),St("cloakVisibilityAttr","data-precloak-visibility")],Lf=xa({fields:zf,name:"sandboxing",active:Pf,apis:Hf,state:/* */Object.freeze({init:function(){var t=Ee(on.none()),n=nn("not-implemented");return tu({readState:n,isOpen:function(){return t.get().isSome()},clear:function(){t.set(on.none())},set:function(n){t.set(on.some(n))},get:function(n){return t.get()}})}})}),jf=nn("dismiss.popups"),Uf=nn("reposition.popups"),Wf=nn("mouse.released"),Gf=qn([St("isExtraPart",nn(!1)),wt("fireEventInstead",[St("event",Po())])]),Xf=qn([St("isExtraPart",nn(!1)),wt("fireEventInstead",[St("event",zo())]),dt("doReposition")]),Yf=/* */Object.freeze({onLoad:Bs,onUnload:As,setValue:function(n,t,e,o){t.store.manager.setValue(n,t,e,o)},getValue:function(n,t,e){return t.store.manager.getValue(n,t,e)},getState:function(n,t,e){return e}}),qf=/* */Object.freeze({events:function(e,o){var n=e.resetOnDom?[Ri(function(n,t){Bs(n,e,o)}),Vi(function(n,t){As(n,e,o)})]:[pa(e,o,Bs)];return tr(n)}}),Kf=/* */Object.freeze({memory:_s,dataset:Ms,manual:function(){return tu({readState:function(){}})},init:function(n){return n.store.manager.state(n)}}),Jf=[ht("initialValue"),ct("getFallbackEntry"),ct("getDataKey"),ct("setValue"),Zu("manager",{setValue:Fs,getValue:function(n,t,e){var o=t.store,r=o.getDataKey(n);return e.lookup(r).fold(function(){return o.getFallbackEntry(r)},function(n){return n})},onLoad:function(t,e,o){e.store.initialValue.each(function(n){Fs(t,e,o,n)})},onUnload:function(n,t,e){e.clear()},state:Ms})],$f=[ct("getValue"),St("setValue",Z),ht("initialValue"),Zu("manager",{setValue:function(n,t,e,o){t.store.setValue(n,o),t.onSetValue(n,o)},getValue:function(n,t,e){return t.store.getValue(n)},onLoad:function(t,e,n){e.store.initialValue.each(function(n){e.store.setValue(t,n)})},onUnload:Z,state:nu.init})],Qf=[ht("initialValue"),Zu("manager",{setValue:function(n,t,e,o){e.set(o),t.onSetValue(n,o)},getValue:function(n,t,e){return e.get()},onLoad:function(n,t,e){t.store.initialValue.each(function(n){e.isNotSet()&&e.set(n)})},onUnload:function(n,t,e){e.clear()},state:_s})],Zf=[Ct("store",{mode:"memory"},it("mode",{memory:Qf,manual:$f,dataset:Jf})),Ku("onSetValue"),St("resetOnDom",!1)],nl=xa({fields:Zf,name:"representing",active:qf,apis:Yf,extra:{setValueFrom:function(n,t){var e=nl.getValue(t);nl.setValue(n,e)}},state:Kf}),tl=Is,el=Vs,ol="placeholder",rl=En([{single:["required","valueThunk"]},{multiple:["required","valueThunks"]}]),il=function(i,u,a,c){return Ns(i,0,a,c).fold(function(n,t){var e=t(u,a.config,a.validated),o=Nn(e,"components").getOr([]),r=D(o,function(n){return il(i,u,n,c)});return[N(N({},e),{components:r})]},function(n,t){var e=t(u,a.config,a.validated);return a.validated.preprocess.getOr(l)(e)})},ul=rl.single,al=rl.multiple,cl=nn(ol),sl=En([{required:["data"]},{external:["data"]},{optional:["data"]},{group:["data"]}]),fl=St("factory",{sketch:l}),ll=St("schema",[]),dl=ct("name"),ml=he("pname","pname",In(function(n){return"<alloy."+Hr(n.name)+">"}),xe()),gl=At("schema",function(){return[ht("preprocess")]}),pl=St("defaults",nn({})),hl=St("overrides",nn({})),vl=de([fl,ll,dl,ml,pl,hl]),bl=de([fl,ll,dl,pl,hl]),yl=de([fl,ll,dl,ml,pl,hl]),xl=de([fl,gl,dl,ct("unit"),ml,pl,hl]),wl=Ls(sl.required,vl),Sl=Ls(sl.external,bl),Cl=Ls(sl.optional,yl),kl=Ls(sl.group,xl),Ol=nn("entirety"),Tl=/* */Object.freeze({required:wl,external:Sl,optional:Cl,group:kl,asNamedPart:Ps,name:zs,asCommon:function(n){return n.fold(l,l,l,l)},original:Ol}),El=function(n,t){return{uiType:cl(),owner:n,name:t}},Dl=/* */Object.freeze({generate:Us,generateOne:Ws,schemas:Gs,names:Xs,substitutes:Ys,components:qs,defaultUids:tf,defaultUidsSchema:ef,getAllParts:Qs,getAllPartNames:Zs,getPart:Ks,getPartOrDie:Js,getParts:$s,getPartsOrDie:nf}),Bl=function(n){return n.hasOwnProperty("uid")?n:N(N({},n),{uid:Pr("uid")})};function Al(n){var t=ot("Sketcher for "+n.name,Jl,n),e=P(t.apis,Ur),o=P(t.extraApis,function(n,t){return Lr(n,t)});return N(N({name:nn(t.name),partFields:nn([]),configFields:nn(t.configFields),sketch:function(n){return function(n,t,e,o){var r=Bl(o);return e(of(n,t,r,[],[]),r)}(t.name,t.configFields,t.factory,n)}},e),o)}function _l(n){var t=ot("Sketcher for "+n.name,$l,n),e=Us(t.name,t.partFields),o=P(t.apis,Ur),r=P(t.extraApis,function(n,t){return Lr(n,t)});return N(N({name:nn(t.name),partFields:nn(t.partFields),configFields:nn(t.configFields),sketch:function(n){return rf(t.name,t.configFields,t.partFields,t.factory,n)},parts:nn(e)},o),r)}function Ml(n){return"input"===Ko(n)&&"radio"!==Mr(n,"type")||"textarea"===Ko(n)}function Fl(e,o,n,r){var t=Lc(e.element(),"."+o.highlightClass);bn(t,function(t){x(r,function(n){return n.element()===t})||(ri(t,o.highlightClass),e.getSystem().getByDom(t).each(function(n){o.onDehighlight(e,n),Yt(n,Xo())}))})}function Il(n,t,e,o){Fl(n,t,0,[o]),td(n,t,e,o)||(ei(o.element(),t.highlightClass),t.onHighlight(n,o),Yt(o,Go()))}function Rl(e,t,n,o){var r=Lc(e.element(),"."+t.itemClass);return E(r,function(n){return ii(n,t.highlightClass)}).bind(function(n){var t=us(n,o,0,r.length-1);return e.getSystem().getByDom(r[t]).toOption()})}function Vl(n,t,e){var o=A(n.slice(0,t)),r=A(n.slice(t+1));return T(o.concat(r),e)}function Nl(n,t,e){var o=A(n.slice(0,t));return T(o,e)}function Hl(n,t,e){var o=n.slice(0,t),r=n.slice(t+1);return T(r.concat(o),e)}function Pl(n,t,e){var o=n.slice(t+1);return T(o,e)}function zl(e){return function(n){var t=n.raw();return vn(e,t.which)}}function Ll(n){return function(t){return B(n,function(n){return n(t)})}}function jl(n){return!0===n.raw().shiftKey}function Ul(n){return!0===n.raw().ctrlKey}function Wl(n,t){return{matches:n,classification:t}}function Gl(n,t,e){t.exists(function(t){return e.exists(function(n){return jt(n,t)})})||qt(n,Lo(),{prevFocus:t,newFocus:e})}function Xl(){function r(n){return ka(n.element())}return{get:r,set:function(n,t){var e=r(n);n.getSystem().triggerFocus(t,n.element());var o=r(n);Gl(n,e,o)}}}function Yl(){function r(n){return cd.getHighlighted(n).map(function(n){return n.element()})}return{get:r,set:function(t,n){var e=r(t);t.getSystem().getByDom(n).fold(Z,function(n){cd.highlight(t,n)});var o=r(t);Gl(t,e,o)}}}var ql,Kl,Jl=qn([ct("name"),ct("factory"),ct("configFields"),St("apis",{}),St("extraApis",{})]),$l=qn([ct("name"),ct("factory"),ct("configFields"),ct("partFields"),St("apis",{}),St("extraApis",{})]),Ql=/* */Object.freeze({getCurrent:function(n,t,e){return t.find(n)}}),Zl=[ct("find")],nd=xa({fields:Zl,name:"composing",apis:Ql}),td=function(n,t,e,o){return ii(o.element(),t.highlightClass)},ed=function(n,t,e,o){var r=Lc(n.element(),"."+t.itemClass);return on.from(r[o]).fold(function(){return an.error("No element found with index "+o)},n.getSystem().getByDom)},od=function(t,n,e){return Ou(t.element(),"."+n.itemClass).bind(function(n){return t.getSystem().getByDom(n).toOption()})},rd=function(t,n,e){var o=Lc(t.element(),"."+n.itemClass);return(0<o.length?on.some(o[o.length-1]):on.none()).bind(function(n){return t.getSystem().getByDom(n).toOption()})},id=function(t,n,e){var o=Lc(t.element(),"."+n.itemClass);return Bu(S(o,function(n){return t.getSystem().getByDom(n).toOption()}))},ud=/* */Object.freeze({dehighlightAll:function(n,t,e){return Fl(n,t,0,[])},dehighlight:function(n,t,e,o){td(n,t,e,o)&&(ri(o.element(),t.highlightClass),t.onDehighlight(n,o),Yt(o,Xo()))},highlight:Il,highlightFirst:function(t,e,o){od(t,e).each(function(n){Il(t,e,o,n)})},highlightLast:function(t,e,o){rd(t,e).each(function(n){Il(t,e,o,n)})},highlightAt:function(t,e,o,n){ed(t,e,o,n).fold(function(n){throw new Error(n)},function(n){Il(t,e,o,n)})},highlightBy:function(t,e,o,n){var r=id(t,e);T(r,n).each(function(n){Il(t,e,o,n)})},isHighlighted:td,getHighlighted:function(t,n,e){return Ou(t.element(),"."+n.highlightClass).bind(function(n){return t.getSystem().getByDom(n).toOption()})},getFirst:od,getLast:rd,getPrevious:function(n,t,e){return Rl(n,t,0,-1)},getNext:function(n,t,e){return Rl(n,t,0,1)},getCandidates:id}),ad=[ct("highlightClass"),ct("itemClass"),Ku("onHighlight"),Ku("onDehighlight")],cd=xa({fields:ad,name:"highlighting",apis:ud}),sd=b(jl);(Kl=ql=ql||{}).OnFocusMode="onFocus",Kl.OnEnterOrSpaceMode="onEnterOrSpace",Kl.OnApiMode="onApi";function fd(n,t,e,i,u){function a(t,e,n,o,r){return function(n,t){return T(n,function(n){return n.matches(t)}).map(function(n){return n.classification})}(n(t,e,o,r),e.event()).bind(function(n){return n(t,e,o,r)})}var o={schema:function(){return n.concat([St("focusManager",Xl()),Ct("focusInside","onFocus",Zn(function(n){return vn(["onFocus","onEnterOrSpace","onApi"],n)?an.value(n):an.error("Invalid value for focusInside")})),Zu("handler",o),Zu("state",t),Zu("sendFocusIn",u)])},processKey:a,toEvents:function(o,r){var n=o.focusInside!==ql.OnFocusMode?on.none():u(o).map(function(e){return rr(So(),function(n,t){e(n,o,r),t.stop()})});return tr(n.toArray().concat([rr(go(),function(n,t){a(n,t,e,o,r).fold(function(){!function(t,e){var n=zl([32].concat([13]))(e.event());o.focusInside===ql.OnEnterOrSpaceMode&&n&&Ut(t,e)&&u(o).each(function(n){n(t,o,r),e.stop()})}(n,t)},function(n){t.stop()})}),rr(po(),function(n,t){a(n,t,i,o,r).each(function(n){t.stop()})})]))}};return o}function ld(n){function i(n,t){var e=n.visibilitySelector.bind(function(n){return Tu(t,n)}).getOr(t);return 0<fu(e)}function t(t,e){(function(n,t){var e=Lc(n.element(),t.selector),o=C(e,function(n){return i(t,n)});return on.from(o[t.firstTabstop])})(t,e).each(function(n){e.focusManager.set(t,n)})}function u(t,n,e,o,r){return r(n,e,function(n){return function(n,t){return i(n,t)&&n.useTabstopAt(t)}(o,n)}).fold(function(){return o.cyclic?on.some(!0):on.none()},function(n){return o.focusManager.set(t,n),on.some(!0)})}function a(t,n,e,o){var r=Lc(t.element(),e.selector);return function(n,t){return t.focusManager.get(n).bind(function(n){return Tu(n,t.selector)})}(t,e).bind(function(n){return E(r,d(jt,n)).bind(function(n){return u(t,r,n,e,o)})})}var e=[ht("onEscape"),ht("onEnter"),St("selector",'[data-alloy-tabstop="true"]:not(:disabled)'),St("firstTabstop",0),St("useTabstopAt",nn(!0)),ht("visibilitySelector")].concat([n]),o=nn([Wl(Ll([jl,zl([9])]),function(n,t,e,o){var r=e.cyclic?Vl:Nl;return a(n,0,e,r)}),Wl(zl([9]),function(n,t,e,o){var r=e.cyclic?Hl:Pl;return a(n,0,e,r)}),Wl(zl([27]),function(t,e,n,o){return n.onEscape.bind(function(n){return n(t,e)})}),Wl(Ll([sd,zl([13])]),function(t,e,n,o){return n.onEnter.bind(function(n){return n(t,e)})})]),r=nn([]);return fd(e,nu.init,o,r,function(){return on.some(t)})}function dd(n,t,e){return Ml(e)&&zl([32])(t.event())?on.none():function(n,t,e){return Jt(n,e,To()),on.some(!0)}(n,0,e)}function md(n,t){return on.some(!0)}function gd(n,t,e){return e.execute(n,t,n.element())}function pd(n){var e=Ee(on.none());return tu({readState:function(){return e.get().map(function(n){return{numRows:n.numRows(),numColumns:n.numColumns()}}).getOr({numRows:"?",numColumns:"?"})},setGridSize:function(n,t){e.set(on.some({numRows:nn(n),numColumns:nn(t)}))},getNumRows:function(){return e.get().map(function(n){return n.numRows()})},getNumColumns:function(){return e.get().map(function(n){return n.numColumns()})}})}function hd(i){return function(n,t,e,o){var r=i(n.element());return Em(r,n,t,e,o)}}function vd(n,t){var e=_a(n,t);return hd(e)}function bd(n,t){var e=_a(t,n);return hd(e)}function yd(r){return function(n,t,e,o){return Em(r,n,t,e,o)}}function xd(n){return!function(n){return n.offsetWidth<=0&&n.offsetHeight<=0}(n.dom())}function wd(n,t,e){var o=d(jt,t),r=Lc(n,e);return function(t,n){return E(t,n).map(function(n){return _m({index:n,candidates:t})})}(C(r,xd),o)}function Sd(n,t){return E(n,function(n){return jt(t,n)})}function Cd(e,n,o,t){return t(Math.floor(n/o),n%o).bind(function(n){var t=n.row()*o+n.column();return 0<=t&&t<e.length?on.some(e[t]):on.none()})}function kd(r,n,i,u,a){return Cd(r,n,u,function(n,t){var e=n===i-1?r.length-n*u:u,o=us(t,a,0,e-1);return on.some({row:nn(n),column:nn(o)})})}function Od(i,n,u,a,c){return Cd(i,n,a,function(n,t){var e=us(n,c,0,u-1),o=e===u-1?i.length-e*a:a,r=as(t,0,o-1);return on.some({row:nn(e),column:nn(r)})})}function Td(t,e,n){Ou(t.element(),e.selector).each(function(n){e.focusManager.set(t,n)})}function Ed(r){return function(n,t,e,o){return wd(n,t,e.selector).bind(function(n){return r(n.candidates(),n.index(),o.getNumRows().getOr(e.initSize.numRows),o.getNumColumns().getOr(e.initSize.numColumns))})}}function Dd(n,t,e,o){return e.captureTab?on.some(!0):on.none()}function Bd(n,t,e,r){var i=function(n,t,e){var o=us(t,r,0,e.length-1);return o===n?on.none():function(n){return"button"===Ko(n)&&"disabled"===Mr(n,"disabled")}(e[o])?i(n,o,e):on.from(e[o])};return wd(n,e,t).bind(function(n){var t=n.index(),e=n.candidates();return i(t,t,e)})}function Ad(t,e,o){return function(n,t){return t.focusManager.get(n).bind(function(n){return Tu(n,t.selector)})}(t,o).bind(function(n){return o.execute(t,e,n)})}function _d(t,e){e.getInitial(t).orThunk(function(){return Ou(t.element(),e.selector)}).each(function(n){e.focusManager.set(t,n)})}function Md(n,t,e){return Bd(n,e.selector,t,-1)}function Fd(n,t,e){return Bd(n,e.selector,t,1)}function Id(o){return function(n,t,e){return o(n,t,e).bind(function(){return e.executeOnMove?Ad(n,t,e):on.some(!0)})}}function Rd(n,t,e,o){return e.onEscape(n,t)}function Vd(n,t,e){return on.from(n[t]).bind(function(n){return on.from(n[e]).map(function(n){return Um({rowIndex:t,columnIndex:e,cell:n})})})}function Nd(n,t,e,o){var r=n[t].length,i=us(e,o,0,r-1);return Vd(n,t,i)}function Hd(n,t,e,o){var r=us(e,o,0,n.length-1),i=n[r].length,u=as(t,0,i-1);return Vd(n,r,u)}function Pd(n,t,e,o){var r=n[t].length,i=as(e+o,0,r-1);return Vd(n,t,i)}function zd(n,t,e,o){var r=as(e+o,0,n.length-1),i=n[r].length,u=as(t,0,i-1);return Vd(n,r,u)}function Ld(t,e){e.previousSelector(t).orThunk(function(){var n=e.selectors;return Ou(t.element(),n.cell)}).each(function(n){e.focusManager.set(t,n)})}function jd(n,t){return function(r,e,i){var u=i.cycles?n:t;return Tu(e,i.selectors.row).bind(function(n){var t=Lc(n,i.selectors.cell);return Sd(t,e).bind(function(e){var o=Lc(r,i.selectors.row);return Sd(o,n).bind(function(n){var t=function(n,t){return S(n,function(n){return Lc(n,t.selectors.cell)})}(o,i);return u(t,n,e).map(function(n){return n.cell()})})})})}}function Ud(t,e,o){return o.focusManager.get(t).bind(function(n){return o.execute(t,e,n)})}function Wd(t,e){Ou(t.element(),e.selector).each(function(n){e.focusManager.set(t,n)})}function Gd(n,t,e){return Bd(n,e.selector,t,-1)}function Xd(n,t,e){return Bd(n,e.selector,t,1)}function Yd(n,t,e,o){var r=n.getSystem().build(o);If(n,r,e)}function qd(n,t,e,o){var r=mg(n);T(r,function(n){return jt(o.element(),n.element())}).each(ys)}function Kd(t,n,e,o,r){var i=mg(t);return on.from(i[o]).map(function(n){return qd(t,0,0,n),r.each(function(n){Yd(t,0,function(n,t){!function(n,t,e){wr(n,e).fold(function(){Pi(n,t)},function(n){Sr(n,t)})}(n,t,o)},n)}),n})}function Jd(n,t){return{key:n,value:{config:{},me:function(n,t){var e=tr(t);return xa({fields:[ct("enabled")],name:n,active:{events:nn(e)}})}(n,t),configAsRaw:nn({}),initialConfig:{},state:nu}}}function $d(n,t){t.ignore||(Sa(n.element()),t.onFocus(n))}function Qd(n,t,e){var o=t.aria;o.update(n,o,e.get())}function Zd(t,n,e){n.toggleClass.each(function(n){e.get()?ei(t.element(),n):ri(t.element(),n)})}function nm(n,t,e){yg(n,t,e,!e.get())}function tm(n,t,e){e.set(!0),Zd(n,t,e),Qd(n,t,e)}function em(n,t,e){e.set(!1),Zd(n,t,e),Qd(n,t,e)}function om(n,t,e){yg(n,t,e,t.selected)}function rm(){return[rr(Xt(),function(n,t){t.stop(),Kt(n)}),sr(Ht().deviceType.isTouch()?eo():uo())]}function im(n){return tr(H([n.map(function(e){return Hi(function(n,t){e(n),t.stop()})}).toArray(),rm()]))}function um(n){(ka(n.element()).isNone()||bg.isFocused(n))&&(bg.isFocused(n)||bg.focus(n),qt(n,Og,{item:n}))}function am(n){qt(n,Tg,{item:n})}function cm(n,t){var e={};Cn(n,function(n,t){bn(n,function(n){e[n]=t})});var o=t,r=function(n){return kn(n,function(n,t){return{k:n,v:t}})}(t),i=P(r,function(n,t){return[t].concat(Hg(e,o,r,t))});return P(e,function(n){return Nn(i,n).getOr([n])})}function sm(n){return n.x()}function fm(n,t){return n.x()+n.width()/2-t.width()/2}function lm(n,t){return n.x()+n.width()-t.width()}function dm(n){return n.y()}function mm(n,t){return n.y()+n.height()-t.height()}function gm(n,t,e){return qa(sm(n),mm(n,t),e.innerSoutheast(),Ja(),"layout-se")}function pm(n,t,e){return qa(lm(n,t),mm(n,t),e.innerSouthwest(),$a(),"layout-sw")}function hm(n,t,e){return qa(sm(n),dm(n),e.innerNortheast(),Qa(),"layout-ne")}function vm(n,t,e){return qa(lm(n,t),dm(n),e.innerNorthwest(),Za(),"layout-nw")}function bm(n){var t=function e(n){return n.uid!==undefined}(n)&&$(n,"uid")?n.uid:Pr("memento");return{get:function(n){return n.getSystem().getByUid(t).getOrDie()},getOpt:function(n){return n.getSystem().getByUid(t).toOption()},asSpec:function(){return N(N({},n),{uid:t})}}}function ym(n){return on.from(n()["temporary-placeholder"]).getOr("!not found!")}function xm(n,t){return on.from(t()[n]).getOrThunk(function(){return ym(t)})}var wm,Sm=ld(At("cyclic",nn(!1))),Cm=ld(At("cyclic",nn(!0))),km=[St("execute",dd),St("useSpace",!1),St("useEnter",!0),St("useControlEnter",!1),St("useDown",!1)],Om=fd(km,nu.init,function(n,t,e,o){var r=e.useSpace&&!Ml(n.element())?[32]:[],i=e.useEnter?[13]:[],u=e.useDown?[40]:[],a=r.concat(i).concat(u);return[Wl(zl(a),gd)].concat(e.useControlEnter?[Wl(Ll([Ul,zl([13])]),gd)]:[])},function(n,t,e,o){return e.useSpace&&!Ml(n.element())?[Wl(zl([32]),md)]:[]},function(){return on.none()}),Tm=/* */Object.freeze({flatgrid:pd,init:function(n){return n.state(n)}}),Em=function(t,e,n,o,r){return o.focusManager.get(e).bind(function(n){return t(e.element(),n,o,r)}).map(function(n){return o.focusManager.set(e,n),!0})},Dm=yd,Bm=yd,Am=yd,_m=gr(["index","candidates"],[]),Mm=[ct("selector"),St("execute",dd),Ju("onEscape"),St("captureTab",!1),Ya()],Fm=Ed(function(n,t,e,o){return kd(n,t,e,o,-1)}),Im=Ed(function(n,t,e,o){return kd(n,t,e,o,1)}),Rm=Ed(function(n,t,e,o){return Od(n,t,e,o,-1)}),Vm=Ed(function(n,t,e,o){return Od(n,t,e,o,1)}),Nm=nn([Wl(zl([37]),vd(Fm,Im)),Wl(zl([39]),bd(Fm,Im)),Wl(zl([38]),Dm(Rm)),Wl(zl([40]),Bm(Vm)),Wl(Ll([jl,zl([9])]),Dd),Wl(Ll([sd,zl([9])]),Dd),Wl(zl([27]),function(n,t,e,o){return e.onEscape(n,t)}),Wl(zl([32].concat([13])),function(t,e,o,n){return function(n,t){return t.focusManager.get(n).bind(function(n){return Tu(n,t.selector)})}(t,o).bind(function(n){return o.execute(t,e,n)})})]),Hm=nn([Wl(zl([32]),md)]),Pm=fd(Mm,pd,Nm,Hm,function(){return on.some(Td)}),zm=[ct("selector"),St("getInitial",on.none),St("execute",dd),Ju("onEscape"),St("executeOnMove",!1),St("allowVertical",!0)],Lm=nn([Wl(zl([32]),md)]),jm=fd(zm,nu.init,function(n,t,e,o){var r=[37].concat(e.allowVertical?[38]:[]),i=[39].concat(e.allowVertical?[40]:[]);return[Wl(zl(r),Id(vd(Md,Fd))),Wl(zl(i),Id(bd(Md,Fd))),Wl(zl([13]),Ad),Wl(zl([32]),Ad),Wl(zl([27]),Rd)]},Lm,function(){return on.some(_d)}),Um=gr(["rowIndex","columnIndex","cell"],[]),Wm=[mt("selectors",[ct("row"),ct("cell")]),St("cycles",!0),St("previousSelector",on.none),St("execute",dd)],Gm=jd(function(n,t,e){return Nd(n,t,e,-1)},function(n,t,e){return Pd(n,t,e,-1)}),Xm=jd(function(n,t,e){return Nd(n,t,e,1)},function(n,t,e){return Pd(n,t,e,1)}),Ym=jd(function(n,t,e){return Hd(n,e,t,-1)},function(n,t,e){return zd(n,e,t,-1)}),qm=jd(function(n,t,e){return Hd(n,e,t,1)},function(n,t,e){return zd(n,e,t,1)}),Km=nn([Wl(zl([37]),vd(Gm,Xm)),Wl(zl([39]),bd(Gm,Xm)),Wl(zl([38]),Dm(Ym)),Wl(zl([40]),Bm(qm)),Wl(zl([32].concat([13])),function(t,e,o){return ka(t.element()).bind(function(n){return o.execute(t,e,n)})})]),Jm=nn([Wl(zl([32]),md)]),$m=fd(Wm,nu.init,Km,Jm,function(){return on.some(Ld)}),Qm=[ct("selector"),St("execute",dd),St("moveOnTab",!1)],Zm=nn([Wl(zl([38]),Am(Gd)),Wl(zl([40]),Am(Xd)),Wl(Ll([jl,zl([9])]),function(n,t,e){return e.moveOnTab?Am(Gd)(n,t,e):on.none()}),Wl(Ll([sd,zl([9])]),function(n,t,e){return e.moveOnTab?Am(Xd)(n,t,e):on.none()}),Wl(zl([13]),Ud),Wl(zl([32]),Ud)]),ng=nn([Wl(zl([32]),md)]),tg=fd(Qm,nu.init,Zm,ng,function(){return on.some(Wd)}),eg=[Ju("onSpace"),Ju("onEnter"),Ju("onShiftEnter"),Ju("onLeft"),Ju("onRight"),Ju("onTab"),Ju("onShiftTab"),Ju("onUp"),Ju("onDown"),Ju("onEscape"),St("stopSpaceKeyup",!1),ht("focusIn")],og=fd(eg,nu.init,function(n,t,e){return[Wl(zl([32]),e.onSpace),Wl(Ll([sd,zl([13])]),e.onEnter),Wl(Ll([jl,zl([13])]),e.onShiftEnter),Wl(Ll([jl,zl([9])]),e.onShiftTab),Wl(Ll([sd,zl([9])]),e.onTab),Wl(zl([38]),e.onUp),Wl(zl([40]),e.onDown),Wl(zl([37]),e.onLeft),Wl(zl([39]),e.onRight),Wl(zl([32]),e.onSpace),Wl(zl([27]),e.onEscape)]},function(n,t,e){return e.stopSpaceKeyup?[Wl(zl([32]),md)]:[]},function(n){return n.focusIn}),rg=Sm.schema(),ig=Cm.schema(),ug=jm.schema(),ag=Pm.schema(),cg=$m.schema(),sg=Om.schema(),fg=tg.schema(),lg=og.schema(),dg=wa({branchKey:"mode",branches:/* */Object.freeze({acyclic:rg,cyclic:ig,flow:ug,flatgrid:ag,matrix:cg,execution:sg,menu:fg,special:lg}),name:"keying",active:{events:function(n,t){return n.handler.toEvents(n,t)}},apis:{focusIn:function(t,e,o){e.sendFocusIn(e).fold(function(){t.getSystem().triggerFocus(t.element(),t.element())},function(n){n(t,e,o)})},setGridSize:function(n,t,e,o,r){$(e,"setGridSize")?e.setGridSize(o,r):v.console.error("Layout does not support setGridSize")}},state:Tm}),mg=function(n,t){return n.components()},gg=xa({fields:[],name:"replacing",apis:/* */Object.freeze({append:function(n,t,e,o){Yd(n,0,Pi,o)},prepend:function(n,t,e,o){Yd(n,0,kr,o)},remove:qd,replaceAt:Kd,replaceBy:function(t,n,e,o,r){var i=mg(t);return E(i,o).bind(function(n){return Kd(t,0,0,n,r)})},set:function(t,n,e,o){Oa(function(){var n=S(o,t.getSystem().build);hs(t,n)},t.element())},contents:mg})}),pg=/* */Object.freeze({focus:$d,blur:function(n,t){t.ignore||function(n){n.dom().blur()}(n.element())},isFocused:function(n){return function(n){var t=pr(n).dom();return n.dom()===t.activeElement}(n.element())}}),hg=/* */Object.freeze({exhibit:function(n,t){var e=t.ignore?{}:{attributes:{tabindex:"-1"}};return Gr(e)},events:function(e){return tr([rr(So(),function(n,t){$d(n,e),t.stop()})].concat(e.stopMousedown?[rr(uo(),function(n,t){t.event().prevent()})]:[]))}}),vg=[Ku("onFocus"),St("stopMousedown",!1),St("ignore",!1)],bg=xa({fields:vg,name:"focusing",active:hg,apis:pg}),yg=function(n,t,e,o){(o?tm:em)(n,t,e)},xg=/* */Object.freeze({onLoad:om,toggle:nm,isOn:function(n,t,e){return e.get()},on:tm,off:em,set:yg}),wg=/* */Object.freeze({exhibit:function(n,t,e){return Gr({})},events:function(n,t){var e=function(t,e,o){return Hi(function(n){o(n,t,e)})}(n,t,nm),o=pa(n,t,om);return tr(H([n.toggleOnExecute?[e]:[],[o]]))}}),Sg=function(n,t,e){_r(n.element(),"aria-expanded",e)},Cg=[St("selected",!1),ht("toggleClass"),St("toggleOnExecute",!0),Ct("aria",{mode:"none"},it("mode",{pressed:[St("syncWithExpanded",!1),Zu("update",function(n,t,e){_r(n.element(),"aria-pressed",e),t.syncWithExpanded&&Sg(n,t,e)})],checked:[Zu("update",function(n,t,e){_r(n.element(),"aria-checked",e)})],expanded:[Zu("update",Sg)],selected:[Zu("update",function(n,t,e){_r(n.element(),"aria-selected",e)})],none:[Zu("update",Z)]}))],kg=xa({fields:Cg,name:"toggling",active:wg,apis:xg,state:(wm=!1,{init:function(){var t=Ee(wm);return{get:function(){return t.get()},set:function(n){return t.set(n)},clear:function(){return t.set(wm)},readState:function(){return t.get()}}}})}),Og="alloy.item-hover",Tg="alloy.item-focus",Eg=nn(Og),Dg=nn(Tg),Bg=[ct("data"),ct("components"),ct("dom"),St("hasSubmenu",!1),ht("toggling"),tl("itemBehaviours",[kg,bg,dg,nl]),St("ignoreFocus",!1),St("domModification",{}),Zu("builder",function(n){return{dom:n.dom,domModification:N(N({},n.domModification),{attributes:N(N(N({role:n.toggling.isSome()?"menuitemcheckbox":"menuitem"},n.domModification.attributes),{"aria-haspopup":n.hasSubmenu}),n.hasSubmenu?{"aria-expanded":!1}:{})}),behaviours:el(n.itemBehaviours,[n.toggling.fold(kg.revoke,function(n){return kg.config(N({aria:{mode:"checked"}},n))}),bg.config({ignore:n.ignoreFocus,stopMousedown:n.ignoreFocus,onFocus:function(n){am(n)}}),dg.config({mode:"execution"}),nl.config({store:{mode:"memory",initialValue:n.data}}),Jd("item-type-events",g(rm(),[rr(fo(),um),rr(Eo(),bg.focus)]))]),components:n.components,eventOrder:n.eventOrder}}),St("eventOrder",{})],Ag=[ct("dom"),ct("components"),Zu("builder",function(n){return{dom:n.dom,components:n.components,events:tr([function(n){return rr(n,function(n,t){t.stop()})}(Eo())])}})],_g=nn([wl({name:"widget",overrides:function(t){return{behaviours:ya([nl.config({store:{mode:"manual",getValue:function(n){return t.data},setValue:function(){}}})])}}})]),Mg=[ct("uid"),ct("data"),ct("components"),ct("dom"),St("autofocus",!1),St("ignoreFocus",!1),tl("widgetBehaviours",[nl,bg,dg]),St("domModification",{}),ef(_g()),Zu("builder",function(e){function o(n){return Ks(n,e,"widget").map(function(n){return dg.focusIn(n),n})}function n(n,t){return Ml(t.event().target())||e.autofocus&&t.setSource(n.element()),on.none()}var t=Ys(0,e,_g()),r=qs("item-widget",e,t.internals());return{dom:e.dom,components:r,domModification:e.domModification,events:tr([Hi(function(n,t){o(n).each(function(n){t.stop()})}),rr(fo(),um),rr(Eo(),function(n,t){e.autofocus?o(n):bg.focus(n)})]),behaviours:el(e.widgetBehaviours,[nl.config({store:{mode:"memory",initialValue:e.data}}),bg.config({ignore:e.ignoreFocus,onFocus:function(n){am(n)}}),dg.config({mode:"special",focusIn:e.autofocus?function(n){o(n)}:sc(),onLeft:n,onRight:n,onEscape:function(n,t){return bg.isFocused(n)||e.autofocus?(e.autofocus&&t.setSource(n.element()),on.none()):(bg.focus(n),on.some(!0))}})])}})],Fg=it("type",{widget:Mg,item:Bg,separator:Ag}),Ig=nn([kl({factory:{sketch:function(n){var t=ot("menu.spec item",Fg,n);return t.builder(t)}},name:"items",unit:"item",defaults:function(n,t){return t.hasOwnProperty("uid")?t:N(N({},t),{uid:Pr("item")})},overrides:function(n,t){return{type:t.type,ignoreFocus:n.fakeFocus,domModification:{classes:[n.markers.item]}}}})]),Rg=nn([ct("value"),ct("items"),ct("dom"),ct("components"),St("eventOrder",{}),Is("menuBehaviours",[cd,nl,nd,dg]),Ct("movement",{mode:"menu",moveOnTab:!0},it("mode",{grid:[Ya(),Zu("config",function(n,t){return{mode:"flatgrid",selector:"."+n.markers.item,initSize:{numColumns:t.initSize.numColumns,numRows:t.initSize.numRows},focusManager:n.focusManager}})],matrix:[Zu("config",function(n,t){return{mode:"matrix",selectors:{row:t.rowSelector,cell:"."+n.markers.item},focusManager:n.focusManager}}),ct("rowSelector")],menu:[St("moveOnTab",!0),Zu("config",function(n,t){return{mode:"menu",selector:"."+n.markers.item,moveOnTab:t.moveOnTab,focusManager:n.focusManager}})]})),st("markers",Ga()),St("fakeFocus",!1),St("focusManager",Xl()),Ku("onHighlight")]),Vg=nn("alloy.menu-focus"),Ng=_l({name:"Menu",configFields:Rg(),partFields:Ig(),factory:function(n,t,e,o){return{uid:n.uid,dom:n.dom,markers:n.markers,behaviours:Vs(n.menuBehaviours,[cd.config({highlightClass:n.markers.selectedItem,itemClass:n.markers.item,onHighlight:n.onHighlight}),nl.config({store:{mode:"memory",initialValue:n.value}}),nd.config({find:on.some}),dg.config(n.movement.config(n,n.movement))]),events:tr([rr(Dg(),function(t,e){var n=e.event();t.getSystem().getByDom(n.target()).each(function(n){cd.highlight(t,n),e.stop(),qt(t,Vg(),{menu:t,item:n})})}),rr(Eg(),function(n,t){var e=t.event().item();cd.highlight(n,e)})]),components:t,eventOrder:n.eventOrder,domModification:{attributes:{role:"menu"}}}}}),Hg=function(e,o,r,n){return Nn(r,n).bind(function(n){return Nn(e,n).bind(function(n){var t=Hg(e,o,r,n);return on.some([n].concat(t))})}).getOr([])},Pg=function(n){return"prepared"===n.type?on.some(n.menu):on.none()},zg={init:function(){function r(n,e,o){return f(n).bind(function(t){return function(e){return I(i.get(),function(n,t){return n===e})}(n).bind(function(n){return e(n).map(function(n){return{triggeredMenu:t,triggeringItem:n,triggeringPath:o}})})})}var i=Ee({}),u=Ee({}),a=Ee({}),c=Ee(on.none()),s=Ee({}),f=function(n){return t(n).bind(Pg)},t=function(n){return Nn(u.get(),n)},e=function(n){return Nn(i.get(),n)};return{setMenuBuilt:function(n,t){var e;u.set(N(N({},u.get()),((e={})[n]={type:"prepared",menu:t},e)))},setContents:function(n,t,e,o){c.set(on.some(n)),i.set(e),u.set(t),s.set(o);var r=cm(o,e);a.set(r)},expand:function(e){return Nn(i.get(),e).map(function(n){var t=Nn(a.get(),e).getOr([]);return[n].concat(t)})},refresh:function(n){return Nn(a.get(),n)},collapse:function(n){return Nn(a.get(),n).bind(function(n){return 1<n.length?on.some(n.slice(1)):on.none()})},lookupMenu:t,lookupItem:e,otherMenus:function(n){var t=s.get();return _(wn(t),n)},getPrimary:function(){return c.get().bind(f)},getMenus:function(){return u.get()},clear:function(){i.set({}),u.set({}),a.set({}),c.set(on.none())},isClear:function(){return c.get().isNone()},getTriggeringPath:function(n,o){var t=C(e(n).toArray(),function(n){return f(n).isSome()});return Nn(a.get(),n).bind(function(n){var e=A(t.concat(n));return function(n){for(var t=[],e=0;e<n.length;e++){var o=n[e];if(!o.isSome())return on.none();t.push(o.getOrDie())}return on.some(t)}(D(e,function(n,t){return r(n,o,e.slice(0,t+1)).fold(function(){return c.get().is(n)?[]:[on.none()]},function(n){return[on.some(n)]})}))})}}},extractPreparedMenu:Pg},Lg=nn("collapse-item"),jg=Al({name:"TieredMenu",configFields:[Qu("onExecute"),Qu("onEscape"),$u("onOpenMenu"),$u("onOpenSubmenu"),$u("onRepositionMenu"),Ku("onCollapseMenu"),St("highlightImmediately",!0),mt("data",[ct("primary"),ct("menus"),ct("expansions")]),St("fakeFocus",!1),Ku("onHighlight"),Ku("onHover"),Xu(),ct("dom"),St("navigateOnHover",!0),St("stayInDom",!1),Is("tmenuBehaviours",[dg,cd,nd,gg]),St("eventOrder",{})],apis:{collapseMenu:function(n,t){n.collapseMenu(t)},highlightPrimary:function(n,t){n.highlightPrimary(t)},repositionMenus:function(n,t){n.repositionMenus(t)}},factory:function(a,n){function e(n){var t=function(o,r,n){return P(n,function(n,t){function e(){return Ng.sketch(N(N({dom:n.dom},n),{value:t,items:n.items,markers:a.markers,fakeFocus:a.fakeFocus,onHighlight:a.onHighlight,focusManager:a.fakeFocus?Yl():Xl()}))}return t===r?{type:"prepared",menu:o.getSystem().build(e())}:{type:"notbuilt",nbMenu:e}})}(n,a.data.primary,a.data.menus),e=o();return g.setContents(a.data.primary,t,a.data.expansions,e),g.getPrimary()}function c(n){return nl.getValue(n).value}function u(t,n){cd.highlight(t,n),cd.getHighlighted(n).orThunk(function(){return cd.getFirst(n)}).each(function(n){Jt(t,n.element(),Eo())})}function s(t,n){return Bu(S(n,function(n){return t.lookupMenu(n).bind(function(n){return"prepared"===n.type?on.some(n.menu):on.none()})}))}function f(t,n,e){var o=s(n,n.otherMenus(e));bn(o,function(n){ai(n.element(),[a.markers.backgroundMenu]),a.stayInDom||gg.remove(t,n)})}function l(n,o){var t=function(o){return r.get().getOrThunk(function(){var e={},n=Lc(o.element(),"."+a.markers.item),t=C(n,function(n){return"true"===Mr(n,"aria-haspopup")});return bn(t,function(n){o.getSystem().getByDom(n).each(function(n){var t=c(n);e[t]=n})}),r.set(on.some(e)),e})}(n);Cn(t,function(n,t){var e=vn(o,t);_r(n.element(),"aria-expanded",e)})}function d(o,r,i){return on.from(i[0]).bind(function(n){return r.lookupMenu(n).bind(function(n){if("notbuilt"===n.type)return on.none();var t=n.menu,e=s(r,i.slice(1));return bn(e,function(n){ei(n.element(),a.markers.backgroundMenu)}),$o(t.element())||gg.append(o,cu(t)),ai(t.element(),[a.markers.backgroundMenu]),u(o,t),f(o,r,i),on.some(t)})})}var m,t,r=Ee(on.none()),g=zg.init(),o=function(n){return P(a.data.menus,function(n,t){return D(n.items,function(n){return"separator"===n.type?[]:[n.data.value]})})};(t=m=m||{})[t.HighlightSubmenu=0]="HighlightSubmenu",t[t.HighlightParent=1]="HighlightParent";function i(r,i,u){void 0===u&&(u=m.HighlightSubmenu);var n=c(i);return g.expand(n).bind(function(o){return l(r,o),on.from(o[0]).bind(function(e){return g.lookupMenu(e).bind(function(n){var t=function(n,t,e){if("notbuilt"!==e.type)return e.menu;var o=n.getSystem().build(e.nbMenu());return g.setMenuBuilt(t,o),o}(r,e,n);return $o(t.element())||gg.append(r,cu(t)),a.onOpenSubmenu(r,i,t,A(o)),u===m.HighlightSubmenu?(cd.highlightFirst(t),d(r,g,o)):(cd.dehighlightAll(t),on.some(i))})})})}function p(t,e){var n=c(e);return g.collapse(n).bind(function(n){return l(t,n),d(t,g,n).map(function(n){return a.onCollapseMenu(t,e,n),n})})}function h(e){return function(t,n){return Tu(n.getSource(),"."+a.markers.item).bind(function(n){return t.getSystem().getByDom(n).toOption().bind(function(n){return e(t,n).map(function(){return!0})})})}}function v(n){return cd.getHighlighted(n).bind(cd.getHighlighted)}var b=tr([rr(Vg(),function(e,o){var n=o.event().item();g.lookupItem(c(n)).each(function(){var n=o.event().menu();cd.highlight(e,n);var t=c(o.event().item());g.refresh(t).each(function(n){return f(e,g,n)})})}),Hi(function(t,n){var e=n.event().target();t.getSystem().getByDom(e).each(function(n){0===c(n).indexOf("collapse-item")&&p(t,n),i(t,n,m.HighlightSubmenu).fold(function(){a.onExecute(t,n)},function(){})})}),Ri(function(t,n){e(t).each(function(n){gg.append(t,cu(n)),a.onOpenMenu(t,n),a.highlightImmediately&&u(t,n)})})].concat(a.navigateOnHover?[rr(Eg(),function(n,t){var e=t.event().item();!function(t,n){var e=c(n);g.refresh(e).bind(function(n){return l(t,n),d(t,g,n)})}(n,e),i(n,e,m.HighlightParent),a.onHover(n,e)})]:[])),y={collapseMenu:function(t){v(t).each(function(n){p(t,n)})},highlightPrimary:function(t){g.getPrimary().each(function(n){u(t,n)})},repositionMenus:function(o){g.getPrimary().bind(function(t){return v(o).bind(function(n){var t=c(n),e=R(g.getMenus()),o=Bu(S(e,zg.extractPreparedMenu));return g.getTriggeringPath(t,function(n){return function(n,t,e){return Au(t,function(n){if(!n.getSystem().isConnected())return on.none();var t=cd.getCandidates(n);return T(t,function(n){return c(n)===e})})}(0,o,n)})}).map(function(n){return{primary:t,triggeringPath:n}})}).fold(function(){(function(n){return on.from(n.components()[0]).filter(function(n){return"menu"===Mr(n.element(),"role")})})(o).each(function(n){a.onRepositionMenu(o,n,[])})},function(n){var t=n.primary,e=n.triggeringPath;a.onRepositionMenu(o,t,e)})}};return{uid:a.uid,dom:a.dom,markers:a.markers,behaviours:Vs(a.tmenuBehaviours,[dg.config({mode:"special",onRight:h(function(n,t){return Ml(t.element())?on.none():i(n,t,m.HighlightSubmenu)}),onLeft:h(function(n,t){return Ml(t.element())?on.none():p(n,t)}),onEscape:h(function(n,t){return p(n,t).orThunk(function(){return a.onEscape(n,t).map(function(){return n})})}),focusIn:function(t,n){g.getPrimary().each(function(n){Jt(t,n.element(),Eo())})}}),cd.config({highlightClass:a.markers.selectedMenu,itemClass:a.markers.menu}),nd.config({find:function(n){return cd.getHighlighted(n)}}),gg.config({})]),eventOrder:a.eventOrder,apis:y,events:b}},extraApis:{tieredData:function(n,t,e){return{primary:n,menus:t,expansions:e}},singleData:function(n,t){return{primary:n,menus:q(n,t),expansions:{}}},collapseItem:function(n){return{value:Hr(Lg()),meta:{text:n}}}}}),Ug=Al({name:"InlineView",configFields:[ct("lazySink"),Ku("onShow"),Ku("onHide"),xt("onEscape"),Is("inlineBehaviours",[Lf,nl,dc]),wt("fireDismissalEventInstead",[St("event",Po())]),wt("fireRepositionEventInstead",[St("event",zo())]),St("getRelated",on.none),St("eventOrder",on.none)],factory:function(i,n){function t(e){Lf.isOpen(e)&&nl.getValue(e).each(function(n){switch(n.mode){case"menu":Lf.getState(e).each(function(n){jg.repositionMenus(n)});break;case"position":var t=i.lazySink(e).getOrDie();_f.positionWithinBounds(t,n.anchor,e,n.getBounds())}})}var o=function(n,t,e,o){r(n,t,e,function(){return o.map(function(n){return wu(n)})})},r=function(n,t,e,o){var r=i.lazySink(n).getOrDie();Lf.openWhileCloaked(n,e,function(){return _f.positionWithinBounds(r,t,n,o())}),nl.setValue(n,on.some({mode:"position",anchor:t,getBounds:o}))},u=function(n,t,e,o){var r=function(n,t,r,e,i){function u(){return n.lazySink(t)}function a(n){return function(n){return 2===n.length}(n)?o:{}}var o="horizontal"===e.type?{layouts:{onLtr:function(){return ma()},onRtl:function(){return ga()}}}:{};return jg.sketch({dom:{tag:"div"},data:e.data,markers:e.menu.markers,onEscape:function(){return Lf.close(t),n.onEscape.map(function(n){return n(t)}),on.some(!0)},onExecute:function(){return on.some(!0)},onOpenMenu:function(n,t){_f.positionWithinBounds(u().getOrDie(),r,t,i())},onOpenSubmenu:function(n,t,e,o){var r=u().getOrDie();_f.position(r,N({anchor:"submenu",item:t},a(o)),e)},onRepositionMenu:function(n,t,e){var o=u().getOrDie();_f.positionWithinBounds(o,r,t,i()),bn(e,function(n){var t=a(n.triggeringPath);_f.position(o,N({anchor:"submenu",item:n.triggeringItem},t),n.triggeredMenu)})}})}(i,n,t,e,o);Lf.open(n,r),nl.setValue(n,on.some({mode:"menu",menu:r}))},e={setContent:function(n,t){Lf.setContent(n,t)},showAt:function(n,t,e){o(n,t,e,on.none())},showWithin:o,showWithinBounds:r,showMenuAt:function(n,t,e){u(n,t,e,function(){return on.none()})},showMenuWithinBounds:u,hide:function(n){nl.setValue(n,on.none()),Lf.close(n)},getContent:function(n){return Lf.getState(n)},reposition:t,isOpen:Lf.isOpen};return{uid:i.uid,dom:i.dom,behaviours:Vs(i.inlineBehaviours,[Lf.config({isPartOf:function(n,t,e){return ju(t,e)||function(n,t){return i.getRelated(n).exists(function(n){return ju(n,t)})}(n,e)},getAttachPoint:function(n){return i.lazySink(n).getOrDie()},onOpen:function(n){i.onShow(n)},onClose:function(n){i.onHide(n)}}),nl.config({store:{mode:"memory",initialValue:on.none()}}),dc.config({channels:N(N({},Es(N({isExtraPart:nn(!1)},i.fireDismissalEventInstead.map(function(n){return{fireEventInstead:{event:n.event}}}).getOr({})))),Ds(N(N({isExtraPart:nn(!1)},i.fireRepositionEventInstead.map(function(n){return{fireEventInstead:{event:n.event}}}).getOr({})),{doReposition:t})))})]),eventOrder:i.eventOrder,apis:e}},apis:{showAt:function(n,t,e,o){n.showAt(t,e,o)},showWithin:function(n,t,e,o,r){n.showWithin(t,e,o,r)},showWithinBounds:function(n,t,e,o,r){n.showWithinBounds(t,e,o,r)},showMenuAt:function(n,t,e,o){n.showMenuAt(t,e,o)},showMenuWithinBounds:function(n,t,e,o,r){n.showMenuWithinBounds(t,e,o,r)},hide:function(n,t){n.hide(t)},isOpen:function(n,t){return n.isOpen(t)},getContent:function(n,t){return n.getContent(t)},setContent:function(n,t,e){n.setContent(t,e)},reposition:function(n,t){n.reposition(t)}}}),Wg=function(n,t,e){return qa(fm(n,t),dm(n),e.innerNorth(),tc(),"layout-n")},Gg=function(n,t,e){return qa(fm(n,t),mm(n,t),e.innerSouth(),nc(),"layout-s")},Xg=Al({name:"Button",factory:function(n){function e(t){return Nn(n.dom,"attributes").bind(function(n){return Nn(n,t)})}var t=im(n.action),o=n.dom.tag;return{uid:n.uid,dom:n.dom,components:n.components,events:t,behaviours:el(n.buttonBehaviours,[bg.config({}),dg.config({mode:"execution",useSpace:!0,useEnter:!0})]),domModification:{attributes:function(){if("button"!==o)return{role:e("role").getOr("button")};var n=e("type").getOr("button"),t=e("role").map(function(n){return{role:n}}).getOr({});return N({type:n},t)}()},eventOrder:n.eventOrder}},configFields:[St("uid",undefined),ct("dom"),St("components",[]),tl("buttonBehaviours",[bg,dg]),ht("action"),ht("role"),St("eventOrder",{})]}),Yg={success:"checkmark",error:"warning",err:"error",warning:"warning",warn:"warning",info:"info"},qg=Al({name:"Notification",factory:function(t){function e(n){return{dom:{tag:"div",classes:["tox-bar"],attributes:{style:"width: "+n+"%"}}}}function o(n){return{dom:{tag:"div",classes:["tox-text"],innerHtml:n+"%"}}}var r=bm({dom:{tag:"p",innerHtml:t.translationProvider(t.text)},behaviours:ya([gg.config({})])}),i=bm({dom:{tag:"div",classes:t.progress?["tox-progress-bar","tox-progress-indicator"]:["tox-progress-bar"]},components:[{dom:{tag:"div",classes:["tox-bar-container"]},components:[e(0)]},o(0)],behaviours:ya([gg.config({})])}),n={updateProgress:function(n,t){n.getSystem().isConnected()&&i.getOpt(n).each(function(n){gg.set(n,[{dom:{tag:"div",classes:["tox-bar-container"]},components:[e(t)]},o(t)])})},updateText:function(n,t){if(n.getSystem().isConnected()){var e=r.get(n);gg.set(e,[Ti(t)])}}},u=H([t.icon.toArray(),t.level.toArray(),t.level.bind(function(n){return on.from(Yg[n])}).toArray()]);return{uid:t.uid,dom:{tag:"div",attributes:{role:"alert"},classes:t.level.map(function(n){return["tox-notification","tox-notification--in","tox-notification--"+n]}).getOr(["tox-notification","tox-notification--in"])},components:[{dom:{tag:"div",classes:["tox-notification__icon"],innerHtml:function(n,t){return Au(n,function(n){return on.from(t()[n])}).getOrThunk(function(){return ym(t)})}(u,t.iconProvider)}},{dom:{tag:"div",classes:["tox-notification__body"]},components:[r.asSpec()],behaviours:ya([gg.config({})])}].concat(t.progress?[i.asSpec()]:[]).concat(Xg.sketch({dom:{tag:"button",classes:["tox-notification__dismiss","tox-button","tox-button--naked","tox-button--icon"]},components:[{dom:{tag:"div",classes:["tox-icon"],innerHtml:xm("close",t.iconProvider),attributes:{"aria-label":t.translationProvider("Close")}}}],action:function(n){t.onAction(n)}})),apis:n}},configFields:[ht("level"),ct("progress"),ct("icon"),ct("onAction"),ct("text"),ct("iconProvider"),ct("translationProvider")],apis:{updateProgress:function(n,t,e){n.updateProgress(t,e)},updateText:function(n,t,e){n.updateText(t,e)}}}),Kg=tinymce.util.Tools.resolve("tinymce.util.Delay");function Jg(n,u,o){var a=u.backstage;return{open:function(n,t){function e(){t(),Ug.hide(i)}var r=au(qg.sketch({text:n.text,level:vn(["success","error","warning","warn","info"],n.type)?n.type:undefined,progress:!0===n.progressBar,icon:on.from(n.icon),onAction:e,iconProvider:a.shared.providers.icons,translationProvider:a.shared.providers.translate})),i=au(Ug.sketch({dom:{tag:"div",classes:["tox-notifications-container"]},lazySink:u.backstage.shared.getSink,fireDismissalEventInstead:{}}));return o.add(i),0<n.timeout&&Kg.setTimeout(function(){e()},n.timeout),{close:e,moveTo:function(n,t){Ug.showAt(i,{anchor:"makeshift",x:n,y:t},cu(r))},moveRel:function(n,t){if("banner"!==t){var e=function(n){switch(n){case"bc-bc":return Gg;case"tc-tc":return Wg;case"tc-bc":return rc;case"bc-tc":default:return ic}}(t),o={anchor:"node",root:Mi(),node:on.some(Be.fromDom(n)),layouts:{onRtl:function(){return[e]},onLtr:function(){return[e]}}};Ug.showAt(i,o,cu(r))}else Ug.showAt(i,u.backstage.shared.anchors.banner(),cu(r))},text:function(n){qg.updateText(r,n)},settings:n,getEl:function(){return r.element().dom()},progressBar:{value:function(n){qg.updateProgress(r,n)}}}},close:function(n){n.close()},reposition:function(n){!function(n){bn(n,function(n){return n.moveTo(0,0)})}(n),function(e){0<e.length&&(yn(e).each(function(n){return n.moveRel(null,"banner")}),bn(e,function(n,t){0<t&&n.moveRel(e[t-1].getEl(),"bc-tc")}))}(n)},getArgs:function(n){return n.settings}}}function $g(e,o){var r=null;return{cancel:function(){null!==r&&(v.clearTimeout(r),r=null)},throttle:function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];null!==r&&v.clearTimeout(r),r=v.setTimeout(function(){e.apply(null,n),r=null},o)}}}function Qg(n,t,e,o,r){var i=new _p(t,r||n.getRoot());return Ip(n,t,on.some(e),o,i.prev,on.none())}function Zg(t,e){return Rp(Be.fromDom(t.selection.getNode())).getOrThunk(function(){var n=Be.fromHtml('<span data-mce-autocompleter="1" data-mce-bogus="1"></span>',t.getDoc());return Pi(n,Be.fromDom(e.extractContents())),e.insertNode(n.dom()),br(n).each(function(n){return n.dom().normalize()}),Rc(n).map(function(n){t.selection.setCursorLocation(n.dom(),function(n){return"img"===Ko(n)?1:_c(n).fold(function(){return xr(n).length},function(n){return n.length})}(n))}),n})}function np(n,t){return n.toString().substring(t.length).replace(/\u00A0/g," ").replace(/\uFEFF/g,"")}function tp(n,u,a,c){return void 0===c&&(c=0),function(n){return n.collapsed&&3===n.startContainer.nodeType}(u)?Qg(n,u.startContainer,u.startOffset,function(e,o,r,n){var i=n.getOr(r.length);return function(n,t,e,o){var r;for(r=t-1;0<=r;r--){var i=n.charAt(r);if(Vp.test(i))return on.none();if(i===e)break}return-1===r||t-r<o?on.none():on.some(n.substring(r+1,t))}(r,i,a,1).fold(function(){return r.match(Vp)?e.abort():e.kontinue()},function(n){var t=u.cloneRange();return t.setStart(o,i-n.length-1),t.setEnd(u.endContainer,u.endOffset),r.length<c?e.abort():e.finish({text:np(t,a),range:t,triggerChar:a})})}).fold(on.none,on.none,on.some):on.none()}function ep(e,n,o,t){return void 0===t&&(t=0),Rp(Be.fromDom(n.startContainer)).fold(function(){return tp(e,n,o,t)},function(n){var t=e.createRng();return t.selectNode(n.dom()),on.some({range:t,text:np(t,o),triggerChar:o})})}function op(n,t){return{element:n,offset:t}}function rp(t,e){var n=e(),o=t.selection.getRng();return function(t,e,n){return Au(n.triggerChars,function(n){return ep(t,e,n)})}(t.dom,o,n).bind(function(n){return Lp(t,e,n)})}function ip(n){var t=n.ui.registry.getAll().popups,e=P(t,function(n){return function(n){return tt("Autocompleter",Wp,n)}(n).fold(function(n){throw new Error(ye(n))},function(n){return n})}),o=function(n){var t={};return bn(n,function(n){t[n]={}}),wn(t)}(On(e,function(n){return n.ch})),r=R(e);return{dataset:e,triggerChars:o,lookupByChar:function(t){return C(r,function(n){return n.ch===t})}}}function up(n,o,t){var r=Lc(n.element(),"."+t);if(0<r.length){var e=E(r,function(n){var t=n.dom().getBoundingClientRect().top,e=r[0].dom().getBoundingClientRect().top;return Math.abs(t-e)>o}).getOr(r.length);return on.some({numColumns:e,numRows:Math.ceil(r.length/e)})}return on.none()}function ap(n,t){return ya([Jd(n,t)])}function cp(n,t,e){n.getSystem().broadcastOn([nh],{})}function sp(n){var t=Be.fromHtml(n),e=xr(t),o=function(n){var t=n.dom().attributes!==undefined?n.dom().attributes:[];return O(t,function(n,t){var e;return"class"===t.name?n:N(N({},n),((e={})[t.name]=t.value,e))},{})}(t),r=function(n){return Array.prototype.slice.call(n.dom().classList,0)}(t),i=0===e.length?{}:{innerHtml:Dr(t)};return N({tag:Ko(t),classes:r,attributes:o},i)}function fp(n){return Nn(sh,n).getOr(uh)}function lp(n){return{dom:{tag:"div",classes:[lh],innerHtml:n}}}function dp(n){return{dom:{tag:"div",classes:[dh]},components:[Ti(ih.translate(n))]}}function mp(n,t){return{dom:{tag:"div",classes:[dh]},components:[{dom:{tag:n.tag,attributes:{style:n.styleAttr}},components:[Ti(ih.translate(t))]}]}}function gp(n){return{dom:{tag:"div",classes:["tox-collection__item-accessory"],innerHtml:hh(n)}}}function pp(n){return{dom:{tag:"div",classes:[lh,"tox-collection__item-checkmark"],innerHtml:xm("checkmark",n)}}}function hp(n,t,e,o,r){var i=e?n.checkMark.orThunk(function(){return t.or(on.some("")).map(lp)}):on.none(),u=n.ariaLabel.map(function(n){return{attributes:{title:ih.translate(n)}}}).getOr({});return{dom:An({tag:"div",classes:[uh,ah].concat(r?["tox-collection__item-icon-rtl"]:[])},u),optComponents:[i,n.htmlContent.fold(function(){return n.textContent.map(o)},function(n){return on.some(function(n){return{dom:{tag:"div",classes:[dh],innerHtml:n}}}(n))}),n.shortcutContent.map(gp),n.caret]}}function vp(n,t,e,o){void 0===o&&(o=on.none());var r=ih.isRtl()&&n.iconContent.exists(function(n){return vn(bh,n)}),i=n.iconContent.map(function(n){return ih.isRtl()&&vn(vh,n)?n+"-rtl":n}).map(function(n){return function(n,t,e){return on.from(t()[n]).or(e).getOrThunk(function(){return ym(t)})}(n,t.icons,o)}),u=on.from(n.meta).fold(function(){return dp},function(n){return Tn(n,"style")?d(mp,n.style):dp});return"color"===n.presets?function(n,t,e,o){var r,i,u;return{dom:(r=ch,i=e.getOr(""),u=n.map(function(n){return' title="'+o.translate(n)+'"'}).getOr(""),sp("custom"===t?'<button class="'+r+' tox-swatches__picker-btn"'+u+">"+i+"</button>":"remove"===t?'<div class="'+r+' tox-swatch--remove"'+u+">"+i+"</div>":'<div class="'+r+'" style="background-color: '+t+'" data-mce-color="'+t+'"'+u+"></div>")),optComponents:[]}}(n.ariaLabel,n.value,i,t):hp(n,i,e,u,r)}function bp(n,t,e){t.disabled&&xh(n,t)}function yp(n,t){return!0===t.useNative&&vn(yh,Ko(n.element()))}function xp(n){_r(n.element(),"disabled","disabled")}function wp(n){Ir(n.element(),"disabled")}function Sp(n){_r(n.element(),"aria-disabled","true")}function Cp(n){_r(n.element(),"aria-disabled","false")}function kp(t,n,e){n.disableClass.each(function(n){ri(t.element(),n)}),(yp(t,n)?wp:Cp)(t),n.onEnabled(t)}function Op(n,t){return yp(n,t)?function(n){return Fr(n.element(),"disabled")}(n):function(n){return"true"===Mr(n.element(),"aria-disabled")}(n)}function Tp(n,t){var e=n.getApi(t);return function(n){n(e)}}function Ep(e,o){return Ri(function(n){Tp(e,n)(function(n){var t=e.onSetup(n);null!==t&&t!==undefined&&o.set(t)})})}function Dp(t,e){return Vi(function(n){return Tp(t,n)(e.get())})}var Bp,Ap,_p=tinymce.util.Tools.resolve("tinymce.dom.TreeWalker"),Mp=En([{aborted:[]},{edge:["element"]},{success:["info"]}]),Fp=En([{abort:[]},{kontinue:[]},{finish:["info"]}]),Ip=function(t,e,n,o,r,i){function u(){return i.fold(Mp.aborted,Mp.edge)}function a(){var n=r();return n?Ip(t,n,on.none(),o,r,on.some(e)):u()}if(function(n,t){return n.isBlock(t)||vn(["BR","IMG","HR","INPUT"],t.nodeName)||"false"===n.getContentEditable(t)}(t,e))return u();if(function(n){return n.nodeType===v.Node.TEXT_NODE}(e)){var c=e.textContent;return o(Fp,e,c,n).fold(Mp.aborted,function(){return a()},Mp.success)}return a()},Rp=function(n){return Tu(n,"[data-mce-autocompleter]")},Vp=/[\u00a0 \t\r\n]/,Np=function(e,n){n.on("keypress compositionend",e.onKeypress.throttle),n.on("remove",e.onKeypress.cancel);function o(n,t){qt(n,go(),{raw:t})}n.on("keydown",function(t){function n(){return e.getView().bind(cd.getHighlighted)}8===t.which&&e.onKeypress.throttle(t),e.isActive()&&(27===t.which&&e.cancelIfNecessary(),e.isMenuOpen()?13===t.which?(n().each(Kt),t.preventDefault()):40===t.which?(n().fold(function(){e.getView().each(cd.highlightFirst)},function(n){o(n,t)}),t.preventDefault(),t.stopImmediatePropagation()):37!==t.which&&38!==t.which&&39!==t.which||n().each(function(n){o(n,t),t.preventDefault(),t.stopImmediatePropagation()}):13!==t.which&&38!==t.which&&40!==t.which||e.cancelIfNecessary())}),n.on("NodeChange",function(n){e.isActive()&&!e.isProcessingAction()&&Rp(Be.fromDom(n.element)).isNone()&&e.cancelIfNecessary()})},Hp=tinymce.util.Tools.resolve("tinymce.util.Promise"),Pp=function(n){if(function(n){return n.nodeType===v.Node.TEXT_NODE}(n))return op(n,n.data.length);var t=n.childNodes;return 0<t.length?Pp(t[t.length-1]):op(n,t.length)},zp=function(n,t){var e=n.childNodes;return 0<e.length&&t<e.length?zp(e[t],0):0<e.length&&function(n){return n.nodeType===v.Node.ELEMENT_NODE}(n)&&e.length===t?Pp(e[e.length-1]):op(n,t)},Lp=function(t,n,e,o){void 0===o&&(o={});var r=n(),i=t.selection.getRng().startContainer.nodeValue,u=C(r.lookupByChar(e.triggerChar),function(n){return e.text.length>=n.minChars&&n.matches.getOrThunk(function(){return function(e){function o(n,t,e,o){var r=o.getOr(e.length);return 0===r?n.kontinue():n.finish(/\s/.test(e.charAt(r-1)))}return function(n){var t=zp(n.startContainer,n.startOffset);return Qg(e,t.element,t.offset,o).fold(nn(!0),nn(!0),l)}}(t.dom)})(e.range,i,e.text)});if(0===u.length)return on.none();var a=Hp.all(S(u,function(t){return t.fetch(e.text,t.maxResults,o).then(function(n){return{matchText:e.text,items:n,columns:t.columns,onAction:t.onAction}})}));return on.some({lookupData:a,context:e})},jp=de([ft("type"),yt("text")]),Up=de([At("type",function(){return"autocompleteitem"}),At("active",function(){return!1}),At("disabled",function(){return!1}),St("meta",{}),ft("value"),yt("text"),yt("icon")]),Wp=de([ft("type"),ft("ch"),kt("minChars",1),St("columns",1),kt("maxResults",10),xt("matches"),dt("fetch"),dt("onAction")]),Gp=[Et("disabled",!1),yt("text"),yt("shortcut"),he("value","value",In(function(){return Hr("menuitem-value")}),xe()),St("meta",{})],Xp=de([ft("type"),Dt("onSetup",function(){return Z}),Dt("onAction",Z),yt("icon")].concat(Gp)),Yp=de([ft("type"),dt("getSubmenuItems"),Dt("onSetup",function(){return Z}),yt("icon")].concat(Gp)),qp=de([ft("type"),Et("active",!1),Dt("onSetup",function(){return Z}),dt("onAction")].concat(Gp)),Kp=de([ft("type"),Et("active",!1),yt("icon")].concat(Gp)),Jp=de([ft("type"),lt("fancytype",["inserttable","colorswatch"]),Dt("onAction",Z)]),$p=function(n){return ap(Hr("unnamed-events"),n)},Qp=[ct("lazySink"),ct("tooltipDom"),St("exclusive",!0),St("tooltipComponents",[]),St("delay",300),Tt("mode","normal",["normal","follow-highlight"]),St("anchor",function(n){return{anchor:"hotspot",hotspot:n,layouts:{onLtr:nn([ic,rc,aa,sa,ca,fa]),onRtl:nn([ic,rc,aa,sa,ca,fa])}}}),Ku("onHide"),Ku("onShow")],Zp=/* */Object.freeze({init:function(){function e(){o.get().each(function(n){v.clearTimeout(n)})}var o=Ee(on.none()),t=Ee(on.none()),n=nn("not-implemented");return tu({getTooltip:function(){return t.get()},isShowing:function(){return t.get().isSome()},setTooltip:function(n){t.set(on.some(n))},clearTooltip:function(){t.set(on.none())},clearTimer:e,resetTimer:function(n,t){e(),o.set(on.some(v.setTimeout(function(){n()},t)))},readState:n})}}),nh=Hr("tooltip.exclusive"),th=Hr("tooltip.show"),eh=Hr("tooltip.hide"),oh=/* */Object.freeze({hideAllExclusive:cp,setComponents:function(n,t,e,o){e.getTooltip().each(function(n){n.getSystem().isConnected()&&gg.set(n,o)})}}),rh=xa({fields:Qp,name:"tooltipping",active:/* */Object.freeze({events:function(o,r){function e(t){r.getTooltip().each(function(n){ys(n),o.onHide(t,n),r.clearTooltip()}),r.clearTimer()}return tr(H([[rr(th,function(n){r.resetTimer(function(){!function(t){if(!r.isShowing()){cp(t);var n=o.lazySink(t).getOrDie(),e=t.getSystem().build({dom:o.tooltipDom,components:o.tooltipComponents,events:tr("normal"===o.mode?[rr(fo(),function(n){Yt(t,th)}),rr(co(),function(n){Yt(t,eh)})]:[]),behaviours:ya([gg.config({})])});r.setTooltip(e),vs(n,e),o.onShow(t,e),_f.position(n,o.anchor(t),e)}}(n)},o.delay)}),rr(eh,function(n){r.resetTimer(function(){e(n)},o.delay)}),rr(Oo(),function(n,t){vn(t.channels(),nh)&&e(n)}),Vi(function(n){e(n)})],"normal"===o.mode?[rr(lo(),function(n){Yt(n,th)}),rr(Co(),function(n){Yt(n,eh)}),rr(fo(),function(n){Yt(n,th)}),rr(co(),function(n){Yt(n,eh)})]:[rr(Go(),function(n,t){Yt(n,th)}),rr(Xo(),function(n){Yt(n,eh)})]]))}}),state:Zp,apis:oh}),ih=tinymce.util.Tools.resolve("tinymce.util.I18n"),uh="tox-menu-nav__js",ah="tox-collection__item",ch="tox-swatch",sh={normal:uh,color:ch},fh="tox-collection__item--enabled",lh="tox-collection__item-icon",dh="tox-collection__item-label",mh="tox-collection__item-caret",gh="tox-collection__item--active",ph=tinymce.util.Tools.resolve("tinymce.Env"),hh=function(n){var e=ph.mac?{alt:"&#x2325;",ctrl:"&#x2303;",shift:"&#x21E7;",meta:"&#x2318;",access:"&#x2303;&#x2325;"}:{meta:"Ctrl",access:"Shift+Alt"},t=n.split("+"),o=S(t,function(n){var t=n.toLowerCase().trim();return Tn(e,t)?e[t]:n});return ph.mac?o.join(""):o.join("+")},vh=["list-num-default","list-num-lower-alpha","list-num-lower-greek","list-num-lower-roman","list-num-upper-alpha","list-num-upper-roman"],bh=["list-bull-circle","list-bull-default","list-bull-square"],yh=["input","button","textarea","select"],xh=function(t,n,e){n.disableClass.each(function(n){ei(t.element(),n)}),(yp(t,n)?xp:Sp)(t),n.onDisabled(t)},wh=/* */Object.freeze({enable:kp,disable:xh,isDisabled:Op,onLoad:bp,set:function(n,t,e,o){(o?xh:kp)(n,t,e)}}),Sh=/* */Object.freeze({exhibit:function(n,t,e){return Gr({classes:t.disabled?t.disableClass.map(M).getOr([]):[]})},events:function(e,n){return tr([er(To(),function(n,t){return Op(n,e)}),pa(e,n,bp)])}}),Ch=[St("disabled",!1),St("useNative",!0),ht("disableClass"),Ku("onDisabled"),Ku("onEnabled")],kh=xa({fields:Ch,name:"disabling",active:Sh,apis:wh}),Oh=function(n){return kh.config({disabled:n,disableClass:"tox-collection__item--state-disabled"})},Th=function(n){return kh.config({disabled:n})},Eh=function(n){return kh.config({disabled:n,disableClass:"tox-tbtn--disabled"})},Dh=function(n){return kh.config({disabled:n,disableClass:"tox-tbtn--disabled",useNative:!1})};(Ap=Bp=Bp||{})[Ap.CLOSE_ON_EXECUTE=0]="CLOSE_ON_EXECUTE",Ap[Ap.BUBBLE_TO_SANDBOX=1]="BUBBLE_TO_SANDBOX";function Bh(n){return D(n,function(n){return n.toArray()})}function Ah(n,t,e){var o=Ee(Z);return{type:"item",dom:t.dom,components:Bh(t.optComponents),data:n.data,eventOrder:Rh,hasSubmenu:n.triggersSubmenu,itemBehaviours:ya([Jd("item-events",[function(e,o){return Hi(function(n,t){Tp(e,n)(e.onAction),e.triggersSubmenu||o!==Ih.CLOSE_ON_EXECUTE||(Yt(n,Ao()),t.stop())})}(n,e),Ep(n,o),Dp(n,o)]),Oh(n.disabled),gg.config({})].concat(n.itemBehaviours))}}function _h(n){return{value:n.value,meta:An({text:n.text.getOr("")},n.meta)}}function Mh(n,t){var e=function(n){return Vh.DOM.encode(n)}(ih.translate(n));if(0<t.length){var o=new RegExp(function(n){return n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}(t),"gi");return e.replace(o,function(n){return'<span class="tox-autocompleter-highlight">'+n+"</span>"})}return e}function Fh(t,e,n){function o(n){return qt(n,Ph,{row:t,col:e})}var r;return au({dom:{tag:"div",attributes:(r={role:"button"},r["aria-labelledby"]=n,r)},behaviours:ya([Jd("insert-table-picker-cell",[rr(fo(),bg.focus),rr(To(),o),rr(Xt(),function(n,t){t.stop(),o(n)})]),kg.config({toggleClass:"tox-insert-table-picker__selected",toggleOnExecute:!1}),bg.config({onFocus:function(n){return qt(n,Hh,{row:t,col:e})}})])})}var Ih=Bp,Rh={"alloy.execute":["disabling","alloy.base.behaviour","toggling","item-events"]},Vh=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),Nh=nn(Us("item-widget",_g())),Hh=Hr("cell-over"),Ph=Hr("cell-execute");function zh(n){return{value:nn(n)}}function Lh(n){return $h.test(n)||Qh.test(n)}function jh(n){var t=function(n){var t=n.value().replace($h,function(n,t,e,o){return t+t+e+e+o+o});return{value:nn(t)}}(n),e=Qh.exec(t.value());return null===e?["FFFFFF","FF","FF","FF"]:e}function Uh(n){var t=n.toString(16);return 1===t.length?"0"+t:t}function Wh(n){var t=Uh(n.red())+Uh(n.green())+Uh(n.blue());return zh(t)}function Gh(n,t,e,o){return{red:nn(n),green:nn(t),blue:nn(e),alpha:nn(o)}}function Xh(n){var t=parseInt(n,10);return t.toString()===n&&0<=t&&t<=255}function Yh(n){var t,e,o,r=(n.hue()||0)%360,i=n.saturation()/100,u=n.value()/100;if(i=nv(0,Zh(i,1)),u=nv(0,Zh(u,1)),0===i)return t=e=o=tv(255*u),Gh(t,e,o,1);var a=r/60,c=u*i,s=c*(1-Math.abs(a%2-1)),f=u-c;switch(Math.floor(a)){case 0:t=c,e=s,o=0;break;case 1:t=s,e=c,o=0;break;case 2:t=0,e=c,o=s;break;case 3:t=0,e=s,o=c;break;case 4:t=s,e=0,o=c;break;case 5:t=c,e=0,o=s;break;default:t=e=o=0}return t=tv(255*(t+f)),e=tv(255*(e+f)),o=tv(255*(o+f)),Gh(t,e,o,1)}function qh(n){var t=jh(n),e=parseInt(t[1],16),o=parseInt(t[2],16),r=parseInt(t[3],16);return Gh(e,o,r,1)}function Kh(n,t,e,o){var r=parseInt(n,10),i=parseInt(t,10),u=parseInt(e,10),a=parseFloat(o);return Gh(r,i,u,a)}function Jh(n){return"rgba("+n.red()+","+n.green()+","+n.blue()+","+n.alpha()+")"}var $h=/^#?([a-f\d])([a-f\d])([a-f\d])$/i,Qh=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i,Zh=Math.min,nv=Math.max,tv=Math.round,ev=/^rgb\((\d+),\s*(\d+),\s*(\d+)\)/,ov=/^rgba\((\d+),\s*(\d+),\s*(\d+),\s*(\d?(?:\.\d+)?)\)/,rv=nn(Gh(255,0,0,1)),iv=tinymce.util.Tools.resolve("tinymce.util.LocalStorage"),uv="tinymce-custom-colors";function av(n){var t=[],u=v.document.createElement("canvas");u.height=1,u.width=1;for(var a=u.getContext("2d"),c=function(n,t){var e=t/255;return("0"+Math.round(n*e+255*(1-e)).toString(16)).slice(-2).toUpperCase()},e=function(n){if(/^[0-9A-Fa-f]{6}$/.test(n))return"#"+n.toUpperCase();a.clearRect(0,0,u.width,u.height),a.fillStyle="#FFFFFF",a.fillStyle=n,a.fillRect(0,0,1,1);var t=a.getImageData(0,0,1,1).data,e=t[0],o=t[1],r=t[2],i=t[3];return"#"+c(e,i)+c(o,i)+c(r,i)},o=0;o<n.length;o+=2)t.push({text:n[o+1],value:e(n[o]),type:"choiceitem"});return t}function cv(n){return n.getParam("color_map")}function sv(n,e){var o;return n.dom.getParents(n.selection.getStart(),function(n){var t;(t=n.style["forecolor"===e?"color":"background-color"])&&(o=o||t)}),o}function fv(n){return Math.max(5,Math.ceil(Math.sqrt(n)))}function lv(n){var t=Rv(n),e=fv(t.length);return Fv(n,e)}function dv(t,e,n,o){"custom"===n?Uv(t)(function(n){n.each(function(n){Nv(n),t.execCommand("mceApplyTextcolor",e,n),o(n)})},"#000000"):"remove"===n?(o(""),t.execCommand("mceRemoveTextcolor",e)):(o(n),t.execCommand("mceApplyTextcolor",e,n))}function mv(n,t){return n.concat(Vv().concat(function(n){var t="choiceitem",e={type:t,text:"Remove color",icon:"color-swatch-remove-color",value:"remove"};return n?[e,{type:t,text:"Custom color",icon:"color-picker",value:"custom"}]:[e]}(t)))}function gv(t,e){return function(n){n(mv(t,e))}}function pv(n,t,e){var o,r;o="forecolor"===t?"tox-icon-text-color__color":"tox-icon-highlight-bg-color__color",r=e,n.setIconFill(o,r),n.setIconStroke(o,r)}function hv(o,e,r,n,i){o.ui.registry.addSplitButton(e,{tooltip:n,presets:"color",icon:"forecolor"===e?"text-color":"highlight-bg-color",select:function(e){return on.from(sv(o,r)).bind(function(n){return function(n){if("transparent"===n)return on.some(Gh(0,0,0,0));var t=ev.exec(n);if(null!==t)return on.some(Kh(t[1],t[2],t[3],"1"));var e=ov.exec(n);return null!==e?on.some(Kh(e[1],e[2],e[3],e[4])):on.none()}(n).map(function(n){var t=Wh(n).value();return Vt(e.toLowerCase(),t)})}).getOr(!1)},columns:lv(o),fetch:gv(Rv(o),Iv(o)),onAction:function(n){null!==i.get()&&dv(o,r,i.get(),function(){})},onItemAction:function(n,t){dv(o,r,t,function(n){i.set(n),jv(o,{name:e,color:n})})},onSetup:function(t){null!==i.get()&&pv(t,e,i.get());function n(n){n.name===e&&pv(t,n.name,n.color)}return o.on("TextColorChange",n),function(){o.off("TextColorChange",n)}}})}function vv(t,n,e,o){t.ui.registry.addNestedMenuItem(n,{text:o,icon:"forecolor"===n?"text-color":"highlight-bg-color",getSubmenuItems:function(){return[{type:"fancymenuitem",fancytype:"colorswatch",onAction:function(n){dv(t,e,n.value,Z)}}]}})}function bv(e,o){return function(n){var t=w(n,o);return S(t,function(n){return{dom:e,components:n}})}}function yv(n,e){var o=[],r=[];return bn(n,function(n,t){e(n,t)?(0<r.length&&o.push(r),r=[],Tn(n.dom,"innerHtml")&&r.push(n)):r.push(n)}),0<r.length&&o.push(r),S(o,function(n){return{dom:{tag:"div",classes:["tox-collection__group"]},components:n}})}function xv(t,e,n){return{dom:{tag:"div",classes:["tox-menu","tox-collection"].concat(1===t?["tox-collection--list"]:["tox-collection--grid"])},components:[Ng.parts().items({preprocess:function(n){return"auto"!==t&&1<t?bv({tag:"div",classes:["tox-collection__group"]},t)(n):yv(n,function(n,t){return"separator"===e[t].type})}})]}}function wv(n){return{backgroundMenu:"tox-background-menu",selectedMenu:"tox-selected-menu",selectedItem:"tox-collection__item--active",hasIcons:"tox-menu--has-icons",menu:function(n){return"color"===n?"tox-swatches":"tox-menu"}(n),tieredMenu:"tox-tiered-menu"}}function Sv(n){var t=wv(n);return{backgroundMenu:t.backgroundMenu,selectedMenu:t.selectedMenu,menu:t.menu,selectedItem:t.selectedItem,item:fp(n)}}function Cv(n,t,e){var o=wv(e);return{dom:{tag:"div",classes:H([[o.tieredMenu]])},markers:Sv(e)}}function kv(n){return n.icon!==undefined||"togglemenuitem"===n.type||"choicemenuitem"===n.type}function Ov(n){return v.console.error(ye(n)),v.console.log(n),on.none()}function Tv(n,t,e,o,r){var i=function(e){return{dom:{tag:"div",classes:["tox-collection","tox-collection--horizontal"]},components:[Ng.parts().items({preprocess:function(n){return yv(n,function(n,t){return"separator"===e[t].type})}})]}}(e);return{value:n,dom:i.dom,components:i.components,items:e}}function Ev(n,t,e,o,r){var i;return"color"===r?{value:n,dom:(i=function(n){return{dom:{tag:"div",classes:["tox-menu","tox-swatches-menu"]},components:[{dom:{tag:"div",classes:["tox-swatches"]},components:[Ng.parts().items({preprocess:"auto"!==n?bv({tag:"div",classes:["tox-swatches__row"]},n):l})]}]}}(o)).dom,components:i.components,items:e}:"normal"===r&&"auto"===o?{value:n,dom:(i=xv(o,e)).dom,components:i.components,items:e}:"normal"===r&&1===o?{value:n,dom:(i=xv(1,e)).dom,components:i.components,items:e}:"normal"===r?{value:n,dom:(i=xv(o,e)).dom,components:i.components,items:e}:"listpreview"!==r||"auto"===o?{value:n,dom:function(n,t,e){var o=wv(e);return{tag:"div",classes:H([[o.menu,"tox-menu-"+t+"-column"],n?[o.hasIcons]:[]])}}(t,o,r),components:Gv,items:e}:{value:n,dom:(i=function(n){return{dom:{tag:"div",classes:["tox-menu","tox-collection","tox-collection--toolbar","tox-collection--toolbar-lg"]},components:[Ng.parts().items({preprocess:bv({tag:"div",classes:["tox-collection__group"]},n)})]}}(o)).dom,components:i.components,items:e}}function Dv(n,t,e,o,r,i,u,a){var c=function(n){return x(n,kv)}(t),s=Xv(t,e,o,"color"!==r?"normal":"color",i,u,a);return Ev(n,c,s,o,r)}function Bv(n,t){var e=Sv(t);return 1===n?{mode:"menu",moveOnTab:!0}:"auto"===n?{mode:"grid",selector:"."+e.item,initSize:{numColumns:1,numRows:1}}:{mode:"matrix",rowSelector:"."+("color"===t?"tox-swatches__row":"tox-collection__group")}}var Av="choiceitem",_v=[{type:Av,text:"Light Green",value:"#BFEDD2"},{type:Av,text:"Light Yellow",value:"#FBEEB8"},{type:Av,text:"Light Red",value:"#F8CAC6"},{type:Av,text:"Light Purple",value:"#ECCAFA"},{type:Av,text:"Light Blue",value:"#C2E0F4"},{type:Av,text:"Green",value:"#2DC26B"},{type:Av,text:"Yellow",value:"#F1C40F"},{type:Av,text:"Red",value:"#E03E2D"},{type:Av,text:"Purple",value:"#B96AD9"},{type:Av,text:"Blue",value:"#3598DB"},{type:Av,text:"Dark Turquoise",value:"#169179"},{type:Av,text:"Orange",value:"#E67E23"},{type:Av,text:"Dark Red",value:"#BA372A"},{type:Av,text:"Dark Purple",value:"#843FA1"},{type:Av,text:"Dark Blue",value:"#236FA1"},{type:Av,text:"Light Gray",value:"#ECF0F1"},{type:Av,text:"Medium Gray",value:"#CED4D9"},{type:Av,text:"Gray",value:"#95A5A6"},{type:Av,text:"Dark Gray",value:"#7E8C8D"},{type:Av,text:"Navy Blue",value:"#34495E"},{type:Av,text:"Black",value:"#000000"},{type:Av,text:"White",value:"#ffffff"}],Mv=function uI(t){void 0===t&&(t=10);var n,e=iv.getItem(uv),o=cn(e)?JSON.parse(e):[],r=t-(n=o).length<0?n.slice(0,t):n,i=function(n){r.splice(n,1)};return{add:function(n){(function(n,t){var e=y(n,t);return-1===e?on.none():on.some(e)})(r,n).each(i),r.unshift(n),r.length>t&&r.pop(),iv.setItem(uv,JSON.stringify(r))},state:function(){return r.slice(0)}}}(10),Fv=function(n,t){return n.getParam("color_cols",t,"number")},Iv=function(n){return!1!==n.getParam("custom_colors")},Rv=function(n){var t=cv(n);return t!==undefined?av(t):_v},Vv=function(){return S(Mv.state(),function(n){return{type:Av,text:n,value:n}})},Nv=function(n){Mv.add(n)},Hv=function(n){return n.fire("SkinLoaded")},Pv=function(n){return n.fire("ResizeEditor")},zv=function(n,t){return n.fire("ScrollContent",t)},Lv=function(n,t){return n.fire("ResizeContent",t)},jv=function(n,t){return n.fire("TextColorChange",t)},Uv=function(i){return function(n,t){var e,o={colorpicker:t},r=(e=n,function(n){var t=n.getData();e(on.from(t.colorpicker)),n.close()});i.windowManager.open({title:"Color Picker",size:"normal",body:{type:"panel",items:[{type:"colorpicker",name:"colorpicker",label:"Color"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:o,onAction:function(n,t){"hex-valid"===t.name&&(t.value?n.enable("ok"):n.disable("ok"))},onSubmit:r,onClose:function(){},onCancel:function(){n(on.none())}})}},Wv={register:function(n){!function(e){e.addCommand("mceApplyTextcolor",function(n,t){!function(n,t,e){n.undoManager.transact(function(){n.focus(),n.formatter.apply(t,{value:e}),n.nodeChanged()})}(e,n,t)}),e.addCommand("mceRemoveTextcolor",function(n){!function(n,t){n.undoManager.transact(function(){n.focus(),n.formatter.remove(t,{value:null},null,!0),n.nodeChanged()})}(e,n)})}(n);var t=Ee(null),e=Ee(null);hv(n,"forecolor","forecolor","Text color",t),hv(n,"backcolor","hilitecolor","Background color",e),vv(n,"forecolor","forecolor","Text color"),vv(n,"backcolor","hilitecolor","Background color")},getColors:mv,getFetch:gv,colorPickerDialog:Uv,getCurrentColor:sv,getColorCols:lv,calcCols:fv},Gv=[Ng.parts().items({})],Xv=function(n,e,o,r,i,u,a){return Bu(S(n,function(t){return"choiceitem"===t.type?function(n){return tt("choicemenuitem",Kp,n)}(t).fold(Ov,function(n){return on.some(function(t,n,e,o,r,i,u){var a=vp({presets:e,textContent:n?t.text:on.none(),htmlContent:on.none(),ariaLabel:t.text,iconContent:t.icon,shortcutContent:n?t.shortcut:on.none(),checkMark:n?on.some(pp(u.icons)):on.none(),caret:on.none(),value:t.value},u,!0);return Bn(Ah({data:_h(t),disabled:t.disabled,getApi:function(t){return{setActive:function(n){kg.set(t,n)},isActive:function(){return kg.isOn(t)},isDisabled:function(){return kh.isDisabled(t)},setDisabled:function(n){return kh.set(t,n)}}},onAction:function(n){return o(t.value)},onSetup:function(n){return n.setActive(r),function(){}},triggersSubmenu:!1,itemBehaviours:[]},a,i),{toggling:{toggleClass:fh,toggleOnExecute:!1,selected:t.active}})}(n,1===o,r,e,u(t.value),i,a))}):on.none()}))};var Yv,qv,Kv={inserttable:function aI(o){var n=Hr("size-label"),i=function(n,t,e){for(var o=[],r=0;r<t;r++){for(var i=[],u=0;u<e;u++)i.push(Fh(r,u,n));o.push(i)}return o}(n,10,10),u=bm({dom:{tag:"span",classes:["tox-insert-table-picker__label"],attributes:{id:n}},components:[Ti("0x0")],behaviours:ya([gg.config({})])});return{type:"widget",data:{value:Hr("widget-id")},dom:{tag:"div",classes:["tox-fancymenuitem"]},autofocus:!0,components:[Nh().widget({dom:{tag:"div",classes:["tox-insert-table-picker"]},components:function(n){return D(n,function(n){return S(n,cu)})}(i).concat(u.asSpec()),behaviours:ya([Jd("insert-table-picker",[cr(Hh,function(n,t,e){var o=e.event().row(),r=e.event().col();!function(n,t,e,o,r){for(var i=0;i<o;i++)for(var u=0;u<r;u++)kg.set(n[i][u],i<=t&&u<=e)}(i,o,r,10,10),gg.set(u.get(n),[function(n,t){return Ti(t+1+"x"+(n+1))}(o,r)])}),cr(Ph,function(n,t,e){o.onAction({numRows:e.event().row()+1,numColumns:e.event().col()+1}),Yt(n,Ao())})]),dg.config({initSize:{numRows:10,numColumns:10},mode:"flatgrid",selector:'[role="button"]'})])})]}},colorswatch:function cI(t,n){var e=Wv.getColors(n.colorinput.getColors(),n.colorinput.hasCustomColors()),o=n.colorinput.getColorCols(),r=Dv(Hr("menu-value"),e,function(n){t.onAction({value:n})},o,"color",Ih.CLOSE_ON_EXECUTE,function(){return!1},n.shared.providers),i=Bn(N(N({},r),{markers:Sv("color"),movement:Bv(o,"color")}));return{type:"widget",data:{value:Hr("widget-id")},dom:{tag:"div",classes:["tox-fancymenuitem"]},autofocus:!0,components:[Nh().widget(Ng.sketch(i))]}}},Jv=function(t,e,n,o,r,i,u,a){void 0===a&&(a=!0);var c=vp({presets:o,textContent:on.none(),htmlContent:n?t.text.map(function(n){return Mh(n,e)}):on.none(),ariaLabel:t.text,iconContent:t.icon,shortcutContent:on.none(),checkMark:on.none(),caret:on.none(),value:t.value},u.providers,a,t.icon);return Ah({data:_h(t),disabled:t.disabled,getApi:function(){return{}},onAction:function(n){return r(t.value,t.meta)},onSetup:function(){return function(){}},triggersSubmenu:!1,itemBehaviours:function(n,t){return V(n,"tooltipWorker").map(function(e){return[rh.config({lazySink:t.getSink,tooltipDom:{tag:"div",classes:["tox-tooltip-worker-container"]},tooltipComponents:[],anchor:function(n){return{anchor:"submenu",item:n,overrides:{maxHeightFunction:kf}}},mode:"follow-highlight",onShow:function(t,n){e(function(n){rh.setComponents(t,[iu({element:Be.fromDom(n)})])})}})]}).getOr([])}(t.meta,u)},c,i)},$v=function(n){var t=n.text.fold(function(){return{}},function(n){return{innerHtml:n}});return{type:"separator",dom:N({tag:"div",classes:[ah,"tox-collection__group-heading"]},t),components:[]}},Qv=function(n,t,e,o){void 0===o&&(o=!0);var r=vp({presets:"normal",iconContent:n.icon,textContent:n.text,htmlContent:on.none(),ariaLabel:n.text,caret:on.none(),checkMark:on.none(),shortcutContent:n.shortcut},e,o);return Ah({data:_h(n),getApi:function(t){return{isDisabled:function(){return kh.isDisabled(t)},setDisabled:function(n){return kh.set(t,n)}}},disabled:n.disabled,onAction:n.onAction,onSetup:n.onSetup,triggersSubmenu:!1,itemBehaviours:[]},r,t)},Zv=function(n,t,e,o,r){void 0===o&&(o=!0),void 0===r&&(r=!1);var i=r?function(n){return{dom:{tag:"div",classes:[mh],innerHtml:xm("chevron-down",n)}}}(e.icons):function(n){return{dom:{tag:"div",classes:[mh],innerHtml:xm("chevron-right",n)}}}(e.icons),u=vp({presets:"normal",iconContent:n.icon,textContent:n.text,htmlContent:on.none(),ariaLabel:n.text,caret:on.some(i),checkMark:on.none(),shortcutContent:n.shortcut},e,o);return Ah({data:_h(n),getApi:function(t){return{isDisabled:function(){return kh.isDisabled(t)},setDisabled:function(n){return kh.set(t,n)}}},disabled:n.disabled,onAction:Z,onSetup:n.onSetup,triggersSubmenu:!0,itemBehaviours:[]},u,t)},nb=function(n,t,e){var o=vp({iconContent:on.none(),textContent:n.text,htmlContent:on.none(),ariaLabel:n.text,checkMark:on.some(pp(e.icons)),caret:on.none(),shortcutContent:n.shortcut,presets:"normal",meta:n.meta},e,!0);return Bn(Ah({data:_h(n),disabled:n.disabled,getApi:function(t){return{setActive:function(n){kg.set(t,n)},isActive:function(){return kg.isOn(t)},isDisabled:function(){return kh.isDisabled(t)},setDisabled:function(n){return kh.set(t,n)}}},onAction:n.onAction,onSetup:n.onSetup,triggersSubmenu:!1,itemBehaviours:[]},o,t),{toggling:{toggleClass:fh,toggleOnExecute:!1,selected:n.active}})},tb=function(t,e){return function(n,t){return Object.prototype.hasOwnProperty.call(n,t)?on.some(n[t]):on.none()}(Kv,t.fancytype).map(function(n){return n(t,e)})};(qv=Yv=Yv||{})[qv.ContentFocus=0]="ContentFocus",qv[qv.UiFocus=1]="UiFocus";function eb(n){return n.icon!==undefined||"togglemenuitem"===n.type||"choicemenuitem"===n.type}function ob(n){return x(n,eb)}function rb(n,t,e,o,r){function i(n){return r?N(N({},n),{shortcut:on.none(),icon:n.text.isSome()?on.none():n.icon}):n}var u=e.shared.providers;switch(n.type){case"menuitem":return function(n){return tt("menuitem",Xp,n)}(n).fold(Ov,function(n){return on.some(Qv(i(n),t,u,o))});case"nestedmenuitem":return function(n){return tt("nestedmenuitem",Yp,n)}(n).fold(Ov,function(n){return on.some(Zv(i(n),t,u,o,r))});case"togglemenuitem":return function(n){return tt("togglemenuitem",qp,n)}(n).fold(Ov,function(n){return on.some(nb(i(n),t,u))});case"separator":return function(n){return tt("separatormenuitem",jp,n)}(n).fold(Ov,function(n){return on.some($v(n))});case"fancymenuitem":return function(n){return tt("fancymenuitem",Jp,n)}(n).fold(Ov,function(n){return tb(i(n),e)});default:return v.console.error("Unknown item in general menu",n),on.none()}}function ib(n,t,e,o,r,i){var u=1===o,a=!u||ob(n);return Bu(S(n,function(n){return"separator"===n.type?function(n){return tt("Autocompleter.Separator",jp,n)}(n).fold(Ov,function(n){return on.some($v(n))}):function(n){return tt("Autocompleter.Item",Up,n)}(n).fold(Ov,function(n){return on.some(Jv(n,t,u,"normal",e,r,i,a))})}))}function ub(n,t,e,o,r){var i=ob(t),u=Bu(S(t,function(n){function t(n){return rb(n,e,o,function(n){return r?!n.hasOwnProperty("text"):i}(n),r)}return"nestedmenuitem"===n.type&&n.getSubmenuItems().length<=0?t(An(n,{disabled:!0})):t(n)}));return(r?Tv:Ev)(n,i,u,1,"normal")}function ab(n){return jg.singleData(n.value,n)}function cb(n){function t(){n.stopPropagation()}function e(){n.preventDefault()}var o=Be.fromDom(n.target),r=i(e,t);return function(n,t,e,o,r,i,u){return{target:nn(n),x:nn(t),y:nn(e),stop:o,prevent:r,kill:i,raw:nn(u)}}(o,n.clientX,n.clientY,t,e,r,n)}function sb(n,t,e,o,r){var i=function(t,e){return function(n){t(n)&&e(cb(n))}}(e,o);return n.dom().addEventListener(t,i,r),{unbind:d(gb,n,t,i,r)}}function fb(n,t,e){return function(n,t,e,o){return sb(n,t,e,o,!1)}(n,t,pb,e)}function lb(n,t,e){return function(n,t,e,o){return sb(n,t,e,o,!0)}(n,t,pb,e)}function db(n,t,e){return Tu(n,t,e).isSome()}var mb=function(u,a){function e(){return s.get().isSome()}function c(){e()&&Ug.hide(l)}function i(n,t,e,o){n.matchLength=t.text.length;var r=Au(e,function(n){return on.from(n.columns)}).getOr(1);Ug.showAt(l,{anchor:"node",root:Be.fromDom(u.getBody()),node:on.from(n.element)},Ng.sketch(function(n,t,e,o){var r=e===Yv.ContentFocus?Yl():Xl(),i=Bv(t,o),u=Sv(o);return{dom:n.dom,components:n.components,items:n.items,value:n.value,markers:{selectedItem:u.selectedItem,item:u.item},movement:i,fakeFocus:e===Yv.ContentFocus,focusManager:r,menuBehaviours:$p("auto"!==t?[]:[Ri(function(o,n){up(o,4,u.item).each(function(n){var t=n.numColumns,e=n.numRows;dg.setGridSize(o,e,t)})})])}}(Ev("autocompleter-value",!0,o,r,"normal"),r,Yv.ContentFocus,"normal"))),Ug.getContent(l).each(cd.highlightFirst)}var s=Ee(on.none()),f=Ee(!1),l=au(Ug.sketch({dom:{tag:"div",classes:["tox-autocompleter"]},components:[],fireDismissalEventInstead:{},inlineBehaviours:ya([Jd("dismissAutocompleter",[rr(Po(),function(){return d()})])]),lazySink:a.getSink})),d=function(){if(e()){var n=s.get().map(function(n){return n.element});Rp(n.getOr(Be.fromDom(u.selection.getNode()))).each(Er),c(),s.set(on.none()),f.set(!1)}},o=L(function(){return ip(u)}),m=function(n){(function(t){return s.get().map(function(n){return ep(u.dom,u.selection.getRng(),n.triggerChar).bind(function(n){return Lp(u,o,n,t)})}).getOrThunk(function(){return rp(u,o)})})(n).fold(d,function(r){!function(n){if(!e()){var t=Zg(u,n.range);s.set(on.some({triggerChar:n.triggerChar,element:t,matchLength:n.text.length})),f.set(!1)}}(r.context),r.lookupData.then(function(o){s.get().map(function(n){var t=r.context;if(n.triggerChar===t.triggerChar){var e=function(t,n){var e=Au(n,function(n){return on.from(n.columns)}).getOr(1);return D(n,function(i){var n=i.items;return ib(n,i.matchText,function(o,r){var n=u.selection.getRng();ep(u.dom,n,t).fold(function(){return v.console.error("Lost context. Cursor probably moved")},function(n){var t=n.range,e={hide:function(){d()},reload:function(n){c(),m(n)}};f.set(!0),i.onAction(e,t,o,r),f.set(!1)})},e,Ih.BUBBLE_TO_SANDBOX,a)})}(t.triggerChar,o);0<e.length?i(n,t,o,e):10<=t.text.length-n.matchLength?d():c()}})})})},n={onKeypress:$g(function(n){27!==n.which&&m()},50),cancelIfNecessary:d,isMenuOpen:function(){return Ug.isOpen(l)},isActive:e,isProcessingAction:f.get,getView:function(){return Ug.getContent(l)}};Np(n,u)},gb=function(n,t,e,o){n.dom().removeEventListener(t,e,o)},pb=nn(!0),hb=cb;function vb(e,o){var r=null;return{cancel:function(){null!==r&&(v.clearTimeout(r),r=null)},schedule:function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];r=v.setTimeout(function(){e.apply(null,n),r=null},o)}}}function bb(n){var t=n.raw();return t.touches===undefined||1!==t.touches.length?on.none():on.some(t.touches[0])}function yb(e){var o=Ee(on.none()),r=Ee(!1),i=vb(function(n){e.triggerEvent(Bo(),n),r.set(!0)},400),u=K([{key:eo(),value:function(e){return bb(e).each(function(n){i.cancel();var t={x:nn(n.clientX),y:nn(n.clientY),target:e.target};i.schedule(e),r.set(!1),o.set(on.some(t))}),on.none()}},{key:oo(),value:function(n){return i.cancel(),bb(n).each(function(t){o.get().each(function(n){!function(n,t){var e=Math.abs(n.clientX-t.x()),o=Math.abs(n.clientY-t.y());return 5<e||5<o}(t,n)||o.set(on.none())})}),on.none()}},{key:ro(),value:function(t){i.cancel();return o.get().filter(function(n){return jt(n.target(),t.target())}).map(function(n){return r.get()?(t.prevent(),!1):e.triggerEvent(Do(),t)})}}]);return{fireIfReady:function(t,n){return Nn(u,n).bind(function(n){return n(t)})}}}function xb(t,n){var e=ot("Getting GUI events settings",Ob,n),o=Ht().deviceType.isTouch()?["touchstart","touchmove","touchend","touchcancel","gesturestart"]:["mousedown","mouseup","mouseover","mousemove","mouseout","click"],r=yb(e),i=S(o.concat(["selectstart","input","contextmenu","change","transitionend","drag","dragstart","dragend","dragenter","dragleave","dragover","drop","keyup"]),function(n){return fb(t,n,function(t){r.fireIfReady(t,n).each(function(n){n&&t.kill()}),e.triggerEvent(n,t)&&t.kill()})}),u=Ee(on.none()),a=fb(t,"paste",function(t){r.fireIfReady(t,"paste").each(function(n){n&&t.kill()}),e.triggerEvent("paste",t)&&t.kill(),u.set(on.some(v.setTimeout(function(){e.triggerEvent(ko(),t)},0)))}),c=fb(t,"keydown",function(n){e.triggerEvent("keydown",n)?n.kill():!0===e.stopBackspace&&function(n){return 8===n.raw().which&&!vn(["input","textarea"],Ko(n.target()))&&!db(n.target(),'[contenteditable="true"]')}(n)&&n.prevent()}),s=function(n,t){return kb?lb(n,"focus",t):fb(n,"focusin",t)}(t,function(n){e.triggerEvent("focusin",n)&&n.kill()}),f=Ee(on.none()),l=function(n,t){return kb?lb(n,"blur",t):fb(n,"focusout",t)}(t,function(n){e.triggerEvent("focusout",n)&&n.kill(),f.set(on.some(v.setTimeout(function(){e.triggerEvent(Co(),n)},0)))});return{unbind:function(){bn(i,function(n){n.unbind()}),c.unbind(),s.unbind(),l.unbind(),a.unbind(),u.get().each(v.clearTimeout),f.get().each(v.clearTimeout)}}}function wb(n,t){var e=Nn(n,"target").map(function(n){return n()}).getOr(t);return Ee(e)}function Sb(n,o,t,e,r,i){var u=n(o,e),a=function(n,t){var e=Ee(!1),o=Ee(!1);return{stop:function(){e.set(!0)},cut:function(){o.set(!0)},isStopped:e.get,isCut:o.get,event:nn(n),setSource:t.set,getSource:t.get}}(t,r);return u.fold(function(){return i.logEventNoHandlers(o,e),Tb.complete()},function(t){var e=t.descHandler();return Xr(e)(a),a.isStopped()?(i.logEventStopped(o,t.element(),e.purpose()),Tb.stopped()):a.isCut()?(i.logEventCut(o,t.element(),e.purpose()),Tb.complete()):br(t.element()).fold(function(){return i.logNoParent(o,t.element(),e.purpose()),Tb.complete()},function(n){return i.logEventResponse(o,t.element(),e.purpose()),Tb.resume(n)})})}function Cb(n,t,e){var o=function(n){var t=Ee(!1);return{stop:function(){t.set(!0)},cut:Z,isStopped:t.get,isCut:nn(!1),event:nn(n),setSource:r("Cannot set source of a broadcasted event"),getSource:r("Cannot get source of a broadcasted event")}}(t);return bn(n,function(n){var t=n.descHandler();Xr(t)(o)}),o.isStopped()}var kb=Ht().browser.isFirefox(),Ob=qn([dt("triggerEvent"),St("stopBackspace",!0)]),Tb=En([{stopped:[]},{resume:["element"]},{complete:[]}]),Eb=function(t,e,o,n,r,i){return Sb(t,e,o,n,r,i).fold(function(){return!0},function(n){return Eb(t,e,o,n,r,i)},function(){return!1})},Db=function(n,t,e,o,r){var i=wb(e,o);return Eb(n,t,e,o,i,r)},Bb=lr("element","descHandler"),Ab=function(n,t){return{id:nn(n),descHandler:nn(t)}};function _b(){var i={};return{registerId:function(o,r,n){Cn(n,function(n,t){var e=i[t]!==undefined?i[t]:{};e[r]=eu(n,o),i[t]=e})},unregisterId:function(e){Cn(i,function(n,t){n.hasOwnProperty(e)&&delete n[e]})},filterByType:function(n){return Nn(i,n).map(function(n){return On(n,function(n,t){return Ab(t,n)})}).getOr([])},find:function(n,t,e){var o=Vn(t)(i);return Ii(e,function(n){return function(e,o){return Ki(o).fold(function(){return on.none()},function(n){var t=Vn(n);return e.bind(t).map(function(n){return Bb(o,n)})})}(o,n)},n)}}}function Mb(){function o(n){var t=n.element();return Ki(t).fold(function(){return function(n,t){var e=Hr(Xi+n);return qi(t,e),e}("uid-",n.element())},function(n){return n})}var r=_b(),i={},u=function(n){Ki(n.element()).each(function(n){delete i[n],r.unregisterId(n)})};return{find:function(n,t,e){return r.find(n,t,e)},filter:function(n){return r.filterByType(n)},register:function(n){var t=o(n);$(i,t)&&function(n,t){var e=i[t];if(e!==n)throw new Error('The tagId "'+t+'" is already used by: '+Nr(e.element())+"\nCannot use it for: "+Nr(n.element())+"\nThe conflicting element is"+($o(e.element())?" ":" not ")+"already in the DOM");u(n)}(n,t);var e=[n];r.registerId(e,t,n.events()),i[t]=n},unregister:u,getById:function(n){return Vn(n)(i)}}}function Fb(e){function o(t){return br(e.element()).fold(function(){return!0},function(n){return jt(t,n)})}function r(n,t){return u.find(o,n,t)}function i(e){var n=u.filter(Oo());bn(n,function(n){var t=n.descHandler();Xr(t)(e)})}var u=Mb(),n=xb(e.element(),{triggerEvent:function(t,e){return Gu(t,e.target(),function(n){return function(n,t,e,o){var r=e.target();return Db(n,t,e,r,o)}(r,t,e,n)})}}),a={debugInfo:nn("real"),triggerEvent:function(t,e,o){Gu(t,e,function(n){Db(r,t,o,e,n)})},triggerFocus:function(t,e){Ki(t).fold(function(){Sa(t)},function(n){Gu(So(),t,function(n){!function(n,t,e,o,r){var i=wb(e,o);Sb(n,t,e,o,i,r)}(r,So(),{originator:nn(e),kill:Z,prevent:Z,target:nn(t)},t,n)})})},triggerEscape:function(n,t){a.triggerEvent("keydown",n.element(),t.event())},getByUid:function(n){return g(n)},getByDom:function(n){return p(n)},build:au,addToGui:function(n){s(n)},removeFromGui:function(n){f(n)},addToWorld:function(n){t(n)},removeFromWorld:function(n){c(n)},broadcast:function(n){l(n)},broadcastOn:function(n,t){d(n,t)},broadcastEvent:function(n,t){m(n,t)},isConnected:nn(!0)},t=function(n){n.connect(a),_i(n.element())||(u.register(n),bn(n.components(),t),a.triggerEvent(Mo(),n.element(),{target:nn(n.element())}))},c=function(n){_i(n.element())||(bn(n.components(),c),u.unregister(n)),n.disconnect()},s=function(n){vs(e,n)},f=function(n){ys(n)},l=function(n){i({universal:nn(!0),data:nn(n)})},d=function(n,t){i({universal:nn(!1),channels:nn(n),data:nn(t)})},m=function(n,t){var e=u.filter(n);return Cb(e,t)},g=function(n){return u.getById(n).fold(function(){return an.error(new Error('Could not find component with uid: "'+n+'" in system.'))},an.value)},p=function(n){var t=Ki(n).getOr("not found");return g(t)};return t(e),{root:nn(e),element:e.element,destroy:function(){n.unbind(),zi(e.element())},add:s,remove:f,getByUid:g,getByDom:p,addToWorld:t,removeFromWorld:c,broadcast:l,broadcastOn:d,broadcastEvent:m}}function Ib(n){return n.getParam("height",Math.max(n.getElement().offsetHeight,200))}function Rb(n){return n.getParam("width",Vh.DOM.getStyle(n.getElement(),"width"))}function Vb(n){return on.from(n.settings.min_width).filter(mn)}function Nb(n){return on.from(n.settings.min_height).filter(mn)}function Hb(n){return on.from(n.getParam("max_width")).filter(mn)}function Pb(n){return on.from(n.getParam("max_height")).filter(mn)}function zb(n){return!1!==n.getParam("menubar",!0,"boolean")}function Lb(n){var t=n.getParam("toolbar",!0),e=!0===t,o=cn(t),r=fn(t)&&0<t.length;return!Yb(n)&&(r||o||e)}function jb(t){var n=wn(t.settings),e=C(n,function(n){return/^toolbar([1-9])$/.test(n)}),o=S(e,function(n){return t.getParam(n,!1,"string")}),r=C(o,function(n){return"string"==typeof n});return 0<r.length?on.some(r):on.none()}var Ub,Wb,Gb=Al({name:"Container",factory:function(n){var t=n.dom,e=t.attributes,o=c(t,["attributes"]);return{uid:n.uid,dom:N({tag:"div",attributes:N({role:"presentation"},e)},o),components:n.components,behaviours:Rs(n.containerBehaviours),events:n.events,domModification:n.domModification,eventOrder:n.eventOrder}},configFields:[St("components",[]),Is("containerBehaviours",[]),St("events",{}),St("domModification",{}),St("eventOrder",{})]}),Xb=tinymce.util.Tools.resolve("tinymce.EditorManager"),Yb=function(n){return jb(n).fold(function(){return 0<n.getParam("toolbar",[],"string[]").length},function(){return!0})};(Wb=Ub=Ub||{})["default"]="",Wb.floating="floating",Wb.sliding="sliding",Wb.scrolling="scrolling";function qb(n){return n.getParam("toolbar_drawer","","string")}function Kb(n){var t=function(n){return n.getParam("fixed_toolbar_container","","string")}(n);return 0<t.length&&n.inline?Ou(Mi(),t):on.none()}function Jb(n){return n.inline&&Kb(n).isSome()}function $b(n){return n.inline&&!zb(n)&&!Lb(n)&&!Yb(n)}function Qb(n){return(n.getParam("toolbar_sticky",!1,"boolean")||n.inline)&&!Jb(n)&&!$b(n)}function Zb(n){return n.touches===undefined||1!==n.touches.length?on.none():on.some(n.touches[0])}function ny(n){return ya([bg.config({onFocus:!1===n.selectOnFocus?Z:function(n){var t=n.element(),e=bi(t);t.dom().setSelectionRange(0,e.length)}})])}function ty(n){return{tag:n.tag,attributes:N({type:"text"},n.inputAttributes),styles:n.inputStyles,classes:n.inputClasses}}var ey,oy,ry,iy,uy=function(e){var o=Ee(on.none()),r=Ee(!1),i=$g(function(n){e.fire("longpress",N(N({},n),{type:"longpress"})),r.set(!0)},400);e.on("touchstart",function(e){Zb(e).each(function(n){i.cancel();var t={x:nn(n.clientX),y:nn(n.clientY),target:nn(e.target)};i.throttle(e),r.set(!1),o.set(on.some(t))})},!0),e.on("touchmove",function(n){i.cancel(),Zb(n).each(function(t){o.get().each(function(n){!function(n,t){var e=Math.abs(n.clientX-t.x()),o=Math.abs(n.clientY-t.y());return 5<e||5<o}(t,n)||(o.set(on.none()),r.set(!1),e.fire("longpresscancel"))})})},!0),e.on("touchend touchcancel",function(t){i.cancel(),"touchcancel"!==t.type&&o.get().filter(function(n){return n.target().isEqualNode(t.target)}).each(function(){r.get()?t.preventDefault():e.fire("tap").isDefaultPrevented()&&t.preventDefault()})},!0)},ay=Hr("form-component-change"),cy=Hr("form-close"),sy=Hr("form-cancel"),fy=Hr("form-action"),ly=Hr("form-submit"),dy=Hr("form-block"),my=Hr("form-unblock"),gy=Hr("form-tabchange"),py=Hr("form-resize"),hy=nn([St("prefix","form-field"),Is("fieldBehaviours",[nd,nl])]),vy=nn([Cl({schema:[ct("dom")],name:"label"}),Cl({factory:{sketch:function(n){return{uid:n.uid,dom:{tag:"span",styles:{display:"none"},attributes:{"aria-hidden":"true"},innerHtml:n.text}}}},schema:[ct("text")],name:"aria-descriptor"}),wl({factory:{sketch:function(n){var t=X(n,["factory"]);return n.factory.sketch(t)}},schema:[ct("factory")],name:"field"})]),by=_l({name:"FormField",configFields:hy(),partFields:vy(),factory:function(r,n,t,e){var o=Vs(r.fieldBehaviours,[nd.config({find:function(n){return Ks(n,r,"field")}}),nl.config({store:{mode:"manual",getValue:function(n){return nd.getCurrent(n).bind(nl.getValue)},setValue:function(n,t){nd.getCurrent(n).each(function(n){nl.setValue(n,t)})}}})]),i=tr([Ri(function(n,t){var o=$s(n,r,["label","field","aria-descriptor"]);o.field().each(function(e){var t=Hr(r.prefix);o.label().each(function(n){_r(n.element(),"for",t),_r(e.element(),"id",t)}),o["aria-descriptor"]().each(function(n){var t=Hr(r.prefix);_r(n.element(),"id",t),_r(e.element(),"aria-describedby",t)})})})]),u={getField:function(n){return Ks(n,r,"field")},getLabel:function(n){return Ks(n,r,"label")}};return{uid:r.uid,dom:r.dom,components:n,behaviours:o,events:i,apis:u}},apis:{getField:function(n,t){return n.getField(t)},getLabel:function(n,t){return n.getLabel(t)}}}),yy=nn([ht("data"),St("inputAttributes",{}),St("inputStyles",{}),St("tag","input"),St("inputClasses",[]),Ku("onSetValue"),St("styles",{}),St("eventOrder",{}),Is("inputBehaviours",[nl,bg]),St("selectOnFocus",!0)]),xy=Al({name:"Input",configFields:yy(),factory:function(n,t){return{uid:n.uid,dom:ty(n),components:[],behaviours:function(n){return N(N({},ny(n)),Vs(n.inputBehaviours,[nl.config({store:{mode:"manual",initialValue:n.data.getOr(undefined),getValue:function(n){return bi(n.element())},setValue:function(n,t){bi(n.element())!==t&&yi(n.element(),t)}},onSetValue:n.onSetValue})]))}(n),eventOrder:n.eventOrder}}}),wy={},Sy={exports:wy};ey=undefined,oy=wy,ry=Sy,iy=undefined,function(n){"object"==typeof oy&&void 0!==ry?ry.exports=n():"function"==typeof ey&&ey.amd?ey([],n):("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).EphoxContactWrapper=n()}(function(){return function f(i,u,a){function c(t,n){if(!u[t]){if(!i[t]){var e="function"==typeof iy&&iy;if(!n&&e)return e(t,!0);if(s)return s(t,!0);var o=new Error("Cannot find module '"+t+"'");throw o.code="MODULE_NOT_FOUND",o}var r=u[t]={exports:{}};i[t][0].call(r.exports,function(n){return c(i[t][1][n]||n)},r,r.exports,f,i,u,a)}return u[t].exports}for(var s="function"==typeof iy&&iy,n=0;n<a.length;n++)c(a[n]);return c}({1:[function(n,t,e){var o,r,i=t.exports={};function u(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function c(n){if(o===setTimeout)return setTimeout(n,0);if((o===u||!o)&&setTimeout)return o=setTimeout,setTimeout(n,0);try{return o(n,0)}catch(t){try{return o.call(null,n,0)}catch(t){return o.call(this,n,0)}}}!function(){try{o="function"==typeof setTimeout?setTimeout:u}catch(n){o=u}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(n){r=a}}();var s,f=[],l=!1,d=-1;function m(){l&&s&&(l=!1,s.length?f=s.concat(f):d=-1,f.length&&g())}function g(){if(!l){var n=c(m);l=!0;for(var t=f.length;t;){for(s=f,f=[];++d<t;)s&&s[d].run();d=-1,t=f.length}s=null,l=!1,function e(n){if(r===clearTimeout)return clearTimeout(n);if((r===a||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(n);try{return r(n)}catch(t){try{return r.call(null,n)}catch(t){return r.call(this,n)}}}(n)}}function p(n,t){this.fun=n,this.array=t}function h(){}i.nextTick=function(n){var t=new Array(arguments.length-1);if(1<arguments.length)for(var e=1;e<arguments.length;e++)t[e-1]=arguments[e];f.push(new p(n,t)),1!==f.length||l||c(g)},p.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=h,i.addListener=h,i.once=h,i.off=h,i.removeListener=h,i.removeAllListeners=h,i.emit=h,i.prependListener=h,i.prependOnceListener=h,i.listeners=function(n){return[]},i.binding=function(n){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(n){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},{}],2:[function(n,l,t){(function(t){function o(){}function i(n){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof n)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=undefined,this._deferreds=[],f(n,this)}function r(o,r){for(;3===o._state;)o=o._value;0!==o._state?(o._handled=!0,i._immediateFn(function(){var n=1===o._state?r.onFulfilled:r.onRejected;if(null!==n){var t;try{t=n(o._value)}catch(e){return void a(r.promise,e)}u(r.promise,t)}else(1===o._state?u:a)(r.promise,o._value)})):o._deferreds.push(r)}function u(n,t){try{if(t===n)throw new TypeError("A promise cannot be resolved with itself.");if(t&&("object"==typeof t||"function"==typeof t)){var e=t.then;if(t instanceof i)return n._state=3,n._value=t,void c(n);if("function"==typeof e)return void f(function o(n,t){return function(){n.apply(t,arguments)}}(e,t),n)}n._state=1,n._value=t,c(n)}catch(r){a(n,r)}}function a(n,t){n._state=2,n._value=t,c(n)}function c(n){2===n._state&&0===n._deferreds.length&&i._immediateFn(function(){n._handled||i._unhandledRejectionFn(n._value)});for(var t=0,e=n._deferreds.length;t<e;t++)r(n,n._deferreds[t]);n._deferreds=null}function s(n,t,e){this.onFulfilled="function"==typeof n?n:null,this.onRejected="function"==typeof t?t:null,this.promise=e}function f(n,t){var e=!1;try{n(function(n){e||(e=!0,u(t,n))},function(n){e||(e=!0,a(t,n))})}catch(o){if(e)return;e=!0,a(t,o)}}var n,e;n=this,e=setTimeout,i.prototype["catch"]=function(n){return this.then(null,n)},i.prototype.then=function(n,t){var e=new this.constructor(o);return r(this,new s(n,t,e)),e},i.all=function(n){var c=Array.prototype.slice.call(n);return new i(function(r,i){if(0===c.length)return r([]);var u=c.length;function a(t,n){try{if(n&&("object"==typeof n||"function"==typeof n)){var e=n.then;if("function"==typeof e)return void e.call(n,function(n){a(t,n)},i)}c[t]=n,0==--u&&r(c)}catch(o){i(o)}}for(var n=0;n<c.length;n++)a(n,c[n])})},i.resolve=function(t){return t&&"object"==typeof t&&t.constructor===i?t:new i(function(n){n(t)})},i.reject=function(e){return new i(function(n,t){t(e)})},i.race=function(r){return new i(function(n,t){for(var e=0,o=r.length;e<o;e++)r[e].then(n,t)})},i._immediateFn="function"==typeof t?function(n){t(n)}:function(n){e(n,0)},i._unhandledRejectionFn=function(n){"undefined"!=typeof console&&console&&console.warn("Possible Unhandled Promise Rejection:",n)},i._setImmediateFn=function(n){i._immediateFn=n},i._setUnhandledRejectionFn=function(n){i._unhandledRejectionFn=n},void 0!==l&&l.exports?l.exports=i:n.Promise||(n.Promise=i)}).call(this,n("timers").setImmediate)},{timers:3}],3:[function(c,n,s){(function(n,t){var o=c("process/browser.js").nextTick,e=Function.prototype.apply,r=Array.prototype.slice,i={},u=0;function a(n,t){this._id=n,this._clearFn=t}s.setTimeout=function(){return new a(e.call(setTimeout,window,arguments),clearTimeout)},s.setInterval=function(){return new a(e.call(setInterval,window,arguments),clearInterval)},s.clearTimeout=s.clearInterval=function(n){n.close()},a.prototype.unref=a.prototype.ref=function(){},a.prototype.close=function(){this._clearFn.call(window,this._id)},s.enroll=function(n,t){clearTimeout(n._idleTimeoutId),n._idleTimeout=t},s.unenroll=function(n){clearTimeout(n._idleTimeoutId),n._idleTimeout=-1},s._unrefActive=s.active=function(n){clearTimeout(n._idleTimeoutId);var t=n._idleTimeout;0<=t&&(n._idleTimeoutId=setTimeout(function(){n._onTimeout&&n._onTimeout()},t))},s.setImmediate="function"==typeof n?n:function(n){var t=u++,e=!(arguments.length<2)&&r.call(arguments,1);return i[t]=!0,o(function(){i[t]&&(e?n.apply(null,e):n.call(null),s.clearImmediate(t))}),t},s.clearImmediate="function"==typeof t?t:function(n){delete i[n]}}).call(this,c("timers").setImmediate,c("timers").clearImmediate)},{"process/browser.js":1,timers:3}],4:[function(n,t,e){var o=n("promise-polyfill"),r="undefined"!=typeof window?window:Function("return this;")();t.exports={boltExport:r.Promise||o}},{"promise-polyfill":2}]},{},[4])(4)});function Cy(n){v.setTimeout(function(){throw n},0)}function ky(n){var t=Ko(n);return vn(Py,t)}function Oy(n,t){var e=t.getRoot(n).getOr(n.element());ri(e,t.invalidClass),t.notify.each(function(t){ky(n.element())&&_r(n.element(),"aria-invalid",!1),t.getContainer(n).each(function(n){Br(n,t.validHtml)}),t.onValid(n)})}function Ty(t,n,e,o){var r=n.getRoot(t).getOr(t.element());ei(r,n.invalidClass),n.notify.each(function(n){ky(t.element())&&_r(t.element(),"aria-invalid",!0),n.getContainer(t).each(function(n){Br(n,o)}),n.onInvalid(t,o)})}function Ey(t,n,e){return n.validator.fold(function(){return Hy(an.value(!0))},function(n){return n.validate(t)})}function Dy(t,e,n){return e.notify.each(function(n){n.onValidate(t)}),Ey(t,e).map(function(n){return t.getSystem().isConnected()?n.fold(function(n){return Ty(t,e,0,n),an.error(n)},function(n){return Oy(t,e),an.value(n)}):an.error("No longer in system")})}function By(n,t,e,o){var r=Yy(n,t,e,o);return by.sketch(r)}function Ay(n,t){return by.parts().label({dom:{tag:"label",classes:["tox-label"],innerHtml:t.translate(n)}})}var _y,My,Fy=Sy.exports.boltExport,Iy=function(n){var e=on.none(),t=[],o=function(n){r()?u(n):t.push(n)},r=function(){return e.isSome()},i=function(n){bn(n,u)},u=function(t){e.each(function(n){v.setTimeout(function(){t(n)},0)})};return n(function(n){e=on.some(n),i(t),t=[]}),{get:o,map:function(e){return Iy(function(t){o(function(n){t(e(n))})})},isReady:r}},Ry={nu:Iy,pure:function(t){return Iy(function(n){n(t)})}},Vy=function(e){function n(n){e().then(n,Cy)}return{map:function(n){return Vy(function(){return e().then(n)})},bind:function(t){return Vy(function(){return e().then(function(n){return t(n).toPromise()})})},anonBind:function(n){return Vy(function(){return e().then(function(){return n.toPromise()})})},toLazy:function(){return Ry.nu(n)},toCached:function(){var n=null;return Vy(function(){return null===n&&(n=e()),n})},toPromise:e,get:n}},Ny=function(n){return Vy(function(){return new Fy(n)})},Hy=function(n){return Vy(function(){return Fy.resolve(n)})},Py=["input","textarea"],zy=/* */Object.freeze({markValid:Oy,markInvalid:Ty,query:Ey,run:Dy,isInvalid:function(n,t){var e=t.getRoot(n).getOr(n.element());return ii(e,t.invalidClass)}}),Ly=/* */Object.freeze({events:function(t,n){return t.validator.map(function(n){return tr([rr(n.onEvent,function(n){Dy(n,t).get(l)})].concat(n.validateOnLoad?[Ri(function(n){Dy(n,t).get(Z)})]:[]))}).getOr({})}}),jy=[ct("invalidClass"),St("getRoot",on.none),wt("notify",[St("aria","alert"),St("getContainer",on.none),St("validHtml",""),Ku("onValid"),Ku("onInvalid"),Ku("onValidate")]),wt("validator",[ct("validate"),St("onEvent","input"),St("validateOnLoad",!0)])],Uy=xa({fields:jy,name:"invalidating",active:Ly,apis:zy,extra:{validation:function(e){return function(n){var t=nl.getValue(n);return Hy(e(t))}}}}),Wy=/* */Object.freeze({exhibit:function(n,t){return Gr({attributes:K([{key:t.tabAttr,value:"true"}])})}}),Gy=[St("tabAttr","data-alloy-tabstop")],Xy=xa({fields:Gy,name:"tabstopping",active:Wy}),Yy=function(n,t,e,o){return{dom:qy(e),components:n.toArray().concat([t]),fieldBehaviours:ya(o)}},qy=function(n){return{tag:"div",classes:["tox-form__group"].concat(n)}},Ky=/* */Object.freeze({getCoupled:function(n,t,e,o){return e.getOrCreate(n,t,o)}}),Jy=[st("others",nt(an.value,xe()))],$y=xa({fields:Jy,name:"coupling",apis:Ky,state:/* */Object.freeze({init:function(n){var i={},t=nn({});return tu({readState:t,getOrCreate:function(e,o,r){var n=wn(o.others);if(n)return Nn(i,r).getOrThunk(function(){var n=Nn(o.others,r).getOrDie("No information found for coupled component: "+r)(e),t=e.getSystem().build(n);return i[r]=t});throw new Error("Cannot find coupled component: "+r+". Known coupled components: "+JSON.stringify(n,null,2))}})}})}),Qy=nn("sink"),Zy=nn(Cl({name:Qy(),overrides:nn({dom:{tag:"div"},behaviours:ya([_f.config({useFixed:a})]),events:tr([sr(go()),sr(uo()),sr(bo())])})}));(My=_y=_y||{})[My.HighlightFirst=0]="HighlightFirst",My[My.HighlightNone=1]="HighlightNone";function nx(n,t){var e=n.getHotspot(t).getOr(t),o=n.getAnchorOverrides();return n.layouts.fold(function(){return{anchor:"hotspot",hotspot:e,overrides:o}},function(n){return{anchor:"hotspot",hotspot:e,overrides:o,layouts:n}})}function tx(n,t,e,o,r,i,u){return function(n,t,r,e,i,o,u){var a=function(n,t,e){return(0,n.fetch)(e).map(t)}(n,t,e),c=Cw(e,n);return a.map(function(n){return n.bind(function(n){return on.from(jg.sketch(N(N({},o.menu()),{uid:Pr(""),data:n,highlightImmediately:u===_y.HighlightFirst,onOpenMenu:function(n,t){var e=c().getOrDie();_f.position(e,r,t),Lf.decloak(i)},onOpenSubmenu:function(n,t,e){var o=c().getOrDie();_f.position(o,{anchor:"submenu",item:t},e),Lf.decloak(i)},onRepositionMenu:function(n,t,e){var o=c().getOrDie();_f.position(o,r,t),bn(e,function(n){_f.position(o,{anchor:"submenu",item:n.triggeringItem},n.triggeredMenu)})},onEscape:function(){return bg.focus(e),Lf.close(i),on.some(!0)}})))})})}(n,t,nx(n,e),e,o,r,u).map(function(n){return n.fold(function(){Lf.isOpen(o)&&Lf.close(o)},function(n){Lf.cloak(o),Lf.open(o,n),i(o)}),o})}function ex(n,t,e,o,r,i,u){return Lf.close(o),Hy(o)}function ox(n,t,e,o,r,i){var u=$y.getCoupled(e,"sandbox");return(Lf.isOpen(u)?ex:tx)(n,t,e,u,o,r,i)}function rx(n,t,e){var o=nd.getCurrent(t).getOr(t),r=gu(n.element());e?li(o.element(),"min-width",r+"px"):function(n,t){Nu.set(n,t)}(o.element(),r)}function ix(n){Lf.getState(n).each(function(n){jg.repositionMenus(n)})}function ux(o,r,i){var u=Eu(),n=Cw(r,o);return{dom:{tag:"div",classes:o.sandboxClasses,attributes:{id:u.id(),role:"listbox"}},behaviours:el(o.sandboxBehaviours,[nl.config({store:{mode:"memory",initialValue:r}}),Lf.config({onOpen:function(n,t){var e=nx(o,r);u.link(r.element()),o.matchWidth&&rx(e.hotspot,t,o.useMinWidth),o.onOpen(e,n,t),i!==undefined&&i.onOpen!==undefined&&i.onOpen(n,t)},onClose:function(n,t){u.unlink(r.element()),i!==undefined&&i.onClose!==undefined&&i.onClose(n,t)},isPartOf:function(n,t,e){return ju(t,e)||ju(r,e)},getAttachPoint:function(){return n().getOrDie()}}),nd.config({find:function(n){return Lf.getState(n).bind(function(n){return nd.getCurrent(n)})}}),dc.config({channels:N(N({},Es({isExtraPart:nn(!1)})),Ds({isExtraPart:nn(!1),doReposition:ix}))})])}}function ax(n){var t=$y.getCoupled(n,"sandbox");ix(t)}function cx(){return[St("sandboxClasses",[]),tl("sandboxBehaviours",[nd,dc,Lf,nl])]}function sx(e,t,o){function r(n,t){qt(n,Bw,{value:t})}var n=by.parts().field({factory:xy,inputClasses:["tox-textfield"],onSetValue:function(n){return Uy.run(n).get(function(){})},inputBehaviours:ya([Xy.config({}),Uy.config({invalidClass:"tox-textbox-field-invalid",getRoot:function(n){return br(n.element())},notify:{onValid:function(n){var t=nl.getValue(n);qt(n,Dw,{color:t})}},validator:{validateOnLoad:!1,validate:function(n){var t=nl.getValue(n);if(0===t.length)return Hy(an.value(!0));var e=Be.fromTag("span");li(e,"background-color",t);var o=gi(e,"background-color").fold(function(){return an.error("blah")},function(n){return an.value(t)});return Hy(o)}}})]),selectOnFocus:!1}),i=e.label.map(function(n){return Ay(n,t.providers)}),u=bm(function(e,o){return Tw.sketch({dom:e.dom,components:e.components,toggleClass:"mce-active",dropdownBehaviours:ya([Ew.config({}),Xy.config({})]),layouts:e.layouts,sandboxClasses:["tox-dialog__popups"],lazySink:o.getSink,fetch:function(t){return Ny(function(n){return e.fetch(n)}).map(function(n){return on.from(ab(Bn(Dv(Hr("menu-value"),n,function(n){e.onItemAction(t,n)},e.columns,e.presets,Ih.CLOSE_ON_EXECUTE,function(){return!1},o.providers),{movement:Bv(e.columns,e.presets)})))})},parts:{menu:Cv(0,0,e.presets)}})}({dom:{tag:"span",attributes:{"aria-label":t.providers.translate("Color swatch")}},layouts:on.some({onRtl:function(){return[aa]},onLtr:function(){return[ca]}}),components:[],fetch:Wv.getFetch(o.getColors(),o.hasCustomColors()),columns:o.getColorCols(),presets:"color",onItemAction:function(n,e){u.getOpt(n).each(function(t){"custom"===e?o.colorPicker(function(n){n.fold(function(){return Yt(t,Aw)},function(n){r(t,n),Nv(n)})},"#ffffff"):r(t,"remove"===e?"":e)})}},t));return by.sketch({dom:{tag:"div",classes:["tox-form__group"]},components:i.toArray().concat([{dom:{tag:"div",classes:["tox-color-input"]},components:[n,u.asSpec()]}]),fieldBehaviours:ya([Jd("form-field-events",[rr(Dw,function(n,t){u.getOpt(n).each(function(n){li(n.element(),"background-color",t.event().color())}),qt(n,ay,{name:e.name})}),rr(Bw,function(t,e){by.getField(t).each(function(n){nl.setValue(n,e.event().value()),nd.getCurrent(t).each(bg.focus)})}),rr(Aw,function(t,n){by.getField(t).each(function(n){nd.getCurrent(t).each(bg.focus)})})])])})}function fx(n,t,e){return{hue:nn(n),saturation:nn(t),value:nn(e)}}function lx(n){return Cl({name:n+"-edge",overrides:function(o){return o.model.manager.edgeActions[n].fold(function(){return{}},function(e){var n=tr([ir(eo(),e,[o])]),t=tr([ir(uo(),e,[o]),ir(ao(),function(n,t){t.mouseIsDown.get()&&e(n,t)},[o])]);return{events:Iw?n:t}})}})}function dx(n){var t=n.event().raw();if(Ww){var e=t;return e.touches!==undefined&&1===e.touches.length?on.some(e.touches[0]).map(function(n){return Ru(n.clientX,n.clientY)}):on.none()}var o=t;return o.clientX!==undefined?on.some(o).map(function(n){return Ru(n.clientX,n.clientY)}):on.none()}function mx(n){return n.model.minX}function gx(n){return n.model.minY}function px(n){return n.model.minX-1}function hx(n){return n.model.minY-1}function vx(n){return n.model.maxX}function bx(n){return n.model.maxY}function yx(n){return n.model.maxX+1}function xx(n){return n.model.maxY+1}function wx(n,t,e){return t(n)-e(n)}function Sx(n){return wx(n,vx,mx)}function Cx(n){return wx(n,bx,gx)}function kx(n){return Sx(n)/2}function Ox(n){return Cx(n)/2}function Tx(n){return n.stepSize}function Ex(n){return n.snapToGrid}function Dx(n){return n.snapStart}function Bx(n){return n.rounded}function Ax(n,t){return n[t+"-edge"]!==undefined}function _x(n){return Ax(n,"left")}function Mx(n){return Ax(n,"right")}function Fx(n){return Ax(n,"top")}function Ix(n){return Ax(n,"bottom")}function Rx(n){return n.model.value.get()}function Vx(n){return{x:nn(n)}}function Nx(n){return{y:nn(n)}}function Hx(n,t){return{x:nn(n),y:nn(t)}}function Px(n,t){qt(n,Gw(),{value:t})}function zx(n,t,e,o){return n<t?n:e<n?e:n===t?t-1:Math.max(t,n-o)}function Lx(n,t,e,o){return e<n?n:n<t?t:n===e?e+1:Math.min(e,n+o)}function jx(n,t,e){return Math.max(t,Math.min(e,n))}function Ux(n){var t=n.min,e=n.max,o=n.range,r=n.value,i=n.step,u=n.snap,a=n.snapStart,c=n.rounded,s=n.hasMinEdge,f=n.hasMaxEdge,l=n.minBound,d=n.maxBound,m=n.screenRange,g=s?t-1:t,p=f?e+1:e;if(r<l)return g;if(d<r)return p;var h=function(n,t,e){return Math.min(e,Math.max(n,t))-t}(r,l,d),v=jx(h/m*o+t,g,p);return u&&t<=v&&v<=e?function(u,e,a,c,n){return n.fold(function(){var n=u-e,t=Math.round(n/c)*c;return jx(e+t,e-1,a+1)},function(n){var t=(u-n)%c,e=Math.round(t/c),o=Math.floor((u-n)/c),r=Math.floor((a-n)/c),i=n+Math.min(r,o+e)*c;return Math.max(n,i)})}(v,t,e,i,a):c?Math.round(v):v}function Wx(n){var t=n.min,e=n.max,o=n.range,r=n.value,i=n.hasMinEdge,u=n.hasMaxEdge,a=n.maxBound,c=n.maxOffset,s=n.centerMinEdge,f=n.centerMaxEdge;return r<t?i?0:s:e<r?u?a:f:(r-t)/o*c}function Gx(n){return n.element().dom().getBoundingClientRect()}function Xx(n,t){return n[t]}function Yx(n){var t=Gx(n);return Xx(t,Xw)}function qx(n){var t=Gx(n);return Xx(t,"right")}function Kx(n){var t=Gx(n);return Xx(t,"top")}function Jx(n){var t=Gx(n);return Xx(t,"bottom")}function $x(n){var t=Gx(n);return Xx(t,"width")}function Qx(n){var t=Gx(n);return Xx(t,"height")}function Zx(n,t,e){return(n+t)/2-e}function nw(n,t){var e=Gx(n),o=Gx(t),r=Xx(e,Xw),i=Xx(e,"right"),u=Xx(o,Xw);return Zx(r,i,u)}function tw(n,t){var e=Gx(n),o=Gx(t),r=Xx(e,"top"),i=Xx(e,"bottom"),u=Xx(o,"top");return Zx(r,i,u)}function ew(n,t){qt(n,Gw(),{value:t})}function ow(n){return{x:nn(n)}}function rw(n,t,e){var o={min:mx(t),max:vx(t),range:Sx(t),value:e,step:Tx(t),snap:Ex(t),snapStart:Dx(t),rounded:Bx(t),hasMinEdge:_x(t),hasMaxEdge:Mx(t),minBound:Yx(n),maxBound:qx(n),screenRange:$x(n)};return Ux(o)}function iw(e){return function(n,t){return function(n,t,e){var o=(0<n?Lx:zx)(Rx(e).x(),mx(e),vx(e),Tx(e));return ew(t,ow(o)),on.some(o)}(e,n,t).map(function(){return!0})}}function uw(n,t,e,o,r,i){var u=function(t,n,e,o,r){var i=$x(t),u=o.bind(function(n){return on.some(nw(n,t))}).getOr(0),a=r.bind(function(n){return on.some(nw(n,t))}).getOr(i),c={min:mx(n),max:vx(n),range:Sx(n),value:e,hasMinEdge:_x(n),hasMaxEdge:Mx(n),minBound:Yx(t),minOffset:0,maxBound:qx(t),maxOffset:i,centerMinEdge:u,centerMaxEdge:a};return Wx(c)}(t,i,e,o,r);return Yx(t)-Yx(n)+u}function aw(n,t){qt(n,Gw(),{value:t})}function cw(n){return{y:nn(n)}}function sw(n,t,e){var o={min:gx(t),max:bx(t),range:Cx(t),value:e,step:Tx(t),snap:Ex(t),snapStart:Dx(t),rounded:Bx(t),hasMinEdge:Fx(t),hasMaxEdge:Ix(t),minBound:Kx(n),maxBound:Jx(n),screenRange:Qx(n)};return Ux(o)}function fw(e){return function(n,t){return function(n,t,e){var o=(0<n?Lx:zx)(Rx(e).y(),gx(e),bx(e),Tx(e));return aw(t,cw(o)),on.some(o)}(e,n,t).map(function(){return!0})}}function lw(n,t,e,o,r,i){var u=function(t,n,e,o,r){var i=Qx(t),u=o.bind(function(n){return on.some(tw(n,t))}).getOr(0),a=r.bind(function(n){return on.some(tw(n,t))}).getOr(i),c={min:gx(n),max:bx(n),range:Cx(n),value:e,hasMinEdge:Fx(n),hasMaxEdge:Ix(n),minBound:Kx(t),minOffset:0,maxBound:Jx(t),maxOffset:i,centerMinEdge:u,centerMaxEdge:a};return Wx(c)}(t,i,e,o,r);return Kx(t)-Kx(n)+u}function dw(n,t){qt(n,Gw(),{value:t})}function mw(n,t){return{x:nn(n),y:nn(t)}}function gw(e,o){return function(n,t){return function(n,t,e,o){var r=0<n?Lx:zx,i=t?Rx(o).x():r(Rx(o).x(),mx(o),vx(o),Tx(o)),u=t?r(Rx(o).y(),gx(o),bx(o),Tx(o)):Rx(o).y();return dw(e,mw(i,u)),on.some(i)}(e,o,n,t).map(function(){return!0})}}function pw(n){return"<alloy.field."+n+">"}function hw(n){return function(n){return BS[n]}(n)}function vw(n,t,e){return nl.config(Bn({store:{mode:"manual",getValue:t,setValue:e}},n.map(function(n){return{store:{initialValue:n}}}).getOr({})))}function bw(n,t,e){return vw(n,function(n){return t(n.element())},function(n,t){return e(n.element(),t)})}function yw(e,t){function o(n,t){t.stop()}function r(n){return function(t,e){bn(n,function(n){n(t,e)})}}function i(n,t){if(!kh.isDisabled(n)){var e=t.event().raw();a(n,e.dataTransfer.files)}}function u(n,t){var e=t.event().raw().target.files;a(n,e)}var a=function(n,t){nl.setValue(n,function(n){var t=new RegExp("("+".jpg,.jpeg,.png,.gif".split(/\s*,\s*/).join("|")+")$","i");return C(xn(n),function(n){return t.test(n.name)})}(t)),qt(n,ay,{name:e.name})},c=bm({dom:{tag:"input",attributes:{type:"file",accept:"image/*"},styles:{display:"none"}},behaviours:ya([Jd("input-file-events",[sr(Xt())])])}),n=e.label.map(function(n){return Ay(n,t)}),s=by.parts().field({factory:{sketch:function(n){return{uid:n.uid,dom:{tag:"div",classes:["tox-dropzone-container"]},behaviours:ya([RS([]),TS(),kh.config({}),kg.config({toggleClass:"dragenter",toggleOnExecute:!1}),Jd("dropzone-events",[rr("dragenter",r([o,kg.toggle])),rr("dragleave",r([o,kg.toggle])),rr("dragover",o),rr("drop",r([o,i])),rr(vo(),u)])]),components:[{dom:{tag:"div",classes:["tox-dropzone"],styles:{}},components:[{dom:{tag:"p",innerHtml:t.translate("Drop an image here")}},Xg.sketch({dom:{tag:"button",innerHtml:t.translate("Browse for an image"),styles:{position:"relative"},classes:["tox-button","tox-button--secondary"]},components:[c.asSpec()],action:function(n){c.get(n).element().dom().click()},buttonBehaviours:ya([Xy.config({})])})]}]}}}});return By(n,s,["tox-form__group--stretched"],[])}function xw(n){return{dom:{tag:"div",styles:{width:"1px",height:"1px",outline:"none"},attributes:{tabindex:"0"},classes:n},behaviours:ya([bg.config({ignore:!0}),Xy.config({})])}}function ww(n,t){qt(n,go(),{raw:{which:9,shiftKey:t}})}function Sw(n,t){var e=LS&&n.sandboxed,o=N(N({},n.label.map(function(n){return{title:n}}).getOr({})),e?{sandbox:"allow-scripts allow-same-origin"}:{}),r=function(o){var r=Ee("");return{getValue:function(n){return r.get()},setValue:function(n,t){if(o)_r(n.element(),"srcdoc",t);else{_r(n.element(),"src","javascript:''");var e=n.element().dom().contentWindow.document;e.open(),e.write(t),e.close()}r.set(t)}}}(e),i=n.label.map(function(n){return Ay(n,t)}),u=by.parts().field({factory:{sketch:function(n){return zS({uid:n.uid,dom:{tag:"iframe",attributes:o},behaviours:ya([Xy.config({}),bg.config({}),FS(on.none(),r.getValue,r.setValue)])})}}});return By(i,u,["tox-form__group--stretched"],[])}var Cw=function(t,n){return t.getSystem().getByUid(n.uid+"-"+Qy()).map(function(n){return function(){return an.value(n)}}).getOrThunk(function(){return n.lazySink.fold(function(){return function(){return an.error(new Error("No internal sink is specified, nor could an external sink be found"))}},function(n){return function(){return n(t)}})})},kw=nn([ct("dom"),ct("fetch"),Ku("onOpen"),Ju("onExecute"),St("getHotspot",on.some),St("getAnchorOverrides",nn({})),St("layouts",on.none()),Is("dropdownBehaviours",[kg,$y,dg,bg]),ct("toggleClass"),St("eventOrder",{}),ht("lazySink"),St("matchWidth",!1),St("useMinWidth",!1),ht("role")].concat(cx())),Ow=nn([Sl({schema:[Xu()],name:"menu",defaults:function(n){return{onExecute:n.onExecute}}}),Zy()]),Tw=_l({name:"Dropdown",configFields:kw(),partFields:Ow(),factory:function(t,n,e,o){function r(n){Lf.getState(n).each(function(n){jg.highlightPrimary(n)})}function i(n,t){return Kt(n),on.some(!0)}var u,a,c={expand:function(n){kg.isOn(n)||ox(t,function(n){return n},n,o,Z,_y.HighlightNone).get(Z)},open:function(n){kg.isOn(n)||ox(t,function(n){return n},n,o,Z,_y.HighlightFirst).get(Z)},isOpen:kg.isOn,close:function(n){kg.isOn(n)&&ox(t,function(n){return n},n,o,Z,_y.HighlightFirst).get(Z)},repositionMenus:function(n){kg.isOn(n)&&ax(n)}};return{uid:t.uid,dom:t.dom,components:n,behaviours:Vs(t.dropdownBehaviours,[kg.config({toggleClass:t.toggleClass,aria:{mode:"expanded"}}),$y.config({others:{sandbox:function(n){return ux(t,n,{onOpen:function(){kg.on(n)},onClose:function(){kg.off(n)}})}}}),dg.config({mode:"special",onSpace:i,onEnter:i,onDown:function(n,t){if(Tw.isOpen(n)){var e=$y.getCoupled(n,"sandbox");r(e)}else Tw.open(n);return on.some(!0)},onEscape:function(n,t){return Tw.isOpen(n)?(Tw.close(n),on.some(!0)):on.none()}}),bg.config({})]),events:im(on.some(function(n){ox(t,function(n){return n},n,o,r,_y.HighlightFirst).get(Z)})),eventOrder:N(N({},t.eventOrder),(u={},u[To()]=["disabling","toggling","alloy.base.behaviour"],u)),apis:c,domModification:{attributes:N(N({"aria-haspopup":"true"},t.role.fold(function(){return{}},function(n){return{role:n}})),"button"===t.dom.tag?{type:(a="type",Nn(t.dom,"attributes").bind(function(n){return Nn(n,a)})).getOr("button")}:{})}}},apis:{open:function(n,t){return n.open(t)},expand:function(n,t){return n.expand(t)},close:function(n,t){return n.close(t)},isOpen:function(n,t){return n.isOpen(t)},repositionMenus:function(n,t){return n.repositionMenus(t)}}}),Ew=xa({fields:[],name:"unselecting",active:/* */Object.freeze({events:function(n){return tr([er(xo(),nn(!0))])},exhibit:function(n,t){return Gr({styles:{"-webkit-user-select":"none","user-select":"none","-ms-user-select":"none","-moz-user-select":"-moz-none"},attributes:{unselectable:"on"}})}})}),Dw=Hr("color-input-change"),Bw=Hr("color-swatch-change"),Aw=Hr("color-picker-cancel"),_w=nn(Hr("rgb-hex-update")),Mw=nn(Hr("slider-update")),Fw=nn(Hr("palette-update")),Iw=Ht().deviceType.isTouch(),Rw=Cl({schema:[ct("dom")],name:"label"}),Vw=lx("top-left"),Nw=lx("top"),Hw=lx("top-right"),Pw=lx("right"),zw=lx("bottom-right"),Lw=lx("bottom"),jw=lx("bottom-left"),Uw=[Rw,lx("left"),Pw,Nw,Lw,Vw,Hw,jw,zw,wl({name:"thumb",defaults:nn({dom:{styles:{position:"absolute"}}}),overrides:function(n){return{events:tr([ar(eo(),n,"spectrum"),ar(oo(),n,"spectrum"),ar(ro(),n,"spectrum"),ar(uo(),n,"spectrum"),ar(ao(),n,"spectrum"),ar(so(),n,"spectrum")])}}}),wl({schema:[At("mouseIsDown",function(){return Ee(!1)})],name:"spectrum",overrides:function(e){function o(t,n){return r.getValueFromEvent(n).map(function(n){return r.setValueFrom(t,e,n)})}var r=e.model.manager,n=tr([rr(eo(),o),rr(oo(),o)]),t=tr([rr(uo(),o),rr(ao(),function(n,t){e.mouseIsDown.get()&&o(n,t)})]);return{behaviours:ya(Iw?[]:[dg.config({mode:"special",onLeft:function(n){return r.onLeft(n,e)},onRight:function(n){return r.onRight(n,e)},onUp:function(n){return r.onUp(n,e)},onDown:function(n){return r.onDown(n,e)}}),bg.config({})]),events:Iw?n:t}}})],Ww=Ht().deviceType.isTouch(),Gw=nn("slider.change.value"),Xw="left",Yw=iw(-1),qw=iw(1),Kw=on.none,Jw=on.none,$w={"top-left":on.none(),top:on.none(),"top-right":on.none(),right:on.some(function(n,t){Px(n,Vx(yx(t)))}),"bottom-right":on.none(),bottom:on.none(),"bottom-left":on.none(),left:on.some(function(n,t){Px(n,Vx(px(t)))})},Qw=/* */Object.freeze({setValueFrom:function(n,t,e){var o=rw(n,t,e),r=ow(o);return ew(n,r),o},setToMin:function(n,t){var e=mx(t);ew(n,ow(e))},setToMax:function(n,t){var e=vx(t);ew(n,ow(e))},findValueOfOffset:rw,getValueFromEvent:function(n){return dx(n).map(function(n){return n.left()})},findPositionOfValue:uw,setPositionFromValue:function(n,t,e,o){var r=Rx(e),i=uw(n,o.getSpectrum(n),r.x(),o.getLeftEdge(n),o.getRightEdge(n),e),u=gu(t.element())/2;li(t.element(),"left",i-u+"px")},onLeft:Yw,onRight:qw,onUp:Kw,onDown:Jw,edgeActions:$w}),Zw=on.none,nS=on.none,tS=fw(-1),eS=fw(1),oS={"top-left":on.none(),top:on.some(function(n,t){Px(n,Nx(hx(t)))}),"top-right":on.none(),right:on.none(),"bottom-right":on.none(),bottom:on.some(function(n,t){Px(n,Nx(xx(t)))}),"bottom-left":on.none(),left:on.none()},rS=/* */Object.freeze({setValueFrom:function(n,t,e){var o=sw(n,t,e),r=cw(o);return aw(n,r),o},setToMin:function(n,t){var e=gx(t);aw(n,cw(e))},setToMax:function(n,t){var e=bx(t);aw(n,cw(e))},findValueOfOffset:sw,getValueFromEvent:function(n){return dx(n).map(function(n){return n.top()})},findPositionOfValue:lw,setPositionFromValue:function(n,t,e,o){var r=Rx(e),i=lw(n,o.getSpectrum(n),r.y(),o.getTopEdge(n),o.getBottomEdge(n),e),u=fu(t.element())/2;li(t.element(),"top",i-u+"px")},onLeft:Zw,onRight:nS,onUp:tS,onDown:eS,edgeActions:oS}),iS=gw(-1,!1),uS=gw(1,!1),aS=gw(-1,!0),cS=gw(1,!0),sS={"top-left":on.some(function(n,t){Px(n,Hx(px(t),hx(t)))}),top:on.some(function(n,t){Px(n,Hx(kx(t),hx(t)))}),"top-right":on.some(function(n,t){Px(n,Hx(yx(t),hx(t)))}),right:on.some(function(n,t){Px(n,Hx(yx(t),Ox(t)))}),"bottom-right":on.some(function(n,t){Px(n,Hx(yx(t),xx(t)))}),bottom:on.some(function(n,t){Px(n,Hx(kx(t),xx(t)))}),"bottom-left":on.some(function(n,t){Px(n,Hx(px(t),xx(t)))}),left:on.some(function(n,t){Px(n,Hx(px(t),Ox(t)))})},fS=/* */Object.freeze({setValueFrom:function(n,t,e){var o=rw(n,t,e.left()),r=sw(n,t,e.top()),i=mw(o,r);return dw(n,i),i},setToMin:function(n,t){var e=mx(t),o=gx(t);dw(n,mw(e,o))},setToMax:function(n,t){var e=vx(t),o=bx(t);dw(n,mw(e,o))},getValueFromEvent:function(n){return dx(n)},setPositionFromValue:function(n,t,e,o){var r=Rx(e),i=uw(n,o.getSpectrum(n),r.x(),o.getLeftEdge(n),o.getRightEdge(n),e),u=lw(n,o.getSpectrum(n),r.y(),o.getTopEdge(n),o.getBottomEdge(n),e),a=gu(t.element())/2,c=fu(t.element())/2;li(t.element(),"left",i-a+"px"),li(t.element(),"top",u-c+"px")},onLeft:iS,onRight:uS,onUp:aS,onDown:cS,edgeActions:sS}),lS=Ht().deviceType.isTouch(),dS=[St("stepSize",1),St("onChange",Z),St("onChoose",Z),St("onInit",Z),St("onDragStart",Z),St("onDragEnd",Z),St("snapToGrid",!1),St("rounded",!0),ht("snapStart"),st("model",it("mode",{x:[St("minX",0),St("maxX",100),At("value",function(n){return Ee(n.mode.minX)}),ct("getInitialValue"),Zu("manager",Qw)],y:[St("minY",0),St("maxY",100),At("value",function(n){return Ee(n.mode.minY)}),ct("getInitialValue"),Zu("manager",rS)],xy:[St("minX",0),St("maxX",100),St("minY",0),St("maxY",100),At("value",function(n){return Ee({x:nn(n.mode.minX),y:nn(n.mode.minY)})}),ct("getInitialValue"),Zu("manager",fS)]})),Is("sliderBehaviours",[dg,nl])].concat(lS?[]:[At("mouseIsDown",function(){return Ee(!1)})]),mS=Ht().deviceType.isTouch(),gS=_l({name:"Slider",configFields:dS,partFields:Uw,factory:function(i,n,t,e){function u(n){return Js(n,i,"thumb")}function a(n){return Js(n,i,"spectrum")}function o(n){return Ks(n,i,"left-edge")}function r(n){return Ks(n,i,"right-edge")}function c(n){return Ks(n,i,"top-edge")}function s(n){return Ks(n,i,"bottom-edge")}function f(n,t){m.setPositionFromValue(n,t,i,{getLeftEdge:o,getRightEdge:r,getTopEdge:c,getBottomEdge:s,getSpectrum:a})}function l(n,t){d.value.set(t);var e=u(n);return f(n,e),i.onChange(n,e,t),on.some(!0)}var d=i.model,m=d.manager,g=[rr(eo(),function(n,t){i.onDragStart(n,u(n))}),rr(ro(),function(n,t){i.onDragEnd(n,u(n))})],p=[rr(uo(),function(n,t){t.stop(),i.onDragStart(n,u(n)),i.mouseIsDown.set(!0)}),rr(so(),function(n,t){i.onDragEnd(n,u(n))})],h=mS?g:p;return{uid:i.uid,dom:i.dom,components:n,behaviours:Vs(i.sliderBehaviours,H([mS?[]:[dg.config({mode:"special",focusIn:function(n){return Ks(n,i,"spectrum").map(dg.focusIn).map(nn(!0))}})],[nl.config({store:{mode:"manual",getValue:function(n){return d.value.get()}}}),dc.config({channels:{"mouse.released":{onReceive:function(e,n){function t(){Ks(e,i,"thumb").each(function(n){var t=d.value.get();i.onChoose(e,n,t)})}if(mS)t();else{var o=i.mouseIsDown.get();i.mouseIsDown.set(!1),o&&t()}}}}})]])),events:tr([rr(Gw(),function(n,t){l(n,t.event().value())}),Ri(function(n,t){var e=d.getInitialValue();d.value.set(e);var o=u(n);f(n,o);var r=a(n);i.onInit(n,o,r,d.value.get())})].concat(h)),apis:{resetToMin:function(n){m.setToMin(n,i)},resetToMax:function(n){m.setToMax(n,i)},changeValue:l,refresh:f},domModification:{styles:{position:"relative"}}}},apis:{resetToMin:function(n,t){n.resetToMin(t)},resetToMax:function(n,t){n.resetToMax(t)},refresh:function(n,t){n.refresh(t)}}}),pS=function(n,t){var e=gS.parts().spectrum({dom:{tag:"div",classes:[t("hue-slider-spectrum")],attributes:{role:"presentation"}}}),o=gS.parts().thumb({dom:{tag:"div",classes:[t("hue-slider-thumb")],attributes:{role:"presentation"}}});return gS.sketch({dom:{tag:"div",classes:[t("hue-slider")],attributes:{role:"presentation"}},rounded:!1,model:{mode:"y",getInitialValue:nn({y:nn(0)})},components:[e,o],sliderBehaviours:ya([bg.config({})]),onChange:function(n,t,e){qt(n,Mw(),{value:e})}})},hS=[Is("formBehaviours",[nl])],vS=function(o,n,t){return{uid:o.uid,dom:o.dom,components:n,behaviours:Vs(o.formBehaviours,[nl.config({store:{mode:"manual",getValue:function(n){var t=Qs(n,o);return P(t,function(n,t){return n().bind(function(n){return function(n,t){return n.fold(function(){return an.error(t)},an.value)}(nd.getCurrent(n),"missing current")}).map(nl.getValue)})},setValue:function(e,n){Cn(n,function(t,n){Ks(e,o,n).each(function(n){nd.getCurrent(n).each(function(n){nl.setValue(n,t)})})})}}})]),apis:{getField:function(n,t){return Ks(n,o,t).bind(nd.getCurrent)}}}},bS={getField:Ur(function(n,t,e){return n.getField(t,e)}),sketch:function(n){var e,t=(e=[],{field:function(n,t){return e.push(n),Ws("form",pw(n),t)},record:function(){return e}}),o=n(t),r=t.record(),i=S(r,function(n){return wl({name:n,pname:pw(n)})});return rf("form",hS,i,vS,o)}},yS=Hr("valid-input"),xS=Hr("invalid-input"),wS=Hr("validating-input"),SS="colorcustom.rgb.",CS=function(d,m,g,p){function h(n,t,e,o,r){var i=d(SS+"range"),u=[by.parts().label({dom:{tag:"label",innerHtml:e,attributes:{"aria-label":o}}}),by.parts().field({data:r,factory:xy,inputAttributes:N({type:"text"},"hex"===t?{"aria-live":"polite"}:{}),inputClasses:[m("textfield")],inputBehaviours:ya([function(t,o){return Uy.config({invalidClass:m("invalid"),notify:{onValidate:function(n){qt(n,wS,{type:t})},onValid:function(n){qt(n,yS,{type:t,value:nl.getValue(n)})},onInvalid:function(n){qt(n,xS,{type:t,value:nl.getValue(n)})}},validator:{validate:function(n){var t=nl.getValue(n),e=o(t)?an.value(!0):an.error(d("aria.input.invalid"));return Hy(e)},validateOnLoad:!1}})}(t,n),Xy.config({})]),onSetValue:function(n){Uy.isInvalid(n)&&Uy.run(n).get(Z)}})],a="hex"!==t?[by.parts()["aria-descriptor"]({text:i})]:[];return{dom:{tag:"div",attributes:{role:"presentation"}},components:u.concat(a)}}function v(n,t){var e=t.red(),o=t.green(),r=t.blue();nl.setValue(n,{red:e,green:o,blue:r})}function b(n,t){y.getOpt(n).each(function(n){li(n.element(),"background-color","#"+t.value())})}var y=bm({dom:{tag:"div",classes:[m("rgba-preview")],styles:{"background-color":"white"},attributes:{role:"presentation"}}});return Al({factory:function(){function r(n){return u[n]().get()}function i(n,t){u[n]().set(t)}function t(n,t){var e=t.event();"hex"!==e.type()?i(e.type(),on.none()):p(n)}function o(e,n,t){var o=parseInt(t,10);i(n,on.some(o)),r("red").bind(function(e){return r("green").bind(function(t){return r("blue").map(function(n){return Gh(e,t,n,1)})})}).each(function(n){var t=function(t,n){var e=Wh(n);return bS.getField(t,"hex").each(function(n){bg.isFocused(n)||nl.setValue(t,{hex:e.value()})}),e}(e,n);b(e,t)})}function e(n,t){var e=t.event();!function(n){return"hex"===n.type()}(e)?o(n,e.type(),e.value()):function(n,t){g(n);var e=zh(t);i("hex",on.some(t));var o=qh(e);v(n,o),a(o),qt(n,_w(),{hex:e}),b(n,e)}(n,e.value())}function n(n){return{label:d(SS+n+".label"),description:d(SS+n+".description")}}var u={red:nn(Ee(on.some(255))),green:nn(Ee(on.some(255))),blue:nn(Ee(on.some(255))),hex:nn(Ee(on.some("ffffff")))},a=function(n){var t=n.red(),e=n.green(),o=n.blue();i("red",on.some(t)),i("green",on.some(e)),i("blue",on.some(o))},c=n("red"),s=n("green"),f=n("blue"),l=n("hex");return Bn(bS.sketch(function(n){return{dom:{tag:"form",classes:[m("rgb-form")],attributes:{"aria-label":d("aria.color.picker")}},components:[n.field("red",by.sketch(h(Xh,"red",c.label,c.description,255))),n.field("green",by.sketch(h(Xh,"green",s.label,s.description,255))),n.field("blue",by.sketch(h(Xh,"blue",f.label,f.description,255))),n.field("hex",by.sketch(h(Lh,"hex",l.label,l.description,"ffffff"))),y.asSpec()],formBehaviours:ya([Uy.config({invalidClass:m("form-invalid")}),Jd("rgb-form-events",[rr(yS,e),rr(xS,t),rr(wS,t)])])}}),{apis:{updateHex:function(n,t){nl.setValue(n,{hex:t.value()}),function(n,t){var e=qh(t);v(n,e),a(e)}(n,t),b(n,t)}}})},name:"RgbForm",configFields:[],apis:{updateHex:function(n,t,e){n.updateHex(t,e)}},extraApis:{}})},kS=function(n,o){function r(n,t){var e=n.width,o=n.height,r=n.getContext("2d");if(null!==r){r.fillStyle=t,r.fillRect(0,0,e,o);var i=r.createLinearGradient(0,0,e,0);i.addColorStop(0,"rgba(255,255,255,1)"),i.addColorStop(1,"rgba(255,255,255,0)"),r.fillStyle=i,r.fillRect(0,0,e,o);var u=r.createLinearGradient(0,0,0,o);u.addColorStop(0,"rgba(0,0,0,0)"),u.addColorStop(1,"rgba(0,0,0,1)"),r.fillStyle=u,r.fillRect(0,0,e,o)}}var i=gS.parts().spectrum({dom:{tag:"canvas",attributes:{role:"presentation"},classes:[o("sv-palette-spectrum")]}}),u=gS.parts().thumb({dom:{tag:"div",attributes:{role:"presentation"},classes:[o("sv-palette-thumb")],innerHtml:"<div class="+o("sv-palette-inner-thumb")+' role="presentation"></div>'}});return Al({factory:function(n){var t=nn({x:nn(0),y:nn(0)}),e=ya([nd.config({find:on.some}),bg.config({})]);return gS.sketch({dom:{tag:"div",attributes:{role:"presentation"},classes:[o("sv-palette")]},model:{mode:"xy",getInitialValue:t},rounded:!1,components:[i,u],onChange:function(n,t,e){qt(n,Fw(),{value:e})},onInit:function(n,t,e,o){r(e.element().dom(),Jh(rv()))},sliderBehaviours:e})},name:"SaturationBrightnessPalette",configFields:[],apis:{setRgba:function(n,t,e){!function(n,t){var e=n.components()[0].element().dom();r(e,Jh(t))}(t,e)}},extraApis:{}})},OS=function(l,d){return Al({name:"ColourPicker",configFields:[ct("dom"),St("onValidHex",Z),St("onInvalidHex",Z)],factory:function(n){function t(n,e){u.getOpt(n).each(function(n){var t=qh(e);s.paletteRgba().set(t),i.setRgba(n,t)})}function e(n,t){f.getOpt(n).each(function(n){r.updateHex(n,t)})}function a(t,e,n){bn(n,function(n){n(t,e)})}var o,c,r=CS(l,d,n.onValidHex,n.onInvalidHex),i=kS(l,d),s={paletteRgba:nn(Ee(rv()))},u=bm(i.sketch({})),f=bm(r.sketch({}));return{uid:n.uid,dom:n.dom,components:[u.asSpec(),pS(l,d),f.asSpec()],behaviours:ya([Jd("colour-picker-events",[rr(Fw(),(c=[e],function(n,t){var e=t.event().value(),o=function(n){var t,e=0,o=0,r=n.red()/255,i=n.green()/255,u=n.blue()/255,a=Math.min(r,Math.min(i,u)),c=Math.max(r,Math.max(i,u));return a===c?fx(0,0,100*(o=a)):(e=60*((e=r===a?3:u===a?1:5)-(r===a?i-u:u===a?r-i:u-r)/(c-a)),t=(c-a)/c,o=c,fx(Math.round(e),Math.round(100*t),Math.round(100*o)))}(s.paletteRgba().get()),r=fx(o.hue(),e.x(),100-e.y()),i=Yh(r),u=Wh(i);a(n,u,c)})),rr(Mw(),(o=[t,e],function(n,t){var e=function(n){var t=fx((100-n)/100*360,100,100),e=Yh(t);return Wh(e)}(t.event().value().y());a(n,e,o)}))]),nd.config({find:function(n){return f.getOpt(n)}}),dg.config({mode:"acyclic"})])}}})},TS=function(){return nd.config({find:on.some})},ES=function(n){return nd.config({find:n.getOpt})},DS=function(n){return nd.config({find:function(t){return wr(t.element(),n).bind(function(n){return t.getSystem().getByDom(n).toOption()})}})},BS={"colorcustom.rgb.red.label":"R","colorcustom.rgb.red.description":"Red component","colorcustom.rgb.green.label":"G","colorcustom.rgb.green.description":"Green component","colorcustom.rgb.blue.label":"B","colorcustom.rgb.blue.description":"Blue component","colorcustom.rgb.hex.label":"#","colorcustom.rgb.hex.description":"Hex color code","colorcustom.rgb.range":"Range 0 to 255","colorcustom.sb.saturation":"Saturation","colorcustom.sb.brightness":"Brightness","colorcustom.sb.picker":"Saturation and Brightness Picker","colorcustom.sb.palette":"Saturation and Brightness Palette","colorcustom.sb.instructions":"Use arrow keys to select saturation and brightness, on x and y axes","colorcustom.hue.hue":"Hue","colorcustom.hue.slider":"Hue Slider","colorcustom.hue.palette":"Hue Palette","colorcustom.hue.instructions":"Use arrow keys to select a hue","aria.color.picker":"Color Picker","aria.input.invalid":"Invalid input"},AS=tinymce.util.Tools.resolve("tinymce.Resource"),_S=de([St("preprocess",l),St("postprocess",l)]),MS=function(r,n){var i=ot("RepresentingConfigs.memento processors",_S,n);return nl.config({store:{mode:"manual",getValue:function(n){var t=r.get(n),e=nl.getValue(t);return i.postprocess(e)},setValue:function(n,t){var e=i.preprocess(t),o=r.get(n);nl.setValue(o,e)}}})},FS=vw,IS=function(n){return bw(n,Dr,Br)},RS=function(n){return nl.config({store:{mode:"memory",initialValue:n}})},VS=Hr("alloy-fake-before-tabstop"),NS=Hr("alloy-fake-after-tabstop"),HS=function(n){return db(n,["."+VS,"."+NS].join(","),nn(!1))},PS=function(n,t){var e=t.element();ii(e,VS)?ww(n,!0):ii(e,NS)&&ww(n,!1)},zS=function(n){return{dom:{tag:"div",classes:["tox-navobj"]},components:[xw([VS]),n,xw([NS])],behaviours:ya([DS(1)])}},LS=!(Ht().browser.isIE()||Ht().browser.isEdge());function jS(n,t){return GS(v.document.createElement("canvas"),n,t)}function US(n){var t=jS(n.width,n.height);return WS(t).drawImage(n,0,0),t}function WS(n){return n.getContext("2d")}function GS(n,t,e){return n.width=t,n.height=e,n}function XS(n){return n.naturalWidth||n.width}function YS(n){return n.naturalHeight||n.height}var qS,KS,JS=window.Promise?window.Promise:(qS=$S.immediateFn||"function"==typeof window.setImmediate&&window.setImmediate||function(n){v.setTimeout(n,1)},KS=Array.isArray||function(n){return"[object Array]"===Object.prototype.toString.call(n)},$S.prototype["catch"]=function(n){return this.then(null,n)},$S.prototype.then=function(e,o){var r=this;return new $S(function(n,t){ZS.call(r,new oC(e,o,n,t))})},$S.all=function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var c=Array.prototype.slice.call(1===n.length&&KS(n[0])?n[0]:n);return new $S(function(r,i){if(0===c.length)return r([]);var u=c.length;function a(t,n){try{if(n&&("object"==typeof n||"function"==typeof n)){var e=n.then;if("function"==typeof e)return void e.call(n,function(n){a(t,n)},i)}c[t]=n,0==--u&&r(c)}catch(o){i(o)}}for(var n=0;n<c.length;n++)a(n,c[n])})},$S.resolve=function(t){return t&&"object"==typeof t&&t.constructor===$S?t:new $S(function(n){n(t)})},$S.reject=function(e){return new $S(function(n,t){t(e)})},$S.race=function(r){return new $S(function(n,t){for(var e=0,o=r;e<o.length;e++)o[e].then(n,t)})},$S);function $S(n){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof n)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],rC(n,QS(nC,this),QS(tC,this))}function QS(n,t){return function(){return n.apply(t,arguments)}}function ZS(o){var r=this;null!==this._state?qS(function(){var n=r._state?o.onFulfilled:o.onRejected;if(null!==n){var t;try{t=n(r._value)}catch(e){return void o.reject(e)}o.resolve(t)}else(r._state?o.resolve:o.reject)(r._value)}):this._deferreds.push(o)}function nC(n){try{if(n===this)throw new TypeError("A promise cannot be resolved with itself.");if(n&&("object"==typeof n||"function"==typeof n)){var t=n.then;if("function"==typeof t)return void rC(QS(t,n),QS(nC,this),QS(tC,this))}this._state=!0,this._value=n,eC.call(this)}catch(e){tC.call(this,e)}}function tC(n){this._state=!1,this._value=n,eC.call(this)}function eC(){for(var n=0,t=this._deferreds;n<t.length;n++){var e=t[n];ZS.call(this,e)}this._deferreds=[]}function oC(n,t,e,o){this.onFulfilled="function"==typeof n?n:null,this.onRejected="function"==typeof t?t:null,this.resolve=e,this.reject=o}function rC(n,t,e){var o=!1;try{n(function(n){o||(o=!0,t(n))},function(n){o||(o=!0,e(n))})}catch(r){if(o)return;o=!0,e(r)}}function iC(e){return new JS(function(n,t){(function p(n){var t=n.split(","),e=/data:([^;]+)/.exec(t[0]);if(!e)return on.none();for(var o=e[1],r=t[1],i=v.atob(r),u=i.length,a=Math.ceil(u/1024),c=new Array(a),s=0;s<a;++s){for(var f=1024*s,l=Math.min(1024+f,u),d=new Array(l-f),m=f,g=0;m<l;++g,++m)d[g]=i[m].charCodeAt(0);c[s]=new Uint8Array(d)}return on.some(new v.Blob(c,{type:o}))})(e).fold(function(){t("uri is not base64: "+e)},n)})}function uC(n,o,r){return o=o||"image/png",v.HTMLCanvasElement.prototype.toBlob?new JS(function(t,e){n.toBlob(function(n){n?t(n):e()},o,r)}):iC(n.toDataURL(o,r))}function aC(n){return function t(a){return new JS(function(n,t){var e=v.URL.createObjectURL(a),o=new v.Image,r=function(){o.removeEventListener("load",i),o.removeEventListener("error",u)};function i(){r(),n(o)}function u(){r(),t("Unable to load data of type "+a.type+": "+e)}o.addEventListener("load",i),o.addEventListener("error",u),o.src=e,o.complete&&i()})}(n).then(function(n){!function e(n){v.URL.revokeObjectURL(n.src)}(n);var t=jS(XS(n),YS(n));return WS(t).drawImage(n,0,0),t})}function cC(n,t,e){var o=t.type;function r(t,e){return n.then(function(n){return function o(n,t,e){return t=t||"image/png",n.toDataURL(t,e)}(n,t,e)})}return{getType:nn(o),toBlob:function i(){return JS.resolve(t)},toDataURL:function u(){return e},toBase64:function a(){return e.split(",")[1]},toAdjustedBlob:function c(t,e){return n.then(function(n){return uC(n,t,e)})},toAdjustedDataURL:r,toAdjustedBase64:function s(n,t){return r(n,t).then(function(n){return n.split(",")[1]})},toCanvas:function f(){return n.then(US)}}}function sC(t){return function n(e){return new JS(function(n){var t=new v.FileReader;t.onloadend=function(){n(t.result)},t.readAsDataURL(e)})}(t).then(function(n){return cC(aC(t),t,n)})}function fC(t,n){return uC(t,n).then(function(n){return cC(JS.resolve(t),n,t.toDataURL())})}function lC(n,t,e){var o="string"==typeof n?parseFloat(n):n;return e<o?o=e:o<t&&(o=t),o}var dC=[0,.01,.02,.04,.05,.06,.07,.08,.1,.11,.12,.14,.15,.16,.17,.18,.2,.21,.22,.24,.25,.27,.28,.3,.32,.34,.36,.38,.4,.42,.44,.46,.48,.5,.53,.56,.59,.62,.65,.68,.71,.74,.77,.8,.83,.86,.89,.92,.95,.98,1,1.06,1.12,1.18,1.24,1.3,1.36,1.42,1.48,1.54,1.6,1.66,1.72,1.78,1.84,1.9,1.96,2,2.12,2.25,2.37,2.5,2.62,2.75,2.87,3,3.2,3.4,3.6,3.8,4,4.3,4.7,4.9,5,5.5,6,6.5,6.8,7,7.3,7.5,7.8,8,8.4,8.7,9,9.4,9.6,9.8,10];function mC(n,t){for(var e,o=[],r=new Array(25),i=0;i<5;i++){for(var u=0;u<5;u++)o[u]=t[u+5*i];for(u=0;u<5;u++){for(var a=e=0;a<5;a++)e+=n[u+5*a]*o[a];r[u+5*i]=e}}return r}function gC(t,e){return t.toCanvas().then(function(n){return function i(n,t,e){var o=WS(n);var r=function D(n,t){for(var e,o,r,i,u=n.data,a=t[0],c=t[1],s=t[2],f=t[3],l=t[4],d=t[5],m=t[6],g=t[7],p=t[8],h=t[9],v=t[10],b=t[11],y=t[12],x=t[13],w=t[14],S=t[15],C=t[16],k=t[17],O=t[18],T=t[19],E=0;E<u.length;E+=4)e=u[E],o=u[E+1],r=u[E+2],i=u[E+3],u[E]=e*a+o*c+r*s+i*f+l,u[E+1]=e*d+o*m+r*g+i*p+h,u[E+2]=e*v+o*b+r*y+i*x+w,u[E+3]=e*S+o*C+r*k+i*O+T;return n}(o.getImageData(0,0,n.width,n.height),e);return o.putImageData(r,0,0),fC(n,t)}(n,t.getType(),e)})}function pC(t,e){return t.toCanvas().then(function(n){return function u(n,t,e){var o=WS(n);var r=o.getImageData(0,0,n.width,n.height),i=o.getImageData(0,0,n.width,n.height);return i=function w(n,t,e){function o(n,t,e){return e<n?n=e:n<t&&(n=t),n}for(var r=Math.round(Math.sqrt(e.length)),i=Math.floor(r/2),u=n.data,a=t.data,c=n.width,s=n.height,f=0;f<s;f++)for(var l=0;l<c;l++){for(var d=0,m=0,g=0,p=0;p<r;p++)for(var h=0;h<r;h++){var v=o(l+h-i,0,c-1),b=4*(o(f+p-i,0,s-1)*c+v),y=e[p*r+h];d+=u[b]*y,m+=u[1+b]*y,g+=u[2+b]*y}var x=4*(f*c+l);a[x]=o(d,0,255),a[1+x]=o(m,0,255),a[2+x]=o(g,0,255)}return t}(r,i,e),o.putImageData(i,0,0),fC(n,t)}(n,t.getType(),e)})}function hC(e){return function(n,t){return gC(n,e([1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1],t))}}function vC(n,t,e,o){return gC(n,function r(n,t,e,o){return mC(n,[t=lC(t,0,2),0,0,0,0,0,e=lC(e,0,2),0,0,0,0,0,o=lC(o,0,2),0,0,0,0,0,1,0,0,0,0,0,1])}([1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1],t,e,o))}var bC=function sI(t){return function(n){return gC(n,t)}}([-1,0,0,0,255,0,-1,0,0,255,0,0,-1,0,255,0,0,0,1,0,0,0,0,0,1]),yC=hC(function fI(n,t){return mC(n,[1,0,0,0,t=lC(255*t,-255,255),0,1,0,0,t,0,0,1,0,t,0,0,0,1,0,0,0,0,0,1])}),xC=hC(function lI(n,t){var e;return t=lC(t,-1,1),mC(n,[(e=(t*=100)<0?127+t/100*127:127*(e=0===(e=t%1)?dC[t]:dC[Math.floor(t)]*(1-e)+dC[Math.floor(t)+1]*e)+127)/127,0,0,0,.5*(127-e),0,e/127,0,0,.5*(127-e),0,0,e/127,0,.5*(127-e),0,0,0,1,0,0,0,0,0,1])}),wC=function dI(t){return function(n){return pC(n,t)}}([0,-1,0,-1,5,-1,0,-1,0]),SC=function mI(c){return function(t,e){return t.toCanvas().then(function(n){return function(n,t,e){var o=WS(n),r=new Array(256);for(var i=0;i<r.length;i++)r[i]=c(i,e);var u=function a(n,t){for(var e=n.data,o=0;o<e.length;o+=4)e[o]=t[e[o]],e[o+1]=t[e[o+1]],e[o+2]=t[e[o+2]];return n}(o.getImageData(0,0,n.width,n.height),r);return o.putImageData(u,0,0),fC(n,t)}(n,t.getType(),e)})}}(function(n,t){return 255*Math.pow(n/255,1-t)});function CC(n,t,e){var o=XS(n),r=YS(n),i=t/o,u=e/r,a=!1;(i<.5||2<i)&&(i=i<.5?.5:2,a=!0),(u<.5||2<u)&&(u=u<.5?.5:2,a=!0);var c=function s(u,a,c){return new JS(function(n){var t=XS(u),e=YS(u),o=Math.floor(t*a),r=Math.floor(e*c),i=jS(o,r);WS(i).drawImage(u,0,0,t,e,0,0,o,r),n(i)})}(n,i,u);return a?c.then(function(n){return CC(n,t,e)}):c}function kC(t,e){return t.toCanvas().then(function(n){return function a(n,t,e){var o=jS(n.width,n.height),r=WS(o),i=0,u=0;90!==(e=e<0?360+e:e)&&270!==e||GS(o,o.height,o.width);90!==e&&180!==e||(i=o.width);270!==e&&180!==e||(u=o.height);return r.translate(i,u),r.rotate(e*Math.PI/180),r.drawImage(n,0,0),fC(o,t)}(n,t.getType(),e)})}function OC(t,e){return t.toCanvas().then(function(n){return function i(n,t,e){var o=jS(n.width,n.height),r=WS(o);"v"===e?(r.scale(1,-1),r.drawImage(n,0,-o.height)):(r.scale(-1,1),r.drawImage(n,-o.width,0));return fC(o,t)}(n,t.getType(),e)})}function TC(t,e,o,r,i){return t.toCanvas().then(function(n){return function a(n,t,e,o,r,i){var u=jS(r,i);return WS(u).drawImage(n,-e,-o),fC(u,t)}(n,t.getType(),e,o,r,i)})}function EC(n){return bC(n)}function DC(n){return wC(n)}function BC(n,t){return SC(n,t)}function AC(n,t){return yC(n,t)}function _C(n,t){return xC(n,t)}function MC(n,t){return OC(n,t)}function FC(n,t,e){return function r(t,e,o){return t.toCanvas().then(function(n){return CC(n,e,o).then(function(n){return fC(n,t.getType())})})}(n,t,e)}function IC(n,t){return kC(n,t)}function RC(n,t){return N({dom:{tag:"span",innerHtml:n,classes:["tox-icon","tox-tbtn__icon-wrap"]}},t)}function VC(n,t){return RC(xm(n,t),{})}function NC(n,t){return RC(xm(n,t),{behaviours:ya([gg.config({})])})}function HC(n,t,e){return{dom:{tag:"span",innerHtml:e.translate(n),classes:[t+"__select-label"]},behaviours:ya([gg.config({})])}}function PC(n,t,o){function e(n,t){var e=nl.getValue(n);return bg.focus(e),qt(e,"keydown",{raw:t.event().raw()}),Tw.close(e),on.some(!0)}var r=Ee(Z),i=n.text.map(function(n){return bm(HC(n,t,o.providers))}),u=n.icon.map(function(n){return bm(NC(n,o.providers.icons))}),a=n.role.fold(function(){return{}},function(n){return{role:n}}),c=n.tooltip.fold(function(){return{}},function(n){var t=o.providers.translate(n);return{title:t,"aria-label":t}});return bm(Tw.sketch(N(N({},a),{dom:{tag:"button",classes:[t,t+"--select"].concat(S(n.classes,function(n){return t+"--"+n})),attributes:N({},c)},components:Bh([u.map(function(n){return n.asSpec()}),i.map(function(n){return n.asSpec()}),on.some({dom:{tag:"div",classes:[t+"__select-chevron"],innerHtml:xm("chevron-down",o.providers.icons)}})]),matchWidth:!0,useMinWidth:!0,dropdownBehaviours:ya(g(n.dropdownBehaviours,[Th(n.disabled),Ew.config({}),gg.config({}),Jd("dropdown-events",[Ep(n,r),Dp(n,r)]),Jd("menubutton-update-display-text",[rr(fk,function(t,e){i.bind(function(n){return n.getOpt(t)}).each(function(n){gg.set(n,[Ti(o.providers.translate(e.event().text()))])})}),rr(lk,function(t,e){u.bind(function(n){return n.getOpt(t)}).each(function(n){gg.set(n,[NC(e.event().icon(),o.providers.icons)])})})])])),eventOrder:Bn(sk,{mousedown:["focusing","alloy.base.behaviour","item-type-events","normal-dropdown-events"]}),sandboxBehaviours:ya([dg.config({mode:"special",onLeft:e,onRight:e})]),lazySink:o.getSink,toggleClass:t+"--active",parts:{menu:Cv(0,n.columns,n.presets)},fetch:function(){return Ny(n.fetch)}}))).asSpec()}function zC(n){return"separator"===n.type}function LC(n,e){var t=O(n,function(n,t){return function(n){return cn(n)}(t)?""===t?n:"|"===t?0<n.length&&!zC(n[n.length-1])?n.concat([dk]):n:Tn(e,t.toLowerCase())?n.concat([e[t.toLowerCase()]]):n:n.concat([t])},[]);return 0<t.length&&zC(t[t.length-1])&&t.pop(),t}function jC(n,t){return function(n){return Tn(n,"getSubmenuItems")}(n)?function(n,t){var e=n.getSubmenuItems(),o=mk(e,t);return{item:n,menus:Bn(o.menus,q(n.value,o.items)),expansions:Bn(o.expansions,q(n.value,n.value))}}(n,t):{item:n,menus:{},expansions:{}}}function UC(n,e,o,t){var r=Hr("primary-menu"),i=mk(n,o.shared.providers.menuItems());if(0===i.items.length)return on.none();var u=ub(r,i.items,e,o,t),a=P(i.menus,function(n,t){return ub(t,n,e,o,!1)}),c=Bn(a,q(r,u));return on.from(jg.tieredData(r,c,i.expansions))}function WC(e){return{isDisabled:function(){return kh.isDisabled(e)},setDisabled:function(n){return kh.set(e,n)},setActive:function(n){var t=e.element();n?(ei(t,"tox-tbtn--enabled"),_r(t,"aria-pressed",!0)):(ri(t,"tox-tbtn--enabled"),Ir(t,"aria-pressed"))},isActive:function(){return ii(e.element(),"tox-tbtn--enabled")}}}function GC(n,t,e,o){return PC({text:n.text,icon:n.icon,tooltip:n.tooltip,role:o,fetch:function(t){n.fetch(function(n){t(UC(n,Ih.CLOSE_ON_EXECUTE,e,!1))})},onSetup:n.onSetup,getApi:WC,columns:1,presets:"normal",classes:[],dropdownBehaviours:[Xy.config({})]},t,e.shared)}function XC(t,o,r){return function(n){n(S(t,function(n){var t=n.text.fold(function(){return{}},function(n){return{text:n}});return N(N({type:n.type},t),{onAction:function(e){return function(n){r.shared.getSink().each(function(n){o().getOpt(n).each(function(n){Sa(n.element()),qt(n,fy,{name:e.name,value:e.storage.get()})})});var t=!n.isActive();n.setActive(t),e.storage.set(t)}}(n),onSetup:function(t){return function(n){n.setActive(t.storage.get())}}(n)})}))}}function YC(n,t,e,o,r){void 0===e&&(e=[]);var i=t.fold(function(){return{}},function(n){return{action:n}}),u=N({buttonBehaviours:ya([Th(n.disabled),Xy.config({}),Jd("button press",[or("click"),or("mousedown")])].concat(e)),eventOrder:{click:["button press","alloy.base.behaviour"],mousedown:["button press","alloy.base.behaviour"]}},i),a=Bn(u,{dom:o});return Bn(a,{components:r})}function qC(n,t,e,o){void 0===o&&(o=[]);var r={tag:"button",classes:["tox-tbtn"],attributes:n.tooltip.map(function(n){return{"aria-label":e.translate(n),title:e.translate(n)}}).getOr({})},i=n.icon.map(function(n){return VC(n,e.icons)}),u=Bh([i]);return YC(n,t,o,r,u)}function KC(n,t,e,o){void 0===o&&(o=[]);var r=qC(n,on.some(t),e,o);return Xg.sketch(r)}function JC(n,t,e,o,r){void 0===o&&(o=[]),void 0===r&&(r=[]);var i=e.translate(n.text),u=n.icon?n.icon.map(function(n){return VC(n,e.icons)}):on.none(),a=u.isSome()?Bh([u]):[],c=u.isSome()?{}:{innerHtml:i},s=g(n.primary||n.borderless?["tox-button"]:["tox-button","tox-button--secondary"],u.isSome()?["tox-button--icon"]:[],n.borderless?["tox-button--naked"]:[],r),f=N(N({tag:"button",classes:s},c),{attributes:{title:i}});return YC(n,t,o,f,a)}function $C(n,t,e,o,r){void 0===o&&(o=[]),void 0===r&&(r=[]);var i=JC(n,on.some(t),e,o,r);return Xg.sketch(i)}function QC(t,e){return function(n){"custom"===e?qt(n,fy,{name:t,value:{}}):"submit"===e?Yt(n,ly):"cancel"===e?Yt(n,sy):v.console.error("Unknown button type: ",e)}}function ZC(n,t,e){if(function(n,t){return"menu"===t}(0,t)){var o=n,r=N(N({},n),{fetch:XC(o.items,function(){return i},e)}),i=bm(GC(r,"tox-tbtn",e,on.none()));return i.asSpec()}if(function(n,t){return"custom"===t||"cancel"===t||"submit"===t}(0,t)){var u=QC(n.name,t),a=N(N({},n),{borderless:!1});return $C(a,u,e.shared.providers,[])}v.console.error("Unknown footer button type: ",t)}function nk(n,t){var e=QC(n.name,"custom");return function(n,t){return By(n,t,[],[])}(on.none(),by.parts().field(N({factory:Xg},JC(n,on.some(e),t,[RS(""),TS()]))))}function tk(n,t){return wl({factory:by,name:n,overrides:function(o){return{fieldBehaviours:ya([Jd("coupled-input-behaviour",[rr(ho(),function(e){(function(n,t,e){return Ks(n,t,e).bind(nd.getCurrent)})(e,o,t).each(function(t){Ks(e,o,"lock").each(function(n){kg.isOn(n)&&o.onLockedChange(e,t,n)})})})])])}}})}function ek(n){var t=/^\s*(\d+(?:\.\d+)?)\s*(|cm|mm|in|px|pt|pc|em|ex|ch|rem|vw|vh|vmin|vmax|%)\s*$/.exec(n);if(null===t)return an.error(n);var e=parseFloat(t[1]),o=t[2];return an.value({value:e,unit:o})}function ok(n,t){function e(n){return Object.prototype.hasOwnProperty.call(o,n)}var o={"":96,px:96,pt:72,cm:2.54,pc:12,mm:25.4,"in":1};return n.unit===t?on.some(n.value):e(n.unit)&&e(t)?o[n.unit]===o[t]?on.some(n.value):on.some(n.value/o[n.unit]*o[t]):on.none()}function rk(n){return on.none()}function ik(n,t){return function(n,t,e){return n.isSome()&&t.isSome()?on.some(e(n.getOrDie(),t.getOrDie())):on.none()}(ek(n).toOption(),ek(t).toOption(),function(n,t){return ok(n,t.unit).map(function(n){return t.value/n}).map(function(n){return function(t,e){return function(n){return ok(n,e).map(function(n){return{value:n*t,unit:e}})}}(n,t.unit)}).getOr(rk)}).getOr(rk)}function uk(o,t){function n(n){return{dom:{tag:"div",classes:["tox-form__group"]},components:n}}function e(e){return by.parts().field({factory:xy,inputClasses:["tox-textfield"],inputBehaviours:ya([kh.config({disabled:o.disabled}),Xy.config({}),Jd("size-input-events",[rr(lo(),function(n,t){qt(n,i,{isField1:e})}),rr(vo(),function(n,t){qt(n,ay,{name:o.name})})])]),selectOnFocus:!1})}function r(n){return{dom:{tag:"label",classes:["tox-label"],innerHtml:t.translate(n)}}}var a=rk,i=Hr("ratio-event"),u=hk.parts().lock({dom:{tag:"button",classes:["tox-lock","tox-button","tox-button--naked","tox-button--icon"],attributes:{title:t.translate(o.label.getOr("Constrain proportions"))}},components:[{dom:{tag:"span",classes:["tox-icon","tox-lock-icon__lock"],innerHtml:xm("lock",t.icons)}},{dom:{tag:"span",classes:["tox-icon","tox-lock-icon__unlock"],innerHtml:xm("unlock",t.icons)}}],buttonBehaviours:ya([Th(o.disabled),Xy.config({})])}),c=hk.parts().field1(n([by.parts().label(r("Width")),e(!0)])),s=hk.parts().field2(n([by.parts().label(r("Height")),e(!1)]));return hk.sketch({dom:{tag:"div",classes:["tox-form__group"]},components:[{dom:{tag:"div",classes:["tox-form__controls-h-stack"]},components:[c,s,n([r("&nbsp;"),u])]}],field1Name:"width",field2Name:"height",locked:!0,markers:{lockClass:"tox-locked"},onLockedChange:function(n,t,e){ek(nl.getValue(n)).each(function(n){a(n).each(function(n){nl.setValue(t,function(n){var t,e={"":0,px:0,pt:1,mm:1,pc:2,ex:2,em:2,ch:2,rem:2,cm:3,"in":4,"%":4},o=n.value.toFixed((t=n.unit)in e?e[t]:1);return-1!==o.indexOf(".")&&(o=o.replace(/\.?0*$/,"")),o+n.unit}(n))})})},coupledFieldBehaviours:ya([kh.config({disabled:o.disabled,onDisabled:function(n){hk.getField1(n).bind(by.getField).each(kh.disable),hk.getField2(n).bind(by.getField).each(kh.disable),hk.getLock(n).each(kh.disable)},onEnabled:function(n){hk.getField1(n).bind(by.getField).each(kh.enable),hk.getField2(n).bind(by.getField).each(kh.enable),hk.getLock(n).each(kh.enable)}}),Jd("size-input-events2",[rr(i,function(n,t){var e=t.event().isField1(),o=e?hk.getField1(n):hk.getField2(n),r=e?hk.getField2(n):hk.getField1(n),i=o.map(nl.getValue).getOr(""),u=r.map(nl.getValue).getOr("");a=ik(i,u)})])])})}function ak(r,c){function n(n,t,e,o){return bm($C({name:n,text:n,disabled:e,primary:o,icon:on.none(),borderless:!1},t,c))}function t(n,t,e,o){return bm(KC({name:n,icon:on.some(n),tooltip:on.some(t),disabled:o,primary:!1,borderless:!1},e,c))}function u(n,e){n.map(function(n){var t=n.get(e);t.hasConfigured(kh)&&kh.disable(t)})}function a(n,e){n.map(function(n){var t=n.get(e);t.hasConfigured(kh)&&kh.enable(t)})}function i(n,t,e){qt(n,t,e)}function e(n){return Yt(n,wk.disable())}function o(n){return Yt(n,wk.enable())}function s(n,t){e(n),i(n,vk.transform(),{transform:t}),o(n)}function f(n){return function(){Q.getOpt(n).each(function(n){gg.set(n,[J])})}}function l(n,t){e(n),i(n,vk.transformApply(),{transform:t,swap:f(n)}),o(n)}function d(){return n("Back",function(n){return i(n,vk.back(),{swap:f(n)})},!1,!1)}function m(){return bm({dom:{tag:"div",classes:["tox-spacer"]},behaviours:ya([kh.config({})])})}function g(){return n("Apply",function(n){return i(n,vk.apply(),{swap:f(n)})},!0,!0)}function p(){return function(n){var t=r.getRect();return function(n,t,e,o,r){return TC(n,t,e,o,r)}(n,t.x,t.y,t.w,t.h)}}function h(t,e){return function(n){return t(n,e)}}function v(n,t){!function(n,t){e(n),i(n,vk.tempTransform(),{transform:t}),o(n)}(n,t)}function b(n,t,e,o,r){var i=gS.parts().label({dom:{tag:"label",classes:["tox-label"],innerHtml:c.translate(n)}}),u=gS.parts().spectrum({dom:{tag:"div",classes:["tox-slider__rail"],attributes:{role:"presentation"}}}),a=gS.parts().thumb({dom:{tag:"div",classes:["tox-slider__handle"],attributes:{role:"presentation"}}});return bm(gS.sketch({dom:{tag:"div",classes:["tox-slider"],attributes:{role:"presentation"}},model:{mode:"x",minX:e,maxX:r,getInitialValue:nn({x:nn(o)})},components:[i,u,a],sliderBehaviours:ya([bg.config({})]),onChoose:t}))}function y(n,t,e,o,r){return[d(),function(n,r,t,e,o){return b(n,function(n,t,e){var o=h(r,e.x()/100);s(n,o)},t,e,o)}(n,t,e,o,r),g()]}function x(n,t,e,o,r){var i=y(n,t,e,o,r);return Gb.sketch({dom:k,components:i.map(function(n){return n.asSpec()}),containerBehaviours:ya([Jd("image-tools-filter-panel-buttons-events",[rr(wk.disable(),function(n,t){u(i,n)}),rr(wk.enable(),function(n,t){a(i,n)})])])})}function w(t,e,o){return function(n){return function(n,t,e,o){return vC(n,t,e,o)}(n,t,e,o)}}function S(n){return b(n,function(a,n,t){var e=j.getOpt(a),o=W.getOpt(a),r=U.getOpt(a);e.each(function(u){o.each(function(i){r.each(function(n){var t=nl.getValue(u).x()/100,e=nl.getValue(n).x()/100,o=nl.getValue(i).x()/100,r=w(t,e,o);s(a,r)})})})},0,100,200)}function C(t,e,o){return function(n){i(n,vk.swap(),{transform:e,swap:function(){Q.getOpt(n).each(function(n){gg.set(n,[t]),o(n)})}})}}var k={tag:"div",classes:["tox-image-tools__toolbar","tox-image-tools-edit-panel"]},O=Z,T=[d(),m(),n("Apply",function(n){var t=p();l(n,t),r.hideCrop()},!1,!0)],E=Gb.sketch({dom:k,components:T.map(function(n){return n.asSpec()}),containerBehaviours:ya([Jd("image-tools-crop-buttons-events",[rr(wk.disable(),function(n,t){u(T,n)}),rr(wk.enable(),function(n,t){a(T,n)})])])}),D=bm(uk({name:"size",label:on.none(),constrain:!0,disabled:!1},c)),B=[d(),m(),D,m(),n("Apply",function(o){D.getOpt(o).each(function(n){var t=nl.getValue(n),e=function(t,e){return function(n){return FC(n,t,e)}}(parseInt(t.width,10),parseInt(t.height,10));l(o,e)})},!1,!0)],A=Gb.sketch({dom:k,components:B.map(function(n){return n.asSpec()}),containerBehaviours:ya([Jd("image-tools-resize-buttons-events",[rr(wk.disable(),function(n,t){u(B,n)}),rr(wk.enable(),function(n,t){a(B,n)})])])}),_=h(MC,"h"),M=h(MC,"v"),F=h(IC,-90),I=h(IC,90),R=[d(),m(),t("flip-horizontally","Flip horizontally",function(n){v(n,_)},!1),t("flip-vertically","Flip vertically",function(n){v(n,M)},!1),t("rotate-left","Rotate counterclockwise",function(n){v(n,F)},!1),t("rotate-right","Rotate clockwise",function(n){v(n,I)},!1),m(),g()],V=Gb.sketch({dom:k,components:R.map(function(n){return n.asSpec()}),containerBehaviours:ya([Jd("image-tools-fliprotate-buttons-events",[rr(wk.disable(),function(n,t){u(R,n)}),rr(wk.enable(),function(n,t){a(R,n)})])])}),N=[d(),m(),g()],H=Gb.sketch({dom:k,components:N.map(function(n){return n.asSpec()})}),P=x("Brightness",AC,-100,0,100),z=x("Contrast",_C,-100,0,100),L=x("Gamma",BC,-100,0,100),j=S("R"),U=S("G"),W=S("B"),G=[d(),j,U,W,g()],X=Gb.sketch({dom:k,components:G.map(function(n){return n.asSpec()})}),Y=on.some(DC),q=on.some(EC),K=[t("crop","Crop",C(E,on.none(),function(n){r.showCrop()}),!1),t("resize","Resize",C(A,on.none(),function(n){D.getOpt(n).each(function(n){var t=r.getMeasurements(),e=t.width,o=t.height;nl.setValue(n,{width:e,height:o})})}),!1),t("orientation","Orientation",C(V,on.none(),O),!1),t("brightness","Brightness",C(P,on.none(),O),!1),t("sharpen","Sharpen",C(H,Y,O),!1),t("contrast","Contrast",C(z,on.none(),O),!1),t("color-levels","Color levels",C(X,on.none(),O),!1),t("gamma","Gamma",C(L,on.none(),O),!1),t("invert","Invert",C(H,q,O),!1)],J=Gb.sketch({dom:k,components:K.map(function(n){return n.asSpec()})}),$=Gb.sketch({dom:{tag:"div"},components:[J],containerBehaviours:ya([gg.config({})])}),Q=bm($);return{memContainer:Q,getApplyButton:function(n){return Q.getOpt(n).map(function(n){var t=n.components()[0];return t.components()[t.components().length-1]})}}}var ck=Hr("toolbar.button.execute"),sk={"alloy.execute":["disabling","alloy.base.behaviour","toggling","toolbar-button-events"]},fk=Hr("update-menu-text"),lk=Hr("update-menu-icon"),dk={type:"separator"},mk=function(n,r){var t=LC(cn(n)?n.split(" "):n,r);return k(t,function(n,t){var e=function(n){if(zC(n))return n;var t=Nn(n,"value").getOrThunk(function(){return Hr("generated-menu-item")});return Bn({value:t},n)}(t),o=jC(e,r);return{menus:Bn(n.menus,o.menus),items:[o.item].concat(n.items),expansions:Bn(n.expansions,o.expansions)}},{menus:{},expansions:{},items:[]})},gk=nn([St("field1Name","field1"),St("field2Name","field2"),$u("onLockedChange"),Yu(["lockClass"]),St("locked",!1),tl("coupledFieldBehaviours",[nd,nl])]),pk=nn([tk("field1","field2"),tk("field2","field1"),wl({factory:Xg,schema:[ct("dom")],name:"lock",overrides:function(n){return{buttonBehaviours:ya([kg.config({selected:n.locked,toggleClass:n.markers.lockClass,aria:{mode:"pressed"}})])}}})]),hk=_l({name:"FormCoupledInputs",configFields:gk(),partFields:pk(),factory:function(o,n,t,e){return{uid:o.uid,dom:o.dom,components:n,behaviours:el(o.coupledFieldBehaviours,[nd.config({find:on.some}),nl.config({store:{mode:"manual",getValue:function(n){var t,e=nf(n,o,["field1","field2"]);return(t={})[o.field1Name]=nl.getValue(e.field1()),t[o.field2Name]=nl.getValue(e.field2()),t},setValue:function(n,t){var e=nf(n,o,["field1","field2"]);$(t,o.field1Name)&&nl.setValue(e.field1(),t[o.field1Name]),$(t,o.field2Name)&&nl.setValue(e.field2(),t[o.field2Name])}}})]),apis:{getField1:function(n){return Ks(n,o,"field1")},getField2:function(n){return Ks(n,o,"field2")},getLock:function(n){return Ks(n,o,"lock")}}}},apis:{getField1:function(n,t){return n.getField1(t)},getField2:function(n,t){return n.getField2(t)},getLock:function(n,t){return n.getLock(t)}}}),vk={undo:nn(Hr("undo")),redo:nn(Hr("redo")),zoom:nn(Hr("zoom")),back:nn(Hr("back")),apply:nn(Hr("apply")),swap:nn(Hr("swap")),transform:nn(Hr("transform")),tempTransform:nn(Hr("temp-transform")),transformApply:nn(Hr("transform-apply"))},bk=nn("save-state"),yk=nn("disable"),xk=nn("enable"),wk={formActionEvent:fy,saveState:bk,disable:yk,enable:xk},Sk=tinymce.util.Tools.resolve("tinymce.dom.DomQuery"),Ck=tinymce.util.Tools.resolve("tinymce.geom.Rect"),kk=tinymce.util.Tools.resolve("tinymce.util.Observable"),Ok=tinymce.util.Tools.resolve("tinymce.util.Tools"),Tk=tinymce.util.Tools.resolve("tinymce.util.VK");function Ek(n){var t,e;if(n.changedTouches)for(t="screenX screenY pageX pageY clientX clientY".split(" "),e=0;e<t.length;e++)n[t[e]]=n.changedTouches[0][t[e]]}function Dk(n,r){var i,u,t,a,c,f,l,d=r.document||v.document;r=r||{};var m=d.getElementById(r.handle||n);t=function(n){var t,e,o=function s(n){var t,e,o,r,i,u,a,c=Math.max;return t=n.documentElement,e=n.body,o=c(t.scrollWidth,e.scrollWidth),r=c(t.clientWidth,e.clientWidth),i=c(t.offsetWidth,e.offsetWidth),u=c(t.scrollHeight,e.scrollHeight),a=c(t.clientHeight,e.clientHeight),{width:o<i?r:o,height:u<c(t.offsetHeight,e.offsetHeight)?a:u}}(d);Ek(n),n.preventDefault(),u=n.button,t=m,f=n.screenX,l=n.screenY,e=v.window.getComputedStyle?v.window.getComputedStyle(t,null).getPropertyValue("cursor"):t.runtimeStyle.cursor,i=Sk("<div></div>").css({position:"absolute",top:0,left:0,width:o.width,height:o.height,zIndex:2147483647,opacity:1e-4,cursor:e}).appendTo(d.body),Sk(d).on("mousemove touchmove",c).on("mouseup touchend",a),r.start(n)},c=function(n){if(Ek(n),n.button!==u)return a(n);n.deltaX=n.screenX-f,n.deltaY=n.screenY-l,n.preventDefault(),r.drag(n)},a=function(n){Ek(n),Sk(d).off("mousemove touchmove",c).off("mouseup touchend",a),i.remove(),r.stop&&r.stop(n)},this.destroy=function(){Sk(m).off()},Sk(m).on("mousedown touchstart",t)}function Bk(t){function u(n,s){c.getOpt(n).each(function(n){var e=l.get(),o=gu(n.element()),r=fu(n.element()),i=s.dom().naturalWidth*e,u=s.dom().naturalHeight*e,a=Math.max(0,o/2-i/2),c=Math.max(0,r/2-u/2),t={left:a.toString()+"px",top:c.toString()+"px",width:i.toString()+"px",height:u.toString()+"px",position:"absolute"};di(s,t),f.getOpt(n).each(function(n){di(n.element(),t)}),d.get().each(function(n){var t=m.get();n.setRect({x:t.x*e+a,y:t.y*e+c,w:t.w*e,h:t.h*e}),n.setClampRect({x:a,y:c,w:i,h:u}),n.setViewPortRect({x:0,y:0,w:o,h:r})})})}function e(n,t){var i=Be.fromTag("img");return _r(i,"src",t),function(e){return new Hp(function(n){var t=function(){e.removeEventListener("load",t),n(e)};e.complete?n(e):e.addEventListener("load",t)})}(i.dom()).then(function(){return c.getOpt(n).map(function(n){var t=iu({element:i});gg.replaceAt(n,1,on.some(t));var e=a.get(),o={x:0,y:0,w:i.dom().naturalWidth,h:i.dom().naturalHeight};a.set(o);var r=Ck.inflate(o,-20,-20);return m.set(r),e.w===o.w&&e.h===o.h||function(n,u){c.getOpt(n).each(function(n){var t=gu(n.element()),e=fu(n.element()),o=u.dom().naturalWidth,r=u.dom().naturalHeight,i=Math.min(t/o,e/r);1<=i?l.set(1):l.set(i)})}(n,i),u(n,i),i})})}var f=bm({dom:{tag:"div",classes:["tox-image-tools__image-bg"],attributes:{role:"presentation"}}}),l=Ee(1),d=Ee(on.none()),m=Ee({x:0,y:0,w:1,h:1}),a=Ee({x:0,y:0,w:1,h:1}),n=Gb.sketch({dom:{tag:"div",classes:["tox-image-tools__image"]},components:[f.asSpec(),{dom:{tag:"img",attributes:{src:t}}},{dom:{tag:"div"},behaviours:ya([Jd("image-panel-crop-events",[Ri(function(n){c.getOpt(n).each(function(n){var t=n.element().dom(),e=Fk({x:10,y:10,w:100,h:100},{x:0,y:0,w:200,h:200},{x:0,y:0,w:200,h:200},t,function(){});e.toggleVisibility(!1),e.on("updateRect",function(n){var t=n.rect,e=l.get(),o={x:Math.round(t.x/e),y:Math.round(t.y/e),w:Math.round(t.w/e),h:Math.round(t.h/e)};m.set(o)}),d.set(on.some(e))})})])])}],containerBehaviours:ya([gg.config({}),Jd("image-panel-events",[Ri(function(n){e(n,t)})])])}),c=bm(n);return{memContainer:c,updateSrc:e,zoom:function(n,t){var e=l.get(),o=0<t?Math.min(2,e+.1):Math.max(.1,e-.1);l.set(o),c.getOpt(n).each(function(n){var t=n.components()[1].element();u(n,t)})},showCrop:function(){d.get().each(function(n){n.toggleVisibility(!0)})},hideCrop:function(){d.get().each(function(n){n.toggleVisibility(!1)})},getRect:function(){return m.get()},getMeasurements:function(){var n=a.get();return{width:n.w,height:n.h}}}}function Ak(n,t,e,o,r){return KC({name:n,icon:on.some(t),disabled:e,tooltip:on.some(n),primary:!1,borderless:!1},o,r)}function _k(n,t){t?kh.enable(n):kh.disable(n)}var Mk=0,Fk=function(s,e,f,o,r){var l,t,i,u="tox-",a="tox-crid-"+Mk++,c=[{name:"move",xMul:0,yMul:0,deltaX:1,deltaY:1,deltaW:0,deltaH:0,label:"Crop Mask"},{name:"nw",xMul:0,yMul:0,deltaX:1,deltaY:1,deltaW:-1,deltaH:-1,label:"Top Left Crop Handle"},{name:"ne",xMul:1,yMul:0,deltaX:0,deltaY:1,deltaW:1,deltaH:-1,label:"Top Right Crop Handle"},{name:"sw",xMul:0,yMul:1,deltaX:1,deltaY:0,deltaW:-1,deltaH:1,label:"Bottom Left Crop Handle"},{name:"se",xMul:1,yMul:1,deltaX:0,deltaY:0,deltaW:1,deltaH:1,label:"Bottom Right Crop Handle"}];i=["top","right","bottom","left"];var d=function(n,t){return{x:t.x+n.x,y:t.y+n.y,w:t.w,h:t.h}},m=function(n,t){return{x:t.x-n.x,y:t.y-n.y,w:t.w,h:t.h}};function g(n,t,e,o){var r,i,u,a,c;r=t.x,i=t.y,u=t.w,a=t.h,r+=e*n.deltaX,i+=o*n.deltaY,(u+=e*n.deltaW)<20&&(u=20),(a+=o*n.deltaH)<20&&(a=20),c=s=Ck.clamp({x:r,y:i,w:u,h:a},f,"move"===n.name),c=m(f,c),l.fire("updateRect",{rect:c}),v(c)}function p(t){function n(n,t){t.h<0&&(t.h=0),t.w<0&&(t.w=0),Sk("#"+a+"-"+n,o).css({left:t.x,top:t.y,width:t.w,height:t.h})}Ok.each(c,function(n){Sk("#"+a+"-"+n.name,o).css({left:t.w*n.xMul+t.x,top:t.h*n.yMul+t.y})}),n("top",{x:e.x,y:e.y,w:e.w,h:t.y-e.y}),n("right",{x:t.x+t.w,y:t.y,w:e.w-t.x-t.w+e.x,h:t.h}),n("bottom",{x:e.x,y:t.y+t.h,w:e.w,h:e.h-t.y-t.h+e.y}),n("left",{x:e.x,y:t.y,w:t.x-e.x,h:t.h}),n("move",t)}function h(n){p(s=n)}function v(n){h(d(f,n))}return function b(){Sk('<div id="'+a+'" class="'+u+'croprect-container" role="grid" aria-dropeffect="execute">').appendTo(o),Ok.each(i,function(n){Sk("#"+a,o).append('<div id="'+a+"-"+n+'"class="'+u+'croprect-block" style="display: none" data-mce-bogus="all">')}),Ok.each(c,function(n){Sk("#"+a,o).append('<div id="'+a+"-"+n.name+'" class="'+u+"croprect-handle "+u+"croprect-handle-"+n.name+'"style="display: none" data-mce-bogus="all" role="gridcell" tabindex="-1" aria-label="'+n.label+'" aria-grabbed="false" title="'+n.label+'">')}),t=Ok.map(c,function n(t){var e;return new Dk(a,{document:o.ownerDocument,handle:a+"-"+t.name,start:function(){e=s},drag:function(n){g(t,e,n.deltaX,n.deltaY)}})}),p(s),Sk(o).on("focusin focusout",function(n){Sk(n.target).attr("aria-grabbed","focus"===n.type?"true":"false")}),Sk(o).on("keydown",function(t){var i;function n(n,t,e,o,r){n.stopPropagation(),n.preventDefault(),g(i,e,o,r)}switch(Ok.each(c,function(n){if(t.target.id===a+"-"+n.name)return i=n,!1}),t.keyCode){case Tk.LEFT:n(t,0,s,-10,0);break;case Tk.RIGHT:n(t,0,s,10,0);break;case Tk.UP:n(t,0,s,0,-10);break;case Tk.DOWN:n(t,0,s,0,10);break;case Tk.ENTER:case Tk.SPACEBAR:t.preventDefault(),r()}})}(),l=Ok.extend({toggleVisibility:function y(n){var t;t=Ok.map(c,function(n){return"#"+a+"-"+n.name}).concat(Ok.map(i,function(n){return"#"+a+"-"+n})).join(","),n?Sk(t,o).show():Sk(t,o).hide()},setClampRect:function x(n){f=n,p(s)},setRect:h,getInnerRect:function(){return m(f,s)},setInnerRect:v,setViewPortRect:function w(n){e=n,p(s)},destroy:function n(){Ok.each(t,function(n){n.destroy()}),t=[]}},kk)};function Ik(n){var t=Ee(n),e=Ee(on.none()),o=function s(){var e=[],o=-1;function n(){return 0<o}function t(){return-1!==o&&o<e.length-1}return{data:e,add:function r(n){var t;return t=e.splice(++o),e.push(n),{state:n,removed:t}},undo:function i(){if(n())return e[--o]},redo:function u(){if(t())return e[++o]},canUndo:n,canRedo:t}}();function r(n){t.set(n)}function i(n){v.URL.revokeObjectURL(n.url)}function u(n){var t=a(n);return r(t),function(n){Ok.each(n,i)}(o.add(t).removed),t.url}o.add(n);var a=function(n){return{blob:n,url:v.URL.createObjectURL(n)}},c=function(){e.get().each(i),e.set(on.none())};return{getBlobState:function(){return t.get()},setBlobState:r,addBlobState:u,getTempState:function(){return e.get().fold(function(){return t.get()},function(n){return n})},updateTempState:function(n){var t=a(n);return c(),e.set(on.some(t)),t.url},addTempState:function(n){var t=a(n);return e.set(on.some(t)),t.url},applyTempState:function(t){return e.get().fold(function(){},function(n){u(n.blob),t()})},destroyTempState:c,undo:function(){var n=o.undo();return r(n),n.url},redo:function(){var n=o.redo();return r(n),n.url},getHistoryStates:function(){return{undoEnabled:o.canUndo(),redoEnabled:o.canRedo()}}}}function Rk(n,t){function i(n){var t=s.getHistoryStates();m.updateButtonUndoStates(n,t.undoEnabled,t.redoEnabled),qt(n,wk.formActionEvent,{name:wk.saveState(),value:t.undoEnabled})}function u(n){return n.toBlob()}function a(n){qt(n,wk.formActionEvent,{name:wk.disable(),value:{}})}function r(t,n,e,o,r){return a(t),function(n){return sC(n)}(n).then(e).then(u).then(o).then(function(n){return l(t,n).then(function(n){return i(t),r(),f(t),n})})["catch"](function(n){return v.console.log(n),f(t),n})}function c(n,t,e){var o=s.getBlobState().blob;r(n,o,t,function(n){return s.updateTempState(n)},e)}var s=Ik(n.currentState),f=function(n){e.getApplyButton(n).each(function(n){kh.enable(n)}),qt(n,wk.formActionEvent,{name:wk.enable(),value:{}})},l=function(n,t){return a(n),o.updateSrc(n,t)},d=function(n){var t=s.getBlobState().url;return s.destroyTempState(),i(n),t},o=Bk(n.currentState.url),m=function(n){var o=bm(Ak("Undo","undo",!0,function(n){qt(n,vk.undo(),{direction:1})},n)),r=bm(Ak("Redo","redo",!0,function(n){qt(n,vk.redo(),{direction:1})},n));return{container:Gb.sketch({dom:{tag:"div",classes:["tox-image-tools__toolbar","tox-image-tools__sidebar"]},components:[o.asSpec(),r.asSpec(),Ak("Zoom in","zoom-in",!1,function(n){qt(n,vk.zoom(),{direction:1})},n),Ak("Zoom out","zoom-out",!1,function(n){qt(n,vk.zoom(),{direction:-1})},n)]}),updateButtonUndoStates:function(n,t,e){o.getOpt(n).each(function(n){_k(n,t)}),r.getOpt(n).each(function(n){_k(n,e)})}}}(t),e=ak(o,t);return{dom:{tag:"div",attributes:{role:"presentation"}},components:[e.memContainer.asSpec(),o.memContainer.asSpec(),m.container],behaviours:ya([nl.config({store:{mode:"manual",getValue:function(){return s.getBlobState()}}}),Jd("image-tools-events",[rr(vk.undo(),function(t,n){var e=s.undo();l(t,e).then(function(n){f(t),i(t)})}),rr(vk.redo(),function(t,n){var e=s.redo();l(t,e).then(function(n){f(t),i(t)})}),rr(vk.zoom(),function(n,t){var e=t.event().direction();o.zoom(n,e)}),rr(vk.back(),function(n,t){!function(t){var n=d(t);l(t,n).then(function(n){f(t)})}(n),t.event().swap()(),o.hideCrop()}),rr(vk.apply(),function(n,t){s.applyTempState(function(){d(n),t.event().swap()()})}),rr(vk.transform(),function(n,t){return c(n,t.event().transform(),Z)}),rr(vk.tempTransform(),function(n,t){return function(n,t){var e=s.getTempState().blob;r(n,e,t,function(n){return s.addTempState(n)},Z)}(n,t.event().transform())}),rr(vk.transformApply(),function(n,t){return function(e,n,t){var o=s.getBlobState().blob;r(e,o,n,function(n){var t=s.addBlobState(n);return d(e),t},t)}(n,t.event().transform(),t.event().swap())}),rr(vk.swap(),function(t,n){!function(n){m.updateButtonUndoStates(n,!1,!1)}(t);var e=n.event().transform(),o=n.event().swap();e.fold(function(){o()},function(n){c(t,n,o)})})]),TS()])}}function Vk(e,t){var n=e.label.map(function(n){return Ay(n,t)}),o=[kh.config({disabled:e.disabled}),dg.config({mode:"execution",useEnter:!0!==e.multiline,useControlEnter:!0===e.multiline,execute:function(n){return Yt(n,ly),on.some(!0)}}),Jd("textfield-change",[rr(ho(),function(n,t){qt(n,ay,{name:e.name})}),rr(ko(),function(n,t){qt(n,ay,{name:e.name})})]),Xy.config({})],r=e.validation.map(function(o){return Uy.config({getRoot:function(n){return br(n.element())},invalidClass:"tox-invalid",validator:{validate:function(n){var t=nl.getValue(n),e=o.validator(t);return Hy(!0===e?an.value(t):an.error(e))},validateOnLoad:o.validateOnLoad}})}).toArray(),i=e.placeholder.fold(nn({}),function(n){return{placeholder:t.translate(n)}}),u=e.inputMode.fold(nn({}),function(n){return{inputmode:n}}),a=N(N({},i),u),c=by.parts().field({tag:!0===e.multiline?"textarea":"input",inputAttributes:a,inputClasses:[e.classname],inputBehaviours:ya(H([o,r])),selectOnFocus:!1,factory:xy}),s=(e.flex?["tox-form__group--stretched"]:[]).concat(e.maximized?["tox-form-group--maximize"]:[]),f=[kh.config({disabled:e.disabled,onDisabled:function(n){by.getField(n).each(kh.disable)},onEnabled:function(n){by.getField(n).each(kh.enable)}})];return By(n,c,s,f)}function Nk(n){var t=Ee(null);return tu({readState:function(){return{timer:null!==t.get()?"set":"unset"}},setTimer:function(n){t.set(n)},cancel:function(){var n=t.get();null!==n&&n.cancel()}})}function Hk(n,t,e){var o=nl.getValue(e);nl.setValue(t,o),BT(t)}function Pk(n,t){var e=n.element(),o=bi(e),r=e.dom();"number"!==Mr(e,"type")&&t(r,o)}function zk(n,t,e){if(n.selectsOver){var o=nl.getValue(t),r=n.getDisplayText(o),i=nl.getValue(e);return 0===n.getDisplayText(i).indexOf(r)?on.some(function(){Hk(0,t,e),function(n,e){Pk(n,function(n,t){return n.setSelectionRange(e,t.length)})}(t,r.length)}):on.none()}return on.none()}function Lk(n){return IT(Ny(n))}function jk(n){return{type:"menuitem",value:n.url,text:n.title,meta:{attach:n.attach},onAction:function(){}}}function Uk(n,t){return{type:"menuitem",value:t,text:n,meta:{attach:undefined},onAction:function(){}}}function Wk(n,t){return function(n){return S(n,jk)}(function(t,n){return C(n,function(n){return n.type===t})}(n,t))}function Gk(n,t){var e=n.toLowerCase();return C(t,function(n){var t=n.meta!==undefined&&n.meta.text!==undefined?n.meta.text:n.text;return Vt(t.toLowerCase(),e)||Vt(n.value.toLowerCase(),e)})}function Xk(e,n,o){var t=nl.getValue(n),r=t.meta.text!==undefined?t.meta.text:t.value;return o.getLinkInformation().fold(function(){return[]},function(n){var t=Gk(r,function(n){return S(n,function(n){return Uk(n,n)})}(o.getHistory(e)));return"file"===e?function(n){return O(n,function(n,t){return 0===n.length||0===t.length?n.concat(t):n.concat(VT,t)},[])}([t,Gk(r,function(n){return Wk("header",n.targets)}(n)),Gk(r,H([function(n){return on.from(n.anchorTop).map(function(n){return Uk("<top>",n)}).toArray()}(n),function(n){return Wk("anchor",n.targets)}(n),function(n){return on.from(n.anchorBottom).map(function(n){return Uk("<bottom>",n)}).toArray()}(n)]))]):t})}function Yk(r,o,i){function u(n){var t=nl.getValue(n);i.addToHistory(t.value,r.filetype)}var n,t,e,a,c,s=o.shared.providers,f=by.parts().field({factory:FT,dismissOnBlur:!0,inputClasses:["tox-textfield"],sandboxClasses:["tox-dialog__popups"],inputAttributes:{"aria-errormessage":NT,type:"url"},minChars:0,responseTime:0,fetch:function(n){var t=Xk(r.filetype,n,i),e=UC(t,Ih.BUBBLE_TO_SANDBOX,o,!1);return Hy(e)},getHotspot:function(n){return h.getOpt(n)},onSetValue:function(n,t){n.hasConfigured(Uy)&&Uy.run(n).get(Z)},typeaheadBehaviours:ya(H([i.getValidationHandler().map(function(e){return Uy.config({getRoot:function(n){return br(n.element())},invalidClass:"tox-control-wrap--status-invalid",notify:{onInvalid:function(n,t){d.getOpt(n).each(function(n){_r(n.element(),"title",s.translate(t))})}},validator:{validate:function(n){var t=nl.getValue(n);return RT(function(o){e({type:r.filetype,url:t.value},function(n){if("invalid"===n.status){var t=an.error(n.message);o(t)}else{var e=an.value(n.message);o(e)}})})},validateOnLoad:!1}})}).toArray(),[kh.config({disabled:r.disabled}),Xy.config({}),Jd("urlinput-events",H(["file"===r.filetype?[rr(ho(),function(n){qt(n,ay,{name:r.name})})]:[],[rr(vo(),function(n){qt(n,ay,{name:r.name}),u(n)}),rr(ko(),function(n){qt(n,ay,{name:r.name}),u(n)})]]))]])),eventOrder:(n={},n[ho()]=["streaming","urlinput-events","invalidating"],n),model:{getDisplayText:function(n){return n.value},selectsOver:!1,populateFromBrowse:!1},markers:{openClass:"tox-textfield--popup-open"},lazySink:o.shared.getSink,parts:{menu:Cv(0,0,"normal")},onExecute:function(n,t,e){qt(t,ly,{})},onItemExecute:function(n,t,e,o){u(n),qt(n,ay,{name:r.name})}}),l=r.label.map(function(n){return Ay(n,s)}),d=bm((t="invalid",e=on.some(NT),void 0===(a="warning")&&(a=t),void 0===c&&(c=t),{dom:{tag:"div",classes:["tox-icon","tox-control-wrap__status-icon-"+t],innerHtml:xm(a,s.icons),attributes:N({title:s.translate(c),"aria-live":"polite"},e.fold(function(){return{}},function(n){return{id:n}}))}})),m=bm({dom:{tag:"div",classes:["tox-control-wrap__status-icon-wrap"]},components:[d.asSpec()]}),g=i.getUrlPicker(r.filetype),p=Hr("browser.url.event"),h=bm({dom:{tag:"div",classes:["tox-control-wrap"]},components:[f,m.asSpec()],behaviours:ya([kh.config({disabled:r.disabled})])}),v=bm($C({name:r.name,icon:on.some("browse"),text:r.label.getOr(""),disabled:r.disabled,primary:!1,borderless:!0},function(n){return Yt(n,p)},s,[],["tox-browse-url"]));return by.sketch({dom:qy([]),components:l.toArray().concat([{dom:{tag:"div",classes:["tox-form__controls-h-stack"]},components:H([[h.asSpec()],g.map(function(){return v.asSpec()}).toArray()])}]),fieldBehaviours:ya([kh.config({disabled:r.disabled,onDisabled:function(n){by.getField(n).each(kh.disable),v.getOpt(n).each(kh.disable)},onEnabled:function(n){by.getField(n).each(kh.enable),v.getOpt(n).each(kh.enable)}}),Jd("url-input-events",[rr(p,function(o){nd.getCurrent(o).each(function(t){var e=nl.getValue(t);g.each(function(n){n(e).get(function(n){nl.setValue(t,n),qt(o,ay,{name:r.name})})})})})])])})}function qk(u,t){function n(o){return function(t,e){Tu(e.event().target(),"[data-collection-item-value]").each(function(n){o(t,e,n,Mr(n,"data-collection-item-value"))})}}var e=u.label.map(function(n){return Ay(n,t)}),o=[rr(fo(),n(function(n,t,e){Sa(e)})),rr(Xt(),n(function(n,t,e,o){t.stop(),qt(n,fy,{name:u.name,value:o})})),rr(lo(),n(function(n,t,e){Ou(n.element(),"."+gh).each(function(n){ri(n,gh)}),ei(e,gh)})),rr(mo(),n(function(n){Ou(n.element(),"."+gh).each(function(n){ri(n,gh)})})),Hi(n(function(n,t,e,o){qt(n,fy,{name:u.name,value:o})}))],r=by.parts().field({dom:{tag:"div",classes:["tox-collection"].concat(1!==u.columns?["tox-collection--grid"]:["tox-collection--list"])},components:[],factory:{sketch:l},behaviours:ya([gg.config({}),nl.config({store:{mode:"memory",initialValue:[]},onSetValue:function(o,n){!function(n,t){var e=S(t,function(n){var t=ih.translate(n.text),e=1===u.columns?'<div class="tox-collection__item-label">'+t+"</div>":"",o='<div class="tox-collection__item-icon">'+n.icon+"</div>",r={_:" "," - ":" ","-":" "},i=t.replace(/\_| \- |\-/g,function(n){return r[n]});return'<div class="tox-collection__item" tabindex="-1" data-collection-item-value="'+function(n){return'"'===n?"&quot;":n}(n.value)+'" title="'+i+'" aria-label="'+i+'">'+o+e+"</div>"}),o=1<u.columns&&"auto"!==u.columns?w(e,u.columns):[e],r=S(o,function(n){return'<div class="tox-collection__group">'+n.join("")+"</div>"});Br(n.element(),r.join(""))}(o,n),"auto"===u.columns&&up(o,5,"tox-collection__item").each(function(n){var t=n.numRows,e=n.numColumns;dg.setGridSize(o,t,e)}),Yt(o,py)}}),Xy.config({}),dg.config(function(n,t){return 1===n?{mode:"menu",moveOnTab:!1,selector:".tox-collection__item"}:"auto"===n?{mode:"flatgrid",selector:".tox-collection__item",initSize:{numColumns:1,numRows:1}}:{mode:"matrix",selectors:{row:"color"===t?".tox-swatches__row":".tox-collection__group",cell:"color"===t?"."+ch:"."+ah}}}(u.columns,"normal")),Jd("collection-events",o)])});return By(e,r,["tox-form__group--collection"],[])}function Kk(r){return function(t,e,o){return Nn(e,"name").fold(function(){return r(e,o)},function(n){return t.field(n,r(e,o))})}}function Jk(t,n,e){var o=Bn(e,{shared:{interpreter:function(n){return zT(t,n,o)}}});return zT(t,n,o)}function $k(n){return{colorPicker:function(e){return function(n,t){Wv.colorPickerDialog(e)(n,t)}}(n),hasCustomColors:function(n){return function(){return Iv(n)}}(n),getColors:function(n){return function(){return Rv(n)}}(n),getColorCols:function(n){return function(){return Wv.getColorCols(n)}}(n)}}function Qk(e){return function(n){return on.from(n.getParam("style_formats")).filter(fn)}(e).map(function(n){var t=function(t,n){function e(n){bn(n,function(n){t.formatter.has(n.name)||t.formatter.register(n.name,n.format)})}var o=GT(n);return t.formatter?e(o.customFormats):t.on("init",function(){e(o.customFormats)}),o.formats}(e,n);return function(n){return n.getParam("style_formats_merge",!1,"boolean")}(e)?WT.concat(t):t}).getOr(WT)}function Zk(n,t,e){var o={type:"formatter",isSelected:t(n.format),getStylePreview:e(n.format)};return Bn(n,o)}function nO(r,n,i,u){var o=function(n){return S(n,function(n){var t=wn(n);if($(n,"items")){var e=o(n.items);return Bn(function(n){var t={type:"submenu",isSelected:nn(!1),getStylePreview:function(){return on.none()}};return Bn(n,t)}(n),{getStyleItems:function(){return e}})}return $(n,"format")?function(n){return Zk(n,i,u)}(n):1===t.length&&vn(t,"title")?Bn(n,{type:"separator"}):function(n){var t=Hr(n.title),e={type:"formatter",format:t,isSelected:i(t),getStylePreview:u(t)},o=Bn(n,e);return r.formatter.register(t,o),o}(n)})};return o(n)}function tO(t){return function(n){if(n&&1===n.nodeType){if(n.contentEditable===t)return!0;if(n.getAttribute("data-mce-contenteditable")===t)return!0}return!1}}function eO(n,t,e,o,r){return{type:n,title:t,url:e,level:o,attach:r}}function oO(n){return n.innerText||n.textContent}function rO(n){return function(n){return n&&"A"===n.nodeName&&(n.id||n.name)!==undefined}(n)&&KT(n)}function iO(n){return n&&/^(H[1-6])$/.test(n.nodeName)}function uO(n){return iO(n)&&KT(n)}function aO(n){var t=function(n){return n.id?n.id:Hr("h")}(n);return eO("header",oO(n),"#"+t,function(n){return iO(n)?parseInt(n.nodeName.substr(1),10):0}(n),function(){n.id=t})}function cO(n){var t=n.id||n.name,e=oO(n);return eO("anchor",e||"#"+t,"#"+t,0,Z)}function sO(n){return function(n,t){return S(Lc(Be.fromDom(t),n),function(n){return n.dom()})}("h1,h2,h3,h4,h5,h6,a:not([href])",n)}function fO(n){return 0<XT(n.title).length}function lO(n){return cn(n)&&/^https?/.test(n)}function dO(n){return sn(n)&&I(n,function(n){return!function(n){return fn(n)&&n.length<=5&&B(n,lO)}(n)}).isNone()}function mO(){var n,t=v.localStorage.getItem($T);if(null===t)return{};try{n=JSON.parse(t)}catch(e){if(e instanceof SyntaxError)return v.console.log("Local storage "+$T+" was not valid JSON",e),{};throw e}return dO(n)?n:(v.console.log("Local storage "+$T+" was not valid format",n),{})}function gO(n){var t=mO();return Object.prototype.hasOwnProperty.call(t,n)?t[n]:[]}function pO(t,n){if(lO(t)){var e=mO(),o=Object.prototype.hasOwnProperty.call(e,n)?e[n]:[],r=C(o,function(n){return n!==t});e[n]=[t].concat(r).slice(0,5),function(n){if(!dO(n))throw new Error("Bad format for history:\n"+JSON.stringify(n));v.localStorage.setItem($T,JSON.stringify(n))}(e)}}function hO(n){return!!n}function vO(n){return P(Ok.makeMap(n,/[, ]/),hO)}function bO(n,t,e){var o=function(n,t){return QT.call(n,t)?on.some(n[t]):on.none()}(n,t).getOr(e);return cn(o)?on.some(o):on.none()}function yO(n){return on.some(n.file_picker_callback).filter(dn)}function xO(n,t){var e=function(n){var t=on.some(n.file_picker_types).filter(hO),e=on.some(n.file_browser_callback_types).filter(hO),o=t.or(e).map(vO);return yO(n).fold(function(){return!1},function(n){return o.fold(function(){return!0},function(n){return 0<wn(n).length&&n})})}(n);return ln(e)?e?yO(n):on.none():e[t]?yO(n):on.none()}function wO(t){return{getHistory:gO,addToHistory:pO,getLinkInformation:function(){return function(n){return!1===n.settings.typeahead_urls?on.none():on.some({targets:JT(n.getBody()),anchorTop:bO(n.settings,"anchor_top","#top").getOrUndefined(),anchorBottom:bO(n.settings,"anchor_bottom","#bottom").getOrUndefined()})}(t)},getValidationHandler:function(){return function(n){return on.from(n.settings.file_picker_validator_handler).filter(dn).orThunk(function(){return on.from(n.settings.filepicker_validator_handler).filter(dn)})}(t)},getUrlPicker:function(n){return function(r,i){return xO(r.settings,i).map(function(o){return function(t){return Ny(function(e){var n=Ok.extend({filetype:i},on.from(t.meta).getOr({}));o.call(r,function(n,t){if(!cn(n))throw new Error("Expected value to be string");if(t!==undefined&&!sn(t))throw new Error("Expected meta to be a object");e({value:n,meta:t})},t.value,n)})}})}(t,n)}}}function SO(n,t,e,o){var r=Ee(!1),i={shared:{providers:{icons:function(){return t.ui.registry.getAll().icons},menuItems:function(){return t.ui.registry.getAll().menuItems},translate:ih.translate},interpreter:function(n){return function(n,t){return zT(PT,n,t)}(n,i)},anchors:UT(t,e,o),getSink:function(){return an.value(n)}},urlinput:wO(t),styleselect:function(e){function o(n){return function(){return e.formatter.match(n)}}function r(t){return function(){var n=e.formatter.get(t);return n!==undefined?on.some({tag:0<n.length&&(n[0].inline||n[0].block)||"div",styleAttr:e.formatter.getCssText(t)}):on.none()}}var i=function(n){var t=n.items;return t!==undefined&&0<t.length?D(t,i):[n.format]},u=Ee([]),a=Ee([]),c=Ee([]),s=Ee([]),f=Ee(!1);e.on("init",function(){var n=Qk(e),t=nO(e,n,o,r);u.set(t),a.set(D(t,i))}),e.on("addStyleModifications",function(n){var t=nO(e,n.items,o,r);c.set(t),f.set(n.replace),s.set(D(t,i))});return{getData:function(){var n=f.get()?[]:u.get(),t=c.get();return n.concat(t)},getFlattenedKeys:function(){var n=f.get()?[]:a.get(),t=s.get();return n.concat(t)}}}(t),colorinput:$k(t),dialog:function(n){return{isDraggableModal:function(n){return function(){return function(n){return n.getParam("draggable_modal",!1,"boolean")}(n)}}(n)}}(t),isContextMenuOpen:function(){return r.get()},setContextMenuState:function(n){return r.set(n)}};return i}function CO(n,t,o){var e=function(n,e){return O(n,function(t,n){return e(n,t.len).fold(nn(t),function(n){return{len:n.finish(),list:t.list.concat([n])}})},{len:0,list:[]}).list}(n,function(n,t){var e=o(n);return on.some({element:nn(n),start:nn(t),finish:nn(t+e),width:nn(e)})}),r=C(e,function(n){return n.finish()<=t}),i=k(r,function(n,t){return n+t.width()},0),u=e.slice(r.length);return{within:nn(r),extra:nn(u),withinWidth:nn(i)}}function kO(n){return S(n,function(n){return n.element()})}function OO(n,t,e,o){var r=function(n,t,e){var o=CO(t,n,e);return 0===o.extra().length?on.some(o):on.none()}(n,t,e).getOrThunk(function(){return CO(t,n-e(o),e)}),i=r.within(),u=r.extra(),a=r.withinWidth();return 1===u.length&&u[0].width()<=e(o)?function(n,t,e){var o=kO(n.concat(t));return oE(o,[],e)}(i,u,a):1<=u.length?function(n,t,e,o){var r=kO(n).concat([e]);return oE(r,kO(t),o)}(i,u,o,a):function(n,t,e){return oE(kO(n),[],e)}(i,0,a)}function TO(n,t){var e=S(t,function(n){return cu(n)});eE.setGroups(n,e)}function EO(n,t,e,o){var r=Js(n,t,"primary"),i=Ks(n,t,"overflow-button"),u=$y.getCoupled(n,"overflowGroup");li(r.element(),"visibility","hidden");var a=function(n,t){return n.bind(function(t){return ka(t.element()).bind(function(n){return t.getSystem().getByDom(n).toOption()})}).orThunk(function(){return t.filter(bg.isFocused)})}(e,i);e.each(function(n){eE.setGroups(n,[])});var c=t.builtGroups.get();TO(r,c.concat([u]));var s=gu(r.element()),f=OO(s,c,function(n){return gu(n.element())},u);0===f.extra().length?(gg.remove(r,u),e.each(function(n){eE.setGroups(n,[])})):(TO(r,f.within()),e.each(function(n){TO(n,f.extra())})),hi(r.element(),"visibility"),vi(r.element()),e.each(function(t){i.each(function(n){return kg.set(n,o(t))}),a.each(bg.focus)})}function DO(o,n,t,e,r){var i="alloy.toolbar.toggle";return{uid:o.uid,dom:o.dom,components:n,behaviours:Vs(o.splitToolbarBehaviours,[$y.config({others:N(N({},r.coupling),{overflowGroup:function(t){return uE.sketch(N(N({},e["overflow-group"]()),{items:[Xg.sketch(N(N({},e["overflow-button"]()),{action:function(n){Yt(t,i)}}))]}))}})}),Jd("toolbar-toggle-events",[rr(i,function(n){r.apis.toggle(n)})])]),apis:N({setGroups:function(n,t){!function(n,t){var e=S(t,n.getSystem().build);o.builtGroups.set(e)}(n,t),r.apis.refresh(n)},getMoreButton:function(n){return function(n){return Ks(n,o,"overflow-button")}(n)}},r.apis),domModification:{attributes:{role:"group"}}}}function BO(n){return n.getSystem().isConnected()}function AO(n,t,e){var o=t.lazySink(n).getOrDie(),r=t.getAnchor(n),i=t.getOverflowBounds.map(function(n){return n()});_f.positionWithinBounds(o,r,e,i)}function _O(t,e){var n=Lf.getState($y.getCoupled(t,"sandbox"));EO(t,e,n,BO),n.each(function(n){return AO(t,e,n)})}function MO(t,e){Lf.getState($y.getCoupled(t,"sandbox")).each(function(n){return AO(t,e,n)})}function FO(t,n){return n.getAnimationRoot.fold(function(){return t.element()},function(n){return n(t)})}function IO(n){return n.dimension.property}function RO(n,t){return n.dimension.getDimension(t)}function VO(n,t){var e=FO(n,t);ai(e,[t.shrinkingClass,t.growingClass])}function NO(n,t){ri(n.element(),t.openClass),ei(n.element(),t.closedClass),li(n.element(),IO(t),"0px"),vi(n.element())}function HO(n,t){ri(n.element(),t.closedClass),ei(n.element(),t.openClass),hi(n.element(),IO(t))}function PO(n,t,e,o){e.setCollapsed(),li(n.element(),IO(t),RO(t,n.element())),vi(n.element()),VO(n,t),NO(n,t),t.onStartShrink(n),t.onShrunk(n)}function zO(n,t,e,o){var r=o.getOrThunk(function(){return RO(t,n.element())});e.setCollapsed(),li(n.element(),IO(t),r),vi(n.element());var i=FO(n,t);ri(i,t.growingClass),ei(i,t.shrinkingClass),NO(n,t),t.onStartShrink(n)}function LO(n,t,e){var o=RO(t,n.element());("0px"===o?PO:zO)(n,t,e,on.some(o))}function jO(n,t,e){var o=FO(n,t),r=ii(o,t.shrinkingClass),i=RO(t,n.element());HO(n,t);var u=RO(t,n.element());(r?function(){li(n.element(),IO(t),i),vi(n.element())}:function(){NO(n,t)})(),ri(o,t.shrinkingClass),ei(o,t.growingClass),HO(n,t),li(n.element(),IO(t),u),e.setExpanded(),t.onStartGrow(n)}function UO(n,t,e){var o=FO(n,t);return!0===ii(o,t.growingClass)}function WO(n,t,e){var o=FO(n,t);return!0===ii(o,t.shrinkingClass)}function GO(n){return gE.hasGrown(n)}function XO(n,t){var e=n.outerContainer;!function(n,t){var e=n.outerContainer.element();t&&(n.mothership.broadcastOn([jf()],{target:e}),n.uiMothership.broadcastOn([jf()],{target:e})),n.mothership.broadcastOn([xE],{readonly:t}),n.uiMothership.broadcastOn([xE],{readonly:t})}(n,t),Lt("*",e.element()).forEach(function(n){e.getSystem().getByDom(n).each(function(n){n.hasConfigured(kh)&&kh.set(n,t)})})}function YO(n,t){n.on("init",function(){n.readonly&&XO(t,!0)}),n.on("SwitchMode",function(){return XO(t,n.readonly)}),function(n){return n.getParam("readonly",!1,"boolean")}(n)&&n.setMode("readonly")}function qO(e){var n;return dc.config({channels:(n={},n[xE]={schema:wE,onReceive:function(n,t){e(n).each(function(n){!function(t,e){Lt("*",t.element()).forEach(function(n){t.getSystem().getByDom(n).each(function(n){n.hasConfigured(kh)&&kh.set(n,e)})})}(n,t.readonly)})}},n)})}function KO(n){var t=n.title.fold(function(){return{}},function(n){return{attributes:{title:n}}});return{dom:N({tag:"div",classes:["tox-toolbar__group"]},t),components:[uE.parts().items({})],items:n.items,markers:{itemSelector:"*:not(.tox-split-button) > .tox-tbtn:not([disabled]), .tox-split-button:not([disabled]), .tox-toolbar-nav-js:not([disabled])"},tgroupBehaviours:ya([Xy.config({}),bg.config({})])}}function JO(n){return uE.sketch(KO(n))}function $O(e,n,t){var o=Ri(function(n){var t=S(e.initGroups,JO);eE.setGroups(n,t)});return ya([dg.config({mode:n,onEscape:e.onEscape,selector:".tox-toolbar__group"}),Jd("toolbar-events",[o]),qO(t)])}function QO(n,t){var e=n.cyclicKeying?"cyclic":"acyclic";return{uid:n.uid,dom:{tag:"div",classes:["tox-toolbar-overlord"]},parts:{"overflow-group":KO({title:on.none(),items:[]}),"overflow-button":qC({name:"more",icon:on.some("more-drawer"),disabled:!1,tooltip:on.some("More..."),primary:!1,borderless:!1},on.none(),n.backstage.shared.providers)},splitToolbarBehaviours:$O(n,e,t)}}function ZO(r){var n=QO(r,fE.getOverflow),t=fE.parts().primary({dom:{tag:"div",classes:["tox-toolbar__primary"]}});return fE.sketch(N(N({},n),{lazySink:r.getSink,getAnchor:function(){return r.backstage.shared.anchors.toolbarOverflow()},getOverflowBounds:function(){var n=r.moreDrawerData.lazyHeader().element(),t=Su(n),e=hr(n),o=Su(e);return xu(t.x()+4,o.y(),t.width()-8,o.height())},parts:N(N({},n.parts),{overflow:{dom:{tag:"div",classes:["tox-toolbar__overflow"]}}}),components:[t],markers:{overflowToggledClass:"tox-tbtn--enabled"}}))}function nT(n){var t=bE.parts().primary({dom:{tag:"div",classes:["tox-toolbar__primary"]}}),e=bE.parts().overflow({dom:{tag:"div",classes:["tox-toolbar__overflow"]}}),o=QO(n,bE.getOverflow);return bE.sketch(N(N({},o),{components:[t,e],markers:{openClass:"tox-toolbar__overflow--open",closedClass:"tox-toolbar__overflow--closed",growingClass:"tox-toolbar__overflow--growing",shrinkingClass:"tox-toolbar__overflow--shrinking",overflowToggledClass:"tox-tbtn--enabled"},onOpened:function(n){n.getSystem().broadcastOn([yE()],{type:"opened"})},onClosed:function(n){n.getSystem().broadcastOn([yE()],{type:"closed"})}}))}function tT(n){var t=n.cyclicKeying?"cyclic":"acyclic";return eE.sketch({uid:n.uid,dom:{tag:"div",classes:["tox-toolbar"].concat(n.type===Ub.scrolling?["tox-toolbar--scrolling"]:[])},components:[eE.parts().groups({})],toolbarBehaviours:$O(n,t,nn(on.none()))})}function eT(n){return tt("toolbarbutton",CE,n)}function oT(n){return tt("menubutton",OE,n)}function rT(n){return tt("ToggleButton",DE,n)}function iT(t){return{isDisabled:function(){return kh.isDisabled(t)},setDisabled:function(n){return kh.set(t,n)}}}function uT(t){return{setActive:function(n){kg.set(t,n)},isActive:function(){return kg.isOn(t)},isDisabled:function(){return kh.isDisabled(t)},setDisabled:function(n){return kh.set(t,n)}}}function aT(n,t){return n.map(function(n){return{"aria-label":t.translate(n),title:t.translate(n)}}).getOr({})}function cT(t,e,n,o,r,i){function u(n){return ih.isRtl()&&vn(qE,n)?n+"-rtl":n}var a,c=ih.isRtl()&&t.exists(function(n){return vn(KE,n)});return{dom:{tag:"button",classes:["tox-tbtn"].concat(e.isSome()?["tox-tbtn--select"]:[]).concat(c?["tox-tbtn__icon-rtl"]:[]),attributes:aT(n,i)},components:Bh([t.map(function(n){return VC(u(n),i.icons)}),e.map(function(n){return HC(n,"tox-tbtn",i)})]),eventOrder:(a={},a[uo()]=["focusing","alloy.base.behaviour","common-button-display-events"],a),buttonBehaviours:ya([Jd("common-button-display-events",[rr(uo(),function(n,t){t.event().prevent(),Yt(n,YE)})])].concat(o.map(function(n){return LE.config({channel:n,initialData:{icon:t,text:e},renderComponents:function(n,t){return Bh([n.icon.map(function(n){return VC(u(n),i.icons)}),n.text.map(function(n){return HC(n,"tox-tbtn",i)})])}})}).toArray()).concat(r.getOr([])))}}function sT(n,t,e){var o=Ee(Z),r=cT(n.icon,n.text,n.tooltip,on.none(),on.none(),e);return Xg.sketch({dom:r.dom,components:r.components,eventOrder:sk,buttonBehaviours:ya([Jd("toolbar-button-events",[function(e){return Hi(function(t,n){Tp(e,t)(function(n){qt(t,ck,{buttonApi:n}),e.onAction(n)})})}({onAction:n.onAction,getApi:t.getApi}),Ep(t,o),Dp(t,o)]),Dh(n.disabled)].concat(t.toolbarButtonBehaviours))})}function fT(t,n){function e(e){return{isDisabled:function(){return kh.isDisabled(e)},setDisabled:function(n){return kh.set(e,n)},setIconFill:function(n,t){Ou(e.element(),'svg path[id="'+n+'"], rect[id="'+n+'"]').each(function(n){_r(n,"fill",t)})},setIconStroke:function(n,t){Ou(e.element(),'svg path[id="'+n+'"], rect[id="'+n+'"]').each(function(n){_r(n,"stroke",t)})},setActive:function(t){_r(e.element(),"aria-pressed",t),Ou(e.element(),"span").each(function(n){e.getSystem().getByDom(n).each(function(n){return kg.set(n,t)})})},isActive:function(){return Ou(e.element(),"span").exists(function(n){return e.getSystem().getByDom(n).exists(kg.isOn)})}}}var o,r=Hr("channel-update-split-dropdown-display"),i=Ee(Z),u={getApi:e,onSetup:t.onSetup};return XE.sketch({dom:{tag:"div",classes:["tox-split-button"],attributes:An({"aria-pressed":!1},aT(t.tooltip,n.providers))},onExecute:function(n){t.onAction(e(n))},onItemExecute:function(n,t,e){},splitDropdownBehaviours:ya([Eh(!1),Jd("split-dropdown-events",[rr(YE,bg.focus),Ep(u,i),Dp(u,i)]),Ew.config({})]),eventOrder:(o={},o[No()]=["alloy.base.behaviour","split-dropdown-events"],o),toggleClass:"tox-tbtn--enabled",lazySink:n.getSink,fetch:function(e,r,o){return function(t){return Ny(function(n){return r.fetch(n)}).map(function(n){return on.from(ab(Bn(Dv(Hr("menu-value"),n,function(n){r.onItemAction(e(t),n)},r.columns,r.presets,Ih.CLOSE_ON_EXECUTE,r.select.getOr(function(){return!1}),o),{movement:Bv(r.columns,r.presets),menuBehaviours:$p("auto"!==r.columns?[]:[Ri(function(o,n){up(o,4,fp(r.presets)).each(function(n){var t=n.numRows,e=n.numColumns;dg.setGridSize(o,t,e)})})])})))})}}(e,t,n.providers),parts:{menu:Cv(0,t.columns,t.presets)},components:[XE.parts().button(cT(t.icon,t.text,on.none(),on.some(r),on.some([kg.config({toggleClass:"tox-tbtn--enabled",toggleOnExecute:!1})]),n.providers)),XE.parts().arrow({dom:{tag:"button",classes:["tox-tbtn","tox-split-button__chevron"],innerHtml:xm("chevron-down",n.providers.icons)}}),XE.parts()["aria-descriptor"]({text:n.providers.translate("To open the popup, press Shift+Enter")})]})}function lT(o,r){return rr(ck,function(n,t){var e=function(n){return{hide:function(){return Yt(n,Ao())},getValue:function(){return nl.getValue(n)}}}(o.get(n));r.onAction(e,t.event().buttonApi())})}function dT(n,t,e){var o={backstage:{shared:{providers:e}}};return"contextformtogglebutton"===t.type?function(n,t,e){var o=t.original,r=(o.primary,c(o,["primary"])),i=et(rT(N(N({},r),{type:"togglebutton",onAction:function(){}})));return $E(i,e.backstage.shared.providers,[lT(n,t)])}(n,t,o):function(n,t,e){var o=t.original,r=(o.primary,c(o,["primary"])),i=et(eT(N(N({},r),{type:"button",onAction:function(){}})));return JE(i,e.backstage.shared.providers,[lT(n,t)])}(n,t,o)}function mT(n,t){var e=Math.max(t.x(),n.x()),o=n.right()-e,r=t.width()-(e-t.x());return{x:e,width:Math.min(o,r)}}function gT(n){var t=zb(n)||Lb(n)||Yb(n),e=bu(v.window),o=wu(Be.fromDom(n.getContentAreaContainer()));return n.inline&&!t?function(n,t,e){var o=mT(t,e),r=o.x,i=o.width;return xu(r,e.y(),i,e.height())}(0,o,e):n.inline?function(n,t,e){var o=mT(t,e),r=o.x,i=o.width,u=Be.fromDom(n.getContainer()),a=Ou(u,".tox-editor-header").getOr(u),c=wu(a),s=e.height(),f=e.y();if(c.y()>=t.bottom()){var l=Math.min(s+f,c.y());return xu(r,f,i,l-f)}var d=Math.max(f,c.bottom());return xu(r,d,i,s-(d-f))}(n,o,e):function(n,t,e){var o=mT(t,e),r=o.x,i=o.width,u=Be.fromDom(n.getContainer()),a=Ou(u,".tox-editor-header").getOr(u),c=wu(u),s=wu(a),f=Math.max(e.y(),t.y(),s.bottom()),l=c.bottom()-f,d=e.height()-(f-e.y()),m=Math.min(l,d);return xu(r,f,i,m)}(n,o,e)}function pT(t,n){return Au(n,function(n){return n.predicate(t.dom())?on.some({toolbarApi:n,elem:t}):on.none()})}function hT(o,r){return function(t){function n(){t.setActive(o.formatter.match(r));var n=o.formatter.formatChanged(r,t.setActive).unbind;e.set(on.some(n))}var e=Ee(on.none());return o.initialized?n():o.on("init",n),function(){return e.get().each(function(n){return n()})}}}function vT(t){return function(n){return function(){t.undoManager.transact(function(){t.focus(),t.execCommand("mceToggleFormat",!1,n.format)})}}}function bT(n,t,e){var o=e.dataset,r="basic"===o.type?function(){return S(o.data,function(n){return Zk(n,e.isSelectedFor,e.getPreviewFor)})}:o.getData;return{items:function(n,u,a){function r(n,t,e,o){var r=u.shared.providers.translate(n.title);if("separator"===n.type)return on.some({type:"separator",text:r});if("submenu"!==n.type)return on.some(N({type:"togglemenuitem",text:r,active:n.isSelected(o),disabled:e,onAction:a.onAction(n)},n.getStylePreview().fold(function(){return{}},function(n){return{meta:{style:n}}})));var i=D(n.getStyleItems(),function(n){return c(n,t,o)});return 0===t&&i.length<=0?on.none():on.some({type:"nestedmenuitem",text:r,disabled:i.length<=0,getSubmenuItems:function(){return D(n.getStyleItems(),function(n){return c(n,t,o)})}})}function i(n){var t=a.getCurrentValue(),e=a.shouldHide?0:1;return D(n,function(n){return c(n,e,t)})}var c=function(n,t,e){var o="formatter"===n.type&&a.isInvalid(n);return 0===t?o?[]:r(n,t,!1,e).toArray():r(n,t,o,e).toArray()};return{validateItems:i,getFetch:function(o,r){return function(n){var t=r(),e=i(t);n(UC(e,Ih.CLOSE_ON_EXECUTE,o,!1))}}}}(0,t,e),getStyleItems:r}}function yT(o,n,t){var e=bT(0,n,t),r=e.items,i=e.getStyleItems;return PC({text:t.icon.isSome()?on.none():on.some(""),icon:t.icon,tooltip:on.from(t.tooltip),role:on.none(),fetch:r.getFetch(n,i),onSetup:function(e){return t.setInitialValue.each(function(n){return n(e.getComponent())}),t.nodeChangeHandler.map(function(n){var t=n(e.getComponent());return o.on("NodeChange",t),function(){o.off("NodeChange",t)}}).getOr(Z)},getApi:function(n){return{getComponent:function(){return n}}},columns:1,presets:"normal",classes:t.icon.isSome()?[]:["bespoke"],dropdownBehaviours:[]},"tox-tbtn",n.shared)}var xT,wT,ST,CT,kT=Al({name:"HtmlSelect",configFields:[ct("options"),Is("selectBehaviours",[bg,nl]),St("selectClasses",[]),St("selectAttributes",{}),ht("data")],factory:function(e,n){var t=S(e.options,function(n){return{dom:{tag:"option",value:n.value,innerHtml:n.text}}}),o=e.data.map(function(n){return q("initialValue",n)}).getOr({});return{uid:e.uid,dom:{tag:"select",classes:e.selectClasses,attributes:e.selectAttributes},components:t,behaviours:Vs(e.selectBehaviours,[bg.config({}),nl.config({store:N({mode:"manual",getValue:function(n){return bi(n.element())},setValue:function(n,t){T(e.options,function(n){return n.value===t}).isSome()&&yi(n.element(),t)}},o)})])}}}),OT=/* */Object.freeze({events:function(n,t){var e=n.stream.streams.setup(n,t);return tr([rr(n.event,e),Vi(function(){return t.cancel()})].concat(n.cancelEvent.map(function(n){return[rr(n,function(){return t.cancel()})]}).getOr([])))}}),TT=/* */Object.freeze({throttle:Nk,init:function(n){return n.stream.streams.state(n)}}),ET=[st("stream",it("mode",{throttle:[ct("delay"),St("stopEvent",!0),Zu("streams",{setup:function(n,t){var e=n.stream,o=$g(n.onStream,e.delay);return t.setTimer(o),function(n,t){o.throttle(n,t),e.stopEvent&&t.stop()}},state:Nk})]})),St("event","input"),ht("cancelEvent"),$u("onStream")],DT=xa({fields:ET,name:"streaming",active:OT,state:TT}),BT=function(n){Pk(n,function(n,t){return n.setSelectionRange(t.length,t.length)})},AT=nn("alloy.typeahead.itemexecute"),_T=nn([ht("lazySink"),ct("fetch"),St("minChars",5),St("responseTime",1e3),Ku("onOpen"),St("getHotspot",on.some),St("getAnchorOverrides",nn({})),St("layouts",on.none()),St("eventOrder",{}),Bt("model",{},[St("getDisplayText",function(n){return n.meta!==undefined&&n.meta.text!==undefined?n.meta.text:n.value}),St("selectsOver",!0),St("populateFromBrowse",!0)]),Ku("onSetValue"),Ju("onExecute"),Ku("onItemExecute"),St("inputClasses",[]),St("inputAttributes",{}),St("inputStyles",{}),St("matchWidth",!0),St("useMinWidth",!1),St("dismissOnBlur",!0),Yu(["openClass"]),ht("initialData"),Is("typeaheadBehaviours",[bg,nl,DT,dg,kg,$y]),At("previewing",function(){return Ee(!0)})].concat(yy()).concat(cx())),MT=nn([Sl({schema:[Xu()],name:"menu",overrides:function(o){return{fakeFocus:!0,onHighlight:function(t,e){o.previewing.get()?t.getSystem().getByUid(o.uid).each(function(n){zk(o.model,n,e).fold(function(){return cd.dehighlight(t,e)},function(n){return n()})}):t.getSystem().getByUid(o.uid).each(function(n){o.model.populateFromBrowse&&Hk(o.model,n,e)}),o.previewing.set(!1)},onExecute:function(n,t){return n.getSystem().getByUid(o.uid).toOption().map(function(n){return qt(n,AT(),{item:t}),!0})},onHover:function(n,t){o.previewing.set(!1),n.getSystem().getByUid(o.uid).each(function(n){o.model.populateFromBrowse&&Hk(o.model,n,t)})}}}})]),FT=_l({name:"Typeahead",configFields:_T(),partFields:MT(),factory:function(r,n,t,i){function e(n,t,e){r.previewing.set(!1);var o=$y.getCoupled(n,"sandbox");if(Lf.isOpen(o))nd.getCurrent(o).each(function(n){cd.getHighlighted(n).fold(function(){e(n)},function(){$t(o,n.element(),"keydown",t)})});else{tx(r,u(n),n,o,i,function(n){nd.getCurrent(n).each(e)},_y.HighlightFirst).get(Z)}}var o=ny(r),u=function(o){return function(n){return n.map(function(n){var t=R(n.menus),e=D(t,function(n){return C(n.items,function(n){return"item"===n.type})});return nl.getState(o).update(S(e,function(n){return n.data})),n})}},a=[bg.config({}),nl.config({onSetValue:r.onSetValue,store:N({mode:"dataset",getDataKey:function(n){return bi(n.element())},getFallbackEntry:function(n){return{value:n,meta:{}}},setValue:function(n,t){yi(n.element(),r.model.getDisplayText(t))}},r.initialData.map(function(n){return q("initialValue",n)}).getOr({}))}),DT.config({stream:{mode:"throttle",delay:r.responseTime,stopEvent:!1},onStream:function(n,t){var e=$y.getCoupled(n,"sandbox");if(bg.isFocused(n)&&bi(n.element()).length>=r.minChars){var o=nd.getCurrent(e).bind(function(n){return cd.getHighlighted(n).map(nl.getValue)});r.previewing.set(!0);tx(r,u(n),n,e,i,function(n){nd.getCurrent(e).each(function(n){o.fold(function(){r.model.selectsOver&&cd.highlightFirst(n)},function(t){cd.highlightBy(n,function(n){return nl.getValue(n).value===t.value}),cd.getHighlighted(n).orThunk(function(){return cd.highlightFirst(n),on.none()})})})},_y.HighlightFirst).get(Z)}},cancelEvent:_o()}),dg.config({mode:"special",onDown:function(n,t){return e(n,t,cd.highlightFirst),on.some(!0)},onEscape:function(n){var t=$y.getCoupled(n,"sandbox");return Lf.isOpen(t)?(Lf.close(t),on.some(!0)):on.none()},onUp:function(n,t){return e(n,t,cd.highlightLast),on.some(!0)},onEnter:function(t){var n=$y.getCoupled(t,"sandbox"),e=Lf.isOpen(n);if(e&&!r.previewing.get())return nd.getCurrent(n).bind(function(n){return cd.getHighlighted(n)}).map(function(n){return qt(t,AT(),{item:n}),!0});var o=nl.getValue(t);return Yt(t,_o()),r.onExecute(n,t,o),e&&Lf.close(n),on.some(!0)}}),kg.config({toggleClass:r.markers.openClass,aria:{mode:"expanded"}}),$y.config({others:{sandbox:function(n){return ux(r,n,{onOpen:function(){return kg.on(n)},onClose:function(){return kg.off(n)}})}}}),Jd("typeaheadevents",[Hi(function(n){var t=Z;ox(r,u(n),n,i,t,_y.HighlightFirst).get(Z)}),rr(AT(),function(n,t){var e=$y.getCoupled(n,"sandbox");Hk(r.model,n,t.event().item()),Yt(n,_o()),r.onItemExecute(n,e,t.event().item(),nl.getValue(n)),Lf.close(e),BT(n)})].concat(r.dismissOnBlur?[rr(Co(),function(n){var t=$y.getCoupled(n,"sandbox");ka(t.element()).isNone()&&Lf.close(t)})]:[]))];return{uid:r.uid,dom:ty(Bn(r,{inputAttributes:{role:"combobox","aria-autocomplete":"list","aria-haspopup":"true"}})),behaviours:N(N({},o),Vs(r.typeaheadBehaviours,a)),eventOrder:r.eventOrder}}}),IT=function(i){return N(N({},i),{toCached:function(){return IT(i.toCached())},bindFuture:function(t){return IT(i.bind(function(n){return n.fold(function(n){return Hy(an.error(n))},function(n){return t(n)})}))},bindResult:function(t){return IT(i.map(function(n){return n.bind(t)}))},mapResult:function(t){return IT(i.map(function(n){return n.map(t)}))},mapError:function(t){return IT(i.map(function(n){return n.mapError(t)}))},foldResult:function(t,e){return i.map(function(n){return n.fold(t,e)})},withTimeout:function(n,r){return IT(Ny(function(t){var e=!1,o=v.setTimeout(function(){e=!0,t(an.error(r()))},n);i.get(function(n){e||(v.clearTimeout(o),t(n))})}))}})},RT=Lk,VT={type:"separator"},NT=Hr("aria-invalid"),HT={bar:Kk(function(n,t){return function(n,t){return{dom:{tag:"div",classes:["tox-bar","tox-form__controls-h-stack"]},components:S(n.items,t.interpreter)}}(n,t.shared)}),collection:Kk(function(n,t){return qk(n,t.shared.providers)}),alertbanner:Kk(function(n,t){return function(t,n){return Gb.sketch({dom:{tag:"div",attributes:{role:"alert"},classes:["tox-notification","tox-notification--in","tox-notification--"+t.level]},components:[{dom:{tag:"div",classes:["tox-notification__icon"]},components:[Xg.sketch({dom:{tag:"button",classes:["tox-button","tox-button--naked","tox-button--icon"],innerHtml:xm(t.icon,n.icons),attributes:{title:n.translate(t.iconTooltip)}},action:function(n){qt(n,fy,{name:"alert-banner",value:t.url})}})]},{dom:{tag:"div",classes:["tox-notification__body"],innerHtml:n.translate(t.text)}}]})}(n,t.shared.providers)}),input:Kk(function(n,t){return function(n,t){return Vk({name:n.name,multiline:!1,label:n.label,inputMode:n.inputMode,placeholder:n.placeholder,flex:!1,disabled:n.disabled,classname:"tox-textfield",validation:on.none(),maximized:n.maximized},t)}(n,t.shared.providers)}),textarea:Kk(function(n,t){return function(n,t){return Vk({name:n.name,multiline:!0,label:n.label,inputMode:on.none(),placeholder:n.placeholder,flex:!0,disabled:n.disabled,classname:"tox-textarea",validation:on.none(),maximized:n.maximized},t)}(n,t.shared.providers)}),label:Kk(function(n,t){return function(n,t){var e={dom:{tag:"label",innerHtml:t.providers.translate(n.label),classes:["tox-label"]}},o=S(n.items,t.interpreter);return{dom:{tag:"div",classes:["tox-form__group"]},components:[e].concat(o),behaviours:ya([TS(),gg.config({}),IS(on.none()),dg.config({mode:"acyclic"})])}}(n,t.shared)}),iframe:(xT=function(n,t){return Sw(n,t.shared.providers)},function(n,t,e){var o=Bn(t,{source:"dynamic"});return Kk(xT)(n,o,e)}),button:Kk(function(n,t){return nk(n,t.shared.providers)}),checkbox:Kk(function(n,t){return function(e,t){function n(n){return n.element().dom().click(),on.some(!0)}function o(n){return{dom:{tag:"span",classes:["tox-icon","tox-checkbox-icon__"+n],innerHtml:xm("checked"===n?"selected":"unselected",t.icons)}}}var r=nl.config({store:{mode:"manual",getValue:function(n){return n.element().dom().checked},setValue:function(n,t){n.element().dom().checked=t}}}),i=by.parts().field({factory:{sketch:l},dom:{tag:"input",classes:["tox-checkbox__input"],attributes:{type:"checkbox"}},behaviours:ya([TS(),kh.config({disabled:e.disabled}),Xy.config({}),bg.config({}),r,dg.config({mode:"special",onEnter:n,onSpace:n,stopSpaceKeyup:!0}),Jd("checkbox-events",[rr(vo(),function(n,t){qt(n,ay,{name:e.name})})])])}),u=by.parts().label({dom:{tag:"span",classes:["tox-checkbox__label"],innerHtml:t.translate(e.label)},behaviours:ya([Ew.config({})])}),a=bm({dom:{tag:"div",classes:["tox-checkbox__icons"]},components:[o("checked"),o("unchecked")]});return by.sketch({dom:{tag:"label",classes:["tox-checkbox"]},components:[i,a.asSpec(),u],fieldBehaviours:ya([kh.config({disabled:e.disabled,disableClass:"tox-checkbox--disabled",onDisabled:function(n){by.getField(n).each(kh.disable)},onEnabled:function(n){by.getField(n).each(kh.enable)}})])})}(n,t.shared.providers)}),colorinput:Kk(function(n,t){return sx(n,t.shared,t.colorinput)}),colorpicker:Kk(function(n){function t(n){return"tox-"+n}var e=OS(hw,t),r=bm(e.sketch({dom:{tag:"div",classes:[t("color-picker-container")],attributes:{role:"presentation"}},onValidHex:function(n){qt(n,fy,{name:"hex-valid",value:!0})},onInvalidHex:function(n){qt(n,fy,{name:"hex-valid",value:!1})}}));return{dom:{tag:"div"},components:[r.asSpec()],behaviours:ya([nl.config({store:{mode:"manual",getValue:function(n){var t=r.get(n);return nd.getCurrent(t).bind(function(n){return nl.getValue(n).hex}).map(function(n){return"#"+n}).getOr("")},setValue:function(n,t){var e=/^#([a-fA-F0-9]{3}(?:[a-fA-F0-9]{3})?)/.exec(t),o=r.get(n);nd.getCurrent(o).fold(function(){v.console.log("Can not find form")},function(n){nl.setValue(n,{hex:on.from(e[1]).getOr("")}),bS.getField(n,"hex").each(function(n){Yt(n,ho())})})}}}),TS()])}}),dropzone:Kk(function(n,t){return yw(n,t.shared.providers)}),grid:Kk(function(n,t){return function(n,t){return{dom:{tag:"div",classes:["tox-form__grid","tox-form__grid--"+n.columns+"col"]},components:S(n.items,t.interpreter)}}(n,t.shared)}),selectbox:Kk(function(n,t){return function(e,t){var n=S(e.items,function(n){return{text:t.translate(n.text),value:n.value}}),o=e.label.map(function(n){return Ay(n,t)}),r=by.parts().field({dom:{},selectAttributes:{size:e.size},options:n,factory:kT,selectBehaviours:ya([kh.config({disabled:e.disabled}),Xy.config({}),Jd("selectbox-change",[rr(vo(),function(n,t){qt(n,ay,{name:e.name})})])])}),i=1<e.size?on.none():on.some({dom:{tag:"div",classes:["tox-selectfield__icon-js"],innerHtml:xm("chevron-down",t.icons)}}),u={dom:{tag:"div",classes:["tox-selectfield"]},components:H([[r],i.toArray()])};return by.sketch({dom:{tag:"div",classes:["tox-form__group"]},components:H([o.toArray(),[u]]),fieldBehaviours:ya([kh.config({disabled:e.disabled,onDisabled:function(n){by.getField(n).each(kh.disable)},onEnabled:function(n){by.getField(n).each(kh.enable)}})])})}(n,t.shared.providers)}),sizeinput:Kk(function(n,t){return uk(n,t.shared.providers)}),urlinput:Kk(function(n,t){return Yk(n,t,t.urlinput)}),customeditor:Kk(function(e){var o=Ee(on.none()),t=bm({dom:{tag:e.tag}}),r=Ee(on.none());return{dom:{tag:"div",classes:["tox-custom-editor"]},behaviours:ya([Jd("editor-foo-events",[Ri(function(n){t.getOpt(n).each(function(t){(!function(n){return Object.prototype.hasOwnProperty.call(n,"init")}(e)?AS.load(e.scriptId,e.scriptUrl).then(function(n){return n(t.element().dom(),e.settings)}):e.init(t.element().dom())).then(function(t){r.get().each(function(n){t.setValue(n)}),r.set(on.none()),o.set(on.some(t))})})})]),nl.config({store:{mode:"manual",getValue:function(){return o.get().fold(function(){return r.get().getOr("")},function(n){return n.getValue()})},setValue:function(n,t){o.get().fold(function(){r.set(on.some(t))},function(n){return n.setValue(t)})}}}),TS()]),components:[t.asSpec()]}}),htmlpanel:Kk(function(n){return"presentation"===n.presets?Gb.sketch({dom:{tag:"div",classes:["tox-form__group"],innerHtml:n.html}}):Gb.sketch({dom:{tag:"div",classes:["tox-form__group"],innerHtml:n.html,attributes:{role:"document"}},containerBehaviours:ya([Xy.config({}),bg.config({})])})}),imagetools:Kk(function(n,t){return Rk(n,t.shared.providers)}),table:Kk(function(n,t){return function(n,t){function e(n){return{dom:{tag:"th",innerHtml:t.translate(n)}}}function o(n){return{dom:{tag:"td",innerHtml:t.translate(n)}}}function r(n){return{dom:{tag:"tr"},components:S(n,o)}}var i,u;return{dom:{tag:"table",classes:["tox-dialog__table"]},components:[(u=n.header,{dom:{tag:"thead"},components:[{dom:{tag:"tr"},components:S(u,e)}]}),(i=n.cells,{dom:{tag:"tbody"},components:S(i,r)})],behaviours:ya([Xy.config({}),bg.config({})])}}(n,t.shared.providers)}),panel:Kk(function(n,t){return function(n,t){return{dom:{tag:"div",classes:n.classes},components:S(n.items,t.shared.interpreter)}}(n,t)})},PT={field:function(n,t){return t}},zT=function(t,e,o){return Nn(HT,e.type).fold(function(){return v.console.error('Unknown factory type "'+e.type+'", defaulting to container: ',e),e},function(n){return n(t,e,o)})},LT=nn(function(n,t){!function(n,t){var e=Nu.max(n,t,["margin-left","border-left-width","padding-left","padding-right","border-right-width","margin-right"]);li(n,"max-width",e+"px")}(n,Math.floor(t))}),jT={valignCentre:[],alignCentre:[],alignLeft:[],alignRight:[],right:[],left:[],bottom:[],top:[]},UT=function(n,t,e){function o(){return Be.fromDom(n.getBody())}var r=Jb(n);return{toolbar:function(n,t,e){return e?function(){return{anchor:"node",root:n(),node:on.from(n()),bubble:Ta(-12,-12,jT),layouts:{onRtl:function(){return[hm]},onLtr:function(){return[vm]}},overrides:{maxHeightFunction:kf()}}}:function(){return{anchor:"hotspot",hotspot:t(),bubble:Ta(-12,12,jT),layouts:{onRtl:function(){return[aa]},onLtr:function(){return[ca]}},overrides:{maxHeightFunction:kf()}}}}(o,t,r),toolbarOverflow:function(n){return function(){return{anchor:"hotspot",hotspot:n(),overrides:{maxWidthFunction:LT()},layouts:{onRtl:function(){return[aa,ca]},onLtr:function(){return[ca,aa]}}}}}(e),banner:function(n,t,e){return e?function(){return{anchor:"node",root:n(),node:on.from(n()),layouts:{onRtl:function(){return[Wg]},onLtr:function(){return[Wg]}}}}:function(){return{anchor:"hotspot",hotspot:t(),layouts:{onRtl:function(){return[ic]},onLtr:function(){return[ic]}}}}}(o,t,r),cursor:function(t,n){return function(){return{anchor:"selection",root:n(),getSelection:function(){var n=t.selection.getRng();return on.some(Dc.range(Be.fromDom(n.startContainer),n.startOffset,Be.fromDom(n.endContainer),n.endOffset))}}}}(n,o),node:function(t){return function(n){return{anchor:"node",root:t(),node:n}}}(o)}},WT=[{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:"strike-through",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:"Align",items:[{title:"Left",icon:"align-left",format:"alignleft"},{title:"Center",icon:"align-center",format:"aligncenter"},{title:"Right",icon:"align-right",format:"alignright"},{title:"Justify",icon:"align-justify",format:"alignjustify"}]}],GT=function(n){return O(n,function(n,t){if(function(n){return Tn(n,"items")}(t)){var e=GT(t.items);return{customFormats:n.customFormats.concat(e.customFormats),formats:n.formats.concat([{title:t.title,items:e.formats}])}}if(function(n){return Tn(n,"inline")}(t)||function(n){return Tn(n,"block")}(t)||function(n){return Tn(n,"selector")}(t)){var o="custom-"+t.title.toLowerCase();return{customFormats:n.customFormats.concat([{name:o,format:t}]),formats:n.formats.concat([{title:t.title,format:o,icon:t.icon}])}}return N(N({},n),{formats:n.formats.concat(t)})},{customFormats:[],formats:[]})},XT=Ok.trim,YT=tO("true"),qT=tO("false"),KT=function(n){return function(n){for(;n=n.parentNode;){var t=n.contentEditable;if(t&&"inherit"!==t)return YT(n)}return!1}(n)&&!qT(n)},JT=function(n){var t=sO(n);return C(function(n){return S(C(n,uO),aO)}(t).concat(function(n){return S(C(n,rO),cO)}(t)),fO)},$T="tinymce-url-history",QT=Object.prototype.hasOwnProperty,ZT="contexttoolbar-hide",nE=nn([ct("dom"),St("shell",!0),Is("toolbarBehaviours",[gg])]),tE=nn([Cl({name:"groups",overrides:function(n){return{behaviours:ya([gg.config({})])}}})]),eE=_l({name:"Toolbar",configFields:nE(),partFields:tE(),factory:function(t,n,e,o){var r=function(n){return t.shell?on.some(n):Ks(n,t,"groups")},i=t.shell?{behaviours:[gg.config({})],components:[]}:{behaviours:[],components:n};return{uid:t.uid,dom:t.dom,components:i.components,behaviours:Vs(t.toolbarBehaviours,i.behaviours),apis:{setGroups:function(n,t){r(n).fold(function(){throw v.console.error("Toolbar was defined to not be a shell, but no groups container was specified in components"),new Error("Toolbar was defined to not be a shell, but no groups container was specified in components")},function(n){gg.set(n,t)})}},domModification:{attributes:{role:"group"}}}},apis:{setGroups:function(n,t,e){n.setGroups(t,e)}}}),oE=lr("within","extra","withinWidth"),rE=nn([ct("items"),Yu(["itemSelector"]),Is("tgroupBehaviours",[dg])]),iE=nn([kl({name:"items",unit:"item"})]),uE=_l({name:"ToolbarGroup",configFields:rE(),partFields:iE(),factory:function(n,t,e,o){return{uid:n.uid,dom:n.dom,components:t,behaviours:Vs(n.tgroupBehaviours,[dg.config({mode:"flow",selector:n.markers.itemSelector})]),domModification:{attributes:{role:"toolbar"}}}}}),aE=nn([Is("splitToolbarBehaviours",[$y]),At("builtGroups",function(){return Ee([])})]),cE=nn([Yu(["overflowToggledClass"]),ct("getAnchor"),xt("getOverflowBounds"),ct("lazySink")].concat(aE())),sE=nn([wl({factory:eE,schema:nE(),name:"primary"}),Sl({factory:eE,schema:nE(),name:"overflow",overrides:function(t){return{toolbarBehaviours:ya([dg.config({mode:"cyclic",onEscape:function(n){return Ks(n,t,"overflow-button").each(bg.focus),on.none()}})])}}}),Sl({name:"overflow-button",overrides:function(n){return{dom:{attributes:{"aria-haspopup":"true"}},buttonBehaviours:ya([kg.config({toggleClass:n.markers.overflowToggledClass,aria:{mode:"expanded"},toggleOnExecute:!1})])}}}),Sl({name:"overflow-group"})]),fE=_l({name:"SplitFloatingToolbar",configFields:cE(),partFields:sE(),factory:function(t,n,e,o){return DO(t,n,0,o,{coupling:{sandbox:function(n){return function(o,e){var r=Eu();return{dom:{tag:"div",attributes:{id:r.id()}},behaviours:ya([dg.config({mode:"special",onEscape:function(n){return Lf.close(n),on.some(!0)}}),Lf.config({onOpen:function(n,t){_O(o,e),Ks(o,e,"overflow-button").each(function(n){kg.on(n),r.link(n.element())}),dg.focusIn(t)},onClose:function(){Ks(o,e,"overflow-button").each(function(n){kg.off(n),bg.focus(n),r.unlink(n.element())})},isPartOf:function(n,t,e){return ju(t,e)||ju(o,e)},getAttachPoint:function(){return e.lazySink(o).getOrDie()}}),dc.config({channels:N({},Ds({isExtraPart:nn(!1),doReposition:function(){return MO(o,e)}}))})])}}(n,t)}},apis:{refresh:function(n){return _O(n,t)},toggle:function(n){return function(n,t,e){var o=$y.getCoupled(n,"sandbox");Lf.isOpen(o)?Lf.close(o):Lf.open(o,e.overflow())}(n,0,o)},getOverflow:function(n){return Lf.getState($y.getCoupled(n,"sandbox"))},reposition:function(n){return MO(n,t)}}})},apis:{setGroups:function(n,t,e){n.setGroups(t,e)},refresh:function(n,t){n.refresh(t)},reposition:function(n,t){n.reposition(t)},getMoreButton:function(n,t){return n.getMoreButton(t)},getOverflow:function(n,t){return n.getOverflow(t)},toggle:function(n,t){n.toggle(t)}}}),lE=/* */Object.freeze({refresh:function(n,t,e){if(e.isExpanded()){hi(n.element(),IO(t));var o=RO(t,n.element());li(n.element(),IO(t),o)}},grow:function(n,t,e){e.isExpanded()||jO(n,t,e)},shrink:function(n,t,e){e.isExpanded()&&LO(n,t,e)},immediateShrink:function(n,t,e){e.isExpanded()&&PO(n,t,e)},hasGrown:function(n,t,e){return e.isExpanded()},hasShrunk:function(n,t,e){return e.isCollapsed()},isGrowing:UO,isShrinking:WO,isTransitioning:function(n,t,e){return!0===UO(n,t)||!0===WO(n,t)},toggleGrow:function(n,t,e){(e.isExpanded()?LO:jO)(n,t,e)},disableTransitions:VO}),dE=/* */Object.freeze({exhibit:function(n,t){var e=t.expanded;return Gr(e?{classes:[t.openClass],styles:{}}:{classes:[t.closedClass],styles:q(t.dimension.property,"0px")})},events:function(e,o){return tr([fr(yo(),function(n,t){t.event().raw().propertyName===e.dimension.property&&(VO(n,e),o.isExpanded()&&hi(n.element(),e.dimension.property),(o.isExpanded()?e.onGrown:e.onShrunk)(n))})])}}),mE=[ct("closedClass"),ct("openClass"),ct("shrinkingClass"),ct("growingClass"),ht("getAnimationRoot"),Ku("onShrunk"),Ku("onStartShrink"),Ku("onGrown"),Ku("onStartGrow"),St("expanded",!1),st("dimension",it("property",{width:[Zu("property","width"),Zu("getDimension",function(n){return gu(n)+"px"})],height:[Zu("property","height"),Zu("getDimension",function(n){return fu(n)+"px"})]}))],gE=xa({fields:mE,name:"sliding",active:dE,apis:lE,state:/* */Object.freeze({init:function(n){var t=Ee(n.expanded);return tu({isExpanded:function(){return!0===t.get()},isCollapsed:function(){return!1===t.get()},setCollapsed:d(t.set,!1),setExpanded:d(t.set,!0),readState:function(){return"expanded: "+t.get()}})}})}),pE=nn([Yu(["closedClass","openClass","shrinkingClass","growingClass","overflowToggledClass"]),Ku("onOpened"),Ku("onClosed")].concat(aE())),hE=nn([wl({factory:eE,schema:nE(),name:"primary"}),wl({factory:eE,schema:nE(),name:"overflow",overrides:function(t){return{toolbarBehaviours:ya([gE.config({dimension:{property:"height"},closedClass:t.markers.closedClass,openClass:t.markers.openClass,shrinkingClass:t.markers.shrinkingClass,growingClass:t.markers.growingClass,onShrunk:function(n){Ks(n,t,"overflow-button").each(function(n){kg.off(n),bg.focus(n)}),t.onClosed(n)},onGrown:function(n){dg.focusIn(n),t.onOpened(n)},onStartGrow:function(n){Ks(n,t,"overflow-button").each(kg.on)}}),dg.config({mode:"acyclic",onEscape:function(n){return Ks(n,t,"overflow-button").each(bg.focus),on.some(!0)}})])}}}),Sl({name:"overflow-button",overrides:function(n){return{buttonBehaviours:ya([kg.config({toggleClass:n.markers.overflowToggledClass,aria:{mode:"pressed"},toggleOnExecute:!1})])}}}),Sl({name:"overflow-group"})]),vE=function(n,t){var e=Ks(n,t,"overflow");EO(n,t,e,GO),e.each(gE.refresh)},bE=_l({name:"SplitSlidingToolbar",configFields:pE(),partFields:hE(),factory:function(t,n,e,o){return DO(t,n,0,o,{coupling:{},apis:{refresh:function(n){return vE(n,t)},toggle:function(n){return function(t,e){Ks(t,e,"overflow").each(function(n){vE(t,e),gE.toggleGrow(n)})}(n,t)},getOverflow:function(n){return Ks(n,t,"overflow")}}})},apis:{setGroups:function(n,t,e){n.setGroups(t,e)},refresh:function(n,t){n.refresh(t)},getMoreButton:function(n,t){return n.getMoreButton(t)},getOverflow:function(n,t){return n.getOverflow(t)},toggle:function(n,t){n.toggle(t)}}}),yE=nn(Hr("toolbar-height-change")),xE="silver.readonly",wE=de([(wT="readonly",st(wT,Ce))]),SE=[Et("disabled",!1),yt("tooltip"),yt("icon"),yt("text"),Dt("onSetup",function(){return Z})],CE=de([ft("type"),dt("onAction")].concat(SE)),kE=[yt("text"),yt("tooltip"),yt("icon"),dt("fetch"),Dt("onSetup",function(){return Z})],OE=de(g([ft("type")],kE)),TE=de([ft("type"),yt("tooltip"),yt("icon"),yt("text"),xt("select"),dt("fetch"),Dt("onSetup",function(){return Z}),Tt("presets","normal",["normal","color","listpreview"]),St("columns",1),dt("onAction"),dt("onItemAction")]),EE=[Et("active",!1)].concat(SE),DE=de(EE.concat([ft("type"),dt("onAction")])),BE=[Dt("predicate",function(){return!1}),Tt("scope","node",["node","editor"]),Tt("position","selection",["node","selection","line"])],AE=SE.concat([St("type","contextformbutton"),St("primary",!1),dt("onAction"),At("original",l)]),_E=EE.concat([St("type","contextformbutton"),St("primary",!1),dt("onAction"),At("original",l)]),ME=SE.concat([St("type","contextformbutton")]),FE=EE.concat([St("type","contextformtogglebutton")]),IE=it("type",{contextformbutton:AE,contextformtogglebutton:_E}),RE=de([St("type","contextform"),Dt("initValue",function(){return""}),yt("label"),pt("commands",IE),vt("launch",it("type",{contextformbutton:ME,contextformtogglebutton:FE}))].concat(BE)),VE=de([St("type","contexttoolbar"),ft("items")].concat(BE)),NE=/* */Object.freeze({getState:function(n,t,e){return e}}),HE=/* */Object.freeze({events:function(i,u){function o(o,r){i.updateState.each(function(n){var t=n(o,r);u.set(t)}),i.renderComponents.each(function(n){var t=n(r,u.get()),e=S(t,o.getSystem().build);hs(o,e)})}return tr([rr(Oo(),function(n,t){var e=i.channel;vn(t.channels(),e)&&o(n,t.data())}),Ri(function(t,n){i.initialData.each(function(n){o(t,n)})})])}}),PE=/* */Object.freeze({init:function(n){var t=Ee(on.none());return{readState:function(){return t.get().fold(function(){return"none"},function(n){return n})},get:function(){return t.get()},set:function(n){return t.set(n)},clear:function(){return t.set(on.none())}}}}),zE=[ct("channel"),ht("renderComponents"),ht("updateState"),ht("initialData")],LE=xa({fields:zE,name:"reflecting",active:HE,apis:NE,state:PE}),jE=nn([ct("toggleClass"),ct("fetch"),$u("onExecute"),St("getHotspot",on.some),St("getAnchorOverrides",nn({})),St("layouts",on.none()),$u("onItemExecute"),ht("lazySink"),ct("dom"),Ku("onOpen"),Is("splitDropdownBehaviours",[$y,dg,bg]),St("matchWidth",!1),St("useMinWidth",!1),St("eventOrder",{}),ht("role")].concat(cx())),UE=wl({factory:Xg,schema:[ct("dom")],name:"arrow",defaults:function(n){return{buttonBehaviours:ya([bg.revoke()])}},overrides:function(t){return{dom:{tag:"span",attributes:{role:"presentation"}},action:function(n){n.getSystem().getByUid(t.uid).each(Kt)},buttonBehaviours:ya([kg.config({toggleOnExecute:!1,toggleClass:t.toggleClass})])}}}),WE=wl({factory:Xg,schema:[ct("dom")],name:"button",defaults:function(n){return{buttonBehaviours:ya([bg.revoke()])}},overrides:function(e){return{dom:{tag:"span",attributes:{role:"presentation"}},action:function(t){t.getSystem().getByUid(e.uid).each(function(n){e.onExecute(n,t)})}}}}),GE=nn([UE,WE,Cl({factory:{sketch:function(n){return{uid:n.uid,dom:{tag:"span",styles:{display:"none"},attributes:{"aria-hidden":"true"},innerHtml:n.text}}}},schema:[ct("text")],name:"aria-descriptor"}),Sl({schema:[Xu()],name:"menu",defaults:function(o){return{onExecute:function(t,e){t.getSystem().getByUid(o.uid).each(function(n){o.onItemExecute(n,t,e)})}}}}),Zy()]),XE=_l({name:"SplitDropdown",configFields:jE(),partFields:GE(),factory:function(o,n,t,e){function r(n){nd.getCurrent(n).each(function(n){cd.highlightFirst(n),dg.focusIn(n)})}function i(n){ox(o,function(n){return n},n,e,r,_y.HighlightFirst).get(Z)}function u(n){var t=Js(n,o,"button");return Kt(t),on.some(!0)}var a=An(tr([Ri(function(e,n){Ks(e,o,"aria-descriptor").each(function(n){var t=Hr("aria");_r(n.element(),"id",t),_r(e.element(),"aria-describedby",t)})})]),im(on.some(i))),c={repositionMenus:function(n){kg.isOn(n)&&ax(n)}};return{uid:o.uid,dom:o.dom,components:n,apis:c,eventOrder:N(N({},o.eventOrder),{"alloy.execute":["disabling","toggling","alloy.base.behaviour"]}),events:a,behaviours:Vs(o.splitDropdownBehaviours,[$y.config({others:{sandbox:function(n){var t=Js(n,o,"arrow");return ux(o,n,{onOpen:function(){kg.on(t),kg.on(n)},onClose:function(){kg.off(t),kg.off(n)}})}}}),dg.config({mode:"special",onSpace:u,onEnter:u,onDown:function(n){return i(n),on.some(!0)}}),bg.config({}),kg.config({toggleOnExecute:!1,aria:{mode:"expanded"}})]),domModification:{attributes:{role:o.role.getOr("button"),"aria-haspopup":!0}}}},apis:{repositionMenus:function(n,t){return n.repositionMenus(t)}}}),YE=Hr("focus-button"),qE=["checklist","ordered-list"],KE=["indent","outdent","table-insert-column-after","table-insert-column-before","unordered-list"],JE=function(n,t,e){return sT(n,{toolbarButtonBehaviours:[].concat(0<e.length?[Jd("toolbarButtonWith",e)]:[]),getApi:iT,onSetup:n.onSetup},t)},$E=function(n,t,e){return Bn(sT(n,{toolbarButtonBehaviours:[gg.config({}),kg.config({toggleClass:"tox-tbtn--enabled",aria:{mode:"pressed"},toggleOnExecute:!1})].concat(0<e.length?[Jd("toolbarToggleButtonWith",e)]:[]),getApi:uT,onSetup:n.onSetup},t))},QE=function(n,t,e){var o=t.label.fold(function(){return{}},function(n){return{"aria-label":n}}),r=bm(xy.sketch({inputClasses:["tox-toolbar-textfield","tox-toolbar-nav-js"],data:t.initValue(),inputAttributes:o,selectOnFocus:!0,inputBehaviours:ya([dg.config({mode:"special",onEnter:function(n){return i.findPrimary(n).map(function(n){return Kt(n),!0})},onLeft:function(n,t){return t.cut(),on.none()},onRight:function(n,t){return t.cut(),on.none()}})])})),i=function(t,n,e){var o=S(n,function(n){return bm(dT(t,n,e))});return{asSpecs:function(){return S(o,function(n){return n.asSpec()})},findPrimary:function(e){return Au(n,function(n,t){return n.primary?on.from(o[t]).bind(function(n){return n.getOpt(e)}).filter(b(kh.isDisabled)):on.none()})}}}(r,t.commands,e.shared.providers);return tT({type:n,uid:Hr("context-toolbar"),initGroups:[{title:on.none(),items:[r.asSpec()]},{title:on.none(),items:i.asSpecs()}],onEscape:on.none,cyclicKeying:!0,backstage:e,getSink:function(){return an.error("")}})},ZE=function(t,e){function n(n){return n.dom()===e.getBody()}var o=Be.fromDom(e.selection.getNode());return pT(o,t.inNodeScope).orThunk(function(){return pT(o,t.inEditorScope).orThunk(function(){return function(n,t,e){for(var o=n.dom(),r=dn(e)?e:nn(!1);o.parentNode;){o=o.parentNode;var i=Be.fromDom(o),u=t(i);if(u.isSome())return u;if(r(i))break}return on.none()}(o,function(n){return pT(n,t.inNodeScope)},n)})})},nD=function(e,r){function o(t,e){var o=et(function(n){return tt("ContextForm",RE,n)}(e));(n[t]=o).launch.map(function(n){c["form:"+t]=N(N({},e.launch),{type:"contextformtogglebutton"===n.type?"togglebutton":"button",onAction:function(){r(o)}})}),"editor"===o.scope?a.push(o):u.push(o),s[t]=o}function i(t,e){(function(n){return tt("ContextToolbar",VE,n)})(e).each(function(n){"editor"===e.scope?a.push(n):u.push(n),s[t]=n})}var n={},u=[],a=[],c={},s={},t=wn(e);return bn(t,function(n){var t=e[n];"contextform"===t.type?o(n,t):"contexttoolbar"===t.type&&i(n,t)}),{forms:n,inNodeScope:u,inEditorScope:a,lookupTable:s,formNavigators:c}},tD=Hr("forward-slide"),eD=Hr("backward-slide"),oD=Hr("change-slide-event"),rD="tox-pop--resizing";(CT=ST=ST||{})[CT.SemiColon=0]="SemiColon",CT[CT.Space=1]="Space";function iD(n,t,e,o){return{type:"basic",data:function(n){return S(n,function(n){var t=n,e=n,o=n.split("=");return 1<o.length&&(t=o[0],e=o[1]),{title:t,format:e}})}(function(n,t){return t===ST.SemiColon?n.replace(/;$/,"").split(";"):n.split(" ")}(Nn(n.settings,t).getOr(e),o))}}function uD(e){function t(n){var t=T(HB,function(n){return e.formatter.match(n.format)}).fold(function(){return"left"},function(n){return n.title.toLowerCase()});qt(n,lk,{icon:"align-"+t})}var n=on.some(function(n){return function(){return t(n)}}),o=on.some(function(n){return t(n)}),r=function(n){return{type:"basic",data:n}}(HB);return{tooltip:"Align",icon:on.some("align-left"),isSelectedFor:function(n){return function(){return e.formatter.match(n)}},getCurrentValue:nn(on.none()),getPreviewFor:function(n){return function(){return on.none()}},onAction:vT(e),setInitialValue:o,nodeChangeHandler:n,dataset:r,shouldHide:!1,isInvalid:function(n){return!e.formatter.canApply(n.format)}}}function aD(n){var t=n.split(/\s*,\s*/);return S(t,function(n){return n.replace(/^['"]+|['"]+$/g,"")})}function cD(r){function i(){function e(n){return n?aD(n)[0]:""}var n=r.queryCommandValue("FontName"),t=u.data,o=n?n.toLowerCase():"";return{matchOpt:T(t,function(n){var t=n.format;return t.toLowerCase()===o||e(t).toLowerCase()===e(o).toLowerCase()}).orThunk(function(){return function(n){var t;return 0===n.indexOf("-apple-system")&&(t=aD(n.toLowerCase()),B(PB,function(n){return-1<t.indexOf(n.toLowerCase())}))}(o)?on.from({title:"System Font",format:o}):on.none()}),font:n}}function t(n){var t=i(),e=t.matchOpt,o=t.font,r=e.fold(function(){return o},function(n){return n.title});qt(n,fk,{text:r})}var n=on.some(function(n){return function(){return t(n)}}),e=on.some(function(n){return t(n)}),u=iD(r,"font_formats","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",ST.SemiColon);return{tooltip:"Fonts",icon:on.none(),isSelectedFor:function(t){return function(n){return n.exists(function(n){return n.format===t})}},getCurrentValue:function(){return i().matchOpt},getPreviewFor:function(n){return function(){return on.some({tag:"div",styleAttr:-1===n.indexOf("dings")?"font-family:"+n:""})}},onAction:function(n){return function(){r.undoManager.transact(function(){r.focus(),r.execCommand("FontName",!1,n.format)})}},setInitialValue:e,nodeChangeHandler:n,dataset:u,shouldHide:!1,isInvalid:function(){return!1}}}function sD(n,t){return/[0-9.]+px$/.test(n)?function(n,t){var e=Math.pow(10,t);return Math.round(n*e)/e}(72*parseInt(n,10)/96,t||0)+"pt":n}function fD(e){function i(){var o=on.none(),r=u.data,i=e.queryCommandValue("FontSize");if(i)for(var n=function(n){var t=sD(i,n),e=function(n){return V(zB,n).getOr("")}(t);o=T(r,function(n){return n.format===i||n.format===t||n.format===e})},t=3;o.isNone()&&0<=t;t--)n(t);return{matchOpt:o,px:i}}function t(n){var t=i(),e=t.matchOpt,o=t.px,r=e.fold(function(){return o},function(n){return n.title});qt(n,fk,{text:r})}var n=nn(nn(on.none())),o=on.some(function(n){return function(){return t(n)}}),r=on.some(function(n){return t(n)}),u=iD(e,"fontsize_formats","8pt 10pt 12pt 14pt 18pt 24pt 36pt",ST.Space);return{tooltip:"Font sizes",icon:on.none(),isSelectedFor:function(t){return function(n){return n.exists(function(n){return n.format===t})}},getPreviewFor:n,getCurrentValue:function(){return i().matchOpt},onAction:function(n){return function(){e.undoManager.transact(function(){e.focus(),e.execCommand("FontSize",!1,n.format)})}},setInitialValue:r,nodeChangeHandler:o,dataset:u,shouldHide:!1,isInvalid:function(){return!1}}}function lD(e,n,t){var o=n();return Au(t,function(t){return T(o,function(n){return e.formatter.matchNode(t,n.format)})}).orThunk(function(){return e.formatter.match("p")?on.some({title:"Paragraph",format:"p"}):on.none()})}function dD(n){var t=n.selection.getStart(!0)||n.getBody();return n.dom.getParents(t,function(){return!0},n.getBody())}function mD(o){function e(n,t){var e=function(n){return lD(o,function(){return r.data},n)}(n).fold(function(){return"Paragraph"},function(n){return n.title});qt(t,fk,{text:e})}var n=on.some(function(t){return function(n){return e(n.parents,t)}}),t=on.some(function(n){var t=dD(o);e(t,n)}),r=iD(o,"block_formats","Paragraph=p;Heading 1=h1;Heading 2=h2;Heading 3=h3;Heading 4=h4;Heading 5=h5;Heading 6=h6;Preformatted=pre",ST.SemiColon);return{tooltip:"Blocks",icon:on.none(),isSelectedFor:function(n){return function(){return o.formatter.match(n)}},getCurrentValue:nn(on.none()),getPreviewFor:function(t){return function(){var n=o.formatter.get(t);return on.some({tag:0<n.length&&(n[0].inline||n[0].block)||"div",styleAttr:o.formatter.getCssText(t)})}},onAction:vT(o),setInitialValue:t,nodeChangeHandler:n,dataset:r,shouldHide:!1,isInvalid:function(n){return!o.formatter.canApply(n.format)}}}function gD(i,n){function e(n,t){var e=function(n){var t=n.items;return t!==undefined&&0<t.length?D(t,e):[{title:n.title,format:n.format}]},o=D(Qk(i),e),r=lD(i,function(){return o},n).fold(function(){return"Paragraph"},function(n){return n.title});qt(t,fk,{text:r})}var t=on.some(function(t){return function(n){return e(n.parents,t)}}),o=on.some(function(n){var t=dD(i);e(t,n)});return{tooltip:"Formats",icon:on.none(),isSelectedFor:function(n){return function(){return i.formatter.match(n)}},getCurrentValue:nn(on.none()),getPreviewFor:function(t){return function(){var n=i.formatter.get(t);return n!==undefined?on.some({tag:0<n.length&&(n[0].inline||n[0].block)||"div",styleAttr:i.formatter.getCssText(t)}):on.none()}},onAction:vT(i),setInitialValue:o,nodeChangeHandler:t,shouldHide:i.getParam("style_formats_autohide",!1,"boolean"),isInvalid:function(n){return!i.formatter.canApply(n.format)},dataset:n}}function pD(o,r){return function(n,t){var e=o(n).mapError(function(n){return ye(n)}).getOrDie();return r(e,t)}}function hD(n){var t=n.toolbar,e=n.buttons;return!1===t?[]:t===undefined||!0===t?function(e){var n=S(LB,function(n){var t=C(n.items,function(n){return Tn(e,n)||Tn(UB,n)});return{name:n.name,items:t}});return C(n,function(n){return 0<n.items.length})}(e):cn(t)?function(n){var t=n.split("|");return S(t,function(n){return{items:n.trim().split(" ")}})}(t):function(n){return h(n,function(n){return Tn(n,"name")&&Tn(n,"items")})}(t)?t:(v.console.error("Toolbar type should be string, string[], boolean or ToolbarGroup[]"),[])}function vD(t,e,o,r,n){return V(e,o.toLowerCase()).orThunk(function(){return n.bind(function(n){return Au(n,function(n){return V(e,n+o.toLowerCase())})})}).fold(function(){return V(UB,o.toLowerCase()).map(function(n){return n(t,r)}).orThunk(function(){return on.none()})},function(n){return function(t,e){return V(jB,t.type).fold(function(){return v.console.error("skipping button defined by",t),on.none()},function(n){return on.some(n(t,e))})}(n,r)})}function bD(e,o,r,i){var n=hD(o),t=S(n,function(n){var t=D(n.items,function(n){return 0===n.trim().length?[]:vD(e,o.buttons,n,r,i).toArray()});return{title:on.from(e.translate(n.name)),items:t}});return C(t,function(n){return 0<n.items.length})}function yD(e){return(gi(e,"position").is("fixed")?on.none():yr(e)).orThunk(function(){var n=Be.fromTag("span");Sr(e,n);var t=yr(n);return zi(n),t}).map(mu).getOrThunk(function(){return Ru(0,0)})}function xD(t){return function(n){return n.translate(-t.left(),-t.top())}}function wD(t){return function(n){return n.translate(t.left(),t.top())}}function SD(e){return function(n,t){return O(e,function(n,t){return t(n)},Ru(n,t))}}function CD(n,t,e){return n.fold(SD([wD(e),xD(t)]),SD([xD(t)]),SD([]))}function kD(n,t,e){return n.fold(SD([wD(e)]),SD([]),SD([wD(t)]))}function OD(n,t,e){return n.fold(SD([]),SD([xD(e)]),SD([wD(t),xD(e)]))}function TD(n,t,e){return n.fold(function(n,t){return{position:"absolute",left:n+"px",top:t+"px"}},function(n,t){return{position:"absolute",left:n-e.left()+"px",top:t-e.top()+"px"}},function(n,t){return{position:"fixed",left:n+"px",top:t+"px"}})}function ED(n,i,u,a){function t(o,r){return function(n,t){var e=o(i,u,a);return r(n.getOr(e.left()),t.getOr(e.top()))}}return n.fold(t(OD,eA.offset),t(kD,eA.absolute),t(CD,eA.fixed))}function DD(n,t){var e=n.element();ei(e,t.transitionClass),ri(e,t.fadeOutClass),ei(e,t.fadeInClass),t.onShow(n)}function BD(n,t){var e=n.element();ei(e,t.transitionClass),ri(e,t.fadeInClass),ei(e,t.fadeOutClass),t.onHide(n)}function AD(n,t,e){return B(n,function(n){switch(n){case"bottom":return function(n,t){return n.bottom()<=t.bottom()}(t,e);case"top":return function(n,t){return n.y()>=t.y()}(t,e)}})}function _D(n,t){return Fr(n,t)?on.some(parseInt(Mr(n,t),10)):on.none()}function MD(r,n){return _D(r,n.leftAttr).bind(function(o){return _D(r,n.topAttr).map(function(n){var t=gu(r),e=fu(r);return xu(o,n,t,e)})})}function FD(n,t,e){var o=Mr(n,t.positionAttr);switch(function(n,t){Ir(n,t.leftAttr),Ir(n,t.topAttr),Ir(n,t.positionAttr)}(n,t),o){case"static":return on.some(uA["static"]());case"absolute":return on.some(uA.absolute(e.x(),e.y()));default:return on.none()}}function ID(n,t,e,o,r){var i=wu(n);if(AD(t.modes,i,e))return on.none();var u=r(),a=mi(n,"position");!function(n,t,e,o,r){_r(n,t.leftAttr,e),_r(n,t.topAttr,o),_r(n,t.positionAttr,r)}(n,t,i.x(),i.y(),a);var c=rA(i.x(),i.y()),s=CD(c,o,u),f=rA(e.x(),e.y()),l=CD(f,o,u),d=i.y()<=e.y()?l.top():l.top()+e.height()-i.height();return on.some(uA.fixed(s.left(),d))}function RD(n,t,e,o,r){var i=n.element();return gi(i,"position").is("fixed")?function(t,e,o){return MD(t,e).filter(function(n){return AD(e.modes,n,o)}).bind(function(n){return FD(t,e,n)})}(i,t,e):ID(i,t,e,o,r)}function VD(t,n){bn(["left","top","position"],function(n){return hi(t.element(),n)}),n.onUndocked(t)}function ND(n,t,e,o,r){var i=TD(r,0,o);di(n.element(),i),("fixed"===i.position?t.onDocked:t.onUndocked)(n)}function HD(o,n,r,i,u){void 0===u&&(u=!1),n.contextual.each(function(e){e.lazyContext(o).each(function(n){var t=function(n,t){return n.y()<t.bottom()&&n.bottom()>t.y()}(n,i);t!==r.isVisible()&&(r.setVisible(t),u&&!t?(ui(o.element(),[e.fadeOutClass]),e.onHide(o)):(t?DD:BD)(o,e))})})}function PD(r,i,n){var u=r.element();n.setDocked(!1),function(n,t){var e=n.element();return MD(e,t).bind(function(n){return FD(e,t,n)})}(r,i).each(function(n){n.fold(function(){return VD(r,i)},function(n,t){var e=pr(u),o=(hu(e),yD(u));ND(r,i,0,o,rA(n,t))},Z)}),n.setVisible(!0),i.contextual.each(function(n){ai(u,[n.fadeInClass,n.fadeOutClass,n.transitionClass]),n.onShow(r)}),aA(r,i,n)}function zD(n,t,e){e.isDocked()&&PD(n,t,e)}function LD(o){var r=o.element();br(r).each(function(n){if(lA.isDocked(o)){var t=gu(n);li(r,"width",t+"px");var e=lu(r);li(n,"padding-top",e+"px")}else hi(r,"width"),hi(n,"padding-top")})}function jD(n,t){t?(ri(n,dA.fadeOutClass),ui(n,[dA.transitionClass,dA.fadeInClass])):(ri(n,dA.fadeInClass),ui(n,[dA.fadeOutClass,dA.transitionClass]))}function UD(n,t){var e=Be.fromDom(n.getContainer());t?(ei(e,mA),ri(e,gA)):(ei(e,gA),ri(e,mA))}function WD(i,e){function o(t){e().each(function(n){return t(n.element())})}function n(n){i.inline||LD(n),UD(i,lA.isDocked(n)),n.getSystem().broadcastOn([Uf()],{}),e().each(function(n){return n.getSystem().broadcastOn([Uf()],{})})}var r=Ee(on.none()),t=i.inline?[]:function(){var n;return[dc.config({channels:(n={},n[yE()]={onReceive:LD},n)})]}();return g([bg.config({}),lA.config({leftAttr:"data-dock-left",topAttr:"data-dock-top",positionAttr:"data-dock-pos",contextual:N({lazyContext:function(n){var t=lu(n.element()),e=i.inline?i.getContentAreaContainer():i.getContainer(),o=wu(Be.fromDom(e)),r=o.height()-t;return on.some(xu(o.x(),o.y(),o.width(),r))},onShow:function(){o(function(n){return jD(n,!0)})},onShown:function(t){o(function(n){return ai(n,[dA.transitionClass,dA.fadeInClass])}),r.get().each(function(n){!function(t,e){var o=pr(e);Ca(o).filter(function(n){return!jt(e,n)}).filter(function(n){return jt(n,Be.fromDom(o.dom().body))||to(t,n)}).each(function(){return Sa(e)})}(t.element(),n),r.set(on.none())})},onHide:function(n){r.set(function(n,t){return ka(n).orThunk(function(){return t().toOption().bind(function(n){return ka(n.element())})})}(n.element(),e)),o(function(n){return jD(n,!1)})},onHidden:function(){o(function(n){return ai(n,[dA.transitionClass])})}},dA),modes:["top"],onDocked:n,onUndocked:n})],t)}function GD(n){return"<alloy.field."+n+">"}function XD(n){return{element:function(){return n.element().dom()}}}function YD(e,o){var r=S(wn(o),function(n){var t=o[n],e=et(function(n){return tt("sidebar",TA,n)}(t));return{name:n,getApi:XD,onSetup:e.onSetup,onShow:e.onShow,onHide:e.onHide}});return S(r,function(n){var t=Ee(Z);return e.slot(n.name,{dom:{tag:"div",classes:["tox-sidebar__pane"]},behaviours:$p([Ep(n,t),Dp(n,t),rr(jo(),function(t,n){var e=n.event();T(r,function(n){return n.name===e.name()}).each(function(n){(e.visible()?n.onShow:n.onHide)(n.getApi(t))})})])})})}function qD(n,t){nd.getCurrent(n).each(function(n){return gg.set(n,[function(t){return OA.sketch(function(n){return{dom:{tag:"div",classes:["tox-sidebar__pane-container"]},components:YD(n,t),slotBehaviours:$p([Ri(function(n){return OA.hideAllSlots(n)})])}})}(t)])})}function KD(n){return nd.getCurrent(n).bind(function(n){return gE.isGrowing(n)||gE.hasGrown(n)?nd.getCurrent(n).bind(function(t){return T(OA.getSlotNames(t),function(n){return OA.isShowing(t,n)})}):on.none()})}function JD(n,t,e){var o=n.element();!0===t?(gg.set(n,[function(n){return{dom:{tag:"div",attributes:{"aria-label":n.translate("Loading...")},classes:["tox-throbber__busy-spinner"]},components:[{dom:sp('<div class="tox-spinner"><div></div><div></div><div></div></div>')}],behaviours:ya([dg.config({mode:"special",onTab:function(){return on.some(!0)},onShiftTab:function(){return on.some(!0)}}),bg.config({})])}}(e)]),hi(o,"display"),Ir(o,"aria-hidden")):(gg.set(n,[]),li(o,"display","none"),_r(o,"aria-hidden","true"))}function $D(n){return"string"==typeof n?n.split(" "):n}function QD(e,o){var r=An(NA,o.menus),t=0<wn(o.menus).length,n=o.menubar===undefined||!0===o.menubar?$D("file edit view insert format tools table help"):$D(!1===o.menubar?"":o.menubar),i=C(n,function(n){return t&&o.menus.hasOwnProperty(n)&&o.menus[n].hasOwnProperty("items")||NA.hasOwnProperty(n)}),u=S(i,function(n){var t=r[n];return function(n,e,t){var o=function(n){return n.getParam("removed_menuitems","")}(t).split(/[ ,]/);return{text:n.title,getItems:function(){return D(n.items,function(n){var t=n.toLowerCase();return 0===t.trim().length?[]:x(o,function(n){return n===t})?[]:"separator"===t||"|"===t?[{type:"separator"}]:e.menuItems[t]?[e.menuItems[t]]:[]})}}}({title:t.title,items:$D(t.items)},o,e)});return C(u,function(n){return 0<n.getItems().length&&x(n.getItems(),function(n){return"separator"!==n.type})})}function ZD(n,t){var e,o=function(n){var t=n.settings,e=t.skin,o=t.skin_url;if(!1!==e){var r=e||"oxide";o=o?n.documentBaseURI.toAbsolute(o):Xb.baseURL+"/skins/ui/"+r}return o}(t);o&&(e=o+"/skin.min.css",t.contentCSS.push(o+(n?"/content.inline":"/content")+".min.css")),!1===function(n){return!1===n.getParam("skin")}(t)&&e?Vh.DOM.styleSheetLoader.load(e,HA(t)):HA(t)()}function nB(t,n,e,o){var r=n.outerContainer,i=e.toolbar,u=e.buttons;if(h(i,cn)){var a=i.map(function(n){return bD(t,{toolbar:n,buttons:u},{backstage:o},on.none())});VA.setToolbars(r,a)}else VA.setToolbar(r,bD(t,e,{backstage:o},on.none()))}function tB(n){return function(n){var t=Ib(n),e=Nb(n),o=Pb(n);return XA(t).map(function(n){return GA(n,e,o)})}(n).getOr(Ib(n))}function eB(n){var t=Rb(n),e=Vb(n),o=Hb(n);return XA(t).map(function(n){return GA(n,e,o)})}function oB(n,t){return function(){n.execCommand("mceToggleFormat",!1,t)}}function rB(n){!function(e){Ok.each([{name:"bold",text:"Bold",icon:"bold"},{name:"italic",text:"Italic",icon:"italic"},{name:"underline",text:"Underline",icon:"underline"},{name:"strikethrough",text:"Strikethrough",icon:"strike-through"},{name:"subscript",text:"Subscript",icon:"subscript"},{name:"superscript",text:"Superscript",icon:"superscript"}],function(n,t){e.ui.registry.addToggleButton(n.name,{tooltip:n.text,icon:n.icon,onSetup:hT(e,n.name),onAction:oB(e,n.name)})});for(var n=1;n<=6;n++){var t="h"+n;e.ui.registry.addToggleButton(t,{text:t.toUpperCase(),tooltip:"Heading "+n,onSetup:hT(e,t),onAction:oB(e,t)})}}(n),function(t){Ok.each([{name:"cut",text:"Cut",action:"Cut",icon:"cut"},{name:"copy",text:"Copy",action:"Copy",icon:"copy"},{name:"paste",text:"Paste",action:"Paste",icon:"paste"},{name:"help",text:"Help",action:"mceHelp",icon:"help"},{name:"selectall",text:"Select all",action:"SelectAll",icon:"select-all"},{name:"newdocument",text:"New document",action:"mceNewDocument",icon:"new-document"},{name:"removeformat",text:"Clear formatting",action:"RemoveFormat",icon:"remove-formatting"},{name:"remove",text:"Remove",action:"Delete",icon:"remove"}],function(n){t.ui.registry.addButton(n.name,{tooltip:n.text,icon:n.icon,onAction:function(){return t.execCommand(n.action)}})})}(n),function(t){Ok.each([{name:"blockquote",text:"Blockquote",action:"mceBlockQuote",icon:"quote"}],function(n){t.ui.registry.addToggleButton(n.name,{tooltip:n.text,icon:n.icon,onAction:function(){return t.execCommand(n.action)},onSetup:hT(t,n.name)})})}(n)}function iB(n,t,e){function o(){return!!t.undoManager&&t.undoManager[e]()}function r(){n.setDisabled(t.readonly||!o())}return n.setDisabled(!o()),t.on("Undo Redo AddUndo TypingUndo ClearUndos SwitchMode",r),function(){return t.off("Undo Redo AddUndo TypingUndo ClearUndos SwitchMode",r)}}function uB(n,t){return{anchor:"makeshift",x:n,y:t}}function aB(n){return"longpress"===n.type||0===n.type.indexOf("touch")}function cB(n,t){var e=Vh.DOM.getPos(n);return function(n,t,e){return uB(n.x+t,n.y+e)}(t,e.x,e.y)}function sB(n,t){return"contextmenu"===t.type?n.inline?function(n){if(aB(n)){var t=n.touches[0];return uB(t.pageX,t.pageY)}return uB(n.pageX,n.pageY)}(t):cB(n.getContentAreaContainer(),function(n){if(aB(n)){var t=n.touches[0];return uB(t.clientX,t.clientY)}return uB(n.clientX,n.clientY)}(t)):e_(n)}function fB(n){return{anchor:"node",node:on.some(Be.fromDom(n.selection.getNode())),root:Be.fromDom(n.getBody())}}function lB(n,t,e,o,r,i){var u=e(),a=function(n,t,e){return e?fB(n):sB(n,t)}(n,t,i);UC(u,Ih.CLOSE_ON_EXECUTE,o,!1).map(function(n){t.preventDefault(),Ug.showMenuAt(r,a,{menu:{markers:Sv("normal")},data:n})})}function dB(t,e,n,o,r,i){var u=function(n,t){var e=t?fB(n):e_(n);return N({bubble:Ta(0,12,r_),layouts:o_,overrides:{maxWidthFunction:LT(),maxHeightFunction:kf()}},e)}(t,i);UC(n,Ih.CLOSE_ON_EXECUTE,o,!0).map(function(n){e.preventDefault(),Ug.showMenuWithinBounds(r,u,{menu:{markers:Sv("normal")},data:n,type:"horizontal"},function(){return on.some(gT(t))}),t.fire(ZT)})}function mB(t,e,o,r,i,u){function n(){var n=o();dB(t,e,n,r,i,u)}var a=Ht(),c=a.os.isiOS(),s=a.os.isOSX(),f=a.os.isAndroid();if(!s&&!c||u)f&&!u&&t.selection.setCursorLocation(e.target,0),n();else{var l=function(){!function(n){function t(){Kg.setEditorTimeout(n,function(){n.selection.setRng(e)},10),i()}var e=n.selection.getRng();n.once("touchend",t);function o(n){n.preventDefault(),n.stopImmediatePropagation()}n.on("mousedown",o,!0);function r(){return i()}n.once("longpresscancel",r);var i=function(){n.off("touchend",t),n.off("longpresscancel",r),n.off("mousedown",o)}}(t),n()};!function(n,t){var e=n.selection;if(e.isCollapsed()||t.touches.length<1)return!1;var o=t.touches[0],r=e.getRng();return Wc(n.getWin(),Dc.domRange(r)).exists(function(n){return n.left()<=o.clientX&&n.right()>=o.clientX&&n.top()<=o.clientY&&n.bottom()>=o.clientY})}(t,e)?(t.once("selectionchange",l),t.once("touchend",function(){return t.off("selectionchange",l)})):l()}}function gB(n){return"string"==typeof n?n.split(/[ ,]/):n}function pB(n){return cn(n)?"|"===n:"separator"===n.type}function hB(n,t){if(0===t.length)return n;var e=F(n).filter(function(n){return!pB(n)}).fold(function(){return[]},function(n){return[c_]});return n.concat(e).concat(t).concat([c_])}function vB(i,n,t){function e(n){return Ug.hide(a)}function o(o){var n="longpress"===o.type;if(i_(i)&&o.preventDefault(),!function(n,t){return t.ctrlKey&&!i_(n)}(i,o)&&!a_(i)){var r=!n&&(2!==o.button||o.target===i.getBody());(u()?mB:lB)(i,o,function(){var n=r?i.selection.getStart(!0):o.target,t=i.ui.registry.getAll(),e=u_(i);return function(r,n,i){var t=O(n,function(n,t){if(Tn(r,t)){var e=r[t].update(i);if(cn(e))return hB(n,e.split(" "));if(0<e.length){var o=S(e,s_);return hB(n,o)}return n}return n.concat([t])},[]);return 0<t.length&&pB(t[t.length-1])&&t.pop(),t}(t.contextMenus,e,n)},t,a,r)}}var u=Ht().deviceType.isTouch,a=au(Ug.sketch({dom:{tag:"div"},lazySink:n,onEscape:function(){return i.focus()},onShow:function(){return t.setContextMenuState(!0)},onHide:function(){return t.setContextMenuState(!1)},fireDismissalEventInstead:{},inlineBehaviours:ya([Jd("dismissContextMenu",[rr(Po(),function(n,t){Lf.close(n),i.focus()})])])}));i.on("init",function(){var n="ResizeEditor ScrollContent ScrollWindow longpresscancel"+(u()?"":" ResizeWindow");i.on(n,e),i.on(u()?"longpress":"longpress contextmenu",o)})}function bB(n,t){n.getSystem().addToGui(t),function(n){br(n.element()).filter(Ai).each(function(t){gi(t,"z-index").each(function(n){_r(t,f_,n)}),li(t,"z-index",mi(n.element(),"z-index"))})}(t)}function yB(n){!function(n){br(n.element()).filter(Ai).each(function(n){var t=Mr(n,f_);Fr(n,f_)?li(n,"z-index",t):hi(n,"z-index"),Ir(n,f_)})}(n),n.getSystem().removeFromGui(n)}function xB(n,t,e){return n.getSystem().build(Gb.sketch({dom:{styles:{left:"0px",top:"0px",width:"100%",height:"100%",position:"fixed","z-index":"1000000000000000"},classes:[t]},events:e}))}function wB(n,t,e,o){return function(n,t){var e=n.element(),o=parseInt(Mr(e,t.leftAttr),10),r=parseInt(Mr(e,t.topAttr),10);return isNaN(o)||isNaN(r)?on.none():on.some(Ru(o,r))}(n,t).fold(function(){return e},function(n){return iA(n.left()+o.left(),n.top()+o.top())})}function SB(n,t,e,o,r,i){var u=wB(n,t,e,o),a=t.mustSnap?l_(n,t,u,r,i):d_(n,t,u,r,i),c=CD(u,r,i);return function(n,t,e){var o=n.element();_r(o,t.leftAttr,e.left()+"px"),_r(o,t.topAttr,e.top()+"px")}(n,t,c),a.fold(function(){return{coord:iA(c.left(),c.top()),extra:on.none()}},function(n){return{coord:n.output(),extra:n.extra()}})}function CB(n,t){!function(n,t){var e=n.element();Ir(e,t.leftAttr),Ir(e,t.topAttr)}(n,t)}function kB(n,e,o,r){return Au(n,function(n){var t=n.sensor();return function(n,t,e,o,r,i){var u=kD(n,r,i),a=kD(t,r,i);return Math.abs(u.left()-a.left())<=e&&Math.abs(u.top()-a.top())<=o}(e,t,n.range().left(),n.range().top(),o,r)?on.some({output:nn(ED(n.output(),e,o,r)),extra:n.extra}):on.none()})}function OB(t){return function(n,t,e,o){return n.isSome()&&t.isSome()&&e.isSome()?on.some(o(n.getOrDie(),t.getOrDie(),e.getOrDie())):on.none()}(gi(t,"left"),gi(t,"top"),gi(t,"position"),function(n,t,e){return("fixed"===e?iA:oA)(parseInt(n,10),parseInt(t,10))}).getOrThunk(function(){var n=mu(t);return rA(n.left(),n.top())})}function TB(e,n,o,r,i,u,t){return function(n,t,e,o,r){var i=r.bounds,u=kD(t,e,o),a=as(u.left(),i.x(),i.x()+i.width()-r.width),c=as(u.top(),i.y(),i.y()+i.height()-r.height),s=rA(a,c);return t.fold(function(){var n=OD(s,e,o);return oA(n.left(),n.top())},function(){return s},function(){var n=CD(s,e,o);return iA(n.left(),n.top())})}(0,n.fold(function(){var n=function(n,e,o){return n.fold(function(n,t){return eA.offset(n+e,t+o)},function(n,t){return eA.absolute(n+e,t+o)},function(n,t){return eA.fixed(n+e,t+o)})}(o,u.left(),u.top()),t=CD(n,r,i);return iA(t.left(),t.top())},function(t){var n=SB(e,t,o,u,r,i);return n.extra.each(function(n){t.onSensor(e,n)}),n.coord}),r,i,t)}function EB(n,t){return{bounds:n.getBounds(),height:lu(t.element()),width:pu(t.element())}}function DB(t,e,n,o,r){var i=n.update(o,r),u=n.getStartData().getOrThunk(function(){return EB(e,t)});i.each(function(n){!function(n,t,e,o){var r=t.getTarget(n.element());if(t.repositionTarget){var i=pr(n.element()),u=hu(i),a=yD(r),c=OB(r),s=TB(n,t.snaps,c,u,a,o,e),f=TD(s,0,a);di(r,f)}t.onDrag(n,r,o)}(t,e,u,n)})}function BB(t,n,e,o){n.each(yB),e.snaps.each(function(n){CB(t,n)});var r=e.getTarget(t.element());o.reset(),e.onDrop(t,r)}function AB(n,r,i,u,t,e){return n.fold(function(){return S_.snap({sensor:rA(i-20,u-20),range:Ru(t,e),output:rA(on.some(i),on.some(u)),extra:{td:r}})},function(n){var t=i-20,e=u-20,o=n.element().dom().getBoundingClientRect();return S_.snap({sensor:rA(t,e),range:Ru(40,40),output:rA(on.some(i-o.width/2),on.some(u-o.height/2)),extra:{td:r}})})}function _B(n,o,r){return{getSnapPoints:n,leftAttr:"data-drag-left",topAttr:"data-drag-top",onSensor:function(n,t){var e=t.td;!function(n,t){return n.exists(function(n){return jt(n,t)})}(o.get(),e)&&(o.set(on.some(e)),r(e))},mustSnap:!0}}function MB(n){return bm(Xg.sketch({dom:{tag:"div",classes:["tox-selector"]},buttonBehaviours:ya([S_.config({mode:C_.deviceType.isTouch()?"touch":"mouse",blockerClass:"blocker",snaps:n}),Ew.config({})]),eventOrder:{mousedown:["dragging","alloy.base.behaviour"],touchstart:["dragging","alloy.base.behaviour"]}}))}var FB,IB,RB,VB,NB,HB=[{title:"Left",icon:"align-left",format:"alignleft"},{title:"Center",icon:"align-center",format:"aligncenter"},{title:"Right",icon:"align-right",format:"alignright"},{title:"Justify",icon:"align-justify",format:"alignjustify"}],PB=["-apple-system","Segoe UI","Roboto","Helvetica Neue","sans-serif"],zB={"8pt":"1","10pt":"2","12pt":"3","14pt":"4","18pt":"5","24pt":"6","36pt":"7"},LB=[{name:"history",items:["undo","redo"]},{name:"styles",items:["styleselect"]},{name:"formatting",items:["bold","italic"]},{name:"alignment",items:["alignleft","aligncenter","alignright","alignjustify"]},{name:"indentation",items:["outdent","indent"]},{name:"permanent pen",items:["permanentpen"]},{name:"comments",items:["addcomment"]}],jB={button:pD(eT,function(n,t){return function(n,t){return JE(n,t,[])}(n,t.backstage.shared.providers)}),togglebutton:pD(rT,function(n,t){return function(n,t){return $E(n,t,[])}(n,t.backstage.shared.providers)}),menubutton:pD(oT,function(n,t){return GC(n,"tox-tbtn",t.backstage,on.none())}),splitbutton:pD(function(n){return tt("SplitButton",TE,n)},function(n,t){return fT(n,t.backstage.shared)}),styleSelectButton:function(n,t){return function(n,t){var e=N({type:"advanced"},t.styleselect);return yT(n,t,gD(n,e))}(n,t.backstage)},fontsizeSelectButton:function(n,t){return function(n,t){return yT(n,t,fD(n))}(n,t.backstage)},fontSelectButton:function(n,t){return function(n,t){return yT(n,t,cD(n))}(n,t.backstage)},formatButton:function(n,t){return function(n,t){return yT(n,t,mD(n))}(n,t.backstage)},alignMenuButton:function(n,t){return function(n,t){return yT(n,t,uD(n))}(n,t.backstage)}},UB={styleselect:jB.styleSelectButton,fontsizeselect:jB.fontsizeSelectButton,fontselect:jB.fontSelectButton,formatselect:jB.formatButton,align:jB.alignMenuButton},WB={valignCentre:[],alignCentre:[],alignLeft:["tox-pop--align-left"],alignRight:["tox-pop--align-right"],right:["tox-pop--right"],left:["tox-pop--left"],bottom:["tox-pop--bottom"],top:["tox-pop--top"]},GB={maxHeightFunction:kf(),maxWidthFunction:LT()},XB={onLtr:function(){return[rc,ic,sa,aa,fa,ca,Wg,Gg,hm,gm,vm,pm]},onRtl:function(){return[rc,ic,fa,ca,sa,aa,Wg,Gg,vm,pm,hm,gm]}},YB={onLtr:function(){return[ic,aa,ca,sa,fa,rc,Wg,Gg,hm,gm,vm,pm]},onRtl:function(){return[ic,ca,aa,fa,sa,rc,Wg,Gg,vm,pm,hm,gm]}},qB=function(u,n,e,a){function c(){return gT(u)}function s(){if(l()&&a.backstage.isContextMenuOpen())return!0;var n=function(){var n=g.get().map(function(n){return n.getBoundingClientRect()}).getOrThunk(function(){return u.selection.getRng().getBoundingClientRect()}),t=u.inline?hu().top():Su(Be.fromDom(u.getBody())).y();return{y:n.top+t,bottom:n.bottom+t}}(),t=c();return!function(n,t,e,o){return Math.max(n,e)<=Math.min(t,o)}(n.y,n.bottom,t.y(),t.bottom())}function t(){Ug.hide(d)}function o(){m.get().each(function(n){var t=d.element();hi(t,"display"),s()?li(t,"display","none"):_f.positionWithinBounds(e,n,d,on.some(c()))})}function f(n){return{dom:{tag:"div",classes:["tox-pop__dialog"]},components:[n],behaviours:ya([dg.config({mode:"acyclic"}),Jd("pop-dialog-wrap-events",[Ri(function(n){u.shortcuts.add("ctrl+F9","focus statusbar",function(){return dg.focusIn(n)})}),Vi(function(n){u.shortcuts.remove("ctrl+F9")})])])}}var l=Ht().deviceType.isTouch,d=au(function(n){var e=Ee([]);return Ug.sketch({dom:{tag:"div",classes:["tox-pop"]},fireDismissalEventInstead:{event:"doNotDismissYet"},onShow:function(n){e.set([]),Ug.getContent(n).each(function(n){hi(n.element(),"visibility")}),ri(n.element(),rD),hi(n.element(),"width")},inlineBehaviours:ya([Jd("context-toolbar-events",[fr(yo(),function(n,t){Ug.getContent(n).each(function(n){}),ri(n.element(),rD),hi(n.element(),"width")}),rr(oD,function(t,e){hi(t.element(),"width");var n=gu(t.element());Ug.setContent(t,e.event().contents()),ei(t.element(),rD);var o=gu(t.element());li(t.element(),"width",n+"px"),Ug.getContent(t).each(function(n){e.event().focus().bind(function(n){return Sa(n),ka(t.element())}).orThunk(function(){return dg.focusIn(n),Ca()})}),Kg.setTimeout(function(){li(t.element(),"width",o+"px")},0)}),rr(tD,function(n,t){Ug.getContent(n).each(function(n){e.set(e.get().concat([{bar:n,focus:Ca()}]))}),qt(n,oD,{contents:t.event().forwardContents(),focus:on.none()})}),rr(eD,function(t,n){F(e.get()).each(function(n){e.set(e.get().slice(0,e.get().length-1)),qt(t,oD,{contents:cu(n.bar),focus:n.focus})})})]),dg.config({mode:"special",onEscape:function(t){return F(e.get()).fold(function(){return n.onEscape()},function(n){return Yt(t,eD),on.some(!0)})}})]),lazySink:function(){return an.value(n.sink)}})}({sink:e,onEscape:function(){return u.focus(),on.some(!0)}})),m=Ee(on.none()),g=Ee(on.none()),r=Ee(null),p=L(function(){return nD(n,function(n){var t=h(n);qt(d,tD,{forwardContents:f(t)})})}),h=function(n){var t,e,o=u.ui.registry.getAll().buttons,r=qb(u)===Ub.scrolling?Ub.scrolling:Ub["default"],i=p();return"contexttoolbar"===n.type?(t=An(o,i.formNavigators),e=bD(u,{buttons:t,toolbar:n.items},a,on.some(["form:"])),tT({type:r,uid:Hr("context-toolbar"),initGroups:e,onEscape:on.none,cyclicKeying:!0,backstage:a.backstage,getSink:function(){return an.error("")}})):QE(r,n,a.backstage)};u.on("contexttoolbar-show",function(t){var n=p();Nn(n.lookupTable,t.toolbarKey).each(function(n){y(n,t.target===u?on.none():on.some(t)),Ug.getContent(d).each(dg.focusIn)})});function v(n,t){var e="node"===n?a.backstage.shared.anchors.node(t):a.backstage.shared.anchors.cursor();return Bn(e,function(n,t){return"line"===n?{bubble:Ta(12,0,WB),layouts:{onLtr:function(){return[la]},onRtl:function(){return[da]}},overrides:GB}:{bubble:Ta(0,12,WB),layouts:t?YB:XB,overrides:GB}}(n,l()))}function i(){var n=p();ZE(n,u).fold(function(){m.set(on.none()),Ug.hide(d)},function(n){y(n.toolbarApi,on.some(n.elem.dom()))})}function b(n){x(),r.set(n)}var y=function(n,t){if(x(),!l()||!a.backstage.isContextMenuOpen()){var e=h(n),o=t.map(Be.fromDom),r=v(n.position,o);m.set(on.some(r)),g.set(t);var i=d.element();hi(i,"display"),Ug.showWithinBounds(d,r,f(e),function(){return on.some(c())}),s()&&li(i,"display","none")}},x=function(){var n=r.get();null!==n&&(Kg.clearTimeout(n),r.set(null))};u.on("init",function(){u.on(ZT,t),u.on("ScrollContent ScrollWindow longpress",o),u.on("click keyup SetContent ObjectResized ResizeEditor",function(n){b(Kg.setEditorTimeout(u,i,0))}),u.on("focusout",function(n){Kg.setEditorTimeout(u,function(){ka(e.element()).isNone()&&ka(d.element()).isNone()&&(m.set(on.none()),Ug.hide(d))},0)}),u.on("SwitchMode",function(){u.readonly&&(m.set(on.none()),Ug.hide(d))}),u.on("NodeChange",function(n){ka(d.element()).fold(function(){b(Kg.setEditorTimeout(u,i,0))},function(n){})})})},KB=function(n,o,r){function t(t,e){bn([o,r],function(n){n.broadcastEvent(t,e)})}function e(t,e){bn([o,r],function(n){n.broadcastOn([t],e)})}function i(n){return e(jf(),{target:n.target()})}function u(n){return e(jf(),{target:Be.fromDom(n.target)})}function a(n){0===n.button&&e(Wf(),{target:Be.fromDom(n.target)})}function c(n){return t(Ro(),hb(n))}function s(n){e(Uf(),{}),t(Vo(),hb(n))}function f(){return e(Uf(),{})}var l=fb(Be.fromDom(v.document),"touchstart",i),d=fb(Be.fromDom(v.document),"touchmove",function(n){return t(Fo(),n)}),m=fb(Be.fromDom(v.document),"touchend",function(n){return t(Io(),n)}),g=fb(Be.fromDom(v.document),"mousedown",i),p=fb(Be.fromDom(v.document),"mouseup",function(n){0===n.raw().button&&e(Wf(),{target:n.target()})});n.on("PostRender",function(){n.on("click",u),n.on("tap",u),n.on("mouseup",a),n.on("ScrollWindow",c),n.on("ResizeWindow",s),n.on("ResizeEditor",f)}),n.on("remove",function(){n.off("click",u),n.off("tap",u),n.off("mouseup",a),n.off("ScrollWindow",c),n.off("ResizeWindow",s),n.off("ResizeEditor",f),g.unbind(),l.unbind(),d.unbind(),m.unbind(),p.unbind()}),n.on("detach",function(){Ss(o),Ss(r),o.destroy(),r.destroy()})},JB=Dl,$B=Tl,QB=nn([St("shell",!1),ct("makeItem"),St("setupItem",Z),tl("listBehaviours",[gg])]),ZB=Cl({name:"items",overrides:function(n){return{behaviours:ya([gg.config({})])}}}),nA=nn([ZB]),tA=_l({name:nn("CustomList")(),configFields:QB(),partFields:nA(),factory:function(s,n,t,e){var o=s.shell?{behaviours:[gg.config({})],components:[]}:{behaviours:[],components:n},r=function(n){return s.shell?on.some(n):Ks(n,s,"items")};return{uid:s.uid,dom:s.dom,components:o.components,behaviours:Vs(s.listBehaviours,o.behaviours),apis:{setItems:function(a,c){r(a).fold(function(){throw v.console.error("Custom List was defined to not be a shell, but no item container was specified in components"),new Error("Custom List was defined to not be a shell, but no item container was specified in components")},function(t){var n=gg.contents(t),e=c.length,o=e-n.length,r=0<o?function(n,t){for(var e=[],o=0;o<n;o++)e.push(t(o));return e}(o,function(){return s.makeItem()}):[],i=n.slice(e);bn(i,function(n){return gg.remove(t,n)}),bn(r,function(n){return gg.append(t,n)});var u=gg.contents(t);bn(u,function(n,t){s.setupItem(a,n,c[t],t)})})}}}},apis:{setItems:function(n,t,e){n.setItems(t,e)}}}),eA=En([{offset:["x","y"]},{absolute:["x","y"]},{fixed:["x","y"]}]),oA=eA.offset,rA=eA.absolute,iA=eA.fixed,uA=En([{"static":[]},{absolute:["x","y"]},{fixed:["x","y"]}]),aA=function(n,t,e){n.getSystem().isConnected()&&function(e,o,r){var i=o.lazyViewport(e),n=e.element(),t=pr(n),u=hu(t),a=L(function(){return yD(n)}),c=r.isDocked();c&&HD(e,o,r,i),RD(e,o,i,u,a).each(function(n){r.setDocked(!c),n.fold(function(){return VD(e,o)},function(n,t){return ND(e,o,0,a(),rA(n,t))},function(n,t){HD(e,o,r,i,!0),ND(e,o,0,a(),iA(n,t))})})}(n,t,e)},cA=/* */Object.freeze({refresh:aA,reset:zD,isDocked:function(n,t,e){return e.isDocked()}}),sA=/* */Object.freeze({events:function(o,r){return tr([fr(yo(),function(t,e){o.contextual.each(function(n){ii(t.element(),n.transitionClass)&&(ai(t.element(),[n.transitionClass,n.fadeInClass]),(r.isVisible()?n.onShown:n.onHidden)(t));e.stop()})}),rr(Ro(),function(n,t){aA(n,o,r)}),rr(Vo(),function(n,t){zD(n,o,r)})])}}),fA=[wt("contextual",[ft("fadeInClass"),ft("fadeOutClass"),ft("transitionClass"),dt("lazyContext"),Ku("onShow"),Ku("onShown"),Ku("onHide"),Ku("onHidden")]),Dt("lazyViewport",Cu),ft("leftAttr"),ft("topAttr"),ft("positionAttr"),(FB="modes",IB=["top","bottom"],RB=Se,Ct(FB,IB,Kn(RB))),Ku("onDocked"),Ku("onUndocked")],lA=xa({fields:fA,name:"docking",active:sA,apis:cA,state:/* */Object.freeze({init:function(){var t=Ee(!1),e=Ee(!0);return tu({isDocked:function(){return t.get()},setDocked:function(n){return t.set(n)},isVisible:function(){return e.get()},setVisible:function(n){return e.set(n)},readState:function(){return"docked:  "+t.get()+", visible: "+e.get()}})}})}),dA={fadeInClass:"tox-editor-dock-fadein",fadeOutClass:"tox-editor-dock-fadeout",transitionClass:"tox-editor-dock-transition"},mA="tox-tinymce--toolbar-sticky-on",gA="tox-tinymce--toolbar-sticky-off",pA=/* */Object.freeze({setup:function(n,t){n.inline||(n.on("ResizeWindow ResizeEditor ResizeContent",function(){t().each(LD)}),n.on("SkinLoaded",function(){t().each(lA.reset)}),n.on("FullscreenStateChanged",function(){t().each(lA.refresh)})),n.on("PostRender",function(){UD(n,!1)})},isDocked:function(n){return n().map(lA.isDocked).getOr(!1)},getBehaviours:WD}),hA=Z,vA=u,bA=nn([]),yA=/* */Object.freeze({setup:hA,isDocked:vA,getBehaviours:bA}),xA=Al({factory:function(t,o){var n={focus:dg.focusIn,setMenus:function(n,t){var e=S(t,function(t){var n={type:"menubutton",text:t.text,fetch:function(n){n(t.getItems())}},e=oT(n).mapError(function(n){return ye(n)}).getOrDie();return GC(e,"tox-mbtn",o.backstage,on.some("menuitem"))});gg.set(n,e)}};return{uid:t.uid,dom:t.dom,components:[],behaviours:ya([gg.config({}),Jd("menubar-events",[Ri(function(n){t.onSetup(n)}),rr(fo(),function(e,n){Ou(e.element(),".tox-mbtn--active").each(function(t){Tu(n.event().target(),".tox-mbtn").each(function(n){jt(t,n)||e.getSystem().getByDom(t).each(function(t){e.getSystem().getByDom(n).each(function(n){Tw.expand(n),Tw.close(t),bg.focus(n)})})})})}),rr(Lo(),function(e,n){n.event().prevFocus().bind(function(n){return e.getSystem().getByDom(n).toOption()}).each(function(t){n.event().newFocus().bind(function(n){return e.getSystem().getByDom(n).toOption()}).each(function(n){Tw.isOpen(t)&&(Tw.expand(n),Tw.close(t))})})})]),dg.config({mode:"flow",selector:".tox-mbtn",onEscape:function(n){return t.onEscape(n),on.some(!0)}}),Xy.config({})]),apis:n,domModification:{attributes:{role:"menubar"}}}},name:"silver.Menubar",configFields:[ct("dom"),ct("uid"),ct("onEscape"),ct("backstage"),St("onSetup",Z)],apis:{focus:function(n,t){n.focus(t)},setMenus:function(n,t,e){n.setMenus(t,e)}}}),wA="container",SA=[Is("slotBehaviours",[])],CA=function(r,n,t){function e(n){return Zs(r)}function o(e,o){return void 0===o&&(o=undefined),function(n,t){return Ks(n,r,t).map(function(n){return e(n,t)}).getOr(o)}}function i(n,t){return"true"!==Mr(n.element(),"aria-hidden")}var u,a=o(i,!1),c=o(function(n,t){if(i(n)){var e=n.element();li(e,"display","none"),_r(e,"aria-hidden","true"),qt(n,jo(),{name:t,visible:!1})}}),s=(u=c,function(t,n){bn(n,function(n){return u(t,n)})}),f=o(function(n,t){if(!i(n)){var e=n.element();hi(e,"display"),Ir(e,"aria-hidden"),qt(n,jo(),{name:t,visible:!0})}}),l={getSlotNames:e,getSlot:function(n,t){return Ks(n,r,t)},isShowing:a,hideSlot:c,hideAllSlots:function(n){return s(n,e())},showSlot:f};return{uid:r.uid,dom:r.dom,components:n,behaviours:Rs(r.slotBehaviours),apis:l}},kA=P({getSlotNames:function(n,t){return n.getSlotNames(t)},getSlot:function(n,t,e){return n.getSlot(t,e)},isShowing:function(n,t,e){return n.isShowing(t,e)},hideSlot:function(n,t,e){return n.hideSlot(t,e)},hideAllSlots:function(n,t){return n.hideAllSlots(t)},showSlot:function(n,t,e){return n.showSlot(t,e)}},Ur),OA=N(N({},kA),{sketch:function(n){var e,t=(e=[],{slot:function(n,t){return e.push(n),Ws(wA,GD(n),t)},record:function(){return e}}),o=n(t),r=t.record(),i=S(r,function(n){return wl({name:n,pname:GD(n)})});return rf(wA,SA,i,CA,o)}}),TA=de([yt("icon"),yt("tooltip"),Dt("onShow",Z),Dt("onHide",Z),Dt("onSetup",function(){return Z})]),EA=Hr("FixSizeEvent"),DA=Hr("AutoSizeEvent"),BA=$B.optional({factory:xA,name:"menubar",schema:[ct("backstage")]}),AA=$B.optional({factory:{sketch:function(n){return tA.sketch({uid:n.uid,dom:n.dom,listBehaviours:ya([dg.config({mode:"acyclic",selector:".tox-toolbar"})]),makeItem:function(){return tT({type:n.split,uid:Hr("multiple-toolbar-item"),backstage:n.backstage,cyclicKeying:!1,getSink:n.getSink,initGroups:[],onEscape:function(){return on.none()}})},setupItem:function(n,t,e,o){eE.setGroups(t,e)},shell:!0})}},name:"multiple-toolbar",schema:[ct("dom"),ct("onEscape")]}),_A=$B.optional({factory:{sketch:function(n){return function(n){return n.split===Ub.sliding?nT:n.split===Ub.floating?ZO:tT}(n)({type:n.split,uid:n.uid,onEscape:function(){return n.onEscape(),on.some(!0)},cyclicKeying:!1,initGroups:[],getSink:n.getSink,backstage:n.backstage,moreDrawerData:{lazyToolbar:n.lazyToolbar,lazyMoreButton:n.lazyMoreButton,lazyHeader:n.lazyHeader}})}},name:"toolbar",schema:[ct("dom"),ct("onEscape"),ct("getSink")]}),MA=$B.optional({factory:{sketch:function(n){var t=n.editor,e=n.sticky?WD:bA;return{uid:n.uid,dom:n.dom,components:n.components,behaviours:ya(e(t,n.getSink))}}},name:"header",schema:[ct("dom")]}),FA=$B.optional({name:"socket",schema:[ct("dom")]}),IA=$B.optional({factory:{sketch:function(n){return{uid:n.uid,dom:{tag:"div",classes:["tox-sidebar"],attributes:{role:"complementary"}},components:[{dom:{tag:"div",classes:["tox-sidebar__slider"]},components:[],behaviours:ya([Xy.config({}),bg.config({}),gE.config({dimension:{property:"width"},closedClass:"tox-sidebar--sliding-closed",openClass:"tox-sidebar--sliding-open",shrinkingClass:"tox-sidebar--sliding-shrinking",growingClass:"tox-sidebar--sliding-growing",onShrunk:function(n){nd.getCurrent(n).each(OA.hideAllSlots),Yt(n,DA)},onGrown:function(n){Yt(n,DA)},onStartGrow:function(n){qt(n,EA,{width:gi(n.element(),"width").getOr("")})},onStartShrink:function(n){qt(n,EA,{width:gu(n.element())+"px"})}}),gg.config({}),nd.config({find:function(n){var t=gg.contents(n);return yn(t)}})])}],behaviours:ya([DS(0),Jd("sidebar-sliding-events",[rr(EA,function(n,t){li(n.element(),"width",t.event().width())}),rr(DA,function(n,t){hi(n.element(),"width")})])])}}},name:"sidebar",schema:[ct("dom")]}),RA=$B.optional({factory:{sketch:function(n){return{uid:n.uid,dom:{tag:"div",attributes:{"aria-hidden":"true"},classes:["tox-throbber"],styles:{display:"none"}},behaviours:ya([gg.config({})]),components:[]}}},name:"throbber",schema:[ct("dom")]}),VA=_l({name:"OuterContainer",factory:function(e,n,t){var o={getSocket:function(n){return JB.getPart(n,e,"socket")},setSidebar:function(n,t){JB.getPart(n,e,"sidebar").each(function(n){return qD(n,t)})},toggleSidebar:function(n,t){JB.getPart(n,e,"sidebar").each(function(n){return function(n,e){nd.getCurrent(n).each(function(t){nd.getCurrent(t).each(function(n){gE.hasGrown(t)?OA.isShowing(n,e)?gE.shrink(t):(OA.hideAllSlots(n),OA.showSlot(n,e)):(OA.hideAllSlots(n),OA.showSlot(n,e),gE.grow(t))})})}(n,t)})},whichSidebar:function(n){return JB.getPart(n,e,"sidebar").bind(KD).getOrNull()},getHeader:function(n){return JB.getPart(n,e,"header")},getToolbar:function(n){return JB.getPart(n,e,"toolbar")},setToolbar:function(n,t){JB.getPart(n,e,"toolbar").each(function(n){n.getApis().setGroups(n,t)})},setToolbars:function(n,t){JB.getPart(n,e,"multiple-toolbar").each(function(n){tA.setItems(n,t)})},refreshToolbar:function(n){JB.getPart(n,e,"toolbar").each(function(n){return n.getApis().refresh(n)})},getMoreButton:function(n){return JB.getPart(n,e,"toolbar").bind(function(n){return n.getApis().getMoreButton(n)})},getThrobber:function(n){return JB.getPart(n,e,"throbber")},focusToolbar:function(n){JB.getPart(n,e,"toolbar").orThunk(function(){return JB.getPart(n,e,"multiple-toolbar")}).each(function(n){dg.focusIn(n)})},setMenubar:function(n,t){JB.getPart(n,e,"menubar").each(function(n){xA.setMenus(n,t)})},focusMenubar:function(n){JB.getPart(n,e,"menubar").each(function(n){xA.focus(n)})}};return{uid:e.uid,dom:e.dom,components:n,apis:o,behaviours:e.behaviours}},configFields:[ct("dom"),ct("behaviours")],partFields:[MA,BA,_A,AA,FA,IA,RA],apis:{getSocket:function(n,t){return n.getSocket(t)},setSidebar:function(n,t,e){n.setSidebar(t,e)},toggleSidebar:function(n,t,e){n.toggleSidebar(t,e)},whichSidebar:function(n,t){return n.whichSidebar(t)},getHeader:function(n,t){return n.getHeader(t)},getToolbar:function(n,t){return n.getToolbar(t)},setToolbar:function(n,t,e){var o=S(e,function(n){return JO(n)});n.setToolbar(t,o)},setToolbars:function(n,t,e){var o=S(e,function(n){return S(n,JO)});n.setToolbars(t,o)},getMoreButton:function(n,t){return n.getMoreButton(t)},refreshToolbar:function(n,t){return n.refreshToolbar(t)},getThrobber:function(n,t){return n.getThrobber(t)},setMenubar:function(n,t,e){n.setMenubar(t,e)},focusMenubar:function(n,t){n.focusMenubar(t)},focusToolbar:function(n,t){n.focusToolbar(t)}}}),NA={file:{title:"File",items:"newdocument restoredraft | preview | print | deleteallconversations"},edit:{title:"Edit",items:"undo redo | cut copy paste pastetext | selectall | searchreplace"},view:{title:"View",items:"code | visualaid visualchars visualblocks | spellchecker | preview fullscreen | showcomments"},insert:{title:"Insert",items:"image link media addcomment pageembed template codesample inserttable | charmap emoticons hr | pagebreak nonbreaking anchor toc | insertdatetime"},format:{title:"Format",items:"bold italic underline strikethrough superscript subscript codeformat | formats blockformats fontformats fontsizes align | forecolor backcolor | removeformat"},tools:{title:"Tools",items:"spellchecker spellcheckerlanguage | a11ycheck code wordcount"},table:{title:"Table",items:"inserttable | cell row column | advtablesort | tableprops deletetable"},help:{title:"Help",items:"help"}},HA=function(n){function t(){n._skinLoaded=!0,Hv(n)}return function(){n.initialized?t():n.on("init",t)}},PA=d(ZD,!1),zA=d(ZD,!0),LA=Vh.DOM,jA=Ht(),UA=jA.os.isiOS()&&jA.os.version.major<=12,WA={render:function(e,o,n,t,r){var i=Ee(0);PA(e),function(n,t){Rf(n,t,Cr)}(Be.fromDom(r.targetNode),o.mothership),ws(Mi(),o.uiMothership),e.on("PostRender",function(){nB(e,o,n,t),i.set(e.getWin().innerWidth),VA.setMenubar(o.outerContainer,QD(e,n)),VA.setSidebar(o.outerContainer,n.sidebar),function(r){function n(n){var t=r.getDoc().documentElement,e=u.get(),o=a.get();e.left()!==i.innerWidth||e.top()!==i.innerHeight?(u.set(Ru(i.innerWidth,i.innerHeight)),Lv(r,n)):o.left()===t.offsetWidth&&o.top()===t.offsetHeight||(a.set(Ru(t.offsetWidth,t.offsetHeight)),Lv(r,n))}function t(n){return zv(r,n)}var i=r.getWin(),e=r.getDoc().documentElement,u=Ee(Ru(i.innerWidth,i.innerHeight)),a=Ee(Ru(e.offsetWidth,e.offsetHeight));LA.bind(i,"resize",n),LA.bind(i,"scroll",t);var o=lb(Be.fromDom(r.getBody()),"load",n);r.on("remove",function(){o.unbind(),LA.unbind(i,"resize",n),LA.unbind(i,"scroll",t)})}(e)});var u=VA.getSocket(o.outerContainer).getOrDie("Could not find expected socket element");if(!0===UA){di(u.element(),{overflow:"scroll","-webkit-overflow-scrolling":"touch"});var a=function(e,o){var r=null;return{cancel:function(){null!==r&&(v.clearTimeout(r),r=null)},throttle:function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];null===r&&(r=v.setTimeout(function(){e.apply(null,n),r=null},o))}}}(function(){e.fire("ScrollContent")},20);fb(u.element(),"scroll",a.throttle)}YO(e,o),e.addCommand("ToggleSidebar",function(n,t){VA.toggleSidebar(o.outerContainer,t),e.fire("ToggleSidebar")}),e.addQueryValueHandler("ToggleSidebar",function(){return VA.whichSidebar(o.outerContainer)});var c=qb(e);return c!==Ub.sliding&&c!==Ub.floating||e.on("ResizeWindow ResizeEditor ResizeContent",function(){var n=e.getWin().innerWidth;n!==i.get()&&(VA.refreshToolbar(o.outerContainer),i.set(n))}),{iframeContainer:u.element().dom(),editorContainer:o.outerContainer.element().dom()}}},GA=function(t,n,e){var o=n.filter(function(n){return t<n}),r=e.filter(function(n){return n<t});return o.or(r).getOr(t)},XA=function(n){return/^[0-9\.]+(|px)$/i.test(""+n)?on.some(parseInt(""+n,10)):on.none()},YA=function(n){return mn(n)?n+"px":n},qA={render:function(t,i,e,o,n){var u,r=Vh.DOM,a=Jb(t),c=Qb(t),s=Be.fromDom(n.targetNode),f=Hb(t).or(eB(t)),l=qb(t),d=l===Ub.sliding||l===Ub.floating;zA(t);function m(n){void 0===n&&(n=!1),d&&VA.refreshToolbar(i.outerContainer),a||function(n){var t=d?n.fold(function(){return 0},function(n){return 1<n.components().length?fu(n.components()[1].element()):0}):0,e=mu(s),o=e.top()-fu(u.element())+t;di(i.outerContainer.element(),{position:"absolute",top:Math.round(o)+"px",left:Math.round(e.left())+"px"});var r=f.getOrThunk(function(){var n=XA(mi(Mi(),"margin-left")).getOr(0);return gu(Mi())-e.left()+n});li(u.element(),"max-width",r+"px")}(VA.getToolbar(i.outerContainer)),c&&(n?lA.reset(u):lA.refresh(u))}function g(){li(i.outerContainer.element(),"display","flex"),r.addClass(t.getBody(),"mce-edit-focus"),hi(i.uiMothership.element(),"display"),m()}function p(){i.outerContainer&&(li(i.outerContainer.element(),"display","none"),r.removeClass(t.getBody(),"mce-edit-focus")),li(i.uiMothership.element(),"display","none")}function h(){if(u)g();else{u=VA.getHeader(i.outerContainer).getOrDie();var n=function(n){return Kb(n).getOr(Mi())}(t);ws(n,i.mothership),ws(n,i.uiMothership),nB(t,i,e,o),VA.setMenubar(i.outerContainer,QD(t,e)),g(),t.on("activate",g),t.on("deactivate",p),t.on("NodeChange SkinLoaded ResizeWindow",function(){t.hidden||m(!0)}),t.nodeChanged()}}return t.on("focus",h),t.on("blur hide",p),t.on("init",function(){t.hasFocus()&&h()}),YO(t,i),{editorContainer:i.outerContainer.element().dom()}}},KA=function(t){Ok.each([{name:"alignleft",text:"Align left",cmd:"JustifyLeft",icon:"align-left"},{name:"aligncenter",text:"Align center",cmd:"JustifyCenter",icon:"align-center"},{name:"alignright",text:"Align right",cmd:"JustifyRight",icon:"align-right"},{name:"alignjustify",text:"Justify",cmd:"JustifyFull",icon:"align-justify"}],function(n){t.ui.registry.addToggleButton(n.name,{tooltip:n.text,onAction:function(){return t.execCommand(n.cmd)},icon:n.icon,onSetup:hT(t,n.name)})});var n="alignnone",e="No alignment",o="JustifyNone",r="align-none";t.ui.registry.addButton(n,{tooltip:e,onAction:function(){return t.execCommand(o)},icon:r})},JA=function(n){rB(n),function(t){Ok.each([{name:"bold",text:"Bold",action:"Bold",icon:"bold",shortcut:"Meta+B"},{name:"italic",text:"Italic",action:"Italic",icon:"italic",shortcut:"Meta+I"},{name:"underline",text:"Underline",action:"Underline",icon:"underline",shortcut:"Meta+U"},{name:"strikethrough",text:"Strikethrough",action:"Strikethrough",icon:"strike-through",shortcut:""},{name:"subscript",text:"Subscript",action:"Subscript",icon:"subscript",shortcut:""},{name:"superscript",text:"Superscript",action:"Superscript",icon:"superscript",shortcut:""},{name:"removeformat",text:"Clear formatting",action:"RemoveFormat",icon:"remove-formatting",shortcut:""},{name:"newdocument",text:"New document",action:"mceNewDocument",icon:"new-document",shortcut:""},{name:"cut",text:"Cut",action:"Cut",icon:"cut",shortcut:"Meta+X"},{name:"copy",text:"Copy",action:"Copy",icon:"copy",shortcut:"Meta+C"},{name:"paste",text:"Paste",action:"Paste",icon:"paste",shortcut:"Meta+V"},{name:"selectall",text:"Select all",action:"SelectAll",icon:"select-all",shortcut:"Meta+A"}],function(n){t.ui.registry.addMenuItem(n.name,{text:n.text,icon:n.icon,shortcut:n.shortcut,onAction:function(){return t.execCommand(n.action)}})}),t.ui.registry.addMenuItem("codeformat",{text:"Code",icon:"sourcecode",onAction:oB(t,"code")})}(n)},$A=function(n){!function(t){t.ui.registry.addMenuItem("undo",{text:"Undo",icon:"undo",shortcut:"Meta+Z",onSetup:function(n){return iB(n,t,"hasUndo")},onAction:function(){return t.execCommand("undo")}}),t.ui.registry.addMenuItem("redo",{text:"Redo",icon:"redo",shortcut:"Meta+Y",onSetup:function(n){return iB(n,t,"hasRedo")},onAction:function(){return t.execCommand("redo")}})}(n),function(t){t.ui.registry.addButton("undo",{tooltip:"Undo",icon:"undo",onSetup:function(n){return iB(n,t,"hasUndo")},onAction:function(){return t.execCommand("undo")}}),t.ui.registry.addButton("redo",{tooltip:"Redo",icon:"redo",onSetup:function(n){return iB(n,t,"hasRedo")},onAction:function(){return t.execCommand("redo")}})}(n)},QA=function(n){!function(n){n.ui.registry.addButton("visualaid",{tooltip:"Visual aids",text:"Visual aids",onAction:function(){return n.execCommand("mceToggleVisualAid")}})}(n),function(t){t.ui.registry.addToggleMenuItem("visualaid",{text:"Visual aids",onSetup:function(n){return function(t,n){t.setActive(n.hasVisual);function e(n){t.setActive(n.hasVisual)}return n.on("VisualAid",e),function(){return n.off("VisualAid",e)}}(n,t)},onAction:function(){t.execCommand("mceToggleVisualAid")}})}(n)},ZA=function(n){!function(t){t.ui.registry.addButton("outdent",{tooltip:"Decrease indent",icon:"outdent",onSetup:function(n){return function(n,t){n.setDisabled(!t.queryCommandState("outdent"));function e(){n.setDisabled(!t.queryCommandState("outdent"))}return t.on("NodeChange",e),function(){return t.off("NodeChange",e)}}(n,t)},onAction:function(){return t.execCommand("outdent")}}),t.ui.registry.addButton("indent",{tooltip:"Increase indent",icon:"indent",onAction:function(){return t.execCommand("indent")}})}(n)},n_=function(n,t){!function(n,t){var e=bT(0,t,uD(n));n.ui.registry.addNestedMenuItem("align",{text:t.shared.providers.translate("Align"),getSubmenuItems:function(){return e.items.validateItems(e.getStyleItems())}})}(n,t),function(n,t){var e=bT(0,t,cD(n));n.ui.registry.addNestedMenuItem("fontformats",{text:t.shared.providers.translate("Fonts"),getSubmenuItems:function(){return e.items.validateItems(e.getStyleItems())}})}(n,t),function(n,t){var e=N({type:"advanced"},t.styleselect),o=bT(0,t,gD(n,e));n.ui.registry.addNestedMenuItem("formats",{text:"Formats",getSubmenuItems:function(){return o.items.validateItems(o.getStyleItems())}})}(n,t),function(n,t){var e=bT(0,t,mD(n));n.ui.registry.addNestedMenuItem("blockformats",{text:"Blocks",getSubmenuItems:function(){return e.items.validateItems(e.getStyleItems())}})}(n,t),function(n,t){var e=bT(0,t,fD(n));n.ui.registry.addNestedMenuItem("fontsizes",{text:"Font sizes",getSubmenuItems:function(){return e.items.validateItems(e.getStyleItems())}})}(n,t)},t_=function(n,t){KA(n),JA(n),n_(n,t),$A(n),Wv.register(n),QA(n),ZA(n)},e_=function(n){return{anchor:"selection",root:Be.fromDom(n.selection.getNode())}},o_={onLtr:function(){return[ic,aa,ca,sa,fa,rc,Wg,Gg,hm,gm,vm,pm]},onRtl:function(){return[ic,ca,aa,fa,sa,rc,Wg,Gg,vm,pm,hm,gm]}},r_={valignCentre:[],alignCentre:[],alignLeft:["tox-pop--align-left"],alignRight:["tox-pop--align-right"],right:["tox-pop--right"],left:["tox-pop--left"],bottom:["tox-pop--bottom"],top:["tox-pop--top"]},i_=function(n){return n.settings.contextmenu_never_use_native||!1},u_=function(n){return function(n,t,e){var o=n.ui.registry.getAll().contextMenus;return V(n.settings,t).map(gB).getOrThunk(function(){return C(gB(e),function(n){return Tn(o,n)})})}(n,"contextmenu","link linkchecker image imagetools table spellchecker configurepermanentpen")},a_=function(n){return!1===n.getParam("contextmenu")},c_={type:"separator"},s_=function(t){if(cn(t))return t;switch(t.type){case"separator":return c_;case"submenu":return{type:"nestedmenuitem",text:t.text,icon:t.icon,getSubmenuItems:function(){var n=t.getSubmenuItems();return cn(n)?n:S(n,s_)}};default:return{type:"menuitem",text:t.text,icon:t.icon,onAction:function(n){return function(){return n()}}(t.onAction)}}},f_="data-initial-z-index",l_=function(n,t,r,i,u){var e=t.getSnapPoints(n);return kB(e,r,i,u).orThunk(function(){return O(e,function(t,e){var n=e.sensor(),o=function(n,t,e,o,r,i){var u=kD(n,r,i),a=kD(t,r,i),c=Math.abs(u.left()-a.left()),s=Math.abs(u.top()-a.top());return Ru(c,s)}(r,n,e.range().left(),e.range().top(),i,u);return t.deltas.fold(function(){return{deltas:on.some(o),snap:on.some(e)}},function(n){return(o.left()+o.top())/2<=(n.left()+n.top())/2?{deltas:on.some(o),snap:on.some(e)}:t})},{deltas:on.none(),snap:on.none()}).snap.map(function(n){return{output:nn(ED(n.output(),r,i,u)),extra:n.extra}})})},d_=function(n,t,e,o,r){var i=t.getSnapPoints(n);return kB(i,e,o,r)},m_=wt("snaps",[ct("getSnapPoints"),Ku("onSensor"),ct("leftAttr"),ct("topAttr"),St("lazyViewport",Cu),St("mustSnap",!1)]),g_=/* */Object.freeze({getData:function(n){return on.from(Ru(n.x(),n.y()))},getDelta:function(n,t){return Ru(t.left()-n.left(),t.top()-n.top())}}),p_=[St("useFixed",u),ct("blockerClass"),St("getTarget",l),St("onDrag",Z),St("repositionTarget",!0),Ku("onDrop"),Dt("getBounds",Cu),m_,Zu("dragger",{handlers:function(u,a){function c(n){a.setStartData(EB(u,n))}return tr([rr(Ro(),function(n){a.getStartData().each(function(){return c(n)})}),rr(uo(),function(t,n){if(0===n.event().raw().button){n.stop();var e=function(){return BB(t,on.some(i),u,a)},o=vb(e,200),r={drop:e,delayDrop:o.schedule,forceDrop:e,move:function(n){o.cancel(),DB(t,u,a,g_,n)}},i=xB(t,u.blockerClass,function(e){return tr([rr(uo(),e.forceDrop),rr(so(),e.drop),rr(ao(),function(n,t){e.move(t.event())}),rr(co(),e.delayDrop)])}(r));c(t),bB(t,i)}})])}})],h_=/* */Object.freeze({getData:function(n){var t=n.raw().touches;return 1===t.length?function(n){var t=n[0];return on.some(Ru(t.clientX,t.clientY))}(t):on.none()},getDelta:function(n,t){return Ru(t.left()-n.left(),t.top()-n.top())}}),v_=p_,b_=[St("useFixed",u),ct("blockerClass"),St("getTarget",l),St("onDrag",Z),St("repositionTarget",!0),St("onDrop",Z),Dt("getBounds",Cu),m_,Zu("dragger",{handlers:function(i,u){function a(n){u.setStartData(EB(i,n))}var c=Ee(on.none());return tr([rr(Ro(),function(n){u.getStartData().each(function(){return a(n)})}),rr(eo(),function(t,n){n.stop();function e(){BB(t,c.get(),i,u),c.set(on.none())}var o={drop:e,delayDrop:function(){},forceDrop:e,move:function(n){DB(t,i,u,h_,n)}},r=xB(t,i.blockerClass,function(e){return tr([rr(eo(),e.forceDrop),rr(ro(),e.drop),rr(io(),e.drop),rr(oo(),function(n,t){e.move(t.event())})])}(o));c.set(on.some(r));a(t),bB(t,r)}),rr(oo(),function(n,t){t.stop(),DB(n,i,u,h_,t.event())}),rr(ro(),function(n){BB(n,c.get(),i,u),c.set(on.none())}),rr(io(),function(n){BB(n,c.get(),i,u),c.set(on.none())})])}})],y_=/* */Object.freeze({mouse:v_,touch:b_}),x_=/* */Object.freeze({init:function(){var o=on.none(),t=on.none(),n=nn({});return tu({readState:n,reset:function(){o=on.none(),t=on.none()},update:function(t,n){return t.getData(n).bind(function(n){return function(t,e){var n=o.map(function(n){return t.getDelta(n,e)});return o=on.some(e),n}(t,n)})},getStartData:function(){return t},setStartData:function(n){t=on.some(n)}})}}),w_=/* */Object.freeze({snapTo:function(n,t,e,o){var r=t.getTarget(n.element());if(t.repositionTarget){var i=pr(n.element()),u=hu(i),a=yD(r),c=function(n,t,e){return{coord:ED(n.output(),n.output(),t,e),extra:n.extra()}}(o,u,a),s=TD(c.coord,0,a);di(r,s)}}}),S_=wa({branchKey:"mode",branches:y_,name:"dragging",active:{events:function(n,t){return n.dragger.handlers(n,t)}},extra:{snap:gr(["sensor","range","output"],["extra"])},state:x_,apis:w_}),C_=Ht(),k_=function(c,e){function t(n){var t=Su(n);return AB(g.getOpt(e),n,t.x(),t.y(),t.width(),t.height())}function o(n){var t=Su(n);return AB(p.getOpt(e),n,t.right(),t.bottom(),t.width(),t.height())}function r(n,t,e,o){var r=e(t);S_.snapTo(n,r),function(n,t,e,o){var r=t.dom().getBoundingClientRect();hi(n.element(),"display");var i=vr(Be.fromDom(c.getBody())).dom().innerHeight,u=e(r),a=o(r,i);(u||a)&&li(n.element(),"display","none")}(n,t,function(n){return n[o]<0},function(n,t){return n[o]>t})}function i(n){return r(h,n,t,"top")}function u(n){return r(v,n,o,"bottom")}var a=Ee([]),s=Ee([]),n=Ee(!1),f=Ee(on.none()),l=Ee(on.none()),d=_B(function(){return S(a.get(),function(n){return t(n)})},f,function(t){l.get().each(function(n){c.fire("TableSelectorChange",{start:t,finish:n})})}),m=_B(function(){return S(s.get(),function(n){return o(n)})},l,function(t){f.get().each(function(n){c.fire("TableSelectorChange",{start:n,finish:t})})}),g=MB(d),p=MB(m),h=au(g.asSpec()),v=au(p.asSpec());C_.deviceType.isTouch()&&(c.on("TableSelectionChange",function(t){n.get()||(vs(e,h),vs(e,v),n.set(!0)),f.set(on.some(t.start)),l.set(on.some(t.finish)),t.otherCells.each(function(n){a.set(n.upOrLeftCells),s.set(n.downOrRightCells),i(t.start),u(t.finish)})}),c.on("resize ScrollContent",function(){f.get().each(i),l.get().each(u)}),c.on("TableSelectionClear",function(){n.get()&&(ys(h),ys(v),n.set(!1)),f.set(on.none()),l.set(on.none())}))};(NB=VB=VB||{})[NB.None=0]="None",NB[NB.Both=1]="Both",NB[NB.Vertical=2]="Vertical";function O_(n,t,e){var o=Be.fromDom(n.getContainer()),r=function(n,t,e,o,r){var i={};return i.height=GA(o+t.top(),Nb(n),Pb(n)),e===VB.Both&&(i.width=GA(r+t.left(),Vb(n),Hb(n))),i}(n,t,e,fu(o),gu(o));Cn(r,function(n,t){return li(o,t,YA(n))}),Pv(n)}function T_(n){if(1===n.nodeType){if("BR"===n.nodeName||n.getAttribute("data-mce-bogus"))return!0;if("bookmark"===n.getAttribute("data-mce-type"))return!0}return!1}function E_(o,t){var r,n,e;return{dom:{tag:"div",classes:["tox-statusbar"]},components:(n=function(){var n=[];return o.getParam("elementpath",!0,"boolean")&&n.push(hM(o,{})),Vt(o.settings.plugins,"wordcount")&&n.push(function(n,o){function r(n,t,e){return gg.set(n,[Ti(o.translate(["{0} "+e,t[e]]))])}var t;return Xg.sketch({dom:{tag:"button",classes:["tox-statusbar__wordcount"]},components:[],buttonBehaviours:ya([Xy.config({}),gg.config({}),nl.config({store:{mode:"memory",initialValue:{mode:"words",count:{words:0,characters:0}}}}),Jd("wordcount-events",[rr(Xt(),function(n){var t=nl.getValue(n),e="words"===t.mode?"characters":"words";nl.setValue(n,{mode:e,count:t.count}),r(n,t.count,e)}),Ri(function(e){n.on("wordCountUpdate",function(n){var t=nl.getValue(e).mode;nl.setValue(e,{mode:t,count:n.wordCount}),r(e,n.wordCount,t)})})])]),eventOrder:(t={},t[Xt()]=["wordcount-events","alloy.base.behaviour"],t)})}(o,t)),o.getParam("branding",!0,"boolean")&&n.push(function(){var n=ih.translate(["Powered by {0}","Tiny"]);return{dom:{tag:"span",classes:["tox-statusbar__branding"],innerHtml:'<a href="https://www.tiny.cloud/?utm_campaign=editor_referral&amp;utm_medium=poweredby&amp;utm_source=tinymce&amp;utm_content=v5" rel="noopener" target="_blank" tabindex="-1" aria-label="'+n+'">'+n+"</a>"}}}()),0<n.length?[{dom:{tag:"div",classes:["tox-statusbar__text-container"]},components:n}]:[]}(),e=function(n){var t=!Vt(n.settings.plugins,"autoresize"),e=n.getParam("resize",t);return!1===e?VB.None:"both"===e?VB.Both:VB.Vertical}(o),e!==VB.None&&n.push((r=e,{dom:{tag:"div",classes:["tox-statusbar__resize-handle"],attributes:{title:t.translate("Resize")},innerHtml:xm("resize-handle",t.icons)},behaviours:ya([S_.config({mode:"mouse",repositionTarget:!1,onDrag:function(n,t,e){O_(o,e,r)},blockerClass:"tox-blocker"})])})),n)}}function D_(n){return[ft("type"),function(n){return st(n,we)}("columns"),n]}function B_(t){return he("items","items",Mn(),Kn(Zn(function(n){return tt("Checking item of "+t,pF,n).fold(function(n){return an.error(ye(n))},function(n){return an.value(n)})})))}function A_(n){return cn(n.type)&&cn(n.name)}function __(n){var t=function(n){return C(AF(n),A_)}(n),e=D(t,function(t){return function(n){return on.from(_F[n.type])}(t).fold(function(){return[]},function(n){return[st(t.name,n)]})});return de(e)}function M_(n){return{internalDialog:et(function(n){return tt("dialog",BF,n)}(n)),dataValidator:__(n),initialData:n.initialData}}function F_(n){var e=[],o={};return Cn(n,function(n,t){n.fold(function(){e.push(t)},function(n){o[t]=n})}),0<e.length?an.error(e):an.value(o)}function I_(n){return yn(function(n,t){var e=gn.call(n,0);return e.sort(t),e}(n,function(n,t){return t<n?-1:n<t?1:0}))}function R_(n,t){li(n,"height",t+"px"),Ht().browser.isIE()?hi(n,"flex-basis"):li(n,"flex-basis",t+"px")}function V_(n,o,r){ku(n,'[role="dialog"]').each(function(e){Ou(e,'[role="tablist"]').each(function(t){r.get().map(function(n){return li(o,"height","0"),li(o,"flex-basis","0"),Math.min(n,function(n,t,e){var o,r=hr(n).dom(),i=ku(n,".tox-dialog-wrap").getOr(n);o="fixed"===mi(i,"position")?Math.max(r.clientHeight,v.window.innerHeight):Math.max(r.offsetHeight,r.scrollHeight);var u=fu(t),a=t.dom().offsetLeft>=e.dom().offsetLeft+gu(e)?Math.max(fu(e),u):u,c=parseInt(mi(n,"margin-top"),10)||0,s=parseInt(mi(n,"margin-bottom"),10)||0;return o-(fu(n)+c+s-a)}(e,o,t))}).each(function(n){R_(o,n)})})})}function N_(n){return Ou(n,'[role="tabpanel"]')}function H_(r){var i;return{smartTabHeight:(i=Ee(on.none()),{extraEvents:[Ri(function(n){var t=n.element();N_(t).each(function(o){li(o,"visibility","hidden"),n.getSystem().getByDom(o).toOption().each(function(n){var t=function(o,r,i){return S(o,function(n,t){gg.set(i,o[t].view());var e=r.dom().getBoundingClientRect();return gg.set(i,[]),e.height})}(r,o,n),e=I_(t);i.set(e)}),V_(t,o,i),hi(o,"visibility"),function(n,t){yn(n).each(function(n){return GF.showTab(t,n.value)})}(r,n),Kg.requestAnimationFrame(function(){V_(t,o,i)})})}),rr(Vo(),function(n){var t=n.element();N_(t).each(function(n){V_(t,n,i)})}),rr(py,function(n,t){var r=n.element();N_(r).each(function(t){var n=Ca();li(t,"visibility","hidden");var e=gi(t,"height").map(function(n){return parseInt(n,10)});hi(t,"height"),hi(t,"flex-basis");var o=t.dom().getBoundingClientRect().height;e.forall(function(n){return n<o})?(i.set(on.from(o)),V_(r,t,i)):e.each(function(n){R_(t,n)}),hi(t,"visibility"),n.each(Sa)})})],selectFirst:!1}),naiveTabHeight:{extraEvents:[],selectFirst:!0}}}function P_(n,t,e,o){return{dom:{tag:"div",classes:["tox-dialog__content-js"],attributes:N(N({},t.map(function(n){return{id:n}}).getOr({})),o?{"aria-live":"polite"}:{})},components:[],behaviours:ya([DS(0),LE.config({channel:JF,updateState:function(n,t){return on.some({isTabPanel:function(){return"tabpanel"===t.body.type}})},renderComponents:function(n){switch(n.body.type){case"tabpanel":return[function(n,e){function o(n){var t=nl.getValue(n),e=F_(t).getOr({}),o=i.get(),r=Bn(o,e);i.set(r)}function r(n){var t=i.get();nl.setValue(n,t)}var i=Ee({}),u=Ee(null),t=S(n.tabs,function(n){return{value:n.name,dom:{tag:"div",classes:["tox-dialog__body-nav-item"],innerHtml:e.shared.providers.translate(n.title)},view:function(){return[bS.sketch(function(t){return{dom:{tag:"div",classes:["tox-form"]},components:S(n.items,function(n){return Jk(t,n,e)}),formBehaviours:ya([dg.config({mode:"acyclic",useTabstopAt:b(HS)}),Jd("TabView.form.events",[Ri(r),Vi(o)]),dc.config({channels:K([{key:XF,value:{onReceive:o}},{key:YF,value:{onReceive:r}}])})])}})]}}}),a=H_(t).smartTabHeight;return GF.sketch({dom:{tag:"div",classes:["tox-dialog__body"]},onChangeTab:function(n,t,e){var o=nl.getValue(t);qt(n,gy,{name:o,oldName:u.get()}),u.set(o)},tabs:t,components:[GF.parts().tabbar({dom:{tag:"div",classes:["tox-dialog__body-nav"]},components:[PF.parts().tabs({})],markers:{tabClass:"tox-tab",selectedClass:"tox-dialog__body-nav-item--active"},tabbarBehaviours:ya([Xy.config({})])}),GF.parts().tabview({dom:{tag:"div",classes:["tox-dialog__body-content"]}})],selectFirst:a.selectFirst,tabSectionBehaviours:ya([Jd("tabpanel",a.extraEvents),dg.config({mode:"acyclic"}),nd.config({find:function(n){return yn(GF.getViewItems(n))}}),nl.config({store:{mode:"manual",getValue:function(n){return n.getSystem().broadcastOn([XF],{}),i.get()},setValue:function(n,t){i.set(t),n.getSystem().broadcastOn([YF],{})}}})])})}(n.body,e)];default:return[function(n,e){var t=bm(bS.sketch(function(t){return{dom:{tag:"div",classes:["tox-form"].concat(n.classes)},components:S(n.items,function(n){return Jk(t,n,e)})}}));return{dom:{tag:"div",classes:["tox-dialog__body"]},components:[{dom:{tag:"div",classes:["tox-dialog__body-content"]},components:[t.asSpec()]}],behaviours:ya([dg.config({mode:"acyclic",useTabstopAt:b(HS)}),ES(t),MS(t,{postprocess:function(n){return F_(n).fold(function(n){return v.console.error(n),{}},function(n){return n})}})])}}(n.body,e)]}},initialData:n})])}}function z_(n,e){return[cr(lo(),PS),n(cy,function(n,t){e.onClose(),t.onClose()}),n(sy,function(n,t,e,o){t.onCancel(n),Yt(o,cy)}),rr(my,function(n,t){return e.onUnblock()}),rr(dy,function(n,t){return e.onBlock(t.event())})]}function L_(n,t){function e(n,t){return Gb.sketch({dom:{tag:"div",classes:["tox-dialog__footer-"+n]},components:S(t,function(n){return n.memento.asSpec()})})}var o=function(n,t){for(var e=[],o=[],r=0,i=n.length;r<i;r++){var u=n[r];(t(u,r)?e:o).push(u)}return{pass:e,fail:o}}(t.map(function(n){return n.footerButtons}).getOr([]),function(n){return"start"===n.align});return[e("start",o.pass),e("end",o.fail)]}function j_(n,o){return{dom:sp('<div class="tox-dialog__footer"></div>'),components:[],behaviours:ya([LE.config({channel:$F,initialData:n,updateState:function(n,t){var e=S(t.buttons,function(n){var t=bm(function(n,t){return ZC(n,n.type,t)}(n,o));return{name:n.name,align:n.align,memento:t}});return on.some({lookupByName:function(n,t){return function(t,n,e){return T(n,function(n){return n.name===e}).bind(function(n){return n.memento.getOpt(t)})}(n,e,t)},footerButtons:e})},renderComponents:L_})])}}function U_(n,t){return SM.parts().footer(j_(n,t))}function W_(t,e){if(t.getRoot().getSystem().isConnected()){var o=nd.getCurrent(t.getFormWrapper()).getOr(t.getFormWrapper());return bS.getField(o,e).fold(function(){var n=t.getFooter();return LE.getState(n).get().bind(function(n){return n.lookupByName(o,e)})},function(n){return on.some(n)})}return on.none()}function G_(u,o,a){function n(n){var t=u.getRoot();t.getSystem().isConnected()&&n(t)}var c={getData:function(){var n=u.getRoot(),t=n.getSystem().isConnected()?u.getFormWrapper():n,e=nl.getValue(t),o=P(a,function(n){return n.get()});return N(N({},e),o)},setData:function(i){n(function(n){var t=c.getData(),e=An(t,i),o=function(n,t){var e=n.getRoot();return LE.getState(e).get().map(function(n){return et(tt("data",n.dataValidator,t))}).getOr(t)}(u,e),r=u.getFormWrapper();nl.setValue(r,o),Cn(a,function(n,t){Tn(e,t)&&n.set(e[t])})})},disable:function(n){W_(u,n).each(kh.disable)},enable:function(n){W_(u,n).each(kh.enable)},focus:function(n){W_(u,n).each(bg.focus)},block:function(t){if(!cn(t))throw new Error("The dialogInstanceAPI.block function should be passed a blocking message of type string as an argument");n(function(n){qt(n,dy,{message:t})})},unblock:function(){n(function(n){Yt(n,my)})},showTab:function(e){n(function(n){var t=u.getBody();LE.getState(t).get().exists(function(n){return n.isTabPanel()})&&nd.getCurrent(t).each(function(n){GF.showTab(n,e)})})},redial:function(e){n(function(n){var t=o(e);n.getSystem().broadcastOn([qF],t),n.getSystem().broadcastOn([KF],t.internalDialog),n.getSystem().broadcastOn([JF],t.internalDialog),n.getSystem().broadcastOn([$F],t.internalDialog),c.setData(t.initialData)})},close:function(){n(function(n){Yt(n,cy)})}};return c}function X_(n,t){return{dom:{tag:"div",styles:{display:"none"},classes:["tox-dialog__header"]},components:[n,t]}}function Y_(n,t){return SM.parts().close(Xg.sketch({dom:{tag:"button",classes:["tox-button","tox-button--icon","tox-button--naked"],attributes:{type:"button","aria-label":t.translate("Close")}},action:n,buttonBehaviours:ya([Xy.config({})])}))}function q_(){return SM.parts().title({dom:{tag:"div",classes:["tox-dialog__title"],innerHtml:"",styles:{display:"none"}}})}function K_(n,t){return SM.parts().body({dom:{tag:"div",classes:["tox-dialog__body"]},components:[{dom:{tag:"div",classes:["tox-dialog__body-content"]},components:[{dom:sp("<p>"+t.translate(n)+"</p>")}]}]})}function J_(n){return SM.parts().footer({dom:{tag:"div",classes:["tox-dialog__footer"]},components:n})}function $_(n,t){return[Gb.sketch({dom:{tag:"div",classes:["tox-dialog__footer-start"]},components:n}),Gb.sketch({dom:{tag:"div",classes:["tox-dialog__footer-end"]},components:t})]}function Q_(t){var n,e="tox-dialog",o=e+"-wrap",r=o+"__backdrop",i=e+"__disable-scroll";return SM.sketch({lazySink:t.lazySink,onEscape:function(n){return t.onEscape(n),on.some(!0)},useTabstopAt:function(n){return!HS(n)},dom:{tag:"div",classes:[e].concat(t.extraClasses),styles:N({position:"relative"},t.extraStyles)},components:g([t.header,t.body],t.footer.toArray()),parts:{blocker:{dom:sp('<div class="'+o+'"></div>'),components:[{dom:{tag:"div",classes:tI?[r,r+"--opaque"]:[r]}}]}},dragBlockClass:o,modalBehaviours:ya(g([bg.config({}),Jd("dialog-events",t.dialogEvents.concat([fr(lo(),function(n,t){dg.focusIn(n)})])),Jd("scroll-lock",[Ri(function(){ei(Mi(),i)}),Vi(function(){ri(Mi(),i)})])],t.extraBehaviours)),eventOrder:N((n={},n[To()]=["dialog-events"],n[No()]=["scroll-lock","dialog-events","alloy.base.behaviour"],n[Ho()]=["alloy.base.behaviour","dialog-events","scroll-lock"],n),t.eventOrder)})}function Z_(n){return Xg.sketch({dom:{tag:"button",classes:["tox-button","tox-button--icon","tox-button--naked"],attributes:{type:"button","aria-label":n.translate("Close"),title:n.translate("Close")}},components:[{dom:{tag:"div",classes:["tox-icon"],innerHtml:'<svg width="24" height="24" xmlns="http://www.w3.org/2000/svg"><path d="M17.953 7.453L13.422 12l4.531 4.547-1.406 1.406L12 13.422l-4.547 4.531-1.406-1.406L10.578 12 6.047 7.453l1.406-1.406L12 10.578l4.547-4.531z" fill-rule="evenodd"></path></svg>'}}],action:function(n){Yt(n,sy)}})}function nM(n,t,e){function o(n){return[Ti(e.translate(n.title))]}return{dom:{tag:"div",classes:["tox-dialog__title"],attributes:N({},t.map(function(n){return{id:n}}).getOr({}))},components:o(n),behaviours:ya([LE.config({channel:KF,renderComponents:o})])}}function tM(){return{dom:sp('<div class="tox-dialog__draghandle"></div>')}}function eM(n,t){return function(n,t){var e=SM.parts().title(nM(n,on.none(),t)),o=SM.parts().draghandle(tM()),r=SM.parts().close(Z_(t)),i=[e].concat(n.draggable?[o]:[]).concat([r]);return Gb.sketch({dom:sp('<div class="tox-dialog__header"></div>'),components:i})}({title:t.shared.providers.translate(n),draggable:t.dialog.isDraggableModal()},t.shared.providers)}function oM(n,t){return{onClose:function(){return t.closeWindow()},onBlock:function(e){SM.setBusy(n(),function(n,t){return{dom:{tag:"div",classes:["tox-dialog__busy-spinner"],attributes:{"aria-label":e.message()},styles:{left:"0px",right:"0px",bottom:"0px",top:"0px",position:"absolute"}},behaviours:t,components:[{dom:sp('<div class="tox-spinner"><div></div><div></div><div></div></div>')}]}})},onUnblock:function(){SM.setIdle(n())}}}function rM(n,t,e,o){var r;return au(Q_(N(N({},n),{lazySink:o.shared.getSink,extraBehaviours:g([LE.config({channel:qF,updateState:function(n,t){return on.some(t)},initialData:t}),RS({})],n.extraBehaviours),onEscape:function(n){Yt(n,sy)},dialogEvents:e,eventOrder:(r={},r[Oo()]=["reflecting","receiving"],r[No()]=["scroll-lock","reflecting","messages","dialog-events","alloy.base.behaviour"],r[Ho()]=["alloy.base.behaviour","dialog-events","messages","reflecting","scroll-lock"],r)})))}function iM(n){return S(n,function(n){return"menu"===n.type?function(n){var t=S(n.items,function(n){var t=Ee(!1);return N(N({},n),{storage:t})});return N(N({},n),{items:t})}(n):n})}function uM(n){return O(n,function(n,t){return"menu"!==t.type?n:O(t.items,function(n,t){return n[t.name]=t.storage,n},n)},{})}function aM(n,t,e){var o=eM(n.internalDialog.title,e),r=function(n,t){var e=P_(n,on.none(),t,!1);return SM.parts().body(e)}({body:n.internalDialog.body},e),i=iM(n.internalDialog.buttons),u=uM(i),a=U_({buttons:i},e),c=nI(function(){return d},oM(function(){return l},t)),s="normal"!==n.internalDialog.size?"large"===n.internalDialog.size?["tox-dialog--width-lg"]:["tox-dialog--width-md"]:[],f={header:o,body:r,footer:on.some(a),extraClasses:s,extraBehaviours:[],extraStyles:{}},l=rM(f,n,c,e),d=G_({getRoot:function(){return l},getBody:function(){return SM.getBody(l)},getFooter:function(){return SM.getFooter(l)},getFormWrapper:function(){var n=SM.getBody(l);return nd.getCurrent(n).getOr(n)}},t.redial,u);return{dialog:l,instanceApi:d}}function cM(n,t,e,o){var r,i,u=Hr("dialog-label"),a=Hr("dialog-content"),c=bm(function(n,t,e){return Gb.sketch({dom:sp('<div class="tox-dialog__header"></div>'),components:[nM(n,on.some(t),e),tM(),Z_(e)],containerBehaviours:ya([S_.config({mode:"mouse",blockerClass:"blocker",getTarget:function(n){return Tu(n,'[role="dialog"]').getOrDie()},snaps:{getSnapPoints:function(){return[]},leftAttr:"data-drag-left",topAttr:"data-drag-top"}})])})}({title:n.internalDialog.title,draggable:!0},u,e.shared.providers)),s=bm(function(n,t,e,o){return P_(n,on.some(t),e,o)}({body:n.internalDialog.body},a,e,o)),f=iM(n.internalDialog.buttons),l=uM(f),d=bm(function(n,t){return j_(n,t)}({buttons:f},e)),m=nI(function(){return p},{onBlock:function(){},onUnblock:function(){},onClose:function(){return t.closeWindow()}}),g=au({dom:{tag:"div",classes:["tox-dialog","tox-dialog-inline"],attributes:(r={role:"dialog"},r["aria-labelledby"]=u,r["aria-describedby"]=""+a,r)},eventOrder:(i={},i[Oo()]=[LE.name(),dc.name()],i[To()]=["execute-on-form"],i[No()]=["reflecting","execute-on-form"],i),behaviours:ya([dg.config({mode:"cyclic",onEscape:function(n){return Yt(n,cy),on.some(!0)},useTabstopAt:function(n){return!HS(n)&&("button"!==Ko(n)||"disabled"!==Mr(n,"disabled"))}}),LE.config({channel:qF,updateState:function(n,t){return on.some(t)},initialData:n}),bg.config({}),Jd("execute-on-form",m.concat([fr(lo(),function(n,t){dg.focusIn(n)})])),RS({})]),components:[c.asSpec(),s.asSpec(),d.asSpec()]}),p=G_({getRoot:function(){return g},getFooter:function(){return d.get(g)},getBody:function(){return s.get(g)},getFormWrapper:function(){var n=s.get(g);return nd.getCurrent(n).getOr(n)}},t.redial,l);return{dialog:g,instanceApi:p}}function sM(n){return sn(n)&&-1!==oI.indexOf(n.mceAction)}function fM(e,n,o,t){var r,i=eM(e.title,t),u=function(n){var t={dom:{tag:"div",classes:["tox-dialog__content-js"]},components:[{dom:{tag:"div",classes:["tox-dialog__body-iframe"]},components:[zS({dom:{tag:"iframe",attributes:{src:n.url}},behaviours:ya([Xy.config({}),bg.config({})])})]}],behaviours:ya([dg.config({mode:"acyclic",useTabstopAt:b(HS)})])};return SM.parts().body(t)}(e),a=e.buttons.bind(function(n){return 0===n.length?on.none():on.some(U_({buttons:n},t))}),c=ZF(function(){return h},oM(function(){return p},n)),s=N(N({},e.height.fold(function(){return{}},function(n){return{height:n+"px","max-height":n+"px"}})),e.width.fold(function(){return{}},function(n){return{width:n+"px","max-width":n+"px"}})),f=e.width.isNone()&&e.height.isNone()?["tox-dialog--width-lg"]:[],l=new eI(e.url,{base_uri:new eI(v.window.location.href)}),d=l.protocol+"://"+l.host+(l.port?":"+l.port:""),m=Ee(on.none()),g=[Jd("messages",[Ri(function(){var n=fb(Be.fromDom(v.window),"message",function(n){if(l.isSameOrigin(new eI(n.raw().origin))){var t=n.raw().data;sM(t)?function(n,t,e){switch(e.mceAction){case"insertContent":n.insertContent(e.content);break;case"setContent":n.setContent(e.content);break;case"execCommand":var o=!!ln(e.ui)&&e.ui;n.execCommand(e.cmd,o,e.value);break;case"close":t.close();break;case"block":t.block(e.message);break;case"unblock":t.unblock()}}(o,h,t):function(n){return!sM(n)&&sn(n)&&Tn(n,"mceAction")}(t)&&e.onMessage(h,t)}});m.set(on.some(n))}),Vi(function(){m.get().each(function(n){return n.unbind()})})]),dc.config({channels:(r={},r[QF]={onReceive:function(n,t){Ou(n.element(),"iframe").each(function(n){n.dom().contentWindow.postMessage(t,d)})}},r)})],p=rM({header:i,body:u,footer:a,extraClasses:f,extraBehaviours:g,extraStyles:s},e,c,t),h=function(t){function n(n){t.getSystem().isConnected()&&n(t)}return{block:function(t){if(!cn(t))throw new Error("The urlDialogInstanceAPI.block function should be passed a blocking message of type string as an argument");n(function(n){qt(n,dy,{message:t})})},unblock:function(){n(function(n){Yt(n,my)})},close:function(){n(function(n){Yt(n,cy)})},sendMessage:function(t){n(function(n){n.getSystem().broadcastOn([QF],t)})}}}(p);return{dialog:p,instanceApi:h}}var lM,dM,mM,gM,pM,hM=function(i,r){r.delimiter||(r.delimiter="\xbb");return{dom:{tag:"div",classes:["tox-statusbar__path"],attributes:{role:"navigation"}},behaviours:ya([dg.config({mode:"flow",selector:"div[role=button]"}),Xy.config({}),gg.config({}),Jd("elementPathEvents",[Ri(function(e,n){i.shortcuts.add("alt+F11","focus statusbar elementpath",function(){return dg.focusIn(e)}),i.on("NodeChange",function(n){var t=function(n){for(var t=[],e=n.length;0<e--;){var o=n[e];if(1===o.nodeType&&!T_(o)){var r=i.fire("ResolveName",{name:o.nodeName.toLowerCase(),target:o});if(r.isDefaultPrevented()||t.push({name:r.name,element:o}),r.isPropagationStopped())break}}return t}(n.parents);0<t.length&&gg.set(e,function(n){var t=S(n||[],function(t,n){return Xg.sketch({dom:{tag:"div",classes:["tox-statusbar__path-item"],attributes:{role:"button","data-index":n,"tab-index":-1,"aria-level":n+1},innerHtml:t.name},action:function(n){i.focus(),i.selection.select(t.element),i.nodeChanged()}})}),o={dom:{tag:"div",classes:["tox-statusbar__path-divider"],attributes:{"aria-hidden":!0},innerHtml:" "+r.delimiter+" "}};return O(t.slice(1),function(n,t){var e=n;return e.push(o),e.push(t),e},[t[0]])}(t))})})])]),components:[]}},vM=function(l){function d(){return e.bind(VA.getHeader)}function m(){return an.value(v)}function n(){return e.bind(function(n){return VA.getMoreButton(n)}).getOrDie("Could not find more button element")}function g(){return e.bind(function(n){return VA.getThrobber(n)}).getOrDie("Could not find throbber element")}var t=l.inline,p=t?qA:WA,h=Qb(l)?pA:yA,e=on.none(),o=Ht(),r=o.browser.isIE()?["tox-platform-ie"]:[],i=o.deviceType.isTouch()?["tox-platform-touch"]:[],u=ih.isRtl()?{attributes:{dir:"rtl"}}:{},v=au({dom:N({tag:"div",classes:["tox","tox-silver-sink","tox-tinymce-aux"].concat(r).concat(i)},u),behaviours:ya([_f.config({useFixed:function(){return h.isDocked(d)}})])}),a=bm({dom:{tag:"div",classes:["tox-anchorbar"]}}),b=SO(v,l,function(){return e.bind(function(n){return a.getOpt(n)}).getOrDie("Could not find a anchor bar element")},n),c=VA.parts().menubar({dom:{tag:"div",classes:["tox-menubar"]},backstage:b,onEscape:function(){l.focus()}}),s=qb(l),f=VA.parts().toolbar({dom:{tag:"div",classes:["tox-toolbar"]},getSink:m,backstage:b,onEscape:function(){l.focus()},split:s,lazyToolbar:function(){return e.bind(function(n){return VA.getToolbar(n)}).getOrDie("Could not find more toolbar element")},lazyMoreButton:n,lazyHeader:function(){return d().getOrDie("Could not find header element")}}),y=VA.parts()["multiple-toolbar"]({dom:{tag:"div",classes:["tox-toolbar-overlord"]},onEscape:function(){},split:s}),x=VA.parts().socket({dom:{tag:"div",classes:["tox-edit-area"]}}),w=VA.parts().sidebar({dom:{tag:"div",classes:["tox-sidebar"]}}),S=VA.parts().throbber({dom:{tag:"div",classes:["tox-throbber"]},backstage:b}),C=l.getParam("statusbar",!0,"boolean")&&!t?on.some(E_(l,b.shared.providers)):on.none(),k={dom:{tag:"div",classes:["tox-sidebar-wrap"]},components:[x,w]},O=Yb(l),T=Lb(l),E=zb(l),D=VA.parts().header({dom:{tag:"div",classes:["tox-editor-header"]},components:H([E?[c]:[],O?[y]:T?[f]:[],Jb(l)?[]:[a.asSpec()]]),sticky:Qb(l),editor:l,getSink:m}),B=H([[D],t?[]:[k]]),A=H([[{dom:{tag:"div",classes:["tox-editor-container"]},components:B}],t?[]:C.toArray(),[S]]),_=$b(l),M=N(N({role:"application"},ih.isRtl()?{dir:"rtl"}:{}),_?{"aria-hidden":"true"}:{}),F=au(VA.sketch({dom:{tag:"div",classes:["tox","tox-tinymce"].concat(t?["tox-tinymce-inline"]:[]).concat(i).concat(r),styles:N({visibility:"hidden"},_?{opacity:"0",border:"0"}:{}),attributes:M},components:A,behaviours:ya([dg.config({mode:"cyclic",selector:".tox-menubar, .tox-toolbar, .tox-toolbar__primary, .tox-toolbar__overflow--open, .tox-sidebar__overflow--open, .tox-statusbar__path, .tox-statusbar__wordcount, .tox-statusbar__branding a"})])}));e=on.some(F),l.shortcuts.add("alt+F9","focus menubar",function(){VA.focusMenubar(F)}),l.shortcuts.add("alt+F10","focus toolbar",function(){VA.focusToolbar(F)});var I=Fb(F),R=Fb(v);KB(l,I,R),uy(l);function V(){var n=YA(tB(l)),t=YA(function(n){return eB(n).getOr(Rb(n))}(l));return l.inline||(pi("div","width",t)&&li(F.element(),"width",t),pi("div","height",n)?li(F.element(),"height",n):li(F.element(),"height","200px")),n}return{mothership:I,uiMothership:R,backstage:b,renderUI:function(){h.setup(l,d),t_(l,b),vB(l,m,b),function(o){var r=o.ui.registry.getAll().sidebars;bn(wn(r),function(t){function e(){return on.from(o.queryCommandValue("ToggleSidebar")).is(t)}var n=r[t];o.ui.registry.addToggleButton(t,{icon:n.icon,tooltip:n.tooltip,onAction:function(n){o.execCommand("ToggleSidebar",!1,t),n.setActive(e())},onSetup:function(n){function t(){return n.setActive(e())}return o.on("ToggleSidebar",t),function(){o.off("ToggleSidebar",t)}}})})}(l),function(e,t,o){function r(n){n!==i.get()&&(JD(t(),n,o.providers),i.set(n))}var i=Ee(!1),u=Ee(on.none());e.on("ProgressState",function(n){if(u.get().each(Kg.clearTimeout),mn(n.time)){var t=Kg.setEditorTimeout(e,function(){return r(n.state)},n.time);u.set(on.some(t))}else r(n.state),u.set(on.none())})}(l,g,b.shared);var n=l.ui.registry.getAll(),t=n.buttons,e=n.menuItems,o=n.contextToolbars,r=n.sidebars,i=jb(l),u={menuItems:e,menus:l.settings.menu?P(l.settings.menu,function(n){return An(n,{items:n.items})}):{},menubar:l.settings.menubar,toolbar:i.getOrThunk(function(){return l.getParam("toolbar",!0)}),buttons:t,sidebar:r};qB(l,o,v,{backstage:b}),k_(l,v);var a=l.getElement(),c=V(),s={mothership:I,uiMothership:R,outerContainer:F},f={targetNode:a,height:c};return p.render(l,s,u,b,f)},getUi:function(){return{channels:{broadcastAll:R.broadcast,broadcastOn:R.broadcastOn,register:function(){}}}}}},bM=function(n,t){var e=on.from(Mr(n,"id")).fold(function(){var n=Hr("dialog-label");return _r(t,"id",n),n},l);_r(n,"aria-labelledby",e)},yM=nn([ct("lazySink"),ht("dragBlockClass"),Dt("getBounds",Cu),St("useTabstopAt",nn(!0)),St("eventOrder",{}),Is("modalBehaviours",[dg]),Ju("onExecute"),Qu("onEscape")]),xM={sketch:l},wM=nn([Cl({name:"draghandle",overrides:function(n,t){return{behaviours:ya([S_.config({mode:"mouse",getTarget:function(n){return ku(n,'[role="dialog"]').getOr(n)},blockerClass:n.dragBlockClass.getOrDie(new Error("The drag blocker class was not specified for a dialog with a drag handle: \n"+JSON.stringify(t,null,2)).message),getBounds:n.getDragBounds})])}}}),wl({schema:[ct("dom")],name:"title"}),wl({factory:xM,schema:[ct("dom")],name:"close"}),wl({factory:xM,schema:[ct("dom")],name:"body"}),Cl({factory:xM,schema:[ct("dom")],name:"footer"}),Sl({factory:{sketch:function(n,t){return N(N({},n),{dom:t.dom,components:t.components})}},schema:[St("dom",{tag:"div",styles:{position:"fixed",left:"0px",top:"0px",right:"0px",bottom:"0px"}}),St("components",[])],name:"blocker"})]),SM=_l({name:"ModalDialog",configFields:yM(),partFields:wM(),factory:function(o,n,t,r){var a=Hr("alloy.dialog.busy"),c=Hr("alloy.dialog.idle"),s=ya([dg.config({mode:"special",onTab:function(){return on.some(!0)},onShiftTab:function(){return on.some(!0)}}),bg.config({})]),e=Hr("modal-events"),i=N(N({},o.eventOrder),{"alloy.system.attached":[e].concat(o.eventOrder["alloy.system.attached"]||[])});return{uid:o.uid,dom:o.dom,components:n,apis:{show:function(i){var n=o.lazySink(i).getOrDie(),u=Ee(on.none()),t=r.blocker(),e=n.getSystem().build(N(N({},t),{components:t.components.concat([cu(i)]),behaviours:ya([bg.config({}),Jd("dialog-blocker-events",[fr(lo(),function(){dg.focusIn(i)}),rr(c,function(n,t){Fr(i.element(),"aria-busy")&&(Ir(i.element(),"aria-busy"),u.get().each(function(n){return gg.remove(i,n)}))}),rr(a,function(n,t){_r(i.element(),"aria-busy","true");var e=t.event().getBusySpec();u.get().each(function(n){gg.remove(i,n)});var o=e(i,s),r=n.getSystem().build(o);u.set(on.some(r)),gg.append(i,cu(r)),r.hasConfigured(dg)&&dg.focusIn(r)})])])}));vs(n,e),dg.focusIn(i)},hide:function(t){br(t.element()).each(function(n){t.getSystem().getByDom(n).each(function(n){ys(n)})})},getBody:function(n){return Js(n,o,"body")},getFooter:function(n){return Js(n,o,"footer")},setIdle:function(n){Yt(n,c)},setBusy:function(n,t){qt(n,a,{getBusySpec:t})}},eventOrder:i,domModification:{attributes:{role:"dialog","aria-modal":"true"}},behaviours:Vs(o.modalBehaviours,[gg.config({}),dg.config({mode:"cyclic",onEnter:o.onExecute,onEscape:o.onEscape,useTabstopAt:o.useTabstopAt}),Jd(e,[Ri(function(n){bM(n.element(),Js(n,o,"title").element()),function(n,t){var e=on.from(Mr(n,"id")).fold(function(){var n=Hr("dialog-describe");return _r(t,"id",n),n},l);_r(n,"aria-describedby",e)}(n.element(),Js(n,o,"body").element())})])])}},apis:{show:function(n,t){n.show(t)},hide:function(n,t){n.hide(t)},getBody:function(n,t){return n.getBody(t)},getFooter:function(n,t){return n.getFooter(t)},setBusy:function(n,t,e){n.setBusy(t,e)},setIdle:function(n,t){n.setIdle(t)}}}),CM=[ft("type"),ft("text"),lt("level",["info","warn","error","success"]),ft("icon"),St("url","")],kM=de(CM),OM=[ft("type"),ft("text"),Et("disabled",!1),Et("primary",!1),he("name","name",In(function(){return Hr("button-name")}),Se),yt("icon"),Et("borderless",!1)],TM=de(OM),EM=[ft("type"),ft("name"),ft("label"),Et("disabled",!1)],DM=de(EM),BM=Ce,AM=[ft("type"),ft("name")],_M=AM.concat([yt("label")]),MM=de(_M),FM=Se,IM=de(_M),RM=Se,VM=de(_M),NM=Kn(ve),HM=_M.concat([Et("sandboxed",!0)]),PM=de(HM),zM=Se,LM=_M.concat([yt("inputMode"),yt("placeholder"),Et("maximized",!1),Et("disabled",!1)]),jM=de(LM),UM=Se,WM=_M.concat([gt("items",[ft("text"),ft("value")]),kt("size",1),Et("disabled",!1)]),GM=de(WM),XM=Se,YM=_M.concat([Et("constrain",!0),Et("disabled",!1)]),qM=de(YM),KM=de([ft("width"),ft("height")]),JM=_M.concat([yt("placeholder"),Et("maximized",!1),Et("disabled",!1)]),$M=de(JM),QM=Se,ZM=_M.concat([Tt("filetype","file",["image","media","file"]),St("disabled",!1)]),nF=de(ZM),tF=de([ft("value"),St("meta",{})]),eF=AM.concat([Ot("tag","textarea"),ft("scriptId"),ft("scriptUrl"),(lM="settings",dM=undefined,Ct(lM,dM,Te))]),oF=AM.concat([Ot("tag","textarea"),dt("init")]),rF=Zn(function(n){return tt("customeditor.old",qn(oF),n).orThunk(function(){return tt("customeditor.new",qn(eF),n)})}),iF=Se,uF=[ft("type"),ft("html"),Tt("presets","presentation",["presentation","document"])],aF=de(uF),cF=_M.concat([st("currentState",de([ct("blob"),ft("url")]))]),sF=de(cF),fF=_M.concat([St("columns","auto")]),lF=de(fF),dF=(mM=[ft("value"),ft("text"),ft("icon")],ge(mM)),mF=[ft("type"),pt("header",Se),pt("cells",Kn(Se))],gF=de(mF),pF=be(function(){return rt("type",{alertbanner:kM,bar:de(function(n){return[ft("type"),n]}(B_("bar"))),button:TM,checkbox:DM,colorinput:MM,colorpicker:IM,dropzone:VM,grid:de(D_(B_("grid"))),iframe:PM,input:jM,selectbox:GM,sizeinput:qM,textarea:$M,urlinput:nF,customeditor:rF,htmlpanel:aF,imagetools:sF,collection:lF,label:de(function(n){return[ft("type"),ft("label"),n]}(B_("label"))),table:gF,panel:vF})}),hF=[ft("type"),St("classes",[]),pt("items",pF)],vF=de(hF),bF=[he("name","name",In(function(){return Hr("tab-name")}),Se),ft("title"),pt("items",pF)],yF=[ft("type"),gt("tabs",bF)],xF=de(yF),wF=de([ft("type"),ft("name"),Et("active",!1)].concat(Gp)),SF=Ce,CF=[he("name","name",In(function(){return Hr("button-name")}),Se),yt("icon"),Tt("align","end",["start","end"]),Et("primary",!1),Et("disabled",!1)],kF=g(CF,[ft("text")]),OF=g([lt("type",["submit","cancel","custom"])],kF),TF=g([lt("type",["menu"]),yt("text"),yt("tooltip"),yt("icon"),pt("items",wF),Dt("onSetup",function(){return Z})],CF),EF=kF,DF=it("type",{submit:OF,cancel:OF,custom:OF,menu:TF}),BF=de([ft("title"),st("body",rt("type",{panel:vF,tabpanel:xF})),Ot("size","normal"),pt("buttons",DF),St("initialData",{}),Dt("onAction",Z),Dt("onChange",Z),Dt("onSubmit",Z),Dt("onClose",Z),Dt("onCancel",Z),St("onTabChange",Z)]),AF=function(n){return sn(n)?[n].concat(D(R(n),AF)):fn(n)?D(n,AF):[]},_F={checkbox:BM,colorinput:FM,colorpicker:RM,dropzone:NM,input:UM,iframe:zM,sizeinput:KM,selectbox:XM,size:KM,textarea:QM,urlinput:tF,customeditor:iF,collection:dF,togglemenuitem:SF},MF=de(g([lt("type",["cancel","custom"])],EF)),FF=de([ft("title"),ft("url"),bt("height"),bt("width"),(gM="buttons",pM=MF,vt(gM,Kn(pM))),Dt("onAction",Z),Dt("onCancel",Z),Dt("onClose",Z),Dt("onMessage",Z)]),IF={open:function(n,t){var e=M_(t);return n(e.internalDialog,e.initialData,e.dataValidator)},openUrl:function(n,t){return n(et(function(n){return tt("dialog",FF,n)}(t)))},redial:function(n){return M_(n)}},RF=Al({name:"TabButton",configFields:[St("uid",undefined),ct("value"),he("dom","dom",Rn(function(n){return{attributes:{role:"tab",id:Hr("aria"),"aria-selected":"false"}}}),xe()),ht("action"),St("domModification",{}),Is("tabButtonBehaviours",[bg,dg,nl]),ct("view")],factory:function(n,t){return{uid:n.uid,dom:n.dom,components:n.components,events:im(n.action),behaviours:Vs(n.tabButtonBehaviours,[bg.config({}),dg.config({mode:"execution",useSpace:!0,useEnter:!0}),nl.config({store:{mode:"memory",initialValue:n.value}})]),domModification:n.domModification}}}),VF=nn([ct("tabs"),ct("dom"),St("clickToDismiss",!1),Is("tabbarBehaviours",[cd,dg]),Yu(["tabClass","selectedClass"])]),NF=kl({factory:RF,name:"tabs",unit:"tab",overrides:function(o,n){function r(n,t){cd.dehighlight(n,t),qt(n,Wo(),{tabbar:n,button:t})}function i(n,t){cd.highlight(n,t),qt(n,Uo(),{tabbar:n,button:t})}return{action:function(n){var t=n.getSystem().getByUid(o.uid).getOrDie(),e=cd.isHighlighted(t,n);(e&&o.clickToDismiss?r:e?Z:i)(t,n)},domModification:{classes:[o.markers.tabClass]}}}}),HF=nn([NF]),PF=_l({name:"Tabbar",configFields:VF(),partFields:HF(),factory:function(n,t,e,o){return{uid:n.uid,dom:n.dom,components:t,"debug.sketcher":"Tabbar",domModification:{attributes:{role:"tablist"}},behaviours:Vs(n.tabbarBehaviours,[cd.config({highlightClass:n.markers.selectedClass,itemClass:n.markers.tabClass,onHighlight:function(n,t){_r(t.element(),"aria-selected","true")},onDehighlight:function(n,t){_r(t.element(),"aria-selected","false")}}),dg.config({mode:"flow",getInitial:function(n){return cd.getHighlighted(n).map(function(n){return n.element()})},selector:"."+n.markers.tabClass,executeOnMove:!0})])}}}),zF=Al({name:"Tabview",configFields:[Is("tabviewBehaviours",[gg])],factory:function(n,t){return{uid:n.uid,dom:n.dom,behaviours:Vs(n.tabviewBehaviours,[gg.config({})]),domModification:{attributes:{role:"tabpanel"}}}}}),LF=nn([St("selectFirst",!0),Ku("onChangeTab"),Ku("onDismissTab"),St("tabs",[]),Is("tabSectionBehaviours",[])]),jF=wl({factory:PF,schema:[ct("dom"),mt("markers",[ct("tabClass"),ct("selectedClass")])],name:"tabbar",defaults:function(n){return{tabs:n.tabs}}}),UF=wl({factory:zF,name:"tabview"}),WF=nn([jF,UF]),GF=_l({name:"TabSection",configFields:LF(),partFields:WF(),factory:function(r,n,t,e){function o(n,t){Ks(n,r,"tabbar").each(function(n){t(n).each(Kt)})}return{uid:r.uid,dom:r.dom,components:n,behaviours:Rs(r.tabSectionBehaviours),events:tr(H([r.selectFirst?[Ri(function(n,t){o(n,cd.getFirst)})]:[],[rr(Uo(),function(n,t){!function(o){var t=nl.getValue(o);Ks(o,r,"tabview").each(function(e){T(r.tabs,function(n){return n.value===t}).each(function(n){var t=n.view();_r(e.element(),"aria-labelledby",Mr(o.element(),"id")),gg.set(e,t),r.onChangeTab(e,o,t)})})}(t.event().button())}),rr(Wo(),function(n,t){var e=t.event().button();r.onDismissTab(n,e)})]])),apis:{getViewItems:function(n){return Ks(n,r,"tabview").map(function(n){return gg.contents(n)}).getOr([])},showTab:function(n,e){o(n,function(t){var n=cd.getCandidates(t);return T(n,function(n){return nl.getValue(n)===e}).filter(function(n){return!cd.isHighlighted(t,n)})})}}}},apis:{getViewItems:function(n,t){return n.getViewItems(t)},showTab:function(n,t,e){n.showTab(t,e)}}}),XF="send-data-to-section",YF="send-data-to-view",qF=Hr("update-dialog"),KF=Hr("update-title"),JF=Hr("update-body"),$F=Hr("update-footer"),QF=Hr("body-send-message"),ZF=function(i,n){function t(n,r){return rr(n,function(e,o){u(e,function(n,t){r(i(),n,o.event(),e)})})}var u=function(t,e){LE.getState(t).get().each(function(n){e(n,t)})};return g(z_(t,n),[t(fy,function(n,t,e){t.onAction(n,{name:e.name()})})])},nI=function(i,n){function t(n,r){return rr(n,function(e,o){u(e,function(n,t){r(i(),n,o.event(),e)})})}var u=function(t,e){LE.getState(t).get().each(function(n){e(n.internalDialog,t)})};return g(z_(t,n),[t(ly,function(n,t){return t.onSubmit(n)}),t(ay,function(n,t,e){t.onChange(n,{name:e.name()})}),t(fy,function(n,t,e,o){function r(){return dg.focusIn(o)}var i=Ca();t.onAction(n,{name:e.name(),value:e.value()}),Ca().fold(function(){r()},function(n){!to(o.element(),n)||Fr(n,"disabled")?r():to(n,i.getOrNull())&&Fr(i.getOrDie(),"disabled")&&r()})}),t(gy,function(n,t,e){t.onTabChange(n,{newTabName:e.name(),oldTabName:e.oldName()})}),Vi(function(n){var t=i();nl.setValue(n,t.getData())})])},tI=ph.deviceType.isTouch(),eI=tinymce.util.Tools.resolve("tinymce.util.URI"),oI=["insertContent","setContent","execCommand","close","block","unblock"],rI=function(n){var l=n.backstage,d=n.editor,m=Qb(d),e=function(c){var s=c.backstage.shared;return{open:function(n,t){function e(){SM.hide(u),t()}var o=bm(ZC({name:"close-alert",text:"OK",primary:!0,align:"end",disabled:!1,icon:on.none()},"cancel",c.backstage)),r=q_(),i=Y_(e,s.providers),u=au(Q_({lazySink:function(){return s.getSink()},header:X_(r,i),body:K_(n,s.providers),footer:on.some(J_($_([],[o.asSpec()]))),onEscape:e,extraClasses:["tox-alert-dialog"],extraBehaviours:[],extraStyles:{},dialogEvents:[rr(sy,e)],eventOrder:{}}));SM.show(u);var a=o.get(u);bg.focus(a)}}}(n),o=function(s){var f=s.backstage.shared;return{open:function(n,t){function e(n){SM.hide(a),t(n)}var o=bm(ZC({name:"yes",text:"Yes",primary:!0,align:"end",disabled:!1,icon:on.none()},"submit",s.backstage)),r=ZC({name:"no",text:"No",primary:!0,align:"end",disabled:!1,icon:on.none()},"cancel",s.backstage),i=q_(),u=Y_(function(){return e(!1)},f.providers),a=au(Q_({lazySink:function(){return f.getSink()},header:X_(i,u),body:K_(n,f.providers),footer:on.some(J_($_([],[r,o.asSpec()]))),onEscape:function(){return e(!1)},extraClasses:["tox-confirm-dialog"],extraBehaviours:[],extraStyles:{},dialogEvents:[rr(sy,function(){return e(!1)}),rr(ly,function(){return e(!0)})],eventOrder:{}}));SM.show(a);var c=o.get(a);bg.focus(c)}}}(n),r=function(n,e){return IF.openUrl(function(n){var t=fM(n,{closeWindow:function(){SM.hide(t.dialog),e(t.instanceApi)}},d,l);return SM.show(t.dialog),t.instanceApi},n)},i=function(n,i){return IF.open(function(n,t,e){var o=t,r=aM({dataValidator:e,initialData:o,internalDialog:n},{redial:IF.redial,closeWindow:function(){SM.hide(r.dialog),i(r.instanceApi)}},l);return SM.show(r.dialog),r.instanceApi.setData(o),r.instanceApi},n)},u=function(n,c,s,f){return IF.open(function(n,t,e){function o(){return i.on(function(n){lA.refresh(n)})}var r=function(n,t){return et(tt("data",t,n))}(t,e),i=function(){var t=Ee(on.none());return{clear:function(){t.set(on.none())},set:function(n){t.set(on.some(n))},isSet:function(){return t.get().isSome()},on:function(n){t.get().each(n)}}}(),u=cM({dataValidator:e,initialData:r,internalDialog:n},{redial:IF.redial,closeWindow:function(){i.on(Ug.hide),d.off("ResizeEditor",o),i.clear(),s(u.instanceApi)}},l,f),a=au(Ug.sketch({lazySink:l.shared.getSink,dom:{tag:"div",classes:[]},fireDismissalEventInstead:{},inlineBehaviours:ya(g([Jd("window-manager-inline-events",[rr(Po(),function(n,t){Yt(u.dialog,sy)})])],function(n,t){return t?[]:[lA.config({contextual:{lazyContext:function(){return on.some(wu(Be.fromDom(n.getContentAreaContainer())))},fadeInClass:"tox-dialog-dock-fadein",fadeOutClass:"tox-dialog-dock-fadeout",transitionClass:"tox-dialog-dock-transition"},leftAttr:"data-dock-left",topAttr:"data-dock-top",positionAttr:"data-dock-pos",modes:["top"]})]}(d,m)))}));return i.set(a),Ug.showWithin(a,c,cu(u.dialog),on.some(Mi())),m||(lA.refresh(a),d.on("ResizeEditor",o)),u.instanceApi.setData(r),dg.focusIn(u.dialog),u.instanceApi},n)};return{open:function(n,t,e){return t!==undefined&&"toolbar"===t.inline?u(n,l.shared.anchors.toolbar(),e,t.ariaAttrs):t!==undefined&&"cursor"===t.inline?u(n,l.shared.anchors.cursor(),e,t.ariaAttrs):i(n,e)},openUrl:function(n,t){return r(n,t)},alert:function(n,t){e.open(n,function(){t()})},close:function(n){n.close()},confirm:function(n,t){o.open(n,function(n){t(n)})}}};!function gI(){n.add("silver",function(n){var t=vM(n),e=t.uiMothership,o=t.backstage,r=t.renderUI,i=t.getUi;mb(n,o.shared);var u=rI({editor:n,backstage:o});return{renderUI:r,getWindowManagerImpl:nn(u),getNotificationManagerImpl:function(){return Jg(0,{backstage:o},e)},ui:i()}})}()}(window);
\ No newline at end of file
diff --git a/app/static/vendors/tinymce/js/tinymce/tinymce.min.js b/app/static/vendors/tinymce/js/tinymce/tinymce.min.js
deleted file mode 100644 (file)
index 1a473ba..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
- * Copyright (c) Tiny Technologies, Inc. All rights reserved.
- * Licensed under the LGPL or a commercial license.
- * For LGPL see License.txt in the project root for license information.
- * For commercial licenses see https://www.tiny.cloud/
- *
- * Version: 5.1.3 (2019-12-04)
- */
-!function(j){"use strict";function i(){}var q=function(n,r){return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return n(r.apply(null,e))}},$=function(e){return function(){return e}},W=function(e){return e};function d(r){for(var o=[],e=1;e<arguments.length;e++)o[e-1]=arguments[e];return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=o.concat(e);return r.apply(null,n)}}function s(n){return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return!n.apply(null,e)}}function e(){return u}var t,c=$(!1),a=$(!0),u=(t={fold:function(e,t){return e()},is:c,isSome:c,isNone:a,getOr:o,getOrThunk:r,getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},getOrNull:$(null),getOrUndefined:$(undefined),or:o,orThunk:r,map:e,each:i,bind:e,exists:c,forall:a,filter:e,equals:n,equals_:n,toArray:function(){return[]},toString:$("none()")},Object.freeze&&Object.freeze(t),t);function n(e){return e.isNone()}function r(e){return e()}function o(e){return e}function l(t){return function(e){return function(e){if(null===e)return"null";var t=typeof e;return"object"==t&&(Array.prototype.isPrototypeOf(e)||e.constructor&&"Array"===e.constructor.name)?"array":"object"==t&&(String.prototype.isPrototypeOf(e)||e.constructor&&"String"===e.constructor.name)?"string":t}(e)===t}}function f(e,t){return O.call(e,t)}function h(e,t){return-1<f(e,t)}function C(e,t){for(var n=0,r=e.length;n<r;n++){if(t(e[n],n))return!0}return!1}function z(e,t){for(var n=0,r=e.length;n<r;n++){t(e[n],n)}}function y(e,t){for(var n=[],r=0,o=e.length;r<o;r++){var i=e[r];t(i,r)&&n.push(i)}return n}function m(e,t,n){return function(e,t){for(var n=e.length-1;0<=n;n--){t(e[n],n)}}(e,function(e){n=t(n,e)}),n}function b(e,t,n){return z(e,function(e){n=t(n,e)}),n}function g(e,t){for(var n=0,r=e.length;n<r;n++){var o=e[n];if(t(o,n))return k.some(o)}return k.none()}function p(e,t){for(var n=0,r=e.length;n<r;n++){if(t(e[n],n))return k.some(n)}return k.none()}function v(e,t){return function(e){for(var t=[],n=0,r=e.length;n<r;++n){if(!A(e[n]))throw new Error("Arr.flatten item "+n+" was not an array, input: "+e);H.apply(t,e[n])}return t}(X(e,t))}function w(e,t){for(var n=0,r=e.length;n<r;++n){if(!0!==t(e[n],n))return!1}return!0}function x(e,t){return y(e,function(e){return!h(t,e)})}function E(e){return 0===e.length?k.none():k.some(e[0])}function N(e){return 0===e.length?k.none():k.some(e[e.length-1])}var S=function(n){function e(){return o}function t(e){return e(n)}var r=$(n),o={fold:function(e,t){return t(n)},is:function(e){return n===e},isSome:a,isNone:c,getOr:r,getOrThunk:r,getOrDie:r,getOrNull:r,getOrUndefined:r,or:e,orThunk:e,map:function(e){return S(e(n))},each:function(e){e(n)},bind:t,exists:t,forall:t,filter:function(e){return e(n)?o:u},toArray:function(){return[n]},toString:function(){return"some("+n+")"},equals:function(e){return e.is(n)},equals_:function(e,t){return e.fold(c,function(e){return t(n,e)})}};return o},k={some:S,none:e,from:function(e){return null===e||e===undefined?u:S(e)}},K=l("string"),T=l("object"),A=l("array"),M=l("null"),R=l("boolean"),D=l("function"),_=l("number"),B=Array.prototype.slice,O=Array.prototype.indexOf,H=Array.prototype.push,X=function(e,t){for(var n=e.length,r=new Array(n),o=0;o<n;o++){var i=e[o];r[o]=t(i,o)}return r},Y=function(e,t){for(var n=[],r=[],o=0,i=e.length;o<i;o++){var a=e[o];(t(a,o)?n:r).push(a)}return{pass:n,fail:r}},P=D(Array.from)?Array.from:function(e){return B.call(e)},G=function(){return(G=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)};function L(t){return function(e){return!!e&&e.nodeType===t}}function V(e){var n=e.map(function(e){return e.toLowerCase()});return function(e){if(e&&e.nodeName){var t=e.nodeName.toLowerCase();return h(n,t)}return!1}}function I(t){return function(e){if(Fe(e)){if(e.contentEditable===t)return!0;if(e.getAttribute("data-mce-contenteditable")===t)return!0}return!1}}function F(e,t){var n=function(e,t){for(var n=0;n<e.length;n++){var r=e[n];if(r.test(t))return r}return undefined}(e,t);if(!n)return{major:0,minor:0};function r(e){return Number(t.replace(n,"$"+e))}return Ze(r(1),r(2))}function U(e,t){return function(){return t===e}}function J(e,t){return function(){return t===e}}function Q(e,t){var n=String(t).toLowerCase();return g(e,function(e){return e.search(n)})}function Z(e,t){return-1!==e.indexOf(t)}function ee(e,t){return function(e,t,n){return""===t||!(e.length<t.length)&&e.substr(n,n+t.length)===t}(e,t,0)}function te(e){return e.replace(/^\s+|\s+$/g,"")}function ne(e){return e.replace(/\s+$/g,"")}function re(t){return function(e){return Z(e,t)}}function oe(){return pt.get()}function ie(e){return e.dom().nodeName.toLowerCase()}function ae(t){return function(e){return function(e){return e.dom().nodeType}(e)===t}}function ue(e,t){for(var n=Et(e),r=0,o=n.length;r<o;r++){var i=n[r];t(e[i],i)}}function se(e,n){return St(e,function(e,t){return{k:t,v:n(e,t)}})}function ce(e,n){var r={},o={};return ue(e,function(e,t){(n(e,t)?r:o)[t]=e}),{t:r,f:o}}function le(e,t){return kt(e,t)?k.from(e[t]):k.none()}function fe(e){return e.style!==undefined&&D(e.style.getPropertyValue)}function de(e){var t=zt(e)?e.dom().parentNode:e.dom();return t!==undefined&&null!==t&&t.ownerDocument.body.contains(t)}function he(e,t,n){if(!(K(n)||R(n)||_(n)))throw j.console.error("Invalid call to Attr.set. Key ",t,":: Value ",n,":: Element ",e),new Error("Attribute value was not simple");e.setAttribute(t,n+"")}function me(e,t){var n=e.dom();ue(t,function(e,t){he(n,t,e)})}function ge(e,t){var n=e.dom().getAttribute(t);return null===n?undefined:n}function pe(e,t){e.dom().removeAttribute(t)}function ve(e,t){var n=e.dom(),r=j.window.getComputedStyle(n).getPropertyValue(t),o=""!==r||de(e)?r:At(n,t);return null===o?undefined:o}function ye(e,t){var n=e.dom(),r=At(n,t);return k.from(r).filter(function(e){return 0<e.length})}function be(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];if(t.length!==n.length)throw new Error('Wrong number of arguments to struct. Expected "['+t.length+']", got '+n.length+" arguments");var r={};return z(t,function(e,t){r[e]=$(n[t])}),r}}function Ce(e,t,n){return 0!=(e.compareDocumentPosition(t)&n)}function we(e,t){var n=e.dom();if(n.nodeType!==Dt)return!1;var r=n;if(r.matches!==undefined)return r.matches(t);if(r.msMatchesSelector!==undefined)return r.msMatchesSelector(t);if(r.webkitMatchesSelector!==undefined)return r.webkitMatchesSelector(t);if(r.mozMatchesSelector!==undefined)return r.mozMatchesSelector(t);throw new Error("Browser lacks native selectors")}function xe(e){return e.nodeType!==Dt&&e.nodeType!==_t||0===e.childElementCount}function ze(e,t){return e.dom()===t.dom()}function Ee(e){return yt.fromDom(e.dom().ownerDocument)}function Ne(e){return yt.fromDom(e.dom().ownerDocument.defaultView)}function Se(e){return k.from(e.dom().parentNode).map(yt.fromDom)}function ke(e){return k.from(e.dom().previousSibling).map(yt.fromDom)}function Te(e){return k.from(e.dom().nextSibling).map(yt.fromDom)}function Ae(e){return function(e){var t=B.call(e,0);return t.reverse(),t}(Mt(e,ke))}function Me(e){return Mt(e,Te)}function Re(e){return X(e.dom().childNodes,yt.fromDom)}function De(e,t){var n=e.dom().childNodes;return k.from(n[t]).map(yt.fromDom)}function _e(e){return De(e,0)}function Be(e){return De(e,e.dom().childNodes.length-1)}function Oe(e){return g(e,xt)}function He(e,t){return e.children&&h(e.children,t)}var Pe,Le,Ve,Ie,Fe=L(1),Ue=V(["textarea","input"]),je=L(3),qe=L(8),$e=L(9),We=L(11),Ke=V(["br"]),Xe=I("true"),Ye=I("false"),Ge={isText:je,isElement:Fe,isComment:qe,isDocument:$e,isDocumentFragment:We,isBr:Ke,isContentEditableTrue:Xe,isContentEditableFalse:Ye,isRestrictedNode:function(e){return!!e&&!Object.getPrototypeOf(e)},matchNodeNames:V,hasPropValue:function(t,n){return function(e){return Fe(e)&&e[t]===n}},hasAttribute:function(t,e){return function(e){return Fe(e)&&e.hasAttribute(t)}},hasAttributeValue:function(t,n){return function(e){return Fe(e)&&e.getAttribute(t)===n}},matchStyleValues:function(r,e){var o=e.toLowerCase().split(" ");return function(e){var t;if(Fe(e))for(t=0;t<o.length;t++){var n=e.ownerDocument.defaultView.getComputedStyle(e,null);if((n?n.getPropertyValue(r):null)===o[t])return!0}return!1}},isBogus:function(e){return Fe(e)&&e.hasAttribute("data-mce-bogus")},isBogusAll:function(e){return Fe(e)&&"all"===e.getAttribute("data-mce-bogus")},isTable:function(e){return Fe(e)&&"TABLE"===e.tagName},isTextareaOrInput:Ue},Je=function(e){function t(){return n}var n=e;return{get:t,set:function(e){n=e},clone:function(){return Je(t())}}},Qe=function(){return Ze(0,0)},Ze=function(e,t){return{major:e,minor:t}},et={nu:Ze,detect:function(e,t){var n=String(t).toLowerCase();return 0===e.length?Qe():F(e,n)},unknown:Qe},tt="Firefox",nt=function(e){var t=e.current;return{current:t,version:e.version,isEdge:U("Edge",t),isChrome:U("Chrome",t),isIE:U("IE",t),isOpera:U("Opera",t),isFirefox:U(tt,t),isSafari:U("Safari",t)}},rt={unknown:function(){return nt({current:undefined,version:et.unknown()})},nu:nt,edge:$("Edge"),chrome:$("Chrome"),ie:$("IE"),opera:$("Opera"),firefox:$(tt),safari:$("Safari")},ot="Windows",it="Android",at="Solaris",ut="FreeBSD",st=function(e){var t=e.current;return{current:t,version:e.version,isWindows:J(ot,t),isiOS:J("iOS",t),isAndroid:J(it,t),isOSX:J("OSX",t),isLinux:J("Linux",t),isSolaris:J(at,t),isFreeBSD:J(ut,t)}},ct={unknown:function(){return st({current:undefined,version:et.unknown()})},nu:st,windows:$(ot),ios:$("iOS"),android:$(it),linux:$("Linux"),osx:$("OSX"),solaris:$(at),freebsd:$(ut)},lt=function(e,n){return Q(e,n).map(function(e){var t=et.detect(e.versionRegexes,n);return{current:e.name,version:t}})},ft=function(e,n){return Q(e,n).map(function(e){var t=et.detect(e.versionRegexes,n);return{current:e.name,version:t}})},dt=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,ht=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(e){return Z(e,"edge/")&&Z(e,"chrome")&&Z(e,"safari")&&Z(e,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,dt],search:function(e){return Z(e,"chrome")&&!Z(e,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(e){return Z(e,"msie")||Z(e,"trident")}},{name:"Opera",versionRegexes:[dt,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:re("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:re("firefox")},{name:"Safari",versionRegexes:[dt,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(e){return(Z(e,"safari")||Z(e,"mobile/"))&&Z(e,"applewebkit")}}],mt=[{name:"Windows",search:re("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(e){return Z(e,"iphone")||Z(e,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:re("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:re("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:re("linux"),versionRegexes:[]},{name:"Solaris",search:re("sunos"),versionRegexes:[]},{name:"FreeBSD",search:re("freebsd"),versionRegexes:[]}],gt={browsers:$(ht),oses:$(mt)},pt=Je(function(e,t){var n=gt.browsers(),r=gt.oses(),o=lt(n,e).fold(rt.unknown,rt.nu),i=ft(r,e).fold(ct.unknown,ct.nu);return{browser:o,os:i,deviceType:function(e,t,n,r){var o=e.isiOS()&&!0===/ipad/i.test(n),i=e.isiOS()&&!o,a=e.isiOS()||e.isAndroid(),u=a||r("(pointer:coarse)"),s=o||!i&&a&&r("(min-device-width:768px)"),c=i||a&&!s,l=t.isSafari()&&e.isiOS()&&!1===/safari/i.test(n),f=!c&&!s&&!l;return{isiPad:$(o),isiPhone:$(i),isTablet:$(s),isPhone:$(c),isTouch:$(u),isAndroid:e.isAndroid,isiOS:e.isiOS,isWebView:$(l),isDesktop:$(f)}}(i,o,e,t)}}(j.navigator.userAgent,function(e){return j.window.matchMedia(e).matches})),vt=function(e){if(null===e||e===undefined)throw new Error("Node cannot be null or undefined");return{dom:$(e)}},yt={fromHtml:function(e,t){var n=(t||j.document).createElement("div");if(n.innerHTML=e,!n.hasChildNodes()||1<n.childNodes.length)throw j.console.error("HTML does not have a single root node",e),new Error("HTML must have a single root node");return vt(n.childNodes[0])},fromTag:function(e,t){var n=(t||j.document).createElement(e);return vt(n)},fromText:function(e,t){var n=(t||j.document).createTextNode(e);return vt(n)},fromDom:vt,fromPoint:function(e,t,n){var r=e.dom();return k.from(r.elementFromPoint(t,n)).map(vt)}},bt=(j.Node.ATTRIBUTE_NODE,j.Node.CDATA_SECTION_NODE,j.Node.COMMENT_NODE,j.Node.DOCUMENT_NODE),Ct=(j.Node.DOCUMENT_TYPE_NODE,j.Node.DOCUMENT_FRAGMENT_NODE,j.Node.ELEMENT_NODE),wt=j.Node.TEXT_NODE,xt=(j.Node.PROCESSING_INSTRUCTION_NODE,j.Node.ENTITY_REFERENCE_NODE,j.Node.ENTITY_NODE,j.Node.NOTATION_NODE,"undefined"!=typeof j.window?j.window:Function("return this;")(),ae(Ct)),zt=ae(wt),Et=Object.keys,Nt=Object.hasOwnProperty,St=function(e,r){var o={};return ue(e,function(e,t){var n=r(e,t);o[n.k]=n.v}),o},kt=function(e,t){return Nt.call(e,t)},Tt=function(e,t,n){he(e.dom(),t,n)},At=function(e,t){return fe(e)?e.style.getPropertyValue(t):""},Mt=function(e,t){for(var n=[],r=function(e){return n.push(e),t(e)},o=t(e);(o=o.bind(r)).isSome(););return n},Rt=function(e,t){return Ce(e,t,j.Node.DOCUMENT_POSITION_CONTAINED_BY)},Dt=Ct,_t=bt,Bt=oe().browser.isIE()?function(e,t){return Rt(e.dom(),t.dom())}:function(e,t){var n=e.dom(),r=t.dom();return n!==r&&n.contains(r)},Ot=(be("element","offset"),oe().browser),Ht={getPos:function(e,t,n){var r,o,i=0,a=0,u=e.ownerDocument;if(n=n||e,t){if(n===e&&t.getBoundingClientRect&&"static"===ve(yt.fromDom(e),"position"))return{x:i=(o=t.getBoundingClientRect()).left+(u.documentElement.scrollLeft||e.scrollLeft)-u.documentElement.clientLeft,y:a=o.top+(u.documentElement.scrollTop||e.scrollTop)-u.documentElement.clientTop};for(r=t;r&&r!==n&&r.nodeType&&!He(r,n);)i+=r.offsetLeft||0,a+=r.offsetTop||0,r=r.offsetParent;for(r=t.parentNode;r&&r!==n&&r.nodeType&&!He(r,n);)i-=r.scrollLeft||0,a-=r.scrollTop||0,r=r.parentNode;a+=function(e){return Ot.isFirefox()&&"table"===ie(e)?Oe(Re(e)).filter(function(e){return"caption"===ie(e)}).bind(function(o){return Oe(Me(o)).map(function(e){var t=e.dom().offsetTop,n=o.dom().offsetTop,r=o.dom().offsetHeight;return t<=n?-r:0})}).getOr(0):0}(yt.fromDom(t))}return{x:i,y:a}}},Pt={},Lt={exports:Pt};Pe=undefined,Le=Pt,Ve=Lt,Ie=undefined,function(e){"object"==typeof Le&&void 0!==Ve?Ve.exports=e():"function"==typeof Pe&&Pe.amd?Pe([],e):("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).EphoxContactWrapper=e()}(function(){return function l(i,a,u){function s(t,e){if(!a[t]){if(!i[t]){var n="function"==typeof Ie&&Ie;if(!e&&n)return n(t,!0);if(c)return c(t,!0);var r=new Error("Cannot find module '"+t+"'");throw r.code="MODULE_NOT_FOUND",r}var o=a[t]={exports:{}};i[t][0].call(o.exports,function(e){return s(i[t][1][e]||e)},o,o.exports,l,i,a,u)}return a[t].exports}for(var c="function"==typeof Ie&&Ie,e=0;e<u.length;e++)s(u[e]);return s}({1:[function(e,t,n){var r,o,i=t.exports={};function a(){throw new Error("setTimeout has not been defined")}function u(){throw new Error("clearTimeout has not been defined")}function s(e){if(r===setTimeout)return setTimeout(e,0);if((r===a||!r)&&setTimeout)return r=setTimeout,setTimeout(e,0);try{return r(e,0)}catch(t){try{return r.call(null,e,0)}catch(t){return r.call(this,e,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:a}catch(e){r=a}try{o="function"==typeof clearTimeout?clearTimeout:u}catch(e){o=u}}();var c,l=[],f=!1,d=-1;function h(){f&&c&&(f=!1,c.length?l=c.concat(l):d=-1,l.length&&m())}function m(){if(!f){var e=s(h);f=!0;for(var t=l.length;t;){for(c=l,l=[];++d<t;)c&&c[d].run();d=-1,t=l.length}c=null,f=!1,function n(e){if(o===clearTimeout)return clearTimeout(e);if((o===u||!o)&&clearTimeout)return o=clearTimeout,clearTimeout(e);try{return o(e)}catch(t){try{return o.call(null,e)}catch(t){return o.call(this,e)}}}(e)}}function g(e,t){this.fun=e,this.array=t}function p(){}i.nextTick=function(e){var t=new Array(arguments.length-1);if(1<arguments.length)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];l.push(new g(e,t)),1!==l.length||f||s(m)},g.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=p,i.addListener=p,i.once=p,i.off=p,i.removeListener=p,i.removeAllListeners=p,i.emit=p,i.prependListener=p,i.prependOnceListener=p,i.listeners=function(e){return[]},i.binding=function(e){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(e){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},{}],2:[function(e,f,t){(function(t){function r(){}function i(e){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof e)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=undefined,this._deferreds=[],l(e,this)}function o(r,o){for(;3===r._state;)r=r._value;0!==r._state?(r._handled=!0,i._immediateFn(function(){var e=1===r._state?o.onFulfilled:o.onRejected;if(null!==e){var t;try{t=e(r._value)}catch(n){return void u(o.promise,n)}a(o.promise,t)}else(1===r._state?a:u)(o.promise,r._value)})):r._deferreds.push(o)}function a(e,t){try{if(t===e)throw new TypeError("A promise cannot be resolved with itself.");if(t&&("object"==typeof t||"function"==typeof t)){var n=t.then;if(t instanceof i)return e._state=3,e._value=t,void s(e);if("function"==typeof n)return void l(function r(e,t){return function(){e.apply(t,arguments)}}(n,t),e)}e._state=1,e._value=t,s(e)}catch(o){u(e,o)}}function u(e,t){e._state=2,e._value=t,s(e)}function s(e){2===e._state&&0===e._deferreds.length&&i._immediateFn(function(){e._handled||i._unhandledRejectionFn(e._value)});for(var t=0,n=e._deferreds.length;t<n;t++)o(e,e._deferreds[t]);e._deferreds=null}function c(e,t,n){this.onFulfilled="function"==typeof e?e:null,this.onRejected="function"==typeof t?t:null,this.promise=n}function l(e,t){var n=!1;try{e(function(e){n||(n=!0,a(t,e))},function(e){n||(n=!0,u(t,e))})}catch(r){if(n)return;n=!0,u(t,r)}}var e,n;e=this,n=setTimeout,i.prototype["catch"]=function(e){return this.then(null,e)},i.prototype.then=function(e,t){var n=new this.constructor(r);return o(this,new c(e,t,n)),n},i.all=function(e){var s=Array.prototype.slice.call(e);return new i(function(o,i){if(0===s.length)return o([]);var a=s.length;function u(t,e){try{if(e&&("object"==typeof e||"function"==typeof e)){var n=e.then;if("function"==typeof n)return void n.call(e,function(e){u(t,e)},i)}s[t]=e,0==--a&&o(s)}catch(r){i(r)}}for(var e=0;e<s.length;e++)u(e,s[e])})},i.resolve=function(t){return t&&"object"==typeof t&&t.constructor===i?t:new i(function(e){e(t)})},i.reject=function(n){return new i(function(e,t){t(n)})},i.race=function(o){return new i(function(e,t){for(var n=0,r=o.length;n<r;n++)o[n].then(e,t)})},i._immediateFn="function"==typeof t?function(e){t(e)}:function(e){n(e,0)},i._unhandledRejectionFn=function(e){"undefined"!=typeof console&&console&&console.warn("Possible Unhandled Promise Rejection:",e)},i._setImmediateFn=function(e){i._immediateFn=e},i._setUnhandledRejectionFn=function(e){i._unhandledRejectionFn=e},void 0!==f&&f.exports?f.exports=i:e.Promise||(e.Promise=i)}).call(this,e("timers").setImmediate)},{timers:3}],3:[function(s,e,c){(function(e,t){var r=s("process/browser.js").nextTick,n=Function.prototype.apply,o=Array.prototype.slice,i={},a=0;function u(e,t){this._id=e,this._clearFn=t}c.setTimeout=function(){return new u(n.call(setTimeout,window,arguments),clearTimeout)},c.setInterval=function(){return new u(n.call(setInterval,window,arguments),clearInterval)},c.clearTimeout=c.clearInterval=function(e){e.close()},u.prototype.unref=u.prototype.ref=function(){},u.prototype.close=function(){this._clearFn.call(window,this._id)},c.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},c.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},c._unrefActive=c.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;0<=t&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},c.setImmediate="function"==typeof e?e:function(e){var t=a++,n=!(arguments.length<2)&&o.call(arguments,1);return i[t]=!0,r(function(){i[t]&&(n?e.apply(null,n):e.call(null),c.clearImmediate(t))}),t},c.clearImmediate="function"==typeof t?t:function(e){delete i[e]}}).call(this,s("timers").setImmediate,s("timers").clearImmediate)},{"process/browser.js":1,timers:3}],4:[function(e,t,n){var r=e("promise-polyfill"),o="undefined"!=typeof window?window:Function("return this;")();t.exports={boltExport:o.Promise||r}},{"promise-polyfill":2}]},{},[4])(4)});function Vt(e){j.setTimeout(function(){throw e},0)}function It(i,e){return e(function(n){var r=[],o=0;0===i.length?n([]):z(i,function(e,t){e.get(function(t){return function(e){r[t]=e,++o>=i.length&&n(r)}}(t))})})}var Ft,Ut,jt,qt=Lt.exports.boltExport,$t=function(e){var n=k.none(),t=[],r=function(e){o()?a(e):t.push(e)},o=function(){return n.isSome()},i=function(e){z(e,a)},a=function(t){n.each(function(e){j.setTimeout(function(){t(e)},0)})};return e(function(e){n=k.some(e),i(t),t=[]}),{get:r,map:function(n){return $t(function(t){r(function(e){t(n(e))})})},isReady:o}},Wt={nu:$t,pure:function(t){return $t(function(e){e(t)})}},Kt=function(n){function e(e){n().then(e,Vt)}return{map:function(e){return Kt(function(){return n().then(e)})},bind:function(t){return Kt(function(){return n().then(function(e){return t(e).toPromise()})})},anonBind:function(e){return Kt(function(){return n().then(function(){return e.toPromise()})})},toLazy:function(){return Wt.nu(e)},toCached:function(){var e=null;return Kt(function(){return null===e&&(e=n()),e})},toPromise:n,get:e}},Xt={nu:function(e){return Kt(function(){return new qt(e)})},pure:function(e){return Kt(function(){return qt.resolve(e)})}},Yt=function(e){return It(e,Xt.nu)},Gt=function(n){return{is:function(e){return n===e},isValue:a,isError:c,getOr:$(n),getOrThunk:$(n),getOrDie:$(n),or:function(e){return Gt(n)},orThunk:function(e){return Gt(n)},fold:function(e,t){return t(n)},map:function(e){return Gt(e(n))},mapError:function(e){return Gt(n)},each:function(e){e(n)},bind:function(e){return e(n)},exists:function(e){return e(n)},forall:function(e){return e(n)},toOption:function(){return k.some(n)}}},Jt=function(n){return{is:c,isValue:c,isError:a,getOr:W,getOrThunk:function(e){return e()},getOrDie:function(){return function(e){return function(){throw new Error(e)}}(String(n))()},or:function(e){return e},orThunk:function(e){return e()},fold:function(e,t){return e(n)},map:function(e){return Jt(n)},mapError:function(e){return Jt(e(n))},each:i,bind:function(e){return Jt(n)},exists:c,forall:a,toOption:k.none}},Qt={value:Gt,error:Jt,fromOption:function(e,t){return e.fold(function(){return Jt(t)},Gt)}},Zt=window.Promise?window.Promise:(Ft=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},Ut=tn.immediateFn||"function"==typeof j.setImmediate&&j.setImmediate||function(e){j.setTimeout(e,1)},tn.prototype["catch"]=function(e){return this.then(null,e)},tn.prototype.then=function(n,r){var o=this;return new tn(function(e,t){nn.call(o,new un(n,r,e,t))})},tn.all=function(){var s=Array.prototype.slice.call(1===arguments.length&&Ft(arguments[0])?arguments[0]:arguments);return new tn(function(o,i){if(0===s.length)return o([]);var a=s.length;function u(t,e){try{if(e&&("object"==typeof e||"function"==typeof e)){var n=e.then;if("function"==typeof n)return void n.call(e,function(e){u(t,e)},i)}s[t]=e,0==--a&&o(s)}catch(r){i(r)}}for(var e=0;e<s.length;e++)u(e,s[e])})},tn.resolve=function(t){return t&&"object"==typeof t&&t.constructor===tn?t:new tn(function(e){e(t)})},tn.reject=function(n){return new tn(function(e,t){t(n)})},tn.race=function(o){return new tn(function(e,t){for(var n=0,r=o.length;n<r;n++)o[n].then(e,t)})},tn);function en(e,t){return function(){e.apply(t,arguments)}}function tn(e){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof e)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],sn(e,en(rn,this),en(on,this))}function nn(r){var o=this;null!==this._state?Ut(function(){var e=o._state?r.onFulfilled:r.onRejected;if(null!==e){var t;try{t=e(o._value)}catch(n){return void r.reject(n)}r.resolve(t)}else(o._state?r.resolve:r.reject)(o._value)}):this._deferreds.push(r)}function rn(e){try{if(e===this)throw new TypeError("A promise cannot be resolved with itself.");if(e&&("object"==typeof e||"function"==typeof e)){var t=e.then;if("function"==typeof t)return void sn(en(t,e),en(rn,this),en(on,this))}this._state=!0,this._value=e,an.call(this)}catch(n){on.call(this,n)}}function on(e){this._state=!1,this._value=e,an.call(this)}function an(){for(var e=0,t=this._deferreds.length;e<t;e++)nn.call(this,this._deferreds[e]);this._deferreds=null}function un(e,t,n,r){this.onFulfilled="function"==typeof e?e:null,this.onRejected="function"==typeof t?t:null,this.resolve=n,this.reject=r}function sn(e,t,n){var r=!1;try{e(function(e){r||(r=!0,t(e))},function(e){r||(r=!0,n(e))})}catch(o){if(r)return;r=!0,n(o)}}function cn(e,t){return"number"!=typeof t&&(t=0),j.setTimeout(e,t)}function ln(e,t){return"number"!=typeof t&&(t=1),j.setInterval(e,t)}function fn(n,r){var o,e;return(e=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];j.clearTimeout(o),o=cn(function(){n.apply(this,e)},r)}).stop=function(){j.clearTimeout(o)},e}function dn(e,t,n){var r,o;if(!e)return 0;if(n=n||e,e.length!==undefined){for(r=0,o=e.length;r<o;r++)if(!1===t.call(n,e[r],r,e))return 0}else for(r in e)if(e.hasOwnProperty(r)&&!1===t.call(n,e[r],r,e))return 0;return 1}function hn(e,t,n){var r,o;for(r=0,o=e.length;r<o;r++)if(t.call(n,e[r],r,e))return r;return-1}function mn(e){return null===e||e===undefined?"":(""+e).replace(Tn,"")}function gn(e,t){return t?!("array"!==t||!kn.isArray(e))||typeof e===t:e!==undefined}var pn={requestAnimationFrame:function(e,t){jt?jt.then(e):jt=new Zt(function(e){!function(e,t){var n,r=j.window.requestAnimationFrame,o=["ms","moz","webkit"];for(n=0;n<o.length&&!r;n++)r=j.window[o[n]+"RequestAnimationFrame"];(r=r||function(e){j.window.setTimeout(e,0)})(e,t)}(e,t=t||j.document.body)}).then(e)},setTimeout:cn,setInterval:ln,setEditorTimeout:function(e,t,n){return cn(function(){e.removed||t()},n)},setEditorInterval:function(e,t,n){var r;return r=ln(function(){e.removed?j.clearInterval(r):t()},n)},debounce:fn,throttle:fn,clearInterval:function(e){return j.clearInterval(e)},clearTimeout:function(e){return j.clearTimeout(e)}},vn=j.navigator.userAgent,yn=oe(),bn=yn.browser,Cn=yn.os,wn=yn.deviceType,xn=/WebKit/.test(vn)&&!bn.isEdge(),zn="FormData"in j.window&&"FileReader"in j.window&&"URL"in j.window&&!!j.URL.createObjectURL,En=-1!==vn.indexOf("Windows Phone"),Nn={opera:bn.isOpera(),webkit:xn,ie:!(!bn.isIE()&&!bn.isEdge())&&bn.version.major,gecko:bn.isFirefox(),mac:Cn.isOSX()||Cn.isiOS(),iOS:wn.isiPad()||wn.isiPhone(),android:Cn.isAndroid(),contentEditable:!0,transparentSrc:"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",caretAfter:!0,range:j.window.getSelection&&"Range"in j.window,documentMode:bn.isIE()?j.document.documentMode||7:10,fileApi:zn,ceFalse:!0,cacheSuffix:null,container:null,experimentalShadowDom:!1,canHaveCSP:!bn.isIE(),desktop:wn.isDesktop(),windowsPhone:En,browser:{current:bn.current,version:bn.version,isChrome:bn.isChrome,isEdge:bn.isEdge,isFirefox:bn.isFirefox,isIE:bn.isIE,isOpera:bn.isOpera,isSafari:bn.isSafari},os:{current:Cn.current,version:Cn.version,isAndroid:Cn.isAndroid,isFreeBSD:Cn.isFreeBSD,isiOS:Cn.isiOS,isLinux:Cn.isLinux,isOSX:Cn.isOSX,isSolaris:Cn.isSolaris,isWindows:Cn.isWindows},deviceType:{isDesktop:wn.isDesktop,isiPad:wn.isiPad,isiPhone:wn.isiPhone,isPhone:wn.isPhone,isTablet:wn.isTablet,isTouch:wn.isTouch,isWebView:wn.isWebView}},Sn=Array.isArray,kn={isArray:Sn,toArray:function(e){var t,n,r=e;if(!Sn(e))for(r=[],t=0,n=e.length;t<n;t++)r[t]=e[t];return r},each:dn,map:function(n,r){var o=[];return dn(n,function(e,t){o.push(r(e,t,n))}),o},filter:function(n,r){var o=[];return dn(n,function(e,t){r&&!r(e,t,n)||o.push(e)}),o},indexOf:function(e,t){var n,r;if(e)for(n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},reduce:function(e,t,n,r){var o=0;for(arguments.length<3&&(n=e[0]);o<e.length;o++)n=t.call(r,n,e[o],o);return n},findIndex:hn,find:function(e,t,n){var r=hn(e,t,n);return-1!==r?e[r]:undefined},last:function(e){return e[e.length-1]}},Tn=/^\s*|\s*$/g,An=function(e,n,r,o){o=o||this,e&&(r&&(e=e[r]),kn.each(e,function(e,t){if(!1===n.call(o,e,t,r))return!1;An(e,n,r,o)}))},Mn={trim:mn,isArray:kn.isArray,is:gn,toArray:kn.toArray,makeMap:function(e,t,n){var r;for(t=t||",","string"==typeof(e=e||[])&&(e=e.split(t)),n=n||{},r=e.length;r--;)n[e[r]]={};return n},each:kn.each,map:kn.map,grep:kn.filter,inArray:kn.indexOf,hasOwn:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},extend:function(e,t){for(var n,r,o,i=[],a=2;a<arguments.length;a++)i[a-2]=arguments[a];var u,s=arguments;for(n=1,r=s.length;n<r;n++)for(o in t=s[n])t.hasOwnProperty(o)&&(u=t[o])!==undefined&&(e[o]=u);return e},create:function(e,t,n){var r,o,i,a,u,s=this,c=0;if(e=/^((static) )?([\w.]+)(:([\w.]+))?/.exec(e),i=e[3].match(/(^|\.)(\w+)$/i)[2],!(o=s.createNS(e[3].replace(/\.\w+$/,""),n))[i]){if("static"===e[2])return o[i]=t,void(this.onCreate&&this.onCreate(e[2],e[3],o[i]));t[i]||(t[i]=function(){},c=1),o[i]=t[i],s.extend(o[i].prototype,t),e[5]&&(r=s.resolve(e[5]).prototype,a=e[5].match(/\.(\w+)$/i)[1],u=o[i],o[i]=c?function(){return r[a].apply(this,arguments)}:function(){return this.parent=r[a],u.apply(this,arguments)},o[i].prototype[i]=o[i],s.each(r,function(e,t){o[i].prototype[t]=r[t]}),s.each(t,function(e,t){r[t]?o[i].prototype[t]=function(){return this.parent=r[t],e.apply(this,arguments)}:t!==i&&(o[i].prototype[t]=e)})),s.each(t["static"],function(e,t){o[i][t]=e})}},walk:An,createNS:function(e,t){var n,r;for(t=t||j.window,e=e.split("."),n=0;n<e.length;n++)t[r=e[n]]||(t[r]={}),t=t[r];return t},resolve:function(e,t){var n,r;for(t=t||j.window,n=0,r=(e=e.split(".")).length;n<r&&(t=t[e[n]]);n++);return t},explode:function(e,t){return!e||gn(e,"array")?e:kn.map(e.split(t||","),mn)},_addCacheSuffix:function(e){var t=Nn.cacheSuffix;return t&&(e+=(-1===e.indexOf("?")?"?":"&")+t),e}};function Rn(t){var n;return function(e){return(n=n||function(e,t){for(var n={},r=0,o=e.length;r<o;r++){var i=e[r];n[String(i)]=t(i,r)}return n}(t,$(!0))).hasOwnProperty(ie(e))}}function Dn(e){return xt(e)&&!Vn(e)}function _n(e){return xt(e)&&"br"===ie(e)}function Bn(e){return e&&"SPAN"===e.tagName&&"bookmark"===e.getAttribute("data-mce-type")}var On,Hn,Pn,Ln=Rn(["h1","h2","h3","h4","h5","h6"]),Vn=Rn(["article","aside","details","div","dt","figcaption","footer","form","fieldset","header","hgroup","html","main","nav","section","summary","body","p","dl","multicol","dd","figure","address","center","blockquote","h1","h2","h3","h4","h5","h6","listing","xmp","pre","plaintext","menu","dir","ul","ol","li","hr","table","tbody","thead","tfoot","th","tr","td","caption"]),In=Rn(["h1","h2","h3","h4","h5","h6","p","div","address","pre","form","blockquote","center","dir","fieldset","header","footer","article","section","hgroup","aside","nav","figure"]),Fn=Rn(["ul","ol","dl"]),Un=Rn(["li","dd","dt"]),jn=Rn(["area","base","basefont","br","col","frame","hr","img","input","isindex","link","meta","param","embed","source","wbr","track"]),qn=Rn(["thead","tbody","tfoot"]),$n=Rn(["td","th"]),Wn=Rn(["pre","script","textarea","style"]),Kn=function(e,t){var n,r=t.childNodes;if(!Ge.isElement(t)||!Bn(t)){for(n=r.length-1;0<=n;n--)Kn(e,r[n]);if(!1===Ge.isDocument(t)){if(Ge.isText(t)&&0<t.nodeValue.length){var o=Mn.trim(t.nodeValue).length;if(e.isBlock(t.parentNode)||0<o)return;if(0===o&&function(e){var t=e.previousSibling&&"SPAN"===e.previousSibling.nodeName,n=e.nextSibling&&"SPAN"===e.nextSibling.nodeName;return t&&n}(t))return}else if(Ge.isElement(t)&&(1===(r=t.childNodes).length&&Bn(r[0])&&t.parentNode.insertBefore(r[0],t),r.length||jn(yt.fromDom(t))))return;e.remove(t)}return t}},Xn={trimNode:Kn},Yn=Mn.makeMap,Gn=/[&<>\"\u0060\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,Jn=/[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,Qn=/[<>&\"\']/g,Zn=/&#([a-z0-9]+);?|&([a-z0-9]+);/gi,er={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"};Hn={'"':"&quot;","'":"&#39;","<":"&lt;",">":"&gt;","&":"&amp;","`":"&#96;"},Pn={"&lt;":"<","&gt;":">","&amp;":"&","&quot;":'"',"&apos;":"'"};function tr(e,t){var n,r,o,i={};if(e){for(e=e.split(","),t=t||10,n=0;n<e.length;n+=2)r=String.fromCharCode(parseInt(e[n],t)),Hn[r]||(o="&"+e[n+1]+";",i[r]=o,i[o]=r);return i}}On=tr("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);function nr(e,t){return e.replace(t?Gn:Jn,function(e){return Hn[e]||e})}function rr(e,t){return e.replace(t?Gn:Jn,function(e){return 1<e.length?"&#"+(1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320)+65536)+";":Hn[e]||"&#"+e.charCodeAt(0)+";"})}function or(e,t,n){return n=n||On,e.replace(t?Gn:Jn,function(e){return Hn[e]||n[e]||e})}var ir={encodeRaw:nr,encodeAllRaw:function(e){return(""+e).replace(Qn,function(e){return Hn[e]||e})},encodeNumeric:rr,encodeNamed:or,getEncodeFunc:function(e,t){var n=tr(t)||On,r=Yn(e.replace(/\+/g,","));return r.named&&r.numeric?function(e,t){return e.replace(t?Gn:Jn,function(e){return Hn[e]!==undefined?Hn[e]:n[e]!==undefined?n[e]:1<e.length?"&#"+(1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320)+65536)+";":"&#"+e.charCodeAt(0)+";"})}:r.named?t?function(e,t){return or(e,t,n)}:or:r.numeric?rr:nr},decode:function(e){return e.replace(Zn,function(e,t){return t?65535<(t="x"===t.charAt(0).toLowerCase()?parseInt(t.substr(1),16):parseInt(t,10))?(t-=65536,String.fromCharCode(55296+(t>>10),56320+(1023&t))):er[t]||String.fromCharCode(t):Pn[e]||On[e]||function(e){var t;return(t=yt.fromTag("div").dom()).innerHTML=e,t.textContent||t.innerText||e}(e)})}},ar={},ur={},sr=Mn.makeMap,cr=Mn.each,lr=Mn.extend,fr=Mn.explode,dr=Mn.inArray,hr=function(e,t){return(e=Mn.trim(e))?e.split(t||" "):[]},mr=function(e){function t(e,t,n){function r(e,t){var n,r,o={};for(n=0,r=e.length;n<r;n++)o[e[n]]=t||{};return o}var o,i,a;for(t=t||"","string"==typeof(n=n||[])&&(n=hr(n)),o=(e=hr(e)).length;o--;)a={attributes:r(i=hr([u,t].join(" "))),attributesOrder:i,children:r(n,ur)},c[e[o]]=a}function n(e,t){var n,r,o,i;for(n=(e=hr(e)).length,t=hr(t);n--;)for(r=c[e[n]],o=0,i=t.length;o<i;o++)r.attributes[t[o]]={},r.attributesOrder.push(t[o])}var u,r,o,i,a,s,c={};return ar[e]?ar[e]:(u="id accesskey class dir lang style tabindex title role",r="address blockquote div dl fieldset form h1 h2 h3 h4 h5 h6 hr menu ol p pre table ul",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","html4"!==e&&(u+=" contenteditable contextmenu draggable dropzone hidden spellcheck translate",r+=" article aside details dialog figure main header footer hgroup section nav",o+=" audio canvas command datalist mark meter output picture progress time wbr video ruby bdi keygen"),"html5-strict"!==e&&(u+=" xml:lang",o=[o,s="acronym applet basefont big font strike tt"].join(" "),cr(hr(s),function(e){t(e,"",o)}),r=[r,a="center dir isindex noframes"].join(" "),i=[r,o].join(" "),cr(hr(a),function(e){t(e,"",i)})),i=i||[r,o].join(" "),t("html","manifest","head body"),t("head","","base command link meta noscript script style title"),t("title hr noscript br"),t("base","href target"),t("link","href rel media hreflang type sizes hreflang"),t("meta","name http-equiv content charset"),t("style","media type scoped"),t("script","src async defer type charset"),t("body","onafterprint onbeforeprint onbeforeunload onblur onerror onfocus onhashchange onload onmessage onoffline ononline onpagehide onpageshow onpopstate onresize onscroll onstorage onunload",i),t("address dt dd div caption","",i),t("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","",o),t("blockquote","cite",i),t("ol","reversed start type","li"),t("ul","","li"),t("li","value",i),t("dl","","dt dd"),t("a","href target rel media hreflang type",o),t("q","cite",o),t("ins del","cite datetime",i),t("img","src sizes srcset alt usemap ismap width height"),t("iframe","src name width height",i),t("embed","src type width height"),t("object","data type typemustmatch name usemap form width height",[i,"param"].join(" ")),t("param","name value"),t("map","name",[i,"area"].join(" ")),t("area","alt coords shape href target rel media hreflang type"),t("table","border","caption colgroup thead tfoot tbody tr"+("html4"===e?" col":"")),t("colgroup","span","col"),t("col","span"),t("tbody thead tfoot","","tr"),t("tr","","td th"),t("td","colspan rowspan headers",i),t("th","colspan rowspan headers scope abbr",i),t("form","accept-charset action autocomplete enctype method name novalidate target",i),t("fieldset","disabled form name",[i,"legend"].join(" ")),t("label","form for",o),t("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"),t("button","disabled form formaction formenctype formmethod formnovalidate formtarget name type value","html4"===e?i:o),t("select","disabled form multiple name required size","option optgroup"),t("optgroup","disabled label","option"),t("option","disabled label selected value"),t("textarea","cols dirname disabled form maxlength name readonly required rows wrap"),t("menu","type label",[i,"li"].join(" ")),t("noscript","",i),"html4"!==e&&(t("wbr"),t("ruby","",[o,"rt rp"].join(" ")),t("figcaption","",i),t("mark rt rp summary bdi","",o),t("canvas","width height",i),t("video","src crossorigin poster preload autoplay mediagroup loop muted controls width height buffered",[i,"track source"].join(" ")),t("audio","src crossorigin preload autoplay mediagroup loop muted controls buffered volume",[i,"track source"].join(" ")),t("picture","","img source"),t("source","src srcset type media sizes"),t("track","kind src srclang label default"),t("datalist","",[o,"option"].join(" ")),t("article section nav aside main header footer","",i),t("hgroup","","h1 h2 h3 h4 h5 h6"),t("figure","",[i,"figcaption"].join(" ")),t("time","datetime",o),t("dialog","open",i),t("command","type label icon disabled checked radiogroup command"),t("output","for form name",o),t("progress","value max",o),t("meter","value min max low high optimum",o),t("details","open",[i,"summary"].join(" ")),t("keygen","autofocus challenge disabled form keytype name")),"html5-strict"!==e&&(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")),"html4"!==e&&(n("input button select textarea","autofocus"),n("input textarea","placeholder"),n("a","download"),n("link script img","crossorigin"),n("iframe","sandbox seamless allowfullscreen")),cr(hr("a form meter progress dfn"),function(e){c[e]&&delete c[e].children[e]}),delete c.caption.children.table,delete c.script,ar[e]=c)},gr=function(e,n){var r;return e&&(r={},"string"==typeof e&&(e={"*":e}),cr(e,function(e,t){r[t]=r[t.toUpperCase()]="map"===n?sr(e,/[, ]/):fr(e,/[, ]/)})),r};function pr(i){function e(e,t,n){var r=i[e];return r?r=sr(r,/[, ]/,sr(r.toUpperCase(),/[, ]/)):(r=ar[e])||(r=sr(t," ",sr(t.toUpperCase()," ")),r=lr(r,n),ar[e]=r),r}var t,n,r,o,a,u,s,c,l,f,d,h,m,z={},g={},E=[],p={},v={};r=mr((i=i||{}).schema),!1===i.verify_html&&(i.valid_elements="*[*]"),t=gr(i.valid_styles),n=gr(i.invalid_styles,"map"),c=gr(i.valid_classes,"map"),o=e("whitespace_elements","pre script noscript style textarea video audio iframe object code"),a=e("self_closing_elements","colgroup dd dt li option p td tfoot th thead tr"),u=e("short_ended_elements","area base basefont br col frame hr img input isindex link meta param embed source wbr track"),s=e("boolean_attributes","checked compact declare defer disabled ismap multiple nohref noresize noshade nowrap readonly selected autoplay loop controls"),f=e("non_empty_elements","td th iframe video audio object script pre code",u),d=e("move_caret_before_on_enter_elements","table",f),h=e("text_block_elements","h1 h2 h3 h4 h5 h6 p div address pre form blockquote center dir fieldset header footer article section hgroup aside main nav figure"),l=e("block_elements","hr table tbody thead tfoot th tr td li ol ul caption dl dt dd noscript menu isindex option datalist select optgroup figcaption details summary",h),m=e("text_inline_elements","span strong b em i font strike u var cite dfn code mark q sup sub samp"),cr((i.special||"script noscript noframes noembed title style textarea xmp").split(" "),function(e){v[e]=new RegExp("</"+e+"[^>]*>","gi")});function N(e){return new RegExp("^"+e.replace(/([?+*])/g,".$1")+"$")}function y(e){var t,n,r,o,i,a,u,s,c,l,f,d,h,m,g,p,v,y,b,C=/^([#+\-])?([^\[!\/]+)(?:\/([^\[!]+))?(?:(!?)\[([^\]]+)\])?$/,w=/^([!\-])?(\w+[\\:]:\w+|[^=:<]+)?(?:([=:<])(.*))?$/,x=/[*?+]/;if(e)for(e=hr(e,","),z["@"]&&(p=z["@"].attributes,v=z["@"].attributesOrder),t=0,n=e.length;t<n;t++)if(i=C.exec(e[t])){if(m=i[1],c=i[2],g=i[3],s=i[5],a={attributes:d={},attributesOrder:h=[]},"#"===m&&(a.paddEmpty=!0),"-"===m&&(a.removeEmpty=!0),"!"===i[4]&&(a.removeEmptyAttrs=!0),p){for(y in p)d[y]=p[y];h.push.apply(h,v)}if(s)for(r=0,o=(s=hr(s,"|")).length;r<o;r++)if(i=w.exec(s[r])){if(u={},f=i[1],l=i[2].replace(/[\\:]:/g,":"),m=i[3],b=i[4],"!"===f&&(a.attributesRequired=a.attributesRequired||[],a.attributesRequired.push(l),u.required=!0),"-"===f){delete d[l],h.splice(dr(h,l),1);continue}m&&("="===m&&(a.attributesDefault=a.attributesDefault||[],a.attributesDefault.push({name:l,value:b}),u.defaultValue=b),":"===m&&(a.attributesForced=a.attributesForced||[],a.attributesForced.push({name:l,value:b}),u.forcedValue=b),"<"===m&&(u.validValues=sr(b,"?"))),x.test(l)?(a.attributePatterns=a.attributePatterns||[],u.pattern=N(l),a.attributePatterns.push(u)):(d[l]||h.push(l),d[l]=u)}p||"@"!==c||(p=d,v=h),g&&(a.outputName=c,z[g]=a),x.test(c)?(a.pattern=N(c),E.push(a)):z[c]=a}}function b(e){z={},E=[],y(e),cr(r,function(e,t){g[t]=e.children})}function C(e){var a=/^(~)?(.+)$/;e&&(ar.text_block_elements=ar.block_elements=null,cr(hr(e,","),function(e){var t=a.exec(e),n="~"===t[1],r=n?"span":"div",o=t[2];if(g[o]=g[r],p[o]=r,n||(l[o.toUpperCase()]={},l[o]={}),!z[o]){var i=z[r];delete(i=lr({},i)).removeEmptyAttrs,delete i.removeEmpty,z[o]=i}cr(g,function(e,t){e[r]&&(g[t]=e=lr({},g[t]),e[o]=e[r])})}))}function w(e){var o=/^([+\-]?)(\w+)\[([^\]]+)\]$/;ar[i.schema]=null,e&&cr(hr(e,","),function(e){var t,n,r=o.exec(e);r&&(n=r[1],t=n?g[r[2]]:g[r[2]]={"#comment":{}},t=g[r[2]],cr(hr(r[3],"|"),function(e){"-"===n?delete t[e]:t[e]={}}))})}function x(e){var t,n=z[e];if(n)return n;for(t=E.length;t--;)if((n=E[t]).pattern.test(e))return n}i.valid_elements?b(i.valid_elements):(cr(r,function(e,t){z[t]={attributes:e.attributes,attributesOrder:e.attributesOrder},g[t]=e.children}),"html5"!==i.schema&&cr(hr("strong/b em/i"),function(e){e=hr(e,"/"),z[e[1]].outputName=e[0]}),cr(hr("ol ul sub sup blockquote span font a table tbody tr strong em b i"),function(e){z[e]&&(z[e].removeEmpty=!0)}),cr(hr("p h1 h2 h3 h4 h5 h6 th td pre div address caption li"),function(e){z[e].paddEmpty=!0}),cr(hr("span"),function(e){z[e].removeEmptyAttrs=!0})),C(i.custom_elements),w(i.valid_children),y(i.extended_valid_elements),w("+ol[ul|ol],+ul[ul|ol]"),cr({dd:"dl",dt:"dl",li:"ul ol",td:"tr",th:"tr",tr:"tbody thead tfoot",tbody:"table",thead:"table",tfoot:"table",legend:"fieldset",area:"map",param:"video audio object"},function(e,t){z[t]&&(z[t].parentsRequired=hr(e))}),i.invalid_elements&&cr(fr(i.invalid_elements),function(e){z[e]&&delete z[e]}),x("span")||y("span[!data-mce-type|*]");return{children:g,elements:z,getValidStyles:function(){return t},getValidClasses:function(){return c},getBlockElements:function(){return l},getInvalidStyles:function(){return n},getShortEndedElements:function(){return u},getTextBlockElements:function(){return h},getTextInlineElements:function(){return m},getBoolAttrs:function(){return s},getElementRule:x,getSelfClosingElements:function(){return a},getNonEmptyElements:function(){return f},getMoveCaretBeforeOnEnterElements:function(){return d},getWhiteSpaceElements:function(){return o},getSpecialElements:function(){return v},isValidChild:function(e,t){var n=g[e.toLowerCase()];return!(!n||!n[t.toLowerCase()])},isValid:function(e,t){var n,r,o=x(e);if(o){if(!t)return!0;if(o.attributes[t])return!0;if(n=o.attributePatterns)for(r=n.length;r--;)if(n[r].pattern.test(e))return!0}return!1},getCustomElements:function(){return p},addValidElements:y,setValidElements:b,addCustomElements:C,addValidChildren:w}}function vr(e,t,n,r){function o(e){return 1<(e=parseInt(e,10).toString(16)).length?e:"0"+e}return"#"+o(t)+o(n)+o(r)}function yr(e,t,n,r){e.addEventListener?e.addEventListener(t,n,r||!1):e.attachEvent&&e.attachEvent("on"+t,n)}function br(e,t,n,r){e.removeEventListener?e.removeEventListener(t,n,r||!1):e.detachEvent&&e.detachEvent("on"+t,n)}function Cr(e,t){var n,r=t||{};for(n in e)Er[n]||(r[n]=e[n]);if(r.target||(r.target=r.srcElement||j.document),Nn.experimentalShadowDom&&(r.target=function(e,t){if(e.composedPath){var n=e.composedPath();if(n&&0<n.length)return n[0]}return t}(e,r.target)),e&&zr.test(e.type)&&e.pageX===undefined&&e.clientX!==undefined){var o=r.target.ownerDocument||j.document,i=o.documentElement,a=o.body;r.pageX=e.clientX+(i&&i.scrollLeft||a&&a.scrollLeft||0)-(i&&i.clientLeft||a&&a.clientLeft||0),r.pageY=e.clientY+(i&&i.scrollTop||a&&a.scrollTop||0)-(i&&i.clientTop||a&&a.clientTop||0)}return r.preventDefault=function(){r.isDefaultPrevented=Sr,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},r.stopPropagation=function(){r.isPropagationStopped=Sr,e&&(e.stopPropagation?e.stopPropagation():e.cancelBubble=!0)},!(r.stopImmediatePropagation=function(){r.isImmediatePropagationStopped=Sr,r.stopPropagation()})===function(e){return e.isDefaultPrevented===Sr||e.isDefaultPrevented===Nr}(r)&&(r.isDefaultPrevented=Nr,r.isPropagationStopped=Nr,r.isImmediatePropagationStopped=Nr),"undefined"==typeof r.metaKey&&(r.metaKey=!1),r}function wr(e,t,n){var r=e.document,o={type:"ready"};if(n.domLoaded)t(o);else{var i=function(){br(e,"DOMContentLoaded",i),br(e,"load",i),n.domLoaded||(n.domLoaded=!0,t(o))};"complete"===r.readyState||"interactive"===r.readyState&&r.body?i():yr(e,"DOMContentLoaded",i),yr(e,"load",i)}}var xr=function(b,e){var C,t,c,l,w=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi,x=/(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,z=/\s*([^:]+):\s*([^;]+);?/g,E=/\s+$/,N={},S="\ufeff";for(b=b||{},e&&(c=e.getValidStyles(),l=e.getInvalidStyles()),t=("\\\" \\' \\; \\: ; : "+S).split(" "),C=0;C<t.length;C++)N[t[C]]=S+C,N[S+C]=t[C];return{toHex:function(e){return e.replace(w,vr)},parse:function(e){function t(e,t,n){var r,o,i,a;if((r=p[e+"-top"+t])&&(o=p[e+"-right"+t])&&(i=p[e+"-bottom"+t])&&(a=p[e+"-left"+t])){var u=[r,o,i,a];for(C=u.length-1;C--&&u[C]===u[C+1];);-1<C&&n||(p[e+t]=-1===C?u[0]:u.join(" "),delete p[e+"-top"+t],delete p[e+"-right"+t],delete p[e+"-bottom"+t],delete p[e+"-left"+t])}}function n(e){var t,n=p[e];if(n){for(t=(n=n.split(" ")).length;t--;)if(n[t]!==n[0])return!1;return p[e]=n[0],!0}}function r(e){return f=!0,N[e]}function u(e,t){return f&&(e=e.replace(/\uFEFF[0-9]/g,function(e){return N[e]})),t||(e=e.replace(/\\([\'\";:])/g,"$1")),e}function o(e){return String.fromCharCode(parseInt(e.slice(1),16))}function i(e){return e.replace(/\\[0-9a-f]+/gi,o)}function a(e,t,n,r,o,i){if(o=o||i)return"'"+(o=u(o)).replace(/\'/g,"\\'")+"'";if(t=u(t||n||r),!b.allow_script_urls){var a=t.replace(/[\s\r\n]+/g,"");if(/(java|vb)script:/i.test(a))return"";if(!b.allow_svg_data_urls&&/^data:image\/svg/i.test(a))return""}return v&&(t=v.call(y,t,"style")),"url('"+t.replace(/\'/g,"\\'")+"')"}var s,c,l,f,d,h,m,g,p={},v=b.url_converter,y=b.url_converter_scope||this;if(e){for(e=(e=e.replace(/[\u0000-\u001F]/g,"")).replace(/\\[\"\';:\uFEFF]/g,r).replace(/\"[^\"]+\"|\'[^\']+\'/g,function(e){return e.replace(/[;:]/g,r)});s=z.exec(e);)if(z.lastIndex=s.index+s[0].length,c=s[1].replace(E,"").toLowerCase(),l=s[2].replace(E,""),c&&l){if(c=i(c),l=i(l),-1!==c.indexOf(S)||-1!==c.indexOf('"'))continue;if(!b.allow_script_urls&&("behavior"===c||/expression\s*\(|\/\*|\*\//.test(l)))continue;"font-weight"===c&&"700"===l?l="bold":"color"!==c&&"background-color"!==c||(l=l.toLowerCase()),l=(l=l.replace(w,vr)).replace(x,a),p[c]=f?u(l,!0):l}t("border","",!0),t("border","-width"),t("border","-color"),t("border","-style"),t("padding",""),t("margin",""),d="border",m="border-style",g="border-color",n(h="border-width")&&n(m)&&n(g)&&(p[d]=p[h]+" "+p[m]+" "+p[g],delete p[h],delete p[m],delete p[g]),"medium none"===p.border&&delete p.border,"none"===p["border-image"]&&delete p["border-image"]}return p},serialize:function(i,e){function t(e){var t,n,r,o;if(t=c[e])for(n=0,r=t.length;n<r;n++)e=t[n],(o=i[e])&&(s+=(0<s.length?" ":"")+e+": "+o+";")}var n,r,o,a,u,s="";if(e&&c)t("*"),t(e);else for(n in i)!(r=i[n])||l&&(o=n,a=e,u=void 0,(u=l["*"])&&u[o]||(u=l[a])&&u[o])||(s+=(0<s.length?" ":"")+n+": "+r+";");return s}}},zr=/^(?:mouse|contextmenu)|click/,Er={keyLocation:1,layerX:1,layerY:1,returnValue:1,webkitMovementX:1,webkitMovementY:1,keyIdentifier:1,mozPressure:1},Nr=function(){return!1},Sr=function(){return!0},kr=(Tr.prototype.bind=function(e,t,n,r){function o(e){d.executeHandlers(Cr(e||h.event),i)}var i,a,u,s,c,l,f,d=this,h=j.window;if(e&&3!==e.nodeType&&8!==e.nodeType){e[d.expando]?i=e[d.expando]:(i=d.count++,e[d.expando]=i,d.events[i]={}),r=r||e;var m=t.split(" ");for(u=m.length;u--;)l=o,c=f=!1,"DOMContentLoaded"===(s=m[u])&&(s="ready"),d.domLoaded&&"ready"===s&&"complete"===e.readyState?n.call(r,Cr({type:s})):(d.hasMouseEnterLeave||(c=d.mouseEnterLeave[s])&&(l=function(e){var t,n;if(t=e.currentTarget,(n=e.relatedTarget)&&t.contains)n=t.contains(n);else for(;n&&n!==t;)n=n.parentNode;n||((e=Cr(e||h.event)).type="mouseout"===e.type?"mouseleave":"mouseenter",e.target=t,d.executeHandlers(e,i))}),d.hasFocusIn||"focusin"!==s&&"focusout"!==s||(f=!0,c="focusin"===s?"focus":"blur",l=function(e){(e=Cr(e||h.event)).type="focus"===e.type?"focusin":"focusout",d.executeHandlers(e,i)}),(a=d.events[i][s])?"ready"===s&&d.domLoaded?n(Cr({type:s})):a.push({func:n,scope:r}):(d.events[i][s]=a=[{func:n,scope:r}],a.fakeName=c,a.capture=f,a.nativeHandler=l,"ready"===s?wr(e,l,d):yr(e,c||s,l,f)));return e=a=0,n}},Tr.prototype.unbind=function(e,t,n){var r,o,i,a,u,s;if(!e||3===e.nodeType||8===e.nodeType)return this;if(r=e[this.expando]){if(s=this.events[r],t){var c=t.split(" ");for(i=c.length;i--;)if(o=s[u=c[i]]){if(n)for(a=o.length;a--;)if(o[a].func===n){var l=o.nativeHandler,f=o.fakeName,d=o.capture;(o=o.slice(0,a).concat(o.slice(a+1))).nativeHandler=l,o.fakeName=f,o.capture=d,s[u]=o}n&&0!==o.length||(delete s[u],br(e,o.fakeName||u,o.nativeHandler,o.capture))}}else{for(u in s)o=s[u],br(e,o.fakeName||u,o.nativeHandler,o.capture);s={}}for(u in s)return this;delete this.events[r];try{delete e[this.expando]}catch(h){e[this.expando]=null}}return this},Tr.prototype.fire=function(e,t,n){var r;if(!e||3===e.nodeType||8===e.nodeType)return this;var o=Cr(null,n);for(o.type=t,o.target=e;(r=e[this.expando])&&this.executeHandlers(o,r),(e=e.parentNode||e.ownerDocument||e.defaultView||e.parentWindow)&&!o.isPropagationStopped(););return this},Tr.prototype.clean=function(e){var t,n;if(!e||3===e.nodeType||8===e.nodeType)return this;if(e[this.expando]&&this.unbind(e),e.getElementsByTagName||(e=e.document),e&&e.getElementsByTagName)for(this.unbind(e),t=(n=e.getElementsByTagName("*")).length;t--;)(e=n[t])[this.expando]&&this.unbind(e);return this},Tr.prototype.destroy=function(){this.events={}},Tr.prototype.cancel=function(e){return e&&(e.preventDefault(),e.stopImmediatePropagation()),!1},Tr.prototype.executeHandlers=function(e,t){var n,r,o,i,a=this.events[t];if(n=a&&a[e.type])for(r=0,o=n.length;r<o;r++)if((i=n[r])&&!1===i.func.call(i.scope,e)&&e.preventDefault(),e.isImmediatePropagationStopped())return},Tr.Event=new Tr,Tr);function Tr(){this.domLoaded=!1,this.events={},this.count=1,this.expando="mce-data-"+(+new Date).toString(32),this.hasMouseEnterLeave="onmouseenter"in j.document.documentElement,this.hasFocusIn="onfocusin"in j.document.documentElement,this.count=1}function Ar(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(65536+r):String.fromCharCode(r>>10|55296,1023&r|56320)}var Mr,Rr,Dr,_r,Br,Or,Hr,Pr,Lr,Vr,Ir,Fr,Ur,jr,qr,$r,Wr,Kr,Xr="sizzle"+-new Date,Yr=j.window.document,Gr=0,Jr=0,Qr=Mo(),Zr=Mo(),eo=Mo(),to=function(e,t){return e===t&&(Ir=!0),0},no=typeof undefined,ro={}.hasOwnProperty,oo=[],io=oo.pop,ao=oo.push,uo=oo.push,so=oo.slice,co=oo.indexOf||function(e){for(var t=0,n=this.length;t<n;t++)if(this[t]===e)return t;return-1},lo="[\\x20\\t\\r\\n\\f]",fo="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",ho="\\["+lo+"*("+fo+")(?:"+lo+"*([*^$|!~]?=)"+lo+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+fo+"))|)"+lo+"*\\]",mo=":("+fo+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+ho+")*)|.*)\\)|)",go=new RegExp("^"+lo+"+|((?:^|[^\\\\])(?:\\\\.)*)"+lo+"+$","g"),po=new RegExp("^"+lo+"*,"+lo+"*"),vo=new RegExp("^"+lo+"*([>+~]|"+lo+")"+lo+"*"),yo=new RegExp("="+lo+"*([^\\]'\"]*?)"+lo+"*\\]","g"),bo=new RegExp(mo),Co=new RegExp("^"+fo+"$"),wo={ID:new RegExp("^#("+fo+")"),CLASS:new RegExp("^\\.("+fo+")"),TAG:new RegExp("^("+fo+"|[*])"),ATTR:new RegExp("^"+ho),PSEUDO:new RegExp("^"+mo),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+lo+"*(even|odd|(([+-]|)(\\d*)n|)"+lo+"*(?:([+-]|)"+lo+"*(\\d+)|))"+lo+"*\\)|)","i"),bool:new RegExp("^(?:checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped)$","i"),needsContext:new RegExp("^"+lo+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+lo+"*((?:-\\d)?\\d*)"+lo+"*\\)|)(?=[^-]|$)","i")},xo=/^(?:input|select|textarea|button)$/i,zo=/^h\d$/i,Eo=/^[^{]+\{\s*\[native \w/,No=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,So=/[+~]/,ko=/'|\\/g,To=new RegExp("\\\\([\\da-f]{1,6}"+lo+"?|("+lo+")|.)","ig");try{uo.apply(oo=so.call(Yr.childNodes),Yr.childNodes),oo[Yr.childNodes.length].nodeType}catch(yN){uo={apply:oo.length?function(e,t){ao.apply(e,so.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}var Ao=function(e,t,n,r){var o,i,a,u,s,c,l,f,d,h;if((t?t.ownerDocument||t:Yr)!==Ur&&Fr(t),n=n||[],!e||"string"!=typeof e)return n;if(1!==(u=(t=t||Ur).nodeType)&&9!==u)return[];if(qr&&!r){if(o=No.exec(e))if(a=o[1]){if(9===u){if(!(i=t.getElementById(a))||!i.parentNode)return n;if(i.id===a)return n.push(i),n}else if(t.ownerDocument&&(i=t.ownerDocument.getElementById(a))&&Kr(t,i)&&i.id===a)return n.push(i),n}else{if(o[2])return uo.apply(n,t.getElementsByTagName(e)),n;if((a=o[3])&&Rr.getElementsByClassName)return uo.apply(n,t.getElementsByClassName(a)),n}if(Rr.qsa&&(!$r||!$r.test(e))){if(f=l=Xr,d=t,h=9===u&&e,1===u&&"object"!==t.nodeName.toLowerCase()){for(c=Or(e),(l=t.getAttribute("id"))?f=l.replace(ko,"\\$&"):t.setAttribute("id",f),f="[id='"+f+"'] ",s=c.length;s--;)c[s]=f+Lo(c[s]);d=So.test(e)&&Ho(t.parentNode)||t,h=c.join(",")}if(h)try{return uo.apply(n,d.querySelectorAll(h)),n}catch(m){}finally{l||t.removeAttribute("id")}}}return Pr(e.replace(go,"$1"),t,n,r)};function Mo(){var n=[];return function r(e,t){return n.push(e+" ")>Dr.cacheLength&&delete r[n.shift()],r[e+" "]=t}}function Ro(e){return e[Xr]=!0,e}function Do(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||1<<31)-(~e.sourceIndex||1<<31);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function _o(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function Bo(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function Oo(a){return Ro(function(i){return i=+i,Ro(function(e,t){for(var n,r=a([],e.length,i),o=r.length;o--;)e[n=r[o]]&&(e[n]=!(t[n]=e[n]))})})}function Ho(e){return e&&typeof e.getElementsByTagName!=no&&e}for(Mr in Rr=Ao.support={},Br=Ao.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},Fr=Ao.setDocument=function(e){var t,s=e?e.ownerDocument||e:Yr,n=s.defaultView;return s!==Ur&&9===s.nodeType&&s.documentElement?(jr=(Ur=s).documentElement,qr=!Br(s),n&&n!==function r(e){try{return e.top}catch(t){}return null}(n)&&(n.addEventListener?n.addEventListener("unload",function(){Fr()},!1):n.attachEvent&&n.attachEvent("onunload",function(){Fr()})),Rr.attributes=!0,Rr.getElementsByTagName=!0,Rr.getElementsByClassName=Eo.test(s.getElementsByClassName),Rr.getById=!0,Dr.find.ID=function(e,t){if(typeof t.getElementById!=no&&qr){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},Dr.filter.ID=function(e){var t=e.replace(To,Ar);return function(e){return e.getAttribute("id")===t}},Dr.find.TAG=Rr.getElementsByTagName?function(e,t){if(typeof t.getElementsByTagName!=no)return t.getElementsByTagName(e)}:function(e,t){var n,r=[],o=0,i=t.getElementsByTagName(e);if("*"!==e)return i;for(;n=i[o++];)1===n.nodeType&&r.push(n);return r},Dr.find.CLASS=Rr.getElementsByClassName&&function(e,t){if(qr)return t.getElementsByClassName(e)},Wr=[],$r=[],Rr.disconnectedMatch=!0,$r=$r.length&&new RegExp($r.join("|")),Wr=Wr.length&&new RegExp(Wr.join("|")),t=Eo.test(jr.compareDocumentPosition),Kr=t||Eo.test(jr.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},to=t?function(e,t){if(e===t)return Ir=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!Rr.sortDetached&&t.compareDocumentPosition(e)===n?e===s||e.ownerDocument===Yr&&Kr(Yr,e)?-1:t===s||t.ownerDocument===Yr&&Kr(Yr,t)?1:Vr?co.call(Vr,e)-co.call(Vr,t):0:4&n?-1:1)}:function(e,t){if(e===t)return Ir=!0,0;var n,r=0,o=e.parentNode,i=t.parentNode,a=[e],u=[t];if(!o||!i)return e===s?-1:t===s?1:o?-1:i?1:Vr?co.call(Vr,e)-co.call(Vr,t):0;if(o===i)return Do(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)u.unshift(n);for(;a[r]===u[r];)r++;return r?Do(a[r],u[r]):a[r]===Yr?-1:u[r]===Yr?1:0},s):Ur},Ao.matches=function(e,t){return Ao(e,null,null,t)},Ao.matchesSelector=function(e,t){if((e.ownerDocument||e)!==Ur&&Fr(e),t=t.replace(yo,"='$1']"),Rr.matchesSelector&&qr&&(!Wr||!Wr.test(t))&&(!$r||!$r.test(t)))try{var n=(void 0).call(e,t);if(n||Rr.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(yN){}return 0<Ao(t,Ur,null,[e]).length},Ao.contains=function(e,t){return(e.ownerDocument||e)!==Ur&&Fr(e),Kr(e,t)},Ao.attr=function(e,t){(e.ownerDocument||e)!==Ur&&Fr(e);var n=Dr.attrHandle[t.toLowerCase()],r=n&&ro.call(Dr.attrHandle,t.toLowerCase())?n(e,t,!qr):undefined;return r!==undefined?r:Rr.attributes||!qr?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},Ao.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},Ao.uniqueSort=function(e){var t,n=[],r=0,o=0;if(Ir=!Rr.detectDuplicates,Vr=!Rr.sortStable&&e.slice(0),e.sort(to),Ir){for(;t=e[o++];)t===e[o]&&(r=n.push(o));for(;r--;)e.splice(n[r],1)}return Vr=null,e},_r=Ao.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=_r(e)}else if(3===o||4===o)return e.nodeValue}else for(;t=e[r++];)n+=_r(t);return n},(Dr=Ao.selectors={cacheLength:50,createPseudo:Ro,match:wo,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(To,Ar),e[3]=(e[3]||e[4]||e[5]||"").replace(To,Ar),"~="===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]||Ao.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]&&Ao.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return wo.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&bo.test(n)&&(t=Or(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(To,Ar).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=Qr[e+" "];return t||(t=new RegExp("(^|"+lo+")"+e+"("+lo+"|$)"))&&Qr(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!=no&&e.getAttribute("class")||"")})},ATTR:function(n,r,o){return function(e){var t=Ao.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===o:"!="===r?t!==o:"^="===r?o&&0===t.indexOf(o):"*="===r?o&&-1<t.indexOf(o):"$="===r?o&&t.slice(-o.length)===o:"~="===r?-1<(" "+t+" ").indexOf(o):"|="===r&&(t===o||t.slice(0,o.length+1)===o+"-"))}},CHILD:function(h,e,t,m,g){var p="nth"!==h.slice(0,3),v="last"!==h.slice(-4),y="of-type"===e;return 1===m&&0===g?function(e){return!!e.parentNode}:function(e,t,n){var r,o,i,a,u,s,c=p!=v?"nextSibling":"previousSibling",l=e.parentNode,f=y&&e.nodeName.toLowerCase(),d=!n&&!y;if(l){if(p){for(;c;){for(i=e;i=i[c];)if(y?i.nodeName.toLowerCase()===f:1===i.nodeType)return!1;s=c="only"===h&&!s&&"nextSibling"}return!0}if(s=[v?l.firstChild:l.lastChild],v&&d){for(u=(r=(o=l[Xr]||(l[Xr]={}))[h]||[])[0]===Gr&&r[1],a=r[0]===Gr&&r[2],i=u&&l.childNodes[u];i=++u&&i&&i[c]||(a=u=0)||s.pop();)if(1===i.nodeType&&++a&&i===e){o[h]=[Gr,u,a];break}}else if(d&&(r=(e[Xr]||(e[Xr]={}))[h])&&r[0]===Gr)a=r[1];else for(;(i=++u&&i&&i[c]||(a=u=0)||s.pop())&&((y?i.nodeName.toLowerCase()!==f:1!==i.nodeType)||!++a||(d&&((i[Xr]||(i[Xr]={}))[h]=[Gr,a]),i!==e)););return(a-=g)===m||a%m==0&&0<=a/m}}},PSEUDO:function(e,i){var t,a=Dr.pseudos[e]||Dr.setFilters[e.toLowerCase()]||Ao.error("unsupported pseudo: "+e);return a[Xr]?a(i):1<a.length?(t=[e,e,"",i],Dr.setFilters.hasOwnProperty(e.toLowerCase())?Ro(function(e,t){for(var n,r=a(e,i),o=r.length;o--;)e[n=co.call(e,r[o])]=!(t[n]=r[o])}):function(e){return a(e,0,t)}):a}},pseudos:{not:Ro(function(e){var r=[],o=[],u=Hr(e.replace(go,"$1"));return u[Xr]?Ro(function(e,t,n,r){for(var o,i=u(e,null,r,[]),a=e.length;a--;)(o=i[a])&&(e[a]=!(t[a]=o))}):function(e,t,n){return r[0]=e,u(r,null,n,o),!o.pop()}}),has:Ro(function(t){return function(e){return 0<Ao(t,e).length}}),contains:Ro(function(t){return t=t.replace(To,Ar),function(e){return-1<(e.textContent||e.innerText||_r(e)).indexOf(t)}}),lang:Ro(function(n){return Co.test(n||"")||Ao.error("unsupported lang: "+n),n=n.replace(To,Ar).toLowerCase(),function(e){var t;do{if(t=qr?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=j.window.location&&j.window.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===jr},focus:function(e){return e===Ur.activeElement&&(!Ur.hasFocus||Ur.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!Dr.pseudos.empty(e)},header:function(e){return zo.test(e.nodeName)},input:function(e){return xo.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:Oo(function(){return[0]}),last:Oo(function(e,t){return[t-1]}),eq:Oo(function(e,t,n){return[n<0?n+t:n]}),even:Oo(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:Oo(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:Oo(function(e,t,n){for(var r=n<0?n+t:n;0<=--r;)e.push(r);return e}),gt:Oo(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=Dr.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})Dr.pseudos[Mr]=_o(Mr);for(Mr in{submit:!0,reset:!0})Dr.pseudos[Mr]=Bo(Mr);function Po(){}function Lo(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function Vo(a,e,t){var u=e.dir,s=t&&"parentNode"===u,c=Jr++;return e.first?function(e,t,n){for(;e=e[u];)if(1===e.nodeType||s)return a(e,t,n)}:function(e,t,n){var r,o,i=[Gr,c];if(n){for(;e=e[u];)if((1===e.nodeType||s)&&a(e,t,n))return!0}else for(;e=e[u];)if(1===e.nodeType||s){if((r=(o=e[Xr]||(e[Xr]={}))[u])&&r[0]===Gr&&r[1]===c)return i[2]=r[2];if((o[u]=i)[2]=a(e,t,n))return!0}}}function Io(o){return 1<o.length?function(e,t,n){for(var r=o.length;r--;)if(!o[r](e,t,n))return!1;return!0}:o[0]}function Fo(e,t,n,r,o){for(var i,a=[],u=0,s=e.length,c=null!=t;u<s;u++)(i=e[u])&&(n&&!n(i,r,o)||(a.push(i),c&&t.push(u)));return a}function Uo(m,g,p,v,y,e){return v&&!v[Xr]&&(v=Uo(v)),y&&!y[Xr]&&(y=Uo(y,e)),Ro(function(e,t,n,r){var o,i,a,u=[],s=[],c=t.length,l=e||function h(e,t,n){for(var r=0,o=t.length;r<o;r++)Ao(e,t[r],n);return n}(g||"*",n.nodeType?[n]:n,[]),f=!m||!e&&g?l:Fo(l,u,m,n,r),d=p?y||(e?m:c||v)?[]:t:f;if(p&&p(f,d,n,r),v)for(o=Fo(d,s),v(o,[],n,r),i=o.length;i--;)(a=o[i])&&(d[s[i]]=!(f[s[i]]=a));if(e){if(y||m){if(y){for(o=[],i=d.length;i--;)(a=d[i])&&o.push(f[i]=a);y(null,d=[],o,r)}for(i=d.length;i--;)(a=d[i])&&-1<(o=y?co.call(e,a):u[i])&&(e[o]=!(t[o]=a))}}else d=Fo(d===t?d.splice(c,d.length):d),y?y(null,t,d,r):uo.apply(t,d)})}function jo(e){for(var r,t,n,o=e.length,i=Dr.relative[e[0].type],a=i||Dr.relative[" "],u=i?1:0,s=Vo(function(e){return e===r},a,!0),c=Vo(function(e){return-1<co.call(r,e)},a,!0),l=[function(e,t,n){return!i&&(n||t!==Lr)||((r=t).nodeType?s(e,t,n):c(e,t,n))}];u<o;u++)if(t=Dr.relative[e[u].type])l=[Vo(Io(l),t)];else{if((t=Dr.filter[e[u].type].apply(null,e[u].matches))[Xr]){for(n=++u;n<o&&!Dr.relative[e[n].type];n++);return Uo(1<u&&Io(l),1<u&&Lo(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(go,"$1"),t,u<n&&jo(e.slice(u,n)),n<o&&jo(e=e.slice(n)),n<o&&Lo(e))}l.push(t)}return Io(l)}Po.prototype=Dr.filters=Dr.pseudos,Dr.setFilters=new Po,Or=Ao.tokenize=function(e,t){var n,r,o,i,a,u,s,c=Zr[e+" "];if(c)return t?0:c.slice(0);for(a=e,u=[],s=Dr.preFilter;a;){for(i in n&&!(r=po.exec(a))||(r&&(a=a.slice(r[0].length)||a),u.push(o=[])),n=!1,(r=vo.exec(a))&&(n=r.shift(),o.push({value:n,type:r[0].replace(go," ")}),a=a.slice(n.length)),Dr.filter)Dr.filter.hasOwnProperty(i)&&(!(r=wo[i].exec(a))||s[i]&&!(r=s[i](r))||(n=r.shift(),o.push({value:n,type:i,matches:r}),a=a.slice(n.length)));if(!n)break}return t?a.length:a?Ao.error(e):Zr(e,u).slice(0)},Hr=Ao.compile=function(e,t){var n,r=[],o=[],i=eo[e+" "];if(!i){for(n=(t=t||Or(e)).length;n--;)(i=jo(t[n]))[Xr]?r.push(i):o.push(i);(i=eo(e,function a(p,v){function e(e,t,n,r,o){var i,a,u,s=0,c="0",l=e&&[],f=[],d=Lr,h=e||b&&Dr.find.TAG("*",o),m=Gr+=null==d?1:Math.random()||.1,g=h.length;for(o&&(Lr=t!==Ur&&t);c!==g&&null!=(i=h[c]);c++){if(b&&i){for(a=0;u=p[a++];)if(u(i,t,n)){r.push(i);break}o&&(Gr=m)}y&&((i=!u&&i)&&s--,e&&l.push(i))}if(s+=c,y&&c!==s){for(a=0;u=v[a++];)u(l,f,t,n);if(e){if(0<s)for(;c--;)l[c]||f[c]||(f[c]=io.call(r));f=Fo(f)}uo.apply(r,f),o&&!e&&0<f.length&&1<s+v.length&&Ao.uniqueSort(r)}return o&&(Gr=m,Lr=d),l}var y=0<v.length,b=0<p.length;return y?Ro(e):e}(o,r))).selector=e}return i},Pr=Ao.select=function(e,t,n,r){var o,i,a,u,s,c="function"==typeof e&&e,l=!r&&Or(e=c.selector||e);if(n=n||[],1===l.length){if(2<(i=l[0]=l[0].slice(0)).length&&"ID"===(a=i[0]).type&&Rr.getById&&9===t.nodeType&&qr&&Dr.relative[i[1].type]){if(!(t=(Dr.find.ID(a.matches[0].replace(To,Ar),t)||[])[0]))return n;c&&(t=t.parentNode),e=e.slice(i.shift().value.length)}for(o=wo.needsContext.test(e)?0:i.length;o--&&(a=i[o],!Dr.relative[u=a.type]);)if((s=Dr.find[u])&&(r=s(a.matches[0].replace(To,Ar),So.test(i[0].type)&&Ho(t.parentNode)||t))){if(i.splice(o,1),!(e=r.length&&Lo(i)))return uo.apply(n,r),n;break}}return(c||Hr(e,l))(r,t,!qr,n,So.test(e)&&Ho(t.parentNode)||t),n},Rr.sortStable=Xr.split("").sort(to).join("")===Xr,Rr.detectDuplicates=!!Ir,Fr(),Rr.sortDetached=!0;function qo(e){return void 0!==e}function $o(e){return"string"==typeof e}function Wo(e,t){var n,r,o;for(o=(t=t||Zo).createElement("div"),n=t.createDocumentFragment(),o.innerHTML=e;r=o.firstChild;)n.appendChild(r);return n}function Ko(e,t){return e&&t&&-1!==(" "+e.className+" ").indexOf(" "+t+" ")}function Xo(e,t,n){var r,o;return t=vi(t)[0],e.each(function(){n&&r===this.parentNode||(r=this.parentNode,o=t.cloneNode(!1),this.parentNode.insertBefore(o,this)),o.appendChild(this)}),e}function Yo(e,t){return new vi.fn.init(e,t)}function Go(e){return null===e||e===undefined?"":(""+e).replace(di,"")}function Jo(e,t){var n,r,o,i;if(e)if((n=e.length)===undefined){for(r in e)if(e.hasOwnProperty(r)&&(i=e[r],!1===t.call(i,r,i)))break}else for(o=0;o<n&&(i=e[o],!1!==t.call(i,o,i));o++);return e}function Qo(e,n){var r=[];return Jo(e,function(e,t){n(t,e)&&r.push(t)}),r}var Zo=j.document,ei=Array.prototype.push,ti=Array.prototype.slice,ni=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,ri=kr.Event,oi=Mn.makeMap("children,contents,next,prev"),ii=function(e,t,n,r){var o;if($o(t))t=Wo(t,hi(e[0]));else if(t.length&&!t.nodeType){if(t=vi.makeArray(t),r)for(o=t.length-1;0<=o;o--)ii(e,t[o],n,r);else for(o=0;o<t.length;o++)ii(e,t[o],n,r);return e}if(t.nodeType)for(o=e.length;o--;)n.call(e[o],t);return e},ai=Mn.makeMap("fillOpacity fontWeight lineHeight opacity orphans widows zIndex zoom"," "),ui=Mn.makeMap("checked compact declare defer disabled ismap multiple nohref noshade nowrap readonly selected"," "),si={"for":"htmlFor","class":"className",readonly:"readOnly"},ci={"float":"cssFloat"},li={},fi={},di=/^\s*|\s*$/g,hi=function(e){return e?9===e.nodeType?e:e.ownerDocument:Zo};Yo.fn=Yo.prototype={constructor:Yo,selector:"",context:null,length:0,init:function(e,t){var n,r,o=this;if(!e)return o;if(e.nodeType)return o.context=o[0]=e,o.length=1,o;if(t&&t.nodeType)o.context=t;else{if(t)return vi(e).attr(t);o.context=t=j.document}if($o(e)){if(!(n="<"===(o.selector=e).charAt(0)&&">"===e.charAt(e.length-1)&&3<=e.length?[null,e,null]:ni.exec(e)))return vi(t).find(e);if(n[1])for(r=Wo(e,hi(t)).firstChild;r;)ei.call(o,r),r=r.nextSibling;else{if(!(r=hi(t).getElementById(n[2])))return o;if(r.id!==n[2])return o.find(e);o.length=1,o[0]=r}}else this.add(e,!1);return o},toArray:function(){return Mn.toArray(this)},add:function(e,t){var n,r;if($o(e))return this.add(vi(e));if(!1!==t)for(n=vi.unique(this.toArray().concat(vi.makeArray(e))),this.length=n.length,r=0;r<n.length;r++)this[r]=n[r];else ei.apply(this,vi.makeArray(e));return this},attr:function(t,n){var e,r=this;if("object"==typeof t)Jo(t,function(e,t){r.attr(e,t)});else{if(!qo(n)){if(r[0]&&1===r[0].nodeType){if((e=li[t])&&e.get)return e.get(r[0],t);if(ui[t])return r.prop(t)?t:undefined;null===(n=r[0].getAttribute(t,2))&&(n=undefined)}return n}this.each(function(){var e;if(1===this.nodeType){if((e=li[t])&&e.set)return void e.set(this,n);null===n?this.removeAttribute(t,2):this.setAttribute(t,n,2)}})}return r},removeAttr:function(e){return this.attr(e,null)},prop:function(e,t){var n=this;if("object"==typeof(e=si[e]||e))Jo(e,function(e,t){n.prop(e,t)});else{if(!qo(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(n,r){function e(e){return e.replace(/-(\D)/g,function(e,t){return t.toUpperCase()})}function o(e){return e.replace(/[A-Z]/g,function(e){return"-"+e})}var t,i,a=this;if("object"==typeof n)Jo(n,function(e,t){a.css(e,t)});else if(qo(r))n=e(n),"number"!=typeof r||ai[n]||(r=r.toString()+"px"),a.each(function(){var e=this.style;if((i=fi[n])&&i.set)i.set(this,r);else{try{this.style[ci[n]||n]=r}catch(t){}null!==r&&""!==r||(e.removeProperty?e.removeProperty(o(n)):e.removeAttribute(n))}});else{if(t=a[0],(i=fi[n])&&i.get)return i.get(t);if(!t.ownerDocument.defaultView)return t.currentStyle?t.currentStyle[e(n)]:"";try{return t.ownerDocument.defaultView.getComputedStyle(t,null).getPropertyValue(o(n))}catch(u){return undefined}}return a},remove:function(){for(var e,t=this.length;t--;)e=this[t],ri.clean(e),e.parentNode&&e.parentNode.removeChild(e);return this},empty:function(){for(var e,t=this.length;t--;)for(e=this[t];e.firstChild;)e.removeChild(e.firstChild);return this},html:function(e){var t,n=this;if(qo(e)){t=n.length;try{for(;t--;)n[t].innerHTML=e}catch(r){vi(n[t]).empty().append(e)}return n}return n[0]?n[0].innerHTML:""},text:function(e){var t;if(qo(e)){for(t=this.length;t--;)"innerText"in this[t]?this[t].innerText=e:this[0].textContent=e;return this}return this[0]?this[0].innerText||this[0].textContent:""},append:function(){return ii(this,arguments,function(e){(1===this.nodeType||this.host&&1===this.host.nodeType)&&this.appendChild(e)})},prepend:function(){return ii(this,arguments,function(e){(1===this.nodeType||this.host&&1===this.host.nodeType)&&this.insertBefore(e,this.firstChild)},!0)},before:function(){return this[0]&&this[0].parentNode?ii(this,arguments,function(e){this.parentNode.insertBefore(e,this)}):this},after:function(){return this[0]&&this[0].parentNode?ii(this,arguments,function(e){this.parentNode.insertBefore(e,this.nextSibling)},!0):this},appendTo:function(e){return vi(e).append(this),this},prependTo:function(e){return vi(e).prepend(this),this},replaceWith:function(e){return this.before(e).remove()},wrap:function(e){return Xo(this,e)},wrapAll:function(e){return Xo(this,e,!0)},wrapInner:function(e){return this.each(function(){vi(this).contents().wrapAll(e)}),this},unwrap:function(){return this.parent().each(function(){vi(this).replaceWith(this.childNodes)})},clone:function(){var e=[];return this.each(function(){e.push(this.cloneNode(!0))}),vi(e)},addClass:function(e){return this.toggleClass(e,!0)},removeClass:function(e){return this.toggleClass(e,!1)},toggleClass:function(o,i){var e=this;return"string"!=typeof o||(-1!==o.indexOf(" ")?Jo(o.split(" "),function(){e.toggleClass(this,i)}):e.each(function(e,t){var n,r;(r=Ko(t,o))!==i&&(n=t.className,r?t.className=Go((" "+n+" ").replace(" "+o+" "," ")):t.className+=n?" "+o:o)})),e},hasClass:function(e){return Ko(this[0],e)},each:function(e){return Jo(this,e)},on:function(e,t){return this.each(function(){ri.bind(this,e,t)})},off:function(e,t){return this.each(function(){ri.unbind(this,e,t)})},trigger:function(e){return this.each(function(){"object"==typeof e?ri.fire(this,e.type,e):ri.fire(this,e)})},show:function(){return this.css("display","")},hide:function(){return this.css("display","none")},slice:function(){return new vi(ti.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;t<n;t++)vi.find(e,this[t],r);return vi(r)},filter:function(n){return vi("function"==typeof n?Qo(this.toArray(),function(e,t){return n(t,e)}):vi.filter(n,this.toArray()))},closest:function(n){var r=[];return n instanceof vi&&(n=n[0]),this.each(function(e,t){for(;t;){if("string"==typeof n&&vi(t).is(n)){r.push(t);break}if(t===n){r.push(t);break}t=t.parentNode}}),vi(r)},offset:function(e){var t,n,r,o,i=0,a=0;return e?this.css(e):((t=this[0])&&(r=(n=t.ownerDocument).documentElement,t.getBoundingClientRect&&(i=(o=t.getBoundingClientRect()).left+(r.scrollLeft||n.body.scrollLeft)-r.clientLeft,a=o.top+(r.scrollTop||n.body.scrollTop)-r.clientTop)),{left:i,top:a})},push:ei,sort:Array.prototype.sort,splice:Array.prototype.splice},Mn.extend(Yo,{extend:Mn.extend,makeArray:function(e){return function(e){return e&&e===e.window}(e)||e.nodeType?[e]:Mn.toArray(e)},inArray:function(e,t){var n;if(t.indexOf)return t.indexOf(e);for(n=t.length;n--;)if(t[n]===e)return n;return-1},isArray:Mn.isArray,each:Jo,trim:Go,grep:Qo,find:Ao,expr:Ao.selectors,unique:Ao.uniqueSort,text:Ao.getText,contains:Ao.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?vi.find.matchesSelector(t[0],e)?[t[0]]:[]:vi.find.matches(e,t)}});function mi(e,t,n){var r=[],o=e[t];for("string"!=typeof n&&n instanceof vi&&(n=n[0]);o&&9!==o.nodeType;){if(n!==undefined){if(o===n)break;if("string"==typeof n&&vi(o).is(n))break}1===o.nodeType&&r.push(o),o=o[t]}return r}function gi(e,t,n,r){var o=[];for(r instanceof vi&&(r=r[0]);e;e=e[t])if(!n||e.nodeType===n){if(r!==undefined){if(e===r)break;if("string"==typeof r&&vi(e).is(r))break}o.push(e)}return o}function pi(e,t,n){for(e=e[t];e;e=e[t])if(e.nodeType===n)return e;return null}Jo({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return mi(e,"parentNode")},next:function(e){return pi(e,"nextSibling",1)},prev:function(e){return pi(e,"previousSibling",1)},children:function(e){return gi(e.firstChild,"nextSibling",1)},contents:function(e){return Mn.toArray(("iframe"===e.nodeName?e.contentDocument||e.contentWindow.document:e).childNodes)}},function(r,o){Yo.fn[r]=function(t){var n=[];this.each(function(){var e=o.call(n,this,t,n);e&&(vi.isArray(e)?n.push.apply(n,e):n.push(e))}),1<this.length&&(oi[r]||(n=vi.unique(n)),0===r.indexOf("parents")&&(n=n.reverse()));var e=vi(n);return t?e.filter(t):e}}),Jo({parentsUntil:function(e,t){return mi(e,"parentNode",t)},nextUntil:function(e,t){return gi(e,"nextSibling",1,t).slice(1)},prevUntil:function(e,t){return gi(e,"previousSibling",1,t).slice(1)}},function(o,i){Yo.fn[o]=function(t,e){var n=[];this.each(function(){var e=i.call(n,this,t,n);e&&(vi.isArray(e)?n.push.apply(n,e):n.push(e))}),1<this.length&&(n=vi.unique(n),0!==o.indexOf("parents")&&"prevUntil"!==o||(n=n.reverse()));var r=vi(n);return e?r.filter(e):r}}),Yo.fn.is=function(e){return!!e&&0<this.filter(e).length},Yo.fn.init.prototype=Yo.fn,Yo.overrideDefaults=function(n){var r,o=function(e,t){return r=r||n(),0===arguments.length&&(e=r.element),t=t||r.context,new o.fn.init(e,t)};return vi.extend(o,this),o},Yo.attrHooks=li,Yo.cssHooks=fi;var vi=Yo,yi=(bi.prototype.current=function(){return this.node},bi.prototype.next=function(e){return this.node=this.findSibling(this.node,"firstChild","nextSibling",e),this.node},bi.prototype.prev=function(e){return this.node=this.findSibling(this.node,"lastChild","previousSibling",e),this.node},bi.prototype.prev2=function(e){return this.node=this.findPreviousNode(this.node,"lastChild","previousSibling",e),this.node},bi.prototype.findSibling=function(e,t,n,r){var o,i;if(e){if(!r&&e[t])return e[t];if(e!==this.rootNode){if(o=e[n])return o;for(i=e.parentNode;i&&i!==this.rootNode;i=i.parentNode)if(o=i[n])return o}}},bi.prototype.findPreviousNode=function(e,t,n,r){var o,i,a;if(e){if(o=e[n],this.rootNode&&o===this.rootNode)return;if(o){if(!r)for(a=o[t];a;a=a[t])if(!a[t])return a;return o}if((i=e.parentNode)&&i!==this.rootNode)return i}},bi);function bi(e,t){this.node=e,this.rootNode=t,this.current=this.current.bind(this),this.next=this.next.bind(this),this.prev=this.prev.bind(this),this.prev2=this.prev2.bind(this)}function Ci(t,n){Se(t).each(function(e){e.dom().insertBefore(n.dom(),t.dom())})}function wi(e,t){Te(e).fold(function(){Se(e).each(function(e){Di(e,t)})},function(e){Ci(e,t)})}function xi(t,n){_e(t).fold(function(){Di(t,n)},function(e){t.dom().insertBefore(n.dom(),e.dom())})}function zi(t,e){z(e,function(e){Di(t,e)})}function Ei(e){e.dom().textContent="",z(Re(e),function(e){_i(e)})}function Ni(e){var t=Re(e);0<t.length&&function(t,e){z(e,function(e){Ci(t,e)})}(e,t),_i(e)}function Si(e,t){return e!==undefined?e:t!==undefined?t:0}function ki(e){var t=e!==undefined?e.dom():j.document,n=t.body.scrollLeft||t.documentElement.scrollLeft,r=t.body.scrollTop||t.documentElement.scrollTop;return Oi(n,r)}function Ti(e,t,n){(n!==undefined?n.dom():j.document).defaultView.scrollTo(e,t)}function Ai(e,t){Pi&&D(e.dom().scrollIntoViewIfNeeded)?e.dom().scrollIntoViewIfNeeded(!1):e.dom().scrollIntoView(t)}function Mi(e,t,n,r){return{x:$(e),y:$(t),width:$(n),height:$(r),right:$(e+n),bottom:$(t+r)}}var Ri,Di=function(e,t){e.dom().appendChild(t.dom())},_i=function(e){var t=e.dom();null!==t.parentNode&&t.parentNode.removeChild(t)},Bi=function(n,r){return{left:$(n),top:$(r),translate:function(e,t){return Bi(n+e,r+t)}}},Oi=Bi,Hi=function(e){var t=e.dom(),n=t.ownerDocument.body;return n===t?Oi(n.offsetLeft,n.offsetTop):de(e)?function(e){var t=e.getBoundingClientRect();return Oi(t.left,t.top)}(t):Oi(0,0)},Pi=oe().browser.isSafari(),Li=function(e){var t=e===undefined?j.window:e,n=t.document,r=ki(yt.fromDom(n)),o=t.visualViewport;if(o!==undefined)return Mi(Math.max(o.pageLeft,r.left()),Math.max(o.pageTop,r.top()),o.width,o.height);var i=n.documentElement,a=i.clientWidth,u=i.clientHeight;return Mi(r.left(),r.top(),a,u)},Vi=Mn.each,Ii=Mn.grep,Fi=Nn.ie,Ui=/^([a-z0-9],?)+$/i,ji=/^[ \t\r\n]*$/,qi=function(n,r,o){var i=r.keep_values,e={set:function(e,t,n){r.url_converter&&(t=r.url_converter.call(r.url_converter_scope||o(),t,n,e[0])),e.attr("data-mce-"+n,t).attr(n,t)},get:function(e,t){return e.attr("data-mce-"+t)||e.attr(t)}},t={style:{set:function(e,t){null===t||"object"!=typeof t?(i&&e.attr("data-mce-style",t),e.attr("style",t)):e.css(t)},get:function(e){var t=e.attr("data-mce-style")||e.attr("style");return t=n.serialize(n.parse(t),e[0].nodeName)}}};return i&&(t.href=t.src=e),t},$i=function(e,t){var n=t.attr("style"),r=e.serialize(e.parse(n),t[0].nodeName);r=r||null,t.attr("data-mce-style",r)},Wi=function(e,t){var n,r,o=0;if(e)for(n=e.nodeType,e=e.previousSibling;e;e=e.previousSibling)r=e.nodeType,(!t||3!==r||r!==n&&e.nodeValue.length)&&(o++,n=r);return o};function Ki(a,u){var s,c=this;void 0===u&&(u={});function l(e){if(e&&a&&"string"==typeof e){var t=a.getElementById(e);return t&&t.id!==e?a.getElementsByName(e)[1]:t}return e}function f(e){return"string"==typeof e&&(e=l(e)),H(e)}function r(e,t,n){var r,o,i=f(e);return i.length&&(o=(r=s[t])&&r.get?r.get(i,t):i.attr(t)),void 0===o&&(o=n||""),o}function d(e){var t=l(e);return t?t.attributes:[]}function o(e,t,n){var r,o;""===n&&(n=null);var i=f(e);r=i.attr(t),i.length&&((o=s[t])&&o.set?o.set(i,n,t):i.attr(t,n),r!==n&&u.onSetAttrib&&u.onSetAttrib({attrElm:i,attrName:t,attrValue:n}))}function h(){return u.root_element||a.body}function i(e,t){return Ht.getPos(a.body,l(e),t)}function m(e,t,n){var r=f(e);return n?r.css(t):("float"===(t=t.replace(/-(\D)/g,function(e,t){return t.toUpperCase()}))&&(t=Nn.browser.isIE()?"styleFloat":"cssFloat"),r[0]&&r[0].style?r[0].style[t]:undefined)}function g(e){var t,n;return e=l(e),t=m(e,"width"),n=m(e,"height"),-1===t.indexOf("px")&&(t=0),-1===n.indexOf("px")&&(n=0),{w:parseInt(t,10)||e.offsetWidth||e.clientWidth,h:parseInt(n,10)||e.offsetHeight||e.clientHeight}}function p(e,t){var n;if(!e)return!1;if(!Array.isArray(e)){if("*"===t)return 1===e.nodeType;if(Ui.test(t)){var r=t.toLowerCase().split(/,/),o=e.nodeName.toLowerCase();for(n=r.length-1;0<=n;n--)if(r[n]===o)return!0;return!1}if(e.nodeType&&1!==e.nodeType)return!1}var i=Array.isArray(e)?e:[e];return 0<Ao(t,i[0].ownerDocument||i[0],null,i).length}function v(e,t,n,r){var o,i=[],a=l(e);for(r=r===undefined,n=n||("BODY"!==h().nodeName?h().parentNode:null),Mn.is(t,"string")&&(t="*"===(o=t)?function(e){return 1===e.nodeType}:function(e){return p(e,o)});a&&a!==n&&a.nodeType&&9!==a.nodeType;){if(!t||"function"==typeof t&&t(a)){if(!r)return[a];i.push(a)}a=a.parentNode}return r?i:null}function n(e,t,n){var r=t;if(e)for("string"==typeof t&&(r=function(e){return p(e,t)}),e=e[n];e;e=e[n])if("function"==typeof r&&r(e))return e;return null}function y(e,n,r){var o,t="string"==typeof e?l(e):e;if(!t)return!1;if(Mn.isArray(t)&&(t.length||0===t.length))return o=[],Vi(t,function(e,t){e&&("string"==typeof e&&(e=l(e)),o.push(n.call(r,e,t)))}),o;var i=r||c;return n.call(i,t)}function b(e,t){f(e).each(function(e,n){Vi(t,function(e,t){o(n,t,e)})})}function C(e,r){var t=f(e);Fi?t.each(function(e,t){if(!1!==t.canHaveHTML){for(;t.firstChild;)t.removeChild(t.firstChild);try{t.innerHTML="<br>"+r,t.removeChild(t.firstChild)}catch(n){vi("<div></div>").html("<br>"+r).contents().slice(1).appendTo(t)}return r}}):t.html(r)}function w(e,n,r,o,i){return y(e,function(e){var t="string"==typeof n?a.createElement(n):n;return b(t,r),o&&("string"!=typeof o&&o.nodeType?t.appendChild(o):"string"==typeof o&&C(t,o)),i?t:e.appendChild(t)})}function x(e,t,n){return w(a.createElement(e),e,t,n,!0)}function z(e,t){var n=f(e);return t?n.each(function(){for(var e;e=this.firstChild;)3===e.nodeType&&0===e.data.length?this.removeChild(e):this.parentNode.insertBefore(e,this)}).remove():n.remove(),1<n.length?n.toArray():n[0]}function E(e,t,n){f(e).toggleClass(t,n).each(function(){""===this.className&&vi(this).attr("class",null)})}function N(t,e,n){return y(e,function(e){return Mn.is(e,"array")&&(t=t.cloneNode(!0)),n&&Vi(Ii(e.childNodes),function(e){t.appendChild(e)}),e.parentNode.replaceChild(t,e)})}function S(){return a.createRange()}function k(e){if(e&&Ge.isElement(e)){var t=e.getAttribute("data-mce-contenteditable");return t&&"inherit"!==t?t:"inherit"!==e.contentEditable?e.contentEditable:null}return null}var T={},A=j.window,M={},t=0,e=function U(m,g){void 0===g&&(g={});var p,v=0,y={};function b(e){m.getElementsByTagName("head")[0].appendChild(e)}function n(e,t,n){function r(e){l.status=e,l.passed=[],l.failed=[],u&&(u.onload=null,u.onerror=null,u=null)}function o(){for(var e=l.passed,t=e.length;t--;)e[t]();r(2)}function i(){for(var e=l.failed,t=e.length;t--;)e[t]();r(3)}function a(e,t){e()||((new Date).getTime()-c<p?pn.setTimeout(t):i())}var u,s,c,l,f=function(){a(function(){for(var e,t,n=m.styleSheets,r=n.length;r--;)if((t=(e=n[r]).ownerNode?e.ownerNode:e.owningElement)&&t.id===u.id)return o(),!0},f)},d=function(){a(function(){try{var e=s.sheet.cssRules;return o(),!!e}catch(t){}},d)};if(e=Mn._addCacheSuffix(e),y[e]?l=y[e]:(l={passed:[],failed:[]},y[e]=l),t&&l.passed.push(t),n&&l.failed.push(n),1!==l.status)if(2!==l.status)if(3!==l.status){if(l.status=1,(u=m.createElement("link")).rel="stylesheet",u.type="text/css",u.id="u"+v++,u.async=!1,u.defer=!1,c=(new Date).getTime(),g.contentCssCors&&(u.crossOrigin="anonymous"),g.referrerPolicy&&Tt(yt.fromDom(u),"referrerpolicy",g.referrerPolicy),"onload"in u&&!((h=j.navigator.userAgent.match(/WebKit\/(\d*)/))&&parseInt(h[1],10)<536))u.onload=f,u.onerror=i;else{if(0<j.navigator.userAgent.indexOf("Firefox"))return(s=m.createElement("style")).textContent='@import "'+e+'"',d(),void b(s);f()}var h;b(u),u.href=e}else i();else o()}function t(t){return Xt.nu(function(e){n(t,q(e,$(Qt.value(t))),q(e,$(Qt.error(t))))})}function o(e){return e.fold(W,W)}return p=g.maxLoadTime||5e3,{load:n,loadAll:function(e,n,r){Yt(X(e,t)).get(function(e){var t=Y(e,function(e){return e.isValue()});0<t.fail.length?r(t.fail.map(o)):n(t.pass.map(o))})},_setReferrerPolicy:function(e){g.referrerPolicy=e}}}(a,{contentCssCors:u.contentCssCors,referrerPolicy:u.referrerPolicy}),R=[],D=u.schema?u.schema:pr({}),_=xr({url_converter:u.url_converter,url_converter_scope:u.url_converter_scope},u.schema),B=u.ownEvents?new kr:kr.Event,O=D.getBlockElements(),H=vi.overrideDefaults(function(){return{context:a,element:F.getRoot()}}),P=ir.decode,L=ir.encodeAllRaw,V=function(e,t,n,r){if(Mn.isArray(e)){for(var o=e.length,i=[];o--;)i[o]=V(e[o],t,n,r);return i}return!u.collect||e!==a&&e!==A||R.push([e,t,n,r]),B.bind(e,t,n,r||F)},I=function(e,t,n){var r;if(Mn.isArray(e)){r=e.length;for(var o=[];r--;)o[r]=I(e[r],t,n);return o}if(R&&(e===a||e===A))for(r=R.length;r--;){var i=R[r];e!==i[0]||t&&t!==i[1]||n&&n!==i[2]||B.unbind(i[0],i[1],i[2])}return B.unbind(e,t,n)},F={doc:a,settings:u,win:A,files:M,stdMode:!0,boxModel:!0,styleSheetLoader:e,boundEvents:R,styles:_,schema:D,events:B,isBlock:function(e){if("string"==typeof e)return!!O[e];if(e){var t=e.nodeType;if(t)return!(1!==t||!O[e.nodeName])}return!1},$:H,$$:f,root:null,clone:function(t,e){if(!Fi||1!==t.nodeType||e)return t.cloneNode(e);if(e)return null;var n=a.createElement(t.nodeName);return Vi(d(t),function(e){o(n,e.nodeName,r(t,e.nodeName))}),n},getRoot:h,getViewPort:function(e){var t=Li(e);return{x:t.x(),y:t.y(),w:t.width(),h:t.height()}},getRect:function(e){var t,n;return e=l(e),t=i(e),n=g(e),{x:t.x,y:t.y,w:n.w,h:n.h}},getSize:g,getParent:function(e,t,n){var r=v(e,t,n,!1);return r&&0<r.length?r[0]:null},getParents:v,get:l,getNext:function(e,t){return n(e,t,"nextSibling")},getPrev:function(e,t){return n(e,t,"previousSibling")},select:function(e,t){return Ao(e,l(t)||u.root_element||a,[])},is:p,add:w,create:x,createHTML:function(e,t,n){var r,o="";for(r in o+="<"+e,t)t.hasOwnProperty(r)&&null!==t[r]&&"undefined"!=typeof t[r]&&(o+=" "+r+'="'+L(t[r])+'"');return void 0!==n?o+">"+n+"</"+e+">":o+" />"},createFragment:function(e){var t,n=a.createElement("div"),r=a.createDocumentFragment();for(e&&(n.innerHTML=e);t=n.firstChild;)r.appendChild(t);return r},remove:z,setStyle:function(e,t,n){var r=K(t)?f(e).css(t,n):f(e).css(t);u.update_styles&&$i(_,r)},getStyle:m,setStyles:function(e,t){var n=f(e).css(t);u.update_styles&&$i(_,n)},removeAllAttribs:function(e){return y(e,function(e){var t,n=e.attributes;for(t=n.length-1;0<=t;t--)e.removeAttributeNode(n.item(t))})},setAttrib:o,setAttribs:b,getAttrib:r,getPos:i,parseStyle:function(e){return _.parse(e)},serializeStyle:function(e,t){return _.serialize(e,t)},addStyle:function(e){var t,n;if(F!==Ki.DOM&&a===j.document){if(T[e])return;T[e]=!0}(n=a.getElementById("mceDefaultStyles"))||((n=a.createElement("style")).id="mceDefaultStyles",n.type="text/css",(t=a.getElementsByTagName("head")[0]).firstChild?t.insertBefore(n,t.firstChild):t.appendChild(n)),n.styleSheet?n.styleSheet.cssText+=e:n.appendChild(a.createTextNode(e))},loadCSS:function(e){var n;F===Ki.DOM||a!==j.document?(e=e||"",n=a.getElementsByTagName("head")[0],Vi(e.split(","),function(e){var t;e=Mn._addCacheSuffix(e),M[e]||(M[e]=!0,t=x("link",G(G({rel:"stylesheet",type:"text/css",href:e},u.contentCssCors?{crossOrigin:"anonymous"}:{}),u.referrerPolicy?{referrerPolicy:u.referrerPolicy}:{})),n.appendChild(t))})):Ki.DOM.loadCSS(e)},addClass:function(e,t){f(e).addClass(t)},removeClass:function(e,t){E(e,t,!1)},hasClass:function(e,t){return f(e).hasClass(t)},toggleClass:E,show:function(e){f(e).show()},hide:function(e){f(e).hide()},isHidden:function(e){return"none"===f(e).css("display")},uniqueId:function(e){return(e||"mce_")+t++},setHTML:C,getOuterHTML:function(e){var t="string"==typeof e?l(e):e;return Ge.isElement(t)?t.outerHTML:vi("<div></div>").append(vi(t).clone()).html()},setOuterHTML:function(e,t){f(e).each(function(){try{if("outerHTML"in this)return void(this.outerHTML=t)}catch(e){}z(vi(this).html(t),!0)})},decode:P,encode:L,insertAfter:function(e,t){var r=l(t);return y(e,function(e){var t,n;return t=r.parentNode,(n=r.nextSibling)?t.insertBefore(e,n):t.appendChild(e),e})},replace:N,rename:function(t,e){var n;return t.nodeName!==e.toUpperCase()&&(n=x(e),Vi(d(t),function(e){o(n,e.nodeName,r(t,e.nodeName))}),N(n,t,!0)),n||t},findCommonAncestor:function(e,t){for(var n,r=e;r;){for(n=t;n&&r!==n;)n=n.parentNode;if(r===n)break;r=r.parentNode}return!r&&e.ownerDocument?e.ownerDocument.documentElement:r},toHex:function(e){return _.toHex(Mn.trim(e))},run:y,getAttribs:d,isEmpty:function(e,t){var n,r,o,i,a=0;if(e=e.firstChild){var u=new yi(e,e.parentNode),s=D?D.getWhiteSpaceElements():{};t=t||(D?D.getNonEmptyElements():null);do{if(o=e.nodeType,Ge.isElement(e)){var c=e.getAttribute("data-mce-bogus");if(c){e=u.next("all"===c);continue}if(i=e.nodeName.toLowerCase(),t&&t[i]){if("br"!==i)return!1;a++,e=u.next();continue}for(n=(r=d(e)).length;n--;)if("name"===(i=r[n].nodeName)||"data-mce-bookmark"===i)return!1}if(8===o)return!1;if(3===o&&!ji.test(e.nodeValue))return!1;if(3===o&&e.parentNode&&s[e.parentNode.nodeName]&&ji.test(e.nodeValue))return!1;e=u.next()}while(e)}return a<=1},createRng:S,nodeIndex:Wi,split:function(e,t,n){var r,o,i,a=S();if(e&&t)return a.setStart(e.parentNode,Wi(e)),a.setEnd(t.parentNode,Wi(t)),r=a.extractContents(),(a=S()).setStart(t.parentNode,Wi(t)+1),a.setEnd(e.parentNode,Wi(e)+1),o=a.extractContents(),(i=e.parentNode).insertBefore(Xn.trimNode(F,r),e),n?i.insertBefore(n,e):i.insertBefore(t,e),i.insertBefore(Xn.trimNode(F,o),e),z(e),n||t},bind:V,unbind:I,fire:function(e,t,n){return B.fire(e,t,n)},getContentEditable:k,getContentEditableParent:function(e){for(var t=h(),n=null;e&&e!==t&&null===(n=k(e));e=e.parentNode);return n},destroy:function(){if(R)for(var e=R.length;e--;){var t=R[e];B.unbind(t[0],t[1],t[2])}Ao.setDocument&&Ao.setDocument()},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}};return s=qi(_,u,function(){return F}),F}(Ri=Ki=Ki||{}).DOM=Ri(j.document),Ri.nodeIndex=Wi;var Xi=Ki,Yi=Xi.DOM,Gi=Mn.each,Ji=Mn.grep,Qi=(Zi.prototype._setReferrerPolicy=function(e){this.settings.referrerPolicy=e},Zi.prototype.loadScript=function(e,t,n){var r,o,i=Yi;o=i.uniqueId(),(r=j.document.createElement("script")).id=o,r.type="text/javascript",r.src=Mn._addCacheSuffix(e),this.settings.referrerPolicy&&i.setAttrib(r,"referrerpolicy",this.settings.referrerPolicy),r.onload=function(){i.remove(o),r&&(r.onreadystatechange=r.onload=r=null),t()},r.onerror=function(){D(n)?n():"undefined"!=typeof j.console&&j.console.log&&j.console.log("Failed to load script: "+e)},(j.document.getElementsByTagName("head")[0]||j.document.body).appendChild(r)},Zi.prototype.isDone=function(e){return 2===this.states[e]},Zi.prototype.markDone=function(e){this.states[e]=2},Zi.prototype.add=function(e,t,n,r){this.states[e]===undefined&&(this.queue.push(e),this.states[e]=0),t&&(this.scriptLoadedCallbacks[e]||(this.scriptLoadedCallbacks[e]=[]),this.scriptLoadedCallbacks[e].push({success:t,failure:r,scope:n||this}))},Zi.prototype.load=function(e,t,n,r){return this.add(e,t,n,r)},Zi.prototype.remove=function(e){delete this.states[e],delete this.scriptLoadedCallbacks[e]},Zi.prototype.loadQueue=function(e,t,n){this.loadScripts(this.queue,e,t,n)},Zi.prototype.loadScripts=function(n,e,t,r){function o(t,e){Gi(a.scriptLoadedCallbacks[e],function(e){D(e[t])&&e[t].call(e.scope)}),a.scriptLoadedCallbacks[e]=undefined}var i,a=this,u=[];a.queueLoadedCallbacks.push({success:e,failure:r,scope:t||this}),(i=function(){var e=Ji(n);if(n.length=0,Gi(e,function(e){2!==a.states[e]?3!==a.states[e]?1!==a.states[e]&&(a.states[e]=1,a.loading++,a.loadScript(e,function(){a.states[e]=2,a.loading--,o("success",e),i()},function(){a.states[e]=3,a.loading--,u.push(e),o("failure",e),i()})):o("failure",e):o("success",e)}),!a.loading){var t=a.queueLoadedCallbacks.slice(0);a.queueLoadedCallbacks.length=0,Gi(t,function(e){0===u.length?D(e.success)&&e.success.call(e.scope):D(e.failure)&&e.failure.call(e.scope,u)})}})()},Zi.ScriptLoader=new Zi,Zi);function Zi(e){void 0===e&&(e={}),this.states={},this.queue=[],this.scriptLoadedCallbacks={},this.queueLoadedCallbacks=[],this.loading=0,this.settings=e}var ea,ta={},na=Je("en"),ra={getData:function(){return se(ta,function(e){return G({},e)})},setCode:function(e){e&&na.set(e)},getCode:function(){return na.get()},add:function(e,t){var n=ta[e];for(var r in n||(ta[e]=n={}),t)n[r.toLowerCase()]=t[r]},translate:function(e){function r(e){return D(e)?Object.prototype.toString.call(e):a(e)?"":""+e}function t(e){var t=r(e),n=t.toLowerCase();return kt(i,n)?r(i[n]):t}function n(e){return e.replace(/{context:\w+}$/,"")}function o(e){return e}var i=ta[na.get()]||{},a=function(e){return""===e||null===e||e===undefined};if(a(e))return o("");if(function(e){return T(e)&&kt(e,"raw")}(e))return o(r(e.raw));if(function(e){return A(e)&&1<e.length}(e)){var u=e.slice(1);return o(n(t(e[0]).replace(/\{([0-9]+)\}/g,function(e,t){return kt(u,t)?r(u[t]):e})))}return o(n(t(e)))},isRtl:function(){return le(ta,na.get()).bind(function(e){return le(e,"_dir")}).exists(function(e){return"rtl"===e})},hasCode:function(e){return kt(ta,e)}},oa=Mn.each;function ia(){function i(e){var t;return c[e]&&(t=c[e].dependencies),t||[]}function a(e,t){return"object"==typeof t?t:"string"==typeof e?{prefix:"",resource:t,suffix:""}:{prefix:e.prefix,resource:t,suffix:e.suffix}}function u(e,n,t,r){var o=i(e);oa(o,function(e){var t=a(n,e);f(t.resource,t,undefined,undefined)}),t&&(r?t.call(r):t.call(Qi))}var r=this,o=[],s={},c={},l=[],f=function(e,t,n,r,o){if(!s[e]){var i="string"==typeof t?t:t.prefix+t.resource+t.suffix;0!==i.indexOf("/")&&-1===i.indexOf("://")&&(i=ia.baseURL+"/"+i),s[e]=i.substring(0,i.lastIndexOf("/")),c[e]?u(e,t,n,r):Qi.ScriptLoader.add(i,function(){return u(e,t,n,r)},r,o)}};return{items:o,urls:s,lookup:c,_listeners:l,get:function(e){return c[e]?c[e].instance:undefined},dependencies:i,requireLangPack:function(e,t){var n=ra.getCode();if(n&&!1!==ia.languageLoad){if(t)if(-1!==(t=","+t+",").indexOf(","+n.substr(0,2)+","))n=n.substr(0,2);else if(-1===t.indexOf(","+n+","))return;Qi.ScriptLoader.add(s[e]+"/langs/"+n+".js")}},add:function(t,e,n){o.push(e),c[t]={instance:e,dependencies:n};var r=Y(l,function(e){return e.name===t});return l=r.fail,oa(r.pass,function(e){e.callback()}),e},remove:function(e){delete s[e],delete c[e]},createUrl:a,addComponents:function(e,t){var n=r.urls[e];oa(t,function(e){Qi.ScriptLoader.add(n+"/"+e)})},load:f,waitFor:function(e,t){c.hasOwnProperty(e)?t():l.push({name:e,callback:t})}}}(ea=ia=ia||{}).PluginManager=ea(),ea.ThemeManager=ea();function aa(n,r){var o=null;return{cancel:function(){null!==o&&(j.clearTimeout(o),o=null)},throttle:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];null===o&&(o=j.setTimeout(function(){n.apply(null,e),o=null},r))}}}function ua(e,t){var n=ge(e,t);return n===undefined||""===n?[]:n.split(" ")}function sa(e){return e.dom().classList!==undefined}function ca(e,t){return function(e,t,n){var r=ua(e,t).concat([n]);return Tt(e,t,r.join(" ")),!0}(e,"class",t)}function la(e,t){return function(e,t,n){var r=y(ua(e,t),function(e){return e!==n});return 0<r.length?Tt(e,t,r.join(" ")):pe(e,t),!1}(e,"class",t)}function fa(e,t){sa(e)?e.dom().classList.add(t):ca(e,t)}function da(e){0===(sa(e)?e.dom().classList:function(e){return ua(e,"class")}(e)).length&&pe(e,"class")}function ha(e,t){return sa(e)&&e.dom().classList.contains(t)}function ma(e,t){return function(e,t){var n=t===undefined?j.document:t.dom();return xe(n)?[]:X(n.querySelectorAll(e),yt.fromDom)}(t,e)}var ga=ia,pa=function(e,t){var n=[];return z(Re(e),function(e){t(e)&&(n=n.concat([e])),n=n.concat(pa(e,t))}),n};function va(e,t,n,r,o){return e(n,r)?k.some(n):D(o)&&o(n)?k.none():t(n,r,o)}function ya(e,t,n){for(var r=e.dom(),o=D(n)?n:$(!1);r.parentNode;){r=r.parentNode;var i=yt.fromDom(r);if(t(i))return k.some(i);if(o(i))break}return k.none()}function ba(e,t,n){return va(function(e,t){return t(e)},ya,e,t,n)}function Ca(e,t,n){return ya(e,function(e){return we(e,t)},n)}function wa(e,t){return function(e,t){var n=t===undefined?j.document:t.dom();return xe(n)?k.none():k.from(n.querySelector(e)).map(yt.fromDom)}(t,e)}function xa(e,t,n){return va(we,Ca,e,t,n)}function za(r,e){function t(e,t){return function(e,t){var n=e.dom();return!(!n||!n.hasAttribute)&&n.hasAttribute(t)}(e,t)?k.some(ge(e,t)):k.none()}var n=r.selection.getRng(),o=yt.fromDom(n.startContainer),i=yt.fromDom(r.getBody()),a=e.fold(function(){return"."+nu()},function(e){return"["+ru()+'="'+e+'"]'}),u=De(o,n.startOffset).getOr(o);return xa(u,a,function(e){return ze(e,i)}).bind(function(e){return t(e,""+ou()).bind(function(n){return t(e,""+ru()).map(function(e){var t=iu(r,n);return{uid:n,name:e,elements:t}})})})}function Ea(n,e){function a(e,t){r(e,function(e){return t(e),e})}var o=Je({}),r=function(e,t){var n=o.get(),r=t(n.hasOwnProperty(e)?n[e]:{listeners:[],previous:Je(k.none())});n[e]=r,o.set(n)},t=function(n,r){var o=null;return{cancel:function(){null!==o&&(j.clearTimeout(o),o=null)},throttle:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];null!==o&&j.clearTimeout(o),o=j.setTimeout(function(){n.apply(null,e),o=null},r)}}}(function(){var e=o.get(),t=function(e,t){var n=B.call(e,0);return n.sort(t),n}(Et(e));z(t,function(e){r(e,function(o){var i=o.previous.get();return za(n,k.some(e)).fold(function(){i.isSome()&&(function(t){a(t,function(e){z(e.listeners,function(e){return e(!1,t)})})}(e),o.previous.set(k.none()))},function(e){var t=e.uid,n=e.name,r=e.elements;i.is(t)||(function(t,n,r){a(t,function(e){z(e.listeners,function(e){return e(!0,t,{uid:n,nodes:X(r,function(e){return e.dom()})})})})}(n,t,r),o.previous.set(k.some(t)))}),{previous:o.previous,listeners:o.listeners}})})},30);return n.on("remove",function(){t.cancel()}),n.on("NodeChange",function(){t.throttle()}),{addListener:function(e,t){r(e,function(e){return{previous:e.previous,listeners:e.listeners.concat([t])}})}}}function Na(e,n){e.on("init",function(){e.serializer.addNodeFilter("span",function(e){z(e,function(t){(function(e){return k.from(e.attr(ru())).bind(n.lookup)})(t).each(function(e){!1===e.persistent&&t.unwrap()})})})})}function Sa(e,t){return yt.fromDom(e.dom().cloneNode(t))}function ka(e){return Sa(e,!1)}function Ta(e){return Sa(e,!0)}function Aa(e,t){var n=Ee(e).dom(),r=yt.fromDom(n.createDocumentFragment()),o=function(e,t){var n=(t||j.document).createElement("div");return n.innerHTML=e,Re(yt.fromDom(n))}(t,n);zi(r,o),Ei(e),Di(e,r)}function Ma(e){return du(e)&&(e=e.parentNode),fu(e)&&e.hasAttribute("data-mce-caret")}function Ra(e){return du(e)&&su(e.data)}function Da(e){return Ma(e)||Ra(e)}function _a(e){return e.firstChild!==e.lastChild||!Ge.isBr(e.firstChild)}function Ba(e){var t=e.container();return!(!e||!Ge.isText(t))&&(t.data.charAt(e.offset())===cu||e.isAtStart()&&Ra(t.previousSibling))}function Oa(e){var t=e.container();return!(!e||!Ge.isText(t))&&(t.data.charAt(e.offset()-1)===cu||e.isAtEnd()&&Ra(t.nextSibling))}function Ha(e,t,n){var r,o;return(r=t.ownerDocument.createElement(e)).setAttribute("data-mce-caret",n?"before":"after"),r.setAttribute("data-mce-bogus","all"),r.appendChild(function(){var e=j.document.createElement("br");return e.setAttribute("data-mce-bogus","1"),e}()),o=t.parentNode,n?o.insertBefore(r,t):t.nextSibling?o.insertBefore(r,t.nextSibling):o.appendChild(r),r}function Pa(e){return e&&e.hasAttribute("data-mce-caret")?(function(e){var t=e.getElementsByTagName("br"),n=t[t.length-1];Ge.isBogus(n)&&n.parentNode.removeChild(n)}(e),e.removeAttribute("data-mce-caret"),e.removeAttribute("data-mce-bogus"),e.removeAttribute("style"),e.removeAttribute("_moz_abspos"),e):null}function La(e){return!xu(e)&&(yu(e)?!bu(e.parentNode):Cu(e)||vu(e)||wu(e)||zu(e))}function Va(e,t){return La(e)&&function(e,t){for(e=e.parentNode;e&&e!==t;e=e.parentNode){if(zu(e))return!1;if(gu(e))return!0}return!0}(e,t)}function Ia(e){return e?{left:Eu(e.left),top:Eu(e.top),bottom:Eu(e.bottom),right:Eu(e.right),width:Eu(e.width),height:Eu(e.height)}:{left:0,top:0,bottom:0,right:0,width:0,height:0}}function Fa(e,t){return e=Ia(e),t||(e.left=e.left+e.width),e.right=e.left,e.width=0,e}function Ua(e,t,n){return 0<=e&&e<=Math.min(t.height,n.height)/2}function ja(e,t){return e.bottom-e.height/2<t.top||!(e.top>t.bottom)&&Ua(t.top-e.bottom,e,t)}function qa(e,t){return e.top>t.bottom||!(e.bottom<t.top)&&Ua(t.bottom-e.top,e,t)}function $a(e,t,n){return t>=e.left&&t<=e.right&&n>=e.top&&n<=e.bottom}function Wa(e){var t=e.startContainer,n=e.startOffset;return t.hasChildNodes()&&e.endOffset===n+1?t.childNodes[n]:null}function Ka(e,t){return 1===e.nodeType&&e.hasChildNodes()&&(t>=e.childNodes.length&&(t=e.childNodes.length-1),e=e.childNodes[t]),e}function Xa(e){return"string"==typeof e&&768<=e.charCodeAt(0)&&Nu.test(e)}function Ya(e,t,n){return e.isSome()&&t.isSome()?k.some(n(e.getOrDie(),t.getOrDie())):k.none()}function Ga(e){return e&&/[\r\n\t ]/.test(e)}function Ja(e){return!!e.setStart&&!!e.setEnd}function Qa(e){var t,n=e.startContainer,r=e.startOffset;return!!(Ga(e.toString())&&Bu(n.parentNode)&&Ge.isText(n)&&(t=n.data,Ga(t[r-1])||Ga(t[r+1])))}function Za(e){return 0===e.left&&0===e.right&&0===e.top&&0===e.bottom}function eu(e,t){var n=Fa(e,t);return n.width=1,n.right=n.left+1,n}var tu,nu=$("mce-annotation"),ru=$("data-mce-annotation"),ou=$("data-mce-annotation-uid"),iu=function(e,t){var n=yt.fromDom(e.getBody());return ma(n,"["+ou()+'="'+t+'"]')},au=0,uu="\ufeff",su=function(e){return e===uu},cu=uu,lu=function(e){return e.replace(new RegExp(uu,"g"),"")},fu=Ge.isElement,du=Ge.isText,hu=function(e){return du(e)&&e.data[0]===cu},mu=function(e){return du(e)&&e.data[e.data.length-1]===cu},gu=Ge.isContentEditableTrue,pu=Ge.isContentEditableFalse,vu=Ge.isBr,yu=Ge.isText,bu=Ge.matchNodeNames(["script","style","textarea"]),Cu=Ge.matchNodeNames(["img","input","textarea","hr","iframe","video","audio","object"]),wu=Ge.matchNodeNames(["table"]),xu=Da,zu=function(e){return!1===function(e){return Ge.isElement(e)&&"true"===e.getAttribute("unselectable")}(e)&&pu(e)},Eu=Math.round,Nu=new RegExp("[\u0300-\u036f\u0483-\u0487\u0488-\u0489\u0591-\u05bd\u05bf\u05c1-\u05c2\u05c4-\u05c5\u05c7\u0610-\u061a\u064b-\u065f\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7-\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08e3-\u0902\u093a\u093c\u0941-\u0948\u094d\u0951-\u0957\u0962-\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2-\u09e3\u0a01-\u0a02\u0a3c\u0a41-\u0a42\u0a47-\u0a48\u0a4b-\u0a4d\u0a51\u0a70-\u0a71\u0a75\u0a81-\u0a82\u0abc\u0ac1-\u0ac5\u0ac7-\u0ac8\u0acd\u0ae2-\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62-\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c00\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55-\u0c56\u0c62-\u0c63\u0c81\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc-\u0ccd\u0cd5-\u0cd6\u0ce2-\u0ce3\u0d01\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62-\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb-\u0ebc\u0ec8-\u0ecd\u0f18-\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86-\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039-\u103a\u103d-\u103e\u1058-\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085-\u1086\u108d\u109d\u135d-\u135f\u1712-\u1714\u1732-\u1734\u1752-\u1753\u1772-\u1773\u17b4-\u17b5\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927-\u1928\u1932\u1939-\u193b\u1a17-\u1a18\u1a1b\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1ab0-\u1abd\u1abe\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80-\u1b81\u1ba2-\u1ba5\u1ba8-\u1ba9\u1bab-\u1bad\u1be6\u1be8-\u1be9\u1bed\u1bef-\u1bf1\u1c2c-\u1c33\u1c36-\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1cf4\u1cf8-\u1cf9\u1dc0-\u1df5\u1dfc-\u1dff\u200c-\u200d\u20d0-\u20dc\u20dd-\u20e0\u20e1\u20e2-\u20e4\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302d\u302e-\u302f\u3099-\u309a\ua66f\ua670-\ua672\ua674-\ua67d\ua69e-\ua69f\ua6f0-\ua6f1\ua802\ua806\ua80b\ua825-\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\ua9e5\uaa29-\uaa2e\uaa31-\uaa32\uaa35-\uaa36\uaa43\uaa4c\uaa7c\uaab0\uaab2-\uaab4\uaab7-\uaab8\uaabe-\uaabf\uaac1\uaaec-\uaaed\uaaf6\uabe5\uabe8\uabed\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\uff9e-\uff9f]"),Su=[].slice,ku=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=Su.call(arguments);return function(e){for(var t=0;t<n.length;t++)if(!n[t](e))return!1;return!0}},Tu=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=Su.call(arguments);return function(e){for(var t=0;t<n.length;t++)if(n[t](e))return!0;return!1}},Au=Ge.isElement,Mu=La,Ru=Ge.matchStyleValues("display","block table"),Du=Ge.matchStyleValues("float","left right"),_u=ku(Au,Mu,s(Du)),Bu=s(Ge.matchStyleValues("white-space","pre pre-line pre-wrap")),Ou=Ge.isText,Hu=Ge.isBr,Pu=Xi.nodeIndex,Lu=Ka,Vu=function(e){return"createRange"in e?e.createRange():Xi.DOM.createRng()},Iu=function(e){var t,n;return t=0<(n=e.getClientRects()).length?Ia(n[0]):Ia(e.getBoundingClientRect()),!Ja(e)&&Hu(e)&&Za(t)?function(e){var t,n=e.ownerDocument,r=Vu(n),o=n.createTextNode("\xa0"),i=e.parentNode;return i.insertBefore(o,e),r.setStart(o,0),r.setEnd(o,1),t=Ia(r.getBoundingClientRect()),i.removeChild(o),t}(e):Za(t)&&Ja(e)?function(e){var t=e.startContainer,n=e.endContainer,r=e.startOffset,o=e.endOffset;if(t===n&&Ge.isText(n)&&0===r&&1===o){var i=e.cloneRange();return i.setEndAfter(n),Iu(i)}return null}(e):t},Fu=function(e){function r(e){0!==e.height&&(0<i.length&&function(e,t){return e.left===t.left&&e.top===t.top&&e.bottom===t.bottom&&e.right===t.right}(e,i[i.length-1])||i.push(e))}function t(e,t){var n=Vu(e.ownerDocument);if(t<e.data.length){if(Xa(e.data[t]))return i;if(Xa(e.data[t-1])&&(n.setStart(e,t),n.setEnd(e,t+1),!Qa(n)))return r(eu(Iu(n),!1)),i}0<t&&(n.setStart(e,t-1),n.setEnd(e,t),Qa(n)||r(eu(Iu(n),!1))),t<e.data.length&&(n.setStart(e,t),n.setEnd(e,t+1),Qa(n)||r(eu(Iu(n),!0)))}var n,o,i=[];if(Ou(e.container()))return t(e.container(),e.offset()),i;if(Au(e.container()))if(e.isAtEnd())o=Lu(e.container(),e.offset()),Ou(o)&&t(o,o.data.length),_u(o)&&!Hu(o)&&r(eu(Iu(o),!1));else{if(o=Lu(e.container(),e.offset()),Ou(o)&&t(o,0),_u(o)&&e.isAtEnd())return r(eu(Iu(o),!1)),i;n=Lu(e.container(),e.offset()-1),_u(n)&&!Hu(n)&&(!Ru(n)&&!Ru(o)&&_u(o)||r(eu(Iu(n),!1))),_u(o)&&r(eu(Iu(o),!0))}return i};function Uu(t,n,e){function r(){return e=e||Fu(Uu(t,n))}return{container:$(t),offset:$(n),toRange:function(){var e;return(e=Vu(t.ownerDocument)).setStart(t,n),e.setEnd(t,n),e},getClientRects:r,isVisible:function(){return 0<r().length},isAtStart:function(){return Ou(t),0===n},isAtEnd:function(){return Ou(t)?n>=t.data.length:n>=t.childNodes.length},isEqual:function(e){return e&&t===e.container()&&n===e.offset()},getNode:function(e){return Lu(t,e?n-1:n)}}}(tu=Uu=Uu||{}).fromRangeStart=function(e){return tu(e.startContainer,e.startOffset)},tu.fromRangeEnd=function(e){return tu(e.endContainer,e.endOffset)},tu.after=function(e){return tu(e.parentNode,Pu(e)+1)},tu.before=function(e){return tu(e.parentNode,Pu(e))},tu.isAbove=function(e,t){return Ya(E(t.getClientRects()),N(e.getClientRects()),ja).getOr(!1)},tu.isBelow=function(e,t){return Ya(N(t.getClientRects()),E(e.getClientRects()),qa).getOr(!1)},tu.isAtStart=function(e){return!!e&&e.isAtStart()},tu.isAtEnd=function(e){return!!e&&e.isAtEnd()},tu.isTextPosition=function(e){return!!e&&Ge.isText(e.container())},tu.isElementPosition=function(e){return!1===tu.isTextPosition(e)};function ju(t){return function(e){return t===e}}function qu(e){return(_s(e)?"text()":e.nodeName.toLowerCase())+"["+function(e){var r,t,n;return r=Ps(Hs(e)),t=kn.findIndex(r,ju(e),e),r=r.slice(0,t+1),n=kn.reduce(r,function(e,t,n){return _s(t)&&_s(r[n-1])&&e++,e},0),r=kn.filter(r,Ge.matchNodeNames([e.nodeName])),(t=kn.findIndex(r,ju(e),e))-n}(e)+"]"}function $u(e,t){var n,r,o,i,a,u=[];return n=t.container(),r=t.offset(),_s(n)?o=function(e,t){for(;(e=e.previousSibling)&&_s(e);)t+=e.data.length;return t}(n,r):(r>=(i=n.childNodes).length?(o="after",r=i.length-1):o="before",n=i[r]),u.push(qu(n)),a=function(e,t,n){var r=[];for(t=t.parentNode;t!==e&&(!n||!n(t));t=t.parentNode)r.push(t);return r}(e,n),a=kn.filter(a,s(Ge.isBogus)),(u=u.concat(kn.map(a,function(e){return qu(e)}))).reverse().join("/")+","+o}function Wu(e,t){var n,r,o;return t?(t=(n=t.split(","))[0].split("/"),o=1<n.length?n[1]:"before",(r=kn.reduce(t,function(e,t){return(t=/([\w\-\(\)]+)\[([0-9]+)\]/.exec(t))?("text()"===t[1]&&(t[1]="#text"),function(e,t,n){var r=Ps(e);return r=kn.filter(r,function(e,t){return!_s(e)||!_s(r[t-1])}),(r=kn.filter(r,Ge.matchNodeNames([t])))[n]}(e,t[1],parseInt(t[2],10))):null},e))?_s(r)?function(e,t){for(var n,r=e,o=0;_s(r);){if(n=r.data.length,o<=t&&t<=o+n){e=r,t-=o;break}if(!_s(r.nextSibling)){e=r,t=n;break}o+=n,r=r.nextSibling}return _s(e)&&t>e.data.length&&(t=e.data.length),Ds(e,t)}(r,parseInt(o,10)):(o="after"===o?Os(r)+1:Os(r),Ds(r.parentNode,o)):null):null}function Ku(e,t){Ge.isText(t)&&0===t.data.length&&e.remove(t)}function Xu(e,t,n){Ge.isDocumentFragment(n)?function(t,e,n){var r=k.from(n.firstChild),o=k.from(n.lastChild);e.insertNode(n),r.each(function(e){return Ku(t,e.previousSibling)}),o.each(function(e){return Ku(t,e.nextSibling)})}(e,t,n):function(e,t,n){t.insertNode(n),Ku(e,n.previousSibling),Ku(e,n.nextSibling)}(e,t,n)}function Yu(e,t,n,r,o){var i,a=r[o?"startContainer":"endContainer"],u=r[o?"startOffset":"endOffset"],s=[],c=0,l=e.getRoot();for(Ge.isText(a)?s.push(n?function(e,t,n){var r,o;for(o=e(t.data.slice(0,n)).length,r=t.previousSibling;r&&Ge.isText(r);r=r.previousSibling)o+=e(r.data).length;return o}(t,a,u):u):(u>=(i=a.childNodes).length&&i.length&&(c=1,u=Math.max(0,i.length-1)),s.push(e.nodeIndex(i[u],n)+c));a&&a!==l;a=a.parentNode)s.push(e.nodeIndex(a,n));return s}function Gu(e,t,n){var r=0;return Mn.each(e.select(t),function(e){if("all"!==e.getAttribute("data-mce-bogus"))return e!==n&&void r++}),r}function Ju(e,t){var n,r,o,i=t?"start":"end";n=e[i+"Container"],r=e[i+"Offset"],Ge.isElement(n)&&"TR"===n.nodeName&&(n=(o=n.childNodes)[Math.min(t?r:r-1,o.length-1)])&&(r=t?0:n.childNodes.length,e["set"+(t?"Start":"End")](n,r))}function Qu(e){return Ju(e,!0),Ju(e,!1),e}function Zu(e,t){var n;if(Ge.isElement(e)&&(e=Ka(e,t),Ls(e)))return e;if(Da(e)){if(Ge.isText(e)&&Ma(e)&&(e=e.parentNode),n=e.previousSibling,Ls(n))return n;if(n=e.nextSibling,Ls(n))return n}}function es(e,t,n){var r=n.getNode(),o=r?r.nodeName:null,i=n.getRng();if(Ls(r)||"IMG"===o)return{name:o,index:Gu(n.dom,o,r)};var a=function(e){return Zu(e.startContainer,e.startOffset)||Zu(e.endContainer,e.endOffset)}(i);return a?{name:o=a.tagName,index:Gu(n.dom,o,a)}:function(e,t,n,r){var o=t.dom,i={};return i.start=Yu(o,e,n,r,!0),t.isCollapsed()||(i.end=Yu(o,e,n,r,!1)),i}(e,n,t,i)}function ts(e,t,n){var r={"data-mce-type":"bookmark",id:t,style:"overflow:hidden;line-height:0px"};return n?e.create("span",r,"&#xFEFF;"):e.create("span",r)}function ns(e,t){var n=e.dom,r=e.getRng(),o=n.uniqueId(),i=e.isCollapsed(),a=e.getNode(),u=a.nodeName;if("IMG"===u)return{name:u,index:Gu(n,u,a)};var s=Qu(r.cloneRange());if(!i){s.collapse(!1);var c=ts(n,o+"_end",t);Xu(n,s,c)}(r=Qu(r)).collapse(!0);var l=ts(n,o+"_start",t);return Xu(n,r,l),e.moveToBookmark({id:o,keep:1}),{id:o}}function rs(e){return Ge.isElement(e)&&e.id===Is}function os(e,t){for(;t&&t!==e;){if(t.id===Is)return t;t=t.parentNode}return null}function is(e){var t=e.parentNode;t&&t.removeChild(e)}function as(e,t){0===t.length?is(e):e.nodeValue=t}function us(e){var t=lu(e);return{count:e.length-t.length,text:t}}function ss(e,t){return js(e),t}function cs(e,t){var n=t.container(),r=function(e,t){var n=f(e,t);return-1===n?k.none():k.some(n)}(P(n.childNodes),e).map(function(e){return e<t.offset()?Ds(n,t.offset()-1):t}).getOr(t);return js(e),r}function ls(e,t){return Us(e)&&t.container()===e?function(e,t){var n=us(e.data.substr(0,t.offset())),r=us(e.data.substr(t.offset())),o=n.text+r.text;return 0<o.length?(as(e,o),Ds(e,t.offset()-n.count)):t}(e,t):ss(e,t)}function fs(e,t,n){var r,o,i,a,u,s=Fa(t.getBoundingClientRect(),n);return i="BODY"===e.tagName?(r=e.ownerDocument.documentElement,o=e.scrollLeft||r.scrollLeft,e.scrollTop||r.scrollTop):(u=e.getBoundingClientRect(),o=e.scrollLeft-u.left,e.scrollTop-u.top),s.left+=o,s.right+=o,s.top+=i,s.bottom+=i,s.width=1,0<(a=t.offsetWidth-t.clientWidth)&&(n&&(a*=-1),s.left+=a,s.right+=a),s}function ds(i,a,e){var t,u,s=Je(k.none()),c=function(){!function(e){var t,n,r,o,i;for(t=vi("*[contentEditable=false]",e),o=0;o<t.length;o++)r=(n=t[o]).previousSibling,mu(r)&&(1===(i=r.data).length?r.parentNode.removeChild(r):r.deleteData(i.length-1,1)),r=n.nextSibling,hu(r)&&(1===(i=r.data).length?r.parentNode.removeChild(r):r.deleteData(0,1))}(i),u&&(qs.remove(u),u=null),s.get().each(function(e){vi(e.caret).remove(),s.set(k.none())}),pn.clearInterval(t)},l=function(){t=pn.setInterval(function(){e()?vi("div.mce-visual-caret",i).toggleClass("mce-visual-caret-hidden"):vi("div.mce-visual-caret",i).addClass("mce-visual-caret-hidden")},500)};return{show:function(t,e){var n,r;if(c(),function(e){return Ge.isElement(e)&&/^(TD|TH)$/i.test(e.tagName)}(e))return null;if(!a(e))return u=function(e,t){var n,r,o;if(r=e.ownerDocument.createTextNode(cu),o=e.parentNode,t){if(n=e.previousSibling,du(n)){if(Da(n))return n;if(mu(n))return n.splitText(n.data.length-1)}o.insertBefore(r,e)}else{if(n=e.nextSibling,du(n)){if(Da(n))return n;if(hu(n))return n.splitText(1),n}e.nextSibling?o.insertBefore(r,e.nextSibling):o.appendChild(r)}return r}(e,t),r=e.ownerDocument.createRange(),Ws(u.nextSibling)?(r.setStart(u,0),r.setEnd(u,0)):(r.setStart(u,1),r.setEnd(u,1)),r;u=Ha("p",e,t),n=fs(i,e,t),vi(u).css("top",n.top);var o=vi('<div class="mce-visual-caret" data-mce-bogus="all"></div>').css(n).appendTo(i)[0];return s.set(k.some({caret:o,element:e,before:t})),s.get().each(function(e){t&&vi(e.caret).addClass("mce-visual-caret-before")}),l(),(r=e.ownerDocument.createRange()).setStart(u,0),r.setEnd(u,0),r},hide:c,getCss:function(){return".mce-visual-caret {position: absolute;background-color: black;background-color: currentcolor;}.mce-visual-caret-hidden {display: none;}*[data-mce-caret] {position: absolute;left: -1000px;right: auto;top: 0;margin: 0;padding: 0;}"},reposition:function(){s.get().each(function(e){var t=fs(i,e.element,e.before);vi(e.caret).css(G({},t))})},destroy:function(){return pn.clearInterval(t)}}}function hs(){return $s.isIE()||$s.isEdge()||$s.isFirefox()}function ms(e){return Ws(e)||Ge.isTable(e)&&hs()}function gs(e){return 0<e}function ps(e){return e<0}function vs(e,t){for(var n;n=e(t);)if(!Gs(n))return n;return null}function ys(e,t,n,r,o){var i=new yi(e,r);if(ps(t)){if((Ks(e)||Gs(e))&&n(e=vs(i.prev,!0)))return e;for(;e=vs(i.prev,o);)if(n(e))return e}if(gs(t)){if((Ks(e)||Gs(e))&&n(e=vs(i.next,!0)))return e;for(;e=vs(i.next,o);)if(n(e))return e}return null}function bs(e,t){for(;e&&e!==t;){if(Xs(e))return e;e=e.parentNode}return null}function Cs(e,t,n){return bs(e.container(),n)===bs(t.container(),n)}function ws(e,t){var n,r;return t?(n=t.container(),r=t.offset(),Js(n)?n.childNodes[r+e]:null):null}function xs(e,t){var n=t.ownerDocument.createRange();return e?(n.setStartBefore(t),n.setEndBefore(t)):(n.setStartAfter(t),n.setEndAfter(t)),n}function zs(e,t,n){var r,o,i,a;for(o=e?"previousSibling":"nextSibling";n&&n!==t;){if(r=n[o],Ys(r)&&(r=r[o]),Ks(r)){if(a=n,bs(r,i=t)===bs(a,i))return r;break}if(Qs(r))break;n=n.parentNode}return null}function Es(e,t,n){var r,o,i,a,u=d(zs,!0,t),s=d(zs,!1,t);if(o=n.startContainer,i=n.startOffset,Ma(o)){if(Js(o)||(o=o.parentNode),"before"===(a=o.getAttribute("data-mce-caret"))&&(r=o.nextSibling,ms(r)))return Zs(r);if("after"===a&&(r=o.previousSibling,ms(r)))return ec(r)}if(!n.collapsed)return n;if(Ge.isText(o)){if(Ys(o)){if(1===e){if(r=s(o))return Zs(r);if(r=u(o))return ec(r)}if(-1===e){if(r=u(o))return ec(r);if(r=s(o))return Zs(r)}return n}if(mu(o)&&i>=o.data.length-1)return 1===e&&(r=s(o))?Zs(r):n;if(hu(o)&&i<=1)return-1===e&&(r=u(o))?ec(r):n;if(i===o.data.length)return(r=s(o))?Zs(r):n;if(0===i)return(r=u(o))?ec(r):n}return n}function Ns(e,t){return k.from(ws(e?0:-1,t)).filter(Ks)}function Ss(e,t,n){var r=Es(e,t,n);return-1===e?Uu.fromRangeStart(r):Uu.fromRangeEnd(r)}function ks(e){return k.from(e.getNode()).map(yt.fromDom)}function Ts(e,t){for(;t=e(t);)if(t.isVisible())return t;return t}function As(e,t){var n=Cs(e,t);return!(n||!Ge.isBr(e.getNode()))||n}var Ms,Rs,Ds=Uu,_s=Ge.isText,Bs=Ge.isBogus,Os=Xi.nodeIndex,Hs=function(e){var t=e.parentNode;return Bs(t)?Hs(t):t},Ps=function(e){return e?kn.reduce(e.childNodes,function(e,t){return Bs(t)&&"BR"!==t.nodeName?e=e.concat(Ps(t)):e.push(t),e},[]):[]},Ls=Ge.isContentEditableFalse,Vs={getBookmark:function(e,t,n){return 2===t?es(lu,n,e):3===t?function(e){var t=e.getRng();return{start:$u(e.dom.getRoot(),Ds.fromRangeStart(t)),end:$u(e.dom.getRoot(),Ds.fromRangeEnd(t))}}(e):t?function(e){return{rng:e.getRng()}}(e):ns(e,!1)},getUndoBookmark:d(es,W,!0),getPersistentBookmark:ns},Is="_mce_caret",Fs=Ge.isElement,Us=Ge.isText,js=function(e){if(Fs(e)&&Da(e)&&(_a(e)?e.removeAttribute("data-mce-caret"):is(e)),Us(e)){var t=lu(function(e){try{return e.nodeValue}catch(t){return""}}(e));as(e,t)}},qs={removeAndReposition:function(e,t){return Ds.isTextPosition(t)?ls(e,t):function(e,t){return t.container()===e.parentNode?cs(e,t):ss(e,t)}(e,t)},remove:js},$s=oe().browser,Ws=Ge.isContentEditableFalse,Ks=Ge.isContentEditableFalse,Xs=Ge.matchStyleValues("display","block table table-cell table-caption list-item"),Ys=Da,Gs=Ma,Js=Ge.isElement,Qs=La,Zs=d(xs,!0),ec=d(xs,!1);(Rs=Ms=Ms||{})[Rs.Backwards=-1]="Backwards",Rs[Rs.Forwards=1]="Forwards";function tc(e,t){return e.hasChildNodes()&&t<e.childNodes.length?e.childNodes[t]:null}function nc(e,t){if(gs(e)){if(Ac(t.previousSibling)&&!Sc(t.previousSibling))return Ds.before(t);if(Sc(t))return Ds(t,0)}if(ps(e)){if(Ac(t.nextSibling)&&!Sc(t.nextSibling))return Ds.after(t);if(Sc(t))return Ds(t,t.data.length)}return ps(e)?Tc(t)?Ds.before(t):Ds.after(t):Ds.before(t)}function rc(t){return{next:function(e){return Dc(Ms.Forwards,e,t)},prev:function(e){return Dc(Ms.Backwards,e,t)}}}function oc(e){return Ds.isTextPosition(e)?0===e.offset():La(e.getNode())}function ic(e){if(Ds.isTextPosition(e)){var t=e.container();return e.offset()===t.data.length}return La(e.getNode(!0))}function ac(e,t){return!Ds.isTextPosition(e)&&!Ds.isTextPosition(t)&&e.getNode()===t.getNode(!0)}function uc(e,t,n){return e?!ac(t,n)&&!function(e){return!Ds.isTextPosition(e)&&Ge.isBr(e.getNode())}(t)&&ic(t)&&oc(n):!ac(n,t)&&oc(t)&&ic(n)}function sc(t,n,r){return _c(t,n,r).bind(function(e){return Cs(r,e,n)&&uc(t,r,e)?_c(t,n,e):k.some(e)})}function cc(e,t){var n=e?t.firstChild:t.lastChild;return Ge.isText(n)?k.some(Ds(n,e?0:n.data.length)):n?La(n)?k.some(e?Ds.before(n):function(e){return Ge.isBr(e)?Ds.before(e):Ds.after(e)}(n)):function(e,t,n){var r=e?Ds.before(n):Ds.after(n);return _c(e,t,r)}(e,t,n):k.none()}function lc(e,t){return Ge.isElement(t)&&e.isBlock(t)&&!t.innerHTML&&!Nn.ie&&(t.innerHTML='<br data-mce-bogus="1" />'),t}function fc(e,t){return Pc.lastPositionIn(e).fold(function(){return!1},function(e){return t.setStart(e.container(),e.offset()),t.setEnd(e.container(),e.offset()),!0})}function dc(e,t,n){return!(!function(e){return!1===e.hasChildNodes()}(t)||!os(e,t))&&(function(e,t){var n=e.ownerDocument.createTextNode(cu);e.appendChild(n),t.setStart(n,0),t.setEnd(n,0)}(t,n),!0)}function hc(e,t,n,r){var o,i,a,u,s=n[t?"start":"end"],c=e.getRoot();if(s){for(a=s[0],i=c,o=s.length-1;1<=o;o--){if(u=i.childNodes,dc(c,i,r))return!0;if(s[o]>u.length-1)return!!dc(c,i,r)||fc(i,r);i=u[s[o]]}3===i.nodeType&&(a=Math.min(s[0],i.nodeValue.length)),1===i.nodeType&&(a=Math.min(s[0],i.childNodes.length)),t?r.setStart(i,a):r.setEnd(i,a)}return!0}function mc(e){return Ge.isText(e)&&0<e.data.length}function gc(e,t,n){var r,o,i,a,u,s,c=e.get(n.id+"_"+t),l=n.keep;if(c){if(r=c.parentNode,s=(u=(o="start"===t?l?c.hasChildNodes()?(r=c.firstChild,1):mc(c.nextSibling)?(r=c.nextSibling,0):mc(c.previousSibling)?(r=c.previousSibling,c.previousSibling.data.length):(r=c.parentNode,e.nodeIndex(c)+1):e.nodeIndex(c):l?c.hasChildNodes()?(r=c.firstChild,1):mc(c.previousSibling)?(r=c.previousSibling,c.previousSibling.data.length):(r=c.parentNode,e.nodeIndex(c)):e.nodeIndex(c),r),o),!l){for(a=c.previousSibling,i=c.nextSibling,Mn.each(Mn.grep(c.childNodes),function(e){Ge.isText(e)&&(e.nodeValue=e.nodeValue.replace(/\uFEFF/g,""))});c=e.get(n.id+"_"+t);)e.remove(c,!0);a&&i&&a.nodeType===i.nodeType&&Ge.isText(a)&&!Nn.opera&&(o=a.nodeValue.length,a.appendData(i.nodeValue),e.remove(i),s=(u=a,o))}return k.some(Ds(u,s))}return k.none()}function pc(e){return e&&/^(IMG)$/.test(e.nodeName)}function vc(e,t,n){return"color"!==n&&"backgroundColor"!==n||(t=e.toHex(t)),"fontWeight"===n&&700===t&&(t="bold"),"fontFamily"===n&&(t=t.replace(/[\'\"]/g,"").replace(/,\s+/g,",")),""+t}function yc(e,t){for(void 0===t&&(t=3===e.nodeType?e.length:e.childNodes.length);e&&e.hasChildNodes();)(e=e.childNodes[t])&&(t=3===e.nodeType?e.length:e.childNodes.length);return{node:e,offset:t}}function bc(e,t){for(var n=t;n;){if(1===n.nodeType&&e.getContentEditable(n))return"false"===e.getContentEditable(n)?n:t;n=n.parentNode}return t}function Cc(e,t,n,r){var o,i,a=n.nodeValue;return void 0===r&&(r=e?a.length:0),e?(o=a.lastIndexOf(" ",r),-1!==(o=(i=a.lastIndexOf("\xa0",r))<o?o:i)&&!t&&(o<r||!e)&&o<=a.length&&o++):(o=a.indexOf(" ",r),i=a.indexOf("\xa0",r),o=-1!==o&&(-1===i||o<i)?o:i),o}function wc(e,t,n,r,o,i){var a,u,s;if(3===n.nodeType){if(-1!==(u=Cc(o,i,n,r)))return{container:n,offset:u};s=n}for(var c=new yi(n,e.getParent(n,e.isBlock)||t);a=c[o?"prev":"next"]();)if(3!==a.nodeType||qc(a.parentNode)){if(e.isBlock(a)||jc.isEq(a,"BR"))break}else if(-1!==(u=Cc(o,i,s=a)))return{container:a,offset:u};if(s)return{container:s,offset:r=o?0:s.length}}function xc(e,t,n,r,o){var i,a,u,s;for(3===r.nodeType&&0===r.nodeValue.length&&r[o]&&(r=r[o]),i=$c(e,r),a=0;a<i.length;a++)for(u=0;u<t.length;u++)if(!("collapsed"in(s=t[u])&&s.collapsed!==n.collapsed)&&e.is(i[a],s.selector))return i[a];return r}function zc(t,e,n,r){var o,i=t.dom,a=i.getRoot();if(e[0].wrapper||(o=i.getParent(n,e[0].block,a)),!o){var u=i.getParent(n,"LI,TD,TH");o=i.getParent(3===n.nodeType?n.parentNode:n,function(e){return e!==a&&Kc(t,e)},u)}if(o&&e[0].wrapper&&(o=$c(i,o,"ul,ol").reverse()[0]||o),!o)for(o=n;o[r]&&!i.isBlock(o[r])&&(o=o[r],!jc.isEq(o,"br")););return o||n}function Ec(e,t,n,r,o,i,a){var u,s,c,l,f,d;if(u=s=a?n:o,l=a?"previousSibling":"nextSibling",f=e.getRoot(),3===u.nodeType&&!Wc(u)&&(a?0<r:i<u.nodeValue.length))return u;for(;;){if(!t[0].block_expand&&e.isBlock(s))return s;for(c=s[l];c;c=c[l])if(!qc(c)&&!Wc(c)&&("BR"!==(d=c).nodeName||!d.getAttribute("data-mce-bogus")||d.nextSibling))return s;if(s===f||s.parentNode===f){u=s;break}s=s.parentNode}return u}var Nc=Ge.isContentEditableFalse,Sc=Ge.isText,kc=Ge.isElement,Tc=Ge.isBr,Ac=La,Mc=function(e){return Cu(e)||function(e){return!!zu(e)&&!0!==b(P(e.getElementsByTagName("*")),function(e,t){return e||gu(t)},!1)}(e)},Rc=Va,Dc=function(e,t,n){var r,o,i,a,u;if(!kc(n)||!t)return null;if(t.isEqual(Ds.after(n))&&n.lastChild){if(u=Ds.after(n.lastChild),ps(e)&&Ac(n.lastChild)&&kc(n.lastChild))return Tc(n.lastChild)?Ds.before(n.lastChild):u}else u=t;var s=u.container(),c=u.offset();if(Sc(s)){if(ps(e)&&0<c)return Ds(s,--c);if(gs(e)&&c<s.length)return Ds(s,++c);r=s}else{if(ps(e)&&0<c&&(o=tc(s,c-1),Ac(o)))return!Mc(o)&&(i=ys(o,e,Rc,o))?Sc(i)?Ds(i,i.data.length):Ds.after(i):Sc(o)?Ds(o,o.data.length):Ds.before(o);if(gs(e)&&c<s.childNodes.length&&(o=tc(s,c),Ac(o)))return Tc(o)?function(e,t){var n=t.nextSibling;return n&&Ac(n)?Sc(n)?Ds(n,0):Ds.before(n):Dc(Ms.Forwards,Ds.after(t),e)}(n,o):!Mc(o)&&(i=ys(o,e,Rc,o))?Sc(i)?Ds(i,0):Ds.before(i):Sc(o)?Ds(o,0):Ds.after(o);r=o||u.getNode()}return(gs(e)&&u.isAtEnd()||ps(e)&&u.isAtStart())&&(r=ys(r,e,$(!0),n,!0),Rc(r,n))?nc(e,r):(o=ys(r,e,Rc,n),!(a=kn.last(y(function(e,t){for(var n=[];e&&e!==t;)n.push(e),e=e.parentNode;return n}(s,n),Nc)))||o&&a.contains(o)?o?nc(e,o):null:u=gs(e)?Ds.after(a):Ds.before(a))},_c=function(e,t,n){var r=rc(t);return k.from(e?r.next(n):r.prev(n))},Bc=function(t,n,e,r){return sc(t,n,e).bind(function(e){return r(e)?Bc(t,n,e,r):k.some(e)})},Oc=d(_c,!0),Hc=d(_c,!1),Pc={fromPosition:_c,nextPosition:Oc,prevPosition:Hc,navigate:sc,navigateIgnore:Bc,positionIn:cc,firstPositionIn:d(cc,!0),lastPositionIn:d(cc,!1)},Lc=function(e,t){var n=e.dom;if(t){if(function(e){return Mn.isArray(e.start)}(t))return function(e,t){var n=e.createRng();return hc(e,!0,t,n)&&hc(e,!1,t,n)?k.some(n):k.none()}(n,t);if(function(e){return"string"==typeof e.start}(t))return k.some(function(e,t){var n,r;return n=e.createRng(),r=Wu(e.getRoot(),t.start),n.setStart(r.container(),r.offset()),r=Wu(e.getRoot(),t.end),n.setEnd(r.container(),r.offset()),n}(n,t));if(function(e){return e.hasOwnProperty("id")}(t))return function(r,e){var t=gc(r,"start",e),n=gc(r,"end",e);return Ya(t,n.or(t),function(e,t){var n=r.createRng();return n.setStart(lc(r,e.container()),e.offset()),n.setEnd(lc(r,t.container()),t.offset()),n})}(n,t);if(function(e){return e.hasOwnProperty("name")}(t))return function(n,e){return k.from(n.select(e.name)[e.index]).map(function(e){var t=n.createRng();return t.selectNode(e),t})}(n,t);if(function(e){return e.hasOwnProperty("rng")}(t))return k.some(t.rng)}return k.none()},Vc=function(e,t,n){return Vs.getBookmark(e,t,n)},Ic=function(t,e){Lc(t,e).each(function(e){t.setRng(e)})},Fc=function(e){return Ge.isElement(e)&&"SPAN"===e.tagName&&"bookmark"===e.getAttribute("data-mce-type")},Uc=function(e){return e&&3===e.nodeType&&/^([\t \r\n]+|)$/.test(e.nodeValue)},jc={isInlineBlock:pc,moveStart:function(e,t,n){var r,o,i,a=n.startOffset,u=n.startContainer;if((n.startContainer!==n.endContainer||!pc(n.startContainer.childNodes[n.startOffset]))&&1===u.nodeType)for(a<(i=u.childNodes).length?(u=i[a],r=new yi(u,e.getParent(u,e.isBlock))):(u=i[i.length-1],(r=new yi(u,e.getParent(u,e.isBlock))).next(!0)),o=r.current();o;o=r.next())if(3===o.nodeType&&!Uc(o))return n.setStart(o,0),void t.setRng(n)},getNonWhiteSpaceSibling:function(e,t,n){if(e)for(t=t?"nextSibling":"previousSibling",e=n?e:e[t];e;e=e[t])if(1===e.nodeType||!Uc(e))return e},isTextBlock:function(e,t){return t.nodeType&&(t=t.nodeName),!!e.schema.getTextBlockElements()[t.toLowerCase()]},isValid:function(e,t,n){return e.schema.isValidChild(t,n)},isWhiteSpaceNode:Uc,replaceVars:function(e,n){return"string"!=typeof e?e=e(n):n&&(e=e.replace(/%(\w+)/g,function(e,t){return n[t]||e})),e},isEq:function(e,t){return e=""+((e=e||"").nodeName||e),t=""+((t=t||"").nodeName||t),e.toLowerCase()===t.toLowerCase()},normalizeStyleValue:vc,getStyle:function(e,t,n){return vc(e,e.getStyle(t,n),n)},getTextDecoration:function(t,e){var n;return t.getParent(e,function(e){return(n=t.getStyle(e,"text-decoration"))&&"none"!==n}),n},getParents:function(e,t,n){return e.getParents(t,n,e.getRoot())}},qc=Fc,$c=jc.getParents,Wc=jc.isWhiteSpaceNode,Kc=jc.isTextBlock,Xc=function(e,t,n,r){var o,i=t.startContainer,a=t.startOffset,u=t.endContainer,s=t.endOffset,c=e.dom;return 1===i.nodeType&&i.hasChildNodes()&&3===(i=Ka(i,a)).nodeType&&(a=0),1===u.nodeType&&u.hasChildNodes()&&3===(u=Ka(u,t.collapsed?s:s-1)).nodeType&&(s=u.nodeValue.length),i=bc(c,i),u=bc(c,u),(qc(i.parentNode)||qc(i))&&(i=qc(i)?i:i.parentNode,3===(i=t.collapsed?i.previousSibling||i:i.nextSibling||i).nodeType&&(a=t.collapsed?i.length:0)),(qc(u.parentNode)||qc(u))&&(u=qc(u)?u:u.parentNode,3===(u=t.collapsed?u.nextSibling||u:u.previousSibling||u).nodeType&&(s=t.collapsed?0:u.length)),t.collapsed&&((o=wc(c,e.getBody(),i,a,!0,r))&&(i=o.container,a=o.offset),(o=wc(c,e.getBody(),u,s,!1,r))&&(u=o.container,s=o.offset)),n[0].inline&&(u=r?u:function(e,t){var n=yc(e,t);if(n.node){for(;n.node&&0===n.offset&&n.node.previousSibling;)n=yc(n.node.previousSibling);n.node&&0<n.offset&&3===n.node.nodeType&&" "===n.node.nodeValue.charAt(n.offset-1)&&1<n.offset&&(e=n.node).splitText(n.offset-1)}return e}(u,s)),(n[0].inline||n[0].block_expand)&&(n[0].inline&&3===i.nodeType&&0!==a||(i=Ec(c,n,i,a,u,s,!0)),n[0].inline&&3===u.nodeType&&s!==u.nodeValue.length||(u=Ec(c,n,i,a,u,s,!1))),n[0].selector&&!1!==n[0].expand&&!n[0].inline&&(i=xc(c,n,t,i,"previousSibling"),u=xc(c,n,t,u,"nextSibling")),(n[0].block||n[0].selector)&&(i=zc(e,n,i,"previousSibling"),u=zc(e,n,u,"nextSibling"),n[0].block&&(c.isBlock(i)||(i=Ec(c,n,i,a,u,s,!0)),c.isBlock(u)||(u=Ec(c,n,i,a,u,s,!1)))),1===i.nodeType&&(a=c.nodeIndex(i),i=i.parentNode),1===u.nodeType&&(s=c.nodeIndex(u)+1,u=u.parentNode),{startContainer:i,startOffset:a,endContainer:u,endOffset:s}},Yc=Mn.each,Gc=function(e,t,o){var n,r,i,a,u,s,c,l=t.startContainer,f=t.startOffset,d=t.endContainer,h=t.endOffset;if(0<(c=e.select("td[data-mce-selected],th[data-mce-selected]")).length)Yc(c,function(e){o([e])});else{var m=function(e){var t;return 3===(t=e[0]).nodeType&&t===l&&f>=t.nodeValue.length&&e.splice(0,1),t=e[e.length-1],0===h&&0<e.length&&t===d&&3===t.nodeType&&e.splice(e.length-1,1),e},g=function(e,t,n){for(var r=[];e&&e!==n;e=e[t])r.push(e);return r},p=function(e,t){do{if(e.parentNode===t)return e;e=e.parentNode}while(e)},v=function(e,t,n){var r=n?"nextSibling":"previousSibling";for(u=(a=e).parentNode;a&&a!==t;a=u)u=a.parentNode,(s=g(a===e?a:a[r],r)).length&&(n||s.reverse(),o(m(s)))};if(1===l.nodeType&&l.hasChildNodes()&&(l=l.childNodes[f]),1===d.nodeType&&d.hasChildNodes()&&(d=function(e,t){var n=e.childNodes;return--t>n.length-1?t=n.length-1:t<0&&(t=0),n[t]||e}(d,h)),l===d)return o(m([l]));for(n=e.findCommonAncestor(l,d),a=l;a;a=a.parentNode){if(a===d)return v(l,n,!0);if(a===n)break}for(a=d;a;a=a.parentNode){if(a===l)return v(d,n);if(a===n)break}r=p(l,n)||l,i=p(d,n)||d,v(l,r,!0),(s=g(r===l?r:r.nextSibling,"nextSibling",i===d?i.nextSibling:i)).length&&o(m(s)),v(d,i)}};function Jc(e){return ol.get(e)}function Qc(t,n,r,o){return Se(n).fold(function(){return"skipping"},function(e){return"br"===o||function(e){return zt(e)&&"\ufeff"===Jc(e)}(n)?"valid":function(e){return xt(e)&&ha(e,nu())}(n)?"existing":rs(n)?"caret":jc.isValid(t,r,o)&&jc.isValid(t,ie(e),r)?"valid":"invalid-child"})}function Zc(e,t,n,r){var o=t.uid,i=void 0===o?function(e){var t=(new Date).getTime();return e+"_"+Math.floor(1e9*Math.random())+ ++au+String(t)}("mce-annotation"):o,a=function h(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n}(t,["uid"]),u=yt.fromTag("span",e);fa(u,nu()),Tt(u,""+ou(),i),Tt(u,""+ru(),n);var s=r(i,a),c=s.attributes,l=void 0===c?{}:c,f=s.classes,d=void 0===f?[]:f;return me(u,l),function(t,e){z(e,function(e){fa(t,e)})}(u,d),u}function el(n,e,t,r,o){function i(){c.set(k.none())}function a(e){z(e,l)}var u=[],s=Zc(n.getDoc(),o,t,r),c=Je(k.none()),l=function(e){switch(Qc(n,e,"span",ie(e))){case"invalid-child":i();var t=Re(e);a(t),i();break;case"valid":!function(e,t){Ci(e,t),Di(t,e)}(e,c.get().getOrThunk(function(){var e=ka(s);return u.push(e),c.set(k.some(e)),e}))}};return Gc(n.dom,e,function(e){i(),function(e){var t=X(e,yt.fromDom);a(t)}(e)}),u}function tl(o,i,a,u){o.undoManager.transact(function(){var e=o.selection.getRng();if(e.collapsed&&function(e,t){var n=Xc(e,t,[{inline:!0}],function(e){return 3===e.startContainer.nodeType&&e.startContainer.nodeValue.length>=e.startOffset&&"\xa0"===e.startContainer.nodeValue[e.startOffset]}(t));t.setStart(n.startContainer,n.startOffset),t.setEnd(n.endContainer,n.endOffset),e.selection.setRng(t)}(o,e),o.selection.getRng().collapsed){var t=Zc(o.getDoc(),u,i,a.decorate);Aa(t,"\xa0"),o.selection.getRng().insertNode(t.dom()),o.selection.select(t.dom())}else{var n=Vs.getPersistentBookmark(o.selection,!1),r=o.selection.getRng();el(o,r,i,a.decorate,u),o.selection.moveToBookmark(n)}})}function nl(r){var o=function(){var n={};return{register:function(e,t){n[e]={name:e,settings:t}},lookup:function(e){return n.hasOwnProperty(e)?k.from(n[e]).map(function(e){return e.settings}):k.none()}}}();Na(r,o);var n=Ea(r);return{register:function(e,t){o.register(e,t)},annotate:function(t,n){o.lookup(t).each(function(e){tl(r,t,e,n)})},annotationChanged:function(e,t){n.addListener(e,t)},remove:function(e){za(r,k.some(e)).each(function(e){var t=e.elements;z(t,Ni)})},getAll:function(e){var t=function(e,t){var n=yt.fromDom(e.getBody()),r=ma(n,"["+ru()+'="'+t+'"]'),o={};return z(r,function(e){var t=ge(e,ou()),n=o.hasOwnProperty(t)?o[t]:[];o[t]=n.concat([e])}),o}(r,e);return se(t,function(e){return X(e,function(e){return e.dom()})})}}}function rl(e,t,n){var r=n?"lastChild":"firstChild",o=n?"prev":"next";if(e[r])return e[r];if(e!==t){var i=e[o];if(i)return i;for(var a=e.parent;a&&a!==t;a=a.parent)if(i=a[o])return i}}var ol=function bN(n,r){var t=function(e){return n(e)?k.from(e.dom().nodeValue):k.none()};return{get:function(e){if(!n(e))throw new Error("Can only get "+r+" value of a "+r+" node");return t(e).getOr("")},getOption:t,set:function(e,t){if(!n(e))throw new Error("Can only set raw "+r+" value of a "+r+" node");e.dom().nodeValue=t}}}(zt,"text"),il=/^[ \t\r\n]*$/,al={"#text":3,"#comment":8,"#cdata":4,"#pi":7,"#doctype":10,"#document-fragment":11},ul=(sl.create=function(e,t){var n=new sl(e,al[e]||1);if(t)for(var r in t)n.attr(r,t[r]);return n},sl.prototype.replace=function(e){return e.parent&&e.remove(),this.insert(e,this),this.remove(),this},sl.prototype.attr=function(e,t){var n;if("string"!=typeof e){for(var r in e)this.attr(r,e[r]);return this}if(n=this.attributes){if(t===undefined)return n.map[e];if(null===t){if(e in n.map){delete n.map[e];for(var o=n.length;o--;)if(n[o].name===e)return n.splice(o,1),this}return this}if(e in n.map){for(o=n.length;o--;)if(n[o].name===e){n[o].value=t;break}}else n.push({name:e,value:t});return n.map[e]=t,this}},sl.prototype.clone=function(){var e,t=new sl(this.name,this.type);if(e=this.attributes){var n=[];n.map={};for(var r=0,o=e.length;r<o;r++){var i=e[r];"id"!==i.name&&(n[n.length]={name:i.name,value:i.value},n.map[i.name]=i.value)}t.attributes=n}return t.value=this.value,t.shortEnded=this.shortEnded,t},sl.prototype.wrap=function(e){return this.parent.insert(e,this),e.append(this),this},sl.prototype.unwrap=function(){for(var e=this.firstChild;e;){var t=e.next;this.insert(e,this,!0),e=t}this.remove()},sl.prototype.remove=function(){var e=this.parent,t=this.next,n=this.prev;return e&&(e.firstChild===this?(e.firstChild=t)&&(t.prev=null):n.next=t,e.lastChild===this?(e.lastChild=n)&&(n.next=null):t.prev=n,this.parent=this.next=this.prev=null),this},sl.prototype.append=function(e){e.parent&&e.remove();var t=this.lastChild;return t?((t.next=e).prev=t,this.lastChild=e):this.lastChild=this.firstChild=e,e.parent=this,e},sl.prototype.insert=function(e,t,n){e.parent&&e.remove();var r=t.parent||this;return n?(t===r.firstChild?r.firstChild=e:t.prev.next=e,e.prev=t.prev,(e.next=t).prev=e):(t===r.lastChild?r.lastChild=e:t.next.prev=e,e.next=t.next,(e.prev=t).next=e),e.parent=r,e},sl.prototype.getAll=function(e){for(var t=[],n=this.firstChild;n;n=rl(n,this))n.name===e&&t.push(n);return t},sl.prototype.empty=function(){if(this.firstChild){for(var e=[],t=this.firstChild;t;t=rl(t,this))e.push(t);for(var n=e.length;n--;)(t=e[n]).parent=t.firstChild=t.lastChild=t.next=t.prev=null}return this.firstChild=this.lastChild=null,this},sl.prototype.isEmpty=function(e,t,n){void 0===t&&(t={});var r=this.firstChild;if(r)do{if(1===r.type){if(r.attr("data-mce-bogus"))continue;if(e[r.name])return!1;for(var o=r.attributes.length;o--;){var i=r.attributes[o].name;if("name"===i||0===i.indexOf("data-mce-bookmark"))return!1}}if(8===r.type)return!1;if(3===r.type&&!il.test(r.value))return!1;if(3===r.type&&r.parent&&t[r.parent.name]&&il.test(r.value))return!1;if(n&&n(r))return!1}while(r=rl(r,this));return!0},sl.prototype.walk=function(e){return rl(this,null,e)},sl);function sl(e,t){this.name=e,1===(this.type=t)&&(this.attributes=[],this.attributes.map={})}function cl(e,t,n){var r,o,i,a,u=1;for(a=e.getShortEndedElements(),(i=/<([!?\/])?([A-Za-z0-9\-_\:\.]+)((?:\s+[^"\'>]+(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>]*))*|\/|\s+)>/g).lastIndex=r=n;o=i.exec(t);){if(r=i.lastIndex,"/"===o[1])u--;else if(!o[1]){if(o[2]in a)continue;u++}if(0===u)break}return r}function ll(e,t){var n=e.exec(t);if(n){var r=n[1],o=n[2];return"string"==typeof r&&"data-mce-bogus"===r.toLowerCase()?o:null}return null}function fl(V,I){void 0===I&&(I=pr());function e(){}!1!==(V=V||{}).fix_self_closing&&(V.fix_self_closing=!0);var F=V.comment?V.comment:e,U=V.cdata?V.cdata:e,j=V.text?V.text:e,q=V.start?V.start:e,$=V.end?V.end:e,W=V.pi?V.pi:e,K=V.doctype?V.doctype:e;return{parse:function(e){function t(e){var t,n;for(t=_.length;t--&&_[t].name!==e;);if(0<=t){for(n=_.length-1;t<=n;n--)(e=_[n]).valid&&$(e.name);_.length=t}}function n(e,t,n,r,o){var i,a;if(n=(t=t.toLowerCase())in h?t:O(n||r||o||""),g&&!l&&!1===function(e){return 0===e.indexOf("data-")||0===e.indexOf("aria-")}(t)){if(!(i=C[t])&&w){for(a=w.length;a--&&!(i=w[a]).pattern.test(t););-1===a&&(i=null)}if(!i)return;if(i.validValues&&!(n in i.validValues))return}if(H[t]&&!V.allow_script_urls){var u=n.replace(/[\s\u0000-\u001F]+/g,"");try{u=decodeURIComponent(u)}catch(s){u=unescape(u)}if(P.test(u))return;if(function(e,t){return!e.allow_html_data_urls&&(/^data:image\//i.test(t)?!1===e.allow_svg_data_urls&&/^data:image\/svg\+xml/i.test(t):/^data:/i.test(t))}(V,u))return}l&&(t in H||0===t.indexOf("on"))||(c.map[t]=n,c.push({name:t,value:n}))}var r,o,i,c,a,u,s,l,f,d,h,m,g,p,v,y,b,C,w,x,z,E,N,S,k,T,A,M,R,D=0,_=[],B=0,O=ir.decode,H=Mn.makeMap("src,href,data,background,formaction,poster,xlink:href"),P=/((java|vb)script|mhtml):/i;for(k=new RegExp("<(?:(?:!--([\\w\\W]*?)--\x3e)|(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|(?:!DOCTYPE([\\w\\W]*?)>)|(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|(?:\\/([A-Za-z][A-Za-z0-9\\-_\\:\\.]*)>)|(?:([A-Za-z][A-Za-z0-9\\-_\\:\\.]*)((?:\\s+[^\"'>]+(?:(?:\"[^\"]*\")|(?:'[^']*')|[^>]*))*|\\/|\\s+)>))","g"),T=/([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:[^\"])*)\")|(?:\'((?:[^\'])*)\')|([^>\s]+)))?/g,d=I.getShortEndedElements(),S=V.self_closing_elements||I.getSelfClosingElements(),h=I.getBoolAttrs(),g=V.validate,f=V.remove_internals,R=V.fix_self_closing,A=I.getSpecialElements(),N=e+">";r=k.exec(N);){if(D<r.index&&j(O(e.substr(D,r.index-D))),o=r[6])":"===(o=o.toLowerCase()).charAt(0)&&(o=o.substr(1)),t(o);else if(o=r[7]){if(r.index+r[0].length>e.length){j(O(e.substr(r.index))),D=r.index+r[0].length;continue}":"===(o=o.toLowerCase()).charAt(0)&&(o=o.substr(1)),m=o in d,R&&S[o]&&0<_.length&&_[_.length-1].name===o&&t(o);var L=ll(T,r[8]);if(null!==L){if("all"===L){D=cl(I,e,k.lastIndex),k.lastIndex=D;continue}v=!1}if(!g||(p=I.getElementRule(o))){if(v=!0,g&&(C=p.attributes,w=p.attributePatterns),(b=r[8])?((l=-1!==b.indexOf("data-mce-type"))&&f&&(v=!1),(c=[]).map={},b.replace(T,n)):(c=[]).map={},g&&!l){if(x=p.attributesRequired,z=p.attributesDefault,E=p.attributesForced,p.removeEmptyAttrs&&!c.length&&(v=!1),E)for(a=E.length;a--;)s=(y=E[a]).name,"{$uid}"===(M=y.value)&&(M="mce_"+B++),c.map[s]=M,c.push({name:s,value:M});if(z)for(a=z.length;a--;)(s=(y=z[a]).name)in c.map||("{$uid}"===(M=y.value)&&(M="mce_"+B++),c.map[s]=M,c.push({name:s,value:M}));if(x){for(a=x.length;a--&&!(x[a]in c.map););-1===a&&(v=!1)}if(y=c.map["data-mce-bogus"]){if("all"===y){D=cl(I,e,k.lastIndex),k.lastIndex=D;continue}v=!1}}v&&q(o,c,m)}else v=!1;if(i=A[o]){i.lastIndex=D=r.index+r[0].length,D=(r=i.exec(e))?(v&&(u=e.substr(D,r.index-D)),r.index+r[0].length):(u=e.substr(D),e.length),v&&(0<u.length&&j(u,!0),$(o)),k.lastIndex=D;continue}m||(b&&b.indexOf("/")===b.length-1?v&&$(o):_.push({name:o,valid:v}))}else(o=r[1])?(">"===o.charAt(0)&&(o=" "+o),V.allow_conditional_comments||"[if"!==o.substr(0,3).toLowerCase()||(o=" "+o),F(o)):(o=r[2])?U(o.replace(/<!--|-->/g,"")):(o=r[3])?K(o):(o=r[4])&&W(o,r[5]);D=r.index+r[0].length}for(D<e.length&&j(O(e.substr(D))),a=_.length-1;0<=a;a--)(o=_[a]).valid&&$(o.name)}}}(fl=fl||{}).findEndTag=cl;function dl(e,t){var n,r,o,i,a,u=t,s=/<(\w+) [^>]*data-mce-bogus="all"[^>]*>/g,c=e.schema;for(u=function(e,t){var n=new RegExp(["\\s?("+e.join("|")+')="[^"]+"'].join("|"),"gi");return t.replace(n,"")}(e.getTempAttrs(),u),a=c.getShortEndedElements();i=s.exec(u);)r=s.lastIndex,o=i[0].length,n=a[i[1]]?r:of.findEndTag(c,u,r),u=u.substring(0,r-o)+u.substring(n),s.lastIndex=r-o;return lu(u)}function hl(e,t,n){var r=e.getParam(t,n);if(-1===r.indexOf("="))return r;var o=e.getParam(t,"","hash");return o.hasOwnProperty(e.id)?o[e.id]:n}function ml(e,t,n){var r;if(t.format=t.format?t.format:"html",t.get=!0,t.getInner=!0,t.no_events||e.fire("BeforeGetContent",t),"raw"===t.format)r=Mn.trim(af.trimExternal(e.serializer,n.innerHTML));else if("text"===t.format)r=lu(n.innerText||n.textContent);else{if("tree"===t.format)return e.serializer.serialize(n,t);r=function(e,t){var n=mf(e),r=new RegExp("^(<"+n+"[^>]*>(&nbsp;|&#160;|\\s|\xa0|<br \\/>|)<\\/"+n+">[\r\n]*|<br \\/>[\r\n]*)$");return t.replace(r,"")}(e,e.serializer.serialize(n,t))}return"text"===t.format||Wn(yt.fromDom(n))?t.content=r:t.content=Mn.trim(r),t.no_events||e.fire("GetContent",t),t.content}function gl(e){var u,s,c,l,f,d=[];return u=(e=e||{}).indent,s=Ff(e.indent_before||""),c=Ff(e.indent_after||""),l=ir.getEncodeFunc(e.entity_encoding||"raw",e.entities),f="html"===e.element_format,{start:function(e,t,n){var r,o,i,a;if(u&&s[e]&&0<d.length&&0<(a=d[d.length-1]).length&&"\n"!==a&&d.push("\n"),d.push("<",e),t)for(r=0,o=t.length;r<o;r++)i=t[r],d.push(" ",i.name,'="',l(i.value,!0),'"');d[d.length]=!n||f?">":" />",n&&u&&c[e]&&0<d.length&&0<(a=d[d.length-1]).length&&"\n"!==a&&d.push("\n")},end:function(e){var t;d.push("</",e,">"),u&&c[e]&&0<d.length&&0<(t=d[d.length-1]).length&&"\n"!==t&&d.push("\n")},text:function(e,t){0<e.length&&(d[d.length]=t?e:l(e))},cdata:function(e){d.push("<![CDATA[",e,"]]>")},comment:function(e){d.push("\x3c!--",e,"--\x3e")},pi:function(e,t){t?d.push("<?",e," ",l(t),"?>"):d.push("<?",e,"?>"),u&&d.push("\n")},doctype:function(e){d.push("<!DOCTYPE",e,">",u?"\n":"")},reset:function(){d.length=0},getContent:function(){return d.join("").replace(/\n$/,"")}}}function pl(t,m){void 0===m&&(m=pr());var g=gl(t);return(t=t||{}).validate=!("validate"in t)||t.validate,{serialize:function(e){var f,d;d=t.validate,f={3:function(e){g.text(e.value,e.raw)},8:function(e){g.comment(e.value)},7:function(e){g.pi(e.name,e.value)},10:function(e){g.doctype(e.value)},4:function(e){g.cdata(e.value)},11:function(e){if(e=e.firstChild)for(;h(e),e=e.next;);}},g.reset();var h=function(e){var t,n,r,o,i,a,u,s,c,l=f[e.type];if(l)l(e);else{if(t=e.name,n=e.shortEnded,r=e.attributes,d&&r&&1<r.length&&((a=[]).map={},c=m.getElementRule(e.name))){for(u=0,s=c.attributesOrder.length;u<s;u++)(o=c.attributesOrder[u])in r.map&&(i=r.map[o],a.map[o]=i,a.push({name:o,value:i}));for(u=0,s=r.length;u<s;u++)(o=r[u].name)in a.map||(i=r.map[o],a.map[o]=i,a.push({name:o,value:i}));r=a}if(g.start(e.name,r,n),!n){if(e=e.firstChild)for(;h(e),e=e.next;);g.end(t)}}};return 1!==e.type||t.inner?f[11](e):h(e),g.getContent()}}}function vl(e,t,n){var r=function(e,n,t){var r={},o={},i=[];for(var a in t.firstChild&&Uf(t.firstChild,function(t){z(e,function(e){e.name===t.name&&(r[e.name]?r[e.name].nodes.push(t):r[e.name]={filter:e,nodes:[t]})}),z(n,function(e){"string"==typeof t.attr(e.name)&&(o[e.name]?o[e.name].nodes.push(t):o[e.name]={filter:e,nodes:[t]})})}),r)r.hasOwnProperty(a)&&i.push(r[a]);for(var a in o)o.hasOwnProperty(a)&&i.push(o[a]);return i}(e,t,n);z(r,function(t){z(t.filter.callbacks,function(e){e(t.nodes,t.filter.name,{})})})}function yl(e){var t=Ee(e).dom();return e.dom()===t.activeElement}function bl(e){var t=e!==undefined?e.dom():j.document;return k.from(t.activeElement).map(yt.fromDom)}function Cl(e,t){var n=zt(t)?Jc(t).length:Re(t).length+1;return n<e?n:e<0?0:e}function wl(e){return Xf.range(e.start(),Cl(e.soffset(),e.start()),e.finish(),Cl(e.foffset(),e.finish()))}function xl(e,t){return!Ge.isRestrictedNode(t.dom())&&(Bt(e,t)||ze(e,t))}function zl(t){return function(e){return xl(t,e.start())&&xl(t,e.finish())}}function El(e){return!0===e.inline||Yf.isIE()}function Nl(e){return Xf.range(yt.fromDom(e.startContainer),e.startOffset,yt.fromDom(e.endContainer),e.endOffset)}function Sl(e){var t=e.getSelection();return(t&&0!==t.rangeCount?k.from(t.getRangeAt(0)):k.none()).map(Nl)}function kl(e){var t=Ne(e);return Sl(t.dom()).filter(zl(e))}function Tl(e,t){return k.from(t).filter(zl(e)).map(wl)}function Al(e){var t=j.document.createRange();try{return t.setStart(e.start().dom(),e.soffset()),t.setEnd(e.finish().dom(),e.foffset()),k.some(t)}catch(n){return k.none()}}function Ml(t){return(t.bookmark?t.bookmark:k.none()).bind(function(e){return Tl(yt.fromDom(t.getBody()),e)}).bind(Al)}function Rl(t,e){oe().browser.isIE()?function(e){e.on("focusout",function(){Gf(e)})}(t):function(e,t){e.on("mouseup touchend",function(e){t.throttle()})}(t,e),t.on("keyup NodeChange",function(e){!function(e){return"nodechange"===e.type&&e.selectionChange}(e)&&Gf(t)})}function Dl(e){return Zf.isEditorUIElement(e)}function _l(t,e){var n=t?t.settings.custom_ui_selector:"";return null!==td.getParent(e,function(e){return Dl(e)||!!n&&t.dom.is(e,n)})}function Bl(r,e){var t=e.editor;ed(t),t.on("focusin",function(){var e=r.focusedEditor;e!==this&&(e&&e.fire("blur",{focusedEditor:this}),r.setActive(this),(r.focusedEditor=this).fire("focus",{blurredEditor:e}),this.focus(!0))}),t.on("focusout",function(){var t=this;pn.setEditorTimeout(t,function(){var e=r.focusedEditor;_l(t,function(){try{return j.document.activeElement}catch(e){return j.document.body}}())||e!==t||(t.fire("blur",{focusedEditor:null}),r.focusedEditor=null)})}),rf||(rf=function(e){var t,n=r.activeEditor;t=e.target,n&&t.ownerDocument===j.document&&(t===j.document.body||_l(n,t)||r.focusedEditor!==n||(n.fire("blur",{focusedEditor:null}),r.focusedEditor=null))},td.bind(j.document,"focusin",rf))}function Ol(e,t){e.focusedEditor===t.editor&&(e.focusedEditor=null),e.activeEditor||(td.unbind(j.document,"focusin",rf),rf=null)}function Hl(t,e){return function(e){return e.collapsed?k.from(Ka(e.startContainer,e.startOffset)).map(yt.fromDom):k.none()}(e).bind(function(e){return qn(e)?k.some(e):!1===Bt(t,e)?k.some(t):k.none()})}function Pl(t,e){Hl(yt.fromDom(t.getBody()),e).bind(function(e){return Pc.firstPositionIn(e.dom())}).fold(function(){t.selection.normalize()},function(e){return t.selection.setRng(e.toRange())})}function Ll(e){if(e.setActive)try{e.setActive()}catch(t){e.focus()}else e.focus()}function Vl(e){return yl(e)||function(t){return bl(Ee(t)).filter(function(e){return t.dom().contains(e.dom())})}(e).isSome()}function Il(e){return e.inline?function(e){var t=e.getBody();return t&&Vl(yt.fromDom(t))}(e):function(e){return e.iframeElement&&yl(yt.fromDom(e.iframeElement))}(e)}function Fl(e){return e instanceof ul}function Ul(e,t){e.dom.setHTML(e.getBody(),t),function(r){ud(r)&&Pc.firstPositionIn(r.getBody()).each(function(e){var t=e.getNode(),n=Ge.isTable(t)?Pc.firstPositionIn(t).getOr(e):e;r.selection.setRng(n.toRange())})}(e)}function jl(t,n,r){return void 0===r&&(r={}),r.format=r.format?r.format:"html",r.set=!0,r.content=Fl(n)?"":n,Fl(n)||r.no_events||(t.fire("BeforeSetContent",r),n=r.content),k.from(t.getBody()).fold($(n),function(e){return Fl(n)?function(e,t,n,r){vl(e.parser.getNodeFilters(),e.parser.getAttributeFilters(),n);var o=pl({validate:e.validate},e.schema).serialize(n);return r.content=Wn(yt.fromDom(t))?o:Mn.trim(o),Ul(e,r.content),r.no_events||e.fire("SetContent",r),n}(t,e,n,r):function(e,t,n,r){var o,i;return 0===n.length||/^\s+$/.test(n)?(i='<br data-mce-bogus="1">',"TABLE"===t.nodeName?n="<tr><td>"+i+"</td></tr>":/^(UL|OL)$/.test(t.nodeName)&&(n="<li>"+i+"</li>"),n=(o=mf(e))&&e.schema.isValidChild(t.nodeName.toLowerCase(),o.toLowerCase())?(n=i,e.dom.createHTML(o,e.settings.forced_root_block_attrs,n)):n||'<br data-mce-bogus="1">',Ul(e,n),e.fire("SetContent",r)):("raw"!==r.format&&(n=pl({validate:e.validate},e.schema).serialize(e.parser.parse(n,{isRootContent:!0,insert:!0}))),r.content=Wn(yt.fromDom(t))?n:Mn.trim(n),Ul(e,r.content),r.no_events||e.fire("SetContent",r)),r.content}(t,e,n,r)})}function ql(e){return k.from(e).each(function(e){return e.destroy()})}function $l(e){if(!e.removed){var t=e._selectionOverrides,n=e.editorUpload,r=e.getBody(),o=e.getElement();r&&e.save({is_removing:!0}),e.removed=!0,e.unbindAllNativeEvents(),e.hasHiddenInput&&o&&pd.remove(o.nextSibling),fd(e),e.editorManager.remove(e),!e.inline&&r&&function(e){pd.setStyle(e.id,"display",e.orgDisplay)}(e),dd(e),pd.remove(e.getContainer()),ql(t),ql(n),e.destroy()}}function Wl(e,t){var n=e.selection,r=e.dom;e.destroyed||(t||e.removed?(t||(e.editorManager.off("beforeunload",e._beforeUnload),e.theme&&e.theme.destroy&&e.theme.destroy(),ql(n),ql(r)),function(e){var t=e.formElement;t&&(t._mceOldSubmit&&(t.submit=t._mceOldSubmit,t._mceOldSubmit=null),pd.unbind(t,"submit reset",e.formEventDelegate))}(e),function(e){e.contentAreaContainer=e.formElement=e.container=e.editorContainer=null,e.bodyElement=e.contentDocument=e.contentWindow=null,e.iframeElement=e.targetElm=null,e.selection&&(e.selection=e.selection.win=e.selection.dom=e.selection.dom.doc=null)}(e),e.destroyed=!0):e.remove())}function Kl(a){return function(){for(var e=new Array(arguments.length),t=0;t<e.length;t++)e[t]=arguments[t];if(0===e.length)throw new Error("Can't merge zero objects");for(var n={},r=0;r<e.length;r++){var o=e[r];for(var i in o)vd.call(o,i)&&(n[i]=a(n[i],o[i]))}return n}}function Xl(e){var t=A(e)?e.join(" "):e,n=X(K(t)?t.split(" "):[],te);return y(n,function(e){return 0<e.length})}function Yl(e,t){return e.sections().hasOwnProperty(t)}function Gl(e,t,n,r){var o=Xl(n.forced_plugins),i=Xl(r.plugins),a=function(e,t){return Yl(e,t)?e.sections()[t]:{}}(t,"mobile"),u=a.plugins?Xl(a.plugins):i,s=function(e,t){return[].concat(Xl(e)).concat(Xl(t))}(o,e&&function(e,t,n){var r=e.sections();return Yl(e,t)&&r[t].theme===n}(t,"mobile","mobile")?function(e){return y(e,d(h,Nd))}(u):e&&Yl(t,"mobile")?u:i);return Mn.extend(r,{plugins:s.join(" ")})}function Jl(e,t,n,r,o){var i=e?{mobile:function(e){return G(G(G({},Sd),{resize:!1,toolbar_drawer:"scrolling",toolbar_sticky:!1}),e?{menubar:!1}:{})}(t)}:{},a=function(n,e){var t=ce(e,function(e,t){return h(n,t)});return Cd(t.t,t.f)}(["mobile"],yd(i,o)),u=Mn.extend(n,r,a.settings(),function(e,t){return e&&Yl(t,"mobile")}(e,a)?function(e,t,n){void 0===n&&(n={});var r=e.sections(),o=r.hasOwnProperty(t)?r[t]:{};return Mn.extend({},n,o)}(a,"mobile"):{},{validate:!0,external_plugins:function(e,t){var n=t.external_plugins?t.external_plugins:{};return e&&e.external_plugins?Mn.extend({},e.external_plugins,n):n}(r,a.settings())});return Gl(e,a,r,u)}function Ql(e,t,n,r,o){var i=function(e,t,n,r){var o={id:e,theme:"silver",toolbar_drawer:"floating",plugins:"",document_base_url:t,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_legacy_values:"xx-small,small,medium,large,x-large,xx-large,300%",forced_root_block:"p",hidden_input:!0,inline_styles:!0,convert_fonts_to_spans:!0,indent:!0,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,summary,article,hgroup,aside,figure,figcaption,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,summary,article,hgroup,aside,figure,figcaption,option,optgroup,datalist",entity_encoding:"named",url_converter:r.convertURL,url_converter_scope:r};return G(G({},o),n?Sd:{})}(t,n,xd,e);return Jl(zd||Ed,zd,i,r,o)}function Zl(e,t,n){return k.from(t.settings[n]).filter(e)}function ef(e,t,n,r){var o=t in e.settings?e.settings[t]:n;return"hash"===r?function(e){var n={};return"string"==typeof e?z(0<e.indexOf("=")?e.split(/[;,](?![^=;,]*(?:[;,]|$))/):e.split(","),function(e){var t=e.split("=");1<t.length?n[Mn.trim(t[0])]=Mn.trim(t[1]):n[Mn.trim(t[0])]=Mn.trim(t[0])}):n=e,n}(o):"string"===r?Zl(K,e,t).getOr(n):"number"===r?Zl(_,e,t).getOr(n):"boolean"===r?Zl(R,e,t).getOr(n):"object"===r?Zl(T,e,t).getOr(n):"array"===r?Zl(A,e,t).getOr(n):"string[]"===r?Zl(function(t){return function(e){return A(e)&&w(e,t)}}(K),e,t).getOr(n):"function"===r?Zl(D,e,t).getOr(n):o}function tf(e,t){return t.dom()[e]}function nf(e,t){return parseInt(ve(t,e),10)}var rf,of=fl,af={trimExternal:dl,trimInternal:dl},uf=function(e){return e.getParam("iframe_attrs",{})},sf=function(e){return e.getParam("doctype","<!DOCTYPE html>")},cf=function(e){return e.getParam("document_base_url","")},lf=function(e){return hl(e,"body_id","tinymce")},ff=function(e){return hl(e,"body_class","")},df=function(e){return e.getParam("content_security_policy","")},hf=function(e){return e.getParam("br_in_pre",!0)},mf=function(e){if(e.getParam("force_p_newlines",!1))return"p";var t=e.getParam("forced_root_block","p");return!1===t?"":!0===t?"p":t},gf=function(e){return e.getParam("forced_root_block_attrs",{})},pf=function(e){return e.getParam("br_newline_selector",".mce-toc h2,figcaption,caption")},vf=function(e){return e.getParam("no_newline_selector","")},yf=function(e){return e.getParam("keep_styles",!0)},bf=function(e){return e.getParam("end_container_on_empty_block",!1)},Cf=function(e){return Mn.explode(e.getParam("font_size_style_values","xx-small,x-small,small,medium,large,x-large,xx-large"))},wf=function(e){return Mn.explode(e.getParam("font_size_classes",""))},xf=function(e){return e.getParam("icons","","string")},zf=function(e){return e.getParam("icons_url","","string")},Ef=function(e){return e.getParam("images_dataimg_filter",$(!0),"function")},Nf=function(e){return e.getParam("automatic_uploads",!0,"boolean")},Sf=function(e){return e.getParam("images_reuse_filename",!1,"boolean")},kf=function(e){return e.getParam("images_replace_blob_uris",!0,"boolean")},Tf=function(e){return e.getParam("images_upload_url","","string")},Af=function(e){return e.getParam("images_upload_base_path","","string")},Mf=function(e){return e.getParam("images_upload_credentials",!1,"boolean")},Rf=function(e){return e.getParam("images_upload_handler",null,"function")},Df=function(e){return e.getParam("content_css_cors",!1,"boolean")},_f=function(e){return e.getParam("referrer_policy","","string")},Bf=function(e){return e.getParam("language","en","string")},Of=function(e){return e.getParam("language_url","","string")},Hf=function(e){return e.getParam("indent_use_margin",!1)},Pf=function(e){return e.getParam("indentation","40px","string")},Lf=function(e){var t=e.settings.content_css;return K(t)?X(t.split(","),te):A(t)?t:!1===t||e.inline?[]:["default"]},Vf=function(e){return e.getParam("directionality",ra.isRtl()?"rtl":undefined)},If=function(e){return e.getParam("inline_boundaries_selector","a[href],code,.mce-annotation","string")},Ff=Mn.makeMap,Uf=function(e,t){t(e),e.firstChild&&Uf(e.firstChild,t),e.next&&Uf(e.next,t)},jf=function(a){if(!A(a))throw new Error("cases must be an array");if(0===a.length)throw new Error("there must be at least one case");var u=[],n={};return z(a,function(e,r){var t=Et(e);if(1!==t.length)throw new Error("one and only one name per case");var o=t[0],i=e[o];if(n[o]!==undefined)throw new Error("duplicate key detected:"+o);if("cata"===o)throw new Error("cannot have a case named cata (sorry)");if(!A(i))throw new Error("case arguments must be an array");u.push(o),n[o]=function(){var e=arguments.length;if(e!==i.length)throw new Error("Wrong number of arguments to case "+o+". Expected "+i.length+" ("+i+"), got "+e);for(var n=new Array(e),t=0;t<n.length;t++)n[t]=arguments[t];return{fold:function(){if(arguments.length!==a.length)throw new Error("Wrong number of arguments to fold. Expected "+a.length+", got "+arguments.length);return arguments[r].apply(null,n)},match:function(e){var t=Et(e);if(u.length!==t.length)throw new Error("Wrong number of arguments to match. Expected: "+u.join(",")+"\nActual: "+t.join(","));if(!w(u,function(e){return h(t,e)}))throw new Error("Not all branches were specified when using match. Specified: "+t.join(", ")+"\nRequired: "+u.join(", "));return e[o].apply(null,n)},log:function(e){j.console.log(e,{constructors:u,constructor:o,params:n})}}}}),n},qf={create:be("start","soffset","finish","foffset")},$f=jf([{before:["element"]},{on:["element","offset"]},{after:["element"]}]),Wf=($f.before,$f.on,$f.after,function(e){return e.fold(W,W,W)}),Kf=jf([{domRange:["rng"]},{relative:["startSitu","finishSitu"]},{exact:["start","soffset","finish","foffset"]}]),Xf={domRange:Kf.domRange,relative:Kf.relative,exact:Kf.exact,exactFromRange:function(e){return Kf.exact(e.start(),e.soffset(),e.finish(),e.foffset())},getWin:function(e){var t=function(e){return e.match({domRange:function(e){return yt.fromDom(e.startContainer)},relative:function(e,t){return Wf(e)},exact:function(e,t,n,r){return e}})}(e);return Ne(t)},range:qf.create},Yf=oe().browser,Gf=function(e){var t=El(e)?kl(yt.fromDom(e.getBody())):k.none();e.bookmark=t.isSome()?t:e.bookmark},Jf=function(t){Ml(t).each(function(e){t.selection.setRng(e)})},Qf=Ml,Zf={isEditorUIElement:function(e){var t=e.className.toString();return-1!==t.indexOf("tox-")||-1!==t.indexOf("mce-")}},ed=function(e){var t=aa(function(){Gf(e)},0);e.on("init",function(){e.inline&&function(e,t){function n(){t.throttle()}Xi.DOM.bind(j.document,"mouseup",n),e.on("remove",function(){Xi.DOM.unbind(j.document,"mouseup",n)})}(e,t),Rl(e,t)}),e.on("remove",function(){t.cancel()})},td=Xi.DOM,nd=function(e){e.on("AddEditor",d(Bl,e)),e.on("RemoveEditor",d(Ol,e))},rd=function(e){var t=e.classList;return t!==undefined&&(t.contains("tox-edit-area")||t.contains("tox-edit-area__iframe")||t.contains("mce-content-body"))},od=_l,id=function(e){return e.editorManager.setActive(e)},ad=function(e,t){e.removed||(t?id(e):function(t){var e=t.selection,n=t.getBody(),r=e.getRng();t.quirks.refreshContentEditable(),t.bookmark!==undefined&&!1===Il(t)&&Qf(t).each(function(e){t.selection.setRng(e),r=e});var o=function(t,e){return t.dom.getParent(e,function(e){return"true"===t.dom.getContentEditable(e)})}(t,e.getNode());if(t.$.contains(n,o))return Ll(o),Pl(t,r),id(t);t.inline||(Nn.opera||Ll(n),t.getWin().focus()),(Nn.gecko||t.inline)&&(Ll(n),Pl(t,r)),id(t)}(e))},ud=Il,sd=function(e){return Il(e)||function(t){return bl().filter(function(e){return!rd(e.dom())&&od(t,e.dom())}).isSome()}(e)},cd=function(e,t){return e.fire("PreProcess",t)},ld=function(e,t){return e.fire("PostProcess",t)},fd=function(e){return e.fire("remove")},dd=function(e){return e.fire("detach")},hd=function(e,t){return e.fire("SwitchMode",{mode:t})},md=function(e,t,n,r){e.fire("ObjectResizeStart",{target:t,width:n,height:r})},gd=function(e,t,n,r){e.fire("ObjectResized",{target:t,width:n,height:r})},pd=Xi.DOM,vd=Object.prototype.hasOwnProperty,yd=Kl(function(e,t){return T(e)&&T(t)?yd(e,t):t}),bd=Kl(function(e,t){return t}),Cd=be("sections","settings"),wd=oe().deviceType,xd=wd.isTouch(),zd=wd.isPhone(),Ed=wd.isTablet(),Nd=["lists","autolink","autosave"],Sd={table_grid:!1,object_resizing:!1,resize:!1},kd=d(tf,"clientWidth"),Td=d(tf,"clientHeight"),Ad=d(nf,"margin-top"),Md=d(nf,"margin-left"),Rd=function(e,t,n){var r=yt.fromDom(e.getBody()),o=e.inline?r:function(e){return yt.fromDom(e.dom().ownerDocument.documentElement)}(r),i=function(e,t,n,r){var o=function(e){return e.dom().getBoundingClientRect()}(t);return{x:n-(e?o.left+t.dom().clientLeft+Md(t):0),y:r-(e?o.top+t.dom().clientTop+Ad(t):0)}}(e.inline,o,t,n);return function(e,t,n){var r=kd(e),o=Td(e);return 0<=t&&0<=n&&t<=r&&n<=o}(o,i.x,i.y)},Dd=function(e){return function(e){return k.from(e).map(yt.fromDom)}(e.inline?e.getBody():e.getContentAreaContainer()).map(function(e){return Bt(Ee(e),e)}).getOr(!1)};function _d(n){function r(){var e=n.theme;return e&&e.getNotificationManagerImpl?e.getNotificationManagerImpl():function t(){function e(){throw new Error("Theme did not provide a NotificationManager implementation.")}return{open:e,close:e,reposition:e,getArgs:e}}()}function o(){0<u.length&&r().reposition(u)}function i(t){p(u,function(e){return e===t}).each(function(e){u.splice(e,1)})}function t(t){if(!n.removed&&Dd(n))return g(u,function(e){return function(e,t){return!(e.type!==t.type||e.text!==t.text||e.progressBar||e.timeout||t.progressBar||t.timeout)}(r().getArgs(e),t)}).getOrThunk(function(){n.editorManager.setActive(n);var e=r().open(t,function(){i(e),o()});return function(e){u.push(e)}(e),o(),e})}var a,u=[];return(a=n).on("SkinLoaded",function(){var e=a.settings.service_message;e&&t({text:e,type:"warning",timeout:0})}),a.on("ResizeEditor ResizeWindow NodeChange",function(){pn.requestAnimationFrame(o)}),a.on("remove",function(){z(u.slice(),function(e){r().close(e)})}),{open:t,close:function(){k.from(u[0]).each(function(e){r().close(e),i(e),o()})},getNotifications:function(){return u}}}function Bd(n){function r(){var e=n.theme;return e&&e.getWindowManagerImpl?e.getWindowManagerImpl():function t(){function e(){throw new Error("Theme did not provide a WindowManager implementation.")}return{open:e,openUrl:e,alert:e,confirm:e,close:e,getParams:e,setParams:e}}()}function o(e,t){return function(){return t?t.apply(e,arguments):undefined}}function i(e){s.push(e),function(e){n.fire("OpenWindow",{dialog:e})}(e)}function a(t){!function(e){n.fire("CloseWindow",{dialog:e})}(t),0===(s=y(s,function(e){return e!==t})).length&&n.focus()}function u(e){n.editorManager.setActive(n),Gf(n);var t=e();return i(t),t}var s=[];return n.on("remove",function(){z(s,function(e){r().close(e)})}),{open:function(e,t){return u(function(){return r().open(e,t,a)})},openUrl:function(e){return u(function(){return r().openUrl(e,a)})},alert:function(e,t,n){r().alert(e,o(n||this,t))},confirm:function(e,t,n){r().confirm(e,o(n||this,t))},close:function(){k.from(s[s.length-1]).each(function(e){r().close(e),a(e)})}}}function Od(e,t){e.notificationManager.open({type:"error",text:t})}function Hd(e,t){e._skinLoaded?Od(e,t):e.on("SkinLoaded",function(){Od(e,t)})}function Pd(e){j.console.error(e)}function Ld(e,t,n){return n?"Failed to load "+e+": "+n+" from url "+t:"Failed to load "+e+" url: "+t}var Vd,Id=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var r=j.window.console;r&&(r.error?r.error.apply(r,arguments):r.log.apply(r,arguments))},Fd={pluginLoadError:function(e,t){Pd(Ld("plugin",e,t))},iconsLoadError:function(e,t){Pd(Ld("icons",e,t))},languageLoadError:function(e,t){Pd(Ld("language",e,t))},pluginInitError:function(e,t,n){var r=ra.translate(["Failed to initialize plugin: {0}",t]);Id(r,n),Hd(e,r)},uploadError:function(e,t){Hd(e,ra.translate(["Failed to upload image: {0}",t]))},displayError:Hd,initError:Id},Ud=(Vd={},{add:function(e,t){Vd[e]=t},get:function(e){return Vd[e]?Vd[e]:{icons:{}}},has:function(e){return kt(Vd,e)}}),jd=ga.PluginManager,qd=ga.ThemeManager;function $d(s,a){function n(e,t,n,r){var o,i;(o=new j.XMLHttpRequest).open("POST",a.url),o.withCredentials=a.credentials,o.upload.onprogress=function(e){r(e.loaded/e.total*100)},o.onerror=function(){n("Image upload failed due to a XHR Transport error. Code: "+o.status)},o.onload=function(){var e;o.status<200||300<=o.status?n("HTTP Error: "+o.status):(e=JSON.parse(o.responseText))&&"string"==typeof e.location?t(function(e,t){return e?e.replace(/\/$/,"")+"/"+t.replace(/^\//,""):t}(a.basePath,e.location)):n("Invalid JSON: "+o.responseText)},(i=new j.FormData).append("file",e.blob(),e.filename()),o.send(i)}function c(e,t){return{url:t,blobInfo:e,status:!0}}function l(e,t){return{url:"",blobInfo:e,status:!1,error:t}}function f(e,t){Mn.each(o[e],function(e){e(t)}),delete o[e]}function r(e,t){return e=Mn.grep(e,function(e){return!s.isUploaded(e.blobUri())}),Zt.all(Mn.map(e,function(e){return s.isPending(e.blobUri())?function(e){var t=e.blobUri();return new Zt(function(e){o[t]=o[t]||[],o[t].push(e)})}(e):function(i,a,u){return s.markPending(i.blobUri()),new Zt(function(t){function e(){}var n;try{var r=function(){n&&(n.close(),e)};a(i,function(e){r(),s.markUploaded(i.blobUri(),e),f(i.blobUri(),c(i,e)),t(c(i,e))},function(e){r(),s.removeFailed(i.blobUri()),f(i.blobUri(),l(i,e)),t(l(i,e))},function(e){e<0||100<e||(n=n||u()).progressBar.value(e)})}catch(o){t(l(i,o.message))}})}(e,a.handler,t)}))}var o={};return!1===D(a.handler)&&(a.handler=n),{upload:function(e,t){return!a.url&&function(e){return e===n}(a.handler)?new Zt(function(e){e([])}):r(e,t)}}}function Wd(e){var t,n,r=decodeURIComponent(e).split(",");return(n=/data:([^;]+)/.exec(r[0]))&&(t=n[1]),{type:t,data:r[1]}}function Kd(e){return(e||"blobid")+Jd++}var Xd=function(e){return 0===e.indexOf("blob:")?function(i){return new Zt(function(e,t){function n(){t("Cannot convert "+i+" to Blob. Resource might not exist or is inaccessible.")}try{var r=new j.XMLHttpRequest;r.open("GET",i,!0),r.responseType="blob",r.onload=function(){200===this.status?e(this.response):n()},r.onerror=n,r.send()}catch(o){n()}})}(e):0===e.indexOf("data:")?function(i){return new Zt(function(e){var t,n,r,o=Wd(i);try{t=j.atob(o.data)}catch(yN){return void e(new j.Blob([]))}for(n=new Uint8Array(t.length),r=0;r<n.length;r++)n[r]=t.charCodeAt(r);e(new j.Blob([n],{type:o.type}))})}(e):null},Yd=function(n){return new Zt(function(e){var t=new j.FileReader;t.onloadend=function(){e(t.result)},t.readAsDataURL(n)})},Gd=Wd,Jd=0;function Qd(o,i){var a={};return{findAll:function(e,n){var t;n=n||$(!0),t=y(function(e){return e?P(e.getElementsByTagName("img")):[]}(e),function(e){var t=e.src;return!!Nn.fileApi&&(!e.hasAttribute("data-mce-bogus")&&(!e.hasAttribute("data-mce-placeholder")&&(!(!t||t===Nn.transparentSrc)&&(0===t.indexOf("blob:")?!o.isUploaded(t)&&n(e):0===t.indexOf("data:")&&n(e)))))});var r=X(t,function(n){if(a[n.src])return new Zt(function(t){a[n.src].then(function(e){if("string"==typeof e)return e;t({image:n,blobInfo:e.blobInfo})})});var e=new Zt(function(e,t){!function(n,r,o,t){var i,a;0!==r.src.indexOf("blob:")?(i=Gd(r.src).data,(a=n.findFirst(function(e){return e.base64()===i}))?o({image:r,blobInfo:a}):Xd(r.src).then(function(e){a=n.create(Kd(),e,i),n.add(a),o({image:r,blobInfo:a})},function(e){t(e)})):(a=n.getByUri(r.src))?o({image:r,blobInfo:a}):Xd(r.src).then(function(t){Yd(t).then(function(e){i=Gd(e).data,a=n.create(Kd(),t,i),n.add(a),o({image:r,blobInfo:a})})},function(e){t(e)})}(i,n,e,t)}).then(function(e){return delete a[e.image.src],e})["catch"](function(e){return delete a[n.src],e});return a[n.src]=e});return Zt.all(r)}}}var Zd=0,eh=function(e){return e+Zd+++function(){function e(){return Math.round(4294967295*Math.random()).toString(36)}return"s"+(new Date).getTime().toString(36)+e()+e()+e()}()};function th(o){function t(t){return function(e){return o.selection?t(e):[]}}function r(e,t,n){for(var r=0;-1!==(r=e.indexOf(t,r))&&(e=e.substring(0,r)+n+e.substr(r+t.length),r+=n.length-t.length+1),-1!==r;);return e}function i(e,t,n){return e=r(e,'src="'+t+'"','src="'+n+'"'),e=r(e,'data-mce-src="'+t+'"','data-mce-src="'+n+'"')}function n(t,n){z(o.undoManager.data,function(e){"fragmented"===e.type?e.fragments=X(e.fragments,function(e){return i(e,t,n)}):e.content=i(e.content,t,n)})}function a(){return o.notificationManager.open({text:o.translate("Image uploading..."),type:"info",timeout:-1,progressBar:!0})}function u(e,t){h.removeByUri(e.src),n(e.src,t),o.$(e).attr({src:Sf(o)?t+"?"+(new Date).getTime():t,"data-mce-src":o.convertURL(t,"src")})}function s(n){return f=f||$d(m,{url:Tf(o),basePath:Af(o),credentials:Mf(o),handler:Rf(o)}),p().then(t(function(r){var e;return e=X(r,function(e){return e.blobInfo}),f.upload(e,a).then(t(function(e){var t=X(e,function(e,t){var n=r[t].image;return e.status&&kf(o)?u(n,e.url):e.error&&Fd.uploadError(o,e.error),{element:n,status:e.status}});return n&&n(t),t}))}))}function e(e){if(Nf(o))return s(e)}function c(t){return!1!==w(g,function(e){return e(t)})&&(0!==t.getAttribute("src").indexOf("data:")||Ef(o)(t))}function l(e){return e.replace(/src="(blob:[^"]+)"/g,function(e,n){var t=m.getResultUri(n);if(t)return'src="'+t+'"';var r=h.getByUri(n);return(r=r||b(o.editorManager.get(),function(e,t){return e||t.editorUpload&&t.editorUpload.blobCache.getByUri(n)},null))?'src="data:'+r.blob().type+";base64,"+r.base64()+'"':e})}var f,d,h=function(){var n=[],o=function(e){var t,n;if(!e.blob||!e.base64)throw new Error("blob and base64 representations of the image are required for BlobInfo to be created");return t=e.id||eh("blobid"),n=e.name||t,{id:$(t),name:$(n),filename:$(n+"."+function(e){return{"image/jpeg":"jpg","image/jpg":"jpg","image/gif":"gif","image/png":"png"}[e.toLowerCase()]||"dat"}(e.blob.type)),blob:$(e.blob),base64:$(e.base64),blobUri:$(e.blobUri||j.URL.createObjectURL(e.blob)),uri:$(e.uri)}},t=function(t){return e(function(e){return e.id()===t})},e=function(e){return y(n,e)[0]};return{create:function(e,t,n,r){if(K(e))return o({id:e,name:r,blob:t,base64:n});if(T(e))return o(e);throw new Error("Unknown input type")},add:function(e){t(e.id())||n.push(e)},get:t,getByUri:function(t){return e(function(e){return e.blobUri()===t})},findFirst:e,removeByUri:function(t){n=y(n,function(e){return e.blobUri()!==t||(j.URL.revokeObjectURL(e.blobUri()),!1)})},destroy:function(){z(n,function(e){j.URL.revokeObjectURL(e.blobUri())}),n=[]}}}(),m=function v(){function n(e,t){return{status:e,resultUri:t}}function t(e){return e in r}var r={};return{hasBlobUri:t,getResultUri:function(e){var t=r[e];return t?t.resultUri:null},isPending:function(e){return!!t(e)&&1===r[e].status},isUploaded:function(e){return!!t(e)&&2===r[e].status},markPending:function(e){r[e]=n(1,null)},markUploaded:function(e,t){r[e]=n(2,t)},removeFailed:function(e){delete r[e]},destroy:function(){r={}}}}(),g=[],p=function(){return(d=d||Qd(m,h)).findAll(o.getBody(),c).then(t(function(e){return e=y(e,function(e){return"string"!=typeof e||(Fd.displayError(o,e),!1)}),z(e,function(e){n(e.image.src,e.blobInfo.blobUri()),e.image.src=e.blobInfo.blobUri(),e.image.removeAttribute("data-mce-src")}),e}))};return o.on("SetContent",function(){Nf(o)?e():p()}),o.on("RawSaveContent",function(e){e.content=l(e.content)}),o.on("GetContent",function(e){e.source_view||"raw"===e.format||(e.content=l(e.content))}),o.on("PostRender",function(){o.parser.addNodeFilter("img",function(e){z(e,function(e){var t=e.attr("src");if(!h.getByUri(t)){var n=m.getResultUri(t);n&&e.attr("src",n)}})})}),{blobCache:h,addFilter:function(e){g.push(e)},uploadImages:s,uploadImagesAuto:e,scanForImages:p,destroy:function(){h.destroy(),m.destroy(),d=f=null}}}function nh(e,t,n){return Bt(t,e)?function(e){return e.slice(0,-1)}(function(e,t){for(var n=D(t)?t:c,r=e.dom(),o=[];null!==r.parentNode&&r.parentNode!==undefined;){var i=r.parentNode,a=yt.fromDom(i);if(o.push(a),!0===n(a))break;r=i}return o}(e,function(e){return n(e)||ze(e,t)})):[]}function rh(e,t){return nh(e,t,$(!1))}function oh(e,t){return e.hasOwnProperty(t.nodeName)}function ih(e,t){if(Ge.isText(t)){if(0===t.nodeValue.length)return!0;if(/^\s+$/.test(t.nodeValue)&&(!t.nextSibling||oh(e,t.nextSibling)))return!0}return!1}function ah(e){var t,n,r,o,i,a,u,s,c,l,f=e.dom,d=e.selection,h=e.schema,m=h.getBlockElements(),g=d.getStart(),p=e.getBody(),v=mf(e);if(g&&Ge.isElement(g)&&v&&(l=p.nodeName.toLowerCase(),h.isValidChild(l,v.toLowerCase())&&!function(t,e,n){return C(lh(yt.fromDom(n),yt.fromDom(e)),function(e){return oh(t,e.dom())})}(m,p,g))){for(n=(t=d.getRng()).startContainer,r=t.startOffset,o=t.endContainer,i=t.endOffset,c=ud(e),g=p.firstChild;g;)if(y=m,b=g,Ge.isText(b)||Ge.isElement(b)&&!oh(y,b)&&!Fc(b)){if(ih(m,g)){g=(u=g).nextSibling,f.remove(u);continue}a||(a=f.create(v,gf(e)),g.parentNode.insertBefore(a,g),s=!0),g=(u=g).nextSibling,a.appendChild(u)}else a=null,g=g.nextSibling;var y,b;s&&c&&(t.setStart(n,r),t.setEnd(o,i),d.setRng(t),e.nodeChanged())}}function uh(o,e){return Ya(function(e){var t=e.startContainer,n=e.startOffset;return Ge.isText(t)?0===n?k.some(yt.fromDom(t)):k.none():k.from(t.childNodes[n]).map(yt.fromDom)}(e),function(e){var t=e.endContainer,n=e.endOffset;return Ge.isText(t)?n===t.data.length?k.some(yt.fromDom(t)):k.none():k.from(t.childNodes[n-1]).map(yt.fromDom)}(e),function(e,t){var n=g(mh(o),d(ze,e)),r=g(gh(o),d(ze,t));return n.isSome()&&r.isSome()}).getOr(!1)}function sh(e,t,n,r){var o=n,i=new yi(n,o),a=e.schema.getNonEmptyElements();do{if(3===n.nodeType&&0!==Mn.trim(n.nodeValue).length)return void(r?t.setStart(n,0):t.setEnd(n,n.nodeValue.length));if(a[n.nodeName]&&!/^(TD|TH)$/.test(n.nodeName))return void(r?t.setStartBefore(n):"BR"===n.nodeName?t.setEndBefore(n):t.setEndAfter(n))}while(n=r?i.next():i.prev());"BODY"===o.nodeName&&(r?t.setStart(o,0):t.setEnd(o,o.childNodes.length))}function ch(e){var t=e.selection.getSel();return t&&0<t.rangeCount}var lh=rh,fh=function(e,t){return[e].concat(rh(e,t))},dh=function(e){mf(e)&&e.on("NodeChange",d(ah,e))},hh=function(e,t){return e&&t&&e.startContainer===t.startContainer&&e.startOffset===t.startOffset&&e.endContainer===t.endContainer&&e.endOffset===t.endOffset},mh=function(t){return _e(t).fold($([t]),function(e){return[t].concat(mh(e))})},gh=function(t){return Be(t).fold($([t]),function(e){return"br"===ie(e)?ke(e).map(function(e){return[t].concat(gh(e))}).getOr([]):[t].concat(gh(e))})},ph=(vh.prototype.nodeChanged=function(e){var t,n,r,o=this.editor.selection;this.editor.initialized&&o&&!this.editor.settings.disable_nodechange&&!this.editor.readonly&&(r=this.editor.getBody(),(t=o.getStart(!0)||r).ownerDocument===this.editor.getDoc()&&this.editor.dom.isChildOf(t,r)||(t=r),n=[],this.editor.dom.getParent(t,function(e){if(e===r)return!0;n.push(e)}),(e=e||{}).element=t,e.parents=n,this.editor.fire("NodeChange",e))},vh.prototype.isSameElementPath=function(e){var t,n;if((n=this.editor.$(e).parentsUntil(this.editor.getBody()).add(e)).length===this.lastPath.length){for(t=n.length;0<=t&&n[t]===this.lastPath[t];t--);if(-1===t)return this.lastPath=n,!0}return this.lastPath=n,!1},vh);function vh(r){var o;this.lastPath=[],this.editor=r;var t=this;"onselectionchange"in r.getDoc()||r.on("NodeChange click mouseup keyup focus",function(e){var t,n;n={startContainer:(t=r.selection.getRng()).startContainer,startOffset:t.startOffset,endContainer:t.endContainer,endOffset:t.endOffset},"nodechange"!==e.type&&hh(n,o)||r.fire("SelectionChange"),o=n}),r.on("contextmenu",function(){r.fire("SelectionChange")}),r.on("SelectionChange",function(){var e=r.selection.getStart(!0);!e||!Nn.range&&r.selection.isCollapsed()||ch(r)&&!t.isSameElementPath(e)&&r.dom.isChildOf(e,r.getBody())&&r.nodeChanged({selectionChange:!0})}),r.on("mouseup",function(e){!e.isDefaultPrevented()&&ch(r)&&("IMG"===r.selection.getNode().nodeName?pn.setEditorTimeout(r,function(){r.nodeChanged()}):r.nodeChanged())})}function yh(e){return/^[\r\n\t ]$/.test(e)}function bh(e){return!yh(e)&&!Mh(e)}function Ch(n,r,o){return k.from(o.container()).filter(Ge.isText).exists(function(e){var t=n?0:-1;return r(e.data.charAt(o.offset()+t))})}function wh(e){var t=e.container();return Ge.isText(t)&&0===t.data.length}function xh(t,n){return function(e){return k.from(ws(t?0:-1,e)).filter(n).isSome()}}function zh(e){return"IMG"===e.nodeName&&"block"===ve(yt.fromDom(e),"display")}function Eh(e){return Ge.isContentEditableFalse(e)&&!Ge.isBogusAll(e)}function Nh(e){return b(e,function(e,t){return e.concat(function(t){function e(e){return X(e,function(e){return(e=Ia(e)).node=t,e})}if(Ge.isElement(t))return e(t.getClientRects());if(Ge.isText(t)){var n=t.ownerDocument.createRange();return n.setStart(t,0),n.setEnd(t,t.data.length),e(n.getClientRects())}}(t))},[])}var Sh,kh,Th,Ah={BACKSPACE:8,DELETE:46,DOWN:40,ENTER:13,LEFT:37,RIGHT:39,SPACEBAR:32,TAB:9,UP:38,END:35,HOME:36,modifierPressed:function(e){return e.shiftKey||e.ctrlKey||e.altKey||this.metaKeyPressed(e)},metaKeyPressed:function(e){return Nn.mac?e.metaKey:e.ctrlKey&&!e.altKey}},Mh=(Sh="\xa0",function(e){return Sh===e}),Rh=d(Ch,!0,yh),Dh=d(Ch,!1,yh),_h=xh(!0,zh),Bh=xh(!1,zh),Oh=xh(!0,Ge.isTable),Hh=xh(!1,Ge.isTable),Ph=xh(!0,Eh),Lh=xh(!1,Eh);(Th=kh=kh||{})[Th.Up=-1]="Up",Th[Th.Down=1]="Down";function Vh(o,i,a,e,u,t){function n(e){var t,n,r;for(r=Nh([e]),-1===o&&(r=r.reverse()),t=0;t<r.length;t++)if(n=r[t],!a(n,s)){if(0<l.length&&i(n,kn.last(l))&&c++,n.line=c,u(n))return!0;l.push(n)}}var r,s,c=0,l=[];return(s=kn.last(t.getClientRects()))&&(n(r=t.getNode()),function(e,t,n,r){for(;r=ys(r,e,Va,t);)if(n(r))return}(o,e,n,r)),l}function Ih(t){return function(e){return function(e,t){return t.line>e}(t,e)}}function Fh(t){return function(e){return function(e,t){return t.line===e}(t,e)}}function Uh(e,t){return Math.abs(e.left-t)}function jh(e,t){return Math.abs(e.right-t)}function qh(e,t){return e>=t.left&&e<=t.right}function $h(e,o){return kn.reduce(e,function(e,t){var n,r;return n=Math.min(Uh(e,o),jh(e,o)),r=Math.min(Uh(t,o),jh(t,o)),qh(o,t)?t:qh(o,e)?e:r===n&&Ym(t.node)?t:r<n?t:e})}function Wh(e,t,n,r){for(;r=Gm(r,e,Va,t);)if(n(r))return}function Kh(e,t,n){var r,o=Nh(function(e){return y(P(e.getElementsByTagName("*")),ms)}(e)),i=y(o,function(e){return n>=e.top&&n<=e.bottom});return(r=(r=$h(i,t))&&$h(function(e,r){function t(t,e){var n;return n=y(Nh([e]),function(e){return!t(e,r)}),o=o.concat(n),0===n.length}var o=[];return o.push(r),Wh(kh.Up,e,d(t,ja),r.node),Wh(kh.Down,e,d(t,qa),r.node),o}(e,r),t))&&ms(r.node)?function(e,t){return{node:e.node,before:Uh(e,t)<jh(e,t)}}(r,t):null}function Xh(e){var t,n,r,o;return o=e.getBoundingClientRect(),n=(t=e.ownerDocument).documentElement,r=t.defaultView,{top:o.top+r.pageYOffset-n.clientTop,left:o.left+r.pageXOffset-n.clientLeft}}function Yh(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function Gh(i,a){return function(e){if(function(e){return 0===e.button}(e)){var t=g(a.dom.getParents(e.target),Tu(Zm,eg)).getOr(null);if(function(e,t){return Zm(t)&&t!==e}(a.getBody(),t)){var n=a.dom.getPos(t),r=a.getBody(),o=a.getDoc().documentElement;i.element=t,i.screenX=e.screenX,i.screenY=e.screenY,i.maxX=(a.inline?r.scrollWidth:o.offsetWidth)-2,i.maxY=(a.inline?r.scrollHeight:o.offsetHeight)-2,i.relX=e.pageX-n.x,i.relY=e.pageY-n.y,i.width=t.offsetWidth,i.height=t.offsetHeight,i.ghost=function(e,t,n,r){var o=t.cloneNode(!0);e.dom.setStyles(o,{width:n,height:r}),e.dom.setAttrib(o,"data-mce-selected",null);var i=e.dom.create("div",{"class":"mce-drag-container","data-mce-bogus":"all",unselectable:"on",contenteditable:"false"});return e.dom.setStyles(i,{position:"absolute",opacity:.5,overflow:"hidden",border:0,padding:0,margin:0,width:n,height:r}),e.dom.setStyles(o,{margin:0,boxSizing:"border-box"}),i.appendChild(o),i}(a,t,i.width,i.height)}}}}function Jh(r,o){return function(e){if(r.dragging&&function(e,t,n){return t!==n&&!e.dom.isChildOf(t,n)&&!Zm(t)}(o,function(e){var t=e.getSel().getRangeAt(0).startContainer;return 3===t.nodeType?t.parentNode:t}(o.selection),r.element)){var t=function(e){var t=e.cloneNode(!0);return t.removeAttribute("data-mce-selected"),t}(r.element),n=o.fire("drop",{targetClone:t,clientX:e.clientX,clientY:e.clientY});n.isDefaultPrevented()||(t=n.targetClone,o.undoManager.transact(function(){Yh(r.element),o.insertContent(o.dom.getOuterHTML(t)),o._selectionOverrides.hideFakeCaret()}))}tg(r)}}function Qh(e){var t,n,r,o,i,a,u={};t=Xi.DOM,a=j.document,n=Gh(u,e),r=function(r,o){var i=pn.throttle(function(e,t){o._selectionOverrides.hideFakeCaret(),o.selection.placeCaretAt(e,t)},0);return function(e){var t=Math.max(Math.abs(e.screenX-r.screenX),Math.abs(e.screenY-r.screenY));if(function(e){return e.element}(r)&&!r.dragging&&10<t){if(o.fire("dragstart",{target:r.element}).isDefaultPrevented())return;r.dragging=!0,o.focus()}if(r.dragging){var n=function(e,t){return{pageX:t.pageX-e.relX,pageY:t.pageY+5}}(r,Qm(o,e));!function(e,t){e.parentNode!==t&&t.appendChild(e)}(r.ghost,o.getBody()),function(e,t,n,r,o,i){var a=0,u=0;e.style.left=t.pageX+"px",e.style.top=t.pageY+"px",t.pageX+n>o&&(a=t.pageX+n-o),t.pageY+r>i&&(u=t.pageY+r-i),e.style.width=n-a+"px",e.style.height=r-u+"px"}(r.ghost,n,r.width,r.height,r.maxX,r.maxY),i(e.clientX,e.clientY)}}}(u,e),o=Jh(u,e),i=function(e,t){return function(){e.dragging&&t.fire("dragend"),tg(e)}}(u,e),e.on("mousedown",n),e.on("mousemove",r),e.on("mouseup",o),t.bind(a,"mousemove",r),t.bind(a,"mouseup",i),e.on("remove",function(){t.unbind(a,"mousemove",r),t.unbind(a,"mouseup",i)})}function Zh(e,t,n,r,o){return t._selectionOverrides.showCaret(e,n,r,o)}function em(e,t){return e.fire("BeforeObjectSelected",{target:t}).isDefaultPrevented()?null:function(e){var t=e.ownerDocument.createRange();return t.selectNode(e),t}(t)}function tm(e,t,n){var r=Es(1,e.getBody(),t),o=Ds.fromRangeStart(r),i=o.getNode();if(og(i))return Zh(1,e,i,!o.isAtEnd(),!1);var a=o.getNode(!0);if(og(a))return Zh(1,e,a,!1,!1);var u=e.dom.getParent(o.getNode(),function(e){return og(e)||rg(e)});return og(u)?Zh(1,e,u,!1,n):null}function nm(e,t,n){if(!t||!t.collapsed)return t;var r=tm(e,t,n);return r||t}function rm(e,t){for(var n=e.getBody();t&&t!==n;){if(ag(t)||ug(t))return t;t=t.parentNode}return null}function om(g){function a(e){e&&g.selection.setRng(e)}function o(){return g.selection.getRng()}function p(e,t,n,r){return void 0===r&&(r=!0),g.fire("ShowCaret",{target:t,direction:e,before:n}).isDefaultPrevented()?null:(r&&g.selection.scrollIntoView(t,-1===e),u.show(n,t))}function t(e){return Da(e)||hu(e)||mu(e)}var v,y=g.getBody(),u=ds(g.getBody(),function(e){return g.dom.isBlock(e)},function(){return ud(g)}),b="sel-"+g.dom.uniqueId(),C=function(e){return t(e.startContainer)||t(e.endContainer)},s=function(e){var t=g.schema.getShortEndedElements(),n=g.dom.createRng(),r=e.startContainer,o=e.startOffset,i=e.endContainer,a=e.endOffset;return kt(t,r.nodeName.toLowerCase())?0===o?n.setStartBefore(r):n.setStartAfter(r):n.setStart(r,o),kt(t,i.nodeName.toLowerCase())?0===a?n.setEndBefore(i):n.setEndAfter(i):n.setEnd(i,a),n},c=function(e,t){var n,r,o,i,a,u,s,c,l,f,d=g.$,h=g.dom;if(!e)return null;if(e.collapsed){if(!C(e))if(!1===t){if(c=Ss(-1,y,e),ms(c.getNode(!0)))return p(-1,c.getNode(!0),!1,!1);if(ms(c.getNode()))return p(-1,c.getNode(),!c.isAtEnd(),!1)}else{if(c=Ss(1,y,e),ms(c.getNode()))return p(1,c.getNode(),!c.isAtEnd(),!1);if(ms(c.getNode(!0)))return p(1,c.getNode(!0),!1,!1)}return null}if(i=e.startContainer,a=e.startOffset,u=e.endOffset,3===i.nodeType&&0===a&&ug(i.parentNode)&&(i=i.parentNode,a=h.nodeIndex(i),i=i.parentNode),1!==i.nodeType)return null;if(u===a+1&&i===e.endContainer&&(n=i.childNodes[a]),!ug(n))return null;if(l=f=n.cloneNode(!0),(s=g.fire("ObjectSelected",{target:n,targetClone:l})).isDefaultPrevented())return null;r=wa(yt.fromDom(g.getBody()),"#"+b).fold(function(){return d([])},function(e){return d([e.dom()])}),l=s.targetClone,0===r.length&&(r=d('<div data-mce-bogus="all" class="mce-offscreen-selection"></div>').attr("id",b)).appendTo(g.getBody()),e=g.dom.createRng(),l===f&&Nn.ie?(r.empty().append('<p style="font-size: 0" data-mce-bogus="all">\xa0</p>').append(l),e.setStartAfter(r[0].firstChild.firstChild),e.setEndAfter(l)):(r.empty().append("\xa0").append(l).append("\xa0"),e.setStart(r[0].firstChild,1),e.setEnd(r[0].lastChild,0)),r.css({top:h.getPos(n,g.getBody()).y}),r[0].focus(),(o=g.selection.getSel()).removeAllRanges(),o.addRange(e);var m=yt.fromDom(n);return z(ma(yt.fromDom(g.getBody()),"*[data-mce-selected]"),function(e){ze(m,e)||pe(e,"data-mce-selected")}),g.dom.getAttrib(n,"data-mce-selected")||n.setAttribute("data-mce-selected","1"),v=n,w(),e},l=function(){v&&(v.removeAttribute("data-mce-selected"),wa(yt.fromDom(g.getBody()),"#"+b).each(_i),v=null),wa(yt.fromDom(g.getBody()),"#"+b).each(_i),v=null},w=function(){u.hide()};return Nn.ceFalse&&function(){g.on("mouseup",function(e){var t=o();t.collapsed&&Rd(g,e.clientX,e.clientY)&&a(tm(g,t,!1))}),g.on("click",function(e){var t;(t=rm(g,e.target))&&(ug(t)&&(e.preventDefault(),g.focus()),ag(t)&&g.dom.isChildOf(t,g.selection.getNode())&&l())}),g.on("blur NewBlock",function(){l()}),g.on("ResizeWindow FullscreenStateChanged",function(){return u.reposition()});function i(e,t){var n=g.dom.getParent(e,g.dom.isBlock),r=g.dom.getParent(t,g.dom.isBlock);return!(!n||!g.dom.isChildOf(n,r)||!1!==ug(rm(g,n)))||n&&!function(e,t){return g.dom.getParent(e,g.dom.isBlock)===g.dom.getParent(t,g.dom.isBlock)}(n,r)&&function(e){var t=rc(e);if(!e.firstChild)return!1;var n=Ds.before(e.firstChild),r=t.next(n);return r&&!Ph(r)&&!Lh(r)}(n)}var n,r;r=!1,(n=g).on("touchstart",function(){r=!1}),n.on("touchmove",function(){r=!0}),n.on("touchend",function(e){if(!r){var t=rm(n,e.target);ug(t)&&(e.preventDefault(),c(em(n,t)))}},!0),g.on("mousedown",function(e){var t,n=e.target;if((n===y||"HTML"===n.nodeName||g.dom.isChildOf(n,y))&&!1!==Rd(g,e.clientX,e.clientY))if(t=rm(g,n))ug(t)?(e.preventDefault(),c(em(g,t))):(l(),ag(t)&&e.shiftKey||Jm(e.clientX,e.clientY,g.selection.getRng())||(w(),g.selection.placeCaretAt(e.clientX,e.clientY)));else if(!1===ms(n)){l(),w();var r=Kh(y,e.clientX,e.clientY);if(r&&!i(e.target,r.node)){e.preventDefault();var o=p(1,r.node,r.before,!1);g.getBody().focus(),a(o)}}}),g.on("keypress",function(e){Ah.modifierPressed(e)||(e.keyCode,ug(g.selection.getNode())&&e.preventDefault())}),g.on("GetSelectionRange",function(e){var t=e.range;if(v){if(!v.parentNode)return void(v=null);(t=t.cloneRange()).selectNode(v),e.range=t}}),g.on("SetSelectionRange",function(e){e.range=s(e.range);var t=c(e.range,e.forward);t&&(e.range=t)});g.on("AfterSetSelectionRange",function(e){var t=e.range;C(t)||function(e){return"mcepastebin"===e.id}(t.startContainer.parentNode)||w(),function(e){return g.dom.hasClass(e,"mce-offscreen-selection")}(t.startContainer.parentNode)||l()}),g.on("copy",function(e){var t=e.clipboardData;if(!e.isDefaultPrevented()&&e.clipboardData&&!Nn.ie){var n=function(){var e=g.dom.get(b);return e?e.getElementsByTagName("*")[0]:e}();n&&(e.preventDefault(),t.clearData(),t.setData("text/html",n.outerHTML),t.setData("text/plain",n.outerText))}}),ng(g),ig(g)}(),{showCaret:p,showBlockCaretContainer:function(e){e.hasAttribute("data-mce-caret")&&(Pa(e),a(o()),g.selection.scrollIntoView(e[0]))},hideFakeCaret:w,destroy:function(){u.destroy(),v=null}}}function im(e){return Ge.isElement(e)?e.outerHTML:Ge.isText(e)?ir.encodeRaw(e.data,!1):Ge.isComment(e)?"\x3c!--"+e.data+"--\x3e":""}function am(e,t,n){var r=function(e){var t,n,r;for(r=j.document.createElement("div"),t=j.document.createDocumentFragment(),e&&(r.innerHTML=e);n=r.firstChild;)t.appendChild(n);return t}(t);if(e.hasChildNodes()&&n<e.childNodes.length){var o=e.childNodes[n];o.parentNode.insertBefore(r,o)}else e.appendChild(r)}function um(e){return{type:"fragmented",fragments:e,content:"",bookmark:null,beforeBookmark:null}}function sm(e){return{type:"complete",fragments:null,content:e,bookmark:null,beforeBookmark:null}}function cm(e){return"fragmented"===e.type?e.fragments.join(""):e.content}function lm(e){var t=yt.fromTag("body",mg.get().getOrThunk(function(){var e=j.document.implementation.createHTMLDocument("undo");return mg.set(k.some(e)),e}));return Aa(t,cm(e)),z(ma(t,"*[data-mce-bogus]"),Ni),function(e){return e.dom().innerHTML}(t)}function fm(e){return 0===e.get()}function dm(e,t,n){fm(n)&&(e.typing=t)}function hm(e,t){e.typing&&(dm(e,!1,t),e.add())}function mm(n){var r=Je(k.none()),o=Je(0),i=Je(0),a={data:[],typing:!1,beforeChange:function(){!function(e,t,n){fm(t)&&n.set(k.some(Vs.getUndoBookmark(e.selection)))}(n,o,r)},add:function(e,t){return function(e,t,n,r,o,i,a){var u=e.settings,s=gg(e);if(i=i||{},i=Mn.extend(i,s),!1===fm(r)||e.removed)return null;var c=t.data[n.get()];if(e.fire("BeforeAddUndo",{level:i,lastLevel:c,originalEvent:a}).isDefaultPrevented())return null;if(c&&vg(c,i))return null;if(t.data[n.get()]&&o.get().each(function(e){t.data[n.get()].beforeBookmark=e}),u.custom_undo_redo_levels&&t.data.length>u.custom_undo_redo_levels){for(var l=0;l<t.data.length-1;l++)t.data[l]=t.data[l+1];t.data.length--,n.set(t.data.length)}i.bookmark=Vs.getUndoBookmark(e.selection),n.get()<t.data.length-1&&(t.data.length=n.get()+1),t.data.push(i),n.set(t.data.length-1);var f={level:i,lastLevel:c,originalEvent:a};return e.fire("AddUndo",f),0<n.get()&&(e.setDirty(!0),e.fire("change",f)),i}(n,a,i,o,r,e,t)},undo:function(){return function(e,t,n,r){var o;return t.typing&&(t.add(),t.typing=!1,dm(t,!1,n)),0<r.get()&&(r.set(r.get()-1),o=t.data[r.get()],pg(e,o,!0),e.setDirty(!0),e.fire("Undo",{level:o})),o}(n,a,o,i)},redo:function(){return function(e,t,n){var r;return t.get()<n.length-1&&(t.set(t.get()+1),r=n[t.get()],pg(e,r,!1),e.setDirty(!0),e.fire("Redo",{level:r})),r}(n,i,a.data)},clear:function(){!function(e,t,n){t.data=[],n.set(0),t.typing=!1,e.fire("ClearUndos")}(n,a,i)},reset:function(){!function(e){e.clear(),e.add()}(a)},hasUndo:function(){return function(e,t,n){return 0<n.get()||t.typing&&t.data[0]&&!vg(gg(e),t.data[0])}(n,a,i)},hasRedo:function(){return function(e,t){return t.get()<e.data.length-1&&!e.typing}(a,i)},transact:function(e){return function(e,t,n){return hm(e,t),e.beforeChange(),e.ignore(n),e.add()}(a,o,e)},ignore:function(e){!function(e,t){try{e.set(e.get()+1),t()}finally{e.set(e.get()-1)}}(o,e)},extra:function(e,t){!function(e,t,n,r,o){if(t.transact(r)){var i=t.data[n.get()].bookmark,a=t.data[n.get()-1];pg(e,a,!0),t.transact(o)&&(t.data[n.get()-1].beforeBookmark=i)}}(n,a,i,e,t)}};return function(n,r,o){function i(e){dm(r,!1,o),r.add({},e)}var a=Je(!1);n.on("init",function(){r.add()}),n.on("BeforeExecCommand",function(e){var t=e.command;"Undo"!==t&&"Redo"!==t&&"mceRepaint"!==t&&(hm(r,o),r.beforeChange())}),n.on("ExecCommand",function(e){var t=e.command;"Undo"!==t&&"Redo"!==t&&"mceRepaint"!==t&&i(e)}),n.on("ObjectResizeStart cut",function(){r.beforeChange()}),n.on("SaveContent ObjectResized blur",i),n.on("dragend",i),n.on("keyup",function(e){var t=e.keyCode;e.isDefaultPrevented()||((33<=t&&t<=36||37<=t&&t<=40||45===t||e.ctrlKey)&&(i(),n.nodeChanged()),46!==t&&8!==t||n.nodeChanged(),a.get()&&r.typing&&!1===vg(gg(n),r.data[0])&&(!1===n.isDirty()&&(n.setDirty(!0),n.fire("change",{level:r.data[0],lastLevel:null})),n.fire("TypingUndo"),a.set(!1),n.nodeChanged()))}),n.on("keydown",function(e){var t=e.keyCode;if(!e.isDefaultPrevented())if(33<=t&&t<=36||37<=t&&t<=40||45===t)r.typing&&i(e);else{var n=e.ctrlKey&&!e.altKey||e.metaKey;!(t<16||20<t)||224===t||91===t||r.typing||n||(r.beforeChange(),dm(r,!0,o),r.add({},e),a.set(!0))}}),n.on("mousedown",function(e){r.typing&&i(e)});n.on("input",function(e){e.inputType&&(function(e){return"insertReplacementText"===e.inputType}(e)||function(e){return"insertText"===e.inputType&&null===e.data}(e))&&i(e)}),n.on("AddUndo Undo Redo ClearUndos",function(e){e.isDefaultPrevented()||n.nodeChanged()})}(n,a,o),function(e){e.addShortcut("meta+z","","Undo"),e.addShortcut("meta+y,meta+shift+z","","Redo")}(n),a}function gm(e,t,n){var r=e.formatter.get(n);if(r)for(var o=0;o<r.length;o++)if(!1===r[o].inherit&&e.dom.is(t,r[o].selector))return!0;return!1}function pm(t,e,n,r){var o=t.dom.getRoot();return e!==o&&(e=t.dom.getParent(e,function(e){return!!gm(t,e,n)||(e.parentNode===o||!!xg(t,e,n,r,!0))}),xg(t,e,n,r))}function vm(e,t,n){return!!wg(t,n.inline)||(!!wg(t,n.block)||(n.selector?1===t.nodeType&&e.is(t,n.selector):void 0))}function ym(e,t,n,r,o,i){var a,u,s,c=n[r];if(n.onmatch)return n.onmatch(t,n,r);if(c)if("undefined"==typeof c.length){for(a in c)if(c.hasOwnProperty(a)){if(u="attributes"===r?e.getAttrib(t,a):jc.getStyle(e,t,a),o&&!u&&!n.exact)return;if((!o||n.exact)&&!wg(u,jc.normalizeStyleValue(e,jc.replaceVars(c[a],i),a)))return}}else for(s=0;s<c.length;s++)if("attributes"===r?e.getAttrib(t,c[s]):jc.getStyle(e,t,c[s]))return n;return n}function bm(e,t){return e.splitText(t)}function Cm(e){var t=e.startContainer,n=e.startOffset,r=e.endContainer,o=e.endOffset;return t===r&&Ge.isText(t)?0<n&&n<t.nodeValue.length&&(t=(r=bm(t,n)).previousSibling,n<o?(t=r=bm(r,o-=n).previousSibling,o=r.nodeValue.length,n=0):o=0):(Ge.isText(t)&&0<n&&n<t.nodeValue.length&&(t=bm(t,n),n=0),Ge.isText(r)&&0<o&&o<r.nodeValue.length&&(o=(r=bm(r,o).previousSibling).nodeValue.length)),{startContainer:t,startOffset:n,endContainer:r,endOffset:o}}function wm(e,t,n){if(0!==n){var r=e.data.slice(t,t+n),o=t+n>=e.data.length,i=0===t;e.replaceData(t,n,function(n,r,o){return b(n,function(e,t){return function(e){return-1!==" \f\n\r\t\x0B".indexOf(e)}(t)||"\xa0"===t?e.previousCharIsSpace||""===e.str&&r||e.str.length===n.length-1&&o?{previousCharIsSpace:!1,str:e.str+"\xa0"}:{previousCharIsSpace:!0,str:e.str+" "}:{previousCharIsSpace:!1,str:e.str+t}},{previousCharIsSpace:!1,str:""}).str}(r,i,o))}}function xm(e,t){var n=e.data.slice(t),r=n.length-function(e){return e.replace(/^\s+/g,"")}(n).length;return wm(e,t,r)}function zm(e,t){var n=yt.fromDom(e);return function(e,t,n){return Ca(e,t,n).isSome()}(yt.fromDom(t),"pre,code",d(ze,n))}function Em(e,t){return La(t)&&!1===function(e,t){return Ge.isText(t)&&/^[ \t\r\n]*$/.test(t.data)&&!1===zm(e,t)}(e,t)||function(e){return Ge.isElement(e)&&"A"===e.nodeName&&e.hasAttribute("name")}(t)||Eg(t)}function Nm(e,t){return function(e,t){var n=e.container(),r=e.offset();return!1===Ds.isTextPosition(e)&&n===t.parentNode&&r>Ds.before(t).offset()}(t,e)?Ds(t.container(),t.offset()-1):t}function Sm(e){return La(e.previousSibling)?k.some(function(e){return Ge.isText(e)?Ds(e,e.data.length):Ds.after(e)}(e.previousSibling)):e.previousSibling?Pc.lastPositionIn(e.previousSibling):k.none()}function km(e){return La(e.nextSibling)?k.some(function(e){return Ge.isText(e)?Ds(e,0):Ds.before(e)}(e.nextSibling)):e.nextSibling?Pc.firstPositionIn(e.nextSibling):k.none()}function Tm(e,t){return Sm(t).orThunk(function(){return km(t)}).orThunk(function(){return function(e,t){var n=Ds.before(t.previousSibling?t.previousSibling:t.parentNode);return Pc.prevPosition(e,n).fold(function(){return Pc.nextPosition(e,Ds.after(t))},k.some)}(e,t)})}function Am(e,t){return km(t).orThunk(function(){return Sm(t)}).orThunk(function(){return function(e,t){return Pc.nextPosition(e,Ds.after(t)).fold(function(){return Pc.prevPosition(e,Ds.before(t))},k.some)}(e,t)})}function Mm(e,t,n){return function(e,t,n){return e?Am(t,n):Tm(t,n)}(e,t,n).map(d(Nm,n))}function Rm(t,n,e){e.fold(function(){t.focus()},function(e){t.selection.setRng(e.toRange(),n)})}function Dm(e,t){return t&&e.schema.getBlockElements().hasOwnProperty(ie(t))}function _m(e){if(kg(e)){var t=yt.fromHtml('<br data-mce-bogus="1">');return Ei(e),Di(e,t),k.some(Ds.before(t.dom()))}return k.none()}function Bm(e,t,a){var n=ke(e).filter(zt),r=Te(e).filter(zt);return _i(e),function(e,t,n,r){return e.isSome()&&t.isSome()&&n.isSome()?k.some(r(e.getOrDie(),t.getOrDie(),n.getOrDie())):k.none()}(n,r,t,function(e,t,n){var r=e.dom(),o=t.dom(),i=r.data.length;return function(e,t,n){var r=ne(e.data).length;e.appendData(t.data),_i(yt.fromDom(t)),n&&xm(e,r)}(r,o,a),n.container()===o?Ds(r,i):n}).orThunk(function(){return a&&(n.each(function(e){return function(e,t){var n=e.data.slice(0,t),r=n.length-ne(n).length;return wm(e,t-r,r)}(e.dom(),e.dom().length)}),r.each(function(e){return xm(e.dom(),0)})),t})}function Om(e){return 0<function(e){for(var t=[];e;){if(3===e.nodeType&&e.nodeValue!==Ag||1<e.childNodes.length)return[];1===e.nodeType&&t.push(e),e=e.firstChild}return t}(e).length}function Hm(e){if(e){var t=new yi(e,e);for(e=t.current();e;e=t.next())if(3===e.nodeType)return e}return null}function Pm(e){var t=yt.fromTag("span");return me(t,{id:Mg,"data-mce-bogus":"1","data-mce-type":"format-caret"}),e&&Di(t,yt.fromText(Ag)),t}function Lm(e,t,n){void 0===n&&(n=!0);var r=e.dom,o=e.selection;if(Om(t))Tg(e,!1,yt.fromDom(t),n);else{var i=o.getRng(),a=r.getParent(t,r.isBlock),u=function(e){var t=Hm(e);return t&&t.nodeValue.charAt(0)===Ag&&t.deleteData(0,1),t}(t);i.startContainer===u&&0<i.startOffset&&i.setStart(u,i.startOffset-1),i.endContainer===u&&0<i.endOffset&&i.setEnd(u,i.endOffset-1),r.remove(t,!0),a&&r.isEmpty(a)&&bg(yt.fromDom(a)),o.setRng(i)}}function Vm(e,t,n){void 0===n&&(n=!0);var r=e.dom,o=e.selection;if(t)Lm(e,t,n);else if(!(t=os(e.getBody(),o.getStart())))for(;t=r.get(Mg);)Lm(e,t,!1)}function Im(e,t,n){var r=e.dom,o=r.getParent(n,d(jc.isTextBlock,e));o&&r.isEmpty(o)?n.parentNode.replaceChild(t,n):(yg(yt.fromDom(n)),r.isEmpty(n)?n.parentNode.replaceChild(t,n):r.insertAfter(t,n))}function Fm(e,t){return e.appendChild(t),t}function Um(e,t){var n=m(e,function(e,t){return Fm(e,t.cloneNode(!1))},t);return Fm(n,n.ownerDocument.createTextNode(Ag))}function jm(t){t.on("mouseup keydown",function(e){!function(e,t){var n=e.selection,r=e.getBody();Vm(e,null,!1),8!==t&&46!==t||!n.isCollapsed()||n.getStart().innerHTML!==Ag||Vm(e,os(r,n.getStart())),37!==t&&39!==t||Vm(e,os(r,n.getStart()))}(t,e.keyCode)})}function qm(e,t){return e.schema.getTextInlineElements().hasOwnProperty(ie(t))&&!rs(t.dom())&&!Ge.isBogus(t.dom())}var $m,Wm,Km=d(Vh,kh.Up,ja,qa),Xm=d(Vh,kh.Down,qa,ja),Ym=Ge.isContentEditableFalse,Gm=ys,Jm=function(t,n,e){if(e.collapsed)return!1;if(Nn.browser.isIE()&&e.startOffset===e.endOffset-1&&e.startContainer===e.endContainer){var r=e.startContainer.childNodes[e.startOffset];if(Ge.isElement(r))return C(r.getClientRects(),function(e){return $a(e,t,n)})}return C(e.getClientRects(),function(e){return $a(e,t,n)})},Qm=function(e,t){return function(e,t,n){return{pageX:n.left-e.left+t.left,pageY:n.top-e.top+t.top}}(function(e){return e.inline?Xh(e.getBody()):{left:0,top:0}}(e),function(e){var t=e.getBody();return e.inline?{left:t.scrollLeft,top:t.scrollTop}:{left:0,top:0}}(e),function(e,t){if(t.target.ownerDocument===e.getDoc())return{left:t.pageX,top:t.pageY};var n=Xh(e.getContentAreaContainer()),r=function(e){var t=e.getBody(),n=e.getDoc().documentElement,r={left:t.scrollLeft,top:t.scrollTop},o={left:t.scrollLeft||n.scrollLeft,top:t.scrollTop||n.scrollTop};return e.inline?r:o}(e);return{left:t.pageX-n.left+r.left,top:t.pageY-n.top+r.top}}(e,t))},Zm=Ge.isContentEditableFalse,eg=Ge.isContentEditableTrue,tg=function(e){e.dragging=!1,e.element=null,Yh(e.ghost)},ng=function(e){Qh(e),function(n){n.on("drop",function(e){var t="undefined"!=typeof e.clientX?n.getDoc().elementFromPoint(e.clientX,e.clientY):null;(Zm(t)||Zm(n.dom.getContentEditableParent(t)))&&e.preventDefault()})}(e)},rg=Ge.isContentEditableTrue,og=Ge.isContentEditableFalse,ig=function(t){var e=aa(function(){if(!t.removed&&t.getBody().contains(j.document.activeElement)&&t.selection.getRng().collapsed){var e=nm(t,t.selection.getRng(),!1);t.selection.setRng(e)}},0);t.on("focus",function(){e.throttle()}),t.on("blur",function(){e.cancel()})},ag=Ge.isContentEditableTrue,ug=Ge.isContentEditableFalse,sg=0,cg=2,lg=1,fg=function(m,g){function p(e,t,n,r){for(var o=e;o-t<r&&o<n&&m[o]===g[o-t];)++o;return function(e,t,n){return{start:e,end:t,diag:n}}(e,o,t)}var e=m.length+g.length+2,v=new Array(e),y=new Array(e),c=function(e,t,n,r,o){var i=l(e,t,n,r);if(null===i||i.start===t&&i.diag===t-r||i.end===e&&i.diag===e-n)for(var a=e,u=n;a<t||u<r;)a<t&&u<r&&m[a]===g[u]?(o.push([0,m[a]]),++a,++u):r-n<t-e?(o.push([2,m[a]]),++a):(o.push([1,g[u]]),++u);else{c(e,i.start,n,i.start-i.diag,o);for(var s=i.start;s<i.end;++s)o.push([0,m[s]]);c(i.end,t,i.end-i.diag,r,o)}},l=function(e,t,n,r){var o=t-e,i=r-n;if(0==o||0==i)return null;var a,u,s,c,l,f=o-i,d=i+o,h=(d%2==0?d:1+d)/2;for(v[1+h]=e,y[1+h]=t+1,a=0;a<=h;++a){for(u=-a;u<=a;u+=2){for(s=u+h,u===-a||u!==a&&v[s-1]<v[s+1]?v[s]=v[s+1]:v[s]=v[s-1]+1,l=(c=v[s])-e+n-u;c<t&&l<r&&m[c]===g[l];)v[s]=++c,++l;if(f%2!=0&&f-a<=u&&u<=f+a&&y[s-f]<=v[s])return p(y[s-f],u+e-n,t,r)}for(u=f-a;u<=f+a;u+=2){for(s=u+h-f,u===f-a||u!==f+a&&y[s+1]<=y[s-1]?y[s]=y[s+1]-1:y[s]=y[s-1],l=(c=y[s]-1)-e+n-u;e<=c&&n<=l&&m[c]===g[l];)y[s]=c--,l--;if(f%2==0&&-a<=u&&u<=a&&y[s]<=v[s+f])return p(y[s],u+e-n,t,r)}}},t=[];return c(0,m.length,0,g.length,t),t},dg=function(e){return y(X(P(e.childNodes),im),function(e){return 0<e.length})},hg=function(e,t){var n=X(P(t.childNodes),im);return function(e,t){var n=0;z(e,function(e){e[0]===sg?n++:e[0]===lg?(am(t,e[1],n),n++):e[0]===cg&&function(e,t){if(e.hasChildNodes()&&t<e.childNodes.length){var n=e.childNodes[t];n.parentNode.removeChild(n)}}(t,n)})}(fg(n,e),t),t},mg=Je(k.none()),gg=function(n){var e,t,r;return e=dg(n.getBody()),function(e){return-1!==e.indexOf("</iframe>")}(t=(r=v(e,function(e){var t=af.trimInternal(n.serializer,e);return 0<t.length?[t]:[]})).join(""))?um(r):sm(t)},pg=function(e,t,n){"fragmented"===t.type?hg(t.fragments,e.getBody()):e.setContent(t.content,{format:"raw"}),e.selection.moveToBookmark(n?t.beforeBookmark:t.bookmark)},vg=function(e,t){return!(!e||!t)&&(!!function(e,t){return cm(e)===cm(t)}(e,t)||function(e,t){return lm(e)===lm(t)}(e,t))},yg=function(e){var t=ma(e,"br"),n=y(function(e){for(var t=[],n=e.dom();n;)t.push(yt.fromDom(n)),n=n.lastChild;return t}(e).slice(-1),_n);t.length===n.length&&z(n,_i)},bg=function(e){Ei(e),Di(e,yt.fromHtml('<br data-mce-bogus="1">'))},Cg=function(n){Be(n).each(function(t){ke(t).each(function(e){Vn(n)&&_n(t)&&Vn(e)&&_i(t)})})},wg=jc.isEq,xg=function(e,t,n,r,o){var i,a,u,s,c=e.formatter.get(n),l=e.dom;if(c&&t)for(a=0;a<c.length;a++)if(i=c[a],vm(e.dom,t,i)&&ym(l,t,i,"attributes",o,r)&&ym(l,t,i,"styles",o,r)){if(s=i.classes)for(u=0;u<s.length;u++)if(!e.dom.hasClass(t,s[u]))return;return i}},zg={matchNode:xg,matchName:vm,match:function(e,t,n,r){var o;return r?pm(e,r,t,n):(r=e.selection.getNode(),!!pm(e,r,t,n)||!((o=e.selection.getStart())===r||!pm(e,o,t,n)))},matchAll:function(r,o,i){var e,a=[],u={};return e=r.selection.getStart(),r.dom.getParent(e,function(e){var t,n;for(t=0;t<o.length;t++)n=o[t],!u[n]&&xg(r,e,n,i)&&(u[n]=!0,a.push(n))},r.dom.getRoot()),a},canApply:function(e,t){var n,r,o,i,a,u=e.formatter.get(t),s=e.dom;if(u)for(n=e.selection.getStart(),r=jc.getParents(s,n),i=u.length-1;0<=i;i--){if(!(a=u[i].selector)||u[i].defaultBlock)return!0;for(o=r.length-1;0<=o;o--)if(s.is(r[o],a))return!0}return!1},matchesUnInheritedFormatSelector:gm},Eg=Ge.hasAttribute("data-mce-bookmark"),Ng=Ge.hasAttribute("data-mce-bogus"),Sg=Ge.hasAttributeValue("data-mce-bogus","all"),kg=function(e){return function(e){var t,n=0;if(Em(e,e))return!1;if(!(t=e.firstChild))return!0;var r=new yi(t,e);do{if(Sg(t))t=r.next(!0);else if(Ng(t))t=r.next();else if(Ge.isBr(t))n++,t=r.next();else{if(Em(e,t))return!1;t=r.next()}}while(t);return n<=1}(e.dom())},Tg=function(t,n,e,r){void 0===r&&(r=!0);var o=Mm(n,t.getBody(),e.dom()),i=ya(e,d(Dm,t),function(t){return function(e){return e.dom()===t}}(t.getBody())),a=Bm(e,o,function(e,t){return kt(e.schema.getTextInlineElements(),ie(t))}(t,e));t.dom.isEmpty(t.getBody())?(t.setContent(""),t.selection.setCursorLocation()):i.bind(_m).fold(function(){r&&Rm(t,n,a)},function(e){r&&Rm(t,n,k.some(e))})},Ag=cu,Mg="_mce_caret",Rg={},Dg=kn.filter,_g=kn.each;Wm=function(e){var t,n,r=e.selection.getRng();t=Ge.matchNodeNames(["pre"]),r.collapsed||(n=e.selection.getSelectedBlocks(),_g(Dg(Dg(n,t),function(e){return t(e.previousSibling)&&-1!==kn.indexOf(n,e.previousSibling)}),function(e){!function(e,t){vi(t).remove(),vi(e).append("<br><br>").append(t.childNodes)}(e.previousSibling,e)}))},Rg[$m="pre"]||(Rg[$m]=[]),Rg[$m].push(Wm);function Bg(o){this.compare=function(e,t){if(e.nodeName!==t.nodeName)return!1;function n(n){var r={};return Gg(o.getAttribs(n),function(e){var t=e.nodeName.toLowerCase();0!==t.indexOf("_")&&"style"!==t&&0!==t.indexOf("data-")&&(r[t]=o.getAttrib(n,t))}),r}function r(e,t){var n,r;for(r in e)if(e.hasOwnProperty(r)){if(void 0===(n=t[r]))return!1;if(e[r]!==n)return!1;delete t[r]}for(r in t)if(t.hasOwnProperty(r))return!1;return!0}return!!r(n(e),n(t))&&(!!r(o.parseStyle(o.getAttrib(e,"style")),o.parseStyle(o.getAttrib(t,"style")))&&(!Fc(e)&&!Fc(t)))}}function Og(e,t,n){return e.isChildOf(t,n)&&t!==n&&!e.isBlock(n)}function Hg(e,t,n){var r,o,i;return r=t[n?"startContainer":"endContainer"],o=t[n?"startOffset":"endOffset"],Ge.isElement(r)&&(i=r.childNodes.length-1,!n&&o&&o--,r=r.childNodes[i<o?i:o]),Ge.isText(r)&&n&&o>=r.nodeValue.length&&(r=new yi(r,e.getBody()).next()||r),Ge.isText(r)&&!n&&0===o&&(r=new yi(r,e.getBody()).prev()||r),r}function Pg(e,t,n,r){var o=e.create(n,r);return t.parentNode.insertBefore(o,t),o.appendChild(t),o}function Lg(e,t,n,r,o){var i=yt.fromDom(t),a=yt.fromDom(e.create(r,o)),u=n?Me(i):Ae(i);return zi(a,u),n?(Ci(i,a),xi(a,i)):(wi(i,a),Di(a,i)),a.dom()}function Vg(e,t,n,r){return!(t=jc.getNonWhiteSpaceSibling(t,n,r))||"BR"===t.nodeName||e.isBlock(t)}function Ig(e,r,o,i,a){var t,n,u,s=e.dom;if(!function(e,t,n){return!!Zg(t,n.inline)||(!!Zg(t,n.block)||(n.selector?Ge.isElement(t)&&e.is(t,n.selector):void 0))}(s,i,r)&&!function(e,t){return t.links&&"A"===e.tagName}(i,r))return!1;if("all"!==r.remove)for(Qg(r.styles,function(e,t){e=jc.normalizeStyleValue(s,jc.replaceVars(e,o),t),"number"==typeof t&&(t=e,a=0),!r.remove_similar&&a&&!Zg(jc.getStyle(s,a,t),e)||s.setStyle(i,t,""),u=1}),u&&""===s.getAttrib(i,"style")&&(i.removeAttribute("style"),i.removeAttribute("data-mce-style")),Qg(r.attributes,function(e,t){var n;if(e=jc.replaceVars(e,o),"number"==typeof t&&(t=e,a=0),r.remove_similar||!a||Zg(s.getAttrib(a,t),e)){if("class"===t&&(e=s.getAttrib(i,t))&&(n="",Qg(e.split(/\s+/),function(e){/mce\-\w+/.test(e)&&(n+=(n?" ":"")+e)}),n))return void s.setAttrib(i,t,n);"class"===t&&i.removeAttribute("className"),Jg.test(t)&&i.removeAttribute("data-mce-"+t),i.removeAttribute(t)}}),Qg(r.classes,function(e){e=jc.replaceVars(e,o),a&&!s.hasClass(a,e)||s.removeClass(i,e)}),n=s.getAttribs(i),t=0;t<n.length;t++){var c=n[t].nodeName;if(0!==c.indexOf("_")&&0!==c.indexOf("data-"))return!1}return"none"!==r.remove?(function(t,e,n){var r,o=e.parentNode,i=t.dom,a=mf(t);n.block&&(a?o===i.getRoot()&&(n.list_block&&Zg(e,n.list_block)||Qg(Mn.grep(e.childNodes),function(e){jc.isValid(t,a,e.nodeName.toLowerCase())?r?r.appendChild(e):(r=Pg(i,e,a),i.setAttribs(r,t.settings.forced_root_block_attrs)):r=0})):i.isBlock(e)&&!i.isBlock(o)&&(Vg(i,e,!1)||Vg(i,e.firstChild,!0,1)||e.insertBefore(i.create("br"),e.firstChild),Vg(i,e,!0)||Vg(i,e.lastChild,!1,1)||e.appendChild(i.create("br")))),n.selector&&n.inline&&!Zg(n.inline,e)||i.remove(e,1)}(e,i,r),!0):void 0}function Fg(e){return e&&1===e.nodeType&&!Fc(e)&&!rs(e)&&!Ge.isBogus(e)}function Ug(e,t){var n;for(n=e;n;n=n[t]){if(3===n.nodeType&&0!==n.nodeValue.length)return e;if(1===n.nodeType&&!Fc(n))return n}return e}function jg(e,t,n){var r,o,i=new Bg(e);if(t&&n&&(t=Ug(t,"previousSibling"),n=Ug(n,"nextSibling"),i.compare(t,n))){for(r=t.nextSibling;r&&r!==n;)r=(o=r).nextSibling,t.appendChild(o);return e.remove(n),Mn.each(Mn.grep(n.childNodes),function(e){t.appendChild(e)}),t}return n}function qg(n,e){return d(function(e,t){return!(!t||!jc.getStyle(n,t,e))},e)}function $g(r,e,t){return d(function(e,t,n){r.setStyle(n,e,t),""===n.getAttribute("style")&&n.removeAttribute("style"),op(r,n)},e,t)}function Wg(e,t){var n;1===t.nodeType&&t.parentNode&&1===t.parentNode.nodeType&&(n=jc.getTextDecoration(e,t.parentNode),e.getStyle(t,"color")&&n?e.setStyle(t,"text-decoration",n):e.getStyle(t,"text-decoration")===n&&e.setStyle(t,"text-decoration",null))}function Kg(t){var n=Ds.fromRangeStart(t),r=Ds.fromRangeEnd(t),o=t.commonAncestorContainer;return Pc.fromPosition(!1,o,r).map(function(e){return!Cs(n,r,o)&&Cs(n,e,o)?function(e,t,n,r){var o=j.document.createRange();return o.setStart(e,t),o.setEnd(n,r),o}(n.container(),n.offset(),e.container(),e.offset()):t}).getOr(t)}function Xg(e,t,n,r,o){return null===t.get()&&function(t,n){var r=Je({});t.set({}),n.on("NodeChange",function(e){gp(n,e.element,r,t.get())})}(t,e),function(e,t,n,r){var o=e.get();z(t.split(","),function(e){o[e]||(o[e]={similar:r,callbacks:[]}),o[e].callbacks.push(n)}),e.set(o)}(t,n,r,o),{unbind:function(){return function(e,t,n){var r=e.get();z(t.split(","),function(e){r[e].callbacks=y(r[e].callbacks,function(e){return e!==n}),0===r[e].callbacks.length&&delete r[e]}),e.set(r)}(t,n,r)}}}var Yg=function(e,t){_g(Rg[e],function(e){e(t)})},Gg=Mn.each,Jg=/^(src|href|style)$/,Qg=Mn.each,Zg=jc.isEq,ep=Ig,tp=function(a,n,u,e,r){function i(e){var t=function(n,e,r,o,i){var a;return Qg(jc.getParents(n.dom,e.parentNode).reverse(),function(e){var t;a||"_start"===e.id||"_end"===e.id||(t=zg.matchNode(n,e,r,o,i))&&!1!==t.split&&(a=e)}),a}(a,e,n,u,r);return function(e,t,n,r,o,i,a,u){var s,c,l,f,d,h,m=e.dom;if(n){for(h=n.parentNode,s=r.parentNode;s&&s!==h;s=s.parentNode){for(c=m.clone(s,!1),d=0;d<t.length;d++)if(Ig(e,t[d],u,c,c)){c=0;break}c&&(l&&c.appendChild(l),f=f||c,l=c)}!i||a.mixed&&m.isBlock(n)||(r=m.split(n,r)),l&&(o.parentNode.insertBefore(l,o),f.appendChild(o))}return r}(a,l,t,e,e,!0,f,u)}function s(e){var t=h.get(e?"_start":"_end"),n=t[e?"firstChild":"lastChild"];return function(e){return Fc(e)&&Ge.isElement(e)&&("_start"===e.id||"_end"===e.id)}(n)&&(n=n[e?"firstChild":"lastChild"]),Ge.isText(n)&&0===n.data.length&&(n=e?t.previousSibling||t.nextSibling:t.nextSibling||t.previousSibling),h.remove(t,!0),n}function t(e){var t,n,r=e.commonAncestorContainer;if(e=Xc(a,e,l,!0),f.split){if(e=Cm(e),(t=Hg(a,e,!0))!==(n=Hg(a,e))){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)&&function(e){return/^(TH|TD)$/.test(e.nodeName)}(n)&&n.firstChild&&(n=n.firstChild||n),Og(h,t,n)){var o=k.from(t.firstChild).getOr(t);return i(Lg(h,o,!0,"span",{id:"_start","data-mce-type":"bookmark"})),void s(!0)}if(Og(h,n,t)){o=k.from(n.lastChild).getOr(n);return i(Lg(h,o,!1,"span",{id:"_end","data-mce-type":"bookmark"})),void s(!1)}t=Pg(h,t,"span",{id:"_start","data-mce-type":"bookmark"}),n=Pg(h,n,"span",{id:"_end","data-mce-type":"bookmark"}),i(t),i(n),t=s(!0),n=s()}else t=n=i(t);e.startContainer=t.parentNode?t.parentNode:t,e.startOffset=h.nodeIndex(t),e.endContainer=n.parentNode?n.parentNode:n,e.endOffset=h.nodeIndex(n)+1}Gc(h,e,function(e){Qg(e,function(e){g(e),Ge.isElement(e)&&"underline"===a.dom.getStyle(e,"text-decoration")&&e.parentNode&&"underline"===jc.getTextDecoration(h,e.parentNode)&&Ig(a,{deep:!1,exact:!0,inline:"span",styles:{textDecoration:"underline"}},null,e)})})}var o,c,l=a.formatter.get(n),f=l[0],d=!0,h=a.dom,m=a.selection,g=function(e){var t,n,r,o,i;if(Ge.isElement(e)&&h.getContentEditable(e)&&(o=d,d="true"===h.getContentEditable(e),i=!0),t=Mn.grep(e.childNodes),d&&!i)for(n=0,r=l.length;n<r&&!Ig(a,l[n],u,e,e);n++);if(f.deep&&t.length){for(n=0,r=t.length;n<r;n++)g(t[n]);i&&(d=o)}};if(e)e.nodeType?((c=h.createRng()).setStartBefore(e),c.setEndAfter(e),t(c)):t(e);else if("false"!==h.getContentEditable(m.getNode()))m.isCollapsed()&&f.inline&&!h.select("td[data-mce-selected],th[data-mce-selected]").length?function(e,t,n,r){var o,i,a,u,s,c,l,f=e.dom,d=e.selection,h=[],m=d.getRng();for(o=m.startContainer,i=m.startOffset,3===(s=o).nodeType&&(i!==o.nodeValue.length&&(u=!0),s=s.parentNode);s;){if(zg.matchNode(e,s,t,n,r)){c=s;break}s.nextSibling&&(u=!0),h.push(s),s=s.parentNode}if(c)if(u){a=d.getBookmark(),m.collapse(!0);var g=Xc(e,m,e.formatter.get(t),!0);g=Cm(g),e.formatter.remove(t,n,g),d.moveToBookmark(a)}else{l=os(e.getBody(),c);var p=Pm(!1).dom(),v=Um(h,p);Im(e,p,l||c),Lm(e,l,!1),d.setCursorLocation(v,1),f.isEmpty(c)&&f.remove(c)}}(a,n,u,r):(o=Vs.getPersistentBookmark(a.selection,!0),t(m.getRng()),m.moveToBookmark(o),f.inline&&zg.match(a,n,u,m.getStart())&&jc.moveStart(h,m,m.getRng()),a.nodeChanged());else{e=m.getNode();for(var p=0,v=l.length;p<v&&(!l[p].ceFalseOverride||!Ig(a,l[p],u,e,e));p++);}},np=Mn.each,rp=function(e,t,n){np(e.childNodes,function(e){Fg(e)&&(t(e)&&n(e),e.hasChildNodes()&&rp(e,t,n))})},op=function(e,t){"SPAN"===t.nodeName&&0===e.getAttribs(t).length&&e.remove(t,!0)},ip=function(n,e,r,o){np(e,function(t){np(n.dom.select(t.inline,o),function(e){Fg(e)&&ep(n,t,r,e,t.exact?e:null)}),function(r,e,t){if(e.clear_child_styles){var n=e.links?"*:not(a)":"*";np(r.select(n,t),function(n){Fg(n)&&np(e.styles,function(e,t){r.setStyle(n,t,"")})})}}(n.dom,t,o)})},ap=function(e,t,n,r){(t.styles.color||t.styles.textDecoration)&&(Mn.walk(r,d(Wg,e),"childNodes"),Wg(e,r))},up=function(e,t,n,r){t.styles&&t.styles.backgroundColor&&rp(r,qg(e,"fontSize"),$g(e,"backgroundColor",jc.replaceVars(t.styles.backgroundColor,n)))},sp=function(e,t,n,r){"sub"!==t.inline&&"sup"!==t.inline||(rp(r,qg(e,"fontSize"),$g(e,"fontSize","")),e.remove(e.select("sup"===t.inline?"sub":"sup",r),!0))},cp=function(e,t,n,r){r&&!1!==t.merge_siblings&&(r=jg(e,jc.getNonWhiteSpaceSibling(r),r),r=jg(e,r,jc.getNonWhiteSpaceSibling(r,!0)))},lp=function(t,n,r,o,i){zg.matchNode(t,i.parentNode,r,o)&&ep(t,n,o,i)||n.merge_with_parents&&t.dom.getParent(i.parentNode,function(e){if(zg.matchNode(t,e,r,o))return ep(t,n,o,i),!0})},fp=function(e){return e.collapsed?e:Kg(e)},dp=Mn.each,hp=function(m,g,p,r){function v(n,e){if(e=e||C,n){if(e.onformat&&e.onformat(n,e,p,r),dp(e.styles,function(e,t){i.setStyle(n,t,jc.replaceVars(e,p))}),e.styles){var t=i.getAttrib(n,"style");t&&n.setAttribute("data-mce-style",t)}dp(e.attributes,function(e,t){i.setAttrib(n,t,jc.replaceVars(e,p))}),dp(e.classes,function(e){e=jc.replaceVars(e,p),i.hasClass(n,e)||i.addClass(n,e)})}}function y(e,t){var n=!1;return!!C.selector&&(dp(e,function(e){if(!("collapsed"in e&&e.collapsed!==o))return i.is(t,e.selector)&&!rs(t)?(v(t,e),!(n=!0)):void 0}),n)}function e(s,e,t,c){var l,f,d=[],h=!0;l=C.inline||C.block,f=s.create(l),v(f),Gc(s,e,function(e){var a,u=function(e){var t,n,r,o;if(o=h,t=e.nodeName.toLowerCase(),n=e.parentNode.nodeName.toLowerCase(),1===e.nodeType&&s.getContentEditable(e)&&(o=h,h="true"===s.getContentEditable(e),r=!0),jc.isEq(t,"br"))return a=0,void(C.block&&s.remove(e));if(C.wrapper&&zg.matchNode(m,e,g,p))a=0;else{if(h&&!r&&C.block&&!C.wrapper&&jc.isTextBlock(m,t)&&jc.isValid(m,n,l))return e=s.rename(e,l),v(e),d.push(e),void(a=0);if(C.selector){var i=y(b,e);if(!C.inline||i)return void(a=0)}!h||r||!jc.isValid(m,l,t)||!jc.isValid(m,n,l)||!c&&3===e.nodeType&&1===e.nodeValue.length&&65279===e.nodeValue.charCodeAt(0)||rs(e)||C.inline&&s.isBlock(e)?(a=0,dp(Mn.grep(e.childNodes),u),r&&(h=o),a=0):(a||(a=s.clone(f,!1),e.parentNode.insertBefore(a,e),d.push(a)),a.appendChild(e))}};dp(e,u)}),!0===C.links&&dp(d,function(e){var t=function(e){"A"===e.nodeName&&v(e,C),dp(Mn.grep(e.childNodes),t)};t(e)}),dp(d,function(e){function t(e){var t=!1;return dp(e.childNodes,function(e){if(function(e){return e&&1===e.nodeType&&!Fc(e)&&!rs(e)&&!Ge.isBogus(e)}(e))return t=e,!1}),t}var n,r,o,i,a;(r=0,dp(e.childNodes,function(e){jc.isWhiteSpaceNode(e)||Fc(e)||r++}),n=r,!(1<d.length)&&s.isBlock(e)||0!==n)?(C.inline||C.wrapper)&&(C.exact||1!==n||((i=t(o=e))&&!Fc(i)&&zg.matchName(s,i,C)&&(a=s.clone(i,!1),v(a),s.replace(a,o,!0),s.remove(i,1)),e=a||o),ip(m,b,p,e),lp(m,C,g,p,e),up(s,C,p,e),sp(s,C,p,e),cp(s,C,p,e)):s.remove(e,1)})}var t,n,b=m.formatter.get(g),C=b[0],o=!r&&m.selection.isCollapsed(),i=m.dom,a=m.selection;if("false"!==i.getContentEditable(a.getNode())){if(C){if(r)r.nodeType?y(b,r)||((n=i.createRng()).setStartBefore(r),n.setEndAfter(r),e(i,Xc(m,n,b),0,!0)):e(i,r,0,!0);else if(o&&C.inline&&!i.select("td[data-mce-selected],th[data-mce-selected]").length)!function(e,t,n){var r,o,i,a,u,s,c=e.selection;a=(r=c.getRng()).startOffset,s=r.startContainer.nodeValue,(o=os(e.getBody(),c.getStart()))&&(i=Hm(o));var l=/[^\s\u00a0\u00ad\u200b\ufeff]/;s&&0<a&&a<s.length&&l.test(s.charAt(a))&&l.test(s.charAt(a-1))?(u=c.getBookmark(),r.collapse(!0),r=Xc(e,r,e.formatter.get(t)),r=Cm(r),e.formatter.apply(t,n,r),c.moveToBookmark(u)):(o&&i.nodeValue===Ag||(i=(o=function(e,t){return e.importNode(t,!0)}(e.getDoc(),Pm(!0).dom())).firstChild,r.insertNode(o),a=1),e.formatter.apply(t,n,o),c.setCursorLocation(i,a))}(m,g,p);else{var u=m.selection.getNode();m.settings.forced_root_block||!b[0].defaultBlock||i.getParent(u,i.isBlock)||hp(m,b[0].defaultBlock),m.selection.setRng(fp(m.selection.getRng())),t=Vs.getPersistentBookmark(m.selection,!0),e(i,Xc(m,a.getRng(),b)),C.styles&&ap(i,C,p,u),a.moveToBookmark(t),jc.moveStart(i,a,a.getRng()),m.nodeChanged()}Yg(g,m)}}else{r=a.getNode();for(var s=0,c=b.length;s<c;s++)if(b[s].ceFalseOverride&&i.is(r,b[s].selector))return void v(r,b[s])}},mp={applyFormat:hp},gp=function(r,e,t,n){var o=Et(t.get()),i={},a={},u=y(jc.getParents(r.dom,e),function(e){return 1===e.nodeType&&!e.getAttribute("data-mce-bogus")});ue(n,function(e,n){Mn.each(u,function(t){return r.formatter.matchNode(t,n,{},e.similar)?(-1===o.indexOf(n)&&(z(e.callbacks,function(e){e(!0,{node:t,format:n,parents:u})}),i[n]=e.callbacks),a[n]=e.callbacks,!1):!zg.matchesUnInheritedFormatSelector(r,t,n)&&void 0})});var s=pp(t.get(),a,e,u);t.set(G(G({},i),s))},pp=function(e,n,r,o){return ce(e,function(e,t){return!!kt(n,t)||(z(e,function(e){e(!1,{node:r,format:t,parents:o})}),!1)}).t},vp=function(r){var t={valigntop:[{selector:"td,th",styles:{verticalAlign:"top"}}],valignmiddle:[{selector:"td,th",styles:{verticalAlign:"middle"}}],valignbottom:[{selector:"td,th",styles:{verticalAlign:"bottom"}}],alignleft:[{selector:"figure.image",collapsed:!1,classes:"align-left",ceFalseOverride:!0,preview:"font-family font-size"},{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"left"},inherit:!1,preview:!1,defaultBlock:"div"},{selector:"img,table",collapsed:!1,styles:{"float":"left"},preview:"font-family font-size"}],aligncenter:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"center"},inherit:!1,preview:"font-family font-size",defaultBlock:"div"},{selector:"figure.image",collapsed:!1,classes:"align-center",ceFalseOverride:!0,preview:"font-family font-size"},{selector:"img",collapsed:!1,styles:{display:"block",marginLeft:"auto",marginRight:"auto"},preview:!1},{selector:"table",collapsed:!1,styles:{marginLeft:"auto",marginRight:"auto"},preview:"font-family font-size"}],alignright:[{selector:"figure.image",collapsed:!1,classes:"align-right",ceFalseOverride:!0,preview:"font-family font-size"},{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"right"},inherit:!1,preview:"font-family font-size",defaultBlock:"div"},{selector:"img,table",collapsed:!1,styles:{"float":"right"},preview:"font-family font-size"}],alignjustify:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"justify"},inherit:!1,defaultBlock:"div",preview:"font-family font-size"}],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,clear_child_styles:!0},hilitecolor:{inline:"span",styles:{backgroundColor:"%value"},links:!0,remove_similar:!0,clear_child_styles:!0},fontname:{inline:"span",toggle:!1,styles:{fontFamily:"%value"},clear_child_styles:!0},fontsize:{inline:"span",toggle:!1,styles:{fontSize:"%value"},clear_child_styles:!0},fontsize_class:{inline:"span",attributes:{"class":"%value"}},blockquote:{block:"blockquote",wrapper:!0,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(n,e,t){Mn.each(t,function(e,t){r.setAttrib(n,t,e)})}},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}]};return Mn.each("p h1 h2 h3 h4 h5 h6 div address pre div dt dd samp".split(/\s/),function(e){t[e]={block:e,remove:"all"}}),t};function yp(e,t){function s(e){var t;return r="string"==typeof e?{name:e,classes:[],attrs:{}}:e,function(e,t){t.classes.length&&Rp.addClass(e,t.classes.join(" ")),Rp.setAttribs(e,t.attrs)}(t=Rp.create(r.name),r),t}var n,r,o,c=t&&t.schema||pr({}),l=function(n,e,t){var r,o,i,a=0<e.length&&e[0],u=a&&a.name;if(i=function(e,t){var n="string"!=typeof e?e.nodeName.toLowerCase():e,r=c.getElementRule(n),o=r&&r.parentsRequired;return!(!o||!o.length)&&(t&&-1!==Mn.inArray(o,t)?t:o[0])}(n,u))u===i?(o=e[0],e=e.slice(1)):o=i;else if(a)o=e[0],e=e.slice(1);else if(!t)return n;return o&&(r=s(o)).appendChild(n),t&&(r||(r=Rp.create("div")).appendChild(n),Mn.each(t,function(e){var t=s(e);r.insertBefore(t,n)})),l(r,e,o&&o.siblings)};return e&&e.length?(r=e[0],n=s(r),(o=Rp.create("div")).appendChild(l(n,e.slice(1),r.siblings)),o):""}function bp(e){var t,a={classes:[],attrs:{}};return"*"!==(e=a.selector=Mn.trim(e))&&(t=e.replace(/(?:([#\.]|::?)([\w\-]+)|(\[)([^\]]+)\]?)/g,function(e,t,n,r,o){switch(t){case"#":a.attrs.id=n;break;case".":a.classes.push(n);break;case":":-1!==Mn.inArray("checked disabled enabled read-only required".split(" "),n)&&(a.attrs[n]=n)}if("["===r){var i=o.match(/([\w\-]+)(?:\=\"([^\"]+))?/);i&&(a.attrs[i[1]]=i[2])}return""})),a.name=t||"div",a}function Cp(e){var t=function o(e){var n={},r=function(e,t){e&&("string"!=typeof e?Mn.each(e,function(e,t){r(t,e)}):(A(t)||(t=[t]),Mn.each(t,function(e){"undefined"==typeof e.deep&&(e.deep=!e.selector),"undefined"==typeof e.split&&(e.split=!e.selector||e.inline),"undefined"==typeof e.remove&&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+/))}),n[e]=t))};return r(vp(e.dom)),r(e.settings.formats),{get:function(e){return e?n[e]:n},has:function(e){return kt(n,e)},register:r,unregister:function(e){return e&&n[e]&&delete n[e],n}}}(e),n=Je(null);return Op(e),jm(e),{get:t.get,has:t.has,register:t.register,unregister:t.unregister,apply:d(mp.applyFormat,e),remove:d(tp,e),toggle:d(Bp,e,t),match:d(zg.match,e),matchAll:d(zg.matchAll,e),matchNode:d(zg.matchNode,e),canApply:d(zg.canApply,e),formatChanged:d(Xg,e,n),getCssText:d(_p,e)}}function wp(e,i,a){e.addNodeFilter("font",function(e){z(e,function(e){var t=i.parse(e.attr("style")),n=e.attr("color"),r=e.attr("face"),o=e.attr("size");n&&(t.color=n),r&&(t["font-family"]=r),o&&(t["font-size"]=a[parseInt(e.attr("size"),10)-1]),e.name="span",e.attr("style",i.serialize(t)),function(t,e){z(e,function(e){t.attr(e,null)})}(e,["color","face","size"])})})}function xp(e,t){var n=xr();t.convert_fonts_to_spans&&wp(e,n,Mn.explode(t.font_size_legacy_values)),function(e,n){e.addNodeFilter("strike",function(e){z(e,function(e){var t=n.parse(e.attr("style"));t["text-decoration"]="line-through",e.name="span",e.attr("style",n.serialize(t))})})}(e,n)}function zp(e,t,n,r){(e.padd_empty_with_br||t.insert)&&n[r.name]?r.empty().append(new ul("br",1)).shortEnded=!0:r.empty().append(new ul("#text",3)).value="\xa0"}function Ep(t,e,n,r){return r.isEmpty(e,n,function(e){return function(e,t){var n=e.getElementRule(t.name);return n&&n.paddEmpty}(t,e)})}function Np(T,A){void 0===A&&(A=pr());var M={},R=[],D={},_={};(T=T||{}).validate=!("validate"in T)||T.validate,T.root_name=T.root_name||"body";var B=function(e){var t,n,r;(n=e.name)in M&&((r=D[n])?r.push(e):D[n]=[e]),t=R.length;for(;t--;)(n=R[t].name)in e.attributes.map&&((r=_[n])?r.push(e):_[n]=[e]);return e},e={schema:A,addAttributeFilter:function(e,n){Up(jp(e),function(e){var t;for(t=0;t<R.length;t++)if(R[t].name===e)return void R[t].callbacks.push(n);R.push({name:e,callbacks:[n]})})},getAttributeFilters:function(){return[].concat(R)},addNodeFilter:function(e,n){Up(jp(e),function(e){var t=M[e];t||(M[e]=t=[]),t.push(n)})},getNodeFilters:function(){var e=[];for(var t in M)M.hasOwnProperty(t)&&e.push({name:t,callbacks:M[t]});return e},filterNode:B,parse:function(e,a){var t,n,r,o,i,u,s,c,l,f,d,h=[];a=a||{},D={},_={},l=qp(Fp("script,style,head,html,body,title,meta,param"),A.getBlockElements());var m,g=A.getNonEmptyElements(),p=A.children,v=T.validate,y="forced_root_block"in a?a.forced_root_block:T.forced_root_block,b=!1===(m=y)?"":!0===m?"p":m,C=A.getWhiteSpaceElements(),w=/^[ \t\r\n]+/,x=/[ \t\r\n]+$/,z=/[ \t\r\n]+/g,E=/^[ \t\r\n]+$/;f=C.hasOwnProperty(a.context)||C.hasOwnProperty(T.root_name);function N(e){var t,n,r,o,i=A.getBlockElements();for(t=e.prev;t&&3===t.type;){if(0<(r=t.value.replace(x,"")).length)return void(t.value=r);if(n=t.next){if(3===n.type&&n.value.length){t=t.prev;continue}if(!i[n.name]&&"script"!==n.name&&"style"!==n.name){t=t.prev;continue}}o=t.prev,t.remove(),t=o}}var S=function(e,t){var n,r=new ul(e,t);return e in M&&((n=D[e])?n.push(r):D[e]=[r]),r};t=of({validate:v,allow_script_urls:T.allow_script_urls,allow_conditional_comments:T.allow_conditional_comments,self_closing_elements:function(e){var t,n={};for(t in e)"li"!==t&&"p"!==t&&(n[t]=e[t]);return n}(A.getSelfClosingElements()),cdata:function(e){d.append(S("#cdata",4)).value=e},text:function(e,t){var n;f||(e=e.replace(z," "),function(e,t){return e&&(t[e.name]||"br"===e.name)}(d.lastChild,l)&&(e=e.replace(w,""))),0!==e.length&&((n=S("#text",3)).raw=!!t,d.append(n).value=e)},comment:function(e){d.append(S("#comment",8)).value=e},pi:function(e,t){d.append(S(e,7)).value=t,N(d)},doctype:function(e){d.append(S("#doctype",10)).value=e,N(d)},start:function(e,t,n){var r,o,i,a,u;if(i=v?A.getElementRule(e):{}){for((r=S(i.outputName||e,1)).attributes=t,r.shortEnded=n,d.append(r),(u=p[d.name])&&p[r.name]&&!u[r.name]&&h.push(r),o=R.length;o--;)(a=R[o].name)in t.map&&((s=_[a])?s.push(r):_[a]=[r]);l[e]&&N(r),n||(d=r),!f&&C[e]&&(f=!0)}},end:function(e){var t,n,r,o,i;if(n=v?A.getElementRule(e):{}){if(l[e]&&!f){if((t=d.firstChild)&&3===t.type)if(0<(r=t.value.replace(w,"")).length)t.value=r,t=t.next;else for(o=t.next,t.remove(),t=o;t&&3===t.type;)r=t.value,o=t.next,0!==r.length&&!E.test(r)||(t.remove(),t=o),t=o;if((t=d.lastChild)&&3===t.type)if(0<(r=t.value.replace(x,"")).length)t.value=r,t=t.prev;else for(o=t.prev,t.remove(),t=o;t&&3===t.type;)r=t.value,o=t.prev,0!==r.length&&!E.test(r)||(t.remove(),t=o),t=o}if(f&&C[e]&&(f=!1),n.removeEmpty&&Ep(A,g,C,d)&&!d.attr("name")&&!d.attr("id"))return i=d.parent,l[d.name]?d.empty().remove():d.unwrap(),void(d=i);n.paddEmpty&&(function(e){return Ip(e,"#text")&&"\xa0"===e.firstChild.value}(d)||Ep(A,g,C,d))&&zp(T,a,l,d),d=d.parent}}},A);var k=d=new ul(a.context||T.root_name,11);if(t.parse(e),v&&h.length&&(a.context?a.invalid=!0:function(e){var t,n,r,o,i,a,u,s,c,l,f,d,h,m,g,p;for(d=Fp("tr,td,th,tbody,thead,tfoot,table"),l=A.getNonEmptyElements(),f=A.getWhiteSpaceElements(),h=A.getTextBlockElements(),m=A.getSpecialElements(),t=0;t<e.length;t++)if((n=e[t]).parent&&!n.fixed)if(h[n.name]&&"li"===n.parent.name){for(g=n.next;g&&h[g.name];)g.name="li",g.fixed=!0,n.parent.insert(g,n.parent),g=g.next;n.unwrap(n)}else{for(o=[n],r=n.parent;r&&!A.isValidChild(r.name,n.name)&&!d[r.name];r=r.parent)o.push(r);if(r&&1<o.length){for(o.reverse(),i=a=B(o[0].clone()),c=0;c<o.length-1;c++){for(A.isValidChild(a.name,o[c].name)?(u=B(o[c].clone()),a.append(u)):u=a,s=o[c].firstChild;s&&s!==o[c+1];)p=s.next,u.append(s),s=p;a=u}Ep(A,l,f,i)?r.insert(n,o[0],!0):(r.insert(i,o[0],!0),r.insert(n,i)),r=o[0],(Ep(A,l,f,r)||Ip(r,"br"))&&r.empty().remove()}else if(n.parent){if("li"===n.name){if((g=n.prev)&&("ul"===g.name||"ul"===g.name)){g.append(n);continue}if((g=n.next)&&("ul"===g.name||"ul"===g.name)){g.insert(n,g.firstChild,!0);continue}n.wrap(B(new ul("ul",1)));continue}A.isValidChild(n.parent.name,"div")&&A.isValidChild("div",n.name)?n.wrap(B(new ul("div",1))):m[n.name]?n.empty().remove():n.unwrap()}}}(h)),b&&("body"===k.name||a.isRootContent)&&function(){function e(e){e&&((r=e.firstChild)&&3===r.type&&(r.value=r.value.replace(w,"")),(r=e.lastChild)&&3===r.type&&(r.value=r.value.replace(x,"")))}var t,n,r=k.firstChild;if(A.isValidChild(k.name,b.toLowerCase())){for(;r;)t=r.next,3===r.type||1===r.type&&"p"!==r.name&&!l[r.name]&&!r.attr("data-mce-type")?(n||((n=S(b,1)).attr(T.forced_root_block_attrs),k.insert(n,r)),n.append(r)):(e(n),n=null),r=t;e(n)}}(),!a.invalid){for(c in D)if(D.hasOwnProperty(c)){for(s=M[c],i=(n=D[c]).length;i--;)n[i].parent||n.splice(i,1);for(r=0,o=s.length;r<o;r++)s[r](n,c,a)}for(r=0,o=R.length;r<o;r++)if((s=R[r]).name in _){for(i=(n=_[s.name]).length;i--;)n[i].parent||n.splice(i,1);for(i=0,u=s.callbacks.length;i<u;i++)s.callbacks[i](n,s.name,a)}}return k}};return function(e,g){var p=e.schema;g.remove_trailing_brs&&e.addNodeFilter("br",function(e,t,n){var r,o,i,a,u,s,c,l,f=e.length,d=Mn.extend({},p.getBlockElements()),h=p.getNonEmptyElements(),m=p.getNonEmptyElements();for(d.body=1,r=0;r<f;r++)if(i=(o=e[r]).parent,d[o.parent.name]&&o===i.lastChild){for(u=o.prev;u;){if("span"!==(s=u.name)||"bookmark"!==u.attr("data-mce-type")){if("br"!==s)break;if("br"===s){o=null;break}}u=u.prev}o&&(o.remove(),Ep(p,h,m,i)&&(c=p.getElementRule(i.name))&&(c.removeEmpty?i.remove():c.paddEmpty&&zp(g,n,d,i)))}else{for(a=o;i&&i.firstChild===a&&i.lastChild===a&&!d[(a=i).name];)i=i.parent;a===i&&!0!==g.padd_empty_with_br&&((l=new ul("#text",3)).value="\xa0",o.replace(l))}}),e.addAttributeFilter("href",function(e){var t,n,r,o=e.length;if(!g.allow_unsafe_link_target)for(;o--;)"a"===(t=e[o]).name&&"_blank"===t.attr("target")&&t.attr("rel",(n=t.attr("rel"),void 0,r=n?Mn.trim(n):"",/\b(noopener)\b/g.test(r)?r:r.split(" ").filter(function(e){return 0<e.length}).concat(["noopener"]).sort().join(" ")))}),g.allow_html_in_named_anchor||e.addAttributeFilter("id,name",function(e){for(var t,n,r,o,i=e.length;i--;)if("a"===(o=e[i]).name&&o.firstChild&&!o.attr("href"))for(r=o.parent,t=o.lastChild;n=t.prev,r.insert(t,o),t=n;);}),g.fix_list_elements&&e.addNodeFilter("ul,ol",function(e){for(var t,n,r=e.length;r--;)if("ul"===(n=(t=e[r]).parent).name||"ol"===n.name)if(t.prev&&"li"===t.prev.name)t.prev.append(t);else{var o=new ul("li",1);o.attr("style","list-style-type: none"),t.wrap(o)}}),g.validate&&p.getValidClasses()&&e.addAttributeFilter("class",function(e){for(var t,n,r,o,i,a,u,s=e.length,c=p.getValidClasses();s--;){for(n=(t=e[s]).attr("class").split(" "),i="",r=0;r<n.length;r++)o=n[r],u=!1,(a=c["*"])&&a[o]&&(u=!0),a=c[t.name],!u&&a&&a[o]&&(u=!0),u&&(i&&(i+=" "),i+=o);i.length||(i=null),t.attr("class",i)}})}(e,T),Vp(e,T),e}function Sp(e,t,n){-1===Mn.inArray(t,n)&&(e.addAttributeFilter(n,function(e,t){for(var n=e.length;n--;)e[n].attr(t,null)}),t.push(n))}function kp(e,t,n,r,o){return function(e,t,n){return t.no_events||!e?n:ld(e,bd(t,{content:n})).content}(e,o,function(e,t,n){return pl(e,t).serialize(n)}(t,n,r))}function Tp(a,u){var s,c,l,e=["data-mce-selected"];return s=u&&u.dom?u.dom:Xi.DOM,c=u&&u.schema?u.schema:pr(a),a.entity_encoding=a.entity_encoding||"named",a.remove_trailing_brs=!("remove_trailing_brs"in a)||a.remove_trailing_brs,l=Np(a,c),Hp(l,a,s),{schema:c,addNodeFilter:l.addNodeFilter,addAttributeFilter:l.addAttributeFilter,serialize:function(e,t){var n=bd({format:"html"},t||{}),r=Lp(u,e,n),o=function(e,t,n){var r=lu(n.getInner?t.innerHTML:e.getOuterHTML(t));return n.selection||Wn(yt.fromDom(t))?r:Mn.trim(r)}(s,r,n),i=function(e,t,n){var r=n.selection?bd({forced_root_block:!1},n):n,o=e.parse(t,r);return Pp(o),o}(l,o,n);return"tree"===n.format?i:kp(u,a,c,i,n)},addRules:function(e){c.addValidElements(e)},setRules:function(e){c.setValidElements(e)},addTempAttr:d(Sp,l,e),getTempAttrs:function(){return e}}}function Ap(e,t){var n=Tp(e,t);return{schema:n.schema,addNodeFilter:n.addNodeFilter,addAttributeFilter:n.addAttributeFilter,serialize:n.serialize,addRules:n.addRules,setRules:n.setRules,addTempAttr:n.addTempAttr,getTempAttrs:n.getTempAttrs}}var Mp=Mn.each,Rp=Xi.DOM,Dp=function(e){return e&&"string"==typeof e?(e=(e=e.split(/\s*,\s*/)[0]).replace(/\s*(~\+|~|\+|>)\s*/g,"$1"),Mn.map(e.split(/(?:>|\s+(?![^\[\]]+\]))/),function(e){var t=Mn.map(e.split(/(?:~\+|~|\+)/),bp),n=t.pop();return t.length&&(n.siblings=t),n}).reverse()):[]},_p=function(n,e){var t,r,o,i,a,u,s="";if(!1===(u=n.settings.preview_styles))return"";"string"!=typeof u&&(u="font-family font-size font-weight font-style text-decoration text-transform color background-color border border-radius outline text-shadow");function c(e){return e.replace(/%(\w+)/g,"")}if("string"==typeof e){if(!(e=n.formatter.get(e)))return;e=e[0]}return"preview"in e&&!1===(u=e.preview)?"":(t=e.block||e.inline||"span",r=(i=Dp(e.selector)).length?(i[0].name||(i[0].name=t),t=e.selector,yp(i,n)):yp([t],n),o=Rp.select(t,r)[0]||r.firstChild,Mp(e.styles,function(e,t){(e=c(e))&&Rp.setStyle(o,t,e)}),Mp(e.attributes,function(e,t){(e=c(e))&&Rp.setAttrib(o,t,e)}),Mp(e.classes,function(e){e=c(e),Rp.hasClass(o,e)||Rp.addClass(o,e)}),n.fire("PreviewFormats"),Rp.setStyles(r,{position:"absolute",left:-65535}),n.getBody().appendChild(r),a=Rp.getStyle(n.getBody(),"fontSize",!0),a=/px$/.test(a)?parseInt(a,10):0,Mp(u.split(" "),function(e){var t=Rp.getStyle(o,e,!0);if(!("background-color"===e&&/transparent|rgba\s*\([^)]+,\s*0\)/.test(t)&&(t=Rp.getStyle(n.getBody(),e,!0),"#ffffff"===Rp.toHex(t).toLowerCase())||"color"===e&&"#000000"===Rp.toHex(t).toLowerCase())){if("font-size"===e&&/em|%$/.test(t)){if(0===a)return;t=parseFloat(t)/(/%$/.test(t)?100:1)*a+"px"}"border"===e&&t&&(s+="padding:0 2px;"),s+=e+":"+t+";"}}),n.fire("AfterPreviewFormats"),Rp.remove(r),s)},Bp=function(e,t,n,r,o){var i=t.get(n);!zg.match(e,n,r,o)||"toggle"in i[0]&&!i[0].toggle?mp.applyFormat(e,n,r,o):tp(e,n,r,o)},Op=function(e){e.addShortcut("meta+b","","Bold"),e.addShortcut("meta+i","","Italic"),e.addShortcut("meta+u","","Underline");for(var t=1;t<=6;t++)e.addShortcut("access+"+t,"",["FormatBlock",!1,"h"+t]);e.addShortcut("access+7","",["FormatBlock",!1,"p"]),e.addShortcut("access+8","",["FormatBlock",!1,"div"]),e.addShortcut("access+9","",["FormatBlock",!1,"address"])},Hp=function(t,s,c){t.addAttributeFilter("data-mce-tabindex",function(e,t){for(var n,r=e.length;r--;)(n=e[r]).attr("tabindex",n.attr("data-mce-tabindex")),n.attr(t,null)}),t.addAttributeFilter("src,href,style",function(e,t){for(var n,r,o=e.length,i="data-mce-"+t,a=s.url_converter,u=s.url_converter_scope;o--;)(r=(n=e[o]).attr(i))!==undefined?(n.attr(t,0<r.length?r:null),n.attr(i,null)):(r=n.attr(t),"style"===t?r=c.serializeStyle(c.parseStyle(r),n.name):a&&(r=a.call(u,r,t,n.name)),n.attr(t,0<r.length?r:null))}),t.addAttributeFilter("class",function(e){for(var t,n,r=e.length;r--;)(n=(t=e[r]).attr("class"))&&(n=t.attr("class").replace(/(?:^|\s)mce-item-\w+(?!\S)/g,""),t.attr("class",0<n.length?n:null))}),t.addAttributeFilter("data-mce-type",function(e,t,n){for(var r,o=e.length;o--;){if("bookmark"===(r=e[o]).attr("data-mce-type")&&!n.cleanup)k.from(r.firstChild).exists(function(e){return!su(e.value)})?r.unwrap():r.remove()}}),t.addNodeFilter("noscript",function(e){for(var t,n=e.length;n--;)(t=e[n].firstChild)&&(t.value=ir.decode(t.value))}),t.addNodeFilter("script,style",function(e,t){for(var n,r,o,i=e.length,a=function(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,"")};i--;)r=(n=e[i]).firstChild?n.firstChild.value:"","script"===t?((o=n.attr("type"))&&n.attr("type","mce-no/type"===o?null:o.replace(/^mce\-/,"")),"xhtml"===s.element_format&&0<r.length&&(n.firstChild.value="// <![CDATA[\n"+a(r)+"\n// ]]>")):"xhtml"===s.element_format&&0<r.length&&(n.firstChild.value="\x3c!--\n"+a(r)+"\n--\x3e")}),t.addNodeFilter("#comment",function(e){for(var t,n=e.length;n--;)0===(t=e[n]).value.indexOf("[CDATA[")?(t.name="#cdata",t.type=4,t.value=t.value.replace(/^\[CDATA\[|\]\]$/g,"")):0===t.value.indexOf("mce:protected ")&&(t.name="#text",t.type=3,t.raw=!0,t.value=unescape(t.value).substr(14))}),t.addNodeFilter("xml:namespace,input",function(e,t){for(var n,r=e.length;r--;)7===(n=e[r]).type?n.remove():1===n.type&&("input"!==t||n.attr("type")||n.attr("type","text"))}),t.addAttributeFilter("data-mce-type",function(e){z(e,function(e){"format-caret"===e.attr("data-mce-type")&&(e.isEmpty(t.schema.getNonEmptyElements())?e.remove():e.unwrap())})}),t.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)})},Pp=function(e){function t(e){return e&&"br"===e.name}var n,r;t(n=e.lastChild)&&t(r=n.prev)&&(n.remove(),r.remove())},Lp=function(e,t,n){return function(e,t){return e&&e.hasEventListeners("PreProcess")&&!t.no_events}(e,n)?function(e,t,n){var r,o,i,a=e.dom;return t=t.cloneNode(!0),(r=j.document.implementation).createHTMLDocument&&(o=r.createHTMLDocument(""),Mn.each("BODY"===t.nodeName?t.childNodes:[t],function(e){o.body.appendChild(o.importNode(e,!0))}),t="BODY"!==t.nodeName?o.body.firstChild:o.body,i=a.doc,a.doc=o),cd(e,bd(n,{node:t})),i&&(a.doc=i),t}(e,t,n):t},Vp=function(e,t){t.inline_styles&&xp(e,t)},Ip=function(e,t){return e&&e.firstChild&&e.firstChild===e.lastChild&&e.firstChild.name===t},Fp=Mn.makeMap,Up=Mn.each,jp=Mn.explode,qp=Mn.extend;function $p(e){return{getBookmark:d(Vc,e),moveToBookmark:d(Ic,e)}}($p=$p||{}).isBookmarkNode=Fc;function Wp(r,a){var u,s,c,l,f,d,h,m,g,p,v,y,i,b,C,w,x,z=a.dom,E=Mn.each,N=a.getDoc(),S=j.document,k=Math.abs,T=Math.round,A=a.getBody();function M(e){return e&&("IMG"===e.nodeName||a.dom.is(e,"figure.image"))}function e(e){var t=e.target;!function(e,t){if("longpress"!==e.type&&0!==e.type.indexOf("touch"))return M(e.target)&&!Jm(e.clientX,e.clientY,t);var n=e.touches[0];return M(e.target)&&!Jm(n.clientX,n.clientY,t)}(e,a.selection.getRng())||e.isDefaultPrevented()||a.selection.select(t)}function R(e){return a.dom.is(e,"figure.image")?e.querySelector("img"):e}function D(e){var t=a.settings.object_resizing;return!1!==t&&!Nn.iOS&&("string"!=typeof t&&(t="table,img,figure.image,div"),"false"!==e.getAttribute("data-mce-resize")&&(e!==a.getBody()&&we(yt.fromDom(e),t)))}function _(e){var t,n,r,o;t=e.screenX-d,n=e.screenY-h,b=t*f[2]+p,C=n*f[3]+v,b=b<5?5:b,C=C<5?5:C,(M(u)&&!1!==a.settings.resize_img_proportional?!Ah.modifierPressed(e):Ah.modifierPressed(e)||M(u)&&f[2]*f[3]!=0)&&(k(t)>k(n)?(C=T(b*y),b=T(C/y)):(b=T(C/y),C=T(b*y))),z.setStyles(R(s),{width:b,height:C}),r=0<(r=f.startPos.x+t)?r:0,o=0<(o=f.startPos.y+n)?o:0,z.setStyles(c,{left:r,top:o,display:"block"}),c.innerHTML=b+" &times; "+C,f[2]<0&&s.clientWidth<=b&&z.setStyle(s,"left",m+(p-b)),f[3]<0&&s.clientHeight<=C&&z.setStyle(s,"top",g+(v-C)),(t=A.scrollWidth-w)+(n=A.scrollHeight-x)!==0&&z.setStyles(c,{left:r-t,top:o-n}),i||(md(a,u,p,v),i=!0)}function n(e){function t(e,t){if(e)do{if(e===t)return!0}while(e=e.parentNode)}var n;i||a.removed||(E(z.select("img[data-mce-selected],hr[data-mce-selected]"),function(e){e.removeAttribute("data-mce-selected")}),n="mousedown"===e.type?e.target:r.getNode(),t(n=z.$(n).closest("table,img,figure.image,hr")[0],A)&&(L(),t(r.getStart(!0),n)&&t(r.getEnd(!0),n))?O(n):H())}function o(e){return Xp(function(e,t){for(;t&&t!==e;){if(Yp(t)||Xp(t))return t;t=t.parentNode}return null}(a.getBody(),e))}l={nw:[0,0,-1,-1],ne:[1,0,1,-1],se:[1,1,1,1],sw:[0,1,-1,1]};var B=function(){i=!1;function e(e,t){t&&(u.style[e]||!a.schema.isValid(u.nodeName.toLowerCase(),e)?z.setStyle(R(u),e,t):z.setAttrib(R(u),e,t))}e("width",b),e("height",C),z.unbind(N,"mousemove",_),z.unbind(N,"mouseup",B),S!==N&&(z.unbind(S,"mousemove",_),z.unbind(S,"mouseup",B)),z.remove(s),z.remove(c),O(u),gd(a,u,b,C),z.setAttrib(u,"style",z.getAttrib(u,"style")),a.nodeChanged()},O=function(e){var t,r,o,n,i;H(),P(),t=z.getPos(e,A),m=t.x,g=t.y,i=e.getBoundingClientRect(),r=i.width||i.right-i.left,o=i.height||i.bottom-i.top,u!==e&&(u=e,b=C=0),n=a.fire("ObjectSelected",{target:e}),D(e)&&!n.isDefaultPrevented()?E(l,function(t,e){var n;(n=z.get("mceResizeHandle"+e))&&z.remove(n),n=z.add(A,"div",{id:"mceResizeHandle"+e,"data-mce-bogus":"all","class":"mce-resizehandle",unselectable:!0,style:"cursor:"+e+"-resize; margin:0; padding:0"}),11===Nn.ie&&(n.contentEditable=!1),z.bind(n,"mousedown",function(e){e.stopImmediatePropagation(),e.preventDefault(),function(e){d=e.screenX,h=e.screenY,p=R(u).clientWidth,v=R(u).clientHeight,y=v/p,(f=t).startPos={x:r*t[0]+m,y:o*t[1]+g},w=A.scrollWidth,x=A.scrollHeight,s=u.cloneNode(!0),z.addClass(s,"mce-clonedresizable"),z.setAttrib(s,"data-mce-bogus","all"),s.contentEditable=!1,s.unSelectabe=!0,z.setStyles(s,{left:m,top:g,margin:0}),s.removeAttribute("data-mce-selected"),A.appendChild(s),z.bind(N,"mousemove",_),z.bind(N,"mouseup",B),S!==N&&(z.bind(S,"mousemove",_),z.bind(S,"mouseup",B)),c=z.add(A,"div",{"class":"mce-resize-helper","data-mce-bogus":"all"},p+" &times; "+v)}(e)}),t.elm=n,z.setStyles(n,{left:r*t[0]+m-n.offsetWidth/2,top:o*t[1]+g-n.offsetHeight/2})}):H(),u.setAttribute("data-mce-selected","1")},H=function(){var e,t;for(e in P(),u&&u.removeAttribute("data-mce-selected"),l)(t=z.get("mceResizeHandle"+e))&&(z.unbind(t),z.remove(t))},P=function(){for(var e in l){var t=l[e];t.elm&&(z.unbind(t.elm),delete t.elm)}},L=function(){try{a.getDoc().execCommand("enableObjectResizing",!1,!1)}catch(e){}};return a.on("init",function(){L(),(Nn.browser.isIE()||Nn.browser.isEdge())&&(a.on("mousedown click",function(e){var t=e.target,n=t.nodeName;i||!/^(TABLE|IMG|HR)$/.test(n)||o(t)||(2!==e.button&&a.selection.select(t,"TABLE"===n),"mousedown"===e.type&&a.nodeChanged())}),a.dom.bind(A,"mscontrolselect",function(e){function t(e){pn.setEditorTimeout(a,function(){a.selection.select(e)})}if(o(e.target))return e.preventDefault(),void t(e.target);/^(TABLE|IMG|HR)$/.test(e.target.nodeName)&&(e.preventDefault(),"IMG"===e.target.tagName&&t(e.target))}));var t=pn.throttle(function(e){a.composing||n(e)});a.on("nodechange ResizeEditor ResizeWindow drop FullscreenStateChanged",t),a.on("keyup compositionend",function(e){u&&"TABLE"===u.nodeName&&t(e)}),a.on("hide blur",H),a.on("contextmenu longpress",e,!0)}),a.on("remove",P),{isResizable:D,showResizeRect:O,hideResizeRect:H,updateResizeRect:n,destroy:function(){u=s=null}}}var Kp=$p,Xp=Ge.isContentEditableFalse,Yp=Ge.isContentEditableTrue;function Gp(e){var t=yt.fromDom(j.document),n=ki(t),r=function(e,t){var n=t.owner(e);return Vv(t,n)}(e,Iv),o=Hi(e),i=m(r,function(e,t){var n=Hi(t);return{left:e.left+n.left(),top:e.top+n.top()}},{left:0,top:0});return Oi(i.left+o.left()+n.left(),i.top+o.top()+n.top())}function Jp(e){return"textarea"===ie(e)}function Qp(e,t){var n=function(e){var t=e.dom().ownerDocument,n=t.body,r=t.defaultView,o=t.documentElement;if(n===e.dom())return Oi(n.offsetLeft,n.offsetTop);var i=Si(r.pageYOffset,o.scrollTop),a=Si(r.pageXOffset,o.scrollLeft),u=Si(o.clientTop,n.clientTop),s=Si(o.clientLeft,n.clientLeft);return Hi(e).translate(a-s,i-u)}(e),r=function(e){return Lv.get(e)}(e);return{element:e,bottom:n.top()+r,pos:n,cleanup:t}}function Zp(e,t){var n=function(e,t){var n=Re(e);if(0===n.length||Jp(e))return{element:e,offset:t};if(t<n.length&&!Jp(n[t]))return{element:n[t],offset:0};var r=n[n.length-1];return Jp(r)?{element:e,offset:t}:"img"===ie(r)?{element:r,offset:1}:zt(r)?{element:r,offset:Jc(r).length}:{element:r,offset:Re(r).length}}(e,t),r=yt.fromHtml('<span data-mce-bogus="all">'+cu+"</span>");return Ci(n.element,r),Qp(r,function(){return _i(r)})}function ev(e){return Qp(yt.fromDom(e),i)}function tv(n,r,o,i){Uv(n,function(e,t){return Fv(n,r,o,i)},o)}function nv(e,t,n,r){var o=yt.fromDom(e.getDoc());n(o,ki(o).top(),t,r)}function rv(e,t,n,r){var o=e.pos;if(n)Ti(o.left(),o.top(),r);else{var i=o.top()-t+(e.bottom-o.top());Ti(o.left(),i,r)}}function ov(e,t,n,r,o){r.pos.top()<t?rv(r,n,!1!==o,e):r.bottom>n+t&&rv(r,n,!0===o,e)}function iv(e,t,n,r){var o=e.dom().defaultView.innerHeight;ov(e,t,o,n,r)}function av(e,t,n,r,o){var i=t.dom().defaultView.innerHeight;ov(t,n,i,r,o);var a=Gp(r.element),u=Li(j.window);a.top()<u.y()?Ai(r.element,!1!==o):a.top()>u.bottom()&&Ai(r.element,!0===o)}function uv(e,t,n){return tv(e,d(iv),t,n)}function sv(e,t,n){return nv(e,ev(t),d(iv),n)}function cv(e,t,n){return tv(e,d(av,e),t,n)}function lv(e,t,n){return nv(e,ev(t),d(av,e),n)}function fv(e){return Ge.isContentEditableTrue(e)||Ge.isContentEditableFalse(e)}function dv(e,t){var n=(t||j.document).createDocumentFragment();return z(e,function(e){n.appendChild(e.dom())}),yt.fromDom(n)}function hv(e,t){var n=parseInt(ge(e,t),10);return isNaN(n)?1:n}function mv(e){return b(e,function(e,t){return t.cells().length>e?t.cells().length:e},0)}function gv(e,t){for(var n=e.rows(),r=0;r<n.length;r++)for(var o=n[r].cells(),i=0;i<o.length;i++)if(ze(o[i],t))return k.some(Yv(i,r));return k.none()}function pv(e,t,n,r,o){for(var i=[],a=e.rows(),u=n;u<=o;u++){var s=a[u].cells(),c=t<r?s.slice(t,r+1):s.slice(r,t+1);i.push(Xv(a[u].element(),c))}return i}function vv(e){var t=[];if(e)for(var n=0;n<e.rangeCount;n++)t.push(e.getRangeAt(n));return t}function yv(e){return y(ey(e),$n)}function bv(e){return ma(e,"td[data-mce-selected],th[data-mce-selected]")}function Cv(e,t){var n=bv(t),r=yv(e);return 0<n.length?n:r}function wv(t,n){return g(t,function(e){return"li"===ie(e)&&uh(e,n)}).fold($([]),function(e){return function(e){return g(e,function(e){return"ul"===ie(e)||"ol"===ie(e)})}(t).map(function(e){return[yt.fromTag("li"),yt.fromTag(ie(e))]}).getOr([])})}function xv(e,t){var n=yt.fromDom(t.commonAncestorContainer),r=fh(n,e),o=y(r,function(e){return Dn(e)||Ln(e)}),i=wv(r,t),a=o.concat(i.length?i:function(t){return Un(t)?Se(t).filter(Fn).fold($([]),function(e){return[t,e]}):Fn(t)?[t]:[]}(n));return X(a,ka)}function zv(){return dv([])}function Ev(e,t){return function(e,t){var n=b(t,function(e,t){return Di(t,e),t},e);return 0<t.length?dv([n]):n}(yt.fromDom(t.cloneContents()),xv(e,t))}function Nv(e,o){return function(e,t){return Ca(t,"table",d(ze,e))}(e,o[0]).bind(function(e){var t=o[0],n=o[o.length-1],r=Gv(e);return Qv(r,t,n).map(function(e){return dv([Jv(e)])})}).getOrThunk(zv)}function Sv(e,t,n){return null!==function(e,t,n){for(;e&&e!==t;){if(n(e))return e;e=e.parentNode}return null}(e,t,n)}function kv(e,t,n){return Sv(e,t,function(e){return e.nodeName===n})}function Tv(e){return e&&"TABLE"===e.nodeName}function Av(e,t,n){for(var r=new yi(t,e.getParent(t.parentNode,e.isBlock)||e.getRoot());t=r[n?"prev":"next"]();)if(Ge.isBr(t))return!0}function Mv(e,t,n,r,o){var i,a,u=e.getRoot(),s=e.schema.getNonEmptyElements(),c=e.getParent(o.parentNode,e.isBlock)||u;if(r&&Ge.isBr(o)&&t&&e.isEmpty(c))return k.some(Uu(o.parentNode,e.nodeIndex(o)));for(var l,f,d=new yi(o,c);a=d[r?"prev":"next"]();){if("false"===e.getContentEditableParent(a)||(f=u,Da(l=a)&&!1===Sv(l,f,rs)))return k.none();if(Ge.isText(a)&&0<a.nodeValue.length)return!1===kv(a,u,"A")?k.some(Uu(a,r?a.nodeValue.length:0)):k.none();if(e.isBlock(a)||s[a.nodeName.toLowerCase()])return k.none();i=a}return n&&i?k.some(Uu(i,0)):k.none()}function Rv(e,t,n,r){var o,i,a,u,s,c,l,f=e.getRoot(),d=!1;if(o=r[(n?"start":"end")+"Container"],i=r[(n?"start":"end")+"Offset"],c=Ge.isElement(o)&&i===o.childNodes.length,u=e.schema.getNonEmptyElements(),s=n,Da(o))return k.none();if(Ge.isElement(o)&&i>o.childNodes.length-1&&(s=!1),Ge.isDocument(o)&&(o=f,i=0),o===f){if(s&&(a=o.childNodes[0<i?i-1:0])){if(Da(a))return k.none();if(u[a.nodeName]||Tv(a))return k.none()}if(o.hasChildNodes()){if(i=Math.min(!s&&0<i?i-1:i,o.childNodes.length-1),o=o.childNodes[i],i=Ge.isText(o)&&c?o.data.length:0,!t&&o===f.lastChild&&Tv(o))return k.none();if(function(e,t){for(;t&&t!==e;){if(Ge.isContentEditableFalse(t))return!0;t=t.parentNode}return!1}(f,o)||Da(o))return k.none();if(o.hasChildNodes()&&!1===Tv(o)){var h=new yi(a=o,f);do{if(Ge.isContentEditableFalse(a)||Da(a)){d=!1;break}if(Ge.isText(a)&&0<a.nodeValue.length){i=s?0:a.nodeValue.length,o=a,d=!0;break}if(u[a.nodeName.toLowerCase()]&&(!(l=a)||!/^(TD|TH|CAPTION)$/.test(l.nodeName))){i=e.nodeIndex(a),o=a.parentNode,s||i++,d=!0;break}}while(a=s?h.next():h.prev())}}}return t&&(Ge.isText(o)&&0===i&&Mv(e,c,t,!0,o).each(function(e){o=e.container(),i=e.offset(),d=!0}),Ge.isElement(o)&&(!(a=(a=o.childNodes[i])||o.childNodes[i-1])||!Ge.isBr(a)||function(e,t){return e.previousSibling&&e.previousSibling.nodeName===t}(a,"A")||Av(e,a,!1)||Av(e,a,!0)||Mv(e,c,t,!0,a).each(function(e){o=e.container(),i=e.offset(),d=!0}))),s&&!t&&Ge.isText(o)&&i===o.nodeValue.length&&Mv(e,c,t,!1,o).each(function(e){o=e.container(),i=e.offset(),d=!0}),d?k.some(Uu(o,i)):k.none()}function Dv(e){return 0===e.dom().length?(_i(e),k.none()):k.some(e)}function _v(e,t,n,r,o){var i=n?t.startContainer:t.endContainer,a=n?t.startOffset:t.endOffset;return k.from(i).map(yt.fromDom).map(function(e){return r&&t.collapsed?e:De(e,o(e,a)).getOr(e)}).bind(function(e){return xt(e)?k.some(e):Se(e)}).map(function(e){return e.dom()}).getOr(e)}function Bv(e,t,n){return _v(e,t,!0,n,function(e,t){return Math.min(function(e){return e.dom().childNodes.length}(e),t)})}function Ov(e,t,n){return _v(e,t,!1,n,function(e,t){return 0<t?t-1:t})}function Hv(e,t){for(var n=e;e&&Ge.isText(e)&&0===e.length;)e=t?e.nextSibling:e.previousSibling;return e||n}function Pv(e,t,n){if(e&&e.hasOwnProperty(t)){var r=y(e[t],function(e){return e!==n});0===r.length?delete e[t]:e[t]=r}}var Lv=function CN(r,o){function e(e){var t=o(e);if(t<=0||null===t){var n=ve(e,r);return parseFloat(n)||0}return t}function i(o,e){return b(e,function(e,t){var n=ve(o,t),r=n===undefined?0:parseInt(n,10);return isNaN(r)?e:e+r},0)}return{set:function(e,t){if(!_(t)&&!t.match(/^[0-9]+$/))throw new Error(r+".set accepts only positive integer values. Value was "+t);var n=e.dom();fe(n)&&(n.style[r]=t+"px")},get:e,getOuter:e,aggregate:i,max:function(e,t,n){var r=i(e,n);return r<t?t-r:0}}}("height",function(e){var t=e.dom();return de(e)?t.getBoundingClientRect().height:t.offsetHeight}),Vv=function(r,e){return r.view(e).fold($([]),function(e){var t=r.owner(e),n=Vv(r,t);return[e].concat(n)})},Iv=/* */Object.freeze({view:function(e){return(e.dom()===j.document?k.none():k.from(e.dom().defaultView.frameElement)).map(yt.fromDom)},owner:function(e){return Ee(e)}}),Fv=function(e,t,n,r){var o=yt.fromDom(e.getBody()),i=yt.fromDom(e.getDoc());!function(e){e.dom().offsetWidth}(o);var a=ki(i).top(),u=Zp(yt.fromDom(n.startContainer),n.startOffset);t(i,a,u,r),u.cleanup()},Uv=function(e,t,n){var r=n.startContainer,o=n.startOffset,i=n.endContainer,a=n.endOffset;t(yt.fromDom(r),yt.fromDom(i));var u=e.dom.createRng();u.setStart(r,o),u.setEnd(i,a),e.selection.setRng(n)},jv=function(e,t,n){!function(e,t,n){return e.fire("ScrollIntoView",{elm:t,alignToTop:n}).isDefaultPrevented()}(e,t,n)&&(e.inline?sv:lv)(e,t,n)},qv=function(e,t,n){(e.inline?uv:cv)(e,t,n)},$v=function(e,t,n){var r,o,i=n;if(i.caretPositionFromPoint)(o=i.caretPositionFromPoint(e,t))&&((r=n.createRange()).setStart(o.offsetNode,o.offset),r.collapse(!0));else if(n.caretRangeFromPoint)r=n.caretRangeFromPoint(e,t);else if(i.body.createTextRange){r=i.body.createTextRange();try{r.moveToPoint(e,t),r.collapse(!0)}catch(a){r=function(e,n,t){var r,o,i;if(r=t.elementFromPoint(e,n),o=t.body.createTextRange(),r&&"HTML"!==r.tagName||(r=t.body),o.moveToElementText(r),0<(i=(i=Mn.toArray(o.getClientRects())).sort(function(e,t){return(e=Math.abs(Math.max(e.top-n,e.bottom-n)))-(t=Math.abs(Math.max(t.top-n,t.bottom-n)))})).length){n=(i[0].bottom+i[0].top)/2;try{return o.moveToPoint(e,n),o.collapse(!0),o}catch(a){}}return null}(e,t,n)}return function(e,t){var n=e&&e.parentElement?e.parentElement():null;return Ge.isContentEditableFalse(function(e,t,n){for(;e&&e!==t;){if(n(e))return e;e=e.parentNode}return null}(n,t,fv))?null:e}(r,n.body)}return r},Wv=function(n,e){return X(e,function(e){var t=n.fire("GetSelectionRange",{range:e});return t.range!==e?t.range:e})},Kv=be("element","width","rows"),Xv=be("element","cells"),Yv=be("x","y"),Gv=function(e){var o=Kv(ka(e),0,[]);return z(ma(e,"tr"),function(n,r){z(ma(n,"td,th"),function(e,t){!function(e,t,n,r,o){for(var i=hv(o,"rowspan"),a=hv(o,"colspan"),u=e.rows(),s=n;s<n+i;s++){u[s]||(u[s]=Xv(Ta(r),[]));for(var c=t;c<t+a;c++){u[s].cells()[c]=s===n&&c===t?o:ka(o)}}}(o,function(e,t,n){for(;r=t,o=n,i=void 0,((i=e.rows())[o]?i[o].cells():[])[r];)t++;var r,o,i;return t}(o,t,r),r,n,e)})}),Kv(o.element(),mv(o.rows()),o.rows())},Jv=function(e){return function(e,t){var n=ka(e.element()),r=yt.fromTag("tbody");return zi(r,t),Di(n,r),n}(e,function(e){return X(e.rows(),function(e){var t=X(e.cells(),function(e){var t=Ta(e);return pe(t,"colspan"),pe(t,"rowspan"),t}),n=ka(e.element());return zi(n,t),n})}(e))},Qv=function(n,e,r){return gv(n,e).bind(function(t){return gv(n,r).map(function(e){return function(e,t,n){var r=t.x(),o=t.y(),i=n.x(),a=n.y(),u=o<a?pv(e,r,o,i,a):pv(e,r,a,i,o);return Kv(e.element(),mv(u),u)}(n,t,e)})})},Zv=vv,ey=function(e){return v(e,function(e){var t=Wa(e);return t?[yt.fromDom(t)]:[]})},ty=function(e){return 1<vv(e).length},ny=Cv,ry=function(e){return Cv(Zv(e.selection.getSel()),yt.fromDom(e.getBody()))},oy=function(e,t){var n=ny(t,e);return 0<n.length?Nv(e,n):function(e,t){return 0<t.length&&t[0].collapsed?zv():Ev(e,t[0])}(e,t)},iy=function(e,t){if(void 0===t&&(t={}),t.get=!0,t.format=t.format||"html",t.selection=!0,(t=e.fire("BeforeGetContent",t)).isDefaultPrevented())return e.fire("GetContent",t),t.content;if("text"===t.format)return function(r){return k.from(r.selection.getRng()).map(function(e){var t=r.dom.add(r.getBody(),"div",{"data-mce-bogus":"all",style:"overflow: hidden; opacity: 0;"},e.cloneContents()),n=lu(t.innerText);return r.dom.remove(t),n}).getOr("")}(e);t.getInner=!0;var n=function(e,t){var n,r=e.selection.getRng(),o=e.dom.create("body"),i=e.selection.getSel(),a=Wv(e,Zv(i));return(n=t.contextual?oy(yt.fromDom(e.getBody()),a).dom():r.cloneContents())&&o.appendChild(n),e.selection.serializer.serialize(o,t)}(e,t);return"tree"===t.format?n:(t.content=e.selection.isCollapsed()?"":n,e.fire("GetContent",t),t.content)},ay=function(e,t){var n=t.collapsed,r=t.cloneRange(),o=Uu.fromRangeStart(t);return Rv(e,n,!0,r).each(function(e){n&&Uu.isAbove(o,e)||r.setStart(e.container(),e.offset())}),n||Rv(e,n,!1,r).each(function(e){r.setEnd(e.container(),e.offset())}),n&&r.collapse(!0),hh(t,r)?k.none():k.some(r)},uy=function(e,t,n){if((n=function(e,t){return(e=e||{format:"html"}).set=!0,e.selection=!0,e.content=t,e}(n,t)).no_events||!(n=e.fire("BeforeSetContent",n)).isDefaultPrevented()){var r=e.selection.getRng();!function(r,e){var t=k.from(e.firstChild).map(yt.fromDom),n=k.from(e.lastChild).map(yt.fromDom);r.deleteContents(),r.insertNode(e);var o=t.bind(ke).filter(zt).bind(Dv),i=n.bind(Te).filter(zt).bind(Dv);Ya(o,t.filter(zt),function(e,t){!function(e,t){e.insertData(0,t)}(t.dom(),e.dom().data),_i(e)}),Ya(i,n.filter(zt),function(e,t){var n=t.dom().length;t.dom().appendData(e.dom().data),r.setEnd(t.dom(),n),_i(e)}),r.collapse(!1)}(r,r.createContextualFragment(n.content)),e.selection.setRng(r),qv(e,r),n.no_events||e.fire("SetContent",n)}else e.fire("SetContent",n)};function sy(e){return!!e.select}function cy(e){return!(!e||!e.ownerDocument)&&Bt(yt.fromDom(e.ownerDocument),yt.fromDom(e))}function ly(u,s,e,c){function t(e,t){return uy(c,e,t)}function r(){var e,t,n=d();return!(n&&n.anchorNode&&n.focusNode)||((e=u.createRng()).setStart(n.anchorNode,n.anchorOffset),e.collapse(!0),(t=u.createRng()).setStart(n.focusNode,n.focusOffset),t.collapse(!0),e.compareBoundaryPoints(e.START_TO_START,t)<=0)}var n,o,l,f,i=function p(i,n){var a,u;return{selectorChangedWithUnbind:function(e,t){return a||(a={},u={},n.on("NodeChange",function(e){var n=e.element,r=i.getParents(n,null,i.getRoot()),o={};Mn.each(a,function(e,n){Mn.each(r,function(t){if(i.is(t,n))return u[n]||(Mn.each(e,function(e){e(!0,{node:t,selector:n,parents:r})}),u[n]=e),o[n]=e,!1})}),Mn.each(u,function(e,t){o[t]||(delete u[t],Mn.each(e,function(e){e(!1,{node:n,selector:t,parents:r})}))})})),a[e]||(a[e]=[]),a[e].push(t),{unbind:function(){Pv(a,e,t),Pv(u,e,t)}}}}}(u,c).selectorChangedWithUnbind,a=function(e){var t=h();t.collapse(!!e),m(t)},d=function(){return s.getSelection?s.getSelection():s.document.selection},h=function(){function e(e,t,n){try{return t.compareBoundaryPoints(e,n)}catch(r){return-1}}var t,n,r,o;if(!s)return null;if(null==(o=s.document))return null;if(c.bookmark!==undefined&&!1===ud(c)){var i=Qf(c);if(i.isSome())return i.map(function(e){return Wv(c,[e])[0]}).getOr(o.createRange())}try{(t=d())&&!Ge.isRestrictedNode(t.anchorNode)&&(n=0<t.rangeCount?t.getRangeAt(0):t.createRange?t.createRange():o.createRange())}catch(a){}return(n=(n=Wv(c,[n])[0])||(o.createRange?o.createRange():o.body.createTextRange())).setStart&&9===n.startContainer.nodeType&&n.collapsed&&(r=u.getRoot(),n.setStart(r,0),n.setEnd(r,0)),l&&f&&(0===e(n.START_TO_START,n,l)&&0===e(n.END_TO_END,n,l)?n=f:f=l=null),n},m=function(e,t){var n,r;if(function(e){return!!e&&(!!sy(e)||cy(e.startContainer)&&cy(e.endContainer))}(e)){var o=sy(e)?e:null;if(o){f=null;try{o.select()}catch(i){}}else{if(n=d(),e=c.fire("SetSelectionRange",{range:e,forward:t}).range,n){f=e;try{n.removeAllRanges(),n.addRange(e)}catch(i){}!1===t&&n.extend&&(n.collapse(e.endContainer,e.endOffset),n.extend(e.startContainer,e.startOffset)),l=0<n.rangeCount?n.getRangeAt(0):null}e.collapsed||e.startContainer!==e.endContainer||!n.setBaseAndExtent||Nn.ie||e.endOffset-e.startOffset<2&&e.startContainer.hasChildNodes()&&(r=e.startContainer.childNodes[e.startOffset])&&"IMG"===r.tagName&&(n.setBaseAndExtent(e.startContainer,e.startOffset,e.endContainer,e.endOffset),n.anchorNode===e.startContainer&&n.focusNode===e.endContainer||n.setBaseAndExtent(r,0,r,1)),c.fire("AfterSetSelectionRange",{range:e,forward:t})}}},g={bookmarkManager:null,controlSelection:null,dom:u,win:s,serializer:e,editor:c,collapse:a,setCursorLocation:function(e,t){var n=u.createRng();e?(n.setStart(e,t),n.setEnd(e,t),m(n),a(!1)):(sh(u,n,c.getBody(),!0),m(n))},getContent:function(e){return iy(c,e)},setContent:t,getBookmark:function(e,t){return n.getBookmark(e,t)},moveToBookmark:function(e){return n.moveToBookmark(e)},select:function(e,t){return function(r,e,o){return k.from(e).map(function(e){var t=r.nodeIndex(e),n=r.createRng();return n.setStart(e.parentNode,t),n.setEnd(e.parentNode,t+1),o&&(sh(r,n,e,!0),sh(r,n,e,!1)),n})}(u,e,t).each(m),e},isCollapsed:function(){var e=h(),t=d();return!(!e||e.item)&&(e.compareEndPoints?0===e.compareEndPoints("StartToEnd",e):!t||e.collapsed)},isForward:r,setNode:function(e){return t(u.getOuterHTML(e)),e},getNode:function(){return function(e,t){var n,r,o,i,a;return t?(r=t.startContainer,o=t.endContainer,i=t.startOffset,a=t.endOffset,n=t.commonAncestorContainer,!t.collapsed&&(r===o&&a-i<2&&r.hasChildNodes()&&(n=r.childNodes[i]),3===r.nodeType&&3===o.nodeType&&(r=r.length===i?Hv(r.nextSibling,!0):r.parentNode,o=0===a?Hv(o.previousSibling,!1):o.parentNode,r&&r===o))?r:n&&3===n.nodeType?n.parentNode:n):e}(c.getBody(),h())},getSel:d,setRng:m,getRng:h,getStart:function(e){return Bv(c.getBody(),h(),e)},getEnd:function(e){return Ov(c.getBody(),h(),e)},getSelectedBlocks:function(e,t){return function(e,t,n,r){var o,i,a=[];if(i=e.getRoot(),n=e.getParent(n||Bv(i,t,t.collapsed),e.isBlock),r=e.getParent(r||Ov(i,t,t.collapsed),e.isBlock),n&&n!==i&&a.push(n),n&&r&&n!==r)for(var u=new yi(o=n,i);(o=u.next())&&o!==r;)e.isBlock(o)&&a.push(o);return r&&n!==r&&r!==i&&a.push(r),a}(u,h(),e,t)},normalize:function(){var e=h(),t=d();if(ty(t)||!ch(c))return e;var n=ay(u,e);return n.each(function(e){m(e,r())}),n.getOr(e)},selectorChanged:function(e,t){return i(e,t),g},selectorChangedWithUnbind:i,getScrollContainer:function(){for(var e,t=u.getRoot();t&&"BODY"!==t.nodeName;){if(t.scrollHeight>t.clientHeight){e=t;break}t=t.parentNode}return e},scrollIntoView:function(e,t){return jv(c,e,t)},placeCaretAt:function(e,t){return m($v(e,t,c.getDoc()))},getBoundingClientRect:function(){var e=h();return e.collapsed?Ds.fromRangeStart(e).getClientRects()[0]:e.getBoundingClientRect()},destroy:function(){s=l=f=null,o.destroy()}};return n=Kp(g),o=Wp(g,c),g.bookmarkManager=n,g.controlSelection=o,g}function fy(e){return Uy(e)&&e.data[0]===cu}function dy(e){return Uy(e)&&e.data[e.data.length-1]===cu}function hy(e){return e.ownerDocument.createTextNode(cu)}function my(e,t){return e?function(e){if(Uy(e.previousSibling))return dy(e.previousSibling)||e.previousSibling.appendData(cu),e.previousSibling;if(Uy(e))return fy(e)||e.insertData(0,cu),e;var t=hy(e);return e.parentNode.insertBefore(t,e),t}(t):function(e){if(Uy(e.nextSibling))return fy(e.nextSibling)||e.nextSibling.insertData(0,cu),e.nextSibling;if(Uy(e))return dy(e)||e.appendData(cu),e;var t=hy(e);return e.nextSibling?e.parentNode.insertBefore(t,e.nextSibling):e.parentNode.appendChild(t),t}(t)}function gy(e,t){return Ge.isText(e.container())?my(t,e.container()):my(t,e.getNode())}function py(e,t){var n=t.get();return n&&e.container()===n&&Ra(n)}function vy(e,t){if(!t)return t;var n=t.container(),r=t.offset();return e?Ra(n)?Ge.isText(n.nextSibling)?Ds(n.nextSibling,0):Ds.after(n):Ba(t)?Ds(n,r+1):t:Ra(n)?Ge.isText(n.previousSibling)?Ds(n.previousSibling,n.previousSibling.data.length):Ds.before(n):Oa(t)?Ds(n,r-1):t}function yy(e,t){var n=bs(t,e);return n||e}function by(e,t,n){var r=Ky.normalizeForwards(n),o=yy(t,r.container());return Ky.findRootInline(e,o,r).fold(function(){return Pc.nextPosition(o,r).bind(d(Ky.findRootInline,e,o)).map(function(e){return Yy.before(e)})},k.none)}function Cy(e,t){return null===os(e,t)}function wy(e,t,n){return Ky.findRootInline(e,t,n).filter(d(Cy,t))}function xy(e,t,n){var r=Ky.normalizeBackwards(n);return wy(e,t,r).bind(function(e){return Pc.prevPosition(e,r).isNone()?k.some(Yy.start(e)):k.none()})}function zy(e,t,n){var r=Ky.normalizeForwards(n);return wy(e,t,r).bind(function(e){return Pc.nextPosition(e,r).isNone()?k.some(Yy.end(e)):k.none()})}function Ey(e,t,n){var r=Ky.normalizeBackwards(n),o=yy(t,r.container());return Ky.findRootInline(e,o,r).fold(function(){return Pc.prevPosition(o,r).bind(d(Ky.findRootInline,e,o)).map(function(e){return Yy.after(e)})},k.none)}function Ny(e){return!1===Ky.isRtl(Gy(e))}function Sy(e,t,n){return Xy([by,xy,zy,Ey],[e,t,n]).filter(Ny)}function ky(e){return e.fold($("before"),$("start"),$("end"),$("after"))}function Ty(e){return e.fold(Yy.before,Yy.before,Yy.after,Yy.after)}function Ay(n,e,r,t,o,i){return Ya(Ky.findRootInline(e,r,t),Ky.findRootInline(e,r,o),function(e,t){return e!==t&&Ky.hasSameParentBlock(r,e,t)?Yy.after(n?e:t):i}).getOr(i)}function My(e,t){return e.fold($(!0),function(e){return!function(e,t){return ky(e)===ky(t)&&Gy(e)===Gy(t)}(e,t)})}function Ry(e,t){return e?t.fold(q(k.some,Yy.start),k.none,q(k.some,Yy.after),k.none):t.fold(k.none,q(k.some,Yy.before),k.none,q(k.some,Yy.end))}function Dy(e,t,n,r){var o=Ky.normalizePosition(e,r),i=Sy(t,n,o);return Sy(t,n,o).bind(d(Ry,e)).orThunk(function(){return function(t,n,r,o,e){var i=Ky.normalizePosition(t,e);return Pc.fromPosition(t,r,i).map(d(Ky.normalizePosition,t)).fold(function(){return o.map(Ty)},function(e){return Sy(n,r,e).map(d(Ay,t,n,r,i,e)).filter(d(My,o))}).filter(Ny)}(e,t,n,i,r)})}function _y(e){return D(e.selection.getSel().modify)}function By(e,t,n){var r=e?1:-1;return t.setRng(Ds(n.container(),n.offset()+r).toRange()),t.getSel().modify("move",e?"forward":"backward","word"),!0}function Oy(e,t){var n=e.dom.createRng();n.setStart(t.container(),t.offset()),n.setEnd(t.container(),t.offset()),e.selection.setRng(n)}function Hy(e){return!1!==e.settings.inline_boundaries}function Py(e,t){e?t.setAttribute("data-mce-selected","inline-boundary"):t.removeAttribute("data-mce-selected")}function Ly(t,e,n){return $y(e,n).map(function(e){return Oy(t,e),n})}function Vy(e,t,n){return function(){return!!Hy(t)&&tb(e,t)}}var Iy,Fy,Uy=Ge.isText,jy=d(my,!0),qy=d(my,!1),$y=function(n,e){return e.fold(function(e){qs.remove(n.get());var t=jy(e);return n.set(t),k.some(Ds(t,t.length-1))},function(e){return Pc.firstPositionIn(e).map(function(e){if(py(e,n))return Ds(n.get(),1);qs.remove(n.get());var t=gy(e,!0);return n.set(t),Ds(t,1)})},function(e){return Pc.lastPositionIn(e).map(function(e){if(py(e,n))return Ds(n.get(),n.get().length-1);qs.remove(n.get());var t=gy(e,!1);return n.set(t),Ds(t,t.length-1)})},function(e){qs.remove(n.get());var t=qy(e);return n.set(t),k.some(Ds(t,1))})},Wy=/[\u0591-\u07FF\uFB1D-\uFDFF\uFE70-\uFEFC]/,Ky={isInlineTarget:function(e,t){return we(yt.fromDom(t),If(e))},findRootInline:function(e,t,n){var r=function(e,t,n){return y(Xi.DOM.getParents(n.container(),"*",t),e)}(e,t,n);return k.from(r[r.length-1])},isRtl:function(e){return"rtl"===Xi.DOM.getStyle(e,"direction",!0)||function(e){return Wy.test(e)}(e.textContent)},isAtZwsp:function(e){return Ba(e)||Oa(e)},normalizePosition:vy,normalizeForwards:d(vy,!0),normalizeBackwards:d(vy,!1),hasSameParentBlock:function(e,t,n){var r=bs(t,e),o=bs(n,e);return r&&r===o}},Xy=function(e,t){for(var n=0;n<e.length;n++){var r=e[n].apply(null,t);if(r.isSome())return r}return k.none()},Yy=jf([{before:["element"]},{start:["element"]},{end:["element"]},{after:["element"]}]),Gy=function(e){return e.fold(W,W,W,W)},Jy=Sy,Qy=Dy,Zy=(d(Dy,!1),d(Dy,!0),Ty),eb=function(e){return e.fold(Yy.start,Yy.start,Yy.end,Yy.end)},tb=function(e,t){var n=t.selection.getRng(),r=e?Ds.fromRangeEnd(n):Ds.fromRangeStart(n);return!!_y(t)&&(e&&Ba(r)?By(!0,t.selection,r):!(e||!Oa(r))&&By(!1,t.selection,r))},nb={move:function(e,t,n){return function(){return!!Hy(e)&&function(t,n,e){var r=t.getBody(),o=Ds.fromRangeStart(t.selection.getRng()),i=d(Ky.isInlineTarget,t);return Qy(e,i,r,o).bind(function(e){return Ly(t,n,e)})}(e,t,n).isSome()}},moveNextWord:d(Vy,!0),movePrevWord:d(Vy,!1),setupSelectedState:function(t){var n=Je(null),r=d(Ky.isInlineTarget,t);return t.on("NodeChange",function(e){Hy(t)&&(function(e,t,n){var r=y(t.select('*[data-mce-selected="inline-boundary"]'),e),o=y(n,e);z(x(r,o),d(Py,!1)),z(x(o,r),d(Py,!0))}(r,t.dom,e.parents),function(e,t){if(e.selection.isCollapsed()&&!0!==e.composing&&t.get()){var n=Ds.fromRangeStart(e.selection.getRng());Ds.isTextPosition(n)&&!1===Ky.isAtZwsp(n)&&(Oy(e,qs.removeAndReposition(t.get(),n)),t.set(null))}}(t,n),function(n,r,o,e){if(r.selection.isCollapsed()){var t=y(e,n);z(t,function(e){var t=Ds.fromRangeStart(r.selection.getRng());Jy(n,r.getBody(),t).bind(function(e){return Ly(r,o,e)})})}}(r,t,n,e.parents))}),n},setCaretPosition:Oy};(Fy=Iy=Iy||{})[Fy.Br=0]="Br",Fy[Fy.Block=1]="Block",Fy[Fy.Wrap=2]="Wrap",Fy[Fy.Eol=3]="Eol";function rb(e,t){return e===Ms.Backwards?t.reverse():t}function ob(e,t,n,r){for(var o,i,a,u,s,c,l=rc(n),f=r,d=[];f&&(s=l,c=f,o=t===Ms.Forwards?s.next(c):s.prev(c));){if(Ge.isBr(o.getNode(!1)))return t===Ms.Forwards?{positions:rb(t,d).concat([o]),breakType:Iy.Br,breakAt:k.some(o)}:{positions:rb(t,d),breakType:Iy.Br,breakAt:k.some(o)};if(o.isVisible()){if(e(f,o)){var h=(i=t,a=f,u=o,Ge.isBr(u.getNode(i===Ms.Forwards))?Iy.Br:!1===Cs(a,u)?Iy.Block:Iy.Wrap);return{positions:rb(t,d),breakType:h,breakAt:k.some(o)}}d.push(o),f=o}else f=o}return{positions:rb(t,d),breakType:Iy.Eol,breakAt:k.none()}}function ib(n,r,o,e){return r(o,e).breakAt.map(function(e){var t=r(o,e).positions;return n===Ms.Backwards?t.concat(e):[e].concat(t)}).getOr([])}function ab(e,i){return b(e,function(e,o){return e.fold(function(){return k.some(o)},function(r){return Ya(E(r.getClientRects()),E(o.getClientRects()),function(e,t){var n=Math.abs(i-e.left);return Math.abs(i-t.left)<=n?o:r}).or(e)})},k.none())}function ub(t,e){return E(e.getClientRects()).bind(function(e){return ab(t,e.left)})}function sb(e,t,n,r){var o=e===Ms.Forwards,i=o?Ph:Lh;if(!r.collapsed){var a=bx(r);if(yx(a))return Zh(e,t,a,e===Ms.Backwards,!0)}var u=function(e){return Ma(e.startContainer)}(r),s=Ss(e,t.getBody(),r);if(i(s))return em(t,s.getNode(!o));var c=Ky.normalizePosition(o,n(s));if(!c)return u?r:null;if(i(c))return Zh(e,t,c.getNode(!o),o,!0);var l=n(c);return l&&i(l)&&As(c,l)?Zh(e,t,l.getNode(!o),o,!0):u?nm(t,c.toRange(),!0):null}function cb(e,t,n,r){var o,i,a,u,s,c,l,f,d;if(d=bx(r),o=Ss(e,t.getBody(),r),i=n(t.getBody(),Ih(1),o),a=y(i,Fh(1)),s=kn.last(o.getClientRects()),(Ph(o)||Oh(o))&&(d=o.getNode()),(Lh(o)||Hh(o))&&(d=o.getNode(!0)),!s)return null;if(c=s.left,(u=$h(a,c))&&yx(u.node))return l=Math.abs(c-u.left),f=Math.abs(c-u.right),Zh(e,t,u.node,l<f,!0);if(d){var h=function(e,t,n,r){function o(e){return kn.last(e.getClientRects())}var i,a,u,s,c,l,f=rc(t),d=[],h=0;l=o(s=1===e?(i=f.next,a=qa,u=ja,Ds.after(r)):(i=f.prev,a=ja,u=qa,Ds.before(r)));do{if(s.isVisible()&&!u(c=o(s),l)){if(0<d.length&&a(c,kn.last(d))&&h++,(c=Ia(c)).position=s,c.line=h,n(c))return d;d.push(c)}}while(s=i(s));return d}(e,t.getBody(),Ih(1),d);if(u=$h(y(h,Fh(1)),c))return nm(t,u.position.toRange(),!0);if(u=kn.last(y(h,Fh(0))))return nm(t,u.position.toRange(),!0)}}function lb(e,t,n){var r,o,i=rc(e.getBody()),a=d(Ts,i.next),u=d(Ts,i.prev);if(n.collapsed&&e.settings.forced_root_block){if(!(r=e.dom.getParent(n.startContainer,"PRE")))return;(1===t?a(Ds.fromRangeStart(n)):u(Ds.fromRangeStart(n)))||(o=function(e){var t=e.dom.create(mf(e));return(!Nn.ie||11<=Nn.ie)&&(t.innerHTML='<br data-mce-bogus="1">'),t}(e),1===t?e.$(r).after(o):e.$(r).before(o),e.selection.select(o,!0),e.selection.collapse())}}function fb(t,n){return function(){var e=function(e,t){var n,r=rc(e.getBody()),o=d(Ts,r.next),i=d(Ts,r.prev),a=t?Ms.Forwards:Ms.Backwards,u=t?o:i,s=e.selection.getRng();return(n=sb(a,e,u,s))?n:(n=lb(e,a,s))||null}(t,n);return!!e&&(t.selection.setRng(e),!0)}}function db(t,n){return function(){var e=function(e,t){var n,r=t?1:-1,o=t?Xm:Km,i=e.selection.getRng();return(n=cb(r,e,o,i))?n:(n=lb(e,r,i))||null}(t,n);return!!e&&(t.selection.setRng(e),!0)}}function hb(n,r){return function(){var e=r?Ds.fromRangeEnd(n.selection.getRng()):Ds.fromRangeStart(n.selection.getRng()),t=r?gx(n.getBody(),e):mx(n.getBody(),e);return(r?N(t.positions):E(t.positions)).filter(function(t){return function(e){return t?Lh(e):Ph(e)}}(r)).fold($(!1),function(e){return n.selection.setRng(e.toRange()),!0})}}function mb(e,t,n,r,o){var i=ma(yt.fromDom(n),"td,th,caption").map(function(e){return e.dom()});return function(e,o,i){return b(e,function(e,r){return e.fold(function(){return k.some(r)},function(e){var t=Math.sqrt(Math.abs(e.x-o)+Math.abs(e.y-i)),n=Math.sqrt(Math.abs(r.x-o)+Math.abs(r.y-i));return k.some(n<t?r:e)})},k.none())}(y(function(n,e){return v(e,function(e){var t=function(e,t){return{left:e.left-t,top:e.top-t,right:e.right+2*t,bottom:e.bottom+2*t,width:e.width+t,height:e.height+t}}(Ia(e.getBoundingClientRect()),-1);return[{x:t.left,y:n(t),cell:e},{x:t.right,y:n(t),cell:e}]})}(e,i),function(e){return t(e,o)}),r,o).map(function(e){return e.cell})}function gb(t,n){return E(n.getClientRects()).bind(function(e){return Cx(t,e.left,e.top)}).bind(function(e){return ub(function(t){return Pc.lastPositionIn(t).map(function(e){return mx(t,e).positions.concat(e)}).getOr([])}(e),n)})}function pb(t,n){return N(n.getClientRects()).bind(function(e){return wx(t,e.left,e.top)}).bind(function(e){return ub(function(t){return Pc.firstPositionIn(t).map(function(e){return[e].concat(gx(t,e).positions)}).getOr([])}(e),n)})}function vb(e,t){e.selection.setRng(t),qv(e,t)}function yb(e,t,n){var r=e(t,n);return function(e){return e.breakType===Iy.Wrap&&0===e.positions.length}(r)||!Ge.isBr(n.getNode())&&function(e){return e.breakType===Iy.Br&&1===e.positions.length}(r)?!function(t,n,e){return e.breakAt.map(function(e){return t(n,e).breakAt.isSome()}).getOr(!1)}(e,t,r):r.breakAt.isNone()}function bb(e,t,n,r){var o=e.selection.getRng(),i=t?1:-1;if(hs()&&function(e,t,n){var r=Ds.fromRangeStart(t);return Pc.positionIn(!e,n).map(function(e){return e.isEqual(r)}).getOr(!1)}(t,o,n)){var a=Zh(i,e,n,!t,!0);return vb(e,a),!0}return!1}function Cb(e,t){var n=t.getNode(e);return Ge.isElement(n)&&"TABLE"===n.nodeName?k.some(n):k.none()}function wb(n,r,o){var e=Cb(!!r,o),i=!1===r;e.fold(function(){return vb(n,o.toRange())},function(t){return Pc.positionIn(i,n.getBody()).filter(function(e){return e.isEqual(o)}).fold(function(){return vb(n,o.toRange())},function(e){return function(n,r,o,e){var i=mf(r);i?r.undoManager.transact(function(){var e=yt.fromTag(i);me(e,gf(r)),Di(e,yt.fromTag("br")),n?wi(yt.fromDom(o),e):Ci(yt.fromDom(o),e);var t=r.dom.createRng();t.setStart(e.dom(),0),t.setEnd(e.dom(),0),vb(r,t)}):vb(r,e.toRange())}(r,n,t,o)})})}function xb(e,t,n,r){var o=e.selection.getRng(),i=Ds.fromRangeStart(o),a=e.getBody();if(!t&&xx(r,i)){var u=function(t,n,e){return gb(n,e).orThunk(function(){return E(e.getClientRects()).bind(function(e){return ab(px(t,Ds.before(n)),e.left)})}).getOr(Ds.before(n))}(a,n,i);return wb(e,t,u),!0}if(t&&zx(r,i)){u=function(t,n,e){return pb(n,e).orThunk(function(){return E(e.getClientRects()).bind(function(e){return ab(vx(t,Ds.after(n)),e.left)})}).getOr(Ds.after(n))}(a,n,i);return wb(e,t,u),!0}return!1}function zb(t,n){return function(){return k.from(t.dom.getParent(t.selection.getNode(),"td,th")).bind(function(e){return k.from(t.dom.getParent(e,"table")).map(function(e){return bb(t,n,e)})}).getOr(!1)}}function Eb(n,r){return function(){return k.from(n.dom.getParent(n.selection.getNode(),"td,th")).bind(function(t){return k.from(n.dom.getParent(t,"table")).map(function(e){return xb(n,r,e,t)})}).getOr(!1)}}function Nb(e){return h(["figcaption"],ie(e))}function Sb(e){var t=j.document.createRange();return t.setStartBefore(e.dom()),t.setEndBefore(e.dom()),t}function kb(e,t,n){n?Di(e,t):xi(e,t)}function Tb(e,t,n,r){return""===t?function(e,t){var n=yt.fromTag("br");return kb(e,n,t),Sb(n)}(e,r):function(e,t,n,r){var o=yt.fromTag(n),i=yt.fromTag("br");return me(o,r),Di(o,i),kb(e,o,t),Sb(i)}(e,r,t,n)}function Ab(e,t,n){return t?function(e,t){return gx(e,t).breakAt.isNone()}(e.dom(),n):function(e,t){return mx(e,t).breakAt.isNone()}(e.dom(),n)}function Mb(t,n){var r=yt.fromDom(t.getBody()),o=Ds.fromRangeStart(t.selection.getRng()),i=mf(t),a=gf(t);return function(e,t){var n=d(ze,t);return ba(yt.fromDom(e.container()),Vn,n).filter(Nb)}(o,r).exists(function(){if(Ab(r,n,o)){var e=Tb(r,i,a,n);return t.selection.setRng(e),!0}return!1})}function Rb(e,t){return function(){return!!e.selection.isCollapsed()&&Mb(e,t)}}function Db(e,t){return v(function(e){return X(e,function(e){return bd({shiftKey:!1,altKey:!1,ctrlKey:!1,metaKey:!1,keyCode:0,action:i},e)})}(e),function(e){return function(e,t){return t.keyCode===e.keyCode&&t.shiftKey===e.shiftKey&&t.altKey===e.altKey&&t.ctrlKey===e.ctrlKey&&t.metaKey===e.metaKey}(e,t)?[e]:[]})}function _b(e,t){return{from:$(e),to:$(t)}}function Bb(e,t){var n=yt.fromDom(e),r=yt.fromDom(t.container());return kx(n,r).map(function(e){return function(e,t){return{block:$(e),position:$(t)}}(e,t)})}function Ob(t,n,e){var r=Bb(t,Ds.fromRangeStart(e)),o=r.bind(function(e){return Pc.fromPosition(n,t,e.position()).bind(function(e){return Bb(t,e).map(function(e){return function(t,n,r){return Ge.isBr(r.position().getNode())&&!1===kg(r.block())?Pc.positionIn(!1,r.block().dom()).bind(function(e){return e.isEqual(r.position())?Pc.fromPosition(n,t,e).bind(function(e){return Bb(t,e)}):k.some(r)}).getOr(r):r}(t,n,e)})})});return Ya(r,o,_b).filter(function(e){return function(e){return!1===ze(e.from().block(),e.to().block())}(e)&&function(e){return Se(e.from().block()).bind(function(t){return Se(e.to().block()).filter(function(e){return ze(t,e)})}).isSome()}(e)&&function(e){return!1===Ge.isContentEditableFalse(e.from().block().dom())&&!1===Ge.isContentEditableFalse(e.to().block().dom())}(e)})}function Hb(e){var t=function(e){var t=Re(e);return p(t,Vn).fold(function(){return t},function(e){return t.slice(0,e)})}(e);return z(t,_i),t}function Pb(e,t){var n=fh(t,e);return g(n.reverse(),kg).each(_i)}function Lb(e,t,n,r){if(kg(n))return bg(n),Pc.firstPositionIn(n.dom());(function(e){return 0===y(Ae(e),function(e){return!kg(e)}).length})(r)&&kg(t)&&Ci(r,yt.fromTag("br"));var o=Pc.prevPosition(n.dom(),Ds.before(r.dom()));return z(Hb(t),function(e){Ci(r,e)}),Pb(e,t),o}function Vb(e,t,n){if(kg(n))return _i(n),kg(t)&&bg(t),Pc.firstPositionIn(t.dom());var r=Pc.lastPositionIn(n.dom());return z(Hb(t),function(e){Di(n,e)}),Pb(e,t),r}function Ib(e,t){return Bt(t,e)?function(e,t){var n=fh(t,e);return k.from(n[n.length-1])}(t,e):k.none()}function Fb(e,t){Pc.positionIn(e,t.dom()).map(function(e){return e.getNode()}).map(yt.fromDom).filter(_n).each(_i)}function Ub(e,t,n){return Fb(!0,t),Fb(!1,n),Ib(t,n).fold(d(Vb,e,t,n),d(Lb,e,t,n))}function jb(e,t){var n=yt.fromDom(t),r=d(ze,e);return ya(n,$n,r).isSome()}function qb(e,t){var n=Pc.prevPosition(e.dom(),Ds.fromRangeStart(t)).isNone(),r=Pc.nextPosition(e.dom(),Ds.fromRangeEnd(t)).isNone();return!function(e,t){return jb(e,t.startContainer)||jb(e,t.endContainer)}(e,t)&&n&&r}function $b(e){var t=yt.fromDom(e.getBody()),n=e.selection.getRng();return qb(t,n)?function(e){return e.setContent(""),e.selection.setCursorLocation(),!0}(e):function(n,r){var o=r.getRng();return Ya(kx(n,yt.fromDom(o.startContainer)),kx(n,yt.fromDom(o.endContainer)),function(e,t){return!1===ze(e,t)&&(o.deleteContents(),Rx(n,!0,e,t).each(function(e){r.setRng(e.toRange())}),!0)}).getOr(!1)}(t,e.selection)}function Wb(e){return ks(e).exists(_n)}function Kb(e,t,n){var r=y(fh(yt.fromDom(n.container()),t),Vn),o=E(r).getOr(t);return Pc.fromPosition(e,o.dom(),n).filter(Wb)}function Xb(e,t){return ks(t).exists(_n)||Kb(!0,e,t).isSome()}function Yb(e,t){return function(e){return k.from(e.getNode(!0)).map(yt.fromDom)}(t).exists(_n)||Kb(!1,e,t).isSome()}function Gb(e,t,n,r){var o=r.getNode(!1===t);return kx(yt.fromDom(e),yt.fromDom(n.getNode())).map(function(e){return kg(e)?Hx.remove(e.dom()):Hx.moveToElement(o)}).orThunk(function(){return k.some(Hx.moveToElement(o))})}function Jb(t,n,r){return Pc.fromPosition(n,t,r).bind(function(e){return function(e){return $n(yt.fromDom(e))||Un(yt.fromDom(e))}(e.getNode())?k.none():function(t,e,n,r){function o(e){return Dn(yt.fromDom(e))&&!Cs(n,r,t)}return Ns(!e,n).fold(function(){return Ns(e,r).fold($(!1),o)},o)}(t,n,r,e)?k.none():n&&Ge.isContentEditableFalse(e.getNode())?Gb(t,n,r,e):!1===n&&Ge.isContentEditableFalse(e.getNode(!0))?Gb(t,n,r,e):n&&Lh(r)?k.some(Hx.moveToPosition(e)):!1===n&&Ph(r)?k.some(Hx.moveToPosition(e)):k.none()})}function Qb(t,e,n){return function(e,t){var n=t.getNode(!1===e),r=e?"after":"before";return Ge.isElement(n)&&n.getAttribute("data-mce-caret")===r}(e,n)?function(e,t){return e&&Ge.isContentEditableFalse(t.nextSibling)?k.some(Hx.moveToElement(t.nextSibling)):!1===e&&Ge.isContentEditableFalse(t.previousSibling)?k.some(Hx.moveToElement(t.previousSibling)):k.none()}(e,n.getNode(!1===e)).fold(function(){return Jb(t,e,n)},k.some):Jb(t,e,n).bind(function(e){return function(t,n,e){return e.fold(function(e){return k.some(Hx.remove(e))},function(e){return k.some(Hx.moveToElement(e))},function(e){return Cs(n,e,t)?k.none():k.some(Hx.moveToPosition(e))})}(t,n,e)})}function Zb(e,t){return k.from(Px(e.getBody(),t))}function eC(t,n){var e=t.selection.getNode();return Zb(t,e).filter(Ge.isContentEditableFalse).fold(function(){return function(e,t,n){var r=Es(t?1:-1,e,n),o=Ds.fromRangeStart(r),i=yt.fromDom(e);return!1===t&&Lh(o)?k.some(Hx.remove(o.getNode(!0))):t&&Ph(o)?k.some(Hx.remove(o.getNode())):!1===t&&Ph(o)&&Yb(i,o)?Bx(i,o).map(function(e){return Hx.remove(e.getNode())}):t&&Lh(o)&&Xb(i,o)?Ox(i,o).map(function(e){return Hx.remove(e.getNode())}):Qb(e,t,o)}(t.getBody(),n,t.selection.getRng()).map(function(e){return e.fold(function(t,n){return function(e){return t._selectionOverrides.hideFakeCaret(),Tg(t,n,yt.fromDom(e)),!0}}(t,n),function(n,r){return function(e){var t=r?Ds.before(e):Ds.after(e);return n.selection.setRng(t.toRange()),!0}}(t,n),function(t){return function(e){return t.selection.setRng(e.toRange()),!0}}(t))}).getOr(!1)},function(){return!0})}function tC(e,t){var n=e.selection.getNode();return!!Ge.isContentEditableFalse(n)&&Zb(e,n.parentNode).filter(Ge.isContentEditableFalse).fold(function(){return function(e){z(ma(e,".mce-offscreen-selection"),_i)}(yt.fromDom(e.getBody())),Tg(e,t,yt.fromDom(e.selection.getNode())),Tx(e),!0},function(){return!0})}function nC(e,t,n,r,o,i){var a=Zh(r,e,i.getNode(!o),o,!0);if(t.collapsed){var u=t.cloneRange();o?u.setEnd(a.startContainer,a.startOffset):u.setStart(a.endContainer,a.endOffset),u.deleteContents()}else t.deleteContents();return e.selection.setRng(a),function(e,t){Ge.isText(t)&&0===t.data.length&&e.remove(t)}(e.dom,n),!0}function rC(t,n){return function(e){return $y(n,e).map(function(e){return nb.setCaretPosition(t,e),!0}).getOr(!1)}}function oC(e,t,n,r){var o=e.getBody(),i=d(Ky.isInlineTarget,e);e.undoManager.ignore(function(){e.selection.setRng(function(e,t){var n=j.document.createRange();return n.setStart(e.container(),e.offset()),n.setEnd(t.container(),t.offset()),n}(n,r)),e.execCommand("Delete"),Jy(i,o,Ds.fromRangeStart(e.selection.getRng())).map(eb).map(rC(e,t))}),e.nodeChanged()}function iC(n,r,o,i){var a=function(e,t){var n=bs(t,e);return n||e}(n.getBody(),i.container()),u=d(Ky.isInlineTarget,n),s=Jy(u,a,i);return s.bind(function(e){return o?e.fold($(k.some(eb(e))),k.none,$(k.some(Zy(e))),k.none):e.fold(k.none,$(k.some(Zy(e))),k.none,$(k.some(eb(e))))}).map(rC(n,r)).getOrThunk(function(){var t=Pc.navigate(o,a,i),e=t.bind(function(e){return Jy(u,a,e)});return s.isSome()&&e.isSome()?Ky.findRootInline(u,a,i).map(function(e){return!!function(o){return Ya(Pc.firstPositionIn(o),Pc.lastPositionIn(o),function(e,t){var n=Ky.normalizePosition(!0,e),r=Ky.normalizePosition(!1,t);return Pc.nextPosition(o,n).map(function(e){return e.isEqual(r)}).getOr(!0)}).getOr(!0)}(e)&&(Tg(n,o,yt.fromDom(e)),!0)}).getOr(!1):e.bind(function(e){return t.map(function(e){return o?oC(n,r,i,e):oC(n,r,e,i),!0})}).getOr(!1)})}function aC(e){return 1===Re(e).length}function uC(e,t,n,r){var o=d(qm,t),i=X(y(r,o),function(e){return e.dom()});if(0===i.length)Tg(t,e,n);else{var a=function(e,t){var n=Pm(!1),r=Um(t,n.dom());return Ci(yt.fromDom(e),n),_i(yt.fromDom(e)),Ds(r,0)}(n.dom(),i);t.selection.setRng(a.toRange())}}function sC(n,r){var e=yt.fromDom(n.getBody()),t=yt.fromDom(n.selection.getStart()),o=y(function(e,t){var n=fh(t,e);return p(n,Vn).fold($(n),function(e){return n.slice(0,e)})}(e,t),aC);return N(o).map(function(e){var t=Ds.fromRangeStart(n.selection.getRng());return!(!Ax(r,t,e.dom())||function(e){return rs(e.dom())&&Om(e.dom())}(e))&&(uC(r,n,e,o),!0)}).getOr(!1)}function cC(e,t){return{start:$(e),end:$(t)}}function lC(e,t){return xa(yt.fromDom(e),"td,th",t)}function fC(e,t){return Ca(e,"table",t)}function dC(e){return!1===ze(e.start(),e.end())}function hC(e,n){return fC(e.start(),n).bind(function(t){return fC(e.end(),n).bind(function(e){return function(e,t){return e?k.some(t):k.none()}(ze(t,e),t)})})}function mC(e){return ma(e,"td,th")}function gC(n,e){var t=lC(e.startContainer,n),r=lC(e.endContainer,n);return e.collapsed?k.none():Ya(t,r,cC).fold(function(){return t.fold(function(){return r.bind(function(t){return fC(t,n).bind(function(e){return E(mC(e)).map(function(e){return cC(e,t)})})})},function(t){return fC(t,n).bind(function(e){return N(mC(e)).map(function(e){return cC(t,e)})})})},function(e){return qx(n,e)?k.none():function(t,e){return fC(t.start(),e).bind(function(e){return N(mC(e)).map(function(e){return cC(t.start(),e)})})}(e,n)})}function pC(t,e){return hC(t,e).map(function(e){return function(e,t,n){return{rng:$(e),table:$(t),cells:$(n)}}(t,e,mC(e))})}function vC(e,t){var n=function(t){return function(e){return ze(t,e)}}(e);return function(e,t){var n=lC(e.startContainer,t),r=lC(e.endContainer,t);return Ya(n,r,cC).filter(dC).filter(function(e){return qx(t,e)}).orThunk(function(){return gC(t,e)})}(t,n).bind(function(e){return pC(e,n)})}function yC(e,t){return p(e,function(e){return ze(e,t)})}function bC(n){return function(n){return Ya(yC(n.cells(),n.rng().start()),yC(n.cells(),n.rng().end()),function(e,t){return n.cells().slice(e,t+1)})}(n).map(function(e){var t=n.cells();return e.length===t.length?jx.removeTable(n.table()):jx.emptyCells(e)})}function CC(e,t){return z(t,bg),e.selection.setCursorLocation(t[0].dom(),0),!0}function wC(e,t){return Tg(e,!1,t),!0}function xC(t,e,n){return function(e,t){return vC(e,t).bind(bC)}(e,n).map(function(e){return e.fold(d(wC,t),d(CC,t))})}function zC(t,e,n,r){return $x(e,r).fold(function(){return xC(t,e,n)},function(e){return function(e,t){return Wx(e,t)}(t,e)}).getOr(!1)}function EC(e,t){return g(fh(t,e),$n)}function NC(t,n,r,o,i){return Pc.navigate(r,t.getBody(),i).bind(function(e){return function(e,n,r,o){return Pc.firstPositionIn(e.dom()).bind(function(t){return Pc.lastPositionIn(e.dom()).map(function(e){return n?r.isEqual(t)&&o.isEqual(e):r.isEqual(e)&&o.isEqual(t)})}).getOr(!0)}(o,r,i,e)?function(e,t){return Wx(e,t)}(t,o):function(e,t,n){return $x(e,yt.fromDom(n.getNode())).map(function(e){return!1===ze(e,t)})}(n,o,e)}).or(k.some(!0))}function SC(t,n,r,e){var o=Ds.fromRangeStart(t.selection.getRng());return EC(r,e).bind(function(e){return kg(e)?Wx(t,e):function(e,t,n,r,o){return Pc.navigate(n,e.getBody(),o).bind(function(e){return EC(t,yt.fromDom(e.getNode())).map(function(e){return!1===ze(e,r)})})}(t,r,n,e,o)}).getOr(!1)}function kC(e,t){return e?Oh(t):Hh(t)}function TC(t,n,e){var r=yt.fromDom(t.getBody());return $x(r,e).fold(function(){return SC(t,n,r,e)||function(e,t){var n=Ds.fromRangeStart(e.selection.getRng());return kC(t,n)||Pc.fromPosition(t,e.getBody(),n).map(function(e){return kC(t,e)}).getOr(!1)}(t,n)},function(e){return function(e,t,n,r){var o=Ds.fromRangeStart(e.selection.getRng());return kg(r)?Wx(e,r):NC(e,n,t,r,o)}(t,n,r,e).getOr(!1)})}function AC(e){var t=parseInt(e,10);return isNaN(t)?0:t}function MC(e,t){return(e||function(e){return"table"===ie(e)}(t)?"margin":"padding")+("rtl"===ve(t,"direction")?"-right":"-left")}function RC(e){var t=Yx(e);return!0!==e.readonly&&(1<t.length||function(r,e){return w(e,function(e){var t=MC(Hf(r),e),n=ye(e,t).map(AC).getOr(0);return"false"!==r.dom.getContentEditable(e.dom())&&0<n})}(e,t))}function DC(e){return Fn(e)||Un(e)}function _C(e,t){var n=e.dom,r=e.selection,o=e.formatter,i=Pf(e),a=/[a-z%]+$/i.exec(i)[0],u=parseInt(i,10),s=Hf(e),c=mf(e);e.queryCommandState("InsertUnorderedList")||e.queryCommandState("InsertOrderedList")||""!==c||n.getParent(r.getNode(),n.isBlock)||o.apply("div"),z(Yx(e),function(e){!function(e,t,n,r,o,i){var a=MC(n,yt.fromDom(i));if("outdent"===t){var u=Math.max(0,AC(i.style[a])-r);e.setStyle(i,a,u?u+o:"")}else{u=AC(i.style[a])+r+o;e.setStyle(i,a,u)}}(n,t,s,u,a,e.dom())})}function BC(e,t,n){return Pc.navigateIgnore(e,t,n,wh)}function OC(e,t){return g(fh(yt.fromDom(t.container()),e),Vn)}function HC(e,n,r){return BC(e,n.dom(),r).forall(function(t){return OC(n,r).fold(function(){return!1===Cs(t,r,n.dom())},function(e){return!1===Cs(t,r,n.dom())&&Bt(e,yt.fromDom(t.container()))})})}function PC(t,n,r){return OC(n,r).fold(function(){return BC(t,n.dom(),r).forall(function(e){return!1===Cs(e,r,n.dom())})},function(e){return BC(t,e.dom(),r).isNone()})}function LC(e){return k.from(e.dom.getParent(e.selection.getStart(!0),e.dom.isBlock))}function VC(e,t){return e&&e.parentNode&&e.parentNode.nodeName===t}function IC(e){return e&&/^(OL|UL|LI)$/.test(e.nodeName)}function FC(e){var t=e.parentNode;return/^(LI|DT|DD)$/.test(t.nodeName)?t:e}function UC(e,t,n){for(var r=e[n?"firstChild":"lastChild"];r&&!Ge.isElement(r);)r=r[n?"nextSibling":"previousSibling"];return r===t}function jC(e){e.innerHTML='<br data-mce-bogus="1">'}function qC(e,t){return e.nodeName===t||e.previousSibling&&e.previousSibling.nodeName===t}function $C(e,t){return t&&e.isBlock(t)&&!/^(TD|TH|CAPTION|FORM)$/.test(t.nodeName)&&!/^(fixed|absolute)/i.test(t.style.position)&&"true"!==e.getContentEditable(t)}function WC(e,t,n){return!1===Ge.isText(t)?n:e?1===n&&t.data.charAt(n-1)===cu?0:n:n===t.data.length-1&&t.data.charAt(n)===cu?t.data.length:n}function KC(e,t){var n,r,o=e.getRoot();for(n=t;n!==o&&"false"!==e.getContentEditable(n);)"true"===e.getContentEditable(n)&&(r=n),n=n.parentNode;return n!==o?r:o}function XC(e,t){var n=mf(e);n&&n.toLowerCase()===t.tagName.toLowerCase()&&e.dom.setAttribs(t,gf(e))}function YC(e,t,n){var r=e.create("span",{},"&nbsp;");n.parentNode.insertBefore(r,n),t.scrollIntoView(r),e.remove(r)}function GC(e,t,n,r){var o=e.createRng();r?(o.setStartBefore(n),o.setEndBefore(n)):(o.setStartAfter(n),o.setEndAfter(n)),t.setRng(o)}function JC(e,t){var n,r,o=e.selection,i=e.dom,a=o.getRng();ay(i,a).each(function(e){a.setStart(e.startContainer,e.startOffset),a.setEnd(e.endContainer,e.endOffset)});var u=a.startOffset,s=a.startContainer;if(1===s.nodeType&&s.hasChildNodes()){var c=u>s.childNodes.length-1;s=s.childNodes[Math.min(u,s.childNodes.length-1)]||s,u=c&&3===s.nodeType?s.nodeValue.length:0}var l=i.getParent(s,i.isBlock),f=l?i.getParent(l.parentNode,i.isBlock):null,d=f?f.nodeName.toUpperCase():"",h=!(!t||!t.ctrlKey);"LI"!==d||h||(l=f),s&&3===s.nodeType&&u>=s.nodeValue.length&&!function(e,t,n){for(var r,o=new yi(t,n),i=e.getNonEmptyElements();r=o.next();)if(i[r.nodeName.toLowerCase()]||0<r.length)return!0}(e.schema,s,l)&&(n=i.create("br"),a.insertNode(n),a.setStartAfter(n),a.setEndAfter(n),r=!0),n=i.create("br"),Xu(i,a,n),YC(i,o,n),GC(i,o,n,r),e.undoManager.add()}function QC(e,t){var n=yt.fromTag("br");Ci(yt.fromDom(t),n),e.undoManager.add()}function ZC(e,t){cz(e.getBody(),t)||wi(yt.fromDom(t),yt.fromTag("br"));var n=yt.fromTag("br");wi(yt.fromDom(t),n),YC(e.dom,e.selection,n.dom()),GC(e.dom,e.selection,n.dom(),!1),e.undoManager.add()}function ew(e){return e&&"A"===e.nodeName&&"href"in e}function tw(e){return e.fold($(!1),ew,ew,$(!1))}function nw(e,t){t.fold(i,d(QC,e),d(ZC,e),i)}function rw(e,t){return oz(e).filter(function(e){return 0<t.length&&we(yt.fromDom(e),t)}).isSome()}function ow(e,t){return dz(e)}function iw(n){return function(e,t){return""===mf(e)===n}}function aw(n){return function(e,t){return az(e)===n}}function uw(n,r){return function(e,t){return iz(e)===n.toUpperCase()===r}}function sw(e){return uw("pre",e)}function cw(n){return function(e,t){return hf(e)===n}}function lw(e,t){return fz(e)}function fw(e,t){return t}function dw(e){var t=mf(e),n=rz(e.dom,e.selection.getStart());return n&&e.schema.isValidChild(n.nodeName,t||"P")}function hw(e,t){return function(n,r){return b(e,function(e,t){return e&&t(n,r)},!0)?k.some(t):k.none()}}function mw(n,r){var e=r.container(),t=r.offset();return Ge.isText(e)?(e.insertData(t,n),k.some(Uu(e,t+n.length))):ks(r).map(function(e){var t=yt.fromText(n);return r.isAtEnd()?wi(e,t):Ci(e,t),Uu(t.dom(),n.length)})}function gw(e){return Uu.isTextPosition(e)&&!e.isAtStart()&&!e.isAtEnd()}function pw(e,t){var n=y(fh(yt.fromDom(t.container()),e),Vn);return E(n).getOr(e)}function vw(e,t){return gw(t)?Dh(t):Dh(t)||Pc.prevPosition(pw(e,t).dom(),t).exists(Dh)}function yw(e,t){return gw(t)?Rh(t):Rh(t)||Pc.nextPosition(pw(e,t).dom(),t).exists(Rh)}function bw(e){return ks(e).bind(function(e){return ba(e,xt)}).exists(function(e){return function(e){return h(["pre","pre-wrap"],e)}(ve(e,"white-space"))})}function Cw(e,t){return function(e,t){return Pc.prevPosition(e.dom(),t).isNone()}(e,t)||function(e,t){return Pc.nextPosition(e.dom(),t).isNone()}(e,t)||Gx(e,t)||Jx(e,t)||Yb(e,t)||Xb(e,t)}function ww(e,t){var n=function(e){var t=e.container(),n=e.offset();return Ge.isText(t)&&n<t.data.length?Uu(t,n+1):e}(t);return!bw(n)&&(Jx(e,n)||Zx(e,n)||Xb(e,n)||yw(e,n))}function xw(e,t){return function(e,t){return!bw(t)&&(Gx(e,t)||Qx(e,t)||Yb(e,t)||vw(e,t))}(e,t)||ww(e,t)}function zw(e,t){return Mh(e.charAt(t))}function Ew(e){var t=e.container();return Ge.isText(t)&&Z(t.data,"\xa0")}function Nw(e){var t=e.data,n=function(e){var n=e.split("");return X(n,function(e,t){return Mh(e)&&0<t&&t<n.length-1&&bh(n[t-1])&&bh(n[t+1])?" ":e}).join("")}(t);return n!==t&&(e.data=n,!0)}function Sw(n,e){return k.some(e).filter(Ew).bind(function(e){var t=e.container();return function(e,t){var n=t.data,r=Uu(t,0);return!(!zw(n,0)||xw(e,r))&&(t.data=" "+n.slice(1),!0)}(n,t)||Nw(t)||function(e,t){var n=t.data,r=Uu(t,n.length-1);return!(!zw(n,n.length-1)||xw(e,r))&&(t.data=n.slice(0,-1)+" ",!0)}(n,t)?k.some(e):k.none()})}function kw(t){var e=yt.fromDom(t.getBody());t.selection.isCollapsed()&&Sw(e,Uu.fromRangeStart(t.selection.getRng())).each(function(e){t.selection.setRng(e.toRange())})}function Tw(t,n){return function(e){return function(e,t){return!bw(t)&&(Cw(e,t)||vw(e,t)||yw(e,t))}(t,e)?vz(n):yz(n)}}function Aw(e){var t=Ds.fromRangeStart(e.selection.getRng()),n=yt.fromDom(e.getBody());if(e.selection.isCollapsed()){var r=d(Ky.isInlineTarget,e),o=Ds.fromRangeStart(e.selection.getRng());return Jy(r,e.getBody(),o).bind(function(t){return function(e){return e.fold(function(e){return Pc.prevPosition(t.dom(),Ds.before(e))},function(e){return Pc.firstPositionIn(e)},function(e){return Pc.lastPositionIn(e)},function(e){return Pc.nextPosition(t.dom(),Ds.after(e))})}}(n)).bind(Tw(n,t)).exists(function(t){return function(e){return t.selection.setRng(e.toRange()),t.nodeChanged(),!0}}(e))}return!1}function Mw(e,t){t.hasAttribute("data-mce-caret")&&(Pa(t),function(e){e.selection.setRng(e.selection.getRng())}(e),e.selection.scrollIntoView(t))}function Rw(e,t){var n=function(e){return wa(yt.fromDom(e.getBody()),"*[data-mce-caret]").fold($(null),function(e){return e.dom()})}(e);if(n)return"compositionstart"===t.type?(t.preventDefault(),t.stopPropagation(),void Mw(e,n)):void(_a(n)&&(Mw(e,n),e.undoManager.add()))}function Dw(t){!function(e){var t=aa(function(){e.composing||kw(e)},0);wz.isIE()&&(e.on("keypress",function(e){t.throttle()}),e.on("remove",function(e){t.cancel()}))}(t),t.on("input",function(e){!1===e.isComposing&&kw(t)})}function _w(a){function e(e,t){try{a.getDoc().execCommand(e,!1,t)}catch(n){}}function u(e){return e.isDefaultPrevented()}function t(){a.shortcuts.add("meta+a",null,"SelectAll")}function n(){a.on("keydown",function(e){if(!u(e)&&e.keyCode===i&&l.isCollapsed()&&0===l.getRng().startOffset){var t=l.getNode().previousSibling;if(t&&t.nodeName&&"table"===t.nodeName.toLowerCase())return e.preventDefault(),!1}})}function r(){a.inline||(a.contentStyles.push("body {min-height: 150px}"),a.on("click",function(e){var t;if("HTML"===e.target.nodeName){if(11<Nn.ie)return void a.getBody().focus();t=a.selection.getRng(),a.getBody().focus(),a.selection.setRng(t),a.selection.normalize(),a.nodeChanged()}}))}var o=Mn.each,i=Ah.BACKSPACE,s=Ah.DELETE,c=a.dom,l=a.selection,f=a.settings,d=a.parser,h=Nn.gecko,m=Nn.ie,g=Nn.webkit,p="data:text/mce-internal,",v=m?"Text":"URL";function y(e){var t=c.create("body"),n=e.cloneContents();return t.appendChild(n),l.serializer.serialize(t,{format:"html"})}function b(){var e=c.getAttribs(l.getStart().cloneNode(!1));return function(){var t=l.getStart();t!==a.getBody()&&(c.setAttrib(t,"style",null),o(e,function(e){t.setAttributeNode(e.cloneNode(!0))}))}}function C(){return!l.isCollapsed()&&c.getParent(l.getStart(),c.isBlock)!==c.getParent(l.getEnd(),c.isBlock)}return a.on("keydown",function(e){var t,n,r,o,i;if(!u(e)&&e.keyCode===Ah.BACKSPACE&&(n=(t=l.getRng()).startContainer,r=t.startOffset,o=c.getRoot(),i=n,t.collapsed&&0===r)){for(;i&&i.parentNode&&i.parentNode.firstChild===i&&i.parentNode!==o;)i=i.parentNode;"BLOCKQUOTE"===i.tagName&&(a.formatter.toggle("blockquote",null,i),(t=c.createRng()).setStart(n,0),t.setEnd(n,0),l.setRng(t))}}),a.on("keydown",function(e){var t,n,r=e.keyCode;if(!u(e)&&(r===s||r===i)){if(t=a.selection.isCollapsed(),n=a.getBody(),t&&!c.isEmpty(n))return;if(!t&&!function(e){var t=y(e),n=c.createRng();return n.selectNode(a.getBody()),t===y(n)}(a.selection.getRng()))return;e.preventDefault(),a.setContent(""),n.firstChild&&c.isBlock(n.firstChild)?a.selection.setCursorLocation(n.firstChild,0):a.selection.setCursorLocation(n,0),a.nodeChanged()}}),Nn.windowsPhone||a.on("keyup focusin mouseup",function(e){Ah.modifierPressed(e)||l.normalize()},!0),g&&(a.inline||c.bind(a.getDoc(),"mousedown mouseup",function(e){var t;if(e.target===a.getDoc().documentElement)if(t=l.getRng(),a.getBody().focus(),"mousedown"===e.type){if(Da(t.startContainer))return;l.placeCaretAt(e.clientX,e.clientY)}else l.setRng(t)}),a.on("click",function(e){var t=e.target;/^(IMG|HR)$/.test(t.nodeName)&&"false"!==c.getContentEditableParent(t)&&(e.preventDefault(),a.selection.select(t),a.nodeChanged()),"A"===t.nodeName&&c.hasClass(t,"mce-item-anchor")&&(e.preventDefault(),l.select(t))}),f.forced_root_block&&a.on("init",function(){e("DefaultParagraphSeparator",mf(a))}),a.on("init",function(){a.dom.bind(a.getBody(),"submit",function(e){e.preventDefault()})}),n(),d.addNodeFilter("br",function(e){for(var t=e.length;t--;)"Apple-interchange-newline"===e[t].attr("class")&&e[t].remove()}),Nn.iOS?(a.inline||a.on("keydown",function(){j.document.activeElement===j.document.body&&a.getWin().focus()}),r(),a.on("click",function(e){var t=e.target;do{if("A"===t.tagName)return void e.preventDefault()}while(t=t.parentNode)}),a.contentStyles.push(".mce-content-body {-webkit-touch-callout: none}")):t()),11<=Nn.ie&&(r(),n()),Nn.ie&&(t(),e("AutoUrlDetect",!1),a.on("dragstart",function(e){!function(e){var t,n;e.dataTransfer&&(a.selection.isCollapsed()&&"IMG"===e.target.tagName&&l.select(e.target),0<(t=a.selection.getContent()).length&&(n=p+escape(a.id)+","+escape(t),e.dataTransfer.setData(v,n)))}(e)}),a.on("drop",function(e){if(!u(e)){var t=function(e){var t;return e.dataTransfer&&(t=e.dataTransfer.getData(v))&&0<=t.indexOf(p)?(t=t.substr(p.length).split(","),{id:unescape(t[0]),html:unescape(t[1])}):null}(e);if(t&&t.id!==a.id){e.preventDefault();var n=$v(e.x,e.y,a.getDoc());l.setRng(n),function(e,t){a.queryCommandSupported("mceInsertClipboardContent")?a.execCommand("mceInsertClipboardContent",!1,{content:e,internal:t}):a.execCommand("mceInsertContent",!1,e)}(t.html,!0)}}})),h&&(a.on("keydown",function(e){if(!u(e)&&e.keyCode===i){if(!a.getBody().getElementsByTagName("hr").length)return;if(l.isCollapsed()&&0===l.getRng().startOffset){var t=l.getNode(),n=t.previousSibling;if("HR"===t.nodeName)return c.remove(t),void e.preventDefault();n&&n.nodeName&&"hr"===n.nodeName.toLowerCase()&&(c.remove(n),e.preventDefault())}}}),j.Range.prototype.getClientRects||a.on("mousedown",function(e){if(!u(e)&&"HTML"===e.target.nodeName){var t=a.getBody();t.blur(),pn.setEditorTimeout(a,function(){t.focus()})}}),a.on("keypress",function(e){var t;if(!u(e)&&(8===e.keyCode||46===e.keyCode)&&C())return t=b(),a.getDoc().execCommand("delete",!1,null),t(),e.preventDefault(),!1}),c.bind(a.getDoc(),"cut",function(e){var t;!u(e)&&C()&&(t=b(),pn.setEditorTimeout(a,function(){t()}))}),f.readonly||a.on("BeforeExecCommand mousedown",function(){e("StyleWithCSS",!1),e("enableInlineTableEditing",!1),f.object_resizing||e("enableObjectResizing",!1)}),a.on("SetContent ExecCommand",function(e){"setcontent"!==e.type&&"mceInsertLink"!==e.command||o(c.select("a"),function(e){var t=e.parentNode,n=c.getRoot();if(t.lastChild===e){for(;t&&!c.isBlock(t);){if(t.parentNode.lastChild!==t||t===n)return;t=t.parentNode}c.add(t,"br",{"data-mce-bogus":1})}})}),a.contentStyles.push("img:-moz-broken {-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}"),Nn.mac&&a.on("keydown",function(e){!Ah.metaKeyPressed(e)||e.shiftKey||37!==e.keyCode&&39!==e.keyCode||(e.preventDefault(),a.selection.getSel().modify("move",37===e.keyCode?"backward":"forward","lineboundary"))}),n()),{refreshContentEditable:function(){},isHidden:function(){var e;return!(!h||a.removed)&&(!(e=a.selection.getSel())||!e.rangeCount||0===e.rangeCount)}}}function Bw(e){return Ge.isElement(e)&&In(yt.fromDom(e))}function Ow(t){t.on("click",function(e){3<=e.detail&&function(e){var t=e.selection.getRng(),n=Uu.fromRangeStart(t),r=Uu.fromRangeEnd(t);if(Uu.isElementPosition(n)){var o=n.container();Bw(o)&&Pc.firstPositionIn(o).each(function(e){return t.setStart(e.container(),e.offset())})}if(Uu.isElementPosition(r)){o=n.container();Bw(o)&&Pc.lastPositionIn(o).each(function(e){return t.setEnd(e.container(),e.offset())})}e.selection.setRng(fp(t))}(t)})}function Hw(e){!function(t){t.on("click",function(e){t.dom.getParent(e.target,"details")&&e.preventDefault()})}(e),function(e){e.parser.addNodeFilter("details",function(e){z(e,function(e){e.attr("data-mce-open",e.attr("open")),e.attr("open","open")})}),e.serializer.addNodeFilter("details",function(e){z(e,function(e){var t=e.attr("data-mce-open");e.attr("open",K(t)?t:null),e.attr("data-mce-open",null)})})}(e)}function Pw(e){e.bindPendingEventDelegates(),e.initialized=!0,e.fire("init"),e.focus(!0),e.nodeChanged({initial:!0}),e.execCallback("init_instance_callback",e),function(t){t.settings.auto_focus&&pn.setEditorTimeout(t,function(){var e;(e=!0===t.settings.auto_focus?t:t.editorManager.get(t.settings.auto_focus)).destroyed||e.focus()},100)}(e)}function Lw(e,t){var n=e.editorManager.translate("Rich Text Area. Press ALT-0 for help."),r=function(e,t,n,r){var o=yt.fromTag("iframe");return me(o,r),me(o,{id:e+"_ifr",frameBorder:"0",allowTransparency:"true",title:t}),fa(o,"tox-edit-area__iframe"),o}(e.id,n,t.height,uf(e)).dom();r.onload=function(){r.onload=null,e.fire("load")};var o=function(e,t){if(j.document.domain!==j.window.location.hostname&&Nn.browser.isIE()){var n=eh("mce");e[n]=function(){Nz(e)};var r='javascript:(function(){document.open();document.domain="'+j.document.domain+'";var ed = window.parent.tinymce.get("'+e.id+'");document.write(ed.iframeHTML);document.close();ed.'+n+"(true);})()";return Sz.setAttrib(t,"src",r),!0}return!1}(e,r);return e.contentAreaContainer=t.iframeContainer,e.iframeElement=r,e.iframeHTML=function(e){var t,n,r;return r=sf(e)+"<html><head>",cf(e)!==e.documentBaseUrl&&(r+='<base href="'+e.documentBaseURI.getURI()+'" />'),r+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />',t=lf(e),n=ff(e),df(e)&&(r+='<meta http-equiv="Content-Security-Policy" content="'+df(e)+'" />'),r+='</head><body id="'+t+'" class="mce-content-body '+n+'" data-id="'+e.id+'"><br></body></html>'}(e),Sz.add(t.iframeContainer,r),o}function Vw(e){e.contentCSS=e.contentCSS.concat(function(t){var e=Lf(t),n=t.editorManager.baseURL+"/skins/content",r="content"+t.editorManager.suffix+".css",o=!0===t.inline;return X(e,function(e){return function(e){return/^[a-z0-9\-]+$/i.test(e)}(e)&&!o?n+"/"+e+"/"+r:t.documentBaseURI.toAbsolute(e)})}(e))}function Iw(e){return e.replace(/^\-/,"")}function Fw(e){return{editorContainer:e,iframeContainer:e}}function Uw(e){var t=e.getElement();return e.inline?Fw(null):function(e){var t=Tz.create("div");return Tz.insertAfter(t,e),Fw(t)}(t)}function jw(e){return"-"===e.charAt(0)}function qw(t,e){(function(e){return k.from(zf(e)).filter(function(e){return 0<e.length}).map(function(e){return{url:e,name:k.none()}})})(e).orThunk(function(){return function(t){return k.from(xf(t)).filter(function(e){return 0<e.length&&!Ud.has(e)}).map(function(e){return{url:t.editorManager.baseURL+"/icons/"+e+"/icons.js",name:k.some(e)}})}(e)}).each(function(e){t.add(e.url,i,undefined,function(){Fd.iconsLoadError(e.url,e.name.getOrUndefined())})})}function $w(e,t){var n=Qi.ScriptLoader;!function(e,t,n,r){var o=t.settings,i=o.theme;if(K(i)){if(!jw(i)&&!qd.urls.hasOwnProperty(i)){var a=o.theme_url;a?qd.load(i,t.documentBaseURI.toAbsolute(a)):qd.load(i,"themes/"+i+"/theme"+n+".js")}e.loadQueue(function(){qd.waitFor(i,r)})}else r()}(n,e,t,function(){!function(e,t){var n=Bf(t),r=Of(t);if(!1===ra.hasCode(n)&&"en"!==n){var o=""!==r?r:t.editorManager.baseURL+"/langs/"+n+".js";e.add(o,i,undefined,function(){Fd.languageLoadError(o,n)})}}(n,e),qw(n,e),function(n,r){A(n.plugins)&&(n.plugins=n.plugins.join(" ")),Mn.each(n.external_plugins,function(e,t){jd.load(t,e,i,undefined,function(){Fd.pluginLoadError(t,e)}),n.plugins+=" "+t}),Mn.each(n.plugins.split(/[ ,]/),function(e){if((e=Mn.trim(e))&&!jd.urls[e])if(jw(e)){e=e.substr(1,e.length);var t=jd.dependencies(e);Mn.each(t,function(e){var t={prefix:"plugins/",resource:e,suffix:"/plugin"+r+".js"};e=jd.createUrl(t,e),jd.load(e.resource,e,i,undefined,function(){Fd.pluginLoadError(e.prefix+e.resource+e.suffix,e.resource)})})}else{var n={prefix:"plugins/",resource:e,suffix:"/plugin"+r+".js"};jd.load(e,n,i,undefined,function(){Fd.pluginLoadError(n.prefix+n.resource+n.suffix,e)})}})}(e.settings,t),n.loadQueue(function(){e.removed||Mz(e)},e,function(){e.removed||Mz(e)})})}function Ww(e,t,n){ha(e,t)&&!1===n?function(e,t){sa(e)?e.dom().classList.remove(t):la(e,t);da(e)}(e,t):n&&fa(e,t)}function Kw(e,t,n){try{e.getDoc().execCommand(t,!1,n)}catch(r){}}function Xw(e,t){e.dom().contentEditable=t?"true":"false"}function Yw(e,t){var n=yt.fromDom(e.getBody());Ww(n,"mce-content-readonly",t),t?(e.selection.controlSelection.hideResizeRect(),e._selectionOverrides.hideFakeCaret(),function(e){k.from(e.selection.getNode()).each(function(e){e.removeAttribute("data-mce-selected")})}(e),e.readonly=!0,Xw(n,!1),function(e){z(ma(e,'*[contenteditable="true"]'),function(e){Tt(e,_z,"true"),Xw(e,!1)})}(n)):(e.readonly=!1,Xw(n,!0),function(e){z(ma(e,"*["+_z+'="true"]'),function(e){pe(e,_z),Xw(e,!0)})}(n),Kw(e,"StyleWithCSS",!1),Kw(e,"enableInlineTableEditing",!1),Kw(e,"enableObjectResizing",!1),sd(e)&&e.focus(),function(e){e.selection.setRng(e.selection.getRng())}(e),e.nodeChanged())}function Gw(e){return!0===e.readonly}function Jw(t){t.parser.addAttributeFilter("contenteditable",function(e){Gw(t)&&z(e,function(e){e.attr(_z,e.attr("contenteditable")),e.attr("contenteditable","false")})}),t.serializer.addAttributeFilter(_z,function(e){Gw(t)&&z(e,function(e){e.attr("contenteditable",e.attr(_z))})}),t.serializer.addTempAttr(_z)}function Qw(e,t,n,r){var o=n[t.get()],i=n[r];try{i.activate()}catch(yN){return void j.console.error("problem while activating editor mode "+r+":",yN)}o.deactivate(),o.editorReadOnly!==i.editorReadOnly&&Yw(e,i.editorReadOnly),t.set(r),hd(e,r)}function Zw(t){var n=Je("design"),r=Je({design:{activate:i,deactivate:i,editorReadOnly:!1},readonly:{activate:i,deactivate:i,editorReadOnly:!0}});return function(e){e.serializer?Jw(e):e.on("PreInit",function(){Jw(e)})}(t),function(t){t.on("ShowCaret",function(e){Gw(t)&&e.preventDefault()}),t.on("ObjectSelected",function(e){Gw(t)&&e.preventDefault()})}(t),{isReadOnly:function(){return Gw(t)},set:function(e){return function(e,t,n,r){if(r!==n.get()){if(!kt(t,r))throw new Error("Editor mode '"+r+"' is invalid");e.initialized?Qw(e,n,t,r):e.on("init",function(){return Qw(e,n,t,r)})}}(t,r.get(),n,e)},get:function(){return n.get()},register:function(e,t){r.set(function(e,t,n){var r;if(h(Bz,t))throw new Error("Cannot override default mode "+t);return G(G({},e),((r={})[t]=G(G({},n),{deactivate:function(){try{n.deactivate()}catch(yN){j.console.error("problem while deactivating editor mode "+t+":",yN)}}}),r))}(r.get(),e,t))}}}function ex(e){return Mn.grep(e.childNodes,function(e){return"LI"===e.nodeName})}function tx(e){return e&&e.firstChild&&e.firstChild===e.lastChild&&function(e){return"\xa0"===e.data||Ge.isBr(e)}(e.firstChild)}function nx(e){return 0<e.length&&function(e){return!e.firstChild||tx(e)}(e[e.length-1])?e.slice(0,-1):e}function rx(e,t){var n=e.getParent(t,e.isBlock);return n&&"LI"===n.nodeName?n:null}function ox(e,t){var n=Ds.after(e),r=rc(t).prev(n);return r?r.toRange():null}function ix(t,e,n){var r=t.parentNode;return Mn.each(e,function(e){r.insertBefore(e,t)}),function(e,t){var n=Ds.before(e),r=rc(t).next(n);return r?r.toRange():null}(t,n)}function ax(e,t){var n=e.selection.getRng(),r=n.startContainer,o=n.startOffset;n.collapsed&&function(e,t){return Ge.isText(e)&&"\xa0"===e.nodeValue[t-1]}(r,o)&&Ge.isText(r)&&(r.insertData(o-1," "),r.deleteData(o,1),n.setStart(r,o),n.setEnd(r,o),e.selection.setRng(n)),e.selection.setContent(t)}function ux(e,t,n){var r,o,i,a,u,s,c,l,f,d,h,m=e.selection,g=e.dom;if(/^ | $/.test(t)&&(t=function(e,t){var n,r;n=e.startContainer,r=e.startOffset;function o(e){return n[e]&&3===n[e].nodeType}return 3===n.nodeType&&(0<r?t=t.replace(/^&nbsp;/," "):o("previousSibling")||(t=t.replace(/^ /,"&nbsp;")),r<n.length?t=t.replace(/&nbsp;(<br>|)$/," "):o("nextSibling")||(t=t.replace(/(&nbsp;| )(<br>|)$/,"&nbsp;"))),t}(m.getRng(),t)),r=e.parser,h=n.merge,o=pl({validate:e.settings.validate},e.schema),d='<span id="mce_marker" data-mce-type="bookmark">&#xFEFF;&#x200B;</span>',s={content:t,format:"html",selection:!0,paste:n.paste},(s=e.fire("BeforeSetContent",s)).isDefaultPrevented())e.fire("SetContent",{content:s.content,format:"html",selection:!0,paste:n.paste});else{-1===(t=s.content).indexOf("{$caret}")&&(t+="{$caret}"),t=t.replace(/\{\$caret\}/,d);var p=(l=m.getRng()).startContainer||(l.parentElement?l.parentElement():null),v=e.getBody();p===v&&m.isCollapsed()&&g.isBlock(v.firstChild)&&function(e,t){return t&&!e.schema.getShortEndedElements()[t.nodeName]}(e,v.firstChild)&&g.isEmpty(v.firstChild)&&((l=g.createRng()).setStart(v.firstChild,0),l.setEnd(v.firstChild,0),m.setRng(l)),m.isCollapsed()||(e.selection.setRng(fp(e.selection.getRng())),e.getDoc().execCommand("Delete",!1,null),t=function(e,t){var n,r;return n=e.startContainer,r=e.startOffset,3===n.nodeType&&e.collapsed&&("\xa0"===n.data[r]?(n.deleteData(r,1),/[\u00a0| ]$/.test(t)||(t+=" ")):"\xa0"===n.data[r-1]&&(n.deleteData(r-1,1),/[\u00a0| ]$/.test(t)||(t=" "+t))),t}(e.selection.getRng(),t));var y={context:(i=m.getNode()).nodeName.toLowerCase(),data:n.data,insert:!0};if(u=r.parse(t,y),!0===n.paste&&Oz(e.schema,u)&&Pz(g,i))return l=Hz(o,g,e.selection.getRng(),u),e.selection.setRng(l),void e.fire("SetContent",s);if(function(e){for(var t=e;t=t.walk();)1===t.type&&t.attr("data-mce-fragment","1")}(u),"mce_marker"===(f=u.lastChild).attr("id"))for(f=(c=f).prev;f;f=f.walk(!0))if(3===f.type||!g.isBlock(f.name)){e.schema.isValidChild(f.parent.name,"span")&&f.parent.insert(c,f,"br"===f.name);break}if(e._selectionOverrides.showBlockCaretContainer(i),y.invalid){for(ax(e,d),i=m.getNode(),a=e.getBody(),9===i.nodeType?i=f=a:f=i;f!==a;)f=(i=f).parentNode;t=i===a?a.innerHTML:g.getOuterHTML(i),t=o.serialize(r.parse(t.replace(/<span (id="mce_marker"|id=mce_marker).+?<\/span>/i,function(){return o.serialize(u)}))),i===a?g.setHTML(a,t):g.setOuterHTML(i,t)}else!function(e,t,n){if("all"===n.getAttribute("data-mce-bogus"))n.parentNode.insertBefore(e.dom.createFragment(t),n);else{var r=n.firstChild,o=n.lastChild;!r||r===o&&"BR"===r.nodeName?e.dom.setHTML(n,t):ax(e,t)}}(e,t=o.serialize(u),i);!function(e,t){var n=e.schema.getTextInlineElements(),r=e.dom;if(t){var o=e.getBody(),i=new Bg(r);Mn.each(r.select("*[data-mce-fragment]"),function(e){for(var t=e.parentNode;t&&t!==o;t=t.parentNode)n[e.nodeName.toLowerCase()]&&i.compare(t,e)&&r.remove(e,!0)})}}(e,h),function(n,e){var t,r,o,i,a,u=n.dom,s=n.selection;if(e){if(n.selection.scrollIntoView(e),t=function(e){for(var t=n.getBody();e&&e!==t;e=e.parentNode)if("false"===n.dom.getContentEditable(e))return e;return null}(e))return u.remove(e),s.select(t);var c=u.createRng();(i=e.previousSibling)&&3===i.nodeType?(c.setStart(i,i.nodeValue.length),Nn.ie||(a=e.nextSibling)&&3===a.nodeType&&(i.appendData(a.data),a.parentNode.removeChild(a))):(c.setStartBefore(e),c.setEndBefore(e));r=u.getParent(e,u.isBlock),u.remove(e),r&&u.isEmpty(r)&&(n.$(r).empty(),c.setStart(r,0),c.setEnd(r,0),Lz(r)||function(e){return!!e.getAttribute("data-mce-fragment")}(r)||!(o=function(e){var t=Ds.fromRangeStart(e);if(t=rc(n.getBody()).next(t))return t.toRange()}(c))?u.add(r,u.create("br",{"data-mce-bogus":"1"})):(c=o,u.remove(r))),s.setRng(c)}}(e,g.get("mce_marker")),function(e){Mn.each(e.getElementsByTagName("*"),function(e){e.removeAttribute("data-mce-fragment")})}(e.getBody()),function(e,t){k.from(e.getParent(t,"td,th")).map(yt.fromDom).each(Cg)}(e.dom,e.selection.getStart()),e.fire("SetContent",s),e.addVisual()}}function sx(e,t){e.getDoc().execCommand(t,!1,null)}function cx(n){return function(t,e){return k.from(e).map(yt.fromDom).filter(xt).bind(function(e){return function(t,n,e){function r(e){return ye(e,t)}return ba(yt.fromDom(e),function(e){return r(e).isSome()},function(e){return ze(yt.fromDom(n),e)}).bind(r)}(n,t,e.dom()).or(function(e,t){return k.from(Xi.DOM.getStyle(t,e,!0))}(n,e.dom()))}).getOr("")}}function lx(e){return Pc.firstPositionIn(e.getBody()).map(function(e){var t=e.container();return Ge.isText(t)?t.parentNode:t})}function fx(t){return k.from(t.selection.getRng()).bind(function(e){return function(e,t){return e.startContainer===t&&0===e.startOffset}(e,t.getBody())?k.none():k.from(t.selection.getStart(!0))})}function dx(e,t){if(/^[0-9\.]+$/.test(t)){var n=parseInt(t,10);if(1<=n&&n<=7){var r=Cf(e),o=wf(e);return o?o[n-1]||t:r[n-1]||t}return t}return t}function hx(e,t){var n=dx(e,t);e.formatter.toggle("fontname",{value:function(e){var t=e.split(/\s*,\s*/);return X(t,function(e){return-1===e.indexOf(" ")||ee(e,'"')||ee(e,"'")?e:"'"+e+"'"}).join(",")}(n)}),e.nodeChanged()}var mx=d(ob,Uu.isAbove,-1),gx=d(ob,Uu.isBelow,1),px=d(ib,-1,mx),vx=d(ib,1,gx),yx=Ge.isContentEditableFalse,bx=Wa,Cx=d(mb,function(e){return e.bottom},function(e,t){return e.y<t}),wx=d(mb,function(e){return e.top},function(e,t){return e.y>t}),xx=d(yb,mx),zx=d(yb,gx),Ex=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var r=Array.prototype.slice.call(arguments,1);return function(){return e.apply(null,r)}},Nx=function(e,t){return g(Db(e,t),function(e){return e.action()})},Sx=function(t,n){t.on("keydown",function(e){!1===e.isDefaultPrevented()&&function(e,t,n){var r=oe().os;Nx([{keyCode:Ah.RIGHT,action:fb(e,!0)},{keyCode:Ah.LEFT,action:fb(e,!1)},{keyCode:Ah.UP,action:db(e,!1)},{keyCode:Ah.DOWN,action:db(e,!0)},{keyCode:Ah.RIGHT,action:zb(e,!0)},{keyCode:Ah.LEFT,action:zb(e,!1)},{keyCode:Ah.UP,action:Eb(e,!1)},{keyCode:Ah.DOWN,action:Eb(e,!0)},{keyCode:Ah.RIGHT,action:nb.move(e,t,!0)},{keyCode:Ah.LEFT,action:nb.move(e,t,!1)},{keyCode:Ah.RIGHT,ctrlKey:!r.isOSX(),altKey:r.isOSX(),action:nb.moveNextWord(e,t)},{keyCode:Ah.LEFT,ctrlKey:!r.isOSX(),altKey:r.isOSX(),action:nb.movePrevWord(e,t)},{keyCode:Ah.UP,action:Rb(e,!1)},{keyCode:Ah.DOWN,action:Rb(e,!0)}],n).each(function(e){n.preventDefault()})}(t,n,e)})},kx=function(e,t){return Bt(e,t)?ba(t,function(e){return In(e)||Un(e)},function(t){return function(e){return ze(t,yt.fromDom(e.dom().parentNode))}}(e)):k.none()},Tx=function(e){e.dom.isEmpty(e.getBody())&&(e.setContent(""),function(e){var t=e.getBody(),n=t.firstChild&&e.dom.isBlock(t.firstChild)?t.firstChild:t;e.selection.setCursorLocation(n,0)}(e))},Ax=function(i,a,u){return Ya(Pc.firstPositionIn(u),Pc.lastPositionIn(u),function(e,t){var n=Ky.normalizePosition(!0,e),r=Ky.normalizePosition(!1,t),o=Ky.normalizePosition(!1,a);return i?Pc.nextPosition(u,o).map(function(e){return e.isEqual(r)&&a.isEqual(n)}).getOr(!1):Pc.prevPosition(u,o).map(function(e){return e.isEqual(n)&&a.isEqual(r)}).getOr(!1)}).getOr(!0)},Mx=function(e,t,n){return n.collapsed?Ob(e,t,n):k.none()},Rx=function(e,t,n,r){return t?Ub(e,r,n):Ub(e,n,r)},Dx=function(t,n){var r=yt.fromDom(t.getBody()),e=Mx(r.dom(),n,t.selection.getRng()).bind(function(e){return Rx(r,n,e.from().block(),e.to().block())});return e.each(function(e){t.selection.setRng(e.toRange())}),e.isSome()},_x=function(e,t){return!e.selection.isCollapsed()&&$b(e)},Bx=d(Kb,!1),Ox=d(Kb,!0),Hx=jf([{remove:["element"]},{moveToElement:["element"]},{moveToPosition:["position"]}]),Px=function(e,t){for(;t&&t!==e;){if(Ge.isContentEditableTrue(t)||Ge.isContentEditableFalse(t))return t;t=t.parentNode}return null},Lx=function(e,t){return e.selection.isCollapsed()?eC(e,t):tC(e,t)},Vx=function(e){var t,n=Px(e.getBody(),e.selection.getNode());return Ge.isContentEditableTrue(n)&&e.dom.isBlock(n)&&e.dom.isEmpty(n)&&(t=e.dom.create("br",{"data-mce-bogus":"1"}),e.dom.setHTML(n,""),n.appendChild(t),e.selection.setRng(Ds.before(t).toRange())),!0},Ix=function(e,t){return function(e,t){var n=e.selection.getRng();if(!Ge.isText(n.commonAncestorContainer))return!1;var r=t?Ms.Forwards:Ms.Backwards,o=rc(e.getBody()),i=d(Ts,o.next),a=d(Ts,o.prev),u=t?i:a,s=t?Ph:Lh,c=Ss(r,e.getBody(),n),l=Ky.normalizePosition(t,u(c));if(!l||!As(c,l))return!1;if(s(l))return nC(e,n,c.getNode(),r,t,l);var f=u(l);return!!(f&&s(f)&&As(l,f))&&nC(e,n,c.getNode(),r,t,f)}(e,t)},Fx=function(e,t,n){if(e.selection.isCollapsed()&&function(e){return!1!==e.settings.inline_boundaries}(e)){var r=Ds.fromRangeStart(e.selection.getRng());return iC(e,t,n,r)}return!1},Ux=function(e,t){return!!e.selection.isCollapsed()&&sC(e,t)},jx=jf([{removeTable:["element"]},{emptyCells:["cells"]}]),qx=function(e,t){return hC(t,e).isSome()},$x=function(e,t){return g(fh(t,e),function(e){return"caption"===ie(e)})},Wx=function(e,t){return bg(t),e.selection.setCursorLocation(t.dom(),0),k.some(!0)},Kx=function(e,t){var n=yt.fromDom(e.selection.getStart(!0)),r=ry(e);return e.selection.isCollapsed()&&0===r.length?TC(e,t,n):function(e,t){var n=yt.fromDom(e.getBody()),r=e.selection.getRng(),o=ry(e);return 0!==o.length?CC(e,o):zC(e,n,r,t)}(e,n)},Xx=function(e,t){return!!e.selection.isCollapsed()&&function(t,n){var e=Ds.fromRangeStart(t.selection.getRng());return Pc.fromPosition(n,t.getBody(),e).filter(function(e){return n?_h(e):Bh(e)}).bind(function(e){return k.from(ws(n?0:-1,e))}).map(function(e){return t.selection.select(e),!0}).getOr(!1)}(e,t)},Yx=function(e){return y(X(e.selection.getSelectedBlocks(),yt.fromDom),function(e){return!DC(e)&&!function(e){return Se(e).map(DC).getOr(!1)}(e)&&function(e){return ba(e,function(e){return Ge.isContentEditableTrue(e.dom())||Ge.isContentEditableFalse(e.dom())}).exists(function(e){return Ge.isContentEditableTrue(e.dom())})}(e)})},Gx=d(PC,!1),Jx=d(PC,!0),Qx=d(HC,!1),Zx=d(HC,!0),ez=function(e,t,n){if(e.selection.isCollapsed()&&RC(e)){var r=e.dom,o=e.selection.getRng(),i=Ds.fromRangeStart(o),a=r.getParent(o.startContainer,r.isBlock);if(null!==a&&Gx(yt.fromDom(a),i))return _C(e,"outdent"),!0}return!1},tz=function(t,n){t.on("keydown",function(e){!1===e.isDefaultPrevented()&&function(e,t,n){Nx([{keyCode:Ah.BACKSPACE,action:Ex(ez,e,!1)},{keyCode:Ah.BACKSPACE,action:Ex(Lx,e,!1)},{keyCode:Ah.DELETE,action:Ex(Lx,e,!0)},{keyCode:Ah.BACKSPACE,action:Ex(Ix,e,!1)},{keyCode:Ah.DELETE,action:Ex(Ix,e,!0)},{keyCode:Ah.BACKSPACE,action:Ex(Fx,e,t,!1)},{keyCode:Ah.DELETE,action:Ex(Fx,e,t,!0)},{keyCode:Ah.BACKSPACE,action:Ex(Kx,e,!1)},{keyCode:Ah.DELETE,action:Ex(Kx,e,!0)},{keyCode:Ah.BACKSPACE,action:Ex(Xx,e,!1)},{keyCode:Ah.DELETE,action:Ex(Xx,e,!0)},{keyCode:Ah.BACKSPACE,action:Ex(_x,e,!1)},{keyCode:Ah.DELETE,action:Ex(_x,e,!0)},{keyCode:Ah.BACKSPACE,action:Ex(Dx,e,!1)},{keyCode:Ah.DELETE,action:Ex(Dx,e,!0)},{keyCode:Ah.BACKSPACE,action:Ex(Ux,e,!1)},{keyCode:Ah.DELETE,action:Ex(Ux,e,!0)}],n).each(function(e){n.preventDefault()})}(t,n,e)}),t.on("keyup",function(e){!1===e.isDefaultPrevented()&&function(e,t){Nx([{keyCode:Ah.BACKSPACE,action:Ex(Vx,e)},{keyCode:Ah.DELETE,action:Ex(Vx,e)}],t)}(t,e)})},nz=function(e,t){var n,r,o=t,i=e.dom,a=e.schema.getMoveCaretBeforeOnEnterElements();if(t){if(/^(LI|DT|DD)$/.test(t.nodeName)){var u=function(e){for(;e;){if(1===e.nodeType||3===e.nodeType&&e.data&&/[\r\n\s]/.test(e.data))return e;e=e.nextSibling}}(t.firstChild);u&&/^(UL|OL|DL)$/.test(u.nodeName)&&t.insertBefore(i.doc.createTextNode("\xa0"),t.firstChild)}if(r=i.createRng(),t.normalize(),t.hasChildNodes()){for(var s=new yi(t,t);n=s.current();){if(Ge.isText(n)){r.setStart(n,0),r.setEnd(n,0);break}if(a[n.nodeName.toLowerCase()]){r.setStartBefore(n),r.setEndBefore(n);break}o=n,n=s.next()}n||(r.setStart(o,0),r.setEnd(o,0))}else Ge.isBr(t)?t.nextSibling&&i.isBlock(t.nextSibling)?(r.setStartBefore(t),r.setEndBefore(t)):(r.setStartAfter(t),r.setEndAfter(t)):(r.setStart(t,0),r.setEnd(t,0));e.selection.setRng(r),e.selection.scrollIntoView(t)}},rz=function(e,t){var n,r,o=e.getRoot();for(n=t;n!==o&&"false"!==e.getContentEditable(n);)"true"===e.getContentEditable(n)&&(r=n),n=n.parentNode;return n!==o?r:o},oz=LC,iz=function(e){return LC(e).fold($(""),function(e){return e.nodeName.toUpperCase()})},az=function(e){return LC(e).filter(function(e){return Un(yt.fromDom(e))}).isSome()},uz=function(e,t,n,r,o){var i=e.dom,a=e.selection.getRng();if(n!==e.getBody()){!function(e){return IC(e)&&IC(e.parentNode)}(n)||(o="LI");var u=o?t(o):i.create("BR");if(UC(n,r,!0)&&UC(n,r,!1))VC(n,"LI")?i.insertAfter(u,FC(n)):i.replace(u,n);else if(UC(n,r,!0))VC(n,"LI")?(i.insertAfter(u,FC(n)),u.appendChild(i.doc.createTextNode(" ")),u.appendChild(n)):n.parentNode.insertBefore(u,n);else if(UC(n,r,!1))i.insertAfter(u,FC(n));else{n=FC(n);var s=a.cloneRange();s.setStartAfter(r),s.setEndAfter(n);var c=s.extractContents();"LI"===o&&function(e,t){return e.firstChild&&e.firstChild.nodeName===t}(c,"LI")?(u=c.firstChild,i.insertAfter(c,n)):(i.insertAfter(c,n),i.insertAfter(u,n))}i.remove(r),nz(e,u)}},sz=function(a,e){function t(e){var t,n,r,o=s,i=b.getTextInlineElements();if(e||"TABLE"===m||"HR"===m?(t=y.create(e||p),XC(a,t)):t=c.cloneNode(!1),r=t,!1===yf(a))y.setAttrib(t,"style",null),y.setAttrib(t,"class",null);else do{if(i[o.nodeName]){if(rs(o)||Fc(o))continue;n=o.cloneNode(!1),y.setAttrib(n,"id",""),t.hasChildNodes()?n.appendChild(t.firstChild):r=n,t.appendChild(n)}}while((o=o.parentNode)&&o!==u);return jC(r),t}function n(e){var t,n,r=WC(e,s,i);if(Ge.isText(s)&&(e?0<r:r<s.nodeValue.length))return!1;if(s.parentNode===c&&v&&!e)return!0;if(e&&Ge.isElement(s)&&s===c.firstChild)return!0;if(qC(s,"TABLE")||qC(s,"HR"))return v&&!e||!v&&e;var o=new yi(s,c);for(Ge.isText(s)&&(e&&0===r?o.prev():e||r!==s.nodeValue.length||o.next());t=o.current();){if(Ge.isElement(t)){if(!t.getAttribute("data-mce-bogus")&&(n=t.nodeName.toLowerCase(),C[n]&&"br"!==n))return!1}else if(Ge.isText(t)&&!/^[ \t\r\n]*$/.test(t.nodeValue))return!1;e?o.prev():o.next()}return!0}function r(){f=/^(H[1-6]|PRE|FIGURE)$/.test(m)&&"HGROUP"!==g?t(p):t(),bf(a)&&$C(y,h)&&y.isEmpty(c)?f=y.split(h,c):y.insertAfter(f,c),nz(a,f)}var o,u,s,i,c,l,f,d,h,m,g,p,v,y=a.dom,b=a.schema,C=b.getNonEmptyElements(),w=a.selection.getRng();ay(y,w).each(function(e){w.setStart(e.startContainer,e.startOffset),w.setEnd(e.endContainer,e.endOffset)}),s=w.startContainer,i=w.startOffset,p=mf(a),l=!(!e||!e.shiftKey);var x=!(!e||!e.ctrlKey);Ge.isElement(s)&&s.hasChildNodes()&&(v=i>s.childNodes.length-1,s=s.childNodes[Math.min(i,s.childNodes.length-1)]||s,i=v&&Ge.isText(s)?s.nodeValue.length:0),(u=KC(y,s))&&((p&&!l||!p&&l)&&(s=function(e,t,n,r,o){var i,a,u,s,c,l,f=t||"P",d=e.dom,h=KC(d,r);if(!(a=d.getParent(r,d.isBlock))||!$C(d,a)){if(l=(a=a||h)===e.getBody()||function(e){return e&&/^(TD|TH|CAPTION)$/.test(e.nodeName)}(a)?a.nodeName.toLowerCase():a.parentNode.nodeName.toLowerCase(),!a.hasChildNodes())return i=d.create(f),XC(e,i),a.appendChild(i),n.setStart(i,0),n.setEnd(i,0),i;for(s=r;s.parentNode!==a;)s=s.parentNode;for(;s&&!d.isBlock(s);)s=(u=s).previousSibling;if(u&&e.schema.isValidChild(l,f.toLowerCase())){for(i=d.create(f),XC(e,i),u.parentNode.insertBefore(i,u),s=u;s&&!d.isBlock(s);)c=s.nextSibling,i.appendChild(s),s=c;n.setStart(r,o),n.setEnd(r,o)}}return r}(a,p,w,s,i)),c=y.getParent(s,y.isBlock),h=c?y.getParent(c.parentNode,y.isBlock):null,m=c?c.nodeName.toUpperCase():"","LI"!==(g=h?h.nodeName.toUpperCase():"")||x||(h=(c=h).parentNode,m=g),/^(LI|DT|DD)$/.test(m)&&y.isEmpty(c)?uz(a,t,h,c,p):p&&c===a.getBody()||(p=p||"P",Ma(c)?(f=Pa(c),y.isEmpty(c)&&jC(c),nz(a,f)):n()?r():n(!0)?(f=c.parentNode.insertBefore(t(),c),nz(a,qC(c,"HR")?f:c)):((o=function(e){var t=e.cloneRange();return t.setStart(e.startContainer,WC(!0,e.startContainer,e.startOffset)),t.setEnd(e.endContainer,WC(!1,e.endContainer,e.endOffset)),t}(w).cloneRange()).setEndAfter(c),function(e){z(pa(yt.fromDom(e),zt),function(e){var t=e.dom();t.nodeValue=lu(t.nodeValue)})}(d=o.extractContents()),function(e){for(;Ge.isText(e)&&(e.nodeValue=e.nodeValue.replace(/^[\r\n]+/,"")),e=e.firstChild;);}(d),f=d.firstChild,y.insertAfter(d,c),function(e,t,n){var r,o=n,i=[];if(o){for(;o=o.firstChild;){if(e.isBlock(o))return;Ge.isElement(o)&&!t[o.nodeName.toLowerCase()]&&i.push(o)}for(r=i.length;r--;)!(o=i[r]).hasChildNodes()||o.firstChild===o.lastChild&&""===o.firstChild.nodeValue?e.remove(o):(a=e,(u=o)&&"A"===u.nodeName&&a.isEmpty(u)&&e.remove(o));var a,u}}(y,C,f),function(e,t){var n;t.normalize(),(n=t.lastChild)&&!/^(left|right)$/gi.test(e.getStyle(n,"float",!0))||e.add(t,"br")}(y,c),y.isEmpty(c)&&jC(c),f.normalize(),y.isEmpty(f)?(y.remove(f),r()):nz(a,f)),y.setAttrib(f,"id",""),a.fire("NewBlock",{newBlock:f})))},cz=function(e,t){return!!function(e){return Ge.isBr(e.getNode())}(Ds.after(t))||Pc.nextPosition(e,Ds.after(t)).map(function(e){return Ge.isBr(e.getNode())}).getOr(!1)},lz=function(e,t){var n=function(e){var t=d(Ky.isInlineTarget,e),n=Ds.fromRangeStart(e.selection.getRng());return Jy(t,e.getBody(),n).filter(tw)}(e);n.isSome()?n.each(d(nw,e)):JC(e,t)},fz=function(e){return rw(e,pf(e))},dz=function(e){return rw(e,vf(e))},hz=jf([{br:[]},{block:[]},{none:[]}]),mz=function(e,t){return Xy([hw([ow],hz.none()),hw([uw("summary",!0)],hz.br()),hw([sw(!0),cw(!1),fw],hz.br()),hw([sw(!0),cw(!1)],hz.block()),hw([sw(!0),cw(!0),fw],hz.block()),hw([sw(!0),cw(!0)],hz.br()),hw([aw(!0),fw],hz.br()),hw([aw(!0)],hz.block()),hw([iw(!0),fw,dw],hz.block()),hw([iw(!0)],hz.br()),hw([lw],hz.br()),hw([iw(!1),fw],hz.br()),hw([dw],hz.block())],[e,!(!t||!t.shiftKey)]).getOr(hz.none())},gz=function(e,t){mz(e,t).fold(function(){lz(e,t)},function(){sz(e,t)},i)},pz=function(t){t.on("keydown",function(e){e.keyCode===Ah.ENTER&&function(e,t){t.isDefaultPrevented()||(t.preventDefault(),function(e){e.typing&&(e.typing=!1,e.add())}(e.undoManager),e.undoManager.transact(function(){!1===e.selection.isCollapsed()&&e.execCommand("Delete"),gz(e,t)}))}(t,e)})},vz=d(mw,"\xa0"),yz=d(mw," "),bz=function(t){t.on("keydown",function(e){!1===e.isDefaultPrevented()&&function(e,t){Nx([{keyCode:Ah.SPACEBAR,action:Ex(Aw,e)}],t).each(function(e){t.preventDefault()})}(t,e)})},Cz=function(e){e.on("keyup compositionstart",d(Rw,e))},wz=oe().browser,xz=function(t){t.on("keydown",function(e){!1===e.isDefaultPrevented()&&function(e,t){Nx([{keyCode:Ah.END,action:hb(e,!0)},{keyCode:Ah.HOME,action:hb(e,!1)}],t).each(function(e){t.preventDefault()})}(t,e)})},zz=function(e){var t=nb.setupSelectedState(e);Cz(e),Sx(e,t),tz(e,t),pz(e),bz(e),Dw(e),xz(e)},Ez=Xi.DOM,Nz=function(t,e){var n,r,o=t.settings,i=t.getElement(),a=t.getDoc();o.inline||(t.getElement().style.visibility=t.orgVisibility),e||t.inline||(a.open(),a.write(t.iframeHTML),a.close()),t.inline&&(t.on("remove",function(){var e=this.getBody();Ez.removeClass(e,"mce-content-body"),Ez.removeClass(e,"mce-edit-focus"),Ez.setAttrib(e,"contentEditable",null)}),Ez.addClass(i,"mce-content-body"),t.contentDocument=a=j.document,t.contentWindow=j.window,t.bodyElement=i,t.contentAreaContainer=i,o.root_name=i.nodeName.toLowerCase()),(n=t.getBody()).disabled=!0,t.readonly=o.readonly,t.readonly||(t.inline&&"static"===Ez.getStyle(n,"position",!0)&&(n.style.position="relative"),n.contentEditable=t.getParam("content_editable_state",!0)),n.disabled=!1,t.editorUpload=th(t),t.schema=pr(o),t.dom=Xi(a,{keep_values:!0,url_converter:t.convertURL,url_converter_scope:t,hex_colors:o.force_hex_style_colors,update_styles:!0,root_element:t.inline?t.getBody():null,collect:function(){return t.inline},schema:t.schema,contentCssCors:Df(t),referrerPolicy:_f(t),onSetAttrib:function(e){t.fire("SetAttrib",e)}}),t.parser=function(u){var e=Np(u.settings,u.schema);return e.addAttributeFilter("src,href,style,tabindex",function(e,t){for(var n,r,o,i=e.length,a=u.dom;i--;)if(r=(n=e[i]).attr(t),o="data-mce-"+t,!n.attr(o)){if(0===r.indexOf("data:")||0===r.indexOf("blob:"))continue;"style"===t?((r=a.serializeStyle(a.parseStyle(r),n.name)).length||(r=null),n.attr(o,r),n.attr(t,r)):"tabindex"===t?(n.attr(o,r),n.attr(t,null)):n.attr(o,u.convertURL(r,t,n.name))}}),e.addNodeFilter("script",function(e){for(var t,n,r=e.length;r--;)0!==(n=(t=e[r]).attr("type")||"no/type").indexOf("mce-")&&t.attr("type","mce-"+n)}),e.addNodeFilter("#cdata",function(e){for(var t,n=e.length;n--;)(t=e[n]).type=8,t.name="#comment",t.value="[CDATA["+t.value+"]]"}),e.addNodeFilter("p,h1,h2,h3,h4,h5,h6,div",function(e){for(var t,n=e.length,r=u.schema.getNonEmptyElements();n--;)(t=e[n]).isEmpty(r)&&0===t.getAll("br").length&&(t.append(new ul("br",1)).shortEnded=!0)}),e}(t),t.serializer=Ap(o,t),t.selection=ly(t.dom,t.getWin(),t.serializer,t),t.annotator=nl(t),t.formatter=Cp(t),t.undoManager=mm(t),t._nodeChangeDispatcher=new ph(t),t._selectionOverrides=om(t),Hw(t),Ow(t),zz(t),dh(t),t.fire("PreInit"),o.browser_spellcheck||o.gecko_spellcheck||(a.body.spellcheck=!1,Ez.setAttrib(n,"spellcheck","false")),t.quirks=_w(t),t.fire("PostRender");var u=Vf(t);u!==undefined&&(n.dir=u),o.protect&&t.on("BeforeSetContent",function(t){Mn.each(o.protect,function(e){t.content=t.content.replace(e,function(e){return"\x3c!--mce:protected "+escape(e)+"--\x3e"})})}),t.on("SetContent",function(){t.addVisual(t.getBody())}),t.load({initial:!0,format:"html"}),t.startContent=t.getContent({format:"raw"}),t.on("compositionstart compositionend",function(e){t.composing="compositionstart"===e.type}),0<t.contentStyles.length&&(r="",Mn.each(t.contentStyles,function(e){r+=e+"\r\n"}),t.dom.addStyle(r)),function(e){return e.inline?Ez.styleSheetLoader:e.dom.styleSheetLoader}(t).loadAll(t.contentCSS,function(e){Pw(t)},function(e){Pw(t)}),o.content_style&&function(e,t){var n=yt.fromDom(e.getDoc().head),r=yt.fromTag("style");Tt(r,"type","text/css"),Di(r,yt.fromText(t)),Di(n,r)}(t,o.content_style)},Sz=Xi.DOM,kz=function(e,t){var n=Lw(e,t);t.editorContainer&&(Sz.get(t.editorContainer).style.display=e.orgDisplay,e.hidden=Sz.isHidden(t.editorContainer)),e.getElement().style.display="none",Sz.setAttrib(e.id,"aria-hidden","true"),n||Nz(e)},Tz=Xi.DOM,Az=function(t,n,e){var r=jd.get(e),o=jd.urls[e]||t.documentBaseUrl.replace(/\/$/,"");if(e=Mn.trim(e),r&&-1===Mn.inArray(n,e)){if(Mn.each(jd.dependencies(e),function(e){Az(t,n,e)}),t.plugins[e])return;try{var i=new r(t,o,t.$);(t.plugins[e]=i).init&&(i.init(t,o),n.push(e))}catch(yN){Fd.pluginInitError(t,e,yN)}}},Mz=function(e){e.fire("ScriptsLoaded"),function(n){var e=Mn.trim(n.settings.icons),r=n.ui.registry.getAll().icons,t=G(G({},{"accessibility-check":'<svg width="24" height="24"><path d="M12 2a2 2 0 0 1 2 2 2 2 0 0 1-2 2 2 2 0 0 1-2-2c0-1.1.9-2 2-2zm8 7h-5v12c0 .6-.4 1-1 1a1 1 0 0 1-1-1v-5c0-.6-.4-1-1-1a1 1 0 0 0-1 1v5c0 .6-.4 1-1 1a1 1 0 0 1-1-1V9H4a1 1 0 1 1 0-2h16c.6 0 1 .4 1 1s-.4 1-1 1z" fill-rule="nonzero"/></svg>',"action-next":'<svg width="24" height="24"><path fill-rule="nonzero" d="M5.7 7.3a1 1 0 0 0-1.4 1.4l7.7 7.7 7.7-7.7a1 1 0 1 0-1.4-1.4L12 13.6 5.7 7.3z"/></svg>',"action-prev":'<svg width="24" height="24"><path fill-rule="nonzero" d="M18.3 15.7a1 1 0 0 0 1.4-1.4L12 6.6l-7.7 7.7a1 1 0 0 0 1.4 1.4L12 9.4l6.3 6.3z"/></svg>',"align-center":'<svg width="24" height="24"><path d="M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2zm3 4h8c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 1 1 0-2zm0 8h8c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 0 1 0-2zm-3-4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2z" fill-rule="evenodd"/></svg>',"align-justify":'<svg width="24" height="24"><path d="M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2zm0 4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2zm0 4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2zm0 4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2z" fill-rule="evenodd"/></svg>',"align-left":'<svg width="24" height="24"><path d="M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2zm0 4h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2zm0 8h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2zm0-4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2z" fill-rule="evenodd"/></svg>',"align-none":'<svg width="24" height="24"><path d="M14.2 5L13 7H5a1 1 0 1 1 0-2h9.2zm4 0h.8a1 1 0 0 1 0 2h-2l1.2-2zm-6.4 4l-1.2 2H5a1 1 0 0 1 0-2h6.8zm4 0H19a1 1 0 0 1 0 2h-4.4l1.2-2zm-6.4 4l-1.2 2H5a1 1 0 0 1 0-2h4.4zm4 0H19a1 1 0 0 1 0 2h-6.8l1.2-2zM7 17l-1.2 2H5a1 1 0 0 1 0-2h2zm4 0h8a1 1 0 0 1 0 2H9.8l1.2-2zm5.2-13.5l1.3.7-9.7 16.3-1.3-.7 9.7-16.3z" fill-rule="evenodd"/></svg>',"align-right":'<svg width="24" height="24"><path d="M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2zm6 4h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2zm0 8h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2zm-6-4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2z" fill-rule="evenodd"/></svg>',"arrow-left":'<svg width="24" height="24"><path d="M5.6 13l12 6a1 1 0 0 0 1.4-1V6a1 1 0 0 0-1.4-.9l-12 6a1 1 0 0 0 0 1.8z" fill-rule="evenodd"/></svg>',"arrow-right":'<svg width="24" height="24"><path d="M18.5 13l-12 6A1 1 0 0 1 5 18V6a1 1 0 0 1 1.4-.9l12 6a1 1 0 0 1 0 1.8z" fill-rule="evenodd"/></svg>',bold:'<svg width="24" height="24"><path d="M7.8 19c-.3 0-.5 0-.6-.2l-.2-.5V5.7c0-.2 0-.4.2-.5l.6-.2h5c1.5 0 2.7.3 3.5 1 .7.6 1.1 1.4 1.1 2.5a3 3 0 0 1-.6 1.9c-.4.6-1 1-1.6 1.2.4.1.9.3 1.3.6s.8.7 1 1.2c.4.4.5 1 .5 1.6 0 1.3-.4 2.3-1.3 3-.8.7-2.1 1-3.8 1H7.8zm5-8.3c.6 0 1.2-.1 1.6-.5.4-.3.6-.7.6-1.3 0-1.1-.8-1.7-2.3-1.7H9.3v3.5h3.4zm.5 6c.7 0 1.3-.1 1.7-.4.4-.4.6-.9.6-1.5s-.2-1-.7-1.4c-.4-.3-1-.4-2-.4H9.4v3.8h4z" fill-rule="evenodd"/></svg>',bookmark:'<svg width="24" height="24"><path d="M6 4v17l6-4 6 4V4c0-.6-.4-1-1-1H7a1 1 0 0 0-1 1z" fill-rule="nonzero"/></svg>',"border-width":'<svg width="24" height="24"><path d="M5 14.8h14a1 1 0 0 1 0 2H5a1 1 0 0 1 0-2zm-.5 3.7h15c.3 0 .5.2.5.5s-.2.5-.5.5h-15a.5.5 0 1 1 0-1zm.5-8.3h14c.6 0 1 .4 1 1v1c0 .5-.4 1-1 1H5a1 1 0 0 1-1-1v-1c0-.6.4-1 1-1zm0-5.7h14c.6 0 1 .4 1 1v2c0 .6-.4 1-1 1H5a1 1 0 0 1-1-1v-2c0-.6.4-1 1-1z" fill-rule="evenodd"/></svg>',brightness:'<svg width="24" height="24"><path d="M12 17c.3 0 .5.1.7.3.2.2.3.4.3.7v1c0 .3-.1.5-.3.7a1 1 0 0 1-.7.3 1 1 0 0 1-.7-.3 1 1 0 0 1-.3-.7v-1c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3zm0-10a1 1 0 0 1-.7-.3A1 1 0 0 1 11 6V5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3.3 0 .5.1.7.3.2.2.3.4.3.7v1c0 .3-.1.5-.3.7a1 1 0 0 1-.7.3zm7 4c.3 0 .5.1.7.3.2.2.3.4.3.7 0 .3-.1.5-.3.7a1 1 0 0 1-.7.3h-1a1 1 0 0 1-.7-.3 1 1 0 0 1-.3-.7c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h1zM7 12c0 .3-.1.5-.3.7a1 1 0 0 1-.7.3H5a1 1 0 0 1-.7-.3A1 1 0 0 1 4 12c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h1c.3 0 .5.1.7.3.2.2.3.4.3.7zm10 3.5l.7.8c.2.1.3.4.3.6 0 .3-.1.6-.3.8a1 1 0 0 1-.8.3 1 1 0 0 1-.6-.3l-.8-.7a1 1 0 0 1-.3-.8c0-.2.1-.5.3-.7a1 1 0 0 1 1.4 0zm-10-7l-.7-.8a1 1 0 0 1-.3-.6c0-.3.1-.6.3-.8.2-.2.5-.3.8-.3.2 0 .5.1.7.3l.7.7c.2.2.3.5.3.8 0 .2-.1.5-.3.7a1 1 0 0 1-.7.3 1 1 0 0 1-.8-.3zm10 0a1 1 0 0 1-.8.3 1 1 0 0 1-.7-.3 1 1 0 0 1-.3-.7c0-.3.1-.6.3-.8l.8-.7c.1-.2.4-.3.6-.3.3 0 .6.1.8.3.2.2.3.5.3.8 0 .2-.1.5-.3.7l-.7.7zm-10 7c.2-.2.5-.3.8-.3.2 0 .5.1.7.3a1 1 0 0 1 0 1.4l-.8.8a1 1 0 0 1-.6.3 1 1 0 0 1-.8-.3 1 1 0 0 1-.3-.8c0-.2.1-.5.3-.6l.7-.8zM12 8a4 4 0 0 1 3.7 2.4 4 4 0 0 1 0 3.2A4 4 0 0 1 12 16a4 4 0 0 1-3.7-2.4 4 4 0 0 1 0-3.2A4 4 0 0 1 12 8zm0 6.5c.7 0 1.3-.2 1.8-.7.5-.5.7-1.1.7-1.8s-.2-1.3-.7-1.8c-.5-.5-1.1-.7-1.8-.7s-1.3.2-1.8.7c-.5.5-.7 1.1-.7 1.8s.2 1.3.7 1.8c.5.5 1.1.7 1.8.7z" fill-rule="evenodd"/></svg>',browse:'<svg width="24" height="24"><path d="M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-4v-2h4V8H5v10h4v2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14zm-8 9.4l-2.3 2.3a1 1 0 1 1-1.4-1.4l4-4a1 1 0 0 1 1.4 0l4 4a1 1 0 0 1-1.4 1.4L13 13.4V20a1 1 0 0 1-2 0v-6.6z" fill-rule="nonzero"/></svg>',cancel:'<svg width="24" height="24"><path d="M12 4.6a7.4 7.4 0 1 1 0 14.8 7.4 7.4 0 0 1 0-14.8zM12 3a9 9 0 1 0 0 18 9 9 0 0 0 0-18zm0 8L14.8 8l1 1.1-2.7 2.8 2.7 2.7-1.1 1.1-2.7-2.7-2.7 2.7-1-1.1 2.6-2.7-2.7-2.7 1-1.1 2.8 2.7z" fill-rule="nonzero"/></svg>',"change-case":'<svg width="24" height="24"><path d="M18.4 18.2v-.6c-.5.8-1.3 1.2-2.4 1.2-2.2 0-3.3-1.6-3.3-4.8 0-3.1 1-4.7 3.3-4.7 1.1 0 1.8.3 2.4 1.1v-.6c0-.5.4-.8.8-.8s.8.3.8.8v8.4c0 .5-.4.8-.8.8a.8.8 0 0 1-.8-.8zm-2-7.4c-1.3 0-1.8.9-1.8 3.2 0 2.4.5 3.3 1.7 3.3 1.3 0 1.8-.9 1.8-3.2 0-2.4-.5-3.3-1.7-3.3zM10 15.7H5.5l-.8 2.6a1 1 0 0 1-1 .7h-.2a.7.7 0 0 1-.7-1l4-12a1 1 0 1 1 2 0l4 12a.7.7 0 0 1-.8 1h-.2a1 1 0 0 1-1-.7l-.8-2.6zm-.3-1.5l-2-6.5-1.9 6.5h3.9z" fill-rule="evenodd"/></svg>',"character-count":'<svg width="24" height="24"><path d="M4 11.5h16v1H4v-1zm4.8-6.8V10H7.7V5.8h-1v-1h2zM11 8.3V9h2v1h-3V7.7l2-1v-.9h-2v-1h3v2.4l-2 1zm6.3-3.4V10h-3.1V9h2.1V8h-2.1V6.8h2.1v-1h-2.1v-1h3.1zM5.8 16.4c0-.5.2-.8.5-1 .2-.2.6-.3 1.2-.3l.8.1c.2 0 .4.2.5.3l.4.4v2.8l.2.3H8.2v-.1-.2l-.6.3H7c-.4 0-.7 0-1-.2a1 1 0 0 1-.3-.9c0-.3 0-.6.3-.8.3-.2.7-.4 1.2-.4l.6-.2h.3v-.2l-.1-.2a.8.8 0 0 0-.5-.1 1 1 0 0 0-.4 0l-.3.4h-1zm2.3.8h-.2l-.2.1-.4.1a1 1 0 0 0-.4.2l-.2.2.1.3.5.1h.4l.4-.4v-.6zm2-3.4h1.2v1.7l.5-.3h.5c.5 0 .9.1 1.2.5.3.4.5.8.5 1.4 0 .6-.2 1.1-.5 1.5-.3.4-.7.6-1.3.6l-.6-.1-.4-.4v.4h-1.1v-5.4zm1.1 3.3c0 .3 0 .6.2.8a.7.7 0 0 0 1.2 0l.2-.8c0-.4 0-.6-.2-.8a.7.7 0 0 0-.6-.3l-.6.3-.2.8zm6.1-.5c0-.2 0-.3-.2-.4a.8.8 0 0 0-.5-.2c-.3 0-.5.1-.6.3l-.2.9c0 .3 0 .6.2.8.1.2.3.3.6.3.2 0 .4 0 .5-.2l.2-.4h1.1c0 .5-.3.8-.6 1.1a2 2 0 0 1-1.3.4c-.5 0-1-.2-1.3-.6a2 2 0 0 1-.5-1.4c0-.6.1-1.1.5-1.5.3-.4.8-.5 1.4-.5.5 0 1 0 1.2.3.4.3.5.7.5 1.2h-1v-.1z" fill-rule="evenodd"/></svg>',"checklist-rtl":'<svg width="24" height="24"><path d="M5 17h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2zm14.2 11c.2-.4.6-.5.9-.3.3.2.4.6.2 1L18 20c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 0 1 0-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L18 14c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 0 1 0-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L18 8c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 0 1 0-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8z" fill-rule="evenodd"/></svg>',checklist:'<svg width="24" height="24"><path d="M11 17h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2zm0-6h8a1 1 0 0 1 0 2h-8a1 1 0 0 1 0-2zM7.2 16c.2-.4.6-.5.9-.3.3.2.4.6.2 1L6 20c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 0 1 0-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L6 14c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 0 1 0-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L6 8c-.2.3-.7.4-1 0L3.8 6.9a.7.7 0 0 1 0-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8z" fill-rule="evenodd"/></svg>',checkmark:'<svg width="24" height="24"><path d="M18.2 5.4a1 1 0 0 1 1.6 1.2l-8 12a1 1 0 0 1-1.5.1l-5-5a1 1 0 1 1 1.4-1.4l4.1 4.1 7.4-11z" fill-rule="nonzero"/></svg>',"chevron-down":'<svg width="10" height="10"><path d="M8.7 2.2c.3-.3.8-.3 1 0 .4.4.4.9 0 1.2L5.7 7.8c-.3.3-.9.3-1.2 0L.2 3.4a.8.8 0 0 1 0-1.2c.3-.3.8-.3 1.1 0L5 6l3.7-3.8z" fill-rule="nonzero"/></svg>',"chevron-left":'<svg width="10" height="10"><path d="M7.8 1.3L4 5l3.8 3.7c.3.3.3.8 0 1-.4.4-.9.4-1.2 0L2.2 5.7a.8.8 0 0 1 0-1.2L6.6.2C7 0 7.4 0 7.8.2c.3.3.3.8 0 1.1z" fill-rule="nonzero"/></svg>',"chevron-right":'<svg width="10" height="10"><path d="M2.2 1.3a.8.8 0 0 1 0-1c.4-.4.9-.4 1.2 0l4.4 4.1c.3.4.3.9 0 1.2L3.4 9.8c-.3.3-.8.3-1.2 0a.8.8 0 0 1 0-1.1L6 5 2.2 1.3z" fill-rule="nonzero"/></svg>',"chevron-up":'<svg width="10" height="10"><path d="M8.7 7.8L5 4 1.3 7.8c-.3.3-.8.3-1 0a.8.8 0 0 1 0-1.2l4.1-4.4c.3-.3.9-.3 1.2 0l4.2 4.4c.3.3.3.9 0 1.2-.3.3-.8.3-1.1 0z" fill-rule="nonzero"/></svg>',close:'<svg width="24" height="24"><path d="M17.3 8.2L13.4 12l3.9 3.8a1 1 0 0 1-1.5 1.5L12 13.4l-3.8 3.9a1 1 0 0 1-1.5-1.5l3.9-3.8-3.9-3.8a1 1 0 0 1 1.5-1.5l3.8 3.9 3.8-3.9a1 1 0 0 1 1.5 1.5z" fill-rule="evenodd"/></svg>',"code-sample":'<svg width="24" height="26"><path d="M7.1 11a2.8 2.8 0 0 1-.8 2 2.8 2.8 0 0 1 .8 2v1.7c0 .3.1.6.4.8.2.3.5.4.8.4.3 0 .4.2.4.4v.8c0 .2-.1.4-.4.4-.7 0-1.4-.3-2-.8-.5-.6-.8-1.3-.8-2V15c0-.3-.1-.6-.4-.8-.2-.3-.5-.4-.8-.4a.4.4 0 0 1-.4-.4v-.8c0-.2.2-.4.4-.4.3 0 .6-.1.8-.4.3-.2.4-.5.4-.8V9.3c0-.7.3-1.4.8-2 .6-.5 1.3-.8 2-.8.3 0 .4.2.4.4v.8c0 .2-.1.4-.4.4-.3 0-.6.1-.8.4-.3.2-.4.5-.4.8V11zm9.8 0V9.3c0-.3-.1-.6-.4-.8-.2-.3-.5-.4-.8-.4a.4.4 0 0 1-.4-.4V7c0-.2.1-.4.4-.4.7 0 1.4.3 2 .8.5.6.8 1.3.8 2V11c0 .3.1.6.4.8.2.3.5.4.8.4.2 0 .4.2.4.4v.8c0 .2-.2.4-.4.4-.3 0-.6.1-.8.4-.3.2-.4.5-.4.8v1.7c0 .7-.3 1.4-.8 2-.6.5-1.3.8-2 .8a.4.4 0 0 1-.4-.4v-.8c0-.2.1-.4.4-.4.3 0 .6-.1.8-.4.3-.2.4-.5.4-.8V15a2.8 2.8 0 0 1 .8-2 2.8 2.8 0 0 1-.8-2zm-3.3-.4c0 .4-.1.8-.5 1.1-.3.3-.7.5-1.1.5-.4 0-.8-.2-1.1-.5-.4-.3-.5-.7-.5-1.1 0-.5.1-.9.5-1.2.3-.3.7-.4 1.1-.4.4 0 .8.1 1.1.4.4.3.5.7.5 1.2zM12 13c.4 0 .8.1 1.1.5.4.3.5.7.5 1.1 0 1-.1 1.6-.5 2a3 3 0 0 1-1.1 1c-.4.3-.8.4-1.1.4a.5.5 0 0 1-.5-.5V17a3 3 0 0 0 1-.2l.6-.6c-.6 0-1-.2-1.3-.5-.2-.3-.3-.7-.3-1 0-.5.1-1 .5-1.2.3-.4.7-.5 1.1-.5z" fill-rule="evenodd"/></svg>',"color-levels":'<svg width="24" height="24"><path d="M17.5 11.4A9 9 0 0 1 18 14c0 .5 0 1-.2 1.4 0 .4-.3.9-.5 1.3a6.2 6.2 0 0 1-3.7 3 5.7 5.7 0 0 1-3.2 0A5.9 5.9 0 0 1 7.6 18a6.2 6.2 0 0 1-1.4-2.6 6.7 6.7 0 0 1 0-2.8c0-.4.1-.9.3-1.3a13.6 13.6 0 0 1 2.3-4A20 20 0 0 1 12 4a26.4 26.4 0 0 1 3.2 3.4 18.2 18.2 0 0 1 2.3 4zm-2 4.5c.4-.7.5-1.4.5-2a7.3 7.3 0 0 0-1-3.2c.2.6.2 1.2.2 1.9a4.5 4.5 0 0 1-1.3 3 5.3 5.3 0 0 1-2.3 1.5 4.9 4.9 0 0 1-2 .1 4.3 4.3 0 0 0 2.4.8 4 4 0 0 0 2-.6 4 4 0 0 0 1.5-1.5z" fill-rule="evenodd"/></svg>',"color-picker":'<svg width="24" height="24"><path d="M12 3a9 9 0 0 0 0 18 1.5 1.5 0 0 0 1.1-2.5c-.2-.3-.4-.6-.4-1 0-.8.7-1.5 1.5-1.5H16a5 5 0 0 0 5-5c0-4.4-4-8-9-8zm-5.5 9a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm3-4a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm3 4a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3z" fill-rule="nonzero"/></svg>',"color-swatch-remove-color":'<svg width="24" height="24"><path stroke="#000" stroke-width="2" d="M21 3L3 21" fill-rule="evenodd"/></svg>',"color-swatch":'<svg width="24" height="24"><rect x="3" y="3" width="18" height="18" rx="1" fill-rule="evenodd"/></svg>',"comment-add":'<svg width="24" height="24"><g fill-rule="nonzero"><path d="M9 19l3-2h7c.6 0 1-.4 1-1V6c0-.6-.4-1-1-1H5a1 1 0 0 0-1 1v10c0 .6.4 1 1 1h4v2zm-2 4v-4H5a3 3 0 0 1-3-3V6a3 3 0 0 1 3-3h14a3 3 0 0 1 3 3v10a3 3 0 0 1-3 3h-6.4L7 23z"/><path d="M13 10h2a1 1 0 0 1 0 2h-2v2a1 1 0 0 1-2 0v-2H9a1 1 0 0 1 0-2h2V8a1 1 0 0 1 2 0v2z"/></g></svg>',comment:'<svg width="24" height="24"><path fill-rule="nonzero" d="M9 19l3-2h7c.6 0 1-.4 1-1V6c0-.6-.4-1-1-1H5a1 1 0 0 0-1 1v10c0 .6.4 1 1 1h4v2zm-2 4v-4H5a3 3 0 0 1-3-3V6a3 3 0 0 1 3-3h14a3 3 0 0 1 3 3v10a3 3 0 0 1-3 3h-6.4L7 23z"/></svg>',contrast:'<svg width="24" height="24"><path d="M12 4a7.8 7.8 0 0 1 5.7 2.3A8 8 0 1 1 12 4zm-6 8a6 6 0 0 0 6 6V6a6 6 0 0 0-6 6z" fill-rule="evenodd"/></svg>',copy:'<svg width="24" height="24"><path d="M16 3H6a2 2 0 0 0-2 2v11h2V5h10V3zm1 4a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-7a2 2 0 0 1-2-2V9c0-1.2.9-2 2-2h7zm0 12V9h-7v10h7z" fill-rule="nonzero"/></svg>',crop:'<svg width="24" height="24"><path d="M17 8v7h2c.6 0 1 .4 1 1s-.4 1-1 1h-2v2c0 .6-.4 1-1 1a1 1 0 0 1-1-1v-2H7V9H5a1 1 0 1 1 0-2h2V5c0-.6.4-1 1-1s1 .4 1 1v2h7l3-3 1 1-3 3zM9 9v5l5-5H9zm1 6h5v-5l-5 5z" fill-rule="evenodd"/></svg>',cut:'<svg width="24" height="24"><path d="M18 15c.6.7 1 1.4 1 2.3 0 .8-.2 1.5-.7 2l-.8.5-1 .2c-.4 0-.8 0-1.2-.3a3.9 3.9 0 0 1-2.1-2.2c-.2-.5-.3-1-.2-1.5l-1-1-1 1c0 .5 0 1-.2 1.5-.1.5-.4 1-.9 1.4-.3.4-.7.6-1.2.8l-1.2.3c-.4 0-.7 0-1-.2-.3 0-.6-.3-.8-.5-.5-.5-.8-1.2-.7-2 0-.9.4-1.6 1-2.2A3.7 3.7 0 0 1 8.6 14H9l1-1-4-4-.5-1a3.3 3.3 0 0 1 0-2c0-.4.3-.7.5-1l6 6 6-6 .5 1a3.3 3.3 0 0 1 0 2c0 .4-.3.7-.5 1l-4 4 1 1h.5c.4 0 .8 0 1.2.3.5.2.9.4 1.2.8zm-8.5 2.2l.1-.4v-.3-.4a1 1 0 0 0-.2-.5 1 1 0 0 0-.4-.2 1.6 1.6 0 0 0-.8 0 2.6 2.6 0 0 0-.8.3 2.5 2.5 0 0 0-.9 1.1l-.1.4v.7l.2.5.5.2h.7a2.5 2.5 0 0 0 .8-.3 2.8 2.8 0 0 0 1-1zm2.5-2.8c.4 0 .7-.1 1-.4.3-.3.4-.6.4-1s-.1-.7-.4-1c-.3-.3-.6-.4-1-.4s-.7.1-1 .4c-.3.3-.4.6-.4 1s.1.7.4 1c.3.3.6.4 1 .4zm5.4 4l.2-.5v-.4-.3a2.6 2.6 0 0 0-.3-.8 2.4 2.4 0 0 0-.7-.7 2.5 2.5 0 0 0-.8-.3 1.5 1.5 0 0 0-.8 0 1 1 0 0 0-.4.2 1 1 0 0 0-.2.5 1.5 1.5 0 0 0 0 .7v.4l.3.4.3.4a2.8 2.8 0 0 0 .8.5l.4.1h.7l.5-.2z" fill-rule="evenodd"/></svg>',"document-properties":'<svg width="24" height="24"><path d="M14.4 3H7a2 2 0 0 0-2 2v14c0 1.1.9 2 2 2h10a2 2 0 0 0 2-2V7.6L14.4 3zM17 19H7V5h6v4h4v10z" fill-rule="nonzero"/></svg>',drag:'<svg width="24" height="24"><path d="M13 5h2v2h-2V5zm0 4h2v2h-2V9zM9 9h2v2H9V9zm4 4h2v2h-2v-2zm-4 0h2v2H9v-2zm0 4h2v2H9v-2zm4 0h2v2h-2v-2zM9 5h2v2H9V5z" fill-rule="evenodd"/></svg>',duplicate:'<svg width="24" height="24"><g fill-rule="nonzero"><path d="M16 3v2H6v11H4V5c0-1.1.9-2 2-2h10zm3 8h-2V9h-7v10h9a2 2 0 0 1-2 2h-7a2 2 0 0 1-2-2V9c0-1.2.9-2 2-2h7a2 2 0 0 1 2 2v2z"/><path d="M17 14h1a1 1 0 0 1 0 2h-1v1a1 1 0 0 1-2 0v-1h-1a1 1 0 0 1 0-2h1v-1a1 1 0 0 1 2 0v1z"/></g></svg>',"edit-block":'<svg width="24" height="24"><path fill-rule="nonzero" d="M19.8 8.8l-9.4 9.4c-.2.2-.5.4-.9.4l-5.4 1.2 1.2-5.4.5-.8 9.4-9.4c.7-.7 1.8-.7 2.5 0l2.1 2.1c.7.7.7 1.8 0 2.5zm-2-.2l1-.9v-.3l-2.2-2.2a.3.3 0 0 0-.3 0l-1 1L18 8.5zm-1 1l-2.5-2.4-6 6 2.5 2.5 6-6zm-7 7.1l-2.6-2.4-.3.3-.1.2-.7 3 3.1-.6h.1l.4-.5z"/></svg>',"edit-image":'<svg width="24" height="24"><path d="M18 16h2V7a2 2 0 0 0-2-2H7v2h11v9zM6 17h15a1 1 0 0 1 0 2h-1v1a1 1 0 0 1-2 0v-1H6a2 2 0 0 1-2-2V7H3a1 1 0 1 1 0-2h1V4a1 1 0 1 1 2 0v13zm3-5.3l1.3 2 3-4.7 3.7 6H7l2-3.3z" fill-rule="nonzero"/></svg>',"embed-page":'<svg width="24" height="24"><path d="M19 6V5H5v14h2A13 13 0 0 1 19 6zm0 1.4c-.8.8-1.6 2.4-2.2 4.6H19V7.4zm0 5.6h-2.4c-.4 1.8-.6 3.8-.6 6h3v-6zm-4 6c0-2.2.2-4.2.6-6H13c-.7 1.8-1.1 3.8-1.1 6h3zm-4 0c0-2.2.4-4.2 1-6H9.6A12 12 0 0 0 8 19h3zM4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 0 1-1-1V4c0-.6.4-1 1-1zm11.8 9c.4-1.9 1-3.4 1.8-4.5a9.2 9.2 0 0 0-4 4.5h2.2zm-3.4 0a12 12 0 0 1 2.8-4 12 12 0 0 0-5 4h2.2z" fill-rule="nonzero"/></svg>',embed:'<svg width="24" height="24"><path d="M4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 0 1-1-1V4c0-.6.4-1 1-1zm1 2v14h14V5H5zm4.8 2.6l5.6 4a.5.5 0 0 1 0 .8l-5.6 4A.5.5 0 0 1 9 16V8a.5.5 0 0 1 .8-.4z" fill-rule="nonzero"/></svg>',emoji:'<svg width="24" height="24"><path d="M9 11c.6 0 1-.4 1-1s-.4-1-1-1a1 1 0 0 0-1 1c0 .6.4 1 1 1zm6 0c.6 0 1-.4 1-1s-.4-1-1-1a1 1 0 0 0-1 1c0 .6.4 1 1 1zm-3 5.5c2.1 0 4-1.5 4.4-3.5H7.6c.5 2 2.3 3.5 4.4 3.5zM12 4a8 8 0 1 0 0 16 8 8 0 0 0 0-16zm0 14.5a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13z" fill-rule="nonzero"/></svg>',fill:'<svg width="24" height="26"><path d="M16.6 12l-9-9-1.4 1.4 2.4 2.4-5.2 5.1c-.5.6-.5 1.6 0 2.2L9 19.6a1.5 1.5 0 0 0 2.2 0l5.5-5.5c.5-.6.5-1.6 0-2.2zM5.2 13L10 8.2l4.8 4.8H5.2zM19 14.5s-2 2.2-2 3.5c0 1.1.9 2 2 2a2 2 0 0 0 2-2c0-1.3-2-3.5-2-3.5z" fill-rule="nonzero"/></svg>',"flip-horizontally":'<svg width="24" height="24"><path d="M14 19h2v-2h-2v2zm4-8h2V9h-2v2zM4 7v10c0 1.1.9 2 2 2h3v-2H6V7h3V5H6a2 2 0 0 0-2 2zm14-2v2h2a2 2 0 0 0-2-2zm-7 16h2V3h-2v18zm7-6h2v-2h-2v2zm-4-8h2V5h-2v2zm4 12a2 2 0 0 0 2-2h-2v2z" fill-rule="nonzero"/></svg>',"flip-vertically":'<svg width="24" height="24"><path d="M5 14v2h2v-2H5zm8 4v2h2v-2h-2zm4-14H7a2 2 0 0 0-2 2v3h2V6h10v3h2V6a2 2 0 0 0-2-2zm2 14h-2v2a2 2 0 0 0 2-2zM3 11v2h18v-2H3zm6 7v2h2v-2H9zm8-4v2h2v-2h-2zM5 18c0 1.1.9 2 2 2v-2H5z" fill-rule="nonzero"/></svg>',"format-painter":'<svg width="24" height="24"><path d="M18 5V4c0-.5-.4-1-1-1H5a1 1 0 0 0-1 1v4c0 .6.5 1 1 1h12c.6 0 1-.4 1-1V7h1v4H9v9c0 .6.4 1 1 1h2c.6 0 1-.4 1-1v-7h8V5h-3z" fill-rule="nonzero"/></svg>',fullscreen:'<svg width="24" height="24"><path d="M15.3 10l-1.2-1.3 2.9-3h-2.3a.9.9 0 1 1 0-1.7H19c.5 0 .9.4.9.9v4.4a.9.9 0 1 1-1.8 0V7l-2.9 3zm0 4l3 3v-2.3a.9.9 0 1 1 1.7 0V19c0 .5-.4.9-.9.9h-4.4a.9.9 0 1 1 0-1.8H17l-3-2.9 1.3-1.2zM10 15.4l-2.9 3h2.3a.9.9 0 1 1 0 1.7H5a.9.9 0 0 1-.9-.9v-4.4a.9.9 0 1 1 1.8 0V17l2.9-3 1.2 1.3zM8.7 10L5.7 7v2.3a.9.9 0 0 1-1.7 0V5c0-.5.4-.9.9-.9h4.4a.9.9 0 0 1 0 1.8H7l3 2.9-1.3 1.2z" fill-rule="nonzero"/></svg>',gallery:'<svg width="24" height="24"><path fill-rule="nonzero" d="M5 15.7l2.3-2.2c.3-.3.7-.3 1 0L11 16l5.1-5c.3-.4.8-.4 1 0l2 1.9V8H5v7.7zM5 18V19h3l1.8-1.9-2-2L5 17.9zm14-3l-2.5-2.4-6.4 6.5H19v-4zM4 6h16c.6 0 1 .4 1 1v13c0 .6-.4 1-1 1H4a1 1 0 0 1-1-1V7c0-.6.4-1 1-1zm6 7a2 2 0 1 1 0-4 2 2 0 0 1 0 4zM4.5 4h15a.5.5 0 1 1 0 1h-15a.5.5 0 0 1 0-1zm2-2h11a.5.5 0 1 1 0 1h-11a.5.5 0 0 1 0-1z"/></svg>',gamma:'<svg width="24" height="24"><path d="M4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 0 1-1-1V4c0-.6.4-1 1-1zm1 2v14h14V5H5zm6.5 11.8V14L9.2 8.7a5.1 5.1 0 0 0-.4-.8l-.1-.2H8 8v-1l.3-.1.3-.1h.7a1 1 0 0 1 .6.5l.1.3a8.5 8.5 0 0 1 .3.6l1.9 4.6 2-5.2a1 1 0 0 1 1-.6.5.5 0 0 1 .5.6L13 14v2.8a.7.7 0 0 1-1.4 0z" fill-rule="nonzero"/></svg>',help:'<svg width="24" height="24"><g fill-rule="evenodd"><path d="M12 5.5a6.5 6.5 0 0 0-6 9 6.3 6.3 0 0 0 1.4 2l1 1a6.3 6.3 0 0 0 3.6 1 6.5 6.5 0 0 0 6-9 6.3 6.3 0 0 0-1.4-2l-1-1a6.3 6.3 0 0 0-3.6-1zM12 4a7.8 7.8 0 0 1 5.7 2.3A8 8 0 1 1 12 4z"/><path d="M9.6 9.7a.7.7 0 0 1-.7-.8c0-1.1 1.5-1.8 3.2-1.8 1.8 0 3.2.8 3.2 2.4 0 1.4-.4 2.1-1.5 2.8-.2 0-.3.1-.3.2a2 2 0 0 0-.8.8.8.8 0 0 1-1.4-.6c.3-.7.8-1 1.3-1.5l.4-.2c.7-.4.8-.6.8-1.5 0-.5-.6-.9-1.7-.9-.5 0-1 .1-1.4.3-.2 0-.3.1-.3.2v-.2c0 .4-.4.8-.8.8z" fill-rule="nonzero"/><circle cx="12" cy="16" r="1"/></g></svg>',"highlight-bg-color":'<svg width="24" height="24"><g fill-rule="evenodd"><path id="tox-icon-highlight-bg-color__color" d="M3 18h18v3H3z"/><path fill-rule="nonzero" d="M7.7 16.7H3l3.3-3.3-.7-.8L10.2 8l4 4.1-4 4.2c-.2.2-.6.2-.8 0l-.6-.7-1.1 1.1zm5-7.5L11 7.4l3-2.9a2 2 0 0 1 2.6 0L18 6c.7.7.7 2 0 2.7l-2.9 2.9-1.8-1.8-.5-.6"/></g></svg>',home:'<svg width="24" height="24"><path fill-rule="nonzero" d="M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z"/></svg>',"horizontal-rule":'<svg width="24" height="24"><path d="M4 11h16v2H4z" fill-rule="evenodd"/></svg>',"image-options":'<svg width="24" height="24"><path d="M6 10a2 2 0 0 0-2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2 2 2 0 0 0-2-2zm12 0a2 2 0 0 0-2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2 2 2 0 0 0-2-2zm-6 0a2 2 0 0 0-2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2 2 2 0 0 0-2-2z" fill-rule="nonzero"/></svg>',image:'<svg width="24" height="24"><path d="M5 15.7l3.3-3.2c.3-.3.7-.3 1 0L12 15l4.1-4c.3-.4.8-.4 1 0l2 1.9V5H5v10.7zM5 18V19h3l2.8-2.9-2-2L5 17.9zm14-3l-2.5-2.4-6.4 6.5H19v-4zM4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 0 1-1-1V4c0-.6.4-1 1-1zm6 8a2 2 0 1 0 0-4 2 2 0 0 0 0 4z" fill-rule="nonzero"/></svg>',indent:'<svg width="24" height="24"><path d="M7 5h12c.6 0 1 .4 1 1s-.4 1-1 1H7a1 1 0 1 1 0-2zm5 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 0 1 0-2zm0 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 0 1 0-2zm-5 4h12a1 1 0 0 1 0 2H7a1 1 0 0 1 0-2zm-2.6-3.8L6.2 12l-1.8-1.2a1 1 0 0 1 1.2-1.6l3 2a1 1 0 0 1 0 1.6l-3 2a1 1 0 1 1-1.2-1.6z" fill-rule="evenodd"/></svg>',info:'<svg width="24" height="24"><path d="M12 4a7.8 7.8 0 0 1 5.7 2.3A8 8 0 1 1 12 4zm-1 3v2h2V7h-2zm3 10v-1h-1v-5h-3v1h1v4h-1v1h4z" fill-rule="evenodd"/></svg>',"insert-character":'<svg width="24" height="24"><path d="M15 18h4l1-2v4h-6v-3.3l1.4-1a6 6 0 0 0 1.8-2.9 6.3 6.3 0 0 0-.1-4.1 5.8 5.8 0 0 0-3-3.2c-.6-.3-1.3-.5-2.1-.5a5.1 5.1 0 0 0-3.9 1.8 6.3 6.3 0 0 0-1.3 6 6.2 6.2 0 0 0 1.8 3l1.4.9V20H4v-4l1 2h4v-.5l-2-1L5.4 15A6.5 6.5 0 0 1 4 11c0-1 .2-1.9.6-2.7A7 7 0 0 1 6.3 6C7.1 5.4 8 5 9 4.5c1-.3 2-.5 3.1-.5a8.8 8.8 0 0 1 5.7 2 7 7 0 0 1 1.7 2.3 6 6 0 0 1 .2 4.8c-.2.7-.6 1.3-1 1.9a7.6 7.6 0 0 1-3.6 2.5v.5z" fill-rule="evenodd"/></svg>',"insert-time":'<svg width="24" height="24"><g fill-rule="nonzero"><path d="M12 19a7 7 0 1 0 0-14 7 7 0 0 0 0 14zm0 2a9 9 0 1 1 0-18 9 9 0 0 1 0 18z"/><path d="M16 12h-3V7c0-.6-.4-1-1-1a1 1 0 0 0-1 1v7h5c.6 0 1-.4 1-1s-.4-1-1-1z"/></g></svg>',invert:'<svg width="24" height="24"><path d="M18 19.3L16.5 18a5.8 5.8 0 0 1-3.1 1.9 6.1 6.1 0 0 1-5.5-1.6A5.8 5.8 0 0 1 6 14v-.3l.1-1.2A13.9 13.9 0 0 1 7.7 9l-3-3 .7-.8 2.8 2.9 9 8.9 1.5 1.6-.7.6zm0-5.5v.3l-.1 1.1-.4 1-1.2-1.2a4.3 4.3 0 0 0 .2-1v-.2c0-.4 0-.8-.2-1.3l-.5-1.4a14.8 14.8 0 0 0-3-4.2L12 6a26.1 26.1 0 0 0-2.2 2.5l-1-1a20.9 20.9 0 0 1 2.9-3.3L12 4l1 .8a22.2 22.2 0 0 1 4 5.4c.6 1.2 1 2.4 1 3.6z" fill-rule="evenodd"/></svg>',italic:'<svg width="24" height="24"><path d="M16.7 4.7l-.1.9h-.3c-.6 0-1 0-1.4.3-.3.3-.4.6-.5 1.1l-2.1 9.8v.6c0 .5.4.8 1.4.8h.2l-.2.8H8l.2-.8h.2c1.1 0 1.8-.5 2-1.5l2-9.8.1-.5c0-.6-.4-.8-1.4-.8h-.3l.2-.9h5.8z" fill-rule="evenodd"/></svg>',line:'<svg width="24" height="24"><path d="M15 9l-8 8H4v-3l8-8 3 3zm1-1l-3-3 1-1h1c-.2 0 0 0 0 0l2 2s0 .2 0 0v1l-1 1zM4 18h16v2H4v-2z" fill-rule="evenodd"/></svg>',link:'<svg width="24" height="24"><path d="M6.2 12.3a1 1 0 0 1 1.4 1.4l-2.1 2a2 2 0 1 0 2.7 2.8l4.8-4.8a1 1 0 0 0 0-1.4 1 1 0 1 1 1.4-1.3 2.9 2.9 0 0 1 0 4L9.6 20a3.9 3.9 0 0 1-5.5-5.5l2-2zm11.6-.6a1 1 0 0 1-1.4-1.4l2-2a2 2 0 1 0-2.6-2.8L11 10.3a1 1 0 0 0 0 1.4A1 1 0 1 1 9.6 13a2.9 2.9 0 0 1 0-4L14.4 4a3.9 3.9 0 0 1 5.5 5.5l-2 2z" fill-rule="nonzero"/></svg>',"list-bull-circle":'<svg width="48" height="48"><g fill-rule="evenodd"><path d="M11 16a2 2 0 1 0 0-4 2 2 0 0 0 0 4zm0 1a3 3 0 1 1 0-6 3 3 0 0 1 0 6zM11 26a2 2 0 1 0 0-4 2 2 0 0 0 0 4zm0 1a3 3 0 1 1 0-6 3 3 0 0 1 0 6zM11 36a2 2 0 1 0 0-4 2 2 0 0 0 0 4zm0 1a3 3 0 1 1 0-6 3 3 0 0 1 0 6z" fill-rule="nonzero"/><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/></g></svg>',"list-bull-default":'<svg width="48" height="48"><g fill-rule="evenodd"><circle cx="11" cy="14" r="3"/><circle cx="11" cy="24" r="3"/><circle cx="11" cy="34" r="3"/><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/></g></svg>',"list-bull-square":'<svg width="48" height="48"><g fill-rule="evenodd"><path d="M8 11h6v6H8zM8 21h6v6H8zM8 31h6v6H8z"/><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/></g></svg>',"list-num-default-rtl":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M37.4 17v-4.8l-1.6 1v-1.1l1.6-1h1.2V17zM33.3 17.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm1.7 5.7c0-1.2 1-2 2.2-2 1.3 0 2.1.8 2.1 1.8 0 .7-.3 1.2-1.3 2.2l-1.2 1v.2h2.6v1h-4.3v-.9l2-1.9c.8-.8 1-1.1 1-1.5 0-.5-.4-.8-1-.8-.5 0-.9.3-.9.9H35zm-1.7 4.3c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm3.2 7.3v-1h.7c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7s-1 .3-1 .8H35c0-1.1 1-1.8 2.2-1.8 1.2 0 2.1.6 2.1 1.6 0 .7-.4 1.2-1 1.3v.1c.7.1 1.3.7 1.3 1.4 0 1-1 1.9-2.4 1.9-1.3 0-2.2-.8-2.3-2h1.2c0 .6.5 1 1.1 1 .6 0 1-.4 1-1 0-.5-.3-.8-1-.8h-.7zm-3.3 2.7c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7z"/></g></svg>',"list-num-default":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M10 17v-4.8l-1.5 1v-1.1l1.6-1h1.2V17h-1.2zm3.6.1c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7zm-5 5.7c0-1.2.8-2 2.1-2s2.1.8 2.1 1.8c0 .7-.3 1.2-1.4 2.2l-1.1 1v.2h2.6v1H8.6v-.9l2-1.9c.8-.8 1-1.1 1-1.5 0-.5-.4-.8-1-.8-.5 0-.9.3-.9.9H8.5zm6.3 4.3c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zM10 34.4v-1h.7c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7s-1 .3-1 .8H8.6c0-1.1 1-1.8 2.2-1.8 1.3 0 2.1.6 2.1 1.6 0 .7-.4 1.2-1 1.3v.1c.8.1 1.3.7 1.3 1.4 0 1-1 1.9-2.4 1.9-1.3 0-2.2-.8-2.3-2h1.2c0 .6.5 1 1.1 1 .7 0 1-.4 1-1 0-.5-.3-.8-1-.8h-.7zm4.7 2.7c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7z"/></g></svg>',"list-num-lower-alpha-rtl":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M36.5 16c-.9 0-1.5-.5-1.5-1.3s.6-1.3 1.8-1.4h1v-.4c0-.4-.2-.6-.7-.6-.4 0-.7.1-.8.4h-1.1c0-.8.8-1.4 2-1.4S39 12 39 13V16h-1.2v-.6c-.3.4-.8.7-1.4.7zm.4-.8c.6 0 1-.4 1-.9V14h-1c-.5.1-.7.3-.7.6 0 .4.3.6.7.6zM33.1 16.1c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7zM37.7 26c-.7 0-1.2-.2-1.5-.7v.7H35v-6.3h1.2v2.5c.3-.5.8-.9 1.5-.9 1.1 0 1.8 1 1.8 2.4 0 1.5-.7 2.4-1.8 2.4zm-.5-3.6c-.6 0-1 .5-1 1.3s.4 1.4 1 1.4c.7 0 1-.6 1-1.4 0-.8-.3-1.3-1-1.3zM33.2 26.1c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7zm6 7h-1c-.1-.5-.4-.8-1-.8s-1 .5-1 1.4c0 1 .4 1.4 1 1.4.5 0 .9-.2 1-.7h1c0 1-.8 1.7-2 1.7-1.4 0-2.2-.9-2.2-2.4s.8-2.4 2.2-2.4c1.2 0 2 .7 2 1.7zm-6.1 3c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',"list-num-lower-alpha":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M10.3 15.2c.5 0 1-.4 1-.9V14h-1c-.5.1-.8.3-.8.6 0 .4.3.6.8.6zm-.4.9c-1 0-1.5-.6-1.5-1.4 0-.8.6-1.3 1.7-1.4h1.1v-.4c0-.4-.2-.6-.7-.6-.5 0-.8.1-.9.4h-1c0-.8.8-1.4 2-1.4 1.1 0 1.8.6 1.8 1.6V16h-1.1v-.6h-.1c-.2.4-.7.7-1.3.7zm4.6 0c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm-3.2 10c-.6 0-1.2-.3-1.4-.8v.7H8.5v-6.3H10v2.5c.3-.5.8-.9 1.4-.9 1.2 0 1.9 1 1.9 2.4 0 1.5-.7 2.4-1.9 2.4zm-.4-3.7c-.7 0-1 .5-1 1.3s.3 1.4 1 1.4c.6 0 1-.6 1-1.4 0-.8-.4-1.3-1-1.3zm4 3.7c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm-2.2 7h-1.2c0-.5-.4-.8-.9-.8-.6 0-1 .5-1 1.4 0 1 .4 1.4 1 1.4.5 0 .8-.2 1-.7h1c0 1-.8 1.7-2 1.7-1.4 0-2.2-.9-2.2-2.4s.8-2.4 2.2-2.4c1.2 0 2 .7 2 1.7zm1.8 3c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',"list-num-lower-greek-rtl":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M37.4 16c-1.2 0-2-.8-2-2.3 0-1.5.8-2.4 2-2.4.6 0 1 .4 1.3 1v-.9H40v3.2c0 .4.1.5.4.5h.2v.9h-.6c-.6 0-1-.2-1-.7h-.2c-.2.4-.7.8-1.3.8zm.3-1c.6 0 1-.5 1-1.3s-.4-1.3-1-1.3-1 .5-1 1.3.4 1.4 1 1.4zM33.3 16.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zM36 21.9c0-1.5.8-2.3 2.1-2.3 1.2 0 2 .6 2 1.6 0 .6-.3 1-.9 1.3.9.3 1.3.8 1.3 1.7 0 1.2-.7 1.9-1.8 1.9-.6 0-1.1-.3-1.4-.8v2.2H36V22zm1.8 1.2v-1h.3c.5 0 .9-.2.9-.7 0-.5-.3-.8-.9-.8-.5 0-.8.3-.8 1v2.2c0 .8.4 1.3 1 1.3s1-.4 1-1-.4-1-1.2-1h-.3zM33.3 26.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zM37.1 34.6L34.8 30h1.4l1.7 3.5 1.7-3.5h1.1l-2.2 4.6v.1c.5.8.7 1.4.7 1.8 0 .4-.2.8-.4 1-.2.2-.6.3-1 .3-.9 0-1.3-.4-1.3-1.2 0-.5.2-1 .5-1.7l.1-.2zm.7 1a2 2 0 0 0-.4.9c0 .3.1.4.4.4.3 0 .4-.1.4-.4 0-.2-.1-.6-.4-1zM33.3 36.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',"list-num-lower-greek":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M10.5 15c.7 0 1-.5 1-1.3s-.3-1.3-1-1.3c-.5 0-.9.5-.9 1.3s.4 1.4 1 1.4zm-.3 1c-1.1 0-1.8-.8-1.8-2.3 0-1.5.7-2.4 1.8-2.4.7 0 1.1.4 1.3 1h.1v-.9h1.2v3.2c0 .4.1.5.4.5h.2v.9h-.6c-.6 0-1-.2-1.1-.7h-.1c-.2.4-.7.8-1.4.8zm5 .1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7zm-4.9 7v-1h.3c.6 0 1-.2 1-.7 0-.5-.4-.8-1-.8-.5 0-.8.3-.8 1v2.2c0 .8.4 1.3 1.1 1.3.6 0 1-.4 1-1s-.5-1-1.3-1h-.3zM8.6 22c0-1.5.7-2.3 2-2.3 1.2 0 2 .6 2 1.6 0 .6-.3 1-.8 1.3.8.3 1.3.8 1.3 1.7 0 1.2-.8 1.9-1.9 1.9-.6 0-1.1-.3-1.3-.8v2.2H8.5V22zm6.2 4.2c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7zm-4.5 8.5L8 30h1.4l1.7 3.5 1.7-3.5h1.1l-2.2 4.6v.1c.5.8.7 1.4.7 1.8 0 .4-.1.8-.4 1-.2.2-.6.3-1 .3-.9 0-1.3-.4-1.3-1.2 0-.5.2-1 .5-1.7l.1-.2zm.7 1a2 2 0 0 0-.4.9c0 .3.1.4.4.4.3 0 .4-.1.4-.4 0-.2-.1-.6-.4-1zm4.5.5c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',"list-num-lower-roman-rtl":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M32.9 16v-1.2h-1.3V16H33zm0 10v-1.2h-1.3V26H33zm0 10v-1.2h-1.3V36H33z"/><path fill-rule="nonzero" d="M36 21h-1.5v5H36zM36 31h-1.5v5H36zM39 21h-1.5v5H39zM39 31h-1.5v5H39zM42 31h-1.5v5H42zM36 11h-1.5v5H36zM36 19h-1.5v1H36zM36 29h-1.5v1H36zM39 19h-1.5v1H39zM39 29h-1.5v1H39zM42 29h-1.5v1H42zM36 9h-1.5v1H36z"/></g></svg>',"list-num-lower-roman":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M15.1 16v-1.2h1.3V16H15zm0 10v-1.2h1.3V26H15zm0 10v-1.2h1.3V36H15z"/><path fill-rule="nonzero" d="M12 21h1.5v5H12zM12 31h1.5v5H12zM9 21h1.5v5H9zM9 31h1.5v5H9zM6 31h1.5v5H6zM12 11h1.5v5H12zM12 19h1.5v1H12zM12 29h1.5v1H12zM9 19h1.5v1H9zM9 29h1.5v1H9zM6 29h1.5v1H6zM12 9h1.5v1H12z"/></g></svg>',"list-num-upper-alpha-rtl":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M39.3 17l-.5-1.4h-2l-.5 1.4H35l2-6h1.6l2 6h-1.3zm-1.6-4.7l-.7 2.3h1.6l-.8-2.3zM33.4 17c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7zm4.7 9.9h-2.7v-6H38c1.2 0 1.9.6 1.9 1.5 0 .6-.5 1.2-1 1.3.7.1 1.3.7 1.3 1.5 0 1-.8 1.7-2 1.7zm-1.4-5v1.5h1c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7h-1zm0 4h1.1c.7 0 1.1-.3 1.1-.8 0-.6-.4-.9-1.1-.9h-1.1V26zM33 27.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm4.9 10c-1.8 0-2.8-1.1-2.8-3.1s1-3.1 2.8-3.1c1.4 0 2.5.9 2.6 2.2h-1.3c0-.7-.6-1.1-1.3-1.1-1 0-1.6.7-1.6 2s.6 2 1.6 2c.7 0 1.2-.4 1.4-1h1.2c-.1 1.3-1.2 2.2-2.6 2.2zm-4.5 0c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',"list-num-upper-alpha":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M12.6 17l-.5-1.4h-2L9.5 17H8.3l2-6H12l2 6h-1.3zM11 12.3l-.7 2.3h1.6l-.8-2.3zm4.7 4.8c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7zM11.4 27H8.7v-6h2.6c1.2 0 1.9.6 1.9 1.5 0 .6-.5 1.2-1 1.3.7.1 1.3.7 1.3 1.5 0 1-.8 1.7-2 1.7zM10 22v1.5h1c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7h-1zm0 4H11c.7 0 1.1-.3 1.1-.8 0-.6-.4-.9-1.1-.9H10V26zm5.4 1.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm-4.1 10c-1.8 0-2.8-1.1-2.8-3.1s1-3.1 2.8-3.1c1.4 0 2.5.9 2.6 2.2h-1.3c0-.7-.6-1.1-1.3-1.1-1 0-1.6.7-1.6 2s.6 2 1.6 2c.7 0 1.2-.4 1.4-1h1.2c-.1 1.3-1.2 2.2-2.6 2.2zm4.5 0c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',"list-num-upper-roman-rtl":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M31.6 17v-1.2H33V17h-1.3zm0 10v-1.2H33V27h-1.3zm0 10v-1.2H33V37h-1.3z"/><path fill-rule="nonzero" d="M34.5 20H36v7h-1.5zM34.5 30H36v7h-1.5zM37.5 20H39v7h-1.5zM37.5 30H39v7h-1.5zM40.5 30H42v7h-1.5zM34.5 10H36v7h-1.5z"/></g></svg>',"list-num-upper-roman":'<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M15.1 17v-1.2h1.3V17H15zm0 10v-1.2h1.3V27H15zm0 10v-1.2h1.3V37H15z"/><path fill-rule="nonzero" d="M12 20h1.5v7H12zM12 30h1.5v7H12zM9 20h1.5v7H9zM9 30h1.5v7H9zM6 30h1.5v7H6zM12 10h1.5v7H12z"/></g></svg>',lock:'<svg width="24" height="24"><path d="M16.3 11c.2 0 .3 0 .5.2l.2.6v7.4c0 .3 0 .4-.2.6l-.6.2H7.8c-.3 0-.4 0-.6-.2a.7.7 0 0 1-.2-.6v-7.4c0-.3 0-.4.2-.6l.5-.2H8V8c0-.8.3-1.5.9-2.1.6-.6 1.3-.9 2.1-.9h2c.8 0 1.5.3 2.1.9.6.6.9 1.3.9 2.1v3h.3zM10 8v3h4V8a1 1 0 0 0-.3-.7A1 1 0 0 0 13 7h-2a1 1 0 0 0-.7.3 1 1 0 0 0-.3.7z" fill-rule="evenodd"/></svg>',ltr:'<svg width="24" height="24"><path d="M11 5h7a1 1 0 0 1 0 2h-1v11a1 1 0 0 1-2 0V7h-2v11a1 1 0 0 1-2 0v-6c-.5 0-1 0-1.4-.3A3.4 3.4 0 0 1 7.8 10a3.3 3.3 0 0 1 0-2.8 3.4 3.4 0 0 1 1.8-1.8L11 5zM4.4 16.2L6.2 15l-1.8-1.2a1 1 0 0 1 1.2-1.6l3 2a1 1 0 0 1 0 1.6l-3 2a1 1 0 1 1-1.2-1.6z" fill-rule="evenodd"/></svg>',"more-drawer":'<svg width="24" height="24"><path d="M6 10a2 2 0 0 0-2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2 2 2 0 0 0-2-2zm12 0a2 2 0 0 0-2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2 2 2 0 0 0-2-2zm-6 0a2 2 0 0 0-2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2 2 2 0 0 0-2-2z" fill-rule="nonzero"/></svg>',"new-document":'<svg width="24" height="24"><path d="M14.4 3H7a2 2 0 0 0-2 2v14c0 1.1.9 2 2 2h10a2 2 0 0 0 2-2V7.6L14.4 3zM17 19H7V5h6v4h4v10z" fill-rule="nonzero"/></svg>',"new-tab":'<svg width="24" height="24"><path d="M15 13l2-2v8H5V7h8l-2 2H7v8h8v-4zm4-8v5.5l-2-2-5.6 5.5H10v-1.4L15.5 7l-2-2H19z" fill-rule="evenodd"/></svg>',"non-breaking":'<svg width="24" height="24"><path d="M11 11H8a1 1 0 1 1 0-2h3V6c0-.6.4-1 1-1s1 .4 1 1v3h3c.6 0 1 .4 1 1s-.4 1-1 1h-3v3c0 .6-.4 1-1 1a1 1 0 0 1-1-1v-3zm10 4v5H3v-5c0-.6.4-1 1-1s1 .4 1 1v3h14v-3c0-.6.4-1 1-1s1 .4 1 1z" fill-rule="evenodd"/></svg>',notice:'<svg width="24" height="24"><path d="M17.8 9.8L15.4 4 20 8.5v7L15.5 20h-7L4 15.5v-7L8.5 4h7l2.3 5.8zm0 0l2.2 5.7-2.3-5.8zM13 17v-2h-2v2h2zm0-4V7h-2v6h2z" fill-rule="evenodd"/></svg>',"ordered-list-rtl":'<svg width="24" height="24"><path d="M6 17h8a1 1 0 0 1 0 2H6a1 1 0 0 1 0-2zm0-6h8a1 1 0 0 1 0 2H6a1 1 0 0 1 0-2zm0-6h8a1 1 0 0 1 0 2H6a1 1 0 1 1 0-2zm13-1v3.5a.5.5 0 1 1-1 0V5h-.5a.5.5 0 1 1 0-1H19zm-1 8.8l.2.2h1.3a.5.5 0 1 1 0 1h-1.6a1 1 0 0 1-.9-1V13c0-.4.3-.8.6-1l1.2-.4.2-.3a.2.2 0 0 0-.2-.2h-1.3a.5.5 0 0 1-.5-.5c0-.3.2-.5.5-.5h1.6c.5 0 .9.4.9 1v.1c0 .4-.3.8-.6 1l-1.2.4-.2.3zm2 4.2v2c0 .6-.4 1-1 1h-1.5a.5.5 0 0 1 0-1h1.2a.3.3 0 1 0 0-.6h-1.3a.4.4 0 1 1 0-.8h1.3a.3.3 0 0 0 0-.6h-1.2a.5.5 0 1 1 0-1H19c.6 0 1 .4 1 1z" fill-rule="evenodd"/></svg>',"ordered-list":'<svg width="24" height="24"><path d="M10 17h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 1 1 0-2zM6 4v3.5c0 .3-.2.5-.5.5a.5.5 0 0 1-.5-.5V5h-.5a.5.5 0 0 1 0-1H6zm-1 8.8l.2.2h1.3c.3 0 .5.2.5.5s-.2.5-.5.5H4.9a1 1 0 0 1-.9-1V13c0-.4.3-.8.6-1l1.2-.4.2-.3a.2.2 0 0 0-.2-.2H4.5a.5.5 0 0 1-.5-.5c0-.3.2-.5.5-.5h1.6c.5 0 .9.4.9 1v.1c0 .4-.3.8-.6 1l-1.2.4-.2.3zM7 17v2c0 .6-.4 1-1 1H4.5a.5.5 0 0 1 0-1h1.2c.2 0 .3-.1.3-.3 0-.2-.1-.3-.3-.3H4.4a.4.4 0 1 1 0-.8h1.3c.2 0 .3-.1.3-.3 0-.2-.1-.3-.3-.3H4.5a.5.5 0 1 1 0-1H6c.6 0 1 .4 1 1z" fill-rule="evenodd"/></svg>',orientation:'<svg width="24" height="24"><path d="M7.3 6.4L1 13l6.4 6.5 6.5-6.5-6.5-6.5zM3.7 13l3.6-3.7L11 13l-3.7 3.7-3.6-3.7zM12 6l2.8 2.7c.3.3.3.8 0 1-.3.4-.9.4-1.2 0L9.2 5.7a.8.8 0 0 1 0-1.2L13.6.2c.3-.3.9-.3 1.2 0 .3.3.3.8 0 1.1L12 4h1a9 9 0 1 1-4.3 16.9l1.5-1.5A7 7 0 1 0 13 6h-1z" fill-rule="nonzero"/></svg>',outdent:'<svg width="24" height="24"><path d="M7 5h12c.6 0 1 .4 1 1s-.4 1-1 1H7a1 1 0 1 1 0-2zm5 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 0 1 0-2zm0 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 0 1 0-2zm-5 4h12a1 1 0 0 1 0 2H7a1 1 0 0 1 0-2zm1.6-3.8a1 1 0 0 1-1.2 1.6l-3-2a1 1 0 0 1 0-1.6l3-2a1 1 0 0 1 1.2 1.6L6.8 12l1.8 1.2z" fill-rule="evenodd"/></svg>',"page-break":'<svg width="24" height="24"><g fill-rule="evenodd"><path d="M5 11c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 0 1 0-2zm3 0h1c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 0 1 0-2zm4 0c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 0 1 0-2zm3 0h1c.6 0 1 .4 1 1s-.4 1-1 1h-1a1 1 0 0 1 0-2zm4 0c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 0 1 0-2zM7 3v5h10V3c0-.6.4-1 1-1s1 .4 1 1v7H5V3c0-.6.4-1 1-1s1 .4 1 1zM6 22a1 1 0 0 1-1-1v-7h14v7c0 .6-.4 1-1 1a1 1 0 0 1-1-1v-5H7v5c0 .6-.4 1-1 1z"/></g></svg>',"paste-text":'<svg width="24" height="24"><path d="M18 9V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 0 1-1-1V5H6v13h3V9h9zM9 20H6a2 2 0 0 1-2-2V5c0-1.1.9-2 2-2h3.2A3 3 0 0 1 12 1a3 3 0 0 1 2.8 2H18a2 2 0 0 1 2 2v4h1v12H9v-1zm1.5-9.5v9h9v-9h-9zM12 3a1 1 0 0 0-1 1c0 .5.4 1 1 1s1-.5 1-1-.4-1-1-1zm0 9h6v2h-.5l-.5-1h-1v4h.8v1h-3.6v-1h.8v-4h-1l-.5 1H12v-2z" fill-rule="nonzero"/></svg>',paste:'<svg width="24" height="24"><path d="M18 9V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 0 1-1-1V5H6v13h3V9h9zM9 20H6a2 2 0 0 1-2-2V5c0-1.1.9-2 2-2h3.2A3 3 0 0 1 12 1a3 3 0 0 1 2.8 2H18a2 2 0 0 1 2 2v4h1v12H9v-1zm1.5-9.5v9h9v-9h-9zM12 3a1 1 0 0 0-1 1c0 .5.4 1 1 1s1-.5 1-1-.4-1-1-1z" fill-rule="nonzero"/></svg>',"permanent-pen":'<svg width="24" height="24"><path d="M10.5 17.5L8 20H3v-3l3.5-3.5a2 2 0 0 1 0-3L14 3l1 1-7.3 7.3a1 1 0 0 0 0 1.4l3.6 3.6c.4.4 1 .4 1.4 0L20 9l1 1-7.6 7.6a2 2 0 0 1-2.8 0l-.1-.1z" fill-rule="nonzero"/></svg>',plus:'<svg width="24" height="24"><g fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke="#000" stroke-width="2"><path d="M12 5v14M5 12h14"/></g></svg>',preferences:'<svg width="24" height="24"><path d="M20.1 13.5l-1.9.2a5.8 5.8 0 0 1-.6 1.5l1.2 1.5c.4.4.3 1 0 1.4l-.7.7a1 1 0 0 1-1.4 0l-1.5-1.2a6.2 6.2 0 0 1-1.5.6l-.2 1.9c0 .5-.5.9-1 .9h-1a1 1 0 0 1-1-.9l-.2-1.9a5.8 5.8 0 0 1-1.5-.6l-1.5 1.2a1 1 0 0 1-1.4 0l-.7-.7a1 1 0 0 1 0-1.4l1.2-1.5a6.2 6.2 0 0 1-.6-1.5l-1.9-.2a1 1 0 0 1-.9-1v-1c0-.5.4-1 .9-1l1.9-.2a5.8 5.8 0 0 1 .6-1.5L5.2 7.3a1 1 0 0 1 0-1.4l.7-.7a1 1 0 0 1 1.4 0l1.5 1.2a6.2 6.2 0 0 1 1.5-.6l.2-1.9c0-.5.5-.9 1-.9h1c.5 0 1 .4 1 .9l.2 1.9a5.8 5.8 0 0 1 1.5.6l1.5-1.2a1 1 0 0 1 1.4 0l.7.7c.3.4.4 1 0 1.4l-1.2 1.5a6.2 6.2 0 0 1 .6 1.5l1.9.2c.5 0 .9.5.9 1v1c0 .5-.4 1-.9 1zM12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6z" fill-rule="evenodd"/></svg>',preview:'<svg width="24" height="24"><path d="M3.5 12.5c.5.8 1.1 1.6 1.8 2.3 2 2 4.2 3.2 6.7 3.2s4.7-1.2 6.7-3.2a16.2 16.2 0 0 0 2.1-2.8 15.7 15.7 0 0 0-2.1-2.8c-2-2-4.2-3.2-6.7-3.2a9.3 9.3 0 0 0-6.7 3.2A16.2 16.2 0 0 0 3.2 12c0 .2.2.3.3.5zm-2.4-1l.7-1.2L4 7.8C6.2 5.4 8.9 4 12 4c3 0 5.8 1.4 8.1 3.8a18.2 18.2 0 0 1 2.8 3.7v1l-.7 1.2-2.1 2.5c-2.3 2.4-5 3.8-8.1 3.8-3 0-5.8-1.4-8.1-3.8a18.2 18.2 0 0 1-2.8-3.7 1 1 0 0 1 0-1zm12-3.3a2 2 0 1 0 2.7 2.6 4 4 0 1 1-2.6-2.6z" fill-rule="nonzero"/></svg>',print:'<svg width="24" height="24"><path d="M18 8H6a3 3 0 0 0-3 3v6h2v3h14v-3h2v-6a3 3 0 0 0-3-3zm-1 10H7v-4h10v4zm.5-5c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5 1.5.7 1.5 1.5-.7 1.5-1.5 1.5zm.5-8H6v2h12V5z" fill-rule="nonzero"/></svg>',quote:'<svg width="24" height="24"><path d="M7.5 17h.9c.4 0 .7-.2.9-.6L11 13V8c0-.6-.4-1-1-1H6a1 1 0 0 0-1 1v4c0 .6.4 1 1 1h2l-1.3 2.7a1 1 0 0 0 .8 1.3zm8 0h.9c.4 0 .7-.2.9-.6L19 13V8c0-.6-.4-1-1-1h-4a1 1 0 0 0-1 1v4c0 .6.4 1 1 1h2l-1.3 2.7a1 1 0 0 0 .8 1.3z" fill-rule="nonzero"/></svg>',redo:'<svg width="24" height="24"><path d="M17.6 10H12c-2.8 0-4.4 1.4-4.9 3.5-.4 2 .3 4 1.4 4.6a1 1 0 1 1-1 1.8c-2-1.2-2.9-4.1-2.3-6.8.6-3 3-5.1 6.8-5.1h5.6l-3.3-3.3a1 1 0 1 1 1.4-1.4l5 5a1 1 0 0 1 0 1.4l-5 5a1 1 0 0 1-1.4-1.4l3.3-3.3z" fill-rule="nonzero"/></svg>',reload:'<svg width="24" height="24"><g fill-rule="nonzero"><path d="M5 22.1l-1.2-4.7v-.2a1 1 0 0 1 1-1l5 .4a1 1 0 1 1-.2 2l-2.2-.2a7.8 7.8 0 0 0 8.4.2 7.5 7.5 0 0 0 3.5-6.4 1 1 0 1 1 2 0 9.5 9.5 0 0 1-4.5 8 9.9 9.9 0 0 1-10.2 0l.4 1.4a1 1 0 1 1-2 .5zM13.6 7.4c0-.5.5-1 1-.9l2.8.2a8 8 0 0 0-9.5-1 7.5 7.5 0 0 0-3.6 7 1 1 0 0 1-2 0 9.5 9.5 0 0 1 4.5-8.6 10 10 0 0 1 10.9.3l-.3-1a1 1 0 0 1 2-.5l1.1 4.8a1 1 0 0 1-1 1.2l-5-.4a1 1 0 0 1-.9-1z"/></g></svg>',"remove-formatting":'<svg width="24" height="24"><path d="M13.2 6a1 1 0 0 1 0 .2l-2.6 10a1 1 0 0 1-1 .8h-.2a.8.8 0 0 1-.8-1l2.6-10H8a1 1 0 1 1 0-2h9a1 1 0 0 1 0 2h-3.8zM5 18h7a1 1 0 0 1 0 2H5a1 1 0 0 1 0-2zm13 1.5L16.5 18 15 19.5a.7.7 0 0 1-1-1l1.5-1.5-1.5-1.5a.7.7 0 0 1 1-1l1.5 1.5 1.5-1.5a.7.7 0 0 1 1 1L17.5 17l1.5 1.5a.7.7 0 0 1-1 1z" fill-rule="evenodd"/></svg>',remove:'<svg width="24" height="24"><path d="M16 7h3a1 1 0 0 1 0 2h-1v9a3 3 0 0 1-3 3H9a3 3 0 0 1-3-3V9H5a1 1 0 1 1 0-2h3V6a3 3 0 0 1 3-3h2a3 3 0 0 1 3 3v1zm-2 0V6c0-.6-.4-1-1-1h-2a1 1 0 0 0-1 1v1h4zm2 2H8v9c0 .6.4 1 1 1h6c.6 0 1-.4 1-1V9zm-7 3a1 1 0 0 1 2 0v4a1 1 0 0 1-2 0v-4zm4 0a1 1 0 0 1 2 0v4a1 1 0 0 1-2 0v-4z" fill-rule="nonzero"/></svg>',"resize-handle":'<svg width="10" height="10"><g fill-rule="nonzero"><path d="M8.1 1.1A.5.5 0 1 1 9 2l-7 7A.5.5 0 1 1 1 8l7-7zM8.1 5.1A.5.5 0 1 1 9 6l-3 3A.5.5 0 1 1 5 8l3-3z"/></g></svg>',resize:'<svg width="24" height="24"><path d="M4 5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h6c.3 0 .5.1.7.3.2.2.3.4.3.7 0 .3-.1.5-.3.7a1 1 0 0 1-.7.3H7.4L18 16.6V13c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3.3 0 .5.1.7.3.2.2.3.4.3.7v6c0 .3-.1.5-.3.7a1 1 0 0 1-.7.3h-6a1 1 0 0 1-.7-.3 1 1 0 0 1-.3-.7c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h3.6L6 7.4V11c0 .3-.1.5-.3.7a1 1 0 0 1-.7.3 1 1 0 0 1-.7-.3A1 1 0 0 1 4 11V5z" fill-rule="evenodd"/></svg>',"restore-draft":'<svg width="24" height="24"><g fill-rule="evenodd"><path d="M17 13c0 .6-.4 1-1 1h-4V8c0-.6.4-1 1-1s1 .4 1 1v4h2c.6 0 1 .4 1 1z"/><path d="M4.7 10H9a1 1 0 0 1 0 2H3a1 1 0 0 1-1-1V5a1 1 0 1 1 2 0v3l2.5-2.4a9.2 9.2 0 0 1 10.8-1.5A9 9 0 0 1 13.4 21c-2.4.1-4.7-.7-6.5-2.2a1 1 0 1 1 1.3-1.5 7.2 7.2 0 0 0 11.6-3.7 7 7 0 0 0-3.5-7.7A7.2 7.2 0 0 0 8 7L4.7 10z" fill-rule="nonzero"/></g></svg>',"rotate-left":'<svg width="24" height="24"><path d="M4.7 10H9a1 1 0 0 1 0 2H3a1 1 0 0 1-1-1V5a1 1 0 1 1 2 0v3l2.5-2.4a9.2 9.2 0 0 1 10.8-1.5A9 9 0 0 1 13.4 21c-2.4.1-4.7-.7-6.5-2.2a1 1 0 1 1 1.3-1.5 7.2 7.2 0 0 0 11.6-3.7 7 7 0 0 0-3.5-7.7A7.2 7.2 0 0 0 8 7L4.7 10z" fill-rule="nonzero"/></svg>',"rotate-right":'<svg width="24" height="24"><path d="M20 8V5a1 1 0 0 1 2 0v6c0 .6-.4 1-1 1h-6a1 1 0 0 1 0-2h4.3L16 7A7.2 7.2 0 0 0 7.7 6a7 7 0 0 0 3 13.1c1.9.1 3.7-.5 5-1.7a1 1 0 0 1 1.4 1.5A9.2 9.2 0 0 1 2.2 14c-.9-3.9 1-8 4.5-9.9 3.5-1.9 8-1.3 10.8 1.5L20 8z" fill-rule="nonzero"/></svg>',rtl:'<svg width="24" height="24"><path d="M8 5h8v2h-2v12h-2V7h-2v12H8v-7c-.5 0-1 0-1.4-.3A3.4 3.4 0 0 1 4.8 10a3.3 3.3 0 0 1 0-2.8 3.4 3.4 0 0 1 1.8-1.8L8 5zm12 11.2a1 1 0 1 1-1 1.6l-3-2a1 1 0 0 1 0-1.6l3-2a1 1 0 1 1 1 1.6L18.4 15l1.8 1.2z" fill-rule="evenodd"/></svg>',save:'<svg width="24" height="24"><path d="M5 16h14a2 2 0 0 1 2 2v2a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-2c0-1.1.9-2 2-2zm0 2v2h14v-2H5zm10 0h2v2h-2v-2zm-4-6.4L8.7 9.3a1 1 0 1 0-1.4 1.4l4 4c.4.4 1 .4 1.4 0l4-4a1 1 0 1 0-1.4-1.4L13 11.6V4a1 1 0 0 0-2 0v7.6z" fill-rule="nonzero"/></svg>',search:'<svg width="24" height="24"><path d="M16 17.3a8 8 0 1 1 1.4-1.4l4.3 4.4a1 1 0 0 1-1.4 1.4l-4.4-4.3zm-5-.3a6 6 0 1 0 0-12 6 6 0 0 0 0 12z" fill-rule="nonzero"/></svg>',"select-all":'<svg width="24" height="24"><path d="M3 5h2V3a2 2 0 0 0-2 2zm0 8h2v-2H3v2zm4 8h2v-2H7v2zM3 9h2V7H3v2zm10-6h-2v2h2V3zm6 0v2h2a2 2 0 0 0-2-2zM5 21v-2H3c0 1.1.9 2 2 2zm-2-4h2v-2H3v2zM9 3H7v2h2V3zm2 18h2v-2h-2v2zm8-8h2v-2h-2v2zm0 8a2 2 0 0 0 2-2h-2v2zm0-12h2V7h-2v2zm0 8h2v-2h-2v2zm-4 4h2v-2h-2v2zm0-16h2V3h-2v2zM7 17h10V7H7v10zm2-8h6v6H9V9z" fill-rule="nonzero"/></svg>',selected:'<svg width="24" height="24"><path fill-rule="nonzero" d="M6 4h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2zm3.6 10.9L7 12.3a.7.7 0 0 0-1 1L9.6 17 18 8.6a.7.7 0 0 0 0-1 .7.7 0 0 0-1 0l-7.4 7.3z"/></svg>',settings:'<svg width="24" height="24"><path d="M11 6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8v.3c0 .2 0 .3-.2.5l-.6.2H7.8c-.3 0-.4 0-.6-.2a.7.7 0 0 1-.2-.6V8H5a1 1 0 1 1 0-2h2v-.3c0-.2 0-.3.2-.5l.5-.2h2.5c.3 0 .4 0 .6.2l.2.5V6zM8 8h2V6H8v2zm9 2.8v.2h2c.6 0 1 .4 1 1s-.4 1-1 1h-2v.3c0 .2 0 .3-.2.5l-.6.2h-2.4c-.3 0-.4 0-.6-.2a.7.7 0 0 1-.2-.6V13H5a1 1 0 0 1 0-2h8v-.3c0-.2 0-.3.2-.5l.6-.2h2.4c.3 0 .4 0 .6.2l.2.6zM14 13h2v-2h-2v2zm-3 2.8v.2h8c.6 0 1 .4 1 1s-.4 1-1 1h-8v.3c0 .2 0 .3-.2.5l-.6.2H7.8c-.3 0-.4 0-.6-.2a.7.7 0 0 1-.2-.6V18H5a1 1 0 0 1 0-2h2v-.3c0-.2 0-.3.2-.5l.5-.2h2.5c.3 0 .4 0 .6.2l.2.6zM8 18h2v-2H8v2z" fill-rule="evenodd"/></svg>',sharpen:'<svg width="24" height="24"><path d="M16 6l4 4-8 9-8-9 4-4h8zm-4 10.2l5.5-6.2-.1-.1H12v-.3h5.1l-.2-.2H12V9h4.6l-.2-.2H12v-.3h4.1l-.2-.2H12V8h3.6l-.2-.2H8.7L6.5 10l.1.1H12v.3H6.9l.2.2H12v.3H7.3l.2.2H12v.3H7.7l.3.2h4v.3H8.2l.2.2H12v.3H8.6l.3.2H12v.3H9l.3.2H12v.3H9.5l.2.2H12v.3h-2l.2.2H12v.3h-1.6l.2.2H12v.3h-1.1l.2.2h.9v.3h-.7l.2.2h.5v.3h-.3l.3.2z" fill-rule="evenodd"/></svg>',sourcecode:'<svg width="24" height="24"><g fill-rule="nonzero"><path d="M9.8 15.7c.3.3.3.8 0 1-.3.4-.9.4-1.2 0l-4.4-4.1a.8.8 0 0 1 0-1.2l4.4-4.2c.3-.3.9-.3 1.2 0 .3.3.3.8 0 1.1L6 12l3.8 3.7zM14.2 15.7c-.3.3-.3.8 0 1 .4.4.9.4 1.2 0l4.4-4.1c.3-.3.3-.9 0-1.2l-4.4-4.2a.8.8 0 0 0-1.2 0c-.3.3-.3.8 0 1.1L18 12l-3.8 3.7z"/></g></svg>',"spell-check":'<svg width="24" height="24"><path d="M6 8v3H5V5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h2c.3 0 .5.1.7.3.2.2.3.4.3.7v6H8V8H6zm0-3v2h2V5H6zm13 0h-3v5h3v1h-3a1 1 0 0 1-.7-.3 1 1 0 0 1-.3-.7V5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h3v1zm-5 1.5l-.1.7c-.1.2-.3.3-.6.3.3 0 .5.1.6.3l.1.7V10c0 .3-.1.5-.3.7a1 1 0 0 1-.7.3h-3V4h3c.3 0 .5.1.7.3.2.2.3.4.3.7v1.5zM13 10V8h-2v2h2zm0-3V5h-2v2h2zm3 5l1 1-6.5 7L7 15.5l1.3-1 2.2 2.2L16 12z" fill-rule="evenodd"/></svg>',"strike-through":'<svg width="24" height="24"><g fill-rule="evenodd"><path d="M15.6 8.5c-.5-.7-1-1.1-1.3-1.3-.6-.4-1.3-.6-2-.6-2.7 0-2.8 1.7-2.8 2.1 0 1.6 1.8 2 3.2 2.3 4.4.9 4.6 2.8 4.6 3.9 0 1.4-.7 4.1-5 4.1A6.2 6.2 0 0 1 7 16.4l1.5-1.1c.4.6 1.6 2 3.7 2 1.6 0 2.5-.4 3-1.2.4-.8.3-2-.8-2.6-.7-.4-1.6-.7-2.9-1-1-.2-3.9-.8-3.9-3.6C7.6 6 10.3 5 12.4 5c2.9 0 4.2 1.6 4.7 2.4l-1.5 1.1z"/><path d="M5 11h14a1 1 0 0 1 0 2H5a1 1 0 0 1 0-2z" fill-rule="nonzero"/></g></svg>',subscript:'<svg width="24" height="24"><path d="M10.4 10l4.6 4.6-1.4 1.4L9 11.4 4.4 16 3 14.6 7.6 10 3 5.4 4.4 4 9 8.6 13.6 4 15 5.4 10.4 10zM21 19h-5v-1l1-.8 1.7-1.6c.3-.4.5-.8.5-1.2 0-.3 0-.6-.2-.7-.2-.2-.5-.3-.9-.3a2 2 0 0 0-.8.2l-.7.3-.4-1.1 1-.6 1.2-.2c.8 0 1.4.3 1.8.7.4.4.6.9.6 1.5s-.2 1.1-.5 1.6a8 8 0 0 1-1.3 1.3l-.6.6h2.6V19z" fill-rule="nonzero"/></svg>',superscript:'<svg width="24" height="24"><path d="M15 9.4L10.4 14l4.6 4.6-1.4 1.4L9 15.4 4.4 20 3 18.6 7.6 14 3 9.4 4.4 8 9 12.6 13.6 8 15 9.4zm5.9 1.6h-5v-1l1-.8 1.7-1.6c.3-.5.5-.9.5-1.3 0-.3 0-.5-.2-.7-.2-.2-.5-.3-.9-.3l-.8.2-.7.4-.4-1.2c.2-.2.5-.4 1-.5.3-.2.8-.2 1.2-.2.8 0 1.4.2 1.8.6.4.4.6 1 .6 1.6 0 .5-.2 1-.5 1.5l-1.3 1.4-.6.5h2.6V11z" fill-rule="nonzero"/></svg>',"table-cell-properties":'<svg width="24" height="24"><path d="M4 5h16v14H4V5zm10 10h-4v3h4v-3zm0-8h-4v3h4V7zM9 7H5v3h4V7zm-4 4v3h4v-3H5zm10 0v3h4v-3h-4zm0-1h4V7h-4v3zM5 15v3h4v-3H5zm10 3h4v-3h-4v3z" fill-rule="evenodd"/></svg>',"table-cell-select-all":'<svg width="24" height="24"><path d="M12.5 5.5v6h6v-6h-6zm-1 0h-6v6h6v-6zm1 13h6v-6h-6v6zm-1 0v-6h-6v6h6zm-7-14h15v15h-15v-15z" fill-rule="nonzero"/></svg>',"table-cell-select-inner":'<svg width="24" height="24"><g fill-rule="nonzero"><path d="M5.5 5.5v13h13v-13h-13zm-1-1h15v15h-15v-15z" opacity=".2"/><path d="M11.5 11.5v-7h1v7h7v1h-7v7h-1v-7h-7v-1h7z"/></g></svg>',"table-delete-column":'<svg width="24" height="24"><path d="M9 11.2l1 1v.2l-1 1v-2.2zm5 1l1-1v2.2l-1-1v-.2zM20 5v14H4V5h16zm-1 2h-4v.8l-.2-.2-.8.8V7h-4v1.4l-.8-.8-.2.2V7H5v11h4v-1.8l.5.5.5-.4V18h4v-1.8l.8.8.2-.3V18h4V7zm-3.9 3.4l-1.8 1.9 1.8 1.9c.4.3.4.9 0 1.2-.3.3-.8.3-1.2 0L12 13.5l-1.8 1.9a.8.8 0 0 1-1.2 0 .9.9 0 0 1 0-1.2l1.8-1.9-1.9-2a.9.9 0 0 1 1.2-1.2l2 2 1.8-1.8c.3-.4.9-.4 1.2 0a.8.8 0 0 1 0 1.1z" fill-rule="evenodd"/></svg>',"table-delete-row":'<svg width="24" height="24"><path d="M16.7 8.8l1.1 1.2-2.4 2.5L18 15l-1.2 1.2-2.5-2.5-2.4 2.5-1.3-1.2 2.5-2.5-2.5-2.5 1.2-1.3 2.6 2.6 2.4-2.5zM4 5h16v14H4V5zm15 5V7H5v3h4.8l1 1H5v3h5.8l-1 1H5v3h14v-3h-.4l-1-1H19v-3h-1.3l1-1h.3z" fill-rule="evenodd"/></svg>',"table-delete-table":'<svg width="24" height="26"><path d="M4 6h16v14H4V6zm1 2v11h14V8H5zm11.7 8.7l-1.5 1.5L12 15l-3.3 3.2-1.4-1.5 3.2-3.2-3.3-3.2 1.5-1.5L12 12l3.2-3.2 1.5 1.5-3.2 3.2 3.2 3.2z" fill-rule="evenodd"/></svg>',"table-insert-column-after":'<svg width="24" height="24"><path d="M14.3 9c.4 0 .7.3.7.6v2.2h2.1c.4 0 .7.3.7.7 0 .4-.3.7-.7.7H15v2.2c0 .3-.3.6-.7.6a.7.7 0 0 1-.6-.6v-2.2h-2.2a.7.7 0 0 1 0-1.4h2.2V9.6c0-.3.3-.6.6-.6zM4 5h16v14H4V5zm5 13v-3H5v3h4zm0-4v-3H5v3h4zm0-4V7H5v3h4zm10 8V7h-9v11h9z" fill-rule="evenodd"/></svg>',"table-insert-column-before":'<svg width="24" height="24"><path d="M9.7 16a.7.7 0 0 1-.7-.6v-2.2H6.9a.7.7 0 0 1 0-1.4H9V9.6c0-.3.3-.6.7-.6.3 0 .6.3.6.6v2.2h2.2c.4 0 .8.3.8.7 0 .4-.4.7-.8.7h-2.2v2.2c0 .3-.3.6-.6.6zM4 5h16v14H4V5zm10 13V7H5v11h9zm5 0v-3h-4v3h4zm0-4v-3h-4v3h4zm0-4V7h-4v3h4z" fill-rule="evenodd"/></svg>',"table-insert-row-above":'<svg width="24" height="24"><path d="M14.8 10.5c0 .3-.2.5-.5.5h-1.8v1.8c0 .3-.2.5-.5.5a.5.5 0 0 1-.5-.6V11H9.7a.5.5 0 0 1 0-1h1.8V8.3c0-.3.2-.6.5-.6s.5.3.5.6V10h1.8c.3 0 .5.2.5.5zM4 5h16v14H4V5zm5 13v-3H5v3h4zm5 0v-3h-4v3h4zm5 0v-3h-4v3h4zm0-4V7H5v7h14z" fill-rule="evenodd"/></svg>',"table-insert-row-after":'<svg width="24" height="24"><path d="M9.2 14.5c0-.3.2-.5.5-.5h1.8v-1.8c0-.3.2-.5.5-.5s.5.2.5.6V14h1.8c.3 0 .5.2.5.5s-.2.5-.5.5h-1.8v1.7c0 .3-.2.6-.5.6a.5.5 0 0 1-.5-.6V15H9.7a.5.5 0 0 1-.5-.5zM4 5h16v14H4V5zm6 2v3h4V7h-4zM5 7v3h4V7H5zm14 11v-7H5v7h14zm0-8V7h-4v3h4z" fill-rule="evenodd"/></svg>',"table-left-header":'<svg width="24" height="24"><path d="M4 5h16v13H4V5zm10 12v-3h-4v3h4zm0-4v-3h-4v3h4zm0-4V6h-4v3h4zm5 8v-3h-4v3h4zm0-4v-3h-4v3h4zm0-4V6h-4v3h4z" fill-rule="evenodd"/></svg>',"table-merge-cells":'<svg width="24" height="24"><path d="M4 5h16v14H4V5zm6 13h9v-7h-9v7zm4-11h-4v3h4V7zM9 7H5v3h4V7zm-4 4v3h4v-3H5zm10-1h4V7h-4v3zM5 15v3h4v-3H5z" fill-rule="evenodd"/></svg>',"table-row-properties":'<svg width="24" height="24"><path d="M4 5h16v14H4V5zm10 10h-4v3h4v-3zm0-8h-4v3h4V7zM9 7H5v3h4V7zm6 3h4V7h-4v3zM5 15v3h4v-3H5zm10 3h4v-3h-4v3z" fill-rule="evenodd"/></svg>',"table-split-cells":'<svg width="24" height="24"><path d="M4 5h16v14H4V5zm6 2v3h4V7h-4zM9 18v-3H5v3h4zm0-4v-3H5v3h4zm0-4V7H5v3h4zm10 8v-7h-9v7h9zm0-8V7h-4v3h4zm-3.5 4.5l1.5 1.6c.3.2.3.7 0 1-.2.2-.7.2-1 0l-1.5-1.6-1.6 1.5c-.2.3-.7.3-1 0a.7.7 0 0 1 0-1l1.6-1.5-1.5-1.6a.7.7 0 0 1 1-1l1.5 1.6 1.6-1.5c.2-.3.7-.3 1 0 .2.2.2.7 0 1l-1.6 1.5z" fill-rule="evenodd"/></svg>',"table-top-header":'<svg width="24" height="24"><path d="M4 5h16v13H4V5zm5 12v-3H5v3h4zm0-4v-3H5v3h4zm5 4v-3h-4v3h4zm0-4v-3h-4v3h4zm5 4v-3h-4v3h4zm0-4v-3h-4v3h4z" fill-rule="evenodd"/></svg>',table:'<svg width="24" height="24"><path d="M4 5h16v14H4V5zm6 9h4v-3h-4v3zm4 1h-4v3h4v-3zm0-8h-4v3h4V7zM9 7H5v3h4V7zm-4 4v3h4v-3H5zm10 0v3h4v-3h-4zm0-1h4V7h-4v3zM5 15v3h4v-3H5zm10 3h4v-3h-4v3z" fill-rule="evenodd"/></svg>',template:'<svg width="24" height="24"><path d="M19 19v-1H5v1h14zM9 16v-4a5 5 0 1 1 6 0v4h4a2 2 0 0 1 2 2v3H3v-3c0-1.1.9-2 2-2h4zm4 0v-5l.8-.6a3 3 0 1 0-3.6 0l.8.6v5h2z" fill-rule="nonzero"/></svg>',"temporary-placeholder":'<svg width="24" height="24"><g fill-rule="evenodd"><path d="M9 7.6V6h2.5V4.5a.5.5 0 1 1 1 0V6H15v1.6a8 8 0 1 1-6 0zm-2.6 5.3a.5.5 0 0 0 .3.6c.3 0 .6 0 .6-.3l.1-.2a5 5 0 0 1 3.3-2.8c.3-.1.4-.4.4-.6-.1-.3-.4-.5-.6-.4a6 6 0 0 0-4.1 3.7z"/><circle cx="14" cy="4" r="1"/><circle cx="12" cy="2" r="1"/><circle cx="10" cy="4" r="1"/></g></svg>',"text-color":'<svg width="24" height="24"><g fill-rule="evenodd"><path id="tox-icon-text-color__color" d="M3 18h18v3H3z"/><path d="M8.7 16h-.8a.5.5 0 0 1-.5-.6l2.7-9c.1-.3.3-.4.5-.4h2.8c.2 0 .4.1.5.4l2.7 9a.5.5 0 0 1-.5.6h-.8a.5.5 0 0 1-.4-.4l-.7-2.2c0-.3-.3-.4-.5-.4h-3.4c-.2 0-.4.1-.5.4l-.7 2.2c0 .3-.2.4-.4.4zm2.6-7.6l-.6 2a.5.5 0 0 0 .5.6h1.6a.5.5 0 0 0 .5-.6l-.6-2c0-.3-.3-.4-.5-.4h-.4c-.2 0-.4.1-.5.4z"/></g></svg>',toc:'<svg width="24" height="24"><path d="M5 5c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 1 1 0-2zm3 0h11c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 1 1 0-2zm-3 8c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 0 1 0-2zm3 0h11c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 0 1 0-2zm0-4c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 1 1 0-2zm3 0h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2zm-3 8c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 0 1 0-2zm3 0h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2z" fill-rule="evenodd"/></svg>',translate:'<svg width="24" height="24"><path d="M12.7 14.3l-.3.7-.4.7-2.2-2.2-3.1 3c-.3.4-.8.4-1 0a.7.7 0 0 1 0-1l3.1-3A12.4 12.4 0 0 1 6.7 9H8a10.1 10.1 0 0 0 1.7 2.4c.5-.5 1-1.1 1.4-1.8l.9-2H4.7a.7.7 0 1 1 0-1.5h4.4v-.7c0-.4.3-.8.7-.8.4 0 .7.4.7.8v.7H15c.4 0 .8.3.8.7 0 .4-.4.8-.8.8h-1.4a12.3 12.3 0 0 1-1 2.4 13.5 13.5 0 0 1-1.7 2.3l1.9 1.8zm4.3-3l2.7 7.3a.5.5 0 0 1-.4.7 1 1 0 0 1-1-.7l-.6-1.5h-3.4l-.6 1.5a1 1 0 0 1-1 .7.5.5 0 0 1-.4-.7l2.7-7.4a1 1 0 1 1 2 0zm-2.2 4.4h2.4L16 12.5l-1.2 3.2z" fill-rule="evenodd"/></svg>',underline:'<svg width="24" height="24"><path d="M16 5c.6 0 1 .4 1 1v5.5a4 4 0 0 1-.4 1.8l-1 1.4a5.3 5.3 0 0 1-5.5 1 5 5 0 0 1-1.6-1c-.5-.4-.8-.9-1.1-1.4a4 4 0 0 1-.4-1.8V6c0-.6.4-1 1-1s1 .4 1 1v5.5c0 .3 0 .6.2 1l.6.7a3.3 3.3 0 0 0 2.2.8 3.4 3.4 0 0 0 2.2-.8c.3-.2.4-.5.6-.8l.2-.9V6c0-.6.4-1 1-1zM8 17h8c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 0 1 0-2z" fill-rule="evenodd"/></svg>',undo:'<svg width="24" height="24"><path d="M6.4 8H12c3.7 0 6.2 2 6.8 5.1.6 2.7-.4 5.6-2.3 6.8a1 1 0 0 1-1-1.8c1.1-.6 1.8-2.7 1.4-4.6-.5-2.1-2.1-3.5-4.9-3.5H6.4l3.3 3.3a1 1 0 1 1-1.4 1.4l-5-5a1 1 0 0 1 0-1.4l5-5a1 1 0 0 1 1.4 1.4L6.4 8z" fill-rule="nonzero"/></svg>',unlink:'<svg width="24" height="24"><path d="M6.2 12.3a1 1 0 0 1 1.4 1.4l-2 2a2 2 0 1 0 2.6 2.8l4.8-4.8a1 1 0 0 0 0-1.4 1 1 0 1 1 1.4-1.3 2.9 2.9 0 0 1 0 4L9.6 20a3.9 3.9 0 0 1-5.5-5.5l2-2zm11.6-.6a1 1 0 0 1-1.4-1.4l2.1-2a2 2 0 1 0-2.7-2.8L11 10.3a1 1 0 0 0 0 1.4A1 1 0 1 1 9.6 13a2.9 2.9 0 0 1 0-4L14.4 4a3.9 3.9 0 0 1 5.5 5.5l-2 2zM7.6 6.3a.8.8 0 0 1-1 1.1L3.3 4.2a.7.7 0 1 1 1-1l3.2 3.1zM5.1 8.6a.8.8 0 0 1 0 1.5H3a.8.8 0 0 1 0-1.5H5zm5-3.5a.8.8 0 0 1-1.5 0V3a.8.8 0 0 1 1.5 0V5zm6 11.8a.8.8 0 0 1 1-1l3.2 3.2a.8.8 0 0 1-1 1L16 17zm-2.2 2a.8.8 0 0 1 1.5 0V21a.8.8 0 0 1-1.5 0V19zm5-3.5a.7.7 0 1 1 0-1.5H21a.8.8 0 0 1 0 1.5H19z" fill-rule="nonzero"/></svg>',unlock:'<svg width="24" height="24"><path d="M16 5c.8 0 1.5.3 2.1.9.6.6.9 1.3.9 2.1v3h-2V8a1 1 0 0 0-.3-.7A1 1 0 0 0 16 7h-2a1 1 0 0 0-.7.3 1 1 0 0 0-.3.7v3h.3c.2 0 .3 0 .5.2l.2.6v7.4c0 .3 0 .4-.2.6l-.6.2H4.8c-.3 0-.4 0-.6-.2a.7.7 0 0 1-.2-.6v-7.4c0-.3 0-.4.2-.6l.5-.2H11V8c0-.8.3-1.5.9-2.1.6-.6 1.3-.9 2.1-.9h2z" fill-rule="evenodd"/></svg>',"unordered-list":'<svg width="24" height="24"><path d="M11 5h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2zm0 6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2zm0 6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2zM4.5 6c0-.4.1-.8.4-1 .3-.4.7-.5 1.1-.5.4 0 .8.1 1 .4.4.3.5.7.5 1.1 0 .4-.1.8-.4 1-.3.4-.7.5-1.1.5-.4 0-.8-.1-1-.4-.4-.3-.5-.7-.5-1.1zm0 6c0-.4.1-.8.4-1 .3-.4.7-.5 1.1-.5.4 0 .8.1 1 .4.4.3.5.7.5 1.1 0 .4-.1.8-.4 1-.3.4-.7.5-1.1.5-.4 0-.8-.1-1-.4-.4-.3-.5-.7-.5-1.1zm0 6c0-.4.1-.8.4-1 .3-.4.7-.5 1.1-.5.4 0 .8.1 1 .4.4.3.5.7.5 1.1 0 .4-.1.8-.4 1-.3.4-.7.5-1.1.5-.4 0-.8-.1-1-.4-.4-.3-.5-.7-.5-1.1z" fill-rule="evenodd"/></svg>',unselected:'<svg width="24" height="24"><path fill-rule="nonzero" d="M6 4h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2zm0 1a1 1 0 0 0-1 1v12c0 .6.4 1 1 1h12c.6 0 1-.4 1-1V6c0-.6-.4-1-1-1H6z"/></svg>',upload:'<svg width="24" height="24"><path d="M18 19v-2a1 1 0 0 1 2 0v3c0 .6-.4 1-1 1H5a1 1 0 0 1-1-1v-3a1 1 0 0 1 2 0v2h12zM11 6.4L8.7 8.7a1 1 0 0 1-1.4-1.4l4-4a1 1 0 0 1 1.4 0l4 4a1 1 0 1 1-1.4 1.4L13 6.4V16a1 1 0 0 1-2 0V6.4z" fill-rule="nonzero"/></svg>',user:'<svg width="24" height="24"><path d="M12 24a12 12 0 1 1 0-24 12 12 0 0 1 0 24zm-8.7-5.3a11 11 0 0 0 17.4 0C19.4 16.3 14.6 15 12 15c-2.6 0-7.4 1.3-8.7 3.7zM12 13c2.2 0 4-2 4-4.5S14.2 4 12 4 8 6 8 8.5 9.8 13 12 13z" fill-rule="nonzero"/></svg>',visualblocks:'<svg width="24" height="24"><path d="M9 19v2H7v-2h2zm-4 0v2a2 2 0 0 1-2-2h2zm8 0v2h-2v-2h2zm8 0a2 2 0 0 1-2 2v-2h2zm-4 0v2h-2v-2h2zM15 7a1 1 0 0 1 0 2v7a1 1 0 0 1-2 0V9h-1v7a1 1 0 0 1-2 0v-4a2.5 2.5 0 0 1-.2-5H15zM5 15v2H3v-2h2zm16 0v2h-2v-2h2zM5 11v2H3v-2h2zm16 0v2h-2v-2h2zM5 7v2H3V7h2zm16 0v2h-2V7h2zM5 3v2H3c0-1.1.9-2 2-2zm8 0v2h-2V3h2zm6 0a2 2 0 0 1 2 2h-2V3zM9 3v2H7V3h2zm8 0v2h-2V3h2z" fill-rule="evenodd"/></svg>',visualchars:'<svg width="24" height="24"><path d="M10 5h7a1 1 0 0 1 0 2h-1v11a1 1 0 0 1-2 0V7h-2v11a1 1 0 0 1-2 0v-6c-.5 0-1 0-1.4-.3A3.4 3.4 0 0 1 6.8 10a3.3 3.3 0 0 1 0-2.8 3.4 3.4 0 0 1 1.8-1.8L10 5z" fill-rule="evenodd"/></svg>',warning:'<svg width="24" height="24"><path d="M19.8 18.3c.2.5.3.9 0 1.2-.1.3-.5.5-1 .5H5.2c-.5 0-.9-.2-1-.5-.3-.3-.2-.7 0-1.2L11 4.7l.5-.5.5-.2c.2 0 .3 0 .5.2.2 0 .3.3.5.5l6.8 13.6zM12 18c.3 0 .5-.1.7-.3.2-.2.3-.4.3-.7a1 1 0 0 0-.3-.7 1 1 0 0 0-.7-.3 1 1 0 0 0-.7.3 1 1 0 0 0-.3.7c0 .3.1.5.3.7.2.2.4.3.7.3zm.7-3l.3-4a1 1 0 0 0-.3-.7 1 1 0 0 0-.7-.3 1 1 0 0 0-.7.3 1 1 0 0 0-.3.7l.3 4h1.4z" fill-rule="evenodd"/></svg>',"zoom-in":'<svg width="24" height="24"><path d="M16 17.3a8 8 0 1 1 1.4-1.4l4.3 4.4a1 1 0 0 1-1.4 1.4l-4.4-4.3zm-5-.3a6 6 0 1 0 0-12 6 6 0 0 0 0 12zm-1-9a1 1 0 0 1 2 0v6a1 1 0 0 1-2 0V8zm-2 4a1 1 0 0 1 0-2h6a1 1 0 0 1 0 2H8z" fill-rule="nonzero"/></svg>',"zoom-out":'<svg width="24" height="24"><path d="M16 17.3a8 8 0 1 1 1.4-1.4l4.3 4.4a1 1 0 0 1-1.4 1.4l-4.4-4.3zm-5-.3a6 6 0 1 0 0-12 6 6 0 0 0 0 12zm-3-5a1 1 0 0 1 0-2h6a1 1 0 0 1 0 2H8z" fill-rule="nonzero"/></svg>'}),Ud.get(e).icons);ue(t,function(e,t){kt(r,t)||n.ui.registry.addIcon(t,e)})}(e),function(e){var t=e.settings.theme;if(K(t)){e.settings.theme=Iw(t);var n=qd.get(t);e.theme=new n(e,qd.urls[t]),e.theme.init&&e.theme.init(e,qd.urls[t]||e.documentBaseUrl.replace(/\/$/,""),e.$)}else e.theme={}}(e),function(t){var n=[];Mn.each(t.settings.plugins.split(/[ ,]/),function(e){Az(t,n,Iw(e))})}(e);var t=function(e){var t=e.getElement();return e.orgDisplay=t.style.display,K(e.settings.theme)?function(e){return e.theme.renderUI()}(e):D(e.settings.theme)?function(e){var t=e.getElement(),n=(0,e.settings.theme)(e,t);return n.editorContainer.nodeType&&(n.editorContainer.id=n.editorContainer.id||e.id+"_parent"),n.iframeContainer&&n.iframeContainer.nodeType&&(n.iframeContainer.id=n.iframeContainer.id||e.id+"_iframecontainer"),n.height=n.iframeHeight?n.iframeHeight:t.offsetHeight,n}(e):Uw(e)}(e);return e.editorContainer=t.editorContainer?t.editorContainer:null,Vw(e),e.inline?Nz(e):kz(e,t)},Rz=Xi.DOM,Dz=function(t){var e=t.settings,n=t.id;ra.setCode(Bf(t));var r=function(){Rz.unbind(j.window,"ready",r),t.render()};if(kr.Event.domLoaded){if(t.getElement()&&Nn.contentEditable){e.inline?t.inline=!0:(t.orgVisibility=t.getElement().style.visibility,t.getElement().style.visibility="hidden");var o=t.getElement().form||Rz.getParent(n,"form");o&&(t.formElement=o,e.hidden_input&&!Ge.isTextareaOrInput(t.getElement())&&(Rz.insertAfter(Rz.create("input",{type:"hidden",name:n}),n),t.hasHiddenInput=!0),t.formEventDelegate=function(e){t.fire(e.type,e)},Rz.bind(o,"submit reset",t.formEventDelegate),t.on("reset",function(){t.resetContent()}),!e.submit_patch||o.submit.nodeType||o.submit.length||o._mceOldSubmit||(o._mceOldSubmit=o.submit,o.submit=function(){return t.editorManager.triggerSave(),t.setDirty(!1),o._mceOldSubmit(o)})),t.windowManager=Bd(t),t.notificationManager=_d(t),"xml"===e.encoding&&t.on("GetContent",function(e){e.save&&(e.content=Rz.encode(e.content))}),e.add_form_submit_trigger&&t.on("submit",function(){t.initialized&&t.save()}),e.add_unload_trigger&&(t._beforeUnload=function(){!t.initialized||t.destroyed||t.isHidden()||t.save({format:"raw",no_events:!0,set_dirty:!1})},t.editorManager.on("BeforeUnload",t._beforeUnload)),t.editorManager.add(t),$w(t,t.suffix)}}else Rz.bind(j.window,"ready",r)},_z="data-mce-contenteditable",Bz=["design","readonly"],Oz=function(e,t){var n=t.firstChild,r=t.lastChild;return n&&"meta"===n.name&&(n=n.next),r&&"mce_marker"===r.attr("id")&&(r=r.prev),function(e,t){var n=e.getNonEmptyElements();return t&&(t.isEmpty(n)||function(e,t){return e.getBlockElements()[t.name]&&function(e){return e.firstChild&&e.firstChild===e.lastChild}(t)&&function(e){return"br"===e.name||"\xa0"===e.value}(t.firstChild)}(e,t))}(e,r)&&(r=r.prev),!(!n||n!==r)&&("ul"===n.name||"ol"===n.name)},Hz=function(e,o,i,t){function n(e){var t=Ds.fromRangeStart(i),n=rc(o.getRoot()),r=1===e?n.prev(t):n.next(t);return!r||rx(o,r.getNode())!==a}var r=function(e,t,n){var r=t.serialize(n);return function(e){var t=e.firstChild,n=e.lastChild;return t&&"META"===t.nodeName&&t.parentNode.removeChild(t),n&&"mce_marker"===n.id&&n.parentNode.removeChild(n),e}(e.createFragment(r))}(o,e,t),a=rx(o,i.startContainer),u=nx(ex(r.firstChild)),s=o.getRoot();return n(1)?ix(a,u,s):n(2)?function(e,t,n,r){return r.insertAfter(t.reverse(),e),ox(t[0],n)}(a,u,s,o):function(t,e,n,r){var o=function(e,t){var n=t.cloneRange(),r=t.cloneRange();return n.setStartBefore(e),r.setEndAfter(e),[n.cloneContents(),r.cloneContents()]}(t,r),i=t.parentNode;return i.insertBefore(o[0],t),Mn.each(e,function(e){i.insertBefore(e,t)}),i.insertBefore(o[1],t),i.removeChild(t),ox(e[e.length-1],n)}(a,u,s,i)},Pz=function(e,t){return!!rx(e,t)},Lz=Ge.matchNodeNames(["td","th"]),Vz=function(e,t){var n=function(e){var t;return"string"!=typeof e?(t=Mn.extend({paste:e.paste,data:{paste:e.paste}},e),{content:e.content,details:t}):{content:e,details:{}}}(t);ux(e,n.content,n.details)},Iz=function(e){ez(e,!1)||Lx(e,!1)||Ix(e,!1)||Fx(e,!1)||Dx(e,!1)||Kx(e)||_x(e,!1)||Ux(e,!1)||(sx(e,"Delete"),Tx(e))},Fz=function(e){Lx(e,!0)||Ix(e,!0)||Fx(e,!0)||Dx(e,!0)||Kx(e)||_x(e,!0)||Ux(e,!0)||sx(e,"ForwardDelete")},Uz={getFontSize:cx("font-size"),getFontFamily:q(function(e){return e.replace(/[\'\"\\]/g,"").replace(/,\s+/g,",")},cx("font-family")),toPt:function(e,t){return/[0-9.]+px$/.test(e)?function(e,t){var n=Math.pow(10,t);return Math.round(e*n)/n}(72*parseInt(e,10)/96,t||0)+"pt":e}},jz=Mn.each,qz=Mn.map,$z=Mn.inArray,Wz=(Kz.prototype.execCommand=function(t,n,r,e){var o,i,a=!1,u=this;if(!u.editor.removed){if(/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint)$/.test(t)||e&&e.skip_focus?Jf(u.editor):u.editor.focus(),(e=u.editor.fire("BeforeExecCommand",{command:t,ui:n,value:r})).isDefaultPrevented())return!1;if(i=t.toLowerCase(),o=u.commands.exec[i])return o(i,n,r),u.editor.fire("ExecCommand",{command:t,ui:n,value:r}),!0;if(jz(this.editor.plugins,function(e){if(e.execCommand&&e.execCommand(t,n,r))return u.editor.fire("ExecCommand",{command:t,ui:n,value:r}),!(a=!0)}),a)return a;if(u.editor.theme&&u.editor.theme.execCommand&&u.editor.theme.execCommand(t,n,r))return u.editor.fire("ExecCommand",{command:t,ui:n,value:r}),!0;try{a=u.editor.getDoc().execCommand(t,n,r)}catch(s){}return!!a&&(u.editor.fire("ExecCommand",{command:t,ui:n,value:r}),!0)}},Kz.prototype.queryCommandState=function(e){var t;if(!this.editor.quirks.isHidden()&&!this.editor.removed){if(e=e.toLowerCase(),t=this.commands.state[e])return t(e);try{return this.editor.getDoc().queryCommandState(e)}catch(n){}return!1}},Kz.prototype.queryCommandValue=function(e){var t;if(!this.editor.quirks.isHidden()&&!this.editor.removed){if(e=e.toLowerCase(),t=this.commands.value[e])return t(e);try{return this.editor.getDoc().queryCommandValue(e)}catch(n){}}},Kz.prototype.addCommands=function(e,n){var r=this;n=n||"exec",jz(e,function(t,e){jz(e.toLowerCase().split(","),function(e){r.commands[n][e]=t})})},Kz.prototype.addCommand=function(e,o,i){var a=this;e=e.toLowerCase(),this.commands.exec[e]=function(e,t,n,r){return o.call(i||a.editor,t,n,r)}},Kz.prototype.queryCommandSupported=function(e){if(e=e.toLowerCase(),this.commands.exec[e])return!0;try{return this.editor.getDoc().queryCommandSupported(e)}catch(t){}return!1},Kz.prototype.addQueryStateHandler=function(e,t,n){var r=this;e=e.toLowerCase(),this.commands.state[e]=function(){return t.call(n||r.editor)}},Kz.prototype.addQueryValueHandler=function(e,t,n){var r=this;e=e.toLowerCase(),this.commands.value[e]=function(){return t.call(n||r.editor)}},Kz.prototype.hasCustomCommand=function(e){return e=e.toLowerCase(),!!this.commands.exec[e]},Kz.prototype.execNativeCommand=function(e,t,n){return t===undefined&&(t=!1),n===undefined&&(n=null),this.editor.getDoc().execCommand(e,t,n)},Kz.prototype.isFormatMatch=function(e){return this.editor.formatter.match(e)},Kz.prototype.toggleFormat=function(e,t){this.editor.formatter.toggle(e,t?{value:t}:undefined),this.editor.nodeChanged()},Kz.prototype.storeSelection=function(e){this.selectionBookmark=this.editor.selection.getBookmark(e)},Kz.prototype.restoreSelection=function(){this.editor.selection.moveToBookmark(this.selectionBookmark)},Kz.prototype.setupCommands=function(i){var a=this;function e(n){return function(){var e=i.selection.isCollapsed()?[i.dom.getParent(i.selection.getNode(),i.dom.isBlock)]:i.selection.getSelectedBlocks(),t=qz(e,function(e){return!!i.formatter.matchNode(e,n)});return-1!==$z(t,!0)}}this.addCommands({"mceResetDesignMode,mceBeginUndoLevel":function(){},"mceEndUndoLevel,mceAddUndoLevel":function(){i.undoManager.add()},"Cut,Copy,Paste":function(e){var t,n=i.getDoc();try{a.execNativeCommand(e)}catch(o){t=!0}if("paste"!==e||n.queryCommandEnabled(e)||(t=!0),t||!n.queryCommandSupported(e)){var r=i.translate("Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X/C/V keyboard shortcuts instead.");Nn.mac&&(r=r.replace(/Ctrl\+/g,"\u2318+")),i.notificationManager.open({text:r,type:"error"})}},unlink:function(){if(i.selection.isCollapsed()){var e=i.dom.getParent(i.selection.getStart(),"a");e&&i.dom.remove(e,!0)}else i.formatter.remove("link")},"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull,JustifyNone":function(e){var t=e.substring(7);"full"===t&&(t="justify"),jz("left,center,right,justify".split(","),function(e){t!==e&&i.formatter.remove("align"+e)}),"none"!==t&&a.toggleFormat("align"+t)},"InsertUnorderedList,InsertOrderedList":function(e){var t,n;a.execNativeCommand(e),(t=i.dom.getParent(i.selection.getNode(),"ol,ul"))&&(n=t.parentNode,/^(H[1-6]|P|ADDRESS|PRE)$/.test(n.nodeName)&&(a.storeSelection(),i.dom.split(n,t),a.restoreSelection()))},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(e){a.toggleFormat(e)},"ForeColor,HiliteColor":function(e,t,n){a.toggleFormat(e,n)},FontName:function(e,t,n){hx(i,n)},FontSize:function(e,t,n){!function(e,t){e.formatter.toggle("fontsize",{value:dx(e,t)}),e.nodeChanged()}(i,n)},RemoveFormat:function(e){i.formatter.remove(e)},mceBlockQuote:function(){a.toggleFormat("blockquote")},FormatBlock:function(e,t,n){return a.toggleFormat(n||"p")},mceCleanup:function(){var e=i.selection.getBookmark();i.setContent(i.getContent()),i.selection.moveToBookmark(e)},mceRemoveNode:function(e,t,n){var r=n||i.selection.getNode();r!==i.getBody()&&(a.storeSelection(),i.dom.remove(r,!0),a.restoreSelection())},mceSelectNodeDepth:function(e,t,n){var r=0;i.dom.getParent(i.selection.getNode(),function(e){if(1===e.nodeType&&r++===n)return i.selection.select(e),!1},i.getBody())},mceSelectNode:function(e,t,n){i.selection.select(n)},mceInsertContent:function(e,t,n){Vz(i,n)},mceInsertRawHTML:function(e,t,n){i.selection.setContent("tiny_mce_marker");var r=i.getContent();i.setContent(r.replace(/tiny_mce_marker/g,function(){return n}))},mceInsertNewLine:function(e,t,n){gz(i,n)},mceToggleFormat:function(e,t,n){a.toggleFormat(n)},mceSetContent:function(e,t,n){i.setContent(n)},"Indent,Outdent":function(e){_C(i,e)},mceRepaint:function(){},InsertHorizontalRule:function(){i.execCommand("mceInsertContent",!1,"<hr />")},mceToggleVisualAid:function(){i.hasVisual=!i.hasVisual,i.addVisual()},mceReplaceContent:function(e,t,n){i.execCommand("mceInsertContent",!1,n.replace(/\{\$selection\}/g,i.selection.getContent({format:"text"})))},mceInsertLink:function(e,t,n){var r;"string"==typeof n&&(n={href:n}),r=i.dom.getParent(i.selection.getNode(),"a"),n.href=n.href.replace(/ /g,"%20"),r&&n.href||i.formatter.remove("link"),n.href&&i.formatter.apply("link",n,r)},selectAll:function(){var e=i.dom.getParent(i.selection.getStart(),Ge.isContentEditableTrue);if(e){var t=i.dom.createRng();t.selectNodeContents(e),i.selection.setRng(t)}},"delete":function(){Iz(i)},forwardDelete:function(){Fz(i)},mceNewDocument:function(){i.setContent("")},InsertLineBreak:function(e,t,n){return lz(i,n),!0}}),a.addCommands({JustifyLeft:e("alignleft"),JustifyCenter:e("aligncenter"),JustifyRight:e("alignright"),JustifyFull:e("alignjustify"),"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(e){return a.isFormatMatch(e)},mceBlockQuote:function(){return a.isFormatMatch("blockquote")},Outdent:function(){return RC(i)},"InsertUnorderedList,InsertOrderedList":function(e){var t=i.dom.getParent(i.selection.getNode(),"ul,ol");return t&&("insertunorderedlist"===e&&"UL"===t.tagName||"insertorderedlist"===e&&"OL"===t.tagName)}},"state"),a.addCommands({Undo:function(){i.undoManager.undo()},Redo:function(){i.undoManager.redo()}}),a.addQueryValueHandler("FontName",function(){return function(t){return fx(t).fold(function(){return lx(t).map(function(e){return Uz.getFontFamily(t.getBody(),e)}).getOr("")},function(e){return Uz.getFontFamily(t.getBody(),e)})}(i)},this),a.addQueryValueHandler("FontSize",function(){return function(t){return fx(t).fold(function(){return lx(t).map(function(e){return Uz.getFontSize(t.getBody(),e)}).getOr("")},function(e){return Uz.getFontSize(t.getBody(),e)})}(i)},this)},Kz);function Kz(e){this.commands={state:{},exec:{},value:{}},this.editor=e,this.setupCommands(e)}var Xz=Mn.makeMap("focus blur focusin focusout click dblclick mousedown mouseup mousemove mouseover beforepaste paste cut copy selectionchange mouseout mouseenter mouseleave wheel keydown keypress keyup input beforeinput contextmenu dragstart dragend dragover draggesture dragdrop drop drag submit compositionstart compositionend compositionupdate touchstart touchmove touchend touchcancel"," "),Yz=(Gz.isNative=function(e){return!!Xz[e.toLowerCase()]},Gz.prototype.fire=function(e,t){var n,r,o,i;if(e=e.toLowerCase(),(t=t||{}).type=e,t.target||(t.target=this.scope),t.preventDefault||(t.preventDefault=function(){t.isDefaultPrevented=a},t.stopPropagation=function(){t.isPropagationStopped=a},t.stopImmediatePropagation=function(){t.isImmediatePropagationStopped=a},t.isDefaultPrevented=c,t.isPropagationStopped=c,t.isImmediatePropagationStopped=c),this.settings.beforeFire&&this.settings.beforeFire(t),n=this.bindings[e])for(r=0,o=n.length;r<o;r++){if((i=n[r]).once&&this.off(e,i.func),t.isImmediatePropagationStopped())return t.stopPropagation(),t;if(!1===i.func.call(this.scope,t))return t.preventDefault(),t}return t},Gz.prototype.on=function(e,t,n,r){var o,i,a;if(!1===t&&(t=c),t){var u={func:t};for(r&&Mn.extend(u,r),a=(i=e.toLowerCase().split(" ")).length;a--;)e=i[a],(o=this.bindings[e])||(o=this.bindings[e]=[],this.toggleEvent(e,!0)),n?o.unshift(u):o.push(u)}return this},Gz.prototype.off=function(e,t){var n,r,o,i,a;if(e)for(n=(i=e.toLowerCase().split(" ")).length;n--;){if(e=i[n],r=this.bindings[e],!e){for(o in this.bindings)this.toggleEvent(o,!1),delete this.bindings[o];return this}if(r){if(t)for(a=r.length;a--;)r[a].func===t&&(r=r.slice(0,a).concat(r.slice(a+1)),this.bindings[e]=r);else r.length=0;r.length||(this.toggleEvent(e,!1),delete this.bindings[e])}}else{for(e in this.bindings)this.toggleEvent(e,!1);this.bindings={}}return this},Gz.prototype.once=function(e,t,n){return this.on(e,t,n,{once:!0})},Gz.prototype.has=function(e){return e=e.toLowerCase(),!(!this.bindings[e]||0===this.bindings[e].length)},Gz);function Gz(e){this.bindings={},this.settings=e||{},this.scope=this.settings.scope||this,this.toggleEvent=this.settings.toggleEvent||c}function Jz(n){return n._eventDispatcher||(n._eventDispatcher=new Yz({scope:n,toggleEvent:function(e,t){Yz.isNative(e)&&n.toggleNativeEvent&&n.toggleNativeEvent(e,t)}})),n._eventDispatcher}function Qz(e,t){return"selectionchange"===t?e.getDoc():!e.inline&&/^mouse|touch|click|contextmenu|drop|dragover|dragend/.test(t)?e.getDoc().documentElement:e.settings.event_root?(e.eventRoot||(e.eventRoot=rE.select(e.settings.event_root)[0]),e.eventRoot):e.getBody()}function Zz(e,t,n){!function(e){return!e.hidden&&!Gw(e)}(e)?Gw(e)&&function(e){var t=e.target;!function(e){return"click"===e.type}(e)||"A"!==t.tagName||Ah.metaKeyPressed(e)||e.preventDefault()}(n):e.fire(t,n)}function eE(i,a){var e,t;if(i.delegates||(i.delegates={}),!i.delegates[a]&&!i.removed)if(e=Qz(i,a),i.settings.event_root){if(tE||(tE={},i.editorManager.on("removeEditor",function(){var e;if(!i.editorManager.activeEditor&&tE){for(e in tE)i.dom.unbind(Qz(i,e));tE=null}})),tE[a])return;t=function(e){for(var t=e.target,n=i.editorManager.get(),r=n.length;r--;){var o=n[r].getBody();o!==t&&!rE.isChildOf(t,o)||Zz(n[r],a,e)}},tE[a]=t,rE.bind(e,a,t)}else t=function(e){Zz(i,a,e)},rE.bind(e,a,t),i.delegates[a]=t}var tE,nE={fire:function(e,t,n){if(this.removed&&"remove"!==e&&"detach"!==e)return t;var r=Jz(this).fire(e,t);if(!1!==n&&this.parent)for(var o=this.parent();o&&!r.isPropagationStopped();)o.fire(e,r,!1),o=o.parent();return r},on:function(e,t,n){return Jz(this).on(e,t,n)},off:function(e,t){return Jz(this).off(e,t)},once:function(e,t){return Jz(this).once(e,t)},hasEventListeners:function(e){return Jz(this).has(e)}},rE=Xi.DOM,oE=G(G({},nE),{bindPendingEventDelegates:function(){var t=this;Mn.each(t._pendingNativeEvents,function(e){eE(t,e)})},toggleNativeEvent:function(e,t){var n=this;"focus"!==e&&"blur"!==e&&(t?n.initialized?eE(n,e):n._pendingNativeEvents?n._pendingNativeEvents.push(e):n._pendingNativeEvents=[e]:n.initialized&&(n.dom.unbind(Qz(n,e),e,n.delegates[e]),delete n.delegates[e]))},unbindAllNativeEvents:function(){var e,t=this,n=t.getBody(),r=t.dom;if(t.delegates){for(e in t.delegates)t.dom.unbind(Qz(t,e),e,t.delegates[e]);delete t.delegates}!t.inline&&n&&r&&(n.onload=null,r.unbind(t.getWin()),r.unbind(t.getDoc())),r&&(r.unbind(n),r.unbind(t.getContainer()))}}),iE=Mn.each,aE=Mn.explode,uE={f1:112,f2:113,f3:114,f4:115,f5:116,f6:117,f7:118,f8:119,f9:120,f10:121,f11:122,f12:123},sE=Mn.makeMap("alt,ctrl,shift,meta,access"),cE=(lE.prototype.add=function(e,n,r,o){var t,i=this;return"string"==typeof(t=r)?r=function(){i.editor.execCommand(t,!1,null)}:Mn.isArray(t)&&(r=function(){i.editor.execCommand(t[0],t[1],t[2])}),iE(aE(Mn.trim(e)),function(e){var t=i.createShortcut(e,n,r,o);i.shortcuts[t.id]=t}),!0},lE.prototype.remove=function(e){var t=this.createShortcut(e);return!!this.shortcuts[t.id]&&(delete this.shortcuts[t.id],!0)},lE.prototype.parseShortcut=function(e){var t,n,r={};for(n in iE(aE(e.toLowerCase(),"+"),function(e){e in sE?r[e]=!0:/^[0-9]{2,}$/.test(e)?r.keyCode=parseInt(e,10):(r.charCode=e.charCodeAt(0),r.keyCode=uE[e]||e.toUpperCase().charCodeAt(0))}),t=[r.keyCode],sE)r[n]?t.push(n):r[n]=!1;return r.id=t.join(","),r.access&&(r.alt=!0,Nn.mac?r.ctrl=!0:r.shift=!0),r.meta&&(Nn.mac?r.meta=!0:(r.ctrl=!0,r.meta=!1)),r},lE.prototype.createShortcut=function(e,t,n,r){var o;return(o=Mn.map(aE(e,">"),this.parseShortcut))[o.length-1]=Mn.extend(o[o.length-1],{func:n,scope:r||this.editor}),Mn.extend(o[0],{desc:this.editor.translate(t),subpatterns:o.slice(1)})},lE.prototype.hasModifier=function(e){return e.altKey||e.ctrlKey||e.metaKey},lE.prototype.isFunctionKey=function(e){return"keydown"===e.type&&112<=e.keyCode&&e.keyCode<=123},lE.prototype.matchShortcut=function(e,t){return!!t&&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(),!0)},lE.prototype.executeShortcutAction=function(e){return e.func?e.func.call(e.scope):null},lE);function lE(e){this.shortcuts={},this.pendingPatterns=[],this.editor=e;var n=this;e.on("keyup keypress keydown",function(t){!n.hasModifier(t)&&!n.isFunctionKey(t)||t.isDefaultPrevented()||(iE(n.shortcuts,function(e){if(n.matchShortcut(t,e))return n.pendingPatterns=e.subpatterns.slice(0),"keydown"===t.type&&n.executeShortcutAction(e),!0}),n.matchShortcut(t,n.pendingPatterns[0])&&(1===n.pendingPatterns.length&&"keydown"===t.type&&n.executeShortcutAction(n.pendingPatterns[0]),n.pendingPatterns.shift()))})}var fE=Mn.each,dE=Mn.trim,hE="source protocol authority userInfo user password host port relative path directory file query anchor".split(" "),mE={ftp:21,http:80,https:443,mailto:25},gE=(pE.parseDataUri=function(e){var t,n=decodeURIComponent(e).split(","),r=/data:([^;]+)/.exec(n[0]);return r&&(t=r[1]),{type:t,data:n[1]}},pE.getDocumentBaseUrl=function(e){var t;return t=0!==e.protocol.indexOf("http")&&"file:"!==e.protocol?e.href:e.protocol+"//"+e.host+e.pathname,/^[^:]+:\/\/\/?[^\/]+\//.test(t)&&(t=t.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,""),/[\/\\]$/.test(t)||(t+="/")),t},pE.prototype.setPath=function(e){var t=/^(.*?)\/?(\w+)?$/.exec(e);this.path=t[0],this.directory=t[1],this.file=t[2],this.source="",this.getURI()},pE.prototype.toRelative=function(e){var t;if("./"===e)return e;var n=new pE(e,{base_uri:this});if("mce_host"!==n.host&&this.host!==n.host&&n.host||this.port!==n.port||this.protocol!==n.protocol&&""!==n.protocol)return n.getURI();var r=this.getURI(),o=n.getURI();return r===o||"/"===r.charAt(r.length-1)&&r.substr(0,r.length-1)===o?r:(t=this.toRelPath(this.path,n.path),n.query&&(t+="?"+n.query),n.anchor&&(t+="#"+n.anchor),t)},pE.prototype.toAbsolute=function(e,t){var n=new pE(e,{base_uri:this});return n.getURI(t&&this.isSameOrigin(n))},pE.prototype.isSameOrigin=function(e){if(this.host==e.host&&this.protocol==e.protocol){if(this.port==e.port)return!0;var t=mE[this.protocol];if(t&&(this.port||t)==(e.port||t))return!0}return!1},pE.prototype.toRelPath=function(e,t){var n,r,o,i=0,a="",u=e.substring(0,e.lastIndexOf("/")).split("/");if(n=t.split("/"),u.length>=n.length)for(r=0,o=u.length;r<o;r++)if(r>=n.length||u[r]!==n[r]){i=r+1;break}if(u.length<n.length)for(r=0,o=n.length;r<o;r++)if(r>=u.length||u[r]!==n[r]){i=r+1;break}if(1===i)return t;for(r=0,o=u.length-(i-1);r<o;r++)a+="../";for(r=i-1,o=n.length;r<o;r++)a+=r!==i-1?"/"+n[r]:n[r];return a},pE.prototype.toAbsPath=function(e,t){var n,r,o,i=0,a=[];r=/\/$/.test(t)?"/":"";var u=e.split("/"),s=t.split("/");for(fE(u,function(e){e&&a.push(e)}),u=a,n=s.length-1,a=[];0<=n;n--)0!==s[n].length&&"."!==s[n]&&(".."!==s[n]?0<i?i--:a.push(s[n]):i++);return 0!==(o=(n=u.length-i)<=0?a.reverse().join("/"):u.slice(0,n).join("/")+"/"+a.reverse().join("/")).indexOf("/")&&(o="/"+o),r&&o.lastIndexOf("/")!==o.length-1&&(o+=r),o},pE.prototype.getURI=function(e){var t;return void 0===e&&(e=!1),this.source&&!e||(t="",e||(this.protocol?t+=this.protocol+"://":t+="//",this.userInfo&&(t+=this.userInfo+"@"),this.host&&(t+=this.host),this.port&&(t+=":"+this.port)),this.path&&(t+=this.path),this.query&&(t+="?"+this.query),this.anchor&&(t+="#"+this.anchor),this.source=t),this.source},pE);function pE(e,t){e=dE(e),this.settings=t||{};var n=this.settings.base_uri,r=this;if(/^([\w\-]+):([^\/]{2})/i.test(e)||/^\s*#/.test(e))r.source=e;else{var o=0===e.indexOf("//");if(0!==e.indexOf("/")||o||(e=(n&&n.protocol||"http")+"://mce_host"+e),!/^[\w\-]*:?\/\//.test(e)){var i=this.settings.base_uri?this.settings.base_uri.path:new pE(j.document.location.href).directory;if(this.settings.base_uri&&""==this.settings.base_uri.protocol)e="//mce_host"+r.toAbsPath(i,e);else{var a=/([^#?]*)([#?]?.*)/.exec(e);e=(n&&n.protocol||"http")+"://mce_host"+r.toAbsPath(i,a[1])+a[2]}}e=e.replace(/@@/g,"(mce_at)");var u=/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(e);fE(hE,function(e,t){var n=u[t];n=n&&n.replace(/\(mce_at\)/g,"@@"),r[e]=n}),n&&(r.protocol||(r.protocol=n.protocol),r.userInfo||(r.userInfo=n.userInfo),r.port||"mce_host"!==r.host||(r.port=n.port),r.host&&"mce_host"!==r.host||(r.host=n.host),r.source=""),o&&(r.protocol="")}}function vE(){var e=function(){function e(n,r){return function(e,t){return n[e.toLowerCase()]=G(G({},t),{type:r})}}var t={},n={},r={},o={},i={},a={},u={};return{addButton:e(t,"button"),addToggleButton:e(t,"togglebutton"),addMenuButton:e(t,"menubutton"),addSplitButton:e(t,"splitbutton"),addMenuItem:e(n,"menuitem"),addNestedMenuItem:e(n,"nestedmenuitem"),addToggleMenuItem:e(n,"togglemenuitem"),addAutocompleter:e(r,"autocompleter"),addContextMenu:e(i,"contextmenu"),addContextToolbar:e(a,"contexttoolbar"),addContextForm:e(a,"contextform"),addSidebar:e(u,"sidebar"),addIcon:function(e,t){return o[e.toLowerCase()]=t},getAll:function(){return{buttons:t,menuItems:n,icons:o,popups:r,contextMenus:i,contextToolbars:a,sidebars:u}}}}();return{addAutocompleter:e.addAutocompleter,addButton:e.addButton,addContextForm:e.addContextForm,addContextMenu:e.addContextMenu,addContextToolbar:e.addContextToolbar,addIcon:e.addIcon,addMenuButton:e.addMenuButton,addMenuItem:e.addMenuItem,addNestedMenuItem:e.addNestedMenuItem,addSidebar:e.addSidebar,addSplitButton:e.addSplitButton,addToggleButton:e.addToggleButton,addToggleMenuItem:e.addToggleMenuItem,getAll:e.getAll}}var yE=Xi.DOM,bE=Mn.extend,CE=Mn.each,wE=Mn.resolve,xE=Nn.ie,zE=(EE.prototype.render=function(){Dz(this)},EE.prototype.focus=function(e){ad(this,e)},EE.prototype.hasFocus=function(){return ud(this)},EE.prototype.execCallback=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var r,o=this.settings[e];if(o)return this.callbackLookup&&(r=this.callbackLookup[e])&&(o=r.func,r=r.scope),"string"==typeof o&&(r=(r=o.replace(/\.\w+$/,""))?wE(r):0,o=wE(o),this.callbackLookup=this.callbackLookup||{},this.callbackLookup[e]={func:o,scope:r}),o.apply(r||this,Array.prototype.slice.call(arguments,1))},EE.prototype.translate=function(e){return ra.translate(e)},EE.prototype.getParam=function(e,t,n){return ef(this,e,t,n)},EE.prototype.nodeChanged=function(e){this._nodeChangeDispatcher.nodeChanged(e)},EE.prototype.addCommand=function(e,t,n){this.editorCommands.addCommand(e,t,n)},EE.prototype.addQueryStateHandler=function(e,t,n){this.editorCommands.addQueryStateHandler(e,t,n)},EE.prototype.addQueryValueHandler=function(e,t,n){this.editorCommands.addQueryValueHandler(e,t,n)},EE.prototype.addShortcut=function(e,t,n,r){this.shortcuts.add(e,t,n,r)},EE.prototype.execCommand=function(e,t,n,r){return this.editorCommands.execCommand(e,t,n,r)},EE.prototype.queryCommandState=function(e){return this.editorCommands.queryCommandState(e)},EE.prototype.queryCommandValue=function(e){return this.editorCommands.queryCommandValue(e)},EE.prototype.queryCommandSupported=function(e){return this.editorCommands.queryCommandSupported(e)},EE.prototype.show=function(){this.hidden&&(this.hidden=!1,this.inline?this.getBody().contentEditable="true":(yE.show(this.getContainer()),yE.hide(this.id)),this.load(),this.fire("show"))},EE.prototype.hide=function(){var e=this,t=e.getDoc();e.hidden||(xE&&t&&!e.inline&&t.execCommand("SelectAll"),e.save(),e.inline?(e.getBody().contentEditable="false",e===e.editorManager.focusedEditor&&(e.editorManager.focusedEditor=null)):(yE.hide(e.getContainer()),yE.setStyle(e.id,"display",e.orgDisplay)),e.hidden=!0,e.fire("hide"))},EE.prototype.isHidden=function(){return!!this.hidden},EE.prototype.setProgressState=function(e,t){this.fire("ProgressState",{state:e,time:t})},EE.prototype.load=function(e){var t,n=this.getElement();if(this.removed)return"";if(n){(e=e||{}).load=!0;var r=Ge.isTextareaOrInput(n)?n.value:n.innerHTML;return t=this.setContent(r,e),e.element=n,e.no_events||this.fire("LoadContent",e),e.element=n=null,t}},EE.prototype.save=function(e){var t,n,r=this,o=r.getElement();if(o&&r.initialized&&!r.removed)return(e=e||{}).save=!0,e.element=o,e.content=r.getContent(e),e.no_events||r.fire("SaveContent",e),"raw"===e.format&&r.fire("RawSaveContent",e),t=e.content,Ge.isTextareaOrInput(o)?o.value=t:(!e.is_removing&&r.inline||(o.innerHTML=t),(n=yE.getParent(r.id,"form"))&&CE(n.elements,function(e){if(e.name===r.id)return e.value=t,!1})),e.element=o=null,!1!==e.set_dirty&&r.setDirty(!1),t},EE.prototype.setContent=function(e,t){return jl(this,e,t)},EE.prototype.getContent=function(e){return function(t,n){return void 0===n&&(n={}),k.from(t.getBody()).fold($("tree"===n.format?new ul("body",11):""),function(e){return ml(t,n,e)})}(this,e)},EE.prototype.insertContent=function(e,t){t&&(e=bE({content:e},t)),this.execCommand("mceInsertContent",!1,e)},EE.prototype.resetContent=function(e){e===undefined?jl(this,this.startContent,{format:"raw"}):jl(this,e),this.undoManager.reset(),this.setDirty(!1),this.nodeChanged()},EE.prototype.isDirty=function(){return!this.isNotDirty},EE.prototype.setDirty=function(e){var t=!this.isNotDirty;this.isNotDirty=!e,e&&e!==t&&this.fire("dirty")},EE.prototype.getContainer=function(){return this.container||(this.container=yE.get(this.editorContainer||this.id+"_parent")),this.container},EE.prototype.getContentAreaContainer=function(){return this.contentAreaContainer},EE.prototype.getElement=function(){return this.targetElm||(this.targetElm=yE.get(this.id)),this.targetElm},EE.prototype.getWin=function(){var e;return this.contentWindow||(e=this.iframeElement)&&(this.contentWindow=e.contentWindow),this.contentWindow},EE.prototype.getDoc=function(){var e;return this.contentDocument||(e=this.getWin())&&(this.contentDocument=e.document),this.contentDocument},EE.prototype.getBody=function(){var e=this.getDoc();return this.bodyElement||(e?e.body:null)},EE.prototype.convertURL=function(e,t,n){var r=this.settings;return r.urlconverter_callback?this.execCallback("urlconverter_callback",e,n,!0,t):!r.convert_urls||n&&"LINK"===n.nodeName||0===e.indexOf("file:")||0===e.length?e:r.relative_urls?this.documentBaseURI.toRelative(e):e=this.documentBaseURI.toAbsolute(e,r.remove_script_host)},EE.prototype.addVisual=function(e){var n,r=this,o=r.settings,i=r.dom;e=e||r.getBody(),r.hasVisual===undefined&&(r.hasVisual=o.visual),CE(i.select("table,a",e),function(e){var t;switch(e.nodeName){case"TABLE":return n=o.visual_table_class||"mce-item-table",void((t=i.getAttrib(e,"border"))&&"0"!==t||!r.hasVisual?i.removeClass(e,n):i.addClass(e,n));case"A":return void(i.getAttrib(e,"href")||(t=i.getAttrib(e,"name")||e.id,n=o.visual_anchor_class||"mce-item-anchor",t&&r.hasVisual?i.addClass(e,n):i.removeClass(e,n)))}}),r.fire("VisualAid",{element:e,hasVisual:r.hasVisual})},EE.prototype.remove=function(){$l(this)},EE.prototype.destroy=function(e){Wl(this,e)},EE.prototype.uploadImages=function(e){return this.editorUpload.uploadImages(e)},EE.prototype._scanForImages=function(){return this.editorUpload.scanForImages()},EE.prototype.addButton=function(){throw new Error("editor.addButton has been removed in tinymce 5x, use editor.ui.registry.addButton or editor.ui.registry.addToggleButton or editor.ui.registry.addSplitButton instead")},EE.prototype.addSidebar=function(){throw new Error("editor.addSidebar has been removed in tinymce 5x, use editor.ui.registry.addSidebar instead")},EE.prototype.addMenuItem=function(){throw new Error("editor.addMenuItem has been removed in tinymce 5x, use editor.ui.registry.addMenuItem instead")},EE.prototype.addContextToolbar=function(){throw new Error("editor.addContextToolbar has been removed in tinymce 5x, use editor.ui.registry.addContextToolbar instead")},EE);function EE(e,t,n){var r=this;this.plugins={},this.contentCSS=[],this.contentStyles=[],this.loadedCSS={},this.isNotDirty=!1,this.editorManager=n,this.documentBaseUrl=n.documentBaseURL,bE(this,oE),this.settings=Ql(this,e,this.documentBaseUrl,n.defaultSettings,t),this.settings.suffix&&(n.suffix=this.settings.suffix),this.suffix=n.suffix,this.settings.base_url&&n._setBaseUrl(this.settings.base_url),this.baseUri=n.baseURI,this.settings.referrer_policy&&(Qi.ScriptLoader._setReferrerPolicy(this.settings.referrer_policy),Xi.DOM.styleSheetLoader._setReferrerPolicy(this.settings.referrer_policy)),ga.languageLoad=this.settings.language_load,ga.baseURL=n.baseURL,this.id=e,this.setDirty(!1),this.documentBaseURI=new gE(this.settings.document_base_url,{base_uri:this.baseUri}),this.baseURI=this.baseUri,this.inline=!!this.settings.inline,this.shortcuts=new cE(this),this.editorCommands=new Wz(this),this.settings.cache_suffix&&(Nn.cacheSuffix=this.settings.cache_suffix.replace(/^[\?\&]+/,"")),this.ui={registry:vE()};var o=Zw(this);this.mode=o,this.setMode=o.set,n.fire("SetupEditor",{editor:this}),this.execCallback("setup",this),this.$=vi.overrideDefaults(function(){return{context:r.inline?r.getBody():r.getDoc(),element:r.getBody()}})}function NE(t){var n=t.type;DE(VE.get(),function(e){switch(n){case"scroll":e.fire("ScrollWindow",t);break;case"resize":e.fire("ResizeWindow",t)}})}function SE(e){e!==OE&&(e?vi(window).on("resize scroll",NE):vi(window).off("resize scroll",NE),OE=e)}function kE(t){var e=PE;delete HE[t.id];for(var n=0;n<HE.length;n++)if(HE[n]===t){HE.splice(n,1);break}return PE=y(PE,function(e){return t!==e}),VE.activeEditor===t&&(VE.activeEditor=0<PE.length?PE[0]:null),VE.focusedEditor===t&&(VE.focusedEditor=null),e.length!==PE.length}var TE,AE,ME=Xi.DOM,RE=Mn.explode,DE=Mn.each,_E=Mn.extend,BE=0,OE=!1,HE=[],PE=[],LE="CSS1Compat"!==j.document.compatMode,VE=G(G({},nE),{baseURI:null,baseURL:null,defaultSettings:{},documentBaseURL:null,suffix:null,$:vi,majorVersion:"5",minorVersion:"1.3",releaseDate:"2019-12-04",editors:HE,i18n:ra,activeEditor:null,focusedEditor:null,settings:{},setup:function(){var e,t,n="";t=gE.getDocumentBaseUrl(j.document.location),/^[^:]+:\/\/\/?[^\/]+\//.test(t)&&(t=t.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,""),/[\/\\]$/.test(t)||(t+="/"));var r=window.tinymce||window.tinyMCEPreInit;if(r)e=r.base||r.baseURL,n=r.suffix;else{for(var o=j.document.getElementsByTagName("script"),i=0;i<o.length;i++){var a;if(""!==(a=o[i].src||"")){var u=a.substring(a.lastIndexOf("/"));if(/tinymce(\.full|\.jquery|)(\.min|\.dev|)\.js/.test(a)){-1!==u.indexOf(".min")&&(n=".min"),e=a.substring(0,a.lastIndexOf("/"));break}}}if(!e&&j.document.currentScript)-1!==(a=j.document.currentScript.src).indexOf(".min")&&(n=".min"),e=a.substring(0,a.lastIndexOf("/"))}this.baseURL=new gE(t).toAbsolute(e),this.documentBaseURL=t,this.baseURI=new gE(this.baseURL),this.suffix=n,nd(this)},overrideDefaults:function(e){var t,n;(t=e.base_url)&&this._setBaseUrl(t),n=e.suffix,e.suffix&&(this.suffix=n);var r=(this.defaultSettings=e).plugin_base_urls;for(var o in r)ga.PluginManager.urls[o]=r[o]},init:function(r){var n,u,s=this;u=Mn.makeMap("area base basefont br col frame hr img input isindex link meta param embed source wbr track colgroup option table tbody tfoot thead tr th td script noscript style textarea video audio iframe object menu"," ");function c(e){var t=e.id;return t||(t=(t=e.name)&&!ME.get(t)?e.name:ME.uniqueId(),e.setAttribute("id",t)),t}function l(e,t){return t.constructor===RegExp?t.test(e.className):ME.hasClass(e,t)}var f=function(e){n=e},e=function(){function n(e,t,n){var r=new zE(e,t,s);a.push(r),r.on("init",function(){++i===o.length&&f(a)}),r.targetElm=r.targetElm||n,r.render()}var o,i=0,a=[];ME.unbind(window,"ready",e),function(e){var t=r[e];if(t)t.apply(s,Array.prototype.slice.call(arguments,2))}("onpageload"),o=vi.unique(function(t){var e,n=[];if(Nn.browser.isIE()&&Nn.browser.version.major<11)return Fd.initError("TinyMCE does not support the browser you are using. For a list of supported browsers please see: https://www.tinymce.com/docs/get-started/system-requirements/"),[];if(LE)return Fd.initError("Failed to initialize the editor as the document is not in standards mode. TinyMCE requires standards mode."),[];if(t.types)return DE(t.types,function(e){n=n.concat(ME.select(e.selector))}),n;if(t.selector)return ME.select(t.selector);if(t.target)return[t.target];switch(t.mode){case"exact":0<(e=t.elements||"").length&&DE(RE(e),function(t){var e;(e=ME.get(t))?n.push(e):DE(j.document.forms,function(e){DE(e.elements,function(e){e.name===t&&(t="mce_editor_"+BE++,ME.setAttrib(e,"id",t),n.push(e))})})});break;case"textareas":case"specific_textareas":DE(ME.select("textarea"),function(e){t.editor_deselector&&l(e,t.editor_deselector)||t.editor_selector&&!l(e,t.editor_selector)||n.push(e)})}return n}(r)),r.types?DE(r.types,function(t){Mn.each(o,function(e){return!ME.is(e,t.selector)||(n(c(e),_E({},r,t),e),!1)})}):(Mn.each(o,function(e){!function(e){e&&e.initialized&&!(e.getContainer()||e.getBody()).parentNode&&(kE(e),e.unbindAllNativeEvents(),e.destroy(!0),e.removed=!0,e=null)}(s.get(e.id))}),0===(o=Mn.grep(o,function(e){return!s.get(e.id)})).length?f([]):DE(o,function(e){!function(e,t){return e.inline&&t.tagName.toLowerCase()in u}(r,e)?n(c(e),r,e):Fd.initError("Could not initialize inline editor on invalid inline target element",e)}))};return s.settings=r,ME.bind(window,"ready",e),new Zt(function(t){n?t(n):f=function(e){t(e)}})},get:function(t){return 0===arguments.length?PE.slice(0):K(t)?g(PE,function(e){return e.id===t}).getOr(null):_(t)&&PE[t]?PE[t]:null},add:function(e){var n=this;return HE[e.id]===e||(null===n.get(e.id)&&(function(e){return"length"!==e}(e.id)&&(HE[e.id]=e),HE.push(e),PE.push(e)),SE(!0),n.activeEditor=e,n.fire("AddEditor",{editor:e}),TE||(TE=function(e){var t=n.fire("BeforeUnload");if(t.returnValue)return e.preventDefault(),e.returnValue=t.returnValue,t.returnValue},window.addEventListener("beforeunload",TE))),e},createEditor:function(e,t){return this.add(new zE(e,t,this))},remove:function(e){var t,n,r=this;if(e){if(!K(e))return n=e,M(r.get(n.id))?null:(kE(n)&&r.fire("RemoveEditor",{editor:n}),0===PE.length&&window.removeEventListener("beforeunload",TE),n.remove(),SE(0<PE.length),n);DE(ME.select(e),function(e){(n=r.get(e.id))&&r.remove(n)})}else for(t=PE.length-1;0<=t;t--)r.remove(PE[t])},execCommand:function(e,t,n){var r=this.get(n);switch(e){case"mceAddEditor":return this.get(n)||new zE(n,this.settings,this).render(),!0;case"mceRemoveEditor":return r&&r.remove(),!0;case"mceToggleEditor":return r?r.isHidden()?r.show():r.hide():this.execCommand("mceAddEditor",0,n),!0}return!!this.activeEditor&&this.activeEditor.execCommand(e,t,n)},triggerSave:function(){DE(PE,function(e){e.save()})},addI18n:function(e,t){ra.add(e,t)},translate:function(e){return ra.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},_setBaseUrl:function(e){this.baseURL=new gE(this.documentBaseURL).toAbsolute(e.replace(/\/+$/,"")),this.baseURI=new gE(this.baseURL)}});function IE(n){return{walk:function(e,t){return Gc(n,e,t)},split:Cm,normalize:function(t){return ay(n,t).fold($(!1),function(e){return t.setStart(e.startContainer,e.startOffset),t.setEnd(e.endContainer,e.endOffset),!0})}}}VE.setup(),(AE=IE=IE||{}).compareRanges=hh,AE.getCaretRangeFromPoint=$v,AE.getSelectedNode=Wa,AE.getNode=Ka;function FE(e,t,n){var r,o,i,a,u,s;return r=t.x,o=t.y,i=e.w,a=e.h,u=t.w,s=t.h,"b"===(n=(n||"").split(""))[0]&&(o+=s),"r"===n[1]&&(r+=u),"c"===n[0]&&(o+=JE(s/2)),"c"===n[1]&&(r+=JE(u/2)),"b"===n[3]&&(o-=a),"r"===n[4]&&(r-=i),"c"===n[3]&&(o-=JE(a/2)),"c"===n[4]&&(r-=JE(i/2)),QE(r,o,i,a)}function UE(){}var jE,qE,$E,WE,KE=IE,XE=(jE={},qE={},{load:function(r,o){var i='Script at URL "'+o+'" failed to load',a='Script at URL "'+o+"\" did not call `tinymce.Resource.add('"+r+"', data)` within 1 second";if(jE[r]!==undefined)return jE[r];var e=new Zt(function(e,t){var n=function(e,t,n){function r(n){return function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];o||(o=!0,null!==i&&(j.clearTimeout(i),i=null),n.apply(null,e))}}void 0===n&&(n=1e3);var o=!1,i=null,a=r(e),u=r(t);return{start:function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];o||null!==i||(i=j.setTimeout(function(){return u.apply(null,e)},n))},resolve:a,reject:u}}(e,t);qE[r]=n.resolve,Qi.ScriptLoader.loadScript(o,function(){return n.start(a)},function(){return n.reject(i)})});return jE[r]=e},add:function(e,t){qE[e]!==undefined&&(qE[e](t),delete qE[e]),jE[e]=Zt.resolve(t)}}),YE=Math.min,GE=Math.max,JE=Math.round,QE=function(e,t,n,r){return{x:e,y:t,w:n,h:r}},ZE={inflate:function(e,t,n){return QE(e.x-t,e.y-n,e.w+2*t,e.h+2*n)},relativePosition:FE,findBestRelativePosition:function(e,t,n,r){var o,i;for(i=0;i<r.length;i++)if((o=FE(e,t,r[i])).x>=n.x&&o.x+o.w<=n.w+n.x&&o.y>=n.y&&o.y+o.h<=n.h+n.y)return r[i];return null},intersect:function(e,t){var n,r,o,i;return n=GE(e.x,t.x),r=GE(e.y,t.y),o=YE(e.x+e.w,t.x+t.w),i=YE(e.y+e.h,t.y+t.h),o-n<0||i-r<0?null:QE(n,r,o-n,i-r)},clamp:function(e,t,n){var r,o,i,a,u,s,c,l,f,d;return u=e.x,s=e.y,c=e.x+e.w,l=e.y+e.h,f=t.x+t.w,d=t.y+t.h,r=GE(0,t.x-u),o=GE(0,t.y-s),i=GE(0,c-f),a=GE(0,l-d),u+=r,s+=o,n&&(c+=r,l+=o,u-=i,s-=a),QE(u,s,(c-=i)-u,(l-=a)-s)},create:QE,fromClientRect:function(e){return QE(e.left,e.top,e.width,e.height)}},eN=Mn.each,tN=Mn.extend;UE.extend=$E=function(n){function r(){var e,t,n;if(!WE&&(this.init&&this.init.apply(this,arguments),t=this.Mixins))for(e=t.length;e--;)(n=t[e]).init&&n.init.apply(this,arguments)}function t(){return this}function e(n,r){return function(){var e,t=this._super;return this._super=u[n],e=r.apply(this,arguments),this._super=t,e}}var o,i,a,u=this.prototype;for(i in WE=!0,o=new this,WE=!1,n.Mixins&&(eN(n.Mixins,function(e){for(var t in e)"init"!==t&&(n[t]=e[t])}),u.Mixins&&(n.Mixins=u.Mixins.concat(n.Mixins))),n.Methods&&eN(n.Methods.split(","),function(e){n[e]=t}),n.Properties&&eN(n.Properties.split(","),function(e){var t="_"+e;n[e]=function(e){return e!==undefined?(this[t]=e,this):this[t]}}),n.Statics&&eN(n.Statics,function(e,t){r[t]=e}),n.Defaults&&u.Defaults&&(n.Defaults=tN({},u.Defaults,n.Defaults)),n)"function"==typeof(a=n[i])&&u[i]?o[i]=e(i,a):o[i]=a;return r.prototype=o,(r.constructor=r).extend=$E,r};var nN=Math.min,rN=Math.max,oN=Math.round,iN={serialize:function(e){var t=JSON.stringify(e);return K(t)?t.replace(/[\u0080-\uFFFF]/g,function(e){var t=e.charCodeAt(0).toString(16);return"\\u"+"0000".substring(t.length)+t}):t},parse:function(e){try{return JSON.parse(e)}catch(t){}}},aN={callbacks:{},count:0,send:function(t){var n=this,r=Xi.DOM,o=t.count!==undefined?t.count:n.count,i="tinymce_jsonp_"+o;n.callbacks[o]=function(e){r.remove(i),delete n.callbacks[o],t.callback(e)},r.add(r.doc.body,"script",{id:i,src:t.url,type:"text/javascript"}),n.count++}},uN=G(G({},nE),{send:function(e){var t,n=0,r=function(){!e.async||4===t.readyState||1e4<n++?(e.success&&n<1e4&&200===t.status?e.success.call(e.success_scope,""+t.responseText,t,e):e.error&&e.error.call(e.error_scope,1e4<n?"TIMED_OUT":"GENERAL",t,e),t=null):pn.setTimeout(r,10)};if(e.scope=e.scope||this,e.success_scope=e.success_scope||e.scope,e.error_scope=e.error_scope||e.scope,e.async=!1!==e.async,e.data=e.data||"",uN.fire("beforeInitialize",{settings:e}),t=new j.XMLHttpRequest){if(t.overrideMimeType&&t.overrideMimeType(e.content_type),t.open(e.type||(e.data?"POST":"GET"),e.url,e.async),e.crossDomain&&(t.withCredentials=!0),e.content_type&&t.setRequestHeader("Content-Type",e.content_type),e.requestheaders&&Mn.each(e.requestheaders,function(e){t.setRequestHeader(e.key,e.value)}),t.setRequestHeader("X-Requested-With","XMLHttpRequest"),(t=uN.fire("beforeSend",{xhr:t,settings:e}).xhr).send(e.data),!e.async)return r();pn.setTimeout(r,10)}}}),sN=Mn.extend,cN=(lN.sendRPC=function(e){return(new lN).send(e)},lN.prototype.send=function(e){var n=e.error,r=e.success,o=sN(this.settings,e);o.success=function(e,t){void 0===(e=iN.parse(e))&&(e={error:"JSON Parse error."}),e.error?n.call(o.error_scope||o.scope,e.error,t):r.call(o.success_scope||o.scope,e.result)},o.error=function(e,t){n&&n.call(o.error_scope||o.scope,e,t)},o.data=iN.serialize({id:e.id||"c"+this.count++,method:e.method,params:e.params}),o.content_type="application/json",uN.send(o)},lN);function lN(e){this.settings=sN({},e),this.count=0}var fN,dN,hN,mN;try{fN=j.window.localStorage}catch(yN){dN={},hN=[],mN={getItem:function(e){var t=dN[e];return t||null},setItem:function(e,t){hN.push(e),dN[e]=String(t)},key:function(e){return hN[e]},removeItem:function(t){hN=hN.filter(function(e){return e===t}),delete dN[t]},clear:function(){hN=[],dN={}},length:0},Object.defineProperty(mN,"length",{get:function(){return hN.length},configurable:!1,enumerable:!1}),fN=mN}var gN,pN={geom:{Rect:ZE},util:{Promise:Zt,Delay:pn,Tools:Mn,VK:Ah,URI:gE,Class:UE,EventDispatcher:Yz,Observable:nE,I18n:ra,XHR:uN,JSON:iN,JSONRequest:cN,JSONP:aN,LocalStorage:fN,Color:function(e){function t(e){var t;return"object"==typeof e?"r"in e?(u=e.r,s=e.g,c=e.b):"v"in e&&function(e,t,n){var r,o,i,a;if(e=(parseInt(e,10)||0)%360,t=parseInt(t,10)/100,n=parseInt(n,10)/100,t=rN(0,nN(t,1)),n=rN(0,nN(n,1)),0!==t){switch(r=e/60,i=(o=n*t)*(1-Math.abs(r%2-1)),a=n-o,Math.floor(r)){case 0:u=o,s=i,c=0;break;case 1:u=i,s=o,c=0;break;case 2:u=0,s=o,c=i;break;case 3:u=0,s=i,c=o;break;case 4:u=i,s=0,c=o;break;case 5:u=o,s=0,c=i;break;default:u=s=c=0}u=oN(255*(u+a)),s=oN(255*(s+a)),c=oN(255*(c+a))}else u=s=c=oN(255*n)}(e.h,e.s,e.v):(t=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)[^\)]*\)/gi.exec(e))?(u=parseInt(t[1],10),s=parseInt(t[2],10),c=parseInt(t[3],10)):(t=/#([0-F]{2})([0-F]{2})([0-F]{2})/gi.exec(e))?(u=parseInt(t[1],16),s=parseInt(t[2],16),c=parseInt(t[3],16)):(t=/#([0-F])([0-F])([0-F])/gi.exec(e))&&(u=parseInt(t[1]+t[1],16),s=parseInt(t[2]+t[2],16),c=parseInt(t[3]+t[3],16)),u=u<0?0:255<u?255:u,s=s<0?0:255<s?255:s,c=c<0?0:255<c?255:c,n}var n={},u=0,s=0,c=0;return e&&t(e),n.toRgb=function(){return{r:u,g:s,b:c}},n.toHsv=function(){return function(e,t,n){var r,o,i,a;return o=0,(i=nN(e/=255,nN(t/=255,n/=255)))===(a=rN(e,rN(t,n)))?{h:0,s:0,v:100*(o=i)}:(r=(a-i)/a,{h:oN(60*((e===i?3:n===i?1:5)-(e===i?t-n:n===i?e-t:n-e)/((o=a)-i))),s:oN(100*r),v:oN(100*o)})}(u,s,c)},n.toHex=function(){function e(e){return 1<(e=parseInt(e,10).toString(16)).length?e:"0"+e}return"#"+e(u)+e(s)+e(c)},n.parse=t,n}},dom:{EventUtils:kr,Sizzle:Ao,DomQuery:vi,TreeWalker:yi,DOMUtils:Xi,ScriptLoader:Qi,RangeUtils:KE,Serializer:Ap,ControlSelection:Wp,BookmarkManager:Kp,Selection:ly,Event:kr.Event},html:{Styles:xr,Entities:ir,Node:ul,Schema:pr,SaxParser:of,DomParser:Np,Writer:gl,Serializer:pl},Env:Nn,AddOnManager:ga,Annotator:nl,Formatter:Cp,UndoManager:mm,EditorCommands:Wz,WindowManager:Bd,NotificationManager:_d,EditorObservable:oE,Shortcuts:cE,Editor:zE,FocusManager:Zf,EditorManager:VE,DOM:Xi.DOM,ScriptLoader:Qi.ScriptLoader,PluginManager:ga.PluginManager,ThemeManager:ga.ThemeManager,IconManager:Ud,Resource:XE,trim:Mn.trim,isArray:Mn.isArray,is:Mn.is,toArray:Mn.toArray,makeMap:Mn.makeMap,each:Mn.each,map:Mn.map,grep:Mn.grep,inArray:Mn.inArray,extend:Mn.extend,create:Mn.create,walk:Mn.walk,createNS:Mn.createNS,resolve:Mn.resolve,explode:Mn.explode,_addCacheSuffix:Mn._addCacheSuffix,isOpera:Nn.opera,isWebKit:Nn.webkit,isIE:Nn.ie,isGecko:Nn.gecko,isMac:Nn.mac},vN=Mn.extend(VE,pN);gN=vN,window.tinymce=gN,window.tinyMCE=gN,function(e){if("object"==typeof module)try{module.exports=e}catch(t){}}(vN)}(window);
\ No newline at end of file
diff --git a/app/tmpl/block/cgu.tt b/app/tmpl/block/cgu.tt
deleted file mode 100644 (file)
index ae910f4..0000000
+++ /dev/null
@@ -1,216 +0,0 @@
-<div class="container">
-<p style="font-weight: bold;">
-1 : Objet</p>
-<p>
-Les présentes « conditions générales d'utilisation »
-ont pour objet l'encadrement juridique des modalités de mise à
-disposition des services du site fld.lu
-et leur utilisation par « l'Utilisateur ».</p>
-<p>
-Les conditions générales d'utilisation doivent être acceptées par
-tout Utilisateur souhaitant accéder au site. Elles constituent le
-contrat entre le site et l'Utilisateur. L'accès au site par
-l'Utilisateur signifie son acceptation des présentes conditions
-générales d'utilisation.</p>
-<p>
-       En cas de non-acceptation des conditions générales d'utilisation
-       stipulées dans le présent contrat, l'Utilisateur se doit de
-       renoncer à l'accès des services proposés par le site.</p>
-<p>La FLD se réserve le droit de modifier unilatéralement et
-       à tout moment le contenu des présentes conditions générales
-       d'utilisation.</p>
-<p style="font-weight: bold;">
-2 : Mentions légales</p>
-<p>
-L'édition du site fld.lu est
-assurée par le comité de la Féderation Luxembourgeoise de Darts dont le
-siège social est situé à 3 route d'Arlon - 8009 Strassen.</p>
-<p>
-Responsable de la publication Web est Kilian Saffran.</p>
-
-
-<p style="font-weight: bold;"> 3 :
-Définitions</p>
-<p>
-La présente clause a pour objet de définir les différents termes
-essentiels du contrat :</p>
-<ul><li><p>
-       Utilisateur : ce terme désigne toute personne qui utilise le
-       site ou l'un des services proposés par le site.</p>
-       </li><li><p>Contenu
-       utilisateur : ce sont les données transmises par l'Utilisateur
-       au sein du site.</p>
-       </li><li><p>Membre :
-       l'Utilisateur qui est membre de la FLD est qui peut s'identifié au site.</p>
-       </li><li><p>Identifiant
-       et mot de passe : c'est l'ensemble des informations nécessaires
-       à l'identification d'un Utilisateur sur le site. L'identifiant et
-       le mot de passe permettent à l'Utilisateur d'accéder à des
-       services réservés aux membres du site. Le mot de passe est
-       confidentiel.</p>
-</li></ul><p style="font-weight: bold;"> 4 :
-accès aux services</p>
-<p>
-Le site permet à l'Utilisateur un accès gratuit aux services
-suivants :</p>
-<ul><li><p>
-       Modifier ses données personnelles est les données du club;</p>
-       </li><li><p>Transférer et télécharger les documents nécessaires pour le propre fonctionnement des activités de la Féderation;</p>
-       </li><li><p>consulter les information et documents utiles et nécessaires pour le propre fonctionnement des activités de la Féderation ;</p>
-       </li></ul><p>
-Le site est accessible gratuitement en tout lieu à tout Utilisateur
-ayant un accès à Internet. Tous les frais supportés par
-l'Utilisateur pour accéder au service (matériel informatique,
-logiciels, connexion Internet, etc.) sont à sa charge.</p>
-<p>
-Selon le cas :</p>
-<p>
-L'Utilisateur non membre n'a pas accès aux services réservés aux
-membres. Pour cela, il doit s'identifier à l'aide de son identifiant
-et de son mot de passe.</p>
-
-<p>
-Le site met en œuvre tous les moyens mis à sa disposition pour
-assurer un accès de qualité à ses services. L'obligation étant de
-moyens, le site ne s'engage pas à atteindre ce résultat.</p>
-<p>
-Tout événement dû à un cas de force majeure ayant pour
-conséquence un dysfonctionnement du réseau ou du serveur n'engage
-pas la responsabilité de  fld.lu.</p>
-<p>
-L'accès aux services du site peut à tout moment faire l'objet d'une
-interruption, d'une suspension, d'une modification sans préavis pour
-une maintenance ou pour tout autre cas. L'Utilisateur s'oblige à ne
-réclamer aucune indemnisation suite à l'interruption, à la
-suspension ou à la modification du présent contrat.</p>
-<p>
-L'Utilisateur a la possibilité de contacter le site par messagerie
-électronique à l'adresse webmaster [ at ] fld.lu.
-</p>
-<p style="font-weight: bold;"> 5 :
-Propriété intellectuelle</p>
-<p>
-Les marques, logos, signes et tout autre contenu du site font l'objet
-d'une protection par le Code de la propriété intellectuelle et plus
-particulièrement par le droit d'auteur.</p>
-<p>
-L'Utilisateur sollicite l'autorisation préalable du site pour toute
-reproduction, publication, copie des différents contenus.</p>
-<p>
-L'Utilisateur s'engage à une utilisation des contenus du site dans
-un cadre strictement privé. Une utilisation des contenus à des fins
-commerciales est strictement interdite.</p>
-<p>
-Tout contenu mis en ligne par l'Utilisateur est de sa seule
-responsabilité. L'Utilisateur s'engage à ne pas mettre en ligne de
-contenus pouvant porter atteinte aux intérêts de tierces personnes.
-Tout recours en justice engagé par un tiers lésé contre le site
-sera pris en charge par l'Utilisateur. 
-</p>
-<p>
-Le contenu de l'Utilisateur peut être à tout moment et pour
-n'importe quelle raison supprimé ou modifié par le site.
-L'Utilisateur ne reçoit aucune justification et notification
-préalablement à la suppression ou à la modification du contenu
-Utilisateur.</p>
-<p style="font-weight: bold;"> 6 :
-Données personnelles</p>
-<p>
-Les informations demandées à l'inscription au site sont
-nécessaires et obligatoires pour la création du compte de
-l'Utilisateur. En particulier, l'adresse électronique pourra être
-utilisée par le site pour l'administration, la gestion et
-l'animation du service.</p>
-<p>
-Le site assure à l'Utilisateur une collecte et un traitement
-d'informations personnelles dans le respect de la vie privée
-conformément à la loi européen des protection de données relative à
-l'informatique, aux fichiers et aux libertés.</p>
-<p>
-L'Utilisateur dispose d'un droit d'accès, de rectification, de
-suppression et d'opposition de ses données personnelles.
-L'Utilisateur exerce ce droit via :</p>
-<ul><li><p>
-       Formulaire mis à disposition en Format PDF ;</p>
-       
-</li></ul>
-<p style="font-weight: bold;"> 7 :
-Responsabilité et force majeure</p>
-<p>
-Les sources des informations diffusées sur le site sont réputées
-fiables. Toutefois, le site se réserve la faculté d'une
-non-garantie de la fiabilité des sources. Les informations données
-sur le site le sont à titre purement informatif. Ainsi,
-l'Utilisateur assume seul l'entière responsabilité de l'utilisation
-des informations et contenus du présent site.</p>
-<p>
-L'Utilisateur s'assure de garder son mot de passe secret. Toute
-divulgation du mot de passe, quelle que soit sa forme, est interdite.</p>
-<p>
-L'Utilisateur assume les risques liés à l'utilisation de son
-identifiant et mot de passe. Le site décline toute responsabilité.</p>
-<p>
-Tout usage du service par l'Utilisateur ayant directement ou
-indirectement pour conséquence des dommages doit faire l'objet d'une
-indemnisation au profit du site.</p>
-<p>
-Une garantie optimale de la sécurité et de la confidentialité des
-données transmises n'est pas assurée par le site. Toutefois, le
-site s'engage à mettre en œuvre tous les moyens nécessaires afin
-de garantir au mieux la sécurité et la confidentialité des
-données.</p>
-<p>
-La responsabilité du site ne peut être engagée en cas de force
-majeure ou du fait imprévisible et insurmontable d'un tiers.</p>
-<p style="font-weight: bold;"> 8 :
-Liens hypertextes</p>
-<p>
-De nombreux liens hypertextes sortants sont présents sur le site,
-cependant les pages web où mènent ces liens n'engagent en rien la
-responsabilité de  fld.lu qui n'a
-pas le contrôle de ces liens.</p>
-<p>
-L'Utilisateur s'interdit donc à engager la responsabilité du site
-concernant le contenu et les ressources relatives à ces liens
-hypertextes sortants.</p>
-<p style="font-weight: bold;"> 9 :
-Évolution du contrat</p>
-<p>
-Le site se réserve à tout moment le droit de modifier les clauses
-stipulées dans le présent contrat.</p>
-<p style="font-weight: bold;"> 10 :
-Durée</p>
-<p>
-La durée du présent contrat est indéterminée. Le contrat produit
-ses effets à l'égard de l'Utilisateur à compter de l'utilisation
-du service.</p>
-<p style="font-weight: bold;"> 11 :
-Droit applicable et juridiction compétente</p>
-<p>
-La législation luxembourgeoise s'applique au présent contrat. En cas
-d'absence de résolution amiable d'un litige né entre les parties,
-seuls les tribunaux luxembourgeoises
-sont compétents.</p>
-
-<p style="font-weight: bold;"> 12 :
-Publication par l'Utilisateur</p>
-<p>
-Le site permet aux membres de publier les articles resp. nouveautés.</p>
-<p>
-Dans ses publications, le membre s'engage à respecter les règles
-de la Netiquette et les règles de droit en vigueur.</p>
-<p>
-Le site exerce une modération sur les publications et se réserve le droit de
-refuser leur mise en ligne, sans avoir à s'en justifier auprès du
-membre.</p>
-<p>
-Le membre reste titulaire de l'intégralité de ses droits de
-propriété intellectuelle. Mais en publiant une publication sur le
-site, il cède à la FLD le droit non exclusif et
-gratuit de représenter, reproduire, adapter, modifier, diffuser et
-distribuer sa publication, directement ou par un tiers autorisé,
-dans le monde entier, sur tout support (numérique ou physique), pour
-la durée de la propriété intellectuelle. Le Membre cède notamment
-le droit d'utiliser sa publication sur internet et sur les réseaux
-</div>
-              
\ No newline at end of file
diff --git a/app/tmpl/block/dlgcropper.tt b/app/tmpl/block/dlgcropper.tt
deleted file mode 100644 (file)
index c1eb09a..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-<div id="dlgcropper" class="modal">
-
-  <div class="modal-content animate-top card-4">
-    <header class="container"> 
-      <!--<span onclick="document.getElementById('dlgcropper').style.display='none'; return false;" 
-       class="button display-topright">&times;</span>-->
-      <h2 id="dlgpublish_title">Bild schneiden</h2>
-    </header>
-    <div class="container">
-      <div class="img-container" id="imgcontainer">
-              <img id="cropimage" style="width:75vw;" src="" alt="Picture">
-            </div>
-    </div>
-    <footer class="container right-align padding-16">
-      <input type="hidden" id="cropdata_field_id"/>
-      
-      <button class="button theme-l2  margin-right border" onclick="hidecroppermodal();return false;">OK</button>
-    </footer>
-  </div>
-</div>
-<script>
-// var cropBoxData;
-// var canvasData;
-// var tmpdata;
-// var cropper; 
-// function CropImageDlg(objid){
-//   //console.log("Crop Object ID:"+  objid);
-//   var obj = document.getElementById(objid);
-//   console.log(obj);
-//   var file = obj.files[0];
-//   console.log(file);
-//   var fileName = file.name;
-//   //console.log(file.type);
-//   //$('.label-files_'+ objid).html(file.name);
-//   if (!file.type.match('image.*')) {
-//     //console.log("is not an image");
-//     return false;
-//   }
-//   var reader = new FileReader();
-//   reader.onload = (function(theFile) {
-//       return function(e) {
-//         //console.log("source:" + e.target.result);
-//         document.getElementById("cropimage").setAttribute("src",e.target.result);
-//         showcroppermodal();
-//       };
-//     })(file);
-//   reader.readAsDataURL(file);
-//   document.getElementById('cropdata_field_id').value = objid;
-  
-//   return false;
-// }
-
-// function showcroppermodal(){
-//   tmpdata = document.getElementById("cropimage").getAttribute("src");
-//   //var image = document.getElementById('cropimage');
-//   cropper = new Croppr('#cropimage', {
-//    aspectRatio: 1.28,
-//    onCropEnd : function(value){
-//      cropBoxData = value;
-//    }
-//   });
-//   // cropper = new Cropper(image, {
-//   //   aspectRatio: 1 / 1,
-//   //   autoCropArea: 0.5,
-//   //   viewMode: 2,
-//   //   ready: function () {
-//   //     //Should set crop box data first here
-//   //     cropper.setCropBoxData(cropBoxData).setCanvasData(canvasData);
-//   //   }
-//   // });
-//   document.getElementById("dlgcropper").style.display = 'block';
-//   return false;
-// }
-
-// function hidecroppermodal(){
-  
-//   //cropBoxData = cropper.getCropBoxData();
-//   var canvas = document.getElementById('img_profile_photo_new');
-//   canvas.innerHTML ='';
-//   var crpimg = document.getElementsByClassName('croppr-image');  
-//   console.log("CANVAS");
-//   var ximg = crpimg[0];
-//   console.log(cropBoxData);
-//   var ratiow = 1;
-//   var ratioh = 1;
-//   if(cropBoxData.width > 207){
-//     ratiow = 207 / cropBoxData.width;
-//   if(cropBoxData.height > 266) {
-//     ratioh = 266 / cropBoxData.height;
-//   }
-//   //console.log("ratio;:" + ratio);
-//   canvas.getContext("2d").drawImage(ximg, cropBoxData.x, cropBoxData.y, cropBoxData.width, cropBoxData.height, 0, 0, cropBoxData.width * ratiow, cropBoxData.height * ratioh);
-//   //canvas.getContext("2d").drawImage(canvas, 0, 0, cropBoxData.width * ratio,cropBoxData.height * ratio);
-//   //cropBoxData.x * ratio,  * ratio ,  * ratio, );
-  
-  
-  
-  
-//   document.getElementById('imgcontainer').innerHTML='<img id="cropimage" style="width:75vw;" src="" alt="Picture">';
-//   //var data = canvas.toDataURL('image/png',0.92);
-//   //console.log("DATA :" + data);
-//   //var fieldid=document.getElementById('cropdata_field_id').value;
-//   //console.log("FieldID:" + fieldid);
-//   //document.getElementById("preview_" + fieldid).setAttribute("src",data);
-//   //document.getElementById(fieldid).value = data;
-//   //savefield(fieldid);
-//   cropper = null;
-//   document.getElementById("dlgcropper").style.display = 'none';
-//   //console.log(cropBoxData);
-//   //console.log(canvasData);
-//   //document.getElementById('cropdata_field_id').value = "";
-//   //document.getElementById("dlgcropper").style.display = 'none';
-//   return false;
-// }
-
-// function LoadCropper(objid){
-//   console.log("Preview load cropper!" + objid);
-//   var objf = document.getElementById(objid);
-//   document.getElementById('cropdata_field_id').value = objid;
-  
-//   if (objf.files.length > 0){
-//     CropImageDlg(objid);
-//   }
-//   return false;
-// }
-// </script>
\ No newline at end of file
diff --git a/app/tmpl/block/dlgpassword.tt b/app/tmpl/block/dlgpassword.tt
deleted file mode 100644 (file)
index 53e80e9..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-<div id="dlgpassword" class="modal">
-
-  <div class="modal-content animate-top card-4">
-    <header class="container"> 
-      <span onclick="document.getElementById('dlgpassword').style.display='none'; return false;" 
-      class="button display-topright">&times;</span>
-      <h2>Passwuert änneren</h2>
-    </header>
-    <div class="container">
-      <div id="msg">
-      <div class="panel blue-grey padding">Dain Passwuert muss mindestens 10 Zeechen laang sin,<br>Grouss and kleng Buchstawen enthaalen,<br/>an mindestens 1 Zuel enthaalen</div>
-      </div>
-      <div class="container">
-        <label for="userpassword" class="label">Neit Passwuert</label>
-        <input class="input border" type="password" id="userpassword" name="userpassword" value="" />
-      </div>
-      <div class="container">
-          <label for="userpassword" class="label">Neit Passwuert widderhuelen</label>
-          <input class="input border" type="password" id="userpasswordcheck" name="userpasswordcheck" value="" />
-      </div>     
-    </div>
-    <footer class="container right-align padding-16">
-       <button class="button theme-light margin-right border" onclick="document.getElementById('dlgpassword').style.display='none'; return false;">oofbriechen</button>
-      <button class="button theme-l2  margin-right border" onclick="savepassword();return false;">Passwuert änneren</button>
-    </footer>
-  </div>
-</div>
-<script>
-function opendlgpassword(){
-  document.getElementById("msg").innerHTML='<div class="panel blue-grey padding">Dain Passwuert muss mindestens <strong>10 Zeechen</strong> laang sin,<br/><strong>Grouss</strong>,<strong>kleng</strong> Buchstawen <br/>an <strong>mindestens 1 Zuel</strong> enthaalen</div>';
-  document.getElementById('userpassword').value = "";
-  document.getElementById('userpasswordcheck').value = "";
-  document.getElementById('dlgpassword').style.display='block';
-  return false;
-}
-
-function savepassword(){
-  var pwd1 = document.getElementById('userpassword').value;
-  var pwd2 = document.getElementById('userpasswordcheck').value;
-  var errmsg = "";
-  if (pwd1 == pwd2){
-    errmsg = validatepassword(pwd1);
-  } else {
-    errmsg = "w.e.g 2 mol daat selwecht Passwuert agin";
-  }
-  
-  if (errmsg == ""){
-    req.reqdata('POST','index.cgi',{"fn":"savepassword","pwd":pwd1},pwdsaved);  
-  }else {
-    document.getElementById("msg").innerHTML='<div class="panel red">'+ errmsg+'</div>';
-  }
-  return false;
-}
-
-function pwdsaved(data){
-  console.log(data);
-  document.getElementById('dlgpassword').style.display='none';
-  return false;
-}
-
-function validatepassword(pwd){
-  var errmsg = "";
-    if (pwd.length < 10) {
-        errmsg += "> op mannst <strong>10 Zeechen</strong><br/>"; 
-    }
-    if (/[a-z]/.test(pwd) == false) {
-        errmsg += "> op mannst <strong>1 klengen Buchstaw</strong> fehlt<br/>";
-    }
-    if (/[A-Z]/.test(pwd) == false) {
-        errmsg += "> op mannst <strong>1 groussen Buchstaw</strong> fehlt<br/>";
-    }
-    if (/[0-9]/.test(pwd) == false) {
-        errmsg += "> op mannst <strong>1 Zuel</strong> fehlt<br/>";
-    }
-    return errmsg;
-}
-</script>
\ No newline at end of file
diff --git a/app/tmpl/block/dlguploadfile.tt b/app/tmpl/block/dlguploadfile.tt
deleted file mode 100644 (file)
index 836c66e..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-<div id="dlguploadfile" class="modal">
-
-  <div class="modal-content animate-top card-4">
-    <header class="container"> 
-      <span onclick="document.getElementById('dlguploadfile').style.display='none'; return false;" 
-       class="button display-topright">&times;</span>
-      <h2 id="dlgpublish_title">Fichier eroplueden</h2>
-    </header>
-    <div class="container">
-      <form id="frm_uploadfile">
-        [% fieldhidden("table","upload",'','') %]
-        [% fieldhidden("row_id","upload","ident",'') %]
-        [% fieldhidden("filetype","upload",'','') %]
-        [% fieldfile("file","upload","Fichier auswielen",'','','') %]
-      </form>
-    </div>
-    <footer class="container right-align padding-16">
-    <button class="button theme-light margin-right border" onclick="document.getElementById('dlguploadfile').style.display='none'; return false;">Oofbriechen</button>
-    <div class="container right-align">
-        <button class="button blue-grey margin" onclick="savefileform('uploadfile');return false;">eroplueden</button>
-      </div>
-    </footer>
-  </div>
-</div>
-<script>
- var afterformsaved = {}; 
- var flds ={"text":{},"files":{}};
- var senddata = "";
-function opendlgfileupload(tblname,filetype,rowid){
-  flds ={"text":{},"files":{}};
-  senddata = "";
-  document.getElementById('table').value=tblname;
-  document.getElementById('filetype').value=filetype;
-  document.getElementById('row_id').value=rowid;
-  document.getElementById('file').value='';
-  document.getElementById('dlguploadfile').style.display = 'block';
-}
-function savefileform(){
-  getformdata('uploadfile');
-  //req.uploadform("upload.cgi","uploadfile",filesaved);
-}
-function filesaved(data){
-  var sb = document.getElementById("snackbar");
-  sb.className="show green";
-  sb.innerHTML = 'den Fichier gouf gespaichert!';
-  setTimeout(function(){ sb.className = sb.className.replace("show green", ""); }, 3000);
-  return false;
-}
-function getformdata(frmid){
-  var frm = document.getElementById("frm_" + frmid);
-   // console.log(frm);
-    var frmdata = new FormData();
-   // flds ={"text":{},"files":{}};
-    for (var i = 0; i < frm.elements.length; i++) {
-      var field = frm.elements[i];
-      if ((field.tagName == "INPUT" || field.tagName == "SELECT" || field.tagName == "TEXTAREA")){
-        if (field.classList.contains("tagedit")){
-          var ndata =  field.value.split(",");
-          // flds['text'][field.id] = ndata;
-          frmdata.append(field.id,ndata);
-        } else if (field.tagName == "TEXTAREA" && field.classList.contains("richtextarea")){
-
-        } else if ( field.tagName == "INPUT" && field.type == "file"){
-          frmdata.append(field.id,field.files[0]);
-        }else {
-          frmdata.append(field.id,field.value);
-          //flds['text'][field.id] = field.value;
-        }
-      }
-    // console.log(field);
-    }
-    // for (var pair of frmdata.entries()) {
-    //   console.log(pair[0]+ ', ' + pair[1]); 
-    // }
-    req.multipartform("upload.cgi",frmdata,multipartformsaved);
-}
-
-function multipartformsaved(data){
-  //console.log(data);
-  var sb = document.getElementById("snackbar");
-  sb.className="show green";
-  sb.innerHTML = 'Den Fichier gouf gespaichert!';
-  setTimeout(function(){ sb.className = sb.className.replace("show green", ""); }, 3000);
-  
-  document.getElementById('dlguploadfile').style.display = 'none';
-  if (afterformsaved.action){
-    afterformsaved.action(data);
-  }
-
-  return false;
-}
-
-</script>
\ No newline at end of file
diff --git a/app/tmpl/block/dlgusername.tt b/app/tmpl/block/dlgusername.tt
deleted file mode 100644 (file)
index 5159cf0..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-
-<div id="dlgusername" class="modal">
-  <div class="modal-content animate-top card-4">
-    <header class="container"> 
-      <span onclick="document.getElementById('dlgusername').style.display='none'; return false;" 
-      class="button display-topright">&times;</span>
-      <h2>Ännerung vum der E-Mail resp dem Login</h2>
-    </header>
-    <div class="container">
-      <div id="nunmsg" ></div>
-      <div class="container" id="newmail">
-        [% fieldeditbox('newuseremail','onlydisplay','Nei E-Mail-Address','','','') %]
-      </div>
-      <div class="container" style="display:none;" id="vcode"> 
-        [% fieldeditbox('verificationcode','users','Bestätegungs-Code','','','') %]
-        <button class="button theme-l2 border" id="btnvalidateresend" onclick="resendemail();return false;">Code nach emol schecken</button>
-      </div>     
-      </div>
-    <footer class="container right-align padding-16">
-      <button class="button theme-light margin-right border" onclick="document.getElementById('dlgusername').style.display='none'; return false;">oofbriechen</button>
-      <button class="button theme-l2  margin-right border" id="btncheck" onclick="checkemail();return false;">iwwerpréifen</button>
-      <button class="button theme-l2 align-right border" id="btnvalidate" style="display:none;" onclick="saveemail();return false;">Validéieren</button>
-    </footer>
-  </div>  
-</div>
-<script>
-var newusername = "";
-
-function opendlgusername(){
-  document.getElementById("newuseremail").value= '';
-  document.getElementById("verificationcode").value= '';
-  document.getElementById("nunmsg").innerHTML= '';
-  document.getElementById('newmail').style.display='block';
-  document.getElementById('vcode').style.display='none';
-  document.getElementById('btncheck').style.display='inline';
-  document.getElementById('btnvalidate').style.display='none';
-  document.getElementById('dlgusername').style.display='block';
-  return false;
-}
-
-function checkemail(){
-  newusername = document.getElementById("newuseremail").value;
-  if (validateEmail(newusername)){
-    req.reqdata("POST","db.cgi",{"get":"userdata","filter":"username='"+ newusername+ "'"},checkmailreturn);
-  }else {
-    document.getElementById("nunmsg").innerHTML= '<div class="panel red">w.e.g. eng richteg email agin!</div>';
-  }
-  return false;
-}
-
-function checkmailreturn(data){
-  console.log(data);
-  if (data && data.sqldata.length > 0){
-    document.getElementById("nunmsg").innerHTML= '<div class="panel red">Et existéiert schon een Kont matt deser E-mail!</div>';
-  } else {
-    resendcode();
-  }
-  return false;
-}
-
-function resendcode(){
-  req.reqdata("POST","index.cgi",{"fn":"sendmailvcode","mail":newusername},mailsended);
-  return false;
-}
-
-function mailsended(data){
-    document.getElementById("nunmsg").innerHTML= '<div class="panel green">Mir hun dir eng E-Mail mam Code gescheckt op '+ newusername +'!</div>';
-    document.getElementById('newmail').style.display='none';
-    document.getElementById('vcode').style.display='block';
-    document.getElementById('btncheck').style.display='none';
-   
-    document.getElementById('btnvalidate').style.display='inline';
-    return false;
-}
-
-function saveemail(){
-  req.reqdata("POST","index.cgi",{"fn":"savenewemail","email":newusername,"vcode":document.getElementById("verificationcode").value},mailreturncode);
-  return false;
-}
-
-function mailreturncode(data){
-  console.log(data);
-  app.loadpage("module/[% module%]/[% pagename %].html",null);
-}
-
-function validateEmail(email) {
-  var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
-  return re.test(String(email).toLowerCase());
-}
-</script>
\ No newline at end of file
diff --git a/app/tmpl/block/head.tt b/app/tmpl/block/head.tt
deleted file mode 100644 (file)
index 24cdfa0..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<head>
-  <!-- Required meta tags -->
-  <meta charset="utf-8">
-  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
-  <title>[% sitename %] - [% pagename %]</title>
-  <meta name="language" content="fr">
-    <meta name="author" content="DKS sarl">
-    <meta name="publisher" content="DKS sarl">
-    <meta name="copyright" content="DKS sarl">
-    <meta name="robots" content="noindex,nofollow">
-    <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
-  <meta http-equiv="Pragma" content="no-cache" />
-  <meta http-equiv="Expires" content="-1" />
-
-    <link rel="apple-touch-icon" sizes="57x57" href="img/favicon/apple-icon-57x57.png">
-<link rel="apple-touch-icon" sizes="60x60" href="img/favicon/apple-icon-60x60.png">
-<link rel="apple-touch-icon" sizes="72x72" href="img/favicon/apple-icon-72x72.png">
-<link rel="apple-touch-icon" sizes="76x76" href="img/favicon/apple-icon-76x76.png">
-<link rel="apple-touch-icon" sizes="114x114" href="img/favicon/apple-icon-114x114.png">
-<link rel="apple-touch-icon" sizes="120x120" href="img/favicon/apple-icon-120x120.png">
-<link rel="apple-touch-icon" sizes="144x144" href="img/favicon/apple-icon-144x144.png">
-<link rel="apple-touch-icon" sizes="152x152" href="img/favicon/apple-icon-152x152.png">
-<link rel="apple-touch-icon" sizes="180x180" href="img/favicon/apple-icon-180x180.png">
-<link rel="icon" type="image/png" sizes="192x192"  href="img/favicon/android-icon-192x192.png">
-<link rel="icon" type="image/png" sizes="32x32" href="img/favicon/favicon-32x32.png">
-<link rel="icon" type="image/png" sizes="96x96" href="img/favicon/favicon-96x96.png">
-<link rel="icon" type="image/png" sizes="16x16" href="img/favicon/favicon-16x16.png">
-<link rel="stylesheet" href="[% abspath %]css/w3pro.css">
-  
-</head>
\ No newline at end of file
diff --git a/app/tmpl/block/snackbar.tt b/app/tmpl/block/snackbar.tt
deleted file mode 100644 (file)
index 464a162..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<div id="snackbar"></div>
\ No newline at end of file
diff --git a/app/tmpl/block/toolbars.tt b/app/tmpl/block/toolbars.tt
deleted file mode 100644 (file)
index 78ca487..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-[% MACRO tabletoolbar(ident) BLOCK -%]
-  
-  <header class="top bar border-bottom theme-light">
-    <button class="bar-item button border" onclick="add_[% ident %]();">Nei</button>
-    <button class="bar-item button border" onclick="edit_[% ident %]();">EDIT</button>
-    <button class="bar-item button border" onclick="duplicate_[% ident %]();">DUPL</button>
-    <button class="bar-item button border" onclick="remove_[% ident %]();">DEL</button>
-</header>
-[% END -%]
\ No newline at end of file
diff --git a/app/tmpl/file.tt b/app/tmpl/file.tt
deleted file mode 100644 (file)
index afb2fc5..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-[% USE DBI %]
-[% USE dksdb = DBI(dsn, dbuser, dbpassword) %]
-[% INCLUDE $page %]
diff --git a/app/tmpl/index.tt b/app/tmpl/index.tt
deleted file mode 100644 (file)
index a4efa99..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-[% USE dksdb = DBI(dsn, dbuser, dbpassword) %]
-[% #appaccess = dksdb.prepare("select ap.icon,ap.app,ap.name,ug.usergroup from useringroups uig join apps ap on (uig.id_group=ap.id_usergroup)  join usergroups ug on (uig.id_group=ug.id) where uig.id_user=? group by ap.id,ug.id order by ap.sort;")%]
-[% USE date %]
-[% vstamp=date.format(date.now, '%d%m%Y%H%M%S') %]
-<!DOCTYPE html>
-<html lang="en">
- <head>
-  <meta charset="utf-8">
-  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
-  <title>[% sitename %] - [% pagename %]</title>
-  <meta name="language" content="fr">
-    <meta name="author" content="DKS sarl">
-    <meta name="publisher" content="DKS sarl">
-    <meta name="copyright" content="DKS sarl">
-    <meta name="robots" content="noindex,nofollow">
-
-    <link rel="apple-touch-icon" sizes="57x57" href="[% abspath %][% staticpath %]img/favicon/apple-icon-57x57.png">
-<link rel="apple-touch-icon" sizes="60x60" href="[% abspath %][% staticpath %]img/favicon/apple-icon-60x60.png">
-<link rel="apple-touch-icon" sizes="72x72" href="[% abspath %][% staticpath %]img/favicon/apple-icon-72x72.png">
-<link rel="apple-touch-icon" sizes="76x76" href="[% abspath %][% staticpath %]img/favicon/apple-icon-76x76.png">
-<link rel="apple-touch-icon" sizes="114x114" href="[% abspath %][% staticpath %]img/favicon/apple-icon-114x114.png">
-<link rel="apple-touch-icon" sizes="120x120" href="[% abspath %][% staticpath %]img/favicon/apple-icon-120x120.png">
-<link rel="apple-touch-icon" sizes="144x144" href="[% abspath %][% staticpath %]img/favicon/apple-icon-144x144.png">
-<link rel="apple-touch-icon" sizes="152x152" href="[% abspath %][% staticpath %]img/favicon/apple-icon-152x152.png">
-<link rel="apple-touch-icon" sizes="180x180" href="[% abspath %][% staticpath %]img/favicon/apple-icon-180x180.png">
-<link rel="icon" type="image/png" sizes="192x192"  href="[% abspath %][% staticpath %]img/favicon/android-icon-192x192.png">
-<link rel="icon" type="image/png" sizes="32x32" href="[% abspath %][% staticpath %]img/favicon/favicon-32x32.png">
-<link rel="icon" type="image/png" sizes="96x96" href="[% abspath %][% staticpath %]img/favicon/favicon-96x96.png">
-<link rel="icon" type="image/png" sizes="16x16" href="[% abspath %][% staticpath %]img/favicon/favicon-16x16.png">
-<link rel="stylesheet" href="[% abspath %][% staticpath %]css/icons.css">
-<link rel="stylesheet" href="[% abspath %][% staticpath %]css/theme.css">
-  <link rel="stylesheet" href="[% abspath %][% staticpath %]vendors/tabulator/css/tabulator_site.css?v=[% vstamp %]">
-  <link rel="stylesheet" href="[% abspath %][% staticpath %]vendors/slimselect/slimselect.css?v=[% vstamp %]">
-  <link rel="stylesheet" href="[% abspath %][% staticpath %]vendors/flatpickr/flatpickr.min.css?v=[% vstamp %]">
-  <link rel="stylesheet" href="[% abspath %][% staticpath %]vendors/flatpickr/themes/airbnb.css?v=[% vstamp %]">
-
-</head>
-<body>
-  <div class="display-container" id="main">
-    [% INCLUDE $page %]
-   </div>
-  [% INCLUDE block/snackbar.tt %]
-<script type="text/javascript" src="[% abspath %][% staticpath %]js/app.js?v=[% vstamp %]"></script>
-<script type="text/javascript" src="[% abspath %][% staticpath %]js/request.js?v=[% vstamp %]"></script>
-  <!-- <script type="text/javascript" src="[% abspath %][% staticpath %]js/module_global.js?v=[% vstamp %]"></script> -->
-  <script type="text/javascript" src="[% abspath %][% staticpath %]js/formsave.js?v=[% vstamp %]"></script>
-  <script type="text/javascript" src="[% abspath %][% staticpath %]js/form.js?v=[% vstamp %]"></script>
-  <script type="text/javascript" src="[% abspath %][% staticpath %]vendors/tabulator/js/tabulator.min.js?v=[% vstamp %]"></script>
-  <script type="text/javascript" src="[% abspath %][% staticpath %]vendors/moment/moment.min.js?v=[% vstamp %]"></script>
-  <script type="text/javascript" src="[% abspath %][% staticpath %]vendors/tinymce/js/tinymce/tinymce.min.js?v=[% vstamp %]"></script>
-  <script type="text/javascript" src="[% abspath %][% staticpath %]vendors/slimselect/slimselect.min.js?v=[% vstamp %]"></script>
-  <script type="text/javascript" src="[% abspath %][% staticpath %]vendors/flatpickr/flatpickr.min.js?v=[% vstamp %]"></script>
-  <script type="text/javascript" src="[% abspath %][% staticpath %]vendors/flatpickr/l10n/fr.js?v=[% vstamp %]"></script>
-  <!-- <script type="text/javascript" src="[% abspath %]vendors/croppr/croppr.js"></script> -->
-</body>
-</html>
-
diff --git a/app/tmpl/lang/fr.tt b/app/tmpl/lang/fr.tt
deleted file mode 100644 (file)
index 616ea59..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-[% lbl = {
-  loginheading => "LEDF Site Login",
-  login => "Login",
-  password => "Mot de passe",
-  sendlogin => "Connecter",
-  linkpwdforgotten => "mot de passe oublié?"
-}
-%]
\ No newline at end of file
diff --git a/app/tmpl/login.tt b/app/tmpl/login.tt
deleted file mode 100644 (file)
index 2c232e8..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-[% PROCESS "lang/${lang}.tt" %]
-<!DOCTYPE html>
-<html lang="[% lang %]">
- <head>
-  <meta charset="utf-8">
-  <meta name="viewport" content="width=device-width, initial-scale=1">
-  <title>[% sitename %] - [% pagename %]</title>
-  <meta name="language" content="fr">
-    <meta name="author" content="DKS sarl">
-    <meta name="publisher" content="DKS sarl">
-    <meta name="copyright" content="DKS sarl">
-    <meta name="robots" content="noindex,nofollow">
-    <!--<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
-  <meta http-equiv="Pragma" content="no-cache" />
-  <meta http-equiv="Expires" content="-1" />-->
-
-    <link rel="apple-touch-icon" sizes="57x57" href="img/favicon/apple-icon-57x57.png">
-<link rel="apple-touch-icon" sizes="60x60" href="img/favicon/apple-icon-60x60.png">
-<link rel="apple-touch-icon" sizes="72x72" href="img/favicon/apple-icon-72x72.png">
-<link rel="apple-touch-icon" sizes="76x76" href="img/favicon/apple-icon-76x76.png">
-<link rel="apple-touch-icon" sizes="114x114" href="img/favicon/apple-icon-114x114.png">
-<link rel="apple-touch-icon" sizes="120x120" href="img/favicon/apple-icon-120x120.png">
-<link rel="apple-touch-icon" sizes="144x144" href="img/favicon/apple-icon-144x144.png">
-<link rel="apple-touch-icon" sizes="152x152" href="img/favicon/apple-icon-152x152.png">
-<link rel="apple-touch-icon" sizes="180x180" href="img/favicon/apple-icon-180x180.png">
-<link rel="icon" type="image/png" sizes="192x192"  href="img/favicon/android-icon-192x192.png">
-<link rel="icon" type="image/png" sizes="32x32" href="img/favicon/favicon-32x32.png">
-<link rel="icon" type="image/png" sizes="96x96" href="img/favicon/favicon-96x96.png">
-<link rel="icon" type="image/png" sizes="16x16" href="img/favicon/favicon-16x16.png">
-<link rel="stylesheet" href="[% abspath %][% staticpath %]css/theme.css">
-
-  <style>
-  body, html {
-  height: 100%;
-}
-
-body {
-  /* The image used */
-  background-image: url("[% abspath %][% staticpath %]img/dartsxx.jpg");
-
-  /* Full height */
-  height: 100%;
-
-  /* Center and scale the image nicely */
-  background-position: center;
-  background-repeat: no-repeat;
-  background-size: cover;
-}
-  </style>
-</head>
-<body>
-  
-  <div class="display-container">
-    <div class="white" style="max-width: 320px; margin: auto;">
-        <div class="container center padding-24">
-            <img src="[% abspath%][% staticpath %]img/logo.png" style="height: 200px;" alt="logo">
-        </div>
-        <div>
-        </div>
-        [% IF pagename == 'register' && registration_enabled == '1' %]
-          [% INCLUDE module/login/register.tt %]
-        [% ELSIF pagename == 'forgotpassword' %]
-          [% INCLUDE module/login/forgotpassword.tt %]
-        [% ELSIF pagename == 'message' %]
-          [% INCLUDE module/login/message.tt %]
-        [% ELSIF pagename == 'validationcode' %]
-          [% INCLUDE module/login/validationcode.tt %]
-        [% ELSE %]
-          [% INCLUDE module/login/login.tt %]
-        [% END %]
-    </div>
-     
-  </div>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/app/tmpl/macro/fields.tt b/app/tmpl/macro/fields.tt
deleted file mode 100644 (file)
index 94ba04b..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-[% MACRO fieldhidden(column,table,ident,value) BLOCK -%]
-        <input type="hidden" class="data_[% table %]" id="[% column %]" name="[% IF ident %]ident_[% END %][% table %]_[% column %]" value="[% value %]">
-[% END -%]
-[% MACRO fieldeditbox(column,table,title,size,state,value,plhold) BLOCK -%]
-  <div class="container [% IF size %][% size %][% END  %]" >
-        <label for="[% table %]_[% column %]" class="label">[% title %]</label>
-        <input type="text" class="input border data_[% table %] [% IF state.length > 0 %][% state %][% END %] " id="[% column %]" name="[% table %]_[% column %]" value="[% value %]" [% IF plhold %]placeholder="[% plhold %]" [% END %] [% IF state.length > 0 %][% state %][% END %]/>
-        
-      </div>
-[% END -%]
-[% MACRO fieldfile(column,table,title,size,state,value) BLOCK -%]
-  <div class="container [% IF size %][% size %][% END  %]" >
-        <label for="[% table %]_[% column %]" class="label">[% title %]</label>
-        <input type="file" class="input border data_[% table %] [% IF state.length > 0 %][% state %][% END %] " id="[% column %]" name="[% table %]_[% column %]" value="[% value %]" [% IF state.length > 0 %][% state %][% END %]/>
-        
-      </div>
-[% END -%]
-[% MACRO fieldpasswordbox(column,table,title,size,state,value) BLOCK -%]
-  <div class="container [% IF size %][% size %][% END  %]" >
-        <label for="[% table %]_[% column %]" class="label">[% title %]</label>
-        <input type="password" class="input border data_[% table %] [% IF state.length > 0 %][% state %][% END %] " id="[% column %]" name="[% table %]_[% column %]" value="" [% IF state.length > 0 %][% state %][% END %]/>
-        
-      </div>
-[% END -%]
-[% MACRO fieldtagbox(column,table,title,size,state,value) BLOCK -%]
-  <div class="container [% IF size %][% size %][% END  %]" >
-        <label for="[% table %]_[% column %]" class="label">[% title %]</label>
-        <input type="text" class="input tagedit border data_[% table %] [% IF state.length > 0 %][% state %][% END %] " id="[% column %]" name="[% table %]_[% column %]" value="" [% IF state.length > 0 %][% state %][% END %]/>
-        
-      </div>
-[% END -%]
-[% MACRO fieldcheckbox(column,table,title,size,state,value) BLOCK -%]
-  <div class="container [% IF size %][% size %][% END  %]">
-  <br/>
-                <input class="check  data_[% table %] [% IF state.length > 0 %][% state %][% END %]" id="[% column %]" name="[% table %]_[% column %]" value="[% value %]" type="checkbox" [% IF state.length > 0 %][% state %][% END %]>
-                <label>[% title %]</label>
-              </div>
-[% END -%]
-
-[% MACRO fieldemailbox(column,table,title,size,state,value) BLOCK -%]
-  <div class="container [% IF size %][% size %][% END  %]" >
-        <label for="[% table %]_[% column %]" class="label">[% title %]</label>
-        <input type="email" class="input border data_[% table %] [% IF state.length > 0 %][% state %][% END %] " id="[% column %]" name="[% table %]_[% column %]" value="" [% IF state.length > 0 %][% state %][% END %]/>
-  </div>
-[% END -%]
-
-[% MACRO fieldselectbox(column,table,title,size,state,value) BLOCK -%]
-  [% IF state.length > 0 %]
-    [% fieldeditbox(column,table,title,size,state,value) %]
-  [% ELSE %]
-  <div class="container [% IF size %][% size %][% END  %]">
-        <label for="[% table %]_[% column %]" class="label">[% title %]</label>
-        <select class="select border data_[% table %] [% IF state.length > 0 %][% state %][% END %]" id="[% column %]" data-selected="" value="" name="[% table %]_[% column %]" [% IF state.length > 0 %][% state %][% END %]>
-        
-        </select>
-        
-  </div>
-  [% END %]
-[% END -%]
-[% MACRO fieldmultiselectbox(column,table,title,size,state,value) BLOCK -%]
-  [% IF state.length > 0 %]
-    [% fieldeditbox(column,table,title,size,state,value) %]
-  [% ELSE %]
-  <div class="container [% IF size %][% size %][% END  %]">
-        <label for="[% table %]_[% column %]" class="label">[% title %]</label>
-        <select class="select border data_[% table %] [% IF state.length > 0 %][% state %][% END %]" id="[% column %]" data-selected=""  multiple value="" name="[% table %]_[% column %]" [% IF state.length > 0 %][% state %][% END %]>
-        
-        </select>
-        
-  </div>
-  [% END %]
-[% END -%]
-[% MACRO fielddatebox(column,table,title,size,state,value) BLOCK -%]
-  <div class="container [% IF size %][% size %][% END  %]">
-        <label for="[% table %]_[% column %]" class="label">[% title %]</label>
-        <input type="date" class="input border data_[% table %] datefield [% IF state.length > 0 %][% state %][% END %]" id="[% column %]" name="[% table %]_[% column %]" value="[% value %]" [% IF state.length > 0 %][% state %][% END %]]/>
-        
-      </div>
-[% END -%]
-[% MACRO fieldtextarea(column,table,title,size,state,height,value) BLOCK -%]
-  <div class="container [% IF size %][% size %][% END  %]" >
-        <label for="[% table %]_[% column %]" class="label">[% title %]</label>
-        <textarea class="input border data_[% table %] [% IF state.length > 0 %][% state %][% END %]" style="height: [% height %];" id="[% column %]" name="[% table %]_[% column %]"  
-        [% IF state.length > 0 %][% state %][% END %] >[% value %]</textarea>
-      </div>
-[% END -%]
-[% MACRO fieldrichtextarea(column,table,title,size,state,height,value) BLOCK -%]
-  <div class="container [% IF size %][% size %][% END  %]" >
-        <label for="[% table %]_[% column %]" class="label">[% title %]</label>
-        <textarea class="input border data_[% table %] richeditarea [% IF state.length > 0 %][% state %][% END %]" style="height: [% height %];" id="[% column %]" name="[% table %]_[% column %]"  
-        [% IF state.length > 0 %][% state %][% END %] >[% value %]</textarea>
-      </div>
-[% END -%]
-
-[% MACRO formsavebutton(formname,btnname,clbk) BLOCK -%]
- <div class="container right-align">
-        <button class="button blue-grey margin" onclick="saveform('[% formname %]',[% IF clbk.length > 0 %][% clbk %][%ELSE%]null[% END %]);return false;">[% btnname %]</button>
-  </div>
-[% END -%]
-[% MACRO formsavetextfilebutton(formname,btnname) BLOCK -%]
- <div class="container right-align">
-        <button class="button blue-grey margin" onclick="savetextfile('[% formname %]');return false;">[% btnname %]</button>
-  </div>
-[% END -%]
-[% MACRO formdlgsavebutton(formname,btnname,clbk) BLOCK -%]
-    <button class="button blue-grey margin right-align" onclick="saveform('[% formname %]',[% IF clbk.length > 0 %][% clbk %][% ELSE %]null[% END %]);return false;">[% btnname %]</button>
-[% END -%]
-[% MACRO formsavefilebutton(formname,btnname,container) BLOCK -%]
-[% IF container.length > 0 %]
- <div class="container right-align">
- [% END %]
-        <button class="button blue-grey margin" onclick="savefileform('[% formname %]');return false;">[% btnname %]</button>
-[% IF container.length > 0 %]
-      </div>
-[% END %]
-[% END -%]
-
-
diff --git a/app/tmpl/module/championship/divisions.js b/app/tmpl/module/championship/divisions.js
deleted file mode 100644 (file)
index ebf3380..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-function initpage(){
-  tbl = new Tabulator("#tbl_divisions", {
-    height: "95vh",
-    layout:"fitColumns",
-    addRowPos:"top", 
-    selectable:1,
-    columns:[
-    {title:"Divisioun", field:"division"},
-    {title:"Ranking", field:"ranking"},
-    ],
-});
- gettbldata();
-}
-
-function gettbldata(){
-    req.reqdata("POST","db.cgi",{"get":"divisions"},loadtbldata);
-}
-
-function loadtbldata(data){
-  if (data && data.sqldata){
-    tbl.setData(data.sqldata);
-  }
-}
-
-function add(){
-
-}
-
-function edit(){
-  
-}
-
-function remove(){
-
-}
\ No newline at end of file
diff --git a/app/tmpl/module/championship/divisions.tt b/app/tmpl/module/championship/divisions.tt
deleted file mode 100644 (file)
index 3bf4b84..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-[% PROCESS macro/fields.tt %]
-[% INCLUDE "module/$module/toolbar.tt" %]
-<div class="container" id="tbl_divisions" style="margin-top: 50px;">
-</div>
-<div id="dlgdivisions" class="modal">
-  <div class="modal-content animate-top card-4">
-    <header class="container"> 
-      <span onclick="document.getElementById('dlgdivisions').style.display='none'; return false;" 
-       class="button display-topright">&times;</span>
-      <h2 id="dlgpublish_title">Divisioun änneren / setzen</h2>
-    </header>
-    <div class="container">
-      <form id="frm_divisions">
-        [% fieldhidden("id","csdivisions",'ident','') %]
-        [% fieldselectbox("season","csdivisions","Saison",'','','') %]
-        [% fieldselectbox("ranking","csdivisions","Ranking",'','','') %]
-      </form>
-    </div>
-    <footer class="container right-align padding-16">
-    <button class="button theme-light margin-right border" onclick="document.getElementById('dlgdivisions').style.display='none'; return false;">Oofbriechen</button>
-    <div class="container right-align">
-        <button class="button blue-grey margin" onclick="saveform('divisions');return false;">Spaicheren</button>
-      </div>
-    </footer>
-  </div>
-</div>
\ No newline at end of file
diff --git a/app/tmpl/module/championship/games.js b/app/tmpl/module/championship/games.js
deleted file mode 100644 (file)
index 3ac8c66..0000000
+++ /dev/null
@@ -1,211 +0,0 @@
-var sel_id_teamhome = null;
-var sel_id_teamguest = null;
-
-function initpage(){
-  flatpickr(".datefield",{altInput: true,
-    altFormat: "d.m.Y",
-    dateFormat: "Y-m-d",
-    "locale": "fr",
-  });
-  tbl = new Tabulator("#tbl_csgames", {
-    height: "95vh",
-    layout:"fitColumns",
-    addRowPos:"top", 
-    selectable:1,
-    columns:[
-    {title:"Saison", field:"season",headerFilter:"input"},
-    {title:"Division", field:"division",headerFilter:"input"},
-    {title:"Spilldag", field:"playday",headerFilter:"input"},
-    {title:"Datum", field:"dspplaydate",headerFilter:"input"},
-    {title:"Team Home", field:"teamhome",headerFilter:"input"},
-    {title:"Team Guest", field:"teamguest",headerFilter:"input"},
-    {title:"Sets Team Home", field:"sets_teamhome"},
-    {title:"Sets Team Guest", field:"sets_teamguest"},
-    {title:"Validéiert",field:"validated"}
-    ],
-});
- gettbldata();
- getdivisions();
- getseasons();
- getteamsbyseasondivision();
-}
-
-function gettbldata(){
-  req.reqdata("POST","db.cgi",{"get":"games"},loadtbldata);
-}
-
-function loadtbldata(data){
-  if (data && data.sqldata){
-    tbl.setData(data.sqldata);
-  }
-}
-
-function add(){
-  document.getElementById("id").value = "";
-  document.getElementById('dlgcsgames').style.display='block'; 
-  return false;
-}
-
-function edit(){
-  var udata = tbl.getSelectedData();
-  var uid = udata[0].id;
-  //console.log(uid);
-  req.reqdata("POST","db.cgi",{"get":"games","filter":"id=" + uid},fillformgames);
-  document.getElementById('dlgcsgames').style.display='block'; 
-  return false;
-}
-
-function fillformgames(data){
-  console.log("fillformgames");
-  console.log(data);
-  if (data && data.sqldata){
-    var frm = document.querySelectorAll('.data_csgames');
-    for (var f in frm){
-     //console.log(frm[f].classList);
-      if (data.sqldata[0][frm[f].id]){
-        if ((frm[f].tagName == 'INPUT') || (frm[f].tagName == 'SELECT') || frm[f].tagName == 'TEXTAREA'){
-          if (frm[f].classList.contains("datefield")){
-            frm[f]._flatpickr.setDate(data.sqldata[0][frm[f].id]);
-          } else if (frm[f].classList.contains("richeditarea")){
-            //console.log(frm[f].id + " is richeditarea");
-            tinymce.get(frm[f].id).setContent(data.sqldata[0][frm[f].id]);
-          } else {
-            frm[f].value=data.sqldata[0][frm[f].id];
-          } 
-          
-        } 
-      }
-    }
-  }
-  return false;
-}
-
-function remove(){
-  var udata = tbl.getSelectedData();
-  var uid = udata[0].id;
-  if (confirm("Dass du secher dass du déi ausgewielten Rei läschen wëlls?")){
-    req.reqdata("POST","db.cgi",{"del":"1","ident_csgames_id":udata[0].id},gettbldata);
-  }
-  return false;
-}
-
-
-function getdivisions(){
-  req.reqdata("POST","db.cgi",{"get":"divisions"},filldivisions);
-  return false;
-}
-function filldivisions(data){
-  var divlist = [];
-  var dividlist = {"":""};
-  if (data && data.sqldata){
-    for (var i in data.sqldata){
-      divlist.push({value:data.sqldata[i].id,label:data.sqldata[i].division});
-      dividlist[data.sqldata[i].id] = data.sqldata[i].division;
-    }
-  }
-  if (document.getElementById('id_division').tagName == "SELECT"){
-    sel_id_division = new Choices('#id_division',{
-      searchEnabled: false,
-      itemSelectText: 'auswielen...',
-      choices : divlist,
-      shouldSort: false,
-      shouldSortItems: false
-    });
-    sel_id_division.setChoiceByValue(document.getElementById("id_division").dataset.selected);
-    
-  } else {
-    document.getElementById('id_division').value = dividlist[document.getElementById('id_division').value];
-  }
-  document.getElementById("id_division").addEventListener("change",function(){
-    getteamsbyseasondivision();
-  });
-  return false;
-}
-function getseasons(){
-  req.reqdata("POST","db.cgi",{"get":"seasons"},fillseasons);
-  return false;
-}
-function fillseasons(data){
-
-  var seasonlist = [];
-  var seasonidlist = {"":""};
-  if (data && data.sqldata){
-    for (var i in data.sqldata){
-      seasonlist.push({value:data.sqldata[i].id,label:data.sqldata[i].season});
-      seasonidlist[data.sqldata[i].id] = data.sqldata[i].season;
-    }
-  }
-  if (document.getElementById('id_season').tagName == "SELECT"){
-    sel_id_season = new Choices('#id_season',{
-      searchEnabled: false,
-      itemSelectText: 'auswielen...',
-      choices : seasonlist,
-      shouldSort: false,
-      shouldSortItems: false
-    });
-    sel_id_season.setChoiceByValue(document.getElementById("id_season").dataset.selected);
-    
-  } else {
-    document.getElementById('id_season').value = seasonidlist[document.getElementById('id_season').value];
-  }
-
-  document.getElementById("id_season").addEventListener("change",function(){
-    getteamsbyseasondivision();
-  });
-  return false;
-}
-
-function closedlg(){
-  gettbldata();
-  document.getElementById('dlgcsgames').style.display='none'; 
-}
-
-function getteamsbyseasondivision(){
-  var id_season = document.getElementById('id_season').value;
-  var id_division = document.getElementById('id_division').value;
-  req.reqdata("POST","db.cgi",{"get":"seasonranking","filter":" id_season="+id_season+" and id_division="+id_division},fillteams);
-  return false;
-}
-
-function fillteams(data){
-  var teamlist = [];
-  var teamidlist = {"":""};
-  //console.log(data);
-  if (data && data.sqldata){
-    for (var i in data.sqldata){
-      teamlist.push({value:data.sqldata[i].id_team,label:data.sqldata[i].team});
-      teamidlist[data.sqldata[i].id] = data.sqldata[i].teams;
-    }
-  }
-  if (sel_id_teamhome){
-    sel_id_teamhome.destroy();
-  }
-  if (sel_id_teamguest){
-    sel_id_teamguest.destroy();
-  }
-  if (document.getElementById('id_teamhome').tagName == "SELECT"){
-    sel_id_teamhome = new Choices('#id_teamhome',{
-      searchEnabled: false,
-      itemSelectText: 'auswielen...',
-      choices : teamlist
-    });
-    sel_id_teamhome.setChoiceByValue(document.getElementById("id_teamhome").dataset.selected);
-    
-  } else {
-    document.getElementById('id_teamhome').value = teamidlist[document.getElementById('id_teamhome').value];
-  }
-  if (document.getElementById('id_teamguest').tagName == "SELECT"){
-    sel_id_teamguest = new Choices('#id_teamguest',{
-      searchEnabled: false,
-      itemSelectText: 'auswielen...',
-      choices : teamlist
-    });
-    sel_id_teamguest.setChoiceByValue(document.getElementById("id_teamguest").dataset.selected);
-    
-  } else {
-    document.getElementById('id_teamguest').value = teamidlist[document.getElementById('id_teamguest').value];
-  }
-  return false;
-}
-
-
diff --git a/app/tmpl/module/championship/games.tt b/app/tmpl/module/championship/games.tt
deleted file mode 100644 (file)
index 913b1ff..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-[% PROCESS macro/fields.tt %]
-[% INCLUDE "module/$module/toolbar.tt" %]
-<div class="container" id="tbl_csgames" style="margin-top: 50px;">
-</div>
-<div id="dlgcsgames" class="modal">
-  <div class="modal-content animate-top card-4">
-    <header class="container"> 
-      <span onclick="document.getElementById('dlgcsgames').style.display='none'; return false;" 
-       class="button display-topright">&times;</span>
-      <h2 id="dlgpublish_title">Match änneren / setzen</h2>
-    </header>
-    <div class="container">
-      <form id="frm_csgames">
-        [% fieldhidden("id","csgames","ident",'') %]
-        [% fieldselectbox("id_season","csgames","Saison",'half','','') %]
-        [% fieldselectbox("id_division","csgames","Divisioun",'half','','') %]
-        [% fieldeditbox("playday","csgames","Spilldag",'quarter','','') %]
-        [% fielddatebox("playdate","csgames","Datum",'third','','') %]
-        [% fieldselectbox("id_teamhome","csgames","Team Home",'threequarter','','') %]
-        [% fieldeditbox("sets_teamhome","csgames","Sets Home",'quarter','','') %]
-        [% fieldselectbox("id_teamguest","csgames","Team Guest",'threequarter','','') %]
-        [% fieldeditbox("sets_teamguest","csgames","Sets Guest",'quarter','','') %]
-        [% fieldcheckbox("validated","csgames","Validéiert",'','','') %]
-      </form>
-    </div>
-    <footer class="container right-align padding-16">
-    <button class="button theme-light margin-right border" onclick="document.getElementById('dlgcsgames').style.display='none'; return false;">Oofbriechen</button>
-    <div class="container right-align">
-        <button class="button blue-grey margin" onclick="saveform('csgames',closedlg);return false;">Spaicheren</button>
-      </div>
-    </footer>
-  </div>
-</div>
diff --git a/app/tmpl/module/championship/highscores.js b/app/tmpl/module/championship/highscores.js
deleted file mode 100644 (file)
index 1fb1a26..0000000
+++ /dev/null
@@ -1,227 +0,0 @@
-var tbl = null;
-var tag_highcheck = null;
-var tag_highscore = null;
-var tag_fastfinish = null;
-var sel_id_game  = null;
-var sel_playday = null;
-var sel_id_member = null;
-var pdayidlist = [];
-var gameidlist = {};
-var clubidbymember = {};
-function initpage(){
-  tag_highscore = new Choices('#highscore',{
-    removeItems: true,
-    removeItemButton: true,
-    searchEnabled: false,
-    addItems: true,
-    addItemText: (value) => {
-      return `Dreck 'Enter' <b>"${value}"</b> baizesetzen`;
-    },
-  });
-  tag_fastfinish = new Choices('#fastfinish',{
-    removeItems: true,
-    removeItemButton: true,
-    searchEnabled: false,
-    addItems: true,
-    addItemText: (value) => {
-      return `Dreck 'Enter' <b>"${value}"</b> baizesetzen`;
-    },
-  });
-  tag_highcheck = new Choices('#highcheck',{
-    removeItems: true,
-    removeItemButton: true,
-    searchEnabled: false,
-    addItems: true,
-    addItemText: (value) => {
-      return `Dreck 'Enter' <b>"${value}"</b> baizesetzen`;
-    },
-  });
-  sel_playday = new Choices('#playday',{
-    searchEnabled: false,
-    itemSelectText: 'auswielen...',
-    choices : [],
-    shouldSort: false,
-    shouldSortItems: false
-  });
-  sel_id_game = new Choices('#id_game',{
-    searchEnabled: false,
-    itemSelectText: 'auswielen...',
-    choices : [],
-    shouldSort: false,
-    shouldSortItems: false
-  });
-  sel_id_member = new Choices('#id_member',{
-    searchEnabled: false,
-    itemSelectText: 'auswielen...',
-    choices : [],
-    shouldSort: false,
-    shouldSortItems: false
-  });
-  tbl = new Tabulator("#tbl_cshighscores", {
-    headerFilterPlaceholder:"filter...",
-    height: "95vh",
-    layout:"fitDataFill",
-    selectable:1,
-    responsiveLayout:"collapse",
-    columns:[
-    {title:"Spilldag", field:"playday",headerFilter:"number", headerFilterFunc:"=",sorter:"number", width: 50},
-    {title:"Match", field:"game",headerFilter:"input",width: 200},
-    {title:"Spiller", field:"player",headerFilter:"input",width: 200},
-    {title:"Club", field:"club",headerFilter:"input",width: 150},
-    {title:"High Score", field:"highscorelist"},
-    {title:"Fast Finish", field:"fastfinishlist"},
-    {title:"High Check", field:"highchecklist"},
-    ],
-});
-  gettbldata();
-  getplaydays();
-}
-
-function gettbldata(){
-  req.reqdata("POST","db.cgi",{"get":"highscores","filter":"season='[% season %]'"},loadtbldata);
-}
-
-function loadtbldata(data){
-  if (data && data.sqldata){
-    tbl.setData(data.sqldata);
-  }
-}
-
-function highscoresaved(){
-  gettbldata();
-  document.getElementById('dlgcshighscores').style.display='none'; 
-}
-
-function add(){
-  tag_highscore.clearStore();
-  tag_fastfinish.clearStore();
-  tag_highcheck.clearStore();
-  sel_id_member.clearStore();
-  document.getElementById("id").value = "";
-  document.getElementById("id_member").dataset.selected = "";
-  getmembersbyteam();
-  document.getElementById('dlgcshighscores').style.display='block';
-}
-
-function edit(){
-  var udata = tbl.getSelectedData();
-  if (udata.length == 0){ return; }
-  var uid = udata[0].id;
-  //console.log(udata[0]);
-  sel_playday.setChoiceByValue(udata[0].playday);
-  document.getElementById("id").value=udata[0].id;
-  document.getElementById("id_game").dataset.selected = udata[0].id_game;
-  //document.getElementById("id_club").value = udata[0].id_club;
-  getgamesbyplayday();
-  document.getElementById("id_member").dataset.selected = udata[0].id_member;
-  getmembersbyteam();
-  tag_fastfinish.clearStore();
-  tag_highcheck.clearStore();
-  tag_highscore.clearStore();
-  if ((udata[0].highscore != null) && (udata[0].highscore != '[""]')){
-    tag_highscore.setValue(JSON.parse(udata[0].highscore)); 
-  }
-  if ((udata[0].fastfinish != null) && (udata[0].fastfinish != '[""]')){
-    tag_fastfinish.setValue(JSON.parse(udata[0].fastfinish)); 
-  }
-  if ((udata[0].highcheck != null)  && (udata[0].highcheck != '[""]')){
-    tag_highcheck.setValue(JSON.parse(udata[0].highcheck)); 
-  }
-  document.getElementById("id_club").value = udata[0].id_club;
-  document.getElementById('dlgcshighscores').style.display='block'; 
-}
-
-function remove(){
-  var udata = tbl.getSelectedData();
-  var uid = udata[0].id;
-  if (confirm("Bass du secher dass déi ausgewielten Scores läschen wells?")){
-    req.reqdata("POST","db.cgi",{"del":"1","ident_cshighscores_id":udata[0].id},gettbldata);
-  }
-}
-
-function getplaydays(){
-  req.reqdata("POST","db.cgi",{"get":"playdays","filter":"season='[% season%]'"},fillplaydays);
-  return false;
-}
-function fillplaydays(data){
-  var pdaylist = [];
-  pdayidlist = {"":""};
-  if (data && data.sqldata){
-    for (var i in data.sqldata){
-      pdaylist.push({value:data.sqldata[i].playday,label:data.sqldata[i].playday});
-      pdayidlist[data.sqldata[i].playday] = data.sqldata[i].d;
-    }
-  }
-  sel_playday.setChoices(pdaylist, 'value', 'label', true);
-  document.getElementById("playday").addEventListener("change",function(){
-    getgamesbyplayday();
-  });
-  return false;
-}
-
-function getgamesbyplayday(){
-  var playday = document.getElementById('playday').value;
-  req.reqdata("POST","db.cgi",{"get":"gameslist","filter":"season='[% season%]' and playday=" + playday},fillgameslist);
-}
-
-function fillgameslist(data){
-  var gamelist = [];
-  gameidlist = {};
-  sel_id_game.clearStore();
-  sel_id_member.clearStore();
-  document.getElementById("id_club").value = "";
-  if (data && data.sqldata){
-    for (var i in data.sqldata){
-      gamelist.push({value:data.sqldata[i].id,label:data.sqldata[i].game});
-      gameidlist[data.sqldata[i].id] = data.sqldata[i];
-    }
-  }
-  sel_id_game.setChoices(gamelist, 'value', 'label', true);
-  
-  document.getElementById("id_game").addEventListener("change",function(){
-    getmembersbyteam();
-  });
-  if (document.getElementById("id_game").dataset.selected){
-    sel_id_game.setChoiceByValue(document.getElementById("id_game").dataset.selected);
-  }
-  return false;
-}
-
-function getmembersbyteam(){
-  var idgame = document.getElementById("id_game").value;
-  //console.log(gameidlist[idgame]);
-  if (idgame){
-    req.reqdata("POST","db.cgi",{"get":"memberlist","filter":"id_club in (" + gameidlist[idgame].id_clubhome + "," + gameidlist[idgame].id_clubguest + ")  and status='aktiv' "},fillmemberslist);
-  }
-}
-
-function fillmemberslist(data){
-  var memberslist = [];
-  clubidbymember = {};
-  sel_id_member.clearStore();
-  document.getElementById("id_club").value = "";
-  
-  if (data && data.sqldata){
-    for (var i in data.sqldata){
-      
-      memberslist.push({value:data.sqldata[i].id,label:'(' + data.sqldata[i].club + ') <strong>' +  data.sqldata[i].surname + ' ' + data.sqldata[i].prename + '</strong>'});
-      clubidbymember[data.sqldata[i].id] = data.sqldata[i].id_club;
-    }
-  }
-  sel_id_member.setChoices(memberslist, 'value', 'label', true);
-  
-  document.getElementById("id_member").addEventListener("change",function(){
-    setclubid();
-  });
-  if (document.getElementById("id_member").dataset.selected){
-    sel_id_member.setChoiceByValue(document.getElementById("id_member").dataset.selected);
-  }
-  return false;
-}
-
-function setclubid(){
-  var idm = document.getElementById("id_member").value;
-  document.getElementById("id_club").value=clubidbymember[idm];
-}
-
-
diff --git a/app/tmpl/module/championship/highscores.tt b/app/tmpl/module/championship/highscores.tt
deleted file mode 100644 (file)
index 5cc1fc1..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-[% PROCESS macro/fields.tt %]
-<div class="top border-bottom theme-light">
-<div class="bar">
-    <button class="bar-item button border blue-grey" onclick="app.loadpage('module/[% module %]/index.html','Championnat');return false;"><img src="[% abspath%]img/icons/target_white.svg" style="height: 24px;"/>Championnat</button>
-    
-    <div id="right_tlb">
-    <button class="bar-item button border right red tlbbtnlist" onclick="remove();"><img src="[% abspath%]img/icons/remove_white.svg" style="height: 24px;"/></button>
-    <button class="bar-item button border right blue-grey tlbbtnlist" onclick="edit();"><img src="[% abspath%]img/icons/edit_white.svg" style="height: 24px;"/></button>
-     <button class="bar-item button border right blue-grey tlbbtnlist" onclick="add();"><img src="[% abspath%]img/icons/plus_white.svg" style="height: 24px;"/></button>
-   </div>
-    
-</div>
-</div>
-<div class="display-container">
-<div class="container" id="tbl_cshighscores" style="margin-top: 50px;"></div>
-<div id="dlgcshighscores" class="modal">
-  <div class="modal-content animate-top card-4">
-    <header class="container"> 
-      <span onclick="document.getElementById('dlgcshighscores').style.display='none'; return false;" 
-       class="button display-topright">&times;</span>
-      <h2>Highscore androen</h2>
-    </header>
-    <div class="container">
-        [% fieldselectbox("playday","display","Spilldag",'quarter','','') %]
-      <form id="frm_cshighscores">
-        [% fieldselectbox("id_game","cshighscores","Match",'','','') %]
-        [% fieldhidden("id","cshighscores","ident",'') %]
-        [% fieldhidden("id_club","cshighscores","",'') %]
-        [% fieldselectbox("id_member","cshighscores","Spiller",'','','') %]
-        [% fieldtagbox("highscore","cshighscores","High Score",'','','') %]
-        [% fieldtagbox("fastfinish","cshighscores","Fast Finish",'','','') %]
-        [% fieldtagbox("highcheck","cshighscores","High Check",'','','') %]
-      </form>
-    </div>
-    <footer class="container right-align padding-16">
-        <button class="button theme-light border" onclick="document.getElementById('dlgcshighscores').style.display='none'; return false;">Oofbriechen</button>
-        <button class="button blue-grey margin" id="btnsavehighscore" onclick="saveform('cshighscores',highscoresaved);return false;">Spaicheren</button>
-    </footer>
-  </div>
-</div>
\ No newline at end of file
diff --git a/app/tmpl/module/championship/index.js b/app/tmpl/module/championship/index.js
deleted file mode 100644 (file)
index d5e647b..0000000
+++ /dev/null
@@ -1,240 +0,0 @@
-var tbl = null;
-var afterformsaved = {}; 
-/*[% sid = session.id %]
-[% IF (session.usergroups.search('championship') != 1) %]
-[% qclub = dksdb.query("select id_club from vw_memberlist where id_user=$sid;") %]
-[% club = qclub.get_all() %]
-[% END %] */
-
-var idclub="[% club.0.id_club %]";
-function initpage(){
-  tbl = new Tabulator("#tbl_csgames", {
-    headerFilterPlaceholder:"filter...",
-    height: "95vh",
-    layout:"fitDataFill",
-    selectable:1,
-    responsiveLayout:"collapse",
-    columns:[
-    {title:"Spilldag", field:"playday",headerFilter:"number", headerFilterFunc:"=",sorter:"number", width: 50},
-    {title:"Datum", field:"dspplaydate",headerFilter:"input", width: 120},
-    {title:"Doheem", field:"teamhome",headerFilter:"input"},
-    {title:"Auswärts", field:"teamguest",headerFilter:"input"},
-    {title:"Sets Doheem", field:"sets_teamhome",width: 50},
-    {title:"Sets Auswärts", field:"sets_teamguest",width: 50},
-    {title:"Validéiert", field:"validated", width: 50,align:"center", formatter:"tickCross", sorter:"boolean"},
-    {title:"Resultat Doheem", field:"result_teamhome",width: 100},
-    {title:"SpillBou Doheem", field:"file_teamhome",formatter:"html",width: 150},
-    {title:"Resultat Auswärts", field:"result_teamguest",width: 100},
-    {title:"SpillBou Auswärts", field:"file_teamguest",formatter:"html",width: 150},
-    ],
-});
-  gettbldata();
-}
-
-function gettbldata(){
-  /*[% IF club %]*/
-  req.reqdata("POST","db.cgi",{"get":"games","filter":"season='[% season %]' and (id_clubhome=[% club.0.id_club %] or id_clubguest=[% club.0.id_club %])"},loadtbldata);
-  /*[% ELSE %]*/
-  req.reqdata("POST","db.cgi",{"get":"games","filter":"season='[% season %]'"},loadtbldata);
-  /*[% END %]*/
-}
-
-function loadtbldata(data){
-  if (data && data.sqldata){
-    tbl.setData(data.sqldata);
-  }
-}
-
-function closedlg(){
-  gettbldata();
-  document.getElementById('dlgcsgames').style.display='none'; 
-}
-
-function edit(){
-  var udata = tbl.getSelectedData();
-  var uid = udata[0].id;
-  if (udata.length == 0){ return; }
-  document.getElementById("div_teamguest").style.display = 'block';
-  document.getElementById("div_teamhome").style.display = 'block';
-  document.getElementById("season").value=udata[0].season;
-  document.getElementById("division").value=udata[0].division;
-  document.getElementById("playday").value=udata[0].playday;
-  document.getElementById("dspplaydate").value=udata[0].dspplaydate;
-  document.getElementById("teamhome").value=udata[0].teamhome;
-  document.getElementById("teamguest").value=udata[0].teamguest;
-  document.getElementById("id_clubhome").value=udata[0].id_clubhome;
-  document.getElementById("id_clubguest").value=udata[0].id_clubguest;
-  document.getElementById("uploadclub").value=idclub;
-  document.getElementById("id").value=udata[0].id;
-  document.getElementById("upload_teamhome").value="";
-  document.getElementById("upload_teamguest").value="";
-  document.getElementById("result_teamhome").value="";
-  document.getElementById("result_teamguest").value="";
-  //if (idclub == ''){
-    document.getElementById("sets_teamhome").value=udata[0].sets_teamhome;
-    document.getElementById("sets_teamguest").value=udata[0].sets_teamguest;
-  //}
-  
-  if (udata[0].validated=="1"){
-    
-    if (idclub == ''){ document.getElementById("validated").checked = true;}
-    if (idclub != ''){
-      document.getElementById("div_fld").style.display= 'block';
-      document.getElementById("btnsavegame").style.display='none';
-    }
-
-  } else {
-    document.getElementById("btnsavegame").style.display='inline';
-    if (idclub == ''){ document.getElementById("validated").checked = false;}
-    if (idclub != ''){ document.getElementById("div_fld").style.display= 'none'; }
-  }
-
-  if (idclub != ''){
-    if (idclub != '' && idclub== udata[0].id_clubhome && udata[0].id_clubhome!=udata[0].id_clubguest){
-
-      document.getElementById("div_teamguest").style.display = 'none';
-    }
-    if (idclub != '' && idclub== udata[0].id_clubguest && udata[0].id_clubhome!=udata[0].id_clubguest){
-
-      document.getElementById("div_teamhome").style.display = 'none';
-    }
-    if (udata[0].validated == 1){
-      document.getElementById("div_teamguest").style.display = 'none';
-      document.getElementById("div_teamhome").style.display = 'none';
-      
-    }
-  } else {
-    document.getElementById("div_teamguest").style.display = 'block';
-    document.getElementById("div_teamhome").style.display = 'block';
-  }
-
-  document.getElementById('dlgcsgames').style.display='block'; 
-  return false;
-}
-
-function savegame(){
-
-  var th = false;
-  var tg = false;
-  var rt =/\d+-\d+/;
-  if (idclub != '' && idclub == document.getElementById('id_clubhome').value){
-    var rth = document.getElementById('result_teamhome').value;
-    var fth = document.getElementById('upload_teamhome').value;
-    rth = rth.replace(' ','','g');
-    //console.log("home do match " + rth.match(rt));
-    if (rth != '' && fth != '' && (rth.match(rt))){
-      th = true;
-      
-    }  
-  }
-  if (idclub != '' && idclub == document.getElementById('id_clubguest').value){
-    var rtg = document.getElementById('result_teamguest').value;
-    var ftg = document.getElementById('upload_teamguest').value;
-    rtg = rtg.replace(' ','','g');
-    //console.log("guest do match " + rtg.match(rt));
-    if (rtg != '' && ftg != '' && (rtg.match(rt))){ 
-      tg = true;
-      // console.log("guest does not match!");
-      
-    }
-  }
-  //console.log("TG" + tg + 'TH' + th);
-  if (idclub == '' || th || tg){
-    getformdata('csgames');
-  }
-
-  return false;
-}
-
-
-function filesaved(data){
-  var sb = document.getElementById("snackbar");
-  sb.className="show green";
-  sb.innerHTML = 'den Spillstand gouf gespaichert!';
-  setTimeout(function(){ sb.className = sb.className.replace("show green", ""); }, 3000);
-  return false;
-}
-function getformdata(frmid){
-  var frm = document.getElementById("frm_" + frmid);
-   // console.log(frm);
-    var frmdata = new FormData();
-   // flds ={"text":{},"files":{}};
-    for (var i = 0; i < frm.elements.length; i++) {
-      var field = frm.elements[i];
-      
-      if (field.tagName == "INPUT"){
-        //console.log(field.id + " => " + field.type);
-        if ( field.type == "file"){
-          if (field.files[0]){
-            frmdata.append(field.id,field.files[0]);
-          }
-        } else if (field.type == "checkbox"){
-          if (field.checked == true){
-            frmdata.append(field.id,1);
-          } else {frmdata.append(field.id,'');}
-        } 
-        else {
-          if (field.value){
-            frmdata.append(field.id,field.value);
-          }
-          
-          //flds['text'][field.id] = field.value;
-        }
-      }
-    // console.log(field);
-    }
-    for (var pair of frmdata.entries()) {
-       console.log(pair[0]+ ', ' + pair[1]); 
-    }
-    req.multipartform("upload.cgi",frmdata,multipartformsaved);
-}
-
-function multipartformsaved(data){
-  //console.log(data);
-  var sb = document.getElementById("snackbar");
-  sb.className="show green";
-  sb.innerHTML = 'Den Fichier gouf gespaichert!';
-  setTimeout(function(){ sb.className = sb.className.replace("show green", ""); }, 3000);
-  
-  document.getElementById('dlgcsgames').style.display = 'none';
-  if (afterformsaved.action){
-    afterformsaved.action(data);
-  }
-  gettbldata();
-  return false;
-}
-
-function show_gameupload(gfile){
-  var ts = Math.round((new Date()).getTime() / 1000);
-  window.open("../data/championship/[% season%]/" + gfile + '?v='+ ts);
-}
-
-/*[% IF (session.usergroups.search('championship') == 1) %]*/
-
-function loadhighscores(){
-  var udata = tbl.getSelectedData();
-  //console.log(udata);
-  if (udata.length > 0){
-    var uid = udata[0].id;
-    app.loadpage('[% module %]/highscores.html?id_game=' + udata[0].id,'Highscores');
-  } else {
-    app.loadpage('[% module %]/highscores.html','Highscores');
-  }
-}
-
-function cleansets(){
-  req.reqdata("POST","db.cgi",{"fn":"cleangamesets","params":document.getElementById("id").value},aftercleansets);
-}
-
-function aftercleansets(data){
-  console.log(data);
-  var sb = document.getElementById("snackbar");
-  sb.className="show green";
-  sb.innerHTML = 'Den Fichier gouf gespaichert!';
-  setTimeout(function(){ sb.className = sb.className.replace("show green", ""); }, 3000);
-  
-  document.getElementById('dlgcsgames').style.display = 'none';
-  gettbldata();
-  return false;
-}
-/*[% END %]*/
\ No newline at end of file
diff --git a/app/tmpl/module/championship/index.tt b/app/tmpl/module/championship/index.tt
deleted file mode 100644 (file)
index 8dcdaac..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-[% PROCESS macro/fields.tt %]
-[% inputdisabled = 'readonly' %]
-[% IF (session.usergroups.search('championship') == 1) %]
-[% inputdisabled = '' %]
-[% END %]
-<div class="bar moduletoolbar">
-    <div class="bar-item PageHeadTitle">Championnat</div>
-    <button class="bar-item toolbarbtn center" onclick="edit(); return false;"><span class="icon-edit" style="font-size: 16px;"></span><br/>Endstand androën</button>
-    [% IF (session.usergroups.search('championship') == 1) %]
-    <button class="bar-item toolbarbtn center" onclick="app.loadpage('[% module %]/ranking.html','Konfiguratioun Saison');return false;"><span class="icon-settings" style="font-size: 16px;"></span><br/>Konfiguratioun</button>
-    <button class="bar-item toolbarbtn center" onclick="loadhighscores();return false;"><span class="icon-numberlist" style="font-size: 16px;"></span><br/>Highscores</button>
-    [% END %]
-</div>
-<div class="display-container" id="tbl_csgames"></div>
-<div id="dlgcsgames" class="modal">
-  <div class="modal-content animate-top card-4">
-    <header class="container"> 
-      <span onclick="document.getElementById('dlgcsgames').style.display='none'; return false;" 
-       class="button display-topright">&times;</span>
-      <h2>Endstand androën</h2>
-    </header>
-    <div class="container">
-        [% fieldeditbox("season","display","Saison",'quarter','readonly','') %]
-        [% fieldselectbox("division","display","Divisioun",'quarter','readonly','') %]
-        [% fieldeditbox("playday","display","Spilldag",'quarter','readonly','') %]
-        [% fieldeditbox("dspplaydate","display","Datum",'quarter','readonly','') %]
-        [% fieldselectbox("teamhome","display","Doheem",'half','readonly','') %]
-        [% fieldselectbox("teamguest","display","Auswärts",'half','readonly','') %]
-        [% fieldhidden("id_clubhome","csgames","",'') %]
-        [% fieldhidden("id_clubguest","csgames","",'') %]
-      <form id="frm_csgames">
-        [% fieldhidden("gameresult","form","",'1') %]
-        [% fieldhidden("uploadclub","form","",'') %]
-        [% fieldhidden("id","csgames","ident",'') %]
-        [% IF (session.usergroups.search('championship') == 1) %]
-        <div  class="container" id="div_fld">
-        [% fieldeditbox("sets_teamhome","csgames","Sets Doheem",'third','','') %]
-        [% fieldeditbox("sets_teamguest","csgames","Sets Auswärts",'third','','') %]
-        [% fieldcheckbox("validated","csgames","Validéiert",'third','','') %]
-        </div>
-        [% ELSE %]
-        <div  class="container" id="div_fld">
-        [% fieldeditbox("sets_teamhome","csgames","Sets Doheem",'third','readonly','') %]
-        [% fieldeditbox("sets_teamguest","csgames","Sets Auswärts",'third','readonly','') %]
-        </div>
-        [% END %]
-        
-        <div id="div_teamhome">
-        [% fieldeditbox("result_teamhome","csgames","Endstand<br/>Doheem",'third','','','0-0') %]
-        [% fieldfile("upload_teamhome","csgames","Spillbou<br/>Doheem","twothird",'') %]
-        </div>
-        <div id="div_teamguest">
-        [% fieldeditbox("result_teamguest","csgames","Endstand<br/>Auswärts",'third','','','0-0') %]
-        [% fieldfile("upload_teamguest","csgames","Spillbou<br/>Auswärts",'twothird','') %]
-        </div>
-      </form>
-    </div>
-    <footer class="container right-align padding-16">
-    [% IF (session.usergroups.search('championship') == 1) %]
-        <button class="button red border" onclick="cleansets(); return false;">Sets läschen</button>
-    [% END %]
-        <button class="button theme-light border" onclick="document.getElementById('dlgcsgames').style.display='none'; return false;">Oofbriechen</button>
-        <button class="button blue-grey margin" id="btnsavegame" onclick="savegame();return false;">Spaicheren</button>
-    </footer>
-  </div>
-</div>
diff --git a/app/tmpl/module/championship/ranking.js b/app/tmpl/module/championship/ranking.js
deleted file mode 100644 (file)
index c9b395b..0000000
+++ /dev/null
@@ -1,188 +0,0 @@
-var tbl = null;
-var sel_id_team = null;
-var sel_id_division = null;
-var sel_id_season = null;
-function initpage(){
-  tbl = new Tabulator("#tbl_csseasonranking", {
-    height: "95vh",
-    layout:"fitColumns",
-    addRowPos:"top", 
-    selectable:1,
-    columns:[
-    {title:"Saison", field:"season",headerFilter:"input"},
-    {title:"Division", field:"division",headerFilter:"input"},
-    {title:"Team", field:"team",headerFilter:"input"},
-    {title:"gespillt", field:"played"},
-    {title:"Sets gewonnen", field:"setswon"},
-    {title:"Sets verluer", field:"setslost"},
-    {title:"Punkten", field:"points"}
-    ],
-});
- gettbldata();
- getteams();
- getdivisions();
- getseasons();
-}
-
-
-
-function gettbldata(){
-    req.reqdata("POST","db.cgi",{"get":"seasonranking"},loadtbldata);
-}
-
-function loadtbldata(data){
-  if (data && data.sqldata){
-    tbl.setData(data.sqldata);
-  }
-}
-
-function add(){
-  var frm = document.querySelectorAll('.data_csseasonranking');
-      for (var f in frm){
-          if ((frm[f].tagName == 'INPUT') || (frm[f].tagName == 'SELECT')){
-            if (frm[f].classList.contains("datefield")){
-              frm[f]._flatpickr.setDate("");
-            } else {
-              frm[f].value="";
-              // if (frm[f].id == 'teams'){
-              //   locations_teams.clearStore();
-              // }
-            }
-
-          } 
-      }
-  document.getElementById('dlgcsseasonranking').style.display='block'; 
-  return false;
-}
-
-function edit(){
-  var udata = tbl.getSelectedData();
-  var uid = udata[0].id;
-  //console.log(uid);
-  req.reqdata("POST","db.cgi",{"get":"seasonranking","filter":"id=" + uid},fillformseasonranking);
-  document.getElementById('dlgcsseasonranking').style.display='block'; 
-  return false;
-}
-
-function fillformseasonranking(data){
-  //console.log(data);
-  if (data && data.sqldata){
-    var frm = document.querySelectorAll('.data_csseasonranking');
-    for (var f in frm){
-      //console.log(frm[f].classList);
-      if (data.sqldata[0][frm[f].id]){
-        if ((frm[f].tagName == 'INPUT') || (frm[f].tagName == 'SELECT') || frm[f].tagName == 'TEXTAREA'){
-          if (frm[f].classList.contains("datefield")){
-            frm[f]._flatpickr.setDate(data.sqldata[0][frm[f].id]);
-          } else if (frm[f].classList.contains("richeditarea")){
-            //console.log(frm[f].id + " is richeditarea");
-            tinymce.get(frm[f].id).setContent(data.sqldata[0][frm[f].id]);
-          } else {
-            frm[f].value=data.sqldata[0][frm[f].id];
-          } 
-          
-        } 
-      }
-    }
-  }
-  return false;
-}
-
-function remove(){
-  var udata = tbl.getSelectedData();
-  var uid = udata[0].id;
-  if (confirm("Dass du secher dass du déi ausgewielten Rei läschen wëlls?")){
-    req.reqdata("POST","db.cgi",{"del":"1","ident_csseasonranking_id":udata[0].id},gettbldata);
-  }
-  return false;
-}
-
-function getteams(){
-  req.reqdata("POST","db.cgi",{"get":"teams"},fillteams);
-  return false;
-}
-
-function fillteams(data){
-  var teamlist = [];
-  var teamidlist = {"":""};
-  if (data && data.sqldata){
-    for (var i in data.sqldata){
-      teamlist.push({value:data.sqldata[i].id,label:data.sqldata[i].team});
-      teamidlist[data.sqldata[i].id] = data.sqldata[i].teams;
-    }
-  }
-  if (document.getElementById('id_team').tagName == "SELECT"){
-    sel_id_team = new Choices('#id_team',{
-      searchEnabled: false,
-      itemSelectText: 'auswielen...',
-      choices : teamlist
-    });
-    sel_id_team.setChoiceByValue(document.getElementById("id_team").dataset.selected);
-    
-  } else {
-    document.getElementById('id_team').value = teamidlist[document.getElementById('id_team').value];
-  }
-  return false;
-}
-function getdivisions(){
-  req.reqdata("POST","db.cgi",{"get":"divisions"},filldivisions);
-  return false;
-}
-function filldivisions(data){
-  var divlist = [];
-  var dividlist = {"":""};
-  if (data && data.sqldata){
-    for (var i in data.sqldata){
-      divlist.push({value:data.sqldata[i].id,label:data.sqldata[i].division});
-      dividlist[data.sqldata[i].id] = data.sqldata[i].division;
-    }
-  }
-  if (document.getElementById('id_division').tagName == "SELECT"){
-    sel_id_division = new Choices('#id_division',{
-      searchEnabled: false,
-      itemSelectText: 'auswielen...',
-      choices : divlist,
-      shouldSort: false,
-      shouldSortItems: false
-    });
-    sel_id_division.setChoiceByValue(document.getElementById("id_division").dataset.selected);
-    
-  } else {
-    document.getElementById('id_division').value = dividlist[document.getElementById('id_division').value];
-  }
-  return false;
-}
-function getseasons(){
-  req.reqdata("POST","db.cgi",{"get":"seasons"},fillseasons);
-  return false;
-}
-function fillseasons(data){
-
-  var seasonlist = [];
-  var seasonidlist = {"":""};
-  if (data && data.sqldata){
-    for (var i in data.sqldata){
-      seasonlist.push({value:data.sqldata[i].id,label:data.sqldata[i].season});
-      seasonidlist[data.sqldata[i].id] = data.sqldata[i].season;
-    }
-  }
-  if (document.getElementById('id_season').tagName == "SELECT"){
-    sel_id_season = new Choices('#id_season',{
-      searchEnabled: false,
-      itemSelectText: 'auswielen...',
-      choices : seasonlist,
-      shouldSort: false,
-      shouldSortItems: false
-    });
-    sel_id_season.setChoiceByValue(document.getElementById("id_season").dataset.selected);
-    
-  } else {
-    document.getElementById('id_season').value = seasonidlist[document.getElementById('id_season').value];
-  }
-  return false;
-}
-
-function closedlg(){
-  gettbldata();
-  document.getElementById('dlgcsseasonranking').style.display='none'; 
-}
\ No newline at end of file
diff --git a/app/tmpl/module/championship/ranking.tt b/app/tmpl/module/championship/ranking.tt
deleted file mode 100644 (file)
index ee3e931..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-[% PROCESS macro/fields.tt %]
-[% INCLUDE "module/$module/toolbar.tt" %]
-<div class="container" id="tbl_csseasonranking" style="margin-top: 50px;">
-</div>
-<div id="dlgcsseasonranking" class="modal">
-  <div class="modal-content animate-top card-4">
-    <header class="container"> 
-      <span onclick="document.getElementById('dlgcsseasonranking').style.display='none'; return false;" 
-       class="button display-topright">&times;</span>
-      <h2 id="dlgpublish_title">Ranking änneren / setzen</h2>
-    </header>
-    <div class="container">
-      <form id="frm_csseasonranking">
-        [% fieldhidden("id","csseasonranking","ident",'') %]
-        [% fieldselectbox("id_season","csseasonranking","Saison",'','','') %]
-        [% fieldselectbox("id_division","csseasonranking","Divisioun",'','','') %]
-        [% fieldselectbox("id_team","csseasonranking","Equipe",'','','') %]
-      </form>
-    </div>
-    <footer class="container right-align padding-16">
-    <button class="button theme-light margin-right border" onclick="document.getElementById('dlgcsseasonranking').style.display='none'; return false;">Oofbriechen</button>
-    <div class="container right-align">
-        <button class="button blue-grey margin" onclick="saveform('csseasonranking',closedlg);return false;">Spaicheren</button>
-      </div>
-    </footer>
-  </div>
-</div>
diff --git a/app/tmpl/module/championship/seasons.js b/app/tmpl/module/championship/seasons.js
deleted file mode 100644 (file)
index 8bf2ebf..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-function initpage(){
-  tbl = new Tabulator("#tbl_seasons", {
-    height: "95vh",
-    layout:"fitColumns",
-    addRowPos:"top", 
-    selectable:1,
-    columns:[
-    {title:"Saison", field:"season"},
-    ],
-});
- gettbldata();
-}
-
-function gettbldata(){
-  req.reqdata("POST","db.cgi",{"get":"seasons"},loadtbldata);
-}
-
-function loadtbldata(data){
-  if (data && data.sqldata){
-    tbl.setData(data.sqldata);
-  }
-}
-
-function add(){
-
-}
-
-function edit(){
-
-}
-
-function remove(){
-
-}
\ No newline at end of file
diff --git a/app/tmpl/module/championship/seasons.tt b/app/tmpl/module/championship/seasons.tt
deleted file mode 100644 (file)
index 254ff02..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-[% PROCESS macro/fields.tt %]
-[% INCLUDE "module/$module/toolbar.tt" %]
-<div class="container" id="tbl_seasons" style="margin-top: 50px;">
-</div>
-<div id="dlgseasons" class="modal">
-  <div class="modal-content animate-top card-4">
-    <header class="container"> 
-      <span onclick="document.getElementById('dlgseasons').style.display='none'; return false;" 
-       class="button display-topright">&times;</span>
-      <h2 id="dlgpublish_title">Saison änneren / setzen</h2>
-    </header>
-    <div class="container">
-      <form id="frm_seasons">
-        [% fieldhidden("id","csseasons",'ident','') %]
-        [% fieldselectbox("season","csseasons","Saison",'','','') %]
-      </form>
-    </div>
-    <footer class="container right-align padding-16">
-    <button class="button theme-light margin-right border" onclick="document.getElementById('dlgseasons').style.display='none'; return false;">Oofbriechen</button>
-    <div class="container right-align">
-        <button class="button blue-grey margin" onclick="saveform('seasons');return false;">Spaicheren</button>
-      </div>
-    </footer>
-  </div>
-</div>
\ No newline at end of file
diff --git a/app/tmpl/module/championship/teams.js b/app/tmpl/module/championship/teams.js
deleted file mode 100644 (file)
index 68fe756..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-function initpage(){
-  tbl = new Tabulator("#tbl_teams", {
-    height: "95vh",
-    layout:"fitColumns",
-    addRowPos:"top", 
-    selectable:1,
-    columns:[
-    {title:"Equipe", field:"team"},
-    {title:"Club", field:"club"},
-    ],
-});
- gettbldata();
-}
-
-function gettbldata(){
-  req.reqdata("POST","db.cgi",{"get":"teams"},loadtbldata);
-}
-
-function loadtbldata(data){
-  if (data && data.sqldata){
-    tbl.setData(data.sqldata);
-  }
-}
-
-function add(){
-
-}
-
-function edit(){
-  
-}
-
-function remove(){
-
-}
\ No newline at end of file
diff --git a/app/tmpl/module/championship/teams.tt b/app/tmpl/module/championship/teams.tt
deleted file mode 100644 (file)
index 93265cc..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-[% PROCESS macro/fields.tt %]
-[% INCLUDE "module/$module/toolbar.tt" %]
-<div class="container" id="tbl_teams" style="margin-top: 50px;">
-</div>
-<div id="dlgteams" class="modal">
-  <div class="modal-content animate-top card-4">
-    <header class="container"> 
-      <span onclick="document.getElementById('dlgteams').style.display='none'; return false;" 
-       class="button display-topright">&times;</span>
-      <h2 id="dlgpublish_title">Saison änneren / setzen</h2>
-    </header>
-    <div class="container">
-      <form id="frm_teams">
-        [% fieldhidden("id","csteams",'ident','') %]
-        [% fieldselectbox("team","csteams","Saison",'','','') %]
-        [% fieldselectbox("id_club","csteams","Club",'','','') %]
-      </form>
-    </div>
-    <footer class="container right-align padding-16">
-    <button class="button theme-light margin-right border" onclick="document.getElementById('dlgteams').style.display='none'; return false;">Oofbriechen</button>
-    <div class="container right-align">
-        <button class="button blue-grey margin" onclick="saveform('teams');return false;">Spaicheren</button>
-      </div>
-    </footer>
-  </div>
-</div>
\ No newline at end of file
diff --git a/app/tmpl/module/championship/toolbar.tt b/app/tmpl/module/championship/toolbar.tt
deleted file mode 100644 (file)
index 4a7fa24..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<div class="top border-bottom theme-light">
-
-<div class="bar">
-    <button class="bar-item button border blue-grey" onclick="app.loadpage('module/[% module%]/ranking.html',null);"><img src="[% abspath%]img/icons/target_white.svg" style="height: 24px;"/> Tabellen</button>
-    <button class="bar-item button border blue-grey" onclick="app.loadpage('module/[% module%]/games.html',null);"><img src="[% abspath%]img/icons/calendar_white.svg" style="height: 24px;"/>Matcher</button>
-    <button class="bar-item button border blue-grey" onclick="app.loadpage('module/[% module%]/seasons.html',null);"><img src="[% abspath%]img/icons/list_white.svg" style="height: 24px;"/>Saisonen</button>
-    <button class="bar-item button border blue-grey" onclick="app.loadpage('module/[% module%]/divisions.html',null);"><img src="[% abspath%]img/icons/list_white.svg" style="height: 24px;"/>Divisiounen</button>
-    <button class="bar-item button border blue-grey" onclick="app.loadpage('module/[% module%]/teams.html',null);"><img src="[% abspath%]img/icons/list_white.svg" style="height: 24px;"/>Teams</button>
-    
-
-    <button class="bar-item button border right red" onclick="remove();"><img src="[% abspath%]img/icons/remove_white.svg" style="height: 24px;"/></button>
-    <!-- <button class="bar-item button border right blue-grey" onclick="duplicate();"><img src="[% abspath%]img/icons/duplicate_white.svg" style="height: 24px;"/></button> -->
-    <button class="bar-item button border right blue-grey" onclick="edit();"><img src="[% abspath%]img/icons/edit_white.svg" style="height: 24px;"/></button>
-    <button class="bar-item button border right blue-grey" onclick="add();"><img src="[% abspath%]img/icons/plus_white.svg" style="height: 24px;"/></button>
-   
-</div>
-</div>
-  
-  
-  <!--<div class="bar theme-l2">
-  <a href="javascript:app.loadpage('module/[% module %]/index.html','Resultater');" class="bar-item button">Resultater</a>
-    <a href="javascript:app.loadpage('module/[% module %]/seasons.html','Saisonen');" class="bar-item button">Saisonen</a>
-    <a href="javascript:app.loadpage('module/[% module %]/divisions.html','Divisiounen');" class="bar-item button">Divisiounen</a>
-    <a href="javascript:app.loadpage('module/[% module %]/teams.html','Equipen');" class="bar-item button">Equipen</a>
-    <a href="javascript:app.loadpage('module/[% module %]/days.html','Spilldeg');" class="bar-item button">Spilldeg</a>
-    <a href="javascript:app.loadpage('module/[% module %]/games.html','Matcher');" class="bar-item button">Matcher</a>
-  </div>-->
diff --git a/app/tmpl/module/clubs/club.js b/app/tmpl/module/clubs/club.js
deleted file mode 100644 (file)
index c1b548c..0000000
+++ /dev/null
@@ -1,201 +0,0 @@
-
-
-
-
-
-function initpage() {
-  club.inittable();
-  club.initform();
-}
-let club = {
-  tbl:null,
-  current_club: "[% session.id_club %]"
-  choices: {"id_president":null,"id_secretary":null,"id_tresorier":null,"location_teams":null,"club_emails":null},
-  inittable: function() {
-    club.tbl = new Tabulator("#tbl_locations", {
-      selectable:1,
-      //selectablePersistence:false, // disable rolling selection
-      //responsiveLayout:"collapse",
-      //autoResize:true,
-      addRowPos:"top", 
-      layout:"fitDataStretch",
-      //resizableRows:true,
-      columns:[
-        {title:"Numm", field:"location"},
-        {title:"Address", field:"fulladdress",formatter:"html"},
-        {title:"Equipen", field:"teamlist"},
-      ],
-    });
-    club.gettbldata();
-  },
-  initform: function(){
-    club.choices["location_teams"] = new SlimSelect({
-      select: "#teams",
-      //[% IF session.usergroups.search('fld') != 1 %]
-      disabled : true,
-      //[% END %]
-      showSearch: false
-    });
-    club.choices["club_emails"] = new SlimSelect({
-      select: "#teams",
-      //[% IF session.usergroups.search('fld') != 1 %]
-      disabled : true,
-      //[% END %]
-      showSearch: false
-    });
-    club.getclubdata();
-  },
-  gettbldata: function(){
-    req.reqdata("POST","db.cgi",{"get":"locationlist","filter":"id_club=" + club.current_club +""},club.loadtbldata);
-  },
-  loadtbldata: function(data){
-    if (data && data.sqldata){
-      tbl.setData(data.sqldata);
-    }
-  },
-  getclubdata: function(){
-    req.reqdata("POST","db.cgi",{"get":"clublist","filter":"id=" + clubid +""},club.fillformclub);
-  },
-  fillformclub: function(data){
-    if (data && data.sqldata){
-      form.fillformbydataclass2("clubs");
-      var frm = document.querySelectorAll('.data_clubs');
-    }
-  },
-  newlocation: function(){
-    var frm = document.querySelectorAll('.data_locations');
-      for (var f in frm){
-          if ((frm[f].tagName == 'INPUT') || (frm[f].tagName == 'SELECT')){
-            if (frm[f].classList.contains("datefield")){
-              frm[f]._flatpickr.setDate("");
-            } else {
-              frm[f].value="";
-              if (frm[f].id == 'teams'){
-                locations_teams.clearStore();
-              }
-            }
-
-          } 
-      }
-    document.getElementById("dlglocation").style.display = 'block';
-    return false;
-  },
-  editlocation: function(){
-    var selectedData = tbl.getSelectedData();
-  //console.log(selectedData);
-    if (selectedData && selectedData.length > 0){
-      req.reqdata("POST","db.cgi",{"get":"locationlist","filter":"id=" + selectedData[0].id +""},showeditlocation);
-    } else {
-      showsnackbar("orange","Keen Spilluert ausgewielt!");
-    }
-
-    return false;
-  },
-  showeditlocation: function(data){
-    if (data && data.sqldata){
-      var frm = document.querySelectorAll('.data_locations');
-      for (var f in frm){
-      //console.log(frm[f].id);
-      if (data.sqldata[0][frm[f].id]){
-        //console.log(frm[f].tagName + " " + frm[f].type + " " + frm[f].id);
-        if ((frm[f].tagName == 'INPUT') || (frm[f].tagName == 'SELECT')){
-          if (frm[f].classList.contains("datefield")){
-            frm[f]._flatpickr.setDate(data.sqldata[0][frm[f].id]);
-            //frm[f].flatpickr.setDate(data.sqldata[0][frm[f].id])  
-          }else {
-            frm[f].value=data.sqldata[0][frm[f].id];
-            if (frm[f].tagName == 'SELECT'){
-              frm[f].dataset.selected = data.sqldata[0][frm[f].id];
-            }
-            if (frm[f].id == 'teams'){
-              //console.log("is tagedit!");
-              locations_teams.clearStore();
-              locations_teams.setValue(JSON.parse(data.sqldata[0][frm[f].id]));
-
-            }
-          }
-          
-        } 
-      }
-
-    }
-  }
-    document.getElementById("dlglocation").style.display = 'block';
-  },
-  getclubmembers: function(){
-    req.reqdata("POST","db.cgi",{"get":"memberlist","filter":"id_club=" + clubid +" and status='aktiv'"},fillclubmembers);
-  },
-  fillclubmembers: function(data){
-    var xlist = [{"value":"","label":""}];
-    var idlist = {"":""};
-    if (data && data.sqldata){
-      for (var i in data.sqldata){
-        xlist.push({value:data.sqldata[i].id,label:data.sqldata[i].surname + ' ' + data.sqldata[i].prename});
-        idlist[data.sqldata[i].id] = data.sqldata[i].surname + ' ' + data.sqldata[i].prename
-      }
-    }
-    console.log(xlist);
-    if (document.getElementById('id_president').tagName == "SELECT"){
-      sel_id_president = new Choices('#id_president',{
-      searchEnabled: false,
-      itemSelectText: 'auswielen...',
-      choices : xlist
-    });
-    sel_id_president.setChoiceByValue(document.getElementById("id_president").dataset.selected);
-    
-  } else {
-    document.getElementById('id_president').value = idlist[document.getElementById('id_president').value];
-  }
-  if (document.getElementById('id_secretaire').tagName == "SELECT"){
-    sel_id_secretaire = new Choices('#id_secretaire',{
-      searchEnabled: false,
-      itemSelectText: 'auswielen...',
-      choices: xlist
-    });
-    sel_id_secretaire.setChoiceByValue(document.getElementById("id_secretaire").dataset.selected);
-  }else {
-    document.getElementById('id_secretaire').value = idlist[document.getElementById('id_secretaire').value];
-    
-  }
-  if (document.getElementById('id_tresorier').tagName == "SELECT"){
-    sel_id_tresorier = new Choices('#id_tresorier',{
-      searchEnabled: false,
-      itemSelectText: 'auswielen...',
-      choices: xlist
-    });
-    sel_id_tresorier.setChoiceByValue(document.getElementById("id_tresorier").dataset.selected);
-  }else {
-    document.getElementById('id_tresorier').value = idlist[document.getElementById('id_tresorier').value];
-  }
-},
-
-deletelocation: function(){
-  var selectedData = tbl.getSelectedData();
-  console.log(selectedData);
-  if (selectedData && selectedData.length > 0){
-    if (confirm("desen Spilluert wierklech läschen?")){
-      req.reqdata("POST","db.cgi",{"del":"1","ident_locations_id":selectedData[0].id},afterlocationupdate);
-      
-    }
-    
-  } else {
-    showsnackbar("orange","Keen Spilluert ausgewielt!");
-  }
-  
-  return false;
-},
-
-savelocation: function(){
-  saveform('locations',afterlocationupdate);
-  document.getElementById('dlglocation').style.display='none';
-  return false;
-},
-
-
-afterlocationupdate: function(data){
-  gettbldata();
-},
-
-
-
-}
\ No newline at end of file
diff --git a/app/tmpl/module/clubs/club.tt b/app/tmpl/module/clubs/club.tt
deleted file mode 100644 (file)
index 63d5caa..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-<div class="display-container" >
-  <div class="bar border-bottom toolbar">
-    <a class="bar-item toolbarbtn" href="[% abspath %]index.html" ><span class="icon-back"></span>zerëck</a>
-    <div class="bar-item PageHeadTitle">Club</div>
-  </div> 
-</div>
-
-[% PROCESS macro/fields.tt %]
-[% #INCLUDE "module/$module/toolbar.tt" %]
-
-
-[% puserdef = dksdb.prepare("select ml.id_user from vw_licenselist ll join members ml on (ll.id_member=ml.id) where ll.id_club=? and ml.id_user=? and ll.yearin is not null and ll.yearout is null;") %]
-[% FOREACH ruserdef = puserdef.execute(2,session.id) %]
-[% IF ruserdef.id_user == session.id %]
-  [% udef = ruserdef.id_user %]
-[% END %]
-[% END %]
-
-[% inputdisabled = 'readonly' %]
-[% IF ((session.usergroups.search('club') == 1 && udef == session.id)  || (session.usergroups.search('fld') == 1)) %]
-[% inputdisabled = '' %]
-[% END %]
-<div class="display-container" style="margin-top: 50px;">
-  <div class="row">
-    <div class="col l10">
-  <form id="frm_clubs">
-  [% fieldhidden('id','clubs','ident') %]
-  <div class="container padding-24 card margin">
-    <div class="container">
-    [% fieldeditbox('club','clubs','Numm vum Club','',inputdisabled) %]
-  </div>
-  <div class="container">
-        <h4>Spilluerter</h4>
-          <div class="container">
-          [% IF inputdisabled == '' %]
-            <button class="button blue-grey" onclick="newlocation();return false;">Neien Spilluert</button>
-            <button class="button blue-grey" onclick="editlocation();return false;">Spilluert änneren</button>
-            <button class="button red" id="btn_deletelocation" onclick="deletelocation();return false;">Spilluert läschen</button>
-          [% END %]
-          </div>
-          <div class="container">
-            <div id="tbl_locations"></div>
-          </div>
-      </div>
-  <div class="container">
-    <h4>Responsabel Memberen</h4>
-    [% fieldselectbox('id_president','clubs','President','third',inputdisabled) %]
-  [% fieldselectbox('id_secretaire','clubs','Sektretär','third',inputdisabled) %]
-  [% fieldselectbox('id_tresorier','clubs','Trésorier','third',inputdisabled) %]
-  </div>
-  <div class="container">
-      <h4>Courrier E-mail-Addressen</h4>
-      [% fieldtagbox('emails','clubs','E-Mail-Addressen fir den Courrier','',inputdisabled) %]
-      <h4>Courrier Facturations-Address</h4>
-      [% fieldeditbox('surname','clubs','Numm','half',inputdisabled) %]
-      [% fieldeditbox('prename','clubs','Virnumm','half',inputdisabled) %]
-      [% fieldeditbox('address','clubs','Address','',inputdisabled) %]
-      [% fieldeditbox('zip','clubs','CP','quarter',inputdisabled) %]
-      [% fieldeditbox('city','clubs','Uerschaft','half',inputdisabled) %]
-      [% fieldeditbox('country','clubs','Land','quarter',inputdisabled) %]
-  </div>
-  [% IF inputdisabled == '' %]
-  <div class="container right-align">
-      <button class="button blue-grey margin" onclick="saveform('clubs');return false;">Spaicheren</button>
-    </div> 
-    [% END %]
-  </div>
-  </form>
-  </div>
-  <div class="col l6">
-      
-  </div>
-  </div>
-
-</div>
-<!-- DLG location -->
-<div id="dlglocation" class="modal">
-
-  <div class="modal-content animate-top card-4">
-    <header class="container"> 
-      <span onclick="document.getElementById('dlglocation').style.display='none'; return false;" 
-      class="button display-topright">&times;</span>
-      <h2>Spilluert</h2>
-    </header>
-<div class="container">
-            <form id="frm_locations">
-            <h5>Spilluert fir</h5>
-            [% fieldtagbox('teams','locations','Numm vun den Équipe(n)','','') %]
-              <br/>
-              [% fieldhidden('id','locations','ident') %]
-              [% fieldhidden('id_club','locations','') %]
-              [% fieldeditbox('location','locations','Numm','','') %]
-              [% fieldeditbox('address','locations','Address','','') %]
-              [% fieldeditbox('zip','locations','CP','quarter','') %]
-              [% fieldeditbox('city','locations','Uerschaft','half','') %]
-              [% fieldeditbox('country','locations','Land','quarter','') %]
-              [% fieldeditbox('phone','locations','Telefon','','') %]
-             
-              </form>
-          </div>
-<footer class="container right-align padding-16">
-       <button class="button theme-light margin-right border" onclick="document.getElementById('dlglocation').style.display='none'; return false;">oofbriechen</button>
-      <button class="button blue-grey margin" onclick="savelocation();return false;">Spaicheren</button>
-                  
-    </footer>
-  </div>
-</div>
-<!-- DLG location END -->
-<script type="text/javascript" src="[% pagename %].js?v=[% vstamp %]"></script>
\ No newline at end of file
diff --git a/app/tmpl/module/clubs/clubmembers.js b/app/tmpl/module/clubs/clubmembers.js
deleted file mode 100644 (file)
index 4824d5c..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-function initpage(){
-  clubmembers.inittable();
-}
-
-let clubmembers ={
-  tbl: null,
-  current_club: "[% session.id_club %]",
-  inittable: function(){
-    clubmembers.tbl = new Tabulator("#tbl_clubmembers", {
-      height: "calc(100vh - 56px)",
-      selectable:1,
-      //selectablePersistence:false, // disable rolling selection
-      //responsiveLayout:"collapse",
-      //autoResize:true,
-      //addRowPos:"top", 
-      layout:"fitDataStretch",
-      resizableRows:true,
-      columnHeaderSortMulti:false,
-      rowClick:function(e, row){
-        //var data = row.getData();
-        //console.log(data);
-        //idmember=data.id;
-        //console.log(idmember);
-        //loadmemberdata(idmember);
-        //e - the click event object
-        //row - row component
-        },
-      columns:[
-        // {title:"Club", field:"club", sorter:"string",formatter:"html",headerFilter:"input"},
-        {title:"Numm", field:"surname", sorter:"string"},
-        {title:"Virnumm", field:"prename", sorter:"string"},
-        {title:"Lizenz", field:"license", sorter:"string"},
-        {title:"E-Mail", field:"username", sorter:"string"},
-
-        // {title:"Status", field:"status", sorter:"string",headerFilter:"input"},
-      ],
-      //autoColumns:true,
-  });
-    clubmembers.gettbldata();
-  },
-  gettbldata: function(){
-    req.reqdata("POST","db.cgi",{"get":"memberlist","filter":"id_club="+ clubmembers.current_club +" and status='aktiv' "},clubmembers.loadtbldata);
-  },
-  loadtbldata: function(data){
-    if (data && data.sqldata){
-      clubmembers.tbl.setData(data.sqldata);
-    }
-  },
-  
-  initform: function(){
-
-  }
-}
\ No newline at end of file
diff --git a/app/tmpl/module/clubs/clubmembers.tt b/app/tmpl/module/clubs/clubmembers.tt
deleted file mode 100644 (file)
index 137e74f..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<div class="display-container" >
-  <div class="bar border-bottom toolbar">
-    <a class="bar-item toolbarbtn" href="[% abspath %]index.html" ><span class="icon-back"></span>zerëck</a>
-    <div class="bar-item PageHeadTitle">Club-Memberen</div>
-  </div> 
-</div>
-<div id="tbl_clubmembers"></div>
-<script type="text/javascript" src="[% pagename %].js?v=[% vstamp %]"></script>
\ No newline at end of file
diff --git a/app/tmpl/module/clubs/clubs.js b/app/tmpl/module/clubs/clubs.js
deleted file mode 100644 (file)
index 12e871f..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-function initpage(){
-  
-}
\ No newline at end of file
diff --git a/app/tmpl/module/clubs/clubs.tt b/app/tmpl/module/clubs/clubs.tt
deleted file mode 100644 (file)
index 0650167..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<div class="display-container" >
-  <div class="bar border-bottom toolbar">
-    <a class="bar-item toolbarbtn" href="[% abspath %]index.html" ><span class="icon-back"></span>zerëck</a>
-    <div class="bar-item PageHeadTitle">Clubs</div>
-  </div> 
-</div>
-<div id="tbl_clubs"></div>
-<script type="text/javascript" src="[% pagename %].js?v=[% vstamp %]"></script>
\ No newline at end of file
diff --git a/app/tmpl/module/clubs/cupreg.js b/app/tmpl/module/clubs/cupreg.js
deleted file mode 100644 (file)
index a8aa1cb..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-function initpage(){
-  
-}
-let cupreg = {
-  
-}
\ No newline at end of file
diff --git a/app/tmpl/module/clubs/cupreg.tt b/app/tmpl/module/clubs/cupreg.tt
deleted file mode 100644 (file)
index 36540ef..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<div class="display-container" >
-  <div class="bar border-bottom toolbar">
-    <a class="bar-item toolbarbtn" href="[% abspath %]index.html" ><span class="icon-back"></span>zerëck</a>
-    <div class="bar-item PageHeadTitle">Club-Umeldung Coupe (Saison YYYY-YYYY)</div>
-  </div> 
-</div>
-<script type="text/javascript" src="[% pagename %].js?v=[% vstamp %]"></script>
\ No newline at end of file
diff --git a/app/tmpl/module/clubs/fldmembers.js b/app/tmpl/module/clubs/fldmembers.js
deleted file mode 100644 (file)
index 6f97161..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-function initpage(){
-  clubmembers.inittable();
-}
-
-let clubmembers ={
-  tbl: null,
-  //current_club: "[% session.id_club %]",
-  inittable: function(){
-    clubmembers.tbl = new Tabulator("#tbl_fldmembers", {
-      height: "calc(100vh - 56px)",
-      selectable:1,
-      //selectablePersistence:false, // disable rolling selection
-      //responsiveLayout:"collapse",
-      //autoResize:true,
-      //addRowPos:"top", 
-      layout:"fitDataStretch",
-      resizableRows:true,
-      columnHeaderSortMulti:false,
-      rowClick:function(e, row){
-        //var data = row.getData();
-        //console.log(data);
-        //idmember=data.id;
-        //console.log(idmember);
-        //loadmemberdata(idmember);
-        //e - the click event object
-        //row - row component
-        },
-      columns:[
-        {title:"Club", field:"club", sorter:"string",formatter:"html",headerFilter:"input"},
-        {title:"Numm", field:"surname", sorter:"string",headerFilter:"input"},
-        {title:"Virnumm", field:"prename", sorter:"string",headerFilter:"input"},
-        {title:"Lizenz", field:"license", sorter:"string",headerFilter:"input"},
-        {title:"E-Mail", field:"username", sorter:"string"},
-        {title:"Status", field:"status", sorter:"string",headerFilter:"input"},
-      ],
-      //autoColumns:true,
-  });
-    clubmembers.gettbldata();
-  },
-  gettbldata: function(){
-    req.reqdata("POST","db.cgi",{"get":"memberlist"},clubmembers.loadtbldata);
-  },
-  loadtbldata: function(data){
-    if (data && data.sqldata){
-      clubmembers.tbl.setData(data.sqldata);
-    }
-  },
-  
-  initform: function(){
-
-  }
-}
\ No newline at end of file
diff --git a/app/tmpl/module/clubs/fldmembers.tt b/app/tmpl/module/clubs/fldmembers.tt
deleted file mode 100644 (file)
index f581aa0..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<div class="display-container" >
-  <div class="bar border-bottom toolbar">
-    <a class="bar-item toolbarbtn" href="[% abspath %]index.html" ><span class="icon-back"></span>zerëck</a>
-    <div class="bar-item PageHeadTitle">Club-Memberen</div>
-  </div> 
-</div>
-<div id="tbl_fldmembers"></div>
-<script type="text/javascript" src="[% pagename %].js?v=[% vstamp %]"></script>
\ No newline at end of file
diff --git a/app/tmpl/module/clubs/seasonclubreg.js b/app/tmpl/module/clubs/seasonclubreg.js
deleted file mode 100644 (file)
index 078b8f5..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-function initpage(){
-
-}
-
-let clubreg = {
-  
-}
\ No newline at end of file
diff --git a/app/tmpl/module/clubs/seasonclubreg.tt b/app/tmpl/module/clubs/seasonclubreg.tt
deleted file mode 100644 (file)
index ffa342e..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<div class="display-container" >
-  <div class="bar border-bottom toolbar">
-    <a class="bar-item toolbarbtn" href="[% abspath %]index.html" ><span class="icon-back"></span>zerëck</a>
-    <div class="bar-item PageHeadTitle">Club-Umeldung Saison YYYY-YYYY</div>
-  </div> 
-</div>
-<script type="text/javascript" src="[% pagename %].js?v=[% vstamp %]"></script>
\ No newline at end of file
diff --git a/app/tmpl/module/documents.tt b/app/tmpl/module/documents.tt
deleted file mode 100644 (file)
index 2c84b0e..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-[% PROCESS macro/fields.tt %]
-[% USE date %]
-[% vstamp=date.format(date.now, '%d%m%Y%H') %]
-<div class="display-container animate-opacity">
-<div class="bar border-bottom toolbar">
-  <a class="bar-item toolbarbtn" href="[% abspath %]index.html" ><span class="icon-back"></span>zerëck</a>
-  <div class="bar-item PageHeadTitle">Dokumenter</div>
-  [% IF session.usergroups.search('fld') == 1 %]
-     <button class="bar-item toolbarbtn right" onclick="documents.add();"><span class="icon-plus" stlye="font-size: 20px;"></span>nei</button>
-     [% END %]
-</div> 
-</div>
-<div class="display-container" style="display: block; height: calc(100vh - 65px); overflow-y: scroll;">
-  <ul class="ul">
-      [% FOREACH doc=dksdb.query("select * from vw_documentlist order by filename;") %]
-      <li class="bar ">
-        [% IF session.usergroups.search('fld') == 1 %]
-          <button onclick="documents.remove('[% doc.id %]');" 
-          class="bar-item toolbarbtn right text-red"><span class="icon-trash" style="width: 20px;"/></span>läschen</button>
-          <button onclick="documents.edit('[% doc.id %]');" 
-          class="bar-item toolbarbtn right text-black"><span class="icon-edit" style="width: 20px;"/></span>änneren</button>
-        [% END %]
-        <a href="../data/[% doc.folder %]/[% doc.filename %]?v=[% vstamp %]" class="bar-item"  target="_blank"><img src="[% IF doc.mimetype == 'application/pdf' %][% doc.thumbnail %][% ELSE %][% abspath %][% staticpath %]img/icons/file/[% doc.filetype %].png[% END %]" style="margin-right: 15px; width: 64px;"/> </a>
-             
-        <div class="bar-item">
-          <a href="data/[% doc.folder %]/[% doc.filename %]?v=[% vstamp %]" target="_blank" class="large">[% doc.filename %]</a><br/>
-          [% doc.description %]
-      </div>
-    </li>
-      [% END %]
-    </ul>  
-</div>
-
-[% INCLUDE block/dlguploadfile.tt %]
-<div id="dlgeditdocument" class="modal">
-
-  <div class="modal-content animate-top card-4">
-    <header class="container"> 
-      <span onclick="document.getElementById('dlgeditdocument').style.display='none'; return false;" 
-       class="button display-topright">&times;</span>
-      <h3 id="dlgeditdocument_title">Fichier éditéieren</h3>
-    </header>
-    <div class="container">
-      <form id="frm_editdocument">
-        [% fieldhidden("id","documents",'ident','') %]
-        [% fieldeditbox("filename","documents",'Fichier','','readonly') %]
-        [% fieldrichtextarea("description","documents",'Beschreiwung','','200px;','') %]
-      </form>
-    </div>
-    <footer class="container right-align padding-16">
-    <button class="button theme-light margin-right border" onclick="document.getElementById('dlgeditdocument').style.display='none'; return false;">Oofbriechen</button>
-    <button class="button blue-grey margin right-align" onclick="saveform('editdocument',closeeditdialog);return false;">Spaicheren</button>
-
-    </footer>
-  </div>
-</div>
-<script type="text/javascript" src="documents/[% pagename %].js?v=[% vstamp %]"></script>
\ No newline at end of file
diff --git a/app/tmpl/module/documents/documents.js b/app/tmpl/module/documents/documents.js
deleted file mode 100644 (file)
index 4f28825..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-function initpage(){
-  documents.init();
-}
-
-let documents = {
-  tbl: null,
-  init: function(){
-
-    tinymce.init({
-      selector: '.richeditarea',
-      branding: false,
-      menubar:false,
-      statusbar: false,
-      forced_root_block : '',
-      plugins: 'searchreplace autolink directionality visualblocks visualchars advlist lists textcolor colorpicker textpattern',
-      toolbar: 'bold italic underline strikethrough forecolor | link | alignleft aligncenter alignright alignjustify  | numlist bullist outdent indent  | removeformat',
-      image_advtab: true
-        //   //console.log(editor.getContent());
-    });
-    documents.tbl = new Tabulator("#tbl_documents", {
-      height: "calc(100vh - 125px)",
-      selectable:1,
-      selectablePersistence:false, // disable rolling selection
-      // responsiveLayout:"collapse",
-      autoResize:true,
-      layout:"fitDataFill",
-      resizableRows:true,
-      columnHeaderSortMulti:false,
-      columns:[
-        {title:"Thumb", field:"thumbnail",headerSort: false, formatter:"image", formatterParams:{height: 64}},
-        {title:"Fichier", field:"filename", headerSort: false, formatter:"link"},
-        {title:"Beschreiwung", field:"description",headerSort: false, formatter: "html"}
-      ]
-    });
-    //documents.gettbldata();
-  },
-  // gettbldata: function (){
-  //   req.reqdata("POST","db.cgi",{"get":"documentlist","filter":"folder='documents' "},documents.loadtbldata);
-  // },
-  // loadtbldata:function (data){
-  //   //console.logconsole.log(data)
-  //   if (data && data.sqldata){
-  //     documents.tbl.setData(data.sqldata);
-  //   }
-  // },
-  afterformsaved : function (){
-    app.loadpage('module/[% module %]/index.html');
-    return false;
-  },
-  remove: function(id){
-    if (confirm("Bass du secher dass du dëst Document läschen wëlls?")){
-    req.reqdata("POST","db.cgi",{"del":"1","ident_documents_id":id},documents.closeeditdialog);
-  }
-  return false;
-  },
-  edit: function(id){
-    req.reqdata("POST","db.cgi",{"get":"documents","filter":"id='"+ id + "'"},documents.openedit);
-    return false;
-  },
-  add: function(){
-    opendlgfileupload('documents','download_document','');
-    return false;
-  },
-  openedit: function(data){
-  //console.log(data);
-  if (data && data.sqldata){
-    var frm = document.querySelectorAll('.data_documents');
-    for (var f in frm){
-      //console.log(frm[f].classList);
-      if (data.sqldata[0][frm[f].id]){
-        if ((frm[f].tagName == 'INPUT') || (frm[f].tagName == 'SELECT') || frm[f].tagName == 'TEXTAREA'){
-          if (frm[f].classList.contains("datefield")){
-            frm[f]._flatpickr.setDate(data.sqldata[0][frm[f].id]);
-          } else if (frm[f].classList.contains("richeditarea")){
-            //console.log(frm[f].id + " is richeditarea");
-            tinymce.get(frm[f].id).setContent(data.sqldata[0][frm[f].id]);
-          } else {
-            frm[f].value=data.sqldata[0][frm[f].id];
-          } 
-          
-        } 
-      }
-    }
-    document.getElementById('dlgeditdocument').style.display='block'; 
-  }
-  return false;
-},
-closeeditdialog: function(){
-  document.getElementById('dlgeditdocument').style.display='none';
-  app.loadpage('module/[% module %]/index.html');
-},
-thumbformatter: function(cell, formatterParams, onRendered){
-  if (cell.getValue()){
-    return '<img src="' + cell.getValue() + '" style="width: 64px;"/>';
-  }
-  return '';
-}
-}
\ No newline at end of file
diff --git a/app/tmpl/module/documents/index.js b/app/tmpl/module/documents/index.js
deleted file mode 100644 (file)
index 0895172..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-function initpage(){
-  tinymce.init({
-    selector: '.richeditarea',
-    branding: false,
-    menubar:false,
-    statusbar: false,
-    forced_root_block : '',
-    plugins: 'searchreplace autolink directionality visualblocks visualchars advlist lists textcolor colorpicker textpattern',
-    toolbar: 'bold italic underline strikethrough forecolor | link | alignleft aligncenter alignright alignjustify  | numlist bullist outdent indent  | removeformat',
-    image_advtab: true
-      //   //console.log(editor.getContent());
-  });
-}
-
-afterformsaved = function (){
-  parent.admin.loadpage('module/[% module %]/index.html');
-  return false;
-}
-
-function deletedocument(id){
-  if (confirm("Bass du secher dass du dëst Document läschen wëlls?")){
-    req.reqdata("POST","db.cgi",{"del":"1","ident_documents_id":id},closeeditdialog);
-  }
-  return false;
-}
-
-function editdocument(id){
-  req.reqdata("POST","db.cgi",{"get":"documents","filter":"id="+ id},openedit);
-  return false;
-}
-
-function openedit(data){
-  //console.log(data);
-  if (data && data.sqldata){
-    var frm = document.querySelectorAll('.data_documents');
-    for (var f in frm){
-      //console.log(frm[f].classList);
-      if (data.sqldata[0][frm[f].id]){
-        if ((frm[f].tagName == 'INPUT') || (frm[f].tagName == 'SELECT') || frm[f].tagName == 'TEXTAREA'){
-          if (frm[f].classList.contains("datefield")){
-            frm[f]._flatpickr.setDate(data.sqldata[0][frm[f].id]);
-          } else if (frm[f].classList.contains("richeditarea")){
-            //console.log(frm[f].id + " is richeditarea");
-            tinymce.get(frm[f].id).setContent(data.sqldata[0][frm[f].id]);
-          } else {
-            frm[f].value=data.sqldata[0][frm[f].id];
-          } 
-          
-        } 
-      }
-    }
-    document.getElementById('dlgeditdocument').style.display='block'; 
-  }
-  return false;
-}
-
-function closeeditdialog(){
-  document.getElementById('dlgeditdocument').style.display='none';
-  parent.admin.loadpage('module/[% module %]/index.html');
-}
\ No newline at end of file
diff --git a/app/tmpl/module/events.tt b/app/tmpl/module/events.tt
deleted file mode 100644 (file)
index d362f2c..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-[% PROCESS macro/fields.tt %]
-<div class="display-container animate-opacity panel" id="pnl_events">
-  <div class="bar border-bottom toolbar">
-    <a class="bar-item toolbarbtn" href="[% abspath %]index.html" ><span class="icon-back"></span>zerëck</a>
-    <div class="bar-item PageHeadTitle">Event-Kalenner</div>
-    <button class="bar-item toolbarbtn center" onclick="events.show();"><span class="icon-calendar" stlye="font-size: 20px;"></span>Events</button>
-    <!--<button class="bar-item toolbarbtn center" onclick="seasons.show();"><span class="icon-season" stlye="font-size: 20px;"></span>Saisonen</button>-->
-    <button class="bar-item toolbarbtn center" onclick="vacancies.show();"><span class="icon-Vacancy" stlye="font-size: 20px;"></span>Vakanzen</button>
-    <button class="bar-item toolbarbtn right text-red" onclick="events.remove();"><span class="icon-trash" stlye="font-size: 20px;"></span>läschen</button>
-    <button class="bar-item toolbarbtn right" onclick="events.edit();"><span class="icon-edit" stlye="font-size: 20px;"></span>edit.</button>
-     <button class="bar-item toolbarbtn right" onclick="events.add();"><span class="icon-add" stlye="font-size: 20px;"></span>nei</button>
-  </div>
-  <div id="tbl_calendar"></div>
-</div>
-<div class="display-container animate-opacity panel" id="pnl_vacancies" style="display: none;">
-  <div class="bar border-bottom toolbar">
-    <a class="bar-item toolbarbtn" href="[% abspath %]index.html" ><span class="icon-back"></span>zerëck</a>
-    <div class="bar-item PageHeadTitle">Vakanzen-Kalenner</div>
-    <button class="bar-item toolbarbtn center" onclick="events.show();"><span class="icon-calendar" stlye="font-size: 20px;"></span>Events</button>
-    <!--<button class="bar-item toolbarbtn center" onclick="seasons.show();"><span class="icon-season" stlye="font-size: 20px;"></span>Saisonen</button>-->
-    <button class="bar-item toolbarbtn center" onclick="vacancies.show();"><span class="icon-Vacancy" stlye="font-size: 20px;"></span>Vakanzen</button>
-    <button class="bar-item toolbarbtn right text-red" onclick="vacancies.remove();"><span class="icon-trash" stlye="font-size: 20px;"></span>läschen</button>
-    <button class="bar-item toolbarbtn right" onclick="vacancies.edit();"><span class="icon-edit" stlye="font-size: 20px;"></span>edit.</button>
-     <button class="bar-item toolbarbtn right" onclick="vacancies.add();"><span class="icon-add" stlye="font-size: 20px;"></span>nei</button>
-  </div>
-  <div id="tbl_vacancies"></div>
-</div>
-
-
-<div id="dlgevents" class="modal">
-  <div class="modal-content animate-top card-4">
-    <header class="container moduletoolbar"> 
-      <span onclick="document.getElementById('dlgevents').style.display='none'; return false;" 
-       class="button display-topright"><span class="icon-close"></span></span>
-      <h3 id="dlgpublish_title">Event</h3>
-    </header>
-    <div class="container">
-      <form id="frm_events">
-        [% fieldhidden("id","events","ident",'') %]
-        [% fieldselectbox("season","events","Saison",'half','','') %]
-        [% fieldselectbox("id_eventgroup","events","Kategorie",'half','','') %]
-        [% fieldeditbox("title","events","Titel",'','','') %]
-        [% fielddatebox("startdate","events","Datum vun",'half','','') %]
-        [% fielddatebox("enddate","events","Datum bis",'half','','') %]
-        [% fieldrichtextarea("description","events","Beschreiwung",'','','150px','') %]
-      </form>
-    </div>
-    <footer class="container right-align dark-grey" style="margin-top: 10px;">
-        <button class="button theme-light border" onclick="document.getElementById('dlgevents').style.display='none'; return false;">Oofbriechen</button>
-        <button class="button blue-grey margin right-align" onclick="saveform('events',closeeditdialog);return false;">spaicheren</button>
-    </footer>
-  </div>
-</div>
-<script type="text/javascript" src="events/[% pagename %].js?v=[% vstamp %]"></script>
-<script type="text/javascript" src="events/vacancies.js?v=[% vstamp %]"></script>
\ No newline at end of file
diff --git a/app/tmpl/module/events/events.js b/app/tmpl/module/events/events.js
deleted file mode 100644 (file)
index 6e61572..0000000
+++ /dev/null
@@ -1,229 +0,0 @@
-
-let tbl = null;
-let sel_id_eventgroup = null;
-
-function initpage(){
-  
-   events.inittable();
-   events.initform();
-}
-
-let events = {
-  tbl: null,
-  choices:{"id_eventgroup":{},"id_season":{}},
-  initform: function(){
-    flatpickr(".datefield",{altInput: true,
-      altFormat: "d.m.Y",
-      dateFormat: "Y-m-d",
-      "locale": "fr",
-    });
-    tinymce.init({
-      selector: '.richeditarea',
-      plugins: 'paste importcss searchreplace autolink directionality code visualblocks visualchars link charmap  advlist lists  textpattern noneditable charmap emoticons',
-      
-      menubar: false,
-      statusbar: false,
-      toolbar: 'undo redo | bold italic underline strikethrough | fontsizeselect | alignleft aligncenter alignright alignjustify | numlist bullist | forecolor removeformat | charmap emoticons |  link',
-      toolbar_sticky: true,
-      height: 150,
-      language: 'de',
-      content_css: [
-        '[% abspath %][% staticpath %]css/theme.css'
-      ],
-      forced_root_block : '',
-      branding: false,
-      importcss_append: true,
-      contextmenu: "link",
-     });
-    // sel_id_eventgroup = new Choices('#id_eventgroup',{
-    //   searchEnabled: false,
-    //   itemSelectText: 'auswielen...',
-    //   removeItemButton: true,
-    //   choices :[]
-    // });
-    events.getseasons();
-    events.getcategories();
-  },
-  inittable: function(){
-    
-    events.tbl = new Tabulator("#tbl_calendar", {
-      headerFilterPlaceholder:"filter...",
-      height: "calc(100vh - 125px)",
-      selectable:1,
-      selectablePersistence:false, // disable rolling selection
-      // responsiveLayout:"collapse",
-      autoResize:true,
-      layout:"fitColumns",
-      resizableRows:true,
-      columnHeaderSortMulti:false,
-      columns:[
-        {title:"Saison", field:"season", sorter:"string",headerFilter:"input", width: 110},
-        {title:"Kategorie", field:"groupname", sorter:"string",headerFilter:"input",width: 130},
-        {title:"vun", field:"dspstartdate", sorter:"string",headerFilter:"input", width: 115},
-        {title:"bis", field:"dspenddate", sorter:"string",headerFilter:"input", width: 115},
-        {title:"Titel", field:"title", sorter:"string",headerFilter:"input"},
-        {title:"Beschreiwung", field:"description",formatter:"html", sorter:"string",headerFilter:"input"},
-      ],
-      initialHeaderFilter:[
-        {field:"season", value:"[% season %]"} //set the initial value of the header filter to "red"
-    ]
-  
-      //autoColumns:true,
-  });
-    
-    events.gettbldata();
-  },
-  gettbldata: function (){
-    req.reqdata("POST","db.cgi",{"get":"eventlist"},events.loadtbldata);
-  },
-  loadtbldata:function (data){
-    //console.logconsole.log(data)
-    if (data && data.sqldata){
-      events.tbl.setData(data.sqldata);
-    }
-  },
-  closeeditdialog: function(){
-    gettbldata();
-    document.getElementById('dlgevents').style.display='none';
-    gettbldata();
-  },
-  add:function (){
-    let frm = document.querySelectorAll('.data_events');
-        for (let f in frm){
-            if ((frm[f].tagName == 'INPUT') || (frm[f].tagName == 'SELECT') || (frm[f].tagName == 'TEXTAREA')){
-              if (frm[f].classList.contains("datefield")){
-                if (frm[f]._flatpickr){
-                  frm[f]._flatpickr.clear();
-                }
-              } else if (frm[f].classList.contains("richeditarea")){
-                //console.log(frm[f].id + " is richeditarea");
-                tinymce.get(frm[f].id).setContent("");
-              }else {
-                frm[f].value="";
-  
-              }
-  
-            } 
-        }
-    
-    
-    document.getElementById("dlgevents").style.display = 'block';
-  
-  },
-  edit: function (){
-    let udata = events.tbl.getSelectedData();
-    let uid = udata[0].id;
-    //console.log(uid);
-    req.reqdata("POST","db.cgi",{"get":"eventlist","filter":"id=" + uid},events.fillformevents);
-  
-  },
-  
-  fillformevents:function (data){
-    //console.log(data);
-    if (data && data.sqldata){
-      let frm = document.querySelectorAll('.data_events');
-      for (let f in frm){
-        //console.log(frm[f].classList);
-        if (data.sqldata[0][frm[f].id]){
-          if ((frm[f].tagName == 'INPUT') || (frm[f].tagName == 'SELECT') || frm[f].tagName == 'TEXTAREA'){
-            if (frm[f].classList.contains("datefield")){
-              frm[f]._flatpickr.setDate(data.sqldata[0][frm[f].id]);
-            } else if (frm[f].classList.contains("richeditarea")){
-             // console.log(frm[f].id + " is richeditarea");
-              tinymce.get(frm[f].id).setContent(data.sqldata[0][frm[f].id]);
-            } else if (frm[f].id == 'id_eventgroup'){
-              sel_id_eventgroup.setChoiceByValue(data.sqldata[0][frm[f].id]);
-            }
-            else {
-              frm[f].value=data.sqldata[0][frm[f].id];
-            } 
-            
-          } 
-        }
-      }
-      document.getElementById("dlgevents").style.display = 'block';
-  
-  
-    }
-  },
-  
-  
-  remove: function (){
-    let udata = events.tbl.getSelectedData();
-    let uid = udata[0].id;
-    //console.log(tbl.getSelectedData());
-    if (confirm("Bass du secher dass déi ausgewielten Event läschen wells?")){
-      req.reqdata("POST","db.cgi",{"del":"1","ident_event_id":udata[0].id},events.gettbldata);
-    }
-  },
-  getseasons:function (){
-    req.reqdata("POST","db.cgi",{"get":"seasons"},events.fillseasons);
-    return false;
-  },
-  
-  fillseasons: function (data){
-  
-    let seasonlist = [];
-    let seasonidlist = {"":""};
-    if (data && data.sqldata){
-      for (let i in data.sqldata){
-        seasonlist.push({value:data.sqldata[i].season,label:data.sqldata[i].season});
-        seasonidlist[data.sqldata[i].id] = data.sqldata[i].season;
-      }
-    }
-    if (document.getElementById('season').tagName == "SELECT"){
-      sel_id_season = new Choices('#season',{
-        searchEnabled: false,
-        itemSelectText: 'auswielen...',
-        choices : seasonlist,
-        shouldSort: false,
-        shouldSortItems: false
-      });
-      sel_id_season.setChoiceByValue(document.getElementById("season").dataset.selected);
-      
-    } else {
-      document.getElementById('season').value = seasonidlist[document.getElementById('season').value];
-    }
-    return false;
-  },
-  
-  getcategories: function (){
-    req.reqdata("POST","db.cgi",{"get":"eventgroups"},events.fillcategories);
-    return false;
-  },
-  
-  fillcategories:function (data){
-  
-    let catlist = [];
-    if (data && data.sqldata){
-      for (let i in data.sqldata){
-        catlist.push({value:data.sqldata[i].id,label:data.sqldata[i].groupname});
-      }
-    }
-    sel_id_eventgroup.setChoices(catlist, 'value', 'label', true);
-  
-    return false;
-  }
-}
-
-// let seasons = {
-//   tbl: null,
-//   init: function(){
-
-//   },
-//   gettbldata: function (){
-//     req.reqdata("POST","db.cgi",{"get":"seasons"},seasons.loadtbldata);
-//   },
-//   loadtbldata:function (data){
-//     //console.logconsole.log(data)
-//     if (data && data.sqldata){
-//       events.tbl.setData(data.sqldata);
-//     }
-//   },
-
-// }
-
-
-
-
-
diff --git a/app/tmpl/module/events/vacancies.js b/app/tmpl/module/events/vacancies.js
deleted file mode 100644 (file)
index 148225e..0000000
+++ /dev/null
@@ -1,204 +0,0 @@
-
-
-let vacanies = {
-  
-}
-// var tbl = null;
-// var sel_id_eventgroup = null;
-// function initpage(){
-//   flatpickr(".datefield",{altInput: true,
-//     altFormat: "d.m.Y",
-//     dateFormat: "Y-m-d",
-//     "locale": "fr",
-//   });
-//   sel_id_eventgroup = new Choices('#id_eventgroup',{
-//     searchEnabled: false,
-//     itemSelectText: 'auswielen...',
-//     removeItemButton: true,
-//     choices :[]
-//   });
-
-//   tinymce.init({
-//     selector: '.richeditarea',
-//     plugins: 'paste importcss searchreplace autolink autoresize directionality code visualblocks visualchars link charmap  advlist lists  textpattern noneditable charmap emoticons',
-    
-//     menubar: false,
-//     statusbar: false,
-//     toolbar: 'undo redo | bold italic underline strikethrough | fontsizeselect | alignleft aligncenter alignright alignjustify | numlist bullist | forecolor removeformat | charmap emoticons |  link',
-//     toolbar_sticky: true,
-//     min_height: 350,
-//     language: 'de',
-//     content_css: [
-//       '[% abspath %]css/w3pro.css'
-//     ],
-//     forced_root_block : '',
-//     branding: false,
-//     importcss_append: true,
-//     contextmenu: "link",
-//    });
-  
-//   tbl = new Tabulator("#tbl_calendar", {
-//     headerFilterPlaceholder:"filter...",
-//     height: "93vh",
-//     selectable:1,
-//     selectablePersistence:false, // disable rolling selection
-//     responsiveLayout:"collapse",
-//     autoResize:true,
-//     layout:"fitColumns",
-//     resizableRows:true,
-//     columnHeaderSortMulti:false,
-//     columns:[
-//       {title:"Saison", field:"season", sorter:"string",headerFilter:"input", width: 110},
-//       {title:"Kategorie", field:"groupname", sorter:"string",headerFilter:"input",width: 130},
-//       {title:"vun", field:"dspstartdate", sorter:"string",headerFilter:"input", width: 115},
-//       {title:"bis", field:"dspenddate", sorter:"string",headerFilter:"input", width: 115},
-//       {title:"Titel", field:"title", sorter:"string",headerFilter:"input"},
-//       {title:"Beschreiwung", field:"description",formatter:"html", sorter:"string",headerFilter:"input"},
-//     ],
-//     initialHeaderFilter:[
-//       {field:"season", value:"[% season %]"} //set the initial value of the header filter to "red"
-//   ]
-
-//     //autoColumns:true,
-// });
-// getseasons();
-// getcategories();
-// gettbldata();
-// }
-
-// function gettbldata(){
-//   req.reqdata("POST","db.cgi",{"get":"eventlist"},loadtbldata);
-// }
-
-// function loadtbldata(data){
-//   //console.logconsole.log(data)
-//   if (data && data.sqldata){
-//     tbl.setData(data.sqldata);
-//   }
-// }
-
-// function closeeditdialog(){
-//   gettbldata();
-//   document.getElementById('dlgevents').style.display='none';
-//   gettbldata();
-// }
-
-// function add(){
-//   var frm = document.querySelectorAll('.data_events');
-//       for (var f in frm){
-//           if ((frm[f].tagName == 'INPUT') || (frm[f].tagName == 'SELECT') || (frm[f].tagName == 'TEXTAREA')){
-//             if (frm[f].classList.contains("datefield")){
-//               if (frm[f]._flatpickr){
-//                 frm[f]._flatpickr.clear();
-//               }
-//             } else if (frm[f].classList.contains("richeditarea")){
-//               //console.log(frm[f].id + " is richeditarea");
-//               tinymce.get(frm[f].id).setContent("");
-//             }else {
-//               frm[f].value="";
-
-//             }
-
-//           } 
-//       }
-  
-  
-//   document.getElementById("dlgevents").style.display = 'block';
-
-// }
-
-// function edit(){
-//   var udata = tbl.getSelectedData();
-//   var uid = udata[0].id;
-//   //console.log(uid);
-//   req.reqdata("POST","db.cgi",{"get":"eventlist","filter":"id=" + uid},fillformevents);
-
-// }
-
-// function fillformevents(data){
-//   //console.log(data);
-//   if (data && data.sqldata){
-//     var frm = document.querySelectorAll('.data_events');
-//     for (var f in frm){
-//       //console.log(frm[f].classList);
-//       if (data.sqldata[0][frm[f].id]){
-//         if ((frm[f].tagName == 'INPUT') || (frm[f].tagName == 'SELECT') || frm[f].tagName == 'TEXTAREA'){
-//           if (frm[f].classList.contains("datefield")){
-//             frm[f]._flatpickr.setDate(data.sqldata[0][frm[f].id]);
-//           } else if (frm[f].classList.contains("richeditarea")){
-//            // console.log(frm[f].id + " is richeditarea");
-//             tinymce.get(frm[f].id).setContent(data.sqldata[0][frm[f].id]);
-//           } else if (frm[f].id == 'id_eventgroup'){
-//             sel_id_eventgroup.setChoiceByValue(data.sqldata[0][frm[f].id]);
-//           }
-//           else {
-//             frm[f].value=data.sqldata[0][frm[f].id];
-//           } 
-          
-//         } 
-//       }
-//     }
-//     document.getElementById("dlgevents").style.display = 'block';
-
-
-//   }
-// }
-
-
-// function remove(){
-//   var udata = tbl.getSelectedData();
-//   var uid = udata[0].id;
-//   //console.log(tbl.getSelectedData());
-//   if (confirm("Bass du secher dass déi ausgewielten Event läschen wells?")){
-//     req.reqdata("POST","db.cgi",{"del":"1","ident_event_id":udata[0].id},gettbldata);
-//   }
-// }
-
-// function getseasons(){
-//   req.reqdata("POST","db.cgi",{"get":"seasons"},fillseasons);
-//   return false;
-// }
-
-// function fillseasons(data){
-
-//   var seasonlist = [];
-//   var seasonidlist = {"":""};
-//   if (data && data.sqldata){
-//     for (var i in data.sqldata){
-//       seasonlist.push({value:data.sqldata[i].season,label:data.sqldata[i].season});
-//       seasonidlist[data.sqldata[i].id] = data.sqldata[i].season;
-//     }
-//   }
-//   if (document.getElementById('season').tagName == "SELECT"){
-//     sel_id_season = new Choices('#season',{
-//       searchEnabled: false,
-//       itemSelectText: 'auswielen...',
-//       choices : seasonlist,
-//       shouldSort: false,
-//       shouldSortItems: false
-//     });
-//     sel_id_season.setChoiceByValue(document.getElementById("season").dataset.selected);
-    
-//   } else {
-//     document.getElementById('season').value = seasonidlist[document.getElementById('season').value];
-//   }
-//   return false;
-// }
-
-// function getcategories(){
-//   req.reqdata("POST","db.cgi",{"get":"eventgroups"},fillcategories);
-//   return false;
-// }
-
-// function fillcategories(data){
-
-//   var catlist = [];
-//   if (data && data.sqldata){
-//     for (var i in data.sqldata){
-//       catlist.push({value:data.sqldata[i].id,label:data.sqldata[i].groupname});
-//     }
-//   }
-//   sel_id_eventgroup.setChoices(catlist, 'value', 'label', true);
-
-//   return false;
-// }
\ No newline at end of file
diff --git a/app/tmpl/module/forms.tt b/app/tmpl/module/forms.tt
deleted file mode 100644 (file)
index 9706767..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-[% PROCESS macro/fields.tt %]
-<div class="display-container">
-    <div class="bar theme-light">
-          <button onclick="app.loadpage('module/[% module %]/transfer.html?doctype=newlicense','Nei Lizenz');" class=" button bar-item blue-grey border">Nei Lizenz</button>
-          <button onclick="app.loadpage('module/[% module %]/transfer.html?doctype=transfer','Transfer');" class=" button blue-grey bar-item border">Transfer</button> 
-          <button onclick="app.loadpage('module/[% module %]/transfer.html?doctype=transferfree','Transfer');" class=" button blue-grey bar-item border">Transfer Libre</button>
-          <button onclick="app.loadpage('module/[% module %]/transfer.html?doctype=transferwinter','Wanter Transfer');" class=" button blue-grey bar-item border">Wanter Transfer</button>   
-          <button class="bar-item button border right red" onclick="remove();"><img src="[% abspath%]img/icons/remove_white.svg" style="height: 24px;"/></button>
-    <button class="bar-item button border right blue-grey" onclick="edit();"><img src="[% abspath%]img/icons/edit_white.svg" style="height: 24px;"/></button>                
-    </div>
-    <div class="container" id="maintable">
-    <div id="tbl_transfer"></div>
-    </div>
-</div>
\ No newline at end of file
diff --git a/app/tmpl/module/forms/forms.js b/app/tmpl/module/forms/forms.js
deleted file mode 100644 (file)
index f27f864..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-var tbl = null;
-function initpage(){
-  tbl = new Tabulator("#tbl_transfer", {
-    height: "100vh",
-    selectable:1,
-    selectablePersistence:false, // disable rolling selection
-    responsiveLayout:"collapse",
-    autoResize:true,
-    addRowPos:"top", 
-    layout:"fitColumns",
-    resizableRows:true,
-    columnHeaderSortMulti:false,
-    columns:[
-      {title:"Club", field:"newclub",headerFilter:"input"},
-      {title:"Numm", field:"surname",headerFilter:"input"},
-      {title:"Virnumm", field:"prename",headerFilter:"input"},
-      {title:"Type Demande", field:"documenttype",headerFilter:"input"},
-      {title:"Datum", field:"statusdate", sorter:"date"},
-      {title:"Status", field:"status", sorter:"string",formatter:"html"}
-    ]
-});
-gettbldata();
-}
-
-function gettbldata(){
-  req.reqdata("POST","db.cgi",{"get":"transferlist"},loadtbldata);
-}
-
-function loadtbldata(data){
-  if (data && data.sqldata){
-    tbl.setData(data.sqldata);
-  }
-}
-
-
-
-function edit(){
-  var udata = tbl.getSelectedData();
-  //var uid = udata[0].id;
-  console.log(udata);
-  app.loadpage('module/[% module %]/transfer.html?doctype=' + udata[0].documenttype + "&id=" + udata[0].id);
-}
-
-function remove(){
-  var udata = tbl.getSelectedData();
-  var uid = udata[0].id;
-  if (confirm("Bass du secher dass den ausgewielten Transfer läschen wells?")){
-    req.reqdata("POST","db.cgi",{"del":"1","ident_transfer_id":udata[0].id},gettbldata);
-  }
-}
\ No newline at end of file
diff --git a/app/tmpl/module/index.tt b/app/tmpl/module/index.tt
deleted file mode 100644 (file)
index 888f16e..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-
-<div class="display-container" >
-  <div class="bar border-bottom toolbar">
-    <div class="bar-item"><img src="[% abspath %][% staticpath %]img/ledficon.svg" style="height: 40px"/></div>
-    <!--<a class="bar-item toolbarbtn" href="[% abspath %]index.html" ><span class="icon-back"></span>zerëck</a>-->
-    <div class="bar-item PageHeadTitle">Lëtzebuerger Electronique Darts Federation</div>
-    <a class="bar-item toolbarbtn right" href="javascript:app.logout(); "><span class="icon-logout" style="font-size: 24px;"></span>Logout</a>
-  </div> 
-</div>
-<div class="display-container">
-  <div class="container">
-    <div class="panel" id="msg"></div>
-  </div>
-  <div class="card">
-    <header class="container grey">
-      <span style="fot-weight: bold">Site</span>
-    </header>
-      <div class="bar">
-        <a class="bar-item toolbarbtn text-black" href="[% abspath %]news.html"><span class="icon-licplus" style="font-size: 24px;"/></span>News</a>
-        <a class="bar-item toolbarbtn text-black" href="[% abspath %]calendar.html"><span class="icon-licrenew" style="font-size: 24px;"/></span>Calendrier</a>
-        <a class="bar-item toolbarbtn text-black" href="[% abspath %]clubs.html"><span class="icon-club" style="font-size: 24px;"/></span>Clubs</a>
-        <a class="bar-item toolbarbtn text-black" href="[% abspath %]documents.html"><span class="icon-usergroup" style="font-size: 24px;"/></span>Documents</a>
-        
-      </div>
-  </div>
-
-  <div class="card">
-    <header class="container grey">
-      <h2>Administration</h2>
-    </header>
-    <div class="bar">
-      <a class="bar-item toolbarbtn text-black" href="[% abspath %]site/staticfiles.html"><span class="icon-licenses" style="font-size: 24px;"/></span>Static Files</a>
-      <a class="bar-item toolbarbtn text-black" href="[% abspath %]site/pages.html"><span class="icon-licrenew" style="font-size: 24px;"/></span>Webpages</a>
-      <a class="bar-item toolbarbtn text-black" href="[% abspath %]site/navigation.html"><span class="icon-drawer" style="font-size: 24px;"/></span>Navigation</a>
-      
-    </div>
-  </div>
-  
-  <div class="card">
-    <header class="container grey">
-      <h2>Access</h2>
-    </header>
-    <div class="bar">
-      <a class="bar-item toolbarbtn text-black" href="[% abspath %]admin/users.html"><span class="icon-sportresult" style="font-size: 24px;"/></span>Users</a>
-    </div>
-  </div>
-  <div class="card">
-    <header class="container grey">
-      <h2>Profil</h2>
-    </header>
-      <div class="bar">
-        <a class="bar-item toolbarbtn text-black" href=""><span class="icon-profile" style="font-size: 24px;"/></span>Perséinlech Donnéen</a>
-        <a class="bar-item toolbarbtn text-black" href=""><span class="icon-access" style="font-size: 24px;"/></span>Passwuert änneren</a>
-        <a class="bar-item toolbarbtn text-black" href=""><span class="icon-email" style="font-size: 24px;"/></span>E-Mail änneren</a>
-        
-      </div>
-  </div>
-    
-</div>
-<script type="text/javascript" src="index/[% pagename %].js?v=[% vstamp %]"></script>
\ No newline at end of file
diff --git a/app/tmpl/module/index/index.js b/app/tmpl/module/index/index.js
deleted file mode 100644 (file)
index 12e871f..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-function initpage(){
-  
-}
\ No newline at end of file
diff --git a/app/tmpl/module/licenses/index.js b/app/tmpl/module/licenses/index.js
deleted file mode 100644 (file)
index 12e871f..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-function initpage(){
-  
-}
\ No newline at end of file
diff --git a/app/tmpl/module/licenses/index.tt b/app/tmpl/module/licenses/index.tt
deleted file mode 100644 (file)
index 9c731f6..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-
-<div class="display-container" >
-  <div class="bar border-bottom toolbar">
-    <a class="bar-item toolbarbtn" href="[% abspath %]index.html" ><span class="icon-back"></span>zerëck</a>
-    <div class="bar-item PageHeadTitle">Lizenzen</div>
-  </div> 
-</div>
-
-<div class="display-container">
-<div id="clublist" class="container">
-<ul class="ul">
-[% FOREACH clubs=dksdb.query("select cl.id,cl.club,replace(cl.club,'''','\\''') as clublink,cl.link,cl.logo,count(distinct(lic.id)) as licenses,count(distinct(cst.id)) as teams
-from vw_clublist cl 
-left join vw_licenselist lic on (cl.id=lic.id_club) 
-left join vw_locationlist loc on (cl.id = loc.id_club)
-left join (select ct.* from csteams ct join csseasonranking csr on (csr.id_team=ct.id and csr.id_season=2)) cst on (cl.id=cst.id_club)
-where lic.status='aktiv' and (cl.status is null or cl.status='individual')
-group by cl.id,cl.club,cl.link,cl.logo order by cl.club;"); %] 
-      
-      <li class="bar hover-grey" onclick="app.loadpage('module/[% module %]/licenses.html?id=[% clubs.id %]','[% clubs.clublink %]');" style="cursor: pointer;">
-        <img src="[% abspath %]../media/clubs/[% IF clubs.logo %][% clubs.logo %][% ELSE %]logo_club.png[% END %]" alt="Logo [% clubs.club %]" class="bar-item" style="margin-right: 15px; width: 100px;">   
-        <div class="bar-item ">
-          <span class="xlarge">[% clubs.club %]</span>
-          <strong>Lizenzen:</strong>&nbsp;<span>[% clubs.licenses %]</span>&nbsp;<strong>&Eacute;quipen:</strong>&nbsp;<span>[% clubs.teams %]</span>
-      </div>
-    </li>
-  
-[% END %]
-</ul>
-</div>
-</div>
-<script type="text/javascript" src="[% pagename %].js?v=[% vstamp %]"></script>
-
diff --git a/app/tmpl/module/licenses/licenserequests.js b/app/tmpl/module/licenses/licenserequests.js
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/app/tmpl/module/licenses/licenserequests.tt b/app/tmpl/module/licenses/licenserequests.tt
deleted file mode 100644 (file)
index ffb2b1d..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<div class="display-container" >
-  <div class="bar border-bottom toolbar">
-    <a class="bar-item toolbarbtn" href="[% abspath %]index.html" ><span class="icon-back"></span>zerëck</a>
-    <div class="bar-item PageHeadTitle">Lizenz-Ufroën</div>
-  </div> 
-</div>
-<script type="text/javascript" src="[% pagename %].js?v=[% vstamp %]"></script>
\ No newline at end of file
diff --git a/app/tmpl/module/licenses/licenses.js b/app/tmpl/module/licenses/licenses.js
deleted file mode 100644 (file)
index 12e871f..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-function initpage(){
-  
-}
\ No newline at end of file
diff --git a/app/tmpl/module/licenses/licenses.tt b/app/tmpl/module/licenses/licenses.tt
deleted file mode 100644 (file)
index 1004fd2..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-<div class="display-container margin">
-  <div class="row">
-
-[% qclubs = dksdb.prepare("select ml.id,ml.link,ml.prename,ml.surname,ml.status,ll.license,ml.nationality,to_char(ml.birthday,'DD.MM.YYYY') as dspbirthday,ml.profile_photo,extract(epoch from ml.modified) as modified from vw_licenselist ll join members ml on (ll.id_member=ml.id) where ll.id_club=? and ll.yearin is not null and ll.yearout is null
-order by ml.surname,prename;") %]
-[% FOREACH cl = qclubs.execute(params.id) %]
-
-<div class="card  margin">
-  <div class="container theme padding-small"><h3>[% cl.prename %] [% cl.surname %]</h3></div>
-  <div class="row">
-  <div class="container half padding-24 border-right"><img src="[% abspath %][% IF cl.profile_photo %]data/members/[% cl.profile_photo %]?upd=[% cl.modified %][% ELSE %]data/noprofileimg.png[% END %]" style="height: 200px;" />
-    <table class="table"><tbody>
-    [% IF cl.status == "suspended" %]<tr><th colspan="2"><span class="text-red">License suspendue</span></th></tr>[% END  %]
-
-    <tr><th style="width: 160px;"><strong>Lizenz: </strong></th><td>[% cl.license %]</td></tr>
-    <tr><th><strong>Nationalitéit: </strong></th><td>[% cl.nationality %]</td></tr>
-      <tr><th><strong>Geburtsdatum: </strong></th><td>[% cl.dspbirthday %]</td></tr>
-    </tbody></table>
-  </div>
-  <div class="container half padding-24" >
-    <table class="table"><tbody>
-        [% licenses = dksdb.prepare("select lic.*,cl.club,cl.status as clubstatus from licenses lic left join clubs cl on (lic.id_club=cl.id) where id_member=? order by lic.yearin desc,lic.yearout desc;") %]
-        [% FOREACH lic = dksdb.execute(cl.id) %]
-          <tr>
-            <td style="width: 170px;">[% lic.club %]</td>
-            <td class="text-bold"><strong>[% lic.yearin %] [% IF lic.yearout %] - [% lic.yearout %][% END %]</strong></td>
-                    
-          </tr>
-          [% END %]
-        </tbody>
-    </table>
-  </div>
-</div>
-</div>
-
-[% END %]
-</div>
-</div>
-<script>
-[% IF params.id %]
-var clubid=[% params.id %];
-[% END %]
-</script>
-
-<script type="text/javascript" src="[% pagename %].js?v=[% vstamp %]"></script>
diff --git a/app/tmpl/module/licenses/members.js b/app/tmpl/module/licenses/members.js
deleted file mode 100644 (file)
index d3ce2ad..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-var tbl = null;
-var tbllic = null;
-var idmember=null;
-var iduser="[% session.id %]";
-function initpage(){
-
-  flatpickr(".datefield",{altInput: true,
-    altFormat: "d.m.Y",
-    dateFormat: "Y-m-d",
-    "locale": "fr",
-  });
-  tbl = new Tabulator("#tbl_members", {
-    height: "100vh",
-    selectable:1,
-    selectablePersistence:false, // disable rolling selection
-    responsiveLayout:"collapse",
-    autoResize:true,
-    addRowPos:"top", 
-    layout:"fitColumns",
-    resizableRows:true,
-    columnHeaderSortMulti:false,
-    rowClick:function(e, row){
-      var data = row.getData();
-      //console.log(data);
-      idmember=data.id;
-      //console.log(idmember);
-      loadmemberdata(idmember);
-      //e - the click event object
-      //row - row component
-      },
-    columns:[
-      // {title:"Club", field:"club", sorter:"string",formatter:"html",headerFilter:"input"},
-      {title:"Numm", field:"surname", sorter:"string",headerFilter:"input"},
-      {title:"Virnumm", field:"prename", sorter:"string",headerFilter:"input"},
-      // {title:"Status", field:"status", sorter:"string",headerFilter:"input"},
-    ],
-    initialHeaderFilter:[
-      {field:"status", value:"active"} //set the initial value of the header filter to "red"
-  ]
-
-    //autoColumns:true,
-});
-tbllic = new Tabulator("#tbl_license", {
-  selectable:1,
-  selectablePersistence:false, // disable rolling selection
-  responsiveLayout:"collapse",
-  autoResize:true,
-  addRowPos:"top", 
-  layout:"fitColumns",
-  resizableRows:true,
-  // rowClick:function(e, row){
-  //   var data = row.getData();
-  //   console.log(data);
-  //   idmember=row.id;
-  //   loadmemberdata(row.id);
-  //   //e - the click event object
-  //   //row - row component
-  //   },
-  columns:[
-    {title:"Lizenz", field:"license", sorter:"number"},
-    {title:"vun", field:"yearin", sorter:"number"},
-    {title:"bis", field:"yearout", sorter:"number"},
-    {title:"Club", field:"club", sorter:"string",formatter:"html"}
-  ],
-  //autoColumns:true,
-});
- gettbldata();
-}
-
-function gettbldata(){
-  req.reqdata("POST","db.cgi",{"get":"memberlist","filter":"id_club in (select id_club from vw_memberlist where id="+ iduser +") "},loadtbldata);
-}
-
-function loadtbldata(data){
-  if (data && data.sqldata){
-    tbl.setData(data.sqldata);
-  }
-}
-
-function loadmemberdata(id){
-  //console.log(id);
-  req.reqdata("POST","db.cgi",{"get":"memberdata","filter":"id="+id},fillformmember);
-  req.reqdata("POST","db.cgi",{"get":"licenselist","filter":"id_member="+id},filllicensetable);
-  req.reqdata("POST","db.cgi",{"get":"userstatus","filter":"id="+id},filluserstaus); 
-}
-
-function fillformmember(data){
-  //console.log(data);
-  if (data && data.sqldata){
-    var frm = document.querySelectorAll('.data_members');
-    for (var f in frm){
-      //console.log(frm[f].id);
-      if (data.sqldata[0][frm[f].id]){
-        //console.log(frm[f].tagName + " " + frm[f].type + " " + frm[f].id);
-        if ((frm[f].tagName == 'INPUT') || (frm[f].tagName == 'SELECT')){
-          if (frm[f].classList.contains("datefield")){
-            frm[f]._flatpickr.setDate(data.sqldata[0][frm[f].id]);
-            //frm[f].flatpickr.setDate(data.sqldata[0][frm[f].id])  
-          } else {
-            frm[f].value=data.sqldata[0][frm[f].id];
-          }
-          
-        } 
-      }
-    }
-  }
-}
-
-function filllicensetable(data){
-  //console.log("License DATA");
-  //console.log(data.sqldata);
-  if (data && data.sqldata){
-    tbllic.setData(data.sqldata);
-  }
-}
-
-function filluserstaus(data){
-
-}
diff --git a/app/tmpl/module/licenses/members.tt b/app/tmpl/module/licenses/members.tt
deleted file mode 100644 (file)
index eb4939f..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-
-[% PROCESS macro/fields.tt %]
-<div class="display-container" >
-  <div class="bar border-bottom toolbar">
-    <a class="bar-item toolbarbtn" href="[% abspath %]index.html" ><span class="icon-back"></span>zerëck</a>
-    <div class="bar-item PageHeadTitle">Club-Memberen</div>
-  </div> 
-</div>
-<div class="display-container">
-
-  <div class="row">
-    <div class="col l6">
-      <div id="tbl_members"></div>
-    </div>
-    <div class="col l6 " style="height: 100vh; overflow-y: scroll;">
-      [% #tabletoolbar('member') %]
-      <div class="container padding-24 card">
-      <form>
-        <h3>Perséinlech Donnéen</h3>
-        <div class="row-padding"> 
-          [% fieldeditbox('surname','members','Numm','half','') %]
-          [% fieldeditbox('prename','members','Virnumm','half','') %]
-          [% fieldeditbox('address','members','Address','','') %]
-          [% fieldeditbox('zip','members','CP','quarter','') %]
-          [% fieldeditbox('city','members','Uerschaft','threequarter','') %]
-          [% fieldeditbox('country','members','Land','third','') %]
-          [% fieldeditbox('email','members','E-Mail','third','','') %]
-          [% fieldeditbox('phone','members','Telefon','third','') %]
-          [% fieldeditbox('nationality','members','Nationalitéit','third','') %]
-          [% fielddatebox('birthday','members','Gebuertsdatum','third','') %]
-          [% fielddatebox('entrydate','members','Datum 1st Lizenz','third','') %]
-          </div>
-      </div>
-      <div class="container padding-24 card">
-        <h3>Photo</h3>
-        <div class="container">
-        <div class="cell-row">
-          <div class="container cell">
-            <h4>Validéiert Photo</h4>
-            <img src="[% abspath %]img/no-image-icon.png" style="width: 50%;" />
-          </div>
-        
-            <div class="container cell">
-              <h4>Nei Photo</h4>
-              <img src="[% abspath %]img/no-image-icon.png" style="width: 50%;" />
-              <input type="file" />
-              <button class="button green">Validéieren</button><button class="button red">Refuséieren</button>
-            </div>
-        </div>
-      </div>
-      </div>
-      <div class="container padding-24 card">
-        <h3>Benotzer-Kont</h3>
-        <div class="container">
-            <div><strong>Status</strong><span id="userstatus"></span></div>
-            <button class="button green">aktivéieren</button>
-            <button class="button red">blockéieren</button>
-            <button class="button orange">neit Passwuert schecken</button>
-        </div>
-      </div>
-      <div class="container card">
-        <h3>Lizenz</h3>
-        <div class="container">
-            <div id="tbl_license"></div>
-        </div>
-      </div>
-    </div>
-  </div>
-  <script>
-[% IF params.id %]
-var clubid=[% params.id %];
-[% END %]
-</script>
-<script type="text/javascript" src="[% pagename %].js?v=[% vstamp %]"></script>
\ No newline at end of file
diff --git a/app/tmpl/module/licenses/newlicense.js b/app/tmpl/module/licenses/newlicense.js
deleted file mode 100644 (file)
index b5a1f75..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-function initpage(){
-  newlicense.initform();
-}
-
-let newlicense = {
-  current_panel: "basedata",
-  selects:{"id_club":null,"country":null},
-  initform: function(){
-    newlicense.selects["id_club"] = new SlimSelect({
-      select: "#id_club",
-      //[% IF session.usergroups.search('fld') != 1 %]
-      disabled : true,
-      //[% END %]
-      showSearch: false
-    });
-    newlicense.selects["country"] = new SlimSelect({
-      select: "#country",
-      showSearch: false
-    });
-    flatpickr("#birthday",{altInput: true,
-      altFormat: "d.m.Y",
-      dateFormat: "Y-m-d",
-      "locale": "fr",
-      weekNumbers: false
-    });
-    newlicense.getclubs();
-    newlicense.fillcountries();
-  },
-  // viewpanel(pnlname){
-  //   if (newlicense.current_panel == 'basedata'){
-
-  //   }
-  //   if (newlicense.current_panel == 'photo'){
-      
-  //   }
-  //   if (newlicense.current_panel == 'signature'){
-      
-  //   }
-  //   newlicense.current_panel = pnlname;
-  //   app.viewpanel(pnlname);
-  //   return false;
-  // },
-  save: function(){
-    
-  },
-  
-  fillcountries: function(){
-    let countries = [{"value":"LUX","text":"Lëtzebuerg"},{"value":"DEU","text":"Daitschland"},{"value":"FRA","text":"Frankraich"},{"value":"BEL","text":"Belge"},{"value":"NED","text":"Holland"}];
-    form.fillselectlist(newlicense.selects["country"],countries,"value","text");
-  },
-  getclubs: function(){
-    req.reqdata("POST","db.cgi",{"get":"clublist","filter":" status is null;"},newlicense.fillclubs);
-  },
-  fillclubs: function(data){
-    console.log(data);
-    form.fillselectlist(newlicense.selects["id_club"],data.sqldata,"id","club",[% session.id_club %]);
-  }
-}
\ No newline at end of file
diff --git a/app/tmpl/module/licenses/newlicense.tt b/app/tmpl/module/licenses/newlicense.tt
deleted file mode 100644 (file)
index 59bfe76..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-[% PROCESS macro/fields.tt %]
-<div class="display-container" >
-  <div class="bar border-bottom toolbar">
-    <a class="bar-item toolbarbtn" href="[% abspath %]index.html" ><span class="icon-back"></span>zerëck</a>
-    <div class="bar-item PageHeadTitle">Nei Lizenz</div>
-  </div> 
-</div>
-<div class="display-container" style="display: block; height: calc(100vh - 60px); overflow-y: scroll;">
-  <form id="frm_newlicense">
-    [% fieldselectbox('id_club','transfer','Club','','') %]
-      <div class="bar sectiontoolbar">
-        <div class="bar-item SectionHeadTitle">Perséinlech Donnéeen vum Demandeur</div>
-      </div>
-      <div class="container">
-        [% fieldhidden('id','transfer','ident','') %]
-        [% fieldhidden('documenttype','transfer','','newlicense') %]
-        [% fieldeditbox('surname','transfer','Numm','half','') %]
-          [% fieldeditbox('prename','transfer','Virnumm','half','') %]
-          [% fieldeditbox('address','transfer','Address','','') %]
-          [% fieldeditbox('zip','transfer','CP','quarter','') %]
-          [% fieldeditbox('city','transfer','Uerschaft','half','') %]
-          [% fieldselectbox('country','transfer','Land','quarter','') %]
-          [% fieldeditbox('phone','transfer','Telefon','half','') %]
-          [% fieldeditbox('email','transfer','E-Mail','half','') %]
-          [% fieldeditbox('nationality','transfer','Nationalitéit','half','') %]
-          [% fielddatebox('birthday','transfer','Gebuertsdatum','half','') %]
-          
-      </div>
-
-    
-    <div class="bar sectiontoolbar">
-      <div class="bar-item SectionHeadTitle">Photo</div>
-    </div>
-    <div class="bar sectiontoolbar">
-      <div class="bar-item SectionHeadTitle">Ennerschrëften</div>
-    </div>
-    <div class="bar footertoolbar">
-      <button class="bar-item toolbarbtn right" onclick="newlicense.send();return false;"><span class="icon-send"></span>Lizenz ufroën</button>
-      <button class="bar-item toolbarbtn right" onclick="newlicense.save();return false;"><span class="icon-save"></span>Spaicheren</button>
-      <button class="bar-item toolbarbtn right" onclick="newlicense.downloadpdf();return false;"><span class="icon-pdf"></span>PDF eroofluden</button> 
-    </div>
-    
-  </form>
-</div>
-<script type="text/javascript" src="[% pagename %].js?v=[% vstamp %]"></script>
\ No newline at end of file
diff --git a/app/tmpl/module/licenses/toolbar.tt b/app/tmpl/module/licenses/toolbar.tt
deleted file mode 100644 (file)
index 210c39d..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-[% udef = 0 %]
-
-[% puserdef = dksdb.prepare("select ml.id_user from vw_licenselist ll join members ml on (ll.id_member=ml.id) where ll.id_club=? and ml.id_user=? and ll.yearin is not null and ll.yearout is null;") %]
-[% FOREACH ruserdef = puserdef.execute(params.id,session.id) %]
-[% IF ruserdef.id_user == session.id %]
-  [% udef = ruserdef.id_user %]
-[% END %]
-[% END %]
-<header class="top bar border-bottom theme-light">
-    <button class="bar-item button border" onclick="loadlicenses();">Lizenzen</button>
-    <button class="bar-item button border" onclick="loadclub();">Club</button>
-[% IF (session.othergroups.search('club') == 1 && udef == session.id) %]
-
-    <button class="bar-item button border" onclick="loadmembers();">Memberen</button>
-
-[% END %]
-</header>
diff --git a/app/tmpl/module/licenses/transfer.js b/app/tmpl/module/licenses/transfer.js
deleted file mode 100644 (file)
index 14f1e77..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-
-var editor_id="[% session.id %]";
-
-
-var sel_newclub;
-function initpage(){
-  console.log("Init Transfer");
-  flatpickr(".datefield",{altInput: true,
-    altFormat: "d.m.Y",
-    dateFormat: "Y-m-d",
-    "locale": "fr",
-  });
-  // sel_newclub = new Choices('#id_newclub',{
-  //   searchEnabled: false,
-  //   itemSelectText: 'auswielen...',
-  //   choices : []
-  // });
-  if (document.getElementById("id_newclub")){
-    var nclid = document.getElementById("id_newclub");
-    if (nclid.tagName == "SELECT"){
-      getclublist();
-    }
-  }
-  if (document.getElementById("id").value != ""){
-    gettransferdata(document.getElementById("id").value);
-  }
-  
-
-}
-
-function getclublist(){
-  console.log("load clublist 1");
-  //req.reqdata("POST","db.cgi","locationlist","filter":"id_club=" + clubid +""},loadtbldata);
-  req.reqdata("POST","db.cgi",{"get":"clublist","filter":"status is null or status='individual'"},loadclublist);
-}
-function loadclublist(data){
-  document.getElementById("id_newclub").innerHTML ='';
-  console.log("load clublist");
-  var xlist = [];
-  var strlist = "";
-  if (data && data.sqldata){
-    for (var i in data.sqldata){
-      strlist += '<option value="'+data.sqldata[i].id+'">'+data.sqldata[i].club+'</option>';
-      //xlist.push({value:data.sqldata[i].id,label:data.sqldata[i].club });
-    }
-  }
-  document.getElementById("id_newclub").innerHTML = strlist;
-  //sel_newclub.setChoices(xlist, 'value', 'label', true);
-}
-
-function gettransferdata(tid){
-  req.reqdata("POST","db.cgi",{"get":"transferdata","filter":"id='"+ tid +"'"},filltransferform);
-}
-
-function filltransferform(data){
-  console.log(data);
-  if (data && data.sqldata){
-    var frm = document.querySelectorAll('.data_transfer');
-    for (var f in frm){
-      console.log(frm[f].id);
-      if (data.sqldata[0][frm[f].id]){
-        if ((frm[f].tagName == 'INPUT') || (frm[f].tagName == 'SELECT') || frm[f].tagName == 'TEXTAREA'){
-          if (frm[f].classList.contains("datefield")){
-            frm[f]._flatpickr.setDate(data.sqldata[0][frm[f].id]);
-          } 
-          else if (frm[f].id == "id_newclub"){
-            if (sel_newclub){
-              console.log("set choice")
-              sel_newclub.setChoiceByValue(data.sqldata[0][frm[f].id]);
-            }else {
-              console.log("set select value");
-              frm[f].value=data.sqldata[0][frm[f].id];
-            }
-            
-            
-          } 
-          else if (frm[f].classList.contains("richeditarea")){
-           
-            tinymce.get(frm[f].id).setContent(data.sqldata[0][frm[f].id]);
-          } else {
-            frm[f].value=data.sqldata[0][frm[f].id];
-          } 
-          
-        } 
-      }
-    }
-    //document.getElementById("title").addEventListener("change", onchangetitle);
-  }
-}
-
-function saveuserdata(){
-  var flds = [];
-  flds = getformcontent('requesterclub',flds); 
-  flds = getformcontent('userdata',flds);
-  flds["fn"] = "saveform";
-  console.log(flds);
-  req.reqdata("POST","index.cgi",flds,afteruserdatasaved);
-  
-}
-
-function afteruserdatasaved(data){
-  console.log(data);
-  if (data &&  data.id){
-    document.getElementById("id").value=data.id;
-  }
-    formsaved({});
-}
-function getmemberslist(){
-  req.reqdata("db.cgi","memberslist","",loadmemberslist);
-}
-
-function aftertransfersaved(data){
-  console.log("transfer saved");
-  console.log(data);
-}
-
diff --git a/app/tmpl/module/licenses/transfer.tt b/app/tmpl/module/licenses/transfer.tt
deleted file mode 100644 (file)
index 481c01a..0000000
+++ /dev/null
@@ -1,211 +0,0 @@
-[% PROCESS macro/fields.tt %]
-<div class="display-container" >
-  <div class="bar border-bottom toolbar">
-    <a class="bar-item toolbarbtn" href="[% abspath %]index.html" ><span class="icon-back"></span>zerëck</a>
-    <div class="bar-item PageHeadTitle">Transfer</div>
-  </div> 
-</div>
-<div class="container">
-
-</div>
-<form id="frm_transfer">         
-    <div class="row card padding-24">
-      [% fieldselectbox('id_newclub','transfer','Fir den Club','third','') %]
-      [% IF dtk == 'newlicense' %]
-         [% #fieldfile('transferfile','transfer','Formulaire Nei Lizenz (PDF)','third','','') %]
-        [% #fieldfile('transferphoto','transfer','Foto','third','','') %]
-      [% END %]
-    </div>
-    </form>
-    [% IF dtk == 'newlicense' %]
-    <div class="row card padding-24">   
-        <div class="container">
-          <h3>Perséinlech Donnéen vum Demandeur</h3>
-        </div>
-
-      <div class="container">
-        <form id="frm_userdata">  
-        [% fieldhidden('id','transfer','ident',tid) %]
-        [% fieldhidden('documenttype','transfer','',dtk) %]
-        [% fieldeditbox('surname','transfer','Numm','half','') %]
-          [% fieldeditbox('prename','transfer','Virnumm','half','') %]
-          [% fieldeditbox('address','transfer','Address','','') %]
-          [% fieldeditbox('zip','transfer','CP','quarter','') %]
-          [% fieldeditbox('city','transfer','Uerschaft','half','') %]
-          [% fieldeditbox('country','transfer','Land','quarter','') %]
-        </div>
-          <div class="container">
-                  [% fieldeditbox('phone','transfer','Telefon','half','') %]
-                  [% fieldeditbox('email','transfer','E-Mail','half','') %]
-                  [% fieldeditbox('nationality','transfer','Nationalitéit','half','') %]
-                  [% fielddatebox('birthday','transfer','Gebuertsdatum','half','') %]
-          </div>
-        </form>
-          
-         <div class="container right-align">
-          <button class="button blue-grey" onclick="saveuserdata();return false;">spaichern</button>
-        </div>
-    </div>
-    
-    <div class="row card padding-24">
-    <div class="container"><h3>Accord neien Club</h3></div>
-    <div class="container">
-      [% fieldhidden('newclub_id_president','transfer') %]
-      [% fieldeditbox('newclub_presidentname','onlydisplay','President','quarter','readonly') %]
-      [% fielddatebox('newclub_sigdate_president','transfer','Datum','quarter','') %]
-      [% fieldpasswordbox('newclub_president_sig','transfer','Passwuert','quarter','') %]
-      <div class="container right-align quarter padding-24">
-        <button class="button blue-grey "> Ënnerschreiwen (Président)</button>
-      </div>
-    </div>
-    
-    <div class="container">
-            [% fieldhidden('newclub_id_tresorier','transfer') %]
-            [% fieldeditbox('newclub_tresoriername','onlydisplay','Trésorier','quarter','readonly') %]
-            [% fielddatebox('newclub_sigdate_trresorier','transfer','Datum','quarter','') %]
-            [% fieldpasswordbox('newclub_tresorier_sig','transfer','Passwuert','quarter','') %]
-            <div class="container right-align quarter padding-24">
-                <button class="button blue-grey" > Ënnerschreiwen (Trésorier)</button>
-            </div>
-    </div>
-            
-    </div>
-    [% END %]
-    
-        
-    [% IF dtk == 'transfer' || dtk == 'transferfree' || dtk == 'transferwinter' %]
-    <div class="row card padding-24">   
-        <div class="container">
-      
-        [% fieldselectbox('id_member','transfer','Auswiel Member','half','') %]
-        [% fieldeditbox('license','transfer','Lizenz','quarter','readonly') %]
-        <div class="container">
-          [% fieldrichtextarea('note','member','Remarque (aktuellen Club)','','readonly','100px','') %]
-        </div>
-      </div>
-      </div>
-      <div class="row card padding-24">
-    <div class="container"><h3>Accord neien Club</h3></div>
-    <div class="container">
-      [% fieldhidden('newclub_id_president','transfer') %]
-      [% fieldeditbox('newclub_presidentname','onlydisplay','President','quarter','readonly') %]
-      [% fielddatebox('newclub_sigdate_president','transfer','Datum','quarter','') %]
-      [% fieldpasswordbox('newclub_president_sig','transfer','Passwuert','quarter','') %]
-      <div class="container right-align quarter padding-24">
-        <button class="button blue-grey "> Ënnerschreiwen (Président)</button>
-      </div>
-    </div>
-    
-    <div class="container">
-            [% fieldhidden('newclub_id_tresorier','transfer') %]
-            [% fieldeditbox('newclub_tresoriername','onlydisplay','Trésorier','quarter','readonly') %]
-            [% fielddatebox('newclub_sigdate_trresorier','transfer','Datum','quarter','') %]
-            [% fieldpasswordbox('newclub_tresorier_sig','transfer','Passwuert','quarter','') %]
-            <div class="container right-align quarter padding-24">
-                <button class="button blue-grey" > Ënnerschreiwen (Trésorier)</button>
-            </div>
-    </div>
-            
-    </div>
-    [% IF dtk == 'transfer'  ||  dtk == 'transferwinter' %]
-    <div class="row card padding-24">
-    <div class="container"><h3>Accord/Signatur aalen Club</h3></div>
-    <div class="container">
-      [% fieldhidden('oldclub_id_president','transfer') %]
-      [% fieldeditbox('oldclub_presidentname','onlydisplay','President','quarter','readonly') %]
-      [% fielddatebox('oldclub_sigdate_president','transfer','Datum','quarter','') %]
-      [% fieldpasswordbox('oldclub_president_sig','transfer','Passwuert','quarter','') %]
-      <div class="container right-align quarter padding-24">
-        <button class="button blue-grey "> Ënnerschreiwen (Président)</button>
-      </div>
-    </div>
-    
-    <div class="container">
-            [% fieldhidden('oldclub_id_tresorier','transfer') %]
-            [% fieldeditbox('oldclub_tresoriername','onlydisplay','Trésorier','quarter','readonly') %]
-            [% fielddatebox('oldclub_sigdate_trresorier','transfer','Datum','quarter','') %]
-            [% fieldpasswordbox('oldclub_tresorier_sig','transfer','Passwuert','quarter','') %]
-            <div class="container right-align quarter padding-24">
-                <button class="button blue-grey" > Ënnerschreiwen (Trésorier)</button>
-            </div>
-    </div>
-            
-    </div>
-    [% END %]
-    [% END %]
-    
-    [% #END %]
-    [% #IF dtk == 'transfer' || dtk == 'freetransfer' || dtk == 'wintertransfer' %]
-    <!-- 
-        <div class="container">
-            <h3>Accord/Signatur aalen Club</h3>
-        </div>
-        <div class="container">
-            [% fieldhidden('id_oldclub','transfer') %]
-            [% fieldeditbox('oldclub_name','onlydisplay','Club','','readonly') %]
-        </div>
-        
-        <div class="container">
-        [% fieldhidden('oldclub_id_president','transfer') %]
-        [% fieldeditbox('oldclub_presidentname','onlydisplay','President','quarter','readonly') %]
-        [% fielddatebox('oldclub_sigdate_president','transfer','Datum','quarter','') %]
-        [% fieldeditbox('oldclub_president_license_check','transfer','Lizenz-Nummer vum Président','quarter','') %]
-        [% fieldpasswordbox('oldclub_president_sig','transfer','Passwuert vum Président','quarter','') %]
-        </div>
-        <div class="container right-align padding-24">
-            <button class="button blue-grey" > Ënnerschreiwen (Président)</button>
-        </div>
-        <div class="container">
-        [% fieldhidden('oldclub_id_tresorier','transfer') %]
-        [% fieldeditbox('oldclub_tresoriername','onlydisplay','Trésorier','quarter','readonly') %]
-        [% fielddatebox('oldclub_sigdate_trresorier','transfer','Datum','quarter','') %]
-        [% fieldeditbox('oldclub_tresorier_license_check','transfer','Lizenz-Nummer vum trésorier','quarter','') %]
-        [% fieldpasswordbox('oldclub_president_sig','transfer','Passwuert vum Trésorier','quarter','') %]
-        </div>
-        <div class="container right-align padding-24">
-            <button class="button blue-grey" > Ënnerschreiwen (Trésorier)</button>
-        </div>
-        <div class="container">
-            <div class="container">
-                [% fieldcheckbox('refused_oldclub','transfer','Refus','','') %]
-                [% fieldtextarea('oldclub_note','transfer','Note (obligatoresch beim Refus)','','','100px','') %]
-            </div>
-        </div>
-    </div> -->
-    [% #END %]
-    [% fldro = 'readonly' %]
-    [% IF session.usergroups.search('fld') == 1 %]
-      [% fldro = '' %]
-    [% END %]
-            <h3>Accord/Signatur FLD</h3>
-        </div>
-        <form id="frm_fld">
-        <div class="container">
-            [% fieldeditbox('license','transfer','Nei Lizenz-Nummer','quarter',fldro) %]
-          </div>
-        <div class="container">
-            
-            [% fielddatebox('fld_sigdate','transfer','Datum','quarter',fldro) %]
-            
-            [% fieldselectbox('fld_id_member','transfer','FLD-Member','quarter','readonly') %]
-            [% fieldpasswordbox('fld_member_sig','transfer',"Passwuert",'quarter',fldro) %]
-            </div>
-           
-        <div class="container">
-            <div class="container">
-                [% fieldcheckbox('refused_fld','transfer','Refus','',fldro) %]
-                [% fieldtextarea('fld_note','transfer','Note (obligatoresch beim Refus)','','','100px',fldro) %]
-            </div>
-        </div>
-        </form>
-        [% IF fldro == ''  %]
-         <div class="container right-align padding-24">
-                <button class="button blue-grey" onclick="savefld();return false;"> Ënnerschreiwen (FLD)</button>
-            </div>
-        [% END %]
-    </div>
-    
-
-</div>
-</div>
-<script type="text/javascript" src="[% pagename %].js?v=[% vstamp %]"></script>
\ No newline at end of file
diff --git a/app/tmpl/module/login/forgotpassword.tt b/app/tmpl/module/login/forgotpassword.tt
deleted file mode 100644 (file)
index b0c50e1..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-<div class="container">
-        <h4>Passwuert vergiess?</h4>
-              <h6 >Een Neit Passwuert ufroën</h6>
-        </div>     
-              <form  method="POST">
-                <div class="container">
-                    <label for="email" class="label">E-mail</label>
-                  
-                    <input type="text" class="input border" id="email" name="email"  required>
-                    
-                </div>
-                
-                <div class="container padding-16">
-                  <button type="submit" name="btnforgotpassword" class="button theme" >Oofschecken</button>
-                </div>
-                <div class="container padding-24">
-                  <a href="[% basepath %]/login.html" class="text-primary">Zreck zum Login</a>
-                </div>
-                
-              </form>
\ No newline at end of file
diff --git a/app/tmpl/module/login/login.tt b/app/tmpl/module/login/login.tt
deleted file mode 100644 (file)
index 84b38c7..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-
-<div class="container">
-            <h4>[% lbl.loginheading %]</h4>
-            <!--<h6 class="text-blue">Wëllkomm zreck</h6>-->
-        </div>
-        <form name="frmlogin"  method="POST" id="frmlogin">
-          <div class="container">
-              <label for="username" class="label">[% lbl.login %]</label>
-              <input class="input border" type="text" id="login" name="login">
-          </div>
-          <div class="container">
-            <label for="password" class="label">[% lbl.password %]</label>
-              <input class="input border" type="password" id="password" name="password">
-          </div>
-          <div class="container padding-16">
-              <button type="submit" name="btnlogin" class="theme-dark button" >[% lbl.sendlogin %]</button>
-          </div>
-          <div class="container padding-16">
-              <a href="[% abspath %]forgotpassword.html">[% lbl.linkpwdforgotten %]</a>
-          </div>
-          [% IF registration_enabled == '1' %]
-          <div class="container padding-16">
-              Du hues dain Kont nach net aktivéiert? <br/><a href="[% basepath %]/register.html" class="text-primary">Kont aktivéieren</a>
-            </div>
-          [% END %]
-        </form>
\ No newline at end of file
diff --git a/app/tmpl/module/login/message.tt b/app/tmpl/module/login/message.tt
deleted file mode 100644 (file)
index e904c90..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<div class="panel [% messagetype %]">[% message %]</div>  
-                <div class="container">
-                  <a href="[% basepath %]/login.html" class="text-primary">Zreck zum Login</a>
-                </div>
-                [% IF registration_enabled == '1' %]
-                <div class="container">
-                  <a href="[% basepath %]/register.html" class="text-primary">Kont aktivéieren</a>
-                </div>
-                [% END %]
-                <div class="container">
-                  <a href="[% basepath %]/forgotpassword.html" class="text-primary">Passwuert vergiess?</a>
-                </div>
\ No newline at end of file
diff --git a/app/tmpl/module/login/register.tt b/app/tmpl/module/login/register.tt
deleted file mode 100644 (file)
index 03416b7..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-<div class="container">
-        <h4>Du hues dain Kont nach nët aktivéiert?</h4>
-              <h6 class="font-weight-light">Wanns du bei der FLD eng Lizenz hues, kruten déi Responsabel vun dengem Club Donnéen gescheckt, déi's du brauchs fir dain Kont ze aktivéieren! </h6>
-            </div>
-              <form  method="POST" >
-                <div class="container">
-                    <label class="label">Lizenz-Nummer</label> 
-                    <input type="text" class="input border" name="license" placeholder="Lizenz-Nummer" required>
-                        
-                </div>
-                
-                <div class="container">
-                    <label  class="label">E-mail</label>
-                    <input type="email" class="input border" name="email" placeholder="E-mail" required>
-                    
-                </div>
-                <div class="container">
-                    <label  class="label">Régistréierungs-Code</label>
-                    <input type="text" class="input border" name="regcode" placeholder="Régistréierungs-Code" required>
-                    
-                </div>
-                <div class="container">
-                  <input class="check" id="terms" name="terms" value="1" type="checkbox" required>
-                  <label>Ech acceptéieren d'<button class="button text-blue-grey" style="padding: 0px;" onclick="document.getElementById('dlgcgu').style.display='block';">Conditions générales d'utilisation</button></label>
-                </div>
-                <div class="container padding-16">
-                  <button type="submit" name="btnregister" class="button theme">Kont aktivéieren</button>
-                </div>
-                <div class="container padding-24">
-                  du hues dain Kont schon aktivéiert? <a href="[% abspath %]login.html" class="text-primary">Zrëck zum Login</a>
-                </div>
-                </form>
-
-<div id="dlgcgu" class="modal">  <div class="modal-content animate-top card-4">
-
-
-    <header class="container"> 
-      <span onclick="document.getElementById('dlgcgu').style.display='none'; return false;" 
-       class="button display-topright">&times;</span>
-      <h2 id="dlgpublish_title">Conditions générales d'utilisation du site fld.lu</h2>
-    </header>
-    <div class="container">
-      [% INCLUDE block/cgu.tt %]
-    </div>
-    <footer class="container right-align padding-16">
-    <button class="button theme-light margin-right border" onclick="document.getElementById('dlgcgu').style.display='none'; return false;">OK</button>
-      
-    </footer>
-  </div>
-</div>                
\ No newline at end of file
diff --git a/app/tmpl/module/login/validationcode.tt b/app/tmpl/module/login/validationcode.tt
deleted file mode 100644 (file)
index 5513f24..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-
-<div class="container">
-        <h4>E-Mail Validatioun</h4>
-              <h6 >Mir hun dir eng E-Mail matt engem Code gescheckt, fir deng E-Mail-Address ze bestätegen!<br></h6>
-        </div>
-        <div class="panel [% messagetype %]">[% message %]</div>     
-              <form  method="POST">
-                <div class="container">
-                    <label for="text" class="label">Code</label>
-                  
-                    <input type="text" class="input border" id="vcode" name="vcode"  required>
-                    
-                </div>
-                
-                <div class="container padding-16">
-                  <button type="submit" name="btnvalidateemail" class="button theme" >E-Mail validéieren</button>
-                </div>
-              </form>
-                <div class="container padding-24">
-                  <a href="[% basepath %]/login.html" class="text-primary">Zreck zum Login</a>
-                </div>
-                
-              </form>
\ No newline at end of file
diff --git a/app/tmpl/module/medialibrary/dlgeditdocument.tt b/app/tmpl/module/medialibrary/dlgeditdocument.tt
deleted file mode 100644 (file)
index 214468c..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<div id="dlgeditdocument" class="modal">
-
-  <div class="modal-content animate-top card-4">
-    <header class="container"> 
-      <span onclick="document.getElementById('dlgeditdocument').style.display='none'; return false;" 
-       class="button display-topright">&times;</span>
-      <h3 id="dlgeditdocument_title">Fichier éditéieren</h3>
-    </header>
-    <div class="container">
-      <form id="frm_editdocument">
-        [% fieldhidden("id","documents",'ident','') %]
-        [% fieldeditbox("filename","documents",'Fichier','','readonly') %]
-        [% fieldrichtextarea("description","documents",'Beschreiwung','','200px;','') %]
-      </form>
-    </div>
-    <footer class="container right-align padding-16">
-    <button class="button theme-light margin-right border" onclick="document.getElementById('dlgeditdocument').style.display='none'; return false;">Oofbriechen</button>
-      <button class="button blue-grey margin right-align" onclick="saveform('editdocument',closeeditdialog);return false;">Spaicheren</button>
-    </footer>
-  </div>
-</div>
\ No newline at end of file
diff --git a/app/tmpl/module/medialibrary/index.js b/app/tmpl/module/medialibrary/index.js
deleted file mode 100644 (file)
index 3648ad2..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-var tbl = null;
-var cfolder = 'media';
-function initpage(){
-  tbl = new Tabulator("#tbl_media", {
-    headerFilterPlaceholder:"filter...",
-    height: "93vh",
-    selectable:1,
-    selectablePersistence:false, // disable rolling selection
-    responsiveLayout:"collapse",
-    autoResize:true,
-    layout:"fitColumns",
-    resizableRows:true,
-    columnHeaderSortMulti:false,
-    rowDblClick:function(e, row){
-      var r = row.getData();
-      if (r.type == 'dir'){
-        cfolder= r.path;
-        gettbldata(cfolder);
-      }
-    },
-    columns:[
-      {title:'<button class="button block border blue-grey" style="padding: 2px;" onclick="folderup();return false;" id="folderup"><img src="../../img/icons/file/folderup_white.svg" style="height: 30px; "/></button>', field:"thumb",headerSort:false, titleFormatter:"html",width: 50,formatter:"html"},
-      {title:"Name", field:"name", sorter:"string",headerFilter:"input"},
-      {title:"Gréisst", field:"hrsize",headerSort:false,align:"right", sorter:"number",width: 110},
-      {title:"Typ", field:"mimetype", sorter:"string",headerFilter:"input", width: 115},
-      {title:"Dimensioun", field:"dimension", sorter:"number", width: 100},
-    ],
-    
-    //autoColumns:true,
-});
-gettbldata(cfolder);
-  // tinymce.init({
-  //   selector: '.richeditarea',
-  //   branding: false,
-  //   menubar:false,
-  //   statusbar: false,
-  //   plugins: 'searchreplace autolink directionality visualblocks visualchars advlist lists textcolor colorpicker textpattern',
-  //   toolbar: 'bold italic underline strikethrough forecolor | link | alignleft aligncenter alignright alignjustify  | numlist bullist outdent indent  | removeformat',
-  //   image_advtab: true
-  //     //   //console.log(editor.getContent());
-  // });
-}
-
-function gettbldata(folder){
-  req.reqdata("POST","file.cgi",{"fn":"list","folder":folder},loadtbldata);
-}
-
-function loadtbldata(data){
-  if (data){
-    tbl.setData(data);
-  }
-}
-
-function folderup(){
-  console.log("folderup");
-  var p = cfolder.lastIndexOf('/');
-  if (p > 0){
-    cfolder = cfolder.substring(0,cfolder.lastIndexOf('/'));
-    console.log("Folder up: " + cfolder);
-    gettbldata(cfolder);
-  }
-}
-// afterformsaved = function (){
-//   app.loadpage('module/[% module %]/index.html');
-//   return false;
-// }
-
-// function deletedocument(id){
-//   if (confirm("Bass du secher dass du dëst Document läschen wëlls?")){
-//     req.reqdata("POST","db.cgi",{"del":"1","ident_documents_id":id},closeeditdialog);
-//   }
-//   return false;
-// }
-
-// function editdocument(id){
-//   req.reqdata("POST","db.cgi",{"get":"documents","filter":"id="+ id},openedit);
-//   return false;
-// }
-
-// function openedit(data){
-//   //console.log(data);
-//   if (data && data.sqldata){
-//     var frm = document.querySelectorAll('.data_documents');
-//     for (var f in frm){
-//       //console.log(frm[f].classList);
-//       if (data.sqldata[0][frm[f].id]){
-//         if ((frm[f].tagName == 'INPUT') || (frm[f].tagName == 'SELECT') || frm[f].tagName == 'TEXTAREA'){
-//           if (frm[f].classList.contains("datefield")){
-//             frm[f]._flatpickr.setDate(data.sqldata[0][frm[f].id]);
-//           } else if (frm[f].classList.contains("richeditarea")){
-//             //console.log(frm[f].id + " is richeditarea");
-//             tinymce.get(frm[f].id).setContent(data.sqldata[0][frm[f].id]);
-//           } else {
-//             frm[f].value=data.sqldata[0][frm[f].id];
-//           } 
-          
-//         } 
-//       }
-//     }
-//     document.getElementById('dlgeditdocument').style.display='block'; 
-//   }
-//   return false;
-// }
-
-// function closeeditdialog(){
-//   document.getElementById('dlgeditdocument').style.display='none';
-//   app.loadpage('module/[% module %]/index.html');
-// }
\ No newline at end of file
diff --git a/app/tmpl/module/medialibrary/index.tt b/app/tmpl/module/medialibrary/index.tt
deleted file mode 100644 (file)
index 990a310..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-[% PROCESS macro/fields.tt %]
-
-<div class="display-container">
-  <div class="bar theme-light">
-    
-    <button class="button blue-grey border" onclick="add(); return false;"><img src="[% abspath%]img/icons/pictures_white.svg" style="width: 20px;"/></button>
-    <button class="button red right border" onclick="delete(); return false;"><img src="[% abspath%]img/icons/remove_white.svg" style="width: 20px;"/></button>
-    <button class="button blue-grey right border" onclick="edit(); return false;"><img src="[% abspath%]img/icons/edit_white.svg" style="width: 20px;"/></button>
-    <button class="button blue-grey right border" onclick="add(); return false;"><img src="[% abspath%]img/icons/plus_white.svg" style="width: 20px;"/></button>
-    <button class="button blue-grey right border" onclick="addfolder(); return false;"><img src="[% abspath%]img/icons/folder_add_white.svg" style="width: 20px;"/></button>
-  </div>
-  <div id="tbl_media"></div>    
-</div>
-[% INCLUDE block/dlguploadfile.tt %]
-[% INCLUDE "module/$module/dlgeditdocument.tt" %]
\ No newline at end of file
diff --git a/app/tmpl/module/members/club.tt b/app/tmpl/module/members/club.tt
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/app/tmpl/module/members/clubmembers.tt b/app/tmpl/module/members/clubmembers.tt
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/app/tmpl/module/members/index.js b/app/tmpl/module/members/index.js
deleted file mode 100644 (file)
index 20d6453..0000000
+++ /dev/null
@@ -1,143 +0,0 @@
-var tbl = null;
-var tbllic = null;
-var idmember=null;
-function initpage(){
-
-  flatpickr(".datefield",{altInput: true,
-    altFormat: "d.m.Y",
-    dateFormat: "Y-m-d",
-    "locale": "fr",
-  });
-  tbl = new Tabulator("#tbl_members", {
-    height: "100vh",
-    selectable:1,
-    selectablePersistence:false, // disable rolling selection
-    responsiveLayout:"collapse",
-    autoResize:true,
-    addRowPos:"top", 
-    layout:"fitColumns",
-    resizableRows:true,
-    columnHeaderSortMulti:false,
-    rowDblClick:function(e, row){
-      var data = row.getData();
-      //console.log(data);
-      idmember=data.id;
-      //console.log(idmember);
-      loadmemberdata(idmember);
-
-      //e - the click event object
-      //row - row component
-      },
-    columns:[
-      {title:"Club", field:"club", sorter:"string",formatter:"html",headerFilter:"input"},
-      {title:"Numm", field:"surname", sorter:"string",headerFilter:"input"},
-      {title:"Virnumm", field:"prename", sorter:"string",headerFilter:"input"},
-      {title:"Status Lizenz", field:"status", sorter:"string",headerFilter:"input"},
-    ],
-    initialHeaderFilter:[
-      {field:"status", value:"aktiv"} //set the initial value of the header filter to "red"
-  ]
-
-    //autoColumns:true,
-});
-tbllic = new Tabulator("#tbl_license", {
-  selectable:1,
-  selectablePersistence:false, // disable rolling selection
-  responsiveLayout:"collapse",
-  autoResize:true,
-  addRowPos:"top", 
-  layout:"fitColumns",
-  resizableRows:true,
-  // rowClick:function(e, row){
-  //   var data = row.getData();
-  //   console.log(data);
-  //   idmember=row.id;
-  //   loadmemberdata(row.id);
-  //   //e - the click event object
-  //   //row - row component
-  //   },
-  columns:[
-    {title:"Lizenz", field:"license", sorter:"number"},
-    {title:"vun", field:"yearin", sorter:"number"},
-    {title:"bis", field:"yearout", sorter:"number"},
-    {title:"Club", field:"club", sorter:"string",formatter:"html"}
-  ],
-  //autoColumns:true,
-});
- gettbldata();
-}
-
-function gettbldata(){
-  req.reqdata("POST","db.cgi",{"get":"memberlist"},loadtbldata);
-}
-
-function loadtbldata(data){
-  if (data && data.sqldata){
-    tbl.setData(data.sqldata);
-  }
-}
-
-function loadmemberdata(id){
-  //console.log(id);
-  document.getElementById("member_toolbar").style.display = 'block';
-  document.getElementById("pnlmemberlist").style.display = 'none';
-  document.getElementById("pnlmemberdata").style.display = 'block';
-  req.reqdata("POST","db.cgi",{"get":"memberdata","filter":"id="+id},fillformmember);
-  req.reqdata("POST","db.cgi",{"get":"licenselist","filter":"id_member="+id},filllicensetable);
-  req.reqdata("POST","db.cgi",{"get":"userstatus","filter":"id="+id},filluserstaus); 
-}
-
-function fillformmember(data){
-  //console.log(data);
-  if (data && data.sqldata){
-    for (var i in data.sqldata[0]){
-      if (document.getElementById("members_" + i)){
-        document.getElementById("members_" + i).value
-      }
-    } 
-    var frm = document.querySelectorAll('.data_members');
-    for (var f in frm){
-      //console.log(frm[f].id);
-      if (data.sqldata[0][frm[f].id]){
-        //console.log(frm[f].tagName + " " + frm[f].type + " " + frm[f].id);
-        if ((frm[f].tagName == 'INPUT') || (frm[f].tagName == 'SELECT')){
-          if (frm[f].classList.contains("datefield")){
-            frm[f]._flatpickr.setDate(data.sqldata[0][frm[f].id]);
-            //frm[f].flatpickr.setDate(data.sqldata[0][frm[f].id])  
-          } else {
-            frm[f].value=data.sqldata[0][frm[f].id];
-          }
-          
-        } 
-      }
-      
-    //   if frm[f].id
-    //   if (data.sqldata[0][])
-    //   frm[f].value=
-    }
-    if (document.getElementById("profile_photo").value != ""){
-      document.getElementById('img_profile_photo').src='../../data/members/' + document.getElementById("profile_photo").value;
-    }
-    // console.log(frm);
-  }
-}
-
-function filllicensetable(data){
-  //console.log("License DATA");
-  //console.log(data.sqldata);
-  if (data && data.sqldata){
-    tbllic.setData(data.sqldata);
-  }
-}
-
-function filluserstaus(data){
-
-}
-
-function loadlist(){
-  document.getElementById("member_toolbar").style.display = 'none';
-  document.getElementById("pnlmemberdata").style.display = 'none';
-  document.getElementById("pnlmemberlist").style.display = 'block';
-  
-}
-
diff --git a/app/tmpl/module/members/index.tt b/app/tmpl/module/members/index.tt
deleted file mode 100644 (file)
index 9a505fb..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-
-[% PROCESS macro/fields.tt %]
-<div class="display-container">
-  
-  <div id="pnlmemberlist">
-    <div id="tbl_members"></div>
-  </div>
-
-  <div id="pnlmemberdata">
-      <header class="top bar border-bottom theme-light" id="member_toolbar" style="display: none;">
-        <button class="bar-item button border" onclick="loadlist(); return false;">Zreck zur Lëscht</button>
-        <button class="bar-item button border right" onclick="">
-      </header>
-      
-      <div class="container padding-24 card  margin-bottom" style="margin-top: 50px;">
-        <form id="frm_members">
-        <h3>Perséinlech Donnéen</h3>
-        <div class="row-padding"> 
-        <div class="container">
-          
-          [% fieldhidden('id','members','ident') %]
-          [% fieldeditbox('surname','members','Numm','half','') %]
-          [% fieldeditbox('prename','members','Virnumm','half','') %]
-          [% fieldeditbox('address','members','Address','','') %]
-          [% fieldeditbox('zip','members','CP','quarter','') %]
-          [% fieldeditbox('city','members','Uerschaft','half','') %]
-          [% fieldeditbox('country','members','Land','quarter','') %]
-      </div>
-      <div class="container">
-          [% fieldeditbox('phone','members','Telefon','third','') %]
-          [% fieldeditbox('nationality','members','Nationalitéit','third','') %]
-          [% fielddatebox('birthday','members','Gebuertsdatum','third','') %]
-      </div>
-      <div class="container right-align">
-        <button class="button blue-grey margin" onclick="saveform('members');return false;">Spaicheren</button>
-      </div>   
-          </div>
-        </form> 
-      </div>
-      <div class="container padding-24 card margin-bottom">
-    <form id="frm_users">
-        <h3>Benotzer-Kont</h3>
-        
-            <div class="container">
-            [% fieldhidden('users','id','ident') %]
-            [% fieldemailbox('username','users','E-Mail (Login)','','','','') %]
-          </div>
-          <div class="container">
-            <h4>Accès <small> Status: <span class="text-green">aktiv</span></small></h4>
-            <div class="container">
-              <div class="container third">
-                  <input class="check" id="useringroups_idgroup" data-ident_useringroups_id="3" data-id_user="" value="1" type="checkbox">
-                  <label>Accès Club</label>
-                </div>
-                <div class="container third">
-                    <input class="check" id="useringroups_idgroup" data-ident_useringroups_id="2" data-id_user="" value="1" type="checkbox">
-                    <label>Accès FLD</label>
-                  </div>
-                </div>
-              <div class="container margin">
-                  <button class="button blue-grey" id="btnsaveuser" onclick="formsave('users');return false;">spaicheren</button>
-                  <button class="button green" id="btnsetactive" style="display:none;">aktivéieren</button>
-                  <button class="button red" id="btnblockuser" style="display: none;">blockéieren</button>
-                  <button class="button orange" id="btnsendnewpassword" style="display:none;">neit Passwuert schecken</button>
-              </div>
-          </div>
-    </form>
-    </div>
-      <div class="container padding-24 card">
-          <h3>Photo</h3>
-          <div class="row-padding">
-            <form id="frm_picture">
-                [% fieldhidden('profile_photo','members') %]
-                [% fieldhidden('members','link','ident') %]
-            <div class="container half">
-              <h4>Aktuell (validéiert) Photo</h4>
-              <img src="[% abspath %]data/noprofileimg.png" class="border" style="max-width: 207px;max-height: 266px;" id="img_profile_photo" />
-            </div>
-          
-              <div class="container half">
-                <h4>Nei Photo</h4>
-                
-                
-                <canvas class="border" style="width: 207px;height: 266px;" id="img_profile_photo_new"></canvas>
-                <input type="file" id="file_newprofile_photo" class="input" data-filepath="" onchange="LoadCropper('file_newprofile_photo'); return false;"/>
-                <button class="button blue-grey" onclick="upload_picture('picture');return false;">Nei Photo eroplueden</button>
-                <button class="button red">Nei Photo läschen</button>
-              </div>
-            </form>  
-        </div>
-    </div>
-    [% INCLUDE block/dlgcropper.tt %]
-      <div class="container padding-24 card">
-        <h3>Lizenz</h3>
-        <div class="container">
-            <div id="tbl_license"></div>
-        </div>
-      </div>
-      
-  </div>
-
-</div>
diff --git a/app/tmpl/module/newsletter/index.js b/app/tmpl/module/newsletter/index.js
deleted file mode 100644 (file)
index 9e4eaf0..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-var tbl = null;
-function initpage(){
-  // flatpickr(".datefield",{altInput: true,
-  //   altFormat: "d.m.Y",
-  //   dateFormat: "Y-m-d",
-  //   "locale": "fr",
-  // });
-  tinymce.init({
-    selector: '.richeditarea',
-    branding: false,
-    menubar:false,
-    statusbar: false,
-    plugins: 'searchreplace autolink directionality visualblocks visualchars advlist lists textcolor colorpicker textpattern',
-    toolbar: 'bold italic underline strikethrough forecolor backcolor | link | alignleft aligncenter alignright alignjustify  | numlist bullist outdent indent  | removeformat',
-    image_advtab: true,
-    forced_root_block : '',
-    // init_instance_callback: function (editor) {
-      // editor.on('blur', function (e) {
-      //   //console.log('Editor was blurred!');
-      //   //console.log(e.target.id);
-      //   $("#" + e.target.id).html(editor.getContent());
-      //   //console.log(editor.getContent());
-      //   // if (savefield){
-      //   //   savefield(e.target.id);
-      //   // }
-      // });
-    // }
-  });
-  tbl = new Tabulator("#tbl_mailings", {
-    height: "100vh",
-    selectable:1,
-    selectablePersistence:false, // disable rolling selection
-    responsiveLayout:"collapse",
-    autoResize:true,
-    addRowPos:"top", 
-    layout:"fitColumns",
-    resizableRows:true,
-    columnHeaderSortMulti:false,
-    columns:[
-      {title:"Sujet", field:"title"},
-      {title:"Datum verscheckt", field:"dspsendate"},
-      {title:"Sender", field:"sender"},
-      {title:"Empfänger", field:"receipients"}
-    ],
-    //autoColumns:true,
-});
-  gettbldata();
-}
-
-function gettbldata(){
-  req.reqdata("POST","db.cgi",{"get":"mailinglist"},loadtbldata);
-}
-
-function loadtbldata(data){
-  if (data && data.sqldata){
-    tbl.setData(data.sqldata);
-  }
-}
-
-function viewtable(){
-  document.getElementById("mailingform").style.display = 'none';
-  document.getElementById("mailingtable").style.display = 'block'; 
-}
-
-function add(){
-  document.getElementById("mailingtable").style.display = 'none';
-  document.getElementById("mailingform").style.display = 'block';
-  
-  //app.loadpage('module/[% module %]/form_webnews.html','Neien Member');
-}
-
-function edit(){
-  var udata = tbl.getSelectedData();
-  var uid = udata[0].id;
-  document.getElementById("mailingtable").style.display = 'none';
-  document.getElementById("mialingform").style.display = 'block';
-  //app.loadpage('module/[% module %]/form_webnews.html?id='+uid,'News éditeieren');
-  //console.log(tbl.getSelectedData());
-}
-
-function duplicate(){
-  //console.log(tbl.getSelectedData());
-}
-
-function remove(){
-  var udata = tbl.getSelectedData();
-  var uid = udata[0].id;
-  //console.log(tbl.getSelectedData());
-}
-    
\ No newline at end of file
diff --git a/app/tmpl/module/newsletter/index.tt b/app/tmpl/module/newsletter/index.tt
deleted file mode 100644 (file)
index 94f3bc8..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-[% INCLUDE "module/$module/tbltoolbar.tt" %]
-[% PROCESS macro/fields.tt %]
-<div id="mailingtable">
-<table id="tbl_mailings" style="margin-top: 42px;">
-  <thead>
-    <tr>
-      
-      <th>Sujet</th>
-      <th>Verscheckt den</th>
-      <th>Sender</th>
-      <th>Empfänger</th>
-    </tr>
-  </thead>
-  <tbody>
-
-</tbody>
-</table>
-</div>
-<div id="mailingform" style="display: none; margin-top: 42px;" >
-  <div class="container">
-  <form id="frm_mailings">
-  [% fieldhidden('id','mailings','ident') %]
-  [% fieldselectbox('id_sender','mailings','Sender','','') %]
-  [% fieldselectbox('receipient_groups','mailings','Empfänger','','') %]
-  [% fieldeditbox('subject','mailings','Titel','','') %]
-  [% fieldrichtextarea('body','mailings','Message','','','200px','') %]
-  <div class="container right-align">
-    <button class="button blue-grey margin" onclick="saveform('mailings');return false;">[% btnname %]</button>
-    <button class="button blue-grey margin" onclick="sendmailing();return false;">Verschecken</button>
-  </div>
-  
-</form>
-</div>
-</div>
\ No newline at end of file
diff --git a/app/tmpl/module/newsletter/tbltoolbar.tt b/app/tmpl/module/newsletter/tbltoolbar.tt
deleted file mode 100644 (file)
index 25ee70b..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-<div class="top border-bottom">
-
-<div class="bar">
-    <button class="bar-item button border blue-grey" onclick="viewtable();"><img src="[% abspath%]img/icons/inbox_white.svg" style="height: 24px;"/> Messagen</button>
-    <button class="bar-item button border right red" onclick="remove();"><img src="[% abspath%]img/icons/remove_white.svg" style="height: 24px;"/></button>
-    <button class="bar-item button border right blue-grey" onclick="duplicate();"><img src="[% abspath%]img/icons/duplicate_white.svg" style="height: 24px;"/></button>
-    <button class="bar-item button border right blue-grey" onclick="edit();"><img src="[% abspath%]img/icons/edit_white.svg" style="height: 24px;"/></button>
-    <button class="bar-item button border right blue-grey" onclick="add();"><img src="[% abspath%]img/icons/plus_white.svg" style="height: 24px;"/></button>
-   
-</div>
-</div>
\ No newline at end of file
diff --git a/app/tmpl/module/profile.tt b/app/tmpl/module/profile.tt
deleted file mode 100644 (file)
index 31d15ab..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-
-[% PROCESS macro/fields.tt %]
-  <div class="bar moduletoolbar">
-    <div class="bar-item PageHeadTitle">Profil</div>
-  </div>
-<div class="display-container" style="height: calc(100vh - 110px);overflow-y: scroll;">
-    <div class="container padding-24 card margin-bottom">
-    <form id="frm_users">
-        <h3>Benotzer-Kont</h3>
-        <div class="row-padding">
-            <div class="container half">
-             [% #fieldhidden('users','id','ident') %]
-            [% fieldeditbox('username','users','E-Mail (Login)','','readonly','') %]
-            <div class="container">
-                <button class="button blue-grey margin" onclick="opendlgusername();return false;">E-mail (Login) änneren</button>
-              </div> 
-            </div>
-            <div class="container half margin-top padding">
-              
-            <button class="button blue-grey" onclick="opendlgpassword();return false;">Passwuert änneren</button>
-          </div>
-        </div>
-    </form>
-    </div>
-      
-      <div class="container padding-24 card  margin-bottom">
-        <form id="frm_members">
-        <h3>Perséinlech Donnéen</h3>
-        <div class="row-padding"> 
-        <div class="container">
-          
-          [% fieldhidden('id','members','ident') %]
-          [% fieldeditbox('surname','members','Numm','half','readonly') %]
-          [% fieldeditbox('prename','members','Virnumm','half','readonly') %]
-          [% fieldeditbox('address','members','Address','','readonly') %]
-          [% fieldeditbox('zip','members','CP','quarter','readonly') %]
-          [% fieldeditbox('city','members','Uerschaft','half','readonly') %]
-          [% fieldeditbox('country','members','Land','quarter','readonly') %]
-      </div>
-      <div class="container">
-          [% fieldeditbox('phone','members','Telefon','third','readonly') %]
-          [% fieldeditbox('nationality','members','Nationalitéit','third','readonly') %]
-          [% fielddatebox('birthday','members','Gebuertsdatum','third','readonly') %]
-      </div>
-      <!--<div class="container right-align">
-        <button class="button blue-grey margin" onclick="//saveform('members');return false;">Spaicheren</button>
-      </div>-->
-          </div>
-        </form> 
-      </div>
-      <div class="container padding-24 card">
-        <h3>Photo</h3>
-        <div class="row-padding">
-          <form id="frm_picture">
-              [% fieldhidden('profile_photo','members') %]
-              [% fieldhidden('members','link','ident') %]
-          <div class="container half">
-            <h4>Aktuell Photo</h4>
-            <img src="[% abspath %]data/noprofileimg.png" class="border" style="max-width: 207px;max-height: 266px;" id="img_profile_photo" />
-          </div>
-
-            <div class="container half">
-              <h4>Nei Photo</h4>
-              <div class="panel light-blue padding-16">Fir d'Photo auszetauschen, scheckt w.e.g. är nei Photo via E-Mail un <br/><a href="webmaster@fld.lu">webmaster@fld.<br/>lu</a><br/>Vergiesst w.e.g. Net Lizenz-Nummer an Numm vum Spiller matt unzegin</div>
-              <!--<img class="border" style="width: 207px;height: 266px;" id="img_profile_photo_new" />
-              <input type="file" id="profile_newphoto" name="profile_photo" class="input" />
-              <button class="button blue-grey" onclick="upload_picture('picture');return false;">Nei Photo eroplueden</button>
-              <button class="button red">Nei Photo läschen</button>-->
-            </div>
-          </form>  
-      </div>
-  </div>
-</div>
-   [% #INCLUDE block/dlgcropper.tt %]
-  [% INCLUDE block/dlgpassword.tt %]
-  [% INCLUDE block/dlgusername.tt %]
-  <script type="text/javascript" src="profile/[% pagename %].js?v=[% vstamp %]"></script>
-  
-
diff --git a/app/tmpl/module/profile/profile.js b/app/tmpl/module/profile/profile.js
deleted file mode 100644 (file)
index 3ec4bb0..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-var iduser="[% session.id %]";
-
-function initpage(){
-  flatpickr(".datefield",{altInput: true,
-    altFormat: "d.m.Y",
-    dateFormat: "Y-m-d",
-    "locale": "fr",
-  });
-  loadmemberdata(iduser);
-  loadaccountdata(iduser);
-}
-
-function loadaccountdata(id){
-  req.reqdata("POST","db.cgi",{"get":"userdata","filter":"id="+id},fillformaccount);
-}
-function loadmemberdata(id){
-  req.reqdata("POST","db.cgi",{"get":"memberdata","filter":"id_user="+id},fillformmember);
-}
-function fillformaccount(data){
-  if (data && data.sqldata){
-    var frm = document.querySelectorAll('.data_users');
-    for (var f in frm){
-      if (data.sqldata[0][frm[f].id]){
-        if ((frm[f].tagName == 'INPUT') || (frm[f].tagName == 'SELECT')){
-          if (frm[f].classList.contains("datefield")){
-            frm[f]._flatpickr.setDate(data.sqldata[0][frm[f].id]);
-          } else {
-            frm[f].value=data.sqldata[0][frm[f].id];
-          }
-        }
-      }
-    }
-  }
-}
-
-
-function fillformmember(data){
-  // console.log(data);
-  if (data && data.sqldata){
-    var frm = document.querySelectorAll('.data_members');
-    for (var f in frm){
-      // console.log(frm[f].tagName);
-      // console.log(frm[f].id);
-      if (data.sqldata[0][frm[f].id]){
-        //console.log(frm[f].tagName + " " + frm[f].type + " " + frm[f].id);
-        if ((frm[f].tagName == 'INPUT') || (frm[f].tagName == 'SELECT')){
-          if (frm[f].classList.contains("datefield")){
-            frm[f]._flatpickr.setDate(data.sqldata[0][frm[f].id]);
-          } else {
-            frm[f].value=data.sqldata[0][frm[f].id];
-          }
-          
-        }
-      }
-
-    }
-    if (document.getElementById("profile_photo").value != ""){
-      document.getElementById("img_profile_photo").src = '../../data/members/' + document.getElementById("profile_photo").value+ "?upd="+ data.sqldata[0].modified;
-    }
-    // console.log(frm);
-  }
-}
-
-
diff --git a/app/tmpl/module/ranking/index.js b/app/tmpl/module/ranking/index.js
deleted file mode 100644 (file)
index b1922e1..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-var tbl = null;
-
-function initpage(){
-  // flatpickr(".datefield",{altInput: true,
-  //   altFormat: "d.m.Y",
-  //   dateFormat: "Y-m-d",
-  //   "locale": "fr",
-  // });
-
-  tbl = new Tabulator("#tbl_rankings", {
-    height: "95vh",
-    selectable:1,
-    selectablePersistence:false, // disable rolling selection
-    responsiveLayout:"collapse",
-    autoResize:true,
-    addRowPos:"top", 
-    layout:"fitColumns",
-    resizableRows:true,
-    columnHeaderSortMulti:false,
-    columns:[
-      {title:"Positioun", field:"seasonrank", sorter:"number"},
-      {title:"surname", field:"Numm", sorter:"string",editor:"input",headerFilter:"input"},
-      {title:"prename", field:"virnumm", storter:"html",editor:"input",headerFilter:"input"},
-      {title:"saison", field:"season", storter:"html",editor:"input",headerFilter:"input"},
-      {title:"1 Ranglëscht", field:"rl1", sorter:"number",editor:"input",width: 100},
-      {title:"2 Ranglëscht", field:"rl2", sorter:"number",editor:"input",width: 100},
-      {title:"3 Ranglëscht", field:"rl3", sorter:"number",editor:"input",width: 100},
-      {title:"4 Ranglëscht", field:"rl4", sorter:"number",editor:"input",width: 100},
-      {title:"5 Ranglëscht", field:"rl5", sorter:"number",editor:"input",width: 100},
-      {title:"6 Ranglëscht", field:"rl6", sorter:"number",editor:"input",width: 100},
-      {title:"7 Ranglëscht", field:"rl7", sorter:"number",editor:"input",width: 100},
-      {title:"Total", field:"total", sorter:"number",width: 100}
-    ],
-    //autoColumns:true,
-});
-  gettbldata();
-}
-
-// function getrankingscategories(){
-//   req.reqdata("POST","db.cgi",{"get":"memberlist","filter":"id_club=" + clubid +" and status='aktiv'"},fillclubmembers);
-// }
-
-
-
-function gettbldata(){
-  req.reqdata("POST","db.cgi",{"get":"rankings"},loadtbldata);
-}
-
-function loadtbldata(data){
-  if (data && data.sqldata){
-    tbl.setData(data.sqldata);
-  }
-}
-
-function viewtable(){
-  document.getElementById("rankingsform").style.display = 'none';
-  document.getElementById("rankingstable").style.display = 'block'; 
-}
-
-function add(){
-
-  // var frm = document.querySelectorAll('.data_rankings');
-  //     for (var f in frm){
-  //         if ((frm[f].tagName == 'INPUT') || (frm[f].tagName == 'SELECT')){
-  //           if (frm[f].classList.contains("datefield")){
-  //             frm[f]._flatpickr.setDate("");
-  //           } else {
-  //             frm[f].value="";
-  //             // if (frm[f].id == 'teams'){
-  //             //   locations_teams.clearStore();
-  //             // }
-  //           }
-
-  //         } 
-  //     }
-  // document.getElementById("rankingstable").style.display = 'none';
-  // document.getElementById("rankingsform").style.display = 'block';
-  // displayeditbuttons('block'); 
-}
-
-function edit(){
-  var udata = tbl.getSelectedData();
-  var uid = udata[0].id;
-  console.log(uid);
-  req.reqdata("POST","db.cgi",{"get":"rankingslist","filter":"id=" + uid},fillformrankings);
-  document.getElementById("rankingstable").style.display = 'none';
-  document.getElementById("rankingsform").style.display = 'block';
-  displayeditbuttons('block'); 
-  //app.loadpage('module/[% module %]/form_webrankings.html?id='+uid,'rankings éditeieren');
-  //console.log(tbl.getSelectedData());
-}
-
-function fillformrankings(data){
-  console.log(data);
-  if (data && data.sqldata){
-    var frm = document.querySelectorAll('.data_rankings');
-    for (var f in frm){
-      console.log(frm[f].classList);
-      if (data.sqldata[0][frm[f].id]){
-        if ((frm[f].tagName == 'INPUT') || (frm[f].tagName == 'SELECT') || frm[f].tagName == 'TEXTAREA'){
-          if (frm[f].classList.contains("datefield")){
-            frm[f]._flatpickr.setDate(data.sqldata[0][frm[f].id]);
-          } else if (frm[f].classList.contains("richeditarea")){
-            console.log(frm[f].id + " is richeditarea");
-            tinymce.get(frm[f].id).setContent(data.sqldata[0][frm[f].id]);
-          } else {
-            frm[f].value=data.sqldata[0][frm[f].id];
-          } 
-          
-        } 
-      }
-    }
-  }
-}
-
-function duplicate(){
-  console.log(tbl.getSelectedData());
-}
-
-function remove(){
-  var udata = tbl.getSelectedData();
-  var uid = udata[0].id;
-  console.log(tbl.getSelectedData());
-  if (confirm("Bass du secher dass déi ausgewielten rankings läschen wells?")){
-    req.reqdata("POST","db.cgi",{"del":"1","ident_rankings_id":udata[0].id},gettbldata);
-  }
-}
-    
\ No newline at end of file
diff --git a/app/tmpl/module/ranking/index.tt b/app/tmpl/module/ranking/index.tt
deleted file mode 100644 (file)
index a5bd541..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-
-  [% INCLUDE "module/$module/tbltoolbar.tt" %]
-<div id="newstable">
-<table id="tbl_ranking" style="margin-top: 42px;">
-</tbody>
-</table>
-</div>
-
diff --git a/app/tmpl/module/ranking/tbltoolbar.tt b/app/tmpl/module/ranking/tbltoolbar.tt
deleted file mode 100644 (file)
index 6ee331f..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<div class="top border-bottom theme-light">
-
-<div class="bar">
-    <button class="bar-item button border blue-grey" onclick="viewtable();"><img src="[% abspath%]img/icons/newspaper_white.svg" style="height: 24px;"/> Raglëschten</button>
-    <button class="bar-item button border right red tlbbtnlist" onclick="remove();"><img src="[% abspath%]img/icons/remove_white.svg" style="height: 24px;"/></button>
-    
-    
-    <button class="bar-item button border right blue-grey tlbbtnlist" onclick="add();"><img src="[% abspath%]img/icons/plus_white.svg" style="height: 24px;"/></button>
-   
-</div>
-</div>
-<script>
-function displayeditbuttons(dsp){
-  var tblbtns = document.getElementsByClassName("tlbbtnlist");
-  console.log(tblbtns);
-  for (var k in tblbtns){
-    tblbtns[k].style.display = dsp;
-  } 
-  return false;
-}
-</script>
\ No newline at end of file
diff --git a/app/tmpl/module/users.tt b/app/tmpl/module/users.tt
deleted file mode 100644 (file)
index 409a997..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-[% PROCESS macro/fields.tt %]
-<div class="display-container animate-opacity">
-<div class="bar moduletoolbar">
-    <div class="bar-item PageHeadTitle">Memberen</div>
-    <button class="bar-item toolbarbtn center" onclick="newlicense();"><span class="icon-plus" style="font-size: 16px;"></span><br/>Nei Lizenz</button>
-    <button class="bar-item toolbarbtn center" onclick="newtransfer();"><span class="icon-transfer" style="font-size: 16px;"></span><br/>Transfer</button>
-    <button class="bar-item toolbarbtn center" onclick="myclub();"><span class="icon-club" style="font-size: 16px;"></span><br/>Main Club</button>
-    [% IF (session.usergroups.search('fld') == 1) %]
-    <button class="bar-item toolbarbtn center" onclick="myclub();"><span class="icon-table" style="font-size: 16px;"></span><br/>FLD Memberen</button>
-    <button class="bar-item toolbarbtn right" onclick="setusergroups();"><span class="icon-usergroup" style="font-size: 16px;"></span><br/>Berechegungen</button>
-    <button class="bar-item toolbarbtn right" onclick="setlogin();"><span class="icon-access" style="font-size: 16px;"></span><br/>Login</button>
-    [% END %]
-</div>
-<div class="container" style="display: block;height: calc(100vh-300px); overflow-y: scroll;">
-<div class="row">
-[% FOREACH cl=dksdb.query("select * from vw_clublist;") %]
-  <div class="container">
-  <div class="card">
-    <header class="container">
-      <h3>[% cl.club %]</h3>
-    </header>
-    <div class="container">
-      <img src="[% IF cl.logo %]../media/clubs/[% cl.logo %][% ELSE %]../media/clubs/logo_club.png[% END %]" style="height: 96px;">
-      <div class="container">Lizenzen: <strong>[% cl.licenses %]</strong></div>
-      
-    </div>
-
-  </div>
-  </div>
-[% END %]
-</div>
-</div>
-</div>
-[% IF (session.usergroups.search('fld') == 1) %]
-<div id="dlgusergroups" class="modal">
-  <div class="modal-content animate-top card-4">
-    <header class="container"> 
-      <span onclick="document.getElementById('dlgusergroups').style.display='none'; return false;" 
-       class="button display-topright"><span class="icon-close"></span></span>
-      <h2>Benotzer Accès</h2>
-    </header>
-    <div class="container">
-        [% fieldeditbox("surname","display","Numm",'half','readonly','') %]
-        [% fieldeditbox("prename","display","Virnumm",'half','readonly','') %]
-      <form id="frm_usergroups">
-        [% fieldhidden("id","users","ident",'') %]
-        [% fieldmultiselectbox("usergroup_ids","useringroups","Accès",'','','') %]
-        
-      </form>
-    </div>
-    <footer class="container right-align padding-16">
-        
-        <button class="button theme-light border" onclick="document.getElementById('dlgusergroups').style.display='none'; return false;">Oofbriechen</button>
-        <button class="button blue-grey margin" onclick="saveusergroupsform();return false;">Spaicheren</button>
-    </footer>
-  </div>
-</div>
-<div id="dlglogin" class="modal">
-  <div class="modal-content animate-top card-4">
-    <header class="container"> 
-      <span onclick="document.getElementById('dlglogin').style.display='none'; return false;" 
-       class="button display-topright">&times;</span>
-      <h2>Benotzer E-Mail</h2>
-    </header>
-    <div class="container">
-        <div id="nunmsg" ></div>
-        [% fieldeditbox("surname","display","Numm",'half','readonly','') %]
-        [% fieldeditbox("prename","display","Virnumm",'half','readonly','') %]
-      <form id="frm_users">
-        [% fieldhidden("id","users","ident",'') %]
-        [% fieldeditbox("username","users","Login / E-Mail",'','','') %]
-        [% fieldcheckbox("blocked","users","Login blockéieren",'','','1') %]
-      </form>
-    </div>
-    <footer class="container right-align padding-16">
-      <!--<button class="button orange border" onclick="sendnewpassword(); return false;">neit Passwuert schecken</button>-->
-      <button class="button theme-light border" onclick="document.getElementById('dlglogin').style.display='none'; return false;">Oofbriechen</button>
-      <button class="button blue-grey margin" onclick="checkemail();return false;">Spaicheren</button>
-    </footer>
-  </div>
-</div>
-[% END %]
diff --git a/app/tmpl/module/users/users.js b/app/tmpl/module/users/users.js
deleted file mode 100644 (file)
index 54676d2..0000000
+++ /dev/null
@@ -1,260 +0,0 @@
-
-/* [% sid = session.id %]
-[% IF (session.usergroups.search('fld') != 1) %]
-[% qclub = dksdb.query("select id_club from vw_userlist where id=$sid;") %]
-[% club = qclub.get_all() %]
-[% END %] */
-var tbl= null;
-var sid = "[% session.id %]";
-var sel_usergroups = null;
-
-//var idclub="[% club.0.id_club %]";
-function initpage(){
- /* [% IF (session.usergroups.search('fld') == 1) %] */
-  sel_usergroups = new Choices('#usergroup_ids',{
-    searchEnabled: false,
-    itemSelectText: 'auswielen...',
-    removeItemButton: true,
-    choices : []
-  });
-  tbl = new Tabulator("#tbl_users", {
-    height: "calc(100vh - 170px)",
-    headerFilterPlaceholder:"filter...",
-    layout:"fitDataFill",
-    selectable:1,
-    initialSort:[
-      {column:"club", dir:"asc"} //then sort by this second
-    ],
-    groupBy:["club"],
-    groupStartOpen:[false],
-    groupHeader:[function(value, count, data){ return value;}],
-    
-    //responsiveLayout:"collapse",
-    columns:[
-    {title:"Club", field:"club",headerFilter:"input",download:true,visible: false},  
-    {title:"Numm", field:"surname",headerFilter:"input",download:true},
-    {title:"Virnumm", field:"prename",headerFilter:"input",download:true},
-    {title:"Lizenz",field:"license",download:true, headerSort: false},
-    {title:"Accès",field:"group_ids",download:true,headerFilter:"input", headerSort: false},
-    {title:"E-mail",field:"username",download:true, headerSort: false},
-    {title:"Reg.Code", field:"regcode",download:true, headerSort: false},
-    {title:"Blockéiert", field:"blocked", headerSort: false,formatter:"tickCross", formatterParams:{
-      allowEmpty:true,
-      allowTruthy:true,
-      crossElement:"",
-  }},
-    ],
-});
-
-  getusergroups();
- /* [% ELSE %] */
-  tbl = new Tabulator("#tbl_users", {
-    headerFilterPlaceholder:"filter...",
-    height: "calc(100vh - 200px);",
-    layout:"fitDataFill",
-    selectable:1,
-    responsiveLayout:"collapse",
-    columns:[
-    {title:"Club", field:"club"},  
-    {title:"Numm", field:"surname",headerFilter:"input",download:true},
-    {title:"Virnumm", field:"prename",headerFilter:"input",download:true},
-    {title:"Lizenz",field:"license",download:true},
-    {title:"Accès",field:"group_ids",download:true},
-    {title:"E-mail",field:"username",download:true},
-    {title:"Reg.Code", field:"regcode",download:true},
-    ],
-});
- /* [% END %] */
-  gettbldata();
-}
-
-function gettbldata(){
- // [% IF (session.usergroups.search('fld') == 1) %]
-  req.reqdata("POST","db.cgi",{"get":"userlist","filter":"status='aktiv'"},loadtbldata);
- // [% ELSE %]
-  req.reqdata("POST","db.cgi",{"get":"userlist","filter":"status='aktiv' and id_club=[% club.0.id_club %]"},loadtbldata);
- // [% END %]
-}
-
-function loadtbldata(data){
-  if (data && data.sqldata){
-    tbl.setData(data.sqldata);
-  }
-}
-
-// function xlsxexport(){
-//   tbl.download("xlsx", "fld.lu_Benotzer.xlsx", {sheetName:"Memberen"});
-// }
-
-// function pdfexport(){
-//   tbl.download("pdf", "fld.lu_Benotzer.pdf", {
-//     orientation:"landscape", 
-    
-//     jsPDF:{
-//         unit:"mm", 
-//     },
-//     autoTable(doc){ 
-//         doc.text("Benotzer Site fld.lu", 10, 10);
-//         // styles: {
-//         //     fillColor: [100, 255, 255]
-//         // },
-//         // columnStyles: {
-//         //     id: {fillColor: 255}
-//         // },
-//         return {
-//           margin: {top: 20},
-//         }
-        
-//     },
-//     documentProcessing:function(doc){
-//         //carry out an action on the doc object
-//     }
-// });
-// }
-
-// [% IF (session.usergroups.search('fld') == 1) %]
-    function setusergroups(){
-      var udata = tbl.getSelectedData();
-      if (udata[0]){
-        var uid = udata[0].id;
-        req.reqdata("POST","db.cgi",{"get":"userdata","filter":"id=" + uid},fillusergroupform);
-      }
-    }
-    function fillusergroupform(data){
-    
-      if (data && data.sqldata){
-        var frm = document.querySelectorAll('.data_users,.data_display,.data_useringroups');
-        for (var f in frm){
-          
-          if (data.sqldata[0][frm[f].id]){
-            if ((frm[f].tagName == 'INPUT') || (frm[f].tagName == 'SELECT')) {
-              if (frm[f].id == "usergroup_ids"){
-                
-                var argrp = data.sqldata[0][frm[f].id].split(",");
-                //console.log(argrp);
-                sel_usergroups.setChoiceByValue(argrp);
-              }  else {
-                frm[f].value=data.sqldata[0][frm[f].id];
-              } 
-            }
-          }
-        }
-        document.getElementById('dlgusergroups').style.display='block';
-      }
-      
-    }
-
-    function getusergroups(){
-      req.reqdata("POST","db.cgi",{"get":"usergroups"},fillusergroups);
-      return false;
-    }
-    function fillusergroups(data){
-      var pug = [];
-      if (data && data.sqldata){
-        for (var i in data.sqldata){
-          pug.push({value:data.sqldata[i].id,label:data.sqldata[i].groupname});
-        }
-      }
-      sel_usergroups.setChoices(pug, 'value', 'label', true);
-      
-      return false;
-    }
-
-    function saveusergroupsform(){
-      var flds = getformcontent("usergroups",{});
-      //console.log(flds);
-
-      req.reqdata("POST","db.cgi",{"fn":"setgroupaccess","params": flds.ident_users_id + ",'{" + flds.useringroups_usergroup_ids.join(',') +"}'"},ugsaved);
-      return false;
-    }
-
-    function ugsaved(data){
-      //console.log(data);
-      gettbldata();
-      document.getElementById('dlgusergroups').style.display='none';
-      formsaved(null);
-    }
-
-    function setlogin(){
-      var udata = tbl.getSelectedData();
-      document.getElementById("nunmsg").innerHTML = ''
-      if (udata[0]){
-        var uid = udata[0].id;
-        req.reqdata("POST","db.cgi",{"get":"userdata","filter":"id=" + uid},fillloginform);
-      }
-    }
-    function fillloginform(data){
-      document.getElementById("blocked").checked = false;
-      document.getElementById("username").value = "";
-      if (data && data.sqldata){
-        var frm = document.querySelectorAll('.data_users,.data_display,.data_useringroups');
-        for (var f in frm){
-          
-          if (data.sqldata[0][frm[f].id]){
-            if ((frm[f].tagName == 'INPUT') || (frm[f].tagName == 'SELECT')) {
-              
-              if (frm[f].type == "checkbox"){
-                document.getElementById("blocked").checked = true;
-              } else {
-                frm[f].value=data.sqldata[0][frm[f].id];
-              } 
-            }
-          }
-        }
-        document.getElementById('dlglogin').style.display='block';
-      }
-    }
-
-    function setusername(){
-      var flds = getformcontent("users",{});
-      //console.log(flds);
-      flds["set"] = 1;
-      req.reqdata("POST","db.cgi",flds,loginsaved);
-      return false;
-    }
-
-    function loginsaved(data){
-      //console.log(data);
-        gettbldata();
-        document.getElementById('dlglogin').style.display='none';
-        formsaved(null);      
-    }
-    function ugsaved(data){
-      //console.log(data);
-        gettbldata();
-        document.getElementById('dlgusergroups').style.display='none';
-        formsaved(null);
-    }
-
-    function sendnewpassword(){
-      var flds = getformcontent("login",{});
-      //console.log(flds);
-      return false;
-    }
-
-    function checkemail(){
-      var newusername = document.getElementById("username").value;
-      //console.log("username: " + newusername);
-      if (validateEmail(newusername)){
-        req.reqdata("POST","db.cgi",{"get":"userdata","filter":"username='"+ newusername+ "' and id != " + document.getElementById("id").value},checkmailreturn);
-      }else {
-        document.getElementById("nunmsg").innerHTML= '<div class="panel red">w.e.g. eng richteg email agin!</div>';
-      }
-      return false;
-    }
-    
-    function checkmailreturn(data){
-      console.log(data);
-      if (data && data.sqldata.length > 0){
-        document.getElementById("nunmsg").innerHTML= '<div class="panel red">Et existéiert schon een aaneren Kont matt deser E-mail!</div>';
-      } else {
-        setusername();
-      }
-      return false;
-    }
-
-    function validateEmail(email) {
-      var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
-      return re.test(String(email).toLowerCase());
-    }
-// [% END %]
\ No newline at end of file
diff --git a/app/tmpl/module/webnews.tt b/app/tmpl/module/webnews.tt
deleted file mode 100644 (file)
index de2be95..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-[% PROCESS macro/fields.tt %]
-<div class="display-container panel" id="pnl_newstable">
-  <div class="bar border-bottom toolbar">
-    <a class="bar-item toolbarbtn" href="[% abspath %]index.html" ><span class="icon-back"></span>zerëck</a>
-    <div class="bar-item PageHeadTitle">Websait News</div>
-    [% IF (session.usergroups.search('fld') == 1) %]
-    <button class="bar-item toolbarbtn right text-red" onclick="webnews.remove();"><span class="icon-trash" style="font-size: 16px;"/></span>läschen</button>
-    <button class="bar-item toolbarbtn right" onclick="webnews.edit();"><span class="icon-edit" style="font-size: 16px;"/></span>éditéieren</button>
-     <button class="bar-item toolbarbtn right" onclick="webnews.add();"><span class="icon-plus" style="font-size: 16px;"/></span>nei</button>
-     [% END %]
-  </div> 
-  <div id="tbl_news"></div>
-</div>
-<div class="panel display-container" id="pnl_newsform" style="display: none;" >
-<div class="bar border-bottom toolbar">
-    <button class="bar-item toolbarbtn" onclick="app.viewpanel('newstable');" ><span class="icon-back"></span>zerëck</button>
-    <div class="bar-item PageHeadTitle">News Artikel</div>
-  </div> 
-<form id="frm_news">
-  <div class="container">
-  <form id="frm_news">
-  [% fieldhidden('id','news','ident') %]
-  [% fieldeditbox('title','news','Titel','','') %]
-  [% fieldeditbox('link','news','Link Websait (ouni .html)','','') %]
-  [% fieldmultiselectbox('categories','news','Publikatioun op','','') %]
-  [% fielddatebox('publishdate','news','Datum Publikation','half','') %]
-  [% fielddatebox('unpublishdate','news','Datum Publikation bis','half','') %]
-  
-  [% fieldrichtextarea('newspart1','news','Short News (Frontpage + News)','','','300px','') %]
-  [% fieldrichtextarea('newspart2','news','Supplément News (Just News)','','','500px','') %]
-  [% formsavebutton('news','Spaicheren','') %]
-</form>
-</div>
-</div>
-[% INCLUDE block/dlguploadfile.tt %]
-<script type="text/javascript" src="webnews/[% pagename %].js?v=[% vstamp %]"></script>
\ No newline at end of file
diff --git a/app/tmpl/module/webnews/webnews.js b/app/tmpl/module/webnews/webnews.js
deleted file mode 100644 (file)
index ec3705b..0000000
+++ /dev/null
@@ -1,224 +0,0 @@
-var tbl = null;
-var sel_category=null;
-function initpage(){
-  webnews.inittable();
-  webnews.initform();
-}
-let webnews = {
-  tbl: null,
-  choices: {"categories":null},
-  inittable: function(){
-    webnews.tbl = new Tabulator("#tbl_news", {
-      height: "calc(100vh - 65px)",
-      selectable:1,
-      // selectablePersistence:false,
-      // responsiveLayout:"collapse",
-      autoResize:true,
-      addRowPos:"top", 
-      layout:"fitDataFill",
-      resizableRows:true,
-      columnHeaderSortMulti:false,
-      columns:[
-        
-        {title:"Titel", field:"title", formatter:"html",responsive:0, width: 400},
-        {title:"Datum vun", field:"dsppublishdate",headerSort:"datetime",width: 100},
-        {title:"Datum bis", field:"dspunpublishdate",headerSort:"datetime",width: 100},
-        {title:"Kategorie", field:"categorylist", headerSort:false,width: 140},
-      ],
-  });
-    webnews.gettbldata();
-  },
-  initform: function(){
-    flatpickr(".datefield",{altInput: true,
-      altFormat: "d.m.Y",
-      dateFormat: "Y-m-d",
-      allowInput: true,
-      "locale": "fr",
-    });
-    tinymce.init({
-      selector: '.richeditarea',
-      plugins: 'preview paste importcss searchreplace autolink directionality code visualblocks visualchars fullscreen image link media template table charmap hr  nonbreaking anchor advlist lists wordcount imagetools textpattern noneditable charmap emoticons autoresize ',
-      imagetools_cors_hosts: ['picsum.photos'],
-      menubar: 'file edit view insert format tools table',
-      toolbar: 'undo redo | bold italic underline strikethrough | fontsizeselect  | alignleft aligncenter alignright alignjustify | outdent indent |  numlist bullist | forecolor removeformat  | charmap emoticons | fullscreen  preview | insertfile image media link anchor',
-      toolbar_sticky: true,
-      language: 'de',
-      // content_css: [
-      //   '[% abspath %]/backoffice/css/w3pro.css'
-      // ],
-      forced_root_block : '',
-      min_height: 350,
-      branding: false,
-      importcss_append: true,
-      image_advtab: true,
-    image_title: true, 
-    automatic_uploads: true,
-    file_picker_types: 'image',
-    file_picker_callback: function (cb, value, meta) {
-        var input = document.createElement('input');
-      input.setAttribute('type', 'file');
-      input.setAttribute('accept', 'image/*');
-      input.onchange = function () {
-        var file = this.files[0];
-  
-        var reader = new FileReader();
-        reader.onload = function () {
-          var id = 'blobid' + (new Date()).getTime();
-          var blobCache =  tinymce.activeEditor.editorUpload.blobCache;
-          var base64 = reader.result.split(',')[1];
-          var blobInfo = blobCache.create(id, file, base64);
-          blobCache.add(blobInfo);
-          cb(blobInfo.blobUri(), { title: file.name });
-        };
-        reader.readAsDataURL(file);
-      };
-  
-      input.click();
-  
-      },
-      image_caption: true,  
-      noneditable_noneditable_class: "mceNonEditable",
-      contextmenu: "link image imagetools table",
-     });
-     webnews.choices["categories"] = new SlimSelect({
-      select: "#categories",
-      showSearch: false,
-      data: [{ value: 'News', text: 'News' },
-      { value: 'Frontpage', text: 'Frontpage' }]
-     });
-    //  webnews.choices["categories"] = sel_category = new Choices('#categories',{
-    //   searchEnabled: false,
-    //   itemSelectText: 'auswielen...',
-    //   removeItemButton: true,
-    //   choices : [{ value: 'News', label: 'News' },
-    //   { value: 'Frontpage', label: 'Frontpage' }]
-    // });
-  },
-  gettbldata: function (){
-    req.reqdata("POST","db.cgi",{"get":"newslist"},webnews.loadtbldata);
-  },
-  loadtbldata: function (data){
-    if (data && data.sqldata){
-      webnews.tbl.setData(data.sqldata);
-    }
-  },
-  // getnewscategories: function(){
-  //   req.reqdata("POST","db.cgi",{"get":"memberlist","filter":"id_club=" + clubid +" and status='aktiv'"},fillclubmembers);
-  // },
-  viewtable: function(){
-    gettbldata();
-    document.getElementById("newsform").style.display = 'none';
-    document.getElementById("newstable").style.display = 'block'; 
-    displayeditbuttons('block'); 
-  },
-  
-  add: function(){
-    var frm = document.querySelectorAll('.data_news');
-        for (var f in frm){
-            if ((frm[f].tagName == 'INPUT') || (frm[f].tagName == 'SELECT') || (frm[f].tagName == 'TEXTAREA')){
-              if (frm[f].classList.contains("datefield")){
-                if (frm[f]._flatpickr){
-                  frm[f]._flatpickr.clear();
-                }
-              } else if (frm[f].id == "categories"){
-                //sel_category.clearStore();
-              
-                sel_category.setChoiceByValue(['News','Frontpage']);
-              }else if (frm[f].classList.contains("richeditarea")){
-                tinymce.get(frm[f].id).setContent("");
-              }else {
-                frm[f].value="";
-              }
-  
-            } 
-        }
-    document.getElementById("title").addEventListener("change", onchangetitle);
-    document.getElementById("newstable").style.display = 'none';
-    document.getElementById("newsform").style.display = 'block';
-    //displayeditbuttons('none'); 
-  },
-  
-  edit: function(){
-    var udata = webnews.tbl.getSelectedData();
-    if (udata[0]){
-      req.reqdata("POST","db.cgi",{"get":"newslist","filter":"id=" + udata[0].id},webnews.fillformnews);
-      app.viewpanel("newsform");
-    }
-  },
-  
-  fillformnews: function(data){
-    //console.log(data);
-    if (data && data.sqldata){
-      var frm = document.querySelectorAll('.data_news');
-      for (var f in frm){
-        //console.log(frm[f].classList);
-        if (data.sqldata[0][frm[f].id]){
-          if ((frm[f].tagName == 'INPUT') || (frm[f].tagName == 'SELECT') || frm[f].tagName == 'TEXTAREA'){
-            if (frm[f].classList.contains("datefield")){
-              frm[f]._flatpickr.setDate(data.sqldata[0][frm[f].id]);
-            } else if (frm[f].id == "categories"){
-              //sel_category.setChoiceByValue(JSON.parse(data.sqldata[0][frm[f].id]));
-            } else if (frm[f].classList.contains("richeditarea")){
-             
-              tinymce.get(frm[f].id).setContent(data.sqldata[0][frm[f].id]);
-            } else {
-              frm[f].value=data.sqldata[0][frm[f].id];
-            } 
-            
-          } 
-        }
-      }
-      document.getElementById("title").addEventListener("change", webnews.onchangetitle);
-    }
-  },
-  
-  onchangetitle: function(){
-    var link = document.getElementById("link");
-    link.value = unaccent(document.getElementById("title").value);
-  },
-  
-  remove: function(){
-    var udata = tbl.getSelectedData();
-    if (udata[0]){
-      if (confirm("Bass du secher dass déi ausgewielten News läschen wells?")){
-        req.reqdata("POST","db.cgi",{"del":"1","ident_news_id":udata[0].id},webnews.gettbldata);
-      }
-    }
-  },
-  unaccent: function(text){
-    text = text.toLowerCase();
-    text = text.replace(/[á|à|â|ã|ä|å|ā|ă|ą]/g,"a");
-    text = text.replace(/[è|é|ê|ë|ē|ĕ|ė|ę|ě]/g,"e");
-    text = text.replace(/[ì|í|î|ï|ì|ĩ|ī|ĭ]/g,"i");
-    text = text.replace(/[ò|ó|ô|õ|ö|ō|ŏ|ő]/g,"o");
-    text = text.replace(/[ù|ú|û|ü|ũ|ū|ŭ|ů]/g,"u");
-    text = text.replace(/ß/g,"ss");
-    text = text.replace(/ç/g,"c");
-    text = text.replace(/œ/g,"oe");
-    text = text.replace(/[\W]+/g,"-");
-    return text;
-  }
-}
-
-
-
-
-// var afterformsaved = {
-//   action: function(data){
-//     //console.log(data);
-//     if (data.result.p.relpath){
-//       document.getElementById('image').value=data.result.p.relpath;
-//       if (document.getElementById("image").value != ''){
-//         document.getElementById("slider_img").src='../../../' + document.getElementById("image").value;
-//       }
-//     }
-    
-//   }
-// }
-
-
-
-
-    
-
-
diff --git a/app/tmpl/module/websites.tt b/app/tmpl/module/websites.tt
deleted file mode 100644 (file)
index b1aebdb..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-[% PROCESS macro/fields.tt %]
-<div class="top border-bottom theme-light">
-
-<div class="bar">
-    <button class="bar-item button border blue-grey" onclick="viewtable();"><img src="[% abspath%]img/icons/globe_white.svg" style="height: 24px;"/> Websaiten Lëscht</button>
-    <!-- <button class="bar-item button border right red tlbbtnlist" onclick="remove();"><img src="[% abspath%]img/icons/remove_white.svg" style="height: 24px;"/></button> -->
-    <!-- <button class="bar-item button border right blue-grey" onclick="duplicate();"><img src="[% abspath%]img/icons/duplicate_white.svg" style="height: 24px;"/></button> -->
-    <button class="bar-item button border right blue-grey tlbbtnlist" onclick="edit();"><img src="[% abspath%]img/icons/edit_white.svg" style="height: 24px;"/></button>
-    <!-- <button class="bar-item button border right blue-grey tlbbtnlist" onclick="add();"><img src="[% abspath%]img/icons/plus_white.svg" style="height: 24px;"/></button> -->
-    <!-- <button class="bar-item button border right blue-grey tlbbtnlist" onclick="viewcode();"><img src="[% abspath%]img/icons/code.svg" style="height: 24px;"/></button> -->
-</div>
-</div>
-<script>
-function displayeditbuttons(dsp){
-  var tblbtns = document.getElementsByClassName("tlbbtnlist");
-  console.log(tblbtns);
-  for (var k in tblbtns){
-    tblbtns[k].style.display = dsp;
-  } 
-  return false;
-}
-</script>
-
-<div id="websitestable">
-<table id="tbl_websites" style="margin-top: 42px;"></table>
-</div>
-<div id="websitesform" style="display: none; margin-top: 42px;" >
-  <div class="container">
-  <form id="frm_websites">
-  [% fieldhidden('id','websites','ident') %]
-  <div class="row">
-  [% fieldeditbox('title','websites','Titel','threequarter','') %]
-  [% fieldcheckbox('active','websites','Aktiv','quarter','','1') %]
-  
-  </div>
-  <div class="row">
-  [% fieldcheckbox('sitemenu','websites','ass am Menu','quarter','','1') %]
-  [% fieldeditbox('menutext','websites','Menu Numm','quarter','') %]
-  [% fieldeditbox('menuparent','websites','Numm Submenu','quarter','') %]
-  [% fieldeditbox('menuorder','websites','Menu Positioun','quarter','') %]
-  </div>
-  <div class="row">
-  [% fieldeditbox('file','websites','Link','threequarter','readonly') %]
-  [% fieldcheckbox('is_frontpage','websites','Ass 1st Sait','quarter','readonly','1') %]
-  </div>
-  [% fieldtextarea('description','websites','Beschreiwung','','','100px','') %]
-  [% formsavebutton('websites','Spaicheren','container') %]
-</form>
-</div>
-</div>
-<div id="websitesfile" style="display: none; margin-top: 42px;">
-<form id="frm_file">
-  [% fieldhidden('filepath','file','') %]
-  <pre id="file_editor" id="filesource" name="file_filesource"></pre>
-</div>
\ No newline at end of file
diff --git a/app/tmpl/module/websites/websites.js b/app/tmpl/module/websites/websites.js
deleted file mode 100644 (file)
index 416e0d8..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-var tbl = null;
-var sel_category=null;
-function initpage(){
-
-  tbl = new Tabulator("#tbl_websites", {
-    height: "95vh",
-    selectable:1,
-    selectablePersistence:false, // disable rolling selection
-    responsiveLayout:"collapse",
-    autoResize:true,
-    addRowPos:"top", 
-    layout:"fitColumns",
-    resizableRows:true,
-    columnHeaderSortMulti:false,
-    columns:[
-      {title:"Titel", field:"title", formatter:"html"},
-      {title:"Menu", field:"dspmenu", formatter:"html",width: 250},
-      {title:"Positioun", field:"menuorder", formatter:"html",width: 50},
-      {title:"Frontpage", field:"is_frontpage",formatter:"tickCross", width:50},
-      {title:"Aktiv", field:"active",formatter:"boolean",formatter:"tickCross", width:50}
-    ],
-    //autoColumns:true,
-});
-  gettbldata();
-}
-
-function gettbldata(){
-  req.reqdata("POST","db.cgi",{"get":"websiteslist"},loadtbldata);
-}
-
-function loadtbldata(data){
-  if (data && data.sqldata){
-    tbl.setData(data.sqldata);
-  }
-}
-
-function viewtable(){
-  document.getElementById("websitesform").style.display = 'none';
-  document.getElementById("websitestable").style.display = 'block'; 
-  displayeditbuttons('block');   
-}
-
-// function add(){
-//   var frm = document.querySelectorAll('.data_websites');
-//       for (var f in frm){
-//           if ((frm[f].tagName == 'INPUT') || (frm[f].tagName == 'SELECT')){
-//             if (frm[f].classList.contains("datefield")){
-//               frm[f]._flatpickr.setDate("");
-//             } else {
-//               frm[f].value="";
-//               // if (frm[f].id == 'teams'){
-//               //   locations_teams.clearStore();
-//               // }
-//             }
-
-//           } 
-//       }
-//   document.getElementById("websitestable").style.display = 'none';
-//   document.getElementById("websitesform").style.display = 'block';
-//   displayeditbuttons('none');   
-// }
-
-function edit(){
-  var udata = tbl.getSelectedData();
-  var uid = udata[0].id;
-  console.log(uid);
-  req.reqdata("POST","db.cgi",{"get":"websiteslist","filter":"id=" + uid},fillformwebsites);
-  document.getElementById("websitestable").style.display = 'none';
-  document.getElementById("websitesform").style.display = 'block';
-  displayeditbuttons('none');   
-  //app.loadpage('module/[% module %]/form_webwebsites.html?id='+uid,'websites éditeieren');
-  //console.log(tbl.getSelectedData());
-}
-
-function fillformwebsites(data){
-  console.log(data);
-  if (data && data.sqldata){
-    var frm = document.querySelectorAll('.data_websites.data_websites');
-    for (var f in frm){
-      console.log(frm[f].classList);
-      if (data.sqldata[0][frm[f].id]){
-        if ((frm[f].tagName == 'INPUT') || (frm[f].tagName == 'SELECT') || frm[f].tagName == 'TEXTAREA'){
-          if (frm[f].classList.contains("datefield")){
-            frm[f]._flatpickr.setDate(data.sqldata[0][frm[f].id]);
-          } else if (frm[f].classList.contains("richeditarea")){
-            console.log(frm[f].id + " is richeditarea");
-            tinymce.get(frm[f].id).setContent(data.sqldata[0][frm[f].id]);
-          } else if (frm[f].tagName == 'TEXTAREA'){
-            frm[f].innerHTML = data.sqldata[0][frm[f].id]; 
-          } else if (frm[f].type == 'checkbox'){
-            if (data.sqldata[0][frm[f].id] == '1'){
-              frm[f].checked = true;
-            } else {
-              frm[f].checked = false;
-            }
-          }
-          else {
-            frm[f].value=data.sqldata[0][frm[f].id];
-          } 
-          
-        } 
-      }
-    }
-  }
-}
-
-
-// function remove(){
-//   var udata = tbl.getSelectedData();
-//   var uid = udata[0].id;
-//   console.log(tbl.getSelectedData());
-// }
-
-// function viewcode(){
-//   var udata = tbl.getSelectedData();
-//   var uid = udata[0].id;
-//   console.log(uid);
-//   document.getElementById("websitestable").style.display = 'none';
-//   document.getElementById("websitesfile").style.display = 'block';
-//   displayeditbuttons('none');
-// }
-
diff --git a/app/upload.cgi b/app/upload.cgi
deleted file mode 100644 (file)
index c9d67e1..0000000
+++ /dev/null
@@ -1,250 +0,0 @@
-#!/usr/local/bin/perl
-
-use strict;
-use FindBin qw/$Bin $RealBin/;
-use lib ($RealBin.'/lib/perl5');
-use lib ($RealBin.'/lib');
-use lib ($RealBin.'/backoffice/lib/perl5');
-use lib ($RealBin.'/backoffice/lib');
-use CGI;
-use CGI::Cookie;
-#use CGI::Carp qw/fatalsToBrowser/;
-use File::Basename;
-use File::Path qw/make_path/;
-use JSON::PP;
-use Image::Size;
-use dksconfig qw/$sitecfg/;
-use dksdb;
-
-use session;
-use sendemail;
-my $cgi = new CGI();
-my $scriptpath = $cgi->url(-absolute => 1); 
-my $p = ();
-my @params = $cgi->param();
-if ($cgi->request_method() eq "POST"){
-  foreach my $pe (@params){
-    $p->{$pe} = $cgi->param($pe);
-  }
-}
-my $html->{result} = ();
-$p->{sid} = $cgi->cookie($sitecfg->{cookiename});
-my $se = session->new();
-my $sess = $se->getsession($p->{sid});
-print $cgi->header(-type=>"application/json", -charset => "utf-8");
-if ($sess == undef){
-  $html->{error} = "No Authorisation";
-  print JSON::PP::encode_json($html);
-  exit(0);
-}
-my $utime = time();
-my $db = dksdb->new();
-
-if (exists($p->{file}) && exists($p->{filetype})){
-  
-  my $basepath = dirname(dirname($ENV{SCRIPT_FILENAME}));
-  my $filepath = "";
-  my $suffix = substr($p->{file},rindex($p->{file},'.')+1);
-  if ($p->{filetype} eq "download_document"){
-    $filepath = 'data/documents/'.$p->{file};
-  }
-  if ($p->{filetype} eq "news_image"){
-    if ($suffix eq 'jpg' || $suffix eq 'png'){
-      $filepath = '../media/news/'.$p->{file};
-      $p->{relpath} = 'media/news/'.$p->{file};
-    } 
-  }
-  if ($p->{filetype} eq "rankinglist_result"){
-    if ($suffix eq 'xlsx'){
-      $filepath = 'data/rankinglist/'.$p->{file};
-    }
-  }
-  #mogrify -thumbnail x300 -background white *.png
-  #ls -1 members_sized/*.png | awk -F\/ '{print "composite -gravity southeast wm_fld.png members_sized/"$(NF)" members/"$(NF)}' | sh
-  # if ($p->{upload_filetype} eq "new_profile_photo"){
-  #   my $sql = "select link from members where id=".$p->{id_member}.";";
-  #   my $ml = $db->dbquerysorted($sql);
-  #   $filepath = 'data/members/'.$ml->{0}->{link}.'/'.$ml->{0}->{link}.'_new.'.$suffix;
-  # } elsif ($p->{upload_filetype} eq "profile_photo"){
-  #   my $sql = "select link from members where id=".$p->{id_member}.";";
-  #   my $ml = $db->dbquerysorted($sql);
-  #   $filepath = 'data/members/'.$ml->{0}->{link}.'/'.$ml->{0}->{link}.'_new.'.$suffix;
-  # } elsif ($p->{upload_filetype} eq "spillbou"){
-  #   $filepath = 'data/championnat/'.$p->{season}.'_'.$p->{playday}.'_'.$p->{team}.'.'.$suffix;
-  # } elsif ($p->{upload_filetype} eq "member_document"){
-  #   my $sql = "select link from members where id=".$p->{id_member}.";";
-  #   my $ml = $db->dbquerysorted($sql);
-  #   $filepath = 'data/members/'.$ml->{0}->{link}.'/'.$p->{upload_file}.'_'.$utime.$suffix;
-  # } elsif ($p->{upload_filetype} eq "clublogo_new"){
-  #   my $sql = "select link from clubs where id=".$p->{id_club}.";";
-  #   my $cl = $db->dbquerysorted($sql);
-  #   $filepath = 'data/clubs/'.$cl->{0}->{link}.'/'.$cl->{0}->{link}.'_new.'.$suffix;
-  # } elsif ($p->{upload_filetype} eq "clublogo"){
-  #   my $sql = "select link from clubs where id=".$p->{id_club}.";";
-  #   my $cl = $db->dbquerysorted($sql);
-  #   $filepath = 'data/clubs/'.$cl->{0}->{link}.'/'.$cl->{0}->{link}.'.'.$suffix;
-  # }elsif ($p->{upload_filetype} eq "website_image"){
-  #   $basepath = $ENV{"DOCUMENT_ROOT"};
-  #   $filepath = 'images/'.$p->{folder}.'/'.$p->{upload_file};
-  if ($filepath ne ""){
-    $p->{path} = $basepath.'/'.$filepath;
-    $p->{suffix} = $suffix;
-    my $fh = $cgi->upload('file');
-    open(NF,">".$basepath.'/'.$filepath);
-    binmode NF;
-    while (<$fh>) {
-      print NF;
-    }
-    close(NF);
-    if ($p->{filetype} eq "download_document"){
-      if ($suffix eq 'png' || $suffix eq 'jpg' || $suffix eq 'pdf'){
-        system('convert -thumbnail x128 -background white -alpha remove "'.$basepath.'/'.$filepath.'" "'.$basepath.'/thumb/'.$filepath.'.thumb.png"');
-      } 
-   
-    if ($p->{row_id} eq ""){
-      my $dx = $db->dbquerysorted("select id from documents where filename='".basename($filepath)."' and folder='documents'");
-      if (keys(%{$dx}) == 0){
-          my $sql = "INSERT INTO documents (filename,folder,filetype) VALUES ('".basename($filepath)."','documents','".$suffix."');";
-          $db->dbexec($sql); 
-      }
-    } 
-    }
-    if ($p->{filetype} eq "news_image"){
-      my ($pwidth,$pheight) =imgsize($p->{path});
-      my $width=0;
-      my $height =0;
-      my $density = 72;
-      if ($pwidth>700){
-        $width = 700;
-      } elsif ($height > 380) {
-        $height = 380;
-      }
-      if ($height == 0){
-        $height = ($pheight/$pwidth) * $width;
-      }
-      elsif ($width == 0) {
-                               $width = ($pwidth/$pheight) * $height;
-      }
-      if ($height > 380){
-        $height = 380;
-        $width = ($width/$height) * $height;
-      }
-      system("mogrify -resize ".$width."x".$height." -density ".$density." ".$p->{path});
-    }
-    if ($p->{filetype} eq "rankinglist_result"){
-      
-    }
-
-  # if ($p->{upload_filetype} eq "new_profile_photo"){
-  #   #convert!
-  #   $db->dbexec("update members set new_profile_photo='".$filepath."' where id=".$p->{id_member}.";");
-  #   $html->{result}->{new_profile_photo}= $filepath;
-  # } elsif ($p->{upload_filetype} eq "profile_photo"){
-  #   #convert!
-  #   $db->dbexec("update members set profile_photo='".$filepath."' where id=".$p->{id_member}.";");
-  #   $html->{result}->{new_profile_photo}= $filepath;
-  # } elsif ($p->{upload_filetype} eq "spillbou"){
-  #   $db->dbexec("update csresult set upload_team".$p->{team}."='".$filepath."' where id=;");
-  # } elsif ($p->{upload_filetype} eq "member_document"){  
-
-  # } elsif ($p->{upload_filetype} eq "clublogo_new"){
-
-  # } elsif ($p->{upload_filetype} eq "clublogo"){
-  
-  # } elsif ($p->{upload_filetype} eq "website_image"){
-  
-  # } els
-  }
-}
-if (exists($p->{gameresult})){  
-  my $basepath = dirname(dirname($ENV{SCRIPT_FILENAME}));
-  my $csdir = "data/championship/";
-  my $gmid = $p->{id};
-  my $cdata = $db->dbquerybykey("id","select * from vw_games where id=".$gmid);
-  if (exists($p->{upload_teamhome}) && $p->{upload_teamhome} ne ""){
-    my $suffix = substr($p->{upload_teamhome},rindex($p->{upload_teamhome},'.')+1);
-    my $fh = $cgi->upload('upload_teamhome');
-    my $filepath = $basepath.'/'.$csdir.'/'.$cdata->{$gmid}->{season}.'/'.$cdata->{$gmid}->{playday}.'_'.$cdata->{$gmid}->{link_teamhome}.'.'.$suffix;
-    open(NF,">".$filepath);
-    binmode NF;
-    while (<$fh>) {
-      print NF;
-    }
-    close(NF);
-    if (($sess->{usergroups} !~ /championship/ ) && ($p->{result_teamhome})){
-      $db->dbexec("UPDATE csgames set upload_teamhome='".basename($filepath)."',result_teamhome='".$p->{result_teamhome}."' WHERE id=".$gmid);
-    } elsif ($sess->{usergroups} =~ /championship/ ){
-      $db->dbexec("UPDATE csgames set upload_teamhome='".basename($filepath)."' WHERE id=".$gmid);
-    }
-  }
-  if (exists($p->{upload_teamguest}) && $p->{upload_teamguest} ne ""){
-    my $suffix = substr($p->{upload_teamguest},rindex($p->{upload_teamguest},'.')+1);
-    my $fh = $cgi->upload('upload_teamguest');
-    my $filepath = $basepath.'/'.$csdir.'/'.$cdata->{$gmid}->{season}.'/'.$cdata->{$gmid}->{playday}.'_'.$cdata->{$gmid}->{link_teamguest}.'.'.$suffix;
-    open(NF,">".$filepath);
-    binmode NF;
-    while (<$fh>) {
-      print NF;
-    }
-    close(NF);
-    if (($sess->{usergroups} !~ /championship/ ) && ($p->{result_teamguest})){
-      $db->dbexec("UPDATE csgames set upload_teamguest='".basename($filepath)."',result_teamguest='".$p->{result_teamguest}."' WHERE id=".$gmid);
-    } elsif ($sess->{usergroups} =~ /championship/ ){
-      $db->dbexec("UPDATE csgames set upload_teamguest='".basename($filepath)."' WHERE id=".$gmid);
-    }
-  }
-  if ($sess->{usergroups} =~ /championship/ ){
-    my @upd = ();
-    if (exists($p->{validated})){
-      if ($p->{validated} eq "1"){push(@upd,"validated=true");} else {push(@upd,"validated=null");}
-    }
-    if (exists($p->{result_teamhome})){
-      push(@upd,"result_teamhome='".$p->{result_teamhome}."'");
-    }
-    if (exists($p->{result_teamguest})){
-      push(@upd,"result_teamguest='".$p->{result_teamguest}."'");
-    }
-    if (exists($p->{sets_teamhome})){
-      push(@upd,"sets_teamhome='".$p->{sets_teamhome}."'");
-    }
-    if (exists($p->{sets_teamguest})){
-      push(@upd,"sets_teamguest='".$p->{sets_teamguest}."'");
-    }
-    $db->dbexec("UPDATE csgames set ".join(",",@upd)." where id=".$gmid);
-  }
-  $cdata = $db->dbquerybykey("id","select * from vw_games where id=".$gmid);
-  if (($sess->{usergroups} !~ /championship/ ) && ($cdata->{$gmid}->{result_teamhome} eq $cdata->{$gmid}->{result_teamguest}) && ($cdata->{$gmid}->{validated} ne "1")){
-    
-    # my $pth = "null";
-    # my $ptg = "null";
-    my @x = ();
-    if (($p->{sets_teamhome} ne "") && ($p->{sets_teamguest} ne "")){
-      push(@x,$p->{sets_teamhome});
-      push(@x,$p->{sets_teamguest});
-    } else {
-      @x= split("-",$cdata->{$gmid}->{result_teamhome});
-    }
-    
-    $db->dbexec("update csgames set sets_teamhome=".$x[0].", sets_teamguest=".$x[1]." WHERE id=".$gmid.";");
-  }
-
-  $cdata = $db->dbquerybykey("id","select * from vw_games where id=".$gmid);
-  if (($cdata->{$gmid}->{sets_teamhome} eq "") || ($cdata->{$gmid}->{sets_teamguest} eq "")){ 
-    $db->dbexec("update csgames set sets_teamhome=null, sets_teamguest=null,points_teamhome=null,points_teamguest=null,validated=null WHERE id=".$gmid.";");
-  }else {
-    my $pth = "null";
-    my $ptg = "null";
-    if (int($cdata->{$gmid}->{sets_teamhome}) > int($cdata->{$gmid}->{sets_teamguest})){$pth = 3;$ptg=0;} else {$pth = 0;$ptg=3;}
-    if (int($cdata->{$gmid}->{sets_teamhome}) == int($cdata->{$gmid}->{sets_teamguest})){$pth = 1; $ptg = 1;}
-    $db->dbexec("update csgames set points_teamhome=".$pth.",points_teamguest=".$ptg." WHERE id=".$gmid.";");
-  }
-  $db->dbexec("select * from setcsranking('".$cdata->{$gmid}->{id_season}."','".$cdata->{$gmid}->{id_division}."');");
-}
-my $js = JSON::PP->new();
-$js->allow_blessed(1);
-# open(NF,">upload.txt");
-# print NF $js->utf8->encode($p);
-# print NF $js->utf8->encode($sess);
-# close(NF);
-$html->{result}->{p} = $p;
-print $js->utf8->encode($p);
\ No newline at end of file
diff --git a/test.pl b/test.pl
deleted file mode 100644 (file)
index 65072f6..0000000
--- a/test.pl
+++ /dev/null
@@ -1,29 +0,0 @@
-#!C:\Strawberry\perl\bin\perl.exe
-
-use strict;
-use warnings;
-
-use Crypt::CBC;
-use MIME::Base64;
-use Digest::MD5 qw(md5_hex md5);
-
-my $plainText = "testtest";
-my $id = "aabb";
-
-my $iv = substr(md5_hex($id), 0, 16);
-print $iv."\n";
-my $cipher = Crypt::CBC->new(
-        -key         => substr(md5($id),0,16),
-        -iv          => $iv,
-        -cipher      => 'Cipher::AES',
-        -literal_key => 1,
-        -header      => "none",
-        -padding     => "standard",
-        -keysize     => 16
-  );
-
-
-my $encrypted = $cipher->encrypt($plainText);
-my $base64 = encode_base64($encrypted);
-print "Enc:".$encrypted."\n";
-print("Ciphertext(b64):$base64\n");
diff --git a/website/.htaccess b/website/.htaccess
deleted file mode 100644 (file)
index d15b083..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-#SetEnv PERL5LIB "/usr/home/dksalu/public_html/perl5"
-RewriteEngine on
-DirectoryIndex index.php index.html 
-AddHandler cgi-script .cgi
-RewriteCond %{REQUEST_FILENAME} !-f
-RewriteCond %{REQUEST_FILENAME} !-d
-RewriteRule "^(.*)$" "index.php"  [NC,L,QSA]
diff --git a/website/css/fonts/ledf.svg b/website/css/fonts/ledf.svg
deleted file mode 100644 (file)
index 30121bb..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-<?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="ledf" horiz-adv-x="1024">
-<font-face units-per-em="1024" ascent="960" descent="-64" />
-<missing-glyph horiz-adv-x="1024" />
-<glyph unicode="&#x20;" horiz-adv-x="512" d="" />
-<glyph unicode="&#xe945;" glyph-name="envelop" d="M928 832h-832c-52.8 0-96-43.2-96-96v-640c0-52.8 43.2-96 96-96h832c52.8 0 96 43.2 96 96v640c0 52.8-43.2 96-96 96zM398.74 409.628l-270.74-210.892v501.642l270.74-290.75zM176.38 704h671.24l-335.62-252-335.62 252zM409.288 398.302l102.712-110.302 102.71 110.302 210.554-270.302h-626.528l210.552 270.302zM625.26 409.628l270.74 290.75v-501.642l-270.74 210.892z" />
-<glyph unicode="&#xe947;" glyph-name="location" d="M512 960c-176.732 0-320-143.268-320-320 0-320 320-704 320-704s320 384 320 704c0 176.732-143.27 320-320 320zM512 448c-106.040 0-192 85.96-192 192s85.96 192 192 192 192-85.96 192-192-85.96-192-192-192z" />
-<glyph unicode="&#xe94c;" glyph-name="map2" d="M672 768l-320 128-352-128v-768l352 128 320-128 352 128v768l-352-128zM384 814.27l256-102.4v-630.138l-256 102.398v630.14zM64 723.172l256 93.090v-631.8l-256-93.088v631.798zM960 172.828l-256-93.092v631.8l256 93.090v-631.798z" />
-<glyph unicode="&#xe953;" glyph-name="calendar" d="M320 576h128v-128h-128zM512 576h128v-128h-128zM704 576h128v-128h-128zM128 192h128v-128h-128zM320 192h128v-128h-128zM512 192h128v-128h-128zM320 384h128v-128h-128zM512 384h128v-128h-128zM704 384h128v-128h-128zM128 384h128v-128h-128zM832 960v-64h-128v64h-448v-64h-128v64h-128v-1024h960v1024h-128zM896 0h-832v704h832v-704z" />
-<glyph unicode="&#xe9bd;" glyph-name="menu" d="M64 768h896v-192h-896zM64 512h896v-192h-896zM64 256h896v-192h-896z" />
-</font></defs></svg>
\ No newline at end of file
diff --git a/website/css/fonts/ledf.ttf b/website/css/fonts/ledf.ttf
deleted file mode 100644 (file)
index ac8e4b1..0000000
Binary files a/website/css/fonts/ledf.ttf and /dev/null differ
diff --git a/website/css/fonts/ledf.woff b/website/css/fonts/ledf.woff
deleted file mode 100644 (file)
index ba03696..0000000
Binary files a/website/css/fonts/ledf.woff and /dev/null differ
diff --git a/website/css/icons.css b/website/css/icons.css
deleted file mode 100644 (file)
index 787a144..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-@font-face {
-  font-family: 'ledf';
-  src:
-    url('fonts/ledf.ttf?d9kavb') format('truetype'),
-    url('fonts/ledf.woff?d9kavb') format('woff'),
-    url('fonts/ledf.svg?d9kavb#ledf') format('svg');
-  font-weight: normal;
-  font-style: normal;
-  font-display: block;
-}
-
-[class^="icon-"], [class*=" icon-"] {
-  /* use !important to prevent issues with browser extensions that change fonts */
-  font-family: 'ledf' !important;
-  speak: never;
-  font-style: normal;
-  font-weight: normal;
-  font-variant: normal;
-  text-transform: none;
-  line-height: 1;
-
-  /* Better Font Rendering =========== */
-  -webkit-font-smoothing: antialiased;
-  -moz-osx-font-smoothing: grayscale;
-}
-
-.icon-envelop:before {
-  content: "\e945";
-}
-.icon-location:before {
-  content: "\e947";
-}
-.icon-map2:before {
-  content: "\e94c";
-}
-.icon-calendar:before {
-  content: "\e953";
-}
-.icon-menu:before {
-  content: "\e9bd";
-}
diff --git a/website/css/theme.css b/website/css/theme.css
deleted file mode 100644 (file)
index 2b61b8b..0000000
+++ /dev/null
@@ -1,990 +0,0 @@
-/* W3PRO.CSS 4.13 June 2019 by Jan Egil and Borge Refsnes */
-html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}
-/* Extract from normalize.css by Nicolas Gallagher and Jonathan Neal git.io/normalize */
-html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}
-html,body {-webkit-user-select: none;-ms-user-select: none;user-select: none;-moz-user-select:none;}
-article,aside,details,figcaption,figure,footer,header,main,menu,nav,section{display:block}summary{display:list-item}
-audio,canvas,progress,video{display:inline-block}progress{vertical-align:baseline}
-audio:not([controls]){display:none;height:0}[hidden],template{display:none}
-a{background-color:transparent}a:active,a:hover{outline-width:0}
-abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}
-b,strong{font-weight:bolder}dfn{font-style:italic}mark{background:#ff0;color:#000}
-small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
-sub{bottom:-0.25em}sup{top:-0.5em}figure{margin:1em 40px}img{border-style:none}
-code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}hr{box-sizing:content-box;height:0;overflow:visible}
-button,input,select,textarea,optgroup{font:inherit;margin:0}optgroup{font-weight:bold}
-button,input{overflow:visible}button,select{text-transform:none}
-button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}
-button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}
-button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}
-fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:.35em .625em .75em}
-legend{color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto}
-[type=checkbox],[type=radio]{padding:0}
-[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}
-[type=search]{-webkit-appearance:textfield;outline-offset:-2px}
-[type=search]::-webkit-search-decoration{-webkit-appearance:none}
-::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}
-/* End extract */
-/* html,body {
-       background-color: #52638e;
-} */
-html,body{font-family:Verdana,sans-serif;font-size:9pt;line-height:1.5}html{overflow-x:hidden}
-h1{font-size:36px}h2{font-size:30px}h3{font-size:24px}h4{font-size:20px}h5{font-size:18px}h6{font-size:16px}.serif{font-family:serif}
-h1,h2,h3,h4,h5,h6{font-family:"Segoe UI",Arial,sans-serif;font-weight:400;margin: 0}.wide{letter-spacing:4px}
-hr{border:0;border-top:1px solid #eee;margin:20px 0}
-.img{max-width:100%;height:auto; vertical-align:middle}a{color:inherit}
-.table,.table-all{border-collapse:collapse;border-spacing:0;width:100%;display:table}.table-all{border:1px solid #ccc}
-.bordered tr,.table-all tr{border-bottom:1px solid #ddd}.striped tbody tr:nth-child(even){background-color:#f1f1f1}
-.table-all tr:nth-child(odd){background-color:#fff}.table-all tr:nth-child(even){background-color:#f1f1f1}
-.hoverable tbody tr:hover,.ul.hoverable li:hover{background-color:#ccc}.centered tr th,.centered tr td{text-align:center}
-.table td,.table th,.table-all td,.table-all th{padding:8px 8px;display:table-cell;text-align:left;vertical-align:top}
-.table th:first-child,.table td:first-child,.table-all th:first-child,.table-all td:first-child{padding-left:16px}
-.btn,.button{border:none;display:inline-block;padding:8px 16px;vertical-align:middle;overflow:hidden;text-decoration:none;color:inherit;background-color:inherit;text-align:center;cursor:pointer;white-space:nowrap ;border-radius: 3px;}
-.btn:hover{box-shadow:0 8px 16px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)}
-.btn,.button{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}   
-.disabled,.btn:disabled,.button:disabled{cursor:not-allowed;opacity:0.3}.disabled *,:disabled *{pointer-events:none}
-.btn.disabled:hover,.btn:disabled:hover{box-shadow:none}
-.badge,.tag{background-color:#000;color:#fff;display:inline-block;padding-left:8px;padding-right:8px;text-align:center}.badge{border-radius:50%}
-.ul{list-style-type:none;padding:0;margin:0}.ul li{padding:8px 16px;border-bottom:1px solid #ddd}.ul li:last-child{border-bottom:none}
-.tooltip,.display-container{position:relative}.tooltip .text{display:none}.tooltip:hover .text{display:inline-block}
-.ripple:active{opacity:0.5}.ripple{transition:opacity 0s}
-.input{padding:2px;display:block;border: 0;border-bottom: 1px solid #ccc;width:100%;background-color: #fff;}/*#e8f0fe*/
-.select{padding:2px 0; display:block;width:100%;border:1px solid #ccc;background-color: #fff;}
-.dropdown-click,.dropdown-hover{position:relative;display:inline-block;cursor:pointer}
-.dropdown-hover:hover .dropdown-content{display:block; }
-.dropdown-hover:first-child,.dropdown-click:hover{background-color:#ccc;color:#000}
-.dropdown-hover:hover > .button:first-child,.dropdown-click:hover > .button:first-child{background-color:#ccc;color:#000}
-.dropdown-content{cursor:auto;color:#000;background-color:#fff;display:none;position:absolute;min-width:160px;margin:0;padding:0;z-index:1}
-.check,.radio{width:24px;height:24px;position:relative;top:6px}
-.sidebar{height:100%;width:160px;background-color:#fff;position:fixed!important;z-index:1;overflow:auto}
-.bar-block .dropdown-hover,.bar-block .dropdown-click{width:100%}
-.bar-block .dropdown-hover .dropdown-content,.bar-block .dropdown-click .dropdown-content{min-width:100%}
-.bar-block .dropdown-hover .button,.bar-block .dropdown-click .button{width:100%;text-align:left;padding:8px 16px}
-.main,#main{transition:margin-left .4s}
-.modal{z-index:3;display:none;padding-top:100px;position:fixed;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgb(0,0,0);background-color:rgba(0,0,0,0.4)}
-.modal-content{margin:auto;background-color:#fff;position:relative;padding:0;outline:0;width:600px}
-.bar{width:100%;overflow:hidden}.center .bar{display:inline-block;width:auto}
-.bar .bar-item{padding:8px 16px;float:left;width:auto;border:none;display:block;outline:0}
-.bar .dropdown-hover,.bar .dropdown-click{position:static;float:left}
-.bar .button{white-space:normal}
-.bar-block .bar-item{width:100%;display:block;padding:8px 16px;text-align:left;border:none;white-space:normal;float:none;outline:0}
-.bar-block.center .bar-item{text-align:center}.block{display:block;width:100%}
-.responsive{display:block;overflow-x:auto}
-.container:after,.container:before,.datapanel:after,.datapanel:before,.row:after,.row:before,.row-padding:after,.row-padding:before,
-.cell-row:before,.cell-row:after,.clear:after,.clear:before,.bar:before,.bar:after{content:"";display:table;clear:both}
-.col,.half,.third,.twothird,.threequarter,.quarter,.fifth,.twofifth,.threefifth,.fourfifth{float:left;width:100%}
-.col.s1{width:8.33333%}.col.s2{width:16.66666%}.col.s3{width:24.99999%}.col.s4{width:33.33333%}
-.col.s5{width:41.66666%}.col.s6{width:49.99999%}.col.s7{width:58.33333%}.col.s8{width:66.66666%}
-.col.s9{width:74.99999%}.col.s10{width:83.33333%}.col.s11{width:91.66666%}.col.s12{width:99.99999%}
-@media (min-width:601px){.col.m1{width:8.33333%}.col.m2{width:16.66666%}.col.m3,.quarter{width:24.99999%}.col.m4,.third{width:33.33333%}.fifth{width:20%;min-width:100px}
-.col.m5{width:41.66666%}.col.m6,.half{width:49.99999%}.col.m7{width:58.33333%}.col.m8,.twothird{width:66.66666%}
-.col.m9,.threequarter{width:74.99999%}.col.m10{width:83.33333%}.col.m11{width:91.66666%}.col.m12{width:99.99999%}.twofifth{width:40%}.threefifth{width:60%}.fourfifth{width:80%}}
-@media (min-width:993px){.col.l1{width:8.33333%}.col.l2{width:16.66666%}.col.l3{width:24.99999%}.col.l4{width:33.33333%}
-.col.l5{width:41.66666%}.col.l6{width:49.99999%}.col.l7{width:58.33333%}.col.l8{width:66.66666%}
-.col.l9{width:74.99999%}.col.l10{width:83.33333%}.col.l11{width:91.66666%}.col.l12{width:99.99999%}}
-.rest{overflow:hidden}.stretch{margin-left:-16px;margin-right:-16px}
-.content,.auto{margin-left:auto;margin-right:auto}.content{max-width:980px}.auto{max-width:1140px}
-.cell-row{display:table;width:100%}.cell{display:table-cell}
-.cell-top{vertical-align:top}.cell-middle{vertical-align:middle}.cell-bottom{vertical-align:bottom}
-.hide{display:none!important}.show-block,.show{display:block!important}.show-inline-block{display:inline-block!important}
-@media (max-width:1205px){.auto{max-width:95%}}
-@media (max-width:600px){.modal-content{margin:0 10px;width:auto!important}.modal{padding-top:30px}
-.dropdown-hover.mobile .dropdown-content,.dropdown-click.mobile .dropdown-content{position:relative}   
-.hide-small{display:none!important}.mobile{display:block;width:100%!important}.bar-item.mobile,.dropdown-hover.mobile,.dropdown-click.mobile{text-align:center}
-.dropdown-hover.mobile,.dropdown-hover.mobile .btn,.dropdown-hover.mobile .button,.dropdown-click.mobile,.dropdown-click.mobile .btn,.dropdown-click.mobile .button{width:100%}}
-@media (max-width:768px){.modal-content{width:500px}.modal{padding-top:50px}}
-@media (min-width:993px){.modal-content{width:900px}.hide-large{display:none!important}.sidebar.collapse{display:block!important}}
-@media (max-width:992px) and (min-width:601px){.hide-medium{display:none!important}}
-@media (max-width:992px){.sidebar.collapse{display:none}.main{margin-left:0!important;margin-right:0!important}.auto{max-width:100%}}
-.top,.bottom{position:fixed;width:100%;z-index:1}.top{top:0}.bottom{bottom:0}
-.overlay{position:fixed;display:none;width:100%;height:100%;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,0.5);z-index:2}
-.display-topleft{position:absolute;left:0;top:0}.display-topright{position:absolute;right:0;top:0}
-.display-bottomleft{position:absolute;left:0;bottom:0}.display-bottomright{position:absolute;right:0;bottom:0}
-.display-middle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%)}
-.display-left{position:absolute;top:50%;left:0%;transform:translate(0%,-50%);-ms-transform:translate(-0%,-50%)}
-.display-right{position:absolute;top:50%;right:0%;transform:translate(0%,-50%);-ms-transform:translate(0%,-50%)}
-.display-topmiddle{position:absolute;left:50%;top:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)}
-.display-bottommiddle{position:absolute;left:50%;bottom:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)}
-.display-container:hover .display-hover{display:block}.display-container:hover span.display-hover{display:inline-block}.display-hover{display:none}
-.display-position{position:absolute}
-.circle{border-radius:50%}
-.round-small{border-radius:2px}.round,.round-medium{border-radius:4px}.round-large{border-radius:8px}.round-xlarge{border-radius:16px}.round-xxlarge{border-radius:32px}
-.row-padding,.row-padding>.half,.row-padding>.third,.row-padding>.twothird,.row-padding>.threequarter,.row-padding>.quarter,.row-padding>.col{padding:0 8px}
-.container,.datapanel{padding:0.01em 8px}.datapanel{margin-top:8px;margin-bottom:8px}
-.code,.codespan{font-family:Consolas,"courier new";font-size:16px}
-.code{width:auto;background-color:#fff;padding:8px 12px;border-left:4px solid #4CAF50;word-wrap:break-word}
-.codespan{color:crimson;background-color:#f1f1f1;padding-left:4px;padding-right:4px;font-size:110%}
-/* .card,.card-2{} */
-.card-4,.hover-shadow:hover{box-shadow:0 4px 10px 0 rgba(0,0,0,0.2),0 4px 20px 0 rgba(0,0,0,0.19)}
-.spin{animation:spin 2s infinite linear}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}
-.animate-fading{animation:fading 2s infinite}@keyframes fading{0%{opacity:0}50%{opacity:1}100%{opacity:0}}
-.animate-opacity{animation:opac 0.8s}@keyframes opac{from{opacity:0} to{opacity:1}}
-.animate-top{position:relative;animation:animatetop 1s}@keyframes animatetop{from{top:-300px;opacity:0} to{top:0;opacity:1}}
-.animate-left{position:relative;animation:animateleft 0.4s}@keyframes animateleft{from{left:-300px;opacity:0} to{left:0;opacity:1}}
-.animate-right{position:relative;animation:animateright 0.4s}@keyframes animateright{from{right:-300px;opacity:0} to{right:0;opacity:1}}
-.animate-bottom{position:relative;animation:animatebottom 1s}@keyframes animatebottom{from{bottom:-300px;opacity:0} to{bottom:0;opacity:1}}
-.animate-zoom {animation:animatezoom 0.6s}@keyframes animatezoom{from{transform:scale(0)} to{transform:scale(1)}}
-.animate-input{transition:width 0.4s ease-in-out}.animate-input:focus{width:100%!important}
-.opacity,.hover-opacity:hover{opacity:0.60}.opacity-off,.hover-opacity-off:hover{opacity:1}
-.opacity-max{opacity:0.25}.opacity-min{opacity:0.75}
-.greyscale-max,.grayscale-max,.hover-greyscale:hover,.hover-grayscale:hover{filter:grayscale(100%)}
-.greyscale,.grayscale{filter:grayscale(75%)}.greyscale-min,.grayscale-min{filter:grayscale(50%)}
-.sepia{filter:sepia(75%)}.sepia-max,.hover-sepia:hover{filter:sepia(100%)}.sepia-min{filter:sepia(50%)}
-.tiny{font-size:10px!important}.small{font-size:12px!important}.medium{font-size:15px!important}.large{font-size:18px!important}
-.xlarge{font-size:24px!important}.xxlarge{font-size:36px!important}.xxxlarge{font-size:48px!important}.jumbo{font-size:64px!important}
-.left-align{text-align:left!important}.right-align{text-align:right!important}.justify{text-align:justify!important}.center{text-align:center!important}
-.border-0{border:0!important}.border{border:1px solid #ccc!important}
-.border-top{border-top:1px solid #ccc!important}.border-bottom{border-bottom:1px solid #ccc!important}
-.border-left{border-left:1px solid #ccc!important}.border-right{border-right:1px solid #ccc!important}
-.topbar{border-top:6px solid #ccc!important}.bottombar{border-bottom:6px solid #ccc!important}
-.leftbar{border-left:6px solid #ccc!important}.rightbar{border-right:6px solid #ccc!important}
-.section,.code{margin-top:16px!important;margin-bottom:16px!important}
-.margin{margin:16px!important}.margin-top{margin-top:16px!important}.margin-bottom{margin-bottom:16px!important}
-.margin-left{margin-left:16px!important}.margin-right{margin-right:16px!important}
-.padding-small{padding:4px 8px!important}.padding{padding:8px 16px!important}.padding-large{padding:12px 24px!important}
-.padding-16{padding-top:16px!important;padding-bottom:16px!important}.padding-24{padding-top:24px!important;padding-bottom:24px!important}
-.padding-32{padding-top:32px!important;padding-bottom:32px!important}.padding-48{padding-top:48px!important;padding-bottom:48px!important}
-.padding-64{padding-top:64px!important;padding-bottom:64px!important}
-.left{float:left!important}.right{float:right!important}
-.button:hover{color:#fff!important;background-color:#343434!important}
-.transparent,.hover-none:hover{background-color:transparent!important}
-.hover-none:hover{box-shadow:none!important}
-/* DEFAULT COLORS */
-.amber,.hover-amber:hover{color:#000!important;background-color:#ffc107!important}
-.aqua,.hover-aqua:hover{color:#000!important;background-color:#00ffff!important}
-.blue,.hover-blue:hover{color:#fff!important;background-color:#2196F3!important}
-.light-blue,.hover-light-blue:hover{color:#000!important;background-color:#87CEEB!important}
-.brown,.hover-brown:hover{color:#fff!important;background-color:#795548!important}
-.cyan,.hover-cyan:hover{color:#000!important;background-color:#00bcd4!important}
-.blue-grey,.hover-blue-grey:hover{color:#fff!important;background-color:#607d8b!important}
-.green,.hover-green:hover{color:#fff!important;background-color:#4CAF50!important}
-.light-green,.hover-light-green:hover{color:#000!important;background-color:#8bc34a!important}
-.indigo,.hover-indigo:hover{color:#fff!important;background-color:#3f51b5!important}
-.khaki,.hover-khaki:hover{color:#000!important;background-color:#f0e68c!important}
-.lime,.hover-lime:hover{color:#000!important;background-color:#cddc39!important}
-.orange,.hover-orange:hover{color:#000!important;background-color:#ff9800!important}
-.deep-orange,.hover-deep-orange:hover{color:#fff!important;background-color:#ff5722!important}
-.pink,.hover-pink:hover{color:#fff!important;background-color:#e91e63!important}
-.purple,.hover-purple:hover{color:#fff!important;background-color:#9c27b0!important}
-.deep-purple,.hover-deep-purple:hover{color:#fff!important;background-color:#673ab7!important}
-.red,.hover-red:hover{color:#fff!important;background-color:#f44336!important}
-.sand,.hover-sand:hover{color:#000!important;background-color:#fdf5e6!important}
-.teal,.hover-teal:hover{color:#fff!important;background-color:#009688!important}
-.yellow,.hover-yellow:hover{color:#000!important;background-color:#ffeb3b!important}
-.white,.hover-white:hover{color:#000!important;background-color:#fff!important}
-.black,.hover-black:hover{color:#fff!important;background-color:#000!important}
-.grey,.hover-grey:hover{color:#000!important;background-color:#c6c6c6!important}
-.light-grey,.hover-light-grey:hover{color:#000!important;background-color:#f1f1f1!important}
-.dark-grey,.hover-dark-grey:hover{color:#fff!important;background-color:#616161!important}
-.pale-red,.hover-pale-red:hover{color:#000!important;background-color:#ffe7e7!important}.pale-green,.hover-pale-green:hover{color:#000!important;background-color:#e7ffe7!important}
-.pale-yellow,.hover-pale-yellow:hover{color:#000!important;background-color:#ffffd7!important}.pale-blue,.hover-pale-blue:hover{color:#000!important;background-color:#e7ffff!important}
-.text-align-right { text-align: right;}
-.text-amber,.hover-text-amber:hover{color:#ffc107!important}
-.text-aqua,.hover-text-aqua:hover{color:#00ffff!important}
-.text-blue,.hover-text-blue:hover{color:#2196F3!important}
-.text-light-blue,.hover-text-light-blue:hover{color:#87CEEB!important}
-.text-brown,.hover-text-brown:hover{color:#795548!important}
-.text-cyan,.hover-text-cyan:hover{color:#00bcd4!important}
-.text-blue-grey,.hover-text-blue-grey:hover{color:#607d8b!important}
-.text-green,.hover-text-green:hover{color:#4CAF50!important}
-.text-light-green,.hover-text-light-green:hover{color:#8bc34a!important}
-.text-indigo,.hover-text-indigo:hover{color:#3f51b5!important}
-.text-khaki,.hover-text-khaki:hover{color:#b4aa50!important}
-.text-lime,.hover-text-lime:hover{color:#cddc39!important}
-.text-orange,.hover-text-orange:hover{color:#ff9800!important}
-.text-deep-orange,.hover-text-deep-orange:hover{color:#ff5722!important}
-.text-pink,.hover-text-pink:hover{color:#e91e63!important}
-.text-purple,.hover-text-purple:hover{color:#9c27b0!important}
-.text-deep-purple,.hover-text-deep-purple:hover{color:#673ab7!important}
-.text-red,.hover-text-red:hover{color:#f44336!important}
-.text-sand,.hover-text-sand:hover{color:#fdf5e6!important}
-.text-teal,.hover-text-teal:hover{color:#009688!important}
-.text-yellow,.hover-text-yellow:hover{color:#d2be0e!important}
-.text-white,.hover-text-white:hover{color:#fff!important}
-.text-black,.hover-text-black:hover{color:#000!important}
-.text-grey,.hover-text-grey:hover{color:#757575!important}
-.text-light-grey,.hover-text-light-grey:hover{color:#f1f1f1!important}
-.text-dark-grey,.hover-text-dark-grey:hover{color:#3a3a3a!important}
-.border-amber,.hover-border-amber:hover{border-color:#ffc107!important}
-.border-aqua,.hover-border-aqua:hover{border-color:#00ffff!important}
-.border-blue,.hover-border-blue:hover{border-color:#2196F3!important}
-.border-light-blue,.hover-border-light-blue:hover{border-color:#87CEEB!important}
-.border-brown,.hover-border-brown:hover{border-color:#795548!important}
-.border-cyan,.hover-border-cyan:hover{border-color:#00bcd4!important}
-.border-blue-grey,.hover-blue-grey:hover{border-color:#607d8b!important}
-.border-green,.hover-border-green:hover{border-color:#4CAF50!important}
-.border-light-green,.hover-border-light-green:hover{border-color:#8bc34a!important}
-.border-indigo,.hover-border-indigo:hover{border-color:#3f51b5!important}
-.border-khaki,.hover-border-khaki:hover{border-color:#f0e68c!important}
-.border-lime,.hover-border-lime:hover{border-color:#cddc39!important}
-.border-orange,.hover-border-orange:hover{border-color:#ff9800!important}
-.border-deep-orange,.hover-border-deep-orange:hover{border-color:#ff5722!important}
-.border-pink,.hover-border-pink:hover{border-color:#e91e63!important}
-.border-purple,.hover-border-purple:hover{border-color:#9c27b0!important}
-.border-deep-purple,.hover-border-deep-purple:hover{border-color:#673ab7!important}
-.border-red,.hover-border-red:hover{border-color:#f44336!important}
-.border-sand,.hover-border-sand:hover{border-color:#fdf5e6!important}
-.border-teal,.hover-border-teal:hover{border-color:#009688!important}
-.border-yellow,.hover-border-yellow:hover{border-color:#ffeb3b!important}
-.border-white,.hover-border-white:hover{border-color:#fff!important}
-.border-black,.hover-border-black:hover{border-color:#000!important}
-.border-grey,.hover-border-grey:hover{border-color:#9e9e9e!important}
-.border-light-grey,.hover-border-light-grey:hover{border-color:#f1f1f1!important}
-.border-dark-grey,.hover-border-dark-grey:hover{border-color:#616161!important}
-.border-pale-red,.hover-border-pale-red:hover{border-color:#ffe7e7!important}.border-pale-green,.hover-border-pale-green:hover{border-color:#e7ffe7!important}
-.border-pale-yellow,.hover-border-pale-yellow:hover{border-color:#ffffd7!important}.border-pale-blue,.hover-border-pale-blue:hover{border-color:#e7ffff!important}
-/* DEFAULT THEME */
-.theme-l5 {color:#000 !important; background-color:#f6f8fc !important}
-.theme-l4 {color:#000 !important; background-color:#e1e9f6 !important}
-.theme-l3 {color:#000 !important; background-color:#c3d3ed !important}
-.theme-l2 {color:#000 !important; background-color:#a5bee4 !important}
-.theme-l1 {color:#fff !important; background-color:#88a8db !important}
-.theme-d1 {color:#fff !important; background-color:#5180cb !important}
-.theme-d2 {color:#fff !important; background-color:#3a6fc3 !important}
-.theme-d3 {color:#fff !important; background-color:#3361aa !important}
-.theme-d4 {color:#fff !important; background-color:#2c5392 !important}
-.theme-d5 {color:#fff !important; background-color:#24457a !important}
-
-.theme-light {color:#000 !important; background-color:#f6f8fc !important}
-.theme-dark {color:#fff !important; background-color:#24457a !important}
-.theme-action {color:#fff !important; background-color:#24457a !important}
-
-.theme {color:#fff !important; background-color:#6a92d3 !important}
-.text-theme {color:#6a92d3 !important}
-.border-theme {border-color:#6a92d3 !important}
-
-.hover-theme:hover {color:#fff !important; background-color:#6a92d3 !important}
-.hover-text-theme:hover {color:#6a92d3 !important}
-.hover-border-theme:hover {border-color:#6a92d3 !important}
-
-/* .label { color: #000; font-size: 8pt;} */
-/* #main {margin-left: 210px;} */
-/* @media (max-width:768px){
-  #sidebar { display: none;}
-  #main { margin-left: 0px;} 
-} */
-
-.table {
-  table-layout: fixed;
-}
-
-.text-line-through { text-decoration: line-through; }
-
-#snackbar {
-  visibility: hidden;
-  min-width: 250px;
-  margin-left: -125px;
-  background-color: #333;
-  color: #fff;
-  text-align: center;
-  
-  padding: 16px;
-  position: fixed;
-  z-index: 1;
-  left: 50%;
-  bottom: 30px;
-  font-size: 17px;
-}
-
-#snackbar.show {
-  visibility: visible;
-  -webkit-animation: fadein 0.5s, fadeout 0.5s 2.5s;
-  animation: fadein 0.5s, fadeout 0.5s 2.5s;
-}
-
-@-webkit-keyframes fadein {
-  from {bottom: 0; opacity: 0;} 
-  to {bottom: 30px; opacity: 1;}
-}
-
-@keyframes fadein {
-  from {bottom: 0; opacity: 0;}
-  to {bottom: 30px; opacity: 1;}
-}
-
-@-webkit-keyframes fadeout {
-  from {bottom: 30px; opacity: 1;} 
-  to {bottom: 0; opacity: 0;}
-}
-
-@keyframes fadeout {
-  from {bottom: 30px; opacity: 1;}
-  to {bottom: 0; opacity: 0;}
-}
-
-.tabulator-header-filter > input {
-  background-color: #fff;
-  border: 1px solid #ccc;
-  font-weight: normal;
-}
-
-.readonly {
-  pointer-events:none;
-  color: #000!important;
-  background-color: #d3d3d3!important;
-}
-
-
-
-.right-side-bg {
-  background: url("../img/bg1.jpg");
-  background-size: cover;
-  min-height: 100vh;
-}
-
-
-
-
-/* .mceContentBody { 
-  background: #fff;
-  color:#000;
-} */
-
-/* .tabulator-row-even {
-  background-color: #757575;
-} */
-
-
-button
-{
-       background-color: #f4f4f4;
-       border: 1pt solid #cccccc;
-       font-size: 10pt;
-       color: #000;
-       line-height: 1line;
-       text-align: center;
-}
-button:hover
-{
-       background-color: #343434;
-}
-button:pressed
-{
-       background-color: #343434;
-}
-button:focus
-{
-       background-color: #343434;
-}
-
-header
-{
-       background-color: #fff;
-       box-sizing: border-box;
-}
-
-
-
-::-webkit-input-placeholder
-{
-       color: rgba(60.3922%,60.3922%,60.3922%,1);
-}
-
-
-textarea
-{
-       background-color: #fff;
-       border-top-color: rgba(80%,80%,80%,1);
-       border-right-color: rgba(80%,80%,80%,1);
-       border-bottom-color: rgba(80%,80%,80%,1);
-       border-left-color: rgba(80%,80%,80%,1);
-       border-top-style: solid;
-       border-right-style: solid;
-       border-bottom-style: solid;
-       border-left-style: solid;
-       border-top-width: 1pt;
-       border-right-width: 1pt;
-       border-bottom-width: 1pt;
-       border-left-width: 1pt;
-       font-size: 11pt;
-       color: #000;
-       line-height: 1line;
-       text-align: left;
-       /* margin-top: 0.88em;
-       margin-right: 0.75em;
-       margin-bottom: 0.63em;
-       margin-left: 0.75em;
-       top: 0pt;
-       right: 30pt;
-       bottom: 0pt;
-       left: 0pt;
-       position: absolute;
-       box-sizing: border-box; */
-}
-textarea:focus
-{
-       border-top-color: rgba(0%,43.9216%,81.1765%,1);
-       border-right-color: rgba(0%,43.9216%,81.1765%,1);
-       border-bottom-color: rgba(0%,43.9216%,81.1765%,1);
-       border-left-color: rgba(0%,43.9216%,81.1765%,1);
-}
-textarea:placeholder
-{
-       color: rgba(80%,80%,80%,1);
-}
-/* textarea .text
-{
-       
-} */
-textarea .scrollbar_track
-{
-       width: 30pt;
-       top: 0pt;
-       right: 0pt;
-       bottom: 0pt;
-       position: absolute;
-       box-sizing: border-box;
-}
-
-
-footer
-{
-       background-color: #fff;
-       box-sizing: border-box;
-}
-
-
-div.group_container
-{
-       background-color: #e3e3e3;
-       border-top-color: rgba(80%,80%,80%,1);
-       border-right-color: rgba(80%,80%,80%,1);
-       border-bottom-color: rgba(80%,80%,80%,1);
-       border-left-color: rgba(80%,80%,80%,1);
-       border-top-style: solid;
-       border-right-style: solid;
-       border-bottom-style: solid;
-       border-left-style: solid;
-       border-top-width: 1pt;
-       border-right-width: 1pt;
-       border-bottom-width: 1pt;
-  border-left-width: 1pt;
-  padding-top: 4px;
-  padding-bottom: 8px;
-}
-
-/* Custom Styles */
-.ListView_Default
-{
-       
-       background-color: rgba(0%,0%,0%,0);
-       border-top-style: none;
-       border-right-style: none;
-       border-bottom-style: none;
-       border-left-style: none;
-       
-       color: #000;
-       text-align: left;
-       margin-top: 2pt;
-       margin-right: 2pt;
-       margin-bottom: 2pt;
-       margin-left: 2pt;
-}
-
-
-button.btnNavigation 
-{
-       
-       background-color: rgba(0%,0%,0%,0);
-       
-
-       font-weight: bold;
-       font-size: 10pt;
-       color: #fff;
-       padding-top: 0pt;
-       padding-right: 0pt;
-       padding-bottom: 0pt;
-       padding-left: 0pt;
-}
-
-div.PageListHeader
-{
-       border-top-color: rgba(80%,80%,80%,1);
-       border-right-color: rgba(80%,80%,80%,1);
-       border-bottom-color: rgba(80%,80%,80%,1);
-       border-left-color: rgba(80%,80%,80%,1);
-       border-top-style: solid;
-       border-right-style: solid;
-       border-bottom-style: solid;
-       border-left-style: solid;
-       border-top-width: 1pt;
-       border-right-width: 1pt;
-       border-bottom-width: 1pt;
-       border-left-width: 1pt;
-       color: #fff;
-
-}
-div.PageListHeader .inner_border
-{
-       padding-top: 5pt;
-       padding-right: 5pt;
-       padding-bottom: 5pt;
-       padding-left: 5pt;
-}
-
-.moduletoolbar
-{
-  background-color: #293146;
-  color: #fff;
-}
-
-div.BodySectionHeader
-{
-
-       font-weight: bold;
-}
-
-button.Button_ImgPlacer
-{
-       
-       background-color: rgba(0%,0%,0%,0);
-       border-top-style: none;
-       border-right-style: none;
-       border-bottom-style: none;
-       border-left-style: none;
-       
-
-       font-weight: bold;
-       font-size: 10pt;
-       color: #fff;
-}
-button.Button_ImgPlacer .inner_border
-{
-       padding-top: 0pt;
-       padding-right: 0pt;
-       padding-bottom: 0pt;
-       padding-left: 0pt;
-}
-
-
-div.PageHeadTitle
-{
-       font-size: 18pt;
-       color: #fff;
-}
-
-div.ListView_SectionHeader
-{
-       
-       background-color: rgba(22.3529%,26.6667%,38.4314%,1);
-       
-}
-
-button.toolbarbtn
-{
-  border: 0.5px solid #c6c6c6;
-       
-       background-color: rgba(0%,0%,0%,0);
-       
-       color: #fff;
-}
-button.toolbarbtn:hover
-{
-       
-       background-color: rgba(20.3922%,20.3922%,20.3922%,1);
-       
-}
-button.toolbarbtn:pressed
-{
-       
-       background-color: rgba(20.3922%,20.3922%,20.3922%,1);
-       
-}
-button.toolbarbtn:focus
-{
-       border-top-color: rgba(80%,80%,80%,1);
-       border-right-color: rgba(80%,80%,80%,1);
-       border-bottom-color: rgba(80%,80%,80%,1);
-       border-left-color: rgba(80%,80%,80%,1);
-}
-
-
-a.toolbarbtn
-{
-  border: 0.5px solid #c6c6c6;
-       background-color: rgba(0%,0%,0%,0);
-  color: #fff;
-  text-decoration: none!important;
-  font-size: 13pt!important;
-}
-a.toolbarbtn:hover
-{
-       
-       background-color: rgba(20.3922%,20.3922%,20.3922%,1);
-       
-}
-a.toolbarbtn:pressed
-{
-       
-       background-color: rgba(20.3922%,20.3922%,20.3922%,1);
-       
-}
-butaton.toolbarbtn:focus
-{
-       border-top-color: rgba(80%,80%,80%,1);
-       border-right-color: rgba(80%,80%,80%,1);
-       border-bottom-color: rgba(80%,80%,80%,1);
-       border-left-color: rgba(80%,80%,80%,1);
-}
-
-
-div.ListView_Header
-{
-       border-top-color: rgba(80%,80%,80%,1);
-       border-right-color: rgba(80%,80%,80%,1);
-       border-bottom-color: rgba(80%,80%,80%,1);
-       border-left-color: rgba(80%,80%,80%,1);
-       border-top-style: solid;
-       border-right-style: solid;
-       border-bottom-style: solid;
-       border-left-style: solid;
-       border-top-width: 1pt;
-       border-right-width: 1pt;
-       border-bottom-width: 1pt;
-       border-left-width: 1pt;
-       font-weight: normal;
-       color: #fff;
-
-}
-div.ListView_Header .inner_border
-{
-       padding-top: 2pt;
-       padding-right: 2pt;
-       padding-bottom: 2pt;
-       padding-left: 2pt;
-}
-
-div.toolbar
-{
-       /*  */
-       /* background-color: rgba(32.1569%,38.8235%,55.6863%,1); */
-       background-color: #003268;
-       /*  */
-}
-
-div.FooterLabel
-{
-       color: #fff;
-}
-
-button.Buttom_BodyNav:hover
-{
-       
-       background-color: rgb(141, 141, 141);
-       
-       /* color: #fff; */
-}
-
-
-/* div.portalpanel {
-       display: -webkit-box;
-       width: 100%;
-} */
-
-/* .portal{
-       width: 100%; 
-       table-layout: fixed;
-       border-collapse: collapse;
-}
-
-.portal tbody{
-display:block;
-width: 100%;
-overflow-y: scroll;
-}
-
-.portal thead tr,.portal tfoot tr {
- display: block;
- width: 100%;
-}
-
-.portal thead,.portal tfoot {
-background: #384462;
-color:#fff;
-}
-
-.portal th, .portal td {
-padding: 5px;
-text-align: left;
-width: 100%;
- border: 1px solid #c6c6c6;
-
-}
-
-.portal tbody tr:nth-child(even) { 
-       background-color: rgb(247, 247, 247);
-}
-
-.portal tbody tr:hover{
-       background-color: #959fb9;
-}
-
-.portal_selected {
-       background-color: #acacac!important;
-} */
-
-
-
-
-::-webkit-scrollbar {
--webkit-appearance: none;
-width: 10px;
-}
-
-::-webkit-scrollbar-track {
-       background-color:  rgba(80%, 80%, 80%, .5);
-}
-
-::-webkit-scrollbar-thumb {
-border-radius: 0px;
-background-color: rgba(0, 0, 0, .5);
--webkit-box-shadow: 0 0 1px rgba(255, 255, 255, .5);
-}      
-
-div.portaltextheader {
-       padding: 2px;
-       border: 1px solid white;
-}
-
-
-
-
-
-select {
-  /* -webkit-appearance: none; */
-  display: block;
-  color: #000;
-  line-height: 1line;
-       text-align: left;
-  padding: 3.5px;
-  width: 100%;
-  max-width: 100%; 
-  box-sizing: border-box;
-       margin: 0;
-       border: 0;
-  border-bottom: 1px solid #cccccc;
-  /* box-shadow: 0 1px 0 1px rgba(0,0,0,.04); */
-  border-radius: 0px;
-  font-weight: normal;
-  font-size: 11pt;
-  background-color: #fff;
-  /* background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E'), 
-    linear-gradient(to bottom, #fff 0%,#fff 100%);
-  background-repeat: no-repeat, repeat;
-  background-position: right .7em top 50%, 0 0;
-  background-size: .65em auto, 100%; */
-}
-
-
-/* option {
-  appearance: none;
-  border: 1px solid 0070cf;
-  padding: 2px;
-} */
-select:focus
-{
-       outline: 1px solid #3a6fc3;  
-       /* border: 1px solid #3a6fc3; */
-  /* border-radius: unset; */
-}
-
-
-::-webkit-select-placeholder
-{
-       color: #9a9a9a;
-}
-
-div.DataFooter{
-       background: #384462;
-}
-.input-sum{padding:2px;display:block;border: 1px solid #ccc;width:100%;background-color: #4D4D4D; }  
-
-
-.currency-sum {padding:2px;display:block;border: 1px solid #ccc;width:100%;background-color: #4D4D4D;}
-
-.currency-sum,.currency-sum:read-only {
-  display: block;
-  color: #fff;
-  padding: 2px;
-  padding-right: 12px;
-  width: 100%;
-  max-width: 100%; 
-  box-sizing: border-box;
-  margin: 0;
-  border: 1px solid #ccc;
-  border-radius: unset;
-  -moz-appearance: none;
-  -webkit-appearance: none;
-  appearance: none;
-  background-color: #4D4D4D;
-  background-image: url('data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22225%22%20height=%22300%22%3E%3Cpath%20fill=%22white%22%20stroke=%22none%22%20d=%22m%20224.99996,16.22698%20-8.11342,36.41161%20q%20-24.14255,-19.78892%20-54.61741,-19.78892%20-41.3588,0%20-65.00658,23.74671%20-23.647774,23.7467%20-28.397115,53.23215%20l%20134.960355,0%20-5.14505,26.71508%20-132.981532,0%20-0.395848,7.71771%200.395848,18.20566%20127.242642,0%20-5.14505,26.71508%20-117.941954,0%20q%207.519719,40.17154%2032.552754,59.06997%2025.03303,18.89844%2056.49745,18.89844%2037.20302,0%2057.98149,-19.59107%20l%200,40.9631%20Q%20192.34828,300%20162.26913,300%2053.034301,300%2030.474864,189.18206%20l%20-30.474864,0%205.738751,-26.71508%2020.580475,0%20q%20-0.395708,-4.74934%20-0.395708,-17.80995%20l%200,-8.11342%20-25.923518,0%205.738751,-26.71508%2023.152999,0%20Q%2039.181988,55.21112%2076.583149,27.60556%20113.98417,0%20163.06069,0%20199.868,0%20224.99996,16.22698%20z%22%20/%3E%3C/svg%3E');
-  background-repeat: no-repeat, repeat;
-  background-position: right 2px top 50%, 0 0;
-  background-size: 9px auto, 100%;
-}
-
-
-
-
-/* input[type=date]::-webkit-inner-spin-button, 
-input[type=date]::-webkit-outer-spin-button { 
-  display: none;
-} */
-
-:focus {
-  outline: unset;
-}
-
-input
-{
-       background-color: #ffffff;
-       border: 0;
-       border-bottom: 1px solid #cccccc; 
-       font-weight: normal;
-       font-size: 11pt;
-       color: #000000;
-       line-height: 1line;
-  text-align: left;
-  width:100%;
-  padding:2px;
-  display:block;
-       border-radius: 3px;
-}
-/* input:focus
-{
-       border: #0070cf;
-} */
-
-input:focus {
-  border: 1px solid #3a6fc3;
-  border-radius: unset;
-}
-
-input[readonly=true]{
-  color: #000!important;
-  background-color: #d3d3d3!important;
-}
-
-/* input[type=number]::-webkit-inner-spin-button, 
-input[type=number]::-webkit-outer-spin-button { 
-  -webkit-appearance: none; 
-  margin: 0; 
-} */
-/* input[type=checkbox]{
-  appearance: none;
-  display:inline-block;
-  font-size: 24px!important;
-  border: 1px solid green;
-} */
-
-input[class=currency] {
-  padding: 2px;
-  padding-right: 12px;
-  text-align: right;
-  background-image: url('data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22225%22%20height=%22300%22%3E%3Cpath%20stroke=%22none%22%20d=%22m%20224.99996,16.22698%20-8.11342,36.41161%20q%20-24.14255,-19.78892%20-54.61741,-19.78892%20-41.3588,0%20-65.00658,23.74671%20-23.647774,23.7467%20-28.397115,53.23215%20l%20134.960355,0%20-5.14505,26.71508%20-132.981532,0%20-0.395848,7.71771%200.395848,18.20566%20127.242642,0%20-5.14505,26.71508%20-117.941954,0%20q%207.519719,40.17154%2032.552754,59.06997%2025.03303,18.89844%2056.49745,18.89844%2037.20302,0%2057.98149,-19.59107%20l%200,40.9631%20Q%20192.34828,300%20162.26913,300%2053.034301,300%2030.474864,189.18206%20l%20-30.474864,0%205.738751,-26.71508%2020.580475,0%20q%20-0.395708,-4.74934%20-0.395708,-17.80995%20l%200,-8.11342%20-25.923518,0%205.738751,-26.71508%2023.152999,0%20Q%2039.181988,55.21112%2076.583149,27.60556%20113.98417,0%20163.06069,0%20199.868,0%20224.99996,16.22698%20z%22%20/%3E%0A%3C/svg%3E'), 
-  linear-gradient(to bottom, #fff 0%,#fff 100%);
-  background-repeat: no-repeat, repeat;
-  background-position: right 2px top 50%, 0 0;
-  background-size: 9px auto, 100%;
-}
-
-input[class=currency]:read-only {
-  background-image: url('data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22225%22%20height=%22300%22%3E%3Cpath%20stroke=%22none%22%20d=%22m%20224.99996,16.22698%20-8.11342,36.41161%20q%20-24.14255,-19.78892%20-54.61741,-19.78892%20-41.3588,0%20-65.00658,23.74671%20-23.647774,23.7467%20-28.397115,53.23215%20l%20134.960355,0%20-5.14505,26.71508%20-132.981532,0%20-0.395848,7.71771%200.395848,18.20566%20127.242642,0%20-5.14505,26.71508%20-117.941954,0%20q%207.519719,40.17154%2032.552754,59.06997%2025.03303,18.89844%2056.49745,18.89844%2037.20302,0%2057.98149,-19.59107%20l%200,40.9631%20Q%20192.34828,300%20162.26913,300%2053.034301,300%2030.474864,189.18206%20l%20-30.474864,0%205.738751,-26.71508%2020.580475,0%20q%20-0.395708,-4.74934%20-0.395708,-17.80995%20l%200,-8.11342%20-25.923518,0%205.738751,-26.71508%2023.152999,0%20Q%2039.181988,55.21112%2076.583149,27.60556%20113.98417,0%20163.06069,0%20199.868,0%20224.99996,16.22698%20z%22%20/%3E%0A%3C/svg%3E'), 
-    linear-gradient(to bottom, #d3d3d3 0%,#d3d3d3 100%);
-}
-
-input[class=percent] {
-  padding: 2px;
-  padding-right: 12px;
-  text-align: right;
-  background-image: url('data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22256%22%20height=%22232%22%20version=%221.0%22%3E%3Cg%20transform=%22translate(-112.3674,-128.3649)%22%3E%3Cpath%20style=%22fill:black;fill-opacity:1;stroke:none%22%20d=%22M%20317.1674,257.53698%20C%20308.53463,257.53708%20301.73774,261.20839%20296.77671,268.55094%20C%20291.91449,275.89365%20289.48349,286.1138%20289.48368,299.2114%20C%20289.48349,312.11067%20291.91449,322.2812%20296.77671,329.72303%20C%20301.73774,337.06568%20308.53463,340.737%20317.1674,340.73698%20C%20325.60128,340.737%20332.24934,337.06568%20337.11159,329.72303%20C%20342.07258,322.2812%20344.5532,312.11067%20344.55345,299.2114%20C%20344.5532,286.21302%20342.07258,276.04249%20337.11159,268.69977%20C%20332.24934,261.25801%20325.60128,257.53708%20317.1674,257.53698%20M%20317.1674,238.63466%20C%20332.84469,238.63477%20345.29739,244.09213%20354.52554,255.00675%20C%20363.75318,265.92157%20368.36713,280.65644%20368.3674,299.2114%20C%20368.36713,317.76648%20363.70357,332.50135%20354.37671,343.41605%20C%20345.14855,354.23156%20332.74546,359.6393%20317.1674,359.63931%20C%20301.29123,359.6393%20288.7393,354.23156%20279.51159,343.41605%20C%20270.28351,332.50135%20265.66956,317.76648%20265.66973,299.2114%20C%20265.66956,280.55721%20270.28351,265.82234%20279.51159,255.00675%20C%20288.83853,244.09213%20301.39045,238.63477%20317.1674,238.63466%20M%20163.5674,147.9928%20C%20155.03401,147.993%20148.28673,151.71393%20143.32554,159.15559%20C%20138.46349,166.49841%20136.03248,176.61933%20136.03252,189.51838%20C%20136.03248,202.61621%20138.46349,212.83635%20143.32554,220.17884%20C%20148.18751,227.52161%20154.93479,231.19292%20163.5674,231.1928%20C%20172.19989,231.19292%20178.94717,227.52161%20183.80926,220.17884%20C%20188.77041,212.83635%20191.25103,202.61621%20191.25113,189.51838%20C%20191.25103,176.71856%20188.77041,166.59764%20183.80926,159.15559%20C%20178.84794,151.71393%20172.10066,147.993%20163.5674,147.9928%20M%20297.9674,129.09047%20L%20321.78136,129.09047%20L%20182.7674,359.63931%20L%20158.95345,359.63931%20L%20297.9674,129.09047%20M%20163.5674,129.09047%20C%20179.24484,129.0907%20191.74715,134.54806%20201.07438,145.46256%20C%20210.4014,156.27827%20215.06496,170.96352%20215.06508,189.51838%20C%20215.06496,208.27201%20210.4014,223.05649%20201.07438,233.87187%20C%20191.84638,244.68748%20179.34406,250.09523%20163.5674,250.09512%20C%20147.79061,250.09523%20135.28829,244.68748%20126.06043,233.87187%20C%20116.93172,222.95727%20112.36739,208.17279%20112.3674,189.51838%20C%20112.36739,171.06275%20116.98134,156.37749%20126.20926,145.46256%20C%20135.43713,134.54806%20147.88983,129.0907%20163.5674,129.09047%22%20/%3E%3C/g%3E%3C/svg%3E'), 
-    linear-gradient(to bottom, #fff 0%,#fff 100%);
-  background-repeat: no-repeat, repeat;
-  background-position: right 2px top 50%, 0 0;
-  background-size: 9px auto, 100%;
-}
-
-
-label {
-  height: 12.8px!important;
-  color: #757575; 
-  font-size: 8pt;
-}
-
-
-
-input[type="checkbox"] {
-  display: block;
-  -webkit-appearance:none;/* Hides the default checkbox style */ 
-  height:29.66px;
-  width:29.66px;
-  cursor:pointer;
-  position:relative;
-  -webkit-transition: .15s;
-  border-radius: unset;
-  border: 1px solid #cccccc; 
-  background-color:#fff;
- }
- input[type="checkbox"]:checked {
-  background-color:green;
- }
- input[type="checkbox"]:before, input[type="checkbox"]:checked:before {
-  position:absolute;
-  top:0;
-  left:0;
-  width:100%;
-  height:100%;
-  line-height:2em;
-  text-align:center;
-  color:#fff;
-  content: '';
- }
- input[type="checkbox"]:checked:before {
-  font-size: 11pt;
-  content: '✔';
- }
- input[type="checkbox"]:hover:before {
-  background:rgba(255,255,255,0.3);
- }
-
- body.mceContentBody { 
-  background:#e8f0fe;
-  color:#000;
-}
-
-/* .mceContentBody { 
-  background: #e8f0fe;
-  color:#000;
-} */
-
-/* .tabulator-row-even {
-  background-color: #757575;
-} */
-
-
-input:hover:enabled , select:hover:enabled {
-  outline: 1px solid #607d8b;
-  outline-offset: -1px;
-       /* Opera/IE 8+ */
-} 
-input:focus:enabled, select:focus:enabled  {
-  outline: 1px solid #607d8b;
-  outline-offset: -1px;
-       /* Opera/IE 8+ */
-} 
-
-input[type="time"]::-webkit-calendar-picker-indicator {
-  display: none;
-}
-
-.border-bottom {
-  border-bottom: 2px solid #00bcd4;
-}
\ No newline at end of file
diff --git a/website/img/bg.png b/website/img/bg.png
deleted file mode 100644 (file)
index 7f32c97..0000000
Binary files a/website/img/bg.png and /dev/null differ
diff --git a/website/img/club.png b/website/img/club.png
deleted file mode 100644 (file)
index a80ec28..0000000
Binary files a/website/img/club.png and /dev/null differ
diff --git a/website/img/favicon/android-icon-144x144.png b/website/img/favicon/android-icon-144x144.png
deleted file mode 100644 (file)
index 86c76eb..0000000
Binary files a/website/img/favicon/android-icon-144x144.png and /dev/null differ
diff --git a/website/img/favicon/android-icon-192x192.png b/website/img/favicon/android-icon-192x192.png
deleted file mode 100644 (file)
index c156ad7..0000000
Binary files a/website/img/favicon/android-icon-192x192.png and /dev/null differ
diff --git a/website/img/favicon/android-icon-36x36.png b/website/img/favicon/android-icon-36x36.png
deleted file mode 100644 (file)
index 747aa84..0000000
Binary files a/website/img/favicon/android-icon-36x36.png and /dev/null differ
diff --git a/website/img/favicon/android-icon-48x48.png b/website/img/favicon/android-icon-48x48.png
deleted file mode 100644 (file)
index 8db5eec..0000000
Binary files a/website/img/favicon/android-icon-48x48.png and /dev/null differ
diff --git a/website/img/favicon/android-icon-72x72.png b/website/img/favicon/android-icon-72x72.png
deleted file mode 100644 (file)
index 15bcb2e..0000000
Binary files a/website/img/favicon/android-icon-72x72.png and /dev/null differ
diff --git a/website/img/favicon/android-icon-96x96.png b/website/img/favicon/android-icon-96x96.png
deleted file mode 100644 (file)
index f100597..0000000
Binary files a/website/img/favicon/android-icon-96x96.png and /dev/null differ
diff --git a/website/img/favicon/apple-icon-114x114.png b/website/img/favicon/apple-icon-114x114.png
deleted file mode 100644 (file)
index 0750044..0000000
Binary files a/website/img/favicon/apple-icon-114x114.png and /dev/null differ
diff --git a/website/img/favicon/apple-icon-120x120.png b/website/img/favicon/apple-icon-120x120.png
deleted file mode 100644 (file)
index 3877b6b..0000000
Binary files a/website/img/favicon/apple-icon-120x120.png and /dev/null differ
diff --git a/website/img/favicon/apple-icon-144x144.png b/website/img/favicon/apple-icon-144x144.png
deleted file mode 100644 (file)
index 86c76eb..0000000
Binary files a/website/img/favicon/apple-icon-144x144.png and /dev/null differ
diff --git a/website/img/favicon/apple-icon-152x152.png b/website/img/favicon/apple-icon-152x152.png
deleted file mode 100644 (file)
index 4a86c7a..0000000
Binary files a/website/img/favicon/apple-icon-152x152.png and /dev/null differ
diff --git a/website/img/favicon/apple-icon-180x180.png b/website/img/favicon/apple-icon-180x180.png
deleted file mode 100644 (file)
index dbb3bba..0000000
Binary files a/website/img/favicon/apple-icon-180x180.png and /dev/null differ
diff --git a/website/img/favicon/apple-icon-57x57.png b/website/img/favicon/apple-icon-57x57.png
deleted file mode 100644 (file)
index 951ada5..0000000
Binary files a/website/img/favicon/apple-icon-57x57.png and /dev/null differ
diff --git a/website/img/favicon/apple-icon-60x60.png b/website/img/favicon/apple-icon-60x60.png
deleted file mode 100644 (file)
index bcc7174..0000000
Binary files a/website/img/favicon/apple-icon-60x60.png and /dev/null differ
diff --git a/website/img/favicon/apple-icon-72x72.png b/website/img/favicon/apple-icon-72x72.png
deleted file mode 100644 (file)
index 15bcb2e..0000000
Binary files a/website/img/favicon/apple-icon-72x72.png and /dev/null differ
diff --git a/website/img/favicon/apple-icon-76x76.png b/website/img/favicon/apple-icon-76x76.png
deleted file mode 100644 (file)
index b9b0895..0000000
Binary files a/website/img/favicon/apple-icon-76x76.png and /dev/null differ
diff --git a/website/img/favicon/apple-icon-precomposed.png b/website/img/favicon/apple-icon-precomposed.png
deleted file mode 100644 (file)
index f64a9a7..0000000
Binary files a/website/img/favicon/apple-icon-precomposed.png and /dev/null differ
diff --git a/website/img/favicon/apple-icon.png b/website/img/favicon/apple-icon.png
deleted file mode 100644 (file)
index f64a9a7..0000000
Binary files a/website/img/favicon/apple-icon.png and /dev/null differ
diff --git a/website/img/favicon/browserconfig.xml b/website/img/favicon/browserconfig.xml
deleted file mode 100644 (file)
index c554148..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<browserconfig><msapplication><tile><square70x70logo src="/ms-icon-70x70.png"/><square150x150logo src="/ms-icon-150x150.png"/><square310x310logo src="/ms-icon-310x310.png"/><TileColor>#ffffff</TileColor></tile></msapplication></browserconfig>
\ No newline at end of file
diff --git a/website/img/favicon/favicon-16x16.png b/website/img/favicon/favicon-16x16.png
deleted file mode 100644 (file)
index 0281448..0000000
Binary files a/website/img/favicon/favicon-16x16.png and /dev/null differ
diff --git a/website/img/favicon/favicon-32x32.png b/website/img/favicon/favicon-32x32.png
deleted file mode 100644 (file)
index 9eb08e9..0000000
Binary files a/website/img/favicon/favicon-32x32.png and /dev/null differ
diff --git a/website/img/favicon/favicon-96x96.png b/website/img/favicon/favicon-96x96.png
deleted file mode 100644 (file)
index f100597..0000000
Binary files a/website/img/favicon/favicon-96x96.png and /dev/null differ
diff --git a/website/img/favicon/favicon.ico b/website/img/favicon/favicon.ico
deleted file mode 100644 (file)
index efacd69..0000000
Binary files a/website/img/favicon/favicon.ico and /dev/null differ
diff --git a/website/img/favicon/manifest.json b/website/img/favicon/manifest.json
deleted file mode 100644 (file)
index 013d4a6..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-{
- "name": "App",
- "icons": [
-  {
-   "src": "\/android-icon-36x36.png",
-   "sizes": "36x36",
-   "type": "image\/png",
-   "density": "0.75"
-  },
-  {
-   "src": "\/android-icon-48x48.png",
-   "sizes": "48x48",
-   "type": "image\/png",
-   "density": "1.0"
-  },
-  {
-   "src": "\/android-icon-72x72.png",
-   "sizes": "72x72",
-   "type": "image\/png",
-   "density": "1.5"
-  },
-  {
-   "src": "\/android-icon-96x96.png",
-   "sizes": "96x96",
-   "type": "image\/png",
-   "density": "2.0"
-  },
-  {
-   "src": "\/android-icon-144x144.png",
-   "sizes": "144x144",
-   "type": "image\/png",
-   "density": "3.0"
-  },
-  {
-   "src": "\/android-icon-192x192.png",
-   "sizes": "192x192",
-   "type": "image\/png",
-   "density": "4.0"
-  }
- ]
-}
\ No newline at end of file
diff --git a/website/img/favicon/ms-icon-144x144.png b/website/img/favicon/ms-icon-144x144.png
deleted file mode 100644 (file)
index 86c76eb..0000000
Binary files a/website/img/favicon/ms-icon-144x144.png and /dev/null differ
diff --git a/website/img/favicon/ms-icon-150x150.png b/website/img/favicon/ms-icon-150x150.png
deleted file mode 100644 (file)
index d81670d..0000000
Binary files a/website/img/favicon/ms-icon-150x150.png and /dev/null differ
diff --git a/website/img/favicon/ms-icon-310x310.png b/website/img/favicon/ms-icon-310x310.png
deleted file mode 100644 (file)
index 3693385..0000000
Binary files a/website/img/favicon/ms-icon-310x310.png and /dev/null differ
diff --git a/website/img/favicon/ms-icon-70x70.png b/website/img/favicon/ms-icon-70x70.png
deleted file mode 100644 (file)
index 54d9f3e..0000000
Binary files a/website/img/favicon/ms-icon-70x70.png and /dev/null differ
diff --git a/website/img/logo.png b/website/img/logo.png
deleted file mode 100644 (file)
index 605f989..0000000
Binary files a/website/img/logo.png and /dev/null differ
diff --git a/website/img/news.png b/website/img/news.png
deleted file mode 100644 (file)
index d769cc7..0000000
Binary files a/website/img/news.png and /dev/null differ
diff --git a/website/img/person.jpg b/website/img/person.jpg
deleted file mode 100644 (file)
index 5388cb8..0000000
Binary files a/website/img/person.jpg and /dev/null differ
diff --git a/website/index.cgi b/website/index.cgi
deleted file mode 100644 (file)
index 9c00d6d..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-#!/usr/local/bin/perl
-
-use strict;
-use FindBin qw/$Bin $RealBin/;
-#use lib ('app/lib/perl5');
-use lib ($RealBin.'/website/lib');
-use lib ($RealBin.'/lib');
-use File::Basename;
-use Template;
-# use Template::Constants qw( :debug );
-use CGI;
-use CGI::Carp qw/fatalsToBrowser/;
-use dksconfig qw($sitecfg);
-#use FindBin qw($Bin $RealBin);
-
-use Data::Dumper;
-use JSON::PP;
-use URI::Encode qw /uri_encode/;
-
-
-my $cgi = new CGI();
-my $p=();
-my $vars = $sitecfg;
-my @params = $cgi->param();
-foreach my $pp (@params){
-       $p->{$pp} = $cgi->param($pp);
-} 
-
-$vars->{filepath} = substr($cgi->url({-absolute=>1}),length($vars->{basepath})+1); 
-$vars->{baseurl} = $cgi->url({-base=>1}).$vars->{basepath};
-$vars->{url} = $cgi->url({-full=>1});
-$vars->{encodedurl} = uri_encode($vars->{url},{encode_reserved => 1});
-
-if ($vars->{filepath} ne ""){
-  $vars->{page} = $vars->{filepath};
-  $vars->{page} =~ s/html$/tt/;
-  
-}
-$vars->{abspath} = "";
-$vars->{pagelink} = basename($vars->{page});
-$vars->{pagelink} =~ s/\.tt$//;  
-
-
-#}
-#$p->{dirname} = dirname($0);
-#if (!exists($p))
-#$p->{baseurl} = $cgi->url({-base=>1});
-#$p->{pathinfo} = 
-#$p->{basepath} = ;
-
-# if (!exists($p->{sid}))
-# {
-#      $p->{sid} = $cgi->cookie('juridig');    
-# }
-# my $se = session->new();
-# my $sesdata = $se->getsession($p->{sid});
-# if (!exists($sesdata->{usersession})){
-#      $p->{page} = "login";
-# }
-print $cgi->header(-type=>'text/html', -charset=>"utf-8");
-my $template = Template->new({INCLUDE_PATH => [$sitecfg->{tmplpath}]});
-my @lv = split(/\//,$vars->{filepath});
-my $absnum = scalar(@lv)-1;
-$vars->{abspath} = "";
-for (my $i=0;$i<$absnum;$i++){
-  $vars->{abspath} .= "../";
-}
-$vars->{params} = $p;
-$vars->{pageshort} = $vars->{page};
-$vars->{page} = 'page/'.$vars->{page};
-
-$vars->{pagename} = basename($vars->{page});
-
-# $vars->{dbconn} = 'DBI:SQLite:dbname=fld.sqlite';
-$vars->{pagename} =~ s/\.tt$//;
-#print Dumper($vars);
-if (! -e $sitecfg->{tmplpath}.'/'.$vars->{page}){
-  mkdir(dirname(dirname($0).'/tmpl/'.$vars->{page}));
-  open(NP,">".dirname($0).'/tmpl/'.$vars->{page});
-  print NP $vars->{page};
-  close(NP);
-}
-#print Dumper($vars);
-my $skl = "index.tt";#dirname($vars->{page});
-if (-e $sitecfg->{tmplpath}.'/'.basename($vars->{page})){
-  $skl = basename($vars->{page});
-}
-# print Dumper($template);
-$template->process($skl,$vars) || die "Template process failed: ", $template->error(), "\n";
-
-
diff --git a/website/index.php b/website/index.php
deleted file mode 100644 (file)
index 0feadc8..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-<?php 
-  require('lib/vendor/mustache/mustache/src/Mustache/Autoloader.php');
-  Mustache_Autoloader::register();
-
-  require("lib/config.php");
-  require("lib/database.php");
-  
-  $vars = array();
-  $vars["page"] = 'home.html';
-  if ($_SERVER["REQUEST_URI"] != $cfg["basepath"]){
-    $vars["filepath"] = $_SERVER["REQUEST_URI"];
-    $vars["page"] = substr($vars["filepath"],strlen($cfg["basepath"]));
-  }
-  $vars["contenttype"] = "text/html";
-  if (substr($vars["page"],-3) == "css"){
-    $vars["contenttype"] = "text/css";
-  } elseif (substr($vars["page"],-2) == "js"){
-    $vars["contenttype"] = "text/javascript";
-  }
-  header('Content-Type: '.$vars["contenttype"]);
-  
-  if (!file_exists($cfg["templatepath"].'/pages/'.$vars["page"].'.mustache'))
-  {
-    $vars["page"] = 'error.html';
-  }
-  if (file_exists($cfg["templatepath"].'/pages/'.$vars["page"].'json')){
-    $db = new database($cfg["db"]);    
-    $tmpdata = file_get_contents($cfg["templatepath"].'/pages/'.$vars["page"].'json');
-    try {
-      $vars["data"] = json_decode($tmpdata,true);
-      foreach ($vars["data"] as $key => $value) {
-        if ($value["sql"]){
-          if ($value["sqltype"] == "query"){
-            $vars["data"][$key] = $db->query($value["sql"]);
-          } elseif ($value["sqltype"] == "queryarray"){
-            $vars["data"][$key] = $db->queryarray($value["sql"]);
-          }
-        }
-      }
-    } catch(JsonException $je){
-      fwrite(STDERR, "JSON ERROR: ".$je->getMessage()."\n");
-    }
-    
-  }
-  $vars["page"] = 'pages/'.$vars["page"];
-  $m = new Mustache_Engine(array(
-    'loader' => new Mustache_Loader_FilesystemLoader($cfg["templatepath"]),
-    'partials_loader' => new Mustache_Loader_FilesystemLoader($cfg["templatepath"].'/blocks'),
-    'escape' => function($value) {
-      return $value;
-    },
-    'entity_flags' => ENT_HTML5
-    
-  ));
-  
-  $vars["pagedata"] = $m->render($vars["page"],$vars);
-
-  $mainsite = $m->render('index.html',$vars);
-  echo $mainsite;
-  // echo "<pre>".print_r($vars).print_r($_SERVER["REQUEST_URI"])."</pre>";
-?>
\ No newline at end of file
diff --git a/website/js/site.js b/website/js/site.js
deleted file mode 100644 (file)
index 952426e..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-function togglemenu(){
-  var mnu = document.getElementById("mobilemenu");
-  if (mnu.style.display == 'none'){
-    mnu.style.display = 'block';
-  } else {
-    mnu.style.display = 'none';
-  }
-}
\ No newline at end of file
diff --git a/website/lib/composer.json b/website/lib/composer.json
deleted file mode 100644 (file)
index d40c2ef..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-  "require":{
-    "mustache/mustache":"2.13.0"
-  }
-}
\ No newline at end of file
diff --git a/website/lib/composer.lock b/website/lib/composer.lock
deleted file mode 100644 (file)
index 0b1a613..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-{
-    "_readme": [
-        "This file locks the dependencies of your project to a known state",
-        "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
-        "This file is @generated automatically"
-    ],
-    "content-hash": "92525a9a1d7680bb4e3111b321d46087",
-    "packages": [
-        {
-            "name": "mustache/mustache",
-            "version": "v2.13.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/bobthecow/mustache.php.git",
-                "reference": "e95c5a008c23d3151d59ea72484d4f72049ab7f4"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/bobthecow/mustache.php/zipball/e95c5a008c23d3151d59ea72484d4f72049ab7f4",
-                "reference": "e95c5a008c23d3151d59ea72484d4f72049ab7f4",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.2.4"
-            },
-            "require-dev": {
-                "friendsofphp/php-cs-fixer": "~1.11",
-                "phpunit/phpunit": "~3.7|~4.0|~5.0"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-0": {
-                    "Mustache": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Justin Hileman",
-                    "email": "justin@justinhileman.info",
-                    "homepage": "http://justinhileman.com"
-                }
-            ],
-            "description": "A Mustache implementation in PHP.",
-            "homepage": "https://github.com/bobthecow/mustache.php",
-            "keywords": [
-                "mustache",
-                "templating"
-            ],
-            "time": "2019-11-23T21:40:31+00:00"
-        }
-    ],
-    "packages-dev": [],
-    "aliases": [],
-    "minimum-stability": "stable",
-    "stability-flags": [],
-    "prefer-stable": false,
-    "prefer-lowest": false,
-    "platform": [],
-    "platform-dev": [],
-    "plugin-api-version": "1.1.0"
-}
diff --git a/website/lib/config.php b/website/lib/config.php
deleted file mode 100644 (file)
index c02f016..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-  $cfg = array(
-    "basepath" => "/ledf_lu/",
-    "templatepath" => "tmpl/",
-    "db"=> array(
-      "type" => "pgsql",
-      "host" => "sql12.your-server.de",
-      "dbname" => "ledflu_db",
-      "user" =>  "ledflu_user",
-      "password" => "znWA9s3cgjEsRsWZ",
-    ),
-  );
-?>
\ No newline at end of file
diff --git a/website/lib/database.php b/website/lib/database.php
deleted file mode 100644 (file)
index fd635a1..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-<?php
-class database {
-  private $conn;
-  private $dbconf;
-  protected function __construct($pdbconf){
-    $this->dbconf = $pdbconf;
-    try {
-      //'mysql:host=<localhost>;dbname=<database>', $user, password
-      //'sqlite:/opt/databases/mydb.sq3
-      //pgsql:host=localhost;port=5432;dbname=testdb;user=bruce;password=mypass
-      $this->conn = new PDO($this->dbconf["type"].':host='.$this->dbconf["host"].';port=5432;dbname='.$this->dbconf["dbname"],$this->dbconf["user"],$this->dbconf["password"]);
-    } catch(PDOException $e){
-      fwrite(STDERR, "Connectio Error: ".$e->getMessage()."\n");
-    }
-  }
-  
-  protected function securetext($text){
-    return str_replace("'","''",$text);
-  }
-  protected function value($text){
-    if (($text == "") || ($text == null)){
-      return 'null';
-    }
-    return "'".$text."'";
-  }
-
-  protected function query($sql){
-    try {
-      if ($this->conn){
-        return $this->conn->query($sql);
-      }
-    } catch(PDOException $e){
-      fwrite(STDERR, "QUERY ERROR: ".$sql."\n");
-    }
-    return null;
-  }
-
-  protected function queryarray($sql){
-    $result = null;
-    try {
-      if ($this->conn){
-                         $sth = $this->link->prepare($sql);
-                         $sth->execute();
-        $result = $sth->fetchAll(PDO::FETCH_ASSOC);
-        return $result;
-      }
-    } catch (PDOException $e){
-      fwrite(STDERR, "QUERYARRAY ERROR: ".$sql."\n");
-    }
-               return $result;
-  }
-
-  protected function exec($sql){
-    try {
-      if ($this->conn){
-        return  $this->exec($sql);
-      }
-    } catch (PDOException $e){
-      fwrite(STDERR, "EXEC ERROR: ".$sql."\n");
-    }
-               return -1;
-  }
-
-  protected function __destruct(){
-    $this->conn = null;
-  }
-}
-?>
\ No newline at end of file
diff --git a/website/lib/dksconfig.pm b/website/lib/dksconfig.pm
deleted file mode 100644 (file)
index fb2ceb7..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-package dksconfig;
-
-use strict;
-# use lib ('./lib/perl5');
-# use lib ('./lib');
-# use lib ('./');
-use File::Basename;
-use Exporter 'import';
-our @EXPORT_OK = qw($sitecfg);
-
-our $sitecfg ={
-  # cookiename => 'potlu',
-  # dbtype => 'PgPP',
-  dsn => 'DBI:PgPP:dbname=websites_db;host=localhost',
-  dbschema => 'ledf',
-  dbuser => 'websites_user',
-  dbpassword => 'websites_pwd',
-  page => 'index.tt',
-  pagename => 'index',
-  basepath => substr(dirname($0),length($ENV{"DOCUMENT_ROOT"})),
-  # datapath => substr((exists($ENV{"SCRIPT_FILENAME"})?dirname($ENV{"SCRIPT_FILENAME"}):dirname($0)),length($ENV{"DOCUMENT_ROOT"})).'/data/',
-  # apidatapath => substr((exists($ENV{"SCRIPT_FILENAME"})?dirname(dirname($ENV{"SCRIPT_FILENAME"})):dirname(dirname($0))),length($ENV{"DOCUMENT_ROOT"})).'/data/',
-  docroot => $ENV{"DOCUMENT_ROOT"},
-  # registration_enabled => '0',
-  # default_group => 'users',
-  tmplpath => dirname($0).'/tmpl'
-  # sitename => 'Accès - Client',
-  # mail => { 
-  #   server => "mail.your-server.de",
-  #   port => "587",
-  #   user => 'ksaffran@dks.lu',
-  #   password => "FB1ia1ka",
-  #   from => 'support@dks.lu',
-  #   templates  => {
-  #     user_registration => "Confirmation requis pour votre création de compte sur pot.lu",
-  #     user_forgotpasswd => "Nouveau mot de passe pour le site pot.lu",
-  #     user_verification => "Validation de votre Email pour le site pot.lu",
-  #     user_newpassword => "coordonnées d'accès de votre compte sur pot.lu"
-  #   }
-  # }
-};
-
-1;
\ No newline at end of file
diff --git a/website/tmpl/commingsoon.tt b/website/tmpl/commingsoon.tt
deleted file mode 100644 (file)
index 7f15250..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html>
-<html dir="ltr" lang="fr">
-  <head>
-    <meta charset="utf-8">
-    
-    <title>LEDF - Letzebuerger Elecronique Darts Federation</title>
-    <meta name="author" content="Kilian Saffran - DKS sarl">
-    <meta name="viewport" content="width=device-width, initial-scale=1">
-    <!-- <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
-    <meta http-equiv="Pragma" content="no-cache" />
-    <meta http-equiv="Expires" content="0" /> -->
-    <meta name="robots" content="noindex,nofollow">
-    <link rel="apple-touch-icon" sizes="57x57" href="img/favicon/apple-icon-57x57.png">
-<link rel="apple-touch-icon" sizes="60x60" href="img/favicon/apple-icon-60x60.png">
-<link rel="apple-touch-icon" sizes="72x72" href="img/favicon/apple-icon-72x72.png">
-<link rel="apple-touch-icon" sizes="76x76" href="img/favicon/apple-icon-76x76.png">
-<link rel="apple-touch-icon" sizes="114x114" href="img/favicon/apple-icon-114x114.png">
-<link rel="apple-touch-icon" sizes="120x120" href="img/favicon/apple-icon-120x120.png">
-<link rel="apple-touch-icon" sizes="144x144" href="img/favicon/apple-icon-144x144.png">
-<link rel="apple-touch-icon" sizes="152x152" href="img/favicon/apple-icon-152x152.png">
-<link rel="apple-touch-icon" sizes="180x180" href="img/favicon/apple-icon-180x180.png">
-<link rel="icon" type="image/png" sizes="192x192"  href="img/favicon/android-icon-192x192.png">
-<link rel="icon" type="image/png" sizes="32x32" href="img/favicon/favicon-32x32.png">
-<link rel="icon" type="image/png" sizes="96x96" href="img/favicon/favicon-96x96.png">
-<link rel="icon" type="image/png" sizes="16x16" href="img/favicon/favicon-16x16.png">
-<link rel="manifest" href="img/favicon/manifest.json">
-<meta name="msapplication-TileColor" content="#ffffff">
-<meta name="msapplication-TileImage" content="/ms-icon-144x144.png">
-<meta name="theme-color" content="#ffffff">
-    <link  rel="stylesheet" href="css/icons.css?v=1">
-    <link  rel="stylesheet" href="css/theme.css?v=1">
-    <style>
-    
-    .bgimg {
-      background-image: url('img/bg.png');
-  min-height: 100%;
-  background-position: center;
-  background-size: cover;
-    }
-    </style>
-  </head>
-  <body>
-    
-    <div class="top hide-small hide-medium">
-      <div class="bar black" style="border-bottom: 2px solid #00bcd4;">
-        <div class="bar-item"><span class="xlarge">L.E.D.F.</span><br><small>Lëtzebuerger Electronique Darts Federation</small></div>
-      </div>
-    </div>
-    <div class="top hide-large">
-      <div class="bar black" style="border-bottom: 2px solid #00bcd4;">
-        <div class="bar-item"><span class="xlarge">L.E.D.F.</span><br><small>Lëtzebuerger Electronique Darts Federation</small></div>
-        
-      </div>
-      
-    </div>
-    <div class="display-container bgimg" style="height: calc(100vh - 70px);margin-top: 70px; overflow-y: scroll;">
-      <div class="row center" style="min-height: 500px; width: 100%;">
-        <div class="text-red" style="margin-top: 100px;"><h1>Comming Soon - Site Under Construction</h1></div>
-      </div>
-      <div class="row dark-grey" style="margin-top: 10px;border-top: 2px solid #00bcd4;">
-        <div class="third" style="padding: 20px;">
-        <address><span class="font-weight: bold;">Lëtzebuerger Electronique Darts Federation ASBL</span><br>
-        6, rue des Alliés<br/>
-L-4412 Belvaux</address>
-        </div>
-      </div>
-      <div class="row center padding-large dark-grey">
-       Powered by <a href="https://www.dks.lu" target="_blank">DKS s.à r.l.</a>
-      </div>
-    </div>
-    
-    
-
-  <script src="js/site.js"></script>
-</body>
-</html>
diff --git a/website/tmpl/index.html.mustache b/website/tmpl/index.html.mustache
deleted file mode 100644 (file)
index 9df4f49..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-<!DOCTYPE html>
-<html dir="ltr" lang="fr">
-  <head>
-    <meta charset="utf-8">
-    
-    <title>LEDF - Letzebuerger Elecronique Darts Federation</title>
-    <meta name="author" content="Kilian Saffran - DKS sarl">
-    <meta name="viewport" content="width=device-width, initial-scale=1">
-    <!-- <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
-    <meta http-equiv="Pragma" content="no-cache" />
-    <meta http-equiv="Expires" content="0" /> -->
-    <meta name="robots" content="index,follow">
-    <link rel="apple-touch-icon" sizes="57x57" href="img/favicon/apple-icon-57x57.png">
-<link rel="apple-touch-icon" sizes="60x60" href="img/favicon/apple-icon-60x60.png">
-<link rel="apple-touch-icon" sizes="72x72" href="img/favicon/apple-icon-72x72.png">
-<link rel="apple-touch-icon" sizes="76x76" href="img/favicon/apple-icon-76x76.png">
-<link rel="apple-touch-icon" sizes="114x114" href="img/favicon/apple-icon-114x114.png">
-<link rel="apple-touch-icon" sizes="120x120" href="img/favicon/apple-icon-120x120.png">
-<link rel="apple-touch-icon" sizes="144x144" href="img/favicon/apple-icon-144x144.png">
-<link rel="apple-touch-icon" sizes="152x152" href="img/favicon/apple-icon-152x152.png">
-<link rel="apple-touch-icon" sizes="180x180" href="img/favicon/apple-icon-180x180.png">
-<link rel="icon" type="image/png" sizes="192x192"  href="img/favicon/android-icon-192x192.png">
-<link rel="icon" type="image/png" sizes="32x32" href="img/favicon/favicon-32x32.png">
-<link rel="icon" type="image/png" sizes="96x96" href="img/favicon/favicon-96x96.png">
-<link rel="icon" type="image/png" sizes="16x16" href="img/favicon/favicon-16x16.png">
-<link rel="manifest" href="img/favicon/manifest.json">
-<meta name="msapplication-TileColor" content="#ffffff">
-<meta name="msapplication-TileImage" content="/ms-icon-144x144.png">
-<meta name="theme-color" content="#ffffff">
-    <link  rel="stylesheet" href="css/icons.css?v=1">
-    <link  rel="stylesheet" href="css/theme.css?v=1">
-    <style>
-    
-    .bgimg {
-      background-image: url('img/bg.png');
-  min-height: 100%;
-  background-position: center;
-  background-size: cover;
-    }
-    </style>
-  </head>
-  <body>
-    
-    <div class="top hide-small hide-medium">
-      <div class="bar black" style="border-bottom: 2px solid #00bcd4;">
-        <div class="bar-item"><span class="xlarge">L.E.D.F.</span><br><small>Lëtzebuerger Electronique Darts Federation</small></div>
-        <a class="bar-item toolbarbtn" href="home.html">Home</a>
-        <a class="bar-item toolbarbtn" href="news.html">Nouveautés</a>
-        <a class="bar-item toolbarbtn" href="calendrier.html">Calendrier</a>
-        <a class="bar-item toolbarbtn" href="clubs.html">Clubs</a>
-        <a class="bar-item toolbarbtn" href="championnat.html">Championnat</a>
-        <a class="bar-item toolbarbtn" href="listederang.html">Liste de Rang</a>
-        <a class="bar-item toolbarbtn" href="coupe.html">Coupe</a>
-      </div>
-    </div>
-    <div class="top hide-large">
-      <div class="bar black" style="border-bottom: 2px solid #00bcd4;">
-        <div class="bar-item"><span class="xlarge">L.E.D.F.</span><br><small>Lëtzebuerger Electronique Darts Federation</small></div>
-        <button class="button bar-item right" onclick="togglemenu();"><span class="xxlarge icon-menu"></span></button>
-      </div>
-      <div class="bar-block black" id="mobilemenu" style="display: none;">
-          <a class="bar-item toolbarbtn border-bottom" href="home.html">Home</a>
-          <a class="bar-item toolbarbtn border-bottom" href="news.html">Nouveautés</a>
-          <a class="bar-item toolbarbtn border-bottom" href="calendrier.html">Calendrier</a>
-          <a class="bar-item toolbarbtn border-bottom" href="clubs.html">Clubs</a>
-          <a class="bar-item toolbarbtn border-bottom" href="championnat.html">Championnat</a>
-          <a class="bar-item toolbarbtn border-bottom" href="listederang.html">Liste de Rang</a>
-          <a class="bar-item toolbarbtn border-bottom" href="coupe.html">Coupe</a>
-      </div>
-    </div>
-    <div class="display-container bgimg" style="height: calc(100vh - 70px);margin-top: 70px; overflow-y: scroll;">
-      <div class="row" style="min-height: 500px;">
-        {{pagedata}}
-      </div>
-      <div class="row dark-grey" style="margin-top: 10px;border-top: 2px solid #00bcd4;">
-        <div class="third" style="padding: 20px;">
-        <address><span class="font-weight: bold;">Lëtzebuerger Electronique Darts Federation ASBL</span><br>
-        6, rue des Alliés<br/>
-L-4412 Belvaux</address>
-        </div>
-        <div class="third" style="padding: 20px;">
-          <div class="bar-block">
-            <a class="bar-item button" href="federation.html">La Fédération</a>
-            <a class="bar-item button" href="documents.html">Documents</a>
-          </div>
-        </div>
-        <div class="third" style="padding: 20px;">
-          <div class="bar-block">
-            <a class="bar-item button" href="impressum.html">Impressum</a>
-            <a class="bar-item button" href="terms.html">Conditions Générales</a>
-            <a class="bar-item button" href="privacy.html">Protection des données</a>
-          </div>
-        </div>
-      </div>
-      <div class="row center padding-large dark-grey">
-       Powered by <a href="https://www.dks.lu" target="_blank">DKS s.à r.l.</a>
-      </div>
-    </div>
-    
-    
-
-  <script src="js/site.js"></script>
-</body>
-</html>
diff --git a/website/tmpl/lists/labels.tt b/website/tmpl/lists/labels.tt
deleted file mode 100644 (file)
index b07b2b7..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-[% FOREACH ilbl= dksdb.query("select id,${lang} as lbl from labels;") %]
-[% lbl.${ilbl.item('id')} = ilbl.item('lbl') %]
-[% END %]
\ No newline at end of file
diff --git a/website/tmpl/pages/calendrier.html.json b/website/tmpl/pages/calendrier.html.json
deleted file mode 100644 (file)
index 3e1694b..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-  "dayscol1":{"sqltype":"queryarray","sql":"SELECT id, to_char(daydate,'DD.MM.YYYY') as daydate, calendar, calgroup, calpublisstart, calpublishend, to_char(calstartime,'HH24:MI') as calstarttime, to_char(calendtime,'HH24:MI') as calendtime, caltitle, caldescription, callocation, callocationaddress FROM calendar WHERE calendar=(select prefvalue from config where pref='season') and calgroup='aller' order by daydate asc;"},
-  "dayscol2":{"sqltype":"queryarray","sql":"SELECT id, to_char(daydate,'DD.MM.YYYY') as daydate, calendar, calgroup, calpublisstart, calpublishend, to_char(calstartime,'HH24:MI') as calstarttime, to_char(calendtime,'HH24:MI') as calendtime, caltitle, caldescription, callocation, callocationaddress FROM calendar WHERE calendar=(select prefvalue from config where pref='season') and calgroup='retoour' order by daydate asc;"}
-}
diff --git a/website/tmpl/pages/calendrier.html.mustache b/website/tmpl/pages/calendrier.html.mustache
deleted file mode 100644 (file)
index df37498..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-<div class="container margin black">
-<div class="bar black">
-  <div class="bar-item"><h3>Calendrier Saison 2020-2021</h3></div>
-</div>
-</div>
-
-<div class="container padding-large half">
-  <div class="container white" style="opacity: 0.7;">
-          <div class="card" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity: 1;">
-            <header><small>DD.MM.YYYY <a href="#" class="text-blue">(<span class="icon-map2"></span> location)</small></a></header>
-            <div class="container white large">
-              Championnnat
-            </div>
-          </div>
-          <div class="card" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity: 1;">
-            <header><small>DD.MM.YYYY</small></header>
-            <div class="container white large">
-              Championnnat
-            </div>
-          </div>
-          <div class="card" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity:1;">
-            <header><small>DD.MM.YYYY</small></header>
-            <div class="container white large">
-              Championnnat
-            </div>
-          </div>
-          <div class="card" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity: 1;">
-            <header><small>DD.MM.YYYY</small></header>
-            <div class="container white large">
-              Championnnat
-            </div>
-          </div>
-          <div class="card" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity: 1;">
-            <header><small>DD.MM.YYYY <a href="#" class="text-blue">(<span class="icon-map2"></span> location)</small></a></header>
-            <div class="container white large">
-              Championnnat
-            </div>
-          </div>
-          <div class="card" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity: 1;">
-            <header><small>DD.MM.YYYY</small></header>
-            <div class="container white large">
-              Championnnat
-            </div>
-          </div>
-          <div class="card" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity:1;">
-            <header><small>DD.MM.YYYY</small></header>
-            <div class="container white large">
-              Championnnat
-            </div>
-          </div>
-          <div class="card" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity: 1;">
-            <header><small>DD.MM.YYYY</small></header>
-            <div class="container white large">
-              Championnnat
-            </div>
-          </div>
-  </div>
-</div>
-<div class="container padding-large half">
-  <div class="container white" style="opacity: 0.7;">
-          <div class="card" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity: 1;">
-            <header><small>DD.MM.YYYY <a href="#" class="text-blue">(<span class="icon-map2"></span> location)</small></a></header>
-            <div class="container white large">
-              Championnnat
-            </div>
-          </div>
-          <div class="card" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity: 1;">
-            <header><small>DD.MM.YYYY</small></header>
-            <div class="container white large">
-              Championnnat
-            </div>
-          </div>
-          <div class="card" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity:1;">
-            <header><small>DD.MM.YYYY</small></header>
-            <div class="container white large">
-              Championnnat
-            </div>
-          </div>
-          <div class="card" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity: 1;">
-            <header><small>DD.MM.YYYY</small></header>
-            <div class="container white large">
-              Championnnat
-            </div>
-          </div>
-          <div class="card" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity: 1;">
-            <header><small>DD.MM.YYYY <a href="#" class="text-blue">(<span class="icon-map2"></span> location)</small></a></header>
-            <div class="container white large">
-              Championnnat
-            </div>
-          </div>
-          <div class="card" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity: 1;">
-            <header><small>DD.MM.YYYY</small></header>
-            <div class="container white large">
-              Championnnat
-            </div>
-          </div>
-          <div class="card" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity:1;">
-            <header><small>DD.MM.YYYY</small></header>
-            <div class="container white large">
-              Championnnat
-            </div>
-          </div>
-          <div class="card" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity: 1;">
-            <header><small>DD.MM.YYYY</small></header>
-            <div class="container white large">
-              Championnnat
-            </div>
-          </div>
-  </div>
-</div>
diff --git a/website/tmpl/pages/championnat.html.mustache b/website/tmpl/pages/championnat.html.mustache
deleted file mode 100644 (file)
index c8f80b9..0000000
+++ /dev/null
@@ -1,535 +0,0 @@
-
-<div class="twothird">
-  <div class="container padding-large">
-    <div class="bar black">
-      <div class="bar-item">Résultats (Jounée X)</div>
-    </div>
-    <div class="container white" style="opacity: 0.7;">
-      <div class="bar black">
-        <div class="bar-item">division nationale </div>
-      </div>
-      <table class="table table-all">
-        <thead>
-          <tr><th>Team home</th><th>Team visiteur</th><th style="width: 80px;">Résultat</th></tr>
-        </thead>
-        <tbody class="bordered  hoverable">
-          <tr><td>Team 1</td><td>Team 2</td><td class="right-align">00 - 00</td></tr>
-          <tr><td>Team 1</td><td>Team 2</td><td class="right-align">00 - 00</td></tr>
-          <tr><td>Team 1</td><td>Team 2</td><td class="right-align">00 - 00</td></tr>
-          <tr><td>Team 1</td><td>Team 2</td><td class="right-align">00 - 00</td></tr>
-          <tr><td>Team 1</td><td>Team 2</td><td class="right-align">00 - 00</td></tr>
-          <tr><td>Team 1</td><td>Team 2</td><td class="right-align">00 - 00</td></tr>
-          <tr><td>Team 1</td><td>Team 2</td><td class="right-align">00 - 00</td></tr>
-          <tr><td>Team 1</td><td>Team 2</td><td class="right-align">00 - 00</td></tr>
-        </tbody>
-      </table>
-      <div class="bar black">
-        <div class="bar-item">division d'honneur </div>
-      </div>
-      <table class="table table-all">
-        <thead>
-          <tr><th>Team home</th><th>Team visiteur</th><th style="width: 80px;">Résultat</th></tr>
-        </thead>
-        <tbody class="bordered  hoverable">
-          <tr><td>Team 1</td><td>Team 2</td><td class="right-align">00 - 00</td></tr>
-          <tr><td>Team 1</td><td>Team 2</td><td class="right-align">00 - 00</td></tr>
-          <tr><td>Team 1</td><td>Team 2</td><td class="right-align">00 - 00</td></tr>
-          <tr><td>Team 1</td><td>Team 2</td><td class="right-align">00 - 00</td></tr>
-          <tr><td>Team 1</td><td>Team 2</td><td class="right-align">00 - 00</td></tr>
-          <tr><td>Team 1</td><td>Team 2</td><td class="right-align">00 - 00</td></tr>
-          <tr><td>Team 1</td><td>Team 2</td><td class="right-align">00 - 00</td></tr>
-          <tr><td>Team 1</td><td>Team 2</td><td class="right-align">00 - 00</td></tr>
-        </tbody>
-      </table>
-      <div class="bar black">
-        <div class="bar-item">division 1 </div>
-      </div>
-      <table class="table table-all">
-        <thead>
-          <tr><th>Team home</th><th>Team visiteur</th><th style="width: 80px;">Résultat</th></tr>
-        </thead>
-        <tbody class="bordered  hoverable">
-          <tr><td>Team 1</td><td>Team 2</td><td class="right-align">00 - 00</td></tr>
-          <tr><td>Team 1</td><td>Team 2</td><td class="right-align">00 - 00</td></tr>
-          <tr><td>Team 1</td><td>Team 2</td><td class="right-align">00 - 00</td></tr>
-          <tr><td>Team 1</td><td>Team 2</td><td class="right-align">00 - 00</td></tr>
-          <tr><td>Team 1</td><td>Team 2</td><td class="right-align">00 - 00</td></tr>
-          <tr><td>Team 1</td><td>Team 2</td><td class="right-align">00 - 00</td></tr>
-          <tr><td>Team 1</td><td>Team 2</td><td class="right-align">00 - 00</td></tr>
-          <tr><td>Team 1</td><td>Team 2</td><td class="right-align">00 - 00</td></tr>
-        </tbody>
-      </table>
-    </div>
-  </div>
-    <div class="container padding-large">
-    <div class="bar black">
-      <div class="bar-item">Classement </div>
-    </div>
-    <div class="container white" style="opacity: 0.7;">
-      <div class="bar black">
-        <div class="bar-item">division nationale </div>
-      </div>
-      <table class="table table-all">
-        <thead>
-        <tr>
-          <th class="right-align">PL</th>
-          <th>TEAM</th>
-          <th class="right-align">GESP</th>
-          <th class="right-align">GEW</th>
-          <th class="right-align">GL</th>
-          <th class="right-align">VRL</th>
-          <th class="right-align">SCORE</th>
-          <th class="right-align">DIF</th>
-          <th class="right-align">SETS</th>
-          <th class="right-align">DIF</th>
-          <th class="right-align">PKT</th>
-        </tr>
-        </thead>
-        <tbody class="bordered hoverable">
-          <tr>
-            <td class="right-align" style="width: 20px;">1 </td>
-            <td>Team name</td>
-            <td class="right-align">0</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-          </tr>
-          <tr>
-            <td class="right-align" style="width: 20px;">1 </td>
-            <td>Team name</td>
-            <td class="right-align">0</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-          </tr>
-          <tr>
-            <td class="right-align" style="width: 20px;">1 </td>
-            <td>Team name</td>
-            <td class="right-align">0</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-          </tr>
-          <tr>
-            <td class="right-align" style="width: 20px;">1 </td>
-            <td>Team name</td>
-            <td class="right-align">0</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-          </tr>
-          <tr>
-            <td class="right-align" style="width: 20px;">1 </td>
-            <td>Team name</td>
-            <td class="right-align">0</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-          </tr>
-          <tr>
-            <td class="right-align" style="width: 20px;">1 </td>
-            <td>Team name</td>
-            <td class="right-align">0</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-          </tr>
-          <tr>
-            <td class="right-align" style="width: 20px;">1 </td>
-            <td>Team name</td>
-            <td class="right-align">0</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-          </tr>
-          <tr>
-            <td class="right-align" style="width: 20px;">1 </td>
-            <td>Team name</td>
-            <td class="right-align">0</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-          </tr>
-          <tr>
-            <td class="right-align" style="width: 20px;">1 </td>
-            <td>Team name</td>
-            <td class="right-align">0</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-          </tr>
-        </tbody>
-      </table>
-      <div class="bar black">
-        <div class="bar-item">division nationale </div>
-      </div>
-      <table class="table table-all">
-        <thead>
-        <tr>
-          <th class="right-align">PL</th>
-          <th>TEAM</th>
-          <th class="right-align">GESP</th>
-          <th class="right-align">GEW</th>
-          <th class="right-align">GL</th>
-          <th class="right-align">VRL</th>
-          <th class="right-align">SCORE</th>
-          <th class="right-align">DIF</th>
-          <th class="right-align">SETS</th>
-          <th class="right-align">DIF</th>
-          <th class="right-align">PKT</th>
-        </tr>
-        </thead>
-        <tbody class="bordered hoverable">
-          <tr>
-            <td class="right-align" style="width: 20px;">1 </td>
-            <td>Team name</td>
-            <td class="right-align">0</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-          </tr>
-          <tr>
-            <td class="right-align" style="width: 20px;">1 </td>
-            <td>Team name</td>
-            <td class="right-align">0</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-          </tr>
-          <tr>
-            <td class="right-align" style="width: 20px;">1 </td>
-            <td>Team name</td>
-            <td class="right-align">0</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-          </tr>
-          <tr>
-            <td class="right-align" style="width: 20px;">1 </td>
-            <td>Team name</td>
-            <td class="right-align">0</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-          </tr>
-          <tr>
-            <td class="right-align" style="width: 20px;">1 </td>
-            <td>Team name</td>
-            <td class="right-align">0</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-          </tr>
-          <tr>
-            <td class="right-align" style="width: 20px;">1 </td>
-            <td>Team name</td>
-            <td class="right-align">0</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-          </tr>
-          <tr>
-            <td class="right-align" style="width: 20px;">1 </td>
-            <td>Team name</td>
-            <td class="right-align">0</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-          </tr>
-          <tr>
-            <td class="right-align" style="width: 20px;">1 </td>
-            <td>Team name</td>
-            <td class="right-align">0</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-          </tr>
-          <tr>
-            <td class="right-align" style="width: 20px;">1 </td>
-            <td>Team name</td>
-            <td class="right-align">0</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-          </tr>
-        </tbody>
-      </table>
-      <div class="bar black">
-        <div class="bar-item">division nationale </div>
-      </div>
-      <table class="table table-all">
-        <thead>
-        <tr>
-          <th class="right-align">PL</th>
-          <th>TEAM</th>
-          <th class="right-align">GESP</th>
-          <th class="right-align">GEW</th>
-          <th class="right-align">GL</th>
-          <th class="right-align">VRL</th>
-          <th class="right-align">SCORE</th>
-          <th class="right-align">DIF</th>
-          <th class="right-align">SETS</th>
-          <th class="right-align">DIF</th>
-          <th class="right-align">PKT</th>
-        </tr>
-        </thead>
-        <tbody class="bordered hoverable">
-          <tr>
-            <td class="right-align" style="width: 20px;">1 </td>
-            <td>Team name</td>
-            <td class="right-align">0</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-          </tr>
-          <tr>
-            <td class="right-align" style="width: 20px;">1 </td>
-            <td>Team name</td>
-            <td class="right-align">0</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-          </tr>
-          <tr>
-            <td class="right-align" style="width: 20px;">1 </td>
-            <td>Team name</td>
-            <td class="right-align">0</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-          </tr>
-          <tr>
-            <td class="right-align" style="width: 20px;">1 </td>
-            <td>Team name</td>
-            <td class="right-align">0</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-          </tr>
-          <tr>
-            <td class="right-align" style="width: 20px;">1 </td>
-            <td>Team name</td>
-            <td class="right-align">0</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-          </tr>
-          <tr>
-            <td class="right-align" style="width: 20px;">1 </td>
-            <td>Team name</td>
-            <td class="right-align">0</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-          </tr>
-          <tr>
-            <td class="right-align" style="width: 20px;">1 </td>
-            <td>Team name</td>
-            <td class="right-align">0</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-          </tr>
-          <tr>
-            <td class="right-align" style="width: 20px;">1 </td>
-            <td>Team name</td>
-            <td class="right-align">0</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-          </tr>
-          <tr>
-            <td class="right-align" style="width: 20px;">1 </td>
-            <td>Team name</td>
-            <td class="right-align">0</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">00</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-            <td class="right-align">000</td>
-            <td class="right-align">000 - 000</td>
-          </tr>
-        </tbody>
-      </table>
-    </div>
-  </div>
-</div>
-<div class="container padding-large third">
-        
-  <div class="container white" style="opacity: 0.7;">
-    <div class="card" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity: 1;">
-      <div class="container white large">
-        <a href="#">Journée 1</a>
-      </div>
-    </div>
-    <div class="card" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity: 1;">
-      <div class="container white large">
-        <a href="#">Journée 1</a>
-      </div>
-    </div>
-    <div class="card" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity:1;">
-      <div class="container white large">
-        <a href="#">Journée 1</a>
-      </div>
-    </div>
-    <div class="card" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity: 1;">
-      <div class="container white large">
-        <a href="#">Journée 1</a>
-      </div>
-    </div>
-    <div class="card" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity: 1;">
-      <div class="container white large">
-        <a href="#">Journée 1</a>
-      </div>
-    </div>
-    <div class="card" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity: 1;">
-      <div class="container white large">
-        <a href="#">Journée 1</a>
-      </div>
-    </div>
-    <div class="card" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity:1;">
-      <div class="container white large">
-        <a href="#">Journée 1</a>
-      </div>
-    </div>
-    <div class="card" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity: 1;">
-      <div class="container white large">
-        <a href="#">Journée 1</a>
-      </div>
-    </div>
-  </div>
-</div>
-
-      
diff --git a/website/tmpl/pages/clubs.html.mustache b/website/tmpl/pages/clubs.html.mustache
deleted file mode 100644 (file)
index f2d8685..0000000
+++ /dev/null
@@ -1,210 +0,0 @@
-<div class="container margin black">
-<div class="bar black">
-  <div class="bar-item"><h3>Clubs</h3></div>
-</div>
-</div>
-
-<div class="container padding-large third">
-  <div class="card container card" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity: 0.8;">
-            <header class="padding"><h3>EDC Club</h3></header>
-            <div class="container white " style="padding-bottom: 10px;">
-              <div class="quarter">
-                <img src="img/club.png" style="width: 100%;" alt="club">
-              </div>
-              <div class="half">
-                <h4>Salle de jeu</h4>
-                <address>Café Nom du café<br/>1, rue Principale<br/>L-0000 Ville</adress>
-              </div>
-              <div>
-                <a href="#"><span class="icon-map2" style="font-size: 30pt"></span></a>
-              </div>
-            </div>
-          </div>
-</div>
-<div class="container padding-large third">
-   <div class="card container card" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity: 0.8;">
-            <header class="padding"><h3>EDC Club</h3></header>
-            <div class="container white " style="padding-bottom: 10px;">
-              <div class="quarter">
-                <img src="img/club.png" style="width: 100%;" alt="club">
-              </div>
-              <div class="half">
-                <h4>Salle de jeu</h4>
-                <address>Café Nom du café<br/>1, rue Principale<br/>L-0000 Ville</adress>
-              </div>
-              <div>
-                <a href="#"><span class="icon-map2" style="font-size: 30pt;"></span></a>
-              </div>
-            </div>
-          </div>
-</div>
-<div class="container padding-large third">
-   <div class="card container card" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity: 0.8;">
-            <header class="padding"><h3>EDC Club</h3></header>
-            <div class="container white " style="padding-bottom: 10px;">
-              <div class="quarter">
-                <img src="img/club.png" style="width: 100%;" alt="club">
-              </div>
-              <div class="half">
-                <h4>Salle de jeu</h4>
-                <address>Café Nom du café<br/>1, rue Principale<br/>L-0000 Ville</adress>
-              </div>
-              <div>
-                <a href="#"><span class="icon-map2" style="font-size: 30pt"></span></a>
-              </div>
-            </div>
-          </div>
-</div>
-<div class="container padding-large third">
-   <div class="card container card" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity: 0.8;">
-            <header class="padding"><h3>EDC Club</h3></header>
-            <div class="container white " style="padding-bottom: 10px;">
-              <div class="quarter">
-                <img src="img/club.png" style="width: 100%;" alt="club">
-              </div>
-              <div class="half">
-                <h4>Salle de jeu</h4>
-                <address>Café Nom du café<br/>1, rue Principale<br/>L-0000 Ville</adress>
-              </div>
-              <div>
-                <a href="#"><span class="icon-map2" style="font-size: 30pt"></span></a>
-              </div>
-            </div>
-          </div>
-</div>
-<div class="container padding-large third">
-   <div class="card container card" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity: 0.8;">
-            <header class="padding"><h3>EDC Club</h3></header>
-            <div class="container white " style="padding-bottom: 10px;">
-              <div class="quarter">
-                <img src="img/club.png" style="width: 100%;" alt="club">
-              </div>
-              <div class="half">
-                <h4>Salle de jeu</h4>
-                <address>Café Nom du café<br/>1, rue Principale<br/>L-0000 Ville</adress>
-              </div>
-              <div>
-                <a href="#"><span class="icon-map2" style="font-size: 30pt"></span></a>
-              </div>
-            </div>
-          </div>
-</div>
-<div class="container padding-large third">
-   <div class="card container card" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity: 0.8;">
-            <header class="padding"><h3>EDC Club</h3></header>
-            <div class="container white " style="padding-bottom: 10px;">
-              <div class="quarter">
-                <img src="img/club.png" style="width: 100%;" alt="club">
-              </div>
-              <div class="half">
-                <h4>Salle de jeu</h4>
-                <address>Café Nom du café<br/>1, rue Principale<br/>L-0000 Ville</adress>
-              </div>
-              <div>
-                <a href="#"><span class="icon-map2" style="font-size: 30pt"></span></a>
-              </div>
-            </div>
-          </div>
-</div>
-<div class="container padding-large third">
-   <div class="card container card" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity: 0.8;">
-            <header class="padding"><h3>EDC Club</h3></header>
-            <div class="container white " style="padding-bottom: 10px;">
-              <div class="quarter">
-                <img src="img/club.png" style="width: 100%;" alt="club">
-              </div>
-              <div class="half">
-                <h4>Salle de jeu</h4>
-                <address>Café Nom du café<br/>1, rue Principale<br/>L-0000 Ville</adress>
-              </div>
-              <div>
-                <a href="#"><span class="icon-map2" style="font-size: 30pt"></span></a>
-              </div>
-            </div>
-          </div>
-</div>
-<div class="container padding-large third">
-   <div class="card container card" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity: 0.8;">
-            <header class="padding"><h3>EDC Club</h3></header>
-            <div class="container white " style="padding-bottom: 10px;">
-              <div class="quarter">
-                <img src="img/club.png" style="width: 100%;" alt="club">
-              </div>
-              <div class="half">
-                <h4>Salle de jeu</h4>
-                <address>Café Nom du café<br/>1, rue Principale<br/>L-0000 Ville</adress>
-              </div>
-              <div>
-                <a href="#"><span class="icon-map2" style="font-size: 30pt"></span></a>
-              </div>
-            </div>
-          </div>
-</div>
-<div class="container padding-large third">
-   <div class="card container card" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity: 0.8;">
-            <header class="padding"><h3>EDC Club</h3></header>
-            <div class="container white " style="padding-bottom: 10px;">
-              <div class="quarter">
-                <img src="img/club.png" style="width: 100%;" alt="club">
-              </div>
-              <div class="half">
-                <h4>Salle de jeu</h4>
-                <address>Café Nom du café<br/>1, rue Principale<br/>L-0000 Ville</adress>
-              </div>
-              <div>
-                <a href="#"><span class="icon-map2" style="font-size: 30pt"></span></a>
-              </div>
-            </div>
-          </div>
-</div>
-<div class="container padding-large third">
-   <div class="card container card" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity: 0.8;">
-            <header class="padding"><h3>EDC Club</h3></header>
-            <div class="container white " style="padding-bottom: 10px;">
-              <div class="quarter">
-                <img src="img/club.png" style="width: 100%;" alt="club">
-              </div>
-              <div class="half">
-                <h4>Salle de jeu</h4>
-                <address>Café Nom du café<br/>1, rue Principale<br/>L-0000 Ville</adress>
-              </div>
-              <div>
-                <a href="#"><span class="icon-map2" style="font-size: 30pt"></span></a>
-              </div>
-            </div>
-          </div>
-</div>
-<div class="container padding-large third">
-   <div class="card container card" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity: 0.8;">
-            <header class="padding"><h3>EDC Club</h3></header>
-            <div class="container white " style="padding-bottom: 10px;">
-              <div class="quarter">
-                <img src="img/club.png" style="width: 100%;" alt="club">
-              </div>
-              <div class="half">
-                <h4>Salle de jeu</h4>
-                <address>Café Nom du café<br/>1, rue Principale<br/>L-0000 Ville</adress>
-              </div>
-              <div>
-                <a href="#"><span class="icon-map2" style="font-size: 30pt"></span></a>
-              </div>
-            </div>
-          </div>
-</div>
-<div class="container padding-large third">
-   <div class="card container card" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity: 0.8;">
-            <header class="padding"><h3>EDC Club</h3></header>
-            <div class="container white " style="padding-bottom: 10px;">
-              <div class="quarter">
-                <img src="img/club.png" style="width: 100%;" alt="club">
-              </div>
-              <div class="half">
-                <h4>Salle de jeu</h4>
-                <address>Café Nom du café<br/>1, rue Principale<br/>L-0000 Ville</adress>
-              </div>
-              <div>
-                <a href="#"><span class="icon-map2" style="font-size: 30pt"></span></a>
-              </div>
-            </div>
-          </div>
-</div>
\ No newline at end of file
diff --git a/website/tmpl/pages/coupe.html.mustache b/website/tmpl/pages/coupe.html.mustache
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/website/tmpl/pages/documents.html.mustache b/website/tmpl/pages/documents.html.mustache
deleted file mode 100644 (file)
index f8f2e84..0000000
+++ /dev/null
@@ -1 +0,0 @@
-page/documents.tt
\ No newline at end of file
diff --git a/website/tmpl/pages/error.html.mustache b/website/tmpl/pages/error.html.mustache
deleted file mode 100644 (file)
index 6c461af..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<h1 class="text-red">Sorry Site does not exist!</h1>
\ No newline at end of file
diff --git a/website/tmpl/pages/federation.html.mustache b/website/tmpl/pages/federation.html.mustache
deleted file mode 100644 (file)
index ddc8eba..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-<div class="container margin black">
-<div class="bar black">
-  <div class="bar-item"><h3>Le Comité</h3></div>
-</div>
-</div>
-<div class="row">
-<div class="container padding-large quarter">
-  <div class="card container" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity: 0.8;">
-    <div class="container white center" style="padding-bottom: 10px;">
-      <img src="img/person.jpg" style="height: 150px;" >
-    </div>
-    <footer class="center"><span class="large">Nom Prénom</span><br/><span class="large" style="font-style: italic;">Président</span></footer>
-  </div>
-</div>
-<div class="container padding-large quarter">
-  <div class="card container" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity: 0.8;">
-    <div class="container white center" style="padding-bottom: 10px;">
-      <img src="img/person.jpg" style="height: 150px;" >
-    </div>
-    <footer class="center"><span class="large">Nom Prénom</span><br/><span class="large" style="font-style: italic;">Vize-Président</span></footer>
-  </div>
-</div>
-<div class="container padding-large quarter">
-  <div class="card container" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity: 0.8;">
-    <div class="container white center" style="padding-bottom: 10px;">
-      <img src="img/person.jpg" style="height: 150px;" >
-    </div>
-    <footer class="center"><span class="large">Nom Prénom</span><br/><span class="large" style="font-style: italic;">Secrétaire</span></footer>
-  </div>
-</div>
-<div class="container padding-large quarter">
-  <div class="card container" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity: 0.8;">
-    <div class="container white center" style="padding-bottom: 10px;">
-      <img src="img/person.jpg" style="height: 150px;" >
-    </div>
-    <footer class="center"><span class="large">Nom Prénom</span><br/><span class="large" style="font-style: italic;">Trésorier</span></footer>
-  </div>
-</div>
-<div class="container padding-large quarter">
-  <div class="card container" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity: 0.8;">
-    <div class="container white center" style="padding-bottom: 10px;">
-      <img src="img/person.jpg" style="height: 150px;" >
-    </div>
-    <footer class="center"><span class="large">Nom Prénom</span><br/><span class="large" style="font-style: italic;">Directeur Sportif</span></footer>
-  </div>
-</div>
-<div class="container padding-large quarter">
-  <div class="card container" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity: 0.8;">
-    <div class="container white center" style="padding-bottom: 10px;">
-      <img src="img/person.jpg" style="height: 150px;" >
-    </div>
-    <footer class="center"><span class="large">Nom Prénom</span><br/><span class="large" style="font-style: italic;">Membre</span></footer>
-  </div>
-</div>
-<div class="container padding-large quarter">
-  <div class="card container" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity: 0.8;">
-    <div class="container white center" style="padding-bottom: 10px;">
-      <img src="img/person.jpg" style="height: 150px;" >
-    </div>
-    <footer class="center"><span class="large">Nom Prénom</span><br/><span class="large" style="font-style: italic;">Membre</span></footer>
-  </div>
-</div>
-<div class="container padding-large quarter">
-  <div class="card container" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity: 0.8;">
-    <div class="container white center" style="padding-bottom: 10px;">
-      <img src="img/person.jpg" style="height: 150px;" >
-    </div>
-    <footer class="center"><span class="large">Nom Prénom</span><br/><span class="large" style="font-style: italic;">Membre</span></footer>
-  </div>
-</div>
-<div class="container padding-large quarter">
-  <div class="card container" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity: 0.8;">
-    <div class="container white center" style="padding-bottom: 10px;">
-      <img src="img/person.jpg" style="height: 150px;" >
-    </div>
-    <footer class="center"><span class="large">Nom Prénom</span><br/><span class="large" style="font-style: italic;">Membre</span></footer>
-  </div>
-</div>
-</div>
-<br/>
-<div class="container margin black">
-<div class="bar black">
-  <div class="bar-item"><h3>Le Tribunal</h3></div>
-</div>
-</div>
-<div class="row">
-  <div class="container padding-large quarter">
-    <div class="card container" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity: 0.8;">
-      <div class="container white center" style="padding-bottom: 10px;">
-        <img src="img/person.jpg" style="height: 150px;" >
-      </div>
-      <footer class="center"><span class="large">Nom Prénom</span></footer>
-    </div>
-  </div>
-  <div class="container padding-large quarter">
-    <div class="card container" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity: 0.8;">
-      <div class="container white center" style="padding-bottom: 10px;">
-        <img src="img/person.jpg" style="height: 150px;" >
-      </div>
-      <footer class="center"><span class="large">Nom Prénom</span></footer>
-    </div>
-  </div>
-  <div class="container padding-large quarter">
-    <div class="card container" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity: 0.8;">
-      <div class="container white center" style="padding-bottom: 10px;">
-        <img src="img/person.jpg" style="height: 150px;" >
-      </div>
-      <footer class="center"><span class="large">Nom Prénom</span></footer>
-    </div>
-  </div>
-  <div class="container padding-large quarter">
-    <div class="card container" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity: 0.8;">
-      <div class="container white center" style="padding-bottom: 10px;">
-        <img src="img/person.jpg" style="height: 150px;" >
-      </div>
-      <footer class="center"><span class="large">Nom Prénom</span></footer>
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/website/tmpl/pages/home.html.mustache b/website/tmpl/pages/home.html.mustache
deleted file mode 100644 (file)
index 6eb0aa3..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-
-<div class="container padding-large twothird">
-        <div class="bar black">
-          <div class="bar-item">la féderation vous invite:</div>
-        </div>
-        <div class="container">
-          <img src="img/news.png" style="width: 100%; opacity: 0.7;"/>
-        </div>
-      </div>
-      <div class="container padding-large third">
-        <div class="bar black">
-          <div class="bar-item">prochaines événements:</div>
-        </div>
-        <div class="container white" style="opacity: 0.7;">
-          <div class="card" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity: 1;">
-            <header><small>DD.MM.YYYY</small></header>
-            <div class="container white large">
-              Championnnat
-            </div>
-          </div>
-          <div class="card" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity: 1;">
-            <header><small>DD.MM.YYYY</small></header>
-            <div class="container white large">
-              Championnnat
-            </div>
-          </div>
-          <div class="card" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity:1;">
-            <header><small>DD.MM.YYYY</small></header>
-            <div class="container white large">
-              Championnnat
-            </div>
-          </div>
-          <div class="card" style="border-bottom: 1px solid #c6c6c6; margin-top: 5px; margin-bottom: 5px; opacity: 1;">
-            <header><small>DD.MM.YYYY</small></header>
-            <div class="container white large">
-              Championnnat
-            </div>
-          </div>
-        </div>
-      </div>
diff --git a/website/tmpl/pages/impressum.html.mustache b/website/tmpl/pages/impressum.html.mustache
deleted file mode 100644 (file)
index 5f5e013..0000000
+++ /dev/null
@@ -1 +0,0 @@
-page/impressum.tt
\ No newline at end of file
diff --git a/website/tmpl/pages/listederang.html.mustache b/website/tmpl/pages/listederang.html.mustache
deleted file mode 100644 (file)
index 06f9c7c..0000000
+++ /dev/null
@@ -1,443 +0,0 @@
-<div class="container margin black">
-  <div class="bar black">
-    <div class="bar-item"><h3>Saison 2020-2021</h3></div>
-  </div>
-  </div>
-<div class="half">
-  <div class="container padding-large">
-    <div class="bar black">
-      <div class="bar-item">Liste de rang Hommes</div>
-    </div>
-    <div class="container white" style="opacity: 0.7;">
-      <table class="table table-all">
-        <thead>
-          <tr>
-            <th style="width: 50px;" class="right-align">#</th>
-            <th>Nom</th>
-            <th style="width: 50px;" class="right-align">RL1</th>
-            <th style="width: 50px;" class="right-align">RL2</th>
-            <th style="width: 50px;" class="right-align">RL3</th>
-            <th style="width: 50px;" class="right-align">RL4</th>
-            <th style="width: 50px;" class="right-align">RL5</th>
-            <th style="width: 50px;" class="right-align">RL6</th>
-            <th style="width: 50px;" class="right-align">RL7</th>
-            <th style="width: 70px" class="right-align">Points</th>
-          </tr>
-        </thead>
-        <tbody class="bordered  hoverable">
-          <tr>
-            <td class="right-align">#</td>
-            <td>Nom Prénom</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 70px" class="right-align">0</td>
-          </tr>
-          <tr>
-            <td class="right-align">#</td>
-            <td>Nom Prénom</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 70px" class="right-align">0</td>
-          </tr>
-          <tr>
-            <td class="right-align">#</td>
-            <td>Nom Prénom</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 70px" class="right-align">0</td>
-          </tr>
-          <tr>
-            <td class="right-align">#</td>
-            <td>Nom Prénom</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 70px" class="right-align">0</td>
-          </tr>
-          <tr>
-            <td class="right-align">#</td>
-            <td>Nom Prénom</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 70px" class="right-align">0</td>
-          </tr>
-          <tr>
-            <td class="right-align">#</td>
-            <td>Nom Prénom</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 70px" class="right-align">0</td>
-          </tr>
-          <tr>
-            <td class="right-align">#</td>
-            <td>Nom Prénom</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 70px" class="right-align">0</td>
-          </tr>
-          <tr>
-            <td class="right-align">#</td>
-            <td>Nom Prénom</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 70px" class="right-align">0</td>
-          </tr>
-          <tr>
-            <td class="right-align">#</td>
-            <td>Nom Prénom</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 70px" class="right-align">0</td>
-          </tr>
-          <tr>
-            <td class="right-align">#</td>
-            <td>Nom Prénom</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 70px" class="right-align">0</td>
-          </tr>
-          <tr>
-            <td class="right-align">#</td>
-            <td>Nom Prénom</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 70px" class="right-align">0</td>
-          </tr>
-          <tr>
-            <td class="right-align">#</td>
-            <td>Nom Prénom</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 70px" class="right-align">0</td>
-          </tr>
-          <tr>
-            <td class="right-align">#</td>
-            <td>Nom Prénom</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 70px" class="right-align">0</td>
-          </tr>
-          <tr>
-            <td class="right-align">#</td>
-            <td>Nom Prénom</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 70px" class="right-align">0</td>
-          </tr>
-          <tr>
-            <td class="right-align">#</td>
-            <td>Nom Prénom</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 70px" class="right-align">0</td>
-          </tr>
-          <tr>
-            <td class="right-align">#</td>
-            <td>Nom Prénom</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 70px" class="right-align">0</td>
-          </tr>
-        </tbody>
-      </table>
-    </div>
-  </div>
-</div>
-<div class="half">
-  <div class="container padding-large">
-    <div class="bar black">
-      <div class="bar-item">Liste de rang Dammes</div>
-    </div>
-    <div class="container white" style="opacity: 0.7;">
-      <table class="table table-all">
-        <thead>
-          <tr>
-            <th style="width: 50px;" class="right-align">#</th>
-            <th>Nom</th>
-            <th style="width: 50px;" class="right-align">RL1</th>
-            <th style="width: 50px;" class="right-align">RL2</th>
-            <th style="width: 50px;" class="right-align">RL3</th>
-            <th style="width: 50px;" class="right-align">RL4</th>
-            <th style="width: 50px;" class="right-align">RL5</th>
-            <th style="width: 50px;" class="right-align">RL6</th>
-            <th style="width: 50px;" class="right-align">RL7</th>
-            <th style="width: 70px" class="right-align">Points</th>
-          </tr>
-        </thead>
-        <tbody class="bordered  hoverable">
-          <tr>
-            <td class="right-align">#</td>
-            <td>Nom Prénom</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 70px" class="right-align">0</td>
-          </tr>
-          <tr>
-            <td class="right-align">#</td>
-            <td>Nom Prénom</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 70px" class="right-align">0</td>
-          </tr>
-          <tr>
-            <td class="right-align">#</td>
-            <td>Nom Prénom</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 70px" class="right-align">0</td>
-          </tr>
-          <tr>
-            <td class="right-align">#</td>
-            <td>Nom Prénom</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 70px" class="right-align">0</td>
-          </tr>
-          <tr>
-            <td class="right-align">#</td>
-            <td>Nom Prénom</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 70px" class="right-align">0</td>
-          </tr>
-          <tr>
-            <td class="right-align">#</td>
-            <td>Nom Prénom</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 70px" class="right-align">0</td>
-          </tr>
-          <tr>
-            <td class="right-align">#</td>
-            <td>Nom Prénom</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 70px" class="right-align">0</td>
-          </tr>
-          <tr>
-            <td class="right-align">#</td>
-            <td>Nom Prénom</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 70px" class="right-align">0</td>
-          </tr>
-          <tr>
-            <td class="right-align">#</td>
-            <td>Nom Prénom</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 70px" class="right-align">0</td>
-          </tr>
-          <tr>
-            <td class="right-align">#</td>
-            <td>Nom Prénom</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 70px" class="right-align">0</td>
-          </tr>
-          <tr>
-            <td class="right-align">#</td>
-            <td>Nom Prénom</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 70px" class="right-align">0</td>
-          </tr>
-          <tr>
-            <td class="right-align">#</td>
-            <td>Nom Prénom</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 70px" class="right-align">0</td>
-          </tr>
-          <tr>
-            <td class="right-align">#</td>
-            <td>Nom Prénom</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 70px" class="right-align">0</td>
-          </tr>
-          <tr>
-            <td class="right-align">#</td>
-            <td>Nom Prénom</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 70px" class="right-align">0</td>
-          </tr>
-          <tr>
-            <td class="right-align">#</td>
-            <td>Nom Prénom</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 70px" class="right-align">0</td>
-          </tr>
-          <tr>
-            <td class="right-align">#</td>
-            <td>Nom Prénom</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 50px;" class="right-align">0</td>
-            <td style="width: 70px" class="right-align">0</td>
-          </tr>
-        </tbody>
-      </table>
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/website/tmpl/pages/news.html.mustache b/website/tmpl/pages/news.html.mustache
deleted file mode 100644 (file)
index a52c543..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-<div class="container padding-large">
-  <div class="bar black">
-    <div class="bar-item"><h3>TEST News</h3></div>
-    <div class="bar-item right"><small>Publié le:<br/>00.00.0000</small></div>
-  </div>
-  <div class="container white" style="opacity: 0.8;">
-   <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla condimentum interdum mauris et laoreet. Curabitur ut aliquam neque. Nam tristique tempor ex eu semper. Quisque efficitur dictum justo nec viverra. Cras est eros, rhoncus id nulla nec, dignissim iaculis magna. Donec laoreet mattis dolor, sit amet convallis elit efficitur ac. Ut sed sollicitudin ante. Donec id felis in justo condimentum ultrices vel quis metus. Duis finibus facilisis viverra. Vestibulum vestibulum justo ac ex ultrices vehicula. Duis pulvinar, purus sed varius sollicitudin, ligula risus cursus urna, sit amet cursus eros quam in lacus. Aenean volutpat, erat ut finibus gravida, dui quam suscipit lectus, sed vestibulum arcu diam a augue. Donec id eros id velit molestie rhoncus. Sed eu erat blandit, hendrerit turpis pulvinar, tincidunt mi. Quisque tincidunt sem quis neque aliquet, nec dictum nunc rhoncus. Mauris at elit facilisis, lacinia lectus ut, luctus ex.</p>
-
-<p>Curabitur euismod purus quis ipsum volutpat, sit amet dapibus quam eleifend. Sed dictum, ante fringilla suscipit condimentum, metus lorem feugiat quam, sit amet tristique enim nulla id turpis. Ut vitae elementum ligula, at egestas metus. Etiam fermentum efficitur eros, feugiat tempor ligula accumsan id. Fusce sed aliquet nibh, et sagittis ante. Quisque in tincidunt sapien. Nulla fermentum leo blandit velit semper, ut vehicula quam vestibulum. Interdum et malesuada fames ac ante ipsum primis in faucibus. Nullam congue, est nec dictum tempor, tortor nisl vestibulum tellus, quis sollicitudin ipsum arcu id nibh. Ut ut arcu malesuada, imperdiet tellus quis, ornare est. Nulla luctus lobortis commodo. Sed id ex placerat purus consequat lobortis.</p>
-  </div>
-  </div>
\ No newline at end of file
diff --git a/website/tmpl/pages/privacy.html.mustache b/website/tmpl/pages/privacy.html.mustache
deleted file mode 100644 (file)
index 47ff6c7..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-<div class="container padding-16 white" style="opacity: 0.8;">
-<h2>Privacy Policy of <span class="website_url">ledf.lu</span></h2>
-
-<p>At <span class="website_name">L.E.D.F.</span>, we collect and manage user data according to the following Privacy Policy.</p>
-
-<h3>Data Collected</h3>
-
-<p>We collect information you provide directly to us. For example, we collect information when you create an account, subscribe, participate in any interactive features of our services, fill out a form, request customer support or otherwise communicate with us. The types of information we may collect include your name, email address, postal address, credit card information and other contact or identifying information you choose to provide.</p>
-
-<p>We collect anonymous data from every visitor of the Website to monitor traffic and fix bugs. For example, we collect information like web requests, the data sent in response to such requests, the Internet Protocol address, the browser type, the browser language, and a timestamp for the request.</p>
-
-<p>We also use various technologies to collect information, and this may include sending cookies to your computer. Cookies are small data files stored on your hard drive or in your device memory that helps us to improve our services and your experience, see which areas and features of our services are popular and count visits. We may also collect information using web beacons (also known as "tracking pixels"). Web beacons are electronic images that may be used in our services or emails and to track count visits or understand usage and campaign effectiveness.</p>
-
-<h3>Use of the Data</h3>
-
-<p>We only use your personal information to provide you the <span class="website_name">L.E.D.F.</span> services or to communicate with you about the Website or the services. </p>
-
-<p>We employ industry standard techniques to protect against unauthorized access of data about you that we store, including personal information.</p>
-
-<p>We do not share personal information you have provided to us without your consent, unless:</p>
-
-<ul>
-<li>Doing so is appropriate to carry out your own request</li>
-<li>We believe it's needed to enforce our legal agreements or that is legally required</li>
-<li>We believe it's needed to detect, prevent or address fraud, security or technical issues</li>
-</ul>
-
-<h3>Sharing of Data</h3>
-
-<p>We don't share your personal information with third parties. Aggregated, anonymized data is periodically transmitted to external services to help us improve the Website and service.</p>
-
-<p>We may allow third parties to provide analytics services. These third parties may use cookies, web beacons and other technologies to collect information about your use of the services and other websites, including your IP address, web browser, pages viewed, time spent on pages, links clicked and conversion information.</p>
-
-<p>We also use social buttons provided by services like Twitter, Google+, LinkedIn and Facebook. Your use of these third party services is entirely optional. We are not responsible for the privacy policies and/or practices of these third party services, and you are responsible for reading and understanding those third party services' privacy policies.</p>
-
-<h3>Cookies</h3>
-
-<p>We may use cookies on our site to remember your preferences.</p>
-
-<p>For more general information on cookies, please read <a href="https://www.cookieconsent.com/what-are-cookies/">"What Are Cookies"</a>.</p>
-
-<h3>Opt-Out, Communication Preferences</h3>
-
-<p>You may modify your communication preferences and/or opt-out from specific communications at any time. Please specify and adjust your preferences.</p>
-
-<h3>Security</h3>
-
-<p>We take reasonable steps to protect personally identifiable information from loss, misuse, and unauthorized access, disclosure, alteration, or destruction. But, you should keep in mind that no Internet transmission is ever completely secure or error-free. In particular, email sent to or from the Sites may not be secure.</p>
-
-<h3>Changes to the Privacy Policy</h3>
-
-<p>We may amend this Privacy Policy from time to time. Use of information we collect now is subject to the Privacy Policy in effect at the time such information is used.</p>
-
-<p>If we make major changes in the way we collect or use information, we will notify you by posting an announcement on the Website or sending you an email.</p>
-</div>
\ No newline at end of file
diff --git a/website/tmpl/pages/terms.html.mustache b/website/tmpl/pages/terms.html.mustache
deleted file mode 100644 (file)
index aa79677..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-<div class="container white margin" style="opacity: 0.8;">
-  <h2>Terms of Use of <span class="website_url">ledf.lu</span></h2>
-
-<p>Welcome to the <span class="website_name">L.E.D.F.</span>  website (the "Website").</p>
-
-<p><span class="website_name">L.E.D.F.</span> provides this Website and Services (located at <span class="website_url">ledf.lu</span>) to you subject to the notices, terms, and conditions set forth in these terms (the "Terms of Use"). In addition, when you use any of our Services, you will be subject to the rules, guidelines, policies, terms, and conditions applicable to such service, and they are incorporated into this Terms of Use by this reference.</p>
-
-<p>These Terms of Use are effective as of <span class="date">[DATE]</span>.</p>
-
-<p>Your eligibility for use of the Website is contingent upon meeting the following conditions:</p>
-
-<ul>
-<li>You are at least 18 years of age</li>
-<li>You use the Website and Services according to these Terms of Use and all applicable laws and regulations determined by the state and country of residence</li>
-<li>You provide complete and accurate registration information and maintain accurate registration information on the Webite</li>
-<li>You agree and understand that <span class="website_name">L.E.D.F.</span> may, at any time, and without prior notice, revoke and/or cancel your access if you fail to meet these criteria or violate any portion of these Terms of Use</li>
-</ul>
-
-<h3>Use of this Website</h3>
-
-<p>In connection with your use of our Website, you must act responsibly and exercise good judgment. Without limiting the foregoing, you will not:</p>
-
-<ul>
-<li>Violate any local, state, provincial, national, or other law or regulation, or any order of a court</li>
-<li>Infringe the rights of any person or entity, including without limitation, their intellectual property, privacy, publicity or contractual rights</li>
-<li>Interfere with or damage our Services, including, without limitation, through the use of viruses, cancel bots, Trojan horses, harmful code, flood pings, denial-of-service attacks, packet or IP spoofing, forged routing or electronic mail address information or similar methods or technology</li>
-<li>Use automated scripts to collect information or otherwise interact with the Services or the Website</li>
-<li>Enter into this agreement on behalf of another person or entity without consent or the legal capacity to make such agreements as a representative of an organization or entity</li>
-</ul>
-
-<h3>Intellectual Property</h3>
-
-<p>All code, text, software, scripts, graphics, files, photos, images, logos, and materials contained on this Website, or within the Services, are the sole property of <span class="website_name">L.E.D.F.</span>.</p>
-
-<p>Unauthorized use of any materials contained on this Website or within the Service may violate copyright laws, trademark laws, the laws of privacy and publicity, and/or other regulations and statutes. If you believe that any of the materials infringe on any third party's rights, please contact <span class="website_name">L.E.D.F.</span> immediately at the address provided below.</p>
-
-<h3>Third Party Websites</h3>
-
-<p>Our Website may link you to other sites on the Internet or otherwise include references to information, documents, software, materials and/or services provided by other parties. These websites may contain information or material that some people may find inappropriate or offensive.</p>
-
-<p>These other websites and parties are not under our control, and you acknowledge that we are not responsible for the accuracy, copyright compliance, legality, decency, or any other aspect of the content of such sites, nor are we responsible for errors or omissions in any references to other parties or their products and services. The inclusion of such a link or reference is provided merely as a convenience and does not imply endorsement of, or association with, the Website or party by us, or any warranty of any kind, either express or implied.</p>
-
-<h3>Disclaimer of Warranty and Limitation of Liability</h3>
-
-<p>The Website is provided "AS IS." appfigures, its suppliers, officers, directors, employees, and agents exclude and disclaim all representations and warranties, express or implied, related to this Website or in connection with the Services. You exclude <span class="website_name">L.E.D.F.</span> from all liability for damages related to or arising out of the use of this Website.</p>
-
-<h3>Changes to these Terms of Use</h3>
-
-<p><span class="website_name">L.E.D.F.</span> retains the right to, at any time, modify or discontinue, any or all parts of the Website without notice.</p>
-
-<p>Additionally, <span class="website_name">L.E.D.F.</span> reserves the right, in its sole discretion, to modify these Terms of Use at any time, effective by posting new terms on the Website with the date of modification. You are responsible for reading and understanding the terms of this agreement prior to registering with, or using the Service. Your use of the Website and/or Services after any such modification has been published constitutes your acceptance of the new terms as modified in these Terms of Use.</p>
-
-<h3>Governing Law</h3>
-
-<p>These Terms of Use and any dispute or claim arising out of, or related to them, shall be governed by and construed in accordance with the internal laws of the <span class="country">lu</span> without giving effect to any choice or conflict of law provision or rule.</p>
-
-<p>Any legal suit, action or proceeding arising out of, or related to, these Terms of Use or the Website shall be instituted exclusively in the federal courts of <span class="country">lu</span>.</p>
-</div>
\ No newline at end of file